数值分析实验报告 Sor法分析
数值分析6-用SOR方法求解线性方程组

程序 clear;clc; A=[4,3,0;3,4,-1;0,-1,4]; b=[24,30,-24]'; N=length(b); %解向量的维数 fprintf('库函数计算结果:'); x=inv(A)*b %库函数计算结果 x=[1;1;1];%迭代初始值 %-----(A=D-E-F)-----D=diag(diag(A)); E=-tril(A,-1);%下三角 F=-triu(A,1);%上三角 w=1.5; %松弛因子,一般 0<w<2 B=inv(D-w*E)*[(1-w)*D+w*F];g=w*inv(D-w*E)*b; eps=1e-8;%相邻解的距离小于该数时,结束迭代 %--------开始迭代------for k=1:100 %最大迭代次数为 100 fprintf('第%d 次迭代:',k); y=B*x+g; if abs(x-y)<eps break; end x=y end x
程序结果
当比较松弛因Biblioteka 取 1.0 时当比较松弛因子取 1.25 时
当比较松弛因子取 1.5 时
作业七:编写用 SOR 方法求解线性方程组 Ax=B 的标准程序,并求下 列方程组的解, 并比较松弛因子取 1.0、 1.25、 1.5 时所需迭代的次数。 可取初始向量 X(0) =(1,1,1)’;迭代终止条件||x(k+1)-x(k)||<=10e-8
4 30 ������1 24 3 4 − 1 x2 = 30 0 − 14 x3 −24
数值分析上机实习报告

指导教师:姓名:学号:专业:联系电话:上海交通大学目录序言 (3)实验课题(一) 雅可比迭代法和高斯-塞得尔迭代法的收敛性和收敛速度 (4)数值分析 (6)实验课题(二) 松弛因子对SOR法收敛速度的影响 (6)数值分析 (12)总结 (13)附录(程序清单) (14)1.雅可比迭代法和高斯-塞得尔迭代法的收敛性和收敛速度 (14)雅可比迭代法: (14)高斯-塞得尔迭代法: (16)2.松弛因子对SOR法收敛速度的影响 (18)松弛法(SOR) (18)序言随着科学技术的发展,提出了大量复杂的数值计算问题,在实际解决这些计算问题的长期过程中,形成了计算方法这门学科,专门研究各种数学问题的数值解法(近似解法),包括方法的构造和求解过程的误差分析,是一门内容丰富,有自身理论体系的实用性很强的学科。
解决工程问题,往往需要处理很多数学模型,这就要花费大量的人力和时间,但是还有不少数学模型无法用解析法得到解。
使用数值方法并利用计算机,就可以克服这些困难。
事实上,科学计算已经与理论分析、科学实验成为平行的研究和解决科技问题的科学手段,经常被科技工作者所采用。
作为科学计算的核心内容——数值分析(数值计算方法),已逐渐成为广大科技工作者必备的基本知识并越来越被人重视。
由于数值方法是解数值问题的系列计算公式,所以数值方法是否有效,不但与方法本身的好坏有关,而且与数值问题本身的好坏也有关,因此,研究数值方法时,不但需要研究数值方法的好坏,即数值稳定性问题,而且还需要研究数值问题本身的好坏,即数值问题的性态,以及它们的判别问题。
数值计算的绝大部分方法都具有近似性,而其理论又具有严密的科学性,方法的近似值正是建立在理论的严密性基础上,根据计算方法的这一特点。
因此不仅要求掌握和使用算法,还要重视必要的误差分析,以保证计算结果的可靠性。
数值计算还具有应用性强的特点,计算方法的绝大部分方法如求微分方程近似解,求积分近似值,求解超越方程,解线性方程组等都具有较强的实用性,而插值法,最小二乘法,样条函数等也都是工程技术领域中常用的,有实际应用价值的方法。
sor方法

