+
    ‹°³jð[  ã                   ó˜  € ^ RI Ht ^ RIHt ^RIHt ^RIHt ^RIH	t	H
t
Ht ^RIHtHtHtHtHtHtHtHtHtHtHtHtHtHtHt ^RIHtHtHtH t  ^RI!H"t"H#t#H$t$H%t% ^R	I&H't'H(t(H)t)H*t*H+t+H,t,H-t-H.t.H/t/H0t0H1t1H2t2H3t3H4t4 ^R
I5H6t6 RR./t7 ! R R]4      t8 ! R R]84      t9 ! R R]94      t: ! R R]:4      t; ! R R]4      t< ! R R]4      t=R# )é    )ÚBasic)ÚDummy)ÚMatrixCommon)ÚNonSquareMatrixError)Ú_iszeroÚ_is_zero_after_expand_mulÚ	_simplify)Ú_find_reasonable_pivotÚ_find_reasonable_pivot_naiveÚ	_adjugateÚ	_charpolyÚ	_cofactorÚ_cofactor_matrixÚ_perÚ_detÚ_det_bareissÚ_det_berkowitzÚ	_det_birdÚ_det_laplaceÚ_det_LUÚ_minorÚ_minor_submatrix)Ú_is_echelonÚ_echelon_formÚ_rankÚ_rref)Ú_columnspaceÚ
_nullspaceÚ	_rowspaceÚ_orthogonalize)Ú
_eigenvalsÚ_eigenvectsÚ_bidiagonalizeÚ_bidiagonal_decompositionÚ_is_diagonalizableÚ_diagonalizeÚ_is_positive_definiteÚ_is_positive_semidefiniteÚ_is_negative_definiteÚ_is_negative_semidefiniteÚ_is_indefiniteÚ_jordan_formÚ_left_eigenvectsÚ_singular_values)Ú
MatrixBaseÚ
matplotlibc                   óÂ  a € ] tR t^/t o Rt]3R ltR t]R3R lt	R t
R tR tRR	 ltR
]3R ltRR ltRR ltRR ltR tRR ltR t]P                  ]n        ]P                  ]n        ]P                  ]n        ]P                  ]n        ]P                  ]
n        ]P                  ]n        ]P                  ]	n        ]P                  ]n        ]P                  ]n        ]P                  ]n        ] P                  ]n        ]!P                  ]n        ]P                  ]n        ]"P                  ]n        ]#P                  ]n        ]$P                  ]n        Rt%V t&R# )ÚMatrixDeterminantz„Provides basic matrix determinant operations. Should not be instantiated
directly. See ``determinant.py`` for their implementations.c                ó   € \        WR 7      # ))Ú
iszerofunc©r   )Úselfr4   s   &&ÚX/home/luca/screen-checking/.venv/lib/python3.14/site-packages/sympy/matrices/matrices.pyÚ_eval_det_bareissÚ#MatrixDeterminant._eval_det_bareiss3   s   € Ü˜DÔ8Ð8ó    c                ó   € \        V 4      # ©N)r   ©r6   s   &r7   Ú_eval_det_berkowitzÚ%MatrixDeterminant._eval_det_berkowitz6   s   € Ü˜dÓ#Ð#r:   Nc                ó   € \        WVR 7      # ))r4   Úsimpfunc)r   )r6   r4   rA   s   &&&r7   Ú_eval_det_luÚMatrixDeterminant._eval_det_lu9   s   € Ü�t¸XÔFÐFr:   c                ó   € \        V 4      # r<   )r   r=   s   &r7   Ú_eval_det_birdÚ MatrixDeterminant._eval_det_bird<   s   € Ü˜‹Ðr:   c                ó   € \        V 4      # r<   )r   r=   s   &r7   Ú_eval_det_laplaceÚ#MatrixDeterminant._eval_det_laplace?   ó   € Ü˜DÓ!Ð!r:   c                ó   € \        V 4      # r<   ©r   r=   s   &r7   Ú_eval_determinantÚ#MatrixDeterminant._eval_determinantB   ó   € Ü�D‹zÐr:   c                ó   € \        WR 7      # ©©Úmethod)r   ©r6   rS   s   &&r7   ÚadjugateÚMatrixDeterminant.adjugateE   s   € Ü˜Ô-Ð-r:   Úlambdac                ó   € \        WVR 7      # ))ÚxÚsimplify)r   ©r6   rY   rZ   s   &&&r7   ÚcharpolyÚMatrixDeterminant.charpolyH   s   € Ü˜¨XÔ6Ð6r:   c                ó   € \        WW#R 7      # rQ   )r   ©r6   ÚiÚjrS   s   &&&&r7   ÚcofactorÚMatrixDeterminant.cofactorK   s   € Ü˜ !Ô3Ð3r:   c                ó   € \        WR 7      # rQ   )r   rT   s   &&r7   Úcofactor_matrixÚ!MatrixDeterminant.cofactor_matrixN   s   € Ü Ô4Ð4r:   c                ó   € \        WVR 7      # ))rS   r4   rL   )r6   rS   r4   s   &&&r7   ÚdetÚMatrixDeterminant.detQ   s   € Ü�D°JÔ?Ð?r:   c                ó   € \        V 4      # r<   )r   r=   s   &r7   ÚperÚMatrixDeterminant.perT   rO   r:   c                ó   € \        WW#R 7      # rQ   )r   r_   s   &&&&r7   ÚminorÚMatrixDeterminant.minorW   s   € Ü�d˜qÔ0Ð0r:   c                ó   € \        WV4      # r<   )r   ©r6   r`   ra   s   &&&r7   Úminor_submatrixÚ!MatrixDeterminant.minor_submatrixZ   s   € Ü ¨Ó+Ð+r:   © ©Ú	berkowitz)ÚbareissN)'Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r8   r>   r   rB   rE   rH   rM   rU   r	   r\   rb   re   rh   rk   rn   rr   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r7   r2   r2   /   sF  ø‡ € ñCð ,Eô 9ò$ð '.¸ô Gòò"òô.ð "¨Iô 7ô4ô5ô@òô1ò,ð ,B×+IÑ+IÐÔ"Ø+G×+OÑ+OÐ Ô(Ø+7×+?Ñ+?ÐÔØ+9×+AÑ+AÐÔØ(1×(9Ñ(9€NÔØ+7×+?Ñ+?ÐÔØ+2¯?©?€LÔØ+/¯<©<ÐÔØ+4×+<Ñ+<€HÔØ+4×+<Ñ+<€HÔØ+4×+<Ñ+<€HÔØ+;×+CÑ+C€OÔØ+/¯<©<€C„KØ+/¯<©<€C„KØ+1¯>©>€E„MØ+;×+CÑ+C€O×Òr:   r2   c                   ó4  a € ] tR t^ot o Rt]RR3R lt]R 4       t]R3R lt	R t
]RRR3R lt]P                  ]n        ]P                  ]n        ]P                  ]	n        ]P                  ]n        RR	 ltR
 tR tR tR tR tR tRR ltRR ltRtV tR# )ÚMatrixReductionszŠProvides basic matrix row/column operations. Should not be instantiated
