Phase Plane for 2×2 Systems of Linear Differential Equations

The Phase Plane refers to the (Subscript[x, 1])(Subscript[x, 2])- plane that solutions exist in.

Much of this is discussed in Section 10.4, 10.5, 10.6 of the text under the sections Geometric Properties.

Asymptotic means in the long time limit, as t->∞.

We are classifying the origin, ((Subscript[x, 1]),(Subscript[x, 2]))=(0,0), as a saddle point, node, spiral point, etc.

The classification is based on the eigenvalues (and eigenvectors for the repeated case) of the matrix A.

The only solution which passes through the origin at finite time is the zero solution.

The solutions do not cross each other (each point in the plane has exactly one solution passing through it).

Real Distinct Eigenvalues

Eigenvalues are both positive: Unstable Node

Here is a constant coefficient matrix, and we wish to solve x'=A x (we will use Mathematica to get the eigenvalues and eigenvectors for us):

A={{1,1},{0,1/4}};
MatrixForm[A]
esol=Eigensystem[A]

Therefore, two solutions are:

sol1[t_]=esol[[2,1]]Exp[esol[[1,1]]t];
sol2[t_]=esol[[2,2]]Exp[esol[[1,2]]t];
MatrixForm[sol1[t]]
MatrixForm[sol2[t]]

We can plot the vector field, even without knowing the form of the solution:

field=VectorPlot[A.{x1,x2},{x1,-3,3},{x2,-3,3},ImageSize->{500,Automatic},FrameLabel->{"(Subscript[x, 1])","(Subscript[x, 2])"},VectorScale->{Tiny,Small,None},StreamPoints->10,StreamStyle->{Orange,Thick},BaseStyle->20,Axes->True]

We can plot the two solutions from our fundamental set of solutions (x^((1)))(t) and (x^((2)))(t), and a sample linear combination:

c1 = -1;
c2 = -3/2;

plt1=ParametricPlot[{sol1[t],sol2[t],c1*sol1[t]+c2*sol2[t]},{t,-20,5},PlotPoints->40,PlotStyle->{{Red,Thick},{Blue,Thick},{Darker[Green],Thick}}];

fin1=Show[field,plt1,FrameLabel->None,FrameTicks->None,ImageSize->{500,Automatic},PlotRange->{{-3,3},{-3,3}}]

In this situation, the origin is an ustable node, since both of the fundamental solutions move away from the origin.

Both the solutions from the fundamental set of solutions approach infinity as  t->∞.  All solutions approach infinity as t->∞.

Eigenvalues are both negative: Asymptotically Stable Node

Here is a constant coefficient matrix, and we wish to solve x'=A x (we will use Mathematica to get the eigenvalues and eigenvectors for us):

A={{-1,-1},{0,-1/4}};
MatrixForm[A]
esol=Eigensystem[A]

Therefore, two solutions are:

sol1[t_]=esol[[2,1]]Exp[esol[[1,1]]t];
sol2[t_]=esol[[2,2]]Exp[esol[[1,2]]t];
MatrixForm[sol1[t]]
MatrixForm[sol2[t]]

We can plot the vector field, even without knowing the form of the solution:

field=VectorPlot[A.{x1,x2},{x1,-3,3},{x2,-3,3},ImageSize->{500,Automatic},FrameLabel->{"(Subscript[x, 1])","(Subscript[x, 2])"},VectorScale->{Tiny,Small,None},StreamPoints->10,StreamStyle->{Orange,Thick},BaseStyle->20,Axes->True]

We can plot the two solutions from our fundamental set of solutions (x^((1)))(t) and (x^((2)))(t), and a sample linear combination:

c1 = -1;
c2 = -3/2;

plt1=ParametricPlot[{sol1[t],sol2[t],c1*sol1[t]+c2*sol2[t]},{t,-10,20},PlotPoints->40,PlotStyle->{{Red,Thick},{Blue,Thick},{Darker[Green],Thick}}];

fin2=Show[field,plt1,FrameLabel->None,FrameTicks->None,ImageSize->{500,Automatic},PlotRange->{{-3,3},{-3,3}}]

In this situation, the origin is a stable node, since both of the fundamental solutions moves towards the origin. The eigenvalues were both real and negative in this case.

Eigenvalues have opposite signs: Saddle Point

Here is a constant coefficient matrix, and we wish to solve x'=A x (we will use Mathematica to get the eigenvalues and eigenvectors for us):

A={{1,1},{4,1}};
MatrixForm[A]
esol=Eigensystem[A]

Therefore, two solutions are:

