SOR迭代(算法分析和数值算例)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SOR 迭代
基本思想
Gauss-Seidel 迭代(1)
1()
(1)
()()
k k x D L U x
D L +--=-+-的结果作为中间值,记为
(1)
k x
+ 。SOR 方法是将(1)
k x
+ 与上次计算的结果()
k x 做加权平均作为最后结果。迭
代格式为:
1(1)
(1)
()()
1
1
1[](1),1,2i n
k k k k i
i ij j
ij j i
j j i ii
x b a x a x x i n
a ω
ω-++==+=-
-
+-=∑
∑
或者
1(1)
()
(1)
()
1
1[],1,2i n
k k k k i
i
i ij j
ij j j j i
ii
x x b a x a x i n
a ω
-++===+-
-
=∑
∑
算法: 1.
0,,,A b x t e ω输入迭代初值松弛参数,为迭代次数初始值为0,为记录误差
2. 当1,2i
n
= 时,1
1:[]n
i i i i j j j ii
x x b a x a ω
==
+-
∑
,结果仍然存储在i
x 中。迭
代次数:1t t =+ 3.
计算误差*
e x x
=-(真解已知)
4.
如果6
510
e -<⨯,则已达到精确度要求,否则继续第2步
数值结果
04
10101
41,4,001
430A b x -⎛⎫⎛⎫⎛⎫ ⎪ ⎪ ⎪=--== ⎪ ⎪ ⎪
⎪ ⎪ ⎪--⎝⎭⎝⎭⎝⎭
迭代初值,用Gauss 消去法求的其真解为
*
12112x ⎛⎫
⎪ ⎪=
⎪ ⎪- ⎪⎝
⎭
依次取1,1.03,1.1ω=,数值结果见下表
总结
从实验结果可以看出,当取松弛参数为1.03时只需五步就能达到所需精度。
附录(M文件)
function [t,x]=successiive_over_Rellaxatiion(A,b,x0,w,rx)
n=length(A);
x=x0; %% x0为迭代初值
e=norm(rx-x0,inf); %% rx为真解,e为误差
t=0; %% t为迭代次数
while e>5*10^(-6)
for i=1:n
temp=0;
for j=1:n
temp=temp+A(i,j)*x(j,1);
end
x(i,1)=x(i,1)+w*(b(i,1)-temp)/A(i,i);
end
e=norm(rx-x,inf);
t=t+1;
x
end