线性方程组解法

本文最后更新于:2022年7月27日 凌晨

线性方程组解法

ps 意识到写这个东西比较费时间。。收益比不太高。。所以打算随着自己性子写了。。指此类的只给自己总结看了。。随性有的写一些证明

1_Gauss消去法

简单介绍两种Gauss消去法

顺序Gauss消去法

对于一线性方程组,可将其转化为增广矩阵表示如下:

A~=[A,b]=[a11a12a1na1,n+1a21a22a2na2,n+1an1an2annan,n+1]\tilde{\boldsymbol{A}}=[\boldsymbol{A}, \boldsymbol{b}]=\left[\begin{array}{cccccc} a_{11} & a_{12} & \cdots & a_{1 n} & \vdots & a_{1, n+1} \\ a_{21} & a_{22} & \cdots & a_{2 n} & \vdots & a_{2, n+1} \\ \vdots & \vdots & & \vdots & \vdots & \vdots \\ a_{n 1} & a_{n 2} & \cdots & a_{n n} & \vdots & a_{n, n+1} \end{array}\right]

通过不断消元后得到上三角矩阵,再进行回代求解**xx**

A~[a11a12a1na1,n+10a22a2na2,n+100annan,n+1]\tilde{A}\approx\left[\begin{array}{cccccc} a_{11} & a_{12} & \cdots & a_{1 n} & \vdots & a_{1, n+1} \\ 0 & a_{22} & \cdots & a_{2 n} & \vdots & a_{2, n+1} \\ \vdots & \ddots & \ddots & \vdots & \vdots & \vdots \\ 0 & \cdots & 0 & a_{n n} & \vdots & a_{n, n+1} \end{array}\right]

以上即是顺序GaussGauss消去法的主要内容

其可运行的条件为

定理2.1 其前n1n-1个主元素均不为零的充要条件是系数矩阵的前n1n-1个顺序主子式不为零

列主元的Gauss消去法

相比于顺序Gauss消去法,列主元方法便是多了一步交换操作,在第k次消元前,对增广炬阵[A(k),b(k)][A^{(k)},b^{(k)}]做第一种初等行变换(交换两行),将绝对值最大的元素交换到第k行的主对角线位置上。

主要是为了增加数值稳定性,相较于有更好的精度,易知计算量与顺序Gauss消去法相同

定理2.2设方程组的系数矩阵非奇异,则用列主元Gauss消去法求解时,各个列主元均不为零

可见列主元的Gauss消去法的条件也比上述更宽泛,只要求系数矩阵非奇异即可运行

2_直接三角分解法

Doolittle分解法与Crout分解法

易知任意一个矩阵有LU分解使得A=LUA = LU,其中L是上三角矩阵,U是下三角矩阵

此时对于方程Ax=yLy=b,Ux=yAx = y\Rightarrow Ly = b,Ux=y,两步对比较容易求解的三角矩阵得到xx,

定理2.3 矩阵A有唯一的Doolittle分解的充要条件是系数矩阵的前n1n-1个顺序主子式不为零

值得一提的是,此分解与Gauss消元基本是等价的只是不同表示

其大体表示如下:

A=LU=[1l211ln1ln,n11][u11u12u1nu22u2nunn]\boldsymbol{A}=\boldsymbol{L} \boldsymbol{U}=\left[\begin{array}{cccc} 1 & & & \\ l_{21} & 1 & & \\ \vdots & \ddots & \ddots & \\ l_{n 1} & \cdots & l_{n, n-1} & 1 \end{array}\right]\left[\begin{array}{cccc} u_{11} & u_{12} & \cdots & u_{1 n} \\ & u_{22} & \cdots & u_{2 n} \\ & & \ddots & \vdots \\ & & & u_{n n} \end{array}\right]

而后就可以找到矩阵的分解计算公式

