Ë
    7^(hk%  ã                   óú   — d dl Z d dlmZ d dlmZmZmZ d dlmZ d dl	m
Z
mZmZmZmZ d dlmZ d dlmZ d dlmZ d	„ Zd
„ Z G d„ de«      Z G d„ de«      Z G d„ de«      Zdd„Zdd„Zdd„Z G d„ de«      Zd„ Zy)é    N)ÚExpr)ÚsympifyÚSÚpreorder_traversal)Ú
CoordSys3D)ÚVectorÚ	VectorMulÚ	VectorAddÚCrossÚDot)Ú
Derivative)ÚAdd)ÚMulc                 ó´   — t        | «      }t        «       }|D ]4  }t        |t        «      sŒ|j	                  |«       |j                  «        Œ6 t        |«      S ©N)r   ÚsetÚ
isinstancer   ÚaddÚskipÚ	frozenset)ÚexprÚgÚretÚis       úT/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/vector/operators.pyÚ_get_coord_systemsr      sL   € Ü˜4Ó €AÜ
‹%€CØò ˆÜ�aœÕ$Ø�G‰G�AŒJØ�F‰F�Hðô �S‹>Ðó    c                 ó®   — t        j                  d„ «      }| j                  D ]  }|t        |«      xx   |z  cc<   Œ t	        |j                  «       «      S )Nc                  ó"   — t         j                  S r   )r   ÚOne© r   r   ú<lambda>z._split_mul_args_wrt_coordsys.<locals>.<lambda>   s
   € ¬¯©€ r   )ÚcollectionsÚdefaultdictÚargsr   ÚlistÚvalues)r   Údr   s      r   Ú_split_mul_args_wrt_coordsysr)      sL   € Ü×Ñ¡Ó.€AØ�Y‰Yò &ˆØ	Ô
˜QÓ
Ó  AÑ%Ô ð&ä�—‘“
ÓÐr   c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚGradientzß
    Represents unevaluated Gradient.

    Examples
    ========

    >>> from sympy.vector import CoordSys3D, Gradient
    >>> R = CoordSys3D('R')
    >>> s = R.x*R.y*R.z
    >>> Gradient(s)
    Gradient(R.x*R.y*R.z)

    c                 óV   — t        |«      }t        j                  | |«      }||_        |S r   ©r   r   Ú__new__Ú_expr©Úclsr   Úobjs      r   r.   zGradient.__new__+   ó'   € Ü�t‹}ˆÜ�l‰l˜3 Ó%ˆØˆŒ	Øˆ
r   c                 ó0   — t        | j                  d¬«      S ©NT©Údoit)Úgradientr/   ©ÚselfÚhintss     r   r7   zGradient.doit1   s   € Ü˜Ÿ
™
¨Ô.Ð.r   N©Ú__name__Ú
__module__Ú__qualname__Ú__doc__r.   r7   r!   r   r   r+   r+      s   „ ñòó/r   r+   c                   ó   — e Zd ZdZd„ Zd„ Zy)Ú
Divergencea  
    Represents unevaluated Divergence.

    Examples
    ========

    >>> from sympy.vector import CoordSys3D, Divergence
    >>> R = CoordSys3D('R')
    >>> v = R.y*R.z*R.i + R.x*R.z*R.j + R.x*R.y*R.k
    >>> Divergence(v)
    Divergence(R.y*R.z*R.i + R.x*R.z*R.j + R.x*R.y*R.k)

    c                 óV   — t        |«      }t        j                  | |«      }||_        |S r   r-   r0   s      r   r.   zDivergence.__new__D   r3   r   c                 ó0   — t        | j                  d¬«      S r5   )Ú
