数值分析大作业 超松弛迭代法如何选取最佳松弛因子

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

超松弛迭代法如何选取最佳松弛因子

船建学院B1301095 wj

一、课题背景

逐次超松弛迭代法是Gauss-Seidel方法的一种加速方法,是解大型稀疏矩阵方程组的有效方法之一,它具有计算公式简单,程序设计容易,占用计算机内存较少等优点,但需要选择好的加速因子(即最佳松弛因子)。

最佳松弛因子ω的确定是数值代数中的一个理论难题,对于不同的矩阵,其最佳松弛因子往往相差很大,没有统一的计算公式来确定ω。由于对称正定矩阵sor方法收敛的充分必要条件为w在0到2之间,故利用对称正定矩阵一定收敛的性质,本文提供一种针对于系数矩阵为对称正定矩阵时,如何选取合适的最佳松弛因子的方法。

二、课题研究流程图

三、SOR迭代公式

逐次超松弛(Successive Over Relaxation)迭代法,简称SOR迭代法,它是在GS法基础上为提高收敛速度,采用加权平均而得到的新算法,设解方程的GS法记为

(1)

再由与加权平均得

这里ω>0称为松弛参数,将(1)式代入则得

(2)

称为SOR迭代法,[WTBX]ω>0称为松弛因子,当ω=1时(2)式即为GS法,将(2)式写成矩阵形式,则得

于是得SOR迭代的矩阵表示

(3)

四、Matlab程序

%sor法确定对称正定矩阵的最佳松弛因子w%

clc;clear;

n=100;

%矩阵的阶数%

for num=1:100

X=diag(rand(n,1));

U=orth(rand(n,n)-0.5);

a=U'*X*U;

%以上是利用随机对角矩阵和随机正交矩阵,产生随机的对称正定矩阵,正交变化不改变特征值%

L=zeros(n,n);

U=zeros(n,n);

%分配L和U的内存空间%

step=0.02;

%定义w的计算精度%

for k=1:(2/step) %由于对称正定矩阵sor方法收敛的充分必要条件为w在0到2之间%

w=(k-1)*step;

for i=1:n %一个总的for循环给三个矩阵赋值D-L-U=A,%

for j=1:i-1

L(i,j)=-a(i,j);%L矩阵的赋值%

end

for j=i+1:n

U(i,j)=-a(i,j);%U矩阵的赋值%

end

D(i,i)=a(i,i);%D矩阵的赋值%

end

H=inv(D-w*L)*((1-w)*D+w*U);%sor方法的核心,H矩阵为迭代矩阵%

p(k)=max(abs(eig(H)));%利用此函数求矩阵的谱半径%

end

k_min=find(p==min(p));%find函数寻找不同的w中谱半径的最小值,即寻找收敛最快的w%

w_min(num)=(k_min-1)*step;%由最小值的序号得到最优的w%

end

hist(w_min,100)%对数量足够多的随机对称正定矩阵做频率统计,w划分100份,做出统计图%

mean(w_min)%对不同矩阵的最小谱半径所对应的w对平均统计%

五、结果

对于不同阶数,计算得到的最佳收敛因子w不同,大致是随阶数增大而增大。对不同阶数对最佳收敛因子w的平均值统计,做出的表格,如下表所示:

n阶数3阶4阶5阶6阶7阶8阶9阶10阶最佳收敛因子w 1.10 1.17 1.20 1.23 1.26 1.28 1.31 1.32

n阶数15阶20阶25阶50阶75阶100阶

最佳收敛因子w 1.39 1.43 1.47 1.62 1.65 1.68

(注:由于本人电脑运行速度有限以及学习能力和精力有限,只能算到100阶,而且在25阶以后都采用计算100个矩阵,误差会比较大。)

图1、不同阶数下的最佳收敛因子w的取值图

分析:(1)最佳收敛因子w随着n阶数增大而增加;

(2)、当n比较小时最佳收敛因子w在1附近,而且增加很快;当n很大时,最佳收敛因子向2的方向发展,并逐渐收敛。

图2、N=4时最佳松弛因子的频率统计图

图3、N=5时最佳松弛因子的频率统计图

图4、N=10时最佳松弛因子的频率统计图

图5、N=25时最佳松弛因子的频率统计图

图6、N=50时最佳松弛因子的频率统计图

图7、N=100时最佳松弛因子的频率统计图

六、总结与展望

本文从研究如何确定对称正定矩阵sor迭代法的最佳松弛因子入手,由matlab构造函数产生随机对称正定矩阵,取n从3到100,计算出各个最佳松弛因子的平均值,然后做出统计表格和发展趋势曲线,由分析可得n越大最佳松弛因子也越大,但增长速度也变慢,最后会收敛到一个数。

可以对其他特殊的矩阵进行确定sor方法最佳松弛因子的研究工作,对工程上快速迭代出计算结果有重要研究价值,同时对n阶数很大的矩阵进一步计算确定其最佳松弛因子,观察其收敛性。

本文为非数学系研究僧撰写,数学系路过的大神请轻喷!(wujun)

相关文档
最新文档