新工科数学分析

第十章: 多元函数的微分

提示

多元函数的微分是一元函数微分的推广, 它的一个非常重要的应用是求多元函数的极值. 例如 (P115例6) 有一块宽为 24cm 的方形铁板, 把它两边折起来做成一个断面为等腰梯形的水槽, 问怎样的折法才能使得截面面积最大? 设折出来的梯形底边长度为 x, 斜边的角度为 \theta, 则截面积可写成

S(x, \theta) = 24 x \sin\theta - 2x^2 \sin\theta + x^2 \sin\theta \cos\theta

这是一个关于 x, \theta 的二元函数, 如何求它的最大值呢? 我们可以带着这个问题开始本章的学习.

10.1 多元函数的连续性

提示

在一元微积分中, 连续函数是我们的主要研究对象, 在多元微积分中同样也是这样. 下面我们先介绍一些准备知识作为铺垫, 然后给出多元函数极限和连续的定义.

10.1.1 区域

提示

在一元函数中, 我们经常使用区间的概念, 如开区间 (a, b), 闭区间 [a, b]. 区域是区间在高维空间中的推广. 下面我们以 \mathbb{R}^2 为例进行介绍, 但所有的概念都可以推广到 \mathbb{R}^n 中.

邻域

P_0(x, y)\mathbb{R}^2 中的一点, 给定 \delta > 0, \mathbb{R}^2 中所有与点 P_0 距离小于 \delta 的点构成一个集合, 称为点 P_0\delta-邻域, 记作 U(P_0, \delta), 即 U(P_0, \delta) = \{ (x, y)| \sqrt{(x-x_0)^2+ (y-y_0)^2} < \delta\}.

P_0 与其自己的距离为0, 所以根据上述定义, P_0\in U(P_0, \delta). 但有时候我们希望排除掉 P_0 这一点, 在集合 U(P_0, \delta) 中把 P_0 去掉, 由此得到的集合称为 P_0\delta-去心邻域, 记作 \overset{\circ}{U}(P_0, \delta), 即 \overset{\circ}{U}(P_0, \delta) = \{ (x, y)| 0 < \sqrt{(x-x_0)^2+ (y-y_0)^2} < \delta\}.

有时候我们不关心 \delta 的具体取值 (比如接下来的问题中), 往往简单用 U(P_0)\overset{\circ}{U}(P_0) 分别表示 P_0邻域去心邻域.

内点

任意给定一个 \mathbb{R}^2 中的集合 D, 任意一点 PD 的关系必符合以下三种关系中的一种:

  1. 内点: 存在点 P 的某个邻域 U(P), 使得 U(P) \subset D.
  2. 外点: 存在点 P 的某个邻域 U(P), 使得 U(P) \cap D = \emptyset.
  3. 边界点: 点 P 的任一邻域内既有属于 D 的点, 又有不属于 D 的点.

集合 D 的全体边界点所构成的集合称为 D边界, 记作 \partial D.

🟢例1: 点集的内点、外点与边界点多元函数点集拓扑邻域

判断集合 1 < x^2 + y^2 < 2 中各点的内点、外点和边界点.

圆环 D = \{1 < x^2+y^2 < 2\} — 内点 (绿色), 边界点 (\times, 不属于 D), 外点 (黄色)
开集与闭集

开集: 集合中的所有点都是其内点 闭集: 集合的边界属于该集合, \partial D \subseteq D

🟢例2: 开集的判断多元函数点集拓扑开集

证明集合 D = \{(x,y) \mid 1 < x^2 + y^2 < 2\} 为开集.

连通集

顾名思义, 如果集合 D 中的任意两点都可以用折线连接起来, 且该折线上的点都属于 D, 则称 D连通集.

区域

连通开集称为区域(或开区域); 开区域连同它的边界一起所构成的集合称为闭区域.

例子

集合 \{(x,y) \mid 1 < x^2 + y^2 < 2\} 是开区域, 而集合 \{(x,y) \mid 1 \leq x^2 + y^2 \leq 2\} 是闭区域.

有界集与无界集

有界集 : 对于平面点集 E, 如果存在正数 r, 使得E \subset U(O, r), 其中 O 为坐标原点, 则称 E 为有界集, 无界集 : 如果一个集合不是有界集, 则称其为无界集,

10.1.2 多元函数的极限

提示

下面我们以含有两个自变量的函数, 即二元函数为例引入多元函数及其极限的概念. 相关概念可以很容易推广到含有三个或更多自变量的多元函数中去.

二元函数的定义

D\mathbb{R}^2 中的非空子集, 称映射 f: D \to \mathbb{R} 为定义在 D 上的二元函数, 记为 z = f(x, y), \quad (x, y) \in D

其中 D 称为函数的定义域 , xy 称为自变量.

重要

二元函数的极限

f(x,y) 为定义在 D 上的二元函数, P_0(x_0, y_0)D 的聚点, 如果存在常数 A, 对于任意给定的正数 \varepsilon, 总存在正数 \delta, 使得当 (x,y) \in U(P_0, \delta) 时, 有 $ |f(x, y) - A| < $, 则称 A 为函数 f(x,y)(x,y) 趋于 (x_0, y_0) 时的极限, 记作 \displaystyle\lim_{(x,y) \to (x_0, y_0)} f(x,y) = A.

