跳至主要內容

线性方程组直接解法

大约 7 分钟

线性方程组直接解法

矩阵乘法

矩阵乘法不满足交换率

以列向量理解

对于矩阵乘法

AB=C AB=C

将矩阵的每一列理解为一个列向量, 矩阵与向量之积 Av=bAv=b 即表明了将 AA 的每一列为新的基底, 以最左侧为第一个轴, 经过变换后得到新的向量 bb, 此时基底矩阵位于左侧

当右侧为另一个矩阵时, 理解为一个行向量数组, 因此 ABAB 为对 BB 中每一列向量分别以 AA 为基底进行变换, 从而得到一个新的向量数组 CC

以行向量理解

将矩阵的每一行理解为一个行向量, 矩阵与向量之积 hA=chA=c 即表明了将 AA 的每一行为新的基底, 以最上方为第一个轴, 经过变换后得到新的行向量 cc, 此时基底矩阵位于右侧

当左侧为另一个矩阵时, 理解为一个行向量数组, 因此 ABAB 为对 AA 中每一行向量分别以 BB 为基底进行变换, 从而得到一个新的向量数组 CC

高斯消元法

直接高斯消元法中, 如果除数接近 00, 将导致结果不稳定

列主消元法

  1. 高斯消元中, 交换行顺序仅改变了方程的次序, 因此对结果无影响
  2. 在每次消元中, 找出消元列中绝对值最大的元素, 将其与列主交换消元

列主三角分解

列主消元法中由于交换了行, 无法完全三角分解, 还需要一个排序矩阵

PA=LU PA=LU

三角分解

AA 为非奇异矩阵, 则可以将 AA 分解为一个上三角矩阵 LL 与下三角矩阵 UU 之积

A=LU A=LU

并且通常规定 LL 的主对角线上为 11

三角分解的使用

确定 A=LUA=LU 后, Ax=bAx=b 等价于求解 L(Ux)=bL(Ux)=b

  1. Ly=bLy=b 先求出 yy
  2. Ux=yUx=y 在求出 xx

高斯消元法的三角分解

  1. 高斯消元法中, 每次消去第 kk 列, 相当于 (注意, 此时是对方程系数操作, 需要从行角度理解, 因此 AA 在右侧)

Ak+1=LkAk A_{k+1}=L_kA_k

其中

Lk=[10000100001000mk+1,k000mn,k1] L_k=\begin{bmatrix}1&0&\dots&0&\dots&0\\0&1&\dots&0&\dots&0\\\vdots\\0&0&\dots&1&\dots&0\\0&0&\dots&-m_{k+1,k}&\dots&0\\\vdots\\0&0&\dots&-m_{n,k}&\dots&1\\\end{bmatrix}

  1. 最终得到的 An=UA_n=U 为一个上三角矩阵
  2. 将消去矩阵 LiL_i 相乘取逆有 (等价于组合消元矩阵的非对角线区域, 再取负, 不能直接使用)

L=(Li)1=[1000m2,1100mk,1mk,210mk+1,1mk+1,2mk+1,k0mn,1mn,2mn,k1] L=(\prod L_i)^{-1}\\=\begin{bmatrix} 1&0&\dots&0&\dots&0\\ m_{2,1}&1&\dots&0&\dots&0\\ \vdots\\ m_{k,1}&m_{k,2}&\dots&1&\dots&0\\ m_{k+1,1}&m_{k+1,2}&\dots&m_{k+1,k}&\dots&0\\ \vdots\\ m_{n,1}&m_{n,2}&\dots&m_{n,k}&\dots&1\\ \end{bmatrix}

  1. 得到矩阵 AA 的三角分解

直接三角分解

即直接求解方程 A=LUA=LU

  1. 使用未知数表示 LLUU, 其中 LL 的主对角线上为 11
  2. 以未知数表示 LULU 的结果
  3. AALULU 对照, 解出未知数, 得到三角分解
  4. 计算复杂度与高斯消元类似

对称矩阵的三角分解

对称矩阵可分解为

