高斯—塞德尔迭代法

合集下载

研究生数值分析12高斯 赛德尔Gauss Seidel迭代法

研究生数值分析12高斯 赛德尔Gauss Seidel迭代法

我们用定理 2来判断高斯 -赛德尔迭代公式是否
收敛,需要考虑高斯 -赛德尔迭代矩阵 BG ? (D ? L)?1U
的特征方程 ? I ? BG ? 0

? I ? (D ? L)?1U ? 0
将上式写成 (D ? L)?1 ? (D ? L) ? U ? 0
由于
(D ? L)?1 ? 0
所以
? (D ? L) ? U ? 0
r
初始向量都收敛于方程组 AX=b的唯一解 X*
在例8例9中,我们分别用 雅可比迭代法 和高斯赛德尔迭代法 解方程组
???1?02xx11??
2x2 ? 10 x2
x3 ? ? x3
3 ?
15
??? x1 ? 2x2 ? 5x3 ? 10
雅可比迭代矩阵
? 0 0.2 0.1? BJ ? ??0.2 0 0.1??
的特征向量,即 AX= λX, (X ≠0)
由范数的性质立即可得
? X ? ? X ? AX ? A X
r
r
r
r
r
因为 X ≠0 , 所以
?? A r
即A的任一特征值的模都不超过 A r
于是 ? ( A) ? A r
定理给出了一阶线性定常迭代法 X(k?1) ? BX(k) ? f
收敛的充分条件,它表明只要迭代矩阵 B 的某种子 范数 B 小于1,立即可以断定该迭代过程对任给
?
a x (k?1) i2 2
?L
?
a x (k?1) i,i?1 i?1
?
a x (k) i,i?1 i?1
?L
? ainxn(k) ? bi)
? ??xn(k?1)
?
1 ann

高斯赛德尔法

高斯赛德尔法

的系数矩阵A可逆且主对角元素都不为零,令
)
并将A分解成
A = (A D) + D
Dx = (D A)x + b 从而方程可以写成 x = B1 x + f1 令 B = I D A, f = D b 其中
1 1 1 1
以 B 为迭代矩阵的迭代法 称为雅克比迭代法。
1
x ( k +1) = B1 x ( k ) + f1
(k ) 由雅可比迭代公式可知,在迭代的每一步计算过程中是用x 的全部分量 ( k +1 ) ( k+1) x i 时,已经算出最新的 来计算 x 的 所有分量 , 显然在计算第i个分量 分量,但没被利用。因此,将最新算出来的第k+1次近似加以利用,就 得到了高斯赛德尔迭代法。 A = D L U 将矩阵A分解成 其中 D = diag ( a11 ,a 22 ,..., a nn ) , L ,U 是A的主对角除外的下三角 和上三角部分,于是有 (D L )x = Ux + b
ρ 是迭代矩阵的谱半径(B0中绝对值最大的特征值的绝对值)
首先取 α =1.5,迭代若干次后,有 式中: 为第k 次迭代的节点电压与该节 点前次迭代值的差值的绝对值 U ( m ) U ( m 1) 为所有节点中差值绝对值最大的 ∞ Bso为加速迭代矩阵 再有
U ( m ) U ( m 1)
将上式带入最佳加速因子公式得到近似最佳加 速因子 α 。
x = B2 x + f 2 即 B = (D L ) U , f = (D L ) 其中 以 B2 为迭代矩阵的迭代法 x ( k +1) = B2 x ( k ) + f 2 称为高斯-赛德尔迭代法。

高斯—塞德尔迭代法