警告

注意从 (x, y) 趋于 (x_0, y_0) 有无数条路径, 极限存在要求任意一条路径都成立, 不能仅仅验证从 x-轴趋近和从y-轴趋近就断言极限存在.

🟡例3多元函数极限epsilon-delta证明

f(x,y) = (x^2 + y^2) \displaystyle\sin \frac{1}{x^2 + y^2},求证:

\lim_{(x,y) \to (0,0)} f(x,y) = 0.

z = (x^2+y^2)\sin(1/(x^2+y^2)) 在原点附近振荡, 但被 \pm r^2 夹住, 极限 =0
🟡例4多元函数极限极限不存在

考察函数

f(x,y) = \begin{cases} \dfrac{xy}{x^2 + y^2}, & x^2 + y^2 \neq 0, \\ 0, & x^2 + y^2 = 0 \end{cases}

在点 (0, 0) 处的极限是否存在。

z = xy/(x^2+y^2) 是马鞍形曲面 — 沿不同方向 (y=kx) 趋近原点得到不同值, 极限不存在
🟢例5多元函数极限等价无穷小

求极限

\lim_{(x,y) \to (0,2)} \frac{\sin(xy)}{x}.

10.1.3 多元函数的连续性

提示

下面我们仍然以二元函数为例引入多元函数连续的概念. 相关概念可以很容易推广到含有三个或更多自变量的多元函数中去.

二元函数连续性

f(x, y) 为定义在 D 上的二元函数, P_0 (x_0, y_0)D 的聚点, 且 P_0 \in D, 如果 $ _{(x,y) (x_0, y_0)} f(x, y) = f(x_0, y_0)$, 则称函数 f(x, y) 在点 P_0 (x_0, y_0) 连续, 进一步, 如果函数 f(x, y)D每一点都连续, 则称函数 f(x, y)D 上的连续函数.

间断点 设函数 f(x,y) 的定义域为 D, P_0(x_0, y_0)D 的聚点, 如果函数 f(x,y) 在点 P_0(x_0, y_0) 不连续, 那么称 P_0(x_0, y_0) 为函数 f(x,y)间断点,

连续函数的性质

闭区间上一元连续函数的性质相类似, 在有界闭区域上连续的多元函数具有如下性质:

  • 性质1: 最大值与最小值 有界闭区域 D 上的多元连续函数必定在 D 上有界, 且能取到它的最大值和最小值,

  • 性质2: 介值定理 有界闭区域 D 上的多元连续函数能取到介于最大值和最小值之间的任何值,

10.2 偏导数

提示

固定其它变量, 看一个变量变化对函数值的影响.

偏导数

设函数 z=f(x,y) 在点 (x_0,y_0) 的某一邻域内有定义, 固定 y=y_0xx_0 附近变化, 若极限 \displaystyle\lim_{\Delta x \to 0} \displaystyle\frac{f(x_0 + \Delta x, y_0) - f(x_0, y_0)}{\Delta x} \tag{2-1} 存在, 则称此极限为函数 z=f(x,y) 在点 (x_0,y_0) 处对 x偏导数, 记作: \left. \displaystyle\frac{\partial z}{\partial x} \right|_{x=x_0}, \quad \left. \displaystyle\frac{\partial f}{\partial x} \right|_{x=x_0}, \quad z_x \bigg|_{x=x_0} \text{ 或 } f_x(x_0, y_0)

类似地, 函数 z=f(x,y)y 的偏导数为: \displaystyle\lim_{\Delta y \to 0} \displaystyle\frac{f(x_0, y_0 + \Delta y) - f(x_0, y_0)}{\Delta y} 记作: \displaystyle\left. \displaystyle\frac{\partial z}{\partial y} \right|_{y=y_0}, \quad \left. \displaystyle\frac{\partial f}{\partial y} \right|_{y=y_0}, \quad z_y \bigg|_{y=y_0} \text{ 或 } f_y(x_0, y_0)

偏导函数

z=f(x,y) 在区域 D 内每一点 (x,y) 处对 x 的偏导数存在, 则由此构成的函数称为偏导函数, 记作: \displaystyle\frac{\partial z}{\partial x}, \quad \displaystyle\frac{\partial f}{\partial x}, \quad z_x \text{ 或 } f_x(x, y) y 的偏导函数记为: \displaystyle\frac{\partial z}{\partial y}, \quad \displaystyle\frac{\partial f}{\partial y}, \quad z_y \text{ 或 } f_y(x, y)

🟡例6偏导数分段函数定义法求导

求分段函数

z = f(x, y) = \begin{cases} \dfrac{xy}{x^2 + y^2}, & x^2 + y^2 \neq 0, \\ 0, & x^2 + y^2 = 0 \end{cases}

在点 (0, 0) 处的偏导数 f_x(0,0)f_y(0,0)

重要

==高阶偏导数==

对偏导函数再求偏导数称为二阶偏导数, 以此类推还有三阶偏导数和更高阶的偏导数.

