线性方程组迭代法

  迭代法是通过迭代的方式,一步一步逼近线性方程组解。它不一定能获得精确解,但在迭代多次以后,精度可以无限接近解的真实值。所以当矩阵的维度很高时,在程序中常用这种方法来求解线性方程组。它的基本形式如下:

$x^{(k+1)} = Bx^{(k)} + f$

  通常先设置一个随机初始值$x^{(0)}$,每次通过这个迭代式子计算下一次的$x^{(k)}$,通常使用前后两次的迭代结果之差来判断迭代解是否达到要求。

  对于方程组$Ax = b$(要求$A$非奇异即可逆,否则迭代法不收敛),迭代法有以下几种:

基本迭代法

  基本迭代法就是最简单的定义,用于理解。先将$A$分解为$M - N$,其中$M$可逆,得:

$(M - N)x = b$

$Mx = Nx + b$

$x = M^{-1}Nx + M^{-1}b$

  分离出这个等式后,直接把左边的$x$作为迭代式的下一步。得到迭代式如下:

$x^{(k+1)} = M^{-1}Nx^{(k)} + M^{-1}b$

雅可比迭代法

  雅可比迭代法把$A$分解为$D、L、U$三个矩阵,分别是$A$的主对角线、主对角线全为0下三角矩阵、主对角线全为0上三角矩阵,因为要求$D$的逆,所以要求$A$主对角线元素都非0:

$(D - L - U)x = b$

$Dx = (L + U)x + b$

  得到迭代式:

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

 高斯-赛德尔迭代法

  高斯-赛德尔迭代法是基于雅可比迭代法的改进。它相对于雅可比在存储上少了一个$x$向量规模大小的存储空间,比如$x$是5维的,就少了存这5个浮点型数的空间(其它明显优势没看出来)。它实际上就是雅可比计算$x$向量的每个元素的时候,把计算结果再存回原来的元素位置。然而现在的矩阵、向量运算一般是集成好一次性计算的,所以要将它变换一下,当然这样前面说的唯一优势也没了。╮(╯▽╰)╭

  以下进行修改雅可比迭代到高斯-赛德尔:

  计算每一个元素的时候,因为$L、U$分别是主对角线为0的下、上三角阵,按照上面说的,在第$k$次的迭代中,参与计算的所有$k+1$代元素都乘在了$D^{-1}L$上,因为$D^{-1}U$的下三角都是0,乘了也没用。所以得:

$x^{(k+1)} = D^{-1}Lx^{(k+1)} + D^{-1}Ux^{(k)} + D^{-1}b$

$Dx^{(k+1)} = Lx^{(k+1)} + Ux^{(k)} + b$

$x^{(k+1)} = (D-L)^{-1}Ux^{(k)} + (D-L)^{-1}b$

SOR迭代法(逐次超松弛迭代)

  基于高斯-赛德尔迭代,它又给加一个系数。由高斯-赛德尔迭代式:

$Dx^{(k+1)} = Lx^{(k+1)} + Ux^{(k)} + b$
$Dx^{(k+1)} = Lx^{(k+1)} + Ux^{(k)} + b + Dx^{(k)} - Dx^{(k)}$

  将$Dx^{(k)}$拎出来,后面看做一个变化率一样的东西,加上一个系数$\omega$:

$Dx^{(k+1)} = Dx^{(k)} + \omega(Lx^{(k+1)} + Ux^{(k)} + b  - Dx^{(k)})$

  这个式子可以形象地看做$x^{(k)}$到$x^{(k+1)}$是通过一个向量来变化的。变化一下得到迭代式:

$x^{(k+1)} = (D-\omega L)^{-1}[(1-\omega)D+\omega U]x^{(k)}+\omega(D-\omega L)^{-1}b$ 

  对于$\omega$:$\omega$为1时,超松弛就是高斯-赛德尔,大于1时为超松弛,即迭代的步伐更快,小于1时为低松弛,迭代的步伐更小。显然越迭代到后期,$\omega$的值越要小。不然会出现震荡。

迭代法收敛条件

  对于线性方程$Ax = b$,分裂为迭代的形式:$x^{(k+1)} = Bx^{(k)}+f$。

  如果迭代法能最终收敛到$x^{(*)}=Bx^{(*)}+f$,就有:

$ \varepsilon^{(k)} := x^{(k)} - x^{(*)}, \lim\limits_{k \to +\infty}\varepsilon^{(k)} = 0$

  因为有:

$\varepsilon^{(k)} = Bx^{(k-1)}+f-Bx^{(*)}-f$

$=B(x^{(k-1)}-x^{(*)})$
$=B\varepsilon^{(k-1)}$
$=B^2\varepsilon^{(k-2)}$

$=B^k\varepsilon^{(0)}=B^k(x^{(0)}-x^{(*)})$

  所以,若:

$\lim\limits_{k \to +\infty}B^k = 0$

  有迭代收敛。因此,简化一下,当$B$的谱半径小于1时,有迭代法收敛。谱半径就是矩阵绝对值最大的特征向量的绝对值。

  实际上,一般只要$A$可逆,迭代就能收敛。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值