当前位置:文档之家› 线性方程组迭代解法

线性方程组迭代解法

实验六:线性方程组迭代解法1)实验目的• 熟悉Matlab 编程;• 学习线性方程组迭代解法的程序设计算法 2)实验题目1.研究解线性方程组Ax=b 迭代法收敛速度。

A 为20阶五对角距阵⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡------------------=321412132141412132141412132141412132141213O O O O O A 要求:(1)选取不同的初始向量x 0 及右端向量b ,给定迭代误差要求,用雅可比迭代和高斯-赛德尔迭代法求解,观察得到的序列是否收敛?若收敛,记录迭代次数,分析计算结果并得出你的结论。

(2)用SOR 迭代法求解上述方程组,松弛系数ω取1< ω <2的不同值,在 时停止迭代.记录迭代次数,分析计算结果并得出你的结论。

2.给出线性方程组b x H n =,其中系数矩阵n H 为希尔伯特矩阵:()n n ij n h H ⨯ℜ∈=,.,,2,1,,1n j i j i ih ij Λ=-+=假设().,1,,1,1*x H b x n n T=ℜ∈=Λ若取,10,8,6=n 分别用雅可比迭代法及SOR 迭代(5.1,25.1,1=ω)求解,比较计算结果。

3)实验原理与理论基础1.雅克比(Jacobi )迭代法算法设计:①输入矩阵a 与右端向量b 及初值x(1,i); ②按公式计算得),,2,1(1)(1)1(n i x a b a x k j n i j j ij i iik i Λ=⎪⎪⎪⎭⎫ ⎝⎛-=∑≠=+2.高斯――赛得尔迭代法算法设计:1. 输入矩阵a 与右端向量b 及初值x(1,i).2.⎪⎪⎭⎫⎝⎛--=∑∑+=+-=+)(1)1(11)1(1k j ni j ij k j i j ij i iik ix a x a b a x(i = 1, 2,…, n )3.超松驰法算法设计:①输入矩阵a 与右端向量b 及初值x(1,i)。

②⎪⎪⎭⎫⎝⎛--+-=∑∑+=+-=+)(1)1(11)()1()1(k j ni j ij k ji j ij i ii k ik ix a x a b a xxωω,20<<ω4)实验容第一题实验程序: 1.雅克比迭代法: function []=yakebi(e) %输入矩阵a 与右端向量b 。