高斯—塞德尔迭代法
(2)按行弱对角占优:
上式至少有一个不等号严格成立。
*定义 每行每列只有一个元素是1,其余 元素是零的方阵称为置换阵(或排列阵).
定理8(对角占优定理)若矩阵A按行(或列)严格对角占优 或按行(或列)弱对角占优且不可约;则矩阵A非奇异。
定理9 若矩阵A按行(或列)严格对角占优,或按行(或列) 对角占优不可约;则Jacobi迭代、Gauss-Seidel迭代都 收敛。
高斯—塞德尔迭代法又等价于:对k=0,1,…,
三、逐次超松驰(SOR)迭代法
SOR迭代法的计算公式:对k=0,1,…,
说明:1)ω=1,GS; 2)ω>1超松驰,ω<1低松驰;
3)控制迭代终止的条件: 例3 用上述迭代法解线性代数方程组
初值x(0)=0,写出计算格式。
四、三种迭代法的收敛性
定理7 对线性方程组Ax=b,A,D非奇异,则 Jacobi迭代法收敛的充要条件是 GS迭代法收敛的充要条件是 SOR迭代法收敛的充要条件是 定义6 (1)按行严格对角占优:
证明 若矩阵A按行严格对角占优,或按行(或列)弱对角占优不可
则GS迭代收敛。假若不然,ρ(BG)≥1,即迭代矩阵BG的某一特征 值λ使得|λ|≥1,并且
类似地,若矩阵A按行严格对角占优,或按行(或列)弱对角占优不
可约,则Jacobi迭代收敛。假若不然,ρ(BJ)≥1,即迭代矩阵BJ 的某一特征值λ使得|λ|≥1,并且
定理10 对线性方程组Ax=b,若A为对称正定矩阵,则 1)GS迭代法收敛. 2)若2D-A也是对称正定矩阵,则Jacobi迭代法收敛。
例8 见书上
定理12 对于线性方程组Ax=b,若A为对称正定矩阵,则
当0<ω<2时,SOR迭代收敛. 证明 只需证明λ<1(其中λ为Lω的任一特征值) .

matlab高斯赛德尔迭代法

matlab高斯赛德尔迭代法

标题:深入探讨MATLAB中的高斯-赛德尔迭代法一、概述MATLAB是一种强大的数学计算软件,被广泛应用于科学、工程和金融等领域。

在数值分析中,迭代法是解决非线性方程组和矩阵方程组的重要方法之一。

高斯-赛德尔迭代法是其中的一种,其在求解线性方程组时具有较好的收敛性和效率。

本文将深入探讨MATLAB中高斯-赛德尔迭代法的原理和实现方法。

二、高斯-赛德尔迭代法原理高斯-赛德尔迭代法是一种求解线性方程组的迭代法。

给定线性方程组Ax=b,其中A为系数矩阵,b为常数向量,迭代法的基本思想是通过不断逼近方程组的解x。

高斯-赛德尔迭代法的迭代公式如下:\[ x^{(k+1)} = D^{-1} (b - (L+U)x^{(k)}) \]其中,D、L和U分别为系数矩阵A的对角线、严格下三角部分和严格上三角部分。

迭代法的初始值可以任意选择,通常选取一个与解接近的初值,然后通过迭代逼近真实解。

三、MATLAB中高斯-赛德尔迭代法的实现MATLAB提供了丰富的数值计算函数和工具箱,使得高斯-赛德尔迭代法的实现变得非常简单。

下面我们将介绍如何在MATLAB中使用高斯-赛德尔迭代法求解线性方程组。

1. 设置参数在使用高斯-赛德尔迭代法之前,我们首先需要设置一些参数,如系数矩阵A、常数向量b、迭代步数等。

在MATLAB中可以通过定义变量来实现这些参数的设置。

2. 编写迭代函数接下来,我们需要编写高斯-赛德尔迭代法的迭代函数。

通过编写一个MATLAB函数来实现迭代公式的计算和迭代过程的控制。

3. 调用函数求解完成迭代函数的编写后,我们就可以通过调用该函数来求解线性方程组。

在MATLAB中,可以使用循环语句控制迭代步数,并在每一步更新迭代值,直到满足收敛条件为止。

四、案例分析为了更好地理解高斯-赛德尔迭代法在MATLAB中的应用,我们以一个具体的案例来进行分析和实践。

