下载后可任意编辑数值代数实验报告一、实验名称:用共轭梯度法解线性方程组
二、实验目的:进一步熟悉理解掌握共轭梯度法解法思路,提高 matlab 编程能力
三、实验要求:已知线性方程矩阵,应用共轭梯度法在相关软件编程求解线性方程组的解
四、实验原理:1.共轭梯度法:考虑线性方程组的求解问题,其中 A 是给定的 n 阶对称正定矩阵,b 是给定的 n 维向量,是待求解的 n 维向量
为此,定义二次泛函
定理 1 设 A 对称正定,求方程组的解,等价于求二次泛函的微小值点
定理 1 表明,求解线性方程组问题就转化为求二次泛函的微小值点问题
求解二次函数微小值问题,通常好像盲人下山那样,先给定一个初始向量,确定一个下山方向,沿着经过点而方向为的直线找一个点,使得对所有实数有,即在这条直线上使达到微小
然后从出发,再确定一个下山的方向,沿着直线再 跨 出 一 步 , 即 找 到使 得在达 到 微 小 :
重复此步骤,得到一串 和 ,称为搜索方向,为步长
一般情况下,先在点找下山方向,再在直线上确定步长使1下载后可任意编辑最后求出
然而对不同的搜索方向和步长,得到各种不同的算法
由此,先考虑如何确定
设从出发,已经选定下山方向
由一元函数极值存在的必要条件有所确定的即为所求步长,即
步长确定后,即可算出
此时,只要,就有 即
再考虑如何确定下山方向
易知负梯度方向是减小最快的方向,但简单分析就会发现负梯度方向只是局部最佳的下山方向,而从整体来看并非最佳
故采纳新的方法寻求更好的下山方向——共轭梯度法
下面给出共轭梯度法的具体计算过程:给定初始向量,第一步仍选用负梯度方向为下山方向,即,于是有
对以后各步,例如第 k+1 步(k1),下山方向不再取,而是在过点由向量和2下载后可任意编辑所张成的二维平面内找出使函数下降最快的方向作为新的下山方向
考虑在上的限制: