+
    i(                         ^ RI t ^ RIHt ^ RIHt ^ RIHt ^ RIH	t	 ^ RI
Ht ^ RIHt ^ RIHt ^ R	IHt ^ R
IHt ^ RIHtHt ^ RIHt ^ RIHtHtHt  ! R R]]4      t ! R R]]4      t ! R R]]4      tR# )    N)Add)Expr)expand)Mul)S)
ShapeError)
MatrixExpr)MatMul)
ZeroMatrix)RandomSymbol	is_random)_sympify)Variance
CovarianceExpectationc                   D   a  ] tR t^t o RtRR lt]R 4       tR tRt	V t
R# )ExpectationMatrixa  
Expectation of a random matrix expression.

Examples
========

>>> from sympy.stats import ExpectationMatrix, Normal
>>> from sympy.stats.rv import RandomMatrixSymbol
>>> from sympy import symbols, MatrixSymbol, Matrix
>>> k = symbols("k")
>>> A, B = MatrixSymbol("A", k, k), MatrixSymbol("B", k, k)
>>> X, Y = RandomMatrixSymbol("X", k, 1), RandomMatrixSymbol("Y", k, 1)
>>> ExpectationMatrix(X)
ExpectationMatrix(X)
>>> ExpectationMatrix(A*X).shape
(k, 1)

To expand the expectation in its expression, use ``expand()``:

>>> ExpectationMatrix(A*X + B*Y).expand()
A*ExpectationMatrix(X) + B*ExpectationMatrix(Y)
>>> ExpectationMatrix((X + Y)*(X - Y).T).expand()
ExpectationMatrix(X*X.T) - ExpectationMatrix(X*Y.T) + ExpectationMatrix(Y*X.T) - ExpectationMatrix(Y*Y.T)

To evaluate the ``ExpectationMatrix``, use ``doit()``:

>>> N11, N12 = Normal('N11', 11, 1), Normal('N12', 12, 1)
>>> N21, N22 = Normal('N21', 21, 1), Normal('N22', 22, 1)
>>> M11, M12 = Normal('M11', 1, 1), Normal('M12', 2, 1)
>>> M21, M22 = Normal('M21', 3, 1), Normal('M22', 4, 1)
>>> x1 = Matrix([[N11, N12], [N21, N22]])
>>> x2 = Matrix([[M11, M12], [M21, M22]])
>>> ExpectationMatrix(x1 + x2).doit()
Matrix([
[12, 14],
[24, 26]])

Nc                    \        V4      pVf+   \        V4      '       g   V# \        P                  ! W4      pM"\        V4      p\        P                  ! WV4      pVP                  Vn        W#n        V# N)r   r   r   __new__shape_shape
_condition)clsexpr	conditionobjs   &&& k/var/www/html/photoedit/myenv/lib/python3.14/site-packages/sympy/stats/symbolic_multivariate_probability.pyr   ExpectationMatrix.__new__8   s\    ~T??,,s)C +I,,s)4CZZ
"
    c                    V P                   # r   r   selfs   &r   r   ExpectationMatrix.shapeF       {{r    c                  a V P                   ^ ,          pV P                  o\        V4      '       g   V# \        V\        4      '       d+   \        P
                  ! V3R lVP                    4       4      # \        V4      p\        V\        4      '       d+   \        P
                  ! V3R lVP                    4       4      # \        V\        \        34      '       Ed
   . p. p. pVP                    F  p\        V4      '       dA   V'       d   VP                  V4       MVP                  V4       . pVP                  V4       KT  VP                  '       d   VP                  V4       Ky  VP                  V4       K  	  \        V4      ^ 8X  d   V # \        P
                  ! V4      \        \        P
                  ! V4      SR7      ,          \        P
                  ! V4      ,          # V # )r   c              3   Z   <"   T F   p\        VSR 7      P                  4       x  K"  	  R# 5ir   Nr   r   .0ar   s   & r   	<genexpr>+ExpectationMatrix.expand.<locals>.<genexpr>Q   s+       (& !,A C J J L L&   (+c              3   Z   <"   T F   p\        VSR 7      P                  4       x  K"  	  R# 5ir)   r+   r,   s   & r   r/   r0   V   s+       /- !,A C J J L L-r1   r*   )argsr   r   
