基于matlab平台的三种迭代法求解矩阵方程

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数值分析第二次作业学院:电子工程学院

基于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_Sedel迭代法;

2)最速下降法;

3)共轭梯度法;

4)将结果进行分析对比。

解:根据题目要求,编写了对应算法的matlab程序,求解结果如下:(求解精度为10e-4,最大迭代次数1000)

1、方程的解:如下图1所示

图1 三种方法求解的结果对比

图2 Gause_Sedel算法收敛特性

图3 最速下降法收敛特性

图3 共轭梯度法收敛特性

从图中可以看到,在相同的最大迭代次数和预设求解精度条件下,共轭梯度算法仅需要4次迭代便可求出方程组的解,耗时0.000454秒,而且求出解的精度最高;Gauss_Sedel方法需要465次迭代,耗时0.006779秒,求解精度最差;最速下降法需要398次迭代,耗时0.007595秒,求解精度与共轭梯度算法差不多,因此两者求出的解也几乎相同。从中可以得出结论,共轭梯度算法无论从求解精度还是求解速度上都优于其他两种,最速下降法在求解精度上几乎与共轭梯度算法持平,但求解速度更慢。Gauss_Sedel方法在求解精度和速度两方面都最差。

具体的解为:

Gauss_Sedel迭代法:(共需465次迭代,求解精度达到9.97e-5) X=[0.995328360833192 1.01431732497804 1.05286123930011

0.934006974137998 0.931493373808838 0.966508138403066

1.00661848511341 1.03799789809258 1.05180690303654

1.06215849948572 1.04857676431223 1.02856199041113

1.01999170162638 0.971831831519515 0.952526166634813

0.916996019179182].

最速下降法:(共需398次迭代,求解精度达到9.94e-5)

X=[0.998835379744322 1.01507463472900 0.982589093720185

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.977623373409853

0.973206695321590 0.986133032967607 1.00128902564234

1.01322158496914 1.02047386502293 1.02300905060565

1.02163015083975 1.01678089454399 1.00920310863874

0.999772406055155 0.988443827498859 0.976094192496949

0.962844741655005].

Matlab程序

主程序:

clc;clear;

%% 本程序用于计算第二次数值分析作业,关于希尔伯特矩阵方程的解,用三种方法,分析并比较,也可推广至任意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,jingdu1]=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;

%% 计算相应结果,用于作图%%

相关文档
最新文档