雅可比矩阵

单变量函数的变换

在介绍雅可比矩阵之前,我们先尝试对单变量函数进行换元,即把 11 维空间的微元变换到另一个 11 维空间中。

设关于 xx 的函数为 f(x)f(x),现做一个 R→R\mathbb{R} \to \mathbb{R} 变换

u=u(x) u=u(x)

设其逆变换为

x=x(u) x=x(u)

于是 f(x)f(x) 可以用 uu 表示为

f(x)=f(x(u)) f(x) = f(x(u))

在积分时,不仅要换函数里的变量,还要换积分微元。而积分微元之间的关系可以通过导数求得

dx=dxdudu \mathrm{d}x = \frac{\mathrm{d}x}{\mathrm{d}u} \mathrm{d}u

于是

∫f(x)dx=∫f(x(u))dxdudu \int f(x) \mathrm{d}x = \int f(x(u)) \frac{\mathrm{d}x}{\mathrm{d}u} \mathrm{d}u

当变换推广到多变量函数时,就需要用到雅可比矩阵。

多变量函数的变换

设关于 x,yx,y 的函数为 f(x,y)f(x,y),现做一个 R2→R2\mathbb{R}^2 \to \mathbb{R}^2 变换

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

设逆变换为

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

于是 f(x,y)f(x,y) 可以用 u,vu,v 表示为

f(x,y)=f(x(u,v),y(u,v)) f(x,y) = f(x(u,v), y(u, v))

在积分时替换变量和微元

∫f(x,y)dxdy=∫f(x(u,v),y(u,v))∂(x,y)∂(u,v)dudv \int f(x,y) \mathrm{d}x\mathrm{d}y = \int f(x(u,v), y(u, v)) \frac{\partial(x,y)}{\partial(u,v)} \mathrm{d}u\mathrm{d}v

上式的 ∂(x,y)∂(u,v)\frac{\partial(x,y)}{\partial(u,v)} 仿照了单变量换元的符号 dxdu\frac{\mathrm{d}x}{\mathrm{d}u},其被定义为雅可比矩阵的行列式

∂(x,y)∂(u,v)=∣J∣ \frac{\partial(x,y)}{\partial(u,v)} = |\mathbf{J}|

后文将分别从几何与代数的角度,推导雅可比矩阵的表达式。

局部线性变换

理解雅可比矩阵的最佳方式,就是通过线性代数。先对 x=x(u,v)x=x(u,v) 和 y=y(u,v)y=y(u,v) 进行全微分,得到

dx=∂x∂udu+∂x∂vdvdy=∂y∂udu+∂y∂vdv \mathrm{d}x = \frac{\partial x}{\partial u} \mathrm{d}u + \frac{\partial x}{\partial v} \mathrm{d}v \\ \mathrm{d}y = \frac{\partial y}{\partial u} \mathrm{d}u + \frac{\partial y}{\partial v} \mathrm{d}v

然后改写为向量形式

[dxdy]=[∂x∂u∂x∂v∂y∂u∂y∂v][dudv] \begin{bmatrix} \mathrm{d}x \\ \mathrm{d}y \end{bmatrix} = \begin{bmatrix} \frac{\partial x}{\partial u} & \frac{\partial x}{\partial v} \\ \frac{\partial y}{\partial u} & \frac{\partial y}{\partial v} \end{bmatrix} \begin{bmatrix} \mathrm{d}u \\ \mathrm{d}v \end{bmatrix}

上式中的矩阵就是雅可比矩阵

J=[∂x∂u∂x∂v∂y∂u∂y∂v] \mathbf{J} = \begin{bmatrix} \frac{\partial x}{\partial u} & \frac{\partial x}{\partial v} \\ \frac{\partial y}{\partial u} & \frac{\partial y}{\partial v} \end{bmatrix}