二阶偏导数的四种形式
  1. x 的二阶偏导: \displaystyle\displaystyle\frac{\partial}{\partial x} \left( \displaystyle\frac{\partial z}{\partial x} \right) = \displaystyle\frac{\partial^2 z}{\partial x^2} = f_{xx}(x, y)

  2. 先对 x 后对 y 的混合偏导: \displaystyle\frac{\partial}{\partial y} \left( \displaystyle\frac{\partial z}{\partial x} \right) = \displaystyle\frac{\partial^2 z}{\partial x \partial y} = f_{xy}(x, y)

  3. 先对 y 后对 x 的混合偏导: \displaystyle\frac{\partial}{\partial x} \left( \displaystyle\frac{\partial z}{\partial y} \right) = \displaystyle\frac{\partial^2 z}{\partial y \partial x} = f_{yx}(x, y)

  4. y 的二阶偏导: \displaystyle\frac{\partial}{\partial y} \left( \displaystyle\frac{\partial z}{\partial y} \right) = \displaystyle\frac{\partial^2 z}{\partial y^2} = f_{yy}(x, y)

🟡例7: 高阶偏导数的计算偏导数高阶导数混合偏导数

设函数 z = x^3 y^2 - 3xy^3 - xy + 1,求下列高阶偏导数:

\frac{\partial^2 z}{\partial x^2},\quad \frac{\partial^2 z}{\partial y \partial x},\quad \frac{\partial^2 z}{\partial x \partial y},\quad \frac{\partial^2 z}{\partial y^2} \quad \text{及}\quad \frac{\partial^3 z}{\partial x^3}.

重要

==二阶混合偏导数定理==

如果函数 z = f(x, y) 的二阶混合偏导数 $ $ 在区域 D 内连续, 那么在该区域内必有: \displaystyle\frac{\partial^2 z}{\partial y \partial x} = \displaystyle\frac{\partial^2 z}{\partial x \partial y}

即: 二阶混合偏导数在连续条件下与求导次序无关,

🟢例8高阶偏导数拉普拉斯方程验证

验证函数 z = \ln \sqrt{x^2 + y^2} 满足拉普拉斯方程

\frac{\partial^2 z}{\partial x^2} + \frac{\partial^2 z}{\partial y^2} = 0.

🟡例9高阶偏导数拉普拉斯方程三元函数验证

证明函数 u = \dfrac{1}{r} 满足三维拉普拉斯方程

\frac{\partial^2 u}{\partial x^2} + \frac{\partial^2 u}{\partial y^2} + \frac{\partial^2 u}{\partial z^2} = 0,

其中 r = \sqrt{x^2 + y^2 + z^2}

10.3 全微分

提示

在学习全微分的知识之前, 我们来回顾一下一元函数微分, 对于函数 y=f(x), 其增量可表示为

df = f'(x)dx

接下来我们要把上述关系推广到多元函数, 从而将函数值的变化与自变量的变化联系起来.

全微分公式

dz = \displaystyle\frac{\partial z}{\partial x}dx + \displaystyle\frac{\partial z}{\partial y}dy

全微分的几何理解
🟢例10全微分线性函数

求函数 z(x,y) = x + y 的全微分 dz

🟢例11全微分高阶无穷小

求函数 z(x,y) = x^2 + 2y^3 的全微分 dz

🟡例12全微分应用梯形截面

设截面积函数

S(x, \theta) = Lx\sin\theta - 2x^2\sin\theta + x^2\sin\theta\cos\theta,

求全微分 dS

等腰梯形截面, 折边长 x, 折角 \theta, 底宽 L-2x — 截面积是 x, \theta 的二元函数

10.3.1 链式法则

提示

全微分公式能够表示因变量 z 对自变量 x, y 的依赖关系. 如果我们把全微分公式稍微变形, 就能非常自然地推导出多元微积分中极其重要的链式法则 (Chain Rule). 无论是物理学中寻找随时间变化的变化率, 还是在不同坐标系 (如直角坐标与极坐标) 之间进行变量替换, 链式法则都不可或缺.

一元函数与多元函数复合的情形

z = f(u, v), 而 u = u(t), v = v(t). 则复合函数 zt 的全导数公式为: \frac{dz}{dt} = \frac{\partial z}{\partial u}\frac{du}{dt} + \frac{\partial z}{\partial v}\frac{dv}{dt}

多元函数与多元函数复合的情形

更一般地, 如果中间变量本身又是多个变量的函数, 例如 u = u(x,y), v = v(x,y). 则复合函数分别对 xy 的偏导数法则为: \frac{\partial z}{\partial x} = \frac{\partial z}{\partial u}\frac{\partial u}{\partial x} + \frac{\partial z}{\partial v}\frac{\partial v}{\partial x} \frac{\partial z}{\partial y} = \frac{\partial z}{\partial u}\frac{\partial u}{\partial y} + \frac{\partial z}{\partial v}\frac{\partial v}{\partial y}

🟡例13: 复合函数的全导数全微分复合函数链式法则

