There are only two weeks before student application portal opens
and I would like to discuss my ideas regarding "Series expansion" project.
Here is what SymPy currently does:-
series:-
1) General expansion with O term appended
2) No separate functions for taylor, laurent, asymptotic etc.
3) Cannot provide a generating function or an infinite series representation
4) Bugs when expansion point is other than zero
For 3) we need to implement Formal Power Series
Formal Power Series:
Other CAS like Maple, Mathematica have this functionality and we must also have it.
This has two parts:
1) Give a formula or sequence and get the infinite series
2) Give a function and get the infinite series
Once we get the infinite series, we can do various operations on it.
Main points:
1) Representation of infinite sum. Is there a way to represent summation yet in SymPy?
2) Implement algorithm that can create a generating function given an expression.
This paper gives such an algorithm:
http://www.mathematik.uni-kassel.de/~koepf/Publikationen/SC-93-31.pdf It uses recurrence relations and differential equations to do so. I'm currently going through it
and understanding it.
Asymptotic Expansion:
Many special and elementary functions do not have it implemented. I plan to do
it for all whose expansion is possible.
In general also SymPy does not do it properly.
For e.g.:-
series(sin(1/x+exp(-x))-sin(1/x), x, oo, 2) currently gives O(1/x**2)
It can be better expanded as:-
1/exp(x) - 1/(2*exp(x)*x**2) + O(1/(exp(x)*x**4))
The following paper gives an algorithm to find such an asymptotic expansion:
A new algorithm for computing asymptotic series by "Dominik Gruntz"
Main points:
1) When to do an asymptotic expansion?
Currently, series just replaces x->1/x and oo->0 and does normal
series expansion on the project.
Order Term arithmetic:
This PR by @skirpichev currently deals with it:
https://github.com/sympy/sympy/pull/2427 I'll be more than happy to work on it and extend it.
Please reply to give your opinion. Thank You!