sor方法
SOR方法是一种迭代数值解法,主要被用于求解线性系统Ax=b,其中A是系数矩阵,b是右端向量。
SOR方法的全称为"Successive Over-Relaxation Method",意为迭代超松弛法。
在使用SOR方法求解线性方程组时,首先需要将系数矩阵A分解为L、D和U 三个部分,其中L是A的严格下三角矩阵,D是A的对角线矩阵,U是A的严格上三角矩阵。
同时,SOR方法还需要一个松弛因子w。
SOR方法的迭代公式为:
x(k+1) = (1-w)x(k) + w(D-wL)^(-1)(b-Ux(k))
其中x(k)表示第k次迭代求得的解向量,x(k+1)表示x(k)的下一次迭代,^(−1)表示逆矩阵。
可以发现,SOR方法是基于Gauss-Seidel方法的改进,它在每一次迭代中添加了一个松弛因子w,从而使得解向量的迭代更快、更稳定。
在实际应用中,我们需要选择一个合适的松弛因子w,以使得SOR方法能够收敛并且收敛速度较快。
一般来说,选择一个小于1的w能够保证SOR方法的收敛性,而选择一个大于1的w能够加快SOR方法的收敛速度。
需要注意的是,SOR方法只能够求解特定条件下的线性方程组,如系数矩阵为对称正定矩阵、对角占优矩阵等。
当系数矩阵不满足这些条件时,SOR方法可能出现发散的情况。
总的来说,SOR方法是一种简单而有效的数值解法,被广泛应用于工程计算等领域。
在使用时,需要根据具体问题选择合适的松弛因子w,并且注意其收敛性和收敛速度。
数值分析实验报告-Sor法分析

