1. 引言
想象在三维空间中有一个光滑的曲面 S,比如一个完美的球面或者一个平缓的山坡。我们在这个曲面上选取一个点 a。这个点所在的区域必须是“光滑”的,不能有任何“褶皱 (fold)”、“尖点 (cusp)”或者“自我相交 (self-crossing)”的地方。比如,一个圆锥体的顶点就不是光滑的。
- 我们怎么定义在
a点的切平面呢?PPT给出的方法是:- 想象有一张无限大的、平坦的纸(我们称之为平面 $Π$),一开始它在曲面
S的外部。 - 现在,我们慢慢地把这张纸向曲面
S移动,直到它刚刚好在a点附近“接触”到曲面。 - 关键在于,这个接触是“相切”的,意味着平面只在
a这一个点上碰到了曲面,而没有“切入”或“穿过”曲面。
- 想象有一张无限大的、平坦的纸(我们称之为平面 $Π$),一开始它在曲面
这个过程,就好像你拿一个乒乓球,然后用手掌轻轻地托住它,你的手掌在接触点的位置就形成了一个切平面。这和我们在中学数学里学习的“平面光滑曲线的切线”的概念是完全类似的,只是从二维的线升级到了三维的面。
这种直观的“移动平面”的想法虽然易于理解,但在数学上不够严谨,也无法用于计算。因此,这节课将介绍一种具体、严谨且数学上可靠的方法,利用梯度 (gradient) 这个强大的工具来精确地定义和计算切平面(或更广义的切空间)。
2. 参数化曲线的切线
2.1. 参数化曲线 (Parametrised Curve)
- 定义: 在 n 维空间 ($\mathbb{R}^{n}$) 中,一条参数化曲线 $C$,被定义为一个连续函数 $α$ 的像 (image) 。
- 这个函数 $α$ 的输入是一个来自实数轴的闭区间 $[r, s]$ 。
- 函数的输出是 $n$ 维空间中的一个点。
- 我们可以把这个映射关系写成: $$\alpha:[r,s]\to\mathbb{R}^n$$ 这里的 $t∈[r,s]$ 就是我们常说的参数。你可以把它想象成时间。随着时间 $t$ 从起始时刻 $r$ 流逝到终止时刻 $s$,函数 $α(t)$ 所对应的点就在 $n$ 维空间中运动,描绘出的轨迹就是曲线 $C$。
- 如果 $n=2$,也就是曲线在二维平面上,我们称之为平面曲线 (plane curve) 。
- 如果 $n=3$,也就是曲线在三维空间中,我们称之为空间曲线 (space curve) 。
2.1.1. 两个非常经典的例子
摆线 (Cycloid): 这是一个平面曲线的例子。
- 函数是 $\alpha:[0,2\pi]\to\mathbb{R}^2$ 。
- 具体表达式为 $\alpha(t)=(t-\sin t,1-\cos t)$ 。
右旋圆柱螺旋线 (Right circular helix): 这是一个空间曲线的例子。
- 函数是 $\beta:[-3\pi,6\pi]\to\mathbb{R}^3$。
- 具体表达式为 $\beta(t)=(\cos t,\sin t,t)$。
参数化的非唯一性: 这是一个非常重要的概念。同一条几何曲线可以有多种不同的参数化方式。
- 比如,一个单位圆,我们可以用 $α(t)=(cost,sint)$,$t∈[0,2π]$ 来参数化。
- 我们也可以用 $γ(t)=(cos(2t),sin(2t))$,$t∈[0,π]$ 来参数化。这条曲线的几何形状和上面完全一样,但你可以把它想象成是以两倍的速度画完了这个圆。
- 我们甚至可以用 $δ(t)=(cost,−sint)$,$t∈[0,2π]$ 来参数化,这会得到一个顺时针画出的圆。
- 这个性质为什么重要?因为当我们接下来要讨论“切向量”时,切向量是通过对参数化函数求导得到的。选择不同的参数化方式(比如运动的速度和方向不同),得到的切向量也会不同(方向可能相同,但长度会不一样)。这就把纯粹的几何形状和“运动学”的性质(如速度、加速度)联系了起来。
2.2. 切向量
- 曲线的方向性 (Orientation)
我们之前讨论的“方向”概念,称之为定向 (orientation) 。一条由$α(t)$ 参数化的曲线 $C$,随着参数 $t$ 从区间的起点 $r$ 增加到终点 $s$,点会沿着曲线运动 。这个路径有明确的起点 $P=α(r)$ 和终点 $Q=α(s)$。从起点 $P$ 到终点 $Q$ 的方向被定义为正方向 (positive direction),反之则为负方向 。
闭合曲线 (closed curve):如果起点和终点重合,即 $P=Q$,那么这条曲线就是闭合的 。
- 曲线的光滑性 (Smoothness)
一条曲线 $C$ 是可微的 (differentiable),如果它的参数化函数 $α$ 是一个可微函数 。这意味着我们可以对 $α(t)$ 的每一个分量求导数。
一条曲线 $C$ 是 $C^1$ 的(读作 "C-one"),如果它的参数化函数 $α$ 是一个 $C^1$ 函数 。这不仅要求导数 $α′(t)$ 存在,还要求这个导函数本身是连续的 。
- 切向量的定义 (Definition of Tangent Vector)
假设我们有一条可微的曲线 $C$,由 $α$ 参数化。我们在这条曲线上任取一点 $a$,这个点对应某个参数值 $t_0$,即 $a=α(t_0)$ 。那么,参数化函数在 $t_0$ 处的导数 $α′(t_0)$,就被定义为曲线 $C$ 在点 $a$ 处的切向量 (tangent vector) 。这个向量的方向就是我们之前定义的正方向。
切向量的物理意义:瞬时速度 这是理解切向量最直观、最重要的方式。
- 如果把参数化函数 $α(t)$ 看作一个粒子在时间 $t$ 的位置。
- 那么它的导数 $α′(t)$,根据物理学的定义,就是这个粒子在时间 $t$ 的瞬时速度 (instantaneous velocity)。
- 速度是一个向量,它包含两个信息:
- 方向: 粒子在这一瞬间前进的方向,这正是曲线的切线方向。
- 大小 (Magnitude): 粒子在这一瞬间的速率(speed),即 $∣α′(t_0)∣$。
- 我们常常要求曲线是 $C^1$ 的,就是要求导数 $α′(t)$ 连续
- 从物理上讲,$α′(t)$ 是速度。如果速度不连续,意味着粒子可以在一瞬间“跳变”速度,比如从静止瞬间达到100km/h。这需要无穷大的加速度,在宏观物理世界中是不可能的。
- 从几何上讲,一个 $C^1$ 的曲线,它的切向量方向是平滑变化的,不会发生突变。因此,这条曲线看起来就非常“圆滑”,没有任何尖角。
- 切向量和切线的关系
- 切向量 $α′(t_0)$ 是一个向量,有大小和方向,通常我们把它画成一个始于点 $a$ 的箭头。
- 切线是一条穿过点 $a$,并且方向与切向量 $α′(t_0)$ 平行的直线。
- 我们可以用参数方程来表示这条切线:$L(u)=a+u⋅α′(t_0)$。这里 $u$ 是一个新的参数,当 $u$ 取遍所有实数时,就画出了整条切线。
2.2.1. 零向量情况
当切向量为零向量时,那么曲线在该点可能不是光滑的,因此我们无法定义那里的切空间(或切线)。
物理理解:切向量 $α′(t)$ 代表的是速度。$α′(t_0)=0$ 意味着质点在 $t_0$ 这个时刻的瞬时速度为零,它“停下来了”。当一个物体停下来之后,它可以选择朝任何方向重新启动,这导致了方向的不确定性,因此无法定义唯一的切线方向。
两个典型的例子,来说明速度为零时可能出现的“不光滑”情况。
- 尖点 (Cusp)
参数化方程为: $\alpha(t)=(t^2,t^3)$
- 当 $t=0$ 时,点的位置是 $α(0)=(0^2,0^3)=(0,0)$。
- 求导得到速度向量:$α′(t)=(2t,3t^2)$。
- 当 $t=0$ 时,速度是 $α′(0)=(2⋅0,3⋅0^2)=(0,0)$。
- 几何形状: 这条曲线 $y^2=(t^3)^2=(t^2)^3=x^3$,即 $y^2=x^3$。它的图像在原点形成一个非常尖锐的点,就像鸟嘴一样,这就是“尖点” 。想象一个点,它从左上方开过来,在原点处速度降为零,然后瞬间反向,向右上方开走。这个“急刹车并掉头”的过程就形成了尖点。
- 角 (Corner)
这是一个分段定义的参数化方程: $$\alpha(t)=\begin{cases}(t^2,0)&\mathrm{if~}t\in[-1,0]\(0,t^2)&\mathrm{if~}t\in[0,1]&&\end{cases}$$
- 运动轨迹:
- 当时间 $t$ 从-1到0,点的位置是 $(t^2,0)$。这意味着点沿着x轴正方向,从(1,0)移动到(0,0)。
- 当时间 $t$ 从0到1,点的位置是 $(0,t^2)$。这意味着点沿着y轴正方向,从(0,0)移动到(0,1)。
- 几何形状: 这两条路径在原点 (0,0) 处汇合,形成了一个直角,也就是一个“角” 。
- 在 $t=0$ 这一点,函数是可微的,并且导数(速度)恰好是 α′(0)=(0,0) 。这同样符合我们的直观感受:点移动到原点时“停下”,然后“拐了个直角弯”再重新出发。在这样一个尖锐的拐角处,显然无法定义一条唯一的切线。
- 在微分几何中,我们有更专业的术语来描述这种情况。如果一条曲线在 t0 点的切向量 $\alpha^{\prime}(t_0)\neq\mathbf{0}$,我们称这个点为正则点 (regular point)。在所有正则点上,切线都是良好定义的。
- 如果 $α′(t_0)=0$,我们称这个点为奇点 (singular point)。尖点和角都发生在奇点上。奇点的几何性质需要更复杂的工具来分析。
- 奇点不一定都“不光滑”,即 $α′(t_0)=0$ 并不绝对等于几何上的“尖点”或“角”。考虑曲线 $α(t)=(t^3,0)$。它的导数是 $α′(t)=(3t^2,0)$。在 $t=0$ 时,$α′(0)=(0,0)$,所以原点是一个奇点。
计算切向量时,如果结果是零向量,就需要警惕。这通常意味着该点是几何上的一个奇点(如尖点或角),在这些点上,常规的切线定义失效了。
3. 水平集
3.1. 水平集 (Level Set)
- 设定: 我们有一个标量场 (scalar field) $f$。简单来说,就是一个函数,它的输入是 $n$ 维空间中的一个点 $x∈\mathbb{R}^{n}$,输出是一个实数(标量)。
- 定义: 对于任意一个选定的实数 $c$,所有能够使函数值恰好等于 $c$ 的输入点 $x$ 的集合,就叫做函数 $f$ 在高度 $c$ 上的水平集 。
- 数学公式: $$L_c(f)={x\in\mathcal{D}|f(x)=c}$$ 这个定义的本质是:通过一个方程来定义一个几何形状。
3.2. 切空间 (Tangent Space)
- 前提条件:
- 函数 $f$ 必须是可微的 。
- 我们研究的点 $a$ 必须在水平集上,即 $a\in L_c(f)$ 。
- 最关键的条件: 函数 $f$ 在点 $a$ 的梯度不能是零向量,即 $\nabla f(a)\neq\mathbf{0}$ 。这个条件保证了点 a 是一个“平滑点”。
定义: 在满足以上条件时,水平集 $L_c(f)$ 在点 $a$ 的切空间 $\Theta_a(L_c(f))$ 被定义为:所有与梯度向量 $\nabla f(a)$ 正交(垂直)的向量 $v$ 所组成的集合 。
数学公式:$$\Theta_a(L_c(f))={v\in\mathbb{R}^n|\nabla f(a)\cdot v=0}$$ 梯度向量 $∇f(a)$ 确定了一个方向,而切空间就是所有与这个方向垂直的向量构成的空间 。这反过来意味着: 梯度 $∇f(a)$ 的方向,就是垂直于水平集在 a 点的切平面的方向。 因此 $∇f(a)$ 就是该点的法向量 (normal vector)。
切平面的方程 (以3D为例) 这个抽象的定义可以马上转化为我们熟悉的切平面方程。
- 设法向量为 $n=∇f(a)=(f_x(a),f_y(a),f_z(a))$。
- 设切平面经过的点为 $a=(x_0,y_0,z_0)$。
- 设平面上任意一点为 $P=(x,y,z)$。
- 那么,从 a 指向 P 的向量 $aP = (x−x_0,y−y_0,z−z_0)$ 必然位于切空间内。
- 根据定义,这个向量必须与法向量垂直,所以它们的点积为0: $$\mathbf{n}\cdot aP=0$$ $$f_x(a)(x-x_0)+f_y(a)(y-y_0)+f_z(a)(z-z_0)=0$$
我们刚刚定义的切空间,其维度是 $n−1$,这里的 $n$ 是我们所在空间的维度。
如果我们在三维空间中 $(n=3)$,一个水平集通常是一个曲面(比如球面),那么在曲面上某一点的切空间就是一个切平面,平面的维度是 2,正好是 3−1。
如果我们在二维空间中 $(n=2)$,一个水平集通常是一条曲线(比如圆),那么在曲线上某一点的切空间就是一条切线,直线的维度是1,正好是 2−1。
光滑点 (Smooth Point): 这就是刚才平滑点的一个正式的名称。如果一个点 $a$ 所在的水平集 $L_c(f)$ 满足 $\nabla f(a)\neq\mathbf{0}$,那么我们就称 $a$ 是该水平集的一个光滑点 。这正是上一页定义切空间的关键前提条件,它排除了那些“不光滑”的奇点(比如圆锥的顶点)。
3.3. 法向量(normal vector)
设 $f$, $L_c(f)$ 和 $Θ_a(L_c(f))$ 如前所定义。在点 $a$ 处,水平集 $L_c(f)$ 的一个法向量 (normal vector) $u$ 是指一个与切空间 $Θ_a(L_c(f))$ 中所有向量都正交的向量
上一页我们定义切空间是“所有与梯度垂直的向量的集合”。那么反过来看,梯度向量本身自然就垂直于切空间里的所有向量。因此,$∇f(a)$ 就是一个法向量。任何与 $\nabla f(a)$同方向或反方向的向量(即乘以一个标量),也同样垂直于整个切空间,所以它们也都是法向量。所以,法向量就是梯度向量 $∇f(a)$ 的标量倍数。
法线空间 (Normal Space)
- 在点 $a$ 处,所有的法向量(即所有 $∇f(a)$ 的标量倍数)也构成一个向量空间。这个空间是由单个向量 $∇f(a)$ 张成的,因此它是一个一维空间,我们通常称之为法线 (Normal Line)。
- 正交补: 在 n 维空间中,一个点的 $(n−1)$ 维切空间和 1 维法线空间是正交补关系。它们俩是完全垂直的,并且它们的维度之和 $(n−1)+1=n$,正好等于整个空间的维度。
在上述应用中,我们通常只关心法向量的方向,而不在乎它的长度(梯度的模长代表函数值变化的速度,但这和表面的几何朝向无关)。因此,在实际计算中,我们几乎总是将梯度向量进行单位化,得到单位法向量 $\mathbf{\hat{n}}$: $$\mathbf{\hat{n}}=\frac{\nabla f(a)}{|\nabla f(a)|}$$
3.4. 切向量和切空间的联系
前提条件:
- 有一个可微的标量场 $f$ 。
- 有一条可微的参数化曲线 $α(t)$ 。
- 最关键的设定: 这条曲线 $α(t)$ 的整个轨迹都位于函数 $f$ 的某一个水平集 $L_c(f)$ 上 。
- 我们考察的点 $a=α(t_0)$ 是水平集上的一个光滑点(即 $\nabla f(a)\neq\mathbf{0}$ )。
在这种情况下,曲线在 $a$ 点的切向量 $α′(t_0)$,必然是水平集(曲面)在 $a$ 点的切空间 $Θ_a(L_c(f))$ 中的一员 。
- 用数学语言来说: $\alpha^{\prime}(t_0)\in\Theta_a(L_c(f))$
这个命题说的是一件非常符合直觉的事情。想象一下,一个水平集是一个球面。如果你在这个球面上画了一条线(这条线就是参数化曲线),那么你在这条线上任何一点的前进方向(切向量),必然是“贴着”这个球面的,也就是说,这个方向一定位于该点的切平面(切空间)内。你不可能沿着球面上的一条线走,但你的前进方向却是指向天空的。
证明:
- 因为我们已经规定曲线 $α(t)$ 始终在水平集 $L_c(f)$ 上,所以对于曲线上所有的点,函数值 $f$ 永远等于常数 $c$ 。即: $$f(\alpha(t))=c,\quad\text{for all }t$$
- 现在,我们对这个等式的两边关于参数 $t$ 求导。右边常数 $c$ 的导数是 0。左边是一个复合函数,我们需要使用链式法则 (chain rule) 。
- 根据多元函数的链式法则,我们得到: $$\frac{d}{dt}f(\alpha(t))=\nabla f(\alpha(t))\cdot\alpha^{\prime}(t)$$
- 因此,我们有 $∇f(α(t))⋅α′(t)=0$。在 $t=t_0$ 这个特定的时刻,我们就得到了: $$\nabla f(a)\cdot\alpha^{\prime}(t_0)=0$$ 我们再回忆一下切空间的定义:切空间 $Θ_a(L_c(f))$ 正是由所有与梯度向量 $∇f(a)$ 点积为零的向量组成的集合 。根据定义证明完毕。
这个命题是约束优化理论的基石。在很多机器学习问题中,我们需要在一个约束条件 $g(x)=c$ 下,去寻找某个目标函数 $h(x)$ 的最小值。
- 这个约束条件 $g(x)=c$ 就定义了一个水平集(曲面)。我们的搜索范围被限制在了这个曲面上。
- 这个命题告诉我们,任何在约束曲面上的可行移动方向(切向量),都必须满足与该点梯度(法向量)正交的条件。
- 这正是拉格朗日乘数法等高级优化算法的几何出发点。
3.4.1. 更抽象的定义
一个更通用、更抽象的定义切空间的方法,这个方法源自于数学的一个高级分支微分几何 (Differential Geometry)。
我们之前定义的切空间方法(参数化法用于曲线,水平集法用于曲面)虽然好用,但还不够通用。如果我们想为任意一个子集 $S\subset\mathbb{R}^n$ 定义切空间,就需要引入“流形 (manifold)”的概念。
流形的核心思想:一个复杂的、弯曲的 $k$ 维空间(比如地球表面),在局部看起来就像一个平坦的 $k$ 维欧几里得空间(比如一张地图)。流形理论就是通过用许多张平坦的“地图”拼接覆盖,来研究这些复杂的弯曲空间。
更通用的切空间定义:
核心思想:我们通过一个叫做参数化的映射 $α$,把一个简单的、平坦的 $k$ 维空间 $\mathbb{R}^{k}$ “贴”到我们研究的 $k$ 维子集 $S$ 上,从而在 $S$ 上建立一个局部的“坐标系”。
- 参数化映射 $α$ 的性质:
- 映射关系: $α:\mathbb{R}^{k}→S$。它把 $k$ 维参数空间中的点映射到 $n$ 维空间中的子集 $S$ 上 ($k≤n$)。
- 双射和可微: 这个映射是双射 (bijective)(一一对应,无重叠无遗漏)和可微的,保证了这种“粘贴”是平滑且无撕裂的。
- 原点对应: 它把参数空间的原点 0 映射到我们关心的点 $a∈S$,即 $α(0)=a$ 。
- 秩最大化: 映射 $α$ 在原点的导数(在这里记为线性映射 $T_0α$,其实就是雅可比矩阵)必须有最大的可能秩 (rank),即秩为 $k$ 。这保证了映射在局部没有发生“降维坍缩”,$k$ 维的东西确实被映射成了 $k$ 维。
- 切空间的定义: 在满足以上条件时,$S$ 在点 $a$ 的切空间,就被定义为这个线性映射 $T_0α$ 的像 (image) 。像指的是所有可能的输出向量构成的集合,这个集合本身是一个 $n$ 维空间中的 $k$ 维线性子空间 。
用 $T_aα$ 来表示在点 $a$ 的导数(或称为切映射, Tangent Map)是微分几何中的标准符号。对于一个函数 $\alpha:\mathbb{R}^k\to\mathbb{R}^n$,它对应的就是我们熟悉的雅可比矩阵 (Jacobian Matrix) $Dα(a)$ 所代表的线性变换。
3.5. 推广到向量场
3.5.1. 向量场的水平集 (Level Sets of Vector Fields)
设定: 我们不再处理输出为单个数字的标量场 $f:\mathbb{R}^n\to\mathbb{R}$,而是处理输出为一个向量的向量场 $f:\mathbb{R}^n\to\mathbb{R}^m$ 。这个向量场由 $m$ 个分量函数构成,$f=(f_1,…,f_m)$ 。
定义: 向量场的水平集 $L_c(f)$ 是所有使得函数输出等于某个常数向量 $c=(c_1,…,c_m)$ 的点 $x$ 的集合 。它的数学表达式是: $$L_c(f):={x\in\mathbb{R}^n|f(x)=c}$$ 关键的几何意义: 这个定义本质上是在求解一个方程组: $$\begin{cases}f_1(x_1,\ldots,x_n)=c_1\f_2(x_1,\ldots,x_n)=c_2\\vdots\f_m(x_1,\ldots,x_n)=c_m&\end{cases}$$ 这个解集的几何形状,正是由每个单独方程所定义的水平集(它们都是 $n−1$ 维的超曲面)的交集 。 $$L_c(f)=L_{c_1}(f_1)\cap\cdots\cap L_{c_m}(f_m)$$
3.5.2. 向量场水平集的切空间 (Tangent Space)
定义: 在点 $a$ 的切空间被定义为所有向量 $x$,使得 $f$ 在 $a$ 点的导数(一个线性映射)作用在 $x$ 上结果为零向量 。
数学表达式为: $$\Theta_a(L_c(f)):={x\in\mathbb{R}^n|T_af(x)=\mathbf{0}}$$ 这里的 $T_af$ 是 $f$ 在 $a$ 点的导数,它由一个 $m×n$ 的雅可比矩阵表示。这个定义实际上是说,切空间是线性映射 $T_af$ 的零空间 (null space) 或核 (kernel)。
- 关键前提条件: 这个定义只有在线性映射 $T_af$ 具有最大可能秩 (rank),即秩为 $m$ 时才成立 。
直观几何例子 (交集) 让我们在三维空间 $\mathbb{R}^{3}$ (n=3) 中看一个例子,这会让概念清晰很多。
- 考虑第一个函数 $f_1(x,y,z)=x^2+y^2+z^2$。它的水平集 $L_1(f_1)$ 是一个单位球面。这是一个二维曲面。
- 考虑第二个函数 $f_2(x,y,z)=z$。它的水平集 $L_{0.5}(f_2)$ 是一个在 $z=0.5$ 处的水平面。这也是一个二维曲面。
- 现在我们定义一个向量场 $f=(f_1,f_2):\mathbb{R}^3\to\mathbb{R}^2\left(m=2\right)$。
- 那么它的水平集 $L_{(1,0.5)}(f)$ 就是上述球面和水平面的交集。一个球面和一个平面相交,得到的是什么?是一个圆。
- 这个例子清晰地显示了,两个二维曲面相交,可以得到一个一维的曲线。
- 最大秩”条件的意义 这个条件等价于说,在点 a 处,各个分量函数的梯度向量 $∇f1(a),∇f2(a),…,∇fm(a)$ 是线性无关的。
- “梯度向量线性无关”这个条件,在微分几何里有一个专门的术语,叫做横截相交 (transverse intersection)。这是流形之间最“理想”、最“稳定”的相交方式。满足横截相交的条件,可以保证交集本身也是一个光滑的、低一维度的流形,并且其切空间可以用我们讨论的交集公式来计算。
- 几何意义: 这保证了每个约束方程都是“有效”的,它们在相交点提供了不同方向的约束。如果两个梯度向量共线(线性相关),那它们定义的两个曲面在该点就是相切的,它们的交集可能会产生奇点,导致切空间无法唯一定义。
- 切空间的几何意义 (交集的切空间) 这个定义完美地符合几何直观:交集的切空间,就是切空间的交集。
- 一个向量 $v$ 如果要“贴着”前面例子中的那个圆圈运动,那么它必须同时“贴着”球面,也同时“贴着”平面。
- 也就是说,向量 $v$ 必须同时位于球面的切平面和水平面的切平面中。
- 换言之,$v$ 必须同时垂直于球面的法向量 $∇f1(a)$ 和平面的法向量 $∇f2(a)$。
- 而条件 $T_af(v)=0$ 正是这个意思的矩阵形式,它等价于方程组: $$\begin{cases}\nabla f_1(a)\cdot v=0\\nabla f_2(a)\cdot v=0\\vdots&&\end{cases}$$
- 交集物体的维度 线性代数中的秩-零度定理告诉我们:$\operatorname{rank}(T)+\dim(\operatorname{nullspace}(T))=n$。
- 切空间的维度就是零空间的维度。
- 前提条件是 $\operatorname{rank}(T_af)=m$。
- 因此,切空间的维度是 $n−m$。
- 在我们球面与平面相交的例子中,$n=3$,$m=2$。那么交集(圆)的维度就是 $3−2=1$。这与事实完全相符。这个公式为我们提供了一个计算由多个方程定义的几何对象维度的强大工具。
4. 最优化问题
4.1. 两种“极值”
- 相对/局部极值 (Relative/Local Extrema)
这个概念关注的是函数在某一点及其附近的行为。
- 相对/局部最大值 (relative/local maximum) :一个点 $a$ 被称为局部最大值,指的是在点 $a$ 的一个(可能非常小的)邻域里,点 $a$ 的函数值 $f(a)$ 是最大的 。也就是说,$f(a)$ 比它所有“邻居”的函数值都要大(或相等) 。
- 数学语言描述是:存在一个以 $a$ 为中心、半径为 $r$ 的开球 $B_a(r)$,对于所有在这个球内并且也属于定义域 $D$ 的点 $u$,都有 $f(u)≤f(a)$ 。
- 相对/局部最小值 (relative/local minimum) :同理,一个点 $a$ 被称为局部最小值,指的是在点 $a$ 的一个小邻域里,它的函数值 $f(a)$ 是最小的 。
- 数学语言描述是:... 对于所有 ... 点 $u$,都有 $f(u)≥f(a)$ 。
- 相对/局部极值 (relative/local extremum) :如果一个点既是局部最大值,又是局部最小值,那它就是局部极值点 。
- 绝对/全局极值 (Absolute/Global Extrema)
- 定义: 全局极值的定义与局部极值非常相似,唯一的区别在于比较的范围 。局部极值只和“邻居”比较,而全局极值需要和定义域 $D$ 内的所有点进行比较 。
- 绝对/全局最大值: 点 $a$ 是全局最大值,如果 $f(a)$ 是整个函数定义域上的最大值。
- 绝对/全局最小值: 点 $a$ 是全局最小值,如果 $f(a)$ 是整个函数定义域上的最小值。
4.2. 极值引理
- 前提条件:
- 我们有一个可微的标量场函数 $f$。
- 点 $a=(a_1,…,a_n)$ 是一个相对极值点(即局部最大值或局部最小值)。
- 一个非常关键的技术性要求:点 $a$ 必须是定义域 $D$ 的一个内部点 $(a∈D_0)$,不能是边界上的点。
- 结论: 如果以上条件全部满足,那么函数 $f$ 在点 $a$ 的梯度向量必须为零向量。 $$\nabla f(a)=\mathbf{0}$$ 证明:
- 定义了一个辅助的一维函数 $g_j(t)=f(a+t\mathbf{e}_j)$。这里的 $\mathbf{e}_j$ 是第 $j$ 个坐标轴方向的单位向量。这个函数 $g_j(t)$ 相当于从多维函数 $f$ 中,沿着穿过 $a$ 点的第 $j$ 个坐标轴方向“切”出来的一条曲线。
- 应用一维结论: 如果 $f$ 在点 $a$ 取得极值,那么这个“切片”函数 $g_j(t)$ 也必然在 $t=0$ 处取得极值。根据我们熟知的单变量微积分知识(费马引理),一个可微函数在内部极值点的导数必须为零。所以,$g_j′(0)=0$。
- 连接偏导数: $g_j′(0)$ 的定义是什么?根据导数的极限定义,它正好就是 $f$ 在点 $a$ 处沿 $x_j$ 方向的偏导数 $\frac{\partial f}{\partial x_j}(a)$ : $$g_j^{\prime}(0)=\lim_{h\to0}\frac{f(a+h\mathbf{e}_j)-f(a)}{h}=\frac{\partial f}{\partial x_j}(a)$$
- 组合成梯度: 因为这个结论对每一个坐标方向 $j=1,…,n$ 都成立,所以函数 $f$ 在点 $a$ 的所有偏导数都必须为零。
- 一个所有分量都为零的向量,就是零向量。因此,我们得出结论: $\nabla f(a)=(\frac{\partial f}{\partial x_1}(a),\ldots,\frac{\partial f}{\partial x_n}(a))=\mathbf{0}$ 。
这个引理给了我们一个非常强大的工具来寻找极值。我们不再需要盲目地检查定义域里的每一个点。我们只需要去解一个方程组: $$\nabla f(x)=\mathbf{0}$$ 所有满足这个方程的点,我们称之为驻点 (stationary points) 或 临界点 (critical points)。这个引理告诉我们:所有的内部极值点,都必然是驻点。因此,我们只需要在驻点这个有限的“候选名单”里去寻找极值即可,极大地缩小了搜索范围。
这里我们特别强调点 a 必须是内部点。那么如果极值出现在定义域的边界上怎么办?
- 例如,求函数 f(x)=x 在闭区间 $[0,1]$ 上的最大值。最大值点是 $x=1$,但$f^{\prime}(1)=1\neq0$。这并不与引理矛盾,因为 $x=1$ 是边界点。
- 这提醒我们,一个完整的优化问题求解,通常需要两步:
- 求解 $∇f(x)=0$,找到所有内部的驻点。
- 单独分析函数在边界上的行为,找到边界上的极值点。
- 最后,比较所有内部驻点和边界极值点的函数值,才能确定全局最大/最小值。
4.3. 驻点和鞍点
1. 驻点 (Stationary Point)
- 定义: 对于一个可微的标量场 $f$,如果一个点 $a$ 满足 $∇f(a)=0$,那么这个点就被称为驻点。
- 名称由来: “驻点”这个名字可以从物理学角度理解。如果 $f$ 是一个势能函数,那么物理上的力就是 $−∇f$。在梯度为零的点,合力为零,因此一个粒子放在该点会保持“静止驻留”的状态。从几何上看,驻点就是函数图像上“平坦”的点。
- 作用: 驻点是我们寻找内部极值点的候选点。
2. 鞍点 (Saddle Point)
- 定义: 如果一个驻点不是相对极值点(既不是局部最大值也不是局部最小值),那么它就被称为鞍点。
- 更精确的描述: 一个点 $a$ 是鞍点,如果在它周围任意小的邻域 $B_a(r)$ 内,我们总能找到点 $x$ 和点 $x′$,使得 $f(x)≥f(a)$ 并且 $f(x′)≤f(a)$。
- 直观解释:无论邻域取得多小,总能在点 $a$ 的附近找到比它高的地方,也能找到比它低的地方。这意味着,在鞍点,函数没有形成一个局部的“山峰”或“谷底”。
仅靠一阶导数(梯度)为零是不足以判断极值的,我们必须通过其他方法(比如“切片法”,或者更强大的Hessian检验)来进一步分析驻点周围的函数行为。
4.4. 泰勒定理
我们已经知道,在驻点处,一阶导数(梯度)为零,无法提供更多信息。为了看清周围地势的“弯曲”情况,我们需要更高阶的信息,也就是二阶导数。泰勒公式就是系统性地利用各阶导数来逼近一个复杂函数的方法。
前提: 函数 $f$ 的二阶偏导数存在且连续。
公式: $$f(a+v)-f(a)=\nabla f(a)\cdot v+\frac{1}{2!}vHf(a+\theta v)v^\top$$ 这是多元函数的二阶泰勒公式,其中 $θ$ 是某个在 (0,1) 之间的数。
我们可以把它和我们熟悉的一维泰勒公式对比来理解: $$f(x)\approx f(a)+f^{\prime}(a)(x-a)+\frac{1}{2}f^{\prime\prime}(a)(x-a)^2$$
- $f(a+v)-f(a)$:表示当位置从点 $a$ 移动一个小位移 $v$ 时,函数值的真实变化量。
- $\nabla f(a)\cdot v$:这是一阶项(线性近似)。它用梯度(一阶导数)来估算函数值的变化,几何上对应的是用切平面来近似函数曲面。
- $\frac{1}{2!}vHf(a+\theta v)v^\top$:这是二阶项(二次近似)。这是全新的、也是最关键的部分。
- $Hf(x)$ 是Hessian矩阵(下会定义),它是所有二阶偏导数组成的矩阵,是多变量函数中“二阶导数”的替代品。
- 表达式 $vHv^{\top}$ 是一种二次型 (Quadratic Form),它描述了函数曲面在点 $a$ 附近的弯曲程度和方向。
在驻点 $a$ 处,我们有 $∇f(a)=0$,把这个条件代入泰勒公式,一阶项就消失,公式简化为: $$f(a+v)-f(a)\approx\frac{1}{2}vHf(a)v^\top$$ 在驻点附近,函数的行为(是上升还是下降)完全由二阶项,也就是Hessian矩阵来决定。
$vHv^\top$ 中这里的 $v$ 是一个 $1×n$ 的行向量,$H$ 是一个 $n×n$ 的矩阵,v⊤ 是一个 $n×1$ 的列向量。 整个乘法运算 $vHv^\top$ 的结果是一个 1×1 的矩阵,也就是一个标量(一个数)。这个运算在数学和物理中非常常见,用于描述能量、曲率等。
5. Hessian 矩阵
5.1. 定义
前提: 我们有一个标量场函数 $f$,并且它的所有二-阶偏导数 $\frac{\partial^2f}{\partial x_i\partial x_j}$ 都存在。
定义: 在点 $a$ 的 Hessian 矩阵 $Hf(a)$ 是一个 $n×n$ 的方阵,它的第 $i$ 行第 $j$ 列的元素,就是函数 $f$ 先对 $x_j$ 再对 $x_i$ 求偏导后在点 $a$ 的取值。
公式: $$Hf(a)=\left(\frac{\partial^2f}{\partial x_i\partial x_j}(a)\right)$$ Hessian 行列式: Hessian矩阵的行列式,记为 $det Hf(a)$。
为了让这个定义更具体,我们来看二维情况 $f(x,y)$ 的例子,Hessian矩阵就是: $$Hf(x,y)=\begin{pmatrix}\frac{\partial^2f}{\partial x^2}&\frac{\partial^2f}{\partial x\partial y}\\frac{\partial^2f}{\partial y\partial x}&\frac{\partial^2f}{\partial y^2}\end{pmatrix}=\begin{pmatrix}f_{xx}&f_{xy}\f_{yx}&f_{yy}\end{pmatrix}$$ Hessian行列式就是 $$f_{xx}f_{yy}-f_{xy}f_{yx}$$ 如果函数 $f$ 的所有二阶偏导数不仅存在而且还是连续的,那么Hessian矩阵就是一个对称矩阵 (symmetric matrix)。
- 对称矩阵意味着矩阵等于其转置,即第 $i$ 行 $j$ 列的元素等于第 $j$ 行 $i$ 列的元素。
- 这背后是数学分析中的克莱罗定理 (Clairaut's Theorem),它表明对于性质足够好的函数,混合偏导数的求导次序无关,即: $$\frac{\partial^2f}{\partial x_i\partial x_j}=\frac{\partial^2f}{\partial x_j\partial x_i}$$
5.2. 正定/负定的稳定性
- 前提: 函数 $f$ 的二阶偏导数存在且连续。
- 结论:
- (a) 如果Hessian矩阵在点 $a$ 是正定的 ($Hf(a)>0$),那么在 a 附近的一个足够小的邻域 $B_a(δ)$ 内,所有点 $x$ 的Hessian矩阵 $Hf(x)$ 也都是正定的。
- (b) 如果Hessian矩阵在点 $a$ 是负定的 $(Hf(a)<0)$,那么在 $a$ 附近的一个足够小的邻域内,所有点 $x$ 的Hessian矩阵 $Hf(x)$ 也都是负定的。
这里需要特别澄清一下符号。对于矩阵 $H$,$H>0$ 并不是指矩阵里每个元素都大于0。这是线性代数中的专用记号,意思是“H是正定矩阵 (positive definite)”。
- 正定的定义是:对于任意非零向量 v,二次型 $v^⊤Hv$ 的值恒为正。
- 同样,$H<0$ 意味着“H是负定矩阵 (negative definite)”,即 $v^⊤Hv$ 恒为负。
- 证明 (a) 的思路
- 引入西尔维斯特判据 (Sylvester's Criterion)
这是证明的核心。线性代数告诉我们,一个对称矩阵是正定的,当且仅当它的所有顺序主子式 (leading principal minors) 的行列式都为正。
“顺序主子式”指的是矩阵左上角的 $1×1,2×2,…,n×n$ 子矩阵。
- 应用判据
定义 $Δk(a)$ 为Hessian矩阵 $Hf(a)$ 的第 $k$ 个顺序主子式的行列式: $$\Delta_k(a):=\det\begin{pmatrix}f_{11}(a)&\cdots&f_{1k}(a)\\vdots&&\vdots\f_{k1}(a)&\cdots&f_{kk}(a)\end{pmatrix}$$ 因此,$Hf(a)>0$ 这个条件,就等价于这一组不等式全部成立:$Δ_1(a)>0$,$Δ_2(a)>0$,…,$Δ_n(a)>0$。
- 设立一个“安全缓冲带” $ϵ$
- 我们已知 $Δ_1(a),Δ_2(a),…,Δ_n(a)$ 这 $n$ 个数全都是严格大于零的。
- 既然它们都比 0 大,我们就可以在 0 和这些数之间找到一个“安全距离”,我们把这个距离叫做 $ϵ$。我们选择一个足够小的 $ϵ>0$,使得所有的 $Δk(a)$ 都比 $ϵ$ 要大,即 $Δk(a)>ϵ$。这之所以能做到,是因为我们只有有限个($n$ 个)$Δk(a)$ 需要考虑。
- 利用函数的连续性
- 我们已经知道,每一个行列式函数 $Δk(x)$ 都是连续的。
- 连续性的直观意义是:当 $x$ 离 $a$ 很近时,$\Delta_k(x)$ 的值也必然离 $Δk(a)$ 很近。它的值不会发生“跳变”。
- 我们可以用数学上精确的 $ϵ−δ$ 定义来描述这件事:对于我们上面选定的那个“安全缓冲带” $ϵ$,一定存在一个邻域半径 $δ_k$,只要 $x$ 在这个邻域 $B_a(δ_k)$ 内,那么 $Δk(x)$ 与 $Δk(a)$ 的差距就不会超过 $ϵ$。 $$|\Delta_k(x)-\Delta_k(a)|<\epsilon$$
- 结合前两步,饿出结论
- 上面的不等式 $∣Δk(x)−Δk(a)∣<ϵ$ 展开后是 $−ϵ<Δk(x)−Δk(a)<ϵ$。
- 我们看左半边:$Δk(x)>Δk(a)−ϵ$。
- 再结合第一步的设定 $Δk(a)>ϵ$,我们可以得到: $$\Delta_k(x)>\Delta_k(a)-\epsilon>0$$
- 找到一个通用的判据
- 上一步的结论是针对每一个单独的 $Δk(x)$ 来说的。$Δ_1(x)$ 在半径为 $δ_1$ 的邻域内为正,$Δ_2(x)$ 在半径为 $δ_2$ 的邻域内为正,以此类推。
- 为了让所有的 $Δk(x)$ 同时为正,我们只需要找到一个点,它同时位于所有这些邻域之内。最简单的办法就是取所有半径中最小的那一个。
- 我们定义 $δ=min(δ_1,…,δ_n)$。
- 在这个半径为 $δ$ 的、最小的邻域 $B_a(δ)$ 内,所有的不等式 $Δ_1(x)>0,…,Δ_n(x)>0$ 都必然成立。
- 根据西尔维斯特判据,这就意味着在这个邻域内,所有的Hessian矩阵 $Hf(x)$ 都是正定的。
我们可以用一维函数来类比。
- 假设你有一个连续函数 $g(x)$,并且你知道在某点 $a$ 处,$g(a)=5$。
- 因为 $g(x)$ 是连续的,你就可以肯定,在 $a$ 附近的一个小区间内,$g(x)$ 的值一定是在5左右,比如在$(4, 6)$之间,它绝不可能突然跳到-2。
- 这个证明做的就是同样的事情,只不过它同时为 $n$ 个函数($Δ1,…,Δn)$找到了一个共同的、能保证它们符号不变的“小区间”。
负定矩阵的判据 证明(b)部分的方法类似,但是西尔维斯特判据对于负定矩阵的说法略有不同: 一个对称矩阵 $H$ 是负定的,当且仅当它的顺序主子式符号交错,并以负号开头。 即:$Δ1<0,Δ2>0,Δ3<0,…$
5.3. Hessian检验法
在使用这个检验法之前,必须满足几个前提条件:
- 函数的二阶偏导数存在且连续。
- 正在分析的点 $a$ 必须是一个驻点,也就是说,已经完成了第一步,即解出 $∇f(a)=0$。
对于一个驻点 $a$,检验流程如下:
- (i) 局部最大值: 如果 $\frac{\partial^2f}{\partial x^2}(a)<0$ 并且 Hessian行列式 $det Hf(a)>0$,那么点 $a$ 是一个局部最大值。
- (ii) 局部最小值: 如果 $\frac{\partial^2f}{\partial x^2}(a)>0$ 并且 Hessian行列式 d$et Hf(a)>0$,那么点 a 是一个局部最小值。
- (iii) 鞍点: 如果 Hessian行列式 $det Hf(a)<0$,那么点 a 是一个鞍点。
- 如果Hessian矩阵是奇异的,即 det Hf(a)=0,那么这个检验方法失效。在这种情况下,我们无法仅通过二阶导数来判断该点的性质,需要使用其他更高阶的方法或者直接分析函数本身。
这个检验规则的本质,其实是在判断Hessian矩阵的特征值的符号。对于一个 $2x2$ 的对称矩阵$H$(因为我们假设二阶偏导数是连续的,所以Hessian矩阵 $Hf(a)$ 是一个对称矩阵。)
线性代数中一个非常重要的定理是:任何对称矩阵都可以被对角化 (diagonalisable)。这意味着存在一个特殊的正交矩阵 $P$(满足 $P^\top=P^{-1}$),可以将 $Hf(a)$ 变换为一个简单的对角矩阵,对角线上的元素正是 $Hf(a)$ 的两个特征值 (eigenvalues) $λ_1$ 和 $λ_2$。 $$P^\top Hf(a)P=\begin{bmatrix}\lambda_1&0\0&\lambda_2\end{bmatrix}$$ 对角化过程,在几何上相当于旋转坐标系。我们旋转到一个新的坐标系下,使得新坐标轴正好对齐函数曲面“最凹”和“最凸”的主方向。在这些主方向上,曲率就由特征值 $λ_1$,$λ_2$ 来直接表示。
那么就有如下结论:
- $det H=λ_1λ_2$ (行列式是特征值的乘积)
- $\mathrm{trace~}H=f_{xx}+f_{yy}=\lambda_1+\lambda_2$ (迹是特征值的和)
我们定义 $D=detHf(a)$, 那么:
- $D=\lambda_1\lambda_2>0$: 这意味着两个特征值 $λ_1$,$λ_2$ 同号(同正或同负)。这对应于曲面在所有主方向上都朝同一个方向弯曲,因此是一个真正的极值点。
- $D=\lambda_1\lambda_2<0$: 这意味着两个特征值异号(一正一负)。这对应于曲面在一个主方向向上弯曲,在另一个主方向向下弯曲,这正是鞍点的定义。
- $D=\lambda_1\lambda_2=0$: 这意味着至少有一个特征值为零。这对应于曲面在某个主方向上是“平”的(没有曲率),二阶信息不足,检验失效。
- 当 $D>0$ 时,如何判断同正还是同负? 此时,我们知道 $λ_1$,$λ_2$ 同号。它们的和 $\lambda_1+\lambda_2=f_{xx}+f_{yy}$ 的符号就决定了它们俩的符号。并且可以证明,当 $D>0$ 时,$f_{xx}$ 和 $f_{yy}$ 也必然同号。所以我们只需要检查 fxx 的符号就足够了。如果 $f_{xx}>0$,说明至少有一个方向是向上凹的,那么两个特征值必然都为正 ⟹ 局部最小值。如果 $f_{xx}<0$,说明至少有一个方向是向下凸的,那么两个特征值必然都为负 ⟹ 局部最大值。
用泰勒公式检验:
在驻点 $a$ 附近,函数值的变化量可以近似表达为: $$f(a+v)-f(a)\approx\frac{1}{2}vHf(a)v^\top$$ 因为驻点的梯度为零,所以一阶项消失了。函数的变化完全由二阶项(Hessian矩阵)主导。接着因为Hessian矩阵可以对角化,这个二次型表达式可以转换为用特征值表达的、更直观的形式: $$\frac{1}{2}vHf(a)v^\top=\frac{1}{2}(\lambda_1u_1^2+\lambda_2u_2^2)$$ 这里的 $u_1,u_2$ 是位移向量 $v$ 在新的、与主曲率方向对齐的坐标系下的分量。 这个公式是关键:函数值变化 $f(a+v)−f(a)$ 的符号,完全取决于两个特征值 $λ_1,λ_2$ 的符号。
6. 约束极值和拉格朗日乘数法
6.1. 拉格朗日乘数法定理
首先,我们明确一下问题的场景:
- 目标函数 $f$: 我们想要找到这个函数在 $\mathbb{R}^n$ 空间中的最大或最小值。
- 约束条件 $g_i$: 我们不能在整个空间里自由寻找,而是必须满足 $r$ 个约束方程 $g_1(x)=c_1,g_2(x)=c_2,\ldots,g_r(x)=c_r$。
- 可行域 $S$: 所有满足这些约束条件的点 $x$ 组成的集合,就是我们的可行域 $S$。它是由 $r$ 个水平集曲面相交得到的几何体。
- 正则性条件: 在我们考察的极值点 $a$ 处,所有约束函数的梯度向量 $\nabla g_1(a),\ldots,\nabla g_r(a)$ 必须是线性无关的。这保证了约束在局部是“良性”的,没有冗余或冲突。
结论:拉格朗日条件
- 如果点 $a$ 是函数 $f$ 在约束集 $S$ 上的一个极值点(最大或最小值),那么在该点,目标函数 $f$ 的梯度向量 $∇f(a)$,必然可以表示为所有约束函数梯度向量 $∇g_i(a)$ 的线性组合。
- 数学公式: 存在一组标量 $λ_1,…,λ_r$(被称为拉格朗日乘数),使得: $$\nabla f(a)=\lambda_1\nabla g_1(a)+\cdots+\lambda_r\nabla g_r(a)$$ 这个定理的公式可能看起来很抽象,但它的几何意义在单个约束的情况下非常清晰。假设我们只有一个约束 $g(x,y)=c$,那么拉格朗日条件就简化为: $$\nabla f(a)=\lambda\nabla g(a)$$ 这说明,在极值点 $a$ 处,向量 $∇f(a)$ 和 $∇g(a)$ 是相互平行的。
- 几何图像:
- $∇g(a)$ 是约束曲线 $g=c$ 在点 $a$ 的法向量(垂直于曲线)。
- $∇f(a)$ 是目标函数 $f$ 的等高线在点 $a$ 的法向量(垂直于等高线)。
- 两个法向量相互平行,意味着它们所垂直的两条曲线——约束曲线和**$f$的等高线**——在该点是相互相切的。
- 为什么必须相切? 想象一下,约束曲线是你在地图上必须遵守的一条“铁轨”。你想在这条铁轨上找到海拔最高的地方(最大化 $f$ )。
- 如果在某一点,你的铁轨(约束曲线)与该点的海拔等高线是相交的,而不是相切的,这意味着你沿着铁轨往前或往后走一小步,必然会穿到更高或更低海拔的等高线上去。因此,这个点不可能是极值点。
- 只有当你的铁轨和等高线相切的那一刻,你沿着铁轨无论朝哪个方向移动,都无法在瞬间改变你的海拔。这时,你才可能到达了一个极值点。
在实际计算中,我们通常通过构造一个拉格朗日函数 (Lagrangian Function) $L$ 来将一个有约束的优化问题转化为一个无约束的优化问题。 $$\mathcal{L}(x_1,\ldots,\lambda_r)=f(\mathbf{x})-\sum_{i=1}^r\lambda_i(g_i(\mathbf{x})-c_i)$$ 然后,我们去寻找这个新的、包含了变量 $x$ 和 $λ$ 的函数 $L$ 的普通驻点(令其对所有变量的偏导数都为零):
- $\frac{\partial\mathcal{L}}{\partial x_j}=0$ $⟹$ 这会导出核心的拉格朗日条件 $∇f=∑λ_i∇g_i$。
- $\frac{\partial\mathcal{L}}{\partial\lambda_i}=0$ $⟹$ 这会刚好退化为原始的约束条件 $g_i(x)=c_i$。
通过这个技巧,我们把一个复杂的约束问题,变成了一个更大、但无约束的方程组求解问题,这在计算上非常方便。
6.2. 一个具体例子
问题设定:
- 目标函数: 我们想要寻找函数 $f(x,y)=x^2−y^2$ 的极值。
- 约束条件: 点 $(x,y)$ 必须满足方程 $x^2+y^2=1$,也就是说,点必须位于单位圆上。
目标函数 $f(x,y)=x^2−y^2$ 的图像是一个“马鞍”面。我们现在的任务不是在整个马鞍面上寻找最高或最低点(这是无解的,因为它可以无限延伸),而是在这个马鞍面上,沿着一条固定的路径,单位圆行走,并找到这条路径上的最高点和最低点。
- 第一步:定义约束函数和应用拉格朗日条件
- 定义约束函数 $g(x,y)=x^2+y^2−1$。我们的约束条件就是水平集 $L_0(g)$。
- 根据定理,在极值点 $a$,必须满足核心条件 $\nabla f(a)=\lambda\nabla g(a)$。
- 第二步:计算梯度并建立方程
- $∇f=(2x,−2y)$
- $∇g=(2x,2y)$
- 将梯度代入核心条件,得到向量方程(设极值点为 $a=(a_1,a_2)$): $$(2a_1,-2a_2)=\lambda(2a_1,2a_2)$$
- 第三步:计算现在我们来解这个方程组:
- 我们得到的向量方程 $(2x,−2y)=λ(2x,2y)$,再加上原始的约束条件,构成了一个包含三个变量 $(x,y,λ)$ 和三个方程的方程组:
- $2x=λ(2x)⟹x(1−λ)=0$
- $−2y=λ(2y)⟹y(1+λ)=0$
- $x^2+y^2=1$
- 从方程1入手: 它告诉我们,要么 x=0,要么 λ=1。
- 情况A:假设 x=0。
- 将 x=0 代入约束方程3,得到 $0^2+y^2=1$,所以 y=±1。
- 这样我们找到了两个候选点:(0, 1) 和 (0, -1)。
- 情况B:假设 λ=1。
- 将 λ=1 代入方程2,得到 $y(1+1)=2y=0$,所以 y=0。
- 将 y=0 代入约束方程3,得到 $x^2+0^2=1$,所以 x=±1。
- 这样我们又找到了两个候选点:(1, 0) 和 (-1, 0)。
- 情况A:假设 x=0。
- 第四步:确定大小
拉格朗日乘数法只帮我们找到了“候选点”,最后一步是把这些点代入原始的目标函数 $f(x,y)=x^2−y^2$ 中,比较函数值的大小,来确定哪个是最大值,哪个是最小值。
- $f(1,0)=1^2−0^2=1$
- $f(−1,0)=(−1)2−0^2=1$
- $f(0,1)=0^2−1^2=−1$
- $f(0,−1)=0^2−(−1)2=−1$
- 在约束条件 $x^2+y^2=1$ 下,函数 $f(x,y)$ 的最大值是 1,在点 (1, 0) 和 (-1, 0) 处取得。
- 最小值是 -1,在点 (0, 1) 和 (0, -1) 处取得。
几何意义的验证 这个结果完美地印证了我们之前讨论的“相切”思想。
- 目标函数 $f=x^2−y^2$ 的等高线是一系列的双曲线。
- 在求出的四个极值点上,单位圆 $x^2+y^2=1$ 正好与这些双曲线相切。
- 在点 (1,0),单位圆与双曲线 $x^2−y^2=1$ 相切。
- 在点 (0,1),单位圆与双曲线 $x^2−y^2=−1$ (或者说 $y^2−x^2=1$)相切。 这正是拉格朗日乘数法几何本质的体现。