Sturm–Liouville Theory & Green's Functions

Sturm–Liouville theory explains why separation of variables works: self-adjoint boundary-value problems have real eigenvalues and orthogonal eigenfunctions that form a complete basis. Green's functions give the response to a point source, turning any forcing into an integral. Learn both, with vibrating strings, heat conduction and beam deflection examples and a NumPy eigenvalue check.

Sines for strings, Bessel functions for drums, Legendre polynomials for spheres — all these 'mode shapes' are eigenfunctions of one general problem: (p y′)′ + (q + λw) y = 0 with boundary conditions. Sturm–Liouville theory guarantees their good behaviour once, for all cases.

Green's functions are the continuous version of influence lines: the deflection of a beam at x due to a unit load at s. Superposing (integrating) against the real load gives the full response — the same idea as convolution with an impulse response.

An analogy

Eigenfunctions are the 'natural notes' of a system, like a guitar string's harmonics; any sound it makes is a chord of them. A Green's function is the system's response to one sharp tap; any disturbance is a sum of taps.

Boundary-value eigenproblems

For y″ + λy = 0 with y(0) = y(L) = 0, non-zero solutions exist only for special λ = (nπ/L)² with yₙ = sin(nπx/L). These are the string's mode shapes and λ relates to their frequencies. Most λ give only the trivial solution y = 0.

The Sturm–Liouville guarantees

For a regular S-L problem (p, w > 0 on [a, b]):

Green's functions

Solve once for a unit point source at s; the answer G(x, s) is the influence function. For a beam, G is the deflection at x due to a unit load at s — engineers call its plot an influence line. Maxwell's reciprocity G(x, s) = G(s, x) is the symmetry of a self-adjoint operator.

Connections

G can be written as an eigenfunction series: G(x, s) = Σ yₙ(x)yₙ(s)/λₙ (normalised). The Rayleigh quotient gives upper bounds on the fundamental frequency — the basis of Rayleigh's method in vibrations. In PDEs, Green's functions give boundary-integral methods (BEM), and in control they are impulse responses.

Formulas

Worked example: Eigenvalues of a string

Given: y″ + λy = 0, y(0) = y(L) = 0

Find: λₙ, yₙ.

Answer: λₙ = (nπ/L)², yₙ = sin(nπx/L)

Worked example: Green's function solution

Given: −u″ = 1, u(0) = u(1) = 0

Find: u(½).

Answer: u(½) = 0.125

Worked example: Rayleigh bound

Given: −y″ = λy on [0, 1], trial y = x(1 − x)

Find: Estimate λ₁.

Answer: λ₁ ≤ 10 (exact π² = 9.87, +1.3%)

Eigenvalues by finite differences and a Green's-function solution

import numpy as np

# Sturm-Liouville: -y'' = lambda y on [0, pi], y(0) = y(pi) = 0  (exact lambda = n^2)
N = 200
h = np.pi / N
main = 2 * np.ones(N - 1) / h**2
off = -np.ones(N - 2) / h**2
A = np.diag(main) + np.diag(off, 1) + np.diag(off, -1)
lam = np.sort(np.linalg.eigvalsh(A))[:4]
print("FD eigenvalues:", np.round(lam, 4), " exact: [1 4 9 16]")

# Green's function solution of -u'' = 1, u(0) = u(1) = 0
x = np.linspace(0, 1, 11)
G = lambda x, s: np.where(x < s, x * (1 - s), s * (1 - x))
s = np.linspace(0, 1, 2001)
u = [np.trapezoid(G(xi, s) * 1.0, s) for xi in x]
print("u(0.5) via Green =", round(u[5], 6), " exact x(1-x)/2 =", 0.125)
# FD eigenvalues: [ 1.      3.9997  8.9983 15.9947]  exact: [1 4 9 16]
# u(0.5) via Green = 0.125  exact x(1-x)/2 = 0.125

The discrete operator is a symmetric matrix — the finite-dimensional version of self-adjointness — so its eigenvalues are real, as the theory promises. Higher modes are less accurate on a fixed grid.

Common mistakes

Applications

Key takeaways

Going further