Hi Tom,
Instead of series(asin(α)), you can use SymPy’s ring_series.rs_asin, which
is optimized for power series manipulations and significantly reduces
memory usage.
```
from sympy.polys.rings import ring
from sympy.polys.ring_series import rs_asin
R, x = ring('x', domain='QQ')
asin_series = rs_asin(x, 11)
print(asin_series)
```
This method is much more efficient and avoids the heavy symbolic
differentiation that series() performs.
You can also check out the documentation for the rs_series
<https://docs.sympy.org/latest/modules/polys/ringseries.html#rs-series> in
`ring series` module.
Jatin Bhardwaj
On Monday, 24 February 2025 at 13:52:57 UTC+5:30 [email protected] wrote:
> I am using sympy to analyze and run some code involving power series. In
> general, the code is always running on a partial sum of a power series, and
> this is a normal sympy symbolic expression. After doing certain
> calculations, the data is no longer a series, and I need to run a Taylor
> expansion in order to get a series. For example, if I calculate the
> quotient of two partial sums, I need Taylor in order to get another partial
> sum. In sympy, it is very convenient to call series() to do this.
>
>
>
> Now it is clear that this can use a lot of memory, because every
> additional derivative makes the expression more complex and longer. It
> appears as though series() does not use parallel processing, so the result
> is 100% usage of one CPU and increasing use of memory. On my laptop
> (running Windows 11 and Visual Studio), I have 16GB RAM and have sometimes
> run into memory issues.
>
>
>
> To solve this problem, I have allocated an Ubuntu Linux virtual machine on
> the Internet (Microsoft Azure). The machine has 2 virtual CPUs and 218GB
> RAM. With this, I have successfully calculated partial sums up to order 24
> or 31. This sometimes runs at 100% CPU allocation for more than 24 hours
> and completes successfully.
>
>
>
> Up to now, I have used series() for algebraic expressions of partial sums
> (quotient, square root, etc.) but recently started applying this to a
> trigonometric expression. This is because I need to calculate the solution
> of a cubic equation and the Cardano formula has run into unpleasant
> situations involving complex numbers, and I have been given a
> recommendation to try the trigonometric formula instead. Up to now, it
> looks very good, since the primary solution is real and does not require
> complex components. By the way, solving a cubic equation worked will with
> both the standard formula and via solve(). For the cubic equation, I have
> started with the formula because I can see if each individual step success
> before proceeding to the next one.
>
>
>
> Specifically, my code is
>
> α = asin(α)
>
> α = series(α, m, n=maxK+1) # calculate series up to maxK
>
>
>
> On my laptop, the series statement runs for some time and hits the memory
> limit of my PC, so I tried running this on the VM, which has more memory
> and does not have the overhead of Windows or Visual Studio.
>
> This first attempt ran for somewhere between 24 and 30 hours and the VM
> was stopped. This is presumably because the VM is configured to use a “spot
> price”, meaning that the administrators can stop it at any time they need
> additional capacity for something else.
>
> The second attempt ran for somewhere between 30 and 48 hours and my output
> file ended in the statement killed. Running dmesg gave me this information:
>
>
>
> [144763.491084]
> oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/user.slice/user-1000.slice/session-1.scope,task=python3.9,pid=1699,uid=1000
>
> [144763.491101] Out of memory: Killed process 1699 (python3.9)
> total-vm:226036448kB, anon-rss:223754920kB, file-rss:2740kB, shmem-rss:0kB,
> UID:1000 pgtables:438192kB oom_score_adj:0
>
> [144772.062513] oom_reaper: reaped process 1699 (python3.9), now
> anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
>
>
>
> In this case, my partial sum is of order 11, and it would be very valuable
> for me to achieve this solution, but I don’t need to go past 11.
>
>
>
> Is this to be expected? Since the derivative of arcsin is 1/sqrt(1-x**2),
> I expect the calculations to be no worse than what I have done in the past.
>
> Is there any reason why series(asin(α)) would be expected to fail?
>
> Should I try anything else?
>
>
>
> Tom
>
> (Dr. Thomas S. Ligon)
>
> [email protected]
>
> Frohnloher Str. 6a
> 81475 Muenchen
> Germany
> Tel. +49(89)74575075 <+49%2089%2074575075>
>
>
>
--
You received this message because you are subscribed to the Google Groups
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion visit
https://groups.google.com/d/msgid/sympy/86f0738d-851f-48e3-9793-f1709a9f1c24n%40googlegroups.com.