《计算方法》笔记之(五)线性代数方程组之 解线性方程组的迭代法


解线性方程组 A x = b Ax = b Ax=b 可以有两种方法:

  1. 准确方法
    例如高斯消去法等
  2. 迭代方法
    从某个特殊值出发,按照一个适当的计算法则,逐次计算出 x 的值,不断地逼近准确值。

基本迭代法

迭代法实质上是指:有这么一个函数 φ ( x ) \varphi(x) φ(x) ,初始近似向量 x ( 0 ) {x^{(0)}} x(0) 使得:
x ( 1 ) = φ ( x ( 0 ) ) x^{(1)}=\varphi(x^{(0)}) x(1)=φ(x(0))
x ( 2 ) = φ ( x ( 1 ) ) x^{(2)}=\varphi(x^{(1)}) x(2)=φ(x(1))

x ( k ) = φ ( x ( k − 1 ) ) x^{(k)}=\varphi(x^{(k-1)}) x(k)=φ(x(k1))

x ( ∗ ) = φ ( x ( ∗ ) ) x^{(*)}=\varphi(x^{(*)}) x()=φ(x())

迭代法是一种逐次近似的方法,需解决的问题:
(1) 如何确定初始近似向量 x ( 0 ) {x^{(0)}} x(0)
(2) 如何构造一种迭代格式,由 x ( k − 1 ) {x^{(k - 1)}} x(k1) 计算 x ( k ) {x^{(k)}} x(k)
(3) 证明所得到的向量序列 { x ( k ) } \left\{ { {x^{(k)}}} \right\} { x(k)} 收敛性
(4) 若 { x ( k ) } \left\{ { {x^{(k)}}} \right\} { x(k)} 收敛于 x,x 是否是原方程的解
(5) 若 x 是原方程组的解,那么当 k 足够多大时, x ( k ) {x^{(k)}} x(k) 的可以作为解的一个近似

在迭代的过程中最简单的函数是线型函数:
y = a x + b y=ax+b y=ax+b
对于向量:
Y = G X + d Y=GX+d Y=GX+d

根据 x ( ∗ ) = φ ( x ( ∗ ) ) x^{(*)}=\varphi(x^{(*)}) x()=φ(x())

x ( ∗ ) = G x ( ∗ ) + d x^{(*)}=Gx^{(*)}+d x()=Gx()+d
( I − G ) x ( ∗ ) = d (I-G)x^{(*)}=d (IG)x()=d

