Re: NDSolve and vector functions
- To: mathgroup at smc.vnet.net
- Subject: [mg87866] Re: NDSolve and vector functions
- From: "Kevin J. McCann" <Kevin.McCann at umbc.edu>
- Date: Sat, 19 Apr 2008 03:32:19 -0400 (EDT)
- Organization: University System of Maryland
- References: <fu9vl0$ie2$1@smc.vnet.net>
I don't believe this is possible. How would Mathematica "know" that p[t]
is 2d, 3d, 4d, ...? When I have used something like your approach it is
really for ease of the human user, e.g.
r[t_]={x[t],y[t]}
Then in NDSolve you might *like* to do something like this:
r''[t]==-k r[t]
But it won't work. You need to Thread the components:
Thread[r''[t]==-k r[t]]
to split out each of the two diff eqs. In the end NDSolve works on a
single component of the de; so, it really needs something like:
NDSolve[{x''[t]==-k x[t],y''[t]==-k y[t],x[0]==1,x'[0]==2,
etc.},r[t],{t,0,10}]
and the above Thread-ing will do just that.
Kevin
dh wrote:
> Hello all,
>
> does anybody know a way to compute a vector valued function using
>
> NDSolve without explicitely specifying all vector components. Here is a
>
> simple example: Although NDSolve[{p'[t]==p[t],p[0]=={1,0}},p,{t,0,1}] works,
>
> NDSolve[{p'[t]==p[t]+{1,1},p[0]=={1,0}},p,{t,0,1}]
>
> does not work because p[t] in "p[t]+{1,1}" is treated as a scalar and
>
> the expression is evaluated to {1+p[t],1+p[t]} what is clearly not
>
> intended. Even in "IdentityMatrix[2].p[t]+{1,1}"
>
> "IdentityMatrix[2].p[t]" is treated like a scalar and added to the
>
> components of {1,1}.
>
> do I miss something???
>
> Daniel
>
>
>
--
Kevin J. McCann
Research Associate Professor
JCET/Physics
Physics Building
University of Maryland, Baltimore County
1000 Hilltop Circle
Baltimore, MD 21250