Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

I'm trying to plot a phase portrait for the differential equation $$x'' - (1 - x^2) x' + x = 0.5 \cos(1.1 t)\,.$$ The primes are derivatives with respect to $t$. I've reduced this second order ODE to two first order ODEs of the form $ x_1' = x_2$ and $x_2' - (1 - x_1^2) x_2 + x_1 = 0.5 \cos(1.1 t)$. Now I wish to use mathematica to plot a phase portrait. Unfortunately, I'm unsure of how to do this because of the dependence of the second equation on an explicit $t$.

Thanks.

share|improve this question
1  
Have a look at ParametricPlot. –  b.gatessucks Nov 5 '12 at 18:42
1  
you could look at this as well? mathematica.stackexchange.com/questions/14027/… –  chris Nov 5 '12 at 18:43
    
Chris, this is much to complicated for me. I'm a huge mathematica newb. Could you explain more precisely? –  covertbob Nov 5 '12 at 18:46
4  
@covertbob If you're that new to Mathematica, then I suggest going through some tutorials and using the virtual book. Also see this answer for some introductory materials. Unfortunately, this site is not the place to learn Mathematica step-by-step from scratch. For starters, you can look at the code in the answer Chris linked to, and use the documentation center to read up on the functions used (e.g., NDSolve, ParametricPlot, StreamPlot, etc.) Just the first two should be sufficient for you to make headway on your problem. –  rm -rf Nov 5 '12 at 18:55
    
Not an answer to your question - just a bunch of pretty phase portrait pictures - see drorbn.net/AcademicPensieve/Classes/12-267/…. The Mathematica notebook that produced the picture is linked at the bottom of that URL. –  Dror Bar-Natan Nov 8 '12 at 22:07
add comment

3 Answers 3

up vote 21 down vote accepted

The EquationTrekker package is a great package for plotting and exploring phase space

<< EquationTrekker`
EquationTrekker[x''[t] - (1 - x[t]^2) x'[t] + x[t] == 0.5 Cos[1.1 t], x[t], {t, 0, 10}]

This brings up a window where you can right click on any point and it plots the trajectory starting with that initial condition:

enter image description here

You can do more as well, such as add parameters to your equations and see what happens to the trajectories as you vary them:

 EquationTrekker[x''[t] - (1 - x[t]^2) x'[t] + x[t] == a Cos[\[Omega] t],
                 x[t], {t, 0, 10}, TrekParameters -> {a -> 0.5, \[Omega] -> 1.1}
                ]

enter image description here

share|improve this answer
add comment

again just a slight modification from the documentation

splot = StreamPlot[{y, (1 - x^2) y - x}, {x, -4, 4}, {y, -3, 3}, 
   StreamColorFunction -> "Rainbow"];
Manipulate[
 Show[splot, 
  ParametricPlot[
   Evaluate[
    First[{x[t], y[t]} /. 
      NDSolve[{x'[t] == y[t], 
        y'[t] == y[t] (1 - x[t]^2) - x[t] + 0.5 Cos[1.1 t], 
        Thread[{x[0], y[0]} == point]}, {x, y}, {t, 0, T}]]], {t, 0, 
    T}, PlotStyle -> Red]], {{T, 20}, 1, 100}, {{point, {3, 0}}, 
  Locator}, SaveDefinitions -> True]

Mathematica graphics

Or just to show off (again a rip off from the documentation)

splot = LineIntegralConvolutionPlot[{{y, (1 - x^2) y - x}, {"noise", 
     1000, 1000}}, {x, -4, 4}, {y, -3, 3}, 
   ColorFunction -> "BeachColors", LightingAngle -> 0, 
   LineIntegralConvolutionScale -> 3, Frame -> False];
Manipulate[
 Show[splot, 
  ParametricPlot[
   Evaluate[
    First[{x[t], y[t]} /. 
      NDSolve[{x'[t] == y[t], y'[t] == y[t] (1 - x[t]^2) - x[t]+0.5 Cos[1.1 t], 
        Thread[{x[0], y[0]} == point]}, {x, y}, {t, 0, T}]]], {t, 0, 
    T}, PlotStyle -> White]], {{T, 20}, 1, 100}, {{point, {3, 0}}, 
  Locator}, SaveDefinitions -> True]

Mathematica graphics

share|improve this answer
    
Just a question. Is it right, that StreamPlot[{v1[x,y],v2[x,y]}] returns a set of solutions of the differential equations x'=v1; y'=v2? It looks like an elementary information that everybody knows. But it happened that I do not know, and there is no explicit discussion of this point in the Help/StreamPlot. Please let me know. Where could I have a look at the proof, or at least, an explanation? If I understand right, the StreamPlot simply yields the phase portrait, does it? –  Alexei Boulbitch Nov 6 '12 at 10:51
    
@AlexeiBoulbitch yes it yields a set of solutions for the homogenous set of equations. But it does not attempt to be continuous. In the previous example if you remove + 0.5 Cos[1.1 t] you will see that the red curve and the underlying flow become identical. –  chris Nov 7 '12 at 17:48
    
Thank you very much. –  Alexei Boulbitch Nov 8 '12 at 10:52
add comment

You can solve the equation with (you might want to change the initial conditions) :

sol[t_] =  NDSolve[{x''[t] - (1 - x[t]^2) x'[t] + x[t] == 0.5 Cos[1.1 t], 
   x[0] == 0, x'[0] == 1}, x[t], {t, 0, 10}][[1, 1, 2]]

Now you can use the solution as any other function; in particular, you can plot it versus its derivative :

ParametricPlot[{sol[t], sol'[t]}, {t, 0, 10}]

enter image description here

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.