z = uv + \sin t,而 u = e^tv = \cos t,求全导数 \displaystyle\frac{dz}{dt}.

10.3.2 全微分形式不变性

提示

微分符号的奇妙之处在于, 无论 u, v 是作为最终自变量, 还是作为进一步依赖其他变量的中间变量, 全微分的表达式 dz = \frac{\partial z}{\partial u}du + \frac{\partial z}{\partial v}dv 始终保持形式上的一致. 这个深刻的性质被称为全微分形式不变性. 它能帮我们绕开繁琐的链式法则, 直接通过代数代入来求导!

🟡例14: 全微分形式不变性全微分微分形式不变性

z = e^u \sin v,而 u = xyv = x+y,利用全微分形式不变性求偏导数 \displaystyle\frac{\partial z}{\partial x}\displaystyle\frac{\partial z}{\partial y}.

10.3.3 隐函数求导

提示

在实际问题中, 变量之间的关系常常以隐式方程 F(x,y)=0F(x,y,z)=0 的形式给出, 直接解出因变量 (即求反函数) 往往非常繁琐甚至不可能. 利用全微分的性质, 我们可以极其优雅地绕过这一困难, 直接求出隐函数的导数. 因为方程恒为零, 对其取全微分也必为零.

一元隐函数的求导公式

设方程 F(x,y) = 0 确定了隐函数 y = f(x). 对方程两端取全微分得: dF = F_x dx + F_y dy = 0 只要 F_y \neq 0, 直接移项即可得到一阶导数: \frac{dy}{dx} = -\frac{F_x}{F_y}

二元隐函数的求导公式

若方程 F(x,y,z) = 0 确定了二元隐函数 z = f(x,y). 当需要计算偏导数 \frac{\partial z}{\partial x} 时, 意味着 y 为常数 (即 dy = 0), 全微分退化为 F_x dx + F_z dz = 0: \frac{\partial z}{\partial x} = -\frac{F_x}{F_z} \quad (F_z \neq 0) 同理可得: \frac{\partial z}{\partial y} = -\frac{F_y}{F_z} \quad (F_z \neq 0) 这个自带负号的公式, 正是全微分移项产生的自然结果.

🟡例15: 隐函数的求导隐函数隐函数定理偏导数

验证方程 x^2 + y^2 - 1 = 0 确定了一个隐函数,并求其一阶与二阶导数 \displaystyle\frac{dy}{dx}\displaystyle\frac{d^2y}{dx^2}.

单位圆 x^2+y^2=1 与点 (1/2, \sqrt{3}/2) 处的切线 — 由隐函数定理 dy/dx = -x/y

10.4 梯度与方向导数

10.4.1 梯度

重要

==梯度的定义== 设二元函数$f(x,y) $ 在区域D 内具有一阶连续偏导数, 则对于任意点 $ P_0(x_0,y_0) D , 其梯度定义为:\text{grad}\, f(x_0,y_0) = \nabla f(x_0,y_0) = f_x(x_0,y_0)\,\mathbf{i} + f_y(x_0,y_0)\,\mathbf{j}$ 其中微分算子$ = + ,$

梯度方向是函数值增长最快的方向
🟢例16梯度偏导数二元函数

求函数 f(x, y) = \dfrac{1}{x^2 + y^2} 的梯度 \mathrm{grad}\, f

f = 1/(x^2+y^2) 的等高线为同心圆, 梯形 \nabla f = -2(x,y)/r^4 处处指向原点 (上升最快方向)
🟡例17梯度方向导数三元函数最大变化率

f(x, y, z) = x^3 - xy^2 - z^2P_0(1,1,0)

  1. 函数 fP_0 处沿哪个方向变化最快?
  2. 在该方向上的变化率是多少?
f = x^3 - xy^2 - z^2 在 z=0 切片的等高线, P_0=(1,1,0) 处梯度 (2,-2,0) 指向最快上升方向
🟡例18梯度切平面法线曲面

求曲面 x^2 + y^2 + z = 9 在点 P_0(1, 2, 4) 处的切平面方程和法线方程。

旋转抛物面 x^2+y^2+z=9 (蓝绿色) 与 P_0(1,2,4) 处的切平面 (红色), 法向 \vec n=(2,4,1)
三元函数的梯度定义与性质

设三元函数 f(x,y,z) 在空间区域 G 内具有一阶连续偏导数, 则对于点 P_0(x_0, y_0, z_0) \in G, 其梯度为:

\text{grad}\, f(x_0,y_0,z_0) = \nabla f(x_0,y_0,z_0) = f_x\,\mathbf{i} + f_y\,\mathbf{j} + f_z\,\mathbf{k} 其中三维Nabla算子: \nabla = \dfrac{\partial}{\partial x}\mathbf{i} + \dfrac{\partial}{\partial y}\mathbf{j} + \dfrac{\partial}{\partial z}\mathbf{k}

🟢例19: 梯度的计算梯度方向导数多元函数

求函数 f(x,y,z) = x^2 + yz 在点 (1,2,3) 处的梯度.

10.4.2 方向导数

重要