数值分析实验报告一、 实验目的1、会使用Sor 法求解一个线性方程组2、熟悉matlab 语言并结合原理编程求方程组3、改变ω的值观察实验结果4、会分析实验结果 二、实验题目编制Sor 迭代格式程序进行求解一个线性方程组的迭代计算情况,运行中要选用不同的松弛因子ω进行尝试三、 实验原理Jacobi 迭代和seidel 迭代对具体的线性方程组来说,逼近*x 的速度是固定不变的,遇到收敛很慢的情况时就显得很不实用。
Sor 法是一seidel 迭代为基础,并在迭代中引入参数ω以增加迭代选择的灵活性,具体为:!用seidel 迭代算出的,)()1()()1(k k J k k Jx x x x x -=∆++相减得到差向量与再用参数ω乘之再加上)1()()()1()1()()()1(++++-=∆+=k Jk k k k k k x x x x x x x x ωωω,即的下一步迭代作为,由seidel 迭代的公式可以得到Sor 法的迭代格式为n i x a x a b a x x k j n i j ij k j i j ij i ii k i k i ,2,1),()1()(1)1(11)()1( =--+-=∑∑+=+-=+ωω式中ω称为松弛因子。
四、 实验内容用matlab 编程得到Sor 法求线性方程组的算法为:function [x,n]=SOR(A,b,x0,w,eps,M)if nargin==4eps= ;M = 200;elseif nargin<4errorreturn:elseif nargin ==5M = 200;endif(w<=0 || w>=2)error;return;endD=diag(diag(A)); %求A的对角矩阵L=-tril(A,-1); %求A的下三角阵(U=-triu(A,1); %求A的上三角阵B=inv(D-L*w)*((1-w)*D+w*U);f=w*inv((D-L*w))*b;x=B*x0+f;n=1; %迭代次数while norm(x-x0)>=epsx0=x;x =B*x0+f;n=n+1;if(n>=M)(disp('Warning: 迭代次数太多,可能不收敛!'); return;endend输入数据:>> A=[20 1 -3 -1;3 18 0 7;-1 2 40 -2;1 0 -1 5];b=[1;2;10;-1];x0=[0;0;0;0];w=1;eps=1e-4;;M=100;>> [x,n]=SOR(A,b,x0,w,eps,M)x =n =;5error;>> A=[20 1 -3 -1;3 18 0 7;-1 2 40 -2;1 0 -1 5];b=[1;2;10;-1];x0=[0;0;0;0];w=;eps=1e-4;M=100;[x,n]=SOR(A,b,x0,w,eps,M)/x =n =@21>>A=[20 1 -3 -1;3 18 0 7;-1 2 40 -2;1 0 -1 5]; b=[1;2;10;-1];x0=[0;0;0;0];w=;eps=1e-4;M=100;[x,n]=SOR(A,b,x0,w,eps,M)Error using ==> errorNot enough input arguments.,Error in ==> SOR at 13用实验3中的线性方程组作为例子比较得当ω=时,x = 迭代次数为n=21当ω=1时,x = 迭代次数为n=5当ω=时,出现error五、实验分析由定理,Sor法收敛的必要条件是0<ω<2,因此,当ω=和1时,算法收敛,能够求出根,并且迭代次数根据ω的不同而不同,在求方程组的根时,只要选择恰当的ω,收敛是很快的。
数值分析PPT55迭代法收敛与SOR法

|| A || || D 1 P 1 APD ||1 max ( | i | ) ( A) 易证:
1 i r
是由 || x ||v || ( PD) 1 x ||1 导出的算子范数。 Bk 0 迭代从任意向量出发收敛
所以只要取 < ,就有|| A || < (A) 。
( k 1 ) (k ) ( k 1 ) (k ) 1 x (1 ) x D [ Lx Ux b ] ( k 1 ) (k ) 1 1 x ( D L) [(1 ) D U ] x ( D L) b H f 松弛迭代阵 定理 设 A 可逆,且 aii 0,松弛法从任意 x ( 0) 出发对 某个 收敛 ( H ) < 1。
(k ) (1) ( 0 ) qk ② || x * x || || x x || 1 q
证明: ① x * x ( k ) B( x * x ( k 1) ) B ( x * x ( k ) x ( k ) x ( k 1 ) ) (k ) (k ) ( k ) ( k 1) || x * x || q(|| x * x || || x x ||)
充分条件: ||B|| < 1
e (k ) 必要条件:
|| B ||k 0 as k ( k )等价于对 ||任何算子范数有 e || 0 || 0 as k Ak || 0 as kk A B ?
( Ak (aijk ) ) nn R nn .
ri( k 1) (1 ) xi( k ) [ aij x (jk 1) aij x (jk ) bi ] xi( k ) aii a ii j<i j i
超松弛迭代法(SOR方法)

解:SOR迭代公式
x1( k
1)
(1 )x1(k )
4
(10 2x2(k )
4x3(k ) )
x
(k 2
1)
(1 )x2(k )
17
(3
2
x1(
k
1)
10x3(k ) )
x3( k
1)
(1 )x3(k )
9
(7 4x1(k 1)
10
x
(k 2
1)
)
初值 x (0) (0,0,0)T k = 0,1,2,…,
例该4方.4程用组S的OR精法确求解解线x (性*) 方 程(2组,1,1)T
如值只果需x(0取)迭ω取代(0=,04ω21,00x(=42)即1次T1xx,要11.高4便26达x斯11,可207到—xx要达22同4塞求到x样319德精0x精x3尔度130度迭要x,(3k7代求需1) 法要x)迭(和k) 代同1一1100初6次
数值计算方法
超松弛迭代法(SOR方法) 使用迭代法的困难在于难以估计其计算
量。有时迭代过程虽然收敛,但由于收敛速 度缓慢,使计算量变得很大而失去使用价值 。因此,迭代过程的加速具有重要意义。逐 次超松弛迭代(Successive Over relaxatic Method,简称SOR方法)法,可以看作是带参 数的高斯—塞德尔迭代法,实质上是高斯-塞 德尔迭代的一种加速方法。
或 Dx(k1) (1)Dx(k) (b Lx(k1) Ux(k) )
故 (D L)x(k1) (1)D Ux(k) b
显然对任何一个ω值,(D+ωL)非奇异,(因为假设 aii 0,i 1,2,, n )于是超松弛迭代公式为
x(k1) (D L)1 (1)D U x(k) (D L)1b
数值方法实验报告

2009-2010学年第一学期《数值方法》实验报告学院:石油工程学院专业班级:指导教师:李梦霞学生姓名:实验一1.题目高斯列主元素消去法:用Gauss列主元消去法解线性方程组Ax b=,其中,A=17.031 -0.615 -2.991 1.007 -1.006 0.000-1.000 34.211 -1.000 -2.100 0.300 -1.7000.000 0.500 13.000 -0.500 1.000 -1.5004.501 3.110 -3.907 -61.705 12.170 8.9990.101 -8.012 -0.017 -0.910 4.918 0.1001.0002.0003.0004.5005.000 21.803⎛⎫⎪⎪⎪⎪⎪⎪⎪⎪⎝⎭0.230-52.32254.000240.23629.304-117.818b⎛⎫⎪⎪⎪= ⎪⎪⎪⎪⎪⎝⎭2.理论分析及算法描述(1)理论分析:由高斯消去法,当a)(k kk=0时,消去过程则中断。
此外,即使a)(k kk≠0,但当绝对值较小时,也会因用它作除数而出现舍入误差急剧增长的系数,从而导致计算结果不准确。
列主元高斯消去法只需在高斯消去法消去过程的第k步消去计算前,插入搜索绝对值最大元和交换过程(交换增广矩阵的行)的处理。
(2)Guass 列主元消去法算法描述:Step1:k=1;Step2:按列选主元|a ikk|=|a ik|,r ik↔r k;Step3:if|a ikk |=0,停止计算;Step4:i k =K ,则不换行。
Else ,交换i k 行与K 行,a ikj ↔a k j (j=k,...N),bik↔b k ;Step5:计算乘数akkik a lik =(i=k+1,...n);Step6:消元计算a ij =aij-lik*a k jb i=b i-lik*bk(i,j=k+1,...n);Step7:k=k+1,If k<=n-1转Step2; Step8:回代求解axa kkk ikjkk∑+-=n1*b b (k=n,n-1,...1)。
SOR松弛因子实验报告

SOR松弛因子
200820801065 查俊
一、问题叙述
用SOR迭代法解线性方程组,在迭代收敛的情况下,松弛因子如何选项迭代收敛最快?事实上,对于这一情况始终是没有解决的问题,要反复试验才能得到比较满意的结果。
二、问题分析
SOR Gauss-Seidel迭代
0.01扫描寻找A的
最佳松弛因子。
三、实验程序及注释
新建m文件bw.m
function BW=bw(A,w)
n=max(size(A));
L=zeros(n);
U=L;
for i=1:n
for j=1:n
if j<i
L(i,j)=A(i,j);
end
if j>i
U(i,j)=A(i,j);
end
end
end
D=A-L-U
BW=inv(D+w*L)*[(1-w)*D-w*U];
新建m文件best_w.m
A=[4 -2 -1;-2 4 -2;-1 -2 3]
w=0.5:0.01:2;
n=size(w)
rho=zeros(n)
for i=1:max(n)
BW=bw(A,w(i));
rho(i)=max(abs(eig(BW)))
end
[rho_best,m]=min(rho);
w_best=w(m)
rho_best
plot(w,rho)
四、实验数据结果及分析
程序运行后,w_best=1.4400(松弛因子),rho_best=0.5291(谱半径)
下图为松弛因子和谱半径的函数图像
五、实验结论
通过实验可以看出,迭代矩阵的谱半径对于松弛因子是一个单峰函数,有唯一的最小点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数值分析实验报告
一、 实验目的
1、会使用Sor 法求解一个线性方程组
2、熟悉matlab 语言并结合原理编程求方程组
3、改变ω的值观察实验结果
4、会分析实验结果
二、实验题目
编制Sor 迭代格式程序进行求解一个线性方程组的迭代计算情况,运行中要选用不同的松弛因子ω进行尝试
三、 实验原理
Jacobi 迭代和seidel 迭代对具体的线性方程组来说,逼近*x 的速度是固定不变的,遇到收敛很慢的情况时就显得很不实用。
Sor 法是一seidel 迭代为基础,并在迭代中引入参数ω以增加迭代选择的灵活性,具体为:
用seidel 迭代算出的,)
()
1()
()
1(k k J
k k J x
x x x
x -=∆++相减得到差向量
与再用参数ω乘之
再
加
上
)
1()
()
()
1()
1()
()
()1(++++-=∆+=k J
k k k k k k x x
x x
x
x
x
x
ωωω,即的下一步迭代作为,由
seidel 迭代的公式可以得到Sor 法的迭代格式为
n
i x a
x a
b a x
x k j
n
i j ij
k j
i j ij
i ii
k i
k i
,2,1),()1()
(1
)
1(1
1
)()
1( =-
-
+
-=∑∑+=+-=+ω
ω
式中ω称为松弛因子。
四、 实验内容
用matlab 编程得到Sor 法求线性方程组的算法为: function [x,n]=SOR(A,b,x0,w,eps,M) if nargin==4 eps= 1.0e-4;
M = 200;
elseif nargin<4
error
return
elseif nargin ==5
M = 200;
end
if(w<=0 || w>=2)
error;
return;
end
D=diag(diag(A)); %求A的对角矩阵
L=-tril(A,-1); %求A的下三角阵
U=-triu(A,1); %求A的上三角阵
B=inv(D-L*w)*((1-w)*D+w*U);
f=w*inv((D-L*w))*b;
x=B*x0+f;
n=1; %迭代次数
while norm(x-x0)>=eps
x0=x;
x =B*x0+f;
n=n+1;
if(n>=M)
disp('Warning: 迭代次数太多,可能不收敛!');
return;
end
end
输入数据:
>> A=[20 1 -3 -1;3 18 0 7;-1 2 40 -2;1 0 -1 5]; b=[1;2;10;-1];
x0=[0;0;0;0];
w=1;
eps=1e-4;
M=100;
>> [x,n]=SOR(A,b,x0,w,eps,M)
x =
0.0687
0.1645
0.2352
-0.1667
n =
5
error;
>> A=[20 1 -3 -1;3 18 0 7;-1 2 40 -2;1 0 -1 5]; b=[1;2;10;-1];
x0=[0;0;0;0];
w=1.5;
eps=1e-4;
M=100;
[x,n]=SOR(A,b,x0,w,eps,M)
x =
0.0687
0.1645
0.2352
-0.1667
n =
21
>>A=[20 1 -3 -1;3 18 0 7;-1 2 40 -2;1 0 -1 5];
b=[1;2;10;-1];
x0=[0;0;0;0];
w=2.5;
eps=1e-4;
M=100;
[x,n]=SOR(A,b,x0,w,eps,M)
??? Error using ==> error
Not enough input arguments.
Error in ==> SOR at 13
用实验3中的线性方程组作为例子比较得
当ω=1.5时,x =0.0687 0.1645 0.2352 -0.1667 迭代次数为n=21 当ω=1时,x =0.0687 0.1645 0.2352 -0.1667 迭代次数为n=5 当ω=2.5时,出现error
五、实验分析
由定理,Sor法收敛的必要条件是0<ω<2,因此,当ω=1.5和1时,算法收敛,能够求出根,并且迭代次数根据ω的不同而不同,在求方程组的根时,只要选择恰当的ω,收敛是很快的。
而当ω>2 时,算法不收敛,因此程序出现错误,不能求出根。
当ω=1时,根据Sor法的构造方法知,此时的Sor法就是seidel法。