共轭梯度法求解线性方程组的收敛性分析与研究.docx

上传人:b****2 文档编号:2206466 上传时间:2022-10-27 格式:DOCX 页数:12 大小:140.77KB
下载 相关 举报
共轭梯度法求解线性方程组的收敛性分析与研究.docx_第1页
第1页 / 共12页
共轭梯度法求解线性方程组的收敛性分析与研究.docx_第2页
第2页 / 共12页
共轭梯度法求解线性方程组的收敛性分析与研究.docx_第3页
第3页 / 共12页
共轭梯度法求解线性方程组的收敛性分析与研究.docx_第4页
第4页 / 共12页
共轭梯度法求解线性方程组的收敛性分析与研究.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

共轭梯度法求解线性方程组的收敛性分析与研究.docx

《共轭梯度法求解线性方程组的收敛性分析与研究.docx》由会员分享,可在线阅读,更多相关《共轭梯度法求解线性方程组的收敛性分析与研究.docx(12页珍藏版)》请在冰豆网上搜索。

共轭梯度法求解线性方程组的收敛性分析与研究.docx

共轭梯度法求解线性方程组的收敛性分析与研究

共轭梯度法求解线性方程组的收敛性分析与研究

 

摘要:

共轭梯度法是求解线性方程组的有效迭代法之一,本文描述了线性方程组的研究背景及共轭梯度法的产生背景,分析了线性方程组在求解过程中遇到的问题,然后给出了共轭梯度法求解线性方程组的优势。

根据共轭梯度法求解线性方程组的算法原理提炼出基本算法格式,并分析了共轭梯度法的收敛性。

利用Matlab软件编程求解大型线性方程组,根据结果分析应用共轭梯度法求解线性方程组的收敛性情况。

关键词:

线性方程组;共轭梯度法;收敛性;Matlab

Abstract:

Theconjugategradientmethodisoneoftheeffectiveiterativemethodsforsolvinglinearequations.Thispaperdescribesthebackgroundoftheresearchbackgroundofthelinearequationsandthebackgroundofconjugategradientmethod,analyzestheproblemsencounteredinsolvingthelinearequations,andthengivestheadvantageoftheconjugategradientmethodtosolvethelinearequations.Basedontheconjugategradientmethod,thealgorithmoflinearequationsisderivedfromthebasicalgorithm,anditanalyzestheconvergenceoftheconjugategradientmethod.UsingMatlabsoftwaretosolvelargelinearequations,theconvergenceoflinearequationsissolvedbyconjugategradientmethod.

Keywords:

Linearequations;Conjugategradientmethod;Convergence;Matlab

1引言

1.1线性方程组及共轭梯度法研究背景

  线性方程组是线性代数的主要内容之一,在自然科学和工程实际应用中,许多问题最后都会转会成线性方程组的求解问题。

因为线性方程组的实用性以及重要性,人们在线性方程组的求解问题上做了深入的研究,并且取得了一些有价值的成果。

然而,在求解过程中出现的各种误差,常使得线性方程组的求解不大容易得到真实的理论解。

所以,不同的求解方法由于迭代机理不同,求解过程中的误差就不同,最后结果的差异也就体现出来了。

  共轭梯度法最早是由Hestenes和Stiefel在1952年在求解线性方程组时提出[1],共轭梯度法的引入把线性方程组的求解带入了一个新的时代。

但人们更青睐于几乎同时出现的具有较快计算速度和良好收敛性的拟牛顿方法,所以在之后的很长一段时间里,共轭梯度法几乎被研究者所忽视。

尽管这种方法没有很快流行起来,但近年来,在军事、经济管理、工程等诸多领域无约束优化问题的应用越来越广泛,随着科学研究和生产的迅速发展,尤其是计算机应用的快速发展,使得最优化问题的研究有了合适、便捷的求解工具,这使得许多大规模线性问题的求解变得轻而易举。

一旦引入有效的预条件,其他方法难以处理的问题都能得到有效解决,共轭梯度法作为求解线性方程组的迭代法之一,不仅算法简单,而且存储空间需求小,在求解大型线性问题中往往是优先选择。

1.2线性方程组在求解过程中的问题

  线性方程组的解法分为直接法和迭代法。

