第10章 多元函数的微分

Tip

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

S(x,θ)=24xsinθ2x2sinθ+x2sinθcosθ

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

10.1 多元函数的连续性

Tip

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

10.1.1 区域

Tip

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

Important

邻域

P0(x,y)R2 中的一点, 给定 δ>0, R2 中所有与点 P0 距离小于 δ 的点构成一个集合, 称为点 P0δ-邻域, 记作 U(P0,δ), 即

U(P0,δ)={(x,y)|(xx0)2+(yy0)2<δ}.

P0 与其自己的距离为0, 所以根据上述定义, P0U(P0,δ). 但有时候我们希望排除掉 P0 这一点, 在集合 U(P0,δ) 中把 P0 去掉, 由此得到的集合称为 P0δ-去心邻域, 记作 U(P0,δ), 即

U(P0,δ)={(x,y)|0<(xx0)2+(yy0)2<δ}.

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

Important

内点

任意给定一个 R2 中的集合 D, 任意一点 PD 的关系比符合以下三种关系中的一种:

  1. 内点: 存在点 P 的某个邻域 U(P), 使得 U(P)D.

  2. 外点: 存在点 P 的某个邻域 U(P), 使得 U(P)D=.

  3. 边界点: 点 P 的任一邻域内既有属于 D 的点, 又有不属于 D 的点.

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

Note

判断 1<x2+y2<2 的内点, 外点和边界点.

Important

开集与闭集

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

Note

集合 1<x2+y2<2 为开集.

Important

连通集

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

Important

区域

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

Note

例子

集合 {(x,y)1<x2+y2<2} 是开区域,而集合 {(x,y)1x2+y22} 是闭区域.

Important

有界集与无界集

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

10.1.2 多元函数的极限

Tip

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

Important

二元函数的定义

DR2 中的非空子集,称映射 f:DR 为定义在 D 上的二元函数,记为

z=f(x,y),(x,y)D

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

Important

二元函数的极限

f(x,y) 的定义在 D 上的二元函数,P0(x0,y0)D 的聚点,如果存在常数 A,对于任意给定的正数 ε,总存在正数 δ,使得当 (x,y)U(P0,δ) 时,有 |f(x,y)A|<ε,则称 A 为函数 f(x,y)(x,y) 趋于 (x0,y0) 时的极限,记作

lim(x,y)(x0,y0)f(x,y)=A.

Warning

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

Note

例1: 设 f(x,y)=(x2+y2)sin1x2+y2,求证:lim(x,y)(0,0)f(x,y)=0.

证: 这里函数 f(x,y) 的定义域为 D=R2{(0,0)},点 O(0,0)D 的聚点, 因为|f(x,y)0|=|(x2+y2)sin1x2+y20|x2+y2, 可见,ε>0,取 δ=ε,则当0<(x0)2+(y0)2<δ, P(x,y)DU(0,δ) 时,总有 |f(x,y)0|<ε 成立,所以 lim(x,y)(0,0)f(x,y)=0.

