Lecture 8 - Introduction to Lyapunov Stability Theory

Published

February 5, 2026

Based on notes created by Sam Coogan and Murat Arcak. Licensed under a “Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License”

Lyanpunov Stability Theory

Consider a time-invariant dynamical system \dot{x} = f(x), \quad f(0) = 0

Aleksandr Lyapunov Lyapunov (1857–1918)

If the equilibrium of interest is x^* \neq 0, we can always shift the system through the transformation \tilde{x} = x - x^*, yielding:

\dot{\tilde{x}} = f(\tilde{x} + x^*) \triangleq \tilde{f}(\tilde{x}) \quad \implies \quad \tilde{f}(0) = 0

The equilibrium x = 0 is stable if for each \epsilon > 0, there exists a \delta > 0 such that

\underbrace{\|x(0)\| < \delta}_{\textrm{If you start within some }\delta} \implies \underbrace{\|x(t)\| < \epsilon}_{\textrm{You stay within }\epsilon}, \quad \forall t \geq 0

It is unstable if it is not stable.

It is asymptotically stable if stable and x(t) \to 0 for all x(0) in a neighborhood of x = 0.

It is globally asymptotically stable if stable and x(t) \to 0 for all x(0) \in \mathbb{R}^n.

Note: x(t) \to 0 does not necessarily imply stability. One can construct an example where trajectories converge to the origin but only after a large detour that violates the stability definition.

This example is a homoclinic orbit. The equilibrium at the origin is unstable, even though all trajectories starting at the origin converge to the origin.

  1. Let D be an open, connected subset of \mathbb{R}^n containing the origin. If there exists a C^1 function V: D \to \mathbb{R} such that

V(0) = 0, \quad \textrm{ and } V(x) > 0 \quad \forall x \in D \setminus \{0\} \textrm{ (positive definite)}

and

\dot{V}(x) := \Delta V(x)^T f(x) \leq 0 \quad \forall x \in D \textrm{ (negative semi-definite)}

then x = 0 is stable.

  1. If \dot{V}(x) < 0 for all x \in D \setminus \{0\} (negative definite), then x = 0 is asymptotically stable.

  2. If, in addition, D = \mathbb{R}^n and V(x) \to \infty \textrm{ as } \|x\| \to \infty \textrm{ (radially unbounded)} then x = 0 is globally asymptotically stable.

Proof. (Sketch) The sets \Omega_C \triangleq \{ x \mid V(x) \leq C \} for constraints c are called level sets of V and are positively invariant because \Delta V(x)^T f(x) \leq 0.

Stability: choose a level set inside the ball of radius \epsilon and a ball of radius \delta inside this level set. Trajectories starting in \mathcal{B}_{\delta} cannot leave \mathcal{B}_{\epsilon} since they remain inside the level set.

Asymptotic Stability: since V(x(t)) is decreasing and bounded below by 0, we conclude

V(x(t)) \to c \geq 0

We will show c = 0 (i.e., x(t) \to 0) by contradiction. Suppose c \neq 0. This would mean that level set is bounded above and below:

Let

\gamma \triangleq \min_{\{x: ~c \leq V(x) \leq V(x_0)\}} ~-\dot{V}(x) > 0

where the maximum exists because it is evaluated over a bounded1 set, and is positive because \dot{V}(x) < 0 away from x=0. Then,

1 By positive definiteness of V, the level sets \{x\mid V(x) \leq \textrm{constant}\} are bounded when the constant is sufficiently small. Since we are proving local asymptotic stability we can assume x_0 is close enough to the origin that the small constant V(x_0) is sufficiently small.

\dot{V}(x) \leq -\gamma \quad \implies V(x(t)) \leq V(x_0) - \gamma t

which implies V(x(t)) < 0 for t > \frac{V(x_0)}{\gamma}, a contradiction because V \geq 0. Therefore, c=0 which implies x(t) \to 0.

Global Asymptotic Stability: Why do we need radial unboundedness?

Example:

V(x) = \frac{x_1^2}{1+x_1^2} + x_2^2

