break
end
k=k+1;
end
%输出所有的x的值。
x(k+1,:
)
k
第二题实验程序:
1.雅克比迭代法:
functionX=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('NowJacobimethod!
');
disp('Startwiththevectorthat(0,0,0,...)^T');
fori=1:
n
fork=1:
n
X_old=X_new;
temp=0;
forj=1:
n
if(j~=i)
temp=temp+Hn(i,j)*X_old(j);
end
end
X_new(i)=(b(i)-temp)/Hn(i,i);
end
end
X=X_new;
end
2.SOR迭代法:
functionX=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('NowSuccessiveOverRelaxtionmethod!
');
disp('Startwiththevectorthat(0,0,0,...)^T');
fori=1:
n
fork=1:
n
X_old=X_new;
temp01=0;
temp02=0;
forj=1:
n
if(j
temp01=temp01+Hn(i,j)*X_new(j);
end
if(j>i)
temp02=temp02+Hn(i,j)*X_old(j);
end
end
end
X_new(i)=w*(b(i)-temp01-temp02)/Hn(i,i)+X_old(i);
end
X=X_new;
end
5)实验结果
第一题实验结果:
1.雅克比迭代法:
输入:
>>b=[2.21.71.51.51.51.51.51.51.51.51.51.51.51.51.51.51.51.51.72.2];
yakebi(0.00001)
结果:
ans=
Columns1through12
0.97930.97870.99410.99700.99890.99950.99980.99991.00001.00001.00001.0000
Columns13through20
0.99990.99980.99950.99890.99700.99410.97870.9793
k=
12
2.高斯—赛德尔迭代法:
此时初值全取1;
输入:
>>b=[2.21.71.51.51.51.51.51.51.51.51.51.51.51.51.51.51.51.51.72.2];
>>gaoshisaideer(0.00001)
结果:
ans=
Columns1through12
0.97930.97870.99410.99700.99890.99950.99980.99991.00001.00001.00001.0000
Columns13through20
0.99990.99980.99950.99890.99700.99410.97870.9793
k=
14
此时初值全取1;
输入:
>>b=[2.51.91.51.51.51.51.51.51.51.51.51.51.51.51.51.51.51.51.92.5];
gaoshisaideer(0.00001)
结果:
ans=
Columns1through12
1.09691.07071.02191.01031.00391.00161.00061.00031.00011.00011.00011.0001
Columns13through20
1.00031.00061.00161.00391.01031.02191.07071.0969
k=
14
3.SOR迭代法:
>>caosongci(0.00001,1.1)
ans=
Columns1through12
0.97930.97870.99410.99700.99890.99950.99980.99991.00001.00001.00001.0000
Columns13through20
0.99990.99980.99950.99890.99700.99410.97870.9793
k=
11
>>caosongci(0.00001,1.2)
ans=
Columns1through12
0.97930.97870.99410.99700.99890.99950.99980.99991.00001.00001.00001.0000
Columns13through20
0.99990.99980.99950.99890.99700.99410.97870.9793
k=
12
>>caosongci(0.00001,1.3)
ans=
Columns1through12
0.97930.97870.99410.99700.99890.99950.99980.99991.00001.00001.00001.0000
Columns13through20
0.99990.99980.99950.99890.99700.99410.97870.9793
k=
15
>>caosongci(0.00001,1.4)
ans=
Columns1through12
0.97930.97870.99410.99700.99890.99950.99980.99991.00001.00001.00001.0000
Columns13through20
0.99990.99980.99950.99890.99700.99410.97870.9793
k=
19
>>caosongci(0.00001,1.5)
ans=
Columns1through12
0.97930.97870.99410.99700.99890.99950.99980.99991.00001.00001.00001.0000
Columns13through20
0.99990.99980.99950.99890.99700.99410.97870.9793
k=
25
>>caosongci(0.00001,1.6)
ans=
Columns1through12
0.97930.97870.99410.99700.99890.99950.99980.99991.00001.00001.00001.0000
Columns13through20
0.99990.99980.99950.99890.99700.99410.97870.9793
k=
34
>>caosongci(0.00001,1.7)
ans=
Columns1through12
0.97930.97870.99410.99700.99890.99950.99980.99991.00001.00001.00001.0000
Columns13through20
0.99990.99980.99950.99890.99700.99410.97870.9793
k=
47
>>caosongci(0.00001,1.8)
ans=
Columns1through12
0.97930.97870.99410.99700.99890.99950.99980.99991.00001.00001.00001.0000
Columns13through20
0.99990.99980.99950.99890.99700.99410.97870.9793
k=
73
>>caosongci(0.00001,1.9)
ans=
Columns1through12
0.97930.97870.99410.99700.99890.99950.99980.99991.00001.00001.00001.0000
Columns13through20
0.99990.99980.99950.99890.99700.99410.97870.9793
k=
150
第二题实验结果:
1.雅克比迭代法:
>>p211_1_JJ(6)
NowJacobimethod!
Startwiththevectorthat(0,0,0,...)^T
ans=
2.45001.10360.62650.40600.28310.2071
>>p211_1_JJ(8)
NowJacobimethod!
Startwiththevectorthat(0,0,0,...)^T
ans=
2.71791.41010.85240.58090.42210.31980.24970.1995
>>p211_1_JJ(10)
NowJacobimethod!
Startwiththevectorthat(0,0,0,...)^T
ans=
Columns1through9
2.92901.66621.05170.74230.55540.43150.34450.28070.2325
Column10
0.1951
2.SOR迭代法:
n=6,ω=1,1.25,1.5的时候
>>p211_1_SOR(6,1)
NowSuccessiveOverRelaxtionmethod!
Startwiththevectorthat(0,0,0,...)^T
ans=
2.45001.10360.62650.40600.28310.2071
>>p211_1_SOR(6,1.25)
NowSuccessiveOverRelaxtionmethod!
Startwiththevectorthat(0,0,0,...)^T
ans=
3.06250.23100.87040.33890.31410.2097
>>p211_1_SOR(6,1.5)
NowSuccessiveOverRelaxtionmethod!
Startwiththevectorthat(0,0,0,...)^T
ans=
3.6750-1.10092.0106-0.39940.7670-0.0384
与n=8,ω=1,1.25,1.5的时候
>>p211_1_SOR(8,1)
NowSuccessiveOverRelaxtionmethod!
Startwiththevectorthat(0,0,0,...)^T
ans=
2.71791.41010.85240.58090.42210.31980.24970.1995
>>p211_1_SOR(8,1.25)
NowSuccessiveOverRelaxtionmethod!
Startwiththevectorthat(0,0,0,...)^T
ans=
3.39730.48871.08980.50620.45010.32030.25730.2042
>>p211_1_SOR(8,1.5)
NowSuccessiveOverRelaxtionmethod!
Startwiththevectorthat(0,0,0,...)^T
ans=
4.0768-0.94242.2923-0.27530.92520.05780.40710.1275
与n=10,ω=1,1.25,1.5的时候
>>p211_1_SOR(10,1)
NowSuccessiveOverRelaxtionmethod!
Startwiththevectorthat(0,0,0,...)^T
ans=
Columns1through9
2.92901.66621.05170.74230.55540.43150.34450.28070.2325
Column10
0.1951
>>p211_1_SOR(10,1.25)
NowSuccessiveOverRelaxtionmethod!
Startwiththevectorthat(0,0,0,...)^T
ans=
Columns1through9
3.66120.70981.28350.66170.58070.42990.35060.28440.2363
Column10
0.1984
>>p211_1_SOR(10,1.5)
NowSuccessiveOverRelaxtionmethod!
Startwiththevectorthat(0,0,0,...)^T
ans=
Columns1through9
4.3935-0.79582.5326-0.15231.07200.15650.50500.20410.2819
Column10
0.1766
6)实验结果分析与小结
本次实习主要是学会应用雅克比迭代法、高斯—赛德尔迭代法、SOR迭代法三种迭代法,并且了解三种迭代法的性质以及迭代精度等。
第一题中取的b对于雅克比迭代法、高斯――赛得尔迭代法都是收敛的,对于相同的初值与右端向量明显可以看出高斯――赛得尔迭代法比雅克比迭代法快。
由第二题可得出对于SOR迭代方法选择不同的松弛因子,收敛次数大大不同,而当松弛因子为1.1时,在同等条件下迭代最快。