Behavior of a linear, homogeneous and simple dynamical system on the plane with real and constant coefficients
Computational Mindset starts the publication of a series of tools on dynamical systems.
The tool described here, cc-lin-plane-homo-sys-analyzer.py, is a program written in Python that studies the behavior of a linear, homogeneous and simple dynamical system on the plane with real and constant coefficients defined by the system of differential equations dx/dt = Ax
By ‘simple’ we mean that the determinant of the matrix describing the system is different from 0, so the only critical point is the origin.
The program classifies the critical point between node, focus or saddle point and between stable and unstable by studying the eigenvalues of the matrix and distinguishing between real and complex also making considerations about the sign of the eigenvalues (or of their real part in case of complex eigenvalues).
The program draws the phase portrait by drawing some trajectories solving numerically the Cauchy problems obtained from the initial system at the variation of the initial condition at time 0.
The program also calculates the general integral in symbolic form (by means of sympy expression) and allows to draw on the phase portrait also a particular solution (golden trajectory) by executing the sympy expression if you provide the value of the two integration constants.
On the phase portrait the program also draws the gradient vector (blue arrows) and in the case of real eigenvalues also the corresponding eigenvectors (in green if the corresponding eigenvalue is negative, in magenta if positive).
Here is the source: https://github.com/ettoremessina/differential-equations/blob/main/ODEs/dyn-sys/python/cc-lin-plane-homo-sys-analyzer.py
A few examples follow. For a complete discussion visit the website page:
https://computationalmindset.com/en/mathematics/analyzer-of-a-constant-coefficient-linear-and-homogeneous-dynamical-system-on-plane.html
Stable focus example
Conjugate complex eigenvalues with negative real part.
Source here: cc-lin-plane-homo-sys-analyzer-examples/stable_focus.sh

Stable node example
Real and distinct eigenvalues, both negative.
Source here: cc-lin-plane-homo-sys-analyzer-examples/stable_node.sh

Unstable focus example
Conjugate complex eigenvalues with positive real part.
Source here: cc-lin-plane-homo-sys-analyzer-examples/unstable_focus.sh

Unstable node example
Real and distinct eigenvalues, both positive.
Source here: cc-lin-plane-homo-sys-analyzer-examples/unstable_node.sh

Saddle point example
Real and distinct eigenvalues with discordant sign.
Source here: cc-lin-plane-homo-sys-analyzer-examples/saddle_point.sh

Center example
Conjugate pure imaginary eigenvalues.
Source here: cc-lin-plane-homo-sys-analyzer-examples/center.sh

Stable singular node
Real negative eigenvalue with algebraic and geometric multiplicity equal to 2 (also called stable star node).
Source here: cc-lin-plane-homo-sys-analyzer-examples/stable_singular_node.sh

Unstable singular node
Real positive eigenvalue with algebraic and geometric multiplicity equal to 2 (also called unstable star node).
Source here: cc-lin-plane-homo-sys-analyzer-examples/unstable_singular_node.sh