directly. See ``reductions.py`` for some of their implementations.Fc                ó   € \        WVVR 7      # ))r4   rZ   Úwith_pivots)r   )r6   r4   rZ   r„   s   &&&&r7   Úechelon_formÚMatrixReductions.echelon_forms   s   € Ü˜TÀ8Ø'ô)ð 	)r:   c                ó   € \        V 4      # r<   )r   r=   s   &r7   Ú
is_echelonÚMatrixReductions.is_echelonw   s   € ä˜4Ó Ð r:   c                ó   € \        WVR 7      # ))r4   rZ   )r   )r6   r4   rZ   s   &&&r7   ÚrankÚMatrixReductions.rank{   s   € Ü�T¸8ÔDÐDr:   c                óÌ   € \        V P                  W P                  V P                  4      V4      4      w  r#VRRV P                  13,          VRVP                  ) R13,          3# )a]  Return reduced row-echelon form of matrix, matrix showing
rhs after reduction steps. ``rhs`` must have the same number
of rows as ``self``.

Examples
========

>>> from sympy import Matrix, symbols
>>> r1, r2 = symbols('r1 r2')
>>> Matrix([[1, 1], [2, 1]]).rref_rhs(Matrix([r1, r2]))
(Matrix([
[1, 0],
[0, 1]]), Matrix([
[ -r1 + r2],
[2*r1 - r2]]))
:NNNN)r   ÚhstackÚeyeÚrowsÚcols)r6   ÚrhsÚrÚ_s   &&  r7   Úrref_rhsÚMatrixReductions.rref_rhs~   sU   € ô" �T—[‘[ §x¡x°·	±	Ó':¸CÓ@ÓA‰ˆØ��J�T—Y‘Y�J�Õ  1 s§x¡x i¡j =Õ!1Ð1Ð1r:   Tc                ó   € \        WVW4R 7      # ))r4   rZ   ÚpivotsÚnormalize_last)r   )r6   r4   rZ   r˜   r™   s   &&&&&r7   ÚrrefÚMatrixReductions.rref’   s   € ä�T¸8Øô:ð 	:r:   c                ón  € VR9  d   \        RP                  Wa4      4      hVR8X  d   V P                  MV P                  pVR8X  dX   Ve   TMTpVe   Vf   \        RP                  V4      4      h^ Tu;8:  d   V8  g   M \        RP                  Wb4      4      hEM“VR8X  d¾   W#WE0P	                  R.4      p\        V4      ^8”  d   W$V0P	                  R.4      p\        V4      ^8w  d   \        R	P                  V4      4      hVw  rE^ Tu;8:  d   V8  g   M \        RP                  Wd4      4      h^ Tu;8:  d   V8  g   M \        RP                  We4      4      hMÏVR8X  d®   Vf   TMTpVf   TMTpVe	   Ve   Vf   \        R
P                  V4      4      hW%8X  d   \        RP                  V4      4      h^ Tu;8:  d   V8  g   M \        RP                  Wb4      4      h^ Tu;8:  d   V8  g   M \        RP                  We4      4      hM\        R\        V4      ,          4      hWW4V3# )z‡Validate the arguments for a row/column operation.  ``error_str``
can be one of "row" or "col" depending on the arguments being parsed.ún->knún<->mún->n+kmzOUnknown {} operation '{}'. Valid col operations are 'n->kn', 'n<->m', 'n->n+km'ÚcolNzEFor a {0} operation 'n->kn' you must provide the kwargs `{0}` and `k`z#This matrix does not have a {} '{}'zIFor a {0} operation 'n<->m' you must provide the kwargs `{0}1` and `{0}2`zPFor a {0} operation 'n->n+km' you must provide the kwargs `{0}`, `k`, and `{0}2`zAFor a {0} operation 'n->n+km' `{0}` and `{0}2` must be different.zinvalid operation %s)r�   rž   rŸ   )Ú
ValueErrorÚformatr‘   r�   Ú
differenceÚlenÚrepr)	r6   Úopr    ÚkÚcol1Úcol2Ú	error_strÚ	self_colsr‘   s	   &&&&&&&  r7   Ú_normalize_op_argsÚ#MatrixReductions._normalize_op_argsœ   sG  € ð Ð2Ô2Üð ?ß?E¹vÀiÓ?TóVð Vð "+¨eÔ!3�D—I’I¸¿¹ˆ	ð �Œ=Øš‘#¨dˆCØŠ{˜ašiÜ ð "8ß8>¹¸yÓ8IóKð Kà˜Ö'˜iÖ'Ü Ð!F×!MÑ!MÈiÓ!]Ó^Ð^ñ (ð �7Œ]ð ˜DÐ'×2Ñ2°D°6Ó:ˆDÜ�4‹y˜1Œ}à 4Ð(×3Ñ3°T°FÓ;�Ü�4‹y˜AŒ~Ü ð "<ß<B¹FÀ9Ó<MóOð Oà‰JˆDØ˜Ö(˜yÖ(Ü Ð!F×!MÑ!MÈiÓ!^Ó_Ð_Ø˜Ö(˜yÖ(Ü Ð!F×!MÑ!MÈiÓ!^Ó_Ð_ð )ð �9Œ_Øš+‘$¨3ˆCØš<‘4¨TˆDØŠ{˜dšl¨aªiÜ ð "AßAGÁÈ	ÓARóTð TàŒ{Ü ð "1ß17±¸	Ó1BóDð Dà˜Ö'˜iÖ'Ü Ð!F×!MÑ!MÈiÓ!]Ó^Ð^Ø˜Ö(˜yÖ(Ü Ð!F×!MÑ!MÈiÓ!^Ó_Ð_ð )ô Ð3´d¸2³hÕ>Ó?Ð?à˜ Ð%Ð%r:   c                óf   a aa€ VVV 3R  lpS P                  S P                  S P                  V4      # )c                 óH   <€ VS8X  d   SSW3,          ,          # SW3,          # r<   rt   )r`   ra   r    r§   r6   s   &&€€€r7   ÚentryÚBMatrixReductions._eval_col_op_multiply_col_by_const.<locals>.entryÔ   ó&   ø€ Ø�CŒxØ˜4  �:•~Ð%Ø˜˜•:Ðr:   ©Ú_newr�   r‘   )r6   r    r§   r°   s   fff r7   Ú"_eval_col_op_multiply_col_by_constÚ3MatrixReductions._eval_col_op_multiply_col_by_constÓ   ó%   ú€ ÷	ð �y‰y˜Ÿ™ D§I¡I¨uÓ5Ð5r:   c                óf   a aa€ VVV 3R  lpS P                  S P                  S P                  V4      # )c                 ó`   <€ VS8X  d   SV S3,          # VS8X  d   SV S3,          # SW3,          # r<   rt   )r`   ra   r¨   r©   r6   s   &&€€€r7   r°   Ú1MatrixReductions._eval_col_op_swap.<locals>.entryÛ   s9   ø€ Ø�DŒyØ˜A˜t˜G•}Ð$Ø�d”Ø˜A˜t˜G•}Ð$Ø˜˜•:Ðr:   r³   )r6   r¨   r©   r°   s   fff r7   Ú_eval_col_op_swapÚ"MatrixReductions._eval_col_op_swapÚ   ó%   ú€ ÷	ð �y‰y˜Ÿ™ D§I¡I¨uÓ5Ð5r:   c                ój   a aaa€ VVVV 3R  lpS P                  S P                  S P                  V4      # )c                 óh   <€ VS8X  d"   SW3,          SSV S3,          ,          ,           # SW3,          # r<   rt   )r`   ra   r    r©   r§   r6   s   &&€€€€r7   r°   ÚFMatrixReductions._eval_col_op_add_multiple_to_other_col.<locals>.entryä   s4   ø€ Ø�CŒxØ˜A˜D•z A¨¨Q°¨W­Õ$5Õ5Ð5Ø˜˜•:Ðr:   r³   )r6   r    r§   r©   r°   s   ffff r7   Ú&_eval_col_op_add_multiple_to_other_colÚ7MatrixReductions._eval_col_op_add_multiple_to_other_colã   ó*   û€ ÷	ð 	ð �y‰y˜Ÿ™ D§I¡I¨uÓ5Ð5r:   c                óf   a aa€ VVV 3R  lpS P                  S P                  S P                  V4      # )c                 ó`   <€ V S8X  d   SSV3,          # V S8X  d   SSV3,          # SW3,          # r<   rt   )r`   ra   Úrow1Úrow2r6   s   &&€€€r7   r°   Ú1MatrixReductions._eval_row_op_swap.<locals>.entryë   s9   ø€ Ø�DŒyØ˜D !˜G•}Ð$Ø�d”Ø˜D !˜G•}Ð$Ø˜˜•:Ðr:   r³   )r6   rÆ   rÇ   r°   s   fff r7   Ú_eval_row_op_swapÚ"MatrixReductions._eval_row_op_swapê   r½   r:   c                óf   a aa€ VVV 3R  lpS P                  S P                  S P                  V4      # )c                 óH   <€ V S8X  d   SSW3,          ,          # SW3,          # r<   rt   )r`   ra   r§   Úrowr6   s   &&€€€r7   r°   ÚBMatrixReductions._eval_row_op_multiply_row_by_const.<locals>.entryô   r²   r:   r³   )r6   rÍ   r§   r°   s   fff r7   Ú"_eval_row_op_multiply_row_by_constÚ3MatrixReductions._eval_row_op_multiply_row_by_constó   r·   r:   c                ój   a aaa€ VVVV 3R  lpS P                  S P                  S P                  V4      # )c                 óh   <€ V S8X  d"   SW3,          SSSV3,          ,          ,           # SW3,          # r<   rt   )r`   ra   r§   rÍ   rÇ   r6   s   &&€€€€r7   r°   ÚFMatrixReductions._eval_row_op_add_multiple_to_other_row.<locals>.entryû   s4   ø€ Ø�CŒxØ˜A˜D•z A¨¨T°1¨W­Õ$5Õ5Ð5Ø˜˜•:Ðr:   r³   )r6   rÍ   r§   rÇ   r°   s   ffff r7   Ú&_eval_row_op_add_multiple_to_other_rowÚ7MatrixReductions._eval_row_op_add_multiple_to_other_rowú   rÃ   r:   Nc                óÈ   € V P                  WW4VR4      w  rr4pVR8X  d   V P                  W#4      # VR8X  d   V P                  WE4      # VR8X  d   V P                  W#V4      # R# )aü  Performs the elementary column operation `op`.