isinstancer   fromiter_expandr   r
   extendappend	is_Matrixlenr   )	r$   hintsr   expand_exprrvnonrvpostnonr.   r   s	   &,      @r   r   ExpectationMatrix.expandJ   sk   yy|OO	KdC  <<  (!YY ( ( ( dmk3''<<  /(-- / / / sFm,,BEGYYQ<<		'*W- GIIaL[[[NN1%LLO  5zQ<<&{3<<3C'() )),g)>? ? r     r   __name__
__module____qualname____firstlineno____doc__r   propertyr   r   __static_attributes____classdictcell____classdict__s   @r   r   r      s.     %L  ( (r    r   c                   D   a  ] tR t^tt o RtRR lt]R 4       tR tRt	V t
R# )VarianceMatrixa  
Variance of a random matrix probability expression. Also known as
Covariance matrix, auto-covariance matrix, dispersion matrix,
or variance-covariance matrix.

Examples
========

>>> from sympy.stats import VarianceMatrix
>>> from sympy.stats.rv import RandomMatrixSymbol
>>> from sympy import symbols, MatrixSymbol
>>> k = symbols("k")
>>> A, B = MatrixSymbol("A", k, k), MatrixSymbol("B", k, k)
>>> X, Y = RandomMatrixSymbol("X", k, 1), RandomMatrixSymbol("Y", k, 1)
>>> VarianceMatrix(X)
VarianceMatrix(X)
>>> VarianceMatrix(X).shape
(k, k)

To expand the variance in its expression, use ``expand()``:

>>> VarianceMatrix(A*X).expand()
A*VarianceMatrix(X)*A.T
>>> VarianceMatrix(A*X + B*Y).expand()
2*A*CrossCovarianceMatrix(X, Y)*B.T + A*VarianceMatrix(X)*A.T + B*VarianceMatrix(Y)*B.T
Nc                   \        V4      p^VP                  9  d   \        R4      hVP                  ^,          ^8X  d'   VP                  ^ ,          VP                  ^ ,          3M%VP                  ^,          VP                  ^,          3pV'       d   \        P                  ! WV4      pM\        P                  ! W4      pW4n        W$n        V# )   Expression is not a vectorr   r   r   r   r   r   r   )r   argr   r   r   s   &&&  r   r   VarianceMatrix.__new__   s    smCII9::03		!0A1syy|,		RSVYV_V_`aVbGc,,s3C,,s(C
"
r    c                    V P                   # r   r"   r#   s   &r   r   VarianceMatrix.shape   r&   r    c           	       a	 V P                   ^ ,          pV P                  o	\        V4      '       g   \        V P                  !  # \        V\        4      '       d   V # \        V\        4      '       d   . pVP                    F'  p\        V4      '       g   K  VP                  V4       K)  	  \        V	3R lV 4       !  pV	3R lp\        \        V\        P                  ! V^4      4      !  pWW,           # \        V\        \        34      '       d   . p. pVP                    F8  p\        V4      '       d   VP                  V4       K'  VP                  V4       K:  	  \        V4      ^ 8X  d   \        V P                  !  # \        V4      ^ 8X  d   V # \        V4      ^8  d   V # \        P                  ! V4      \!        \        P                  ! V4      S	4      ,          \        P                  ! V4      P#                  4       ,          # V # )r   c              3   X   <"   T F  p\        VS4      P                  4       x  K!  	  R # 5ir   )r   r   )r-   xvr   s   & r   r/   (VarianceMatrix.expand.<locals>.<genexpr>   s$     L2hr95<<>>s   '*c                 D   < ^\        V RS/ P                  4       ,          # )   r   )r   r   )xr   s   &r   <lambda>'VarianceMatrix.expand.<locals>.<lambda>   s    Qz1'J	'J'Q'Q'S%Sr    )r3   r   r   r   r   r4   r   r   r8   map	itertoolscombinationsr   r
   r:   r5   r   	transpose)
r$   r;   rS   r=   r.   	variancesmap_to_covarcovariancesr>   r   s
   &,       @r   r   VarianceMatrix.expand   s   iilOO	~~tzz**c<((KS!!BXXQ<<IIaL  LLMISLs<1G1GA1NOPK**c6]++EBXXQ<<IIaLLLO	 
 2w!|!4::..5zQ2w{<<&xR0@%(' '(+U(;'F'F'HI I r    rA   r   rB   rK   s   @r   rN   rN   t   s-     4"  & &r    rN   c                   d   a  ] tR t^t o RtR	R lt]R 4       tR t]	R 4       t
]	R 4       tRtV tR# )
CrossCovarianceMatrixad  
Covariance of a random matrix probability expression.

Examples
========

>>> from sympy.stats import CrossCovarianceMatrix
>>> from sympy.stats.rv import RandomMatrixSymbol
>>> from sympy import symbols, MatrixSymbol
>>> k = symbols("k")
>>> A, B = MatrixSymbol("A", k, k), MatrixSymbol("B", k, k)
>>> C, D = MatrixSymbol("C", k, k), MatrixSymbol("D", k, k)
>>> X, Y = RandomMatrixSymbol("X", k, 1), RandomMatrixSymbol("Y", k, 1)
>>> Z, W = RandomMatrixSymbol("Z", k, 1), RandomMatrixSymbol("W", k, 1)
>>> CrossCovarianceMatrix(X, Y)
CrossCovarianceMatrix(X, Y)
>>> CrossCovarianceMatrix(X, Y).shape
(k, k)

To expand the covariance in its expression, use ``expand()``:

>>> CrossCovarianceMatrix(X + Y, Z).expand()
CrossCovarianceMatrix(X, Z) + CrossCovarianceMatrix(Y, Z)
>>> CrossCovarianceMatrix(A*X, Y).expand()
A*CrossCovarianceMatrix(X, Y)
>>> CrossCovarianceMatrix(A*X, B.T*Y).expand()
A*CrossCovarianceMatrix(X, Y)*B
>>> CrossCovarianceMatrix(A*X + B*Y, C.T*Z + D.T*W).expand()
A*CrossCovarianceMatrix(X, W)*D + A*CrossCovarianceMatrix(X, Z)*C + B*CrossCovarianceMatrix(Y, W)*D + B*CrossCovarianceMatrix(Y, Z)*C

Nc                   \        V4      p\        V4      p^VP                  9  g;   ^VP                  9  g*   VP                  ^,          VP                  ^,          8w  d   \        R4      hVP                  ^,          ^8X  d?   VP                  ^,          ^8X  d'   VP                  ^ ,          VP                  ^ ,          3MRpV'       d   \        P                  ! WW#4      pM\        P                  ! WV4      pWEn        W5n        V# )rP   rQ   )rP   rP   rR   )r   arg1arg2r   r   r   s   &&&&  r   r   CrossCovarianceMatrix.__new__   s    ~~TZZQdjj%8djjmtzzZ[}>\9::26**Q-12DTUZ[I[A

1. 	 ,,s$:C,,s$/C
"
r    c                    V P                   # r   r"   r#   s   &r   r   CrossCovarianceMatrix.shape   r&   r    c                   V P                   ^ ,          pV P                   ^,          pV P                  pW#8X  d   \        W$4      P                  4       # \	        V4      '       d   \	        V4      '       g   \        V P                  !  # \        V\        4      '       d#   \        V\        4      '       d   \        W#V4      # V P                  VP                  4       4      pV P                  VP                  4       4      pV UUU	U
u. uF9  w  rxV F.  w  rV\        WVR7      ,          V	P                  4       ,          NK0  	  K;  	  pp	ppp
\        P                  ! V4      # u up
p	ppi )r   r*   )r3   r   rN   r   r   r   r   r4   r   ri   _expand_single_argumentrc   r   r5   )r$   r;   rk   rl   r   coeff_rv_list1coeff_rv_list2r.   r1br2addendss   &,          r   r   CrossCovarianceMatrix.expand  s   yy|yy|OO	<!$299;;iootzz**dL))j|.L.L(Y??55dkkmD55dkkmD #1P"0wWa *2YGGUU@N V"0 	 P||G$$Ps   ?E
c                :   \        V\        4      '       d   \        P                  V3.# \        V\        4      '       d   . pVP
                   Fu  p\        V\        \        34      '       d#   VP                  V P                  V4      4       KA  \        V4      '       g   KT  VP                  \        P                  V34       Kw  	  V# \        V\        \        34      '       d   V P                  V4      .# \        V4      '       d   \        P                  V3.# R # r   )r4   r   r   Oner   r3   r   r
   r8   _get_mul_nonrv_rv_tupler   )r   r   outvalr.   s   &&  r   rq   -CrossCovarianceMatrix._expand_single_argument  s     dL))UUDM?"c""FYYa#v//MM#"="=a"@Aq\\MM155!*-	  MsFm,,//566t__UUDM?" r    c                    . p. pVP                    F8  p\        V4      '       d   VP                  V4       K'  VP                  V4       K:  	  \        P                  ! V4      \        P                  ! V4      3# r   )r3   r   r8   r   r5   )r   mr=   r>   r.   s   &&   r   r{   -CrossCovarianceMatrix._get_mul_nonrv_rv_tuple+  sX    A||		!Q	 
 U#S\\"%566r    rA   r   )rC   rD   rE   rF   rG   r   rH   r   r   classmethodrq   r{   rI   rJ   rK   s   @r   ri   ri      sP     >&  %* # #$ 7 7r    ri   ) ra   sympy.core.addr   sympy.core.exprr   sympy.core.functionr   r6   sympy.core.mulr   sympy.core.singletonr   sympy.matrices.exceptionsr   "sympy.matrices.expressions.matexprr	   !sympy.matrices.expressions.matmulr
   "sympy.matrices.expressions.specialr   sympy.stats.rvr   r   sympy.core.sympifyr    sympy.stats.symbolic_probabilityr   r   r   r   rN   ri   rA   r    r   <module>r      sa        1  " 0 9 4 9 2 ' N NaZ aFVXz Vph7J
 h7r    