这个矩阵把微元从 22 维空间变换到另一个 22 维空间。原变换 x(u,v)x(u,v) 和 y(u,v)y(u,v) 可能是非线性的,但只要函数可微,那么变换在局部就是线性的。而矩阵正是线性变换的一种表示方式。

矩阵的行列式有着非常清晰的几何含义:它表示一个线性变换对尺寸的缩放系数。对于 2×22\times2 的雅可比矩阵,其行列式就表示面积的缩放因子

∣J∣=∣∂x∂u∂x∂v∂y∂u∂y∂v∣=(∂x∂u∂y∂v−∂x∂v∂y∂u) |\mathbf{J}| = \begin{vmatrix} \frac{\partial x}{\partial u} & \frac{\partial x}{\partial v} \\ \frac{\partial y}{\partial u} & \frac{\partial y}{\partial v} \end{vmatrix} = \left( \frac{\partial x}{\partial u}\frac{\partial y}{\partial v} - \frac{\partial x}{\partial v}\frac{\partial y}{\partial u} \right)

即 uvuv 平面上一个面积为 dudv\mathrm{d}u\mathrm{d}v 的矩形,映射到 xyxy 平面后,在局部变为一个平行四边形,其有向面积为

dxdy=∣J∣dudv=(∂x∂u∂y∂v−∂x∂v∂y∂u)dudv \mathrm{d}x\mathrm{d}y = |\mathbf{J}| \mathrm{d}u\mathrm{d}v = \left( \frac{\partial x}{\partial u}\frac{\partial y}{\partial v} - \frac{\partial x}{\partial v}\frac{\partial y}{\partial u} \right) \mathrm{d}u\mathrm{d}v

这样就得到了最终的积分换元表达式

∫f(x,y)dxdy=∫f(x(u,v),y(u,v))(∂x∂u∂y∂v−∂x∂v∂y∂u)dudv \int f(x,y) \mathrm{d}x\mathrm{d}y = \int f(x(u,v), y(u, v)) \left( \frac{\partial x}{\partial u}\frac{\partial y}{\partial v} - \frac{\partial x}{\partial v}\frac{\partial y}{\partial u} \right) \mathrm{d}u\mathrm{d}v

用这种方式可以很自然地把雅可比矩阵推广到任意维度的空间中——只要写一遍向量形式的全微分公式就行了。

设关于 x=(x1,x2,…,xn)T\mathbf{x}=(x_1,x_2,\dots,x_n)^T 的函数为 f(x)f(\mathbf{x}),定义一个 Rm→Rn\mathbb{R}^m \to \mathbb{R}^n 变换 x(u)\mathbf{x}(\mathbf{u}),将原函数变为关于 u=(u1,u2,⋯ ,um)T\mathbf{u}=(u_1,u_2,\cdots,u_m)^T 的函数 f(x(u))f(\mathbf{x}(\mathbf{u}))。则对于该变换,x\mathbf{x} 各分量的全微分为

dx1=∂x1∂u1du1+∂x1∂u2du2+⋯+∂x1∂umdumdx2=∂x2∂u1du1+∂x2∂u2du2+⋯+∂x2∂umdum⋮dxn=∂xn∂u1du1+∂xn∂u2du2+⋯+∂xn∂umdum \mathrm{d}x_1 = \frac{\partial x_1}{\partial u_1} \mathrm{d}u_1 + \frac{\partial x_1}{\partial u_2} \mathrm{d}u_2 + \cdots + \frac{\partial x_1}{\partial u_m} \mathrm{d}u_m \\ \mathrm{d}x_2 = \frac{\partial x_2}{\partial u_1} \mathrm{d}u_1 + \frac{\partial x_2}{\partial u_2} \mathrm{d}u_2 + \cdots + \frac{\partial x_2}{\partial u_m} \mathrm{d}u_m \\ \vdots \\ \mathrm{d}x_n = \frac{\partial x_n}{\partial u_1} \mathrm{d}u_1 + \frac{\partial x_n}{\partial u_2} \mathrm{d}u_2 + \cdots + \frac{\partial x_n}{\partial u_m} \mathrm{d}u_m \\