`op` may be one of

    * ``"n->kn"`` (column n goes to k*n)
    * ``"n<->m"`` (swap column n and column m)
    * ``"n->n+km"`` (column n goes to column n + k*column m)

Parameters
==========

op : string; the elementary row operation
col : the column to apply the column operation
k : the multiple to apply in the column operation
col1 : one column of a column swap
col2 : second column of a column swap or column "m" in the column operation
       "n->n+km"
r    r�   rž   rŸ   N)r¬   rµ   r»   rÁ   )r6   r¦   r    r§   r¨   r©   s   &&&&&&r7   Úelementary_col_opÚ"MatrixReductions.elementary_col_op  ós   € ð( "&×!8Ñ!8¸À!È4ÐQVÓ!WÑˆ�˜$ð �Œ=Ø×:Ñ:¸3ÓBÐBØ�Œ=Ø×)Ñ)¨$Ó5Ð5Ø�Œ?Ø×>Ñ>¸sÀtÓLÐLñ r:   c                óÈ   € V P                  WW4VR4      w  rr4pVR8X  d   V P                  W#4      # VR8X  d   V P                  WE4      # VR8X  d   V P                  W#V4      # R# )aÌ  Performs the elementary row operation `op`.

`op` may be one of

    * ``"n->kn"`` (row n goes to k*n)
    * ``"n<->m"`` (swap row n and row m)
    * ``"n->n+km"`` (row n goes to row n + k*row m)

