Linear ODE Forms

f[n_]:=Module[{t},
If[
n==={{1,2},{1,2}},
ParametricPlot[{t*{-2,1}},{t,-2.3,2.3},
Mesh->100,
MeshStyle->Directive[Red,PointSize[.02]],
MeshShading->{Red}],
If[
n==={{0,-1},{0,-1}},
ParametricPlot[{t*{1,0}},{t,-2.3,2.3},
Mesh->Floor[100/3],
MeshStyle->Directive[Red,PointSize[.02]],
MeshShading->{Red}],
If[
Or[n==={{0,2},{-2,1}},n==={{0,-1},{2,-2}},n==={{0,1},{-1,0}}],
Graphics[{
PointSize[.02],
Red,
Point[{0,0}]}],
Show[
ParametricPlot[{t*Eigenvectors[n]},{t,-2.3,2.3},
PlotStyle->Directive[Blue,Dashed,Thick]],
Graphics[{
PointSize[.02],
Red,
Point[{0,0}]}]]]]]
]

Manipulate[
Grid[{{Pane[
Text@Style[Column[{
Row[{"(",Style["x",Italic],"',",Style["y",Italic],"') = ",Style["M",Italic],"(",Style["x",Italic],",",Style["y",Italic],")"}],
"",
Row[{
Style["M",Italic]," = ",MatrixForm[M]}],
"",
"Eigenvalues:",
Row[{MatrixForm[{{(Subscript[λ, 1])},{(Subscript[λ, 2])}}]," = ",MatrixForm[Eigenvalues[M]]}],
"",
"Eigenvectors:",
TraditionalForm[MatrixForm[Eigenvectors[M].{{x[t]},{y[t]}}]],
"",
"Solution:",
TraditionalForm[TableForm[Flatten[Simplify[DSolve[{x'[t]==Take[M.{x[t],y[t]}][[1]],y'[t]==Take[M.{x[t],y[t]}][[1]]},{x[t],y[t]},t]]]/.Rule[a_,b_]:>a==b]]
}],16],
ImageSize->{250,420}],
Show[
{VectorPlot[Evaluate[M.{x,y}],{x,-2,2},{y,-2,2}, 
VectorScale->{Large,Scaled[.5]},
VectorPoints->RandomReal[{-2,2},{900,2}], 
VectorColorFunction->"Rainbow" ,
AspectRatio->1,
Axes->True,
AxesLabel->{x[t],y[t]},
AxesStyle->Directive[Italic, 14,Black,Arrowheads[{-.03,.03}]],
ImageSize->300,
Frame->True,
FrameTicks->Automatic,
FrameTicksStyle->Directive[Black,Italic,10],
PlotRange->{{-2.3,2.3},{-2.3,2.3}},
PlotRangeClipping->True]},
ContourPlot[Evaluate[M.{x,y}]==0,{x,-2.3,2.3},{y,-2.3,2.3},
ContourStyle->{Black,Dashed}],
f[M]]}}],{{M,(({{1, 1}, {1/2, 2}})),"matrix M"}, {(({{1, 1}, {1/2, 2}}))->"nodal source",(({{1, 1}, {0, 1}}))->"degenerate source",(({{0, 2}, {-2, 1}}))->"spiral source",(({{-1, 0}, {1, -2}}))->"nodal sink",(({{-1, 1}, {0, -1}}))->"degenerate sink",{{0,-1},{2,-2}}->"spiral sink",(({{0, 1}, {-1, 0}}))->"center",(({{1, 0}, {1, -2}}))->"saddle",{{1,2},{1,2}}->"infinite equilibria, source",{{0,-1},{0,-1}}->"infinite equilibria, sink"}},
SaveDefinitions->True,TrackedSymbols->True]

The fixed point (0,0) has many different stability types. A system rarely has an infinite number of solutions along a line in the x(t), y(t) plane.

The fixed point (0,0) has many different stability types. Only two solutions for fixed points are possible in a linear first-order system: one with an equilibrium point at (0,0), or infinitely many solutions along a line in the x(t), y(t) plane.

Red dots represent fixed points or equilibrium points.

Dashed blue lines indicate straight-line solutions.

Dashed black lines indicate nullclines.

Based on a program from the examples for VectorPlot under the applications subgroup.

Contributed by: Alex S. Dunn