DDG(离散微分几何):对外微积分快速粗暴的一个介绍 | HyperPlane

DDG(离散微分几何):对外微积分快速粗暴的一个介绍

翻译自 DISCRETE DIFFERENTIAL GEOMETRY: AN APPLIED INTRODUCTION 第四章 A Quick and Dirty Introduction to Exterior Calculus。如果有翻译错误或者不当的地方希望能指出,谢谢~

许多微分几何中重要的概念都可以使用外微积分(exterior calculus)很好地解释。起初这些概念看起来真的很像你从向量微积分(vector calculus)里面知道的对象,并且你可能会怀疑给它们起一个这么时髦的新名字的意义。比如,标量场不再被称为标量场,现在被称为0型(0-forms)!在长时间的学习中我们将会看到这个新语言使得从向量微积分中概括确定的想法变得容易——一个重要的例子是Stokes定理,它和离散化紧密相关,并且是根本地从计算上。

外微积分的基本内容可以被分为几个部分:

  • 线性代数:小箭头 如果你曾经学过线性代数,你可能记得有些东西必须使用“小箭头”——也被称为向量。实际上,如果这是你能记起来关于线性代数的所有内容,那么现在是一个绝佳的好时机回去重新学一遍!我们这里将不会复习。
  • 向量微积分:小箭头是怎么变化的? 同样的,如果你学过向量微积分,那么你记得向量微积分必须随着“小箭头”如何在空间和时间上变化操作(例如,风向变化有多快)。换句话说,向量微积分告诉我们如何微分向量。我们也同样不会复习这个话题!
  • 外代数:小体积 线性代数探索了很多你可以用向量操作的事情:你可以加它们,你可以数乘它们,你可以进行内积,可以外积,还有其它的操作。外代数仅仅增加了几个操作到这个列表里面,这让讨论像面积和体积这样的东西更简单。特别的,这些操作让我们构造出被称为k-向量(k-vectors)的东西,它可以被当作“小k-维体积(little k-dimensional volumes)”。
  • 外微积分:小体积怎么变化? 最后,如果向量微积分是研究“小箭头”如何在空间和时间上变化的课题,那么外微积分是研究小体积如何在空间和时间上变化的课题。换句话说,外积分告诉我们如何微分k-向量。

这是一个很大的画面:外微积分对于外代数就像向量积分对于线性代数一样。小体积是有用的,因为它使用非常通用的上下文帮助我们讨论积分。如果这个内容听起来仍然让你感到比较茫然,那么继续读下去吧!

外代数

(注意:k-向量和k维向量在这里面表示的意义是不一样的)

像上面提到的一样,就像线性代数是“小箭头”合适的专用语,外代数(exterior algebra)也是“小体积”,我们称为k-向量,的专用语。字母“k”表示维度,比如,一个1-向量表示一个“小长度”,一个2-向量表示一个“小面积”等等。关于普通向量需要记住的基本内容是它们编码了两个基本信息:方向(direction)和大小(magnitude)。同样地,k-向量也有方向和大小,虽然对于k-维的体积来讲“方向”的概念要比一维向量更复杂一点。它拥有完全的一般性,外代数在任意向量空间VV中都很合理,但是为了让内容保持简单我们现在仅仅将它使用于我们熟悉的例子,比如平面R2\mathbb{R}^2、三维空间R3\mathbb{R}^3,或者更一般的,n维空间Rn\mathbb{R}^n

热身:1-向量和2-向量

你如何描述Rn\mathbb{R}^n中的体积?粗略地讲,外代数的基本思想是k维的体积可以使用k个向量描述。在线性代数中我们有类似的思想:通过张成,k个向量可以被用来描述k维线性空间(一个向量张成一条线;两个向量张成一个平面;等等)。这两个情况中对于特定的向量选择都不是重要的内容:比如,就像有很多不同的向量对可以张成一样的平面,很多不同的向量对都可以被用来描述同样的2-向量。总体上,出现在外代数中的k-向量和线性空间也没有那么不一样,除了:

  1. 它们有“有限的大小”,即它们有一个大小
  2. 它们有朝向(orientation)

我们想通过“朝向”表示什么?一个很好的类比是考虑一条线ll和一个向量vv之间的区别:

DDG4_1

一条线带有方向但是并没有朝向的含义,即没有任何标记表示沿着这条线的某条路是“向前”或者“向后”。相对的,一个向量编码了方向和明确的朝向(即,+v+vv-v是相对的方向);除此之外,一个向量有明确的大小,通过它的长度给出。线和向量的类比刻画了k-向量背后的基本思想:一个k-向量相对于k维线性空间就像向量相对于线。实际上,普通向量给我们提供了第一个外代数中对象的例子:一个1-向量就是一个普通向量。

那么2-向量呢?一个对2-向量相当好的可视化就是把任意两个三维空间R3\mathbb{R}^3中的向量u,vu,v与一个小平行四边形张成的体积联系起来:

DDG4_2

作为简略表达的方式,我们将记这个小平行四边形或者2-向量为uvu \wedge v(这里\wedge符号发“wedge”的音)。和普通向量一样,两个2-向量被认为是“一样的”,如果它们有同样的大小和方向。比如,所以下图中的平行四边形都被小心构造成有同样的面积。所以这三个都描述了同样的2-向量,即使它们被不同的量歪斜和拉伸:

DDG4_3

在这个意义上,我们的平行四边形图画仅仅是2-向量的“漫画”,因为它们每个都只描绘了很多种可能中的一种。然而,由于平行四边形忠实地表示了许多2-型的特征,我们可以使用它们去调研一般的2-型运转的方式。

首先并且是最重要的,我们如何定义一个2-向量的朝向?对于1-向量,想法很简单:这两个(1-)向量+u+uu-u有着相对的朝向,因为它们沿着同一条直线指向相反的方向。同样的,我们可以认为R3\mathbb{R}^3中的2-向量也有两个相对的朝向:“上”或“下”,分别对应平面上的两个可能的单位法线:+N+NN-N。因此我们将区别两个表达式uvu \wedge vvuv \wedge u,记uv=vuu \wedge v = -v \wedge u以表示它们有相反的朝向:

DDG4_4

我们可以通过小平行四边形获取哪些性质呢?对于一个大小,它看起来必须是成立的,那就是

uu=0u \wedge u = 0

由于由两个相同的向量描述的“平行四边形”完全没有任何面积!这个思想很好地对应了思想uv=vuu \wedge v = -v \wedge u,因为当u=vu = v时我们就有uu=uuu \wedge u = -u \wedge u

另一个我们可以注意到的事情是仅仅使用因子aRa \in \mathbb{R}给一个其中向量缩放尺度,将会以同样的大小缩放平行四边形的整个面积:

DDG4_5

我们因此可以通过规则来编码这个性质:

(au)v=a(uv)(au) \wedge v = a(u \wedge v)

因此,当我们缩放第二个向量而不是第一个的时候同样的事情将会发生,即u(av)=a(uv)u \wedge (av) = a(u \wedge v)

当我们加向量的时候平行四边形的性质应该如何解释?下面的图帮助回答了这个问题:

DDG4_6

坐标两个面积的和可以被解释为uv1+uv2u \wedge v_1 + u \wedge v_2;右边的面积是u(v1+v2)u \wedge (v_1 + v_2)。中间这个图解释了这两个量是相等的,因为我们丢失的面积等价于我们获得的面积。换句话说,它看起来就是

uv1+uv2=u(v1+v2)u \wedge v_1 + u \wedge v_2 = u \wedge (v_1 + v_2)

(你能在3D中构造出类似的图吗?)

为了获得最后一个性质,我们必须考虑体积而不是面积了,我们将考虑描绘一些平行六面体:

DDG4_7

就像2-向量一样,我们记这个小体积或者说3-向量为uvwu \wedge v \wedge w。除此之外,我们可以认为这个3-向量是首先由两个向量构造一个小平行四边形,然后沿着第三个向量挤压这个平行四边形得到的:

DDG4_8

注意到顺序在这里似乎真的没有什么影响:我们可以先构造2-向量uvu \wedge v然后沿着ww扩展它,或者我们可以先构建vwv \wedge w然后沿着uu去扩展它。我们可以总结这个观察到的内容通过

(uv)w=u(vw)(u \wedge v) \wedge w = u \wedge (v \wedge w)

这意味着我们可以简单地写成uvwu \wedge v \wedge w并且对于我们想表达的体积不带有任何歧义。然而,当我们调换被用来构造初始平行四边形的的两个向量顺序时将会发生什么?早先我们说过uv=vuu \wedge v = -v \wedge u,即交换向量的顺序会交换2-向量的朝向。因此,我们有(uv)w=(vu)w(u \wedge v) \wedge w = - (v \wedge u) \wedge w,或者就写为

uvw=vuwu \wedge v \wedge w = - v \wedge u \wedge w

好的,但是这个声明在几何上意味着什么呢?这个负号似乎指示这两个小体积除了朝向以外是相同的。但是朝向对于体积来讲意味着什么?对于向量我们有两个朝向(+u+uu-u)对应“向前”和“向后”;对于2-向量我们有两个朝向(uvu \wedge vvuv \wedge u)对应平面“上”和“下”的朝向。同样的,我们可以想象一个小体积也有“向内”或“向外”的朝向——比如,你可以想象边界上的法线指向里面或者指向外面,或者边界的一边被刷成红色并且另一边被刷成蓝色。这两个情况中任何一种都只有两个朝向。稍微更深入一点我们可能注意到,每次我们交换3-向量中一对连续的向量都会切换朝向;如果我们切换另一对那么朝向会切换回来。因此,任意的向量偶置换都保证朝向不变,任意奇置换都调换朝向。换句话说,这些3-向量

uvw=uwv=wuvu \wedge v \wedge w = u \wedge w \wedge v = w \wedge u \wedge v

都有相同的朝向,并且如下3-向量

wvu=vuw=uwvw \wedge v \wedge u = v \wedge u \wedge w = u \wedge w \wedge v

都有相同的朝向,但是这两组的朝向是相反的。

楔形积

我们已经建立了一系列关于小体积使用必须遵守的规则,这提供了楔形积(wedge product)\wedge的定义。特别的,对于任意一组向量u,v,wRnu,v,w \in \mathbb{R}^n和标量a,bRa,b \in \mathbb{R}的我们有

  • 反对称性(Antisymmetry) uv=vuu \wedge v = -v \wedge u
  • 结合律(Associativity) (uv)w=u(vw)(u \wedge v) \wedge w = u \wedge (v \wedge w)
  • 加法分配律(Distributivity over addition) u(v+w)=uv+uwu \wedge (v + w) = u \wedge v + u \wedge w
  • 标量乘法分配律(Distributivity of scalar multiplication) (au)(bv)=ab(uv)(au) \wedge (bv) = ab(u \wedge v)

实际上,这些规则提供了楔形积在任意向量空间中对于任意数量的向量如何表现的正确印象。现在我们放下所有完全给出的正式定义——需要记住的更重要的事情是这些规则是怎么来的。换句话说,“小体积”的行为是如何激励我们在最开始的地方写下这个列表的?如果你可以在你的大脑中获取这些几何图片,就会很自然地得到这些规则。(相反的,如果你不花时间思考楔形积背后的几何,你可能一直都很困惑!)

