线性方程组直接解法
矩阵乘法
矩阵乘法不满足交换率
以列向量理解
对于矩阵乘法
AB=C
将矩阵的每一列理解为一个列向量, 矩阵与向量之积 Av=b 即表明了将 A 的每一列为新的基底, 以最左侧为第一个轴, 经过变换后得到新的向量 b, 此时基底矩阵位于左侧
当右侧为另一个矩阵时, 理解为一个行向量数组, 因此 AB 为对 B 中每一列向量分别以 A 为基底进行变换, 从而得到一个新的向量数组 C
以行向量理解
将矩阵的每一行理解为一个行向量, 矩阵与向量之积 hA=c 即表明了将 A 的每一行为新的基底, 以最上方为第一个轴, 经过变换后得到新的行向量 c, 此时基底矩阵位于右侧
当左侧为另一个矩阵时, 理解为一个行向量数组, 因此 AB 为对 A 中每一行向量分别以 B 为基底进行变换, 从而得到一个新的向量数组 C
高斯消元法
直接高斯消元法中, 如果除数接近 0, 将导致结果不稳定
列主消元法
- 高斯消元中, 交换行顺序仅改变了方程的次序, 因此对结果无影响
- 在每次消元中, 找出消元列中绝对值最大的元素, 将其与列主交换消元
列主三角分解
列主消元法中由于交换了行, 无法完全三角分解, 还需要一个排序矩阵
PA=LU
三角分解
当 A 为非奇异矩阵, 则可以将 A 分解为一个上三角矩阵 L 与下三角矩阵 U 之积
A=LU
并且通常规定 L 的主对角线上为 1
三角分解的使用
确定 A=LU 后, Ax=b 等价于求解 L(Ux)=b
- Ly=b 先求出 y
- Ux=y 在求出 x
高斯消元法的三角分解
- 高斯消元法中, 每次消去第 k 列, 相当于 (注意, 此时是对方程系数操作, 需要从行角度理解, 因此 A 在右侧)
Ak+1=LkAk
其中
Lk=10⋮00⋮001000……………001−mk+1,k−mn,k……………00001
- 最终得到的 An=U 为一个上三角矩阵
- 将消去矩阵 Li 相乘取逆有 (等价于组合消元矩阵的非对角线区域, 再取负, 不能直接使用)
L=(∏Li)−1=1m2,1⋮mk,1mk+1,1⋮mn,101mk,2mk+1,2mn,2……………001mk+1,kmn,k……………00001
- 得到矩阵 A 的三角分解
直接三角分解
即直接求解方程 A=LU
- 使用未知数表示 L 与 U, 其中 L 的主对角线上为 1
- 以未知数表示 LU 的结果
- 将 A 与 LU 对照, 解出未知数, 得到三角分解
- 计算复杂度与高斯消元类似
对称矩阵的三角分解
对称矩阵可分解为
A=LDLT=(LD1/2)(D1/2L)T=L1L1T
其中 L 为主对角线上为 1 的下三角矩阵, D 为对角线矩阵, L1 主对角线上不为 1
追赶法
对于对角占优矩阵问题
A=b1a1c1b2⋱c2⋱an−1⋱bn−1ancn−1bn
其中 ∣bn∣≥∣an∣+∣cn∣ 可将其分解为矩阵 (注意此时上三角矩阵 U 的主对角线为 1)
U=1β11β2⋱⋱1βn−11L=α1r2α2⋱⋱rn−1αn−1rnαn
带入 A=LU 可得到递推公式
αi=bi−aiβi−1βi=ci/αiri=ai
并在 Ly=bUx=y 中递推解出结果
矩阵问题的病态性
特征值
Ax=λx(A−λI)x=0
- 称 λ 为矩阵的特征值, x 为特征值对应的特征向量
- 对于 A∈Rn×n, 在复数域有 n 个根
- 称最大的特征值为矩阵的谱半径, 记为 ρ(A)
当 A 的特征值为实数时, 具有以下特性
- 设 A 具有特征值 ρ(A)=λ1≫1>λ2, 对于任意向量 v, 谱半径具有特性
Av=A(ax1+bx2)=aλ1x1+bλ2x2
因此当 n 足够大
Anv=aλ1nx1+bλ2nx2≈ρ(A)nxρ
如果 ρ(A)<1, 则有
Anv≈0
- 推论可得, 矩阵变换中
- 特征向量代表变化的方向
- 特征值代表变化的程度
- 谱半径为变化最剧烈的程度, 当 ρ(A)>1 系统将不稳定
- 设 Λ 为以特征值为对角的矩阵, P 为对应单位化特征向量组成的实矩阵, 则可分解 $$A=P\Lambda P^{-1}$$
当 A 为实对称矩阵时, 具有以下特性
- 其特征值一定是实数
- 其单位化特征向量组成的矩阵 P 一定正定, 即 P−1=PT
- 对于矩阵变换 y=Ax=PΛPT, 可用几何解释
- 将 P 作为基底(将向量分解到 P 上)
- y1=PTx 旋转向量 x 到标准基底上(原始坐标轴) 注意由于 P 正交, 因此特征向量垂直, 能实现此效果, 一般的特征向量不垂直, 不会旋转到原始坐标轴上
- y2=Λy1 从原始坐标轴方向缩放旋转后的向量 y1
- y=Px 反向旋转向量 y2 到原始方向
- 因此矩阵变换可视为将向量在特征向量方向拉伸
- 特征值为拉伸的倍数
特征值求解
根据
Ax=λx(A−λI)x=0
由于 x=0, 要使此齐次方程有非零解, 要求
det(A−λI)=0
解出的 λ 即为特征值 由于 (A−λI) 为奇异矩阵, 因此方程有无数解, 同常取 ∣x∣=1
范数运算
将满足以下不等式的运算称为范数
cx=cx
x≥0
x+y≥x+y
xy≥xy
- 当满足以上条件后, 即可使用范数函数来估计向量的大小, 例如使用 1 范数估计误差, 相比 2 向量可减小计算量
向量范数
对于向量 x, 与向量内的元素 xi, 规定运算
x∞=max∣xi∣
x1=∑∣xi∣
x2=(∑xi2)1/2
xp=(∑∣xi∣p)1/p
矩阵范数
对于矩阵 A, 与矩阵内的元素 aij, 规定运算
AF=(∑aij2)1/2
- 算子范数 (利用柯西不等式条件推广 p 范数)
Av=x=0maxxvAxv
- 行范数 (v=∞, 取每行向量之和的最大值)
- 列范数 (v=1, 取每列向量之和的最大值)
- 2 范数 (v=2)
A2=λmax(AAT)
矩阵条件数
假设线性方程组有误差 δb, 则方程变为
A(x+δx)=b+δb
即
Ax=bAδx=δb
利用柯西不等式, 可得到不等式
xδx≤AA−1bδb
因此可以定义条件数, 来刻画矩阵对相对误差的放大效果
cond(A)v=AvA−1v
当 cond(A)v≫1, 称线性方程组为病态的