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