共轭梯度实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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