Hello again. Sorry to bring this post up again, but I thought it would be good to keep all my ideas on a single thread.
I've been reading about lie groups and their application in solving differential equations and I believe I've got my concepts right about solving a linear first order differential equation. Maple, (according to the papers cited in the SoC ideas pages), has two separate papers dedicated to solving differential equations of the first and second order using lie groups. I would like to like to code a clone for solving first order differential equations using lie groups in sympy for my SoC proposal. Theory: There are many differential equations that cannot be solved using the present dsolve in ode.py. Suppose there is a differential equation of the form (dr / ds) = f(r), since the slope is independent of s, moving in the s direction would merge one solution into another. The principal aim of using lie groups is to reduce any given differential equation to the above mentioned form. The coordinates r and s are called canonical coordinates because any lie group transformation which leaves the differential equation invariant would transform it into the form (r, s + alpha) where r remains invariant.If we are able to find such coordinates, then the equation becomes separable. The problem is finding these canonical co-ordinates. This can be broken into four steps(This is for first order differential equations) 1. Find η and ξ , the infinitesimals using this partial diffential equation, which are basically the differentials of the transformed co-ordinates with respect to the transformation parameter. ηx - ξy h2 + (ηy - ξx )h - (ξhx + ηhy ) = 0 This should be the toughest part of the project. As you can see solving a linear first order ODE, leads to solving a much more complicated PDE. However in this PDE, some assumptions could be made for the infinitesimals. Maple has 6 separate algorithms just for finding the infinitesimals as described in the paper. Once this is done. 2. rx ξ + ry η = 0, sx ξ + sy η = 1, Solving these two equations would give, r and s , this can be done by. dx / ξ = dy / η = r(x,y) and dx / ξ = ds 3. After this substituting r and s in ds / dr = sx + h(x,y)sy / rx + h(x, y)ry and simplifying in terms of r and s would give a separable form. 4. And after solving the differential equation in terms of r and s, substituting back r and s in terms of x and y. I haven't focussed on the implementation part yet, but I think it should be structured similar to dsolve, or should it be implemented in dsolve. I've focussed on only first order differential equations here, even Maple also has support only upto the second order.I feel this project would be challenging for me and also a addition to the ODE solver of sympy. @Aaron, Stefan, and Smichr Please do give your feedback. -- 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 post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/sympy?hl=en. For more options, visit https://groups.google.com/groups/opt_out.
