CCG 02-09:环面调和形式与代码验证
本页只解决一个问题
非平凡拓扑怎样在调和 1-形式和矩阵零空间中出现?
本页是原长篇讲义的单概念版本。第一次阅读只追踪本页定义的对象;看见未掌握的前置符号时,先沿链接退回,不要跳过定义硬背结论。
开始前
- 模块前置入口:先修页面
- 本页所属模块:微分形式与 Hodge 理论
- 集中复习版:原长篇参考讲义
16. 例子:环面上的调和 1-形式
把平面按周期 商掉得到平坦环面。两个常数 1-形式
都满足
但它们不是全局恰当形式:若,则沿 周期积分应为 0,实际上
它们构成 的基。组合
是一个全纯 1-形式,这条线索会在黎曼面章节继续发展。
17. Python:验证离散复形
import numpy as np
def verify_complex(B1, B2, atol=1e-12):
defect = B1 @ B2
max_abs = 0.0 if defect.nnz == 0 else np.abs(defect.data).max()
if max_abs > atol:
raise ValueError(f"boundary of boundary is not zero: {max_abs}")
return max_abs
def exact_projection(d0, star1, omega, anchor=0):
# 解 d0^T star1 d0 f = d0^T star1 omega。
# 删除一个自由度消除常数零空间。
from scipy.sparse.linalg import spsolve
L = d0.T @ star1 @ d0
rhs = d0.T @ star1 @ omega
keep = np.arange(L.shape[0]) != anchor
f = np.zeros(L.shape[0])
f[keep] = spsolve(L[keep][:, keep].tocsr(), rhs[keep])
return d0 @ f, f生产实现还需要处理:
- 有边界时的 absolute/relative boundary condition;
- obtuse triangle 导致的负 dual length;
- 多连通域的多个常数零空间;
- 迭代求解器与预条件器;
- 数值秩和拓扑零空间的区分。
读完必须能回答
- 不看公式,用自己的话回答开头的核心问题。
- 指出本页最重要公式中每个符号的类型:标量、向量、矩阵、映射还是集合。
- 找出定理成立所需的假设,并举一个删除某条假设后可能失败的例子。
- 对最小例子手算一遍;若本页含代码,再比较手算与程序输出。
前后课程
许可协议:CC BY
作者:Davids
本文链接:https://hustjjd.github.io/ccg/02-09-lesson/
更新于:2026年10月12日