直接法通过有限步的运算后可求得方程组的精确解[2],比如高斯消去法、LU分解法、追赶法等。

迭代法是从解的某个近似值出发,通过构造一个无穷序列去逼近近似解的方法[2],比如Jacobi迭代法、最速下降法以及共轭梯度法等。

  直接法不需要给出解的初值,所以如果已经有了一个近似解,它们并不能被加以利用。

但直接法通常能得到准确的结果,前提是在不需要特别高的精度下,否则不占优势。

比如我们一般采用是高斯消去法,该方法算法简单,操作容易。

但是因为舍入误差的存在,在一些病态线性方程组问题的求解上,高斯消去法计算出来的结果偏离于问题的理论中就比较明显,这样我们计算的结果就表现不出问题的根本属性。

随着科学家们对线性方程组的深入研究,存储空间大、计算效率不高的直接法对于实际工程中碰到的大型稀释矩阵和病态方程组的求解非常困难。

所以我们必须用不同的计算和存储方法。

此时,迭代算法体现了它的优势。

迭代法能很好地利用矩阵的稀疏性,有时候甚至不需要显示储存矩阵的非零元素,只需要按某种计算过程得到矩阵与向量的乘法结果,因此,迭代法能更方便得处理实际的大规模稀疏线性方程组,而且有极高的计算效率。

迭代算法由于存储简便,运算高效等特点被工程实践所广泛采用。

但迭代法也会出现一些问题,比如最速下降法,会因为舍入误差的影响而偏离最速下降方向,从而导致数值不稳定。

因此实际应用中我们会很少直接用最速下降法,但从其基本思想方法出发而发展出的共轭梯度法却是一个很好的求解方法。

  共轭梯度法(作为一种迭代法)是一种加速线性方程组收敛的常用算法,特别在处理大型的矩阵时,共轭梯度的方法能够明显的加速收敛,减少处理的时间。

2共轭梯度算法及收敛性分析

2.1共轭梯度算法原理

2.1.1最速下降法

 定理1[3]  设是对称正定矩阵,为给定列向量。

若为方程组的解,则必为的极小值点;反之亦然。

  最速下降法是从出发,依次沿着方向极小化泛函的。

也就是每次迭代是在处沿一个方向(负梯度方向)极小化泛函的,不失一般性,可取。

如果对于固定的,在空间中取个线性无关的向量,然后在线性子空间中极小化泛函,即使得满足。

这一想法就是共轭梯度法的出发点,显然,当时,有,则由定理1可知为方程组的精确解,因此,至多步后,共轭梯度法将得到方程组的解[3]。

2.1.2共轭梯度法

  对线性方程组,其中为对称()正定(对于所有非零向量属于)矩阵。

(2.1)

因为共轭梯度法就是把求解线性方程组的问题转化成求解一个与之等价的二次函数极小化的问题,将线性方程组的唯一解记作,因为为对称正定矩阵,最小化即令导数为0,即,即式(2.1)所示元二次函数取得极小值点就是的解。

  共轭梯度法作为一种迭代法,首先我们要确定优化方向和优化步长,即从任意给定的初始点出发,沿一组关于矩阵的共轭方向进行线性搜索,在无舍入误差的假设下,最多迭代(为矩阵的阶数)次,就可以求得二次函数的极小值点,也就是线性方程组的解。

  取初始迭代,从开始,由迭代格式

(2.2)

(2.2)式我们可以得到优化步长和优化方向。

其中可以通过一元函数的极小化来求得,其表达式为式(2.3);因为,则,要求满足,可得的表达式(2.4)。

(2.3)

(2.4)

2.2共轭梯度算法格式

  经过上述推导,共轭梯度法可以表示为如下更方便的算法,使用以下算法就可以得到对称正定矩阵的解:

表2.1共轭梯度算法

输入:

系数矩阵,右端项。

计算:

(1)给定初始计算向量及精度;

(2)计算,取;

(3)fork=0,1,2,···,n-1,直至,计算:

①;

②;

③;

④若或,则输出近似解,停止,否则,转⑤;

⑤;

⑥;

end

输出:

方程组的解。

2.3共轭梯度法收敛性分析

  从上述算法本质上来讲,共轭梯度法是一种直接算法,只需要使用有限的步骤就可以得到方程组的精确解。