divergencer/   r9   s     r   r7   zDivergence.doitJ   s   € Ü˜$Ÿ*™*¨4Ô0Ð0r   Nr<   r!   r   r   rB   rB   5   s   „ ñòó1r   rB   c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚCurla  
    Represents unevaluated Curl.

    Examples
    ========

    >>> from sympy.vector import CoordSys3D, Curl
    >>> R = CoordSys3D('R')
    >>> v = R.y*R.z*R.i + R.x*R.z*R.j + R.x*R.y*R.k
    >>> Curl(v)
    Curl(R.y*R.z*R.i + R.x*R.z*R.j + R.x*R.y*R.k)

    c                 óV   — t        |«      }t        j                  | |«      }||_        |S r   r-   r0   s      r   r.   zCurl.__new__]   r3   r   c                 ó0   — t        | j                  d¬«      S r5   )Úcurlr/   r9   s     r   r7   z	Curl.doitc   s   € Ü�D—J‘J TÔ*Ð*r   Nr<   r!   r   r   rG   rG   N   s   „ ñòó+r   rG   c           	      óÎ  ‡— t        | «      }t        |«      dk(  rt        j                  S t        |«      dk(  �r(t	        t        |«      «      }|j                  «       \  }}}|j                  «       \  }}}|j                  «       \  }	}
}| j                  |«      }| j                  |«      }| j                  |«      }t        j                  }|t        ||z  |«      t        ||
z  |«      z
  |z  |
|z  z  z  }|t        ||	z  |«      t        ||z  |«      z
  |z  |	|z  z  z  }|t        ||
z  |«      t        ||	z  |«      z
  |z  |
|	z  z  z  }‰r|j                  «       S |S t        | t        t        f«      r[ddlm} 	 t	        t        |«      «      }| j"                  D �cg c]  } |||d¬«      ‘Œ }}t        j&                  ˆfd„|D «       «      S t        | t(        t*        f«      r§| j"                  D �cg c]   }t        |t        t,        t.        f«      sŒ|‘Œ" c}d   }t)        j&                  d„ | j"                  D «       «      }t-        t1        |«      |«      j                  «       |t3        |‰¬«      z  z   }‰r|j                  «       S |S t        | t,        t4        t.        f«      rt5        | «      S t%        d	«      ‚c c}w # t$        $ r | j"                  }Y �Œ)w xY wc c}w )
ao  
    Returns the curl of a vector field computed wrt the base scalars
    of the given coordinate system.

    Parameters
    ==========

    vect : Vector
        The vector operand

    doit : bool
        If True, the result is returned after calling .doit() on
        each component. Else, the returned expression contains
        Derivative instances

    Examples
    ========

    >>> from sympy.vector import CoordSys3D, curl
    >>> R = CoordSys3D('R')
    >>> v1 = R.y*R.z*R.i + R.x*R.z*R.j + R.x*R.y*R.k
    >>> curl(v1)
    0
    >>> v2 = R.x*R.y*R.z*R.i
    >>> curl(v2)
    R.x*R.y*R.j + (-R.x*R.z)*R.k

    r   é   ©ÚexpressT©Ú	variablesc              3   ó8   •K  — | ]  }t        |‰¬ «      –— Œ y­w©r6   N)rJ   ©Ú.0r   r7   s     €r   ú	<genexpr>zcurl.<locals>.<genexpr>¤   s   øè ø€ Ò%G¸Q¤d¨1°4×&8Ð&8Ñ%Gùó   ƒc              3   óX   K  — | ]"  }t        |t        t        t        f«      rŒ|–— Œ$ y ­wr   ©r   r   r   r+   ©rT   r   s     r   rU   zcurl.<locals>.<genexpr>§   ó"   è ø€ Ò!g¨¼jÈÌVÔUZÔ\dÐLeÕ>f¤!Ñ!gùó   ‚ *£*r6   zInvalid argument for curl)r   Úlenr   ÚzeroÚnextÚiterÚbase_vectorsÚbase_scalarsÚlame_coefficientsÚdotr   r7   r   r   r
   Úsympy.vectorrN   r%   Ú
