从一个数到一整条函数
在第一卷里,最优化是去找一个数:你令导数为零,dy/dx = 0,解出使函数取极小的那个 x。这里我们要更大胆——在两个固定端点之间,找出整条最好的曲线 y(x)。我们要极小化的量是一个泛函,通常是积分 J[y] = a 到 b 对 L(x, y, y') dx 的积分,它吞下一整条函数,吐出一个数(一段时间、一段长度、一份能量)。上一篇引入了 J 及其一阶变分;本篇把那变分化成一条你能真正求解的方程。
策略完全照抄单变量微积分,只是抬高了一层。为了试探极小函数 y(x),我们去轻推它:把 y 换成 y(x) + epsilon eta(x),其中 eta 是任意一条光滑的“扰动”,并在两端点处为零(这样竞争曲线仍穿过同样的固定端点),而 epsilon 是个极小的旋钮。代入 J,便得到单变量 epsilon 的普通函数,记作 Phi(epsilon) = J[y + epsilon eta]。若 y 当真最优,则 epsilon = 0 就是 Phi 的普通极小值,于是 dPhi/depsilon 在 epsilon = 0 处必为零——这正是第一卷的临界点条件。
在积分号下求导
对 Phi 求 epsilon 的导数时,把求导搬进积分号内。由于 L 只通过 y + epsilon eta 及其导数 y' + epsilon eta' 依赖 epsilon,链式法则给出干净的被积式:在 epsilon = 0 处,dPhi/depsilon = a 到 b 对 [ (partial L / partial y) eta + (partial L / partial y') eta' ] dx 的积分。这正是一阶变分 delta J。eta 那一项无伤大雅,但 eta' 那一项很碍事——它带着我们任意扰动的导数,只要 eta 与 eta' 都自由漂浮,我们就什么都断定不了。
解法是行内最古老的招数:分部积分,它把 eta' 上的导数换到它前面那个系数上去。记 F = partial L / partial y',第二块就变成 对 F eta' dx 的积分 = [F eta] 从 a 到 b 减去 对 (dF/dx) eta dx 的积分。边界项 [F eta] 干脆消失,因为 eta 被选成在 a 和 b 两处都为零。正是这一个设计选择——固定端点逼着扰动在两端归零——让整套方法得以运转。
基本引理一锤定音
分部积分之后,每个扰动如今只乘着 eta 本身:delta J = a 到 b 对 [ partial L / partial y 减去 d/dx ( partial L / partial y' ) ] eta(x) dx 的积分,而最优性要求这积分对每一条容许的 eta 都为零。此处变分法基本引理挑起大梁:若连续函数 g(x) 对所有在两端为零的光滑 eta 都满足 对 g(x) eta(x) dx 的积分 = 0,则 g(x) 恒为零。直觉很犀利——倘若 g 在某个小区间上为正,就挑一条只在那里隆起的 eta,积分便会算出正值,矛盾。
把那个方括号置零,便是奖赏。欧拉–拉格朗日方程写作 d/dx ( partial L / partial y' ) 减去 partial L / partial y = 0。要仔细读:partial L / partial y 与 partial L / partial y' 是把 x、y、y' 当作三个独立位置来求的偏导数,而最前面的 d/dx 是沿曲线的全导数,它让 x、y(x)、y'(x) 一起变化——这个区别值得停下来体会,因为混淆二者是本学科里最常见的错误。
J[y] = integral_a^b L(x, y, y') dx (minimize over y, endpoints fixed)
d ( dL ) dL
-- ( --- ) - -- = 0 <- Euler-Lagrange equation
dx ( dy' ) dy
(dL/dy, dL/dy' = partial derivatives; d/dx = total derivative along y(x))走一遍:光线与最短直线
先试最友善的例子:两点间的最短曲线。弧长为 J[y] = a 到 b 对 sqrt(1 + (y')^2) dx 的积分,故 L = sqrt(1 + (y')^2)。注意 L 里根本不含 y,所以 partial L / partial y = 0。而 partial L / partial y' = y' / sqrt(1 + (y')^2)。欧拉–拉格朗日方程于是说这个量的 d/dx 等于零,即 y' / sqrt(1 + (y')^2) 为常数——这又逼着 y' 本身为常数。极小者是一条直线,正该如此。机器复现了一条显然的真理,正因如此你才敢在不显然的例子上信赖它。
这个例子露出一份馈赠:当 L 不显含 x(当 L = L(y, y') 时),存在一个首次积分,省去你解一道难缠的二阶方程。贝尔特拉米恒等式,L 减去 y' (partial L / partial y') = 常数,直接由欧拉–拉格朗日导出,并把阶数降一。正是这条捷径攻破了悬链线悬链问题与最速下降的最速降线,它们是后续几篇的招牌难题——那里 L 都藏着 x,而贝尔特拉米把一条吓人的方程化成可分离变量的方程。
配方,以及诚实的小字
- 写出泛函 J[y] = 对 L(x, y, y') dx 的积分,读出被积式 L。
- 算出两个偏导数 partial L / partial y 与 partial L / partial y',把 x、y、y' 当作独立量。
- 对 partial L / partial y' 取全导数 d/dx(用链式法则——一般会冒出 y'' 项)。
- 令 d/dx(partial L / partial y') 减去 partial L / partial y = 0;若 L 不显含 x,改用贝尔特拉米首次积分。
- 解出所得的常微分方程,再用两个端点值 y(a) 与 y(b) 定下常数。
两点诚实的提醒。其一,欧拉–拉格朗日只是必要条件:它定位驻定函数,正如 dy/dx = 0 定位驻点,但解可能是极小、极大或鞍点,要证明它当真取极小,需要一个二阶判别(对应第一卷的二阶导数判别法)。其二,推导悄悄假定了极小者足够光滑、可二次求导,且允许在积分号下求导;对于性状恶劣的 L 或不光滑的竞争曲线,这些步骤需更加小心。这条方程强大而核心,却并非魔法。