MathGroup Archive 2009

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

Search the Archive

Re: NDSolve with Numeric Function

  • To: mathgroup at smc.vnet.net
  • Subject: [mg100215] Re: NDSolve with Numeric Function
  • From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
  • Date: Thu, 28 May 2009 06:49:06 -0400 (EDT)
  • Organization: Uni Leipzig
  • References: <gvka0b$oo8$1@smc.vnet.net>
  • Reply-to: kuska at informatik.uni-leipzig.de

Hi,

RHS[x_List, v_List, f_] :=
  Module[{x1, y1, x2, y2, x1v, y1v, x2v, y2v}, {x1, y1, x2, y2} = x;
   {x1v, y1v, x2v, y2v} = v;
   -{{1, 2, 3, 5}, {3, 2, 1, 2}, {5, 7, 1, 1}, {3, 2, 4, 5}}.{x1, y1,
       x2, y2} + 3 {x1v, y1v, x2v, y2v}]

sol = NDSolve[{x''[t] == RHS[x[t], x'[t], 1], x[0] == {-1, 0, 1, 0},
    x'[0] == {0, 0, 0, 0}}, x, {t, 0, 2}]


work fine. And the problem is, that NDSolve[] evaluate its arguments
before it found out that you wish to solve a vector equation.

Regards
   Jens

Hugh Goyder wrote:
> Please could someone explain why my NDSolve examples below don't work?
> In the first case I think it fails because NDSolve attempts to
> evaluate the function RHS symbolically.
> The second case should remain unevaluated and signal to NDSolve to go
> numerical but this fails why?
>  In the third case a similar check to the second works. Why?
> 
>  Many thanks
>  Hugh Goyder
> 
> ClearAll[RHS];
> RHS[x_, v_, f_] := Module[{x1, y1, x2, y2, x1v, y1v, x2v, y2v},
>   {x1, y1, x2, y2} = x;
>   {x1v, y1v, x2v, y2v} = v;
>   -{{1, 2, 3, 5}, {3, 2, 1, 2}, {5, 7, 1, 1}, {3, 2, 4, 5}}.{x1, y1,
>       x2, y2} + 3 {x1v, y1v, x2v, y2v}
>   ]
> 
> sol = NDSolve[{x''[t] == RHS[x[t], x'[t], 1], x[0] == {-1, 0, 1, 0},
>    x'[0] == {0, 0, 0, 0}}, x, {t, 0, 2}]
> 
> ClearAll[RHS];
> RHS[x_ /; NumericQ[x[[1]]], v_, f_] :=
>  Module[{x1, y1, x2, y2, x1v, y1v, x2v, y2v},
>   {x1, y1, x2, y2} = x;
>   {x1v, y1v, x2v, y2v} = v;
>   -{{1, 2, 3, 5}, {3, 2, 1, 2}, {5, 7, 1, 1}, {3, 2, 4, 5}}.{x1, y1,
>       x2, y2} + 3 {x1v, y1v, x2v, y2v}
>   ]
> 
> sol = NDSolve[{x''[t] == RHS[x[t], x'[t], 1], x[0] == {-1, 0, 1, 0},
>    x'[0] == {0, 0, 0, 0}}, x, {t, 0, 2}]
> 
> ClearAll[RHS];
> RHS[x_ /; Head[x] == List, v_, f_] :=
>  Module[{x1, y1, x2, y2, x1v, y1v, x2v, y2v},
>   {x1, y1, x2, y2} = x;
>   {x1v, y1v, x2v, y2v} = v;
>   -{{1, 2, 3, 5}, {3, 2, 1, 2}, {5, 7, 1, 1}, {3, 2, 4, 5}}.{x1, y1,
>       x2, y2} + 3 {x1v, y1v, x2v, y2v}
>   ]
> 
> sol = NDSolve[{x''[t] == RHS[x[t], x'[t], 1], x[0] == {-1, 0, 1, 0},
>    x'[0] == {0, 0, 0, 0}}, x, {t, 0, 2}]
> 


  • Prev by Date: Re: Mathematica for Behavioral Research?
  • Next by Date: Install problem of Mathematica kernel
  • Previous by thread: NDSolve with Numeric Function
  • Next by thread: Re: NDSolve with Numeric Function