ValueErrorÚfromiterr   r	   r   r+   r8   rJ   rG   )Úvectr7   Ú	coord_sysr   ÚjÚkÚxÚyÚzÚh1Úh2Úh3ÚvectxÚvectyÚvectzÚoutvecrN   Úcsr%   ÚvectorÚscalarÚress    `                    r   rJ   rJ   g   s´  ø€ ô< # 4Ó(€Iä
ˆ9ƒ~˜ÒÜ�{‰{ÐÜ	ˆY‹˜1Ó	Üœ˜i›Ó)ˆ	Ø×(Ñ(Ó*‰ˆˆ1ˆaØ×(Ñ(Ó*‰ˆˆ1ˆaØ×0Ñ0Ó2‰
ˆˆB�Ø—‘˜“ˆØ—‘˜“ˆØ—‘˜“ˆÜ—‘ˆØ”:˜e b™j¨!Ó,Ü˜e b™j¨!Ó,ñ-Ø01ñ2Ø57¸"±Wñ>ñ 	>ˆà”:˜e b™j¨!Ó,Ü˜e b™j¨!Ó,ñ-Ø01ñ2Ø57¸"±Wñ>ñ 	>ˆà”:˜e b™j¨!Ó,Ü˜e b™j¨!Ó,ñ-Ø01ñ2Ø57¸"±Wñ>ñ 	>ˆñ Ø—;‘;“=Ð Øˆä�dœS¤)Ð,Ô-Ý,ð!Üœ$˜y›/Ó*�Ø@DÇ	Á	ÖJ¸1™  2°Ö6ÐJ�ÐJô ×%Ñ%Ó%GÀ$Ô%GÓGÐGÜ˜œs¤IÐ.Ô/Ø!%§¡ÖW˜A¬j¸¼VÄUÌHÐ<UÕ.V’aÒWÐXYÑZˆFÜ—\‘\Ñ!g¨T¯Y©YÔ!gÓgˆFÜœ Ó(¨&Ó1×6Ñ6Ó8¸6Ä$ÀvÐTXÔBYÑ;YÑYˆCÙØ—x‘x“zÐ!ØˆJÜ˜œu¤d¬HÐ5Ô6Ü˜“:ÐäÐ8Ó9Ð9ùò KøÜò !Ø—y‘y“ð!üò Xs0   Å?"K Æ!KÆ3K Ç7 K"ÈK"ËK ËKËKc           	      óÂ  ‡— t        | «      }t        |«      dk(  rt        j                  S t        |«      dk(  �rt	        | t
        t        t        f«      rt        | «      S t        t        |«      «      }|j                  «       \  }}}|j                  «       \  }}}|j                  «       \  }	}
}t        | j                  |«      ||
|«      |	|
z  |z  z  }t        | j                  |«      |||	«      |	|
z  |z  z  }t        | j                  |«      ||	|
«      |	|
z  |z  z  }||z   |z   }‰r|j!                  «       S |S t	        | t"        t$        f«      r(t#        j&                  ˆfd„| j(                  D «       «      S t	        | t*        t,        f«      r™| j(                  D �cg c]   }t	        |t.        t
        t        f«      sŒ|‘Œ" c}d   }t+        j&                  d„ | j(                  D «       «      }t1        |t3        |«      «      |t5        |‰¬«      z  z   }‰r|j!                  «       S |S t	        | t
        t        t        f«      rt        | «      S t7        d«      ‚c c}w )a  
    Returns the divergence of a vector field computed wrt the base
    scalars of the given coordinate system.

    Parameters
    ==========

    vector : Vector
        The vector operand

    doit : bool
        If True, the result is returned after calling .doit() on
        each component. Else, the returned expression contains
        Derivative instances

    Examples
    ========

    >>> from sympy.vector import CoordSys3D, divergence
    >>> R = CoordSys3D('R')
    >>> v1 = R.x*R.y*R.z * (R.i+R.j+R.k)

    >>> divergence(v1)
    R.x*R.y + R.x*R.z + R.y*R.z
    >>> v2 = 2*R.y*R.z*R.j
    >>> divergence(v2)
    2*R.z

    r   rL   c              3   ó8   •K  — | ]  }t        |‰¬ «      –— Œ y­wrR   )rE   rS   s     €r   rU   zdivergence.<locals>.<genexpr>ç   s   øè ø€ ÒL¸Q¤
¨1°4× 8Ð 8ÑLùrV   c              3   óX   K  — | ]"  }t        |t        t        t        f«      rŒ|–— Œ$ y ­wr   rX   rY   s     r   rU   zdivergence.<locals>.<genexpr>ê   rZ   r[   r6   zInvalid argument for divergence)r   r\   r   ÚZeror   r   rG   r+   rB   r^   r_   r`   ra   rb   Ú_diff_conditionalrc   r7   r   r
   rf   r%   r   r	   r   r   r8   rE   re   )rg   r7   rh   r   ri   rj   rk   rl   rm   rn   ro   rp   ÚvxÚvyÚvzrx   rv   rw   s    `                r   rE   rE   ²   s  ø€ ô< # 4Ó(€IÜ
ˆ9ƒ~˜ÒÜ�v‰vˆÜ	ˆY‹˜1Ó	Ü�dœU¤D¬(Ð3Ô4Ü˜dÓ#Ð#äœ˜i›Ó)ˆ	Ø×(Ñ(Ó*‰ˆˆ1ˆaØ×(Ñ(Ó*‰ˆˆ1ˆaØ×0Ñ0Ó2‰
ˆˆB�Ü˜tŸx™x¨›{¨A¨r°2Ó6Ø�R‘˜"‘ñˆä˜tŸx™x¨›{¨A¨r°2Ó6Ø�R‘˜"‘ñˆä˜tŸx™x¨›{¨A¨r°2Ó6Ø�R‘˜"‘ñˆà�2‰g˜‰lˆÙØ—8‘8“:ÐØˆ
ä�dœS¤)Ð,Ô-Ü—<‘<ÓLÀ$Ç)Á)ÔLÓLÐLÜ˜œs¤IÐ.Ô/Ø!%§¡ÖW˜A¬j¸¼VÄUÌHÐ<UÕ.V’aÒWÐXYÑZˆFÜ—\‘\Ñ!g¨T¯Y©YÔ!gÓgˆFÜ�fœh vÓ.Ó/°&¼ÀFÐQUÔ9VÑ2VÑVˆCÙØ—x‘x“zÐ!ØˆJÜ˜œu¤d¬HÐ5Ô6Ü˜dÓ#Ð#äÐ>Ó?Ð?ùò Xs   Æ  IÇIc                 óÜ  ‡ — t        ‰ «      }t        |«      dk(  rt        j                  S t        |«      dk(  r¯t	        t        |«      «      }|j                  «       \  }}}|j                  «       \  }}}|j                  «       \  }	}
}t        ‰ |	«      |z  }t        ‰ |
«      |z  }t        ‰ |«      |z  }|r||z  ||z  z   ||z  z   j                  «       S ||z  ||z  z   ||z  z   S t        ‰ t        t        f«      r&t        j                  d„ ‰ j                  D «       «      S t        ‰ t         t"        f«      r)t%        ‰ «      }t        j                  ˆ fd„|D «       «      S t'        ‰ «      S )a³  
    Returns the vector gradient of a scalar field computed wrt the
    base scalars of the given coordinate system.

    Parameters
    ==========

    scalar_field : SymPy Expr
        The scalar field to compute the gradient of

    doit : bool
        If True, the result is returned after calling .doit() on
        each component. Else, the returned expression contains
        Derivative instances

    Examples
    ========

    >>> from sympy.vector import CoordSys3D, gradient
    >>> R = CoordSys3D('R')
    >>> s1 = R.x*R.y*R.z
    >>> gradient(s1)
    R.y*R.z*R.i + R.x*R.z*R.j + R.x*R.y*R.k
    >>> s2 = 5*R.x**2*R.z
    >>> gradient(s2)
    10*R.x*R.z*R.i + 5*R.x**2*R.k

    r   rL   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr   ©r8   rY   s     r   rU   zgradient.<locals>.<genexpr>$  s   è ø€ Ò%M°a¤h¨q§kÑ%Mùs   ‚c              3   ó@   •K  — | ]  }‰|z  t        |«      z  –— Œ y ­wr   rƒ   )rT   r   Úscalar_fields     €r   rU   zgradient.<locals>.<genexpr>'  s   øè ø€ Ò%PÈ l°QÑ&6¼À!»Õ&DÑ%Pùs   ƒ)r   r\   r   r]   r^   r_   rb   r`   ra   r   r7   r   r   r
   rf   r%   r   r	   r)   r+   )r…   r7   rh   rn   ro   rp   r   ri   rj   rk   rl   rm   r~   r   r€   Úss   `               r   r8   r8   õ   sW  ø€ ô: # <Ó0€Iä
ˆ9ƒ~˜ÒÜ�{‰{ÐÜ	ˆY‹˜1Ò	Üœ˜i›Ó)ˆ	Ø×0Ñ0Ó2‰
ˆˆB�Ø×(Ñ(Ó*‰ˆˆ1ˆaØ×(Ñ(Ó*‰ˆˆ1ˆaÜ˜ aÓ(¨2Ñ-ˆÜ˜ aÓ(¨2Ñ-ˆÜ˜ aÓ(¨2Ñ-ˆáØ˜‘F˜R !™V‘O b¨1¡fÑ,×2Ñ2Ó4Ð4Ø�A‰v˜˜Q™‰  a¡Ñ'Ð'ä�l¤S¬)Ð$4Ô5Ü×%Ñ%Ñ%M¸<×;LÑ;LÔ%MÓMÐMÜ�l¤S¬)Ð$4Ô5Ü,¨\Ó:ˆAÜ×%Ñ%Ó%PÈaÔ%PÓPÐPÜ˜Ó%Ð%r   c                   ó   — e Zd ZdZd„ Zd„ Zy)Ú	Laplacianzù
    Represents unevaluated Laplacian.

    Examples
    ========

    >>> from sympy.vector import CoordSys3D, Laplacian
    >>> R = CoordSys3D('R')
    >>> v = 3*R.x**3*R.y**2*R.z**3
    >>> Laplacian(v)
    Laplacian(3*R.x**3*R.y**2*R.z**3)

    c                 óV   — t        |«      }t        j                  | |«      }||_        |S r   r-   r0   s      r   r.   zLaplacian.__new__:  r3   r   c                 ó2   — ddl m}  || j                  «      S )Nr   )Ú	laplacian)Úsympy.vector.functionsr‹   r/   )r:   r;   r‹   s      r   r7   zLaplacian.doit@  s   € Ý4Ù˜Ÿ™Ó$Ð$r   Nr<   r!   r   r   rˆ   rˆ   +  s   „ ñòó%r   rˆ   c                 ó„   — ddl m}  || |j                  d¬«      }||z  |z  }|rt        ||«      S t        j
                  S )z¼
    First re-expresses expr in the system that base_scalar belongs to.
    If base_scalar appears in the re-expressed form, differentiates
    it wrt base_scalar.
    Else, returns 0
    r   rM   TrO   )rŒ   rN   Úsystemr   r   r|   )r   Úbase_scalarÚcoeff_1Úcoeff_2rN   Únew_exprÚargs          r   r}   r}   E  sB   € õ /Ù�t˜[×/Ñ/¸4Ô@€HØ
�GÑ
˜hÑ
&€CÙ+.Œ:�c˜;Ó'Ð:´A·F±FÐ:r   )T)r#   Úsympy.core.exprr   Ú
sympy.corer   r   r   Úsympy.vector.coordsysrectr   Úsympy.vector.vectorr   r	   r
   r   r   Úsympy.core.functionr   Úsympy.core.addr   Úsympy.core.mulr   r   r)   r+   rB   rG   rJ   rE   r8   rˆ   r}   r!   r   r   ú<module>r›      sw   ðÛ Ý  ß 5Ñ 5Ý 0ß HÕ HÝ *Ý Ý òòô/ˆtô /ô21�ô 1ô2+ˆ4ô +ó2H:óV@@óF3&ôl%�ô %ó4
;r   