CCG 04-08:调和、拟共形与数值诊断
本页只解决一个问题
调和映射何时共形,算法中怎样测 Beltrami 与奇异值畸变?
本页是原长篇讲义的单概念版本。第一次阅读只追踪本页定义的对象;看见未掌握的前置符号时,先沿链接退回,不要跳过定义硬背结论。
开始前
14. 调和映射与共形映射
设 是定向曲面间映射。在局部复坐标中能量密度分解为
面积密度为
两者之差:
因此共形映射使反全纯部分消失,并达到能量-面积下界。
但要注意:
- 调和不自动推出共形;
- 从二维域到平面的调和映射若满足额外条件才共形;
- 调和映射依赖边界条件和同伦类;
- 分支点处导数可能为 0。
15. 拟共形映射
-拟共形映射允许有界角度畸变:
(不同文献的范数与 约定略有区别),等价于
拟共形理论对计算特别重要,因为完全共形通常受边界、拓扑和离散误差限制,而 是一个可优化、可插值、可组合的畸变量。
15.1 Beltrami 系数的复合律
若 可微且方向保持,复合 的 Beltrami 系数满足一个分式线性组合。重要结论是:拟共形映射在复合和求逆下封闭;但畸变会累积。
16. 数值算法的三条路线
| 路线 | 连续方程 | 典型离散方法 |
|---|---|---|
| 调和映射 | 余切 Laplace、Tutte、有限元 | |
| Cauchy–Riemann | LSCM、全纯 1-形式积分 | |
| 曲率处方 | Yamabe/Ricci flow、Newton 法 |
它们并非彼此独立:调和映射从能量出发,Cauchy–Riemann 从复结构出发,曲率流从共形度量出发,最终都在构造同一个共形结构的不同表示。
17. Python:Jacobian、Beltrami 与奇异值
import numpy as np
def distortion_from_jacobian(J):
"""返回面积 Jacobian、奇异值比 K 和 |mu|。"""
J = np.asarray(J, dtype=float).reshape(2, 2)
det = np.linalg.det(J)
sigma = np.linalg.svd(J, compute_uv=False)
K = np.inf if sigma[1] == 0 else sigma[0] / sigma[1]
mu_abs = 1.0 if np.isinf(K) else (K - 1.0) / (K + 1.0)
return det, K, mu_abs
tests = {
"similarity": [[0.0, -2.0], [2.0, 0.0]],
"anisotropic": [[3.0, 0.0], [0.0, 1.0]],
"shear": [[1.0, 0.7], [0.0, 1.0]],
"flip": [[-1.0, 0.0], [0.0, 1.0]],
}
for name, J in tests.items():
det, K, mu_abs = distortion_from_jacobian(J)
print(name, "det=", det, "K=", K, "|mu|=", mu_abs)只看 无法检测翻转,因为反射的两个奇异值也相等。必须同时检查。
读完必须能回答
- 不看公式,用自己的话回答开头的核心问题。
- 指出本页最重要公式中每个符号的类型:标量、向量、矩阵、映射还是集合。
- 找出定理成立所需的假设,并举一个删除某条假设后可能失败的例子。
- 对最小例子手算一遍;若本页含代码,再比较手算与程序输出。
前后课程
许可协议:CC BY
作者:Davids
本文链接:https://hustjjd.github.io/ccg/04-08-lesson/
更新于:2026年10月12日