CCG 00-06:线性方程组——解、秩、零空间与边界条件

本课只解决一个问题

求解

Ax=bAx=b

究竟是在找什么?为什么网格参数化必须固定边界或锚点后才能求解?

1. 方程组是多个条件的交集

考虑

{x+y=3,x−y=1.\begin{cases} x+y=3,\\ x-y=1. \end{cases}

每个方程在平面中是一条直线,解是两条直线的交点。相加得2x=42x=4,所以x=2,y=1x=2,y=1。

矩阵写法为

(111−1)⏟A(xy)⏟x=(31)⏟b.\underbrace{\begin{pmatrix}1&1\\1&-1\end{pmatrix}}_A \underbrace{\begin{pmatrix}x\\y\end{pmatrix}}_{\mathbf x} = \underbrace{\begin{pmatrix}3\\1\end{pmatrix}}_b.

矩阵写法没有改变问题,只是把许多方程压缩到一个结构中。

2. 从列向量看Ax=bAx=b

若AA 的两列为a1,a2a_1,a_2,则

Ax=x1a1+x2a2.Ax=x_1a_1+x_2a_2.

求解Ax=bAx=b 就是寻找系数x1,x2x_1,x_2,把列向量线性组合成bb。

因此:

  • 若bb 不在列向量能张成的范围内,无解;
  • 若列之间存在冗余,可能有无穷多个解;
  • 若列恰好独立并覆盖目标空间,解唯一。

3. 消元不是魔法

对方程做以下操作不会改变解集:

  1. 交换两行;
  2. 一行乘以非零数;
  3. 一行加上另一行的倍数。

这就是高斯消元。它的目标是把系统变成容易回代的阶梯形。

例如第二行减第一行:

(11∣31−1∣1)⟶(11∣30−2∣−2),\begin{pmatrix}1&1&|&3\\1&-1&|&1\end{pmatrix} \longrightarrow \begin{pmatrix}1&1&|&3\\0&-2&|&-2\end{pmatrix},

于是y=1y=1,再回代得到x=2x=2。

4. 秩表示独立约束有多少

矩阵的秩rank⁡(A)\operatorname{rank}(A) 是独立列的最大数量,也等于独立行的最大数量。

例如

A=(1224)A=\begin{pmatrix}1&2\\2&4\end{pmatrix}

第二列是第一列的两倍,第二行也是第一行的两倍,所以秩为11,不是22。看起来有两行条件,实际上只有一个独立条件。

5. 零空间是“不被矩阵看见的变化”

零空间定义为

ker⁡A={x:Ax=0}.\ker A=\{x:Ax=0\}.

若z∈ker⁡Az\in\ker A 且x0x_0 是Ax=bAx=b 的一个解,那么

A(x0+z)=Ax0+Az=b.A(x_0+z)=Ax_0+Az=b.

所以非零零空间意味着解不唯一。

上面的秩一矩阵满足

A(−21)=0.A\begin{pmatrix}-2\\1\end{pmatrix}=0.

沿(−2,1)(-2,1) 改变系数,输出不变。

6. 秩—零度定理

若AA 有nn 列,则

rank⁡(A)+dim⁡ker⁡A=n.\operatorname{rank}(A)+\dim\ker A=n.

它在说:输入空间被分成“能影响输出的方向”和“矩阵看不见的方向”。

7. 为什么 Laplace 方程需要边界条件

网格 Laplace 矩阵LL 通常满足

L1=0,1=(1,1,…,1)T.L\mathbf 1=0, \qquad \mathbf1=(1,1,\ldots,1)^T.

因为所有顶点值同时加同一个常数,不改变顶点之间的差。因此常数方向属于零空间,Lu=0Lu=0 不可能唯一确定uu。

解决办法是加入足够约束:

  • Dirichlet 参数化固定边界顶点;
  • LSCM 至少固定两个不同的顶点,去掉平移、旋转和缩放自由度;
  • Poisson 方程可固定一个值,或要求平均值为零。

约束不是数值补丁,而是在消除问题本身的对称性。

8. 对称正定为什么受欢迎

若矩阵AA 对称,并且对任意非零xx 有

xTAx>0,x^TAx>0,

则称AA 对称正定。此时二次能量

E(x)=12xTAx−bTxE(x)=\frac12x^TAx-b^Tx

只有一个最小点,且满足Ax=bAx=b。

离散几何常努力把问题写成对称正定系统,因为它有唯一解并能用高效稀疏求解器处理。

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

残差∥Ax−b∥\|Ax-b\| 检查“计算结果是否满足方程”,却不自动证明模型或边界条件正确。

10. 常见误区

  1. 方程数等于未知数数目,不保证唯一解;还要检查独立性。
  2. 数值求解成功,不表示矩阵条件良好。
  3. 零空间不是错误,它常对应平移、常数或旋转等真实自由度。
  4. 不应随意给对角线加小数掩盖奇异性,应先找出缺少的约束。

11. 自测与答案

题 1。x+y=2x+y=2 只有一个方程、两个未知数,有多少解?

答案。 无穷多个,可写成(x,y)=(t,2−t)(x,y)=(t,2-t)。

题 2。 若Az=0Az=0 且Ax=bAx=b,证明A(x+3z)=bA(x+3z)=b。

答案。 由线性性,A(x+3z)=Ax+3Az=b+0=bA(x+3z)=Ax+3Az=b+0=b。

题 3。 为什么固定一个 Laplace 问题的顶点值常能去除常数零空间?

答案。 常数平移会改变这个固定值;除零平移外,其余常数方向都不再满足约束。

前后课程

上一课:矩阵是线性映射 | 下一课:导数与线性近似