==方向导数的定义== 设函数 f(x,y,z) 在点 P_0(x_0,y_0,z_0) 的某邻域内有定义, \mathbf{l} 为从 P_0 出发的给定方向向量, P(x,y,z)\mathbf{l} 上邻近 P_0 的点, 若极限 \displaystyle\lim_{\rho \to 0^+} \frac{f(P) - f(P_0)}{\rho} = \left. \frac{\partial f}{\partial l} \right|_{P_0} 存在, 则称此极限为 fP_0 点沿方向 \mathbf{l}方向导数, 其中 \rho = |PP_0|.

警告: ==方向导数与梯度的关系==

方向导数等于梯度在该方向上的投影.

10.5 多元函数的极值

10.5.1 无约束极值问题

🟡例20多元极值无约束极值应用题

有一宽为 24\,\text{cm} 的长方形铁板,把它两边折起来做成断面为等腰梯形的水槽,问怎样折法才能使断面的面积最大?

24 厘米宽铁板 (左) 折出等腰梯形水槽截面 (右), 折边长 x, 折角 \theta
🟡例21多元极值无约束极值应用题最省材料

某厂要用铁板做成一个体积为 2\,\text{m}^3 的有盖长方体水箱,问当长、宽、高各取怎样的尺寸时,用料最省?

体积固定 V = 2 立方米的有盖长方体, 在 a=b=c=\sqrt[3]{2} 时 (立方体) 用料最省

10.5.1.1 无约束极值的判别法

提示

我们知道, 在一元函数中, 通过令一阶导数 f'(x)=0 我们可以找到驻点, 然后通过二阶导数 f''(x) 的符号可以判断该点是极大值还是极小值. 对于多元函数, 我们同样通过令所有一阶偏导数为零来寻找临界点 (驻点). 但是, 多元函数的临界点除了极大值和极小值之外, 还有可能是鞍点 (Saddle Point, 即在某些方向上是极大, 在另一些方向上是极小). 如何准确对临界点进行分类呢? 我们需要用到二阶导数判别法.

二元函数的极值充分条件

设函数 z = f(x,y) 在临界点 (x_0, y_0) 的某邻域内连续, 且具有一阶及二阶连续偏导数, 且满足一阶必要条件: f_x(x_0,y_0)=0, f_y(x_0,y_0)=0.

我们计算该点处的三个二阶偏导数值, 并记为: * A = f_{xx}(x_0,y_0) * B = f_{xy}(x_0,y_0) * C = f_{yy}(x_0,y_0)

构造判别式 \Delta = AC - B^2. 则在 (x_0, y_0) 处是否取得极值的判断准则如下:

  1. \Delta = AC - B^2 > 0 时, 具有极值. 具体而言:
  • 如果 A > 0, 则该点为 极小值点 (Local Minimum);
  • 如果 A < 0, 则该点为 极大值点 (Local Maximum).
  1. \Delta = AC - B^2 < 0 时, 没有极值. 该点是一个 鞍点 (Saddle Point).
  2. \Delta = AC - B^2 = 0 时, 无法判断 (退化情形). 该点可能有极值, 也可能没有极值, 需要借助其他方法或更高阶的导数来另作讨论.
λ₁ = 1.0
λ₂ = 1.0
极小值点 (Local Min)
f(x, y) = ½(λ₁x² + λ₂y²) — 拖动滑块改变 Hessian 特征值, 观察曲面形状变化
Three. js
Plotly
提示

海森矩阵总是对称的 (f_{xy}=f_{yx}), 因此由谱定理, 其特征向量必然互相垂直——这是无法绕开的. 但当 B = f_{xy} \neq 0 时, 这两个特征方向会相对坐标轴旋转, 形成非对角的 Hessian. 下图中 \theta 滑块正是控制这一旋转角, 橙色/蓝色抛物线分别对应沿 \mathbf{e}_1, \mathbf{e}_2 方向的曲率 (即 \lambda_1, \lambda_2), 原点处的直角符号说明两特征向量始终垂直.

λ₁ = 2.0
λ₂ = -1.0
θ = 35°
鞍点 (Saddle)
f = ½(λ₁(x cosθ + y sinθ)² + λ₂(−x sinθ + y cosθ)²)   ·  特征向量始终互相垂直
Three. js

10.5.2 条件极值

重要

条件极值 是指函数 f(x, y, \dots) 在满足约束条件 g(x, y, \dots) = 0 的前提下取得的极大值或极小值. 拉格朗日乘数法 (Lagrange Multipliers) 是用于求带有约束条件的极值问题的一种重要方法. 假设要求函数 f(x, y) 在约束条件 g(x, y) = 0 下的极值, 方法 1. 构造拉格朗日函数 L(x, y, \lambda) = f(x, y) + \lambda g(x, y) 2. 求偏导并列方程组 \displaystyle\frac{\partial L}{\partial x} = 0,\quad \displaystyle\frac{\partial L}{\partial y} = 0,\quad \displaystyle\frac{\partial L}{\partial \lambda} = 0 3. 解这个方程组, 得到可疑点 (驻点); 4. 将这些点代入 f(x, y), 比较函数值, 判断极值.

WHY: 为什么拉格朗日乘数法有效?