sol1[t_]=esol[[2,1]]Exp[esol[[1,1]]t];
sol2[t_]=esol[[2,2]]Exp[esol[[1,2]]t];
MatrixForm[sol1[t]]
MatrixForm[sol2[t]]

We can plot the vector field, even without knowing the form of the solution:

field=VectorPlot[A.{x1,x2},{x1,-3,3},{x2,-3,3},ImageSize->{500,Automatic},FrameLabel->{"(Subscript[x, 1])","(Subscript[x, 2])"},VectorScale->{Tiny,Small,None},StreamPoints->10,StreamStyle->{Orange,Thick},BaseStyle->20,Axes->True]

We can plot the two solutions from our fundamental set of solutions (x^((1)))(t) and (x^((2)))(t), and a sample linear combination:

c1 = -0.01;
c2 = 3;

plt1=ParametricPlot[{sol1[t],sol2[t],c1*sol1[t]+c2*sol2[t]},{t,-5,5},PlotPoints->40,PlotStyle->{{Red,Thick},{Blue,Thick},{Darker[Green],Thick}}];

fin3=Show[field,plt1,FrameLabel->None,FrameTicks->None,ImageSize->{500,Automatic},PlotRange->{{-3,3},{-3,3}}]

In this situation, the origin is a saddle point, since one of the fundamental solutions moves towards the origin and the other moves away from the origin. The eigenvalues were real valued and had opposite sign.

One of the solutions from the fundamental set of solutions approaches the origin as  t->∞, the other solution moves away from the origin as t->∞.   Other than the one solution which approaches the origin as t->∞, all other solutions approach infinity as t->∞.

Complex Eigenvalues

Real part is greater than zero: Unstable Spiral Point

Here is a constant coefficient matrix, and we wish to solve x'=A x (we will use Mathematica to get the eigenvalues and eigenvectors for us):

A={{3,-2},{4,-1}};
MatrixForm[A]
esol=Eigensystem[A]

Therefore, two solutions are:

sol1[t_]=esol[[2,1]]Exp[esol[[1,1]]t];
sol2[t_]=esol[[2,2]]Exp[esol[[1,2]]t];
MatrixForm[sol1[t]]
MatrixForm[sol2[t]]

Here is how Mathematica can expand the complex solution for us so we can get two real valued solutions:

expand1=ComplexExpand[sol1[t]]//MatrixForm

We need real valued solutions, so we get that through taking real and imaginary parts:

sol1[t_]={1/2 Exp[t]Cos[2t]-1/2Exp[t]Sin[2t],Exp[t]Cos[2t]};
sol2[t_]={1/2Exp[t]Cos[2t]+1/2Exp[t]Sin[2t],Exp[t]Sin[2t]};
MatrixForm[sol1[t]]
MatrixForm[sol2[t]]

We can plot the vector field, even without knowing the form of the solution:

field=VectorPlot[A.{x1,x2},{x1,-3,3},{x2,-3,3},ImageSize->{500,Automatic},FrameLabel->{"(Subscript[x, 1])","(Subscript[x, 2])"},VectorScale->{Tiny,Small,None},StreamPoints->10,StreamStyle->{Orange,Thick},BaseStyle->20,Axes->True]

We can plot the two solutions from our fundamental set of solutions (x^((1)))(t) and (x^((2)))(t), and a sample linear combination:

c1 = -1;
c2 = -3/2;

plt1=ParametricPlot[{sol1[t],sol2[t],c1*sol1[t]+c2*sol2[t]},{t,-20,5},PlotPoints->40,PlotStyle->{{Red,Thick},{Blue,Thick},{Darker[Green],Thick}}];

fin4=Show[field,plt1,FrameLabel->None,FrameTicks->None,ImageSize->{500,Automatic},PlotRange->{{-3,3},{-3,3}}]

In this situation, the origin is an unstable spiral point, since both of the fundamental solutions move away from the origin.

Both the solutions from the fundamental set of solutions approach infinity as  t->∞. All solutions spiral about the origin. All solutions approach infinity as t->∞.

Real part is less than zero: Asymptotically Stable Spiral Point

Here is a constant coefficient matrix, and we wish to solve x'=A x (we will use Mathematica to get the eigenvalues and eigenvectors for us):

A={{-1,-2},{2,-1}};
MatrixForm[A]
esol=Eigensystem[A]

Therefore, two solutions are:

sol1[t_]=esol[[2,1]]Exp[esol[[1,1]]t];
sol2[t_]=esol[[2,2]]Exp[esol[[1,2]]t];
MatrixForm[sol1[t]]
MatrixForm[sol2[t]]

