This is a streamlit app, OdeApp for performing stability analysis on a dynamical system specified by a system of ODEs, using linearization.
We present an implementation of basic linearization and stability analysis of dynamical systems in the SymPy package.
We will appeal to authority and reference Strogatz's Nonlinear Dynamics and Chaos.
Suppose we have a system
The important part is that as long as the fixed point for the linearized system is not one of the borderline cases below, this lineariation scheme can classify the dynamical system's stability.
That is, if the linearized system predicts a
- saddle
- node,
- or spiral,
then the fixed point of the original system is really one of those. A proof is in Andronov et al. (1973). The borderline cases are centers, degenerate nodes, stars, or non-isolated fixed points. These are more delicate.
The classification of a linear system
- If
$\Delta < 0$ , we have a saddle point. - If
$\Delta >0$ we either have nodes ($\lambda_i$ real and same sign) or spirals and centers ($\lambda_i$ complex conjugates of one another) - Nodes satisfy
$\tau-4\Delta >0$ and spirals satisfy$\tau^2-4\Delta < 0$ . The parabola$\tau^2-4\Delta =0$ is teh borderline between nodes and spirals; star nodes and degenerate nodes live on this parabola. - If
$\Delta = 0$ , at least one of the eigenvalues is zero. Then the origin is not an isolated fixed point. There is either a whole line of fixed points, like$y=x$ , or a plane of fixed points if$A=0$ .
If
Currently, if no analytic solution is possible for the fixed points, an error is thrown. In the future, I will replace this with a numerical solver.
Also, currently, any parameters you pick are limited to the range
Lastly, greek letters for either the state variables or the parameters are currently breaking the app. Eventually I will sort this out, as scientists and mathematicians love this alphabet.