数学分析 - 多元函数微分

导数概念的形式化

一、总论

数值多元函数微分及其相关概念,如中值定理、泰勒展开是数值一元函数的一般化。更进一步说,最一般化的东西是向量值函数。我写这一节的目的是为了与书中特殊到一般的过程形成对比,构建一个由一般到特殊的更加形式统一的体系。但是刚下笔就遇到困难,因为数值单变量函数不仅是最最特殊的情况,它还是最最基本的情况,任何对更加一般的情况的讨论,都离不开对数值单变量导数的运算。所以很难顺序的展开所有概念,介绍时必须选用一定的知识作为推导的基础,这也使得这个体系不再完美。

二、一阶导数

2.1 一阶导数形式规定

我相信,对全微分的理解将是构建整个多元函数微分体系的基石。 对于一元函数,有 df(x)=f,(x)dxdf(x)=f^,(x)dx,我们希望对于多元函数也呈现这个形式。我们将 xx 替换为 x\vec{x},然后需要解决的就是对 f,(x)f^,(\vec{x}) 的替换,我们这里进行如下替换,将数值多元函数的导数规定为他的梯度,即

f(x)=gradf(x)=[f1f2...fn]f^\prime(\vec{x})=gradf(\vec{x})=\left[\begin{matrix}f_1&f_2&...&f_n\end{matrix}\right]

再规定 dxd\vec{x}

dx=[dx1dx2...dxn]d\vec{x}=\left[\begin{matrix}dx_1&dx_2&...&dx_n\end{matrix}\right]

这样就能保证形式的统一性,我们规定多元函数的微分就是其导数自变量增量 dxdx 的内积。

2.2 向量值函数的一阶导数形式规定

这里借用线性代数中分块矩阵的概念,将向量值函数看成多个数值函数,这样我们就可以得到向量值函数的导数

[f(x)g(x)h(x)]=[gradf(x)gradg(x)gradh(x)]=[f1f2...fng1g2...gnh1h2...hn]\left[\begin{matrix}f(\vec{x})\\g(\vec{x})\\h(\vec{x})\end{matrix}\right]= \left[\begin{matrix}gradf(\vec{x})\\gradg(\vec{x})\\gradh(\vec{x})\end{matrix}\right]= \left[\begin{matrix}f_1&f_2&...&f_n\\g_1&g_2&...&g_n\\h_1&h_2&...&h_n\end{matrix}\right]

然后就可以形式统一了,依然是导数自变量增量 dxdx 的内积。

2.3 方向导数

方向导数显然可以纳入这个形式统一的系统中,可记新定义的方向增量

dr=[cosθdxsinθdy]d\vec{r}=\left[\begin{matrix}cos\theta dx\\sin\theta dy\end{matrix}\right]

然后就会有导数方向增量内积的形式。

2.4 微分中值定理

微分中值定理也很好的适应了这个形式规范,在一元函数中,有

f(b)f(a)=f,(ξ)(ba)f(b)-f(a)=f^,(\xi)(b-a)

只要将相应的部分都换成向量形式,依然是遵循内积原则即可。

三、高阶导数

3.1 高阶增量形式化的补充

单独把这个部分拎出来写,是因为这个部分就很难与一元函数保持形式的统一性了,但是,在上面规定了向量值函数导数的形式后,依然是可以在搭建的形式化体系中进行推导的,只需要在引入一点点补充。补充是关于增量的直观理解的,用偏导解释,fxyf_{xy} 代表着先对 x 求导,再对 y 求导,那么 fxydydxf_{xy}dydx 就代表着先乘 y 增量,后乘 x 增量的总增量,规定高阶增量就是这样的一个形式,比如二阶增量对二元函数来说就由四部分组成,即 fxxdxdx,fxydydx,fyxdxdy,fyydydyf_{xx}dxdx,f_{xy}dydx,f_{yx}dxdy,f_{yy}dydy ,可以看出它与 (x+y)2(x+y)^2 的展开式存在形式的相似性。事实就是如此,我们给出更一般化的规定,n 元函数的全部 k 阶增量的和与

