K iKddlmZmZddlmZddlmZddlmZddl m Z ddl m Z ddl mZGd d eZGd d eZGd deZGddeZGddeZy))askQ)Eq)S)_sympify)KroneckerDeltaNonInvertibleMatrixError) MatrixExprcleZdZdZdZfdZedZdZdZ dZ dZ d Z d Z d Zd Zd ZxZS) ZeroMatrixzThe Matrix Zero 0 - additive identity Examples ======== >>> from sympy import MatrixSymbol, ZeroMatrix >>> A = MatrixSymbol('A', 3, 5) >>> Z = ZeroMatrix(3, 5) >>> A + Z A >>> Z*A.T 0 Tct|t|}}|j||j|t| |||SNr _check_dimsuper__new__)clsmn __class__s h/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/matrices/expressions/special.pyrzZeroMatrix.__new__s?{HQK1 q qwsAq))c>|jd|jdfSNrr argsselfs rshapezZeroMatrix.shape! ! diil++rc,|dkdk(r td|S)NrTMatrix det == 0; not invertibler r exps r _eval_powerzZeroMatrix._eval_power%s !G *+LM M rcBt|j|jSrrcolsrowsrs r_eval_transposezZeroMatrix._eval_transpose+$))TYY//rcBt|j|jSrr)rs r _eval_adjointzZeroMatrix._eval_adjoint.r-rc"tjSrrZerors r _eval_tracezZeroMatrix._eval_trace1 vv rc"tjSrr1rs r_eval_determinantzZeroMatrix._eval_determinant4r4rctd)N Matrix det == 0; not invertible.r rs r _eval_inversezZeroMatrix._eval_inverse7s&'IJJrc ||fSrrs r_eval_as_real_imagzZeroMatrix._eval_as_real_imag:s d|rc|Srr;rs r_eval_conjugatezZeroMatrix._eval_conjugate= rc "tjSrr1r ijkwargss r_entryzZeroMatrix._entry@r4r)__name__ __module__ __qualname____doc__ is_ZeroMatrixrpropertyr!r'r,r/r3r6r9r<r>rE __classcell__rs@rrr sV M*,, 00KrrcheZdZdZfdZedZedZedZdZ dZ fdZ xZ S) GenericZeroMatrixz A zero matrix without a specified shape This exists primarily so MatAdd() with no arguments can return something meaningful. c*tt| |Sr)rrrrrs rrzGenericZeroMatrix.__new__KsZ-c22rctdNz1GenericZeroMatrix does not have a specified shape TypeErrorrs rr+zGenericZeroMatrix.rowsPKLLrctdrSrTrs rr*zGenericZeroMatrix.colsTrVrctdrSrTrs rr!zGenericZeroMatrix.shapeXrVrc"t|tSr) isinstancerOr others r__eq__zGenericZeroMatrix.__eq__]s%!233rc||k( Srr;r[s r__ne__zGenericZeroMatrix.__ne__`EM""rc t|Srr__hash__r rs rrczGenericZeroMatrix.__hash__cw!!r) rFrGrHrIrrKr+r*r!r]r_rcrLrMs@rrOrODsc 3 MMMMMM4#""rrOceZdZdZdZfdZedZedZedZ edZ dZ d Z d Z d Zd Zd ZdZdZdZxZS)IdentityzThe Matrix Identity I - multiplicative identity Examples ======== >>> from sympy import Identity, MatrixSymbol >>> A = MatrixSymbol('A', 3, 5) >>> I = Identity(3) >>> I*A A Tc\t|}|j|t| ||Srr)rrrs rrzIdentity.__new__ws) QK qwsA&&rc |jdSNrrrs rr+z Identity.rows}yy|rc |jdSrjrrs rr*z Identity.colsrkrc>|jd|jdfSrjrrs rr!zIdentity.shaper"rcyNTr;rs r is_squarezIdentity.is_squarerc|Srr;rs rr,zIdentity._eval_transposer?rc|jSr)r+rs rr3zIdentity._eval_traces yyrc|Srr;rs rr9zIdentity._eval_inverser?rc*|t|jfSrrr!rs rr<zIdentity._eval_as_real_imagj$**-..rc|Srr;rs rr>zIdentity._eval_conjugater?rc|Srr;rs rr/zIdentity._eval_adjointr?rc t||}|tjurtjS|tjurtj St ||d|jdz fSr)rrtrueOnefalser2rr*)r rBrCrDeqs rrEzIdentity._entrysQ 1X <55L 177]66MaQ ! $455rc"tjSrrr|rs rr6zIdentity._eval_determinant uu rc|Srr;r%s rr'zIdentity._eval_powerr?r)rFrGrHrI is_IdentityrrKr+r*r!rpr,r3r9r<r>r/rEr6r'rLrMs@rrgrghs K' ,,/6rrgcxeZdZdZfdZedZedZedZedZ dZ dZ fd Z xZ S) GenericIdentityz An identity matrix without a specified shape This exists primarily so MatMul() with no arguments can return something meaningful. c*tt| |Sr)rrgrrQs rrzGenericIdentity.__new__sXs+C00rctdNz/GenericIdentity does not have a specified shaperTrs rr+zGenericIdentity.rowsIJJrctdrrTrs rr*zGenericIdentity.colsrrctdrrTrs rr!zGenericIdentity.shaperrcyror;rs rrpzGenericIdentity.is_squarerqrc"t|tSr)rZrr[s rr]zGenericIdentity.__eq__s%11rc||k( Srr;r[s rr_zGenericIdentity.__ne__r`rc t|Srrbrds rrczGenericIdentity.__hash__rer)rFrGrHrIrrKr+r*r!rpr]r_rcrLrMs@rrrsw 1 KKKKKK2#""rrceZdZdZdfd ZedZedZdZdZ fdZ dZ d Z d Z d Zd Zd ZdZdZdZxZS) OneMatrixz, Matrix whose all entries are ones. ct|t|}}|j||j||r)t|dt|dz}|dk(r tdSt||||}|S)Nr T)rrrrgrr)rrrevaluate conditionobjrs rrzOneMatrix.__new__sn{HQK1 q q 1a2a8+ID {"goc1a( rc|jSr)_argsrs rr!zOneMatrix.shapes zzrc(|jdk(Sro)_is_1x1rs rrzOneMatrix.is_Identitys||~%%rc@ddlm}|j|jS)Nr)ImmutableDenseMatrix)sympy.matrices.immutableronesr!)r rs r as_explicitzOneMatrix.as_explicitsA(#(($**55rc |j}|jddr|Dcgc]}|jdi|}}|j|ddiScc}w)NdeepTrr;)rgetdoitfunc)r hintsras rrzOneMatrix.doitsSyy 99VT "-12FAFFOUO2D2tyy$...3sAc|jdk(r tdS|dkdk(r tdtt j |r(|j d|dz zt|j zSt|%|S)NTr rr$) rrgr rrintegerr!rrr')r r&rs rr'zOneMatrix._eval_powersx <<>T !A;  !G *+LM M qyy~ ::a=S1W- 4::0FF Fw"3''rcBt|j|jSrrr*r+rs rr,zOneMatrix._eval_transposeDII..rcBt|j|jSrrrs rr/zOneMatrix._eval_adjointrrc<tj|jzSr)rr|r+rs rr3zOneMatrix._eval_tracesuuTYYrcX|j}t|ddt|ddzS)z-Returns true if the matrix is known to be 1x1rr )r!r)r r!s rrzOneMatrix._is_1x1 s* %(AE!Ha00rc|j}|dk(rtjS|dk(rtjSddlm}||S)NTFr) Determinant)rrr|r2&sympy.matrices.expressions.determinantr)r rrs rr6zOneMatrix._eval_determinants=LLN  55L % 66M Jt$ $rc~|j}|dk(r tdS|dk(r tdddlm}||S)NTr Fr8)Inverse)rrgr inverser)r rrs rr9zOneMatrix._eval_inverses@LLN  A;  % *+MN N (4= rc*|t|jfSrrvrs rr<zOneMatrix._eval_as_real_imag$rwrc|Srr;rs rr>zOneMatrix._eval_conjugate'r?rc "tjSrrrAs rrEzOneMatrix._entry*rr)F)rFrGrHrIrrKr!rrrr'r,r/r3rr6r9r<r>rErLrMs@rrrsq &&6/ (//1 %!/rrN)sympy.assumptions.askrrsympy.core.relationalrsympy.core.singletonrsympy.core.sympifyr(sympy.functions.special.tensor_functionsrsympy.matrices.exceptionsr matexprr rrOrgrrr;rrrs^($"'C>77t " "HCzCL$"h$"NV Vr