改成向量形式,即可得到雅可比矩阵

[dx1dx2⋮dxn]=[∂x1∂u1∂x1∂u2⋯∂x1∂um∂x2∂u1∂x2∂u2⋯∂x2∂um⋮⋮⋱⋮∂xn∂u1∂xn∂u2⋯∂xn∂um][du1du2⋮dum] \begin{bmatrix} \mathrm{d}x_1 \\ \mathrm{d}x_2 \\ \vdots \\ \mathrm{d}x_n \end{bmatrix} = \begin{bmatrix} \frac{\partial x_1}{\partial u_1} & \frac{\partial x_1}{\partial u_2} & \cdots & \frac{\partial x_1}{\partial u_m} \\ \frac{\partial x_2}{\partial u_1} & \frac{\partial x_2}{\partial u_2} & \cdots & \frac{\partial x_2}{\partial u_m} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial x_n}{\partial u_1} & \frac{\partial x_n}{\partial u_2} & \cdots & \frac{\partial x_n}{\partial u_m} \end{bmatrix} \begin{bmatrix} \mathrm{d}u_1 \\ \mathrm{d}u_2 \\ \vdots \\ \mathrm{d}u_m \end{bmatrix}

其第 ii 行第 jj 列的元素为

[Jx(u)]ij=∂∂ujxi(u)=∂∂uj[x(u)]i [\mathbf{J}_{\mathbf{x}}(\mathbf{u})]_{ij} = \frac{\partial}{\partial u_j}x_i(\mathbf{u}) = \frac{\partial}{\partial u_j} \left[\mathbf{x}(\mathbf{u})\right]_i

对于 m≠nm\neq n 的情况,雅可比矩阵不是方阵,因此不存在行列式。此时变换是不可逆的——它改变了微元空间的维度。

几何推导

如果觉得线性代数有点过于抽象的话,这里补一个更详细的几何推导过程。不过这种方法不方便推广到更高的维度,因此只分析 R2→R2\mathbb{R}^2 \to \mathbb{R}^2 的变换。

考虑 uvuv 平面上一个小矩形,其中各点分别为

A=[u0v0]TB=[u0+duv0]TC=[u0v0+dv]TD=[u0+duv0+dv]T \begin{align*} A &= \begin{bmatrix} u_0 & v_0 \end{bmatrix}^T \\ B &= \begin{bmatrix} u_0 + \mathrm{d}u & v_0 \end{bmatrix}^T \\ C &= \begin{bmatrix} u_0 & v_0 + \mathrm{d}v \end{bmatrix}^T \\ D &= \begin{bmatrix} u_0 + \mathrm{d}u & v_0 + \mathrm{d}v \end{bmatrix}^T \end{align*}

其长度为 du\mathrm{d}u,宽度为 dv\mathrm{d}v,面积为 dudv\mathrm{d}u\mathrm{d}v。将其变换到 xyxy 平面

A′=[x(u0,v0)y(u0,v0)]TB′=[x(u0+du,v0)y(u0+du,v0)]TC′=[x(u0,v0+dv)y(u0,v0+dv)]TD′=[x(u0+du,v0+dv)y(u0+du,v0+dv)]T \begin{align*} A' &= \begin{bmatrix}x(u_0,v_0) & y(u_0,v_0)\end{bmatrix}^T \\ B' &= \begin{bmatrix}x(u_0 + \mathrm{d}u,v_0) & y(u_0 + \mathrm{d}u,v_0)\end{bmatrix}^T \\ C' &= \begin{bmatrix}x(u_0,v_0 + \mathrm{d}v) & y(u_0,v_0 + \mathrm{d}v)\end{bmatrix}^T \\ D' &= \begin{bmatrix}x(u_0 + \mathrm{d}u, v_0 + \mathrm{d}v) & y(u_0 + \mathrm{d}u, v_0 + \mathrm{d}v)\end{bmatrix}^T \end{align*}

