资源描述:
《基于某matlab平台的三种迭代法求解矩阵方程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
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_Sedel迭代法;2)最速下降法;3)共轭梯度法;
2、4)将结果进行分析对比。解:根据题目要求,编写了对应算法的matlab程序,求解结果如下:(求解精度为10e-4,最大迭代次数1000)1、方程的解:如下图1所示图1三种方法求解的结果对比图2Gause_Sedel算法收敛特性图3最速下降法收敛特性图3共轭梯度法收敛特性从图中可以看到,在相同的最大迭代次数和预设求解精度条件下,共轭梯度算法仅需要4次迭代便可求出方程组的解,耗时0.000454秒,而且求出解的精度最高;Gauss_Sedel方法需要465次迭代,耗时0.006779秒,求解精度最差;最速下降法需要39
3、8次迭代,耗时0.007595秒,求解精度与共轭梯度算法差不多,因此两者求出的解也几乎相同。从中可以得出结论,共轭梯度算法无论从求解精度还是求解速度上都优于其他两种,最速下降法在求解精度上几乎与共轭梯度算法持平,但求解速度更慢。Gauss_Sedel方法在求解精度和速度两方面都最差。具体的解为:Gauss_Sedel迭代法:(共需465次迭代,求解精度达到9.97e-5)X=[0.9953283608331921.014317324978041.052861239300110.9340069741379980.93
4、14933738088380.9665081384030661.006618485113411.037997898092581.051806903036541.062158499485721.048576764312231.028561990411131.019991701626380.9718318315195150.9525261666348130.916996019179182].最速下降法:(共需398次迭代,求解精度达到9.94e-5)X=[0.9988353797443221.0150746347290
5、00.9825890937201850.9801914607592430.9912451697136281.003780222253291.013508843744781.019283379058161.020859096651941.019303141970281.014447773816511.007040589892970.9983844522508090.9873994046443770.9757678149709120.963209150871750].共轭梯度法:(共需4次迭代,求解精度达到3.98e-
6、5)X=[0.9964727511794561.027078401890490.9776233734098530.9732066953215900.9861330329676071.001289025642341.013221584969141.020473865022931.023009050605651.021630150839751.016780894543991.009203108638740.9997724060551550.9884438274988590.9760941924969490.962844
7、741655005].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;1669/1691;1589/1717;414/475;337/409;905/1158;1272/1711;173/24
8、4];%右端向量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,ji