共轭梯度法
共轭梯度法

共轭梯度法最速下降法和牛顿法都有其自身的局限性,而共轭梯度法是介于最速下降法与牛顿法之间的一种无约束优化算法,它具有超线性收敛速度,而且算法简单。
此外,与最速下降法类似,共轭梯度法只用到了目标函数及其梯度值,避免了二阶导数(Hess 矩阵)的计算,从而降低了计算量和存储量。
共轭方向法共轭方向法的基本思想是在求解n 维正定二次目标函数极小点时产生的一组共轭方向作为搜索方向,在精确线搜索条件下算法至多迭代n 步就能求得极小点。
经过适当的修正后,共轭方向法可以推广到求解一般非二次目标函数情形。
下面先介绍共轭方向的概念。
设G 是n 接对称正定矩阵,若n 维向量组12,,...,()m d d d m n ≤满足0,T i j d Gd i j =≠,则称12,,...,m d d d 为G 共轭的。
显然,向量组的共轭是正交的推广,即当G=I (单位矩阵)时,上述定义变成向量组正交的定义。
此外,对称正定矩阵G 的共轭向量组必然是线性无关的。
下面考虑求解正定二次目标函数极小点的共轭方向法。
设1m in ()2TTf x x G x b x c =++ (1)其中,G 为n 阶对称正定矩阵,b 为n 维常向量,c 为常数。
于是有下面的算法。
共轭方向法0. 给定迭代精度01ε≤≤和初始点0x ,计算00()g f x =∇。
选取初始方向0d ,使得000Td g <。
令0k =1. 若||||k g ε≤,停止运算,输出*k x x ≈2. 利用精确线搜索方向确定搜索步长k α3. 令1k k k k x x d α+=+,并计算11()k k g f x ++=∇4. 选取1k d +满足如下下降性和共轭条件:1110,0,0,1,...,,T T k k k i d g d G d i k +++<==5. 令k=k+1,转步1.共轭梯度法共轭梯度法是在每一次迭代步中利用当前点所处的最速下降方向来生成关于凸二次函数f 的Hess 矩阵G 的共轭方向,并建立求f 在R n 上的极小点的方法。
共轭梯度法

•基本思想:把共轭性与最速下降法相结合,利用已 知点处的梯度构造一组共轭方向,并沿着这组方 向进行搜索,求出目标函数的极小点
4.4共轭梯度法
先讨论对于二次凸函数的共轭梯度法,考虑问题
min f (x) 1 xT Ax bT x c
3, giT d (i) giT gi (蕴涵d (i) 0)
证明: 显然m1,下用归纳法(对i)证之.
当i 1时,由于d (1) g1,从而3)成立,对i 2时, 关系1)和2)成立,从而3)也成立.
4.4共轭梯度法
设对某个i<m,这些关系均成立,我们证明对于i+1
也成立.先证2),
因此
2 / 3 1 5/ 9
d (2)
1/ 1
3
1 9
2 0
5/9 1
从x(2)出发,沿方向d (2)进行搜索,求步长2,使满足 :
f
( x (1)
2d (1) )
min
0
f
(x(2)
d (2))
2 0
4.4共轭梯度法
显然, d (1)不是目标函数在x(1)处的最速下降方向.
下面,我们用FR法构造两个搜索方向.
从x(1)出发,沿方向d (1)进行搜索,求步长1,使满足 :
f
( x (1)
1d (1) )
min
0
f
( x (1)
d (1) )
得1 2 3
A正定,故x是f(x)的极小值点.
共轭梯度法

最速下降法1.最速下降方向函数f(x)在点x处沿方向d的变化率可用方向导数来表示。
对于可微函数,方向导数等于梯度与方向的内积,即:Df(x;d) = ▽f(x)T d,因此,求函数f(x)在点x处的下降最快的方向,可归结为求解下列非线性规划:min ▽f(x)T ds.t. ||d|| ≤ 1当 d = -▽f(x) / ||▽f(x)||时等号成立。
因此,在点x处沿上式所定义的方向变化率最小,即负梯度方向为最速下降方向。
2.最速下降算法最速下降法的迭代公式是x(k+1) = x(k) + λk d(k) ,其中d(k)是从x(k)出发的搜索方向,这里取在x(k)处的最速下降方向,即d = -▽f(x(k)).λk是从x(k)出发沿方向d(k)进行一维搜索的步长,即λk满足f(x(k) + λk d(k)) = min f(x(k)+λd(k)) (λ≥0).计算步骤如下:(1)给定初点x(1) ∈ R n,允许误差ε> 0,置k = 1。
(2)计算搜索方向d = -▽f(x(k))。
(3)若||d(k)|| ≤ε,则停止计算;否则,从x(k)出发,沿d(k)进行一维搜索,求λk,使f(x(k) + λk d(k)) = min f(x(k)+λd(k)) (λ≥0).(4)令x(k+1) = x(k) + λk d(k),置k = k + 1,转步骤(2)。
共轭梯度法1.共轭方向无约束问题最优化方法的核心问题是选择搜索方向。
以正定二次函数为例,来观察两个方向关于矩阵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)的极小点。
共轭梯度法