Parameters
==========

op : string; the elementary row operation
row : the row to apply the row operation
k : the multiple to apply in the row operation
row1 : one row of a row swap
row2 : second row of a row swap or row "m" in the row operation
       "n->n+km"
rÍ   r�   rž   rŸ   N)r¬   rÏ   rÉ   rÔ   )r6   r¦   rÍ   r§   rÆ   rÇ   s   &&&&&&r7   Úelementary_row_opÚ"MatrixReductions.elementary_row_op  rÙ   r:   rt   )r    )r�   NNNN)rx   ry   rz   r{   r|   r   r…   Úpropertyrˆ   r‹   r•   rš   r   r   r   r   r¬   rµ   r»   rÁ   rÉ   rÏ   rÔ   r×   rÛ   r}   r~   r   s   @r7   r‚   r‚   o   sº   ø‡ € ñJð '.¸È5ô )ð ñ!ó ð!ð &°ô Eò2ð( &°¸dØô:ð
 )×0Ñ0€LÔØ&×.Ñ.€JÔØ Ÿ=™=€D„LØ Ÿ=™=€D„Lô5&òn6ò6ò6ò6ò6ò6ôM÷<Mò Mr:   r‚   c                   óä   a € ] tR tRt o RtR
R ltR]3R ltR
R ltR t	]
P                  ]n        ]P                  ]n        ]P                  ]n        ]P                  ]	n        ]! ]	4      t	RtV tR	# )ÚMatrixSubspacesi>  z˜Provides methods relating to the fundamental subspaces of a matrix.
Should not be instantiated directly. See ``subspaces.py`` for their
implementations.Fc                ó   € \        WR 7      # ©)rZ   )r   ©r6   rZ   s   &&r7   ÚcolumnspaceÚMatrixSubspaces.columnspaceC  s   € Ü˜DÔ4Ð4r:   c                ó   € \        WVR 7      # ))rZ   r4   )r   )r6   rZ   r4   s   &&&r7   Ú	nullspaceÚMatrixSubspaces.nullspaceF  s   € Ü˜$¸jÔIÐIr:   c                ó   € \        WR 7      # rá   )r   râ   s   &&r7   ÚrowspaceÚMatrixSubspaces.rowspaceI  s   € Ü˜Ô1Ð1r:   c                ó    € \        V .VO5/ VB # r<   )r    )ÚclsÚvecsÚkwargss   &*,r7   ÚorthogonalizeÚMatrixSubspaces.orthogonalizeO  s   € Ü˜cÐ3 DÒ3¨FÑ3Ð3r:   rt   N©F)rx   ry   rz   r{   r|   rã   r   ræ   ré   rï   r   r   r   r    Úclassmethodr}   r~   r   s   @r7   rß   rß   >  sj   ø‡ € ñô5ð "'°7ô Jô2ò4ð )×0Ñ0€KÔØ&×.Ñ.€IÔØ%×-Ñ-€HÔØ*×2Ñ2€MÔá'¨Ó6†Mr:   rß   c                   ó¦  a € ] tR tRt o RtRR ltR]3R ltRR ltRR lt	RR lt
RR	 lt]R
 4       t]R 4       t]R 4       t]R 4       t]R 4       tRR ltR tR t]P                  ]n        ]P                  ]n        ]P                  ]n        ]P                  ]	n        ]P                  ]n        ]P                  ]n        ]P                  ]n        ]P                  ]n        ]P                  ]n        ]P                  ]n        ]P                  ]n        ] P                  ]n        ]!P                  ]
