第二章 数学基础:变分法入门与庞特里亚金极小值原理

各位同学,欢迎来到第二章。说实话,这一章可能是整个课程里最「劝退」的一章。但我得说句实在话——你绕不开它。我在做轨迹优化项目的前三年,一直试图用各种数值方法「绕过」这些数学基础,结果每次都被现实狠狠教育了一顿。

变分法和庞特里亚金极小值原理(PMP),说白了就是最优控制的两大支柱。一个告诉你「怎么找极值」,一个告诉你「怎么找最优控制」。今天咱们就把这两块硬骨头啃下来。

2.1 变分法:从泛函到极值

先问个问题:普通函数求极值,你会怎么做?求导,令导数为零,对吧?

那如果我要找的不是一个点,而是一条曲线呢?比如——从A点到B点,哪条路径用时最短?这就是泛函的极值问题。

泛函,说白了就是「函数的函数」。你输入一个函数,它输出一个数。比如飞行器的总油耗,就是一条轨迹的泛函。

核心思想:变分法就是泛函版本的「求导等于零」。

2.1.1 欧拉-拉格朗日方程

假设我们有一个泛函:

J[y] = ∫ L(x, y, y') dx

其中L是拉格朗日量,y'是y对x的导数。那么极值条件就是:

∂L/∂y - d/dx(∂L/∂y') = 0

这就是欧拉-拉格朗日方程。嗯,看起来简单,但用起来门道很多。

我的经验:我第一次用这个方程是在做滑翔机的最优轨迹。当时我算出来的结果和直觉完全相反——最省油的路径不是直线,而是一条弧线。后来验证发现,变分法给出的结果是对的。从那以后,我再也不敢凭直觉判断轨迹了。

2.1.2 横截条件

如果端点不是固定的呢?比如终点可以在一条曲线上移动。这时候就需要横截条件。

端点类型 条件
固定端点 y(x₀)=y₀, y(x₁)=y₁
自由端点 ∂L/∂y' = 0 在端点处
可变端点(曲线约束) L + (φ' - y')·∂L/∂y' = 0

你想想看,实际飞行中,终点往往不是固定的——可能是某个高度范围,或者某个速度区间。这时候横截条件就派上用场了。

2.2 庞特里亚金极小值原理:最优控制的灵魂

变分法有个局限——它要求控制量连续可微。但实际工程中,控制量经常是 bang-bang 控制(开关控制),或者有约束的。这时候,PMP 就登场了。

PMP 的核心思想:最优控制一定使得哈密顿函数取极小值(或极大值,取决于定义)。

2.2.1 标准问题形式

考虑一个标准的最优控制问题:

min J = φ(x(t_f)) + ∫ L(x, u, t) dt
s.t.  ẋ = f(x, u, t)
      u ∈ U
      x(0) = x₀

定义哈密顿函数:

H(x, u, λ, t) = L(x, u, t) + λᵀ f(x, u, t)

其中 λ 是协态变量(也叫伴随变量)。

2.2.2 PMP 的必要条件

  1. 状态方程: ẋ = ∂H/∂λ = f(x, u, t)
  2. 协态方程: λ̇ = -∂H/∂x
  3. 最优性条件: u* = arg min H(x, u, λ, t) 对所有 u ∈ U
  4. 横截条件: λ(t_f) = ∂φ/∂x(t_f)

注意:PMP 给出的是必要条件,不是充分条件。也就是说,满足 PMP 的不一定是最优解,但最优解一定满足 PMP。我曾经在这个坑里摔过——算出一个满足 PMP 的解,结果发现是局部最优,不是全局最优。

2.2.3 一个简单的例子:最小时间控制

假设我们要控制一个质点从静止到指定位置,时间最短。控制量是加速度,有上下界。

状态:x₁ = 位置, x₂ = 速度
控制:u = 加速度, |u| ≤ 1
目标:min t_f

哈密顿函数:
H = 1 + λ₁ x₂ + λ₂ u

最优性条件:
u* = -sign(λ₂)

协态方程:
λ̇₁ = 0
λ̇₂ = -λ₁

你看,最优控制就是 bang-bang 控制——要么全加速,要么全减速。这就是 PMP 的威力,它直接告诉你控制的结构。

避坑指南:我曾经在写代码时,直接用数值优化去解这个最小时间问题,结果收敛很慢。后来改用 PMP 先分析控制结构,再数值求解切换时间,速度提升了10倍。所以我的建议是——先用 PMP 做定性分析,再用数值方法做定量计算。

2.3 变分法与 PMP 的关系

其实,PMP 可以看作是变分法在最优控制中的推广。变分法处理的是无约束或等式约束的泛函极值,而 PMP 处理的是有不等式约束(控制约束)的问题。

我个人的理解是这样的:

  • 变分法:告诉你「沿着最优轨迹,任何微小扰动都不会让性能指标变好」
  • PMP:告诉你「在每一个时刻,控制量都要让哈密顿函数取极小值」

一个是全局视角,一个是局部视角。两者相辅相成。

2.4 知识体系总览

下面这张图是我自己整理的变分法与 PMP 的知识结构,希望能帮你理清思路:

变分法与庞特里亚金极小值原理知识体系 变分法 泛函极值问题 • 欧拉-拉格朗日方程 • 横截条件 • 勒让德条件(二阶条件) • 等周问题与拉格朗日乘子 • 变分法的直接法与间接法 庞特里亚金极小值原理 最优控制理论核心 • 哈密顿函数定义 • 状态方程与协态方程 • 最优性条件(极小值条件) • 横截条件与边界条件 • 奇异控制与 bang-bang 控制 推广 工程应用场景 🚀 火箭上升段轨迹优化 ✈️ 飞机巡航段油耗最小化 🛰️ 卫星轨道转移与交会 🎯 导弹制导律设计 🤖 机器人运动规划 ⚡ 能量最优控制 核心:变分法 → PMP → 数值求解 → 工程实现

2.5 学习建议

说实话,这一章的内容确实抽象。我当年学的时候也花了很长时间才真正「悟」透。给你几个建议:

  • 先理解思想,再抠细节。别一上来就盯着欧拉-拉格朗日方程的推导不放。先搞清楚「变分法在干什么」。
  • 动手算一个小例子。比如上面那个最小时间控制,手算一遍,比看十遍书都管用。
  • 别怕协态变量。很多人一看到 λ 就头大。其实它就是「影子价格」——告诉你状态变化对性能指标的影响有多大。

我的小技巧:每次做轨迹优化之前,我都会先手写一遍 PMP 的必要条件。哪怕最后用数值方法求解,这一步也能帮我避免很多低级错误。嗯,这习惯保持了十年了。

好了,这一章就到这里。变分法和 PMP 是轨迹优化的「内功心法」,练好了,后面的数值方法才能用得顺手。下一章我们开始讲数值优化方法——那才是真正干活用的工具。


公众号:蓝海资料掘金营,微信deep3321