       Re: Getting the value of the independent var from the dep.var using NDSolve

• To: mathgroup at smc.vnet.net
• Subject: [mg64085] Re: Getting the value of the independent var from the dep.var using NDSolve
• From: marks at wolfram.com
• Date: Wed, 1 Feb 2006 04:34:16 -0500 (EST)
• References: <dptd4r\$be\$1@smc.vnet.net><dqsohb\$bui\$1@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```An event is located when a change in sign in the event function
is detected. For the function Sin[x] - 1, the sign is practically
always negative and the chance of hitting zero is infinitessimal.

You can construct an appropriate event function by looking for
a turning point by considering:

D[Sin[x] - 1, x]

Then it is possible to use the Direction option to restrict the
detection to points corresponding to a maximum:

In:=
NDSolve[{y'[x] == Cos[x], y == 0}, y, {x, 0, 20},
Method -> {EventLocator, "Event" -> Cos[x],
"EventAction" :> Sow[x], "Direction" -> -1}] // Reap

Out= {{{y -> InterpolatingFunction[{{0., 20.}}, <>]}},

>    {{1.5708, 7.85398, 14.1372}}}

Mark Sofroniou,
Research and Development,
Wolfram Research.

Borut Levart wrote:
> Commenting on the last comment, I would like to say:
> - what a nice differential-equation platform NDSolve is,
> - and that the above example fails to find the peaks of Sin[x]:
>
> NDSolve[
>     {
>       y'[x] == Cos[x],
>       y == 0}, y, {x, 0, 20},
>     Method -> {
>         "EventLocator",
>         "Event" -> y[x] - 1,
>         "EventAction" :> Sow[x]
>         }
>     ] // Reap
>
> Why is that?
> I guess the solver steps over the event, which in turn is not noticed.
> But could any algorithm not miss that?

```

• Prev by Date: Re: How to get range of InterpolatingFunction?
• Next by Date: String Input and Variable Setting
• Previous by thread: Re: How to get range of InterpolatingFunction?
• Next by thread: String Input and Variable Setting