虽然变换可能不是线性的,但只要函数是可微的,那么在局部依然可以近似为平行四边形。其一边为

A′B′→=[x(u0+du,v0)−x(u0,v0)y(u0+du,v0)−y(u0,v0)]T \overrightarrow{A'B'} = \begin{bmatrix} x(u_0+\mathrm{d}u, v_0) - x(u_0,v_0) & y(u_0+\mathrm{d}u, v_0) - y(u_0,v_0) \end{bmatrix}^T

根据偏微分的定义,可以得到

x(u0+du,v0)−x(u0,v0)=∂x∂udu x(u_0+\mathrm{d}u, v_0) - x(u_0,v_0) = \frac{\partial x}{\partial u}\mathrm{d}u

同理有

y(u0+du,v0)−y(u0,v0)=∂y∂udu y(u_0+\mathrm{d}u, v_0) - y(u_0,v_0) = \frac{\partial y}{\partial u}\mathrm{d}u

从而

A′B′→=[∂x∂udu∂y∂udu]T=[∂x∂u∂y∂u]du \begin{align*} \overrightarrow{A'B'} &= \begin{bmatrix} \frac{\partial x}{\partial u}\mathrm{d}u & \frac{\partial y}{\partial u}\mathrm{d}u \end{bmatrix}^T \\ &= \begin{bmatrix} \frac{\partial x}{\partial u} \\ \frac{\partial y}{\partial u} \end{bmatrix} \mathrm{d}u \end{align*}

与此同时,另外一边……

A′C′→=[x(u0,v0+dv)−x(u0,v0)y(u0,v0+dv)−y(u0,v0)]T=[∂x∂vdv∂y∂vdv]T=[∂x∂v∂y∂v]dv \begin{align*} \overrightarrow{A'C'} &= \begin{bmatrix} x(u_0, v_0+\mathrm{d}v) - x(u_0,v_0) & y(u_0, v_0+\mathrm{d}v) - y(u_0,v_0) \end{bmatrix}^T \\ &= \begin{bmatrix} \frac{\partial x}{\partial v}\mathrm{d}v & \frac{\partial y}{\partial v}\mathrm{d}v \end{bmatrix}^T \\ &= \begin{bmatrix} \frac{\partial x}{\partial v} \\ \frac{\partial y}{\partial v} \end{bmatrix} \mathrm{d}v \end{align*}

平行四边形的有向面积可以通过行列式求得

SA′B′C′D′=∣A′B′→A′C′→∣=∣[∂x∂u∂y∂u]du[∂x∂v∂y∂v]dv∣=∣∂x∂u∂x∂v∂y∂u∂y∂v∣dudv \begin{align*} S_{A'B'C'D'} &= \begin{vmatrix} \overrightarrow{A'B'} & \overrightarrow{A'C'} \end{vmatrix} \\ &= \begin{vmatrix} \begin{bmatrix} \frac{\partial x}{\partial u} \\ \frac{\partial y}{\partial u} \end{bmatrix} \mathrm{d}u & \begin{bmatrix} \frac{\partial x}{\partial v} \\ \frac{\partial y}{\partial v} \end{bmatrix} \mathrm{d}v \\ \end{vmatrix} \\ &= \begin{vmatrix} \frac{\partial x}{\partial u} & \frac{\partial x}{\partial v} \\ \frac{\partial y}{\partial u} & \frac{\partial y}{\partial v} \end{vmatrix} \mathrm{d}u\mathrm{d}v \end{align*}

这样我们也能得到雅可比行列式。虽然不是通过矩阵得到的,但对于没接触过线性代数的人而言,这种解释可能更直观。

外微分形式

如果了解过外微分形式,那么雅可比矩阵有一种更加代数化的几何推导方式——楔积。