但在实际使用时,一般将其作为一种迭代法来用,有两个原因:

一是在有误差的计算机上,有限步终止的结论已经不在成立;二是即使出现了,但如果非常大,也是很麻烦的,因为实际应用中考虑的问题其阶数往往是非常巨大的。

因此我们得了解共轭梯度法(作为一种迭代法)的收敛性。

  定义1[4](矩阵范数)矩阵的某个非负实数值函数,若对任意的矩阵满足下述条件:

(1)正定性:

,且;

(2)齐次性:

(3)三角不等式:

则称是上的一个矩阵范数。

定义2[2]设是上的一个矩阵范数,矩阵的条件数定义为。

特别的,当是一个正定矩阵时

(2.5)

其中,是的特征值。

定义3[5]如果迭代矩阵的某种范数,则对于任意初始向量,迭代格式(3.102)收敛,且有误差估计式

(2.6)

或(2.7)

定义4[2]向量满足:

(1)(误差极小)(2.8)

(2)(残量极小)(2.9)

定理2[6]用共轭梯度法求得满足

(2.10)

其中是方程组的解,称为关于矩阵的范数,为矩阵的条件数。

分析:

由于是对称正定矩阵,所以条件数还可以用特征值表示出来。

  假设的特征值为,那么

同理可得,,所以。

根据定理1,从可以看出来,当时,收敛到零的速度是非常快的,这也说明此时共轭梯度法收敛得也很快。

我们用到特征值,这说明了矩阵的特征值是聚集在一起的,而不是四处分散,且矩阵的条件数接近于1,是属于良态的。

换而言之就是,良态矩阵的线性方程组,用共轭梯度法求解时。

收敛性比较好,且收敛速度很快。

若系数矩阵的特征值分布很散,即时,矩阵是属于非常病态的。

这时候系数矩阵的条件数就很大,共轭梯度法的收敛速度会变得很慢,也有可能不收敛。

3数值实验

本节中我们应用MATLAB数学软件来实现对线性方程组的求解,基于上一节算法,用程序随机生成阶正定矩阵,来研究用共轭梯度法求解线性方程组的收敛性(代码详见附录)。

实验:

用共轭梯度法求解矩阵方程组,是系统随机生成的满足Poisson分布的阶矩阵,,初始值,精度。

(1)取,给出最终残差的大小以及所需迭代步数。

(2)取,计算精确值的舍入误差。

实验过程

(1):

分别取矩阵阶数为10、100、1000,最大迭代次数为30次,根据程序运行结果可得达到收敛所需迭代步数、最终残差,统计结果如表3.1所示,迭代过程的收敛轨迹图3-1所示。

表3.1实验结果

(1)

所需迭代次数

计算时间

最终残差

10

10

0.577s

9.5260e-04

100

26

0.677s

8.8565e-07

1000

29

1.770s

8.8096e-07

(1)

(2)

(3)

图3-1GC算法的收敛性特征

分析

(1):

从表3.1可以看出,当为10和100时,达到收敛所需要的时间非常接近,仅相差0.1s。

当矩阵为1000阶大型矩阵时,达到收敛用时比低阶矩阵长,但也仅用时1.770s。

所以当矩阵阶数逐渐变大时,达到收敛所需要的时间也逐渐变长,但是高阶矩阵达到收敛的用时也很短,这说明共轭梯度法的收敛速度很快。

最终迭代后得到的近似解满足(残量极小)。

图3-1中横坐标为迭代次数,纵坐标为最终残差,图

(1)、

(2)、(3)分别是为10、100、1000时的收敛特征图,从图

(1)中可以看出,矩阵迭代10次就达到了收敛,从图

(2)、(3)中可以看出矩阵的达到收敛所需要的迭代次数接近30次,且当为10和1000时达到收敛所需要的迭代次数非常接近,但还是有差别,说明随着阶数的增大,达到收敛所需要的迭代次数也相应增加,而且曲线接近轴,说明收敛速度很快,且收敛性比较稳定。

实验过程

(2):

分别取矩阵阶数为1000、2000,分别迭代15、13、12、10、8、7次,根据输出结果统计运行时间及误差如表3.2所示。

表3.2实验结果

(2)

    

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1