{k=1,2,,nukj=akjr=1k1lkrurj(j=k.k+1,,n)lik=(aikr=1k1litutk)/ukk(i=k+1,,n)\begin{cases} k = 1,2,\cdots,n \\ u_{kj} = a_{kj}-\sum\limits_{r=1}^{k-1}l_{kr}u_{rj}\quad(j=k.k+1,\cdots,n) \\ l_{ik} = (a_{ik}-\sum\limits_{r=1}^{k-1}l_{it}u_{tk})/u_{kk}\quad(i=k+1,\cdots,n) \\ \end{cases}

此外对于Crout分解与Doolittle分解类似,只是一些细节的变化,基本原理相同,此处不多赘述

A=L~U~=[l11ln1lnn][1u12u1nun1,n1]\boldsymbol{A}=\tilde{\boldsymbol{L}} \tilde{\boldsymbol{U}}=\left[\begin{array}{ccc} l_{11} & & \\ \vdots & \ddots & \\ & & \\ l_{n 1} & \cdots & l_{n n} \end{array}\right]\left[\begin{array}{cccc} 1 & u_{12} & \cdots & u_{1 n} \\ & \ddots & \ddots & \vdots \\ & & \ddots & u_{n-1, n} \\ & & & 1 \end{array}\right]

对于分解法同样有对应的列主元法,通过交换主元来实现分解

定理2.4若矩阵A非奇异,则存在置换矩阵Q使得QA可做Doolittle分解QA=LUQA = LU

2.3 矩阵的条件数与病态方程组

2.3.1 矩阵的条件数

  • 条件数:对于任何精确的数据,存入计算机中也往往受到限制变为近似数,研究因变量与系数矩阵有了微小变化使得最终解向量的变化相关的量称为矩阵A的条件数

定理2.6 设A, ΔARn×n,b,ΔbRn,AA, \ \Delta A\in R^{n\times n},b,\Delta b\in R^n,A非奇异b0,x,b\not= 0,x是方程组Ax=bAx=b的解向量。若有A<1A1||A|| < \frac 1{||A^{-1}||}

  1. 方程组(A+ΔA)(x+Δx)=b+Δb(A+\Delta A)(x+\Delta x) = b+\Delta b 有唯一解x+Δxx+\Delta x

  2. 下面估计式成立

    ΔxxA A11ΔA A1(ΔAA+Δbb)\frac{||\Delta x||}{||x||}\le\frac{||A||\ ||A^{-1}||}{1-||\Delta A||\ ||A^{-1}||}\big( \frac{||\Delta A||}{||A||} +\frac{||\Delta b||}{||b||} \big)

根据上式可知主要影响因素为A A1||A||\ ||A^{-1}||,于是将其定义为条件数cond(A)=A A1cond(A) = ||A||\ ||A^{-1}||

2.3.2 病态方程组的求解问题

  • 判断线性方程组Ax=bAx=b是否病态
    1. detA|det A|较小或者,某些行列近似线性相关
    2. 列主元GaussGauss求解方程组时,出现小的列主元aikk(k)<<1|a_{i_k^k}^{(k)}|<<1
    3. 分别用b,Δb(Δb1)b , \Delta b(\Delta b\ll1)作为右端向量,结果相差较大
    4. 矩阵的元素数量级相差较大,且无一定规则
  • 一般方法
    1. 高精度算术运算:双精度
    2. 平衡方法,同时左乘矩阵

2.4 迭代法

适用:常用与求解大型稀疏线性方程组

基本步骤:构建无限的向量序列,使其极限是方程组的解向量,使用精度控制

一般形式:

将系数矩阵分解为两个矩阵的差,其中N非奇异,

A=NPA = N-P

代入Ax=bAx=b中,Nx=Px+bNx = Px+b即:x=N1Px+N1bx= N^{-1}Px+N^{-1}b

记作x=Gx+dx = Gx+d(对应替代)

定理2.7 设有向量序列{x(k)}\{x^{(k)}\}和常向量x^*,若对某种范式,有{x(k)}\{x^{(k)}\}limkx(k)x=0\lim\limits_{k\to \infty}||x^{(k)}-x^*|| = 0则必有limkx(k)=x\lim\limits_{k\to \infty}x^{(k)} = x^*

定理2.8 对任意的向量d,迭代法收敛的充要条件是ρ(G)<1\rho(G)<1其中ρ(G)\rho(G)表示矩阵G的谱半径

定理2.9 若矩阵某种范式G<1||G||<1,则

  1. 方程组的解xx^*唯一
  2. 对于迭代公式,有limkx(k)=x\lim\limits_{k\to \infty}x^{(k)} = x^*
    x(k)x<Gk1Gx(1)x(0)||x^{(k)}-x^*||<\frac{||G||^k}{1-||G||}||x^{(1)}-x^{(0)}||,
    x(k)x<G1Gx(k)x(k1)||x^{(k)}-x^*||<\frac{||G||}{1-||G||}||x^{(k)}-x^{(k-1)}||

2.4.2 JabobiJabobi迭代法

若系数矩阵AA满足条件aii0a_{ii}\not =0AA分解为三个矩阵A=D+L+UA=D+L+U

D=[a11a22ann],L=[0a210an1an,n10],U=[0a12a1n0an1.n0]\boldsymbol{D}=\left[\begin{array}{cccc} a_{11} & & & \\ & a_{22} & & \\ & & \ddots & \\ & & & a_{n n} \end{array}\right], \quad \boldsymbol{L}=\left[\begin{array}{cccc} 0 & & \\ a_{21} & 0 & & \\ \vdots & \ddots & \ddots & \\ a_{n 1} & \cdots & a_{n, n-1} & 0 \end{array}\right], \quad \boldsymbol{U}=\left[\begin{array}{cccc} 0 & a_{12} & \cdots & a_{1 n} \\ & 0 & \ddots & \vdots \\ & & \ddots & a_{n-1 . n} \\ & & & 0 \end{array}\right]

代入上述的迭代法一般式可得到如下迭代公式

x(k+1)=D1(L+U)x(k)+D1bx^{(k+1)} = -D^{-1}(L+U)x^{(k)}+D^{-1}b

迭代矩阵为G=D1(L+U)G = -D^{-1}(L+U)

引理 若矩阵是主对角线按行或按列严格占优矩阵,则矩阵是非奇异矩阵

证明:

若是严格占优,则满足条件aii>j=1jinaij|a_{ii}|>\sum\limits_{j=1 j\not=i}^n|a_{ij}|

对于A=D+L+U=D(IG)A = D+L+U = D(I-G)则根据AAG=max1inj=1jinaijaii<1||G||_\infty = \mathop{max}\limits_{1\le i\le n}\sum\limits_{j=1 j\not=i}^n \frac{|a_{ij}|}{|a_{ii}|}<1

GG的谱半径小于1,IGI-G必非奇异,于是系数矩阵AA非奇异

定理2.12 若系数矩阵是主对角线按行或按列严格占优矩阵,则JacobiJacobi迭代法求解必收敛

证明:

假定不收敛,则根据充要条件知迭代矩阵必有一特征值μ1\mu\ge1,

则有det(μIG)=0μndetD1det[D+μ1(L+U)]=0det(\mu I-G) = 0\Rightarrow \mu^ndet D^{-1}\cdot det[D+\mu^{-1}(L+U)] = 0

但若系数矩阵是严格占优矩阵,则D+μ1(L+U)D+\mu^{-1}(L+U)也严格占优,则根据引理知不是奇异矩阵,并且D1D^{-1}自然非奇异,因此矛盾。

PS 看着有点绕实际上很简单,实例如下

%E7%BA%BF%E6%80%A7%E6%96%B9%E7%A8%8B%E7%BB%84%E7%9A%84%E8%A7%A3%E6%B3%95%209c3fea6a6cda4bccb4e88c2b0bc82568/Untitled%205.png

2.4.3 GaussSeidelGauss-Seidel迭代法

整体收敛于其他证明与上述类似,形式上的变化为尽量的使用新的迭代的数,即

%E7%BA%BF%E6%80%A7%E6%96%B9%E7%A8%8B%E7%BB%84%E7%9A%84%E8%A7%A3%E6%B3%95%209c3fea6a6cda4bccb4e88c2b0bc82568/Untitled%206.png

迭代公式为:x(k+1)=(D+L)1(U)x(k)+(D+L)1bx^{(k+1)} = -(D+L)^{-1}(U)x^{(k)}+(D+L)^{-1}b

2.4.4 逐次超松弛迭代法

对于系数矩阵A的主对角元素不为零,作如下分解

A=1ωD+L+(11ω)D+UA = 1\omega D+L+(1-\frac 1\omega )D+U

有迭代公式x(k+1)=(1ωD+L)1[(11ω)D+U]x(k)+(1ωD+L)1bx^{(k+1)}=-({\frac 1\omega D+L})^{-1}[(1-\frac 1\omega )D+U]x^{(k)}+({\frac 1\omega D+L})^{-1}b

实松弛因子ω>0\omega >0,

定理2.19 SOR方法收敛的必要条件0<ω<20<\omega<2

定理2.20 若系数矩阵是主对角线按行或按列严格占优阵,则用0<ω10<\omega\le1的SOR方法必收敛

定理2.21 若系数矩阵是正定矩阵,则用0<ω<20<\omega <2的SOR方法必收敛


线性方程组解法
http://example.com/2021/07/15/Numerical Analysis/NA-Solution-of-linear-equations/
作者
BFlame
发布于
2021年7月15日
许可协议