n        ]"P                  ]n        Rt#V t$R# )ÚMatrixEigeniZ  z„Provides basic matrix eigenvalue/vector operations.
Should not be instantiated directly. See ``eigen.py`` for their
implementations.Tc                ó   € \        V 3R V/VB # )Úerror_when_incomplete)r!   )r6   rö   Úflagss   &&,r7   Ú	eigenvalsÚMatrixEigen.eigenvals_  s   € Ü˜$ÑUÐ6KÐUÈuÑUÐUr:   c                ó"   € \        V 3R VRV/VB # )rö   r4   )r"   )r6   rö   r4   r÷   s   &&&,r7   Ú
eigenvectsÚMatrixEigen.eigenvectsb  s)   € Ü˜4ñ 0Ð7Lð 0Ø%ð0Ø).ñ0ð 	0r:   c                ó   € \        V 3R V/VB # )Ú
reals_only)r%   )r6   rþ   rî   s   &&,r7   Úis_diagonalizableÚMatrixEigen.is_diagonalizablef  s   € Ü! $ÑH°:ÐHÀÑHÐHr:   c                ó   € \        WVVR 7      # ))rþ   ÚsortÚ	normalize)r&   )r6   rþ   r  r  s   &&&&r7   ÚdiagonalizeÚMatrixEigen.diagonalizei  s   € Ü˜D¸dØ#ô%ð 	%r:   c                ó   € \        WR 7      # ©)Úupper)r#   ©r6   r  s   &&r7   ÚbidiagonalizeÚMatrixEigen.bidiagonalizem  s   € Ü˜dÔ0Ð0r:   c                ó   € \        WR 7      # r  )r$   r	  s   &&r7   Úbidiagonal_decompositionÚ$MatrixEigen.bidiagonal_decompositionp  s   € Ü(¨Ô;Ð;r:   c                ó   € \        V 4      # r<   )r'   r=   s   &r7   Úis_positive_definiteÚ MatrixEigen.is_positive_definites  ó   € ä$ TÓ*Ð*r:   c                ó   € \        V 4      # r<   )r(   r=   s   &r7   Úis_positive_semidefiniteÚ$MatrixEigen.is_positive_semidefinitew  ó   € ä(¨Ó.Ð.r:   c                ó   € \        V 4      # r<   )r)   r=   s   &r7   Úis_negative_definiteÚ MatrixEigen.is_negative_definite{  r  r:   c                ó   € \        V 4      # r<   )r*   r=   s   &r7   Úis_negative_semidefiniteÚ$MatrixEigen.is_negative_semidefinite  r  r:   c                ó   € \        V 4      # r<   )r+   r=   s   &r7   Úis_indefiniteÚMatrixEigen.is_indefiniteƒ  s   € ä˜dÓ#Ð#r:   c                ó   € \        V 3R V/VB # )Úcalc_transform)r,   )r6   r!  rî   s   &&,r7   Újordan_formÚMatrixEigen.jordan_form‡  s   € Ü˜DÑJ°ÐJÀ6ÑJÐJr:   c                ó   € \        V 3/ VB # r<   )r-   ©r6   r÷   s   &,r7   Úleft_eigenvectsÚMatrixEigen.left_eigenvectsŠ  s   € Ü Ñ.¨Ñ.Ð.r:   c                ó   € \        V 4      # r<   )r.   r=   s   &r7   Úsingular_valuesÚMatrixEigen.singular_values�  s   € Ü Ó%Ð%r:   rt   N©Trñ   )FFF)%rx   ry   rz   r{   r|   rø   r   rû   rÿ   r  r
  r  rÝ   r  r  r  r  r  r"  r&  r)  r!   r"   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r#   r$   r}   r~   r   s   @r7   rô   rô   Z  st  ø‡ € ñôVð 04Àô 0ôIô%ô1ô<ð ñ+ó ð+ð ñ/ó ð/ð ñ+ó ð+ð ñ/ó ð/ð ñ$ó ð$ôKò/ò&ð *4×);Ñ);€IÔØ)4×)<Ñ)<€JÔØ);×)CÑ)CÐÔØ)5×)=Ñ)=€KÔØ)>×)FÑ)FÐÔ Ø)B×)JÑ)JÐÔ$Ø)>×)FÑ)FÐÔ Ø)B×)JÑ)JÐÔ$Ø)7×)?Ñ)?€MÔØ)5×)=Ñ)=€KÔØ)9×)AÑ)A€OÔØ)9×)AÑ)A€OÔØ)7×)?Ñ)?€MÔØ)B×)JÑ)JÐ×$Ò$r:   rô   c                   óJ   a € ] tR tRt o RtRR/R ltR tR tR tR	 t	R