{ G = I − A d = b \left\{\begin{matrix} G=I-A\\ d=b \end{matrix}\right. { G=IAd=b

其中 G = ( g i j ) n × n , d = ( d 1 , d 2 , . . . , d n ) T G = {\left( { {g_{ij}}} \right)_{n \times n}},d = {\left( { {d_1},{d_2},...,{d_n}} \right)^T} G=(gij)n×n,d=(d1,d2,...,dn)T

由此可用 x ( k ) = G x ( k − 1 ) + d k = 0 , 1 , 2 , . . . . , {x^{(k)}} = G{x^{(k - 1)}} + d{\rm{ }}_k = 0,1,2,...., x(k)=Gx(k1)+dk=0,1,2,...., 计算迭代序列 { x ( k ) } \left\{ { {x^{(k)}}} \right\} { x(k)}

Jacobi 迭代

{ a 11 x 1 + a 12 x 2 + ⋯ + a 1 n x n = b 1 a 21 x 1 + a 22 x 2 + ⋯ + a 2 n x n = b 2 ⋮ a n 1 x 1 + a n 2 x 2 + ⋯ + a n n x n = b n \left\{ {\begin{matrix} { {a_{11}}{x_1} + {a_{12}}{x_2} + \cdots + {a_{1n}}{x_n} = {b_1}}\\ { {a_{21}}{x_1} + {a_{22}}{x_2} + \cdots + {a_{2n}}{x_n} = {b_2}}\\ \vdots \\ { {a_{n1}}{x_1} + {a_{n2}}{x_2} + \cdots + {a_{nn}}{x_n} = {b_n}} \end{matrix}} \right. a11x1+a12x2++a1nxn=b1a21x1+a22x2++a2nxn=b2an1x1+an2x2++annxn=bn
改写为:
{ x 1 = ( b 1 − a 12 x 2 − a 13 x 3 ⋯ − a 1 n x n ) / a 11 x 2 = ( b 2 − a 21 x 1 − a 23 x 3 ⋯ − a 2 n x n ) / a 22 ⋮ x n = ( b n − a n 1 x 1 − a n 2 x 2 ⋯ − a n n − 1 x n − 1 ) / a n n \left\{ {\begin{matrix} {x_1} = ({b_1} - {a_{12}}{x_2} - {a_{13}}{x_3} \cdots - {a_{1n}}{x_n})/{a_{11}}\\ { {x_2} = ({b_2} - {a_{21}}{x_1} - {a_{23}}{x_3} \cdots - {a_{2n}}{x_n})/{a_{22}}}\\ \vdots \\ { {x_n} = ({b_n} - {a_{n1}}{x_1} - {a_{n2}}{x_2} \cdots - {a_{nn - 1}}{x_{n - 1}})/{a_{nn}}} \end{matrix}} \right. x1=(b1a12x2a13x3a1nxn)/a11x2=(b2a21x1a23x3a2nxn)/a22xn=(bnan1x1an2x2ann1xn1)/ann
得到迭代格式:

x i ( k ) = 1 α i i [ ∑ j = 1 , j ≠ i n α i j x j ( k − 1 ) ] , i = 1 , 2 , . . . , n x_i^{(k)} = \frac{1}{\alpha _{ii}} \left[\sum_{j = 1,j \ne i}^n {\alpha _{ij}}x_{_j}^{(k - 1)}\right] ,i = 1,2,...,n xi(k)=αii1j=1,j̸=inαijxj(k1),i=1,2,...,n
迭代公式为:
{ x 1 ( k ) = ( b 1 − a 12 x 2 ( k − 1 ) − a 13 x 3 ( k − 1 ) ⋯ − a 1 n x n ( k − 1 ) ) / a 11 x 2 ( k ) = ( b 2 − a 21 x 1 ( k − 1 ) − a 23 x 3 ( k − 1 ) ⋯ − a 2 n x n ( k − 1 ) ) / a 22 ⋮ x n ( k ) = ( b n − a n 1 x 1 ( k − 1 ) − a n 2 x 2 ( k − 1 ) ⋯ − a n n − 1 x n − 1 ( k − 1 ) ) / a n n \left\{ {\begin{matrix} {x_1^{(k)} = ({b_1} - {a_{12}}x_2^{(k - 1)} - {a_{13}}x_3^{(k - 1)} \cdots - {a_{1n}}x_n^{(k - 1)})/{a_{11}}}\\ {x_2^{(k)} = ({b_2} - {a_{21}}x_1^{(k - 1)} - {a_{23}}x_3^{(k - 1)} \cdots - {a_{2n}}x_n^{(k - 1)})/{a_{22}}}\\ \vdots \\ {x_n^{(k)} = ({b_n} - {a_{n1}}x_1^{(k - 1)} - {a_{n2}}x_2^{(k - 1)} \cdots - {a_{nn - 1}}x_{n - 1}^{(k - 1)})/{a_{nn}}} \end{matrix}} \right. x1(k)=(b1a12x2(k1)a13x3(k1)a1nxn(k1))/a11x2(k)=(b2a21x1(k1)a23x3(k1)a2nxn(k1))/a22xn(k)=(bnan1x1(k1)an2x2(k1)ann1xn1(k1))/ann

Gauss-Seidel 迭代

在 Jacobi 迭代迭代中,当计算第 i 个分量 x i ( k ) x_i^{(k)} xi(k) 时,前面 i-1 个分量 x 1 ( k ) , x 2 ( k ) , . . . , x i − 1 ( k ) x_1^{(k)},x_2^{(k)},...,x_{i - 1}^{(k)} x1(k),x2(k),...,xi1(k) 都已经计算出来了,可以使用它们来计算 x i ( k ) x_i^{(k)} xi(k)
x i ( k ) = 1 a i i [ β i − ∑ j = 1 i − 1 α i j x j ( k ) − ∑ j = i + 1 n α i j x j ( k − 1 ) ] i = 1 , 2 , . . . , n , k = 1 , 2 , . . . x_{_i}^{(k)} = \frac{1}{ { {a_{ii}}}}\left[ { {\beta _i} - \sum\limits_{j = 1}^{i - 1} { {\alpha _{ij}}x_j^{(k)}} - \sum\limits_{j = i + 1}^n { {\alpha _{ij}}x_j^{(k - 1)}} } \right]{\rm{ }}i = 1,2,...,n,k = 1,2,... xi(k)=aii1[βij=1i1αijxj(k)j=i+1nαijxj(k1)]i=1,2,...,n,k=1,2,...

{ x 1 ( k ) = ( b 1 − a 12 x 2 ( k − 1 ) − a 13 x 3 ( k − 1 ) ⋯ − a 1 n x n ( k − 1 ) ) / a 11 x 2 ( k ) = ( b 2 −

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值