CCG 00-06:线性方程组——解、秩、零空间与边界条件
本课只解决一个问题
求解
究竟是在找什么?为什么网格参数化必须固定边界或锚点后才能求解?
1. 方程组是多个条件的交集
考虑
每个方程在平面中是一条直线,解是两条直线的交点。相加得,所以。
矩阵写法为
矩阵写法没有改变问题,只是把许多方程压缩到一个结构中。
2. 从列向量看
若 的两列为,则
求解 就是寻找系数,把列向量线性组合成。
因此:
- 若 不在列向量能张成的范围内,无解;
- 若列之间存在冗余,可能有无穷多个解;
- 若列恰好独立并覆盖目标空间,解唯一。
3. 消元不是魔法
对方程做以下操作不会改变解集:
- 交换两行;
- 一行乘以非零数;
- 一行加上另一行的倍数。
这就是高斯消元。它的目标是把系统变成容易回代的阶梯形。
例如第二行减第一行:
于是,再回代得到。
4. 秩表示独立约束有多少
矩阵的秩 是独立列的最大数量,也等于独立行的最大数量。
例如
第二列是第一列的两倍,第二行也是第一行的两倍,所以秩为,不是。看起来有两行条件,实际上只有一个独立条件。
5. 零空间是“不被矩阵看见的变化”
零空间定义为
若 且 是 的一个解,那么
所以非零零空间意味着解不唯一。
上面的秩一矩阵满足
沿 改变系数,输出不变。
6. 秩—零度定理
若 有 列,则
它在说:输入空间被分成“能影响输出的方向”和“矩阵看不见的方向”。
7. 为什么 Laplace 方程需要边界条件
网格 Laplace 矩阵 通常满足
因为所有顶点值同时加同一个常数,不改变顶点之间的差。因此常数方向属于零空间, 不可能唯一确定。
解决办法是加入足够约束:
- Dirichlet 参数化固定边界顶点;
- LSCM 至少固定两个不同的顶点,去掉平移、旋转和缩放自由度;
- Poisson 方程可固定一个值,或要求平均值为零。
约束不是数值补丁,而是在消除问题本身的对称性。
8. 对称正定为什么受欢迎
若矩阵 对称,并且对任意非零 有
则称 对称正定。此时二次能量
只有一个最小点,且满足。
离散几何常努力把问题写成对称正定系统,因为它有唯一解并能用高效稀疏求解器处理。
9. 最小代码实验
import numpy as np
A = np.array([[1.0, 1.0], [1.0, -1.0]])
b = np.array([3.0, 1.0])
x = np.linalg.solve(A, b)
print(x) # [2. 1.]
print(np.linalg.norm(A @ x - b)) # 残差接近 0残差 检查“计算结果是否满足方程”,却不自动证明模型或边界条件正确。
10. 常见误区
- 方程数等于未知数数目,不保证唯一解;还要检查独立性。
- 数值求解成功,不表示矩阵条件良好。
- 零空间不是错误,它常对应平移、常数或旋转等真实自由度。
- 不应随意给对角线加小数掩盖奇异性,应先找出缺少的约束。
11. 自测与答案
题 1。 只有一个方程、两个未知数,有多少解?
答案。 无穷多个,可写成。
题 2。 若 且,证明。
答案。 由线性性,。
题 3。 为什么固定一个 Laplace 问题的顶点值常能去除常数零空间?
答案。 常数平移会改变这个固定值;除零平移外,其余常数方向都不再满足约束。
前后课程
许可协议:CC BY
作者:Davids
本文链接:https://hustjjd.github.io/ccg/00-06-linear-systems/
更新于:2026年10月12日