t
V tR# )ÚMatrixCalculusi   z,Provides calculus-related matrix operations.ÚevaluateTc               ó†   € ^ RI Hp V! V .VO5RV/ p\        V \        4      '       g   V'       d   VP	                  4       # V# )zõCalculate the derivative of each element in the matrix.

Examples
========

>>> from sympy import Matrix
>>> from sympy.abc import x, y
>>> M = Matrix([[x, y], [1, 0]])
>>> M.diff(x)
Matrix([
[1, 0],
[0, 0]])

See Also
========

integrate
limit
)ÚArrayDerivativer.  )Ú$sympy.tensor.array.array_derivativesr0  Ú
isinstancer   Ú
as_mutable)r6   r.  Úargsrî   r0  Úderivs   &$*,  r7   ÚdiffÚMatrixCalculus.diff£  s?   € õ* 	IÙ Ð? tÒ?°hÑ?ˆä˜$¤×&Ò&¯8Ø×#Ñ#Ó%Ð%Øˆr:   c                ó.   a€ V P                  V3R  l4      # )c                 ó&   <€ V P                  S4      # r<   ©r6  )rY   Úargs   &€r7   Ú<lambda>Ú1MatrixCalculus._eval_derivative.<locals>.<lambda>À  s   ø€ ¨¯©¨s¬r:   ©Ú	applyfunc)r6   r;  s   &fr7   Ú_eval_derivativeÚMatrixCalculus._eval_derivative¿  s   ø€ Ø�~‰~Ô3Ó4Ð4r:   c                ó2   aa€ V P                  VV3R l4      # )af  Integrate each element of the matrix.  ``args`` will
be passed to the ``integrate`` function.

Examples
========

>>> from sympy import Matrix
>>> from sympy.abc import x, y
>>> M = Matrix([[x, y], [1, 0]])
>>> M.integrate((x, ))
Matrix([
[x**2/2, x*y],
[     x,   0]])
>>> M.integrate((x, 0, 2))
Matrix([
[2, 2*y],
[2,   0]])

See Also
========

limit
diff
c                 ó(   <€ V P                   ! S/ SB # r<   )Ú	integrate)rY   r4  rî   s   &€€r7   r<  Ú*MatrixCalculus.integrate.<locals>.<lambda>Û  s   ø€ ¨¯ª°TÐ(D¸VÒ(Dr:   r>  )r6   r4  rî   s   &jlr7   rD  ÚMatrixCalculus.integrateÂ  s   ù€ ð2 �~‰~ÕDÓEÐEr:   c                ó  a a€ \        S\        4      '       g   S P                  S4      oS P                  ^ ,          ^8X  d   S P                  ^,          pM7S P                  ^,          ^8X  d   S P                  ^ ,          pM\	        R4      hSP                  ^ ,          ^8X  d   SP                  ^,          pM7SP                  ^,          ^8X  d   SP                  ^ ,          pM\	        R4      hS P                  W#VV 3R l4      # )a  Calculates the Jacobian matrix (derivative of a vector-valued function).

Parameters
==========

``self`` : vector of expressions representing functions f_i(x_1, ..., x_n).
X : set of x_i's in order, it can be a list or a Matrix

Both ``self`` and X can be a row or a column matrix in any order
(i.e., jacobian() should always work).

Examples
========

>>> from sympy import sin, cos, Matrix
>>> from sympy.abc import rho, phi
>>> X = Matrix([rho*cos(phi), rho*sin(phi), rho**2])
>>> Y = Matrix([rho, phi])
>>> X.jacobian(Y)
Matrix([
[cos(phi), -rho*sin(phi)],
[sin(phi),  rho*cos(phi)],
[   2*rho,             0]])
>>> X = Matrix([rho*cos(phi), rho*sin(phi)])
>>> X.jacobian(Y)
Matrix([
[cos(phi), -rho*sin(phi)],
[sin(phi),  rho*cos(phi)]])

See Also
========

hessian
wronskian
z)``self`` must be a row or a column matrixz"X must be a row or a column matrixc                 óB   <€ SV ,          P                  SV,          4      # r<   r:  )ra   r`   ÚXr6   s   &&€€r7   r<  Ú)MatrixCalculus.jacobian.<locals>.<lambda>  s   ø€ ¨D°­G¯L©L¸¸1½Ô,>r:   )r2  r/   r´   ÚshapeÚ	TypeError)r6   rI  ÚmÚns   ff  r7   ÚjacobianÚMatrixCalculus.jacobianÝ  sÀ   ù€ ôH ˜!œZ×(Ò(Ø—	‘	˜!“ˆAð �:‰:�a�=˜AÔØ—
‘
˜1•‰AØ�Z‰Z˜�]˜aÔØ—
‘
˜1•‰AäÐGÓHÐHØ�7‰7�1�:˜Œ?Ø—‘˜•
‰AØ�W‰W�Q�Z˜1Œ_Ø—‘˜•
‰AäÐ@ÓAÐAð �y‰y˜Õ>Ó?Ð?r:   c                ó.   a€ V P                  V3R l4      # )a&  Calculate the limit of each element in the matrix.
``args`` will be passed to the ``limit`` function.