必有
p
T j
∇f
(X
n
)
=0(源自j=0,1,L,
n
− 1)
因为A正定,所以f (X ) 是凸函数,故 X n 是惟一的全局 极小点。
从而
∇f (Xk ) = AXk + b
=
AX
j+1
+
λ* j+1
Apj+1
+L+
λ* k −2
Apk−2
+
λ* k −1
Apk
−1
+
b
=
∇f
(X
⎡6 ⎢⎣17
12⎤ 17⎥⎦
⎢⎣⎡−
90 289
−
210⎤ 289⎥⎦
T
−
210⎤⎡ 3 289⎥⎦⎢⎣−1
−11⎥⎦⎤⎢⎣⎡−
90 289
−
210⎤T 289⎥⎦
= 17 10
X2
=
X1
+
λ1 p1
=
⎡ 26 ⎢⎣17
38 ⎤ T 17 ⎥⎦
+ 17 10
⎢⎣⎡−
90 289
−
210 ⎤ T 289 ⎥⎦
= [1
1]T
∇f ( X 2 ) = [0 0]T
练习: 试用共轭梯度法二次函数
min
f
(x)
=
x12
+
1 2
x22
+
1 2
x32
的极小点。取初始点为x( 0 ) = (1,1,1)T
3 、非二次函数的共轭梯度法
一般地,我们有:
⎧ X k+1 = X k + λk pk
共轭梯度法matlab

共轭梯度法matlab中文:共轭梯度法(Conjugate Gradient),是一种非常有效的求解对称大型线性系统的近似解的算法。
使用共轭梯度法来求解线性系统最终收敛于最小值,它是在不构造正定矩阵时,可以快速求解系统的一个有效解法。
拉格朗日方程,线性系统通常表示为Ax = b,其中A为系数矩阵,b为常数矩阵,x 为未知标量或未知向量。
给定矩阵A和b,共轭梯度法可以用来求解x。
共轭梯度法的基本思想是,不断改变梯度的方向直到梯度收敛为零。
梯度收敛的定义是:在不同的两个迭代过程中,两个梯度的乘积的值小于一个特定的参数。
由于梯度的收敛程度越小,时间复杂度也就越低。
matlab中,我们可以使用共轭梯度法导入函数cgs来解决线性系统的代数方程。
语句形式为[x,flag,relres,iter,resvec] = cgs(A,b),其中A是系数矩阵,b为常数矩阵,x 为未知量,flag表示结束状态,relres为相对残差,iter表示迭代次数,resvec为残差向量。
若要解决Ax = b,即:A = [1 2;3 4]我们用matlab cgs 函数进行求解,可以这样写:[x,flag,relres,iter,resvec] = cgs(A,b);flag表示收敛情况,flag=0代表收敛,flag=-1代表系数矩阵A不能被处理。
relres 是收敛的相对误差,iter是迭代次数,resvec是残差向量,x为未知量。
上面的程序可以得到flag=0,relres=1.537e-14,iter=13,resvec=[1.0135e-14]。
上面的解为x=[-1;1],解析解一致,表明matlab cgs函数可以成功求解对称大型线性方程组。
最后,共轭梯度法是一种近似求解线性系统的有效算法,它的优势是具有快速的收敛性,在计算时省去构造正定矩阵的时间,并且稳定。
共轭梯度法

, k 1 )
(1)
同样由前一节共轭方向的基本定理有:
T gk di 0
( i 0,
, k 1 ),(2)
T 再由 g i 与 d i 的关系得: gk gi 0 ( i
0,
i 0,
, k 1 )
(3)
将(2)与(3)代入(1)得:当 而
i 0 , k 2 时,
第 2次迭代:
5 2 8 T ( 8 , 4 )T ( , ) 18 9 9
g1 (
8 2 16 2 ) ( ) || g1 || 9 9 4 . 0 || g 0 ||2 82 4 2 81
2
8 16 T , ) . ||g1 || 9 9
解:
4 1 f ( x) ( x1 , x2 ) 2 0
0 x1 , 2 x2
4 0 G . 0 2
f ( x) ( 4 x1 , 2 x2 )T .
第1 次迭代:
令
而
d (0) g0 f ( x(0) ) ( 8 , 4 )T ,
一、共轭梯度的构造 (算法设计针对凸二次函数) 设
f ( x)
1 T x Gx bT x c 2
其中 G 为 n n 正定矩阵,则
g ( x) Gx b
对二次函数总有 1)设
gk 1 gk G xk 1 xk k Gdk
,令 x1 x0 0 d0 ( 0 为精确步长因子)
dk 1 f ( xk 1 ) dk
|| f ( xk 1 ) ||2 || f ( xk ) ||2
令k=k+1;返回4.
共轭梯度法总结