假设我们需要求解以下线性方程组:\[ \begin{cases} 4x_1 - x_2 + x_3 = 8 \\ -x_1 + 4x_2 - x_3 = 9 \\2x_1 - x_2 + 5x_3 = 7 \end{cases} \]我们可以通过MATLAB编写高斯-赛德尔迭代法的函数,并调用该函数来求解以上线性方程组。

高斯-塞德尔(Gauss-Seidel)迭代法

高斯-塞德尔(Gauss-Seidel)迭代法

将A分裂成A =L+D+U,则 Ax b 等价于
( L+D+U )x = b
于是,则高斯—塞德尔迭代过程
Dx(k1) Lx(k1) Ux(k) b
因为 D 0 ,所以 D L D 0

(D L)x(k1) Ux (k) b
x(k1) (D L)1Ux (k) (D L)1b
数值计算方法
高斯-塞德尔(Gauss-Seidel)迭代法
1.1 高斯-塞德尔迭代法的基本思想
在Jacobi迭代法中,每次迭代只用到前一次的 迭代值,若每次迭代充分利用当前最新的迭代值,
即在求
x (k 1) i
时用新分量
x1( k
1)
,
x
(k 2
1)
,,
x (k 1) i 1
代替旧分量
x1(
k
)
,
x1(k
x
(k 2
1) 1)
( x2(k ) x3(k ) (2x1(k1)
1) / 8 x3(k) 4) /10
x3(k
1)
( x1(k 1)
x (k 1) 2
3) / 5
取初始迭代向量 x(0) (0 ,0 ,0)T ,迭代结果为:
1.2 Gauss—Seidel 迭代法的矩阵表示
令 G1 (D L)1U , d1 (D L)1b
则高斯-塞德尔迭代形式为:
x (k 1) G1 x (k ) d1
1.3 高斯—塞德尔迭代算法实现
高斯-塞德尔迭代算法的计算步骤与流程图与
雅可比迭代法大致相同,只是一旦求出变元 xi
的某个新值
后, x (k1) i
就改用新值

研究生数值分析(12)高斯-赛德尔(Gauss-Seidel)迭代法 ppt课件

研究生数值分析(12)高斯-赛德尔(Gauss-Seidel)迭代法 ppt课件

则由误差估计式知,只要 k 满足
Bk
X(1) X(0) 104
1 B
将 B J 0 . 6 , X ( 0 ) ( 0 , 0 , 0 ) T , X ( 1 ) ( 0 . 3 0 0 0 , 1 . 5 0 0 0 , 2 . 0 0 0 0 ) T
代入得 k21.18 ,故Jacobi迭代22次即可;
• “太阳当空照,花儿对我笑,小鸟说早早早……”
其矩阵表示形式为 X (k 1 ) D 1 (L X (k 1 ) U X (k ) b )
现将 X (k1) 显式化,由 (D L )X(k 1)U X(k)b

