(*Phase Plane Plot of the Van der Pol Differential Equation
by Nasser M. Abbasi
April 12 2009
*)
Manipulate[process[\[Lambda], k, pt],
 Row[{Control[ {{\[Lambda], .2, Style["\[Lambda]"]}, 0, 2, .1, Appearance -> "Labeled", ImageSize -> Normal}],
   Control[{{k, 1, Style["k", Italic]}, .1, 3, .1, Appearance -> "Labeled", ImageSize -> Normal}] }],
 {{pt, {1, 3}}, {-5, -5}, {5, 5}, ControlType -> Locator},
 ControlPlacement -> {Top},
 
 Initialization :> {
   process[\[Lambda]_, k_, pt_] := 
    Module[{eq, x, t, tmax = 100, sol, paramPlot, solPlot, vData, x0, v0, lableSize = 14, initialConditionsString},
     eq = x''[t] - \[Lambda] (1 - x[t]^2) x'[t] + k x[t] == 0;
     sol = First[NDSolve[{eq, x[0] == pt[[1]], x'[0] == pt[[2]]}, x, {t, 0, tmax}]];
     
     initialConditionsString = 
      Style[Row[{Style["x", Italic], "(0) = ", NumberForm[pt[[1]], {3, 2}, NumberSigns -> {"-", "+"}], "   ", Style["x", Italic]', 
         "(0) = ", NumberForm[pt[[2]], {3, 2}, NumberSigns -> {"-", "+"}]
         }], lableSize, TextAlignment -> Center];
     
     paramPlot = ParametricPlot[Evaluate[{x[t], x'[t]} /. sol], {t, 0, tmax},
       AspectRatio -> Automatic,
       PlotRange -> {{-5, 5}, {-5, 5}},
       PlotPoints -> 100,
       Frame -> True,
       FrameLabel -> { 
         {Style[Row[{Style["x", Italic]', "(", Style["t", Italic], ")"}], lableSize], 
          None}, {Style[Row[{Style["x", Italic], "(", Style["t", Italic], ")"}], lableSize], 
          Column[ { Style["phase plane plot", lableSize], initialConditionsString
            }, Alignment -> Center]}},
       ImageSize -> {270, 220},
       ImagePadding -> 40,
       PlotStyle -> Red];
     
     solPlot = Plot[Evaluate[x[t] /. sol], {t, 0, tmax},
       PlotRange -> All,
       FrameLabel -> {
         {Style[Row[{Style["x", Italic], "(", Style["t", Italic], ")"}], lableSize], None},
         {Style["time", lableSize], Style[Row[{Style["x", Italic], "(", Style["t", Italic], ") versus time"}], lableSize]}},
       AspectRatio -> 1,
       Frame -> True,
       ImageSize -> {270, 220},
       ImagePadding -> 40,
       PlotStyle -> Red];
     
     Grid[{ {paramPlot, solPlot }}, Frame -> None, Spacings -> 0]
     ]}
 ]