(x1+x2+...+xn)k(x_1+x_2+...+x_n)^k

的展开式的形式相似。

然后我们可以想象,高阶增量的形式是可以用矩阵的知识再次化简的,我们可用含有偏导数的矩阵含有自变量增量的向量来构造高阶增量。对于一阶增量,可以用内积;对于二阶增量,可以用二次型,对于大于三阶,就没有直观的办法了,因为要处理的是一个 n 次型的化简问题,但是要是不考虑分块矩阵或者是将矩阵平面转为立体,好像没啥好办法了。这也是为什么一般书中的泰勒展开就展到二阶,这是因为在高就没办法写了。

回顾一下我们已作出的规定,有三项,分别为:

  • 数值函数的一阶导数
  • 向量值函数的一阶导数
  • 高阶增量

3.2 二阶导数

二阶导数不但符合上面利用高阶增量逆推出的形式,而且还符合原来对一阶导数再求导的思想。我们审查一个数值多元函数,会发现它求导以后会变成一个向量值函数,那么对一个向量值函数求导,就会出现方阵的形式(因为向量值函数的分量就是变元的个数,很好的形式美),即

[f1f2...fn],=[gradf1gradf2...gradfn]=[f11f12...f1nf21f22...f2n............fn1fn2...fnn]\left[\begin{matrix}f_1\\f_2\\...\\f_n\end{matrix}\right]^,= \left[\begin{matrix}gradf_1\\gradf_2\\...\\gradf_n\end{matrix}\right]= \left[\begin{matrix}f_{11}&f_{12}&...&f_{1n}\\f_{21}&f_{22}&...&f_{2n}\\...&...&...&...\\f_{n1}&f_{n2}&...&f_{nn}\end{matrix}\right]

这个矩阵被称为 Hessian 矩阵。

3.3 泰勒公式

在定义了高阶增量的形式后,泰勒公式显得也能与原形式契合,对于数值一元函数,有

f(x)=f(x)+一阶增量+二阶增量+...+n阶增量+余项f(x)=f(x)+一阶增量+二阶增量+...+n阶增量+余项

显然,多元函数也可以应用这个公式。

另外可以看到, 因为展开的复杂性,所以当展到高阶的时候,计算会变得特别复杂,所以有的时候会采用换元法当成一元函数进行展开,这样做的依据是泰勒级数具有唯一性。

3.4 极值

回想数值单元函数判断极值的方法,面对驻点,可以对其求二阶导,如果二阶导大于零,那么是驻点为极小值点;如果二阶导小于零,那么驻点为极大值点;如果二阶导为 0,那么无法得出结论。究其根本,是利用定义:极小值点周围的点都比它大,那么在一阶导数为零的情况下,二阶导如果取正,说明二阶增量为正,那么驻点就比周围的点小,所以是极小值点。

可以看到,真正去决定意义的是二阶增量。二阶增量是一个二次型,想要它的正负性,就是找二次型矩阵的正定或者负定,也就是二阶导数的正定或负定或不定。事实也是这样的,当二阶导数为正定阵的时候,驻点为极小值点。这样极值的判定也被纳入这个形式中了。

四、链式法则

4.1 分块矩阵让步

这个部分可以不作出任何形式化的补充。链式法则在定义了导数的概念后可以完美的被解释,但是链式法则涉及两个矩阵相乘,运算量极大,而要求的多半是最后结果矩阵的一部分,所以这章的很多技法都是基于分块矩阵演变出的部分求解,但是老师授课的时候并没有强调算法的特殊性,造成了理解的困难。我演算了一下午,将完全的形式验证了一遍,确实过于繁琐,故以后不推荐为了形式的统一,而浪费大量时间的行为。

4.2 复合函数

复合函数可以看做两次映射,举个例子

[uv][x(u,v)y(u,v)z(u,v)]P(x,y,z)\left[\begin{matrix}u\\v\end{matrix}\right]\longrightarrow \left[\begin{matrix}x(u,v)\\y(u,v)\\z(u,v)\end{matrix}\right]\longrightarrow P(x,y,z)

那么应用链式法则即可。

