超松弛迭代法解线性方程组
迭代法求解线性方程组的研究(精选.)

迭代法求解线性方程组的研究【摘要】:本文总结了解线性方程组的三个迭代法,Jacobi 迭代法,Gauss-seidel 迭代法,SOR迭代法,并且介绍了现代数值计算软件MATLAB 在这方面的应用,即分别给出三个迭代法的数值实验。
【关键字】:Jacobi 迭代法 Gauss-seidel 迭代法 SOR 迭代法 数值实验一. 引言迭代法是用某种极限过程去逐步逼近线性方程组精确解的方法,它是解高阶稀疏方程组的重要方法。
迭代法的基本思想是用逐次逼近的方法求解线性方程组。
设有方程组b Ax = …① 将其转化为等价的,便于迭代的形式f Bx x += …② (这种转化总能实现,如令b f A I B =-=,), 并由此构造迭代公式 f Bx xk k +=+)()1( …③式中B 称为迭代矩阵,f 称为迭代向量。
对任意的初始向量)0(x,由式③可求得向量序列∞0)(}{k x ,若*)(lim x xk k =∞→,则*x 就是方程①或方程②的解。
此时迭代公式②是收敛的,否则称为发散的。
构造的迭代公式③是否收敛,取决于迭代矩阵B 的性质。
本文介绍三种解线性方程组的最主要的三种迭代法:Jacobi 迭代法,Gauss-Seidel 迭代法和SOR 迭代法。
本文结构如下:第二部分介绍Jacobi 迭代法及其数值实验,第三部分介绍Gauss-Seidel 迭代法及其数值实验,第四部分介绍SOR 迭代法及其数值实验,第五部分总结。
二. 雅克比(Jacobi )迭代法1. 雅克比迭代法的格式设有方程组),,3,2,1(1n i b x aj j nj ij==∑= …①矩阵形式为b Ax =,设系数矩阵A 为非奇异矩阵,且),,3,2,1(,0n i a ii =≠从式①中第i 个方程中解出x ,得其等价形式)(111j nj j ijiii x ab a x ∑≠=-= …②取初始向量),,,()0()0(2)0(1)0(n x x x x=,对式②应用迭代法,可建立相应的迭代公式:)(111)()1(∑≠=++-=nj j i k j ij ii k ib x a a x …③ 也可记为矩阵形式:J x J k F B xk +==)()1( …④若将系数矩阵A 分解为A=D-L-U ,式中⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=nn a a a D2211,⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=--0000121323121nn n n a a a a a a L ,⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛=--0000122311312n n n n a a a a a a D 。
matlab逐次超松弛迭代法

matlab逐次超松弛迭代法
逐次超松弛迭代法(Gauss-Seidel迭代法)是一种用于解线性方程组的迭代方法,通常用于求解大型稀疏线性方程组。
在MATLAB 中,可以使用该方法来解决线性方程组的数值解。
首先,让我们来了解一下逐次超松弛迭代法的基本原理。
该方法是基于迭代的思想,通过不断迭代更新解向量的各个分量,直到满足一定的收敛条件为止。
具体步骤如下:
1. 首先,需要将线性方程组表示为矩阵形式 Ax = b,其中A 是系数矩阵,x是未知向量,b是常数向量。
2. 然后,将系数矩阵A分解为下三角矩阵L、对角矩阵D和上三角矩阵U,即A = L + D + U。
3. 接下来,可以根据逐次超松弛迭代法的迭代公式来更新解向量x的各个分量,直到满足一定的精度要求或者迭代次数达到指定的值为止。
在MATLAB中,可以通过编写相应的代码来实现逐次超松弛迭代
法。
具体步骤如下:
1. 首先,需要编写一个函数来实现逐次超松弛迭代法的迭代过程,可以使用for循环来进行迭代更新解向量的各个分量。
2. 其次,需要编写主程序来调用该函数,并传入系数矩阵A、常数向量b以及迭代的初始解向量作为输入参数。
3. 最后,可以设置迭代的终止条件,例如迭代次数的最大值或者解的精度要求,以及初始解向量的初值。
需要注意的是,在实际应用中,逐次超松弛迭代法的收敛性和稳定性需要进行分析和验证,以确保得到正确的数值解。
此外,还需要注意选择合适的松弛因子来加速收敛速度。
总的来说,逐次超松弛迭代法是一种常用的求解线性方程组的数值方法,在MATLAB中可以通过编写相应的代码来实现该方法,并得到线性方程组的数值解。
(完整版)6.4超松弛迭代法

0.75 x2( ( k 1)
6 0.25x3(k
)
7.5
x (k 1) 3
0.25x2(k1)
6
②取ω=1.25 ,即SOR迭代法:
xx21((kk11))
0.25x1(k) 0.9375x2(k) 7.5 0.9375x1(k1) 0.25x2(k) 0.3125x3(k)
-5.0183105
3.1333027
4.0402646
-5.0966863
4
3.0549316
3.9542236
-5.0114410
2.9570512
4.0074838
-4.9734897
5
3.0343323
3.9713898
-5.0071526
3.0037211
4.0029250
-5.0057135
6
3.0214577
3.9821186
-5.0044703
2.9963276
4.0009262
-4.9982822
7 3.0134110
3.9888241
-5.0027940
3.0000498
4.0002586
-5.0003486
迭代法若要精确到七位小数, Gauss-Seidel迭代法需要34次迭代; 而用SOR迭代法(ω=1.25),只需要14次迭代。
因子ω。
返回引用
opt
(1
2
1 [(BJ )]2 )
(4)
这时,有ρ(Bopt
)=
ω
opt
-
1。
SOR法分类与现状
通常,
(1)当ω>1 时,称为超松弛算法; (2)当ω<1 时,称为亚松弛算法。
计算方法3_线性方程组迭代解法

计算方法3_线性方程组迭代解法线性方程组的迭代解法是解决线性方程组的一种常见方法,常用于大规模的线性方程组求解。
该方法通过不断迭代更新解的近似值,直到满足一定的收敛准则为止。
线性方程组的迭代解法有很多种,其中最经典的是雅可比迭代法、高斯-赛德尔迭代法和超松弛迭代法。
本文将分别介绍这三种迭代解法及其计算方法。
雅可比迭代法是一种比较简单的线性方程组迭代解法,它的基本思想是先将线性方程组转化为对角占优的形式,然后通过迭代求解逐渐接近精确解。
雅可比迭代法的迭代公式为:其中,x^(k+1)是第k+1次迭代的近似解,n是未知数的个数,a_ij 是系数矩阵A的元素,f_i是方程组的右端向量的元素。
雅可比迭代法的计算步骤如下:1.将线性方程组转化为对角占优的形式,即保证矩阵A的对角元素绝对值大于其它元素的绝对值。
2.初始化向量x^(0),设定迭代终止准则。
3.根据雅可比迭代公式,计算x^(k+1)。
4.判断迭代终止准则是否满足,如果满足,则停止迭代,返回近似解x^(k+1);否则,继续进行下一次迭代。
高斯-赛德尔迭代法是雅可比迭代法的改进方法,它的基本思想是在每次迭代计算x^(k+1)时,利用已经计算出的近似解作为x的一部分。
高斯-赛德尔迭代法的迭代公式为:其中,x^(k+1)_i是第k+1次迭代的近似解中第i个未知数的值,x^(k)_i是第k次迭代的近似解中第i个未知数的值。
高斯-赛德尔迭代法的计算步骤如下:1.将线性方程组转化为对角占优的形式。
2.初始化向量x^(0),设定迭代终止准则。
3.根据高斯-赛德尔迭代公式,计算x^(k+1)。
4.判断迭代终止准则是否满足,如果满足,则停止迭代,返回近似解x^(k+1);否则,继续进行下一次迭代。
超松弛迭代法是对高斯-赛德尔迭代法的一种改进方法,它引入了松弛因子ω,通过调整参数ω的值,可以加快迭代的收敛速度。
超松弛迭代法的迭代公式为:其中,0<ω<2,x^(k+1)_i是第k+1次迭代的近似解中第i个未知数的值,x^(k)_i是第k次迭代的近似解中第i个未知数的值。
超松弛迭代法课程设计

超松弛迭代法课程设计一、课程目标知识目标:1. 学生能理解超松弛迭代法的概念,掌握其基本原理和应用场景。
2. 学生能够运用超松弛迭代法解决线性方程组问题,并理解其收敛性。
3. 学生能了解超松弛迭代法在工程和科学计算中的重要性。
技能目标:1. 学生能够独立进行超松弛迭代法的计算步骤,包括设定松弛因子、构造迭代矩阵等。
2. 学生能够运用数学软件(如MATLAB)实现超松弛迭代法的算法,并进行简单的程序调试。
3. 学生通过实际案例分析,培养运用超松弛迭代法解决实际问题的能力。
情感态度价值观目标:1. 学生通过学习超松弛迭代法,培养对科学计算和数学建模的兴趣,增强对数学学科的学习信心。
2. 学生在小组讨论和合作中,学会尊重他人意见,培养团队协作精神。
3. 学生能够认识到超松弛迭代法在科技发展中的重要作用,增强科技创新意识和社会责任感。
课程性质:本课程为高中数学选修课,以培养学生解决实际问题能力和数学思维能力为目标。
学生特点:学生具备一定的线性代数基础,具有较强的逻辑思维能力和动手操作能力。
教学要求:教师应注重理论与实践相结合,引导学生通过实际案例掌握超松弛迭代法的应用。
同时,注重培养学生的团队协作能力和创新意识。
在教学过程中,关注学生的学习进度,及时调整教学策略,确保课程目标的实现。
通过课堂讲解、上机实践和小组讨论等多种教学方式,提高学生的学习效果。
二、教学内容1. 引言:介绍超松弛迭代法的背景和在实际问题中的应用,激发学生学习兴趣。
相关教材章节:第二章第四节“迭代法及其应用”。
2. 基本概念:讲解超松弛迭代法的基本原理,包括迭代格式、松弛因子选取等。
相关教材章节:第二章第四节“超松弛迭代法”。
3. 算法实现:详细讲解超松弛迭代法的计算步骤,并通过实例进行演示。
相关教材章节:第二章第四节“超松弛迭代法的计算步骤”。
4. 实践应用:分析实际案例,让学生动手实践,运用超松弛迭代法解决线性方程组问题。
相关教材章节:第二章第五节“迭代法解决实际问题”。
超松弛迭代法解线性方程组

设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等。
超松弛迭代法

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 的特征值为
超松弛迭代法公式与jacobi的关系

超松弛迭代法公式与jacobi的关系超松弛迭代法(SOR)和Jacobi迭代法是常用的求解线性方程组的迭代方法。
它们都是通过迭代逼近线性方程组的解,但是在具体的迭代过程和收敛性上有所不同。
首先来看一下Jacobi迭代法。
给定线性方程组Ax=b,其中A是一个n×n的方阵,b是一个n维向量,x是我们要求解的未知向量。
Jacobi迭代法的思想是将线性方程组的每个方程分别写成一个未知量的函数,并通过迭代的方式逐步求解。
具体来说,Jacobi迭代法的迭代公式如下:$$x^{(k+1)}=D^{-1}(b-Rx^{(k)})$$其中,$x^{(k+1)}$表示第k+1次迭代得到的近似解,$x^{(k)}$表示第k次迭代得到的近似解,D是A的对角线元素组成的对角矩阵,R是A的非对角线元素组成的矩阵。
这个公式的意义是,我们通过用上一次迭代得到的近似解$x^{(k)}$来逼近线性方程组的解,每次迭代都只使用上一次迭代得到的近似解。
接下来我们来看看超松弛迭代法。
超松弛迭代法是对Jacobi迭代法的改进,通过引入一个松弛因子ω来加速迭代过程。
其迭代公式如下:$$x^{(k+1)}=(D-ωL)^{-1}[(1-ω)D+ωU]x^{(k)}+(D-ωL)^{-1}b$$其中,L是A的下三角部分,U是A的上三角部分。
超松弛迭代法在每次迭代中使用了上一次迭代和当前迭代的信息,通过调节松弛因子ω的取值,可以加速收敛过程。
从迭代公式可以看出,Jacobi迭代法和超松弛迭代法的主要区别在于超松弛迭代法引入了松弛因子ω,并且在每次迭代中使用了上一次迭代的信息。
这使得超松弛迭代法在一定条件下可以比Jacobi迭代法更快地收敛到线性方程组的解。
在实际应用中,选择合适的松弛因子ω对超松弛迭代法的收敛性和稳定性至关重要。
通常情况下,选择ω的取值范围为(0,2),对于某些特定的线性方程组,可以通过一些经验规则或者数值试验来确定最佳的ω值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设计题目:超松弛迭代法解线性方程组摘要本文是在matlab环境下熟悉的运用计算机编程语言并结合超松弛变量超松弛迭代法的理论基础对方程组求解。
首先,本文以微分方程边值问题为例,导出了离散化后线性方程组即稀疏线性方程组,转化对稀疏线性方程组求解问题。
其次,用超松弛( SOR) 迭代法编写matlab程序,对产生的稀疏线性方程组进行迭代法求解。
然后,分别改变松弛因子ω和分段数n的值,分析其收敛性和收敛速度,做出各个方面的分析和比较得到相关结论。
最后,将超松弛迭代算法在计算机上运用matlab语言实现, 得出了一组与精确解较接近的数值解,并画图比较,验证逐次超松弛( SOR) 迭代法的精确性。
关键词:稀疏线性方程组逐次超松弛迭代法松弛因子matlab编程一、问题提出考虑两点边值问题()()⎪⎩⎪⎨⎧==<<=+.11,00,10,22y y a a dxdy dx y d ε 容易知道它的精确解为.1111ax e e a y x +⎪⎪⎭⎫ ⎝⎛---=--εε为了把微分方程离散,把[]1,0区间n 等分,令nh 1=,ih x i =,,1,,2,1-=n i 得到差分方程,21211a h y y hy y y i i 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 ,讨论同样问题。
二、超松弛迭代法产生的背景对从实际问题中得到维数相当大的线性代数方程组的求解仍然十分困难, 以至使人们不能在允许的时间内用直接方法得到解, 因此, 客观上要求用新的方法来解决大维数方程组的求解问题。
现有大多数迭代法不是对各类线性方程组都有收敛性, 在解题时, 要对原方程组矩阵作一根本的变换, 从而可能使条件数变坏, 也可能破坏了变换前后方程组的等价性, 以及丧失使原方程组的对称性等。
探求新的有效的解题方法依然是迫切的任务。
逐次超松弛(Successive Over Relaxation)迭代法是在高斯-赛德尔(GS)迭代法基础上为提高收敛速度,采用加权平均而得到的新算法。
在求解过程中由于线性方程组的系数矩阵维数较大, 采用计算机编写算法来求解, 从而实现了对解析模型的计算机数值逼近的计算方法#本论文以逐次超松弛迭代法为主要的求解方法。
三、超松弛迭代法的理论基础(一)逐次超松弛迭代法逐次超松弛(Successive Over Relaxation)迭代法,简称SOR迭代法,它是在GS法基础上为提高收敛速度,采用加权平均而得到的新算法,设解方程(7.1.3)的GS法记为(1)再由与加权平均得这里ω>0称为松弛参数,将(1)代入则得(2)该法称为SOR迭代法,[WTBX]ω>0称为松弛因子,当ω=1时(2)式即为高斯-赛德尔迭代法,简记GS法,将(2)写成矩阵形式,则得即于是得SOR迭代的矩阵表示(3)其中(4)分解后,有.(二)逐次超松弛迭代法的收敛性根据迭代法收敛性定理,SOR法收敛的充分必要条件为,收敛的充分条件为,但要计算比较复杂,通常都不用此结论,而直接根据方程组的系数矩阵A判断SOR迭代收敛性,下面先给出收敛必要条件.定理1设,则解方程的SOR迭代法收敛的必要条件是0<ω<2.该定理为SOR迭代法收敛的必要条件。
定理2若对称正定,且0<ω<2,则解Ax=b的SOR迭代法对迭代收敛.对于SOR迭代法,松弛因子的选择对收敛速度影响较大,关于最优松弛因子研究较为复杂,且已有不少理论结果.下面只给出一种简单且便于使用的结论。
定理3设为对称正定的三对角矩阵,是解方程的J法迭代矩阵,若,记,则SOR法的最优松弛因子为(5)且(6)根据定理,,如图1所示.由(6)可知,当ω=1,时,收敛速度为.说明GS法比J法快一倍.图1定理4 设,如果:(1)A 为严格对角占优矩阵;(2)0<ω<=1. 则解的SOR 迭代法收敛。
四、实验内容1.自定义函数 sor (A, b, nm, e, w ),以实现SOR 方法求解线性方程组AX =B ,其中A ——系数矩阵; b ——常数列向量; w ——松弛因子; nm ——迭代的最大次数 e ——(1)()k k XX +∞-达到的精度上限由离散后的差分方程:()(),2211ah y y h y h i i i =++-+-+εεε,1,,2,1-=n i得到的线性方程组的系数矩阵为()()()()⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡+-++-++-++-=h h h h h h h A εεεεεεεεεε2222常数列向量b=⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡+--y ahah ah y ah h 20022202)(...εε 其中1=ε,4.0=a ,200=n ,nh 1=,则有00001.0,005.1,005.2)2(2==+-=+-ah h h εε。
A 为(a ij )200*200型矩阵,b 为(bij )200*1型矩阵。
在本次试验中,由于所提供数据较小,当最大迭代次数nm 较小时,在nm 迭代次数范围内,不能判断该超松弛迭代法是否收敛,此次取nm=30000。
迭代精度e 也应取较小值才能使误差更小,此次取e=0.00001。
由定理1可知,本次试验中,ω的取值范围为:0<ω<2才能保证迭代法收敛。
取T x )1,1,,1,1,1()0( =,为1200⨯的矩阵。
用SOR 迭代公式得()()()()()()⎪⎪⎪⎪⎪⎩⎪⎪⎪⎪⎪⎨⎧+---=-+---=-+---=-+---=-+---=-+--=+++++++++++.005.2/005.200001.0;005.2/005.1005.200001.0;005.2/005.1005.200001.0;005.2/005.1005.200001.0;005.2/005.1005.200001.0;005.2/005.1005.200001.0)(222)1(199)(200)1(200)(200)(199)1(198)(199)1(199)(5)(4)1(3)(4)1(4)(4)(3)1(2)(3)1(3)(3)(2)1(1)(2)1(2)(2)(1)(1)1(1k k k k k k k k k k k k k k k k k k k k k k k k k k k k x x x x x x x x x x x x x x x x x x x x x x x x x x x x ωωωωωω ω取不同值时,对应的迭代次数、与精确解的误差如下表1。
表1 ω取不同值时对应的迭代次数与误差1 10368 0.3693 1.5 4891 0.1053 1.6 3945 0.0731 1.7 3017 0.0460 1.8 2087 0.0261 1.9 1113 0.0236满足误差()42*10-<-x x k 的迭代次数图1 计算值与精确值图形比较从本组的实验中,可以看出w 值的取定十分重要,它对求解的迭代次数影响十分明显。
一个不好的w 值甚至会导致迭代超过10000次仍未能求得需要精度的值。
由表1可得,当ω=1.9时SOR 迭代法收敛速度最快,误差最小。
取ω=1.9,nm=30000,T x )6.0,6.0,,6.0,6.0,6.0()0( =等各个因子相同时,当分段点n 取不同值时,对应的迭代次数、与精确解的误差如下表2。
区间等分数n松弛因子ω=1.9迭代次数误差120 416 0.2477150 416 0.2477200 416 0.2477250 416 0.2477满足误差()42*10-<-xx k的迭代次数从本组的实验中,当其他各个因子取适当值时,改变分段数时,对结果没有影响。
图3 精确图形由图3可得,当各个参数取值适当时,用SOR迭代法所得线性方程组的解与精确解误差极小,从而验证了SOR迭代法的准确性。
五、结论1.通过本次的课程设计,可知逐次超松弛迭代法与Jacobi 迭代法, Seidel 迭代法相比, 收敛速度较快。
由逐次超松弛迭代法求出的方程组的数值解与该方程组的精确解十分接近, 离散化后线性方程组的逐次超松弛迭代法的精确性较高。
逐次超松弛迭代法可以广泛地应用于实际。
该算法不仅可以用来求解高阶稀疏线性方程组, 还可以用来求解热传导问题这样可以大大减少计算量和计算机的内存储量, 从而提高计算效率。
本次的课程设计,我们运用了matlab 语言来实现相关的计算,这样不仅对逐次超松弛迭代法有了更深层的了解掌握,还提高了对matlab的操作技术,深刻体会到了MATLAB功能的强大之处。
通过本次试验,我掌握了用Jacobi、Gauss-Seidel、SOR迭代法求解线性方程组的方法;六、参考文献[1]李庆扬,王能超,易大义.数值分析[M], 清华大学出版社,2008.[2]刘卫国. MATLAB程序设计与应用[M],高等教育出版社,2008.[3]王诗然. 稀疏线性方程组求解的逐次超松弛迭代法[J],沈阳师范大学学报,4,407-409,2006.[4]李建宇,黎燕. 牛顿一SOR迭代方法中最佳松弛因子的算法[J],四川大学学报,4,381-382,1995.[5]蔡大用.数值分析与实验学习指导[M],清华大学出版社,2001.附录1.超松弛迭代法function [n,x]=cscdd(A,b,X,nm,e,w)n=1;D=diag(diag(A)); %令A=D-L-U,计算矩阵DL=tril(-A)+D; %令A=D-L-U,计算矩阵LU=triu(-A)+D; %令A=D-L-U,计算矩阵UM=inv(D-w*L)*((1-w)*D+w*U); %计算迭代矩阵g=w*inv(D-w*L)*b; %计算迭代格式中的常数项%下面是迭代过程while n<=nmx=M*X+g; %用迭代格式进行迭代 r=norm(x-X,'inf');if r<ereturn;endX=x; n=n+1;enddisp('在最大迭代次数内不收敛!')2.输入初始值并调用SOR迭代法n0=200;m=1;a=0.4;h=1/n0;A=zeros(n0,n0); for i=1:n0A(i,i)=-(2*m+h);endfor i=2:n0-1A(i,i-1)=m;A(i,i+1)=m+h;endA(1,2)=m+h;A(n0,n0-1)=m;for i=1:n0-1b(i,1)=a*h^2;endb(n0,1)=a*h^2-(m+h);for i=1:n0xi=i/n0;y0(i,1)=((1-0.4)/(1-exp(-1)))*(1-exp(-xi))+0.4*xi; x0(i,1)=1;end[n1,x1]=cscdd(A,b,x0,30000,0.00001,0.5);n1u1=norm(x1-y0,2)[n2,x2]=cscdd(A,b,x0,30000,0.00001,1.0);n2u2=norm(x2-y0,2)[n3,x3]=cscdd(A,b,x0,30000,0.00001,1.5);n3u3=norm(x3-y0,2)t=1/200:1/200:1;plot(t,y0)hold onplot(t,x1,'g')hold onplot(t,x2,'r')hold onplot(t,x3,'k')legend('精确解','w=0.5','w=1','w=1.5');title('计算值与精确值图形比较')hold off。