§
    PŠtjk%  ã                   ó  — 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dS )é    N)ÚExpr)ÚsympifyÚSÚpreorder_traversal)Ú
CoordSys3D)ÚVectorÚ	VectorMulÚ	VectorAddÚCrossÚDot)Ú
Derivative)ÚAdd)ÚMulc                 óà   — t          | ¦  «        }t          ¦   «         }|D ]@}t          |t          ¦  «        r)|                     |¦  «         |                     ¦   «          ŒAt          |¦  «        S ©N)r   ÚsetÚ
isinstancer   ÚaddÚskipÚ	frozenset)ÚexprÚgÚretÚis       úT/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/vector/operators.pyÚ_get_coord_systemsr      sb   € Ý˜4Ñ Ô €AÝ
‰%Œ%€CØð ð ˆÝ�a�Ñ$Ô$ð 	Ø�GŠG�A‰JŒJˆJØ�FŠF‰HŒHˆHøÝ�S‰>Œ>Ðó    c                 ó¼   — t          j        d„ ¦  «        }| j        D ]}|t          |¦  «        xx         |z  cc<   Œ t	          |                     ¦   «         ¦  «        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)      sc   € ÝÔ  Ñ.Ô.€AØŒYð &ð &ˆØ	Õ
˜QÑ
Ô
Ð Ð Ô  AÑ%Ð Ð Ñ Ð Ý�—’‘
”
ÑÔÐr   c                   ó   — e Zd ZdZd„ Zd„ ZdS )Ú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                 ó\   — t          |¦  «        }t          j        | |¦  «        }||_        |S r   ©r   r   Ú__new__Ú_expr©Úclsr   Úobjs      r   r.   zGradient.__new__+   ó*   € Ý�t‰}Œ}ˆÝŒl˜3 Ñ%Ô%ˆØˆŒ	Øˆ
r   c                 ó.   — 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dS )Ú
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                 ó\   — t          |¦  «        }t          j        | |¦  «        }||_        |S r   r-   r0   s      r   r.   zDivergence.__new__D   r3   r   c                 ó.   — t          | j        d¬¦  «        S r5   )Ú
divergencer/   r9   s     r   r7   zDivergence.doitJ   s   € Ý˜$œ*¨4Ð0Ñ0Ô0Ð0r   Nr<   r!   r   r   rB   rB   5   s<   € € € € € ðð ðð ð ð1ð 1ð 1ð 1ð 1r   rB   c                   ó   — e Zd ZdZd„ Zd„ ZdS )Ú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                 ó\   — t          |¦  «        }t          j        | |¦  «        }||_        |S r   r-   r0   s      r   r.   zCurl.__new__]   r3   r   c                 ó.   — t          | j        d¬¦  «        S r5   )Úcurlr/   r9   s     r   r7   z	Curl.doitc   s   € Ý�D”J TÐ*Ñ*Ô*Ð*r   Nr<   r!   r   r   rG   rG   N   s<   € € € € € ðð ðð ð ð+ð +ð +ð +ð +r   rG   Tc                 óF  ‡‡‡— t          | ¦  «        }t          |¦  «        dk    rt          j        S t          |¦  «        dk    �r`t	          t          |¦  «        ¦  «        }|                     ¦   «         \  }}}|                     ¦   «         \  }}}|                     ¦   «         \  }	}
}|  	                    |¦  «        }|  	                    |¦  «        }|  	                    |¦  «        }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|                     ¦   «         S |S t          | t          t          f¦  «        roddlmŠ 	 t	          t          |¦  «        ¦  «        Šˆˆfd„| j        D ¦   «         }n# t$          $ r
 | j        }Y nw xY wt          j        ˆfd„|D ¦   «         ¦  «        S t          | t(          t*          f¦  «        r–d„ | j        D ¦   «         d         }t)          j        d„ | j        D ¦   «         ¦  «        }t-          t/          |¦  «        |¦  «                             ¦   «         |t1          |‰¬¦  «        z  z   }‰r|                     ¦   «         S |S t          | t,          t2          t4          f¦  «        rt3          | ¦  «        S t%          d	¦  «        ‚)
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   é   ©Úexpressc                 ó,   •— g | ]} ‰|‰d ¬¦  «        ‘ŒS )T©Ú	variablesr!   )Ú.0r   ÚcsrN   s     €€r   ú
<listcomp>zcurl.<locals>.<listcomp>¡   s*   ø€ ÐJÐJÐJ¸1˜˜  2°Ð6Ñ6Ô6ÐJÐJÐJr   c              3   ó:   •K  — | ]}t          |‰¬ ¦  «        V — ŒdS ©r6   N)rJ   ©rR   r   r7   s     €r   ú	<genexpr>zcurl.<locals>.<genexpr>¤   s0   øè è € Ð%GÐ%G¸Q¥d¨1°4Ð&8Ñ&8Ô&8Ð%GÐ%GÐ%GÐ%GÐ%GÐ%Gr   c                 óV   — g | ]&}t          |t          t          t          f¦  «        ¯$|‘Œ'S r!   ©r   r   r   r+   ©rR   r   s     r   rT   zcurl.<locals>.<listcomp>¦   ó.   € ÐWÐWÐW˜A­j¸½VÅUÍHÐ<UÑ.VÔ.VÐW�aÐWÐWÐWr   c              3   ó^   K  — | ](}t          |t          t          t          f¦  «        °$|V — Œ)d S r   rZ   r[   s     r   rX   zcurl.<locals>.<genexpr>§   ó:   è è € Ð!gÐ!g¨½jÈÍVÕUZÕ\dÐLeÑ>fÔ>fÐ!g !Ð!gÐ!gÐ!gÐ!gÐ!gÐ!gr   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   r8   rJ   rG   r+   )Úvectr7   Ú	coord_sysr   ÚjÚkÚxÚyÚzÚh1Úh2Úh3ÚvectxÚvectyÚvectzÚoutvecr%   ÚvectorÚscalarÚresrS   rN   s    `                  @@r   rJ   rJ   g   s<  øøø€ õ< # 4Ñ(Ô(€Iå
ˆ9�~„~˜ÒÐÝŒ{ÐÝ	ˆY‰Œ˜1Ò	Ñ	Ý�˜i™œÑ)Ô)ˆ	Ø×(Ò(Ñ*Ô*‰ˆˆ1ˆaØ×(Ò(Ñ*Ô*‰ˆˆ1ˆaØ×0Ò0Ñ2Ô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™/œ/Ñ*Ô*�ØJÐJÐJÐJÐJÀÄ	ÐJÑJÔJ��øÝð !ð !ð !Ø”y���ð!øøøåÔ%Ð%GÐ%GÐ%GÐ%GÀ$Ð%GÑ%GÔ%GÑGÔGÐGÝ˜�s¥IÐ.Ñ/Ô/ð 
	:ØWÐW ¤ÐWÑWÔWÐXYÔZˆFÝ”\Ð!gÐ!g¨T¬YÐ!gÑ!gÔ!gÑgÔgˆFÝ� Ñ(Ô(¨&Ñ1Ô1×6Ò6Ñ8Ô8¸6Å$ÀvÐTXÐBYÑBYÔBYÑ;YÑYˆCØð "Ø—x’x‘z”zÐ!ØˆJÝ˜�u¥d­HÐ5Ñ6Ô6ð 	:Ý˜‘:”:ÐåÐ8Ñ9Ô9Ð9s   Ç	0G: Ç:HÈHc                 óH  ‡— t          | ¦  «        }t          |¦  «        dk    rt          j        S t          |¦  «        dk    �r?t	          | t
          t          t          f¦  «        rt          | ¦  «        S t          t          |¦  «        ¦  «        }|                     ¦   «         \  }}}|                     ¦   «         \  }}}|                     ¦   «         \  }	}
}t          |                      |¦  «        ||
|¦  «        |	|
z  |z  z  }t          |                      |¦  «        |||	¦  «        |	|
z  |z  z  }t          |                      |¦  «        ||	|
¦  «        |	|
z  |z  z  }||z   |z   }‰r|                     ¦   «         S |S t	          | t"          t$          f¦  «        r%t#          j        ˆfd„| j        D ¦   «         ¦  «        S t	          | t*          t,          f¦  «        r„d„ | j        D ¦   «         d         }t+          j        d„ | j        D ¦   «         ¦  «        }t/          |t1          |¦  «        ¦  «        |t3          |‰¬¦  «        z  z   }‰r|                     ¦   «         S |S t	          | t
          t          t          f¦  «        rt          | ¦  «        S t5          d¦  «        ‚)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   ó:   •K  — | ]}t          |‰¬ ¦  «        V — ŒdS rV   )rE   rW   s     €r   rX   zdivergence.<locals>.<genexpr>ç   s0   øè è € ÐLÐL¸Q¥