A=LDLT=(LD1/2)(D1/2L)T=L1L1T A=LDL^T=(LD^{1/2})(D^{1/2}L)^T=L_1L_1^T

其中 LL 为主对角线上为 11 的下三角矩阵, DD 为对角线矩阵, L1L_1 主对角线上不为 11

追赶法

对于对角占优矩阵问题

A=[b1c1a1b2c2an1bn1cn1anbn] A=\begin{bmatrix}b_1&c_1\\ a_1&b_2&c_2\\ &\ddots&\ddots&\ddots\\ &&a_{n-1}&b_{n-1}&c_{n-1}\\ &&&a_n&b_n\end{bmatrix}

其中 bnan+cn|b_n|\ge|a_n|+|c_n| 可将其分解为矩阵 (注意此时上三角矩阵 UU 的主对角线为 11)

U=[1β11β21βn11]L=[α1r2α2rn1αn1rnαn] U=\begin{bmatrix}1&\beta_1\\ &1&\beta_2\\ &&\ddots&\ddots\\ &&&1&\beta_{n-1}\\ &&&&1\end{bmatrix}L=\begin{bmatrix}\alpha_1\\ r_2&\alpha_2\\ &\ddots&\ddots\\ &&r_{n-1}&\alpha_{n-1}\\ &&&r_n&\alpha_n\end{bmatrix}

带入 A=LUA=LU 可得到递推公式

αi=biaiβi1βi=ci/αiri=ai \\\alpha_i=b_i-a_i\beta_{i-1}\\\beta_i=c_i/\alpha_i\\r_i=a_i

并在 Ly=b  Ux=yLy=b\;Ux=y 中递推解出结果

矩阵问题的病态性

特征值

  • 对于任意矩阵 AA 有方程

Ax=λx(AλI)x=0 Ax=\lambda x\\(A-\lambda I)x=0

  • λ\lambda 为矩阵的特征值, xx 为特征值对应的特征向量
  • 对于 ARn×nA\in R^{n\times n}, 在复数域有 nn 个根
  • 称最大的特征值为矩阵的谱半径, 记为 ρ(A)\rho(A)

AA特征值为实数时, 具有以下特性

  • AA 具有特征值 ρ(A)=λ11>λ2\rho(A)=\lambda_1\gg1\gt\lambda_2, 对于任意向量 vv, 谱半径具有特性

Av=A(ax1+bx2)=aλ1x1+bλ2x2 Av=A(ax_1+bx_2)=a\lambda_1x_1+b\lambda_2x_2

因此当 nn 足够大

Anv=aλ1nx1+bλ2nx2ρ(A)nxρ A^nv=a\lambda_1^nx_1+b\lambda_2^nx_2\approx \rho(A)^nx_{\rho}

如果 ρ(A)<1\rho(A)<1, 则有

Anv0 A^nv\approx 0

  • 推论可得, 矩阵变换中
    • 特征向量代表变化的方向
    • 特征值代表变化的程度
    • 谱半径为变化最剧烈的程度, 当 ρ(A)>1\rho(A)>1 系统将不稳定
  • Λ\Lambda 为以特征值为对角的矩阵, PP 为对应单位化特征向量组成的实矩阵, 则可分解 $$A=P\Lambda P^{-1}$$

AA实对称矩阵时, 具有以下特性

  • 其特征值一定是实数
  • 其单位化特征向量组成的矩阵 PP 一定正定, 即 P1=PTP^{-1}=P^T
  • 对于矩阵变换 y=Ax=PΛPTy=Ax=P\Lambda P^{T}, 可用几何解释
    1. PP 作为基底(将向量分解到 PP 上)
    2. y1=PTxy_1=P^Tx 旋转向量 xx 到标准基底上(原始坐标轴) 注意由于 PP 正交, 因此特征向量垂直, 能实现此效果, 一般的特征向量不垂直, 不会旋转到原始坐标轴上
    3. y2=Λy1y_2=\Lambda y_1原始坐标轴方向缩放旋转后的向量 y1y_1
    4. y=Pxy=Px 反向旋转向量 y2y_2 到原始方向
    • 因此矩阵变换可视为将向量在特征向量方向拉伸
    • 特征值为拉伸的倍数

