Eigenvalues and Linear Phase Portraits

Manipulate[
{evals,evecs}=Eigensystem[(({{a, b}, {c, d}}))];GraphicsColumn[{Show[StreamPlot[(({{a, b}, {c, d}})).{x,y},{x,-1,1},{y,-1,1},Axes->True,StreamStyle->Thickness[Medium],PerformanceGoal->"Quality",StreamScale->Large,StreamPoints-> ControlActive[.5{{-1,1},{1,1},{1,-1},{-1,-1}},Coarse],Frame->False,Ticks->None],If[evecs==Re[evecs],ParametricPlot[Evaluate[t evecs],{t,-3,3},PlotStyle->{{Thick,RGBColor[0.5, 0.21, 0.36]}}],{}],PlotRange->1,ImageSize->{275,275}]}],
Row[{Spacer[60],Dynamic[Style[Text@TraditionalForm[HoldForm[(({{x}, {y}}))'==Dynamic[(({{a, b}, {c, d}}))](({{x}, {y}}))]],Medium]]}],Delimiter,
{{a,-1,Style["(Subscript[a, 11])",Medium]},-2,2,.01,Appearance->"Labeled"},
{{b,1,Style["(Subscript[a, 12])",Medium]},-2,2,.01,Appearance->"Labeled"},
{{c,.5,Style["(Subscript[a, 21])",Medium]},-2,2,.01,Appearance->"Labeled"},
{{d,-1,Style["(Subscript[a, 22])",Medium]},-2,2,.01,Appearance->"Labeled"},
{evecs,0,1,ControlType->None},
{evals,0,1,ControlType->None},Dynamic[Graphics[{PointSize[.04],RGBColor[0.5, 0.21, 0.36],Point[{Re[#],Im[#]}]&/@evals},PlotRange->{{-3,3},{-2,2}},Axes->True,AxesLabel->Text/@{Re[z],Im[z]},Ticks->None,ImagePadding->33,ImageSize->250,PlotLabel->Text@"\nEigenvalues"]],
ControlPlacement->Left,AutorunSequencing->{1,2,3,4}]

This shows the phase portrait of a 2×2 linear differential system along with a plot of the eigenvalues of the system matrix in the complex plane.

Sliders allow manipulation of the matrix entries over [-2,2]. By viewing simultaneously the phase portrait and the eigenvalue plot, one can easily and directly associate phase portrait bifurcations with changes in the character of the eigenvalues.

Contributed by: Selwyn Hollis