共轭梯度算法分析与实现(共12页).doc
《共轭梯度算法分析与实现(共12页).doc》由会员分享,可在线阅读,更多相关《共轭梯度算法分析与实现(共12页).doc(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上专心-专注-专业编号:_ 09 最最最最 优优优优 化化化化 方方方方 法法法法课课课课 程程程程 设设设设 计计计计题 目: 共轭梯度算法分析与实现 院 系: 数学与计算科学学院 专 业: 数学与应用数学 姓名学号: 指导教师: 日 期: 2013 年 12 月 23 日精选优质文档-倾情为你奉上专心-专注-专业摘摘 要要在最优化计算中,共轭梯度法是非常重要的一种方法。共轭梯度法是一种改进的最速下降法,介于最速下降法与牛顿法之间的一种无约束优化算法,是为求解目标函数为二次函数的问题而设计的一类算法。它利用目标函数的梯度逐步产生共轭方向并将其作为搜索方向的方法,收敛速
2、度快。共轭梯度法 仅需利用一阶导数信息,避免了牛顿法需要存储和计算 Hesse 矩阵并求逆的缺点 ,具有二次终止性。关键词关键词:共轭梯度法;牛顿法;二次函数;无约束优化 AbstractIn 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 New
3、ton 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 m
4、ethod has the quadratic termination.Keywords: Conjugate gradient method; Newton method;Unconstrained optimization精选优质文档-倾情为你奉上专心-专注-专业目目 录录4.1.1 最速下降方向.64.1.2 最速下降法.689精选优质文档-倾情为你奉上专心-专注-专业1 1、引言引言共轭梯度法最早是由 Hesternes 和 Stiefle(1952)提出来的,用于解正定系数矩阵的线性方程组,在这个基础上,Fletcher 和 Reeves(1964)首先提出了解非线性最优化问题的共轭
5、梯度法。在各种优化算法中,共轭梯度法(Conjugate Gradient)是非常重要的一种。是一种介于最速下降法与牛顿法之间的优化算法,是为求解目标函数为二次函数的问题而设计的一类算法。它仅需利用一阶导数信息,但克服了最速下降法收敛慢的缺点,又避免了牛顿法需要存储和计算 Hesse 矩阵并求逆的缺点,共轭梯度法不仅是解决大型线性方程组最有用的方法之一,也是解大型非线性最优化最有效的算法之一。可微的非二次函数在极小点附近的形态近似于二次函数,因此共轭梯度法也能用于求可微的非二次函数的无约束极小问题。共轭梯度法是一个典型的共轭方向法,它在共轭方向法基础上增加了一些性质:计算当前方向计算当前方向只
6、需用到前一方向,对其他方向则无要求;计算出来的当前方向自动与前面所有方向共轭,因此,不需耗费大量内存存储所有方向,也节省了计算时间。2 2、共轭梯度法的描述共轭梯度法的描述2.1 无约束优化问题概述无约束优化问题概述一个非线性规划问题的自变量 x 没有任何约束,或说可行域既是整个 n 维向量空间:,称这样的非线性规划问题为无约束问题:rnx 或)(minxf)(minxfRnx2.2 共轭方向共轭方向无约束问题最优化方法的核心问题是选择搜索方向。以正定二次函数为例,来观察两个方向关于矩阵共轭的几何意义。设有二次函数:f(x) = 1/2 (x - x*)TA(x - x*) ,其中 A 是 n
7、n 对称正定矩阵,x*是一个定点,函数 f(x)的等值面1/2 (x - x*)TA(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)Tf(x(1) = 0,因此有d(1)TAd(2) = 0,即等值面上一点处的切向量
8、与由这一点指向极小点的向量关于 A 共轭。2.3 共轭梯度法共轭梯度法共轭梯度法是最著名的共轭方向法,它首先由 Hestenes 和Stiefel(1952)提出来作为解线性方程组的方法。由于解线性方程组等价于极小化一个正定二次函数,故 1964 年 Fletcher 和 Reeves 提出了无约束极小化的共轭梯度法,它是直接从 Hestenes 和 Stiefel 解线性方程组的共轭梯度法发展而来的。共轭梯度法的基本思想是把共轭性与最速下降方法相结合,利用已知点处的梯度构造一组共轭方向,并沿这组方向进行搜索,求出目标函数的极小点。根据共轭方向的基本性质,这种方法具有二次终止性。共轭梯度法就是
9、使得最速下降方向具有共轭性,从而提高算法的有效性和可靠性。在各种优化算法中,共轭梯度法是非常重要的一种。其优点是所需存储量小,具有步收敛性,稳定性高,而且不需要任何外来参数。2.4 共轭梯度算法的步骤共轭梯度算法的步骤 共轭梯度算法步骤如下:Step1 给定迭代精度和初始点.计算.令.100 x)(00 xfg0 :kStep2 若,停算,输出.kgkxx *Step3 计算搜索方向:kd1, , 0 ,11kdgkgdkkkkk其中当时,确定.1k111kTkkTkkgggg1kStep4 利用精确(或非精确)线搜索方法确定搜索步长.kStep5 令,并计算.kkkkdxx :1)(11kk
10、xfgStep6 令,转步 Step1.1 : kk 3 3、数值实验、数值实验精选优质文档-倾情为你奉上专心-专注-专业3.1 代码实现代码实现共轭梯度法的共轭梯度法的MatlabMatlab程序如下:程序如下:分别新建Conjugate_Gradient_Method.m、grad_obj.m、line_search.m、obj.m文件Conjugate_Gradient_MethodConjugate_Gradient_Method.m.m文件如下:文件如下:function x,iter,val = Conjugate_Gradient_Method(x,eps)k = 0;x_mat
11、(:,1) = x;%存储每一次迭代得到的点 xx_old = x;dy_old = grad_obj(x_old);d_old = -dy_old;while norm(dy_old)eps lambda = line_search(x_old,d_old);%步长 x_new = x_old + lambda*d_old; dy_new = grad_obj(x_new); coef = norm(dy_new)/norm(dy_old); d_new = -dy_new + coef2*d_old; % 搜索方向 k = k + 1; x_old = x_new; dy_old = dy
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 共轭 梯度 算法 分析 实现 12
限制150内