但是实际做题的时候并不好,是因为大部分题目只让求比如对 u 求导,那么计算 v 显然毫无意义,而且 x,y,z 不一定每个都与 u,v 有关,所以求导出 0 很是寂寞。所以做题时一般都用树状图进行解题,叶子结点为不相干的自变量,相同路径上的节点对其双亲节点求导后相乘,不同路径相加。

4.3 隐函数求导

隐函数重要的是思想。可以将所有的变量都是为不相干的自变量,然后有一个方程就可以将一个自变量变为用其他变量表示的因变量。然后建立一个复合映射,然后就可以解题了。比如求 P 关于 u,v 的导数,就链式法则求就可以了。

[uv][x(u,v)y(u,v)z(u,v)]P(x,y,z)\left[\begin{matrix}u\\v\end{matrix}\right]\longrightarrow \left[\begin{matrix}x(u,v)\\y(u,v)\\z(u,v)\end{matrix}\right]\longrightarrow P(x,y,z)

但是实际应用中因为一般只求一个自变量的导数,所以链式法则矩阵会退化成 b=Axb=Ax 的模样,所以可以理解成一个方程组,那么就可以利用方程组工具 —— 克莱姆法则进行求解。

克莱姆技巧的视角下,gradfgradf 的横向量被改变,更一体的单元是由一个变量对不同函数求导所组成的列向量。以题为例:

