       Re: NDSolve in matrix form

• To: mathgroup at smc.vnet.net
• Subject: [mg120488] Re: NDSolve in matrix form
• From: Gabriel Landi <gtlandi at gmail.com>
• Date: Mon, 25 Jul 2011 07:30:12 -0400 (EDT)
• Delivered-to: l-mathgroup@mail-archive0.wolfram.com
• References: <201107240719.DAA11656@smc.vnet.net>

```Hi Glenn.

I solve a similar system in the following way:

Say it is defined as

X'(t) = a X(t) + b

Then once i know a,b and my initial conditions ic, i do:

vars = Table[f[i][t],{i,n}];
varsD = D[#,t	] &/@vars;
eqns = Flatten@{Thread[varsD == a.vars + b],
Thread[(vars /. t -> 0) == ic]};
sol = NDSolve[eqns,vars,{t,0,tf}]

Good luck,

Gabriel

On Jul 24, 2011, at 4:19 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 = {x1,x2,...}.
>
> 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[][t], f[][t], f[][t]}
>     fInit := {0, 0, 2}
>     mat := {(-3*f[][t] - f[][t]), 26.5*f[][t] - f[][t] -
f[][t]*f[][t], f[][t]*f[][t] - f[][t]}
>     solution =  NDSolve[{Derivative[f][t] == mat, f ==
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: TransformedDistribution -- odd problem
• Next by Date: Re: TransformedDistribution, for a sum of M iid variables
• Previous by thread: NDSolve in matrix form
• Next by thread: NDSolve in matrix form