想象我们要最小化 (或最大化) 函数 f(x,y), 但我们的活动范围被严格限制在约束曲线 g(x,y) = c 上.

  1. 等高线与相切: 我们在平面上画出固定的约束曲线 g(x,y) = c, 然后再画出目标函数 f(x,y)等高线 (Level curves). 当我们改变 f 的值时, 等高线会一圈圈扩大或缩小. 当 f 的等高线刚好触碰 (相切)到约束曲线的那一瞬间, 我们就找到了这条线上的最小值或最大值!
  2. 梯度的平行: 在切点处, 两条曲线完全相切, 这意味着它们的法线是同一条. 我们之前学过, 函数的梯度向量 (Gradient) 总是垂直于它的等高线. 既然在极值点两曲线相切, 那么 f 的梯度 \nabla f 必须与 g 的梯度 \nabla g 平行!
  3. 方程的诞生: 数学上, 我们用一个比例常数 \lambda (拉格朗日乘子) 来表示两个向量的平行关系: \nabla f = \lambda \nabla g 将其拆解为分量形式, 也就是 f_x = \lambda g_xf_y = \lambda g_y. 这正是拉格朗日函数 L_x = 0L_y = 0 移项后所表达的核心本质!

! 拉格朗日乘数法几何直观 (图注: 在极值点处, 蓝色的 f 等高线与黄色的约束曲线相切, 此时两者的梯度向量 \nabla f\nabla g 必然平行. )

移动鼠标, 观察 ∇f (红色) 与 ∇g (绿色) 的方向: 仅在极值点处两梯度平行 (或反向)
例1: f = x²+y², 约束 g: xy = 4
将鼠标移入图形区域
例2: f = xy, 约束 g: x²+y² = 4
将鼠标移入图形区域
警告

拉格朗日乘数法只会给你提供临界点 (候选点). 方程本身并不会告诉你它是最大值还是最小值 (此时无法使用二阶导数判别法). 你必须将解出来的这些点统一代入原函数 f(x,y) 中, 通过比较数值的大小, 或者结合实际几何背景, 来最终敲定谁是极小值, 谁是极大值.

🔴例22: Lagrange乘数法经典例题拉格朗日乘数法条件极值最优化

求函数 u = xyz 在约束条件 \displaystyle\frac{1}{x} + \displaystyle\frac{1}{y} + \displaystyle\frac{1}{z} = \displaystyle\frac{1}{a}(其中 x,y,z,a > 0)下的极值.

10.5.3 人工智能中的优化问题

引例: 如何让机器学会画一条“完美”的曲线?

想象我们在做一个科学实验. 我们观察到一个隐藏的真实物理规律 (比如一个正弦波 y = \sin(2\pi x)), 但我们在实验室里用仪器测出来的数据往往是不精确的.

假设我们采集到了 N 个数据点 (x_1, t_1), (x_2, t_2), \dots, (x_N, t_N). 由于测量误差 (随机噪声) 的存在, 这些点会在真实的 \sin(2\pi x) 曲线上下随机波动.

现在, 我们要求计算机 (AI模型) 在不知道真实规律是正弦函数的前提下, 仅凭这 N 个带噪声的散点, 去“猜”并画出一条能够最好地穿过这些点的曲线.

最自然的想法是, 我们用一个 M 阶多项式 去拟合它: y(x, \mathbf{w}) = w_0 + w_1 x + w_2 x^2 + \cdots + w_M x^M = \sum_{j=0}^M w_j x^j 这里的 x 是输入, w_0, w_1, \dots, w_M 是多项式的系数 (在人工智能中通常称为权重参数).

问题来了: 对于给定的数据点, 我们到底该怎么确定这组参数 \mathbf{w}, 才能让这条多项式曲线“最完美”地贴合数据呢? 这就需要引入一种衡量误差的数学标准, 也就是接下来要讲的最小二乘法.

10.5.3.1 数据拟合与最小二乘法

最小二乘法的核心思想 (Least Squares)

在工程与科学计算中, 当我们面对一组实验数据时, 我们要找的并不是能完美穿过每一个点的曲线 (那往往会导致严重的“过拟合”), 而是寻找一条使得整体误差最小的曲线.

什么样的误差定义最好? 最通用且拥有极好数学性质的方法是: 测量每一个真实数据点 t_i 与模型预测值 y(x_i, \mathbf{w}) 之间的偏差 (Deviation), 并将这些偏差的平方和作为总误差: E(\mathbf{w}) = \frac{1}{2} \sum_{i=1}^N \left( y(x_i, \mathbf{w}) - t_i \right)^2 (注: 前面乘上 \frac{1}{2} 是为了后续求导时刚好能和平方项的 2 抵消, 方便计算, 不影响极值点的位置. )

这就是大名鼎鼎的最小二乘法 (Method of Least Squares). 通过寻找使得误差函数 E(\mathbf{w}) 达到极小值的权重参数 \mathbf{w}^*, 我们就找到了“最佳拟合”曲线!

从多元微积分看最小二乘法的求解

