多元函数微分学
多元函数的微分
微分是对函数某一点附近的线性逼近,这一点在多元函数中依然是核心思想。
偏导数
在一元函数的微分学中第一个被引进的概念就是“导数”,它本质上是一个极限,用线性的方式反应了函数在该点处的“变化率”。在多元函数中,我们想类比的定义“导数”。
由于自变量有多个, 我们先不同时考虑所有变量的变化,而是只考虑其中的一个:在某点处固定除了某一变量外的其它变量,多元函数就变成了一元函数。让这个一元函数可以对这个变量求导数,这样得到的结果就称为多元函数在该点处关于该变量的偏导数(如果这个一元函数在这点处不可导,就说偏导数不存在)。设该变量为\(x\),偏导数就记为\(\dfrac{\part f}{\part x}\),符号\(\partial\)提醒我们\(f\)是个多元函数。接着,我们可以单独考虑第二个自变量而固定其他的自变量,这样又可以得到\(\dfrac{\partial f}{\partial y}\)。
如果\(f\)在某点处关于所有自变量的偏导数都存在,就称在该点处可偏导。
从几何上看,函数关于\(x\)的偏导数就是用\(x-z\)平面截函数图像得到的曲线在该点处切线的斜率——这只是一元的角度!偏导数只是以一元的视角去看多元函数,看到的总是片面的。比如,函数在某点可偏导甚至不能推出多元函数在该点处极限存在:\(f(x,y)=\dfrac{xy}{x^2+y^2}\)在\((0,0)\)处无二重极限(因为齐次,代入\(y=kx\)一定会得到一个关于\(k\)的式子),而\(\dfrac{\part f}{\part x}\)和\(\dfrac{\part f}{\part y}\)却都存在。
一个函数关于某个特定变量的偏导函数依然是同样维数的多元函数,所以允许我们继续对它求偏导(可偏导前提下)。这样,二阶偏导数有4个,记为\(\dfrac{\partial^2 f}{\partial x^2},\dfrac{\partial^2 f}{\partial x\partial y},\dfrac{\partial^2 f}{\partial y\partial x},\dfrac{\partial^2 f}{\partial y^2}\)或对应地\(f_{xx},f_{xy},f_{yx},f_{yy}\)。注意,\(\dfrac{\partial^2 f}{\partial x\partial y}\)表示的是\(\dfrac{\partial}{\partial y}\left(\dfrac{\partial f}{\partial x}\right)\),即顺序从左往右对应的是由内到外。
\(f_{xy}\)和\(f_{yx}\)可能是不同的。但是,只要这两个函数在\((x_0,y_0)\)连续,那么在这个点的这两个二阶偏导数也相等——我们按照定义把全增量写出来,分别固定其中一个变量而把它变形为一元的形式,用一元的微分中值定理将偏导数代入,然后根据连续性会发现它们恰好相等。这个结论可以推广到\(n\)阶,即:当偏导数连续的时候求偏导顺序不影响结果。
全微分
所以,偏导数并不能称为“多元函数的微分”,但我们提出这个概念,是因为它与微分有紧密的联系。
微分是线性逼近。某点处的线性逼近的确切含义是,函数在这点处与邻域内一点的“增量”在去除了“关于自变量的线性函数的部分”之后是“高阶无穷小”(相对于自变量变化量)。我们直接把这作为微分的定义:
例如对于二元函数,全增量\(\Delta z=f(x_0+\Delta x,y_0+\Delta y)-f(x_0,y_0)\)。如果可以将其表示为\(\Delta z = A\Delta x+B\Delta y+o(\sqrt{\Delta x^2+\Delta y^2})\),就称在该点处函数可微。线性部分\(A\Delta x+B\Delta y\)就是微分,为了和偏导数对立起来,称其为全微分,记为\(dz\)。能够看到,这完全契合我们所希望的微分具有的特性,并且与一元情形的微分定义一模一样。
在一元里,微分中自变量变化量的系数就是导数。然而在多元里,自变量不止一个,因此系数也就不止一个,因此我们不存在一个“导数”这么简单的概念只用一个数字就能描述清楚一个“微分”。尽管如此,问题还是容易解决的——我们对于每个自变量都给出一个类似于“导数”的数字来描述,让这些数字分别乘上自变量变化率来得到“微分”。而我们发现,这些数字恰好就是偏导数:对于\(\Delta z = A\Delta x+B\Delta y +o(\sqrt{\Delta x^2+\Delta y^2})\)(在可微的前提下),那么把偏导数按照定义表示出来:\(\dfrac{\partial z}{\partial x}=\lim\limits_{\Delta x \to 0}\dfrac{A\Delta x+o(|\Delta x|)}{\Delta x}=A\);同理也有\(\dfrac{\partial z}{\partial y}=B\)。所以证明了全微分中各个系数就是对应的偏微分。把\(\Delta x,\Delta y\)看作自变量的微分\(dx,dy\),就可以写出:
\(df(x,y)=\dfrac{\partial f}{\partial x}dx+\dfrac{\partial f}{\partial y}dy\)
所以,尽管偏导数是片面的,但如果把所有偏导数放在一起,它就可以描述“微分”这一多元概念了。
连续,可偏导,可微
在一元中,可导一定连续,连续不一定可导,可微等价于可导。那在多元情形下怎么样呢?显然可微一定连续。而我们刚才已经用反例说明了可偏导不一定连续(因为极限都不一定存在),而显然连续也不一定可偏导(这在一元时就)。而如果函数可微就一定可偏导(每个系数都需要用偏导来表示),所有不可偏导就一定不可微。但存在这样的函数,可偏导但是不可微:\(f(x,y)=\dfrac{xy}{\sqrt{x^2+y^2}},f(0,0)=0\)。它在\((0,0)\)处各方向偏导数都为0,二重极限也为0,因此想要可微必须函数本身是自变量变化量的高阶无穷小,而除以自变量模长我们恰好得到\(\dfrac{xy}{x^2+y^2}\),我们已经证明了这个函数的极限不存在,因此它并不是高阶无穷小——所以这个函数不可微。
总结起来,在“连续”、“可偏导”、“可微”三者中,可微要比其它二者强——只要可微就一定可偏导,也一定连续,但是可偏导或连续都不能反过来推出可微。而“连续”和“可偏导”二者也互相不能推出。
从“可偏导”与“连续”、“可微”的不等价性中我们再次发现,因为偏导只是从一元的角度看多元,因此不能直接描述出多元下的性质。之所以会发生这样的事,是由于我们讨论的函数太具有一般性。我们直观上会知道,对于性质比较“好”的函数,可偏导是足够描述多元函数的“连续性”和“可微性”的。为了做到这一点,我们需要给函数加上一点别的条件让它变得更“好”:
如果函数在某点的邻域内偏导数都存在(注意将这个条件与“可偏导”相区分)且有界,那么在该点函数连续。证明连续就是证明全增量能够任意小,那么我们可以证明全增量是关于自变量变化的线性函数。把增量拆分成两部分,每部分只有一个变量发生变化,这样就得到了两个“一元函数”的差——由于偏导数在邻域内都存在,我们可以使用微分中值定理(Lagrange)把“增量”放缩成某个导数乘以自变量的变化量,由于我们规定了导数有界,因此这个系数有限,这样增量就被限定维了自变量变化量的线性函数了。
如果函数在某点的邻域内偏导数都存在且偏导数在该点处都连续,那么函数在该点函数可微(但是可微未必有偏导数连续,反例\(f(x,y)=(x^2+y^2)\sin \dfrac{1}{\sqrt{x^2+y^2}},f(0,0)=0\))。证明几乎和上面的一模一样,只是把“用导数有界放缩增量”替换为了“用偏导数连续来证明除了微分部分以外的量为高阶无穷小”。
微分的几何意义
以二元函数为例。从几何上看,二元函数是三维空间中的“曲面”。作为线性逼近,一元中微分的几何意义是切线。在多元中,我们期待它表示“切平面”。事实的确如此:点\((x_0+dx,y_0+dy,f(x_0,y_0)+df)\)(注意这个点不一定在函数上)恰好落在\((x_0,y_0,f(x_0,y_0))\),\((x_0+dx,y_0,f(x_0,y_0)+\dfrac{\partial f}{\partial x})\),\((x_0,y_0+dy,f(x_0,y_0)+\dfrac{\partial f}{\partial y})\)三点所确定的平面上。这个平面是由偏导数的两条切线所确定的,恰好就是函数在该点处的“切平面”。这恰好体现了微分作为“线性逼近”的本质。当然现在我们是基于微分定义了这个“切平面”,它并不是几何意义上的。但我们之后将会从几何出发求出切平面的方程,并发现它刚好和这个“切平面”吻合。
基本微分法则
我们已经看到,一般地,如果\(f\)是\(\R^n \to \R\)的映射,那么微分就是\(df=\dfrac{\partial f}{\partial x_1}dx_1+\cdots+\dfrac{\partial f}{\partial x_n}dx_n\),这可以看作矩阵
\(df=\begin{bmatrix}\dfrac{\partial f}{\partial x_1} & \cdots & \dfrac{\partial f}{\partial x_n} \end{bmatrix}\begin{bmatrix}dx_1 \\ \vdots \\ dx_n\end{bmatrix}\)
更一般地,如果是\(\R^n \to \R^m\)的映射,那么
\(df=\begin{bmatrix}\dfrac{\partial f_1}{\partial x_1} & \cdots & \dfrac{\partial f_1}{\partial x_n}\\ \vdots & \ddots & \vdots \\ \dfrac{\partial f_m}{\partial x_1} & \cdots & \dfrac{\partial f_m}{\partial x_n} \end{bmatrix}\begin{bmatrix}dx_1 \\ \vdots \\ dx_n\end{bmatrix}\)
微分本质上就对应着这个矩阵(Jacobi矩阵)。由于矩阵和线性映射是一一对应的,所以\(\R^n \to \R^m\)函数的微分本质上是一个\(\R^n\)到\(\R^m\)的线性映射。几何上,我们可以想象把这种映射想象成是在某点处,把自变量的一个点映射到其切平面上一个点。
如果我们把Jacobi矩阵记为\(f'(x)\),其中\(x\)是多元函数定义域中一个点,那么微分再次能够被写作
\(df=f'(x)dx\)
也即微分的形式也再次和一元时统一了。当我们在对函数进行四则运算时,对于整体也有\(d(fg)=(g\cdot df+f \cdot dg)dx\)——我们可以把这个多元函数的微分等式当作一元一样来使用!我们可以直接继承一元时的结论得到多元函数微分的四则运算法则。
那复合函数的“链式法则”还成立吗?在Jacobi矩阵意义下,是否还有:\((f \circ g)'(x)=f'(u)g'(x)\)?我们知道矩阵中的每一项变成了\(\dfrac{\partial f_i(g_i(x))}{\partial x_j}\),这是一个复合了的多元函数,我们没有定义过它的运算法则。方便起见,我们讨论\(f(u,v)\)(其中\(u(x,y),v(x,y)\))关于\(x\)或\(y\)的偏导数(以\(x\)为例):我们根据定义来直接求解。当\(x\)发生增量\(\Delta x\)时,\(u\)发生增量\(\Delta u\)可以表示为\(\dfrac{\partial u}{\partial x}\Delta x\),同样\(\Delta v=\dfrac{\partial v}{\partial x}\Delta x\)。当然,严格书写需要带上高阶无穷小这一项,但我们知道这一项最终是会消失的。而\(\Delta f\)一定可以写成关于\(u,v\)的微分,即\(\Delta f = \dfrac{\partial f}{\partial u}\Delta u+\dfrac{\partial f}{\partial v}\Delta v\)。代入就得到\(\Delta f=\left(\dfrac{\partial f}{\partial u}\dfrac{\partial u}{\partial x}+\dfrac{\partial f}{\partial v}\dfrac{\partial v}{\partial x}\right)\Delta x\),因此\(\dfrac{\partial f}{\partial x}=\dfrac{\partial f}{\partial u}\dfrac{\partial u}{\partial x}+\dfrac{\partial f}{\partial v}\dfrac{\partial v}{\partial x}\)。这依然是“链式法则”,但只不过相比于一元,我们要对外层函数的每个变量都做一次链式法则——我们“没有理由不用到”外层函数的某个。而当我们把这个结果全部代回到Jacobi矩阵里去时,惊奇地发现所谓的“链式法则”恰好和“矩阵乘法的运算法则”相符。在Jacobi矩阵意义下,我们确实可以直接写出\((f \circ g)'(x)=f'(u)g'(x)\),这里的乘法就是矩阵的乘法!
还是以\(f(u(x,y),v(x,y))\)为例,我们求出了\(\dfrac{\partial f}{\partial x}=\dfrac{\partial f}{\partial u}\dfrac{\partial u}{\partial x}+\dfrac{\partial f}{\partial v}\dfrac{\partial v}{\partial x}\)和\(\dfrac{\partial f}{\partial y}=\dfrac{\partial f}{\partial u}\dfrac{\partial u}{\partial y}+\dfrac{\partial f}{\partial v}\dfrac{\partial v}{\partial y}\)。所以\(f\)的全微分就是\(df=\left(\dfrac{\partial f}{\partial u}\dfrac{\partial u}{\partial x}+\dfrac{\partial f}{\partial v}\dfrac{\partial v}{\partial x}\right)dx+\left(\dfrac{\partial f}{\partial u}\dfrac{\partial u}{\partial y}+\dfrac{\partial f}{\partial v}\dfrac{\partial v}{\partial y}\right)dy\)。但中间变量也有自己的全微分表达式:\(du=\dfrac{\partial u}{\partial x}dx+\dfrac{\partial u}{\partial y}dy\),\(dv=\dfrac{\partial v}{\partial x}dx+\dfrac{\partial v}{\partial y}dy\)。这可以代入到\(f\)的全微分式子中去!我们发现可以写出\(df=\dfrac{\partial f}{\partial u}du+\dfrac{\partial f}{\partial v}dv\)。这就好像\(f\)是关于\(u,v\)的函数那样。因此,这个等式无论\(u,v\)是\(f\)的直接的自变量还是复合后的变量,这个等式总是正确的。这就叫做“一阶全微分的形式不变性”。这其实不应当是值得惊奇的,因为它体现的是一种客观性——函数作为客观实体是不依赖于参数的选择的,因此相应的微分作为客观函数的切映射也应当是不依赖于参数化的,这和我们的直觉是相符的。
方向导数
我们对偏导数的定义是“自变量”的,因此形成的几何意义是“偏导数是某一沿坐标轴方向的界面上曲线的切线”。而坐标轴的选取是主观的,因此如果要更一般的讨论“偏导数”,即多元函数中的一元导数,这个概念应当拓展为对于任意方向上的“偏导数”——这就是方向导数。
如何表示出方向?在二元里,可以用单位圆上的一个点表示二维平面上的方向,三元中可以用单位球上的一个点表示三维空间中的方向……依次类推,表示\(\R^n\)中的一个方向只需要\(n\)维单位球上的一个点。所以,我们取向量\(v=(cos \alpha_1,\cos \alpha_2,\cdots,\cos \alpha_n)\)并令\(\|v\|=1\)(用\(\cos \alpha\)是为了提醒我们这个值不能超出\([-1,1]\)),就可以定义方向导数:
\(D_v f (x_0)=\lim\limits_{t \to 0^+}\dfrac{f(x_0+tv)-f(x_0)}{t}\)
如果函数在\(x_0\)处可微,那么根据微分的定义直接有\(D_v f (x_0)=\lim\limits_{t \to 0^+}\dfrac{\frac{\partial f}{\partial x_1}\cdot tv_1+\cdots+\frac{\partial f}{\partial x_n}\cdot tv_n}{t}=\dfrac{\partial f}{\partial x_1}\cos \alpha_1+\cdots+\dfrac{\partial f}{\partial x_n}\cos \alpha_n\)。这是符合直观的,因为某个方向导数一定可以表示成偏导数的线性组合。在可微的前提下,函数在该点处一定可偏导,因此对任意方向存在方向导数。同理,我们有反例说明,任意方向导数存在并不能保证可微,甚至不能保证连续(反例:\(f(x,y)=\mathbb{1}[0<y<x^2]\))——这同样是由于“方向导数”也只是用一元在看多元。
方向导数还可以用另一种方式来理解。我们定义过点集上的道路,它是关于单个实数变量的函数。如果这个实数变量是时间\(t\),有个点在定义域上运动形成函数\(x(t)\),那么\(f(x(t))\)就可以表示一个点在多元函数上运动时函数值关于时间的变化率。如果我们要求\(f\)在某点\(x_0\)处朝某一方向的方向导数,可以让\(x(t)\)在\(t=0\)时就指向该方向,并且为了使其关于时间的函数图像和关于空间的相同,我们要求速度为1。于是道路\(f(x(t))\)在\(t=0\)处的导数就是我们要求的方向导数。运用复合函数求导的法则,我们可以求出\(f(x(t))\)的导数为\(\dfrac{\partial f}{\partial x_1}x'(0)+\cdots+\dfrac{\partial f}{\partial x_n}x'(0)\),正因为内层函数是关于单个变量的函数,所以\(x'\)这一项可以提出来,这样方向导数就可以写成向量内积的形式\(\begin{bmatrix}\dfrac{\partial f}{\partial x_1} & \cdots & \dfrac{\partial f}{\partial x_n} \end{bmatrix} \cdot x'(0)\)。\(\|x'(0)\|=1\),它就是指向我们所要方向的方向向量。这和刚才根据定义推出的方向导数表达式是一致的。
梯度
在此过程中,我们看到\(\begin{bmatrix}\dfrac{\partial f}{\partial x_1} & \cdots & \dfrac{\partial f}{\partial x_n} \end{bmatrix}\)构成了一个向量。我们把这个向量称为梯度,记作\(\text{grad }f\)。这可以看作算子\((\dfrac{\partial}{\partial x_1},\cdots,\dfrac{\partial}{\partial x_n})\)作用在函数\(f\)上,这个算子称为Hamilton算子,记为\(\nabla\)。
于是,方向导数可以表示为“梯度向量与方向向量的内积”:\(D_v f=\nabla f \cdot v\)。只需转动方向向量,我们就可以求出用这种方法求出各个方向的方向导数。而向量内积在共线时取到最值,因此当方向向量“与梯度向量共线”时方向导数最大(指绝对值),函数沿此方向的变化最快——这就是梯度向量的几何意义,这个向量的方向恰好是方向导数最大的方向。
微分中值定理
和一元微分学一样,我们想发展中值定理。微分中值定理描述的是:函数变化量等于自变量变化量乘以函数上某个点的导数。考虑变化量就是考虑函数上两点,在一元情形下,“两点之间”就是“区间”,这个“点”就是区间内部一点。而在多元情形下两点间是什么?我们可以选择一条道路来连接这两点,可道路的选择是不止一条的。那么应该选择怎样的道路?我们发现,如果选择线段直接连接首尾两点,这条线段上就一定有一点满足中值定理。
出于完整性的考虑,我们事先要求函数的定义域满足任意两点间的线段都落在定义域内。这样的定义域集合称为一个“凸区域”。而“线段上一点”可以用一个\([0,1]\)内的实数\(t\)来表示:\(x(t)=x_1+t(x_2-x_1)\)。于是\(x(0)=x_1,x(1)=x_2\)。
这样,我们就完全把多元函数的微分中值定理转化为了一元了,所以只需代入一元时的结论,只不过在微分的运算中,我们必须采用多元下微分的运算法则。我们只需看一看二元情形下的Lagrange中值定理就能明白所有发生的情况:设\(x_1=(a,b),x_2=(c,d)\)。为了符合我们的思维习惯,把\(f(x(t))\)写作\(\varphi(t)\)来提醒我们这是一元函数,那么根据Lagrange中值定理有\(\varphi(1)-\varphi(0)=\varphi'(\theta)\),而根据复合函数求导法则\(\varphi'(\theta) = f_x(a+\theta \Delta x,b+\theta \Delta y)\Delta x+f_y(a+\theta \Delta x,b+\theta \Delta y)\Delta y\),立即得到
\(f(c,d)-f(a,b)=f_x(a+\theta \Delta x,b+\theta \Delta y)\Delta x+f_y(a+\theta \Delta x,b+\theta \Delta y)\Delta y\)
在引入梯度的符号之后,微分中值定理中自变量的变化量和某点处导数依然以“乘积”的方式作用:\(f(x_2)-f(x_1)=\nabla f(\xi)(x_2-x_1)\)。它和一元情形的结构一模一样。所以,如果在某凸区域内每一点处梯度都为零(即每一点的每个方向偏导数都为0),那么函数是常值函数。为了推广这个结论,我们可以证明对于一般区域(非凸的道路连通开集)这个结论也成立。一种证明思路是,从起点出发取一个凸的小邻域,然后再在附近取一个凸的小邻域,使得前后有重叠,一直取取取一路走到中点,每个邻域都是恒量,那么由于邻域的重叠起点与终点也必须有相同的取值;另一个思路是反证法,我们找到某条道路上第一个值发生变化的点(上确界),而由于道路连通,上确界处极限一定与起点相同,取一个小邻域,就可以说明在道路上值相同可以绵延到更远的地方,因而矛盾。遗憾的是,以上微分中值定理的形式不能推广到向量值函数上,反例很容易举。
用同样的方法,就很容易把Taylor公式也推广到高维。只需在Taylor公式中作替换\(\varphi^{(m)}(t) = (\Delta x \cdot \nabla)^mf\):(这里,\(\nabla\)是记号\(\left(\dfrac{\partial}{\partial x_1},\dots,\dfrac{\partial}{\partial x_n}\right)\),它与\(\Delta x\)的内积的\(m\)次幂表示做形式上的加法和乘法,最后作用在\(f\)上。可以证明这样做是正确的:因为我们注意到,微分中值定理中的\(\nabla f(\xi)(x_2-x_1)\)其实就是方向导数,只不过需要乘上\(\|\Delta x\|\)倍。所以\(\varphi^{(m)}(t)\)其实就是求\(m\)次方向导数,而我们已经知道了方向导数的求法了,可以验证其结果与我们做形式的运算是一样的)
\(f(x_0+\Delta x)=\sum\limits_{k=0}^{n}\dfrac{(\Delta x \cdot \nabla)^k}{k!}f(x_0)+R_n\)
其中Lagrange余项相应地为\(R_n = \dfrac{(\Delta x \cdot \nabla)^{n+1}}{(n+1)!}f(x_0+\theta \Delta x)\)。为了导出Peano型余项,只需证明在度量空间中\(R_n = o(\|\Delta x\|^n)\)。积分余项也是同理。
隐函数定理
任何一个关于\(x,y\)的“方程”都可以写成二元函数\(F(x,y)\)的形式。我们想知道何时这个方程确定的曲线构成一个从\(x\)到\(y\)(或者反过来)的函数。例如,\(F(x,y)=x^2-y=0\)构成了二次函数,而\(F(x,y)=x^2+y^2-1=0\)整个曲线是圆,不能成为一个函数。
但单位圆尽管不是函数,却可以在局部被当作函数,左右两个端点除外,因为在那里斜率是不存在的。因此我们有理由只把我们的问题缩放到一定邻域内,即满足\(F(x_0,y_0)=0\)的方程在\((x_0,y_0)\)的小邻域内何时构成一个函数。对这个问题,我们已经有一个直观的答案了:二维平面上的曲线上某点只要不是斜率不存在,都可以在该点的局部被看作“函数”。用\(F\)来表示\(y\)关于\(x\)的导数,可以让方程\(F(x,y)=0\)两边同时对\(y\)求偏导,得到\(F_x(x_0,y_0)+F_y(x_0,y_0)\dfrac{\partial y}{\partial x}=0\),因此\(\dfrac{dy}{dx}=-\dfrac{F_x(x_0,y_0)}{F_y(x_0,y_0)}\)。那么只要\(F_y(x_0,y_0) \neq 0\)即可。
关键是更高维的情况。那时的隐函数定理和二元的情形是相似的。我们先用严格的方法证明二元的隐函数定理,再把它推广到多元。
二元隐函数定理:对于方程\(F(x_0,y_0)=0\),如果它在\((x_0,y_0)\)的邻域内有连续的偏导数,并在该点关于\(y\)的偏导数\(F_y(x_0,y_0) \neq 0\),那么该点的邻域内确定了隐函数\(y=f(x)\)。并且\(\dfrac{dy}{dx}=-\dfrac{F_x(x_0,y_0)}{F_y(x_0,y_0)}\)。
Pf:\(F_y(x_0,y_0)\neq 0\)意味着邻域内导函数不变号,而条件给定了偏导数是连续的,意味着在邻域内这个偏导都是不等于0的,因此邻域里\(F\)对于每个固定的\(x\)是关于\(y\)单调的。所以对于邻域内的任意一个\(x'\),总能唯一地找到邻域内的\(y'\)使得\(F(x',y')=0\)。当\(x'=x_0\)时,对应的\(y'\)只能是\(y_0\)——因此隐函数就确定出来了。为了确定导数,我们考虑增量\(F(x_0+\Delta x,y_0+\Delta y)-F(x_0,y_0)\)。由于自变量都取在我们要的“函数”上,始终满足\(F(x,y)=0\),所以这个增量就必须是0。对于增量,我们已经反复看到这个技巧——把它关于自变量拆成两部分,然后用微分中值定理,使偏导数代替变化量。那么全增量可以表示成\(F_x(x_0+\theta_1 \Delta x,y_0+\Delta y)\Delta x+F_y(x_0,y_0+\theta_2 \Delta y)\Delta y=0\)。于是\(\dfrac{\Delta y}{\Delta x}=-\dfrac{F_x(x_0+\theta_1 \Delta x,y_0+\Delta y)}{F_y(x_0,y_0+\theta_2 \Delta y)}\)。根据偏导数的连续性我们就直接得出了我们的结论。
现在如果保持\(y\)这个自变量依然是实数,而把\(x\)推广为向量。我们发现我们的证明过程不用发生任何改动,只需把所有出现\(x\)的地方理解为向量即可——对于每个固定的向量\(x\)都能确定唯一的\(y\),由此来确定隐函数。所以条件\(F_y(x,y) \neq 0\)相应地变为“\(F_y(x_1,\cdots,x_n,y) \neq 0\)”。此时“隐函数的导数”指的就是各个偏导数(Jacobi矩阵),各个偏导数的求解方法都和二元情形求解导数一模一样,得到\(\dfrac{\partial y}{\partial x_i}=-\dfrac{F_{x_i}(x_1,\cdots,x_n,z)}{F_z(x_1,\cdots,x_n,z)}\)。
隐函数的问题其实是“方程自由度”的问题。\(F\)看似是一个二元函数,但由于函数值等于0这一条件的限制,使得其中一个变量的取值能够被其他的变量决定(也就是我们通常所说的把方程解了出来)。所以,我们说多元函数少了一个自由度,我们的隐函数就是这个少了一个自由度的函数。
而在上述过程中由于只有\(F(\cdots)=0\)这一个方程,因此势必只能“干掉一个自由度”,确定其中一个自变量关于其他所有自变量的隐函数。如果想确定其中\(m\)个自变量关于剩下自变量的隐函数,就至少需要\(m\)个方程来“干掉\(m\)个自由度”(当然,这要求这些方程不能是重复的,即“不独立”的)。我们从矩阵的观点来看这个问题。现在假设\(x\)是\(n\)维向量,\(y\)是\(m\)维向量,有\(m\)个二元函数的方程\(F_i(x,y)=0\)。每个方程我们都写出增量形式
\(F_i(x_0+\Delta x,y_0+\Delta y)-F_i(x_0,y_0)=(F_i)_x(x_0,y_0)\Delta x+(F_i)_y(x_0,y_0)\Delta y+o(\rho)\)
注意此时\(F_x,F_y\)都已经分别是\(1 \times n, 1 \times m\)的矩阵了。微分中值定理让我们可以扔掉\(o(\rho)\)。再把所有方程\(F_i\)看成某个向量值函数\(F\)的分量,这样各个方程可以用矩阵的方式合并为一个。此时就有
\(F_x(x_0,y_0)d x+F_y(x_0,y_0)d y=0\)
再次发现,这个方程的结构和二元实数的情形是完全相同的,只不过\(F_x,F_y\)现在都表示矩阵。移项操作是合法的,而自然地除以\(F_x\)的操作就变为了矩阵的求逆。在实数中保证隐函数存在的条件是偏导数不为0,此时变成了该导数矩阵可逆(可逆的充分必要条件是行列式不为0,因此也可以表示成\(F\)关于\(x\)的“Jacobi行列式不为0”,Jacobi行列式就是由Jacobi矩阵关于一部分自变量的那部分的行列式)。有:
\(dy=-[F_y(x_0,y_0)]^{-1}F_x(x_0,y_0)dx\)
这就是隐函数定理的一般形式。在整个过程中,我们所做的核心的事就是通过连续性确定了隐函数的存在,并用微分中值定理舍去了高阶小量,用线性代替了非线性。
特别强调,隐函数定理是隐函数存在的充分而非必要条件!当我们发现\(F_y\)不可逆时,不能说明隐函数不存在——隐函数依然可能是存在的,只不过我们不能再用隐函数定理来说明它的存在。
反函数定理
反函数的问题本质上就是隐函数的问题。要问\(f(x)\)在邻域内是否存在反函数,只需令\(F(x,y)=y-f(x)=0\),然后问\(F(x,y)\)能否确定\(x\)关于\(y\)的隐函数。这要求\(F_x(x_0,y_0) \neq 0\),即\(0-f'(x_0) \neq 0\),即\(f'(x_0)\neq 0\)。(这很自然,只要函数不是水平的那么邻域内一定有反函数)。相应的反函数的导数就是\(\dfrac{dx}{dy}=-\dfrac{F_y(x_0,y_0)}{F_x(x_0,y_0)}=\dfrac{1}{f'(x_0)}\)
这也暗示我们,既然隐函数定理中\(x,y\)是平等地位的,那么\(\dfrac{dy}{dx}=-\dfrac{F_x(x,y)}{F_y(x,y)}\)反过来用就会得到\(\dfrac{dx}{dy}=-\dfrac{F_y(x,y)}{F_x(x,y)}\)。那么就有\(\dfrac{dy}{dx} \cdot \dfrac{dx}{dy}=1\)。也就是我们可以形式上合法地时候“微商”的导数作为“反函数的导数”。
高维情形也是容易推广的,\(y=f(x)\)要存在反函数要求\(F(x,y)=y-f(x)=0\)能确定\(x\)关于\(y\)的隐函数,必须有\(F_x(x_0,y_0)\)可逆。(这首先要求它是个方阵,因此\(x,y\)的维数必须相同。)
在这里我们把“反函数定理”视为了隐函数定理的推论。而事实上,我们也可以(这里不证)在完全不用隐函数定理的情况下证出反函数定理,并由它推出隐函数定理。也就是说,隐函数定理并不是比反函数定理更强的定理,他们是“等价的”。
无条件极值
如果在\((x_0,y_0)\)的邻域内始终有\(f(x_0,y_0) \geq f(x,y)\),就称它为极大值(极小值同理)。(要求极值点一定是内点)
从偏导数的角度来看,如果函数在一点处任何一个偏导数不等于0,那么它在该方向上就不是极值点,因此在多元内也就不是极值点。所以我们得到了极值点的一个必要条件——每个方向偏导数都要是0。(一阶偏导数都为0的点称为驻点。)显然,驻点不能推出极值点。但是我们要注意,当我们说它的每个方向偏导都等于0的时候,已经默认了它在各个方向的偏导数都存在。而这是一个很强的限制条件。严格来说,“极值点一定是驻点”这种表述也是错误的。这再次反映出一元看多元的缺点。但这里,我们只讨论各个方向偏导数都存在的情况,也就是说,我们确实把驻点“当作”必要条件。
在一元的时候(可导前提下),我们首先用驻点这个必要条件筛选出若干可能称为极值点的点,然后判断每个点的二阶导数,只要二阶导不为0,那么就能说明该点是极大值点或极小值点。如果二阶导依然为0,那么要看三阶导……(这种情况是琐碎的,一般我们只会用二阶导非零的情形来判断极值点,不然的话这样的判定方法因为太过于复杂一般不会是最好的方法)。那么多元的时候,我们也希望能够这么做。对于多元函数的每个驻点,它在该点处的“二阶导数”是一个矩阵,和自变量结合起来得到的是一个复杂的结构。在二元函数的情形时,二阶增量(\(h,k\))对应着\(f_{xx}h^2+2f_{xy}hk+f_{yy}k^2\)(这是Taylor公式的结论)。我们发现,它可以用矩阵写成\(\begin{bmatrix}h & k\end{bmatrix}\begin{bmatrix}f_{xx} & f_{xy}\\f_{yx} & f_{yy}\end{bmatrix}\begin{bmatrix}h \\ k\end{bmatrix}\)。不难发现对于多元它可以推广为\(\begin{bmatrix}x_1 & x_2 & \cdots & x_n\end{bmatrix}\begin{bmatrix}f_{x_1x_1} & f_{x_1x_2}&\cdots&f_{x_1x_n}\\f_{x_2x_1} & f_{x_2x_2}&\cdots&f_{x_2x_n}\\\vdots & \vdots&\ddots&\vdots\\f_{x_nx_1} & f_{x_nx_2}&\cdots&f_{x_nx_n}\\\end{bmatrix}\begin{bmatrix}x_1 \\x_2\\\vdots \\ x_n\end{bmatrix}=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}f_{x_ix_j}x_ix_j\)。我们其实在线性代数中遇到过这种结构,它恰好是线性代数里二次型,其中中间的矩阵\(H\)(称为Hesse矩阵)如果是正定的,我们有等价条件\(x^\top Hx >0\)恒成立(或者其所有顺序主子式都为正),因此其二阶增量一定大于0,所以可以判定该点一定是极小值点;如果是负定的(二次型恒为负;等价条件为,偶数阶顺序主子式>0,奇数阶顺序主子式<0),那么一定是极大值点;如果是不定的(既不半正定,也不半负定),也即存在异号的二次型,那么这个点一定不是极值点;如果是半定的(存在等于0的顺序主子式),也就是说二次型会出现0,那么判别法失效(二阶导不够用)。
这种判别方法本质上是对Taylor公式的二次项的一个应用。
在线性代数中,我们用线性空间的正交解决了最小二乘法拟合问题(找到了最优的向量\(x\)来最小化\(\|y-Ax\|\))。我们也可以从多元函数极值的角度来看这个问题,并得出相同的结论,因为\(\|y-Ax\|\)是关于\(x\)的函数,因此是一个\(n\)元函数无条件极值的问题。考虑\(F(x_1,\cdots,x_n)=\|y-Ax\|^2=\left(\begin{bmatrix}y_1 \\y_2\\\vdots \\ y_n\end{bmatrix}-\begin{bmatrix}a_{11} & a_{12}&\cdots&a_{1n}\\a_{21} & a_{22}&\cdots&a_{2n}\\\vdots & \vdots&\ddots&\vdots\\a_{n1} & a_{n2}&\cdots&a_{nn}\\\end{bmatrix}\begin{bmatrix}x_1 \\x_2\\\vdots \\ x_n\end{bmatrix}\right)^2\)\(=\begin{bmatrix}y_1-\sum a_{1i}x_i\\y_2-\sum a_{2i}x_i\\\vdots\\y_n-\sum a_{ni}x_i\end{bmatrix}^2=\sum\limits_{j=1}^{n}\left(y_j-\sum\limits_{i=1}^{n}a_{ji}x_i\right)^2=\sum\limits_{i=1}^{n}y_i^2+\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}a_{ij}^2x_j^2\)\(-2\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}a_{ij}x_jy_i+2\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}\sum\limits_{k=j+1}^{n}a_{ij}a_{ik}x_jx_k\)
因此\(\dfrac{\partial F}{\partial x_p}=2\sum\limits_{i=1}^{n}a_{ip}^2x_p-2\sum\limits_{i=1}^{n}a_{ip}y_i+2\sum\limits_{i=1}^{n}\sum\limits_{j=1,j \neq p}^{n}a_{ij}a_{ip}x_j=0\)。化简得\(\sum\limits_{i=1}^{n}a_{ip}y_i=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}a_{ij}a_{ip}x_j\)。左侧恰好是向量\(A^\top y\)的第\(p\)行分量,右侧恰好是\(A^\top Ax\)的第\(p\)行分量,因此\(A^\top y = A^\top A x\),因此(证明过\(A^\top A\)一定是满秩的)\(x=(A^\top A)^{-1}A^\top y\)。这正是最小二乘法的结论。我们发现,利用矩阵可逆的性质,我们只用到了“驻点”这一必要条件就确定了唯一可能的极值点。我们可以计算验证,它的二阶导数Hesse矩阵恰好是\(2A^\top A\)(在这里我们也再次看到最小二乘法与奇异值分解的联系),对于任意的二次型都可以有\(2(x^\top A^\top Ax)=2(Ax)^2>0\),因此这个矩阵是正定的,因此\(x\)确实是极小值点。
有条件极值
刚才讨论的是多元函数在整个定义域内的极值。现在,假如给这个多元函数加上若干的等式约束,使得自变量只能在部分满足这些等式的点上取值,我们想问在这样的约束下极值在哪里取到。
假设有多元函数\(f(x_1,\cdots,x_n)\),给定\(r\)个等式约束\(g_i(x_1,\cdots,x_n)=0\),要求约束下的极值点。我们在隐函数定理里已经看到,等式约束是能减少多元函数的自由度的。我们假设每一个等式约束都能干掉一个自由度,即以上条件能够帮我们确定一个\(n-r\)元到\(r\)元的隐函数,那么似乎我们只需要把这些能被隐函数表示的变量代入到多元函数里问题就转化为无条件极值了。遗憾的是,这是不容易做到的。要能够直接把变量代入需要能画出这些隐函数的“显式表达式”,这在很多时候是不可能的。我们对隐函数所能使用的工具只有他们在局部的导数。因此我们有必要寻找新的方法。
我们假设\(P_0\)是一个我们最终想求出的“条件极值点”,看看它要满足什么必要条件。
考虑\(g_1,\cdots,g_r\)这\(r\)个等式约束,隐函数定理表明这些等式形成了一个空间里的\(n-r\)维曲面\(\Sigma\)(一个约束干掉一个维数)。尽管曲面是\(n-r\)维的,我们还是用\(n\)个坐标来表示曲面上一点。我们想求出的\(P_0\)也在这个曲面上对应着一个点。设\(\gamma(t)\)是\(\Sigma\)上过\(P_0\)的道路(\(\R \to \R^n\)的映射),并令\(\gamma(0)=P_0\)。把道路映射到\(f\)上,\(f(\gamma(t))\)是一元函数。因为\(P_0\)是极值点,所以必须要求\(\dfrac{d}{dt}\Big|_{t=0}f(\gamma(t))=0\)。由复合函数求导法则得\(\nabla f(P_0) \cdot \gamma'(0)=0\)(等式左侧我们做的其实就是“方向导数”)。非常重要的一点是,道路\(\gamma\)的选取可以是任意的,因此这个等式对于任意\(\gamma'(0)\)是恒成立的。而所有可能的\(\gamma\)形成的\(\gamma'(0)\)的集合是所有在\(\Sigma\)上通过\(P_0\)点的速度向量,从几何上理解,这就恰好恰好\(\Sigma\)在\(P_0\)处的切空间(事实上,我们把这作为切空间的定义。一维切空间就是切线,二维切空间就是切平面……),因此\(\nabla f(P_0) \cdot \gamma'(0)=0\)表示梯度向量\(\nabla f(P_0)\)与切平面上任意一个向量都垂直——\(\nabla f(P_0)\)是切空间的一个法向量。
同时,由于\(\gamma(t)\)始终在曲面\(\Sigma\)内,因此\(g_i(\gamma(t))=0\)恒成立。也对它在\(t=0\)处求导,同样地得到\(\nabla g_i(P_0) \cdot \gamma'(0)=0\)——每一个\(\nabla g_i(P_0)\)都是切空间的法向量。曲面维数与切空间的维数应当是相等的(由曲面每个单独方向的切线张成切空间),而既然\(\Sigma\)是\(n-r\)维曲线,切空间的维数也是\(n-r\),对应的法空间维数就是\(r\)(切空间的正交补空间)。由于我们默认了\(g_i\)是线性独立的,因此由这\(r\)个\(\nabla g_i(P_0)\)就已经张成了这个法空间了(\(\nabla g_i(P_0)\)是基)。我们刚才得到的\(\nabla f(P_0)\)也属于法空间,所以它一定能表示成基的线性组合:
\(\nabla f(P_0)=\lambda_1\nabla g_1(P_0)+\cdots+\lambda_r\nabla g_r(P_0)\)
为了更方便的描述这个必要条件,我们构造一个函数:
\(L(x_1,\cdots,x_n,\lambda_1,\cdots,\lambda_r)=f(x_1,\cdots,x_n)-\sum\limits_{i=1}^{r}\lambda_ig_i(x_1,\cdots,x_n)\)
由于\(g_i \equiv 0\),\(L\)和\(f\)在相同的\(x\)取值上是恒等的。但我们在使用微分的时候把后面的项的影响考虑进来。\(L\)对\(x_k\)求偏导得到\(f_k-\sum\limits_{i=1}^{r}\lambda_ig_k\),它们都应当在\(P_0\)处等于0;\(L\)对\(\lambda_k\)求偏导对应着\(g_k\),也应当在\(P_0\)处等于0。因此\(P_0\)是极值点的一个必要条件就是\(L\)的所有一阶偏导都等于0(驻点)。
这个方法称为Lagrange乘数法,其中\(L(x,\lambda)\)称为Lagrange函数,\(\lambda\)称为Lagrange乘数。我们只需要根据条件写出Lagrange函数,求出它的所有驻点,只有这些点可能成为极值点。很多时候我们甚至不用验证这个驻点是否是极值点,因为我们可以通过函数的走向来推定它必须在这里有一个极值点。而对于更复杂的需要验证的情况,使用Lagrange乘数法就不一定是最好的方法了。
微分学的应用
空间几何
空间曲线的切线
如果用单个变量\(t\)对道路进行参数化,即如果有空间曲线的参数方程\(x=x(t),y=y(t),z=z(t)\),那么类比位移与速度的关系容易得到某点处的切线的方向向量(切向量)\((x'(t_0),y'(t_0),z'(t_0))\),那么就可以写出切线方程:\((x,y,z)\)在切线上当且仅当\((x,y,z)-(x_0,y_0,z_0)\)向量和切向量平行,因此切线方程为\(\dfrac{x-x_0}{x'(t_0)}=\dfrac{y-y_0}{y'(t_0)}=\dfrac{z-z_0}{z'(t_0)}\)。利用切向量可以求出法平面,满足\((x,y,z)-(x_0,y_0,z_0)\)垂直于切向量,得到法平面的方程\(x'(t_0)(x-x_0)+y'(t_0)(y-y_0)+z'(t_0)(z-z_0)=0\)。
(如果导数为0上述方程没有意义,但切向量仍然是有意义的。重要的是方向向量而不是方程)
空间曲面的切平面
在拉格朗日乘数法中我们已经看到,假如过曲面\(F(x)=0\)上一点\(P_0\)的一条道路可以被参数化为\(\gamma(t)\)(其中\(\gamma(0)=P_0\)),那么由于始终有\(F(\gamma(t))=0\)成立。对\(t\)求导后导函数也为0。在\(P_0\)处取值,得到\(\nabla F(P_0) \cdot \gamma'(0)\equiv 0\)。在三维空间中,把梯度和导函数分别是\((\dfrac{\partial F(P_0)}{\partial x},\dfrac{\partial F(P_0)}{\partial y},\dfrac{\partial F(P_0)}{\partial z})\)和\((x'(0),y'(0),z'(0))\)。因此有\(F_x(P_0)x'(0)+F_y(P_0)y'(0)+F_z(P_0)z'(0)=0\)。由于\(\gamma'(0)\)就是\(P_0\)处道路的切向量,而此式对任意\(\gamma\)恒成立,因此得到曲面在\(P_0\)处的梯度与任何道路的切向量垂直。所有道路的切向量就构成了切平面,因此梯度就是法向量。由此可得,法向量即为\(\nabla F(P_0)\),法线上的点\((x,y,z)\)满足\((x-x_0,y-y_0,z-z_0)\)与法向量平行,法线方程为\(\dfrac{x-x_0}{F_x(P_0)}=\dfrac{y-y_0}{F_y(P_0)}=\dfrac{z-z_0}{F_z(P_0)}\)。切平面上一点满足\((x,y,z)-(x_0,y_0,z_0)\)与\(\nabla F(P_0)\)垂直,因此切平面方程为\(F_x(P_0)(x-x_0)+F_y(P_0)(y-y_0)+F_z(P_0)(z-z_0)=0\)。
如果曲面方程显式的,即如果\(F(x,y,z)=f(x,y)-z\),那么代入得到切平面方程为\(z=z_0+f_x(x_0,y_0)(x-x_0)+f_y(x_0,y_0)(y-y_0)\),这恰好与全微分的“几何意义”一致。
空间曲面的交线
如果已知两个曲面的方程,可以求出其交线的切向量:交线上一点\(P_0\)同时落在两个曲面上,两个曲面在该点处都可以求出切平面。由于切平面是曲面的局部线性逼近,不难想象两切平面的交线方向就是切向量方向。因此只需要求出这两个切平面法向量的叉积即可。
双参数方程下的曲面
如果曲面由\(x(u,v),y(u,v),z(u,v)\)给出,那么当我们固定\(u=u_0\)让\(v\)变化,这是单参数下的道路;固定\(v\)同理。由这两道路在同一点处的切向量可以确定整个切平面,因此这两个切向量的叉积也就是法向量。
平面曲线的切线
非显式的平面曲线方程写作\(F(x,y)=0\)。由隐函数定理得\(y'(x_0)=-\dfrac{F_x(x_0,y_0)}{F_y(x_0,y_0)}\)。因此可以直接写出该点处切线方程\(F_x(x_0,y_0)(x-x_0)+F_y(x_0,y_0)(y-y_0)=0\)。注意到这和空间曲面的切平面形式完全相同,只是维度降了一维。同样的,法向量即为\((F_x(x_0,y_0),F_y(x_0,y_0))\),形式也相同。
变分法
我们想研究怎么样的函数能让某个值取到最小值,也就是说现在自变量是“函数的选取”。联系极值点的定理,如果函数的选取是“连续”的,那么极值点的一个必要条件是“导数为0”。在这里,导数可以描述为“扰动”。
例如一个经典的例子是“最速降线问题”。我们想知道小球沿光滑轨道从某点运动到另一点时,用时最短的轨道的选择。我们认为轨道是连续可导的,并且为了速度最快轨道不会在哪处是平的,因此这样我们就可以认为轨道是\(x\)关于\(y\)的函数\(x=f(y)\)。从\((0,0)\)到\((x_0,y_0)\)所需要的时间可以计算得出:由动能定理,\(\dfrac{1}{2}mv^2=mgy\),得\(v=\sqrt{2gy}\)。而位移微元\(ds=\sqrt{1+f'(y)^2}dy\)。所以\(dt = \dfrac{ds}{v}=\dfrac{\sqrt{1+f'(y)^2}}{\sqrt{2gy}}dy\)。因此\(\Delta t = \dfrac{1}{\sqrt{2g}}\displaystyle\int_0^{y_0} \sqrt{\dfrac{1+f'(y)^2}{y}}dy\)。
扰动也是一个函数,并且为了使得首尾不变,扰动后的函数可以写作\(f(y)+\varepsilon g(y)\)。代入\(\Delta t\),并使得\(\Delta t\)关于\(\varepsilon\)的导数在\(\varepsilon=0\)处为0关于任何函数\(g\)恒成立。常数不影响结果,因此即要求\(\dfrac{d}{d\varepsilon} \displaystyle\int_0^{y_0} \sqrt{\dfrac{1+[f'(y)+\varepsilon g'(y)]^2}{y}}dy\Big|_{\varepsilon=0}\)。我们认为求导和积分可以交换顺序,那么积分里面对\(\varepsilon\)求导并在\(\varepsilon=0\)处取值,化简得到\(\displaystyle\int_0^{y_0}\dfrac{f'(y)g'(y)}{\sqrt{y(1+f'(y)^2)}}dy\)。分部积分法,先积\(g'(y)dy\),得到\(\dfrac{f'(y)g(y)}{\sqrt{y(1+f'(y)^2)}}\Big|_0^{y_0}-\displaystyle\int_0^{y_0}\dfrac{d}{dy}\left(\dfrac{f'(y)}{\sqrt{y(1+f'(y)^2)}}\right)g'(y)dy\)。左边就是0,而右边等于0要能对\(g\)恒成立,就要求\(\dfrac{f'(y)}{\sqrt{y(1+f'(y)^2)}} \equiv C\)。这个微分方程的解恰好为“摆线”。
同样的方法也可以证明,能使两点之间距离最短的曲线是直线。

浙公网安备 33010602011771号