Phase Plane Analysis of Linear Differential Equations

Description of behavior from coefficients of linear expansion about fixed point

Write a set of function that predict the behavior of the system  (dOverscript[y, →])/(d t)= (

a b
c d
) Overscript[y, →] for real matrices.

Note: This is a first-order ODE with constant coefficients. Its solution will be a sum of two exponential functions with the form ^λt. The characteristics of the system of two equations are determined by the eigenvalues and eigenvectors of the matrix of coefficients, as detailed by the analysis and examples presented below.

Note that the eigenvalues are either real or they are complex conjugates (i.e., the eigenvalues are the solutions to  the quadratic equation)

Here is a function to print out a warning if the eigenvalues are inconsistent with a real coefficient matrix:

In[54]:=

EigenConsistency[eval1_, eval2_] := If[And[And[Im[eval1] ≠0, Im[eval2] ≠ 0], Conjugate[eval1] ≠ eval2], Print["Coefficients are not real"]]

Here is a function that prints out information about stability based on the eigenvalues:

In[55]:=

Here is a function that prints out information about the type of fixed point:

In[56]:=

Here is a function that collects our other functions

In[57]:=

EigenDescription[eval1_, eval2_] := Module[{}, EigenConsistency[eval1, eval2] ; EigenStability[eval1, eval2] ; EigenTrajectory[eval1, eval2]]

In[58]:=

EigenDescription[ -1 + , -1 - ]

Stable and Attractive

Circulation

In[59]:=

EigenConsistency[1 + , 1]

Here is a function that prints out information about the direction of the eigenvectors

In[60]:=

Here is a function that uses the coefficients to collect and print the physical information about the fixed point

In[61]:=

In[62]:=

LinearDescription[1, .1, 1, -3]

Unstable

Saddle

Eigenvalues =  -3.02485 and 1.02485

Stable (λ= -3.02485) direction is θ = 91.4233

Unstable (λ=1.02485) direction is θ = 13.953

Out[62]=

{{-3.02485, 1.02485}, {{-0.024838, 0.999691}, {0.970494, 0.241126}}}

Visualization of Trajectories near Fixed Points in the Plane