共轭梯度法总结
共轭梯度法总结
一、什么是共轭梯度法
共轭梯度法(Conjugate Gradient Method),是一种用于求解线性方程组的迭代优化算法,它是一种搜索梯度的迭代算法。
共轭梯度法的基本思想是沿梯度的反方向搜索,并在每一步令搜索的方向接近更新的局部梯度。
它是一种非常有效的求解有约束的非线性优化问题的方法,是求解线性方程组的有效算法。
共轭梯度法可以看作是一种极小化函数的迭代方法,它最主要的思想是不断更新梯度的方向,从而寻找函数值最小的点。
二、共轭梯度法的原理
共轭梯度法是一种迭代优化算法,它以凸二次型函数为例,可以用来求解最小值问题。
它的基本思想是:
(1)首先求得函数的梯度,即每一步优化的搜索方向,使梯度变为最小;
(2)以梯度的反方向搜索,令搜索的方向接近更新的局部梯度,而不是与旧的梯度成正比的步长;
(3)逐步更新搜索的方向为新的梯度;
(4)重复这个过程,直到所有的自变量满足限制条件。
三、共轭梯度法的优缺点
共轭梯度法最大的优点是它具有收敛速度快,可以在有限的迭代步数内收敛到最优解;另外,它还具有计算量小,不需要计算精确的
Hessian矩阵的优点。
共轭梯度法的缺点是它不能用来求解非凸优化问题,因为它只能求解凸优化问题;另外,它也不能用于强不可约的优化问题。
共轭梯度法

