Re: NDSolve problem with switching equations

• To: mathgroup at smc.vnet.net
• Subject: [mg106183] Re: [mg106163] NDSolve problem with switching equations
• From: Haibo Min <haibo.min at gmail.com>
• Date: Mon, 4 Jan 2010 06:00:04 -0500 (EST)
• References: <201001030842.DAA10093@smc.vnet.net>

```Thank you very much, Bobby. I think it is really a brilliant solution. As
for the slow plotting in the second case, I think it is due to your second
explanation (Plot is working hard to identify features).

Best regards,

Haibo

On Mon, Jan 4, 2010 at 9:08 AM, DrMajorBob <btreat1 at austin.rr.com> wrote:

> First, we need a square wave of amplitude one, zero up to 0.5, 0 from .05
> to 1.0, with period 1.
>
> The following will do well enough:
>
> Plot[UnitStep@Sin[2 Pi t], {t, 0, 2}]
>
> So here's a solution with NDSolve:
>
> Clear[y1, y2]
> eqns = {y1'[t] == y2[t],
>   y2'[t] == 1000 (1 - y1[t]^2) (y2[t] - y1[t] UnitStep@Sin[2 Pi t]),
>
>   y1[0] == 0, y2[0] == 1};
> errors = Take[eqns, 2] /. Equal -> Subtract;
> {y1, y2} = {y1, y2} /. First@
>    NDSolve[eqns, {y1, y2}, {t, 0, 2}];
> Plot[{y1@t, y2@t}, {t, 0, 1}, AxesOrigin -> {0, 2},
>  PlotStyle -> {Red, Blue}]
>
> Accuracy is good for most of the graph:
>
> Plot[Norm@errors, {t, .015, 2}, PlotRange -> All]
>
> But not all:
>
> Plot[Norm@errors, {t, 0, .015}, PlotRange -> All]
>
> (Very interesting plots!)
>
> Increasing WorkingPrecision works well:
>
> Clear[y1, y2]
> eqns = {y1'[t] == y2[t],
>   y2'[t] == 1000 (1 - y1[t]^2) (y2[t] - y1[t] UnitStep@Sin[2 Pi t]),
>
>   y1[0] == 0, y2[0] == 1};
> errors = Take[eqns, 2] /. Equal -> Subtract;
> {y1, y2} = {y1, y2} /. First@
>    NDSolve[eqns, {y1, y2}, {t, 0, 1}, WorkingPrecision -> 40];
> Plot[{y1@t, y2@t}, {t, 0, 1}, AxesOrigin -> {0, 1},
>  PlotStyle -> {Red, Blue}]
>
> Do the error plots again, and you'll find they're very slow.
>
> ecause the interpolations involve a lot of points? Because Plot is working
> hard to identify features?
>
> I'm not sure.
>
> Bobby
>
>
> On Sun, 03 Jan 2010 02:42:43 -0600, Haibo Min <haibo.min at gmail.com> wrote:
>
> Hello, everyone.
>>
>> I am trying to solve a switching ND problem using NDSolve. Specifically,
>> suppose the system equation is
>>
>> y1'[t]==y2;
>> y2'[t]==1000(1-y1^2)y2-y1;
>>
>> y1(0)==0;y2(0)==1;
>>
>> Then every half a second (0.5s), the system equation transforms to
>>
>>  y1'[t]==y2;
>> y2'[t]==1000(1+y1^2)y2;
>>
>> and then, after 0.5s, it transforms back again.
>>
>> How to address this problem?
>>
>> Thank you!
>>
>> haibo
>>
>>
>
> --
> DrMajorBob at yahoo.com
>

```

• Prev by Date: Re: NDSolve problem with switching equations
• Next by Date: Re: Re: More /.{I->-1} craziness
• Previous by thread: Re: NDSolve problem with switching equations
• Next by thread: Re: Re: NDSolve problem with switching