超松弛迭代法解线性方程组讲课稿
超松弛迭代法解线性方程组
设it题目:摘要本文是在matlabll境下熟悉的运用计算机编程培言并结合超松弛变量起松弛迭代法的理论基础对方程组求解。
首先,本文以愉分方程边值问题为例,导出了离散化后线11方程组即稀疏线性方程组,转化对柿蔭线性方程组求解冋題。
其次,用起松弛(SOR)选代法编写matlab 程序,湘产生的柿疏线性方程组进行迭代法求解。
然后,分别改变松弛因子3和分段数n的值,分桥其收敛性和收敛速H, 18出各个方面的分林和比较需到相关结论。
最后,将起松弛迭代算法在it算机上运用matlab 言实现,借岀了一组与猜确解较接近的数值解,并画图比较,騎iil逐次超松弛(SOR)选代法的績确性。
关键词:柿匾线性方程组逐次超松弛迭代法松弛因子matlab编程-、间题提岀考虑两点逆值冋题为了把做分方程离IL 把[oj]E 间“等分,令/亠丄,脸=〃?,山12…山一1,得到 n 差分方程° 治 一 2)1 + X+—畑 一 X _ “or十—C< -h 2h简化为(£ + 必+i - © + 心+ % =肿,从而离散后得到的线性方程组的系数矩阵为一(2g + /?) £ + h£-(2£ + h )A =££ + /?一(2w + h )_对£ = 19 a = 0.4 , n = 200 ,分别用e = 1、6? = 0.5和e = 1.5的超松弛迭代法 求解线性方程组,要求有4也有效数字,然后比较与精确解的淚差,探讨使超松 弛选代法收敛较快的0取值,对结果进行分轿。
改变»论同wrOo二、超松弛迭代法产生的背景容易知道它的精确解为 + ax.£ + h—(2w +y =对从实际间题中借到维数相当夫的线11代数方程组的求解仍然十分困难,以至使人们不能在允许的时间内用貞接方法得到解,Slit,客观上要求用新的方法来解决大维数方程组的求解I'nJSo现有大名数迭代法不是对各类线11方程组都有收敛性,在解题时,要对原方程组葩晖作一根本的变换,从而可能使条件数变坏,也可能破坏了变换前后方程组的等价性,以员丧失使原方程组的对称II等。
SOR迭代法求解线性方程组
SOR迭代法求解线性方程组一实验名称:实验四:逐次超松弛迭代法。
二实验题目:求解下面的三元一次线性方程组:2x-y+2z=4;x+2y+3z=9;2x-2y-3z=-3;要求选取不同的松弛因子进行计算,并估计最优松弛因子的大小。
三实验目的:1.熟悉掌握逐次超松值迭代法的基本原理和基本方法。
2.学会用逐次超松弛迭代法解简单的方程组。
3.选取不同的w值(0<w<2)进行试探性的计算,从中摸索出近似的最佳松弛因子。
四基础理论:超松弛迭代法以及所涉及的主要算法为:Xi^(k+1)←(1-w)*Xi^(k)+w*Xi的共轭的(k+1)次幂。
五实验环境:Visual C++6.0。
六实验过程:1. 在程序中输入不同的数据时,会得到不同的结果。
2.大于1的时候的松弛因子,被称作超松弛法。
小于则被称做低松弛法。
由于松弛因子对方程组的收敛速度影响很大,所以在一定的误差范围内,选择不同的松弛因子时,迭代次数也会不同。
3. 按照实验题目中的数据输入时,比较结果当w=0.6时,会出现下面的结果:当w=0.7时得当w=0.8时得当w=0.9时,会出现下面的结果当w=1.0时得七结果分析:当在一定的误差范围内,有以上运行结果可以得出答案,最优松弛因子的范围为0.8。
八逐次超松弛迭代法程序代码:#include<iostream.h>#include<stdlib.h>#include<stdio.h>#include<math.h>void SOR(double w, double a[3][3], double b[3], double x[3], double esp) {double t[3];int flag=0;int n=0;while(!flag){flag=1;n++;t[0]=x[0]; t[1]=x[1]; t[2]=x[2];for(int i=0;i<3;i++){double m=b[i];for(int j=0;j<3;j++){m-=(a[i][j]*x[j]);}x[i]=x[i]+w*m/a[i][i];}for(int k=0;k<3;k++){if(fabs(x[k]-t[k])>=esp){flag=0;break;}}}printf("%d\n",n);}void main(){double a[3][3];double b[3];double x[3];double w,esp;a[0][0]=2; a[0][1]=-1; a[0][2]=2;a[1][0]=1; a[1][1]=2; a[1][2]=3;a[2][0]=2; a[2][1]=-2; a[2][2]=-3;b[0]=4; b[1]=9; b[2]=-3;x[0]= x[1]= x[2]=0;w=0.6;esp=0.0001;SOR(w,a,b,x,esp);for(int i=0;i<3;i++)printf("%f\n",x[i]);}。
超松弛迭代法
xk 1 1 xk D1 b Lx( k 1) Ux( k )
xk 1 L x( k ) ( D L)1b
(5.3.2)
再整理得
其中,迭代矩阵为
L ( D L)11 D U
4 3 0 x1 24 3 4 1 x2 30 0 1 4 x 24 3
(1 )D U x (D L) x
D L U 是实对称矩阵,所以有LT U 。上式两边与x 作内积得 (5. 3. 4) (1 )(Dx, x) (Ux, x) [(Dx, x) ( Lx, x)] 因为A正定,D亦正定,记 p ( Dx, x) ,有 p 0 。又记 ( Lx, x) i , A 这里,
k 1
xi(k 1) xi(k 1) (1 ) xi(k ) xi( k ) ( xi( k 1) xi( k )
经整理得
x
( k 1) i
x
(k ) i
(bi aij x
j 1
i 1
( k 1) j
aij x (jk ) ) aii
opt
其中
2 1 1 u2
opt 的条件。在实际应 可以证明,对称正定的三对角矩阵满足最优松弛因子 用中,一般地说计算 ( BJ ) 较困难。对某些微分方程数值解问题,可以考虑用 求特征值的近似值的方法,也可以由计算实践摸索出近似最佳松弛因子。
( BJ ) 是 J 法迭代矩阵BJ 的谱半径。
按一般的迭代法收敛的理论,SOR迭代法收敛的充分必要条件是 ( L ) 1 在什么范围内取值,SOR迭 而 ( L ) 与松弛因子 有关。下面讨论松弛因子 代法可能收敛。 定理5.7 证 如果解方程组Ax 设 L 的特征值为
数值分析课件-num_3.4超松弛迭代法
第三章 线性方程组迭代解法§ 3.4 超松弛迭代法(SOR)一、SOR法迭代公式设线性方程组AX=b≠ 0(i=1,2,⋅⋅⋅⋅⋅⋅,n )。
其中A非奇异,且aii如果已经得到第k次迭代量x (k)及第k+1次迭代量x (k+1)的前i-1个分量(x(k+1),x2 (k+1) ,⋅⋅⋅⋅⋅⋅,x i-1 (k+1) ),1在计算x(k+1)时,先用Gauss-Seidel迭代法得到i(1)选择参数ω,取(2)把 式(1)代入式(2)可以综合写成:即得超松弛法或逐次超松弛迭代法(Successive Over-Relaxation Method),简称SOR法。
或可表示成增量的形式:其中,参数ω叫做松弛因子;若ω=1,它就是Gauss-Seidel迭代法。
令A=D-L-U, SOR 法(2)式可写成:(1)1()1)[(1)]()k k XL D U XD L bωωωωω+--=-++-(D -再整理成:于是可导出SOR 法的矩阵形式:(1)()k k XB Xfω+=+其中,迭代矩阵和f 为:11)[(1)]()B L D U f D L bωωωωωω--⎧=-+⎪⎨=-⎪⎩(D -例3.6 用SOR法求解线性方程组解方程组的精确解为x=(3,4,-5)T,为了进行比较,利用同一初值x(0)=(1,1,1)T,分别取ω=1 (即Gauss-Seidel迭代法)和ω=1.25两组算式同时求解方程组。
①取ω=1 ,即Gauss-Seidel迭代:②取ω=1.25 ,即SOR迭代法:迭代结果见表3.3。
表3.3 Gauss-Seidel迭代法与SOR迭代法比较Gauss-Seidel迭代法SOR迭代法(ω=1.25)k x1x2x3x1x2x30 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.00000001 5.2500000 3.1825000-5.0468750 6.3125000 3.9195313-6.65014652 3.1406250 3.8828125-5.0292969 2.6223145 3.9585266-4.60042383 3.0878906 3.9267587-5.0183105 3.1333027 4.0402646-5.09668634 3.0549316 3.9542236-5.0114410 2.9570512 4.0074838-4.97348975 3.0343323 3.9713898-5.0071526 3.0037211 4.0029250-5.00571356 3.0214577 3.9821186-5.0044703 2.9963276 4.0009262-4.99828227 3.0134110 3.9888241-5.0027940 3.0000498 4.0002586-5.0003486迭代法若要精确到七位小数,◆ Gauss-Seidel迭代法需要34次迭代;◆而用SOR迭代法(ω=1.25),只需要14次迭代。
§8.4-解线性方程组的超松弛迭代法法
1
第八章 解线性方程组的迭代法
SOR迭代法是Gauss—Seidel 迭代法的一种修正, 可由下述思想得到.
设已知x(k)及已计算x(k+1)的分量xj(k+1) (j=1,2,,i-1).
(1) 首先用Gauss—Seidel 迭代法定义辅助量 x~i(k1),
1
1
1
4 1 1
1 4 1
1 1 4
x2 x3 x4
1 1 1
.
Hale Waihona Puke 它的精确解为x*=(-1, -1, -1, -1 )T.
解 取初始向量x(0)=0,迭代公式为
x1( k x2( k x3( k
x(11) (0.99999646, 1.00000310, 0.99999953, 0.99999912)T ,
(11) 0.46 105. 2
满足误差
(k) 105.
2
迭代次数k
对取其它值,迭代次数如表. 1.0
22
1.1
17
从此例看到,松弛因子选择
1.2
aii
.
j1
ji
i 1,2,, n 也可写作:
x(0) x(k1)
i
( x1(0) ,, xn(0)
xi(k) xi ,
)T
,
i 1
n
xi
(bi
aij
x
(k j
matlab超松弛迭代法求方程组
一、介绍MATLAB(Matrix Laboratory)是一种用于数值计算和数据可视化的专业软件。
在MATLAB中,超松弛迭代法是解决线性方程组的一种有效算法。
本文将介绍MATLAB中超松弛迭代法的基本原理和实现方法,并给出一个具体的例子进行演示。
二、超松弛迭代法的基本原理超松弛迭代法是一种逐步迭代的算法,用于求解线性方程组。
它的基本原理是通过不断迭代更新方程组的解,直到达到满足精度要求的解。
超松弛迭代法的公式如下:X(k+1) = (1-w)X(k) + w*(D-L)⁻¹*(b+U*X(k))其中,X(k)代表第k次迭代的解向量,X(k+1)代表第k+1次迭代的解向量,D、L和U分别代表方程组的对角线元素、下三角元素和上三角元素构成的矩阵,b代表方程组的右端向量,w代表松弛因子。
超松弛迭代法的关键在于选择合适的松弛因子w,一般情况下,可以通过试验选取一个合适的值。
在MATLAB中,可以使用sor函数来实现超松弛迭代法。
三、MATLAB中超松弛迭代法的实现方法在MATLAB中,可以通过调用sor函数来实现超松弛迭代法。
sor 函数的语法格式如下:[X,flag,relres,iter,resvec] = sor(A,b,w,tol,maxit)其中,A代表线性方程组的系数矩阵,b代表右端向量,w代表松弛因子,tol代表迭代的精度要求,maxit代表最大迭代次数,X代表迭代求解得到的解向量,flag代表迭代的结果标志,relres代表相对残差的大小,iter代表迭代次数,resvec代表迭代过程中的残差向量。
以下是一个使用sor函数求解线性方程组的示例:A = [4 -1 0 -1 0 0; -1 4 -1 0 -1 0; 0 -1 4 0 0 -1; -1 0 0 4 -1 0; 0 -1 0 -1 4 -1; 0 0 -1 0 -1 4];b = [1; 0; -1; 0; 1; 0];w = 1.25;tol = 1e-6;maxit = 100;[X,flag,relres,iter,resvec] = sor(A,b,w,tol,maxit);通过调用sor函数,可以得到方程组的解向量X,迭代的结果标志flag,相对残余resrel和迭代次数iter。
线性方程组的迭代法雅可比高斯塞德尔和超松弛迭代ppt课件
a11x1 a12 x2 a1n xn b1
a21 x1
a22 x2
a2n xn
b2
an1x1 an2 x2 ann xn bn
写据成此建立n 迭ai代j x公j 式 bi
i 1,2,, n
上若xi式(xkai称1ii)为0ja1解a11i(iiii方((bb程1ii,2组,jj的njn,1i n1Jaa)aijcxio,j分(jxbk)ij离)迭) 代出公i变i式量1,。21x,,2i , n , n
j=1
j ≠i
称A为严格对角占优阵。
2.如果A的元素满足
∑n
ai,i ≥ ai, j ,i = 1,2,..., n
j=1 j≠i
且至少一个不等式严格成立,称A为弱对角占优阵。 16
定义:设 A = (ai,j )n×n ,n ≥ 2
如果存在置换矩阵P,使得
PT
AP
A11 0
A12
A22
1
§6.1 迭代法的基本思想
迭代法的基本思想是将线性方程组转化 为便于迭代的等价方程组,对任选一组初始 值 xi(0) (i 1,2,, n) ,按某种计算规则,不断地 对所得到的值进行修正,最终获得满足精度 要求的方程组的近似解。
2
设 A Rnn 非奇异,b Rn,则线性方程组
Ax b 有惟一解 x A1b ,经过变换构造
x (k 1) 1
x (k 1) 2
x1(k 2x1(k)
)
x(k) 2
4x2(k )
3 3
取
x (0) 1
x (0) 2
0
计算得
《数值分析》第8章
假设 ρ (J ) ≥ 1 ,则 J 至少存在一个特征值满足: λ ≥ 1 ,设 x 是相应的特征向量,则 x ≠ 0 ,且
29
n× n
Jx = λ x ⇔ ( D −
⎧ x ( k +1) = Gx ( k ) + f ⎨ (0) ⎩x
7 8
写成分量形式为:
i −1 n ⎧ ( k +1) 1 = (bi − ∑ aij x(jk +1) − ∑ aij x(jk ) ) (i = 1,", n, k = 0,1,") ⎪ xi aii j =1 j = i +1 ⎪ ⎨ ⎪ (0) (0) (0) (0) T ⎪ ⎩ x = ( x1 , x2 ,", xn )
⎡ 0 ⎤ ⎢a ⎥ 0 ⎥ , L = − ⎢ 21 ⎢ # % % ⎥ % ⎢ ⎥ ann ⎦ ⎣ a n1 " a n , n − 1 ⎤ ⎡ 0 a12 " a1n ⎤ ⎥ ⎢ ⎥ 0 % # ⎥ ⎥ ,U = − ⎢ ⎥ ⎢ % an −1, n ⎥ ⎥ ⎢ ⎥ 0⎦ 0 ⎦ ⎣
§2 Jacobi 迭代法与 Gauss-Seidel 迭代法
1 k
为迭代法的平均收
25
26
Def 3.3 设 A = (aij ) ∈ R ,如果矩阵 A 满足条件
aii > ∑ aij
j≠i
n× n
( i = 1, 2," , n)
Def 3.4 设 A = (aij ) ∈ R 排列阵 P 使
n× n
,当 n ≥ 2 时,如果存在 n 阶
第六章第三节逐次超松弛迭代法
xk T xk1 (I L)1 D 1b (3.4)
其中
Tw (I L)1 ((1 )I U ) (3.5)
它是 SOR 方法的迭代矩阵.特别,若取 1,则 T1 (I L)1U 是 Gauss-Seidel 迭代法的
迭代矩阵.
若将矩阵 A 分裂成
A 1 (D DL) 1 ((1 )D DU ), 0
现在,我们来讨论逐次超松弛迭代法的收敛性问题.
定理 1 设方程组 Ax b 的系数矩阵 A 的主对角元素 aij 0,i 1,, n ,则 SOR 方法 收敛的充分必要条件为
(T ) 1 其中 T 是 SOR 方法的迭代矩阵.
定理 2 设方程组 Ax b 的系数矩阵 A 的主对角元素 aij 0,i 1,, n ,则 SOR 方法 的迭代矩阵了。的谱半径大于等于 1 ,即
我们把(3.1)式中的中间 ~xi(k) 消去,则有
~xi(k)
aii
(bi
i 1
aij
x
(k j
)
j 1
n
aij
x
(k j
1)
)
(1
)
xi(
k
1)
i1
i 1,2,, n, k 1,2 (3.2)
上式的矩阵表示形式是
或者
xk (Lxk Ux k1 D 1b) (1 )xk1 (3.3)
x2(k )
x3(k ) )
k 1,2,
4
第4页,共42页。
取初始向量 x0 0,0,0,0T ,迭代六次得结果见表 6.1.
从表 6.1 得到 x6 x 1.022103
图表6.1
应用 SOR 方法(取 O=1.2)的迭代公式为
线性方程组的迭代解法_赖志柱
第三章 线性方程组的迭代解法教学目标:1。
了解线性代数方程组迭代解法的基本思想,向量序列和矩阵序列收敛的基本思想及相关定理;2.掌握迭代法的构造思想、收敛性和速度(率)以及相关定理;3。
在理解Jacobi 迭代法和Gauss —Seidel 迭代法的原理的基础上,掌握两种迭代法的计算步骤和相互关系,并掌握两种迭代法的收敛性相关定理。
4。
初步了解超松弛(SOR )迭代法的基本思想. 教学重点:1。
迭代法的原理、基本思想和序列收敛的概念; 2.迭代法的构造、收敛和速率;3。
Jacobi 迭代法和Gauss-Seidel 迭代法的原理、实现步骤和收敛性; 教学难点:1.迭代法的构造、收敛和速率;2. Jacobi 迭代法和Gauss —Seidel 迭代法的原理、实现步骤和收敛性;线性方程组的直接解法,用于阶数不太高的线性方程组效果较好。
实际工作中有的线性方程组的阶数很高,用直接法求解效果不是很好.而迭代法与直接法不同,它是通过从某些初始向量出发,用设计好的步骤逐次计算出近似解向量()k x ,从而得到向量序列(0)(1)(2){,,,}x x x 。
一般(1)k x +的计算公式为(1)()(1)()(,,,),0,1,k k k k m k x F x x x k +--==式中(1)k x +与()(1)(),,,k k k m x x x --有关,称为多步迭代法。
若(1)k x +只与()k x 有关,即(1)()(),0,1,k k k x F x k +==则称为单步迭代法.现再设k F 是线性的,即(1)(),0,1,k k k k x B x f k +=+=其中n n k B R ⨯∈,称为单步线性迭代法,k B 称为迭代矩阵。
若k B 和k f 与k 无关,即(1)(),0,1,k k x Bx f k +=+=称为单步定常线性迭代法。
迭代法的基本思想是用逐次逼近的方法去求线性代数方程组的解。
超松弛迭代法解线性方程组
. ...设计题目:超松弛迭代法解线性方程组摘要本文是在matlab环境下熟悉的运用计算机编程语言并结合超松弛变量超松弛迭代法的理论基础对方程组求解。
首先,本文以微分方程边值问题为例,导出了离散化后线性方程组即稀疏线性方程组,转化对稀疏线性方程组求解问题。
其次,用超松弛( SOR) 迭代法编写matlab程序,对产生的稀疏线性方程组进行迭代法求解。
然后,分别改变松弛因子ω和分段数n的值,分析其收敛性和收敛速度,做出各个方面的分析和比较得到相关结论。
最后,将超松弛迭代算法在计算机上运用matlab语言实现, 得出了一组与精确解较接近的数值解,并画图比较,验证逐次超松弛( SOR) 迭代法的精确性。
关键词:稀疏线性方程组逐次超松弛迭代法松弛因子matlab编程一、问题提出考虑两点边值问题()()⎪⎩⎪⎨⎧==<<=+.11,00,10,22y y a a dxdy dx y d ε 容易知道它的精确解为.1111ax e e ay x+⎪⎪⎭⎫ ⎝⎛---=--εε为了把微分方程离散,把[]1,0区间n 等分,令nh 1=,ih x i =,,1,,2,1-=n i 得到差分方程,21211a h y y hy y y ii i i i =-++-++-ε简化为()(),2211ah y y h y h i i i =++-+-+εεε从而离散后得到的线性方程组的系数矩阵为()()()()⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡+-++-++-++-=h h h h h h h A εεεεεεεεεε2222对1=ε,4.0=a ,200=n ,分别用1=ω、5.0=ω和5.1=ω的超松弛迭代法求解线性方程组,要求有4位有效数字,然后比较与精确解的误差,探讨使超松弛迭代法收敛较快的ω取值,对结果进行分析。
改变n ,讨论同样问题。
二、超松弛迭代法产生的背景对从实际问题中得到维数相当大的线性代数方程组的求解仍然十分困难, 以至使人们不能在允许的时间内用直接方法得到解, 因此, 客观上要求用新的方法来解决大维数方程组的求解问题。
解线性方程组的迭代方法优质课赛课一等奖市公开课获奖课件
Lx Ux
第16页
a11
其中
D
a22
,
ann
0
L
a21 a31
an1
0 a32
an 2
0
an,n1
0
0 a12 a13
U
0 a23 0
a1n
a2n
an1,n
0
A D L U , 因D1存在,故Ax b x D1(L U )x D1b
记 BJ D1(L U ) I D1A , fJ D1b 则有迭代格式: x(k1) BJ x(k) fJ
注:怎样判断迭代过程终止?
利用定理2误差预计式能够判断迭代过程是否能够
终止,但这种方法比较麻烦,通常采取方法是经过前
后两次迭代近似值差来判断,即利用:
max
1i n
|
x(k 1) i
x(k) i
|
或 || x(k1) x(k) ||
终止迭代过程。
上述这种求解方程组方法称为Jacobi迭代法。
第14页
a1n xn(k ) b1)
即
x2( k
1)
1 a22
(a21x1(k )
a23 x3(k )
a2n xn(k ) b2 )
xn( k
1)
1 ann
(an1x1(k )
an2 x2(k )
a x(k) n,n1 n1
bn
)
3、判断迭代格式收敛性。取初值 x(0) 带入计算。
第15页
Jacobi 迭代矩阵形式
例1:用迭代法解方程组
82xx11
x2 10
x2
x3
1 x3
4
x1
x2
对称超松弛迭代法 概述及解释说明
对称超松弛迭代法概述及解释说明1. 引言1.1 概述本篇文章旨在介绍对称超松弛迭代法的概述及解释说明。
对称超松弛迭代法是一种用于求解线性方程组的数值方法,它结合了迭代法和超松弛方法,能够在求解大型稀疏线性方程组时展现出良好的效果。
本文将从原理、算法流程以及应用和效果等方面进行详细说明,以帮助读者更好地理解该方法。
1.2 文章结构本文共分为四个部分:引言、对称超松弛迭代法概述、解释说明和结论。
在引言部分,我们将简要介绍本篇文章的主题和目的,并提供文章整体结构;在对称超松弛迭代法概述部分,我们将对迭代法、超松弛方法和对称超松弛迭代法进行逐一讲解;接着,在解释说明部分,我们将详细阐释该方法的原理,并提供算法流程说明,最后通过应用实例和效果分析来展示其实际应用价值;最后,在结论部分,我们将总结回顾全文内容,并展望未来对该领域的研究方向。
1.3 目的介绍对称超松弛迭代法的目的是为了提供一种有效求解线性方程组的数值方法,特别适用于复杂、大规模和稀疏问题。
本文旨在向读者介绍其背后的原理,阐明其算法流程,并通过实际应用和效果分析来证明其可行性和优越性。
最终目标是为读者提供一个全面而清晰的概述,帮助读者理解和运用对称超松弛迭代法解决实际问题。
2. 对称超松弛迭代法概述:2.1 迭代法简介:在数值分析和计算数学中,迭代法是一种通过从一个初始猜测值开始反复应用一个递归公式来逼近方程解的方法。
它广泛应用于线性方程组的求解问题。
不论是在工程领域还是科学研究中,线性方程组求解都是一个常见且重要的问题。
2.2 超松弛方法简介:超松弛方法(SOR)是迭代法中的一种技术,旨在加速收敛速度。
其核心思想是通过引入松弛因子来加快解的收敛过程。
对于每次迭代,在计算新解的分量时,超松弛方法允许我们使用之前已经更新但尚未完成全部迭代的分量进行估计。
该技术通常用于缩小残差并提高数值精度。
2.3 对称超松弛迭代法概述:对称超松弛(SSOR)迭代法结合了对称后退向前(SWEEP)和超松弛(SOR)的思想。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
cout << x[i] << endl; //输出结果
cout << c_M << endl;//输出迭代次数
}
四、算法实现
例1.用超松弛迭代法解方[n][n]中,将等号右端常数放入b[n]中。运行程序,即可得出结果
例2.用超松弛迭代法解方程组
在SOR方法中,迭代一次主要的运算量是计算一次矩阵与向量的乘法。由式(5)可知,在计算机上应用SOR方法解方程组时只需一组工作单元,以便存放近似解。
二、算法框图
三、算法程序
#define N 3//线性方程组的阶数
#include<iostream.h>
#include<math.h>
void main()
解:
将方程组的系数放于a[n][n]中,将等号右端常数放入b[n]中。运行程序,即可得出结果
c_M++; //迭代次数加1
for(i=0;i<N;i++)
{
if(fabs(x[i]-x0[i])>current_e)
current_e = fabs(x[i]-x0[i]);
} //计算当前误差
for(i=0;i<N;i++)
x0[i] = x[i]; //更新初始向量
}while(current_e>e&&c_M<M);//判断是否仍未达到精度要求且未达到最大迭代次数
double sum,current_e;
do{
current_e=0;
for(i=0;i<N;i++)
{
sum = 0;
for(j=0;j<N;j++)
{
if(j!=i)
{
sum = sum + a[i][j] * x0[j];
}
}
x[i] = (b[i] - sum) / a[i][i];
}//更新迭代向量
{
double a[N][N]={5,2,1,2,8,-3,1,-3,-6},//系数矩阵
b[N]={8,21,1};//右端常数向量
double x0[N]={1,1,1},x[N];//迭代初始向量和迭代向量
double e=1e-5;//精度要求
int M=5000;//最大迭代次数
int i,j,c_M=0;
设有方程组 (1)
其中 为非奇异矩阵,且设 ,分解 为
(2)
设已知第 次迭代向量 ,及第 次迭代向量 的分量 ,要求计算分量
首先用Gauss—Seidel迭代法定义辅助量
(3)
再把 取为 某个平均值(即加权平均),即
(4)
用式(3)代入式(4)即得到解方程组 的逐次超松弛迭代公式
(5)
其中 为松弛因子,显然,当 时,解式(1)的SOR方法就是Gauss-Seidel迭代法。
超松弛迭代法解线性方程组
2013-2014(1)专业课程实践论文
题目:超松弛迭代法解线性方程组
一、算法理论
逐次超松弛迭代法是Gauss-Seidel方法的一种加速方法,世界大型稀疏矩阵方程组的有效方法之一,它具有计算公式简单,程序设计容易,占用计算机内存较少等优点,但需要选择好的加速因子(即最佳松弛因子)