DDG课程笔记3-Laplace算子
这个系列是对CMU离散微分几何课程(CMU CS 15-458/858: Discrete Differential Geometry)的总结和回顾。本节我们介绍几何处理中最实用的工具-Laplace算子。
Overview
Laplace算子(Laplacian)在不同的领域里都有非常重要的应用。在物理学中我们可以通过Laplace算子来描述不同的物理现象:

在几何处理中Laplace算子描述了网格的局部信息,因此也称为微分坐标(differential coordinates)。同时,Laplace算子也和平均曲率以及网格的频率信息有着紧密的联系:

欧式空间中的Laplace算子可以定义为函数二阶导数的和:
因此Laplace算子描述了函数在局部邻域内的性质,我们可以通过Laplace算子来计算函数的极值点以及曲率:


在图论中,Laplace算子则描述了节点和它相邻节点平均值的相对关系:
在社交网络中这表示每一个人总是与和他相关的人具有相似的属性(观点)。

Definitions
尽管Laplace算子在不同的领域中有着不同的定义,我们可以看出Laplace算子描述了一个对象和它相邻对象平均值的关系。同时,针对Laplace算子的不同性质也可以给出很多等价的定义。考虑Laplace算子可以看做是偏导数的和,这里给出Laplace算子在流形上的定义:

可以验证在欧式空间下上式会退化为我们熟悉的二阶导数和的形式
对函数

不难发现Laplace算子等于Hessian矩阵的迹:
在曲面上使用协变导数(covariant derivative)来代替欧式坐标中的导数,得到:
此时Laplace算子仍然等于Hessian矩阵的迹:
Laplace算子还可以定义为梯度的散度,此时表达式为:


此外,我们还可以通过随机游走(布朗运动(Brownian motion))来认识Laplace算子。对于单一粒子的随机游走其状态可由热传导方程进行刻画,带入初始条件
其中
最后来介绍Laplace算子与Dirichlet能量(Dirichlet energy)的关系。定义Dirichlet能量为:

Dirichlet能量描述了函数的光滑程度:Dirichlet能量越小表示函数越光滑、变化越平稳;Dirichlet能量越大表示函数越粗糙、变化越剧烈。同时可以证明最小化Dirichlet能量相当于求解Laplace方程:
Properties
Laplace算子有非常丰富的性质,这里只介绍一些比较常用的性质:
- 线性算子:
- 常值函数满足
- 对刚体变换保持不变
- 可交换性:对等距映射
满足 - 自伴随:
- (半)负定:
值得一提的是Laplace算子还具有谱性质(spectral properties)。类似于实对称矩阵的特征向量,Laplace算子存在正交的特征函数:
其中

利用特征函数分解还可以将Dirichlet能量写成级数的形式:
Discretization via DEC
接下来推导离散Laplace算子的表达式,这里我们使用离散外微分来进行推导。首先给出光滑曲面上Laplace算子的表达式:
使用外微分形式的好处在于我们可以直接进行离散,得到网格上的Laplace算子:
上式表明我们可以直接使用我们已经推导的离散微分算子来构造出Laplace算子。实际上我们还可以把它们写成更紧凑的形式:对于0-form

在

其中,

接着对dual 1-form

此时我们得到的dual 2-form
上式称为cotan-Laplace算子(cotan Laplacian)。注意到cotan-Laplace算子与平均曲率向量
Applications
Heat Equation
有了离散Laplace算子我们就可以在网格上解微分方程,比如说热传导方程(heat equation):
由于离散Laplace算子和平均曲率向量具有相同的形式,实际上平均曲率流的迭代算法也可以看做是求解热传导方程。取
其中
上式称为热传导方程的显式迭代(explicit update)。实际工程中更常用的是隐式迭代(implicit update),此时需要将递推式修改为:
整理得到:
和显式迭代相比隐式迭代在数值上更稳定,因此大部分情况下推荐使用隐式迭代算法。
Poisson Equation
在几何处理中另一类常见的微分方程是泊松方程(Poisson equation):
实际上泊松方程可以看做是稳态传热情况下的热传导方程。假设
当

除此之外,泊松方程也可以理解为最小化Dirichlet能量。假设已知向量场
可以证明最小化Dirichlet能量等价于求解泊松方程:

Boundary Conditions
我们知道边界条件对于微分方程起着至关重要的作用,因此求解泊松方程之前还要介绍一些常见边界条件。常见边界条件包括Dirichlet边界和Neumann边界,其中Dirichlet边界表示在边界上指定了函数值而Neumann边界则表示在边界上指定了函数梯度。以一维函数为例,Dirichlet边界指定了函数在端点的值而Neumann边界则指定了函数的导数:


同时需要注意对于Dirichlet边界方程一定有解,而对于Neumann边界则可能会出现无解的情况:


以二维Laplace方程为例,根据散度定理有:
也就是说Laplace方程有解需要保证方向导数

最后我们来讨论一下如何求解泊松方程。对于无边界的情况,泊松方程退化为
这里
当泊松方程只存在Dirichlet边界时,我们可以将网格内部和边界分开来考虑。此时泊松方程可表示为:
下标
如果存在Neumann边界则需要对泊松方程进行一定的修改。对于边界上的顶点,回忆Laplace算子是函数在dual cell上的积分,此时需要更新为:
其中

将
此时按无边界的情况进行求解即可。