操作一些具体的例子(即你的作业)应该会帮助对k-向量和楔形积构建一些直觉。稍后我们将在谈到与线性空间的不同中重新回顾楔形积:并不是Rn\mathbb{R}^n中的独立向量,我们将会考虑整个向量场,带到微分形式的思想中。

Hodge星

通常,通过指定补来指定这个集合是容易的。比如,如果你问我,“你喜欢什么食物?”更容易去说“我喜欢除了Natto和Doogh之外所有的食物”,而不是说”我喜欢披萨、苹果、汉堡、寿司……“。在线性代数中,这个思想一个很好例子是正交补(orthogonal complement):如果我想确定一个n维线性空间VV中的k维线性空间WVW \subset V,我们可以提供张成WW的一系列向量w1,,wkw_1, \dots, w_k,或者张成不在WW所有向量的一系列向量w~1,,w~nk\tilde{w}_1, \dots, \tilde{w}_{n-k},即它的正交补。比如,R3\mathbb{R}^3中的一个平面可以被张成它的两个向量指定,或者也可以被一个作为它法线的单个向量指定:

DDG4_9

在外积分中,Hodge星\star(念“star”)提供了一种k-向量的正交补。特别的,如果我们有一个Rn\mathbb{R}^n中的k-向量,那么v\star v将是(n-k)-向量,带有某种“互补的”意思。我们想通过互补表达什么?一个很好的初始例子是R3\mathbb{R}^3中的2-向量:

DDG4_10

就像R3\mathbb{R}^3中的平面可以等价于它的单位法线(它张成了平面的正交补),一个2-向量也可以等价于法线方向的一些向量。但是是哪一个向量呢?不像线性空间,我们需要去对于这个1-向量(uv)\star(u \wedge v)选取一个明确的量和方向。这里没有“最好的”选择;我们需要简单的选择一个惯例并确定它——一个好的类比是右手法则被用来决定叉乘u×vu \times v的方向。对于一个2-向量uvu \wedge v,我们将要求

det(u,v,(uv))>0\det (u, v, \star (u \wedge v)) > 0

即构成uvu \wedge v的两个向量和由它的Hodge星给的第三个向量组成矩阵的行列式应该是正的。实际上,这个规则在(uv)\star(u \wedge v)u×vu \times v指向同个方向这层意义上和一般的右手法则对应。那么大小又是怎么样呢?再一次我们基于行列式给出一个规则——特别的,在两个单位正交向量u1,u2u_1,u_2特殊情况下,我们要求

det(u1,u2,(u1u2))=1\det (u_1, u_2, \star(u_1 \wedge u_2)) = 1

由于Rn\mathbb{R}^n中的向量总是可以被一组正交基解释,这个规则独一无二的确定了任意2-向量的Hodge星。实际上,我们现在真的有(uv)=u×v\star(u \wedge v) = u \times v,即对于两个R3\mathbb{R}^3中应用楔形积的向量,那么那么星等价于取它们的叉乘。(但是实际上它并没有这么简单!)

更一般地,假设e1,,ene_1, \dots, e_n是一组Rn\mathbb{R}^n中的单位正交基。如果我们开始于k个单位正交向量v1,,vkv_1,\dots,v_k,那么Hodge星由以下关系被唯一确定

(u1uk)(u1uk)=e1en(u_1 \wedge \dots \wedge u_k) \wedge \star (u_1 \wedge \dots u_k) = e_1 \wedge \dots \wedge e_n

简短点来说:如果我们对k维“单位体积”和它的补(n-k)维“单位体积”之间进行楔形积,我们将获得一个且只有一个Rn\mathbb{R}^n上的n维单位体积。

一个重要的特殊情况(尤其对于考虑曲面的情况)是R2\mathbb{R}^2中1-向量的Hodge星,即平面上普通向量的Hodge星。这里有一个简单地可视化一下:如果我们有一个1-向量uu,那么它们的Hodge星u\star u将是一个(n-k)-向量。但是由于nk=21=1n-k=2-1=1,我们就会得到另一个和uu正交的1-向量。比如,如果uu指向地图上的“东”,那么u\star u将指向“北”:

DDG4_11

当我们继续使用Hodge星,我们得到一个指向西的向量,然后是南,然后又一次回到东。换句话说,2D中的Hodge星就是逆时针方向上四分之一的旋转。

最后,我们可以考虑Hodge星和楔形积之间的交互。比如,对于两个R3\mathbb{R}^3中的1-向量u,vu,v,由于先将两个向量加起来再转90度与先分别转90度再起来没有什么区别,我们有

(u+v)=u+v\star (u + v) = \star u + \star v

更一般地,同样的等式对于任意维度中的任意两个k-向量都成立,即Hodge星的加法分配律(你可以画其它的图让这个想法更清晰吗?)

Rn\mathbb{R}^n中楔形积和星的例子

为了让这些想法更直观一点,让我们考虑一些直观的例子。这些例子不意味要特别“深入”,而是仅仅示范一下使用k-向量时候的基本操作。(你将在作业中看到一些更有意思的例子!)这里我们将(1-)向量vv使用一组正交基e1,,ene_1, \dots, e_n表示。比如,在2D中v:=e1+e2v \coloneqq e_1 + e_2是一个与水平线有45度夹角的长度为2\sqrt{2}的向量。

例1u:=e1+2e2u \coloneqq e_1 + 2e_2v:=e1+e2e3v \coloneqq e_1 + e_2 - e_3都是R3\mathbb{R}^3中的1-向量。然后它们之间的楔形积被给定为

uv=(e1+2e2)(e1+e2e3)=e1(e1+e2e3)+2e2(e1+e2e3)=e1e10+e1e2e1e3+2e2e1+2e2e202e2e3=e1e22e1e2e1e32e2e3=e1e2e1e32e2e3\begin{aligned} u \wedge v &= (e_1 + 2e_2) \wedge (e_1 + e_2 - e_3) \\ &= e_1 \wedge(e_1 + e_2 - e_3) + 2e_2(e_1 + e_2 - e_3) \\ &= \cancel{e_1 \wedge e_1}^0 + e_1 \wedge e_2 - e_1 \wedge e_3 + 2e_2 \wedge e_1 + \cancel{2e_2 \wedge e_2}^0 - 2e_2 \wedge e_3 \\ &= e_1 \wedge e_2 - 2e_1 \wedge e_2 - e_1 \wedge e_3 - 2e_2 \wedge e_3 \\ &= -e_1 \wedge e_2 - e_1 \wedge e_3 - 2e_2 \wedge e_3 \end{aligned}

这有两个东西需要在计算中被注意到。首先,任意eieie_i \wedge e_i都为0。你还记得为什么吗?本质上是因为两个同样的向量张成的平行四边形面积为0。同样需要注意到的一点是我们将2e2e12e_2 \wedge e_1替换为了2e1e2- 2e_1 \wedge e_2。为什么我们这么做呢?因为e1e2e_1 \wedge e_2e2e1e_2 \wedge e_1描述了同样一个2-向量但是方向相对。

例2w:=e1e2e1e32e2e3w \coloneqq -e_1 \wedge e_2 - e_1 \wedge e_3 - 2e_2 \wedge e_3是从上一个例子得来的2-向量。它的Hodge星为

w=(e1e2e1e32e2e3)=(e1e2)(e1e3)2(e2e3)=e3(e2)2(e1)=2e1+e2e3\begin{aligned} \star w &= \star(-e_1 \wedge e_2 - e_1 \wedge e_3 - 2e_2 \wedge e_3) \\ &= -\star(e_1 \wedge e_2) - \star(e_1 \wedge e_3) - 2\star(e_2 \wedge e_3) \\ &= - e_3 -(-e_2) - 2(e_1) \\ &= -2 e_1 + e_2 - e_3 \end{aligned}

我们这里做的主要的事情是使用右手法则去决定两个基向量的楔形乘结果指向哪个方向。比如,就像在使用叉乘的时候有e1×e2=e3e_1 \times e_2 = e_3,当使用楔形积和Hodge星的时候我们也有(e1e2)=e3\star(e_1 \wedge e_2) = e_3。关于这些关系更相机的讨论,和关于外代数的基础,将在后文中继续说明。

例3u:=e1+e2e3u \coloneqq e_1 + e_2 e_3v:=e1+2e2+3e3v \coloneqq e_1 + 2e_2 + 3e_3w:=e1e3w \coloneqq e_1 - e_3都是R3\mathbb{R}^3中的1-向量,并且假设我们想要计算uvwu \wedge v \wedge w。由于楔形积有结合律,我们可以随意通过计算uvu \wedge v或者vwv \wedge w开始,然后将这个结果与最后剩下的一个1-向量进行楔形积计算。比如,我们有

vw=(e1+2e2+3e3)(e1e3)=e1e10e1e3+2e2e12e2e3+3e3e13e3e30=2e1e24e1e32e2e3\begin{aligned} v \wedge w &= (e_1 + 2e_2 + 3e_3) \wedge (e_1 - e_3) \\ &= \cancel{e_1 \wedge e_1}^0 - e_1 \wedge e_3 + 2e_2 \wedge e_1 - 2e_2 \wedge e_3 + 3e_3 \wedge e_1 - 3\cancel{e_3 \wedge e_3}^0 \\ &= -2 e_1 \wedge e_2 - 4e_1 \wedge e_3 - 2e_2 \wedge e_3 \end{aligned}

uu进行楔形积然后得到

u(vw)=(e1+e2+e3)(2e1e24e1e32e2e3)=2e1e2e34e2e1e32e3e1e2=2e1e2e3+4e1e2e32e1e2e3=0\begin{aligned} u \wedge (v \wedge w) &= (e_1 + e_2 + e_3) \wedge (-2 e_1 \wedge e_2 - 4 e_1 \wedge e_3 - 2 e_2 \wedge e_3) \\ &= -2 e_1 \wedge e_2 \wedge e_3 - 4 e_2 \wedge e_1 \wedge e_3 - 2 e_3 \wedge e_1 \wedge e_2 \\ &= -2 e_1 \wedge e_2 \wedge e_3 + 4 e_1 \wedge e_2 \wedge e_3 - 2 e_1 \wedge e_2 \wedge e_3 \\ &= 0 \end{aligned}

在第二个等号的时候,我们省略了很多工作,因为注意到任意一个包含多个同样基1-向量的项(例如,e1e1e2e_1 \wedge e_1 \wedge e_2)体积都为0,因为对应的小平行四边形的两条边是平行的。因此,我们仅仅写下了剩下的三个包含所有三个基的项(比如,e2e3e1e_2 \wedge e_3 \wedge e_1)。通过反复交换基对的顺序,我们可以将这个3-向量转为约定的形式(比如,e2e3e1=e2e1e3=e1e2e3e_2 \wedge e_3 \wedge e_1 = -e_2 \wedge e_1 \wedge e_3 = e_1 \wedge e_2 \wedge e_3),同时我们将有几个单位3-向量e1e2e3e_1 \wedge e_2 \wedge e_3使用一些标量放缩后的副本。这个情况中,所有项的大小加起来为0。这在几何上表示什么呢?它意味着我们原始的1-向量uuvvww并不是线性独立的,即它们描述了一个体积为0的“平坦的”3-向量。