数学上使用楔积 ∧\wedge 表示由向量张成的有向面积,其满足一些关系

  1. 两根完全重合的线段张不出面积

    du∧du=0dv∧dv=0 \begin{align*} \mathrm{d}u \wedge \mathrm{d}u &= 0 \\ \mathrm{d}v \wedge \mathrm{d}v &= 0 \end{align*}
  2. 交换顺序会改变面积的定向

    dv∧du=−du∧dv \mathrm{d}v \wedge \mathrm{d}u = -\mathrm{d}u \wedge \mathrm{d}v

代入全微分公式,有

dx∧dy=(∂x∂udu+∂x∂vdv)∧(∂y∂udu+∂y∂vdv)=∂x∂u∂y∂u  du∧du+∂x∂u∂y∂v  du∧dv+∂x∂v∂y∂u  dv∧du+∂x∂v∂y∂v  dv∧dv \begin{align*} \mathrm{d}x \wedge \mathrm{d}y &= \left( \frac{\partial x}{\partial u}\mathrm{d}u + \frac{\partial x}{\partial v}\mathrm{d}v \right) \wedge \left( \frac{\partial y}{\partial u}\mathrm{d}u + \frac{\partial y}{\partial v}\mathrm{d}v \right) \\ &= \frac{\partial x}{\partial u}\frac{\partial y}{\partial u}\; \mathrm{d}u \wedge \mathrm{d}u +\frac{\partial x}{\partial u}\frac{\partial y}{\partial v}\; \mathrm{d}u \wedge \mathrm{d}v +\frac{\partial x}{\partial v}\frac{\partial y}{\partial u}\; \mathrm{d}v \wedge \mathrm{d}u +\frac{\partial x}{\partial v}\frac{\partial y}{\partial v}\; \mathrm{d}v \wedge \mathrm{d}v \end{align*}

根据楔积满足的关系,得到

dx∧dy=(∂x∂u∂y∂v−∂x∂v∂y∂u)du∧dv \mathrm{d}x \wedge \mathrm{d}y = \left( \frac{\partial x}{\partial u}\frac{\partial y}{\partial v} - \frac{\partial x}{\partial v}\frac{\partial y}{\partial u} \right) \mathrm{d}u \wedge \mathrm{d}v

而积分表达式中的面积微元 dxdy\mathrm{d}x\mathrm{d}y 和 dudv\mathrm{d}u\mathrm{d}v 就是有向面积微元 dx∧dy\mathrm{d}x \wedge \mathrm{d}y 和 du∧dv\mathrm{d}u \wedge \mathrm{d}v 的简写,因此

dxdy=(∂x∂u∂y∂v−∂x∂v∂y∂u)dudv \mathrm{d}x\mathrm{d}y = \left( \frac{\partial x}{\partial u}\frac{\partial y}{\partial v} - \frac{\partial x}{\partial v}\frac{\partial y}{\partial u} \right) \mathrm{d}u\mathrm{d}v

雅可比矩阵的转置

链式法则

除了用于积分换元,雅可比矩阵还出现在链式法则中——不过是以转置的形式。

当 f(x,y)f(x,y) 被换元为 f(x(u,v),y(u,v))f(x(u,v),y(u,v)) 后,由链式法则可得

∂f∂u=∂f∂x∂x∂u+∂f∂y∂y∂u∂f∂v=∂f∂x∂x∂v+∂f∂y∂y∂v \begin{align*} \frac{\partial f}{\partial u} = \frac{\partial f}{\partial x}\frac{\partial x}{\partial u} + \frac{\partial f}{\partial y}\frac{\partial y}{\partial u}\\ \frac{\partial f}{\partial v} = \frac{\partial f}{\partial x}\frac{\partial x}{\partial v} + \frac{\partial f}{\partial y}\frac{\partial y}{\partial v} \end{align*}

写成向量形式

