Vector valued differential equations
- To: mathgroup at smc.vnet.net
- Subject: [mg87998] Vector valued differential equations
- From: dh <dh at metrohm.ch>
- Date: Mon, 21 Apr 2008 14:37:37 -0400 (EDT)
Hello, I lately asked if it is possible to write differential equations of vector valued functions without having to explicitely write all components. For the following cases it can be done very easily: Assume we are looking for a vector valued function y[t]={y1[t],y2[t]..,ym[t]}. To begin with, assume further that we have a first order differential equations that can be written explicitly as: y1'= f1[t,y]; y2'=f2[t,y],..,fm[t,y] then with F[t_,y_?VectorQ]:={f1[t,y],f12[t,y],..} where VectorQ ensure that the function is not called with symbolic arguments. With initial conditions y0={y10,y20,..} we can write the DE like: eq={y'[t]==F[t,y[t]], y[0]==y0}; NDSolve[eq,y[t],{t,0,tend}] If we have a n-th order DE, we may use the same trick. We now have: y1'= f11[t,y,y'..]; y2'=f21[..];..;ym'=fm1[..]; y1''=f12[..];..;ym''=fm2[..]; .... y1((n-1) derivative))= f1(n-1)[..];..;ym((n-1)derivative)=fm(n-1)[..] instead of y we have: f={y1,y2,..,y1',y2',..,(n-1)derivative of y1,..} with F and initial conditions f0: F[t_,f_?VectorQ]:={f11,f21,..,fm1,f21,f22,..,fm2,..,f1(n-1)} f0={y1[0],..,ym[0],y1'[0],..,(n-1)drivative of fm[0]} the DE can be written: eq={f'[t]==F[t,f[t]], f[0]==f0}; NDSolve[eq,y[t],{t,0,tend}] Here is a simple example, the 2-dim Kepler problem: f0={10,0,0,0.18};(*{x,y,vx,vy}*) tend=80; F[p_?VectorQ]:=({p[[3]],p[[4]],-p[[1]]/(p[[1]]^2+p[[2]]^2)^(3/2),-p[[2]]/(p[[1]]^2+p[[2]]^2)^(3/2)}); eq={f'[t]==F[f[t]],f[0]==f0}; sol4=f[t]/.NDSolve[eq,f[t],{t,0,tend}][[1]]; ParametricPlot[{sol4[[1]],sol4[[2]]},{t,0,tend},Mesh->True] Daniel