X (k 1 ) (D L ) 1 U X (k ) (D L ) 1 b
,x (k 1) i 1
求出,马上就用新分量
x1 (k 1 ),
,x (k 1 ) i 1
代替雅可比迭代法中
来求 x1(k), ,xi 1(k)
x (k 1) i
, 这就是高斯-赛德尔(Gauss-Seidel)迭代法。
高斯-赛德尔迭代公式如下:
x1(k1)
1 a11
(a12
x (k) 2
a13x3(k)
2
x1
10 x2
x3
15
x1 2x2 5x3 10
雅可比迭代矩阵
0 0.2 0.1 BJ 0.2 0 0.1
0.2 0.4 0
BJ
0.61
雅可比迭代过程必收敛;
高斯-赛德尔迭代矩阵
0 BG 0
0
0.2 0.04 0.056
0.1
0.12
0.068
BG 0.31 高斯-赛德尔迭代过程也收敛。
出如下结论。

高斯赛德尔与超松弛迭代法

分别运用高斯赛德尔迭代法和超松弛迭代法解线性方程组:⎪⎪⎪⎭⎫ ⎝⎛-=⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎭⎫ ⎝⎛--243024410143034321x x x 。

1. 高斯赛德尔迭代法编程思路:高斯赛德尔迭代法实在雅克比迭代法的基础上进行优化得到的,即在进行迭代时,将已经算得的第k+1步的迭代值代入第k+1步后边的变量的计算当中去,从而加快了迭代速度。

程序代码:function varargout=Gauss_Seidelli(varargin)A=[4 3 0;3 4 -1;0 -1 4];b=[24 30 -24]';x0=[0;0;0];x=Gauss_Seidel(A,b,x0)function x=Gauss_Seidel(A,b,x0)n=100;%最大迭代次数ee=0.0001;%精度n1=length(b);for i=1:nx1=x0;for j=1:n1s=0;for k=1:n1if k~=js=s+A(j,k)*x0(k);endendx0(j)=(b(j)-s)/A(j,j);endif norm(x1-x0)<eebreakendendx=x0;2. 超松弛迭代法该方法是在高斯赛德尔迭代法的基础上将前一步的结果)(k i x 和)1( k i x 进行适当的线性组合以加速收敛,松弛因子ω的选择是关键,当1<ω<2时,即为超松弛迭代法。

程序代码:function varargout=SORli(varargin)clcA=[4 3 0;3 4 -1;0 -1 4];b=[24;30;-24];x0=[0;0;0];w=1.3;x=SOR(A,b,x0,w);for i=1:3fprintf('%4.2f ',x(i));endfprintf('\n');function x=SOR(A,b,x0,w)%AX=b%x0初始点%w 为 松弛因子n=100;%最大迭代次数ee=0.0001;%精度n1=length(b);for i=1:nx1=x0;for j=1:n1s=0;for k=1:n1if k~=js=s+A(j,k)*x0(k);endendx0(j)=(1-w)*x0(j)+w*(b(j)-s)/A(j,j);endif norm(x1-x0)<eebreakendendx=x0;。

高斯-赛得尔迭代法


9
1.200 0
1.399 6 1.600 1
23
解线性方程组的迭代法
所以,方程组有解
x(k1) L~x(k1) U~x(k ) g
0 b12 b13
U~
0 b23 0
0
b1n
b2n
bn1n
0
移项可得
(I L%)x(k1) U~x(k ) g
(3 14)
5
解线性方程组的迭代法
(I L%)x(k1) U~x(k ) g
因为 I L~ 1, 故(I L~)1 存在,上式可改写成
10
解线性方程组的迭代法
例 用Gauss-Seidel迭代法求线性方程组
10x1 x2 2x3 72,
x1 10x2 2x3 83,
x1 x2 5x3 42,
x1 0.1x2 0.2x3 7.2 x2 0.1x1 0.2x3 8.3 x3 0.2x1 0.2x2 8.4
)
)
j i 1
x(k) i
(i 1, 2,L , n)
(3 18)
若将x 看作修正项,则Gauss-Seidel迭代的第k次
近似解 x (k ) 以此项修正后得到新的近似解
x(k1) x(k ) x.
松弛法是将 x 乘上一个参数因子
作为修正项而得到新的近似解,
17
解线性方程组的迭代法
其具体公式为 即
0407104071040718040710407040718代入上式得23解线性方程组的迭代法24解线性方程组的迭代法所以方程组有解与精确解比较误差为松弛法的迭代公式319的矩阵表示为25解线性方程组的迭代法存在从而有存在式320可以写为p3027解线性方程组的迭代法opt松弛因子的选取对收敛速度影响极大但目前尚无可供实用的计算最佳松弛因子的方法

高斯-赛得尔迭代法


0

