共轭梯度算法分析与实现

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

编号:_ 09

《最优化方法》

课程设计

题目:共轭梯度算法分析与实现

院系:数学与计算科学学院

专业:数学与应用数学

姓名学号:

指导教师:

日期:2013 年12 月23 日

摘要

在最优化计算中,共轭梯度法是非常重要的一种方法。共轭梯度法是一种改进的最速下降法,介于最速下降法与牛顿法之间的一种无约束优化算法,是为求解目标函数为二次函数的问题而设计的一类算法。它利用目标函数的梯度逐步产生共轭方向并将其作为搜索方向的方法,收敛速度快。共轭梯度法仅需利用一阶导数信息,避免了牛顿法需要存储和计算Hesse矩阵并求逆的缺点,具有二次终止性。

关键词:共轭梯度法;牛顿法;二次函数;无约束优化

Abstract

In the calculation of optimization method, conjugate gradient method is a very important one. The conjugate gradient method is a unconstrained optimization method between the steepest descent method and Newton method, and sove the objective function for the original quadratic function problems and design for a class of algorithm. Conjugate gradient method using only first derivative information, to avoid the Newton method requires storage and computing the inverse Hesse matrix and shortcomings, this method has the quadratic termination.

Keywords: Conjugate gradient method; Newton method;Unconstrained optimization

目录

1、引言 (1)

2、共轭梯度算法的描述 (1)

2.1 无约束优化问题概述 (1)

2.2 共轭方向 (1)

2.3 共轭梯度法 (1)

2.4 共轭梯度算法的步骤 (2)

3、数值实验 (2)

3.1 代码实现 (2)

3.2 算法测试 (3)

3.3 结果分析 (5)

4、算法比较 (5)

4.1 最速下降法描述 (6)

4.1.1最速下降方向 (6)

4.1.2 最速下降法 (6)

4.2 最速下降法实现 (6)

4.3 最速下降法测试 (7)

4.4共轭梯度法与最速下降法比较 (8)

5、总结 (8)

5.1 总结概括 (8)

5.2 个人感言 (9)

6、参考文献: (9)

1、引言

共轭梯度法最早是由Hesternes 和Stiefle(1952)提出来的,用于解正定系数矩阵的线性方程组,在这个基础上,Fletcher 和Reeves(1964)首先提出了解非线性最优化问题的共轭梯度法。

在各种优化算法中,共轭梯度法(Conjugate Gradient )是非常重要的一种。是一种介于最速下降法与牛顿法之间的优化算法,是为求解目标函数为二次函数的问题而设计的一类算法。它仅需利用一阶导数信息,但克服了最速下降法收敛慢的缺点,又避免了牛顿法需要存储和计算Hesse 矩阵并求逆的缺点,共轭梯度法不仅是解决大型线性方程组最有用的方法之一,也是解大型非线性最优化最有效的算法之一。可微的非二次函数在极小点附近的形态近似于二次函数,因此共轭梯度法也能用于求可微的非二次函数的无约束极小问题。

共轭梯度法是一个典型的共轭方向法,它在共轭方向法基础上增加了一些性质:计算当前方向计算当前方向只需用到前一方向,对其他方向则无要求;计算出来的当前方向自动与前面所有方向共轭,因此,不需耗费大量内存存储所有方向,也节省了计算时间。

2、共轭梯度法的描述

2.1 无约束优化问题概述

一个非线性规划问题的自变量x 没有任何约束,或说可行域既是整个n 维向量空间:r n x =,称这样的非线性规划问题为无约束问题:

)(min x f 或)(min x f R n x = 2.2共轭方向

无约束问题最优化方法的核心问题是选择搜索方向。

以正定二次函数为例,来观察两个方向关于矩阵A共轭的几何意义。

设有二次函数:

f(x) = 1/2 (x - x*)T A(x - x*) ,

其中A 是n ×n 对称正定矩阵,x*是一个定点,函数f(x)的等值面

1/2 (x - x*)T A(x - x*) = c

是以x*为中心的椭球面,由于

▽f(x*) = A(x - x*) = 0,

A 正定,因此x*是f(x)的极小点。

设x (1)是在某个等值面上的一点,该等值面在点x (1)处的法向量

▽f(x (1)) = A(x (1) - x*)。

又设d (1)是这个等值面在d (1)处的一个切向量。记作

d (2) = x* - x (1)。

自然,d (1)与▽f(x (1))正交,即d (1)T ▽f(x (1)) = 0,因此有

d (1)T Ad (2) = 0,

即等值面上一点处的切向量与由这一点指向极小点的向量关于A 共轭。

2.3共轭梯度法

共轭梯度法是最著名的共轭方向法,它首先由Hestenes 和Stiefel (1952)提出来作为解线性方程组的方法。由于解线性方程组等价于极小化一个正定二次函数,故1964年Fletcher 和Reeves 提出了无约束极小化的共轭梯度法,它是直接从Hestenes 和Stiefel 解线性方程组的共轭梯度法发展而来的。共轭梯度法的基本思想是把共轭性与最速下降方法相结合,利用已知点处的梯度构造一组共轭方向,并沿这组方向进行搜索,求出目标函数的极小点。根据共轭方向的基本性质,这种方法具有二次终止性。共轭梯度法就是使得最速下降方向具有共轭性,从而提高算法的有效性和可靠性。在各种优化算法中,共轭梯度法是非常重要的一种。其优点是所需存储量小,具有步收敛性,稳定性高,而且不需要任何外来参数。

2.4 共轭梯度算法的步骤

共轭梯度算法步骤如下:

Step1 给定迭代精度10<<≤ε和初始点0x .计算)(00x f g ∇=.令0 :=k . Step2 若ε≤k g ,停算,输出k x x ≈*.

Step3 计算搜索方向k d :

⎩⎨⎧≥+-=-=--1, ,,0 ,11k d g k g d k k k k k β

其中当1≥k 时,1

11---=k T k k T k k g g g g β确定1-k β. Step4 利用精确(或非精确)线搜索方法确定搜索步长k α.

Step5 令k k k k d x x α+=+ :1,并计算)(11++∇=k k x f g .

Step6 令1 :+=k k ,转步Step1.

3、数值实验

3.1 代码实现

相关文档
最新文档