第五章 线性方程组的直接解法

5.1 预备知识

5.1.1 特征值与特征向量

 

5.1.2 常见的特殊矩阵

 

5.1.3 矩阵的常用定理

 

5.2 高斯消去法

5.2.1 高斯消去法

定理 5 设 Ax=b,其中 A∈Rn×n,

  1. 若 ∀k:akk(k)≠0,则可如下计算:

    1. 消元计算:Ax=b 化为 L−1Ax≡Ux=L−1b.

      {mik=aik(k)/akk(k),i=k+1,⋯,n,aij(k+1)=aij(k)−mikakj(k),i,j=k+1,⋯,n,bi(k+1)=bi(k)−mikbk(k),i=k+1,⋯,n.
    2. 回代计算:求解 Ux=L−1b.

      {xn=b(n)/ann(n),xk=(bk(k)−∑j=k+1nakj(k)xj)/akk(k),k=n−1,n−2,⋯,1.
  2. 若 A 为非奇异矩阵,则可通过高斯消去法和行交换将方程组约化为 Ux=L−1b.

备注 加减和乘除的次数均为 O(n3).


定理 6 约化的主元素非零的充要条件是 A 的顺序主子式 ∀k:Dk≠0,即

∀i:Di=|a11⋯a1i⋮⋮ai1⋯aii|≠0.

推论 若 A 的顺序主子式 ∀k:Dk≠0,则

{a11(1)=D1,akk(k)=Dk/Dk−1,k=2,3,⋯,n.

 

5.2.2 矩阵的三角分解

定理 7(LU 分解) 若 A∈Rn×n 且 ∀i:Di≠0,则可唯一分解为单位下三角矩阵和上三角矩阵的乘积,即 A=LU.

备注 有三种分解方式:

  1. Doolittle 分解

    A=LU=[1l211⋮⋮⋱ln1ln2⋯1][u11u12⋯u1nu22⋯u2n⋱⋮unn].
  2. Crout 分解

    A=LU=[l11l21l22⋮⋮⋱ln1ln2⋯lnn][1u12⋯u1n1⋯u2n⋱⋮1].
  3. LDU 分解

    A=LDU=[1l211⋮⋮⋱ln1ln2⋯1][d1d2⋱dn][1u12⋯u1n1⋯u2n⋱⋮1].

算法 1(列主元消去法)

定理 8(列主元的 LU 分解) 若 A 非奇异,则存在排列矩阵 P 使得 PA=LU.

 

5.2.3 三角矩阵的求解

  1. Ux=d 和 Lx=d.

    1. 上三角矩阵:依次计算 i=n,n−1,⋯,1.

      xi=(di−∑j=i+1nuijxj)/uii.
    2. 下三角矩阵:依次计算 i=1,2,⋯,n.

      xi=(di−∑j=1i−1uijxj)/uii.
  2. 乘除法次数

    1. 乘法次数:0+1+2+⋯+(n−1)=n(n−1)2,O(n2).

    2. 除法次数:n.

    3. 加减次数:n(n+1)2,O(n2).

  3. 逆矩阵求解公式:设 A=U−1,则 A 亦为上三角矩阵.

    {aii=1uii,i=1,2,⋯,n,aij=−∑k=i+1juikskjuii,j=i+1,i+2,⋯,n,i=n−1,n−2,⋯,1.

 

5.3 矩阵三角分解法

5.3.1 直接三角分解

 

5.3.2 平方根法

定理 9 若 n 阶对称矩阵 A 所有顺序主子式非零,则可唯一分解为 A=LDLT.

定理 10 n 阶对称正定矩阵 A 可唯一分解为 A=LLT(限定 L 对角元素为正),称为楚列斯基(Cholesky)分解.

平方根法 利用楚列斯基分解求解对称正定方程组 Ax=b.

  1. 求解 A=LLT.

    {lii=aii−∑k=1j−1lik2,i=1,2,⋯,n,lij=(aij−∑k=1j−1liklkj)/ljj,i>j.
  2. 求解 Ly=b.

  3. 求解 LTx=y.

改进的平方根法 为避免开方,分解为 A=LDLT.

 

5.3.3 追赶法

问题 Ax=f,其中

A=(b1c1a2b2c2⋱⋱⋱an−1bn−1cn−1anbn),

并且

  1. |b1|>|c1|>0.

  2. |bi|≥|ai|+|ci|,ai,ci≠0,i=2,3,⋯,n−1.

  3. |bn|>|an|>0.

分析 如下分解

A=LU=(α1γ2α2⋱⋱γnαn)(1β11⋱⋱βn−11),

于是

{b1=α1,c1=α1β1,ai=γi,bi=γiβi−1+αi,i=2,3,⋯,n,ci=αiβi,i=2,3,⋯,n−1.

归纳可证,对于 ∀i,有 |αi|>|ci|>0 和 0<|βi|<1,于是

{γi=ai,αi=bi−aiβi−1,i=2,3,⋯,nβi=ci/(bi−aiβi−1),i=2,3,⋯,n.

算法

  1. 求解 βi.

    {β1=c1b1,βi=cibi−aiβi−1,i=2,3,⋯,n−1.
  2. 求解 Ly=f.

    {y1=f1b1,yi=fi−aiyi−1bi−aiβi−1,i=2,3,⋯,n.
  3. 求解 Ux=y.

    {xn=yn,xi=yi−βixi+1,i=n−1,n−2,⋯,1.

 

5.4 向量和矩阵的范数

5.4.1 向量范数

 

5.4.2 矩阵范数

 

5.4.3 范数杂项

不那么重要(但同样有趣)的例子与性质.

 

5.5 误差分析

5.5.1 矩阵的性态

 

5.5.2 矩阵条件数

 

5.5.3 迭代改善法

  1. 求近似解

    1. 选主元三角分解:PA=LU.

    2. 求解 Ax1=b,即 {Ly=Pb,Ux1=y.

  2. 迭代:k=1,2,⋯,N0,

    1. rk=b−Axk.

    2. 求解 Adk=rk,即 LUdk=Prk.

    3. 如果 ‖dk‖∞/‖xk‖∞≤ε,则停止计算.

    4. xk+1=xk+dk.

如果矩阵非常病态,则上述算法仍可能不收敛.