结合我们在前几节学过的多元函数极值知识, 最小二乘法本质上就是一个无约束的多元函数求极小值问题!

为了直观, 我们退回最简单的线性拟合 (即用直线 f(x) = ax + b 来拟合数据). 此时, 误差函数 D 是关于参数 ab 的二元函数: D(a, b) = \sum_{i=1}^N \left( y_i - (ax_i + b) \right)^2

如何求它的极小值点? 我们只需要让它对 a 和对 b偏导数分别等于 0 即可找到临界点 (驻点): \frac{\partial D}{\partial a} = -2 \sum_{i=1}^N x_i (y_i - ax_i - b) = 0 \frac{\partial D}{\partial b} = -2 \sum_{i=1}^N (y_i - ax_i - b) = 0

将上述方程组展开并合并同类项, 你会发现它完全变成了一个关于 ab二元一次线性方程组: \begin{cases} \left(\sum x_i^2\right) a + \left(\sum x_i\right) b = \sum x_i y_i \\ \left(\sum x_i\right) a + n b = \sum y_i \end{cases} 只要数据点给定了, \sum x_i, \sum y_i, \sum x_i^2 这些求和项就全是确定的常数数字. 利用矩阵或消元法瞬间就能解出最佳的 ab! 即使扩展到前面的 M 阶多项式, 原理也是完全相同的 (偏导数等于0, 解线性方程组). 这正是最小二乘法如此被广泛使用且高效的数学底层逻辑.

10.5.3.2 正则化与带约束极值问题

带约束极值问题与人工智能中的正则化 (Regularization)

在人工智能和机器学习中, 我们经常面临一个核心痛点: 过拟合 (Overfitting). 如果仅仅为了让模型在训练数据上误差 (Loss) 最小, 模型往往会变得异常复杂, 甚至把数据里的“随机噪声”也死记硬背下来, 导致在面对新数据时表现极差.

为了防止过拟合, AI 工程师们会给模型加上一道“紧箍咒”: 要求模型的参数 (权重 w_1, w_2, \dots) 不能太大. 这样一来, 一个纯粹的无约束极小化问题, 就顺理成章地变成了一个带约束的极值问题!

1. 从约束极值到拉格朗日函数 假设我们的原本目标是最小化损失函数 f(w_1, w_2). 现在加上一个参数大小的限制, 比如要求权重向量的长度不能超过某个常数: g(w_1, w_2) = w_1^2 + w_2^2 \le C (这在几何上被限制在一个圆盘内). 根据本节学过的拉格朗日乘数法, 为了求解这个处于边界上的约束极值问题, 我们需要构造拉格朗日函数: L(w_1, w_2, \lambda) = f(w_1, w_2) + \lambda (w_1^2 + w_2^2 - C)

2. 机器学习中的 L2 正则化 (权重衰减) 在对权重 w 求偏导时, 常数 C 并不会产生影响. 因此, 在实际的深度学习代码 (如 PyTorch 或 TensorFlow) 中, 优化目标常常被直接写为以下形式: \text{Loss}_{\text{total}} = \underbrace{\text{Loss}_{\text{data}}(w)}_{\text{原目标函数 } f} + \underbrace{\lambda (w_1^2 + w_2^2)}_{\text{拉格朗日约束项 } \lambda g} 这就是机器学习中赫赫有名的 L2 正则化 (L2 Regularization), 在神经网络中也常被称为权重衰减 (Weight Decay)! 这里的 \lambda 正是我们刚才在微积分中引入的拉格朗日乘子. 在 AI 中, 它被称为惩罚系数 (或正则化系数). 它就像是一个调节器: \lambda 越大, 表示我们对模型复杂度的惩罚越重, 强迫权重向零收缩.

3. 几何直观的重现 如果没有约束, 损失函数 f(w) 的极小值 (谷底) 可能在一个极远的高风险位置. 加上约束后, 我们的搜索范围被死死锁在了原点附近的圆形栅栏内 (w_1^2 + w_2^2 \le C). 损失函数的等高线一圈圈向外膨胀, 直到与这个圆刚好相切的那一点, 就是正则化后的最优权重. 此时, 损失函数的梯度与惩罚项的梯度再次满足了平行的拉格朗日核心条件!

10.6 多元函数的泰勒展开

提示

在一元微积分中, 泰勒展开 (Taylor Expansion) 为我们提供了一种用多项式来局部逼近复杂函数的强大工具. 在多元微积分中, 这一思想同样适用. 特别是当我们想要了解一个多元函数 (例如三维空间中的曲面) 在某一点附近的弯曲形状时, 多元函数的泰勒展开是不可或缺的. 更重要的是, 在人工智能中, 寻找损失函数的极小值往往依赖于多元泰勒展开提供的局部几何信息.

10.6.1 多元函数的泰勒展开公式

二元函数的泰勒公式

