Based on notes created by Sam Coogan and Murat Arcak. Licensed under a “Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License”
Additional Reading
Khalil, Chapter 2.7
Overview
Understanding bifurcations in nonlinear systems
Motivation
“Qualitative behavior of a second-order system is determined by the pattern of its equilibrium points and periodic behavior, as well as their stability properties” – Khalil
However, how do we know whether or not the system maintains qualitative behavior under infinitesimally small perturbations?
Definition: Structurally Stable. A system is said to be structurally stable when stability is maintained under small perturbations.
Definition: Birfucation. The complement of structural stability is when small perturbations change the equilibrium points or periodic orbits. This phenomenon is known as a birfucation.
Birfucations
A birfucation is an abrupt change in qualitative behavior as a parameter is varied. Examples include equilibria or limit cycles appearing/disappearing, or becoming stable/unstable.
Fold Birfucation
Also known as “saddle node” or “blue sky” bifurcation
Example:
\dot{x} = \mu - x^2
If \mu > 0, two equilibria: x = \pm \sqrt{\mu}. If \mu < 0, no equilibria.
This can be visualized using a Bifurcation diagram1:
1 Bifurcation diagrams sketch the amplitude of the equilibrium points as a function of the bifurcation parameter. Solid lines represent stable nodes/foci/limit cycles. Dashed lines represent unstable nodes/foci/limit cycles.
Fold Bifurcation
Show code
import numpy as npimport matplotlib.pyplot as plt# x gridx = np.linspace(-3, 3, 300)# Two representative μ valuesmu_neg =-1.0mu_pos =1.0# Compute nullclinesnullcline_neg = mu_neg - x**2nullcline_pos = mu_pos - x**2# Plotplt.figure(figsize=(6,5))# Nullclinesplt.plot(x, nullcline_neg, 'r--', label=rf'$\mu = {mu_neg}$')plt.plot(x, nullcline_pos, 'b--', label=rf'$\mu = {mu_pos}$')# Horizontal axis (x-axis for \dot{x}=0)plt.axhline(0, color='k', linestyle='--', linewidth=1)# Phase line arrows along \dot{x}=0for xi in np.linspace(-2, 2, 3):# Choose μ > 0 for phase line xdot = mu_pos - xi**2 dx =0.1* np.sign(xdot) # arrow points right if xdot>0, left if xdot<0 plt.arrow(xi, 0, dx, 0, head_width=0.5, head_length=0.1, color='blue')plt.xlabel(r'$x$')plt.ylabel(r'$\dot{x}$')plt.title(r'Phase portrait for $\dot{x} = \mu - x^2$')plt.legend()plt.grid(True)plt.tight_layout()plt.show()
Figure 1: Hysteresis arising from a subcritical pitchfork bifurcation
Examples of bifurcations and hysteresis can also be found in perception2.
2 Observe the transition from a man’s face to a sitting woman as you trace the figures from left to right, starting with the top row. When does the opposite transition happen as you trace back from the end to the beginning? [Fisher, 1967]
Higher Order Systems
Fold, transcritical, and pitchfork bifurcations are all one-dimensional bifurcations, as evident from the first order examples above. They occur in higher order systems too, but are restricted to a one-dimensional manifold.
Let’s revisit the bistable switch example from Lecture 1:
\begin{align*}
\dot{x}_1 = -a x_1 + x_2 \\
\dot{x}_2 = \frac{x_1^2}{1 + x_1^2} - b x_2
\end{align*}
For this example, we had seen that there was a bistable switch when ab > 0.5. What we hadn’t talked about yet is that this system has a fold bifurcation at \mu = ab = 0.5.
Fold Bifurcation for Bistable Switch Example
NoteCharacteristic of one-dimensional bifurcations
\left.\frac{\partial f}{\partial x}\right|_{\mu = \mu^c, x=x^*(\mu^c)} \textrm{ has an eigenvalue at zero}
where x^*(\mu) is the equilibrium point undergoing bifurcation and \mu^c is the critical value at which the bifurcation occurs.
\left.\frac{\partial f}{\partial x}\right|_{\mu = \mu^c, x=x^*(\mu^c)} \textrm{ has eigenvalues $\pm \beta i$}
where again x^*(\mu) is the equilibrium point undergoing bifurcation and \mu^c is the critical value at which the bifurcation occurs.