Base
对于矩阵 A,对齐做 SVD 分解,即 U Σ V = s v d ( A ) U\Sigma V = svd(A) UΣV=svd(A). 其中 U 为 A A T AA^T AAT的特征向量,V 为 A T A A^TA ATA的特征向量。 Σ \Sigma Σ 的对角元素为降序排序的特征值。显然,U、V矩阵中的列向量相互正交,所以也可以视 V 为svd分解给出了A的列向量空间的正交基,其中最大奇异值(或特征值)对应的特征向量捕捉了数据变化的最大方向。
求满足 Ax=0 的 x
显然该问题等价于 x T A T A x = 0 x^TA^TAx = 0 xTATAx=0.
此问题有非零解 => A不满秩 => 行列式为0 => A T A A^TA ATA 的特征值至少有一个为0.
- 考虑 A A A的秩的为 k-1, 那么 A T A A^TA ATA 的特征值有一个为0。所以svd分解后V矩阵的最后一列 x ∗ x^* x∗ 就是特征值为 0 所对应的特征向量,即 A T A x ∗ = 0 ∗ x ∗ = 0 A^TA x^* = 0 * x^* = 0 ATAx∗=0∗x∗=0.
对于超定方程,极有可能不存在解析解,但存在最小二乘解满足 ∥ A x ∥ 2 \Vert Ax \Vert_2 ∥Ax∥2 最小,即最小的特征值所对应的特征向量。常见的这类问题如:已知一些三维空间中大致落在二维平面上的点,用n*3的矩阵P描述,求这个平面的法向量 n。 - 考虑 A A A的秩的为 k-2,那么那么 A T A A^TA ATA 的特征值有两个为0。
例如,已知一些落在直线上的三维点,用n*3的矩阵描述这些点,求这条线的方向n。那么显然就是求满足 m a x x ∥ A x ∥ 2 max_x \Vert Ax \Vert_2 maxx∥Ax∥2的最小二乘解,也就是最大的特征值对应的特征向量。另外,两个为0的特征值所对应的特征向量反应了在垂直直线方向的趋势,或者说向量投影到垂直直线方向(法平面)的投影。
另一个例子:存在一个bearing vector,由于bearing vector的模长固定为1,因此只能在球面上移动,其自由度为2。为了描述bearing vector的误差,所以采用bearing vector在其切平面的投影作为量化方式。那么对 bearing vectord的转置做SVD分解,则两个为0的奇异值对应的特征向量就是切平面的基。
求解Ax = b的x
此问题等价于求 A x − b = 0 Ax - b = 0 Ax−b=0。
- 当 r a n k ( A ∣ b ) = r a n k ( A ) < k rank(A|b) = rank(A) < k rank(A∣b)=rank(A)<k, 有特解+通解多个解
- 当 r a n k ( A ∣ b ) = r a n k ( A ) = k rank(A|b) = rank(A) = k rank(A∣b)=rank(A)=k, 有唯一解
- 当 r a n k ( A ∣ b ) > r a n k ( A ) rank(A|b) > rank(A) rank(A∣b)>rank(A), 无解
求解线性方程组 ( Ax = b ) 的方法有多种,具体选择取决于矩阵 ( A ) 的特性(例如,是否是方阵、是否是稀疏矩阵、是否满秩等)。以下是常见的几种方法:
1. 直接求解法
适用于方阵 ( A ) 为非奇异矩阵的情况(即 ( A ) 可逆)。
1.1 矩阵逆法
- 如果 ( A ) 是方阵且非奇异(满秩),我们可以通过矩阵的逆求解:
x = A − 1 b x = A^{-1} b x=A−1b - 优点:理论上适用于所有满秩方阵。
- 缺点:计算逆矩阵代价较高,尤其是对于大规模矩阵,数值不稳定性也可能导致精度问题。
1.2 高斯消去法
- 高斯消去法是一种通过初等行变换将 ( A ) 化为上三角矩阵,然后使用回代法求解 ( x ) 的方法。
- 步骤:
- 将 ( A ) 化为上三角矩阵(消元过程)。
- 从最后一个方程开始回代求解各个未知数。
- 优点:适合解决大部分线性方程组问题。
- 缺点:在稀疏矩阵或病态矩阵情况下可能表现不好。
1.3 LU 分解
- 将 ( A ) 分解为两个矩阵 ( L )(下三角矩阵)和 ( U )(上三角矩阵),使得 ( A = LU )。
- 分两步解决:
- 求解 ( Ly = b )(前向替换)。
- 求解 ( Ux = y )(回代)。
- 优点:可以高效地处理多次相同矩阵 ( A ) 但不同向量 ( b ) 的情况。
- 缺点:不适合奇异或病态矩阵。
2. 迭代求解法
适合大规模、稀疏矩阵,特别是在矩阵 ( A ) 具有特殊结构(例如稀疏或对称正定)的情况下。
2.1 Jacobi 方法
- 假设矩阵 ( A ) 可以分解为对角矩阵 ( D ) 和严格三角矩阵 ( L + U ),即 ( A = D + (L + U) )。
- 通过迭代更新:
x ( k + 1 ) = D − 1 ( b − ( L + U ) x ( k ) ) x^{(k+1)} = D^{-1}(b - (L+U)x^{(k)}) x(k+1)=D−1(b−(L+U)x(k)) - 优点:实现简单,适合并行计算。
- 缺点:收敛速度较慢,且不适用于所有矩阵,尤其是条件数较大的矩阵。
2.2 Gauss-Seidel 方法
- 类似于 Jacobi 方法,但在每次更新时使用新的值:
x i ( k + 1 ) = 1 A i i ( b i − ∑ j = 1 i − 1 A i j x j ( k + 1 ) − ∑ j = i + 1 n A i j x j ( k ) ) x_i^{(k+1)} = \frac{1}{A_{ii}} \left( b_i - \sum_{j=1}^{i-1} A_{ij} x_j^{(k+1)} - \sum_{j=i+1}^{n} A_{ij} x_j^{(k)} \right) xi(k+1)=Aii1(bi−j=1∑i−1Aijxj(k+1)−j=i+1∑nAijxj(k)) - 优点:比 Jacobi 方法收敛快。
- 缺点:仍可能在某些条件下收敛缓慢。
2.3 共轭梯度法
- 适用于对称正定矩阵。该方法是一种梯度下降的改进形式,通过寻找共轭方向来加速收敛。
- 步骤 :
- 初始化 ( x_0 )。
- 迭代更新:
x k + 1 = x k + α k p k x_{k+1} = x_k + \alpha_k p_k xk+1=xk+αkpk
其中 ( p_k ) 是共轭方向,( \alpha_k ) 是步长。
- 优点:对大规模、稀疏、对称正定矩阵非常高效。
- 缺点:只适用于对称正定矩阵,且需要合适的预条件来保证收敛性。
3. 奇异值分解 (SVD)
适用于任意矩阵 ( A ),包括矩阵不满秩或奇异的情况。
- 奇异值分解将 ( A ) 分解为 ( A = U \Sigma V^T ),其中 ( U ) 和 ( V ) 是正交矩阵,( \Sigma ) 是对角矩阵,包含矩阵的奇异值。
- 求解过程为:
x = V Σ − 1 U T b x = V \Sigma^{-1} U^T b x=VΣ−1UTb - 优点:SVD 能处理任何矩阵,包括奇异矩阵和非方阵,是最为稳定的求解方法之一。
- 缺点:计算复杂度高,不适合大规模问题。
4. QR 分解
- QR 分解将矩阵 ( A ) 分解为正交矩阵 ( Q ) 和上三角矩阵 ( R ),即 ( A = QR )。
- 求解步骤:
- 将方程变为 ( QRx = b )。
- 左乘 ( Q^T ),得到 ( Rx = Q^T b )。
- 用回代法求解上三角矩阵 ( R ) 的方程。
- 优点:稳定性好,特别适用于不满秩的矩阵。
- 缺点:比高斯消去法稍微复杂,计算量略大。
5. 伪逆法(Moore-Penrose 逆)
适用于矩阵 ( A ) 不为方阵或不满秩的情况。
- 如果 ( A ) 是不方的或者不满秩,我们可以通过伪逆矩阵 ( A^+ ) 求解:
x = A + b x = A^+ b x=A+b
其中 ( A^+ ) 是 ( A ) 的 Moore-Penrose 伪逆。 - 优点:适用于任何矩阵(包括矩阵不满秩、奇异的情况),能找到最小范数解。
- 缺点:计算伪逆较复杂,尤其是对于大规模矩阵。
总结
- 对于方阵且 ( A ) 可逆,常用 高斯消去法 或 LU 分解。
- 对于大规模稀疏矩阵或需要迭代求解时,Jacobi 方法 、Gauss-Seidel 方法 和 共轭梯度法 适用。
- 对于奇异或不满秩的矩阵,SVD 或 伪逆法 能保证稳定的解。
- QR 分解 和 高斯消去法 常用于数值稳定性要求较高的情境。