Here is how Mathematica can expand the complex solution for us so we can get two real valued solutions:

expand1=ComplexExpand[sol1[t]]//MatrixForm

We need real valued solutions, so we get that through taking real and imaginary parts:

sol1[t_]={-Exp[-t]Sin[2t],Exp[-t]Cos[2t]};
sol2[t_]={Exp[-t]Cos[2t],Exp[-t]Sin[2t]};
MatrixForm[sol1[t]]
MatrixForm[sol2[t]]

We can plot the vector field, even without knowing the form of the solution:

field=VectorPlot[A.{x1,x2},{x1,-3,3},{x2,-3,3},ImageSize->{500,Automatic},FrameLabel->{"(Subscript[x, 1])","(Subscript[x, 2])"},VectorScale->{Tiny,Small,None},StreamPoints->10,StreamStyle->{Orange,Thick},BaseStyle->20,Axes->True]

We can plot the two solutions from our fundamental set of solutions (x^((1)))(t) and (x^((2)))(t), and a sample linear combination:

c1 = -1;
c2 = -3/2;

plt1=ParametricPlot[{sol1[t],sol2[t],c1*sol1[t]+c2*sol2[t]},{t,-20,5},PlotPoints->40,PlotStyle->{{Red,Thick},{Blue,Thick},{Darker[Green],Thick}}];

fin5=Show[field,plt1,FrameLabel->None,FrameTicks->None,ImageSize->{500,Automatic},PlotRange->{{-3,3},{-3,3}}]

In this situation, the origin is an stable spiral point, since both of the fundamental solutions move towards the origin.

Both the solutions from the fundamental set of solutions approach the origin as  t->∞. All solutions spiral about the origin. All solutions approach the origin as t->∞.

Real part is equal to zero: Stable Center

Here is a constant coefficient matrix, and we wish to solve x'=A x (we will use Mathematica to get the eigenvalues and eigenvectors for us):

A={{2,-5},{1,-2}};
MatrixForm[A]
esol=Eigensystem[A]

Therefore, two solutions are:

sol1[t_]=esol[[2,1]]Exp[esol[[1,1]]t];
sol2[t_]=esol[[2,2]]Exp[esol[[1,2]]t];
MatrixForm[sol1[t]]
MatrixForm[sol2[t]]

Here is how Mathematica can expand the complex solution for us so we can get two real valued solutions:

expand1=ComplexExpand[sol1[t]]//MatrixForm

We need real valued solutions, so we get that through taking real and imaginary parts:

sol1[t_]={2Cos[t]-Sin[t],Cos[t]};
sol2[t_]={Cos[t]+2Sin[t],Sin[t]};
MatrixForm[sol1[t]]
MatrixForm[sol2[t]]

We can plot the vector field, even without knowing the form of the solution:

field=VectorPlot[A.{x1,x2},{x1,-3,3},{x2,-3,3},ImageSize->{500,Automatic},FrameLabel->{"(Subscript[x, 1])","(Subscript[x, 2])"},VectorScale->{Tiny,Small,None},VectorPoints->20,StreamPoints->20,StreamStyle->{Orange,Thick},BaseStyle->20,Axes->True]

We can plot the two solutions from our fundamental set of solutions (x^((1)))(t) and (x^((2)))(t), and a sample linear combination:

c1 = -1;
c2 = -11/10;

plt1=ParametricPlot[{sol1[t],sol2[t],c1*sol1[t]+c2*sol2[t]},{t,-20,5},PlotPoints->40,PlotStyle->{{Red,Thick},{Blue,Thick},{Darker[Green],Thick}}];

fin6=Show[field,plt1,FrameLabel->None,FrameTicks->None,ImageSize->{500,Automatic},PlotRange->{{-3,3},{-3,3}}]

Although the two curves in the fundamental set of solutions look the same (they are a collection of the same points in the plane, and the blue is sitting on top of the red which is why we don’t see the red line), they are still linearly independent solutions since for a given value of t we would be at different points on each curve. This is an example of the non-uniqueness of parametric curves (they can be described by more than one parameterization). Let's check that the two solutions are linearly independent:

Det[{sol1[t],sol2[t]}]

In this situation, the origin is an stable center, since both of the fundamental solutions are ellipses about the origin.

Both the solutions from the fundamental set of solutions orbit the origin in ellipses as  t->∞.  All solutions orbit the origin.

Real Repeated Eigenvalues

Two Independent Eigenvectors: Proper Node (Star Point)