Examples
========

>>> from sympy import Matrix
>>> from sympy.abc import x, y
>>> M = Matrix([[x, y], [1, 0]])
>>> M.limit(x, 2)
Matrix([
[2, y],
[1, 0]])

See Also
========

integrate
diff
c                 ó$   <€ V P                   ! S!  # r<   )Úlimit)rY   r4  s   &€r7   r<  Ú&MatrixCalculus.limit.<locals>.<lambda>+  s   ø€ ¨¯ª°ªr:   r>  )r6   r4  s   &jr7   rS  ÚMatrixCalculus.limit  s   ø€ ð* �~‰~Ô6Ó7Ð7r:   rt   N)rx   ry   rz   r{   r|   r6  r@  rD  rO  rS  r}   r~   r   s   @r7   r-  r-     s0   ø‡ € Ù6ð 4ô ò85òFò67@÷r8ð 8r:   r-  c                   ó˜   a € ] tR tRt o Rt]! R4      ]3R ltR tR t	R t
R tRR	 ltR
 tR tR tRR ltRR ltR tR tR tRtV tR# )ÚMatrixDeprecatedi/  z+A class to house deprecated matrix methods.rW   c                ó&   € V P                  VR 7      # ))rY   )r\   r[   s   &&&r7   Úberkowitz_charpolyÚ#MatrixDeprecated.berkowitz_charpoly1  s   € Ø�}‰}˜qˆ}Ó!Ð!r:   c                ó&   € V P                  RR7      # )zOComputes determinant using Berkowitz method.

See Also
========

det
berkowitz
rv   rR   ©rh   r=   s   &r7   Úberkowitz_detÚMatrixDeprecated.berkowitz_det4  s   € ð �x‰x˜{ˆxÓ+Ð+r:   c                ó&   € V P                   ! R/ VB # )zWComputes eigenvalues of a Matrix using Berkowitz method.

See Also
========

berkowitz
rt   )rø   r%  s   &,r7   Úberkowitz_eigenvalsÚ$MatrixDeprecated.berkowitz_eigenvals?  s   € ð �~Š~Ñ& Ñ&Ð&r:   c                ó¢   € V P                   . r!V P                  4        F$  pVP                  WR,          ,          4       V) pK&  	  \        V4      # )zPComputes principal minors using Berkowitz method.

See Also
========

berkowitz
éÿÿÿÿ)Úonerv   ÚappendÚtuple)r6   ÚsignÚminorsÚpolys   &   r7   Úberkowitz_minorsÚ!MatrixDeprecated.berkowitz_minorsI  sE   € ð —x‘x ˆfà—N‘NÖ$ˆDØ�M‰M˜$ b¥�/Ô*Ø�5ŠDñ %ô �V‹}Ðr:   c                ó˜  € ^ RI Hp RpV '       g   V# V P                  '       g   \        4       hY P                  rC^ .V^,
          ,          p\        V^R4       F÷  pV! V^,           V4      V^,
          r‡W8RV13,          ) VRV1V3,          r©VRV1RV13,          W8V3,          ) r³V
.p\        ^ V^,
          4       F!  pVP                  W<V,          ,          4       K#  	  \        V4       F  w  rÞWž,          R,          WÍ&   K  	  V P                  V.V,           p\        V4       F  pVRWm,
          ^,            W}R1V3&   K  	  WuV^,
          &   Kù  	  V P                  V P                  VR,          ) .4      .p\        V4       F#  w  r×VP                  WV,          ,          4       K%  	  V\        \        \        V4      4      ,           # )r   )ÚzerosN))é   rc  )r   r   )Úsympy.matricesrm  Ú	is_squarer   r�   Úrangere  Ú	enumeraterd  r´   rf  Úmap)r6   rm  ÚberkÚAÚNÚ
