K iA @dZddlmZddlmZddlmZd dZdZdZ y) z)Numerical Methods for Holonomic Functions)sympify)DMFsubs)mpc |j}|j}|jj}|j }|dk(rt }nt }|jD cgc]!} |j| j#} } t|D cgc]} | |  | |z } } |j} t| |kr td|j}|| ||d| |g}t|ddD]&\} } |j!|| || | |d|(|s|D cgc]} t#| dc} St#|Scc} wcc} wcc} w)zk Numerical methods for numerical integration along a given set of points in the complex plane. EulerzNot Enough Initial ConditionsrN) annihilatororderparentbase get_field_euler_rk4 listofpolynewto_listrangey0len TypeErrorx0 enumerateappendr)funcpoints derivativesmethodannaRKmethjdmfiredrrsols _/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/holonomic/numerical.py_evalfr* sD   C A A A '*~~ 6!155  6C 6%*1X .CF7SV  .C . B 2w{788 B RB * +C&*%81 4VAY3r7A678 '*+!! ++s| 7 .,s&E E'Ec Dt|jtj}t|jtj}|Dcgc]*}t|jtj,}}||z } |dd} d} t |D]B}| tt |||djtj||zz } D| j | t |Dcgc]}||| | |zzc}Scc}wcc}w)zs Euler's method for numerical integration. From x0 to x1 with initial values given at x0 as vector y0. rNrTmpmr _to_mpmathrprecrrr) r'rx1rr ABr&y_0hf_0f_0_ns r)rr+s  rww'A rww'A35 6a71:  ) 6C 6 AA ab'C E 1XT Q56AA"''JSQRVSSTJJu).q 2ACFQQZ  22 7 3s /DDc 4t|jtj}t|jtj}|Dcgc]*}t|jtj,}}||z } d} d} d} d} |dd}t |D]B}| tt |||djtj||zz } D|j | t d|Dcgc]}||||| zdz z}}t |D]T}| tt |||| dz zdjtj||||| zdz zzz } V|j | t d|Dcgc]}||||| zdz z}}t |D]T}| tt |||| dz zdjtj||||| zdz zzz } V|j | t d|Dcgc]}||||| zz}}t |D]N}| tt |||| zdjtj||||| zzzz } P|j | t |Dcgc]+}||| ||d||zzd||zz||zzdz z-c}Scc}wcc}wcc}wcc}wcc}w)z1 Runge-Kutta 4th order numerical method. rrNTr,r.)r'rr1rr r2r3r&r4r5r7f_1_nf_2_nf_3_nr6f_1f_2f_3s r)rr?s$  rww'A rww'A35 6a71:  ) 6C 6 AA E E E E ab'C 1XT Q56AA"''JSQRVSSTJJu(-a 413q6CF1HQJ  4C 4 1Xi QQqSd;<GGPTWXYTZ]`ab]cde]efg]gTghhiJJu(-a 413q6CF1HQJ  4C 4 1Xi QQqSd;<GGPTWXYTZ]`ab]cde]efg]gTghhiJJu&+Aqk 23q6CF1H  2C 2 1Xe QQD9:EEbggNRUVWRX[^_`[abc[cRcddeJJuDI!H MqCFQAqQx#a&0Q78: : MM9 7 5 5 3 Ns/LL"L =L0LN)FRK4) __doc__sympy.core.sympifyrsympy.holonomic.holonomicrmpmathrr*rrr)rHs"/&-D3(#NrG