




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数值分析第二次作业学院:电子工程学院基于matlab平台的三种迭代法求解矩阵方程组求解系数矩阵由16阶Hilbert方程组构成的线性方程组的解,其中右端项为2877/851,3491/1431,816/409,2035/1187,2155/1423,538/395,1587/1279,573/502,947 /895,1669/1691,1589/1717,414/475,337/409,905/1158,1272/1711,173/244.要求:1) Gauss_Sede£代法;2)最速下降法;3)共腕梯度法;4)将结果进行分析对比。解:根据题目要求,编写了对应算法的 matla训
2、序,求解结果如下:(求解精度为10e-4,最大迭代次数1000)1、方程的解:如下图1所示component of solutionucunas图1三种方法求解的结果对比图2 Gause_Sede算法收敛特性1.0080.604020.0 -Steepest desent图3共轲梯度法收敛特性Conjugal gradicm0100 200 300 400 500迭代次数图3最速下降法收敛特性1.0- 0.80.6040 20.0-0从图中可以看到,在相同的最大迭代次数和预设求解精度条件下,共腕 梯度算法仅需要4次迭代便可求出方程组的解,耗时0.00045纲,而且求出解 的精度最高;Gauss
3、_SedeU法需要465次迭代,耗时0.00677例,求解精度最 差;最速下降法需要398次迭代,耗时0.0075956>,求解精度与共腕梯度算法 差不多,因此两者求出的解也几乎相同。从中可以得出结论,共腕梯度算法 无论从求解精度还是求解速度上都优于其他两种,最速下降法在求解精度上 几乎与共腕梯度算法持平,但求解速度更慢。Gauss_Sede&法在求解精度和速度两方面都最差。具体的解为:Gauss_Sedd6代法:(共需465次迭代,求解精度达到9.97e-5)X=0.995328360833192 1.01431732497804 1.052861239300110.93400
4、6974137998 0.931493373808838 0.9665081384030661.00661848511341 1.03799789809258 1.051806903036541.06215849948572 1.04857676431223 1.028561990411131.01999170162638 0.971831831519515 0.952526166634813 0.916996019179182.最速下降法:(共需398次迭代,求解精度达到9.94e-5)X=0.998835379744322 1.01507463472900 0.98258909372018
5、5 0.980191460759243 0.991245169713628 1.00378022225329 1.01350884374478 1.01928337905816 1.02085909665194 1.01930314197028 1.01444777381651 1.00704058989297 0.998384452250809 0.987399404644377 0.975767814970912 0.963209150871750.共轭梯度法:(共需4次迭代,求解精度达到3.98e-5)X=0.996472751179456 1.02707840189049 0.9776
6、233734098530.973206695321590 0.986133032967607 1.001289025642341.01322158496914 1.02047386502293 1.023009050605651.02163015083975 1.01678089454399 1.00920310863874 0.999772406055155 0.988443827498859 0.976094192496949 0.962844741655005.Matlab 程序主程序 :clc;clear;% 本程序用于计算第二次数值分析作业,关于希尔伯特矩阵方程的解,用三种方法,分析
7、并比较,也可推广至任意n 维的矩阵方程%A=hilb(16);%生成希尔伯特系数矩阵b=2877/851;3491/1431;816/409;2035/1187;2155/1423;538/395;1587/1279;573/502;947/895;166 9/1691;1589/1717;414/475;337/409;905/1158;1272/1711;173/244; % 右端向量M=1000;%最大迭代次数err=1.0e-4;%求解精度x,n,xx,cc,jingdu=yakebi_diedai(A,b,err,M); % 雅克比算法求解tic;x1,n1,xx1,cc1,jing
8、du1=gauss_seidel(A,b,err,M); % gauss_seidel 算法求解toc;tic;x2,n2,xx2,jingdu2=zuisuxiajiangfa(A,b,err,M); % 最速下降法求解toc;tic;x3,flag,jingdu3,n3=bicg(A,b,err); % matlab 内置双共轭梯度算法求解toc;tic;x4,xx4,n4,jingdu4=con_grad(A,b,err,M); % 教材共轭梯度算法求解toc;% 计算相应结果,用于作图num=1:16'jie=num,x1,x2,x4;% 三者的解对比% 三者的收敛情况对比nu
9、m1=1:n1'fit1=num1,jingdu1'num2=1:n2'fit2=num2,jingdu2'num4=1:n4'fit4=num4,jingdu4'子函数1(Gause_Sede算法):function x,n,xx,cc,jingdu = gauss_seidel(A,b,err,M)% 利用迭代方法求解矩阵方程这里是高斯赛尔得迭代方法% A 为系数矩阵b 为右端向量err 为精度大小返回求解所得向量x 及迭代次数% M 为最大迭代次数cc 迭代矩阵普半径jingdu 求解过程的精度n 所需迭代次数xx 存储求解过程中每次迭代产
10、生的解for ii=1:length(b)if A(ii,ii)=0x='error'break;endendD=diag(diag(A);L=-tril(A,-1);U=-triu(A,1);B=(D-L)U;cc=vrho(B); % 迭代矩阵普半径 FG=(D-L)b;x0=zeros(length(b),1);x=B*x0+FG;k=0;xx(:,1)=x;while norm(A*x-b)>errx0=x;x=B*x0+FG;k=k+1;xx(:,k+1)=x; if k>=Mdisp('迭代次数太多可能不收敛!);break;endn=k;jin
11、gdu(k)=norm(A*x-b);endend子函数2(最速下降算法):function x,n,xx,jingdu=zuisuxiajiangfa(A,b,eps,M)% 利用迭代方法求解矩阵方程这里是最速下降迭代方法% A 为系数矩阵b 为右端向量err 为精度大小返回求解所得向量x 及迭代次数% M 为最大迭代次数jingdu 求解过程的精度n 所需迭代次数xx 存储求解过程中每次迭代产生的解x0=zeros(length(b),1);r0=b-A*x0;t0=r0'*r0/(r0'*A*r0);x=x0+t0*r0;r=b-A*x;xx(:,1)=x;k=0;whi
12、le norm(r)>epsr=r;x=x;t=r'*r/(r'*A*r);x=x+t*r;r=b-A*x;k=k+1;xx(:,k+1)=x;if k>=Mdisp('迭代次数太多可能不收敛!);break;endn=k;jingdu(k)=norm(r);endend子函31(共轭梯度法):function x,xx,n,jingdu=con_grad(A,b,eps,M)% 利用迭代方法求解矩阵方程这里是共轭梯度迭代方法% A 为系数矩阵b 为右端向量err 为精度大小返回求解所得向量x 及迭代次数% M 为最大迭代次数jingdu 求解过程的精度n 所需迭代次数xx 存储求解过程中每次迭代产生的解x0=zeros(length(b),1);r0=b-A*x0;p0=r0;% t0=r0'*r0/(r0'*A*r0);% x=x0+t0*r0;% r=b-A*x;% xx(:,1)=x;k=0;x=x0;r=r0;p=p0;while norm(r)>epsx=x;r=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论