transformsrN  ÚTr§   ÚRÚCÚaÚitemsr`   ÚBÚpolyss   &               r7   rv   ÚMatrixDeprecated.berkowitzY  s–  € Ý(ØˆßØˆKà�~�~ˆ~Ü&Ó(Ð(à—Y‘Yˆ1Ø�S˜A �E•]ˆ
ä�q˜!˜R–ˆAÙ˜˜Q� “? A¨¥Eˆqà˜˜!˜�e•H�9˜a    A �hˆqØ�R�a�R˜˜!˜�V•9˜q A �w˜hˆqà�CˆEä˜1˜a !�e–_�Ø—‘˜Q q¥�\Ö*ñ %ô " %Ö(‘�Ø�E 4�=�“ñ )ð —X‘X˜q�M EÕ)ˆEä˜1–X�Ø   !¥%¨!¥)Ð,�‘"�a�%“ñ ð !"�q˜1•uÓñ' !ð* —‘˜DŸH™H q¨¥w hÐ/Ó0Ð1ˆä˜jÖ)‰DˆAØ�L‰L˜ 1�X�Ö&ñ *ð ”eœC¤ uÓ-Ó.Õ.Ð.r:   c                ó&   € V P                  VR 7      # rQ   )re   rT   s   &&r7   ÚcofactorMatrixÚMatrixDeprecated.cofactorMatrix�  s   € Ø×#Ñ#¨6Ð#Ó2Ð2r:   c                ó   € \        V 4      # r<   r5   r=   s   &r7   Ú
det_bareisÚMatrixDeprecated.det_bareis„  rJ   r:   c                ó&   € V P                  RR7      # )a\  Compute matrix determinant using LU decomposition.


Note that this method fails if the LU decomposition itself
fails. In particular, if the matrix has no inverse this method
will fail.

TODO: Implement algorithm for sparse matrices (SFF),
https://www.eecis.udel.edu/~saunders/papers/sffge/it5.ps

See Also
========


det
det_bareiss
berkowitz_det
ÚlurR   r\  r=   s   &r7   Údet_LU_decompositionÚ%MatrixDeprecated.det_LU_decomposition‡  s   € ð& �x‰x˜tˆxÓ$Ð$r:   c                ó&   € V P                  W!R 7      # ))ÚsizeÚ
eigenvalue)Újordan_block)r6   ÚeigenvalrN  s   &&&r7   Újordan_cellÚMatrixDeprecated.jordan_cellœ  s   € Ø× Ñ  aÐ Ó=Ð=r:   c                óH   € V P                  4       w  r#W#P                  4       3# r<   )r"  Úget_diag_blocks)r6   Úcalc_transformationÚPÚJs   &&  r7   Újordan_cellsÚMatrixDeprecated.jordan_cellsŸ  s$   € Ø×ÑÓ!‰ˆØ×#Ñ#Ó%Ð%Ð%r:   c                ó(   € V P                  WVR 7      # rQ   )rn   r_   s   &&&&r7   Ú
minorEntryÚMatrixDeprecated.minorEntry£  s   € Ø�z‰z˜! vˆzÓ.Ð.r:   c                ó$   € V P                  W4      # r<   )rr   rq   s   &&&r7   ÚminorMatrixÚMatrixDeprecated.minorMatrix¦  s   € Ø×#Ñ# AÓ)Ð)r:   c                ó(   € V P                  VRR7      # )zEPermute the rows of the matrix with the given permutation in reverse.Úbackward©Ú	direction©Úpermute_rows©r6   Úperms   &&r7   ÚpermuteBkwdÚMatrixDeprecated.permuteBkwd©  s   € à× Ñ  °Ð Ó<Ð<r:   c                ó(   € V P                  VRR7      # )z:Permute the rows of the matrix with the given permutation.Úforwardr   r¢  r¤  s   &&r7   Ú
permuteFwdÚMatrixDeprecated.permuteFwd­  s   € à× Ñ  °Ð Ó;Ð;r:   rt   Nru   r+  )rx   ry   rz   r{   r|   r   r	   rY  r]  r`  rj  rv   r�  r„  rˆ  r�  r–  r™  rœ  r¦  rª  r}   r~   r   s   @r7   rW  rW  /  s]   ø‡ € Ù5Ù#(¨£?¸Yô "ò	,ò'òò &/ôP3ò"ò%ò*>ô&ô/ò*ò=÷<ð <r:   rW  N)zMatrixEigen.is_indefinitez MatrixEigen.is_negative_definitez$MatrixEigen.is_negative_semidefinitez MatrixEigen.is_positive_definitez$MatrixEigen.is_positive_semidefinite)>Úsympy.core.basicr   Úsympy.core.symbolr   Úcommonr   Ú
exceptionsr   Ú	utilitiesr   r   r	   Údeterminantr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Ú
reductionsr   r   r   r   Ú	subspacesr   r   r   r    Úeigenr!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   Ú
matrixbaser/   Ú__doctest_requires__r2   r‚   rß   rô   r-  rW  rt   r:   r7   Ú<module>r·     sÊ   ðõ
 #Ý #å  å ,ç DÑ D÷÷ ÷ ÷ ñ ÷ AÓ @ß JÓ J÷6÷ 6÷ 6÷ 6õ #ð-ð 0<¨nðÐ ô=D˜ô =Dô@LMÐ(ô LMô^7Ð&ô 7ô8CK�/ô CKôLK8�\ô K8ô^@<�|ö @<r:   