예제 #1
0
 def __new__(cls, sym, dist):
     if isinstance(dist, SingleContinuousDistribution):
         return SingleContinuousPSpace(sym, dist)
     if isinstance(dist, SingleDiscreteDistribution):
         return SingleDiscretePSpace(sym, dist)
     sym = _symbol_converter(sym)
     return Basic.__new__(cls, sym, dist)
예제 #2
0
 def __new__(cls, sym, process, distribution=None):
     sym = _symbol_converter(sym)
     from sympy.stats.stochastic_process_types import StochasticProcess
     if not isinstance(process, StochasticProcess):
         raise TypeError(
             "`process` must be an instance of StochasticProcess.")
     return Basic.__new__(cls, sym, process, distribution)
예제 #3
0
 def __new__(cls, sym, p, success=1, failure=0):
     _value_check(p >= 0 and p <= 1, 'Value of p must be between 0 and 1.')
     sym = _symbol_converter(sym)
     p = _sympify(p)
     success = _sym_sympify(success)
     failure = _sym_sympify(failure)
     return Basic.__new__(cls, sym, p, success, failure)
예제 #4
0
 def __new__(cls, sym, dim=None):
     sym, dim = _symbol_converter(sym), _sympify(dim)
     if dim.is_integer == False:
         raise ValueError("Dimension of the random matrices must be "
                          "integers, received %s instead." % (dim))
     self = Basic.__new__(cls, sym, dim)
     rmp = RandomMatrixPSpace(sym, model=self)
     return RandomMatrixSymbol(sym, dim, dim, pspace=rmp)
예제 #5
0
 def __new__(cls, sym, p, success=1, failure=0):
     _value_check(p >= 0 and p <= 1, 'Value of p must be between 0 and 1.')
     p = _sympify(p)
     sym = _symbol_converter(sym)
     success = _sym_sympify(success)
     failure = _sym_sympify(failure)
     state_space = _set_converter([success, failure])
     return Basic.__new__(cls, sym, state_space, BernoulliDistribution(p),
                          p, success, failure)
예제 #6
0
 def __new__(cls, s, distribution):
     s = _symbol_converter(s)
     if isinstance(distribution, ContinuousDistribution):
         return SingleContinuousPSpace(s, distribution)
     if isinstance(distribution, DiscreteDistribution):
         return SingleDiscretePSpace(s, distribution)
     if isinstance(distribution, SingleFiniteDistribution):
         return SingleFinitePSpace(s, distribution)
     if not isinstance(distribution, CompoundDistribution):
         raise ValueError("%s should be an isinstance of "
                     "CompoundDistribution"%(distribution))
     return Basic.__new__(cls, s, distribution)
def GaussianSymplecticEnsemble(sym, dim):
    """
    Represents Gaussian Symplectic Ensembles.

    Examples
    ========

    >>> from sympy.stats import GaussianSymplecticEnsemble as GSE, density
    >>> from sympy import MatrixSymbol
    >>> G = GSE('U', 2)
    >>> X = MatrixSymbol('X', 2, 2)
    >>> density(G)(X)
    exp(-2*Trace(X**2))/Integral(exp(-2*Trace(_H**2)), _H)
    """
    sym, dim = _symbol_converter(sym), _sympify(dim)
    model = GaussianSymplecticEnsembleModel(sym, dim)
    rmp = RandomMatrixPSpace(sym, model=model)
    return RandomMatrixSymbol(sym, dim, dim, pspace=rmp)
def GaussianUnitaryEnsemble(sym, dim):
    """
    Represents Gaussian Unitary Ensembles.

    Examples
    ========

    >>> from sympy.stats import GaussianUnitaryEnsemble as GUE, density
    >>> from sympy import MatrixSymbol
    >>> G = GUE('U', 2)
    >>> X = MatrixSymbol('X', 2, 2)
    >>> density(G)(X)
    exp(-Trace(X**2))/(2*pi**2)
    """
    sym, dim = _symbol_converter(sym), _sympify(dim)
    model = GaussianUnitaryEnsembleModel(sym, dim)
    rmp = RandomMatrixPSpace(sym, model=model)
    return RandomMatrixSymbol(sym, dim, dim, pspace=rmp)
def CircularSymplecticEnsemble(sym, dim):
    """
    Represents Cicular Symplectic Ensembles.

    Examples
    ========

    >>> from sympy.stats import CircularSymplecticEnsemble as CSE
    >>> from sympy.stats import joint_eigen_distribution
    >>> C = CSE('S', 1)
    >>> joint_eigen_distribution(C)
    Lambda(t[1], Product(Abs(exp(I*t[_j]) - exp(I*t[_k]))**4, (_j, _k + 1, 1), (_k, 1, 0))/(2*pi))

    Note
    ====

    As can be seen above in the example, density of CiruclarSymplecticEnsemble
    is not evaluated becuase the exact definition is based on haar measure of
    unitary group which is not unique.
    """
    sym, dim = _symbol_converter(sym), _sympify(dim)
    model = CircularSymplecticEnsembleModel(sym, dim)
    rmp = RandomMatrixPSpace(sym, model=model)
    return RandomMatrixSymbol(sym, dim, dim, pspace=rmp)
예제 #10
0
 def __new__(cls, sym, distribution, dim_n, dim_m):
     sym = _symbol_converter(sym)
     dim_n, dim_m = _sympify(dim_n), _sympify(dim_m)
     if not (dim_n.is_integer and dim_m.is_integer):
         raise ValueError("Dimensions should be integers")
     return Basic.__new__(cls, sym, distribution, dim_n, dim_m)
예제 #11
0
 def __new__(cls, sym, model=None):
     sym = _symbol_converter(sym)
     return Basic.__new__(cls, sym, model)
예제 #12
0
 def __new__(cls, sym, state_space=S.Reals, **kwargs):
     sym = _symbol_converter(sym)
     state_space = _set_converter(state_space)
     return Basic.__new__(cls, sym, state_space)
예제 #13
0
 def __new__(cls, sym, state_space=S.Reals, gen_mat=None):
     sym = _symbol_converter(sym)
     state_space = _set_converter(state_space)
     if gen_mat != None:
         gen_mat = _matrix_checks(gen_mat)
     return Basic.__new__(cls, sym, state_space, gen_mat)
예제 #14
0
 def __new__(cls, sym, state_space=S.Reals, trans_probs=None):
     sym = _symbol_converter(sym)
     state_space = _set_converter(state_space)
     if trans_probs != None:
         trans_probs = _matrix_checks(trans_probs)
     return Basic.__new__(cls, sym, state_space, trans_probs)
 def __new__(cls, sym, dim=None):
     sym, dim = _symbol_converter(sym), _sympify(dim)
     if dim.is_integer == False:
         raise ValueError("Dimension of the random matrices must be "
                          "integers, received %s instead." % (dim))
     return Basic.__new__(cls, sym, dim)
def CircularEnsemble(sym, dim):
    sym, dim = _symbol_converter(sym), _sympify(dim)
    model = CircularEnsembleModel(sym, dim)
    rmp = RandomMatrixPSpace(sym, model=model)
    return RandomMatrixSymbol(sym, dim, dim, pspace=rmp)