向量和1-型

现在我们对于“小体积”的操作来说有了一个基本语言,我们继续我们关于外微积分讲述的第二部分。

此时我们给出一个叫做vv的向量:

DDG4_12

这个vv编码了什么信息?一个检查向量的方法是确定它沿着给定方向的大小或者长度。比如,我们可以随意选择一些方向α\alpha,并记录vv投影到α\alpha方向上的阴影长度:

DDG4_13

这个结果是一个简单的数,我们可以记为α(v)\alpha(v)。这个符号是为了强调α\alpha是一个函数的思想:特别的,它是一个将一个向量变成标量的线性函数。任何一个这样的函数都被称为一个1-型(1-form)(同时也被称为协向量)。

当然,从这个图中可以清晰地看到所有1-型构成的空间看起来非常像所有向量构成的空间:我们必须选择一些沿其测量的方向。但是通常有一个好理由去区别向量和1-型——这个区别和线性代数中列向量和行向量的区别并没有什么不同。比如,虽然列向量和行向量都表示“向量”,我们仅仅允许我们使用行向量去乘列向量:

[α1αn][v1vn]\begin{bmatrix} \alpha_1 & \cdots & \alpha_n \end{bmatrix} \begin{bmatrix} v^1 \\ \vdots \\ v^n \end{bmatrix}

如果我们想要去乘两个列向量,我们首先需要取其中一个的转置将其变为行向量:

vTv=[v1vn][v1vn]v^Tv = \begin{bmatrix} v^1 & \cdots & v^n \end{bmatrix} \begin{bmatrix} v^1 \\ \vdots \\ v^n \end{bmatrix}

使用同样的方法处理向量和1-型,除此之外我们有两个不同的操作:sharp\sharp),将1-型转为向量;flat\flat),将向量转为1-型。比如,写成v(v)v^{\flat}(v)α(α)\alpha(\alpha^{\sharp})是完全有效的,因为不管那种情况都是将一个向量喂给一个1-型。操作\sharp\flat被称为音符同构(musical isomorphisms)。

所有的这些1-型向量对比的操作(或者甚至行向量和列向量)看起来都像做了很多无关紧要的事情。确实,在像平面的平坦空间中,这两者的区别看起来都是表面上的。然而,在弯曲的空间中,向量和1-型有一个重要的区别——特别的,我们想要去确认我们正在正确的空间中进行测量。比如,假设我们想要测量向量vv沿着另一个向量uu方向的长度。记住正切向量被从平面到R3\mathbb{R}^3中某个曲面的映射f:R2MR3f : \mathbb{R}^2 \supset M \rightarrow \mathbb{R}^3放缩是重要的。因此,操作\sharp\flat应该满足如下关系

u(v)=g(u,v)u^{\flat}(v) = \mathsf{g}(u,v)

其中g\mathsf{g}是由ff引导的度量。我们真正测量的方式是这些东西在“伸长”空间中的表现而不是在初始域MM中的。

坐标系

到目前为止我们有意地避免使用坐标系——换句话说,我们努力在没有任何特定坐标系统x1,,xnx_1, \dots, x_n依赖去解释几何关系。为什么拒绝坐标系?有几个原因通常被引用(人们可能会咕哝一些关于“不变性”的东西),但是真正的原因十分简单,没有坐标系的表达式更短、更美妙的并且更容易从中提取真实的含义。这种方法在几何处理中也特别有价值,因为很多没有不依赖坐标系的表达式都很自然地转变为了网格上的基本操作。

但是坐标系在很多情况中仍然十分有价值。有时有些特殊的坐标基可以相当程度地简化分析——比如,回想我们关于主曲率方向的讨论。其它不使用坐标系的时候有一些的确不容易理解的方法去证明一些东西。那么现在我们将打磨一些在坐标系中关于外微积分的基本事实;今天的最后我们将保存我们发现的所有不依赖坐标系的表达式并且礼貌地忘记坐标系曾经存在过。

DDG4_14

让我们设置我们的坐标系统。为了一些后面将会逐渐清晰的原因,我们将使用符号x1,,xn\frac{\partial}{\partial x^1}, \dots, \frac{\partial}{\partial x^n}表示Rn\mathbb{R}^n中向量的正交基,并且使用dx1,,dxndx^1, \dots, dx^n表示对应的1-型基。换句话说,任何向量都可以写成线性形式

v=v1x1++vnxnv = v^1 \frac{\partial}{\partial x^1} + \cdots + v^n \frac{\partial}{\partial x^n}

并且任意1-型也可以写成线性形式

α=α1dx1++αndxn\alpha = \alpha_1 dx^1 + \dots + \alpha_n dx^n

为了保证你在这个时候神智还是清醒的,你应该完全忽略符号xi\frac{\partial}{\partial x^i}dxidx^i看起来想导数的事实——就像上面描述的一样,它们仅仅是单位长度正交基的集合。这两个基dxidx^ixi\frac{\partial}{\partial x^i}通常被称为对偶基,这意味着它们满足关系