L~ D 1L, U~ D1U
于是 I L~ D1D D1L D1(D L) (3 16)
7
解线性方程组的迭代法
x(k1) (I L~)1U~x(k ) (I L~)1 g I L~ D1D D1L D1(D L) L~ D 1L, U~ D1U
将式(3-16)代入式(3-15)得
b1n xn(k)
g1
x2(k
1)
b x (k1) 21 1
b23x3(k) L
b x (k 2n1 n1
)
b2nxn(k)
g2
M
x (k1) n
b x (k1) n1 1
bn2x2(k1)
bn3x3(k1)
L
b x (k1) nn1 n1
gn
(3 13)
p4
2
解线性方程组的迭代法
b2n xn(k )
g2
M
x (k 1) n
bn1x1(k )
bn2 x2(k )
bn3 x3(k )
L
bnn
1xn
( 1
k
)
gn
其中
bij
aij aii
,
gi
bi aii
(i j,i, j 1, 2,L , n),
(i 1, 2,L , n).
(3 12)
1
解线性方程组的迭代法
因此,在Jacobi迭代法的计算过程中,要同时保留
即每算出新近似解的一个分量
x , ( k 1) i
再算下一个
x 分量
x(k 1) i 1
时,用新分量
x(k 1) i
代替老分量
(k ) i
进行计算。这样,在整个计算过程中,只需用n个

雅克比迭代法和高斯赛德尔迭代法的算法描述

雅克比迭代法和高斯赛德尔迭代法的算法描述一. 雅克比迭代法雅克比迭代法(Jacobi Iteration)是计算数值解的一种迭代方法,它遵循一个简单的步骤:给定问题的初始值,按照一定的规则,用求出某一个矩阵元素,替换当前值,得到下一个矩阵值,重复这个步骤,直到满足某一个条件,即为所求解的结果。

雅克比迭代法求解矩阵问题的一般步骤为:(1)给定初始矩阵A和右端值矩阵B,将第i行第j列的元素表示为aij,bi;(2)第i行其它元素之和定义为s(i) =∑(j≠i)|a(i, j)|,亦即∑|aij|;(3)如果s(i)不等于0,则第i行第i列元素的值更新为xi=1 (b(i) ∑(j≠i)[a(i, j)x(j)])/a(i, i)(4)重复步骤3,直到满足|X(i)X(i)|<ε(ε为设定的误差),此时x即为所求解的结果。

二. 高斯-赛德尔迭代法高斯-赛德尔迭代法(Gauss-Seidel Iteration)是另一种迭代方法,算法的基本思想也是:通过迭代,计算出当前矩阵的第i行第j列的元素xi;然后更新第i行第j列元素的值,继续迭代,直到某种条件满足,即可求出矩阵的解。

高斯-赛德尔迭代法的基本步骤为:(1)给定初始矩阵A和右端值矩阵B,将第i行第j列的元素表示为aij,bi;(2)第i行其它元素之和定义为s(i) =∑(j≠i)|a(i, j)|,亦即∑|aij|;(3)如果s(i)不等于0,则第i行第i列元素的值更新为xi=1 (b(i) ∑(j<i)[a(i, j)x(j)]∑(j>i)[a(i,j)x(j)] )/a(i, i)(4)重复步骤3,直到满足|X(i)X(i)|<ε(ε为设定的误差),此时x即为所求解的结果。

总结从上面的对比来看,雅克比迭代法和高斯赛德尔迭代法的步骤基本一致,均采用迭代的方式求解矩阵A的解X,不同的是,高斯赛德尔迭代法在更新矩阵A的第i行第i列元素时,采用把小于i的j元素的值替换成当前迭代求得的值来计算,而雅克比迭代法采用把全部j元素的值替换成当前迭代求得的值来计算。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(1.4)

x(k+1)=B0x(k)+f, (k=0,1,2,…)
0.000187 , 其中ε (10) x (10) x * .
x (10) (3.000032 , 1.999838 , 0.9998813 )T , ε (10)

