超松弛迭代法解线性方程组
迭代法求解线性方程组的研究(精选.)
迭代法求解线性方程组的研究【摘要】:本文总结了解线性方程组的三个迭代法,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),对于某些特定的线性方程组,可以通过一些经验规则或者数值试验来确定最佳的ω值。
基于Matlab的解线性方程组的几种迭代法的实现及比较
基于Matlab的解线性方程组的几种迭代法的实现及比较线性方程组的解法有很多种,其中一类常用的方法是迭代法。
迭代法根据一个初值逐步逼近方程组的解,在每一次迭代中利用现有的信息产生新的近似值,并不断地修正。
下面介绍基于Matlab的三种迭代法:雅可比迭代法、高斯-赛德尔迭代法和超松弛迭代法,并进行比较。
1. 雅可比迭代法雅可比迭代法是迭代法中最简单的一种方法。
对于线性方程组Ax=b,雅可比迭代法的迭代公式为:x_{i+1}(j)=1/a_{jj}(b_j-\\sum_{k=1,k\eq j}^n a_{jk}x_i(k))其中,i表示迭代次数,j表示未知数的下标,x_i表示第i次迭代的近似解,a_{jk}表示系数矩阵A的第j行第k列元素,b_j 表示方程组的常数项第j项。
在Matlab中,可以使用以下代码实现雅可比迭代:function [x,flag]=jacobi(A,b,X0,tol,kmax)n=length(b);x=X0;for k=1:kmaxfor i=1:nx(i)=(b(i)-A(i,:)*x+A(i,i)*x(i))/A(i,i);endif norm(A*x-b)<tolflag=1;returnendendflag=0;return其中,参数A为系数矩阵,b为常数项列向量,X0为初值列向量,tol为迭代误差容许值(默认为1e-6),kmax为最大迭代次数(默认为1000)。
函数返回值x为近似解列向量,flag表示是否满足容许误差要求。
2. 高斯-赛德尔迭代法高斯-赛德尔迭代法是雅可比迭代法的改进。
其基本思想是,每次迭代时,利用已经求出的新解中的信息来更新其他未知数的值。
迭代公式为:x_{i+1}(j)=(1/a_{jj})(b_j-\\sum_{k=1}^{j-1}a_{jk}x_{i+1}(k)-\\sum_{k=j+1}^n a_{jk}x_i(k))与雅可比迭代法相比,高斯-赛德尔迭代法的每一次迭代都利用了前面已求得的近似解,因此可以更快地收敛。
松弛因子与迭代次数的关系
松弛因子与迭代次数的关系介绍:松弛因子是迭代法中的一个重要参数,用来控制每次迭代的步长。
迭代法是解决线性方程组的常见方法之一,在实际应用中,通过调整松弛因子可以使得迭代更快收敛或更稳定。
本文将探讨松弛因子与迭代次数的关系,并分析不同松弛因子对迭代法收敛速度的影响。
一、松弛因子的定义和作用松弛因子(relaxation factor)是在迭代法中用来调整每次迭代的步长的参数,通常用符号ω表示。
对于迭代法求解线性方程组Ax=b,其中A是系数矩阵,b是常数向量,松弛因子ω用于计算每次迭代的解向量x:x(k+1) = (1-ω)x(k) + ωD^(-1)(b - Rx(k))其中x(k)是第k次迭代的解向量,D是系数矩阵A的对角矩阵,R是A的严格下三角矩阵或严格上三角矩阵。
通过调整松弛因子的取值,可以控制每次迭代解向量的更新幅度,从而影响迭代的收敛性和速度。
二、松弛因子与迭代次数的关系1. 松弛因子小于1的情况当松弛因子ω小于1时,迭代法称为欠松弛法(under-relaxation method)。
此时,每次迭代的解向量更新比较小,迭代过程较为稳定。
在数值计算中,欠松弛法常用于处理病态问题和不可收敛问题,能够提高迭代法的稳定性和收敛性。
然而,欠松弛法由于每次迭代步长较小,收敛速度相对较慢。
因此,在求解较大规模的线性方程组时,需要进行很多次迭代才能达到收敛要求。
2. 松弛因子等于1的情况当松弛因子ω等于1时,迭代法称为正常迭代法(Gauss-Seidel method)。
此时,每次迭代的解向量更新完全由当前迭代的解向量决定,即x(k+1) = x(k)。
正常迭代法是一种简单的迭代方法,容易实现。
然而,在某些情况下,正常迭代法可能会发散或收敛速度较慢,特别是对于病态问题。
3. 松弛因子大于1的情况当松弛因子ω大于1时,迭代法称为超松弛法(over-relaxation method),也称为逐次上松法(successive overrelaxation method,SOR)。
§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。
松弛迭代法解线性方程组
---------------------------------------------------------------最新资料推荐------------------------------------------------------松弛迭代法解线性方程组计算方法第八章上机作业沈欢北京大学工学院,北京100871 2012-05-011问题描述编制松弛法求解线性方程组的程序:分别取松弛因子ω =0, 0.1, 0.2,…2.0(间隔为0.1),求解线性方程组Ax = b ,其中 ? ? 1 1 1 1 1 2 3 4 5 ? 1 1 1 1 1 ? ? 2 3 4 5 6 ? ?1 1 1 1 1 ? ? A=? ? 3 4 5 6 7 ? ? 1 1 1 1 1 ? ? 4 5 6 7 8 ?1 5 1 6 1 7 1 8 1 9(1)? ? ? ? b=? ? ? ?1 0 0 0 0? ? ? ? ? ? ? ?(2)→ → 要求精度为 ? x ?? x ? < 10?4 (1) 经过计算判断对那些ω 迭代收敛? (2) 记下迭代次数,据此判断对哪个ω 迭代收敛最快。
2SOR方法描述? → → → → x k+1 = ωL? x k+1 + [(1 ? ω )I + ωU ]? x k + ω? g松弛法迭代的矩阵形式为: (3)其中,常数ω 称为松弛因子。
ω < 1称为低松弛或亚松弛法。
ω > 1称为超松弛法,ω = 1时为Seidal迭代法。
收敛最快的松弛因子称为最优松弛因子,一般要由经验或通过试算来确定。
选取适当的松弛因子,SOR迭代要比Jacobi 迭代或Seidal迭代快很多。
11/ 8在编制计算机程序的过程中使用分量形式进行迭代:i?1 +1 xk = i j =1(?ω ?aij k+1 aij k bi (?ω ? )xj + (1 ? ω )xk )xj + ω ?i + aii aii aii j =i+1n(4)其中,i=1,2,.....,n。
线性方程组的迭代解法及收敛分析
1.9583
0.8468
0.2974
9
1.0975
2.0954
2.8217
1.9788
0.8847
0.2533
10
1.0850
2.0738
2.8671
1.9735
0.8969
0.2041
11
1.0673
2.0645
2.8802
1.9843
0.9200
0.1723
12
1.0577
2.0509
2.9077
1.9828
0.9303
0.1400
13
1.0463
2.0437
2.9191
1.9887
0.9448
0.1174
14
1.0392
2.0350
2.9363
1.9886
0.9527
0.0959
15
1.0318
2.0297
2.9451
1.9920
0.9620
0.0801
16
1.0267
2.0241
Keywords:MATLAB,Mathematical model,Iterative method,ConvergenceSystem of linear equations
1
在实际生活中,存在着大量求解线性方程组的问题。这些方程组具有数据量大,系数矩阵稀疏,在一定精度保证下,只需要求解近似解等特点。线性方程组的迭代解法特别适合于这类方程组的求解,它具有程序设计简单,需要计算机的贮存单元少等特点,但也有收敛性与收敛速度问题。因此,研究线性方程组的迭代解法及收敛分析对于解决实际问题具有非常重要的作用。
线性方程组求解的迭代算法
线性方程组求解的迭代算法线性方程组是数学中常见的问题之一,求解线性方程组是很多科学和工程领域中必需的基本任务。
而迭代算法是一种常见的求解线性方程组的方法之一,通过不断逼近线性方程组的解来达到求解的目的。
本文将介绍一些常见的线性方程组迭代算法及其原理。
一、雅可比迭代法雅可比迭代法是最早被提出的线性方程组迭代算法之一。
其思想是通过不断迭代,在每一步都利用先前求得的近似解来逼近方程组的解。
具体算法如下:假设给定的线性方程组为Ax=b,其中A为系数矩阵,b为常数向量,x为未知向量。
1. 首先,将方程组转化为x=D^-1(b-Rx),其中D为一个对角矩阵,R为矩阵A的剩余部分。
2. 设定一个初始解向量x0。
3. 迭代计算:重复执行以下步骤,直到满足终止条件。
a. 计算下一次迭代的解向量:x_k+1 = D^-1(b-Rx_k),其中k为当前迭代的次数。
b. 检查终止条件是否被满足,如果是,则停止迭代;否则,返回步骤a。
雅可比迭代法的收敛性与系数矩阵A的特征值有关。
当A是严格对角占优矩阵时,迭代法收敛。
二、高斯-赛德尔迭代法高斯-赛德尔迭代法是雅可比迭代法的一种改进方法。
在每一次迭代中,新的解向量x_k+1的计算会利用到之前已经计算得到的近似解向量的信息,从而加快迭代的速度。
具体算法如下:1. 设定一个初始解向量x0。
2. 迭代计算:重复执行以下步骤,直到满足终止条件。
a. 对于每个方程i,计算下一次迭代的解向量的每个分量:x_k+1[i] = (1/A[i][i]) * (b[i]-Σ(A[i][j]*x_k[j],其中j为1到i-1之间的所有整数。
b. 检查终止条件是否被满足,如果是,则停止迭代;否则,返回步骤a。
高斯-赛德尔迭代法相比于雅可比迭代法,在每一次迭代中都会利用到之前计算得到的近似解向量的信息,因此收敛速度更快。
三、超松弛迭代法超松弛迭代法是对雅可比迭代法和高斯-赛德尔迭代法的进一步改进。
通过引入松弛因子ω,可以加速迭代的收敛速度。
超松弛迭代法matlab程序
超松弛迭代法matlab程序超松弛迭代法是一种解线性方程组的迭代方法,其主要思想是在松弛因子的基础上,加入一些超松弛因子,使得迭代更加快速和稳定。
本文将介绍超松弛迭代法的原理,并给出相应的matlab程序实现。
一、超松弛迭代法的原理超松弛迭代法是通过将松弛因子ω加上一个超松弛因子λ,来加速收敛的一种迭代方法。
具体来说,对于一个线性方程组Ax=b,我们可以将其表示为:Ax(k)=b其中,x(k)表示第k次迭代的解向量,A表示系数矩阵,b表示右侧向量。
在超松弛迭代法中,我们将x(k)表示为:x(k)=x(k-1)+ωλ(k-1)其中,λ(k-1)是超松弛因子,ω是松弛因子,x(k-1)是上一次迭代的解向量。
将其代入原方程组,得到:(A-ωD)x(k)=ω(D+L)x(k-1)+ωUx(k-1)+b其中,D表示A的主对角线元素组成的对角矩阵,L表示A的下三角矩阵,U表示A的上三角矩阵。
将其化简为:x(k)=D^-1[(1-ω)D+ωL]x(k-1)+ωD^-1b其中,D^-1表示D的逆矩阵。
该式子即为超松弛迭代法的迭代公式。
二、matlab程序实现下面给出超松弛迭代法的matlab程序实现。
假设我们要解如下线性方程组:3x1+0x2+0x3=90x1+4x2+0x3=80x1+0x2+2x3=2其系数矩阵为:A=[3,0,0;0,4,0;0,0,2];右侧向量为:b=[9;8;2];我们可以通过如下matlab程序实现超松弛迭代法:function [x,iter]=sor(A,b,omega,tol,maxit)% A:系数矩阵% b:右侧向量% omega:松弛因子% tol:容差% maxit:最大迭代次数% x:解向量% iter:迭代次数n=length(b); % 系数矩阵的阶数x=zeros(n,1); % 初始化解向量iter=0; % 初始化迭代次数while iter<maxit % 迭代次数未达到最大值xold=x; % 记录上一次迭代的解向量for i=1:n % 按行迭代sigma=0;for j=1:nif j~=isigma=sigma+A(i,j)*x(j);endendx(i)=(1-omega)*x(i)+omega*(b(i)-sigma)/A(i,i); % 更新解向量enditer=iter+1; % 迭代次数加1if norm(x-xold)<tol % 当解向量的变化小于容差时,认为已收敛break;endend调用该函数,求解上述线性方程组,可以使用如下代码:A=[3,0,0;0,4,0;0,0,2];b=[9;8;2];omega=1.5;tol=1e-6;maxit=1000;[x,iter]=sor(A,b,omega,tol,maxit);disp(x);其中,omega为松弛因子,tol为容差,maxit为最大迭代次数。
对称超松弛迭代法 概述及解释说明
对称超松弛迭代法概述及解释说明1. 引言1.1 概述本篇文章旨在介绍对称超松弛迭代法的概述及解释说明。
对称超松弛迭代法是一种用于求解线性方程组的数值方法,它结合了迭代法和超松弛方法,能够在求解大型稀疏线性方程组时展现出良好的效果。
本文将从原理、算法流程以及应用和效果等方面进行详细说明,以帮助读者更好地理解该方法。
1.2 文章结构本文共分为四个部分:引言、对称超松弛迭代法概述、解释说明和结论。
在引言部分,我们将简要介绍本篇文章的主题和目的,并提供文章整体结构;在对称超松弛迭代法概述部分,我们将对迭代法、超松弛方法和对称超松弛迭代法进行逐一讲解;接着,在解释说明部分,我们将详细阐释该方法的原理,并提供算法流程说明,最后通过应用实例和效果分析来展示其实际应用价值;最后,在结论部分,我们将总结回顾全文内容,并展望未来对该领域的研究方向。
1.3 目的介绍对称超松弛迭代法的目的是为了提供一种有效求解线性方程组的数值方法,特别适用于复杂、大规模和稀疏问题。
本文旨在向读者介绍其背后的原理,阐明其算法流程,并通过实际应用和效果分析来证明其可行性和优越性。
最终目标是为读者提供一个全面而清晰的概述,帮助读者理解和运用对称超松弛迭代法解决实际问题。
2. 对称超松弛迭代法概述:2.1 迭代法简介:在数值分析和计算数学中,迭代法是一种通过从一个初始猜测值开始反复应用一个递归公式来逼近方程解的方法。
它广泛应用于线性方程组的求解问题。
不论是在工程领域还是科学研究中,线性方程组求解都是一个常见且重要的问题。
2.2 超松弛方法简介:超松弛方法(SOR)是迭代法中的一种技术,旨在加速收敛速度。
其核心思想是通过引入松弛因子来加快解的收敛过程。
对于每次迭代,在计算新解的分量时,超松弛方法允许我们使用之前已经更新但尚未完成全部迭代的分量进行估计。
该技术通常用于缩小残差并提高数值精度。
2.3 对称超松弛迭代法概述:对称超松弛(SSOR)迭代法结合了对称后退向前(SWEEP)和超松弛(SOR)的思想。
超松弛迭代法例题
超松弛迭代法例题超松弛迭代法是解决线性方程组的一种有效方法。
相比于传统迭代法,超松弛迭代法具有更快的收敛速度和更高的计算精度。
它的基本思想是在传统迭代法基础上引入一个松弛因子,对迭代方程进行加权处理,从而达到更快的收敛速度。
以解决下列线性方程组为例:3x1 + 0.1x2 - 0.2x3 = 7.850.1x1 + 7x2 - 0.3x3 = -19.30.3x1 - 0.2x2 + 10x3 = 71.41. 建立迭代公式首先,我们需要将原始方程组写成矩阵形式:Ax = b其中,A是系数矩阵,b是常数向量,x是未知向量。
将其变形为迭代形式:x(k+1) = Bx(k) + f其中,B是迭代矩阵,它的形式为:B = (D - wL)^(-1) [(1 - w)D + wU]其中,D是A的对角线矩阵,L是A的下三角矩阵(不包括对角线),U是A的上三角矩阵(不包括对角线),w是松弛因子。
f是常数向量,它的形式为:f = wb其中,b是方程组的常数向量。
2. 求解迭代矩阵和常数向量在这个例子中,我们可以根据系数矩阵A,求出其对角线矩阵D、下三角矩阵L和上三角矩阵U:D = [3 0 00 7 00 0 10]L = [0 0 00.1 0 00.3 -0.2 0]U = [0 0.1 -0.20 0 -0.30 0 0]对于这个例子中的松弛因子w,我们可以通过一些经验公式来设置,比如:w = 1.5 / (1 + max(abs(D[i][i]))) = 1.5 / (1 + 10)= 0.13636然后,我们可以将迭代矩阵B和常数向量f求出来:B = (D - wL)^(-1) [(1 - w)D + wU]= [0 0.015 0.040.0142 0 0.04290.03 0.0195 0]f = wb= [0.1364*7.850.1364*(-19.3)0.1364*71.4]= [1.0705-2.63099.7086]3. 迭代计算在完成迭代矩阵B和常数向量f的求解之后,我们可以开始进行迭代计算。
超松弛迭代法解线性方程组
设计题目:超松弛迭代法解线性方程组摘要本文是在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 ,讨论同样问题。
二、超松弛迭代法产生的背景对从实际问题中得到维数相当大的线性代数方程组的求解仍然十分困难, 以至使人们不能在允许的时间用直接方法得到解, 因此, 客观上要求用新的方法来解决大维数方程组的求解问题。
- 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。