Hi! My name is Subham Tibra and I am majoring in Mathematics and Computing at I.I.T. Kharagpur.
Github Profile: @shubhamtibra
This GSoC project adds a module for holonomic hunctions in SymPy.
Holonomic function is a family of special type of functions in Mathematics. My job is to write classes for representation of folonomic function and to write algorithms for various operations on them.
I will show you an application of this module.
For instance, consider the cosine function cos(x)
. You might remember that its indefinite integral is sin(x)
. You can do that using this module in the following manner:
In [1]: from sympy import *
In [2]: init_session()
IPython console for SymPy 1.0.1.dev (Python 2.7.12-64-bit) (ground types: python)
These commands were executed:
>>> from __future__ import division
>>> from sympy import *
>>> x, y, z, t = symbols('x y z t')
>>> k, m, n = symbols('k m n', integer=True)
>>> f, g, h = symbols('f g h', cls=Function)
>>> init_printing()
Documentation can be found at http://docs.sympy.org/dev
In [3]: from sympy.holonomic import *
In [5]: expr_to_holonomic(cos(x)).integrate(x).to_expr()
Out[5]: sin(x)
As you can see Out[5]:
gives you the integral of cos(x)
that is sin(x)
.
There are lots of other things this module can do but that'd be too much to explain here. If you are interested you can look it up here.
Fortunately I have been able to complete all of the work I proposed. A new module supporting most of the needed operations was added in SymPy.
All of the code was written in Python. I am providing link to the Pull Requests that I worked on during the GSoC period.
- A basic representation of Holonomic Functions and Differential Operator
- Using Polynomials in the module holonomic and Implement conversion to Hypergeometric.
- Recurrence Operators and Recurrence Relations for Holonomic Functions.
- Numerical Methods for Holonomic Functions
- Convert Expressions/Functions to Holonomic Functions.
- Optimization in module
holonomic
and Implementing RK4 for numerical computation. - Finding and then solving Bugs in module sympy/holonomic
- Convert expression to holonomic
- Convert Holonomic Functions to Hypergeometric and eventually to expressions/functions.
- Fixing issues in Holonomic Functions
- Making the module holonomic usable
- Convert Meijer G-function and better support for Singular Points (regular).
- Automatically find domain for the polynomial coefficients of the differential equation and support for singular initial conditions in
integrate
,mul
andadd
. - More support for computing singular initial conditions in
expr_to_holonomic
.
This is the list of my commits to SymPy repo. These are my contribution figures at the end of GSoC:
186 commits / 7,036 ++ / 2,860 --
Below is the link of the blog I created solely for weekly updates of this project.
Link: https://shubhamtibra.wordpress.com/
Even though I have fulfilled my proposals, the project can be extended. This project was started in this GSoC only and I hope other developers will join the project and make it better and more useful.