
    \hA
                     B    S r SSKJr  SSKJr  SSKJr  S	S jrS rS r	g)
z)Numerical Methods for Holonomic Functions    )sympify)DMFsubs)mpc           
         U R                   nUR                  nUR                  R                  nUR	                  5       nUS:X  a  [
        nO[        nUR                   V	s/ s H!  oR                  U	R                  5       5      PM#     n
n	[        U5       Vs/ s H  oU   * X   -  PM     nnU R                  n[        U5      U:  a  [        S5      eU R                  nU" XUS   X5      /n[        USS 5       H$  u  pUR!                  U" XU   XS   U5      5        M&     U(       d  U Vs/ s H  n[#        US   5      PM     sn$ [#        U5      $ s  sn	f s  snf s  snf )z_
Numerical methods for numerical integration along a given set of
points in the complex plane.
EulerzNot Enough Initial Conditionsr      N)annihilatororderparentbase	get_field_euler_rk4
listofpolynewto_listrangey0len	TypeErrorx0	enumerateappendr   )funcpointsderivativesmethodannaRKmethjdmfiredr   r   sols                   Q/var/www/auris/envauris/lib/python3.13/site-packages/sympy/holonomic/numerical.py_evalfr*   	   s5    

C		A

A	A'*~~
6~!55~C
6%*1X
.XF7SVXC
.	B
2w{788	BB*
+C&*%

4AYr7A67 & '*+s!!s++s| 7
. ,s    (EE.Ec           
      D   [        U5      R                  [        R                  5      n[        U5      R                  [        R                  5      nU Vs/ s H+  n[        U5      R                  [        R                  5      PM-     nnXe-
  n	USS n
Sn[	        U5       H>  nU[        [        X   USS95      R                  [        R                  5      X   -  -  nM@     U
R                  U5        [	        U5       Vs/ s H  oxU   XU   -  -   PM     sn$ s  snf s  snf )zg
Euler's method for numerical integration.
From x0 to x1 with initial values given at x0 as vector y0.
r   Nr   Tmpmr   
_to_mpmathr   precr   r   r   )r'   r   x1r   r    ABr&   y_0hf_0f_0_ns               r)   r   r   +   s     	rww'Arww'A35
62a71:  )2C
6	A
ab'CE1X56AA"''JSVSS JJu).q2AFQQZ22 7 3s   2D?Dc           
         [        U5      R                  [        R                  5      n[        U5      R                  [        R                  5      nU Vs/ s H+  n[        U5      R                  [        R                  5      PM-     nnXe-
  n	Sn
SnSnSnUSS n[	        U5       H>  nU
[        [        X   USS95      R                  [        R                  5      X   -  -  n
M@     UR                  U
5        [	        SU5       Vs/ s H  oxU   X   U	-  S-  -   PM     nn[	        U5       HN  nU[        [        X   XYS-  -   SS95      R                  [        R                  5      X   X   U	-  S-  -   -  -  nMP     UR                  U5        [	        SU5       Vs/ s H  oxU   X   U	-  S-  -   PM     nn[	        U5       HN  nU[        [        X   XYS-  -   SS95      R                  [        R                  5      X   X   U	-  S-  -   -  -  nMP     UR                  U5        [	        SU5       Vs/ s H  oxU   UU   U	-  -   PM     nn[	        U5       HI  nU[        [        X   XY-   SS95      R                  [        R                  5      X   UU   U	-  -   -  -  nMK     UR                  U5        [	        U5       Vs/ s H)  oxU   XU   SX   -  -   SUU   -  -   UU   -   -  S-  -   PM+     sn$ s  snf s  snf s  snf s  snf s  snf )z)
Runge-Kutta 4th order numerical method.
r   r   NTr,         r.   )r'   r   r1   r   r    r2   r3   r&   r4   r5   r7   f_1_nf_2_nf_3_nr6   f_1f_2f_3s                     r)   r   r   ?   s   
 	rww'Arww'A35
62a71:  )2C
6	AEEEE
ab'C1X56AA"''JSVSS JJu(-a
41q6CF1HQJC
41XqSd;<GGPTWTZ]`]cde]efg]gTghh JJu(-a
41q6CF1HQJC
41XqSd;<GGPTWTZ]`]cde]efg]gTghh JJu&+Aqk
2kq6CF1HkC
21XD9:EEbggNRURX[^_`[abc[cRcdd JJuDI!HMHqFQAqx#a&0Q78::HMM9 7 5
 5
 3
 Ns   2K6K;L 4L0L
N)FRK4)
__doc__sympy.core.sympifyr   sympy.holonomic.holonomicr   mpmathr   r*   r   r        r)   <module>rH      s"    / & - D3(#NrG   