GSoC 2016 Application Shravan Patel: ODE - wrat/sympy GitHub Wiki

#Implementing new methods to solve ODE ##Personal Details Name: Shravan Patel

University: Indian Institute of Technology, Mandi

Email: [email protected]

Github: shravanpatel5

##Background and Programming Skills I am Shravan Patel. I am currently pursuing second year B.Tech in Computer Science and Engineering at Indian Institute of Technology, Mandi. My field of interest include Competitive Programming, Mathematics and Electronics. I am new in Open Source Software Development. I heard my senior telling "Competitive Programming is not everything, you should contribute to Open Source Softwares". That increased my interest in Open Source Software Development.

I code in C, C++ and Python. I have taken course of Ordinary Differential Equations in my 1st semester and worked good in it. I use python since my first semester. I have made two websites as a project using PHP, HTML, CSS and JavaScript. I am intermediate in Python. Code in python is 5 times shorter than code in any other language. That's very cool. In built Dictionary, no memory management, too many standard libraries, For..else syntax and many other things that I liked most.

##Project Idea

###Abstract The implementation of the current ODE solver in sympy was started by Aaron Meurer as his GSoC Project in 2009. Currently, SymPy's ODE solver has many methods to solve differential equations. But there are many methods that are not implemented. My project proposal would be dealing with the implementation of these three features.

  • Implementation of a function for separation ansatz

    At present, ODE module have a method to solve differential equations which are separable. I would like to make a simple and very fast function which will find out whether an ordinary differential equation is separable or not.

  • Solving Differential Equations in Terms of Bessel Functions

    Ode module have a method to solve second order differential equations which are in Liouville form. Bessel equation and Liouville form are similar. This project is aimed to develop a method that can solve second order differential equations in terms of Bessel functions.

  • Solving second order ODE using Lie Groups and symmetric method

    In GSoC 2013, Manoj Kumar implemented the method to solve first order differential equations using Lie groups. At the end of this project Ode module would be able to solve second order differential equations using Lie group.

###Inspiration In beginning, I was finding a organization which require C/C++/Python and Mathematics. I got few such organizations. Because of too many good and interesting ideas related to mathematics, I chose SymPy. As I had taken a course on ODE, I got interest in this project proposal idea.

###Theory

Implementation of a function for separation ansatz

  • Suppose dy/dx = f(x,y). If f(x,y) is separable as f(x,y) = φ(x)*ψ(y) we can solve it using ode_saperable(). There is a very fast method to check whether f(x,y) is separable or not.

    (1) Choose any (x0, y0) such that f(x0, y0) != 0.
    (2) Construct the functions φ(x) = f(x,y0)/f(x0,y0) and ψ(y) = f(x0, y).
    (3) The equation is separable if and only if f(x, y) = φ(x)*ψ(y).

Solving Differential Equations in Terms of Bessel Functions

  • Ode module have a method to solve second order differential equations which are in Liouville form. Bessel equation and Liouville form are similar. This project is aimed to develop a method that can solve second order differential equations in terms of Bessel functions.

Solving second order ODE using Lie Groups and symmetric method

  • In GSoC 2013, Manoj Kumar implemented the method to solve first order differential equations using Lie groups. At the end of this project Ode module would be able to solve second order differential equations using Lie group.

###Implementation

Implementation of a function for separation ansatz

  • First algorithm is to find x0 and y0 in constant order for which f(x0,y0) is not zero. After that φ(x) and ψ(y) can be easily calculated and then by comparing f(x,y) to φ(x)*ψ(y) function will return false or φ(x) and ψ(y) with true.

Solving Differential Equations in Terms of Bessel Functions

  • Ode module have a method to solve second order differential equations which are in Liouville form. Bessel equation and Liouville form are similar. This project is aimed to develop a method that can solve second order differential equations in terms of Bessel functions.

Solving second order ODE using Lie Groups and symmetric method

  • In GSoC 2013, Manoj Kumar implemented the method to solve first order differential equations using Lie groups. At the end of this project Ode module would be able to solve second order differential equations using Lie group.

##Timeline

Befor April 22

  • To familiarize myself completely with SymPy's ODE module's functionality and architecture
  • Deep study of the "Solving Differential Equations in Terms of Bessel Functions"
  • Deep study of the Lie Group method for solving second order ODE

Community bonding period(April 22 - May 22)

  • The main focus in this period would be creating the efficient algorithms.
  • During this period I will remain in constant touch with my mentor. I will remain active on IRC and Mailling lists to discuss and finalize on the modifications (if any) that needs to be on existing schemas and design of new schemas. Thus with the help of my mentor I will become absolutely clear about my future goals.
  • If I would get extra time, I would start coding in this phase.

Week 1 - Week 5 (May 23 - June 28)

  • Coding

Midterm Evaluation

  • Fix bugs if any

Week 6 - Week 11 (May 23 - June 28)

  • Coding

Week 12 (August 8 - August 16)

  • Write documentation and fix bugs that may arise

Week 13 (August 16 - August 24)

  • Final Evaluation

Notes :-

  • I have final exams during week 2 and week3. So I would be able to devote 15-25 hours per week in that period. After week 3 I would be able to devote 40-50 hours per week. I have no other project or internship for the summer. My next semester will start around 10 August. So there won't be any clash with GSoc.

##References

  1. http://en.wikipedia.org/wiki/Lie_group
  2. http://www4.ujaen.es/~angelcid/Archivos/Papers/IJMEST.pdf
  3. http://www.mathematik.uni-kassel.de/~koepf/Publikationen/DebeerstKoepfvanHoeij.pdf
  4. https://cds.cern.ch/record/323177/files/9703082.pdf
⚠️ **GitHub.com Fallback** ⚠️