雅可比矩阵在积分换元中的应用
雅可比矩阵在积分换元中的应用
雅可比矩阵在积分换元中扮演着重要的角色,它不仅能够实现坐标变换,还能准确计算积分面元的缩放比例。本文将从雅可比矩阵的定义出发,深入探讨其在多重积分换元中的具体应用,并通过实例验证其正确性。
1. 雅可比矩阵和雅可比行列式
雅可比矩阵可以理解为一个向量对另一个向量的微分。对于向量
$$
y = \begin{bmatrix}
f_1(x_1, x_2, \cdots, x_n) \
f_2(x_1, x_2, \cdots, x_n) \
\vdots \
f_m(x_1, x_2, \cdots, x_n)
\end{bmatrix}
$$
和向量
$$
x = \begin{bmatrix}
x_1 \
x_2 \
\vdots \
x_n
\end{bmatrix}
$$
则 $x \to y$ 的雅可比矩阵可表示为
$$
J = \frac{\partial y}{\partial x^T} = \begin{bmatrix}
\frac{\partial f_1}{\partial x_1} & \frac{\partial f_1}{\partial x_2} & \cdots & \frac{\partial f_1}{\partial x_n} \
\frac{\partial f_2}{\partial x_1} & \frac{\partial f_2}{\partial x_2} & \cdots & \frac{\partial f_2}{\partial x_n} \
\vdots & \vdots & \vdots & \vdots \
\frac{\partial f_m}{\partial x_1} & \frac{\partial f_m}{\partial x_2} & \cdots & \frac{\partial f_m}{\partial x_n}
\end{bmatrix}
$$
对于全微分向量 $dx$ 和 $dy = \begin{bmatrix} df_1 & \cdots & df_m \end{bmatrix}^T$ 有如下关系(*表示矩阵乘法):
$$
dy = J * dx
$$
在 $m = n$ 的条件下,可以定义雅可比矩阵 $J$ 的行列式 $|J|$。
2. 在积分换元中的应用
雅可比矩阵行列式在多重积分换元中的应用有如下关系:
$$
dy_1 dy_2 \cdots dy_n = |J| dx_1 dx_2 \cdots dx_n
$$
这个公式是本文的核心内容。下面以二维平面的例子进行说明(主要参考[1]),定义要求解的二重积分为:
$$
\iint_S f(x, y) dx dy
$$
现要将 $x-y$ 平面转化为在 $u-v$ 平面上求解上述积分,并已知:
$$
x = f_1(u, v) \
y = f_2(u, v)
$$
则根据雅可比矩阵的定义有:
$$
\begin{bmatrix}
dx \
dy
\end{bmatrix} = J \begin{bmatrix}
du \
dv
\end{bmatrix}
$$
其中:
$$
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}
$$
表现在二维平面上,则有以下关系:
上图中的雅可比矩阵 $J$ 起到坐标变换的功能($u-v$ 平面中的小长方形映射到 $x-y$ 平面上变为了平行四边形)。在求 $\iint_S f(x, y) dx dy$ 时,$f(x, y)$ 表示高度,$dx dy$ 为积分面元,在进行积分换元时,$f(x, y)$ 用 $f(f_1(u, v), f_2(u, v))$ 替代,这两者是等价的。对于积分面元的变换,原本的积分面元是小长方形的 $dx dy$,变换后的积分面元同样应为小长方形,即为 $du dv$,但根据上图所展示的,积分面元 $dx dy$ 与 $du dv$ 很可能并不等价(经过了坐标变换的缩放和平移)。
上图中的左边小长方形面积为 $du dv$,右边所映射的平行四边形面积为(行列式具有体积面积的几何含义,关于这一点将在本文第3节详细说明):
$$
|J \begin{pmatrix} du & 0 \ 0 & dv \end{pmatrix}| = |J| \begin{pmatrix} du & 0 \ 0 & dv \end{pmatrix} = |J| du dv
$$
可以看出,积分面元 $dx dy$ 变换到 $u-v$ 平面时,面积会缩小 $|J|$ 倍。因此,在将 $dx dy$ 替换为 $du dv$ 时,为保证积分面积不变,需要在 $du dv$ 前乘以 $|J|$,因此便得到:
$$
\iint_S f(x, y) dx dy = \iint_{S'} f(f_1(u, v), f_2(u, v)) |J| du dv
$$
值得注意的是:
$$
dx dy = \left( \frac{\partial x}{\partial u} du + \frac{\partial x}{\partial v} dv \right) \cdot \left( \frac{\partial y}{\partial u} du + \frac{\partial y}{\partial v} dv \right) \ne |J| du dv
$$
这一点非常容易令人疑惑,实际上,$dx dy$ 为下图右边蓝色长方形的面积,$|J| du dv$ 为下图右边绿色平行四边形的面积:
为了在积分换元时得到 $du dv$ 的小长方形(或正方形),就需要求其对应映射的绿色的平行四边形的面积,而不是求对应的蓝色长方形面积。这也说明在进行多重积分公式的积分换元时,需要考虑的是积分面元之间的坐标映射关系以及缩放比例,而不是简单的积分面积元之间的粗暴等价相乘。
3. 行列式所表示的几何含义
行列式是线性代数中的基础内容,这里不给出其定义的计算方式(看着有点抽象),只给出一个计算三阶行列式的计算示例[2]:关于行列式的计算方式个人感觉是挺奇怪的,据说是来源于线性方程组求解,这一点不进行深入探讨(可参考博客[3]),我们所重点关注的是其几何含义,即行列式的绝对值等于行列式中的向量所组成的平行多面体的体积。
这里依然以二维的示例进行说明(这部分内容主要参考了知乎上的文章[4])。由于技术原因,手打的公式无法编辑,后面的内容以截图形式展示:
4. 应用实例
可以利用求数值积分的方式验证上述解析求解方式的正确性,数值求解的代码如下:
from scipy.integrate import dblquad
import numpy as np
# 定义被积函数 f(x, y)
def f(y, x):
return np.exp(y/(x+y))
# 求解
result1, error = dblquad(f,
0, 1, # y 的范围
lambda y: 0, # x 的下限
lambda y: 1-y) # x 的上限
print(result1)
print((np.exp(1)-1)/2)
输出结果为:
print(result1) :0.8591409142295229
print((np.exp(1)-1)/2) :0.8591409142295225
可以看到解析解和数值求解的结果基本一致,误差极小。如果求解积分换元后的数值积分结果:
# 定义被积函数 f(x, y)
def f(k, m):
return np.exp(k/(k+1))*m/(k+1)**2
# 求解
result2, error = dblquad(f,
0, np.inf, # k 的范围
lambda x: 0, # m 的下限
lambda x: 1) # m 的上限
print(result2)
输出结果为 result2= 0.3243606366004509
,很明显数值积分求解的结果是不对的(由于存在无穷的积分范围,可能会导致数值积分结果难以收敛)。这一现象说明,目前计算机和人脑的工作方式仍呈现出较为明显的不一致性,计算机擅长应对繁琐但直接的问题,而计算机在如何处理类似数学这种更为抽象的东西方面,仍有很大进步空间。
5. 参考
[2] https://zhuanlan.zhihu.com/p/360292803
[3] https://blog.csdn.net/qq_17065591/article/details/107441773