线性方程组迭代解法_第1页
线性方程组迭代解法_第2页
线性方程组迭代解法_第3页
线性方程组迭代解法_第4页
线性方程组迭代解法_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验六:线性方程组迭代解法 1)实验目的 熟悉Matlab编程; 学习线性方程组迭代解法的程序设计算法2)实验题目1.研究解线性方程组Ax=b迭代法收敛速度。A为20阶五对角距阵 要求:(1)选取不同的初始向量x0 及右端向量b,给定迭代误差要求,用雅可比迭代和高斯-赛德尔迭代法求解,观察得到的序列是否收敛?若收敛,记录迭代次数,分析计算结果并得出你的结论。(2)用SOR迭代法求解上述方程组,松弛系数取1< <2的不同值,在 时停止迭代.记录迭代次数,分析计算结果并得出你的结论。2.给出线性方程组,其中系数矩阵为希尔伯特矩阵:,假设若取分别用雅可比迭代法及SOR迭代()求解,比较计

2、算结果。3)实验原理与理论基础1.雅克比(Jacobi)迭代法算法设计: 输入矩阵a与右端向量b及初值x(1,i); 按公式计算得 2.高斯赛得尔迭代法算法设计:1. 输入矩阵a与右端向量b及初值x(1,i). 2. (i = 1, 2, n) 3.超松驰法算法设计:输入矩阵a与右端向量b及初值x(1,i)。 ,4)实验内容第一题实验程序:1.雅克比迭代法:function =yakebi(e)%输入矩阵a与右端向量b。for i=1:20 a(i,i)=3;endfor i=3:20 for j=i-2 a(i,j)=-1/4; a(j,i)=-1/4; endendfor i=2:20 f

