Matlab求解线性方程组(三)共轭梯度法和最速下降法的比较

一,共轭梯度法

对于课本计算实例P113:用共轭梯度法求解线性方程组Ax=b,其中
在这里插入图片描述
矩阵A的阶数n分别取为100,200,400,指出计算结果是否可靠。

共轭梯度法的求解结果如下:
(1)n=100时
迭代50次后满足精度要求 ,其误差曲线如下图所示。
Matlab求解线性方程组(三)共轭梯度法和最速下降法的比较_第1张图片

(2) n=200时
经过100次迭代后满足精度要求,其误差曲线如下图所示。
Matlab求解线性方程组(三)共轭梯度法和最速下降法的比较_第2张图片

(2) n=400时
经过200次迭代后满足精度要求,其误差曲线如下图所示。

Matlab求解线性方程组(三)共轭梯度法和最速下降法的比较_第3张图片
(1)结果可靠性
n=100,迭代50次,误差迅速减小,达到1.0710-12,最终结果x=(1 1 … 1)T,带入方程,符合题意。
n=200,迭代100次,误差迅速减小,达到6.23
10-12,最终结果x=(1 1 … 1)T,带入方程,符合题意。
n=400,迭代200次,误差迅速减小,达到2.14*10-11,最终结果x=(1 1 … 1)T,带入方程,符合题意。
(2)优点
适用于结构简单,一致性高,阶数较大的对称矩阵运算。
(3)局限性
此算法只适用于A对角线元素一致的稀疏对称阵,对角线元素不一致的不适用。同样,生成的b向量适用于个别元素非零,其他元素为零的情况。

二,最速下降法

(1)n=100时
在精度为1*10-6时,迭代了19465次才满足精度要求 。

Matlab求解线性方程组(三)共轭梯度法和最速下降法的比较_第4张图片

(2)n=200时
在精度为1*10-6时,迭代了68688次才满足精度要求。
Matlab求解线性方程组(三)共轭梯度法和最速下降法的比较_第5张图片

(3)n=400时
在精度为1*10-6时,迭代了239671次才满足精度要求 。
Matlab求解线性方程组(三)共轭梯度法和最速下降法的比较_第6张图片

由以上结果可知,在满足同等精度的情况下下,最速下降法的迭代次数远高于共轭梯度法。

三,二者的比较

以n=200为例,作出共轭梯度法与最速下降法的误差随着迭代次数变化的曲线,如下图所示。Matlab求解线性方程组(三)共轭梯度法和最速下降法的比较_第7张图片
分析可知,共轭梯度法在迭代次数达到n的时候,其误差会快速下降,而最速下降法误差减小的趋势比较平缓,说明其收敛速度较慢。

你可能感兴趣的:(计算方法,matlab,线性代数,矩阵)