K i zddlmZddlmZmZddlmZddlmZGddeZ ddl m Z m Z ddl mZd Zeed<y ) )_sympify)SBasic)NonSquareMatrixError)MatPowceZdZdZdZej Zej fdZe dZ e dZ dZ dZ dZd Zd Zd Zd Zy )Inversea The multiplicative inverse of a matrix expression This is a symbolic object that simply stores its argument without evaluating it. To actually compute the inverse, use the ``.inverse()`` method of matrices. Examples ======== >>> from sympy import MatrixSymbol, Inverse >>> A = MatrixSymbol('A', 3, 3) >>> B = MatrixSymbol('B', 3, 3) >>> Inverse(A) A**(-1) >>> A.inverse() == Inverse(A) True >>> (A*B).inverse() B**(-1)*A**(-1) >>> Inverse(A*B) (A*B)**(-1) Tct|}t|}|js td|jdurt d|zt j |||S)Nzmat should be a matrixFzInverse of non-square matrix %s)r is_Matrix TypeError is_squarerr__new__)clsmatexps h/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/matrices/expressions/inverse.pyrzInverse.__new__#sYsmsm}}45 5 ==E !&'H3'NO O}}S#s++c |jdSNr)argsselfs rargz Inverse.arg.syy|rc.|jjSN)rshapers rrz Inverse.shape2sxx~~rc|jSr)rrs r _eval_inversezInverse._eval_inverse6s xxrcHt|jjSr)r r transposers r_eval_transposezInverse._eval_transpose9txx))+,,rcHt|jjSr)r radjointrs r _eval_adjointzInverse._eval_adjoint<stxx'')**rcHt|jjSr)r r conjugaters r_eval_conjugatezInverse._eval_conjugate?r"rc8ddlm}d||jz S)Nr)det)&sympy.matrices.expressions.determinantr*r)rr*s r_eval_determinantzInverse._eval_determinantBs>TXXrc d|vr |ddk(r|S|j}|jddr|jdi|}|jS)N inv_expandFdeepT)rgetdoitinverse)rhintsrs rr3z Inverse.doitFsQ 5 U<%8E%AKhh 99VT "#((#U#C{{}rc|jd}|j|}|D]7}|xj|j zc_|xj|zc_9|Sr)r_eval_derivative_matrix_lines first_pointerTsecond_pointer)rxrlineslines rr7z%Inverse._eval_derivative_matrix_linesPs]iil11!4 (D   466' )    4 '  ( rN)__name__ __module__ __qualname____doc__ is_Inverser NegativeOnerrpropertyrrrr!r%r(r-r3r7r1rrr r sn.J --Cmm ,-+-rr )askQ) handlers_dictcPttj||r|jjSttj ||r|jj Sttj||rtd|jz|S)z >>> from sympy import MatrixSymbol, Q, assuming, refine >>> X = MatrixSymbol('X', 2, 2) >>> X.I X**(-1) >>> with assuming(Q.orthogonal(X)): ... print(refine(X.I)) X.T zInverse of singular matrix %s) rErF orthogonalrr9unitaryr'singular ValueError)expr assumptionss rrefine_InverserO]sw 1<< {+xxzz QYYt_k *xx!!## QZZ { +8488CDD KrN)sympy.core.sympifyr sympy.corerrsympy.matrices.exceptionsr!sympy.matrices.expressions.matpowrr sympy.assumptions.askrErFsympy.assumptions.refinerGrOr1rrrVs9':4NfNb)2&* ir