Since x_2 = 0, let x_1 \to \infty: V(x) \to 1 (not radially unbounded). Then, \Omega_c is not a bounded set for c \geq 1. Therefore, x_1(t) may grow unbounded while V(x(t)) is decreasing.

Show code
import numpy as np
import matplotlib.pyplot as plt

# Create a grid
x1 = np.linspace(-10, 10, 200)
x2 = np.linspace(-2, 2, 200)
X1, X2 = np.meshgrid(x1, x2)

# Lyapunov function: V(x) = x1^2/(1+x1^2) + x2^2
V = X1**2 / (1 + X1**2) + X2**2

# Create contour plot
fig, ax = plt.subplots(figsize=(6, 4))
contour = ax.contour(X1, X2, V, levels=10, cmap='viridis')
ax.clabel(contour, inline=True, fontsize=8)

ax.spines['left'].set_position('zero')
ax.spines['bottom'].set_position('zero')
ax.set_xlabel(r'$x_2$', fontsize=12)
ax.set_ylabel(r'$x_1$', fontsize=12)
ax.xaxis.set_label_position('top')
ax.yaxis.set_label_position('right')
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
plt.xticks([])
plt.yticks([])
plt.tight_layout()
plt.show()

Level sets for V(x) = \frac{x_1^2}{1+x_1^2} + x_2^2 (not radially unbounded)

Finding Lyapunov Functions

Example: Consider the general nonlinear system

\dot{x} = -g(x), \quad x \in \mathbb{R}, ~xg(x) > 0 ~\forall x \neq 0

V(x) = \frac{1}{2}x^2 is positive definite and radially unbounded.

\dot{V}(x) = x \dot{x} = -x g(x) < 0 (negative definite). Therefore, x=0 is globally asymptotically stable.

If xg(x) > 0 only in some domain (-b,c) \setminus \{0\}, then we can only conclude local asymptotic stability of x=0 on the domain D = (-b,c).

If there are other equilibria where g(x) = 0 then we can also only conclude local asymptotic stability of x=0.

Example: Consider the nonlinear system2 \begin{align*} \dot{x}_1 &= x_2 \\ \dot{x}_2 &= -a x_2 - g(x_1), \quad a \geq 0, xg(x) > 0 ~\forall x \in (-b,c) \setminus \{0\} \end{align*}

2 The pendulum is a special case of this system with g(x) = \sin(x), which has equilibrium points at x=0 and x = \pm \pi. Therefore, we know that global stability will not be possible for this system and we will need to restrict our domain to D = (-\pi, \pi).

The choice V(x) = \frac{1}{2}x_1^2 + \frac{1}{2}x_2^2 doesn’t work because \dot{V}(x) is sign indefinite (you can try this for yourself).

Instead we will consider the function

V(x) = \int_0^{x_1} g(y) dy + \frac{1}{2} x_2^2.

This function is positive definite on D=(-b,c) \setminus \{0\}. Checking it’s derivative:

\begin{align*} \dot{V}(x) &= \frac{\partial V}{\partial x} f(x) \\ &= \begin{bmatrix}\frac{\partial V}{\partial x_1} & \frac{\partial V}{\partial x_2} \end{bmatrix} f(x) \\ &= \begin{bmatrix} g(x_1) & x_2 \end{bmatrix} \begin{bmatrix} x_2 \\ -a x_2 - g(x_1) \end{bmatrix} \\ &= g(x_1) x_2 + x_2 (-a x_2 - g(x_1)) \\ &= -a x_2^2 \leq 0 \end{align*}

Therefore, we can conclude stability of our equilibrium within D.

If a = 0, we will not be able to conclude asymptotic stability since \dot{V}(x) = 0 \implies V(x(t)) = V(x_0)

If a > 0, we actually will be able to conclude asymptotic stability but we will need to use the LaSalle-Krasovskii Invariance Principle which is covered in the next lecture. This is because we cannot yet conclude that \dot{V}(x) < 0 ~\forall x \in D \setminus \{0\}.