一般地,由Ax b变形得到等价的x Bx f .
第 6章
解线性代数方程组的迭代法
§1 引言
考虑线性方程组
a11x1 a12 x2 a1n xn b1 a x a x a x b 21 1 22 2 2n n 2 an1x1 an2 x2 ann xn bn
§2
考虑线性方程组
基本迭代法
a11x1 a12 x2 a1n xn b1 a x a x a x b 21 1 22 2 2n n 2 an1x1 an2 x2 ann xn bn
也就是
Ax=b.
(2.1)
k
是解, 否则迭代法发散.
引进误差向量ε ( k ) x ( k ) x*,则由(1.6) (1.5)得 ε ( k 1) Bε ( k ) B k ε ( 0) .
收敛: lim ε ( k ) 0 lim B k 0.
k k
要研究B满足什么条件下B k 0( k ) .
( k 1) (k ) (k ) x1 (3 x2 2 x3 20) / 8, ( k 1) (k ) (k ) x ( 4 x x 33) / 11, 2 1 3 x ( k 1) ( 6 x ( k ) 3 x ( k ) 36) / 12. 1 2 3

也就是
AX=b.
(1.1)
低阶稠密的线性方程组用直接法(如高斯消去法和三 角分解法)。
大型稀疏非带状的线性方程组(n很大,且零元素很多. 如偏微方程数值解产生的线性方程组,n≥104)的求解 问题? 零元素多,适合用迭代法。 我们将介绍迭代法的一般理论及雅可比迭代法、高 斯—塞德尔迭代法,研究它们的收敛性。 例1 求解线性方程组
一、雅可比迭代法
设aii 0(i 1,2,, n), 从(2.1)的第i个方程中解出xi ,
1 x 1 a (b1 a12 x2 a1n xn ) 11 i 1 n 1 xi (bi aij x j aij x j ) aii j 1 j i 1 1 (bn an1 x1 an,n1 xn 1 ) xn a nn
进行矩阵分裂
A=M-N,
(2.2)
其中M为可选择的非奇异矩阵,且使Mx=d容易求解. 于是, Ax=b⇔x=M-1Nx+M-1b.
可得一阶定常迭代法:
取初始向量x ( 0), ( k 1) (k ) x Bx f , k 0,1,,
(2.3)
其中B M 1 N M 1 ( M A) I M 1 A, f M 1b.
就有
Dx
( k 1)
Lx
(k )
Ux
(k )
b

雅可比迭代法的矩阵表示形式为 x ( k 1) D 1 ( L U ) x ( k ) D 1b BJ x ( k ) f
精确解x*=(3,2,1)T.
改写(1.2)为
(1.3)
x1 1 (3 x2 2 x3 20), 8 1 x2 11 ( 4 x1 x3 33), x 1 ( 6 x 3 x 36). 1 2 3 12
或写为x=B0x+f,即
x1 0 x 4 2 11 6 x3 12
设有解x*,则 x* Bx * f (1.5)
又设任取初值x (0) , 则可构造迭代序列 x ( k 1) Bx ( k ) f (1.6)
定义1 (1)对于方程组x Bx f,用公式(1.6)逐步代入求 近似解的方法称为迭代法( 一阶定常迭代法) .
(2)若 lim x ( k )存在(记为x*),则称此迭代法收敛, 显然x *
3 8
0
3 12
2 8 1 11 0
20 x1 8 x 33 . 2 11 36 x3 12
任取初值,如x(0)=(0,0,0)T,代入(1.3)得到x(1)= (2.5,3,3)T. 反复迭代
0 a11 0 a12 a1n a 0 a22 0 21 ,U , L . D an1,n a a 0 a 0 n 1 n , n 1 nn
8 x1 3 x2 2 x3 20, 4 x1 11x2 x3 33, 6 x 3 x 12 x 36. 1 2 3 (1.2)
记为Ax=b,即
8 4 6 3 11 3 2 1 12 x1 20 x 33 . 2 x3 36
可以得到计算公式(雅可比迭代法) :对k=0,1,…, ( 0) ( 0) T x ( 0) ( x1 ,, xn ) , n ( k 1 ) xi (bi aij x (jk ) ) / aii , (i 1,, n) j 1 j i
采用矩阵分裂记号 A D L U, 其中
相关文档
最新文档