例2: 考察函数在 (0,0) 处的极限, f(x,y)={xyx2+y2,x2+y20,0,x2+y2=0..

解: 首先, 我们看当点 P(x,y) 沿 x 轴趋于点 (0,0) 时有,

limx0f(x,0)=limx00=0

又当点 P(x,y) 沿 y 轴趋于点 (0,0) 时,

limy0f(0,y)=limy00=0.

虽然以上述两种特殊方式(沿 x 轴或沿 y 轴)趋于原点时函数的极限存在且相等,但是不能以此断言该函数的极限存在. 例如, 当点 P(x,y) 沿着直线 y=kx 趋于点 (0,0) 时,有

limx0kx2x2+k2x2=k1+k2,

k 不同极限也不同, 由此可以断言函数在(0,0) 处的极限不存在.

例3: 求 lim(x,y)(0,2)sin(xy)x.

解: 函数 sin(xy)x 的定义域为 D={(x,y)|x0,yR},P0(0,2)D 的聚点,

lim(x,y)(0,2)sin(xy)x=lim(x,y)(0,2)[sin(xy)xyy]=limxy0sin(xy)xylimy2y=12=2

10.1.3 多元函数的连续性

Tip

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

Important

二元函数连续性

f(x,y) 为定义在 D 上的二元函数,P0(x0,y0)D 的聚点,且 P0D,如果 lim(x,y)(x0,y0)f(x,y)=f(x0,y0), 则称函数 f(x,y) 在点 P0(x0,y0) 连续, 进一步, 如果函数 f(x,y)D每一点都连续,则称函数 f(x,y)D 上的连续函数.

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

Important

连续函数的性质

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

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

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

10.2 偏导数

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

Important
偏导数 设函数 z=f(x,y) 在点 (x0,y0) 的某一邻域内有定义,固定 y=y0xx0 附近变化, 若极限

(2-1)limΔx0f(x0+Δx,y0)f(x0,y0)Δx

存在, 则称此极限为函数 z=f(x,y) 在点 (x0,y0) 处对 x偏导数,记作:

zx|x=x0,fx|x=x0,zx|x=x0 或 fx(x0,y0)

类似地, 函数 z=f(x,y)y 的偏导数为:

limΔy0f(x0,y0+Δy)f(x0,y0)Δy

记作:

zy|y=y0,fy|y=y0,zy|y=y0 或 fy(x0,y0)

Warning
偏导函数 z=f(x,y) 在区域 D 内每一点 (x,y) 处对 x 的偏导数存在, 则由此构成的函数称为偏导函数,记作:

zx,fx,zx 或 fx(x,y)

y 的偏导函数记为:

zy,fy,zy 或 fy(x,y)

Note

例1:求分段函 z=f(x,y)={xyx2+y2,x2+y200,x2+y2=0 在点 (0,0) 处的偏导数.

解:

  • 计算 fx(0,0)

fx(0,0)=limΔx0f(0+Δx,0)f(0,0)Δx=limΔx000Δx=0

  • 计算 fy(0,0)

fy(0,0)=limΔy0f(0,0+Δy)f(0,0)Δy=limΔy000Δy=0

Important

高阶偏导数

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

Warning

二阶偏导数的四种形式

  1. x 的二阶偏导: x(zx)=2zx2=fxx(x,y)

  2. 先对 x 后对 y 的混合偏导: y(zx)=2zxy=fxy(x,y)

  3. 先对 y 后对 x 的混合偏导: x(zy)=2zyx=fyx(x,y)

  4. y 的二阶偏导: y(zy)=2zy2=fyy(x,y)

Note

例:设函数 z=x3y23xy3xy+1,求下列高阶偏导数: 2zx2, 2zyx, 2zxy, 2zy2  3zx3.

解:
先求一阶偏导数: zx=3x2y23y3y zy=2x3y9xy2x 然后求二阶偏导数: 2zx2=x(3x2y23y3y)=6xy2 2zyx=y(3x2y23y3y)=6x2y9y21 2zxy=x(2x3y9xy2x)=6x2y9y21 2zy2=y(2x3y9xy2x)=2x318xy 最后求三阶偏导数 3zx3=x(6xy2)=6y2

Important

二阶混合偏导数定理

如果函数 z=f(x,y) 的二阶混合偏导数 2zyx2zxy 在区域 D 内连续,那么在该区域内必有:

2zyx=2zxy

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

Note

例1:验证函数 z=lnx2+y2 满足拉普拉斯方程 2zx2+2zy2=0.

证明:
首先将函数化简为: z=12ln(x2+y2)
zx=xx2+y2 zy=yx2+y2 2zx2=y2x2(x2+y2)2 2zy2=x2y2(x2+y2)2 验证方程 将二阶偏导数相加: 2zx2+2zy2=y2x2+x2y2(x2+y2)2=0

例2:证明函数 u=1r 满足拉普拉斯方程2ux2+2uy2+2uz2=0,其中 r=x2+y2+z2.

证明: ux=1r2rx=xr3 2ux2=1r3+3x2r5 由对称性可得: 2uy2=1r3+3y2r5,2uz2=1r3+3z2r5 验证方程
2ux2+2uy2+2uz2=3r3+3(x2+y2+z2)r5=3r3+3r2r5=0

10.3 全微分

Tip

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

df=f(x)dx

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

Important

全微分公式

dz=zxdx+zydy

Warning

全微分的几何理解

全微分几何图示

Note

例1:z(x,y)=x+y.

解: 变量变化:xx+Δx,yy+Δy 函数增量计算: z(x+Δx,y+Δy)=(x+Δx)+(y+Δy) 增量分解: Δz=z(x+Δx,y+Δy)z(x,y)=Δx+Δy 偏导数表示: zx=1,zy=1 全微分公式: dz=dx+dy

例2:函数 z(x,y)=x2+2y3.

解: 考虑自变量的微小变化: {xx+dxyy+dy 函数增量计算: z(x+dx,y+dy)=(x+dx)2+2(y+dy)3=x2+2xdx+dx2+2(y3+3y2dy+3ydy2+dy3)=x2+2y3+2xdx+6y2dy+dx2+6ydy2+2dy3高阶无穷小项 线性主部提取: 保留一阶增量项 Δz2xdx+6y2dy 偏导数计算: zx=2xzy=6y2 全微分公式:dz=zxdx+zydy=2xdx+6y2dy

例3:S=12(L2x+L2x+2xcosθ)xsinθ.

解: 化简:S(x,θ)=Lxsinθ2x2sinθ+x2sinθcosθ 变量代换过程:xx+Δx,θθ+Δθ 函数增量展开: S(x+Δx,θ+Δθ)=L(x+Δx)sin(θ+Δθ)2(x+Δx)2sin(θ+Δθ)+(x+Δx)2sin(θ+Δθ)cos(θ+Δθ) 线性近似处理(保留一阶项): ΔS(Lsinθ4xsinθ+2xsinθcosθ)Δx+(Lxcosθ2x2cosθx2sin2θ+x2cos2θ)Δθ 偏导数提取: {Sx=Lsinθ4xsinθ+xsinθcosθSθ=Lxcosθ2x2cosθ+x2(cos2θsin2θ) 全微分公式:dS=Sxdx+Sθdθ 最终结果:dS=sinθ(L4x+2xcosθ)dx+[xcosθ(L2x)+x2cos2θ]dθ

10.3.1 链式法则

Tip

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

Important

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

z=f(u,v),而 u=u(t), v=v(t) 则复合函数 zt 的全导数公式为:

dzdt=zududt+zvdvdt

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

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

zx=zuux+zvvx
zy=zuuy+zvvy

Note

同济教材 P78 例3: 设 z=uv+sint,而 u=et,v=cost,求全导数 dzdt.

解: 注意这里 z 不仅通过 u,v 依赖于 t,还直接依赖于 t。根据链式法则: dzdt=zududt+zvdvdt+zt=vet+u(sint)+cost=etcostetsint+cost=et(costsint)+cost.

同济教材 P78 例2: 设 u=ex2+y2+z2,而 z=x2siny,求 uxuy.

解: 这里的 z 是中间变量,将其视为 z(x,y)。应用链式法则: ux=fx+fzzx=2xex2+y2+z2+2zex2+y2+z2(2xsiny)=2x(1+2zsiny)ex2+y2+z2.

同理求对 y 的偏导: uy=fy+fzzy=2yex2+y2+z2+2zex2+y2+z2(x2cosy)=2(y+x2zcosy)ex2+y2+z2.

10.3.2 全微分形式不变性

Tip

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

Note

同济教材 P81 例6: 设 z=eusinv,而 u=xy,v=x+y,利用全微分形式不变性求偏导数.

解: 先写出外层函数的全微分: dz=d(eusinv)=eusinvdu+eucosvdv

再计算中间变量的微分: du=d(xy)=ydx+xdy dv=d(x+y)=dx+dy

du,dv 直接代入 dz 并合并同类项(像初中代数一样合并 dxdy): dz=eusinv(ydx+xdy)+eucosv(dx+dy)=[yeusinv+eucosv]dx+[xeusinv+eucosv]dy

比较等式两端 dxdy 的系数,直接就能读出偏导数: zx=exy[ysin(x+y)+cos(x+y)] zy=exy[xsin(x+y)+cos(x+y)] 这个方法比死记链式法则公式要直观、安全得多!

10.3.3 隐函数求导

Tip

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

Important

一元隐函数的求导公式

设方程 F(x,y)=0 确定了隐函数 y=f(x) 对方程两端取全微分得: dF=Fxdx+Fydy=0 只要 Fy0,直接移项即可得到一阶导数:

dydx=FxFy

二元隐函数的求导公式

若方程 F(x,y,z)=0 确定了二元隐函数 z=f(x,y) 当需要计算偏导数 zx 时,意味着 y 为常数(即 dy=0),全微分退化为 Fxdx+Fzdz=0

zx=FxFz(Fz0)

同理可得:

zy=FyFz(Fz0)

这个自带负号的公式,正是全微分移项产生的自然结果。

Note

同济教材 P84 例1 (修改版): 验证方程 x2+y21=0 确定了一个隐函数,并求其一阶与二阶导数 dydxd2ydx2.

解: F(x,y)=x2+y21 容易算得 Fx=2x,Fy=2y 根据一元隐函数求导公式,得一阶导数: dydx=FxFy=2x2y=xy

进一步求二阶导数(对一阶导数关于 x 再求一次导,注意 yx 的函数): d2ydx2=ddx(xy)=1yxdydxy2=yx(xy)y2=y2+x2y3 因为原方程 x2+y2=1,所以代入后得到最简结果:d2ydx2=1y3

同济教材 P85 例2: 设 x2+y2+z24z=0,求 zx2zx2.

解: F(x,y,z)=x2+y2+z24z 分别求偏导数:Fx=2xFz=2z4 Fz0(即 z2)时,利用公式得: zx=FxFz=2x2z4=x2z

再对 x 求一次偏导数得到二阶导(注意把 y 看作常量,而 zx 的函数): 2zx2=x(x2z)=1(2z)x(zx)(2z)2=(2z)+x(x2z)(2z)2=(2z)2+x2(2z)3

10.4 梯度与方向导数

10.4.1 梯度

Important

梯度的定义 设二元函数f(x,y) 在区域D 内具有一阶连续偏导数,则对于任意点 P0(x0,y0)D,其梯度定义为: gradf(x0,y0)=f(x0,y0)=fx(x0,y0)i+fy(x0,y0)j 其中微分算子=xi+yj,

Warning

梯度方向是函数值增长最快的方向

Note

例3:求 grad 1x2+y2.

解:这里 f(x,y)=1x2+y2,因为 fx=2x(x2+y2)2,fy=2y(x2+y2)2, 所以
grad 1x2+y2=2x(x2+y2)2i2y(x2+y2)2j.

 

例5:设 f(x,y,z)=x3xy2z2, P0(1,1,0),问 f(x,y,z)P0 处沿什么方向变化最快, 在这个方向的变化率是多少?

解: f=fxi+fyj+fzk=(3x2y2)i2xyj2zk, f(1,1,0)=2i2jk.
f(x,y,z)P0 处沿 f(1,1,0) 的方向增加最快,沿 f(1,1,0) 的方向减少最快,在这两个方向的变化率分别是
|f(1,1,0)|=22+(2)2+12=3,|f(1,1,0)|=3.

例6:求曲面 x2+y2+z=9 在点 P0(1,2,4) 的切平面和法线方程.

解:f(x,y,z)=x2+y2+z,由梯度与等值面的关系可知,梯度
f|P0=(2xi+2yj+k)|(1,2,4)=2i+4j+k的方向是等值面 f(x,y,z)=9 在点 P0 的法线方向,因此切平面方程是 2(x1)+4(y2)+(z4)=0,
2x+4y+z=14, 曲面在 P0 处的法线方程是
x=1+2t, y=2+4t, z=4+t(t 为任意常数).

Important

三元函数的梯度定义与性质 设三元函数 f(x,y,z) 在空间区域 G 内具有一阶连续偏导数,则对于点 P0(x0,y0,z0) inG ),其梯度为:

gradf(x0,y0,z0)=f(x0,y0,z0)=fxi+fyj+fzk 其中三维Nabla算子: =xi+yj+zk

Note

例:对 f(x,y,z)=x2+yz在点 (1,2,3) 的梯度.

f=(2x,z,y)|(1,2,3)=(2,3,2)

10.4.2 方向导数

Important

方向导数的定义 设函数 f(x,y,z) 在点 P0(x0,y0,z0) 的某邻域内有定义,l 为从 P0 出发的给定方向向量,P(x,y,z)l 上邻近 P0 的点,若极限

limρ0+f(P)f(P0)ρ=fl|P0

存在,则称此极限为 fP0 点沿方向 l方向导数,其中 ρ=|PP0|.

Warning
方向导数与梯度的关系

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

10.5 多元函数的极值

10.5.1 无约束极值问题

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

解: 设折起来的边长为x cm,倾角为α(如图),则梯形断面的下底长为(242x) cm,上底长为(242x+2xcosα) cm,高为(xsinα) cm,所以断面面积 A=12[(242x+2xcosα)+(242x)]xsinα A=(24xsinα2x2sinα+x2sinαcosα)(0<x<12,0<απ2) 可见断面面积A=A(x,α),这就是目标函数,下面求使该函数取得最大值的点(x,α),令{Ax=24sinα4xsinα+2xsinαcosα=0Aα=24xcosα2x2cosα+x2(cos2αsin2α)=0 由于sinα0,x0,上述方程组可化为{122x+xcosα=024cosα2xcosα+x(cos2αsin2α)=0 解这方程组,得α=π3=60,x=8 根据题意可知断面面积的最大值一定存在,并且在D={(x,α)|0<x<12,0<απ2}内取得,通过计算得知α=π2时的函数值比α=60,x=8时的函数值小,又函数在D内只有一个驻点,因此可以断定,当x=8, α=60时,就能使断面的面积最大.

例2:某厂要用铁板做成一个体积为2 m³的有盖长方体水箱,问当长、宽和高各取怎样的尺寸时,才能使用料最省?

解: 设水箱的长为 x m, 宽为 y m, 则其高应为 2xy m. 此水箱所用材料的面积为 A=2(xy+y2xy+x2xy), 即A=2(xy+2x+2y)(x>0,y>0). 可见材料面积 A=A(x,y)xy 的二元函数, 这就是目标函数, 下面求使该函数取得最小值的点 (x,y), Ax=2(y2x2)=0,Ay=2(x2y2)=0. 解这方程组, 得x=23,y=23. 根据题意可以知道, 水箱所用材料面积的最小值一定存在, 并在开区域 D={(x,y)|x>0,y>0} 内取得,又函数在 D 内只有唯一的驻点 (23,23), 因此可断定当 x=23,y=23 时, A 取得最小值,就是说, 当水箱的长为 23 m, 宽为 23 m, 高为 22323=23 m 时, 水箱所用的材料最省. 从这个例子还可看出, 在体积一定的长方体中, 以立方体的表面积为最小,

10.5.1.1 无约束极值的判别法

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

Important
二元函数的极值充分条件

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

我们计算该点处的三个二阶偏导数值,并记为:

  • A=fxx(x0,y0)

  • B=fxy(x0,y0)

  • C=fyy(x0,y0)

构造判别式 Δ=ACB2。则在 (x0,y0) 处是否取得极值的判断准则如下:

  1. Δ=ACB2>0 时,具有极值。具体而言:

    • 如果 A>0,则该点为 极小值点(Local Minimum);

    • 如果 A<0,则该点为 极大值点(Local Maximum)。

  2. Δ=ACB2<0 时,没有极值。该点是一个 鞍点(Saddle Point)。

  3. Δ=ACB2=0 时,无法判断(退化情形)。该点可能有极值,也可能没有极值,需要借助其他方法或更高阶的导数来另作讨论。

10.5.2 条件极值

Important
条件极值 是指函数 f(x,y,) 在满足约束条件 g(x,y,)=0 的前提下取得的极大值或极小值. 拉格朗日乘数法 (Lagrange Multipliers) 是用于求带有约束条件的极值问题的一种重要方法. 假设要求函数 f(x,y) 在约束条件 g(x,y)=0 下的极值, 方法

  1. 构造拉格朗日函数
    L(x,y,λ)=f(x,y)+λg(x,y)

  2. 求偏导并列方程组
    Lx=0,Ly=0,Lλ=0

  3. 解这个方程组,得到可疑点(驻点);

  4. 将这些点代入 f(x,y),比较函数值,判断极值.

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

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

  1. 等高线与相切:我们在平面上画出固定的约束曲线 g(x,y)=c,然后再画出目标函数 f(x,y)等高线 (Level curves)。当我们改变 f 的值时,等高线会一圈圈扩大或缩小。当 f 的等高线刚好触碰(相切)到约束曲线的那一瞬间,我们就找到了这条线上的最小值或最大值!

  2. 梯度的平行:在切点处,两条曲线完全相切,这意味着它们的法线是同一条。我们之前学过,函数的梯度向量(Gradient)总是垂直于它的等高线。既然在极值点两曲线相切,那么 f 的梯度 f 必须与 g 的梯度 g 平行!

  3. 方程的诞生:数学上,我们用一个比例常数 λ (拉格朗日乘子)来表示两个向量的平行关系: f=λg 将其拆解为分量形式,也就是 fx=λgxfy=λgy。这正是拉格朗日函数 Lx=0Ly=0 移项后所表达的核心本质!

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

Warning

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

Note
经典例题

例:求函数u=xyz 在附加条件 1x+1y+1z=1a (x,y,z,a>0)下的极值.

解: 构造拉格朗日函数: L(x,y,z)=xyz+λ(1x+1y+1z1a)

求偏导并令其为零: {Lx=yzλx2=0Ly=xzλy2=0Lz=xyλz2=0

将各方程分别乘以对应的变量 x,y,z 后相加,代入原条件得: 3xyz=λ(1x+1y+1z)3xyz=λa 即: xyz=λ3a

λ=3axyz 回代入原偏导方程(因为 x,y,z>0,除以 xyz 不为零),解得唯一驻点: x=y=z=3a

结论
因为问题在给定区域内只有一个驻点,结合问题的实际意义(或者通过比较边界极限),可知函数在点 (3a,3a,3a) 处取得极小值: u极小=(3a)(3a)(3a)=27a3

10.5.3 人工智能中的优化问题

Tip

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

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

假设我们采集到了 N 个数据点 (x1,t1),(x2,t2),,(xN,tN)。由于测量误差(随机噪声)的存在,这些点会在真实的 sin(2πx) 曲线上下随机波动。

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

最自然的想法是,我们用一个 M 阶多项式 去拟合它: y(x,w)=w0+w1x+w2x2++wMxM=j=0Mwjxj 这里的 x 是输入,w0,w1,,wM 是多项式的系数(在人工智能中通常称为权重参数)。

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

10.5.3.1 数据拟合与最小二乘法

Important

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

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

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

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

Note

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

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

为了直观,我们退回最简单的线性拟合(即用直线 f(x)=ax+b 来拟合数据)。此时,误差函数 D 是关于参数 ab 的二元函数: D(a,b)=i=1N(yi(axi+b))2

如何求它的极小值点?我们只需要让它对 a 和对 b偏导数分别等于 0 即可找到临界点(驻点): Da=2i=1Nxi(yiaxib)=0 Db=2i=1N(yiaxib)=0

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

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

[!extension]

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

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

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

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

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

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

10.6 多元函数的泰勒展开

Tip

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

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

Important

二元函数的泰勒公式

设二元函数 z=f(x,y) 在点 (x0,y0) 的某一邻域内连续且有直到 (n+1) 阶的连续偏导数。为了方便,我们记自变量的增量为 h=xx0, k=yy0 则函数在该点附近的二阶泰勒展开式为:

f(x,y)f(x0,y0)+(hfx+kfy)一阶项 (线性逼近)+12!(h22fx2+2hk2fxy+k22fy2)二阶项 (二次逼近)

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

Warning

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

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

  1. 一阶导数向量被称为梯度 (Gradient)f=(fx,fy)T

  2. 二阶导数矩阵被称为海森矩阵 (Hessian Matrix)H=(fxxfxyfyxfyy)

于是,多元函数的二阶泰勒展开可以紧凑地写为:

f(x)f(x0)+f(x0)TΔx+12ΔxTHΔx

这正是现代优化算法(如牛顿法)推导的起点!

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

Tip

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

Note

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

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

MIT 18.02 课程视角: 我们可以用泰勒展开轻松证明它。在驻点 (x0,y0) 处,梯度为零,因此一阶项消失了。函数值的变化量 Δf=f(x,y)f(x0,y0) 完全由二阶项主导:

Δf12(fxxh2+2fxyhk+fyyk2)=12(Ah2+2Bhk+Ck2)

这是一个关于 hk 的二次型。通过初等代数的配方,我们可以将其改写为:

Δf12A[(Ah+Bk)2+(ACB2)k2]

显然,当 ACB2>0A>0 时,无论 h,k 取何值(不全为零),中括号内的值永远为正,这意味着 Δf>0 恒成立。因此函数值在这一点比周围都小,这正是一个局部极小值

Caution

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

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

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

为了决定往哪个方向走最好,我们会利用泰勒展开对误差函数进行局部二次近似 (Local quadratic approximation)

E(w)E(w^)+(ww^)Tb+12(ww^)TH(ww^)

其中 b 是误差梯度的向量,H 是海森矩阵。

  • 如果我们只看一阶项(梯度),我们将得到梯度下降法 (Gradient Descent),指导我们沿着最陡峭的下坡方向前进。

  • 如果我们同时考虑二阶项(海森矩阵),我们将得到牛顿法 (Newton's Method)。海森矩阵包含了误差曲面的曲率信息(比如这是一个尖锐的峡谷还是一个平缓的盆地),它能告诉算法在不同方向上应该迈出多大的步子,从而极大地加速神经网络的收敛过程!