*Hi Tom,*

I noticed a small issue in your implementation. I’m not sure if this is a 
standalone piece of code or part of a larger codebase, but I’d be happy to 
help clarify.

The ring function returns a tuple containing the ring itself and all 
variables defined within it. In your code:

``` R, m = ring('HillSeries2.m', domain=QQ) ```

You’re defining the variable 'HillSeries2.m' and storing it in m. However, 
using dots in variable names can sometimes cause confusion. It’s generally 
a good practice to use simple, consistent names for better readability.

In the series expansion:
``` α = rs_asin(α, HillSeries2.m, 3)  # should be 11 ```

1. The first argument of rs_asin should be a function that is either a 
*polynomial* or a *series*, and its variable must be part of the ring. 
However, α is not defined before this line.

2. The second argument should be the ring variable, but HillSeries2.m is 
not a separate variable. Instead, you should use m, since that’s where the 
variable was stored when defining the ring.

Take a look at this code. I hope this helps,
```
from symp import QQ, ring
from sympy.polys.ring_series import rs_asin

R, α = ring('α', domain=QQ)  # Define the ring with variable α
s = rs_asin(α, α, 8)  # Compute the series expansion of asin(α) up to order 
8
#output: 5/112*α**7 + 3/40*α**5 + 1/6*α**3 + α
```

Also, check out "rs_asin" document
https://docs.sympy.org/latest/modules/polys/ringseries.html#sympy.polys.ring_series.rs_asin


Jatin 
On Wednesday, 26 February 2025 at 14:19:30 UTC+5:30 [email protected] 
wrote:

> Hi Jatin,
>
>  
>
> thanks, this looks very promising. I haven’t used polynomials much yet, 
> since simple symbolic expressions do everything I need, and it looks like I 
> have a deficit there. Here is my current code:
>
> from sympy.polys.domains import QQ
>
> from sympy.polys.rings import ring
>
> from sympy.polys.ring_series import rs_asin
>
> R, m = ring('HillSeries2.m', domain='QQ')
>
> α = rs_asin(α, HillSeries2.m, 3) # should be 11
>
>  
>
> Exception in the last line:
>
> 'Add' object has no attribute 'ring'
>
> It looks like my expression needs to be a polynomial
>
> I added a line
>
> α = α.as_poly(domain='QQ')
>
> but that didn’t help.
>
>  
>
> In the sample code
>
> R, m = ring('HillSeries2.m', domain='QQ')
>
> is not documented very well. It looks like it is defining a ring R, but 
> not using it, but my IDE doesn’t give me a warning for that.
>
>  
>
> I am using documentation
>
> https://docs.sympy.org/latest/modules/polys/ringseries.html#rs-series
>
>  
>
> Tom
>
> (Dr. Thomas S. Ligon)
>
> [email protected]
>
> Frohnloher Str. 6a
> 81475 Muenchen
> Germany
> Tel. +49(89)74575075 <+49%2089%2074575075>
>
>  
>
> *Von:* [email protected] <[email protected]> *Im Auftrag von *Jatin 
> Bhardwaj
> *Gesendet:* Montag, 24. Februar 2025 22:08
> *An:* sympy <[email protected]>
> *Betreff:* [sympy] Re: sympy process out of memory calculating series of 
> asin
>
>  
>
> 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
>  
> <https://groups.google.com/d/msgid/sympy/86f0738d-851f-48e3-9793-f1709a9f1c24n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
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/07031884-de5c-4f77-9ba1-f31987a6bcc6n%40googlegroups.com.

Reply via email to