Lecture 3 - Hyperbolic Equilibria and Periodic Orbits
Published
January 15, 2026
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
Overview
Hartman-Grobmann Theorem
Bendixson’s Theorem
Invariant Sets
Review
Last class, we discussed phase portraits of planar linear systems. Let’s consider an example.
Example
Let’s consider our pendulum linearized at the upright angle
\dot x = \begin{bmatrix} 0 & 1 \\ \frac{g}{l} & -\frac{k}{m} \end{bmatrix} x
Let’s specifically take g = 9.8, k = 0, m = 1, and l = 1. The eigenvalues for the system are then \lambda_1 = 3.13, \lambda_2 = -3.13. From Lecture 2, we know that this yields a saddle node, but we can further illustrate this using the phase portrait:
which yields the eigenvectors1:
v_1 = \begin{bmatrix} 1 \\ 3.13 \end{bmatrix}, \quad
v_2 = \begin{bmatrix} 1 \\ -3.13 \end{bmatrix}
1\begin{align*} \text{div}(f(x)) &= \nabla \cdot f(x) \\ &= \left( \frac{\partial}{\partial x_1}, \cdots, \frac{\partial}{\partial x_n} \right) \cdot (f_1, \cdots, f_n) \\ &= \sum_{i=1}^n \frac{\partial f_i}{\partial x_i}.\end{align*} Note: the form \nabla \cdot f(x) is sometimes considered an abuse of notation since we should not apply an operator (\nabla) through multiplication.
Thus the transformation into jordan form is provided by J = P^{-1}AP with the matrix:
P = \begin{bmatrix} v_1 & v_2 \end{bmatrix} = \begin{bmatrix} 1 & 1 \\ 3.13 & -3.13 \end{bmatrix}
We can recalculate J as a sanity check. Finaly, we can transform our coordinates using the transformation:
z = P^{-1} x
with the dynamics \dot{z}_1 = \lambda_1 z_1, \quad \dot{z} = \lambda_2 z_2
This new system yields the phase portrait shown below
Show code
import numpy as npimport matplotlib.pyplot as plt# Jordan eigenvalueslambda1 =3.13lambda2 =-3.13# Regular grid in z-coordinatesz1 = np.linspace(-3, 3, 20)z2 = np.linspace(-3, 3, 20)Z1, Z2 = np.meshgrid(z1, z2)# Derivatives in z-coordinatesU = lambda1 * Z1V = lambda2 * Z2# Streamplotfig, ax = plt.subplots(figsize=(6, 4))ax.streamplot(Z1, Z2, U, V, color='blue', density=1.2, arrowsize=1)ax.set_title("Jordan Form Coordinates")ax.set_xlabel('$z_1$')ax.set_ylabel('$z_2$')ax.grid(True)ax.axhline(0, color='black', linewidth=0.8)ax.axvline(0, color='black', linewidth=0.8)ax.set_xlim([-3, 3])ax.set_ylim([-3, 3])plt.tight_layout()plt.show()
Original Coordinates Phase Portrait
Phase Portraits of Nonlinear Systems Near Hyperbolic Equilibria
Definition: Hyperbolic Equilibrium
Linearization has no eigenvalues on the imaginary axis.
Phase portraits of nonlinear systems near hyperbolic equilibria are qualitatively similar to the phase portraits of their linearization. According to the Hartman-Grobman Theorem (defined below) a continuous deformation maps one phase portrait to the other2.
2 A common example of a continuous deformation is the Mercator projection
Continuous Deformation h(x)
Theorem: Hartman-Grobman Theorem. If x^* is a hyperbolic equilibrium of \dot{x} = f(x), x\in\R^n, then there exists a homeomorphism3z = h(x) defined in a neighborhood of x^* that maps trajectories of \dot{x} = f(x) to those of \dot{z} = Az where A \triangleq \frac{\partial f}{\partial x}|_{x=x^*}
3 a continuous map with a continuous inverse. This can be conceptualized as a continuous map without tearing or folding
Important: the hyperbolicity condition can’t be removed:
Example
This system can also be converted into polar form as
\begin{align*}
\dot{r} &= ar^3 \\
\dot{\theta} &= 1
\end{align*}
\begin{align*}
\dot{x}_1 &= -x_2 + a x_1(x_1^2 + x_2^2) \\
\dot{x}_2 &= x_1 + a x_2 (x_1^2 + x_2^2)
\end{align*}
First, we can observe that the equilibrium point is at x^* = (0,0). Linearizing the system about the equilibrium point yields the linear system:
However, this linearized system suggests that the equilbrium is a center. There is no continuous deformation that maps a center to that of the original nonlinear model (for a > 0).
if the divergence4\nabla \cdot f(x) = \frac{\partial f_1}{\partial x_1} + \frac{\partial f_2}{\partial x_2} is not identically zero and does not change sign in a simply connected region D, then there are no periodic orbits lying entirely in D.
4\begin{align*} \text{div}(f(x)) &= \nabla \cdot f(x) \\ &= \left( \frac{\partial}{\partial x_1}, \cdots, \frac{\partial}{\partial x_n} \right) \cdot (f_1, \cdots, f_n) \\ &= \sum_{i=1}^n \frac{\partial f_i}{\partial x_i}.\end{align*} Note: the form \nabla \cdot f(x) is sometimes considered an abuse of notation since we should not apply an operator (\nabla) through multiplication.
5
Illustration of divergence and region S
Proof5: By contradiction. Suppose a periodic orbit J lies in D. Let S denote the region enclosed by J and n(x) the normal vector to J at x. Then f(x) \cdot n(x) = 0 for all x \in J. By the Divergence Theorem:
This quantity is not identically zero and will not change sign within the intervals x_1 \leq -\sqrt{\delta}, -\sqrt{\delta} \leq x_1 \leq \sqrt{\delta}, and x_1 \sqrt{\delta}.
Regions of possible periodic orbits based on Bendixson’s Theorem
Invariant Sets
Notation: \varphi(t, x_0) denotes a trajectory of \dot{x} = f(x) with initial condition x(0) = x_0.
Definition: A set M \subset \R^n is positively (negatively) invariant if, for each x_0 \in M, \varphi(t, x_0) \in M for all t \geq 0 (t \leq 0).
While the definition is straightforward, it does not seem like something that is easy to verify. However, it is surprisingly easy using Nagumo’s Theorem (Nagumo 1942).
Nagumo, Mitio. 1942. “Über Die Lage Der Integralkurven Gewöhnlicher Differentialgleichungen.”Proceedings of the Physico-Mathematical Society of Japan 24: 551–59.
If f(x) \cdot n(x) \leq 0 on the boundary then M is positively invariant
Example 1
A preditor-prety model (Lotka-Volterra equations)
\begin{align*}
\dot{x} &= (a - by)x \qquad \text{Prey (exponential growth when $y = 0$)} \\
\dot{y} &= (cx - d)y \qquad \text{Predator (exponential decay when $x = 0$)}
\end{align*}
with a, b, c, d > 0.
6 This is a special case of the Cauchy-Schwarz inequality: |\langle a, b \rangle | \le \|a\| \|b\| with a = (x_1, x_2) and b = (x_2, x_1): \begin{align*}
|x_1x_2 + x_2x_1| &\leq \sqrt{(x_1^2 + x_2^2)(x_1^2 + x_2^2)} \\
|2 x_1 x_2 | &\leq x_1^2 + x_2^2
\end{align*}