{F(x,y,u,v)=0G(x,y,u,v)=0\begin{cases} F(x,y,u,v)=0\\ G(x,y,u,v)=0 \end{cases}

因为有两个方程,所以可以将 u 写成 u(x,y)u(x,y),v 写成 v(x,y)v(x,y),那么不同变量组成的列向量为:

[FuGu][FvGv][FxFy][FyGy]\left[\begin{matrix}F_u\\G_u\end{matrix}\right]\left[\begin{matrix}F_v\\G_v\end{matrix}\right]\left[\begin{matrix}F_x\\F_y\end{matrix}\right]\left[\begin{matrix}F_y\\G_y\end{matrix}\right]

挑选第一个第二个向量组成方阵(挑选因变量组),然后求行列式,行列式不为零代表偏导存在,然后用克莱姆法则替换因变量方阵中的一列,即可求得导数(切记要加负号)。

如果真的要算所有因变量相对所有自变量的导数,那么就需要用到逆矩阵的求解,我尝试了一下,伴随矩阵单位化的方法都挺难的。

+++++++++++++++++++++

导数相关概念的强弱

一、可导与连续

连续 可导
limΔx0f(x+Δx)f(x)=0\lim_{\Delta x\rightarrow0}f(x+\Delta x)-f(x)=0 limΔx0f(x+Δx)f(x)Δx\lim_{\Delta x\rightarrow0}\frac{f(x+\Delta x)-f(x)}{\Delta x} 存在

我们可以看到可导的定义的分子一定等于 0,而且一阶增量一定是 o (Δx\Delta x) 或者 O (Δx\Delta x),这样条件就比连续的要强了,它使得两个相近的自变量之间差的不能太多,有点像一致连续,但是可导一致连续的强弱没有那么好判。

对于在导数中看条件的强弱,大体上分为三种情况:

  • 函数不连续
  • 函数连续但不可导
  • 函数可导

其他的条件如导函数连续不过是以导函数为主体分析时的函数连续

二、可微性

可微性应该作为记忆的起点,因为多元函数的可微性与单元函数的可微性最像,链式法则中值定理还有我的形式化导数,用的都是可微性而非可导性,可以说可微性才是形式化的。

可微可推出可偏导可方向导数,这不奇怪,可微描述的是一个开球里面的局部性质。而方向导数偏导描述的都是一个方向或者正负一对方向上的性质。显然可微要更强一些。

三、方向导数和可偏导

两者是不可互推的。当函数可偏导的时候,其实只满足了延 x 轴和延 y 轴两条曲线的的可导性,方向导数要求任意方向都要可导(或者某一方向),所以显然是推不出的。

若任意方向都可导,是否就能推出可偏导呢?也是不行的,因为左导数右导数不同时,导数不存在,但是此时已经满足方向导数的条件了,所以也是推不出的。

四、偏导数连续

这个条件几乎是最强的,可微依靠的是偏导函数向量自变量增量向量的内积,显然当偏导函数向量具有连续性质时,条件会更强。我们管偏导数连续的叫做 “光滑”。

当有偏导数连续的条件时,可以推出可微隐函数存在可高阶导数可泰勒展开混合偏导数相等。其中可能可高阶导数可泰勒展开是因为混合偏导数的形式美,没有这个只是没法合并同类项了,但是隐函数存在应该是用到其中的性质了。

五、开集、区域、凸区域

开集中的点全是内点,这个说法来自两者定义的相似性。

区域开集多了道路联通的属性,那么一个集合中有多个开球的情况就可以被排除了。

凸区域要求连接区域中点的路径必须是直线,这使得有 “凹” 的边界的区域被淘汰。这是为了确保在使用微分中值定理时,f,(ξ)f^,(\xi) 的值能在集合中被取到。

隐函数定理的应用

一、法线与平面与点

这三个东西组成了一个完整的整体,他们都反映了一个更本质的东西 —— 法向量。当我们有了法向量 (a,b,c)(a,b,c) 以后,和要计算的点 (x0,y0,z0)(x_0,y_0,z_0) ,相应的直线为

xx0a=yy0b=zz0c\frac{x-x_0}{a}=\frac{y-y_0}{b}=\frac{z-z_0}{c}

相应的平面为

ax+by+cz=ax0+by0+cz0ax+by+cz=ax_0+by_0+cz_0

二、曲面的法向量与切平面

曲面是有两个自由度的几何体,那么他可以显式或隐式写成 z=F(x,y)z=F(x,y) 我们知道 (Fx,Fy)(F_x,F_y) 被称为 FF 的梯度,它大概是一个与 xyxy 平面平行的向量,这时我们对 z 求导,可以求出一个 1-1 的分量,然后既可以写作 (Fx,Fy1)(F_x,F_y,-1) ,这个东西长得就很像一个垂直曲面的东西,之前总觉得曲面方程 F(x,y,z)=0F(x,y,z)=0 是一个三元函数被一个平面截出的曲面,但是四维的东西很不利与思考,正确的理解是他是一个二元隐函数

这章叫做隐函数定理的应用,意思就是无论是曲面还是曲线,其本质应该是参数方程建立的,但是我们只有普通方程,所以我们只好利用隐函数定理来获得原本应该显然的类参数方程

那么显然法向量就是 (Fx,Fy,Fz)(F_x,F_y,F_z) ,与之对应的切平面就是

Fxx+Fyy+Fzz=Fxx0+Fyy0+Fzz0F_xx+F_yy+F_zz=F_xx_0+F_yy_0+F_zz_0

三、曲线的切向量和法平面

曲线是有一个自由度的几何体,那么他会被写作

{x=x(t)y=y(t)z=z(t)\begin{cases} x=x(t)\\ y=y(t)\\ z=z(t) \end{cases}

那么显然他的法向量是 (x(t),y(t),z(t))(x^\prime(t),y^\prime(t),z^\prime(t)) ,进而可以求此时的法线和切平面为

xx0x(t)=yy0y(t)=zz0z(t)\frac{x-x_0}{x^\prime(t)}=\frac{y-y_0}{y^\prime(t)}=\frac{z-z_0}{z^\prime(t)}

x(t)x+y(t)y+z(t)z=x(t)x0+y(t)y0+z(t)z0x^\prime(t)x+y^\prime(t)y+z^\prime(t)z=x^\prime(t)x_0+y^\prime(t)y_0+z^\prime(t)z_0

但是不是每个曲线都是这种显式的参数方程,而大部分是这种样子:

{F(x,y,z)=0G(x,y,z)=0\begin{cases} F(x,y,z)=0\\ G(x,y,z)=0 \end{cases}

这是就需要利用隐函数定理,将其理解为

{x=xy=y(x)z=z(y)\begin{cases} x=x\\ y=y(x)\\ z=z(y) \end{cases}

才能进行运算,这是一个二元方程组,求出导数即可。