dxi(xi)=δji={1,i=j0,otherwisedx^i \left( \frac{\partial}{\partial x^i} \right) = \delta^i_j = \begin{cases} 1,& i=j \\ 0,& \text{otherwise} \end{cases}

这个关系精确的获取了我们在寻找的特性:向量xi\frac{\partial}{\partial x^i}在1-型dxjdx^j上“投影阴影”,当且仅当这两个基指向同一个方向。使用这个关系,我们可以得到

α(v)=iαidxi(jvjxj)=iαivi\alpha(v) = \sum_i \alpha_i dx^i \left(\sum_j v^j \frac{\partial}{\partial x^j}\right) = \sum_i \alpha_i v^i

即这对向量和1-型看起来就像标准欧式内积。

符号

值得花一点时间去说明一下我们的符号。首先,向量和向量场转变为使用罗马字母表结尾的几个字母表示(分别是uuvvww或者XXYYZZ),1-型使用希腊字母表中开头的几个小写字母表示(α\alphaβ\betaγ\gamma等等)。虽然一个人通常会从语言上区分“向量”(意味这一个单独的箭头)和“向量场”(意味着一个和空间内所有点粘合在一起的箭头),有一个不幸的使用使用“1-型”项去表示两个内容的先例——很遗憾,从来没有人说过“1-型场”!标量场或者0-型通常使用罗马字母表中间的字母(f,g,hf,g,h)或者接近结尾的希腊小写字母(ϕ,ψ\phi,\psi等)。

你可能注意到了我们特别指定了索引的位置:向量系数viv^i的索引在上面,1-型系数αi\alpha_i的索引在下面。类似地,向量基xi\frac{\partial}{\partial x^i}在下面有索引(它们在分母中),1-型基dxidx^i在上面有索引。看起来这么神经质的理由是使用爱因斯坦累加符号(Einstein summation notation)的优点:任何时间一对变量都被同样的字母ii同时在“上”和“下”索引,我们将它解释为在所有可能的ii值上的和:

αivi=iαivi\alpha_i v^i = \sum_i \alpha_i v^i

索引的位置对音符同构\sharp\flat提供了有趣的记忆帮助。在音符中\sharp表示音高提高半阶,对应于目标的向上运动。比如,下面的两个音符都对于同样的音高“C”:

DDG4_15

因此,为了从1-型到向量我们提高了索引。比如,在平坦(flat)空间中我们不必担心度量并且1-型

α=α1dx1++αndxn\alpha = \alpha_1 dx^1 + \cdots + \alpha_n dx^n

变成向量

α=α1x1++αnxn\alpha ^{\sharp} = \alpha^1 \frac{\partial}{\partial x^1} + \cdots + \alpha^n \frac{\partial}{\partial x^n}

类似地,\flat表示了音高的下降和在目标上向下的运动:

DDG4_16

那么所以\flat下降了向量的索引给我们一个1-型——即

v=v1x1++vnxnv = v^1 \frac{\partial}{\partial x^1} + \cdots + v^n \frac{\partial}{\partial x^n}

变成

v=v1dx1++vndxnv^{\flat} = v_1dx^1 + \cdots + v_ndx^n

微分形式和楔形积

在上一个部分我们通过投影到不同到坐标轴上测量了向量长度;测量过程有效地定义了我们称为1-型的东西。但是如果我们有一个向量的集合会发生什么呢?比如,考虑R3\mathbb{R}^3中一对向量u,vu,v

DDG4_17

我们可以把这些向量看作定义一个平行四边形,像我们对单个的向量所做的那样,我们可以测量这个平行四边形通过测量他投影到某个平面上的“阴影”大小:

DDG4_18

比如,假设我们表示这个平面通过一对单位正交1-型α\alphaβ\beta。然后这些投影向量有组分

u=(α(u),β(u))Tv=(α(v),β(v))T\begin{aligned} u' &= (\alpha(u), \beta(u))^T \\ v' &= (\alpha(v), \beta(v))^T \end{aligned}

因此这个(带符号的)投影面积由叉乘给出

u×v=α(u)β(v)α(v)β(u)u' \times v' = \alpha(u)\beta(v) - \alpha(v)\beta(u)

由于我们在未来想要测量很多投影的体积,我们给这个操作一个特别的名字“αβ\alpha \wedge \beta”:

αβ(u,v)=α(u)β(v)α(v)β(u)\alpha \wedge \beta (u,v) = \alpha(u)\beta(v) - \alpha(v)\beta(u)

可能你已经猜到了,αβ\alpha \wedge \beta被我们称为2-型。根本上我们将符号\wedge解释为一个被称为楔形积(wedge product)的在微分形式上的二元操作符。楔形积的代数性质直接继承带符号体积遵循的方式。比如,注意到如果我们逆转了轴α\alphaβ\beta的顺序那么面积的符号也会改变。换句话说,楔形积是反对称的(antisymmetric):

αβ=βα\alpha \wedge \beta = - \beta \wedge \alpha

反对称的一个重要结果是任何一个1-型和它自己的楔形积为0:

αα=αααα=0\begin{aligned} \alpha \wedge \alpha &= - \alpha \wedge \alpha \\ \Rightarrow \alpha \wedge \alpha &= 0 \end{aligned}

但是不要让这个声明变成纯粹的代数事实!从几何上来看,为什么这这个1-型的楔形积为0?十分简单的因为投影到了一个面积为0的平面上!(即,这个面由α\alphaα\alpha张成。)

接下来,考虑投影到分别由α,β\alpha, \betaα,γ\alpha, \gamma张成的不同平面上。投影面积的和可以被写为

αβ(u,v)+αγ(u,v)=α(u)β(v)α(v)β(u)+α(u)γ(v)α(v)β(u)=α(u)(β(v)+γ(v))α(v)(β(u)+γ(u))=(α(β+γ))(u,v)\begin{aligned} \alpha \wedge \beta (u,v) + \alpha \wedge \gamma (u,v) &= \alpha(u)\beta(v) - \alpha(v)\beta(u) + \alpha(u)\gamma(v) - \alpha(v)\beta(u) \\ &= \alpha(u)(\beta(v) + \gamma(v)) - \alpha(v)(\beta(u) + \gamma(u)) \\ &= (\alpha \wedge (\beta + \gamma))(u,v) \end{aligned}

或者换句话说,在++之上\wedge有分配律:

α(β+γ)=αβ+αγ\alpha \wedge (\beta + \gamma) = \alpha \wedge \beta + \alpha \wedge \gamma

最后,考虑三个向量u,v,wu,v,w张成在R3\mathbb{R}^3中的体积:

DDG4_19

我们将考虑这个体积在三个1-型α,β,γ\alpha, \beta, \gamma张成的体积上的投影,但是从一个体积到另一个体积的投影很难可视化!现在我们可以仅仅欺骗自己并想象α=dx1\alpha = dx^1β=dx2\beta = dx^2γ=dx3\gamma = dx^3,因此内心对于这个投影体积的图像看起来就像上面描绘的一样。一种写下投影体积的方法是投影后向量u,v,wu',v',w'的行列式:

αβγ(u,v,w):=det([uvw])=det([α(u)α(v)α(w)β(u)β(v)β(w)γ(u)γ(v)γ(w)])\alpha \wedge \beta \wedge \gamma (u,v,w) \coloneqq \det(\begin{bmatrix} u' & v' & w' \end{bmatrix}) = \det \left( \begin{bmatrix} \alpha(u) & \alpha(v) & \alpha(w) \\ \beta(u) & \beta(v) & \beta(w) \\ \gamma(u) & \gamma(v) & \gamma(w) \end{bmatrix} \right)

(你注意到了左上角2×22 \times 2子矩阵的行列式也给了我们两个1-型的楔形积吗?)或者说,我们可以将体积解释成一个面的面积乘上剩下边的长度:

DDG4_20

用这个方法考虑问题,我们可能构造楔形积的使用三重积(triple product)的另一个定义:

αβγ=(u×v)w=(v×w)u=(w×u)v\begin{aligned} \alpha \wedge \beta \wedge \gamma &= (u' \times v') \cdot w' \\ &= (v' \times w') \cdot u' \\ &= (w' \times u') \cdot v' \end{aligned}

这里有个重要的事情需要注意的是顺序是不重要的——我们总是会得到同样的体积,无论我们选择的是哪一个面(虽然我们仍然必须注意一下符号)。一个更代数的表示方式是楔形积具有结合律:

(αβ)γ=α(βγ)(\alpha \wedge \beta) \wedge \gamma = \alpha \wedge (\beta \wedge \gamma)

总而言之,k个1-型的楔形积给我们一个k-型,它测量了k个向量集合的投影体积。作为结论,楔形积对于任意k-型α\alpha、l-型β\beta和m-型γ\gamma有如下性质:

  • 反对称(Antisymmetry): αβ=(1)klβα\alpha \wedge \beta = (-1)^{kl}\beta \wedge \alpha
  • 结合律(Associativity): α(βγ)=(αβ)γ\alpha \wedge (\beta \wedge \gamma) = (\alpha \wedge \beta) \wedge \gamma

并且在β\betaγ\gamma有相同度的情况下(即 m=lm = l)我们有

  • 分配律(Distributivity): α(β+γ)=αβ+αγ\alpha \wedge (\beta + \gamma) = \alpha \wedge \beta + \alpha \wedge \gamma

一个特殊的现实是k-型在它的参数中是反对称的——换句话说,交换两个“输入”向量的相对顺序仅仅会改变这个体积的符号。比如,如果α\alpha是一个2-型那么有α(u,v)=α(v,u)\alpha(u,v) = -\alpha(v,u)。一般的,一个偶数的交换会保证符号不变;奇数的交换会变号。(一个方便你自己的方法是考虑当你改变矩阵的两列时发生在它行列式上的事情。)最后,你将常常听到人们说k-型是“多线性的”——它意味着当你保证除了一个向量以外的其它向量都固定不变时,那么k-型的表现就像线性映射。几何上它带来这样的感觉:k-型是从k个长度的线性测量构建的(本质上就是说k个不同的点积)。

向量值形式

到这个时候我们仅仅考虑了实值的k-型——比如,α(u)\alpha(u)表示向量uu沿着方向α\alpha的长度,可以被表示为一个实数。然而,一般的,一个k-型可以“吐出”所有的种类的不同值。比如,我们可能想要去处理由复数(C\mathbb{C})或者一些更大向量空间(即Rn\mathbb{R}^n)中向量表示的量。

一个向量值k-型很好的例子是我们的映射f:MR3f: M \rightarrow \mathbb{R}^3,它表示一个曲面的几何。在外微积分的语言中,ff是一个R3\mathbb{R}^3值的0-型:在MM的每一个点pp处,它取0个向量作为输入然后得到一个R3\mathbb{R}^3中的点f(p)f(p)作为输出。类似地,微分dfdf是一个R3\mathbb{R}^3值的1-型:它取1个向量(平面上的某个方向uu)并且将它映射到R3\mathbb{R}^3中的一个值df(u)df(u)(表示uu的“伸长”版本)。

更一般地,如果EE是一个向量空间那么一个EE值的k-型(E-valued k-form)取k个向量得到EE中的一个值。然而,我们在这里必须小心一点。比如,考虑我们对于2-型的定义:

αβ(u,v):=α(u)β(v)α(v)β(u)\alpha \wedge \beta(u,v) \coloneqq \alpha(u)\beta(v) - \alpha(v)\beta(u)

如果α\alphaβ\beta都是EE值1-型,那么α(u)\alpha(u)β(v)\beta(v)都是EE中的向量。但是如果你将两个向量相乘呢?一般会有一个不太好的答案:并不是每一个向量空间都带有一个自然的乘法符号。

然而,有很多空间都带有已经定义好的乘法——比如,两个复数a+bia+bic+dic+di的积为(acbd)+(ad+bc)i(ac - bd)+(ad+bc)i,所以我们没有任何问题的明确计算了上面的表达式。在其它的情况下我们必须明确说明我们想要使用哪个乘积——比如在R3\mathbb{R}^3中我们可以使用叉乘×\times,在这个情况下一个R3\mathbb{R}^3值2-型看起来像:

αβ(u,v)=α(u)β(v)α(v)β(u)\alpha \wedge \beta(u,v) = \alpha(u) \beta(v) - \alpha(v)\beta(u)

Hodge对偶性

DDG4_21

在前面我们看到了k-型测量(带符号的)k维平行六面体的投影体积。比如,就像上面描绘的一样,一个2-型测量投影到一个平面上的平行四边形的面积。但是这里观察到了一些好东西:R3\mathbb{R}^3中的一个平面可以被一对基方向(α,β)(\alpha, \beta)或者被一个法线方向γ\gamma表示。因此除了测量投影面积,我们还可以测量平行四边形(u,v)(u,v)的法线和平面法线的一致程度。换句话说,我们可以寻找这样的一个1-型γ\gamma

γ(u×v)=αβ(u,v)\gamma(u \times v) = \alpha \wedge \beta (u,v)

这个观察刻画了Hodge对偶(Hodge duality)背后的想法:一个n维空间中的k维体积可以被k个方向或者(n-k)个方向的补集确定。那么就应该在k-型和(n-k)-型之间存在某种自然的对应。

微分形式和Hodge星

让我们更深入的考察一下这个想法,通过对0-型、1-型、2-型等等的空间构造一个明确的基——为了保证一切可控我们将在R3\mathbb{R}^3中进行操作并且有标准坐标系统(x1,x2,x3)(x^1, x^2, x^3)。0-型是简单的:任意一个0-型都可以被当作一些函数乘上常数0-型,我们将它记为“1”。我们早就看到过了1-型基dx1,dx2,dx3dx^1, dx^2, dx^3,它看起来就像向量空间中的标准正交基:

DDG4_22

那么对于2-型呢?考虑任意一个2-型都可以被解释成两个1-型的楔形积:

αβ=(αidxi)(βjdxj)=αiβjdxidxj\alpha \wedge \beta = (\alpha_i dx^i) \wedge (\beta_j dx^j) = \alpha_i \beta_j dx^i \wedge dx^j

换句话说,任意一个2-型看起来都像一个基2-型(dxidxj)(dx^i \wedge dx^j)的某种线性结合。那么这里有多少个基呢?乍一看好像有很多可能:

dx1dx1dx1dx2dx1dx3dx2dx1dx2dx2dx2dx3dx3dx1dx3dx2dx3dx3\begin{matrix} dx^1 \wedge dx^1 & dx^1 \wedge dx^2 & dx^1 \wedge dx^3 \\ dx^2 \wedge dx^1 & dx^2 \wedge dx^2 & dx^2 \wedge dx^3 \\ dx^3 \wedge dx^1 & dx^3 \wedge dx^2 & dx^3 \wedge dx^3 \end{matrix}

但是当然并不是这所有的情况都不同:记得楔形积是反对称的(αβ=βα\alpha \wedge \beta = -\beta \wedge \alpha),并且它有一个很重要的推导αα=0\alpha \wedge \alpha = 0。所以我们的表格看起来更像这样:

0dx1dx2dx3dx1dx1dx20dx2dx3dx3dx1dx2dx30\begin{matrix} 0 & dx^1 \wedge dx^2 & -dx^3 \wedge dx^1 \\ - dx^1 \wedge dx^2 & 0 & dx^2 \wedge dx^3 \\ dx^3 \wedge dx^1 & - dx^2 \wedge dx^3 & 0 \end{matrix}

然后我们就只剩下三个不同的基:dx2dx3dx^2 \wedge dx^3dx3dx1dx^3 \wedge dx^1dx1dx2dx^1 \wedge dx^2。从几何上来说,所有我们所说的这些都是在说R3\mathbb{R}^3中有三个线性独立的“平面”:

DDG4_23

那么对于3-型基呢?我们确定至少有一个:

dx1dx2dx3dx^1 \wedge dx^2 \wedge dx^3

还有其它的吗?\wedge的反对称性质再一次发挥作用:很多隐藏的基仅仅是第一个的某种排列:

dx2dx3dx1=dx2dx1dx3=dx1dx2dx3dx^2 \wedge dx^3 \wedge dx^1 = - dx^2 \wedge dx^1 \wedge dx^3 = dx^1 \wedge dx^2 \wedge dx^3

剩下的消失了是因为出现了重复的1-型:

dx2dx1dx2=dx2dx2dx1=0dx1=0dx^2 \wedge dx^1 \wedge dx^2 = -dx^2 \wedge dx^2 \wedge dx^1 = 0 \wedge dx^1 = 0

一般情况下只有一个基n-型dx1dxndx^1 \wedge \cdots \wedge dx^n,它测量一个平行六面体的一般欧式体积:

DDG4_24

最后,R3\mathbb{R}^3中的4-型又会怎么样呢?此时可能非常容易就能看出一个都没有,因为我们需要从总共只有3个的集合里面选择4个不同的1-型基。从几何上来说:R3\mathbb{R}^3中不包含任何一个4维的体积!(或者任何更高维度的体积,都是这样)R3\mathbb{R}^3中k-型基完整的清单为

  • 0-型基: 1
  • 1-型基: dx1,dx2,dx3dx^1, dx^2, dx^3
  • 2-型基: dx2dx3,dx3dx1,dx1dx2dx^2 \wedge dx^3, dx^3 \wedge dx^1, dx^1 \wedge dx^2
  • 3-型基: dx1dx2dx3dx^1 \wedge dx^2 \wedge dx^3

它意味着基的个数是1,3,3,11,3,3,1。实际上你可以从这里看到更一般的模式:在n维空间中k-型基的数量由二项式系数给出

(nk)=n!k!(nk)!\begin{pmatrix} n \\ k \end{pmatrix} = \frac{n!}{k!(n-k)!}

(即“n中选k个”),由于我们想要获得k个不同的1-型基并且不关心顺序。这里有一个重要的恒等式就是

(nk)=(nnk)\begin{pmatrix} n \\ k \end{pmatrix} = \begin{pmatrix} n \\ n-k \end{pmatrix}

和之前预料的一样,我们在n-型和(n-k)-型之间有一个一对一的关系。特别的,我们可以确定任何一个k-型和它的补。比如在R3\mathbb{R}^3上我们有

1=dx1dx2dx3dx1=dx2dx3dx2=dx3dx1dx3=dx1dx2(dx1dx2)=dx3dx2dx3=dx1(dx3dx1)=dx2(dx1dx2dx3)=1\begin{aligned} \star 1 &= dx^1 \wedge dx^2 \wedge dx^3 \\ \star dx^1 &= dx^2 \wedge dx^3 \\ \star dx^2 &= dx^3 \wedge dx^1 \\ \star dx^3 &= dx^1 \wedge dx^2 \\ \star(dx^1 \wedge dx^2) &= dx^3 \\ \star{dx^2 \wedge dx^3} &= dx^1 \\ \star(dx^3 \wedge dx^1) &= dx^2 \\ \star(dx^1 \wedge dx^2 \wedge dx^3) &= 1 \end{aligned}

这个映射\star被称为Hodge星,并且刻画了平面可以被它的法线确定想法。更一般地,任何一个平坦的(flat)空间我们都有

(dxi1dxi2dxik)=dxik+1dxii+2dxin\star(dx^{i_1} \wedge dx^{i_2} \wedge \cdots \wedge dx^{i_k}) = dx^{i_{k+1}} \wedge dx^{i_{i+2}} \wedge \cdots \wedge dx^{i_n}

其中(i1,i2,,in)(i_1, i_2, \dots, i_n)(1,2,,n)(1,2, \dots, n)的任意一个偶置换。

体积形式

DDG4_25

目前我们讨论了测量像Rn\mathbb{R}^n的平坦空间中的体积。但是现在我们如何测量弯曲空间中的呢?让我们考虑一下我们经常使用的曲面的例子f:R2MR3f:\mathbb{R}^2 \supset M \rightarrow \mathbb{R}^3。如果我们考虑一个通过一对正交单位向量u,vR2u,v \in \mathbb{R}^2张成曲面的区域,很明确的是我们不想要面积dx1dx2(u,v)=1dx^1 \wedge dx^2(u,v) = 1,由于它仅仅给我们一个平面上的面积。我们真正想要的是在它被映射ff“伸长”之后的区域面积。换句话说,我们想要R3\mathbb{R}^3中对应的平行四边形的大小,由向量df(u)df(u)df(v)df(v)张成。

因此我们可以测量在我们的曲面上任意一个小区域的面积,通过度量的行列式简单的缩放平面中的体积,即通过将2-型det(g)dx1dx2\sqrt{\det(\mathsf{g})}dx^1 \wedge dx^2应用到张成感兴趣区域的两个向量u,vu,v上。更一般地,n-型

ω:=det(g)dx1dxn\omega \coloneqq \sqrt{\det(\mathsf{g})} dx^1 \wedge \cdots \wedge dx^n

被称为体积形式(volume form),在我们讨论积分的时候将扮演一个关键角色。

在弯曲的空间上,我们也使用Hodg星去刻画体积被拉伸的现实。比如,它非常合理地使用一个体积形式ω\omega去确定一个函数11,由于ω\omega真正表示弯曲空间中的单位体积:

1=ω\star 1 = \omega

在k-型上的内积

更一般地,我们会要求任意一个由一对k-型α\alphaβ\beta构造的n-型满足

αβ=α,βω\alpha \wedge \star \beta = \langle \langle \alpha, \beta \rangle \rangle \omega

其中α,β=iαiβi\langle \langle \alpha, \beta \rangle \rangle = \sum_i \alpha_i \beta_i是k-型上的内积。实际上,一些作者将这个关系作为楔形积的定义——换句话说,他们开始于一些事情类似于“楔形积是一个在k-型上特定的二元操作为αβ=α,βω\alpha \wedge \star \beta = \langle \langle \alpha, \beta \rangle \rangle \omega”,并且从这里推导我们前面建立的所有性质。这样的操作有一些抽象,它容易让人忘掉楔形积有异常明确的几何意义。(这肯定不是当Hermann Grassmann发明外代数时思考它的方式!)然而,实际上,这个恒等式是非常有用的。比如,如果uuvvR3\mathbb{R}^3中的向量,那么我们可以写出

uv=(uv)u \cdot v = \star (u^{\flat} \wedge \star v^{\flat})

即在一个平坦的平面上我们可以通过楔形积表示通常的欧式内积。这个恒等式是正确的有明确的几何意义吗?考虑这个恒等式说的内容:Hodge星将vv转变为一个vv是法线的平面。我们通过沿着方向uu去挤压这个平面构造了一个体积。如果uuvv几乎是平行的那么这个体积将会相当大;如果它们是几乎正交的那么体积会十分小。(但是确定我们真正正确的获取到了它的信息,你应该在坐标系中尝试验证这个恒等式!)类似的,我们可以解释欧式叉乘就像

u×v=((uv))u \times v = (\star(u^{\flat} \wedge v^{\flat}))^{\sharp}

即我们可以创造一个有法线u×vu \times v的平面,通过将两个基向量uvu \wedge v进行楔形积。(在次说明,在坐标系中证实这个东西可以帮助消除你的疑虑。)

微分算子

现在开始我们要进入外微积分(exterior calculus)阶段了。我们到目前为止一直盯着的对象——k-型、楔形积\wedge和Hodge星\star——确切地描述了一个更一般的被称为外代数(exterior algebra)的结构。为了从代数转入微积分,我们同样需要知道量是如何变化的,正如如何测量大小一样。换句话说,我们需要一些针对微分(differentiation)和积分(integration)的工具。让我们从微分开始。

在我们对于曲面的讨论里面我们简单看了一下曲面f:MR3f:M \rightarrow \mathbb{R}^3的微分dfdf,这告诉我们一些正切向量从域MMR3\mathbb{R}^3中弯曲的曲面被“拉伸”的方式。更一般地,dd被称为外导数(exterior derivative)并且对于构建外微积分中的很多微分算子都有重要地位。基本思想是dd告诉我们k-型沿着所有可能的方向变化有多快。但是现在它具体是如何定义的呢?到目前我们只看到了高级的几何描述。

散度(Div)、梯度(Grad)和旋度(Curl)

在进入外导数部分之前,值得回顾一下基本的向量导数散度、梯度和旋度在做什么,并且更重要的是它们长什么样。这里的关键角色是算子\nabla(发音为“nabla”),它可以被写为坐标系中所有偏导组成的向量:

:=(x1,,xn)T\nabla \coloneqq \left( \frac{\partial}{\partial x^1}, \cdots, \frac{\partial}{\partial x^n} \right)^T

比如,将\nabla应用到一个标量函数ϕ:RnR\phi: \mathbb{R}^n \rightarrow \mathbb{R}上得到梯度(gradient)

ϕ=(fx1,,fxn)T\nabla \phi = \left( \frac{\partial f}{\partial x^1}, \cdots, \frac{\partial f}{\partial x^n} \right)^T

它可以被可视化为在一些地方上升速度最快的方向:

DDG4_26

我们可以将\nabla使用两种不同的方法应用到向量场XX上。点乘给我们带来了散度(divergence)

X=X1x1++Xnxn\nabla \cdot X = \frac{\partial X^1}{\partial x^1} + \cdots + \frac{\partial X^n}{\partial x^n}

它在测量向量场“伸展”得有多快,并且在R3\mathbb{R}^3上的叉乘给我们带来了旋度(curl)

×X=(X3x2X2x3,X1x3X3x1,X2x1X1x2)\nabla \times X = \left( \frac{\partial X^3}{\partial x^2} - \frac{\partial X^2}{\partial x^3}, \frac{\partial X^1}{\partial x^3} - \frac{\partial X^3}{\partial x^1}, \frac{\partial X^2}{\partial x^1} - \frac{\partial X^1}{\partial x^2} \right)

它表示一个向量场有多少在“围着转”。比如,这里有一对分别有大量散度和大量旋度的向量场:

DDG4_27

(注意到在这个情况中一个场仅仅是另一个场90度的旋转!)使用这些类型的图像而不是使用上面那些丑陋的表达式对于理解散度、梯度和旋度是更加有用的。

考虑微分

毫不令人惊讶地,我们可以使用外微积分写出类似的符号。然而,这些符号将更容易被推广一点(比如,没有叉乘定义的R4\mathbb{R}^4中向量场的“旋度”表示什么意思?)让我们首先看一下0-型(即函数)的外导数,它通常被就称作微分(differential)。为了让事情保持简单,我们开始于实值函数ϕ:RnR\phi: \mathbb{R}^n \rightarrow \mathbb{R}。在坐标系中,微分被定义为

dϕ:=ϕx1dx1++ϕxndxnd \phi \coloneqq \frac{\partial \phi}{\partial x^1} dx^1 + \cdots + \frac{\partial \phi}{\partial x^n} dx^n

重要的是注意到项ϕxi\frac{\partial \phi}{\partial x^i}恰好对应我们函数ϕ\phi的偏导,其中项dxidx^i表示Rn\mathbb{R}^n中的一组正交基。换句话说,你可以将dϕd \phi看作是ϕ\phi所有偏导的清单。当然,这个对象看起来非常像我们刚刚看到的梯度ϕ\nabla \phi。并且这两个确实紧密相关,除了ϕ\nabla \phi是向量场而dϕd \phi是1-型的现实。更精确的有

ϕ=(dϕ)\nabla \phi = (d \phi)^{\sharp}

方向导数

另一个去调查外导数行为的方法是看我们将一个向量vv放到1-型dfdf中会发生什么。在坐标系中我们可以得到看起来像ff的梯度和和向量uu之间点积的东西:

df(u)=fx1u1++fxnundf(u) = \frac{\partial f}{\partial x^1}u^1 + \cdots + \frac{\partial f}{\partial x^n}u^n

比如,在R2\mathbb{R}^2中我们可以放入一个单位向量u=(1,0)u = (1,0)去得到沿着第一个坐标轴的偏导fx1\frac{\partial f}{\partial x^1}

DDG4_28

(将这个图和我们上面看到梯度的图比较一下。)一般的,df(u)df(u)表示ff沿着方向uu的方向导数(directional derivative)。换句话说,它告诉我们当我们在uu方向上移动一小段距离时,ff变化的有多快。再一次回到向量计算符号,我们有

df(u)=ufdf(u) = u \cdot \nabla f

外导数的性质

任意一个k-型的导数是什么样呢?首先一点,我们希望dd是线性的——然后,导数就是差(difference)的极限,并且差就是线性的!两个型的导数是什么样呢?回想一下传统的微积分,这个图解释了典型的乘积规则x(f(x)g(x))=f(x)g(x)+f(x)g(x)\frac{\partial}{\partial x}(f(x)g(x)) = f'(x)g(x) + f(x)g'(x)

DDG4_29

暗色的部分表示fgfgxx处的值;亮色部分表示当我们将xx移动一个小距离hh的时候这个值的变化。当hh越来越小的时候,右上角部分的贡献是可以忽略的并且我们可以将导数写为ff变化乘上gggg的变化乘上ff的和。(你可以让这个参数更严格一点吗?)由于一个k-型也测量一个(带符号的)体积,这个直觉也带来了楔形积的外导数。特别的,如果α\alpha是一个k-型那么dd遵守规则(这个公式需要使用下一节的内容才能推导)

d(αβ)=dαβ+(1)kαd(β)d(\alpha \wedge \beta) = d\alpha \wedge \beta + (-1)^k \alpha \wedge d(\beta)

它说明了整个体积的变化率可以被写为组成体积的变化项,刚好就是上面的图表示的。

1-型的外导数

为了更加具体一点,让我们看看在R3\mathbb{R}^3上求一个1-型的微分时会发生什么。在坐标系中解决问题时会让思路完全混乱,但是最后你可能会为非常惊讶于结果的简洁!(稍后,我们将会看到这些思想也可以不用坐标系很好的表示,通过使用Stokes‘定理,它将方法变成离散中的微分。)应用dd的线性,我们有

dα=d(α1dx1+α2dx2+α3dx3)=d(α1dx1)+d(α2dx2)+d(α3dx3)\begin{aligned} d \alpha &= d(\alpha_1 dx^1 + \alpha_2 dx^2 + \alpha_3 dx^3) \\ &= d(\alpha_1 dx^1) + d(\alpha_2 dx^2) + d(\alpha_3 dx^3) \end{aligned}

每一项αjdxj\alpha_j dx^j都可以考虑为0-型αj\alpha_j和对应的基1-型dxjdx^j楔形积αjdxj\alpha_j \wedge dx^j。将外导数应用到这些项中的一个我们将会得到

d(αjdxj)=(dαj)dxj+αj(ddxj)=0=αjxidxidxjd(\alpha_j \wedge dx^j) = (d \alpha_j) \wedge dx^j + \alpha_j \wedge \underbrace{(ddx^j)}_{=0} = \frac{\partial \alpha_j}{\partial x^i} dx^i \wedge dx^j

为了让式子更短一点我们在这里使用了爱因斯坦累加符号,但是让我们真的写下所有的项看看

dx=α1x1dx1dx1+α1x2dx2dx1+α1x3dx3dx1=α2x1dx1dx2+α2x2dx2dx2+α2x3dx3dx2=α3x1dx1dx3+α3x2dx2dx3+α3x3dx3dx3\begin{aligned} dx &= \frac{\alpha_1}{\partial x^1} dx^1 \wedge dx^1 + \frac{\alpha_1}{\partial x^2} dx^2 \wedge dx^1 + \frac{\alpha_1}{\partial x^3} dx^3 \wedge dx^1 \\ &= \frac{\alpha_2}{\partial x^1} dx^1 \wedge dx^2 + \frac{\alpha_2}{\partial x^2} dx^2 \wedge dx^2 + \frac{\alpha_2}{\partial x^3} dx^3 \wedge dx^2 \\ &= \frac{\alpha_3}{\partial x^1} dx^1 \wedge dx^3 + \frac{\alpha_3}{\partial x^2} dx^2 \wedge dx^3 + \frac{\alpha_3}{\partial x^3} dx^3 \wedge dx^3 \end{aligned}

使用等式αβ=βα\alpha \wedge \beta = - \beta \wedge \alpha,我们将得到更加简化的表达式

dα=(α3x2α2x3)dx2dx3+=(α1x3α3x1)dx3dx1+=(α2x1α1x2)dx1dx2\begin{aligned} d \alpha &= \left( \frac{\partial \alpha_3}{\partial x^2} - \frac{\partial \alpha_2}{\partial x^3} \right) dx^2 \wedge dx^3 + \\ &= \left( \frac{\partial \alpha_1}{\partial x^3} - \frac{\partial \alpha_3}{\partial x^1} \right) dx^3 \wedge dx^1 + \\ &= \left( \frac{\partial \alpha_2}{\partial x^1} - \frac{\partial \alpha_1}{\partial x^2} \right) dx^1 \wedge dx^2 \end{aligned}

这个表达式是不是看起来很熟悉?如果你再看一眼我们对向量导数的回顾,你将意识到dαd \alpha看起来根本就像α\alpha^{\sharp}的旋度,除了它表示一个2-型而不是一个向量场。同时记住(从我们对Hodge星的讨论中)一个2-型和一个1-型在这里并没有什么不同——几何上来说它们都是指定了R3\mathbb{R}^3中的一些方向。因此,我们可以将任何一个向量场XX的旋度写作

×X=(dX)\nabla \times X = \left( \star d X^{\flat} \right) ^{\sharp}

这里值得使用一系列操作去验证是否每一个东西都讲得通:\flat将一个向量场XX转为一个1-型XX^{\flat}dd计算了一些看起来像旋度都东西,但是解释为一个2-型dXdX^{\flat}\star将一个2-型变为一个1-型dX\star dX^{\flat};最后\sharp将这个1-型变回向量场(dX)(\star dX^{\flat})^{\sharp}。然而,这里得到了之前的信息,一个1-型的外导数看起来像一个向量场的旋度。

目前我们知道了如何用dd表示梯度和旋度。那么关于剩下的那个向量导数,散度呢?完全不想其它无聊的导数推导,让我们做一个简单的几何观察:至少在R2\mathbb{R}^2中,我们可以通过旋转90度和计算它的旋度(考虑我们前面看到的例子)来决定一个向量场的散度。此外,在R2\mathbb{R}^2中在1-型上的Hodge星表示旋转90度,由于它定义了一条和原直线方向垂直方向的直线:

DDG4_30

因此,我们可以假设散度可以通过首先应用Hodge星然后应用外导数来计算:

X=dX\nabla \cdot X = \star d \star X^{\flat}

最左边的Hodge星描述了dXd \star X^{\flat}是一个n-型而不是0-型的现实——在向量微积分中散度被看作是一个标量。这个定义是否真的有用呢?让我们在R3\mathbb{R}^3坐标系中尝试一下。首先,我们有

X=(X1dx1+X2dx2+X3dx3)=X1dx2dx3+X2dx3dx1+X3dx1dx2\begin{aligned} \star X^{\flat} &= \star (X_1 dx^1 + X_2 dx^2 + X_3 dx^3) \\ &= X_1 dx^2 \wedge dx^3 + X_2 dx^3 \wedge dx^1 + X_3 dx^1 \wedge dx^2 \end{aligned}

微分后我们得到

dX=X1x1dx1dx2dx3+X2x2dx2dx3dx1+X3x3dx3dx1dx2\begin{aligned} d \star X^{\flat} = &\frac{\partial X_1}{\partial x^1} dx^1 \wedge dx^2 \wedge dx^3 + \\ &\frac{\partial X_2}{\partial x^2}dx^2 \wedge dx^3 \wedge dx^1 + \\ &\frac{\partial X_3}{\partial x^3}dx^3 \wedge dx^1 \wedge dx^2 \end{aligned}

但是当然我们可以重排这些楔形积让式子更简单

dX=(X1x1+X2x2+X3x3)dx1dx2dx3d \star X^{\flat} = (\frac{\partial X_1}{\partial x^1} + \frac{\partial X_2}{\partial x^2} + \frac{\partial X_3}{\partial x^3})dx^1 \wedge dx^2 \wedge dx^3

Hodge星最后的应用给我们带来了我们想要的散度

dX=X1x1+X2x2+X3x3\star d \star X^{\flat} = \frac{\partial X_1}{\partial x^1} + \frac{\partial X_2}{\partial x^2} + \frac{\partial X_3}{\partial x^3}

总而言之,对于任意一个标量场ϕ\phi和一个向量场XX我们有

ϕ=(dϕ)×X=(dX)X=dX\begin{aligned} \nabla \phi &= (d \phi)^{\sharp} \\ \nabla \times X &= \left( \star d X^{\flat} \right) ^{\sharp} \\ \nabla \cdot X &= \star d \star X^{\flat} \end{aligned}

这里可以注意到一个有意思的事情,(在R3\mathbb{R}^3中)梯度、旋度和散度分别是将dd应用到0-型、1-型和2-型上。

拉普拉斯

另外一个从向量微积分来的微分算子是标量拉普拉斯(Laplacian),它(这里很容易混淆!)通常使用Δ\Delta或者2\nabla ^2表示,并且定义为

Δ:=\Delta \coloneqq \nabla \cdot \nabla

即梯度的散度。虽然这个拉普拉斯看起来可能像一长串导数,但是它应该得到你最高的尊敬:拉普拉斯是基本物理法则(任何一个扩散过程和所有波传播的的形式,包括Schr¨odinger等式)中的核心;它的特征值刻画了被用来知道一个给定几何块几乎所有东西(你能听到鼓的形状吗?)。沉重的巨著和全部的东西都在忠实的遵守拉普拉斯,并且在离散情况中我们将看到这一个简单的操作符可以被用于多种多样的任务(曲面参数化、曲面平滑、向量场的设计和分解、距离计算、流体模拟…… 你说的出来的它就能做到!)

幸运的是,我们现在知道如何使用外微积分写出散度、梯度和旋度,尺度拉普拉斯的表达式是很直接的:Δ=dd\Delta = \star d \star d。更一般地,k-型拉普拉斯为

Δ:=dd+dd\Delta \coloneqq \star d \star d + d \star d \star

名字“Laplace-Beltrami”只是被用来指定可能有一些数量曲率(由Hodge星概括的)的域。一些人喜欢定义算子δ:=d\delta \coloneqq \star d \star,称为协微分(codifferential),并将拉普拉斯写为Δ=δd+dδ\Delta = \delta d + d \delta

你可能会问一个问题:为什么0-型的拉普拉斯不同于一般k-型的拉普拉斯?的确,它是不一样的——考虑到我们将项ddd \star d \star应用到一个0-型ϕ\phi的时候:ϕ\star \phi是n-型,因此dϕd \star \phi必须是(n+1)-型。但是在n维空间中没有(n+1)-型!因此当我们写标量拉普拉斯的时候这一项通常被忽略掉。

积分和Stokes‘定理

在前面的部分我们讨论了如何使用外微分dd去微分k-型。我们也想要一些方法去进行积分。的确,在我们早就有的设定中关于积分没有什么可说的。假设我们想计算平面上区域Ω\Omega全部的面积AΩA_{\Omega}

DDG4_31

如果你回想微积分的内容,基本的思想是将整个域变成容易测量的小片(比如正方形)并且将它们的面积求和:

AΩiAiA_{\Omega} \approx \sum_i A_i

当这些正方形越来越小的时候我们会得到越来越好的近似,最终达到真正的面积

AΩ=ΩdAA_{\Omega} = \intop_{\Omega} dA

或者,我们可以使用微分形式写下独立的面积——特别的,Ai=dx1dx2(u,v)A_i = dx^1 \wedge dx^2(u,v)。因此,这个面积元素dAdA除了是R2\mathbb{R}^2上标准的体积形式dx1dx2dx^1 \wedge dx^2之外什么也不是。(不用过于惊讶,因为k-型的所有点都是被用来测量体积的!)

为了让事情更有趣一点,让我们通过一些标量函数ϕ\phi对每一个小正方形的贡献进行加权。在这种情况下我们得到一个量

ΩϕdA=Ωϕdx1dx2\intop _{\Omega} \phi dA = \intop _{\Omega} \phi dx^1 \wedge dx^2

再一次这个被积函数ϕdx1dx2\phi dx^1 \wedge dx^2可以被看作一个2-型。换句话说,你会在你整个生命中使用微分形式,甚至你都没有意识到它!更一般地,n维空间上的被积函数永远是n-型,因为我们需要将n个正交向量“放在一起”来表示局部体积。然而,现在看看曲面(即2-流形)将给我们带来所有我们直觉上需要的东西。

曲面上的积分

DDG4_32

如果你想到了我们之前关于Hodge星的讨论,你会记得体积形式

ω=det(g)dx1dx2\omega = \sqrt{\det(\mathsf{g})} dx^1 \wedge dx^2

它测量了我们曲面上一个小平行四边形的面积。因子det(g)\sqrt{\det(\mathsf{g})}提醒我们不能简单地在域MM上测量体积——我们也必须考虑任何由映射f:MR2f: M \rightarrow \mathbb{R}^2带来的“拉伸”。当然,当我们在曲面上积分一个函数的时候,我们也应该考虑这种拉伸。比如,为了积分函数ϕ:MR2\phi: M \rightarrow \mathbb{R}^2,我们能写下

Ωϕω=Ωϕdet(g)dx1dx2\intop_{\Omega} \phi \omega = \intop_{\Omega} \phi \sqrt{\det(\mathsf{g})} dx^1 \wedge dx^2

在共形参数的情况下事情会变得更简单——由于det(g)=a\sqrt{\det(\mathsf{g})} = a我们就有

Ωϕadx1dx2\intop_{\Omega} \phi a dx^1 \wedge dx^2

其中a:MRa : M \rightarrow \mathbb{R}是一个标量因子。换句话说,我们放缩ϕ\phi的值取决于曲面局部的“放大”或者“缩小”。实际上,这全部的内容对于老式的积分给了我们一个非常好的几何解释:你可以想象ΩϕdA\intop_{\Omega}\phi dA表示初始平面区域Ω\Omega一些合适的形变版本的面积。

Stokes‘定理

学习流形上积分的主要原因是使用世界上最强有力工具的优点:Stokes’定理。Stokes’定理是说

Ωdα=Ωα\intop_{\Omega} d\alpha = \intop_{\partial \Omega} \alpha

其中α\alpha是n维域Ω\Omega上的任意(n-1)-型。换句话说,在流形的边界上积分一个微分形式等同于在全部的域上对导数积分。

如果这个技巧对你而言很熟悉,可能是因为你在不同的内容中反复看到它并且它有不同的名字:散度定理、Green’s定理、微积分基本定理、柯西积分公式等等。将这些特殊情况放在一边将帮助我们理解Stokes‘定理更一般的含义。

散度定理

让我们从向量微积分开始散度定理,它是在说

ΩXdA=ΩnXdl\intop _{\Omega} \nabla \cdot X dA = \intop_{\partial \Omega} n \cdot X dl

其中XXΩ\Omega上的向量场并且nn表示沿着Ω\Omega边界的单位法向量场。对于这个定理来讲一个更好的名字可能是“什么东西进去了它就必须出来定理”,因为如果你将XX考虑为穿过域Ω\Omega的水流,那么很显然被灌入Ω\Omega中水的量(通过地下的管道)在任意时刻必须和它的边界流出的量相等:

DDG4_33

让我们使用外微积分写下这个定理。首先,记住我们可以将XX的散度写为X=dX\nabla \cdot X = \star d \star X^{\flat}。如何写出散度定理等式右边的内容看起来更难一点,但是考虑积分在这里做了什么:它取了边界的切线并且将它们变成1-型。比如,ΩX\intop_{\partial \Omega}X^{\flat}XX的正切部分“加起来”。为了获得法线部分我们可以将XX^{\flat}旋转四分之一圈,这样可以非常方便的通过给它加一个Hodge星来实现。综上我们得到了

ΩdX=ΩX\intop_{\Omega} d \star X^{\flat} = \intop_{\partial \Omega} \star X^{\flat}

如同上面说到的,这是Stokes‘定理的一个特殊形式。我们可以使用Stokes‘定理对散度算子自己提供更几何的解释:当在任何一个区域Ω\Omega上积分时——无论多小——散度算子通过区域边界给出了全部的通量。在离散情况中我们将会看到边界通量解释就是散度符号——换句话说,在一个单独的点处是没有散度概念的。

顺便一提,为什么dXd \star X^{\flat}出现在左边而不是dX\star d \star X^{\flat}呢?原因是dX\star d \star X^{\flat}是0-型,因此我们必须对它使用另一个Hodge星将它变为测量面积的对象(即一个2-型)。应用这个变换和将dAdA加到X\nabla \cdot X后没有什么不同——我们正在具体说明在我们的域上体积应该如何被测量。

微积分基本定理

微积分基本定理实际上可能基本到你甚至可能都不会想起来它到底是什么。从根本上它是在说在实线上的一个实值函数ϕ:RR\phi: \mathbb{R} \rightarrow \mathbb{R}

abϕxdx=ϕ(b)ϕ(a)\intop ^b_a \frac{\partial \phi}{\partial x} dx = \phi(b) - \phi(a)

换句话说,在区间[a,b][a,b]上全部的变化是(你可能预计到了)你结束时的大小减去你开始时的大小。但是很容易的,一眼就能看出的!所以我们做过的是将它再一次写成Stokes‘定理的形式:

[a,b]dϕ=[a,b]ϕ\intop_{[a,b]} d\phi = \intop_{\partial [a,b]}\phi

由于区间[a,b][a,b]的边界仅仅包含两个端点aabb

希望这两个例子能让你很好的感受到Stokes‘定理到底在说什么。最后,它读起来很像Zen k¯oan:在外面发生的事情恰好就是在里面变化的函数。(可能这个名字是Stokes‘定理应得的,“微积分基本定理!”)

离散外微积分

DDG4_34

目前我们仅仅在平滑的设定中探索了外微积分。不幸的是这个理论是由一些对计算机一无所知的老先生们建立的,因此它不能直接用于只能存储有限信息量的机器。比如,如果我们有一个平滑的向量场或者一个平滑的1-型我们不能储存每一个点处每个小“箭头“的方向——它们实在是太多了!相对的,我们需要保持跟踪一些离散数量(实际上,有限的)的信息块,它们刻画了我们正在操作的目标的基本行为;我们将这个方案称为离散外微积分(discrete exterior calculus)(或者简称为DEC)。关于DEC的大秘密是它确确实实就只是我们前面学过的传统的(连续的)外微积分,除了我们在我们网格的元素上积分微分形式。

离散微分形式

编码一个1-型的方式可能是储存一个与点的一些子集有关的有限“箭头”集合。作为替代,我们将做一些不一样的事情:我们将在网格的每一条边上积分我们的1-型,并且在对应的边上保存结果的数(记住一个n-型的积总是得到一个数)。换句话说,如果α\alpha是一个1-型并且ee是一条边,那么我们将数

α^e:=eα\hat{\alpha}_e \coloneqq \intop_e \alpha

ee关联起来,其中(α^\hat{\alpha})的意思是表示一个离散的量(不要和单位长度向量混淆)。

这个过程对你来说看起来是不是有点抽象?它不应该这样!考虑下积分表示什么:它告诉我们1-型α\alpha沿着边ee的平均”流动“有多强。更具体地,记住1-型的积分是如何工作的:在沿着边的每个点我们选择与边相切的向量,将它们放入1-型α\alpha中,然后将结果的值加起来——每一个值告诉我们一些关于α\alpha有多贴合这条边方向的事情。比如,我们可以通过求和估算积分

eαe(1Ni=1Nαpi(u))\intop_e \alpha \approx |e| \left( \frac{1}{N} \sum^{N}_{i=1}\alpha_{p_i}(u) \right)

其中e|e|表示边的长度,{pi}\{ p_i \}是沿着边的一个点序,并且u:=e/eu \coloneqq e/|e|是对于边的单位向量切线:

DDG4_35

当然,这个值完全没有告诉我们一点信息有关于垂直于这条边的“流”的强度:它可能是0,也可能是特别大。我们真的不知道,因为我们沿着垂直方向做任何测量。然而,希望是一些信息仍然会被附近的边(那些不和ee平行的边)采集。

更一般地,一个k-型在每一个k维胞腔(1D中是边,2D中是面等等)的积分被称为离散微分k-型(discrete differential k-form)。(如果你发现了令人困惑的区别,你可能发现使用“积分”这个词替代“离散”这个词是很有帮助的。)然而,实际上,不是每一个离散微分形式必须从连续的形式而来——比如,一束和网格每一条边相关的任意的值是一个完美的离散1-型。

朝向

在我们目前所有的插图中你可能注意到的一个事情是每一条边都用一个小箭头标记。为什么?需要记得的一个事情是当你积分的时候需要考虑方向。比如,积分基本理论(和常识)告诉我们你从aabb的所有变化与你从bbaa的所有变换相反:

abϕxdx=ϕ(b)ϕ(a)=(ϕ(a)ϕ(b))=baϕxdx\intop^b_a\frac{\partial \phi}{\partial x} dx = \phi(b) - \phi(a) = -(\phi(a) - \phi(b)) = -\intop^a_b \frac{\partial \phi}{\partial x}dx

用一个无趣的方法说明:当你从Pasadena到Altadena时海拔到增加是151米,在另一个方向上海拔的“增加”肯定是-151米!仅仅跟踪数字151不会有什么用——你必须说这个量表示什么。

DDG4_36

因此,当我们储存一个离散微分形式的时候仅仅存一个数是不够的:我们也必须对网格上对每一个元素确定一个标准朝向,对应我们在积分中用到的朝向。对于一条边,我们早就看到了我们可以将朝向考虑为从一个顶点指向另一个顶点的小箭头——我们可以就将一条边看作一个有序对(i,j)(i,j),意味着我们总是从iijj积分。

更一般地,假设我们网格的每个元素是一个有向k-单纯形(oriented k-simplex)σ\sigma,即,给定一些固定顺序(p1,,pk+1)(p_1, \dots, p_{k+1})的k+1个顶点piRnp_i \in \mathbb{R}^n的集合。和σ\sigma相关的几何是这些点的凸组合(convex combination):

{i=1k+1λipii=1k+1λi=1,λi0}Rn\{ \sum^{k+1}_{i=1} \lambda_i p_i | \sum^{k+1}_{i=1} \lambda_i = 1, \lambda_i \geq 0 \} \subset \mathbb{R}^n

(说服你自己0-单纯形是一个顶点、1-单纯形是一条边、2-单纯形是一个三角形、3-单纯形是一个四面体。)

DDG4_37

两个有向k-单纯形有同样的朝向,当且仅当一个的顶点是另一个顶点的偶置换。比如,三角形(p1,p2,p3)(p_1,p_2,p_3)(p2,p3,p1)(p_2,p_3,p_1)有相同的朝向;(p1,p2,p3)(p_1,p_2,p_3)(p2,p1,p3)(p_2,p_1,p_3)有相对的朝向。

DDG4_38

如果一个单纯形σ1\sigma_1是令一个单纯形σ2\sigma_2的一个(不必合适的)子集,那么我们说σ1\sigma_1σ2\sigma_2的一个面。比如,一个四面体σ\sigma的每一个顶点、边和三角形是σ\sigma的一个面;σ\sigma它自己也是!此外,一个单纯形的朝向和它一个面的朝向一致,只要我们看到在公用顶点上的偶置换。比如,边(p2,p1)(p_2,p_1)的朝向和三角形(p1,p3,p2)(p_1,p_3,p_2)的一致。从几何上来说我们所说的所有内容都是有相同方向(上面右图描绘的)的两个“点”。为了让你处理这些网格的时候保持神志清醒,最重要的事情是选择一个朝向并且保持它不变!

所以一般情况下,我们如何在有向k-单纯形上积分k-型呢?记住一个k-型将在每个点“吃掉”k个向量并且吐出一个数——一个不错的标准选择是选取有序边向量(p2p1,,pk1p1)(p_2-p_1, \cdots, p_{k-1}-p_1)的集合并且他们单位正交化(使用被称为Gram-Schmidt的算法)得到向量组(u1,,uk)(u_1,\cdots,u_k)。这个方法中无论何时朝向变化了被积函数的符号也会变化。从数字上说,我们可以通过求和估算这个积分

σασNi=1Nαpi(u1,,uk)\intop_\sigma \alpha \approx \frac{|\sigma|}{N} \sum^N_{i=1}\alpha_{p_i}(u_1, \cdots, u_k)

其中{pi}\{p_i\}是一个(通常很仔细地选择出来)简单点的集合。(你能看出为什么σ\sigma的朝向会影响被积函数的符号吗?)看起来想很大量的工作,但是实际上很少通过积分来构造离散微分形式:更常见的是,离散形式通过早已离散化的输入点(比如三角网格上的顶点坐标)构造。

顺带一提,离散的0-型是什么?放弃了?好吧,它必须是一个在网格的每一个0-单纯形viv_i(即顶点)上被积分的0-型(即一个函数):

ϕ^i=viϕ\hat{\phi}_i = \intop_{v_i} \phi

按照惯例,函数在0维集上的积分就是函数在那个点的值:ϕ^i=ϕ(vi)\hat{\phi}_i = \phi(v_i)。换句话说,0-型的情况下储存点的采样和储存积分值没有什么区别:这两者等价。注意到0-型的朝向永远是正的,因为在一个顶点上的恒等映射是一个偶置换。

一个也很重要的事情是记住微分形式不必是实值的。比如,我们可以考虑一个映射f:MR3f:M\rightarrow\mathbb{R}^3,它使用一个R3\mathbb{R}^3值的0-型编码了一个曲面的几何;那么它的微分dfdf是一个R3\mathbb{R}^3值的1-型,等等。同样地,当我们说一个离散微分形式是被存在每个网格元素中的一个数,这个词“数”被用在非常宽松的含义:一个数可以是一个实值、一个向量、一个复数、一个四元数等等。比如,网格上(x,y,z)(x,y,z)顶点坐标系的集合可以被看作是一个R3\mathbb{R}^3值的离散0-型(即它将映射ff离散化了)。当然,唯一需要的是在每一个网格元素储存相同类型的数。

离散外导数

使用积分(即,“离散的”)微分形式而不是点采样的主要优势是我们可以简单的使用Stokes‘定理的优势。回想一下Stokes‘定理说的是对于任何一个k-型α\alpha和一个(k+1)维域Ω\Omega都有

Ωdα=Ωα\intop_{\Omega} d\alpha = \intop_{\partial \Omega} \alpha

换句话说,我们可以积分微分形式的导数然后我们就知道了它沿着边界的积分。但是这是确切的由一个离散微分形式编码的信息类型!比如,如果α^\hat{\alpha}是存在三角形σ\sigma的三条边上的一个离散的1-型,那么我们有

σdα=σα=i=13eiα=i=13α^i\intop_{\sigma}d \alpha = \intop_{\partial \sigma} \alpha = \sum^3_{i=1} \intop_{e_i}\alpha = \sum^3_{i=1} \hat{\alpha}_i

DDG4_39

换句话说,我们可以确切地通过将三个数值加起来估算左边的积分。相当酷!实际上,左边这个东西也是离散微分形式:它是2-型α\alpha在我们网格上的这一个三角形上的积分。所以为了方便一点,我们将这个家伙称为“d^α^\hat{d}\hat{\alpha}”,并且我们将运算d^\hat{d}称为离散外导数(discrete exterior derivative)。(在未来当上下文含义清晰的时候我们将去掉这个帽子。)换句话说,离散外导数使用在每一个k-单纯形已经被积分的k-型并且应用Stokes‘定理去获得每一个(k+1)-单纯形上的导数的积分。

实际中(即在代码中)你可以看到通过在合适的网格元素上简单的使用局部求和来实现这个运算。然而,在上面的例子中,我们通过给每一条边与三角形的朝向一致的朝向让这个东西特别容易。不幸的是给每一个单纯形分配一致的朝向并不总是可能的,并且一般情况下当将我们逐片积分相加的时候我们需要对符号更小心一点。比如,在下面这个例子中我们有

(d^α^)1=α^1+α^2+α^3(\hat{d} \hat{\alpha})_1 = \hat{\alpha}_1 + \hat{\alpha}_2 + \hat{\alpha}_3

(d^α^)2=α^4+α^5α^2(\hat{d} \hat{\alpha})_2 = \hat{\alpha}_4 + \hat{\alpha}_5 - \hat{\alpha}_2

DDG4_40

离散Hodge星

DDG4_41

如同上面提到的,一个离散k-形刻画了沿着k个方向的一个连续k-型的行为,但是没有剩下的沿着(n-k)个方向——比如,2D中的一个离散1-型刻画了沿着边的流但是没有垂直方向的。如果你特别关注了Hodge对偶的讨论,那么这个内容听起来就非常相似了!为了刻画离散情况下的Hodge对偶,我们将需要定义一个对偶网格。一般的,一个n维单纯网格的对偶使用独立的(n-k)-胞腔确定了主要的(即原始的)网格中每一个k-单纯形。比如,在一个2维单纯网格中,主要的顶点都用对偶面定义,主要的边都用对偶边定义,主要的面都用对偶顶点定义。然而,注意到对偶胞腔并不总是单纯形!(看上图。)当原始元素和对偶元素在正交的线性子空间中时,一个对偶的网格是正交对偶。比如,在一个平面三角网格上一条对偶边可能和对应的原始边有一个合适的角度。对于弯曲的域,我们仅仅要求原始元素和对偶元素内在正交,即如果刚性地将一对相邻的三角形展开到平面,原始的和对偶的边应该再一次正交。

对偶网格元素被包含在正交线性子空间的事实很自然地引出了Hodge对偶在离散情况中的符号。特别的,在原始网格上的一个(离散)k-型的离散Hodge对偶是对偶网格上的(n-k)-型。类似地,对偶网格上的一个k-型的Hodge对偶是原始网格上的一个(n-k)-型。原始网格上的离散形式被称为主要形式并且对偶网格上的离散形式被称为对偶形式。给定一个离散形式α^\hat{\alpha}(不管是原始的还是对偶的),我们将它的Hodge对偶写为^α^\hat{\star}\hat{\alpha}

DDG4_42

不像连续形式,离散的主要和对偶形式不在一个地方(比如,离散的主要k-型和对偶k-型不能相加)。实际上,主要和对偶形式通常有不同的物理解释。比如,一个主要的1-型可能表示沿着这个主要网格边的全部环流量,然而在同样的上下文中一个对偶1-型可能表示穿过这个对应对偶边的全部通量(看上面的图示)。

当然,这两个量(环流量和通量)是紧密相关的,并且自然地引出了一个被称为对角Hodge星(diagonal Hodge star)的离散Hodge星的定义。考虑一个原始的k-型α\alpha。如果α^i\hat{\alpha}_iα^\hat{\alpha}在k-单纯形σi\sigma_i上的值,那么对于所有的ii对角Hodge星被定义为

^α^i=σistarσiα^i\hat{\star} \hat{\alpha}_i = \frac{|\sigma ^{star}_{i}|}{\sigma_i} \hat{\alpha}_i

其中σ|\sigma|表示σ\sigma的(无符号)体积(根据惯例它对于每一个顶点是等于1的!)并且σ|\sigma^{\star}|是对应对偶胞腔的体积。换句话说,为了计算对偶型我们简单地乘上标量值,它是保存在每个胞腔中的对应对偶和主要体积的比。

如果我们记得一个离散形式可以被考虑为一个连续形式在每一个胞腔上的积分,对于Hodge星的定义可能就会相当完美:主要的和对偶的量应该有相同的密度,但是我们应该考虑它们是在不同体积的胞腔上积分的现实。我们因此通过体积的比例归一化,当我们主要的和对偶的之间映射的时候。这个特别的Hodge星被称为对角的,因为对偶微分形式的第ii个元素仅仅依赖于原始微分形式的第ii个元素。不难看出,将对偶形式带到主要形式的Hodge星(对偶Hodge星)是将主要形式带到对偶形式Hodge星(主要Hodge星)的逆。

大家,这就是全部了!

嘿,等一会,关于我们其它的运算,像楔形积()(\wedge)呢?这些运算无疑能在离散设定中被定义,但是这里我们将不会追究细节——基本的诀窍是积分、积分、积分。的确,甚至在连续外微积分中我们都忽略了一对运算像李导数(Lie derivative)(LX)(\mathcal{L}_X)和内积(iα)(i_{\alpha})。想一想完整的离散微积分,其中全部的符号表示有d,,,LX,iαd,\wedge,\star,\mathcal{L}_X,i_{\alpha}等等,在一个活跃且持续的研究领域中相互配合得很好。