for i=1:20 a(i,i)=3; endfor i=3:20 for j=i-2a(i,j)=-1/4; a(j,i)=-1/4; end endfor i=2:20 for j=i-1a(i,j)=-1/2; a(j,i)=-1/2; end endb=[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:nx(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); endfor j=(i+1):nm=m+a(i,j)*x(k,j); endx(k+1,i)=(b(i)-m)/a(i,i);endl=0;%判定满足条件使循环停止迭代。

for i=1:nl=l+abs(x(k+1,i)-x(k,i));endif l<ebreakendk=k+1;end%输出所有的x的值。

x(k+1,:)k2.高斯—赛德尔迭代法:function []=gaoshisaideer(e)for i=1:20a(i,i)=3;endfor i=3:20for j=i-2a(i,j)=-1/4;a(j,i)=-1/4;endendfor i=2:20for j=i-1a(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:nx(1,i)=0;%数组中没有第0行。

endwhile k>=1for i=1:np=0;q=0;for j=1:(i-1)p=p+a(i,j)*x(k+1,j);endfor j=(i+1):nq=q+a(i,j)*x(k,j);endx(k+1,i)=(b(i)-q-p)/a(i,i);endl=0;%判定满足条件使循环停止迭代。

for i=1:nl=l+abs(x(k+1,i)-x(k,i));endif l<ebreakendk=k+1;end%输出所有的x的值。

x(k+1,:)k3.SOR迭代法程序:function []=caosongci(e,w)for i=1:20a(i,i)=3;endfor i=3:20for j=i-2a(i,j)=-1/4;a(j,i)=-1/4;endendfor i=2:20for j=i-1a(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:nx(1,i)=0;%数组中没有第0行。

endwhile k>=1if w>=2||w<=1'请重新输入w的值,w在1与2之间';endfor i=1:np=0;q=0;for j=1:(i-1)p=p+a(i,j)*x(k+1,j);endfor j=i:nq=q+a(i,j)*x(k,j);endx(k+1,i)=x(k,i)+w*(b(i)-q-p)/a(i,i);endl=0;%判定满足条件使循环停止迭代。

for i=1:nl=l+abs(x(k+1,i)-x(k,i));endif l<ebreakendk=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, 0, ...)^T');for i = 1:nfor k = 1:nX_old = X_new;temp = 0;for j = 1:nif(j ~= i)temp = temp + Hn(i, j) * X_old(j);endX_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 = zeros(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:nfor k = 1:nX_old = X_new;temp01 = 0;temp02 = 0;for j = 1:nif(j < i)temp01 = temp01 + Hn(i, j) * X_new(j);endif(j > i)temp02 = temp02 + Hn(i, j) * X_old(j);endendendX_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 120.9793 0.9787 0.9941 0.9970 0.9989 0.9995 0.9998 0.9999 1.0000 1.0000 1.0000 1.0000Columns 13 through 200.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 =Columns 1 through 120.9793 0.9787 0.9941 0.9970 0.9989 0.9995 0.9998 0.99991.0000 1.0000 1.0000 1.0000Columns 13 through 200.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.00001)结果:ans =Columns 1 through 121.0969 1.0707 1.0219 1.0103 1.0039 1.0016 1.0006 1.0003 1.0001 1.0001 1.0001 1.0001Columns 13 through 201.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 120.9793 0.9787 0.9941 0.9970 0.9989 0.9995 0.99980.9999 1.0000 1.0000 1.0000 1.0000Columns 13 through 200.9999 0.9998 0.9995 0.9989 0.9970 0.9941 0.97870.9793k =11>> caosongci(0.00001,1.2)ans =Columns 1 through 120.9793 0.9787 0.9941 0.9970 0.9989 0.9995 0.9998 0.9999 1.0000 1.0000 1.0000 1.0000Columns 13 through 200.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 120.9793 0.9787 0.9941 0.9970 0.9989 0.9995 0.9998 0.9999 1.0000 1.0000 1.0000 1.0000Columns 13 through 200.9999 0.9998 0.9995 0.9989 0.9970 0.9941 0.9787 0.9793k =15>> caosongci(0.00001,1.4)ans =Columns 1 through 120.9793 0.9787 0.9941 0.9970 0.9989 0.9995 0.9998 0.9999 1.0000 1.0000 1.0000 1.0000Columns 13 through 200.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 120.9793 0.9787 0.9941 0.9970 0.9989 0.9995 0.9998 0.9999 1.0000 1.0000 1.0000 1.0000Columns 13 through 200.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 120.9793 0.9787 0.9941 0.9970 0.9989 0.9995 0.9998 0.9999 1.0000 1.0000 1.0000 1.0000Columns 13 through 200.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 120.9793 0.9787 0.9941 0.9970 0.9989 0.9995 0.9998 0.9999 1.0000 1.0000 1.0000 1.0000Columns 13 through 200.9999 0.9998 0.9995 0.9989 0.9970 0.9941 0.9787 0.9793k =47>> caosongci(0.00001,1.8)ans =Columns 1 through 120.9793 0.9787 0.9941 0.9970 0.9989 0.9995 0.9998 0.9999 1.0000 1.0000 1.0000 1.0000Columns 13 through 200.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 120.9793 0.9787 0.9941 0.9970 0.9989 0.9995 0.9998 0.9999 1.0000 1.0000 1.0000 1.0000Columns 13 through 200.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(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.24970.1995>> p211_1_JJ(10)Now Jacobi method!Start with the vector that (0, 0, 0, ...)^Tans =Columns 1 through 92.9290 1.6662 1.0517 0.7423 0.5554 0.4315 0.34450.2807 0.2325Column 100.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.0625 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 (0, 0, 0, ...)^Tans =2.7179 1.4101 0.8524 0.5809 0.4221 0.3198 0.24970.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.25730.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.40710.1275与n=10, ω=1,1.25,1.5的时候>> p211_1_SOR(10, 1)Now Successive Over Relaxtion method!Start with the vector that (0, 0, 0, ...)^Tans =Columns 1 through 92.9290 1.6662 1.0517 0.7423 0.5554 0.4315 0.34450.2807 0.2325Column 100.1951>> p211_1_SOR(10, 1.25)Now Successive Over Relaxtion method!Start with the vector that (0, 0, 0, ...)^Tans =Columns 1 through 93.6612 0.7098 1.2835 0.6617 0.5807 0.4299 0.35060.2844 0.2363Column 100.1984>> p211_1_SOR(10, 1.5)Now Successive Over Relaxtion method!Start with the vector that (0, 0, 0, ...)^Tans =Columns 1 through 94.3935 -0.7958 2.5326 -0.1523 1.0720 0.1565 0.50500.2041 0.2819Column 100.17666)实验结果分析与小结本次实习主要是学会应用雅克比迭代法、高斯—赛德尔迭代法、SOR迭代法三种迭代法,并且了解三种迭代法的性质以及迭代精度等。

相关主题