3、or j=i-1 a(i,j)=-1/2; a(j,i)=-1/2; endendb=2.2 1.7 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.7 2.2;k=1;n=length(a);for i=1:n x(1,i)=1;%数组中没有第0行。endwhile k>=1 for i=1:n m=0; %此步也可以用ifj=i条件判定一下。 for j=1:(i-1) m=m+a(i,j)*x(k,j); end for j=(i+1):n m=m+a(i,j)*x(k,j); end x(k+1,

4、i)=(b(i)-m)/a(i,i); end l=0; %判定满足条件使循环停止迭代。 for i=1:n l=l+abs(x(k+1,i)-x(k,i); end if l<e break end k=k+1;end%输出所有的x的值。 x(k+1,:)k 2.高斯赛德尔迭代法:function =gaoshisaideer(e)for i=1:20 a(i,i)=3;endfor i=3:20 for j=i-2 a(i,j)=-1/4; a(j,i)=-1/4; endendfor i=2:20 for j=i-1 a(i,j)=-1/2; a(j,i)=-1/2; endend

5、b=2.2 1.7 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.7 2.2;k=1;n=length(a);for i=1:n x(1,i)=0;%数组中没有第0行。endwhile k>=1 for i=1:n p=0;q=0; for j=1:(i-1) p=p+a(i,j)*x(k+1,j); end for j=(i+1):n q=q+a(i,j)*x(k,j); end x(k+1,i)=(b(i)-q-p)/a(i,i); end l=0; %判定满足条件使循环停止迭代。 for i=1:

6、n l=l+abs(x(k+1,i)-x(k,i); end if l<e break end k=k+1;end%输出所有的x的值。 x(k+1,:)k3.SOR迭代法程序:function =caosongci(e,w)for i=1:20 a(i,i)=3;endfor i=3:20 for j=i-2 a(i,j)=-1/4; a(j,i)=-1/4; endendfor i=2:20 for j=i-1 a(i,j)=-1/2; a(j,i)=-1/2; endendb=2.2 1.7 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.

7、5 1.5 1.5 1.5 1.5 1.7 2.2;k=1;n=length(a);for i=1:n x(1,i)=0;%数组中没有第0行。endwhile k>=1 if w>=2|w<=1 '请重新输入w的值,w在1与2之间' break end for i=1:n p=0;q=0; for j=1:(i-1) p=p+a(i,j)*x(k+1,j); end for j=i:n q=q+a(i,j)*x(k,j); end x(k+1,i)=x(k,i)+w*(b(i)-q-p)/a(i,i); end l=0; %判定满足条件使循环停止迭代。 for

8、 i=1:n l=l+abs(x(k+1,i)-x(k,i); end if l<e break end k=k+1;end%输出所有的x的值。 x(k+1,:)k第二题实验程序:1.雅克比迭代法:function X = p211_1_JJ(n)Hn = GET_Hn(n);b = GET_b(n);temp = 0;X0 = zeros(1, n);X_old = zeros(1, n);X_new = zeros(1, n);disp('Now Jacobi method!');disp('Start with the vector that (0, 0,

9、0, .)T');for i = 1:n for k = 1:n X_old = X_new; temp = 0; for j = 1:n if(j = i) temp = temp + Hn(i, j) * X_old(j); end end X_new(i) = (b(i) - temp) / Hn(i, i); endendX = X_new;end2.SOR迭代法:function X = p211_1_SOR(n, w)Hn = GET_Hn(n);b = GET_b(n);temp01 = 0;temp02 = 0;X0 = zeros(1, n);X_old = zero

10、s(1, n);X_new = zeros(1, n);disp('Now Successive Over Relaxtion method!');disp('Start with the vector that (0, 0, 0, .)T');for i = 1:n for k = 1:n X_old = X_new; temp01 = 0; temp02 = 0; for j = 1:n if(j < i) temp01 = temp01 + Hn(i, j) * X_new(j); end if(j > i) temp02 = temp02 +

11、 Hn(i, j) * X_old(j); end end end X_new(i) = w * (b(i) - temp01 - temp02) / Hn(i, i) + X_old(i);endX = X_new;end5)实验结果第一题实验结果:1.雅克比迭代法:输入:>> b=2.2 1.7 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.7 2.2;yakebi(0.00001)结果:ans = Columns 1 through 12 0.9793 0.9787 0.9941 0.997

12、0 0.9989 0.9995 0.9998 0.9999 1.0000 1.0000 1.0000 1.0000 Columns 13 through 20 0.9999 0.9998 0.9995 0.9989 0.9970 0.9941 0.9787 0.9793k = 122.高斯赛德尔迭代法:此时初值全取1;输入:>> b=2.2 1.7 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.7 2.2;>> gaoshisaideer(0.00001)结果:ans = Column

13、s 1 through 12 0.9793 0.9787 0.9941 0.9970 0.9989 0.9995 0.9998 0.9999 1.0000 1.0000 1.0000 1.0000 Columns 13 through 20 0.9999 0.9998 0.9995 0.9989 0.9970 0.9941 0.9787 0.9793k =14此时初值全取1;输入:>> b=2.5 1.9 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.9 2.5;gaoshisaideer(0.0

14、0001)结果:ans = Columns 1 through 12 1.0969 1.0707 1.0219 1.0103 1.0039 1.0016 1.0006 1.0003 1.0001 1.0001 1.0001 1.0001 Columns 13 through 20 1.0003 1.0006 1.0016 1.0039 1.0103 1.0219 1.0707 1.0969k = 143.SOR迭代法:>> caosongci(0.00001,1.1)ans = Columns 1 through 12 0.9793 0.9787 0.9941 0.9970 0.9

15、989 0.9995 0.9998 0.9999 1.0000 1.0000 1.0000 1.0000 Columns 13 through 20 0.9999 0.9998 0.9995 0.9989 0.9970 0.9941 0.9787 0.9793k = 11>> caosongci(0.00001,1.2)ans = Columns 1 through 12 0.9793 0.9787 0.9941 0.9970 0.9989 0.9995 0.9998 0.9999 1.0000 1.0000 1.0000 1.0000 Columns 13 through 20

16、0.9999 0.9998 0.9995 0.9989 0.9970 0.9941 0.9787 0.9793k = 12>> caosongci(0.00001,1.3)ans = Columns 1 through 12 0.9793 0.9787 0.9941 0.9970 0.9989 0.9995 0.9998 0.9999 1.0000 1.0000 1.0000 1.0000 Columns 13 through 20 0.9999 0.9998 0.9995 0.9989 0.9970 0.9941 0.9787 0.9793k = 15>> caoso

17、ngci(0.00001,1.4)ans = Columns 1 through 12 0.9793 0.9787 0.9941 0.9970 0.9989 0.9995 0.9998 0.9999 1.0000 1.0000 1.0000 1.0000 Columns 13 through 20 0.9999 0.9998 0.9995 0.9989 0.9970 0.9941 0.9787 0.9793k = 19>> caosongci(0.00001,1.5)ans = Columns 1 through 12 0.9793 0.9787 0.9941 0.9970 0.9

18、989 0.9995 0.9998 0.9999 1.0000 1.0000 1.0000 1.0000 Columns 13 through 20 0.9999 0.9998 0.9995 0.9989 0.9970 0.9941 0.9787 0.9793k = 25>> caosongci(0.00001,1.6)ans = Columns 1 through 12 0.9793 0.9787 0.9941 0.9970 0.9989 0.9995 0.9998 0.9999 1.0000 1.0000 1.0000 1.0000 Columns 13 through 20

19、0.9999 0.9998 0.9995 0.9989 0.9970 0.9941 0.9787 0.9793k = 34>> caosongci(0.00001,1.7)ans = Columns 1 through 12 0.9793 0.9787 0.9941 0.9970 0.9989 0.9995 0.9998 0.9999 1.0000 1.0000 1.0000 1.0000 Columns 13 through 20 0.9999 0.9998 0.9995 0.9989 0.9970 0.9941 0.9787 0.9793k = 47>> caoso

20、ngci(0.00001,1.8)ans = Columns 1 through 12 0.9793 0.9787 0.9941 0.9970 0.9989 0.9995 0.9998 0.9999 1.0000 1.0000 1.0000 1.0000 Columns 13 through 20 0.9999 0.9998 0.9995 0.9989 0.9970 0.9941 0.9787 0.9793k = 73>> caosongci(0.00001,1.9)ans = Columns 1 through 12 0.9793 0.9787 0.9941 0.9970 0.9

21、989 0.9995 0.9998 0.9999 1.0000 1.0000 1.0000 1.0000 Columns 13 through 20 0.9999 0.9998 0.9995 0.9989 0.9970 0.9941 0.9787 0.9793k = 150第二题实验结果:1.雅克比迭代法: >> p211_1_JJ(6) Now Jacobi method!Start with the vector that (0, 0, 0, .)Tans = 2.4500 1.1036 0.6265 0.4060 0.2831 0.2071>> p211_1_JJ

22、(8)Now Jacobi method!Start with the vector that (0, 0, 0, .)Tans =2.7179 1.4101 0.8524 0.5809 0.4221 0.3198 0.2497 0.1995 >> p211_1_JJ(10)Now Jacobi method!Start with the vector that (0, 0, 0, .)Tans = Columns 1 through 9 2.9290 1.6662 1.0517 0.7423 0.5554 0.4315 0.3445 0.2807 0.2325 Column 10

23、 0.19512.SOR迭代法:n=6, =1,1.25,1.5的时候>> p211_1_SOR(6, 1)Now Successive Over Relaxtion method!Start with the vector that (0, 0, 0, .)Tans = 2.4500 1.1036 0.6265 0.4060 0.2831 0.2071>> p211_1_SOR(6, 1.25)Now Successive Over Relaxtion method!Start with the vector that (0, 0, 0, .)Tans = 3.062

24、5 0.2310 0.8704 0.3389 0.3141 0.2097>> p211_1_SOR(6, 1.5)Now Successive Over Relaxtion method!Start with the vector that (0, 0, 0, .)Tans = 3.6750 -1.1009 2.0106 -0.3994 0.7670 -0.0384与n=8, =1,1.25,1.5的时候>> p211_1_SOR(8, 1)Now Successive Over Relaxtion method!Start with the vector that (

25、0, 0, 0, .)Tans =2.7179 1.4101 0.8524 0.5809 0.4221 0.3198 0.2497 0.1995>> p211_1_SOR(8, 1.25)Now Successive Over Relaxtion method!Start with the vector that (0, 0, 0, .)Tans =3.3973 0.4887 1.0898 0.5062 0.4501 0.3203 0.2573 0.2042>> p211_1_SOR(8, 1.5)Now Successive Over Relaxtion method!Start with the vector that (0, 0, 0, .)Tans =4.0768 -0.9424 2.2923 -0.2753 0.9252 0.0578 0.4071 0.1275与n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论