Here is a constant coefficient matrix, and we wish to solve x'=A x (we will use Mathematica to get the eigenvalues and eigenvectors for us):

A={{-1,0},{0,-1}};
MatrixForm[A]
esol=Eigensystem[A]

Therefore, two solutions are:

sol1[t_]=esol[[2,1]]Exp[esol[[1,1]]t];
sol2[t_]=esol[[2,2]]Exp[esol[[1,2]]t];
MatrixForm[sol1[t]]
MatrixForm[sol2[t]]

We can plot the vector field, even without knowing the form of the solution:

field=VectorPlot[A.{x1,x2},{x1,-3,3},{x2,-3,3},ImageSize->{500,Automatic},FrameLabel->{"(Subscript[x, 1])","(Subscript[x, 2])"},VectorScale->{Tiny,Small,None},StreamPoints->10,StreamStyle->{Orange,Thick},BaseStyle->20,Axes->True]

We can plot the two solutions from our fundamental set of solutions (x^((1)))(t) and (x^((2)))(t), and a sample linear combination:

c1 = -1;
c2 = -11/10;

plt1=ParametricPlot[{sol1[t],sol2[t],c1*sol1[t]+c2*sol2[t]},{t,-5,5},PlotPoints->40,PlotStyle->{{Red,Thick},{Blue,Thick},{Darker[Green],Thick}}];

fin7=Show[field,plt1,FrameLabel->None,FrameTicks->None,ImageSize->{500,Automatic},PlotRange->{{-3,3},{-3,3}}]

In this situation, the origin is an proper node, which is stable since the eigenvalue was less than zero.

Both the solutions from the fundamental set of solutions approach the origin as  t->∞.   All solutions approach the origin as t->∞.

One Independent Eigenvectors: Improper Node

Here is a constant coefficient matrix, and we wish to solve x'=A x (we will use Mathematica to get the eigenvalues and eigenvectors for us):

A={{3,-18},{2,-9}};
MatrixForm[A]
esol=Eigensystem[A]

Therefore, two solutions are (there is a bit of work to determine the second solution when the eigenvalue is repeated and we can only get one linearly independent eigenvector, which we looked at in Section 7.8):

sol1[t_]=esol[[2,1]]Exp[esol[[1,1]]t];
sol2[t_]=esol[[2,1]]*t*Exp[esol[[1,2]]t]+{1/2,0}*Exp[esol[[1,2]]t];
MatrixForm[sol1[t]]
MatrixForm[sol2[t]]

We can plot the vector field, even without knowing the form of the solution:

field=VectorPlot[A.{x1,x2},{x1,-3,3},{x2,-3,3},ImageSize->{500,Automatic},FrameLabel->{"(Subscript[x, 1])","(Subscript[x, 2])"},VectorScale->{Tiny,Small,None},StreamPoints->10,StreamStyle->{Orange,Thick},BaseStyle->20]

We can plot the two solutions from our fundamental set of solutions (x^((1)))(t) and (x^((2)))(t), and a sample linear combination:

c1 = 1;
c2 = -5;

plt1=ParametricPlot[{sol1[t],sol2[t],c1*sol1[t]+c2*sol2[t]},{t,-2,5},PlotPoints->40,PlotStyle->{{Red,Thick},{Blue,Thick},{Darker[Green],Thick}}];

fin8=Show[field,plt1,FrameLabel->None,FrameTicks->None,ImageSize->{500,Automatic},PlotRange->{{-3,3},{-3,3}}]

In this situation, the origin is an improper node, and it stable since the solutions move towards the origin.

Both the solutions from the fundamental set of solutions approach the origin as  t->∞.   All solutions approach the origin as t->∞.

Summary

Here is how you can export images to the current directory.

summary=Show[GraphicsGrid[{{fin1,fin2,fin3},{fin4,fin5,fin6},{fin7,fin8}}],ImageSize->{500,Automatic}]

SetDirectory@NotebookDirectory[]
Export["PhasePlaneUnstableNode.pdf",fin1,"PDF"]
Export["PhasePlaneStableNode.pdf",fin2,"PDF"]
Export["PhasePlaneSaddle.pdf",fin3,"PDF"]
Export["PhasePlaneUnstableSpiral.pdf",fin4,"PDF"]
Export["PhasePlaneStableSpiral.pdf",fin5,"PDF"]
Export["PhasePlaneCenter.pdf",fin6,"PDF"]
Export["PhasePlaneStarPoint.pdf",fin7,"PDF"]
Export["PhasePlaneImproperNode.pdf",fin8,"PDF"]