MathGroup Archive 2011

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: NDSolve in matrix form

  • To: mathgroup at smc.vnet.net
  • Subject: [mg120470] Re: NDSolve in matrix form
  • From: "Kevin J. McCann" <kjm at KevinMcCann.com>
  • Date: Sun, 24 Jul 2011 07:38:45 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <j0gh6t$bd4$1@smc.vnet.net>

Glenn,

First of all, you got into a recurrence problem with you definition of 
f. Second, the form of the input to NDSolve isn't quite right, you need 
to use Thread to transform something like

{f1[t],f2[t],f3[t]}=={0,0,2} into {f1[t]==0,f2[t]==0,f3[t]==2}

Take the code below apart and you will see how this is used.

Finally, note that f3 does not enter the first two de's and that it is 
fairly simple to see that f1=f2=0.

Here is my take:

Clear[f,fInit,mat]
f[t_]={f1[t],f2[t],f3[t]}
fInit={0,0,2}
mat={-3 f1[t]-f2[t],26.5 f1[t]-f2[t]-f1[t] f2[t],f1[t] f2[t]-f3[t]}
eqns=Flatten[{Thread[(f^\[Prime])[t]==mat],Thread[f[0]==fInit]}]
solution=NDSolve[eqns,f[t],{t,0,17}][[1]]

Cheers,

Kevin

On 7/24/2011 3:22 AM, Glenn Carlson wrote:
> I am trying to numerically solve systems of ODEs using Mathematica 7.
>
> The desired accuracy that I am striving for depends on the number of solution functions so I want to structure my solution algorithm to allow different numbers of solution functions. Solving the problem as a system of ODEs in matrix form seems the logical choice:
>
>       dX/dt = f[X[t]],
>
> where f[X[t]] is a specified function, and X[t] is a vector of solution functions {x1[t],x2[t],...}. The initial conditions are specified by a vector X[0] = {x1[0],x2[0],...}.
>
> In my problem, the number of solution functions will usually vary from 3 to 7, but could be any number.
>
> One approach that doesn't work is:
>
>       f := {f[[1]][t], f[[2]][t], f[[3]][t]}
>       fInit := {0, 0, 2}
>       mat := {(-3*f[[1]][t] - f[[2]][t]), 26.5*f[[1]][t] - f[[2]][t] - f[[1]][t]*f[[3]][t], f[[1]][t]*f[[2]][t] - f[[3]][t]}
>       solution =  NDSolve[{Derivative[1][f][t] == mat, f[0] == fInit}, f, {t, 0, 17}]
>
> I don't know if the problem is in the way f is specified or in my expression for NDSolve.
>
> I'd appreciate any assistance.
>
> Thanks and regards,
>
> Glenn
>




  • Prev by Date: Re: Code is not working...
  • Next by Date: Re: NDSolve in matrix form
  • Previous by thread: NDSolve in matrix form
  • Next by thread: Re: NDSolve in matrix form