Skip to content

GSoC 2011 Application Yuri Karadzhov

yuri-karadzhov edited this page Mar 28, 2011 · 24 revisions

Title: SymPy: Implementation of basic Parametrization module, Symmetry search and handle module.

Student: Yuri Karadzhov

Abstract: As for professional mathematician and physicist computer algebra system (CAS) mostly is the tool of handling simple yet technically large problems. Sure, it can solve some problems completely from the start to the end, but the main purpose we use CAS is to simplify our daily routine. So the goal of my project is improvement of base of Sympy which significantly reduce amount of repeated and cumbersome operations and give the basement for other more complex and specific tools. As for me this tools are – parametrization (which helps to solve ODE's and PDE's depending on arbitrary parameters) and concerned problem of searching and handling symmetries of single ODE or PDE or system of ones.


Table of Contents

Personal info

Name and Contact Info

Name: Yuri Karadzhov

Gmail and GoogleTalk: [email protected]

IRC: yuri-karadzhov on freenode

Skype: kara-ya

Mailing List: Parametrizator or Symmetries

Education

Current:

  • PhD student in Applied math department of the Kiev Institute of Mathematics, National
Academy of Science, Ukraine.

Former:

  • MS of Mathematical Physics and Computer Sciences in Mechanic-Mathematical faculty of the Kiev National Tars Shevchenko University (honours degree).
  • BA of Mathematical Physics and Computer Sciences in Mechanic-Mathematical faculty of the Kiev National Tars Shevchenko University (honours degree).

Current research and background

Background which might be helpful: Computation Theory, Algebra, Mathematical and Functional Analyses , Theoretical Physics, Quantum Mechanics, Integral Transformations, Special Functions, Differential Equations, Mathematical Physics, Supersymmetries and Symmetries Analyses.

Currently in applied math department I study the theory of Lie groups and it's application to the differential equations. The most recent works however concerned with supersymmetry of Schrödinger-Pauli equation of arbitrary dimension. The obtained results widely extend the number of exactly solvable Quantum Mechanic problems as well as generalize the approach of finding such problems.

Technical background & Programming experience

I've bin using GNU Linux since 2001. It is my only operation system for the last five years. I worked with Mandrake, Red Hat, Gentoo, Debian. Now I use Kubuntu as it is simple to configure and up to date. I used to work as system administrator so I familiar with sh.

Programmer experience:

  • Professional:
    • Java EE, JDBC, JavaScript (ExtJs) – Summer work in Global Logic (2010)
    • Java SE – Institute project: Partial TeX translator for SIGMA journal (2009)
    • APL – Simcorp LLC (2008-2009)
  • Academic:
    • C/C++, Python – writing labs in University
    • Scala – experimenting with Processing
I have experience with SVN, Hg.

IDE: Eclipse, Netbeans, IDLE

Mathematical Software

I have good knowledge of

  • Maple
  • Mathematica
tried to use
  • Sage and Maxima
I completed the desired functionality as Maple Library and now porting it to Mathematica.

Project Motivations & Expectations

The main purpose I applied to this project is to investigate in base of the sympy, which gives the ability to improve more complex functionality which I need in my research. I expect to continue my work on sympy after the end of the project, especially on differential and Lie modules, they are in great interest of me. Because after my work on SSQM will be finished I will recalculate and correct Amaldi classification which incomplete version is used in Maple to solve systems of ODE's and PDE's.

Project Goal

Parametrizator

The project itself includes many steps, but the main goal is to implement parameter checking functionality (the idea is original and has no realizations in any other CAS).

e.g. Bernoulli differential equation depending on parameters

f ' (x) = af 2(x) + b

has different solutions depending on parameter values

  • f(x) = C1 if a = 0, b = 0
  • f(x) = bx + C2 if a = 0, b ≠ 0
  • f(x) = 1/(C3-ax) if a ≠ 0, b = 0
  • f(x) = sqrt(b/a) tan( sqrt(ba) (x + C4)) if a ≠ 0, b ≠ 0
where Ci - integration constants.

The other example of parameter depending answer is rank of the matrix

e.g. Assume that we have matrix depending on parameter

A = Matrix((1, x),(1, 1))

this matrix has different rank depending on parameter x

  • rank(A) = 2 if x ≠ 1
  • rank(A) = 1 if x = 1
So if we use Cramer method of finding rank we can note that det(A -1) has infinite value at x = 1

So high level function casemap should be implemented to make this real. And we will be able to write

>>> casemap(dsolve, diff(f(x),x)==a*f(x)**2+b, (a, b))  # parameter-wise solution of given ode
(C1, (a==0, b==0))
(bx + C2, (a==0, b!=0))
(1/(C3 - ax), (a!=0, b==0))
(sqrt(b/a) tan(sqrt(ba) (x+C4)), (a!=0, b!=0)))

or for rank calculation

>>> casemap(det, inverse(A), (x)) # parameter-wise determinant calculation
(1/(1-x), (x!=1))
(infinity, (x==1)) 

Symmetries

The problem of searching symmetries of differential equation (system of equations) partial and ordinary is fundamental problem of analysis of differential equation. Assuming that we know symmetries of DE we can reduce its order or even completely solve it (in case of ODE), reproduce its solution and give some prediction about asymptotic behavior of solutions. Implementation of symmetries module lead to common integration procedure (by Lie) which significantly improve the ODE module.

Of course the problem of finding symmetries include the problem of integration of overdetermined system of DE's on the last step, which is huge and greedy to resources (and at least Gröbner basis implementation is required). Nevertheless it is usually easy to solve without computer.

The huge routine part is obtaining the system of determining equations. So the goal of the project is to present tools to handle this problem:

  1. Generate infinitesimal operator for given variables
  2. Calculate the extension of infinitesimal operator of given order
  3. Calculate differential sequence of given equation (system of equations)
  4. Apply the infinitesimal operator to the equation (system of equations)
  5. Obtain system of determining equations
  6. Obtain system of determining equations for classification problem
The classic example for Heat Equation
>>> u = Function('u')(t,x)
>>> eq = diff(u,t)-diff(u,x,x)
>>> infinitesimal(eq)
tau(t,x,u)dt+xi(t,x,u)dx+eta(t,x,u)du
>>> deteq(eq) # Obtaining system of determining equations
diff(tau,u,u)==0
2*diff(xi,u)+2*diff(tau,x,u)==0
2*diff(tau,u)==0
2*diff(tau,x)==0
diff(tau,x,x)-diff(tau,t)+2*diff(xi,x)==0
diff(xi,u,u)==0
2*diff(xi,x,u)-diff(eta,u,u)==0
diff(xi,x,x)-diff(xi,t)-2*diff(eta,x,u)==0
diff(eta,t)-diff(eta,x,x)==0

Project Plan

Main Functionality

Additional Functionality

Future Extensions

Schedule

  • Week 1
  • Week 2
  • Week 3
  • Week 4
  • Week 5
  • Week 6
  • Week 7
  • Week 8

References

Clone this wiki locally