¨1°4Ð 8Ñ 8Ô 8ÐLÐLÐLÐLÐLÐLr   c                 óV   — g | ]&}t          |t          t          t          f¦  «        ¯$|‘Œ'S r!   rZ   r[   s     r   rT   zdivergence.<locals>.<listcomp>é   r\   r   c              3   ó^   K  — | ](}t          |t          t          t          f¦  «        °$|V — Œ)d S r   rZ   r[   s     r   rX   zdivergence.<locals>.<genexpr>ê   r^   r   r6   zInvalid argument for divergence)r   r_   r   ÚZeror   r   rG   r+   rB   ra   rb   rc   rd   re   Ú_diff_conditionalrf   r7   r   r
   ri   r%   r   r	   r   r8   rE   rh   )rj   r7   rk   r   rl   rm   rn   ro   rp   rq   rr   rs   ÚvxÚvyÚvzrz   rx   ry   s    `                r   rE   rE   ²   s|  ø€ õ< # 4Ñ(Ô(€IÝ
ˆ9�~„~˜ÒÐÝŒvˆÝ	ˆY‰Œ˜1Ò	Ñ	Ý�d�U¥D­(Ð3Ñ4Ô4ð 	$Ý˜dÑ#Ô#Ð#å�˜i™œÑ)Ô)ˆ	Ø×(Ò(Ñ*Ô*‰ˆˆ1ˆaØ×(Ò(Ñ*Ô*‰ˆˆ1ˆaØ×0Ò0Ñ2Ô2‰
ˆˆB�Ý˜tŸxšx¨™{œ{¨A¨r°2Ñ6Ô6Ø�R‘˜"‘ñˆå˜tŸxšx¨™{œ{¨A¨r°2Ñ6Ô6Ø�R‘˜"‘ñˆå˜tŸxšx¨™{œ{¨A¨r°2Ñ6Ô6Ø�R‘˜"‘ñˆà�2‰g˜‰lˆØð 	Ø—8’8‘:”:ÐØˆ
å�d�S¥)Ð,Ñ-Ô-ð 	@Ý”<ÐLÐLÐLÐLÀ$Ä)ÐLÑLÔLÑLÔLÐLÝ˜�s¥IÐ.Ñ/Ô/ð 
	@ØWÐW ¤ÐWÑWÔWÐXYÔZˆFÝ”\Ð!gÐ!g¨T¬YÐ!gÑ!gÔ!gÑgÔgˆFÝ�f�h vÑ.Ô.Ñ/Ô/°&½ÀFÐQUÐ9VÑ9VÔ9VÑ2VÑVˆCØð "Ø—x’x‘z”zÐ!ØˆJÝ˜�u¥d­HÐ5Ñ6Ô6ð 	@Ý˜dÑ#Ô#Ð#åÐ>Ñ?Ô?Ð?r   c                 ó^  ‡ — t          ‰ ¦  «        }t          |¦  «        dk    rt          j        S t          |¦  «        dk    rÓt	          t          |¦  «        ¦  «        }|                     ¦   «         \  }}}|                     ¦   «         \  }}}|                     ¦   «         \  }	}
}t          ‰ |	¦  «        |z  }t          ‰ |
¦  «        |z  }t          ‰ |¦  «        |z  }|r#||z  ||z  z   ||z  z    
                    ¦   «         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   ó4   K  — | ]}t          |¦  «        V — Œd S r   ©r8   r[   s     r   rX   zgradient.<locals>.<genexpr>$  s(   è è € Ð%MÐ%M°a¥h¨q¡k¤kÐ%MÐ%MÐ%MÐ%MÐ%MÐ%Mr   c              3   óB   •K  — | ]}‰|z  t          |¦  «        z  V — Œd S r   r†   )rR   r   Úscalar_fields     €r   rX   zgradient.<locals>.<genexpr>'  s3   øè è € Ð%PÐ%PÈ l°QÑ&6½À!¹¼Ñ&DÐ%PÐ%PÐ%PÐ%PÐ%PÐ%Pr   )r   r_   r   r`   ra   rb   re   rc   rd   r   r7   r   r   r
   ri   r%   r   r	   r)   r+   )rˆ   r7   rk   rq   rr   rs   r   rl   rm   rn   ro   rp   r�   r‚   rƒ   Úss   `               r   r8   r8   õ   s®  ø€ õ: # <Ñ0Ô0€Iå
ˆ9�~„~˜ÒÐÝŒ{ÐÝ	ˆY‰Œ˜1Ò	Ð	Ý�˜i™œÑ)Ô)ˆ	Ø×0Ò0Ñ2Ô2‰
ˆˆB�Ø×(Ò(Ñ*Ô*‰ˆˆ1ˆaØ×(Ò(Ñ*Ô*‰ˆˆ1ˆaÝ˜ aÑ(Ô(¨2Ñ-ˆÝ˜ aÑ(Ô(¨2Ñ-ˆÝ˜ aÑ(Ô(¨2Ñ-ˆàð 	5Ø˜‘F˜R !™V‘O b¨1¡fÑ,×2Ò2Ñ4Ô4Ð4Ø�A‰v˜˜Q™‰  a¡Ñ'Ð'å�l¥S­)Ð$4Ñ5Ô5ð 	NÝÔ%Ð%MÐ%M¸<Ô;LÐ%MÑ%MÔ%MÑMÔMÐMÝ�l¥S­)Ð$4Ñ5Ô5ð 	QÝ,¨\Ñ:Ô:ˆAÝÔ%Ð%PÐ%PÐ%PÐ%PÈaÐ%PÑ%PÔ%PÑPÔPÐPÝ˜Ñ%Ô%Ð%r   c                   ó   — e Zd ZdZd„ Zd„ ZdS )Ú	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                 ó\   — t          |¦  «        }t          j        | |¦  «        }||_        |S r   r-   r0   s      r   r.   zLaplacian.__new__:  r3   r   c                 ó.   — ddl m}  || j        ¦  «        S )Nr   )Ú	laplacian)Úsympy.vector.functionsrŽ   r/   )r:   r;   rŽ   s      r   r7   zLaplacian.doit@  s&   € Ø4Ð4Ð4Ð4Ð4Ð4Øˆy˜œÑ$Ô$Ð$r   Nr<   r!   r   r   r‹   r‹   +  s<   € € € € € ðð ðð ð ð%ð %ð %ð %ð %r   r‹   c                 ó€   — ddl m}  || |j        d¬¦  «        }||z  |z  }|rt          ||¦  «        n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   TrP   )r�   rN   Úsystemr   r   r   )r   Úbase_scalarÚcoeff_1Úcoeff_2rN   Únew_exprÚargs          r   r€   r€   E  sZ   € ð /Ð.Ð.Ð.Ð.Ð.Øˆw�t˜[Ô/¸4Ð@Ñ@Ô@€HØ
�GÑ
˜hÑ
&€CØ+.Ð:�:�c˜;Ñ'Ô'Ð'µA´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ž      sÝ  ðØ Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ *Ð *Ð *Ð *Ð *Ð *Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðð ð ðð ð ð/ð /ð /ð /ð /ˆtñ /ô /ð /ð21ð 1ð 1ð 1ð 1�ñ 1ô 1ð 1ð2+ð +ð +ð +ð +ˆ4ñ +ô +ð +ð2H:ð H:ð H:ð H:ðV@@ð @@ð @@ð @@ðF3&ð 3&ð 3&ð 3&ðl%ð %ð %ð %ð %�ñ %ô %ð %ð4
;ð 
;ð 
;ð 
;ð 
;r   