数值分析实验报告6Word文档下载推荐.docx
《数值分析实验报告6Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数值分析实验报告6Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
为希尔伯矩阵:
,
,i=1,2……n.
假设
,若取n=6,8,10,分别用雅克比迭代及SOR迭代(w=1,1.25,1.5)求解.比较计算结果
3)实验原理与理论基础:
(一)雅克比(Jacobi)迭代法算法设计:
①输入矩阵a与右端向量b及初值x(1,i);
②按公式计算得
(二)高斯――赛得尔迭代法算法设计:
1.输入矩阵a与右端向量b及初值x(1,i).
2.
(i=1,2,…,n)
(三)超松驰法算法设计:
①输入矩阵a与右端向量b及初值x(1,i)。
②
4)实验内容:
代码:
①雅克比(Jacobi)迭代法
function[]=yakebi(e)
%输入矩阵a与右端向量b。
fori=1:
20
a(i,i)=3;
end
fori=3:
forj=i-2
a(i,j)=-1/4;
a(j,i)=-1/4;
end
fori=2:
forj=i-1
a(i,j)=-1/2;
a(j,i)=-1/2;
b=[2.21.71.51.51.51.51.51.51.51.51.51.51.51.51.51.51.51.51.72.2];
k=1;
n=length(a);
n
x(1,i)=1;
%数组中没有第0行。
whilek>
=1
fori=1:
m=0;
%此步也可以用ifj~=i条件判定一下。
forj=1:
(i-1)
m=m+a(i,j)*x(k,j);
forj=(i+1):
x(k+1,i)=(b(i)-m)/a(i,i);
l=0;
%判定满足条件使循环停止迭代。
l=l+abs(x(k+1,i)-x(k,i));
ifl<
e
break
k=k+1;
%输出所有的x的值。
x(k+1,:
)
k
②高斯――赛得尔迭代法
function[]=gaoshisaideer(e)
x(1,i)=0;
p=0;
q=0;
p=p+a(i,j)*x(k+1,j);
q=q+a(i,j)*x(k,j);
x(k+1,i)=(b(i)-q-p)/a(i,i);
k
③超松驰法
function[]=caosongci(e,w)
ifw>
=2||w<
'
请重新输入w的值,w在1与2之间'
;
forj=i:
x(k+1,i)=x(k,i)+w*(b(i)-q-p)/a(i,i);
第二题:
雅克比迭代法实现的函数
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!
'
);
Startwiththevectorthat(0,0,0,...)^T'
fori=1:
fork=1:
X_old=X_new;
temp=0;
forj=1:
if(j~=i)
temp=temp+Hn(i,j)*X_old(j);
end
X_new(i)=(b(i)-temp)/Hn(i,i);
X=X_new;
SOR迭代法实现的函数
functionX=p211_1_SOR(n,w)
temp01=0;
temp02=0;
NowSuccessiveOverRelaxtionmethod!
fork=1:
X_old=X_new;
temp01=0;
temp02=0;
forj=1:
if(j<
i)
temp01=temp01+Hn(i,j)*X_new(j);
if(j>
temp02=temp02+Hn(i,j)*X_old(j);
X_new(i)=w*(b(i)-temp01-temp02)/Hn(i,i)+X_old(i);
End
5)实验结果:
第一题①雅克比(Jacobi)迭代法
此时初值全取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=
Columns1through9
0.97930.97870.99410.99700.99890.99950.99980.99991.0000
Columns10through18
1.00001.00001.00000.99990.99980.99950.99890.99700.9941
Columns19through20
0.97870.9793
k=
12
b=[2.51.91.51.51.51.51.51.51.51.51.51.51.51.51.51.51.51.51.92.5];
Columns1through12
1.09691.07071.02191.01031.00391.00161.00061.00031.00011.00011.00011.0001
Columns13through20
1.00031.00061.00161.00391.01031.02191.07071.0969
14
gaoshisaideer(0.00001)
0.97930.97870.99410.99700.99890.99950.99980.99991.00001.00001.00001.0000
0.99990.99980.99950.99890.99700.99410.97870.9793
14
gaoshisaideer(0.00001)
③超松驰法
caosongci(0.00001,1.5)
25
caosongci(0.00001,1.4)
19
caosongci(0.00001,1.3)
15
caosongci(0.00001,1.6)
34
caosongci(0.00001,1.7)
47
caosongci(0.00001,1.9)
150
对于雅克比迭代法,通过执行以下代码
>
p211_1_JJ(6)
p211_1_JJ(8)
p211_1_JJ(10)
可以分别得到:
NowJacobimethod!
Startwiththevectorthat(0,0,0,...)^T
2.45001.10360.62650.40600.28310.2071
2.71791.41010.85240.58090.42210.31980.24970.1995
Columns1through9
2.92901.66621.05170.74230.55540.43150.34450.28070.2325
Column10
0.1951
对于SOR迭代法,执行相对应代码
n=6,ω=1,1.25,1.5的时候
p211_1_SOR(6,1)
2.45001.10360.62650.40600.28310.2071
p211_1_SOR(6,1.25)
3.06250.23100.87040.33890.31410.2097
p211_1_SOR(6,1.5)
3.6750-1.10092.0106-0.39940.7670-0.0384
与n=8,ω=1,1.25,1.5的时候
p211_1_SOR(8,1)
p211_1_SOR(8,1.25)
3.39730.48871.08980.50620.45010.32030.25730.2042
p211_1_SOR(8,1.5)
4.0768-0.94242.2923-0.27530.92520.05780.40710.1275
与n=10,ω=1,1.25,1.5的时候
p211_1_SOR(10,1)
2.92901.66621.05170.74230.55540.43150.34450.28070.2325
0.1951
p211_1_SOR(10,1.25)
3.66120.70981.28350.66170.58070.42990.35060.28440.2363
0.1984
p211_1_SOR(10,1.5)
4.3935-0.79582.5326-0.15231.07200.15650.50500.20410.2819
0.1766
6)实验结果分析与小结:
1.在实习中,进行学习MATLAB,有助于将两者都更加的熟悉并加以充分利用。
2.此次取的b对于雅克比迭代法、高斯――赛得尔迭代法都是收敛的,对于相同的初值与右端向量明显可以看出高斯――赛得尔迭代法比雅克比迭代法快,这与理论上的分析完全一致嘛。
3.对于SOR迭代方法选择不同的松弛因子收敛次数大大不同,当松弛因子为1.1时,在同等条件下迭代最快.