3. 算法的 MATLAB 实现
在 MATLAB 中编程实现的共轭梯度法函数为: min GETD 功能:用共轭梯度法求解多维函数的极值。
调用格式: [ x, min f ] min GETD( f , x0, var, eps) 其中, f :目标函数;
x0 :初始点; :自变量向量; var x :目标函数取最小值时的自变量值;
(6) 若 k 1 n ,令 x(0) x( n ) ,转步骤(3) ,否则转步骤(7) ;
(7) 令 p
( k 1)
f ( x
( k 1)
) k p
(k )
, k
f ( x ( k 1) ) f ( x )
(k )
2 2
, 置 k k 1, 转步骤 (4) 。
t 0
(k ) ( k ) (4) 用 一 维 搜 索 法 求 t k , 使 得 f ( x kt p ) m i n f
( ) 5; x( k 1 ) x k( ) kt p k,转步骤
k( ) x
) 令, tk p( ,
(5) 若 f ( x
( k 1)
) ,停止,极小值点为 x ( k 1) ,否则转步骤(6) ;
1 f ( X ) d1 + x1 -x1* 2 1 =d1 + x1 -x1* 2
2
*
2
1 d1 a x1 -x1* 2
2b x1 -x1*
x -x c x -x
2
2b x1 -x1*
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目:共轭梯度法及其数值实现院系:数理科学与工程学院应用数学系专业:数学与应用数学姓名学号:************************************************指导教师:张世涛日期:2015 年7 月 5 日最优化是一门应用性很强的学科,近年来,随着计算机的发展以及实际问题的需要,大规模优化问题越来越受到重视。
共轭梯度法是最优化中最常见的方法之一,他具有算法简单、存储需求少、有较快的收敛速度和二次终止性且易于实现等优点,十分适合于大规模优化问题。
非线性共轭梯度法已有五十多年的历史,最早由计算数学家Hestenes和几何学家Stiefel为求解线性方程组Ax=b,n Rx∈而独立提出的。
较著名的有FR方法、PRP方法、HS方法和LS方法等。
非线性最优化的共轭梯度算法的收敛性分析,也就是讨论各种共轭梯度算法在不同搜索下的收敛性质。
本文主要研究求解无约束优化问题的非线性共轭梯度法,并用Matlab软件对其数值实现。
关键词:无约束规划;非线性共轭梯度法;迭代;最优解;数值实现AbstractOptimization is strong discipline applied. In recent years, with the development of computer and practical issues,large-scale optimization problems are given more and more attention.Conjugate gradient method is one of the most commonly used methods in optimization. It is simply, storage needs less, easy to practice with faster convergence speed and quadratic termination. It is suitable for large-scale optimization problem.The conjugate gradient method have been more than 50 years of history. The pioneers were mathematician Hestenes and geometrician Stiefel. They independently proposed this method for solving system of linear equations Ax=b,n Rx∈. Well-known conjugate gradient method is FR method, PRP method, HS method, LS method and so on. The convergence analysis of the conjugate gradient algorithm for nonlinear optimization is also the convergence of various conjugate gradient algorithms under different search conditions. Global convergence and numerical result of nonlinear conjugate gradient method of unconstrained optimization is investigated in this paper. Besides, we use Matlab to get its numerical solution.Keywords:Unconstrained programming; Nonlinear conjugate gradient method;Iteration; Optimal solution; Numerical implementation第一章引言 (2)1.1无约束优化问题概述 (2)1.2 共轭方向 (2)1.3 共轭方向法 (3)第二章共轭梯度法 (4)2.1 基本原理 (4)2.2 算法步骤 (4)2.3 程序流程图 (5)第三章算例 (6)总结 (9)参考文献 (11)附录 (12)第一章引言1.1 无约束优化问题概述无约束最优化问题,即为在不对所求问题定义域或值域做任何限制情况下,对目标函数求最小值的一类问题。
无约束最优化问题的求解方法大多是采用逐次一维搜索的迭代算法。
这类迭代算法可分为两类。
一类需要用目标函数的导函数,称为解析法;另一类不涉及导数,只用到函数值,称为直接法。
其迭代算法的基本思想是:在一个近似点处选定一个有利搜索方向,沿这个方向进行一维寻查,得出新的近似点。
然后对新点施行同样手续,如此反复迭代,直到满足预定的精度要求为止。
而根据搜索方向的取法不同,又可以将其分为几种不同的算法。
其中属于解析型的算法有:(1)梯度法:又称最速下降法。
这是早期的解析法,收敛速度较慢。
(2)牛顿法:收敛速度快,但不稳定,计算也较困难。
(3)共轭梯度法:收敛较快,效果较好。
(4)变尺度法:这是一类效率较高的方法。
其中变尺度法,简称 DFP 法,是最常用的方法。
而属于直接型的算法分别有:交替方向法(又称坐标轮换法)、模式搜索法、旋转方向法、鲍威尔共轭方向法法和单纯形加速法等。
1.2共轭方向(1):设A 是n ⨯n 得对称正定矩阵,对于中的两个非零向量, 若有021=Ad d T,则称21d d 和关于A 共轭。
设k d d d ,...,21是n R 中一组非零向量,如果他们两两关于A 共轭,即。
k j i j i Ad d j i T,...,2,1,,,0=≠= 则称这组方向是关于A 共轭的,也称它们是一组A 共轭方向。
注:如果A 是单位矩阵,则21212100d d d d d I d TTT⊥⇒=⋅⇒=⋅⋅ 从而共轭是正交得推广。
(2):设直线AB 和CD 过椭圆中心,切CD 平行于椭圆在点A ,B 得切线,则称AB 与CD 为共轭直径,与得方向为共轭方向,或A,B 的切线方向与的方向称为共轭方向。
见下图。
1.3 共轭方向法对于极小化问题c x b Ax x x f T T++=21)(min 其中A 是正定矩阵,称下述算法为共轭方向法:(1)取定一组A 共轭方向)()3()2()1(...,,n d d d d (2)任取初始点)1(x ,依次按照下式由)(k x 确定)1(+k x ,⎪⎩⎪⎨⎧+=++=+)(min )()()()()()()()1(k k k k k k k k k d x f d x f d x x λλλλ直到某个)(k x 满足0)()(=∇k x f 。
注:由定理可知,若利用共轭梯度法解上述极小化问题,则至多经过n 次迭代必可得到最优解。
第二章共轭梯度法2.1 基本原理定理1:设A 是n 阶对称正定矩阵,k d d d d ,...,,,321是k 个A 共轭的非零向量,则这个向量组线性无关。
定理2:设有函数c x b Ax x x f T T++=21)(,其中A 是n 阶对称正定矩阵。
)()2()1(,...,,k d d d 是一组A 共轭向量。
以任意的)()1(n R x ∈为初始点,依次沿k d d d d ,...,,,321进行搜索,得到点)1()3()2(,...,,+k x x x ,则)1(+k x 是函数)(x f 在k B x +)1(上的极小点,其中},|{)(1R d x x B i i ki i k ∈==∑=λλ是由)()2()1(,...,,k d d d 生成的子空间。
特别地,当k=n 时,)1(+n x 是)(x f 在n R 上唯一的极小点。
推论:在上述定理条件下,必有k i d x f i T k ,...,2,1,0)()1(==∇+定理3:对于正定二次型函数c x b Ax x x f T T++=21)(,FR 算法在n m ≤次一维搜索后即终止,并且对所有的)1(m i i ≤≤,下列关系成立(1);1,...,2,1,0)()(-==i j Ad d j i T(2);1,...,2,1,0-==i j g g j Ti(3).)(i T i i T g g d g -=2.2算法步骤(1)任取初始点)1(x ,精确要求ε,令k=1。
(2)令)()1(1x f g ∇=,若ε<||||1g ,停止,)1(x 为所求极小点;否则,令1)1(g d-=,利用公式)()()(k k k T k k Ad d dg T-=λ计算1λ,令)1(1)1()2(d x x λ+=。
(3)令)()1(1++∇=k k xf g ,若ε<+||||1k g ,停止,)1(+k x 为所求极小点;否则,令)(1)1(k k k k dg dβ+-=++,其中k β用公式221||||||||k k k g g +=β计算。
令1:+=k k 。
(4)利用公式)()()(k k k T k k Ad d dg T-=λ计算k λ,令)()()1(k k k k d x xλ+=+,转3。
2.3 程序流程图第三章算例3.1 算例试用共轭梯度法求下述二次函数的极小点:121222122123)(x x x x x x f --+=取410-=ε,⎥⎦⎤⎢⎣⎡-=42)0(x。
解:首先将)(x f 化成标准格式:.)0,2(1113),(21)(212121⎥⎦⎤⎢⎣⎡-+⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡--=x x x x x x x f 其中A=⎥⎦⎤⎢⎣⎡--1113是一个正定矩阵,b=⎥⎦⎤⎢⎣⎡-02,C=0. 因⎥⎦⎤⎢⎣⎡-=42)0(x故⎥⎦⎤⎢⎣⎡-=⎥⎦⎤⎢⎣⎡-+⎥⎦⎤⎢⎣⎡-=⎥⎦⎤⎢⎣⎡-+⎥⎦⎤⎢⎣⎡-⎥⎦⎤⎢⎣⎡--=+=∇6120261002421113)()0()0(b Axxf 所以.612)()0()0(⎥⎦⎤⎢⎣⎡-=-∇=xf p以)0(x为出发点,沿)0(p 方向作最佳一维搜索,可有公式求得步长:175)()()0()0()0()0(0=∇-=Ap p p x f T T λ ⎥⎦⎤⎢⎣⎡≈⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=+=235.2529.117381726)0(0)0()1(p x x λ.706.0353.0171217602173817261113)()1()1(⎥⎦⎤⎢⎣⎡≈⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎦⎤⎢⎣⎡-+⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎦⎤⎢⎣⎡--=+=∇b Ax x f 计算:.789.0)()1(ε>≈∇x f再计算:0β00346.02891)()()()()0()0()1()1(0≈=∇∇∇∇-=x f x f x f x f T T β故有.727.0311.028*********)()0(0)1()1(⎥⎦⎤⎢⎣⎡--≈⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡--=+-∇=p x f p β 再计算1λ:=1λ.1017)()()1()1()1()1(=∇-Ap p p x f T T 故有.11)1(1)1()2(⎥⎦⎤⎢⎣⎡=+=pxxλ 计算:.00)()2()2(⎥⎦⎤⎢⎣⎡=+=∇b Axxf所以.0)()2(ε<=∇x f故)2(x 即为本题最优解。