Re: NDSolve problem with switching equations
- To: mathgroup at smc.vnet.net
- Subject: [mg106181] Re: [mg106163] NDSolve problem with switching equations
- From: DrMajorBob <btreat1 at austin.rr.com>
- Date: Mon, 4 Jan 2010 05:59:40 -0500 (EST)
- References: <201001030842.DAA10093@smc.vnet.net>
- Reply-to: drmajorbob at yahoo.com
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
- References:
- NDSolve problem with switching equations
- From: Haibo Min <haibo.min@gmail.com>
- NDSolve problem with switching equations