ó
    Š*£hn  ã                   óˆ   • S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr  SSKJrJrJrJr  S S	KJr  S
 rS rS rS rg)é    )Údefaultdict)ÚAdd)ÚMul)ÚS)Úconstruct_domain)ÚPolyNonlinearErroré   )ÚSDMÚ	sdm_irrefÚsdm_particular_from_rrefÚsdm_nullspace_from_rref)Ú
filldedentc                 ó°  • [        U5      n[        X5      u  p4[        X4U5      nUR                  nUR                  (       d  UR
                  (       a/  UR                  5       R                  5       S   R                  5       n[        U5      u  pxn	U(       a
  US   U:X  a  g[        XrS-   U5      n
[        XvR                  X(U	5      u  p¼[        [        5      nU
R                  5        H*  u  pïXÑU      R!                  UR#                  U5      5        M,     [%        XË5       HL  u  nnUU   nUR                  5        H-  u  pïXÑU      R!                  UUR#                  U5      -  5        M/     MN     UR                  5        VVs0 s H  u  nnU['        U6 _M     nnn[(        R*                  n[-        U5      [-        U5      -
   H  nUUU'   M
     U$ s  snnf )aå  Solve a linear system of equations.

Examples
========

Solve a linear system with a unique solution:

>>> from sympy import symbols, Eq
>>> from sympy.polys.matrices.linsolve import _linsolve
>>> x, y = symbols('x, y')
>>> eqs = [Eq(x + y, 1), Eq(x - y, 2)]
>>> _linsolve(eqs, [x, y])
{x: 3/2, y: -1/2}

In the case of underdetermined systems the solution will be expressed in
terms of the unknown symbols that are unconstrained:

>>> _linsolve([Eq(x + y, 0)], [x, y])
{x: -y, y: y}

r   éÿÿÿÿNr	   )ÚlenÚ_linear_eq_to_dictÚsympy_dict_to_dmÚdomainÚis_RealFieldÚis_ComplexFieldÚto_ddmÚrrefÚto_sdmr   r   r   Úoner   ÚlistÚitemsÚappendÚto_sympyÚzipr   r   ÚZeroÚset)ÚeqsÚsymsÚnsymsÚeqsdictÚconstÚAaugÚKÚArrefÚpivotsÚnzcolsÚPÚVÚ	nonpivotsÚsolÚiÚvÚnpiÚViÚsymÚsÚtermsÚzeros                         ÚZ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sympy/polys/matrices/linsolve.pyÚ	_linsolver9   0   s–  € ô0 �‹I€Eô (¨Ó2�N€GÜ˜G¨DÓ1€DØ�‰€Að
 	‡~‡~˜×*×*Ø�{‰{‹}×!Ñ!Ó# AÑ&×-Ñ-Ó/ˆô & d›OÑ€E�6ö �&˜‘* Ó%Øô 	! ¨a©°Ó8€Aô +¨5·%±%¸ÈÓO�L€Aô ”dÓ
€CØ—‘–	‰ˆØ�‰G‰×Ñ˜AŸJ™J q›MÖ*ñ ä�yÖ$‰ˆˆRØ�3‰iˆØ—H‘H–J‰DˆAØ�Q‘‰L×Ñ  a§j¡j°£mÑ 3Ö4ó ñ %ð +.¯)©)¬+Ô
6ª+™h˜a ˆ1Œc�5ˆkŠ>©+€CÑ
6ô �6‰6€DÜ�‹Yœ˜S›Ô!ˆØˆˆA‹ñ "ð €Jùó 7s   ÆGc                 óü  • [        U5      R                  " S U  5       6 n[        USSS9u  pE[        [	        X55      5      n[        U 5      n[        U5      n[        [	        U[        U5      5      5      n	/ n
[	        X5       HV  u  p¼UR                  5        VVs0 s H  u  pÞX�   Xn   _M     nnnU(       a  Xl   * Xø'   U(       d  ME  U
R                  U5        MX     [        [        U
5      XxS-   4U5      nU$ s  snnf )z?Convert a system of dict equations to a sparse augmented matrixc              3   ó@   #   • U  H  oR                  5       v •  M     g 7f)N)Úvalues)Ú.0Úes     r8   Ú	<genexpr>Ú#sympy_dict_to_dm.<locals>.<genexpr>z   s   é € Ð @²Z°§¡§ ²Zùs   ‚T)ÚfieldÚ	extensionr	   )r!   Úunionr   Údictr   r   Úranger   r   r
   Ú	enumerate)Ú
eqs_coeffsÚeqs_rhsr#   Úelemsr(   Úelems_KÚelem_mapÚneqsr$   Ú	sym2indexr%   ÚeqÚrhsr5   ÚcÚeqdictÚsdm_augs                    r8   r   r   x   sã   € ä�‹L×ÒÑ @±ZÓ @ÐA€EÜ! %¨t¸tÑD�J€AÜ”C˜Ó'Ó(€HÜˆz‹?€DÜ�‹I€EÜ”S˜œu U›|Ó,Ó-€IØ€GÜ�zÖ+‰ˆØ8:¿¹¼
ÔCº
±°�)‘, ¡Ò+¹
ˆÑCÞØ%™]˜NˆF‰Mßˆ6Ø�N‰N˜6Ö"ñ ,ô ”)˜GÓ$ t°Q©YÐ&7¸Ó;€GØ€Nùó Ds   ÂC8c                 óî  • / n/ n[        U5      nU  HØ  nUR                  (       a•  [        UR                  U5      u  pg[        UR                  U5      u  p‰Xh-  nU	R                  5        H  u  p«X§;   a  Xz==   U-  ss'   M  U* Xz'   M     UR                  5        V
Vs0 s H  u  p«U(       d  M  X«_M     nn
nXgpÜO[        XT5      u  pÍUR                  U5        UR                  U5        MÚ     X#4$ s  snn
f )aI  Convert a system Expr/Eq equations into dict form, returning
the coefficient dictionaries and a list of syms-independent terms
from each expression in ``eqs```.

Examples
========

>>> from sympy.polys.matrices.linsolve import _linear_eq_to_dict
>>> from sympy.abc import x
>>> _linear_eq_to_dict([2*x + 3], {x})
([{x: 2}], [3])
)r!   Úis_EqualityÚ_lin_eq2dictÚlhsrO   r   r   )r"   r#   ÚcoeffsÚindÚsymsetr>   Úcoeffr6   ÚcRÚtRÚkr1   rP   Úds                 r8   r   r   ‹   sÛ   € ð €FØ
€CÜ�‹Y€FÛˆØ�=�=Ü'¨¯©¨vÓ6‰LˆEÜ! !§%¡%¨Ó0‰FˆBð ‰KˆEØŸ™ž
‘�Ø“:Ø“H ‘M•Hà !˜r�E“Hñ	 #ð ',§k¡k¤mÔ9¢m™d˜a´q“T�Q’T¡mˆEÑ9Ø‰qä Ó*‰DˆAØ�‰�aÔØ�
‰
�1Žñ% ð& ˆ;Ðùó :s   ÂC1Â/C1c                 ó’  • X;   a"  [         R                  U [         R                  04$ U R                  (       a¤  [	        [
        5      n/ nU R                   HM  n[        XA5      u  pVUR                  U5        UR                  5        H  u  pxX'   R                  U5        M     MO     [        U6 n	UR                  5        V
Vs0 s H  u  p«U
[        U6 _M     nn
nXœ4$ U R                  (       a§  S=pÍ/ nU R                   HH  n[        XA5      u  pVU(       d  UR                  U5        M*  Uc  UnUnM3  [        [        SU -  5      5      e   [        R                  " U5      n	Uc  U	0 4$ UR                  5        V
Vs0 s H
  u  p®X©U-  _M     nn
nX�-  U4$ U R!                  U5      (       d  U 0 4$ [        SU -  5      es  snn
f s  snn
f )a§  return (c, d) where c is the sym-independent part of ``a`` and
``d`` is an efficiently calculated dictionary mapping symbols to
their coefficients. A PolyNonlinearError is raised if non-linearity
is detected.

The values in the dictionary will be non-zero.

Examples
========

>>> from sympy.polys.matrices.linsolve import _lin_eq2dict
>>> from sympy.abc import x, y
>>> _lin_eq2dict(x + 2*y + 3, {x, y})
(3, {x: 1, y: 2})
Nz-
                    nonlinear cross-term: %sznonlinear term: %s)r   r    ÚOneÚis_Addr   r   ÚargsrU   r   r   r   Úis_Mulr   r   r   Ú
_from_argsÚ	has_xfree)ÚarY   Ú
terms_listÚ
coeff_listÚaiÚciÚtiÚmijÚcijrZ   r4   rW   r6   Úterms_coeffrP   s                  r8   rU   rU   ±   s³  € ð  	ƒ{Ü�v‰v˜œ1Ÿ5™5�zÐ!Ð!Ø	
��Ü ¤Ó&ˆ
Øˆ
Ø—&”&ˆBÜ! "Ó-‰FˆBØ×Ñ˜bÔ!ØŸH™HžJ‘�Ø‘×&Ñ& sÖ+ó 'ñ ô
 �ZÐ ˆØ6@×6FÑ6FÔ6HÔIÒ6H¡{ s�”c˜6�lÒ"Ñ6HˆÑIØˆ|ÐØ	
��Ø"Ð"ˆØˆ
Ø—&”&ˆBÜ! "Ó-‰FˆBÞØ×!Ñ! "Ö%Ø‘Ø�Ø ’ô )¬ð 50Ø23ñ54ó *5ó 6ð 6ñ ô —’˜zÓ*ˆØ‰=Ø˜"�9Ðà27·+±+´-Ô@²-©¨�S !™)’^±-ˆEÑ@ØÑ'¨Ð.Ð.Ø�[‰[˜× Ñ Ø�"ˆuˆä Ð!5¸Ñ!9Ó:Ð:ùó5 Jùó* As   ÃF=Å;GN)Úcollectionsr   Úsympy.core.addr   Úsympy.core.mulr   Úsympy.core.singletonr   Úsympy.polys.constructorr   Úsympy.polys.solversr   Úsdmr
   r   r   r   Úsympy.utilities.miscr   r9   r   r   rU   © ó    r8   Ú<module>ry      s?   ðõ: $å Ý Ý "å 4Ý 2÷ó õ ,òEòPò&#óL5;rx   