§
    OŠtjA
  ã                   óB   — d Z ddlmZ ddlmZ ddlmZ dd„Zd„ Zd	„ Z	d
S )z)Numerical Methods for Holonomic Functionsé    ©Úsympify)ÚDMFsubs)ÚmpFÚRK4c           
      óH  ‡‡‡— | j         }|j        Š|j        j        }|                     ¦   «         Š|dk    rt
          }nt          }ˆfd„|j        D ¦   «         Šˆˆfd„t          ‰¦  «        D ¦   «         }| j	        }t          |¦  «        ‰k     rt          d¦  «        ‚| j        }	 |||	|d         |‰¦  «        g}
t          |dd…         ¦  «        D ]3\  }}|
                      ||||         ||
d         ‰¦  «        ¦  «         Œ4|sd	„ |
D ¦   «         S t          |
¦  «        S )
zk
    Numerical methods for numerical integration along a given set of
    points in the complex plane.
    ÚEulerc                 ó^   •— g | ])}‰                      |                     ¦   «         ¦  «        ‘Œ*S © )ÚnewÚto_list)Ú.0ÚjÚKs     €úW/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/holonomic/numerical.pyú
<listcomp>z_evalf.<locals>.<listcomp>   s-   ø€ Ð
6Ð
6Ð
6 !ˆ1�5Š5�—’‘”ÑÔÐ
6Ð
6Ð
6ó    c                 ó4   •— g | ]}‰|          ‰‰         z  ‘ŒS r   r   )r   ÚiÚaÚdmfs     €€r   r   z_evalf.<locals>.<listcomp>   s(   ø€ Ð
.Ð
.Ð
. ˆC�ŒFˆ7�S˜”VÑÐ
.Ð
.Ð
.r   zNot Enough Initial Conditionsr   é   Néÿÿÿÿc                 ó8   — g | ]}t          |d          ¦  «        ‘ŒS )r   r   ©r   r   s     r   r   z_evalf.<locals>.<listcomp>&   s"   € Ð+Ð+Ð+ !•˜˜!œ‘”Ð+Ð+Ð+r   )ÚannihilatorÚorderÚparentÚbaseÚ	get_fieldÚ_eulerÚ_rk4Ú
listofpolyÚrangeÚy0ÚlenÚ	TypeErrorÚx0Ú	enumerateÚappendr   )ÚfuncÚpointsÚderivativesÚmethodÚannÚRÚmethÚredr%   r(   Úsolr   r   r   r   r   s                @@@r   Ú_evalfr4   	   sD  øøø€ ð Ô
€CØŒ	€AØŒ
Œ€AØ	�Š‰Œ€Aà�ÒÐÝˆˆåˆà
6Ð
6Ð
6Ð
6 s¤~Ð
6Ñ
6Ô
6€CØ
.Ð
.Ð
.Ð
.Ð
.¥U¨1¡X¤XÐ
.Ñ
.Ô
.€Cà	Œ€BÝ
ˆ2�w„w�‚{€{ÝÐ7Ñ8Ô8Ð8Ø	Œ€BØˆ4��R˜ œ B¨Ñ*Ô*Ð
+€Cå˜&   œ*Ñ%Ô%ð 8ð 8‰ˆˆ1Ø�
Š
�4�4˜˜V AœY¨¨3¨r¬7°AÑ6Ô6Ñ7Ô7Ð7Ð7àð Ø+Ð+ sÐ+Ñ+Ô+Ð+å�s‰|Œ|Ðr   c           	      ó  ‡	‡
‡— t          |¦  «                             t          j        ¦  «        }t          |¦  «                             t          j        ¦  «        }d„ |D ¦   «         Š||z
  Š
‰dd…         Š	d}t	          |¦  «        D ]P}|t          t          | |         |d¬¦  «        ¦  «                             t          j        ¦  «        ‰|         z  z  }ŒQ‰	                     |¦  «         ˆ	ˆ
ˆfd„t	          |¦  «        D ¦   «         S )zs
    Euler's method for numerical integration.
    From x0 to x1 with initial values given at x0 as vector y0.
    c                 óf   — g | ].}t          |¦  «                             t          j        ¦  «        ‘Œ/S r   ©r   Ú
