LAB07解线性方程组的基本迭代法实验Word文档下载推荐.docx
《LAB07解线性方程组的基本迭代法实验Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《LAB07解线性方程组的基本迭代法实验Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。
若收敛,通过迭代次数分析计算结果并得出你的结论。
(2)用编写的SOR迭代法程序,对于
(1)所选取的初始向量
及右端面项向量b进行求解,松驰系数ω取1<
ω<
2的不同值,在
时停止迭代,通过迭代次数分析计算结果并得出你的结论。
【实验仪器与软件】
1.CPU主频在1GHz以上,内存在128Mb以上的PC;
2.Matlab6.0及以上版本。
实验讲评:
实验成绩:
评阅教师:
200年月日
一、算法描述
1、雅可比迭代法描述如下:
将线性方程组
中的系数矩阵
分为三部分
设
选取M为A的对角元素部分,即选取M=D(对角矩阵),A=D-N
,由
得到解Ax=b的雅可比迭代法
其中
,称J为解Ax=b的雅可比迭代法的迭代矩阵。
2、高斯-塞德尔迭代法描述如下:
选取分裂矩阵M为A的下三角部分,即选取M=D-L(下三角矩阵),A=M-N,于是由
得到解Ax=b的高斯-塞德尔迭代法
,其中
为解Ax=b的高斯-塞德尔迭代法的迭代矩阵。
3、逐次超松弛迭代法描述如下:
选取分裂矩阵M为带参数的下三角矩阵
为可选择的松弛因子,于是由
可构造一个迭代法,其迭代矩阵为
,从而得到解Ax=b的逐次超松弛迭代法,简称SOR法。
解Ax=b的SOR方法为
二、算法程序
1、编写Jacobi迭代法的M文件如下:
function[x,n]=Jacobi(A,b,x0,r)
formatlong
n=length(A);
D=diag(diag(A));
L=(-1)*tril(A,-1);
U=(-1)*triu(A,1);
B=inv(D)*(L+U);
f=inv(D)*b;
x=B*x0+f;
n=1;
whilenorm(x-x0)>
=r
x0=x;
x=B*x0+f;
n=n+1;
end
2、编写Gauss-Seidel迭代法的M文件如下:
function[x,n]=GaussSeidel(A,b,x0,r)
B=inv(D-L)*U;
f=inv(D-L)*b;
3、编写SOR迭代法的M文件如下:
function[x,n]=SOR(A,b,x0,w,r)
Lw=inv(D-w*L)*((1-w)*D+w*U);
f=w*inv(D-w*L)*b;
x=Lw*x0+f;
x=Lw*x0+f;
三、数值实验
矩阵A的程序表示如下:
functionA=lucius()
A=[3-1/2-1/400000000000000000;
-1/23-1/2-1/40000000000000000;
-1/4-1/23-1/2-1/4000000000000000;
0-1/4-1/23-1/2-1/400000000000000;
00-1/4-1/23-1/2-1/40000000000000;
000-1/4-1/23-1/2-1/4000000000000;
0000-1/4-1/23-1/2-1/400000000000;
00000-1/4-1/23-1/2-1/40000000000;
000000-1/4-1/23-1/2-1/4000000000;
0000000-1/4-1/23-1/2-1/400000000;
00000000-1/4-1/23-1/2-1/40000000;
000000000-1/4-1/23-1/2-1/4000000;
0000000000-1/4-1/23-1/2-1/400000;
00000000000-1/4-1/23-1/2-1/40000;
000000000000-1/4-1/23-1/2-1/4000;
0000000000000-1/4-1/23-1/2-1/400;
00000000000000-1/4-1/23-1/2-1/40;
000000000000000-1/4-1/23-1/2-1/4;
0000000000000000-1/4-1/23-1/2;
00000000000000000-1/4-1/23];
1、用Jacobi迭代法程序求解:
clearall;
clc;
r=1.0e-6;
x0=[00000000000000000000]'
;
A=lucius();
b=[71711151171711317121]'
[x,n]=Jacobi(A,b,x0,r)
改变数值:
x0=[51511151151155555555]'
b=[87177947731787275177]'
2、用Gauss-Seidel迭代法程序求解:
x0=[55555555555555555555]'
b=[18798406394134181314]'
[x,n]=GaussSeidel(A,b,x0,r)
b=[13314408710085258213]'
根据以上结果可知得到的序列是收敛的
SOR迭代法:
w=1.2;
r=1.0e-5;
x0=[77777777777777777777]'
b=[20120615131426971523]'
[x,n]=SOR(A,b,x0,w,r)
clearall;
x0=[85125724832458732653]'
b=[52212519920104001513]'
四、总结
通过以上实验了解了三种迭代法的算法结构,掌握了三种基本迭代法的使用,通过对结果的分析了解了每一种迭代法的特点,并且可以得出结论:
相对于雅可比迭代法,高斯-塞得尔迭代法加快了收敛速度,而SOR迭代法的收敛速度与松弛因子ω有关。