共轭梯度实验报告

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

竭诚为您提供优质文档/双击可除

共轭梯度实验报告

篇一:共轭梯度法实验报告

数值代数实验报告

一、实验名称:用共轭梯度法解线性方程组。

二、实验目的:进一步熟悉理解掌握共轭梯度法解法思路,提高matlab编程能力。三、实验要求:已知线性方程

矩阵,应用共轭梯度法在相关软件编程求解线性方程组的解。

四、实验原理:

1.共轭梯度法:

考虑线性方程组

Ax?b

的求解问题,其中A是给定的n阶对称正定矩阵,b是

给定的n维向量,x是待求解的n维向量.为此,定义二次泛

?(x)?xTAx?2bTx.

定理1设A对称正定,求方程组Ax?b的解,等价于求二次泛函?(x)的极小值点.定理1表明,求解线性方程组问题就转化为求二次泛函?(x)的极小值点问题.求解二次函数极小值问题,通常好像盲人下山那样,先给定一个初始向量x0,确定一个下山方向p0,沿着经过点x0而方向为p0的直线x?x0??p0找一个点

x1?x0??0p0,

使得对所有实数?有

??x0??0p0x0??p0?,

即在这条直线上x1使?(x)达到极小.然后从x1出发,再确定一个下山的方向p1,沿着直

线x?x1??p1再跨出一步,即找到?1使得??x?在

x2?x1??1p1达到极小:

??x1??1p1x1??p1?.

重复此步骤,得到一串

?0,?1,?2,

x?xk??pk上确定步长?k使

和p0,p1,p2,

称pk为搜索方向,?k为步长.一般情况下,先在xk点找下山方向pk,再在直线

??xk??kpkxk??pk?,

最后求出xk?1?xk??kpk.然而对不同的搜索方向和步长,得到各种不同的算法.

由此,先考虑如何确定?k.设从xk出发,已经选定下山方向pk.令fxk??pk?

??xk??pk?A?xk??pk??2bT?xk??pk?

T

??2pkApk?2?rkTpkxk?,

T

其中rk?b?Apk.由一元函数极值存在的必要条件有

T

f2?pkApk?2rkTpk?0

所确定的?即为所求步长?k,即步长确定后,即可算出

此时,只要rkTpk?0,就有

rkTpk

.?k?T

pkApk

xk?1?xk??kpk.

??xk?1xkxk??kpkxk?

T

Apk?2?krkTpkk2pk

?rkTpk?

2

即??xk?1xk?.

T

pkApk

?0

再考虑如何确定下山方向pk.易知负梯度方向是?(x)减

小最快的方向,但简单分析就会发现负梯度方向只是局部最佳的下山方向,而从整体来看并非最佳.故采用新的方法寻

求更好的下山方向——共轭梯度法.下面给出共轭梯度法的

具体计算过程:

给定初始向量x0,第一步仍选用负梯度方向为下山方向,即p0?r0,于是有

r0Tr0

?0?T,x1?x0??0p0,r1?b?Ax0.

p0Ap0

对以后各步,例如第k+1步(k?1),下山方向不再取rk,而是在过点由向量rk和pk?1所张成的二维平面

?2?{x|x?xk??rk??pk?1,?,??R}

内找出使函数?下降最快的方向作为新的下山方向pk.

考虑?在?2上的限制:

,?(xk??rk??pk?1)

?(xk??rk??pk?1)TA(xk??rk??pk?1)

?2bT(xk??rk??pk?1).??计算?关

于?,??2??rTAr??rTAp?rTr?,

kkkk?1kk

??

??TTT?2?rAp??p?kk?1k?1Apk?1?,r其中最后一式用到了rkpk?1,这可由的定义直接验证.令0k??

??0,即知?在?2内有唯一的极小值点

??

??

x?xk??0rk??0pk?1,

其中?0和?0满足

??0rkTArk??0rkTApk?1?rkTrk,

?TT

??0rkApk?1??0pk?1Apk?1?0.

1

由于rk?0必有?0?0,所以可取

pk?

作为新的下山方向.显然,这是在平面?2内可得的最佳下山方向.令?k?1?得

?0

?x?xk??rk?

?0

相关文档
最新文档