_to_mpmathr   Úprecr   s     r   r   z_euler.<locals>.<listcomp>3   ó.   € Ð
6Ð
6Ð
6¨a�7�1‰:Œ:× Ò ¥¤Ñ)Ô)Ð
6Ð
6Ð
6r   r   Nr   T©Úmpmc                 ó8   •— g | ]}‰|         ‰‰|         z  z   ‘ŒS r   r   ©r   r   Úf_0ÚhÚy_0s     €€€r   r   z_euler.<locals>.<listcomp><   s*   ø€ Ð2Ð2Ð2 AˆC�ŒF�Q˜˜Qœ‘ZÑÐ2Ð2Ð2r   ©r   r8   r   r9   r$   r   r*   )r2   r(   Úx1r%   r   ÚAÚBÚf_0_nr   r?   r@   rA   s            @@@r   r!   r!   +   sû   øøø€ õ 	�‰Œ×Ò�rœwÑ'Ô'€AÝ�‰Œ×Ò�rœwÑ'Ô'€AØ
6Ð
6°2Ð
6Ñ
6Ô
6€CØ	ˆA‰€AØ
ˆaˆbˆbŒ'€CØ€Eå�1‰XŒXð Tð TˆØ•�  Q¤¨°Ð5Ñ5Ô5Ñ6Ô6×AÒAÅ"Ä'ÑJÔJÈSÐQRÌVÑSÑSˆˆØ‡J‚JˆuÑÔÐà2Ð2Ð2Ð2Ð2Ð2­¨q©¬Ð2Ñ2Ô2Ð2r   c           
      ó  ‡‡‡‡‡‡— t          |¦  «                             t          j        ¦  «        }t          |¦  «                             t          j        ¦  «        }d„ |D ¦   «         Š||z
  Šd}d}d}	d}