Functions to find the solutions for input coefficients (first one for specified initial point; the second one for initial points picked randomly

In[63]:=

LinSol[a_, b_ , c_ , d_  , xo_ , yo_] :=  {x[t], p[t]}/.Flatten[DSolve[{x '[t] == a x[t] + b p[t], p '[t] == c x[t] + d p[t], x[0] == xo, p[0] ==   yo}, {x[t], p[t]}, t]]

In[64]:=

In[65]:=

LinSol[3, 2, -3, 2]

Out[65]=

{4.28481 ^(5 t/2) Cos[(23^(1/2) t)/2] - 6.11739 ^(5 t/2) Sin[(23^(1/2) t)/2], -8.4057 ^(5 t/2) Cos[(23^(1/2) t)/2] - 3.60796 ^(5 t/2) Sin[(23^(1/2) t)/2]}

Example of a plot for a single directory

In[66]:=

CritPointPlot[a_, b_ , c_ , d_ ] := ParametricPlot[Evaluate[LinSol[a, b, c, d]], {t, 0, 20}, PlotRange→ {{-15, 15}, {-15, 15}}]

In[67]:=

CritPointPlot[-1, -.2, 1, -2]

[Graphics:HTMLFiles/Lecture-25_27.gif]

Out[67]=

-Graphics -

This is not terribly informative.  Construct a function that takes input and plots many paths with arrows that describe the trajectory.  Print out physical interpretations as well.  Supply an argument with  a default definition that indicates the number of trajectories to plot.

In[68]:=

<<Graphics`Arrow`

In[69]:=

General :: spell1 : Possible spelling error: new symbol name \"rstack\" is similar to existing symbol \"gstack\".  More…

General :: spell : Possible spelling error: new symbol name \"lstack\" is similar to existing symbols  {gstack, rstack} .  More…

General :: spell1 : Possible spelling error: new symbol name \"lstackmag\" is similar to existing symbol \"rstackmag\".  More…

In this first example, the eigenvalues are real and negative, and the system of equations has a stable, attractive node. The eigenvectors are real and correspond to directions along which the system will evolve along a straight trajectory.

In[70]:=

CritPointPlotPointsMany[-1, 0.25, 0.75, -1]

Stable and Attractive

Node

Eigenvalues =  -1.43301 and  -0.566987

Stable (λ= -1.43301) direction is θ = 120.

Stable (λ= -0.566987) direction is θ = 60.

{{-1.43301, -0.566987}, {{-0.5, 0.866025}, {0.5, 0.866025}}}

[Graphics:HTMLFiles/Lecture-25_41.gif]

Out[70]=

-GraphicsArray -

In this next example, the eigenvalues are real and positive, and the system of equations has an unstable node. The eigenvectors are real and correspond to directions along which the system will evolve along a straight trajectory.

In[71]:=

CritPointPlotPointsMany[1.25, -0.25, -0.75, 0.75, 200]

Unstable

Node

Eigenvalues = 1.5 and 0.5

Unstable (λ=1.5) direction is θ =  -45.

Unstable (λ=0.5) direction is θ = 71.5651

{{1.5, 0.5}, {{0.707107, -0.707107}, {0.316228, 0.948683}}}

[Graphics:HTMLFiles/Lecture-25_50.gif]

Out[71]=

-GraphicsArray -

In this next example, the eigenvalues are real and of opposite sign, and the system of equations has an unstable saddle point. The eigenvectors are real and correspond to directions along which the system will evolve along a straight trajectory.

In[72]:=

CritPointPlotPointsMany[1.25, 0.25, 0.75, -1.75, 200]

Unstable

Saddle

Eigenvalues =  -1.81125 and 1.31125

Stable (λ= -1.81125) direction is θ = 94.6688

Unstable (λ=1.31125) direction is θ = 13.7662

{{-1.81125, 1.31125}, {{-0.081395, 0.996682}, {0.971275, 0.23796}}}

[Graphics:HTMLFiles/Lecture-25_59.gif]

Out[72]=

-GraphicsArray -

In this next example, the eigenvalues are complex, with a positive real part, and the system of equations has an unstable circulation pattern. The eigenvectors are complex and and there are no directions along which the system will evolve along a straight trajectory.

In[73]:=

CritPointPlotPointsMany[-0.25, -2., 3, 1.5]

Unstable

Circulation

Eigenvalues = 0.625 + 2.28788  and 0.625 - 2.28788 

{{0.625 + 2.28788 , 0.625 - 2.28788 }, {{-0.225924 + 0.590727 , 0.774597 + 0. }, {-0.225924 - 0.590727 , 0.774597 + 0. }}}

[Graphics:HTMLFiles/Lecture-25_66.gif]

Out[73]=

-GraphicsArray -

In this next example, the eigenvalues are complex, with a negative real part, and the system of equations has an stable, attractive circulation pattern. The eigenvectors are complex and and there are no directions along which the system will evolve along a straight trajectory.

In[74]:=

CritPointPlotPointsMany[-0.25, -2., 2, -1.5]

Stable and Attractive

Circulation

Eigenvalues =  -0.875 + 1.89984  and  -0.875 - 1.89984 

{{-0.875 + 1.89984 , -0.875 - 1.89984 }, {{0.220971 + 0.671693 , 0.707107 + 0. }, {0.220971 - 0.671693 , 0.707107 + 0. }}}

[Graphics:HTMLFiles/Lecture-25_73.gif]

Out[74]=

-GraphicsArray -

In this final example, the eigenvalues are pure imaginary, and the system of equations exhibit stable orbits around a fixed point. The eigenvectors are complex and and there are no directions along which the system will evolve along a straight trajectory.

In[75]:=

CritPointPlotPointsMany[-0.25, -2., 2, 0.25]

Stable Orbits about Fixed Point

Circulation

Eigenvalues = 1.98431  and  -1.98431 

{{-4.31614*10^-17 + 1.98431 , -4.31614*10^-17 - 1.98431 }, {{0.707107 + 0. , -0.0883883 - 0.701561 }, {0.707107 + 0. , -0.0883883 + 0.701561 }}}

[Graphics:HTMLFiles/Lecture-25_80.gif]

Out[75]=

-GraphicsArray -


Created by Mathematica  (November 21, 2005) Valid XHTML 1.1!