MathGroup Archive 2009

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: perturbation methods example from stephen lynch's book?

  • To: mathgroup at
  • Subject: [mg100706] Re: perturbation methods example from stephen lynch's book?
  • From: Simon <simonjtyler at>
  • Date: Thu, 11 Jun 2009 21:40:42 -0400 (EDT)
  • References: <h0nul6$bdd$>

Hi Sean,

Although I haven't looked at Lynch's book before, I wrote some code
recently for Poincare-Lindstedt expansions, so I thought I'd give it a
My P-L program was completely automatic and could, in theory, go to
arbitrary order.  Automating the method of multiple time scales is a
harder proposition (even in the simplified version discussed by
Lynch), as I had to hold Mathematica's hand through some of the
Also, in Lynch's book, he only goes to order x(t)~x0(t, eps t)+O(eps)
-- the removal of the secular terms at O(eps) is used to fix the
coefficients in x0

This is the general DE he was investigating -- init. cond's are x(0)
=a, x'(0)=0:

DE[x_, t_, eps_, f_] := x''[t] + x[t] - eps f[x[t], x'[t]]

Produce the DEs up to O(eps)^2:

DE[x, t, eps, (1 - #1^2) #2 &] /. {x[t] -> x0[t, eps t] + eps x1[t,
eps t], Derivative[n_][x][t] :> D[x0[t, eps t] + eps x1[t, eps t], {t,
ser = Series[% /. f_[t, eps t] :> f[t0, t1], {eps, 0, 1}] // Simplify

Solve the zero'th order DE:

DSolve[ser[[3]][[1]] == 0, x0, {t0, t1}]

The result is equivalent to:

x0Soln = x0 -> (R[#2] Cos[#1 + th[#2]] &);

Only the R(0) and th(0) terms are fixed by the initial conditions --
giving R(0)=a, th(0)=0.
(note that Lych said R(0)=a/2...  I'm not sure why)
The derivatives of R and th are fixed by the removal of secular terms.
Here's the DE of order eps:

Collect[ser[[3]][[2]] /. x0 :> (R[#2] Cos[#1 + th[#2]] &) //
TrigReduce, {Sin[_], Cos[_]}, Simplify]

The resonant terms are removed from the DE by setting the coefficients
of the linear trigonometric terms to zero:

thsoln = DSolve[th'[t1] == 0 && th[0] == 0, th, t1]
Rsoln = DSolve[4 R[t1] - R[t1]^3 - 8 R'[t1] == 0 && R[0] == a, R, t1]
[[2]] // FullSimplify

Then we get Lynch's final result for x0:

x0[t1, t2] /. x0Soln /. Rsoln /. thsoln

I'm sorry I haven't got anything more elegant for this...

I think there are a couple of typos in the examples 7 and 9...  did
you also spot them?

PPS Lynch's code for example 8 works fine.
Dt is a total derivative...  it assumes everything is a dependent
variable unless told otherwise - thus his earlier declaration

  • Prev by Date: Re: Re: RandomReal gets stuck
  • Next by Date: Re: Re: differentiation operator
  • Previous by thread: Re: perturbation methods example from stephen lynch's book?
  • Next by thread: Re: perturbation methods example from stephen lynch's book?