MathGroup Archive 2003

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

Search the Archive

Re: NDSolve, delta functions, strategy and speed

  • To: mathgroup at smc.vnet.net
  • Subject: [mg42795] Re: NDSolve, delta functions, strategy and speed
  • From: "Kevin J. McCann" <KevinMcCann!kjm at uunet.uu.net>
  • Date: Wed, 30 Jul 2003 04:07:21 -0400 (EDT)
  • References: <bfrk9s$rfc$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

I am not sure how to speed this up; however, I think you should replace

res = {res,{x0,v0}}

with

AppendTo[res,{x0,v0}]

The former leads to some kind of weird recursive result.

Cheers,

Kevin

"Goyder Dr HGD" <H.Goyder at rmcs.cranfield.ac.uk> wrote in message
news:bfrk9s$rfc$1 at smc.vnet.net...
> Dear MathGroup,
>
> I am applying a sequence of random delta functions to a system. The delta
> functions are applied periodically with a period of ts.
> I use NDSolve to work out the response following each delta function,
> determine the final conditions, modify them by adding the delta function
and
> then reuse them as initial conditions for the next period.
>
> Here are the random amplitudes for the delta function
>
> ii = 10000; ts = 0.001;
> ran = Table[Random[] - 0.5, {i, ii}];
>
> and this is my solution for a simple test case.
>
> Timing[
>   {x0, v0} = {0, ran[[1]]};
>   res = {{x0, v0}};
>   Do[ {x0, v0} = {x[ts], v[ts]} /. First[NDSolve[
>             {x'[t] == v[t], v'[t] == -0.1
>       Pi v[t] - 4Pi^2  (x[t] + 10 x[t]^3), x[0] == x0, v[0] == v0},
>             {x, v}, {t, 0, ts}]];
>     v0 = v0 + ran[[i]]; res = {res, {x0, v0}}, {i, 2, ii}]]
>
> This works but is slow. Are there better methods?
>
> Thanks
>
> Hugh Goyder
>
>



  • Prev by Date: Correlated Beta Variables
  • Next by Date: Integrate Result depends on symbol used
  • Previous by thread: NDSolve, delta functions, strategy and speed
  • Next by thread: Re: DOUBLE COLUMN TEXT CELL