‰dd…         Št	          |¦  «        D ]P}|t          t          | |         |d¬¦  «        ¦  «                             t          j        ¦  «        ‰|         z  z  }ŒQ‰                     |¦  «         ˆˆˆfd„t	          d|¦  «        D ¦   «         Št	          |¦  «        D ]e}|t          t          | |         |‰dz  z   d¬¦  «        ¦  «                             t          j        ¦  «        ‰|         ‰|         ‰z  dz  z   z  z  }Œf‰                     |¦  «         ˆˆˆfd	„t	          d|¦  «        D ¦   «         Št	          |¦  «        D ]e}|	t          t          | |         |‰dz  z   d¬¦  «        ¦  «                             t          j        ¦  «        ‰|         ‰|         ‰z  dz  z   z  z  }	Œf‰                     |	¦  «         ˆˆˆfd
„t	          d|¦  «        D ¦   «         Št	          |¦  «        D ]_}|
t          t          | |         |‰z   d¬¦  «        ¦  «                             t          j        ¦  «        ‰|         ‰|         ‰z  z   z  z  }
Œ`‰                     |
¦  «         ˆˆˆˆˆˆfd„t	          |¦  «        D ¦   «         S )z1
    Runge-Kutta 4th order numerical method.
    c                 óf   — g | ].}t          |¦  «                             t          j        ¦  «        ‘Œ/S r   r7   r   s     r   r   z_rk4.<locals>.<listcomp>F   r:   r   r   r   NTr;   c                 ó>   •— g | ]}‰|         ‰|         ‰z  d z  z   ‘ŒS ©é   r   r>   s     €€€r   r   z_rk4.<locals>.<listcomp>S   ó.   ø€ Ð
4Ð
4Ð
4 1ˆ3ˆqŒ6�C˜”F˜1‘H˜Q‘JÑÐ
4Ð
4Ð
4r   rK   c                 ó>   •— g | ]}‰|         ‰|         ‰z  d z  z   ‘ŒS rJ   r   )r   r   Úf_1r@   rA   s     €€€r   r   z_rk4.<locals>.<listcomp>X   rL   r   c                 ó8   •— g | ]}‰|         ‰|         ‰z  z   ‘ŒS r   r   )r   r   Úf_2r@   rA   s     €€€r   r   z_rk4.<locals>.<listcomp>]   s*   ø€ Ð
2Ð
2Ð
2 ˆ3ˆqŒ6�C˜”F˜1‘HÑÐ
2Ð
2Ð
2r   c                 ó€   •— g | ]:}‰|         ‰‰|         d ‰|         z  z   d ‰|         z  z   ‰|         z   z  dz  z   ‘Œ;S )rK   é   r   )r   r   r?   rN   rP   Úf_3r@   rA   s     €€€€€€r   r   z_rk4.<locals>.<listcomp>b   sR   ø€ ÐMÐMÐM¸qˆC�ŒF�Q˜˜Aœ˜q  Q¤™x™¨¨#¨a¬&©Ñ0°°Q´Ñ7Ñ8¸Ñ:Ñ:ÐMÐMÐMr   rB   )r2   r(   rC   r%   r   rD   rE   rF   Úf_1_nÚf_2_nÚf_3_nr   r?   rN   rP   rS   r@   rA   s               @@@@@@r   r"   r"   ?   s%  øøøøøø€ õ
 	�‰Œ×Ò�rœwÑ'Ô'€AÝ�‰Œ×Ò�rœwÑ'Ô'€AØ
6Ð
6°2Ð
6Ñ
6Ô
6€CØ	ˆA‰€Aà€EØ€EØ€EØ€Eà
ˆaˆbˆbŒ'€CÝ�1‰XŒXð Tð TˆØ•�  Q¤¨°Ð5Ñ5Ô5Ñ6Ô6×AÒAÅ"Ä'ÑJÔJÈSÐQRÌVÑSÑSˆˆØ‡J‚JˆuÑÔÐà
4Ð
4Ð
4Ð
4Ð
4Ð
4­¨a°©¬Ð
4Ñ
4Ô
4€CÝ�1‰XŒXð ið iˆØ•�  Q¤¨¨Q¨q©S©°dÐ;Ñ;Ô;Ñ<Ô<×GÒGÍÌÑPÔPÐTWÐXYÔTZÐ]`ÐabÔ]cÐdeÑ]eÐfgÑ]gÑTgÑhÑhˆˆØ‡J‚JˆuÑÔÐà
4Ð
4Ð
4Ð
4Ð
4Ð
4­¨a°©¬Ð
4Ñ
4Ô
4€CÝ�1‰XŒXð ið iˆØ•�  Q¤¨¨Q¨q©S©°dÐ;Ñ;Ô;Ñ<Ô<×GÒGÍÌÑPÔPÐTWÐXYÔTZÐ]`ÐabÔ]cÐdeÑ]eÐfgÑ]gÑTgÑhÑhˆˆØ‡J‚JˆuÑÔÐà
2Ð
2Ð
2Ð
2Ð
2Ð
2¥e¨A¨q¡k¤kÐ
2Ñ
2Ô
2€CÝ�1‰XŒXð eð eˆØ•�  Q¤¨¨Q©°DÐ9Ñ9Ô9Ñ:Ô:×EÒEÅbÄgÑNÔNÐRUÐVWÔRXÐ[^Ð_`Ô[aÐbcÑ[cÑRcÑdÑdˆˆØ‡J‚JˆuÑÔÐàMÐMÐMÐMÐMÐMÐMÐMÐMÅEÈ!ÁHÄHÐMÑMÔMÐMr   N)Fr   )
Ú__doc__Úsympy.core.sympifyr   Úsympy.holonomic.holonomicr   Úmpmathr   r4   r!   r"   r   r   r   ú<module>r[      sƒ   ðØ /Ð /à &Ð &Ð &Ð &Ð &Ð &Ø -Ð -Ð -Ð -Ð -Ð -à Ð Ð Ð Ð Ð ðð ð ð ðD3ð 3ð 3ð(#Nð #Nð #Nð #Nð #Nr   