当前位置:文档之家› MATLAB实现迭代法最佳松弛因子的选取

MATLAB实现迭代法最佳松弛因子的选取

迭代法最佳松弛因子的选取
一、问题提出:
针对矩阵430341014A ⎡⎤
⎢⎥=-⎢⎥
⎢⎥-⎣⎦
,b=[24;30;-24],用SOR 迭代求解。

并选出最佳松弛
因子。

理论分析 1.24ω==≈。

做出()L ωρ关于ω函数
的图像。

二、理论基础
选取分裂矩阵M 为带参数的下三角矩阵)(1
wL D w
M -=, 其中w>0为可选择的松弛因子. 于是,由
⎪⎩⎪⎨⎧+=+f Bx x
x k k )
()1()0()
(初始向量 (k=0,1,…,)可构造一个迭代法,其迭代矩阵为A wL D w I L w 1)(---≡
=).)1(()(1wU D w wL D +---
从而得到解Ax=b 的主次逐次超松弛迭代法.
解Ax=b 的SOR 方法为
⎪⎩⎪⎨⎧+=+f Bx x
x k k )
()1()0()
(初始向量 (k=0,1,…,) (1) 其中
w L =).)1(()(1wU D w wL D +---(2) b wL D w f 1)(--=
下面给出解Ax=b 的SOR 迭代法的分量计算公式.记 ,),...,,...,()
()
()
(1)(T k n k i
k k x x x x =
由(1)式可得
,))1(()()()1(wb x wU D w x wL D k k ++-==-+ ).()()()1()()1(k k k k k Dx Ux Lx b w Dx Dx -+++=++ (3) 由此,得到解Ax=b 的SOR 方法的计算公式
⎪⎪⎪⎩⎪⎪⎪⎨⎧==--+==∑∑-==++.),1,0;,...,2,1(/)(,),...,(11)
(1)()1()0()0(1)0(为松弛因子
w k n i a x a x a b w x x x x x ii
i j n
i j k j ij k j ij i k i k i T n (4)

⎪⎪
⎪⎪

⎪⎪⎪⎪⎨⎧==--=∆∆+==∑∑-==++.,...),1,0;,...,2,1()/(,,),...,(.11)()1()
()
1()0()0(1)0(为松弛因子w k n i a x a x a b w x x x x x x x i j n i j ii k j ij k j ij i i i k i k i
T n (5)
※ 若要求选取出最佳松弛因子,则有两种方法:
⑴、 给出w 的最佳范围,当取不同的w 值时,会求出不同的谱半径R 的值,
然后判断出值最小的谱半径。

那么这个最小的谱半径所对应的w ,即为所求最佳松弛因子。

⑵、 给出w 的最佳范围,当取不同的w 值时,由(2)式进行迭代,看它们在
相同精度范围内的迭代次数,找出迭代次数最低的那一个,其所应用的w 即为最佳松弛因子。

三、实验内容:
从表格中可以看出,迭代次数随着松弛因子的增长而呈现先减后增的趋势,当谱半径最小时,其迭代次数最小。

则表示出谱半径最小时,其松弛因子为最佳松弛因子。

w和R的关系图如下:
1 1.05 1.1 1.15 1.
2 1.25 1.
3 1.35 1.4
图像中,其横坐标表示松弛因子,纵坐标表示谱半径。

从图中可以看出,随着松弛因子的增长,谱半径先是呈递减趋势,当达到最小值1.24时,呈上升趋势。

四、结果分析:
通过这次的实验,我们知道了关于怎样选取最佳松弛因子的方法和理论。

了解了最佳松弛因子与系数矩阵谱半径之间的关系,即谱半径越小那么其所对应的松弛因子越佳,且迭代次数越小。

所得结果与理论结果相符,即最佳松弛因子是1.24,表格及图象显示出,越接近理论值,误差越小!
参考文献
1.数值分析,李庆扬,王能超,易大义,2001,清华大学出版社(第四版)。

2.数值方法,关治,陆金甫,2006,清华大学出版社。

3.数值分析与实验学习指导,蔡大用,2001,清华大学出版社。

4.数值分析与实验,薛毅,2005,北京工业大学出版社。

附录:
程序如下:
A=[4,3,0;3,4,-1;0,-1,4]; %系数矩阵%
b=[24;30;-24];
D=diag(diag(A)); %A的对角矩阵%
U=-triu(A,1) ; %A上三角矩阵%
L=-tril(A,-1); %A的下三角矩阵%
m=[];t=[]; %创建两个空矩阵分别存放相对应的谱半径和记录迭代次数% for w=1:0.01:1.3; %取w的值%
q=(D-w*L);
p=inv(q); %求q的逆%
lw=p*((1-w)*D+w*U); %求得迭代矩阵%
V=eig(lw); %计算迭代矩阵的特征向量%
R=max(abs(V)); %找出绝对值最大的谱半径%
m=[m,R];
plot(w,R,'o'); %画出w和R的关系图%
hold on
f=(D-w*L)\b*w;
x0=[0;0;0]; %取迭代初值%
y=lw*x0+f;
n=1;
while norm(y-x0)>=1.0e-6 %迭代条件%
f=(D-w*L)\b*w;
x0=y;
y=lw*x0+f;
n=n+1;
end
t=[t,n];
end
[h,k]=min(t); %h记录最小的迭代次数,k记录第几个数最小%
求解过程
g=1.0+(k-1)*0.01;
f=(D-g*L)\b*g;
y=lw*x0+f;n=1;
while norm(y-x0)>=1.0e-6;
f=(D-g*L)\b*g;
x0=y;
y=lw*x0+f;
n=n+1;
end
y,h,g %y是解g是最佳松弛因子%。

相关主题