特征值求解

根据

Ax=λx(AλI)x=0 Ax=\lambda x\\(A-\lambda I)x=0

由于 x0x\neq 0, 要使此齐次方程有非零解, 要求

det(AλI)=0 det(A-\lambda I)=0

解出的 λ\lambda 即为特征值 由于 (AλI)(A-\lambda I) 为奇异矩阵, 因此方程有无数解, 同常取 x=1|x|=1

范数运算

将满足以下不等式的运算称为范数

  • 系数条件

cx=cx \begin{Vmatrix}cx\end{Vmatrix}=c\begin{Vmatrix}x\end{Vmatrix}

  • 正定条件

x0 \begin{Vmatrix}x\end{Vmatrix}\ge 0

  • 三角不等式

x+yx+y \begin{Vmatrix}x\end{Vmatrix}+\begin{Vmatrix}y\end{Vmatrix}\ge \begin{Vmatrix}x+y\end{Vmatrix}

  • 柯西不等式

xyxy \begin{Vmatrix}x\end{Vmatrix}\begin{Vmatrix}y\end{Vmatrix}\ge \begin{Vmatrix}xy\end{Vmatrix}

  • 当满足以上条件后, 即可使用范数函数来估计向量的大小, 例如使用 11 范数估计误差, 相比 22 向量可减小计算量

向量范数

对于向量 xx, 与向量内的元素 xix_i, 规定运算

  • \infty 范数

x=maxxi \begin{Vmatrix}x\end{Vmatrix}_{\infty}=max|x_i|

  • 11 范数

x1=xi \begin{Vmatrix}x\end{Vmatrix}_1=\sum|x_i|

  • 22 范数

x2=(xi2)1/2 \begin{Vmatrix}x\end{Vmatrix}_{2}=(\sum x_i^2)^{1/2}

  • pp 范数

xp=(xip)1/p \begin{Vmatrix}x\end{Vmatrix}_{p}=(\sum |x_i|^p)^{1/p}

矩阵范数

对于矩阵 AA, 与矩阵内的元素 aija_{ij}, 规定运算

  • FF 范数

AF=(aij2)1/2 \begin{Vmatrix}A\end{Vmatrix}_{F}=(\sum a_{ij}^2)^{1/2}

  • 算子范数 (利用柯西不等式条件推广 pp 范数)

Av=maxx0Axvxv \begin{Vmatrix}A\end{Vmatrix}_v=\max_{x\neq \vec{0}}\frac{\begin{Vmatrix}Ax\end{Vmatrix}_v}{\begin{Vmatrix}x\end{Vmatrix}_v}

  • 行范数 (v=v=\infty, 取每行向量之和的最大值)
  • 列范数 (v=1v=1, 取每列向量之和的最大值)
  • 22 范数 (v=2v=2)

A2=λmax(AAT) \begin{Vmatrix}A\end{Vmatrix}_2=\sqrt{\lambda_{max}(AA^T)}

矩阵条件数

假设线性方程组有误差 δb\delta b, 则方程变为

A(x+δx)=b+δb A(x+\delta x)=b+\delta b

Ax=bAδx=δb Ax=b\\ A\delta x=\delta b

利用柯西不等式, 可得到不等式

δxxAA1δbb \frac{\begin{Vmatrix}\delta x\end{Vmatrix}}{\begin{Vmatrix}x\end{Vmatrix}}\le \begin{Vmatrix}A\end{Vmatrix}\begin{Vmatrix}A^{-1}\end{Vmatrix}\frac{\begin{Vmatrix}\delta b\end{Vmatrix}}{\begin{Vmatrix}b\end{Vmatrix}}

因此可以定义条件数, 来刻画矩阵对相对误差的放大效果

cond(A)v=AvA1v cond(A)_{v}=\begin{Vmatrix}A\end{Vmatrix}_v\begin{Vmatrix}A^{-1}\end{Vmatrix}_v

cond(A)v1cond(A)_{v}\gg 1, 称线性方程组为病态的