Re: Numerical Solution to a System of Differential Equations...
- To: mathgroup@smc.vnet.net
- Subject: [mg12233] Re: Numerical Solution to a System of Differential Equations...
- From: Paul Abbott <paul@physics.uwa.edu.au>
- Date: Tue, 5 May 1998 03:29:30 -0400
- Organization: University of Western Australia
- References: <6ibvba$ev@smc.vnet.net>
Ragavan wrote: > Now, I try to solve using NDSolve: > > In[4]:= NDSolve[ {MapThread[Equal,{y', M.y}], > MapThread[Equal,{y0,Init}]}, > y, {t,0,10}] You could just write NDSolve[{Thread[y' == M . y], Thread[y0 == Init]}, y, {t, 0, 10}] > and obtain an output which looks like this: > > Out[4]={y1[t]\[Rule]InterpolatingFunction[{{0.`,10.`}},"<>"][t], > y2[t]\[Rule]InterpolatingFunction[{{0.`,10.`}},"<>"][t], > y3[t]\[Rule]InterpolatingFunction[{{0.`,10.`}},"<>"][t]}} > > (y1, y2, y3 are elements in the y vector.) y = {y1[t],y2[t],y3[t],y4[t]} for otherwise NDSolve would return {y1\[Rule]InterpolatingFunction[{{0.`,10.`}},"<>"], ... > But when I try to look at the result for a given value of the dependent > variable t (say 5): > > In[5]:= y3[5] /. % > > all I get is > > Out[5]= y3[5] This is because the replacement rule is for y1[t] not for y1. Here is one way to get what you want: y = {y1, y2, y3, y4}; NDSolve[{Thread[D[Through[y[t]], t] == M . Through[y[t]]], Thread[Through[y[0]] == Init]}, y, {t, 0, 10}] {{y1 -> InterpolatingFunction[], y2 -> InterpolatingFunction[], y3 -> InterpolatingFunction[], y4 -> InterpolatingFunction[]}} Cheers, Paul ____________________________________________________________________ Paul Abbott Phone: +61-8-9380-2734 Department of Physics Fax: +61-8-9380-1014 The University of Western Australia Nedlands WA 6907 mailto:paul@physics.uwa.edu.au AUSTRALIA http://www.pd.uwa.edu.au/~paul God IS a weakly left-handed dice player ____________________________________________________________________