设二元函数 z = f(x, y) 在点 (x_0, y_0) 的某一邻域内连续且有直到 (n+1) 阶的连续偏导数. 为了方便, 我们记自变量的增量为 h = x - x_0, k = y - y_0. 则函数在该点附近的二阶泰勒展开式为: \begin{aligned} f(x, y) \approx f(x_0, y_0) &+ \underbrace{\left( h \frac{\partial f}{\partial x} + k \frac{\partial f}{\partial y} \right)}_{\text{一阶项 (线性逼近)}} \\ &+ \underbrace{\frac{1}{2!} \left( h^2 \frac{\partial^2 f}{\partial x^2} + 2hk \frac{\partial^2 f}{\partial x \partial y} + k^2 \frac{\partial^2 f}{\partial y^2} \right)}_{\text{二阶项 (二次逼近)}} \end{aligned}

如果回顾前面的知识, 你会发现: 一阶项其实就是全微分 df (几何上对应切平面), 而二阶项则描述了曲面偏离切平面的弯曲程度.

向量与矩阵形式 (极其重要! )

当变量数量增多时, 写出一大堆偏导数是非常繁琐的. 在机器学习中, 我们通常将自变量写成向量 \mathbf{x}, 并将泰勒展开改写为极其优雅的矩阵形式. 设 \mathbf{x} = (x, y)^T, 增量 \Delta \mathbf{x} = \mathbf{x} - \mathbf{x}_0 = (h, k)^T.

  1. 一阶导数向量被称为梯度 (Gradient): \nabla f = \left( \frac{\partial f}{\partial x}, \frac{\partial f}{\partial y} \right)^T
  2. 二阶导数矩阵被称为海森矩阵 (Hessian Matrix): \mathbf{H} = \begin{pmatrix} f_{xx} & f_{xy} \\ f_{yx} & f_{yy} \end{pmatrix}

于是, 多元函数的二阶泰勒展开可以紧凑地写为: f(\mathbf{x}) \approx f(\mathbf{x}_0) + \nabla f(\mathbf{x}_0)^T \Delta \mathbf{x} + \frac{1}{2} \Delta \mathbf{x}^T \mathbf{H} \Delta \mathbf{x} 这正是现代优化算法 (如牛顿法) 推导的起点!

10.6.2 多元函数泰勒展开的应用

提示

泰勒展开之所以重要, 是因为它能把复杂的非线性函数在局部”降维打击”成简单的多项式. 以下是它在数学理论与人工智能中的两个核心应用.

应用一: 证明极值的充分条件 (第二阶导数测试)

在前面的章节中, 我们给出了判断多元函数极值的结论: 在驻点处 (即一阶偏导数 f_x=0, f_y=0), 若 AC - B^2 > 0A > 0, 则有极小值. 这个结论是怎么来的?

MIT 18.02 课程视角: 我们可以用泰勒展开轻松证明它. 在驻点 (x_0, y_0) 处, 梯度为零, 因此一阶项消失了. 函数值的变化量 \Delta f = f(x, y) - f(x_0, y_0) 完全由二阶项主导: \Delta f \approx \frac{1}{2} \left( f_{xx} h^2 + 2f_{xy} hk + f_{yy} k^2 \right) = \frac{1}{2} \left( A h^2 + 2B hk + C k^2 \right) 这是一个关于 hk 的二次型. 通过初等代数的配方, 我们可以将其改写为: \Delta f \approx \frac{1}{2A} \left[ (Ah + Bk)^2 + (AC - B^2)k^2 \right] 显然, 当 AC - B^2 > 0A > 0 时, 无论 h, k 取何值 (不全为零), 中括号内的值永远为正, 这意味着 \Delta f > 0 恒成立. 因此函数值在这一点比周围都小, 这正是一个局部极小值!

应用二: 神经网络训练中的局部二次近似 (Bishop 教材经典内容)

在人工智能 (特别是深度学习) 中, 我们需要训练神经网络, 本质上就是寻找一组庞大的权重参数 \mathbf{w}, 使得误差函数 E(\mathbf{w}) 达到极小值.

根据 Bishop 的《Pattern Recognition and Machine Learning (PRML)》一书, 我们很难直接找到解析解, 而是必须在权重空间中进行迭代漫游: \mathbf{w}^{(\tau+1)} = \mathbf{w}^{(\tau)} + \Delta \mathbf{w}.

为了决定往哪个方向走最好, 我们会利用泰勒展开对误差函数进行局部二次近似 (Local quadratic approximation): E(\mathbf{w}) \simeq E(\mathbf{\hat{w}}) + (\mathbf{w}-\mathbf{\hat{w}})^T \mathbf{b} + \frac{1}{2} (\mathbf{w}-\mathbf{\hat{w}})^T \mathbf{H} (\mathbf{w}-\mathbf{\hat{w}}) 其中 \mathbf{b} 是误差梯度的向量, \mathbf{H} 是海森矩阵.

  • 如果我们只看一阶项 (梯度), 我们将得到梯度下降法 (Gradient Descent), 指导我们沿着最陡峭的下坡方向前进.
  • 如果我们同时考虑二阶项 (海森矩阵), 我们将得到牛顿法 (Newton’s Method). 海森矩阵包含了误差曲面的曲率信息 (比如这是一个尖锐的峡谷还是一个平缓的盆地), 它能告诉算法在不同方向上应该迈出多大的步子, 从而极大地加速神经网络的收敛过程!