Numeric multivariable ode solver in Sage?

i like this post (click again to cancel)
3
i dont like this post (click again to cancel)

hi everyone, is there any numeric multivariable ode solver in sage? i want to solve the double pendulum problem, so i need to solve 4 first order differential equations which deppends on theta1(t) amd thetha2(t). I need something like a multivariable runge kutta algorithm

asked Aug 19 '10

ngativ gravatar image ngativ
83 1 6 15

updated May 05 '11

Kelvin Li gravatar image Kelvin Li
423 9 16
You should also ask on ask.scipy.org (but ask about scipy - a component of sage - instead of sage). Post a link here. William Stein (Aug 19 '10)

3 Answers:

i like this answer (click again to cancel)
2
i dont like this answer (click again to cancel)

Most of Sage's numerics is done via Numpy/Scipy which is included in Sage and usable from the Sage Notebook. To solve an ODE using Scipy first reduce your problem to a system of 1st degree ODEs: $u'(x,y,t) = f(t,x,y,u)$. Then, follow the instructions on the relevant Scipy documentation: Ordinary differential equations (odeint). The key components to solving the numerical ODE is (1) writing a Python function for the right-hand side, $f$, (2) writing a function for its Jacobian, $J_f$, (3) and calling the scipy.integrate.odeint function.

Consult the scipy.integrate.odeint documentation for more information on its use. You can read this documentation by entering

sage: from scipy.integrate import odeint
sage: odeint?

Finally, I providing the Jacobian for your problem is an optional argument but it helps with convergence.

link

posted Aug 19 '10

cswiercz gravatar image cswiercz
809 5 15 33
http://www.cswiercz.info/
Thanks!, but.. it works for a multivariable diferential equation system like $u'(x,y,t) = f(t,x,y,u)$. ? i only see that odeint only works for du/dt=f(u,t) or im wrong? ngativ (Aug 19 '10)
**odeint** allows passing of arguments. These arguments are supposed to match those of $f$ and $J_f$ in the same order. For example, if $f$ and $J_f$ depend on a parameter, $\alpha$, then just include $\alpha$ in the **args** parameter of **odeint**. Spatial vecotrs $x$ and $y$ can behave similarly. cswiercz (Aug 19 '10)
i like this answer (click again to cancel)
2
i dont like this answer (click again to cancel)

Hi,

Another option is to use the function desolve_odeint (from version 4.6 on, see the docs on desolve_odeint?), which uses the odeint solver internally, but takes as an input symbolic funcions . For instance, to integrate the Lorenz attractor, you would do

 sage: x,y,z=var('x,y,z') # Declare the variables 
 sage: lorenz=[10.0*(y-x),x*(28.0-z)-y,x*y-(8.0/3.0)*z]
 sage: times=srange(0,50.05,0.05) # Integration Time 
 sage: ics=[0,1,1] # and initial conditions
 sage: sol=desolve_odeint(lorenz,ics,times,[x,y,z]) #integrate

to plot the attractor, simply:

sage: line3d(sol)

I do not know what you mean exactly by the double pendulum, but here it is something similar:

sage: theta1,theta2,x1,x2=var('theta1,theta2,x1,x2')
sage: dpendulum=[x1,x2,-sin(theta1)-0.1*sin(theta2),-sin(theta2)+0.1*sin(theta1)]
sage: # Time and initial conditions
sage: times=srange(0,50.05,0.05) 
sage: ics=[1,1,0,0] 
sage: sol=desolve_odeint(dpendulum,ics,times,[theta1,theta2,x1,x2])

and a nice plot is here

sage: graphics_array([line(zip(sol[:,0],sol[:,2])),line(zip(sol[:,1],sol[:,3]))])

Joaquim Puig

link

posted Mar 03 '11

Joaquim Puig gravatar image Joaquim Puig
171 5 9
i like this answer (click again to cancel)
1
i dont like this answer (click again to cancel)

i make it! using desolvesystemrk4[w1,w2,aw1,aw2],[s1,s2,w1,w2],ics=[0,0.5,0,0.0,0.5],ivar=t,step=0.01,end_points=20)

I compared these results with the results from a maple worksheet that i downloaded from internet and they match very well. The Sage's speed is very good

But i would like to learn how to use odeint from scipy and ode_solver from gsl to solve this system :S

I just started to using Sage 3 days ago and i love it. Thanks!

link

posted Aug 19 '10

ngativ gravatar image ngativ
83 1 6 15

Your answer

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[hide preview]

Question tools

Tags:

Stats:

Asked: Aug 19 '10

Seen: 544 times

Last updated: Mar 03 '11

powered by ASKBOT version 0.7.22
Copyright Sage, 2010. Some rights reserved under creative commons license.