Fixed points of 2-D linear homogeneous systems

Eigenvalues and eigenvectors of 2-D linear systems

Clear[a,b,c,d]
A=(({{a, b}, {c, d}}));
Eigenvalues[A]
Eigenvectors[A]
Eigensystem[A]
Det[A]
Tr[A]

Classification of fixed points in 2-D linear homogeneous systems

CASE 1: Saddle node (negative determinant)

A=(({{-1, 0.2}, {0.4, 2}}));
Eigenvalues[A]
Det[A]
Tr[A]
ev=Eigenvectors[A]
Show[
StreamDensityPlot[A.{x,y},{x,-1,1},{y,-1,1},FrameLabel->{x[t],y[t]},LabelStyle->20,ImageSize->500,ColorFunction->"Rainbow"],
Graphics[{Thick,Red,Arrow[{{0,0},#}]&/@ev}],
Graphics[{PointSize[Large],Blue,Point[{0,0}]}]]

CASE 1: Saddle node (negative determinant, reversed directions)

A=(({{1, 0.2}, {0.4, -2}}));
Eigenvalues[A]
Det[A]
Tr[A]
ev=Eigenvectors[A]
Show[
StreamDensityPlot[A.{x,y},{x,-1,1},{y,-1,1},FrameLabel->{x[t],y[t]},LabelStyle->20,ImageSize->500,ColorFunction->"Rainbow"],
Graphics[{Thick,Red,Arrow[{{0,0},#}]&/@ev}],
Graphics[{PointSize[Large],Blue,Point[{0,0}]}]]

CASE 2A: Node (stable, attractive)

A=(({{-1, 0}, {1, -2}}));
Eigenvalues[A]
Det[A]
Tr[A]
ev=Eigenvectors[A]
Show[
StreamPlot[A.{x,y},{x,-1,1},{y,-1,1},FrameLabel->{x[t],y[t]},LabelStyle->20,ImageSize->500],
Graphics[{Thick,Red,Arrow[{{0,0},#}]&/@ev}],
Graphics[{PointSize[Large],Blue,Point[{0,0}]}]]

CASE 2A: Node (unstable, repelling)

A=(({{1, 0}, {1, 2}}));
Eigenvalues[A]
Det[A]
Tr[A]
ev=Eigenvectors[A]
Show[
StreamPlot[A.{x,y},{x,-1,1},{y,-1,1},FrameLabel->{x[t],y[t]},LabelStyle->20,ImageSize->500],
Graphics[{Thick,Red,Arrow[{{0,0},#}]&/@ev}],
Graphics[{PointSize[Large],Blue,Point[{0,0}]}]]

CASE 2B: Spiral (stable, attracting, sink, direction depends on A)

A=(({{0, 1}, {-1, -1}}));
N[Eigenvalues[A]]
Det[A]
Tr[A]
ev=Eigenvectors[A]
Show[
StreamPlot[A.{x,y},{x,-1,1},{y,-1,1},FrameLabel->{x[t],y[t]},LabelStyle->20,ImageSize->500],
(*Graphics[{Red,Arrow[{{0,0},#}]&/@ev}],*)
Graphics[{PointSize[Large],Blue,Point[{0,0}]}]]

CASE 2B: Spiral (unstable, repelling, source, direction depends on A)

A=(({{0, 1}, {-1, 1}}));
N[Eigenvalues[A]]
Det[A]
Tr[A]
ev=Eigenvectors[A]
Show[
StreamPlot[A.{x,y},{x,-1,1},{y,-1,1},FrameLabel->{x[t],y[t]},LabelStyle->20,ImageSize->500],
(*Graphics[{Red,Arrow[{{0,0},#}]&/@ev}],*)
Graphics[{PointSize[Large],Blue,Point[{0,0}]}]]

CASE 3: Center (direction depends on A)

A=(({{0, 3}, {-1, 0}}));
Eigenvalues[A]
Det[A]
Tr[A]
ev=Eigenvectors[A]
Show[
StreamPlot[A.{x,y},{x,-1,1},{y,-1,1},FrameLabel->{x[t],y[t]},LabelStyle->20,ImageSize->500],
(*Graphics[{Red,Arrow[{{0,0},#}]&/@ev}],*)
Graphics[{PointSize[Large],Blue,Point[{0,0}]}]]

CASE 3: Center (reversed direction, direction depends on A)

A=(({{0, -2}, {1, 0}}));
Eigenvalues[A]
Det[A]
Tr[A]
ev=Eigenvectors[A]
Show[
StreamPlot[A.{x,y},{x,-1,1},{y,-1,1},FrameLabel->{x[t],y[t]},LabelStyle->20,ImageSize->500],
(*Graphics[{Red,Arrow[{{0,0},#}]&/@ev}],*)
Graphics[{PointSize[Large],Blue,Point[{0,0}]}]]

CASE 4A: Degenerate nodes: stable

A=(({{-1, 2}, {0, -1}}));
Eigenvalues[A]
Δ=Det[A]
τ=Tr[A]
ev=Eigenvectors[A]
(τ^2)-4 Δ
Show[
StreamPlot[A.{x,y},{x,-1,1},{y,-1,1},FrameLabel->{x[t],y[t]},LabelStyle->20,ImageSize->500],
Graphics[{Thick,Red,Arrow[{{0,0},#}]&/@ev}],
Graphics[{PointSize[Large],Blue,Point[{0,0}]}]]

CASE 4A: Degenerate nodes: unstable

A=(({{1, 1}, {0, 1}}));
Eigenvalues[A]
Δ=Det[A]
τ=Tr[A]
ev=Eigenvectors[A]
(τ^2)-4 Δ
Show[
StreamPlot[A.{x,y},{x,-1,1},{y,-1,1},FrameLabel->{x[t],y[t]},LabelStyle->20,ImageSize->500],
Graphics[{Thick,Red,Arrow[{{0,0},#}]&/@ev}],
Graphics[{PointSize[Large],Blue,Point[{0,0}]}]]

CASE 4B: Degenerate nodes: stable star (every direction is eigen direction)

A=(({{-1, 0}, {0, -1}}));
Eigenvalues[A]
Δ=Det[A]
τ=Tr[A]
ev=Eigenvectors[A]
(τ^2)-4 Δ
Show[
StreamPlot[A.{x,y},{x,-1,1},{y,-1,1},FrameLabel->{x[t],y[t]},LabelStyle->20,ImageSize->500],
Graphics[{Thick,Red,Arrow[{{0,0},#}]&/@ev}],
Graphics[{PointSize[Large],Blue,Point[{0,0}]}]]

CASE 4B: Degenerate nodes: unstable star (every direction is eigen direction)

A=(({{1, 0}, {0, 1}}));
Eigenvalues[A]
Δ=Det[A]
τ=Tr[A]
ev=Eigenvectors[A]
(τ^2)-4 Δ
Show[
StreamPlot[A.{x,y},{x,-1,1},{y,-1,1},FrameLabel->{x[t],y[t]},LabelStyle->20,ImageSize->500],
Graphics[{Thick,Red,Arrow[{{0,0},#}]&/@ev}],
Graphics[{PointSize[Large],Blue,Point[{0,0}]}]]

CASE 5A: Non-isolated fixed points (stable line of fixed points)

A=(({{0, 0}, {0, -1}}));
Eigenvalues[A]
Det[A]
Tr[A]
ev=Eigenvectors[A]
Show[
StreamPlot[A.{x,y},{x,-1,1},{y,-1,1},FrameLabel->{x[t],y[t]},LabelStyle->20,ImageSize->500],
Graphics[{Thick,Red,Arrow[{{0,0},#}]&/@ev}],
Graphics[{PointSize[Large],Blue,Point[{0,0}]}]]

CASE 5A: Non-isolated fixed points (unstable line of fixed points)

A=(({{0, 0}, {0, 1}}));
Eigenvalues[A]
Det[A]
Tr[A]
ev=Eigenvectors[A]
Show[
StreamPlot[A.{x,y},{x,-1,1},{y,-1,1},FrameLabel->{x[t],y[t]},LabelStyle->20,ImageSize->500],
Graphics[{Thick,Red,Arrow[{{0,0},#}]&/@ev}],
Graphics[{PointSize[Large],Blue,Point[{0,0}]}]]

Overview plot

Manipulate[Row[{Text["A"]==MatrixForm[A],StreamPlot[Evaluate[A.{x,y}],{x,-1,1},{y,-1,1}, StreamScale->0.1, StreamColorFunction->"Rainbow",ImageSize->Large,LabelStyle->20]}],{{A,(({{-1, 0}, {0, 2}}))},
 {(({{-1, 0}, {0, 2}}))->"Saddle",(({{1, 0}, {0, -2}}))->"Saddle",(({{-1, 0}, {0, -2}}))->"Stable node",(({{1, 0}, {0, 2}}))->"Unstable node",(({{0, 1}, {-1, -1}}))->"Stable spiral",(({{0, 1}, {-1, 1}}))->"Unstable spiral",(({{0, 1}, {-1, 0}}))->"Center (clockwise rotation)",(({{0, -1}, {1, 0}}))->"Center (counterclockwise rot.)",(({{-1, 1}, {0, -1}}))->"Degenerate stable node",(({{1, 1}, {0, 1}}))->"Degenerate unstable node",(({{-1, 0}, {0, -1}}))->"Degenerate stable star",(({{1, 0}, {0, 1}}))->"Degenerate unstable star",(({{0, 0}, {0, -1}}))->"Non-isolated stable fixed point",(({{0, 0}, {0, 1}}))->"Non-isolated unstable fixed point"}}]

Creation of this notebook was supported by IT Academy program of Information Technology Foundation for Education (HITSA).