GAMES001课程笔记09-场论初步
这个系列是GAMES001-图形学中的数学(GAMES 001: Mathematics in Computer Graphics)的同步课程笔记。课程旨在总结归纳图形学学习过程中重要的数学概念、理论和方法,并将以索引的形式在每一章节中穿插讲解该数学专题在图形学中的应用。本课程既可以作为GAMES系列其它课程学习的基础或「手册」,也可以作为站在不一样的视角复习图形学知识的平台。本节主要介绍场论的基本知识。
在物理学中我们一般把某个物理量在空间中的分布称为「场」,而在数学中场可以理解为一类特殊的多元函数,其自变量为空间中的位置。本节涉及的场论知识都是在数学意义下的场,因此也可以看作是对矢量分析的入门介绍。
标量场
梯度
首先来考虑标量场\(f (x, y, z)\)在给定方向\(\boldsymbol{d} = (d_x, d_y, d_z)\)下的方向导数
\[\begin{aligned} \frac{\partial f}{\partial \boldsymbol{d}} &= \lim_{t \to 0} \frac{f(x + t d_x, y + t d_y, z + t d_z) - f(x, y, z)}{t} \\ &= d_x \frac{\partial f}{\partial x} (x, y, z) + d_y \frac{\partial f}{\partial y} (x, y, z) + d_z \frac{\partial f}{\partial z} (x, y, z) \\ &= \boldsymbol{d} \cdot \nabla f \end{aligned}\]即方向导数可以形式化地写成方向向量\(\boldsymbol{d}\)与另一个向量\(\nabla f = \bigg( \frac{\partial f}{\partial x}, \frac{\partial f}{\partial y}, \frac{\partial f}{\partial z} \bigg)\)的内积。我们称\(\nabla f = \text{grad} f = \bigg( \frac{\partial f}{\partial x}, \frac{\partial f}{\partial y}, \frac{\partial f}{\partial z} \bigg)\)为标量场的梯度(gradient)。利用方向导数的定义容易证明标量场的梯度方向实际上就是能够使场函数增长最快的方向。
向量场
通量
除了标量场外,场论中的一个重要内容是研究空间中的向量场。我们定义向量场垂直穿过空间中给定面积的强度为通量(flux),像是流场通过某个截面的流量、光线到达或离开某个面积的大小以及磁感应强度都是向量场的通量。
散度
在通量概念的基础上我们可以定义向量场的散度\(\text{div} \boldsymbol{f}\):
\[\text{div} \boldsymbol{f} = \lim_{\Delta V \to 0} \frac{\oint_{\partial V} \boldsymbol{f} \cdot \mathrm{d} A}{\Delta V}\]上式的意义是在空间中取一个体积为\(\Delta V\)的封闭曲面,当曲面趋于无穷小时包含该点的平均通量即为散度。利用\(\nabla\)算子,散度更加常见的形式为
\[\text{div} \boldsymbol{f} = \nabla \cdot \boldsymbol{f} = \frac{\partial f_x}{\partial x} + \frac{\partial f_y}{\partial y} + \frac{\partial f_z}{\partial z}\]散度为0的情况称为无散(divergence free),这说明向量场在该处没有源,对于流场而言它表示流体的体积没有发生改变。有散则与之相反,对于流场而言意味着该点处附近有体积增加或减少。
散度进行计算时的一个重要工具是高斯散度定理,它指出向量场通过区域\(V\)边界的通量等于散度在整个区域上的积分:
\[\oint_{\partial V} (\boldsymbol{f} \cdot \boldsymbol{n}) \ \mathrm{d} A = \iiint_V (\nabla \cdot \boldsymbol{f}) \ \mathrm{d} V\]环量
向量场的环量(circulation)或者说涡量(vortex)定义为向量在闭合曲线切方向上分量的积分,对于流体而言它表示流体沿曲线旋转的强度。
\[\Gamma = \oint_L (\boldsymbol{u} \cdot \boldsymbol{\tau}) \ \mathrm{d} l\]旋度
在环量的基础上可以定义向量场的旋度(curl),它在二维平面上的定义为:
\[\text{curl} \boldsymbol{f} = \frac{\partial Q}{\partial x} - \frac{\partial P}{\partial y}\]旋度在三维空间中的定义为
\[\text{curl} \boldsymbol{f} = \bigg( \frac{\partial R}{\partial y} - \frac{\partial Q}{\partial z}, \frac{\partial P}{\partial z} - \frac{\partial Q}{\partial x}, \frac{\partial Q}{\partial x} - \frac{\partial P}{\partial y} \bigg)\]利用\(\nabla\)算子,旋度可以表示为更简洁的形式
\[\text{curl} \boldsymbol{f} = \nabla \times \boldsymbol{f}\]其中,\(\boldsymbol{f} = (P, Q, R)\)。
矢量微分恒等式
Helmholtz分解
Helmholtz分解是向量场分析中的重要技术,在介绍Helmholtz分解前我们先引入下面几条引理:
- 有势必无散:若存在向量势函数\(\boldsymbol{\psi}\)使得向量场\(\boldsymbol{A} = \nabla \times \boldsymbol{\psi}\),则\(\nabla \cdot \boldsymbol{A} = 0\)
- 无散必有势:若向量场满足\(\nabla \cdot \boldsymbol{A} = 0\),则必存在向量势函数\(\boldsymbol{\psi}\)使得\(\boldsymbol{A} = \nabla \times \boldsymbol{\psi}\)
- 有势必无旋:若存在标量势函数\(\phi\)使得向量场\(\boldsymbol{A} = \nabla \phi\),则\(\nabla \times \boldsymbol{A} = \boldsymbol{0}\)
- 无旋必有势:若向量场满足\(\nabla \times \boldsymbol{A} = \boldsymbol{0}\),则必存在标量势函数\(\phi\)使得\(\boldsymbol{A} = \nabla \phi\)
利用上面的引理可以推导出对于无旋无源场\(\boldsymbol{A}\)(\nabla \times \boldsymbol{A} = \boldsymbol{0}, \nabla \cdot \boldsymbol{A} = 0),一定存在标量势函数\(\phi\)和矢量势函数\(\boldsymbol{\varpsi}\)使得
\[\boldsymbol{A} = \nabla \phi = \nabla \times \boldsymbol{\psi}\]更进一步,它们分别满足Laplace方程和双旋度方程
\[\nabla \cdot \nabla \phi = 0\] \[\nabla \times \nabla \times \boldsymbol{\psi} = \boldsymbol{0}\]最终我们可以得到Helmholtz分解,它指出对于一个一般的向量场\(\boldsymbol{A}\),它可以分解为无旋场和无源场的叠加:
\[\boldsymbol{A} = \boldsymbol{A}_P + \boldsymbol{A}_R = \nabla \phi + \nabla \times \boldsymbol{\psi}\]外微分
整体来看矢量分析是比较复杂的,涉及到大量算子之间的运算。借助于外微分这样更先进的数学工具我们可以得到更加简化的表达形式。外微分的一大特点是反对称性,它对应着积分运算中的定向。
外积
外积是外微分中的基本运算符号,它满足如下运算规律:
\[\mathrm{d} x \wedge \mathrm{d} x = \mathrm{d} y \wedge \mathrm{d} y = \mathrm{d} z \wedge \mathrm{d} z = 0\] \[\mathrm{d} x \wedge \mathrm{d} y = -\mathrm{d} y \wedge \mathrm{d} x, \ \ \ \mathrm{d} y \wedge \mathrm{d} z = -\mathrm{d} z \wedge \mathrm{d} y, \ \ \ \mathrm{d} z \wedge \mathrm{d} x = -\mathrm{d} x \wedge \mathrm{d} z\] \[( \mathrm{d} x \wedge \mathrm{d} y ) \wedge \mathrm{d} z = \mathrm{d} x \wedge ( \mathrm{d} y \wedge \mathrm{d} z )\]利用外积可以容易地推导出积分的定向。
外微分形式
接下来我们定义\(\mathbb{R}^3\)中的外微分形式,它们通常是积分中的被积项。
同时定义微分算子\(\mathrm{d}\),它将一个k次形式映射为k+1次形式。具体来说,对于0次形式\(f(x, y, z)\),它的外微分为
\[\mathrm{d} f (x, y, z) = \frac{\partial f}{\partial x} \mathrm{d} x + \frac{\partial f}{\partial y} \mathrm{d} y + \frac{\partial f}{\partial z} \mathrm{d} z\]不难发现对于0次形式的外微分,其作用结果与通常意义下的微分是完全一致的。即\(\mathrm{d} \omega_{f}^0 = \omega_{\nabla f}^1\)。
对于1次形式则有
\[\begin{aligned} \mathrm{d} \omega_{\boldsymbol{A}}^1 &= \mathrm{d} [A_x \mathrm{d} x + A_y \mathrm{d} y + A_z \mathrm{d} z] \\ &= \mathrm{d} A_x \wedge \mathrm{d} x + \mathrm{d} A_y \wedge \mathrm{d} y + \mathrm{d} A_z \wedge \mathrm{d} z \\ &= \omega_{\nabla \times \boldsymbol{A}}^2 \end{aligned}\]即1次形式的外微分产生对应向量场的旋度的2次形式。
类似地,对于3次形式则有
\[\mathrm{d} \omega_{\boldsymbol{A}}^2 = \mathrm{d} [A_x \mathrm{d} y \wedge \mathrm{d} z + A_y \mathrm{d} z \wedge \mathrm{d} x + A_z \mathrm{d} x \wedge \mathrm{d} y] = \omega_{\nabla \cdot \boldsymbol{A}}^3\]实际上,上面的公式可以总结为Poincaré引理:对于任意形式的外微分有\(\mathrm{d}^2 \omega = 0\)。
利用外微分,我们可以很容易地证明各种矢量分析恒等式。除此之外,微积分中常用的各种积分公式都可以通过外微分的Stokes公式来进行统一:
\[\int_{\partial \Omega} \omega = \int_{\Omega} \mathrm{d} \omega\]