- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章上机题目:
题目一:试分别用:
(1)Jacobi迭代法;(2)Gauss-Seidel迭代法和;(3)共轭梯度法解线性方程组:10
迭代初始向量取.
解:
Jacobi迭代法算法:
输入,,精度.
置i=1
对k=1,2,…,n,,,,
若,输出最终结果和迭代次数,停机;否则转5.
置i+1i,(k=1, 2, n),转3;否则,停机
源程序:
clear clc
i=1;
a=[10,1,2,3,4;
1,9,-1,2,-3;
2,-1,7,4,-5;
3,2,3,12,-1;
4,-3,-5,-1,15];
d=diag(diag(a));
l=d-tril(a);
u=d-triu(a);
d0=inv(d);
b=[12;-27;14;-17;12];
x0=[0,0,0,0,0];
B=d0*(l+u);
f=d0*b;
x=B*x0+f;
while norm(x-x0,inf)=1e-4
x0=x;
x=B*x0+f;
i=i+1;
end
x
i
运行结果:
Gauss-Seidel迭代法
Gauss-Seidel迭代法算法:
输入,,精度,维数N.
置K=1.
由Gauss-Seidel算法,
L=00000
若,输出“第次迭代”和最终结果,停机;否则转5.
置k+1k,(i=1, 2, n),转3;否则,停机
源程序:
clear;clc;
A=[10,1,2,3,4;
1,9,-1,2,-3;
2,-1,7,4,-5;
3,2,3,12,-1;
4,-3,-5,-1,15];
b=[12;-27;14;-17;12];
N=length(b);
fprintf(库函数计算结果: );
x=inv(A)*b
x=[0,0,0,0,0];
D=diag(diag(A));
E=-tril(A,-1);
F=-triu(A,1);
B=inv(D-E)*F;
g=inv(D-E)*b;
eps=0.001;
for k=1:50
fprintf(第%d次迭代: ,k);
y=B*x+g;
fprintf(\n与上次计算结果距离(2 范数):%f\n,norm(x-y)^2);
if norm(x-y)eps
break;
end
x=y
end
运行结果:
共轭梯度法
共轭梯度法算法:
输入,初始向量,误差限.
库函数计算结果作对比.
计算
对于k=1,2,…,计算
若=0或,则终止计算,输出“第k次迭代”以及,否则转3.
源程序:
clear
A=[10,1,2,3,4;
1,9,-1,2,-3;
2,-1,7,4,-5;
3,2,3,12,-1;
4,-3,-5,-1,15];
b=[12;-27;14;-17;12];%自定义初始化非齐次部分
N=length(b); %解向量的维数
fprintf(库函数计算结果:);
X=inv(A)*b %库函数计算结果
x=zeros(N,1);%迭代近似向量
eps=0.0000001;%精度
r=b-A*x;d=r;
for k=0:N-1
fprintf(第%d次迭代,k+1);
a=(norm(r)^2)/(d*A*d)
x=x+a*d
rr=b-A*x; %rr=r(k+1)
if (norm(rr)=eps)||(k==N-1)
break;
end
C=(norm(rr)^2)/(norm(r)^2);
d=rr+C*d;
r=rr;
end
运算结果:
结果分析以及结论:
从结果来看,Jacobi迭代法用了45次迭代得到精确解,Gauss-Seidel迭代法用了21次迭代得到精确解,共轭梯度法仅仅用了5次就得到了精确解。所以,我们不难得出这样一个结论,对于此题所需解决的线性方程组求解问题,三种迭代方法都是收敛的,且由迭代次数可以看出,共轭梯度法的收敛速度最快,运用这种方法求解这道题的算法是最有效的,Gauss-Seidel迭代法次之,Jacobi迭代法最慢。
题目二:用共轭梯度法或最速下降法求解Hilbert矩阵问题。(程老师上课布置的作业)
解:
由于题目一种已使用共轭梯度法,在题目二中采用最速下降法求解。
算法:
按照每一个元素以及Hilbert矩阵的元素特性,即,建立Hilbert矩阵,对其中元素用循环语句逐一建立。要想完成此题,我们需要先建立一个Hilbert矩阵,在此我以5×5的Hilbert矩阵为例,并令非齐次项矩阵b=[1,1,1
原创力文档


文档评论(0)