[∂f∂u∂f∂v]=[∂x∂u∂y∂u∂x∂v∂y∂v][∂f∂x∂f∂y] \begin{bmatrix} \frac{\partial f}{\partial u} \\ \frac{\partial f}{\partial v} \end{bmatrix} = \begin{bmatrix} \frac{\partial x}{\partial u} & \frac{\partial y}{\partial u} \\ \frac{\partial x}{\partial v} & \frac{\partial y}{\partial v} \end{bmatrix} \begin{bmatrix} \frac{\partial f}{\partial x} \\ \frac{\partial f}{\partial y} \end{bmatrix}

其中的矩阵恰好是雅可比矩阵的转置

JT=[∂x∂u∂y∂u∂x∂v∂y∂v] \mathbf{J}^T = \begin{bmatrix} \frac{\partial x}{\partial u} & \frac{\partial y}{\partial u} \\ \frac{\partial x}{\partial v} & \frac{\partial y}{\partial v} \end{bmatrix}

梯度向量与海森矩阵

多元函数 f:Rn→Rf: \mathbb{R}^n \to \mathbb{R} 的梯度向量

∇f(x)=[∂f∂x1∂f∂x2⋮∂f∂xn] \nabla f(\mathbf{x}) = \begin{bmatrix} \frac{\partial f}{\partial x_1} \\ \frac{\partial f}{\partial x_2} \\ \vdots \\ \frac{\partial f}{\partial x_n} \end{bmatrix}

是雅可比矩阵的转置

[∇f(x)]j1=∂f∂xj=∂∂xjf(x)=[Jf(x)]1j \left[\nabla f(\mathbf{x})\right]_{j1} = \frac{\partial f}{\partial x_j} = \frac{\partial}{\partial x_j}f(\mathbf{x}) = \left[\mathbf{J}_f(\mathbf{x})\right]_{1j}

即

∇f(x)=Jf(x)T \nabla f(\mathbf{x}) = \mathbf{J}_{f}(\mathbf{x})^T

而海森矩阵

Hf(x)=[∂2f∂x12∂2f∂x1∂x2⋯∂2f∂x1∂xn∂2f∂x2∂x1∂2f∂x22⋯∂2f∂x2∂xn⋮⋮⋱⋮∂2f∂xn∂x1∂2f∂xn∂x2⋯∂2f∂xn2] \mathbf{H}_f(\mathbf{x}) = \begin{bmatrix} \frac{\partial^2 f}{\partial x_1^2} & \frac{\partial^2 f}{\partial x_1 \partial x_2} & \cdots & \frac{\partial^2 f}{\partial x_1 \partial x_n} \\ \frac{\partial^2 f}{\partial x_2 \partial x_1} & \frac{\partial^2 f}{\partial x_2^2} & \cdots & \frac{\partial^2 f}{\partial x_2 \partial x_n} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial^2 f}{\partial x_n \partial x_1} & \frac{\partial^2 f}{\partial x_n \partial x_2} & \cdots & \frac{\partial^2 f}{\partial x_n^2} \end{bmatrix}

可通过对梯度向量求雅可比矩阵的转置得到

[Hf(x)]ji=∂2f∂xj∂xi=∂∂xj(∂f∂xi)=∂∂xj[∇f(x)]i=[J∇f(x)]ij \left[ \mathbf{H}_f(\mathbf{x}) \right]_{ji} = \frac{\partial^2 f}{\partial x_j \partial x_i} = \frac{\partial}{\partial x_j}\left(\frac{\partial f}{\partial x_i}\right) = \frac{\partial}{\partial x_j} \left[\nabla f(\mathbf{x})\right]_i = \left[ \mathbf{J}_{\nabla f}(\mathbf{x}) \right]_{ij}

即

Hf(x)=J∇f(x)T \mathbf{H}_f(\mathbf{x}) = \mathbf{J}_{\nabla f}(\mathbf{x})^T

但对海森矩阵就无法继续求雅可比矩阵的转置了。之后的结果涉及到高阶张量,需要定义张量积以推广这种运算。