Re: NDSolve, three 2-d order ODE, 6 initial conditions
- To: mathgroup at smc.vnet.net
- Subject: [mg115194] Re: NDSolve, three 2-d order ODE, 6 initial conditions
- From: michael partensky <partensky at gmail.com>
- Date: Tue, 4 Jan 2011 04:23:41 -0500 (EST)
* * *On Mon, Jan 3, 2011 at 2:16 PM, DrMajorBob <btreat1 at austin.rr.com> wrote: * > > Perhaps a call to ndSol with some parameters (known only to you) will cause > an error message... but the statement you posted, as it is, gives NO error > message. > > *Sorry, Bob. The error message came with the evaluation (see below), but it was not sensitive to the choice of parameters. * > That said, it seems to me that {t, t1} needs replacement with something > like {t, t1, t2}, as NDSolve needs lower AND upper limits. > > *By default, {t,t1} = {t,0,t1} (I checked it in Help). However, the later version includes* *tmin, tmax, and the error message was the same. * > {x[t], y[t], z[t]} should be {x, y, z}, since NDSolve will return > InterpolatingFunction results, not symbolic ones. > *Yes, I fixed it. The outcome did not change. * > > Though it's not necessary, I'd also replace D[x[t], {t, 2}] with x''[t], > D[x[t], t] with x'[t], and (D[x[t], t] /. {t -> 0}) with x'[0]. > *I used both. Just thought (apparently it was wrong) that D[ ] is bullet-proof.* *Thanks for the advise.* > > The result is > > ndSol[w_,w0_,w1_,x0_,y0_,z0_,v0x_,v0y_,v0z_,t1_,t2_]:=NDSolve[{-w Sin[t w] > (x^\[Prime])[t]+w Cos[t w] (y^\[Prime])[t]+Cos[t w] > (x^\[Prime]\[Prime])[t]+Sin[t w] (y^\[Prime]\[Prime])[t]==(w-w0) (Sin[t w] > (x^\[Prime])[t]-Cos[t w] (y^\[Prime])[t]),-Sin[t w] > (x^\[Prime]\[Prime])[t]+Cos[t w] (y^\[Prime]\[Prime])[t]==(w-w0) (Cos[t w] > (x^\[Prime])[t]+Sin[t w] (y^\[Prime])[t])+w1 (z^\[Prime])[t],0==w1 (Sin[t w] > (x^\[Prime])[t]-Cos[t w1] > (y^\[Prime])[t]),(x^\[Prime])[0]==v0x,(y^\[Prime])[0]==v0y,(z^\[Prime])[0]==v0z,x[0]==x0,y[0]==y0,z[0]==z0},{x, > y, z},{t,t1,t2}]; > > That will fail if w1 == 0, since it causes one of the equations to be > trivially True, and the equation is unnecessarily complicated when w1 is NOT > zero. > > In case w1 == 0, z is also uncoupled from x and y, and it will be simply > > z[t_] = z0 + v0z t > *Absolutely. This is when the normal (oscillating) magnetic field is absent, and the projection on the stationary field (along the z axis) is conserved. I can not ignore w1. Effectively, this is the normal component of B1 (w1=B1/gamma, denominator being giro-magnetic ratio) rotating with the angular frequency w, and it introduces the resonance (unless I screwed the equations up- will check it later) * > > Hence, we could redefine ndSol as: > > Clear[ndSol] > > ndSol[w_,w0_,0,x0_,y0_,z0_,v0x_,v0y_,v0z_,t1_,t2_]:= > Append[NDSolve[{-w Sin[t w] x'[t]+w Cos[t w] y'[t]+Cos[t w] x''[t]+Sin[t w] > y''[t]==(w-w0) (Sin[t w] x'[t]-Cos[t w] y'[t]),-Sin[t w] x''[t]+Cos[t w] > y''[t]==(w-w0) (Cos[t w] x'[t]+Sin[t w] > y'[t]),x'[0]==v0x,y'[0]==v0y,x[0]==x0,y[0]==y0},{x, y},{t,t1,t2}],z->z0+# > v0z&] > > ndSol[w_,w0_,w1_,x0_,y0_,z0_,v0x_,v0y_,v0z_,t1_,t2_]:=NDSolve[{-w Sin[t w] > x'[t]+w Cos[t w] y'[t]+Cos[t w] x''[t]+Sin[t w] y''[t]==(w-w0) (Sin[t w] > x'[t]-Cos[t w] y'[t]),-Sin[t w] x''[t]+Cos[t w] y''[t]==(w-w0) (Cos[t w] > x'[t]+Sin[t w] y'[t])+w1 (z')[t],0==Sin[t w] x'[t]-Cos[t w1] > y'[t],x'[0]==v0x,y'[0]==v0y,(z')[0]==v0z,x[0]==x0,y[0]==y0,z[0]==z0},{x, y, > z},{t,t1,t2}]; > > *Thanks. * *My last version was * * * *ndSol[w_, w0_, w1_, x0_, y0_, z0_, v0x_, v0y_, v0z_, t1_, t2_] :=* * NDSolve[{Cos[w t ] D[x[t], {t, 2}] + Sin[ w t] D[y[t], {t, 2}] - w Sin[w t] D[x[t], t] + w Cos[w t] D[y[t], t] == (w - w0) ( Sin[w t ] D[x[t], t] - Cos[w t] D[y[t], t]),* * -Sin[w t] D[x[t], {t, 2}] + Cos[w t] D[y[t], {t, 2}] == (w - w0) (Cos[w t] D[x[t], t] + Sin[w t] D[y[t], t]) + w1 D[z[t], t],* * D[z[t], {t, 2}] == w1 (Sin[w t] D[x[t], t] - Cos[w1 t] D[y[t], t]), (D[x[t], t] /. {t -> 0} ) == v0x, (D[y[t], t] /. {t -> 0} ) == v0y, (D[z[t], t] /. {t -> 0}) == v0z, x[0] == x0, y[0] == y0, z[0] == z0 }, {x, y, z}, {t, t1, t2}];* * * * * *I evaluated it in Mathematica 7.0 with the following parameters ndSol[10,10.1,1,0,0,0,1,0,1,0,10]* * * *The message was:* NDSolve::ndnco: The number of constraints (6) (initial conditions) is not equal to the total differential order of the system (5). >> * * *I just heard from Daniel Lichtblau that the message from Mathematica 7.1 was different, and that Mathematica 8. did solve it without troubles. Hence, Daniel suggested that this was a bug.* *I am surprised by encountering a bug so effortlessly. Previously, the errors have always been mine. :) Is it possible that I did introduce and error, but Mathematica 8. is simply more flexible in its defaults (functions are more "overloaded" bla-bla ?). * *What do you think? Btw, I have just installed M. 8 but did not give it a try yet.* * * *Thanks* *Michael* Whether that is solvable for the parameters you'd like to pass, I can't > venture to guess. > > Bobby > > > On Mon, 03 Jan 2011 02:56:52 -0600, michael partensky <partensky at gmail.com> > wrote: > > Hi, group! >> >> An attempt to demonstrate a (restricted) analogy between the Bloch >> (magnetic resonance) equation and the motion equation for a charged >> particle >> in the magnetic field leads to the following equation: >> >> ndSol[w_, w0_, w1_, x0_, y0_, z0_, v0x_, v0y_, v0z_, t1_] := >> NDSolve[{Cos[w t ] D[x[t], {t, 2}] + Sin[ w t] D[y[t], {t, 2}] - w Sin[w >> t] D[x[t], t] + w Cos[w t] D[y[t], t] == (w - w0) ( Sin[w t ] D[x[t], t] - >> Cos[w t] D[y[t], t]), >> -Sin[w t] D[x[t], {t, 2}] + Cos[w t] D[y[t], {t, 2}] == (w - w0) (Cos[w >> t] D[x[t], t] + Sin[w t] D[y[t], t]) + w1 D[z[t], t], >> D[z, {t, 2}] == w1 (Sin[w t] D[x[t], t] - Cos[w1 t] D[y[t], t]), >> (D[x[t], t] /. {t -> 0} ) == v0x, (D[y[t], t] /. {t -> 0} ) == v0y, >> (D[z[t], >> t] /. {t -> 0}) == v0z, x[0] == x0, y[0] == y0, z[0] == z0 }, {x[t], >> y[t], >> z[t]}, {t, t1}]; >> >> Apparently there is an error - u will see the message. Could you please >> help >> catching it? >> Thanks >> Michael Partenskii >> >> >> > > -- > DrMajorBob at yahoo.com >