共轭梯度法

合集下载

共轭梯度法

共轭梯度法
Hesteness和Stiefel于1952年为解线性方程组而提出
•基本思想:把共轭性与最速下降法相结合,利用已 知点处的梯度构造一组共轭方向,并沿着这组方 向进行搜索,求出目标函数的极小点
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

g2T (g2 d1T (g2
g1) g1)

g2T g2 g1T g1
4) 一般地,在第 k 次迭代中,令
k 1
dk gk idi i0
适当选取 i ,使 dkTGdi 0 ( i 0,
, k 1),可得到
i

gkT Gdi diT Gdi

gkT (gi1 gi ) diT (gi1 gi )
§4.2 共轭梯度法
提纲
1、共轭梯度法---F-R共轭梯度法 2、共轭梯度法性质定理及例题 3、再开始FR共轭梯度法 4、Beale三项共轭梯度法 5、预条件共轭梯度法(了解)
共轭梯度法
在上一节中讨论了共轭方向法,其中n个共轭方向是预先设定好的。但是如何 让获取这些共轭方向并为提及。本节讨论一种重要的共轭方向法——共轭梯 度法。这种方法是将共轭性和最速下降方向相结合,利用已知迭代点处的梯 度方向构造一组共轭方向,并沿此方向进行搜索,求出函数的极小点。因在 迭代过程中通过对负梯度方向进行适当校正获得共轭方向,故而称之为共轭 梯度法。
算法步骤—FR共轭梯度法
1、选取初始数据,选取初始点 x0 ,给定允许误差 0 ;
2、检查是否满足终止准则,计算 f (x0 ) ,若 || f (x0 ) || ,迭代终
止,x0为近似最优解,否则转向3;
3、 构造初始搜索方向,计算 d0 f (x0 ), k 0;

k 1

gkT (gk gk1)
dT k 1
(
gk

gk 1 )

gkT gk gkT1 gk 1
共轭梯度法的迭代公式为:

共轭梯度法

共轭梯度法

最速下降法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

共轭梯度法公式推导

共轭梯度法公式推导

共轭梯度法公式推导一、问题的提出与预备知识。

1. 二次函数的极小化问题。

- 考虑二次函数f(x)=(1)/(2)x^TAx - b^Tx + c,其中A是n× n对称正定矩阵,x,b∈ R^n,c∈ R。

- 对f(x)求梯度∇ f(x)=Ax - b。

- 求f(x)的极小值点,即求解Ax = b。

2. 共轭方向的概念。

- 设A是对称正定矩阵,若对于非零向量d_1,d_2∈ R^n,满足d_1^TAd_2 = 0,则称d_1和d_2是A - 共轭的(或A - 正交的)。

二、共轭梯度法的基本思想。

1. 迭代格式。

- 共轭梯度法是一种迭代算法,其基本迭代格式为x_k + 1=x_k+α_kd_k,其中x_k是第k次迭代的近似解,α_k是步长,d_k是搜索方向。

2. 确定步长α_k- 为了使f(x_k+1)最小,将x_k + 1=x_k+α_kd_k代入f(x)中,得到f(x_k+α_kd_k)=(1)/(2)(x_k+α_kd_k)^TA(x_k+α_kd_k)-b^T(x_k+α_kd_k)+c。

- 对α_k求导并令其为0,可得α_k=((r_k)^Td_k)/((d_k)^TAd_k),其中r_k = b - Ax_k=∇ f(x_k)。

三、搜索方向d_k的确定。

1. 初始搜索方向。

- 取d_0=-r_0,其中r_0 = b - Ax_0,x_0是初始近似解。

2. 后续搜索方向。

- 对于k≥1,d_k=-r_k+β_k - 1d_k - 1,其中β_k-1=frac{(r_k)^TAd_k - 1}{(d_k - 1)^TAd_k - 1}。

- 下面推导β_k - 1的表达式:- 因为d_k - 1和d_k是A - 共轭的,所以d_k - 1^TAd_k = 0。

- 将d_k=-r_k+β_k - 1d_k - 1代入d_k - 1^TAd_k = 0,得到d_k - 1^TAd_k=-d_k - 1^TAr_k+β_k - 1d_k - 1^TAd_k - 1=0。

25共轭梯度法

25共轭梯度法
设 p1 , p2 , , pk 是 Rn 中一组非零向量,如果它们两两关于A
共轭,即 piT Apj 0, i j ,i , j 1,2, ,k。 则称这组方向是关于A共轭的,也称它们是一组A共轭方向。
注:如 果A是 单 位 矩 阵 , 则
p1T I p2 0 p1T p2 0
p1 p2
§2.5 共轭梯度法
预备知识 最速下降法 共轭梯度法 数值试验算例
21:26
预备知识:内积的定义
I II
方程组问题: 极值问题:
Ax =
min
b
f
(x)
1
xT Ax
bT
x
xRn
设 x, y Rn , 记 ( x , y) = xT y
2
▪( x, y ) = ( y, x ); ▪( tx, y ) = t ( x, y); ▪( x+ y, z ) = ( x, z ) + ( y, z ); ▪( x, x) ≥ 0, 且( x, x) = 0 x = 0;
p(k 1) r (k 1) k p(k )
进行下一次迭代
例:用CG迭代法求解下列方程组: x(0) (0 0 0)T
2 0 1 x1
3
0 1 0 x2 1
1 0 2 x3
3
解: 易验证系数矩阵是对称正定的.
Step1 计算 p(0) r(0) b Ax(0) (3 1 3)T
0
x2 x1
x*
x3
注 最速下降方向反映了目 标函数的一种局部性质。它只是 局部目标函数值下降最快的方向。 最速下降法是线性收敛的算法。
f(x1,x2)=100x12+x22
最速下降法

共轭梯度法总结

共轭梯度法总结

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

, 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.
例 用FR算法求解下述问题:
min
2 2 f ( x) 2x1 x2
初始点取为x(0) ( 2 , 2 )T , 0.001 。
1、选取初始数据,选取初始点
x0
,给定允许误差 0 ;
f ( x0 )
2、检查是否满足终止准则,计算
,若 || f ( x0 ) || ,迭代终
止,x 0为近似最优解,否则转向3;

3、 构造初始搜索方向,计算 d0 f ( x0 ), k 0 ; 4、进行一维搜索,求出 k 和 xk 1 ,使得
|| g k ||
,则停止计算,否则转步5;
T 2 5、检验下列条件是否成立: | gk 1gk | 0.2 || gk ||
k, t n -1
若两个条件都不成立,则转步7,否则转步6;
6、置t=k-1;
7、按以下公式计算
dk

dk gk k 1dk 1 k 1dt
T 在FR梯度法的步骤上增加一步即可,即:如果 dk 1 g k 1 0 ,令 x 0 x k
并转步1,否则转步3.
Beale三项共轭梯度法
算法思想:在再开始的时候,负梯度方向不一定最好,特别是频繁地采用 负梯度方向再开始时,算法效率会降低,而沿着原来的方向搜索往往效
果较好,所以,当需要在
4.2.27表示的是方向向量和梯度向量之间的惯性,这些子空间通常被 称作Krylow子空间。
再开始FR共轭梯度法

由于对于一般非二次函数,n步以后共轭梯度法产生的搜索方向 d k 不 再共轭,因此n步之后我们宜于周期性地采用最速下降方向作为搜索方 向,即令
这种开始的方法叫做再开始共轭梯度法。采用这种方法,所产生的 xk 1 总比 x 0 更加靠近 x * ,尤其当迭代从一个非二次区域进入 f ( x) ,可由 二次函数很好的近似的解的领域时,再开始方法能迅速收敛。 再开始共轭梯度法允许近似线性搜索过程,只是在采用近似线性搜索的 同时,要采取一定的检查措施,以保证所得到的搜索方向是下降方向。 事实上,由于

其中
T gk (g g ) k 1 T k k 1 d k 1 ( g k g k 1 )
0 T k 1 g k ( g t 1 g t ) d T (g g ) t t 1 t
(Crowder-Wolfe公式)
(4.2.19)
2)
(Fletcher-Reeves公式)
(4.2.20)
3)
T gk 1 ( g k 1 g k )(Polak-Ribiere-Polyak 公式) k T gk gk T gk 1 g k 1 k T dk gk
(4.2.21)
4) 一般地,在第 k 次迭代中,令
d k g k i di
适当选取
k 1 i 0
i ,使 d Gdi 0 ( i 0, , k 1), 可得到
T k
T T gk Gdi gk (g g ) i T T i 1 i ( i 0, di Gdi di ( gi 1 gi )
§4.2 共轭梯度法
提纲

1、共轭梯度法---F-R共轭梯度法 2、共轭梯度法性质定理及例题 3、再开始FR共轭梯度法 4、Beale三项共轭梯度法 5、预条件共轭梯度法(了解)
共轭梯度法

在上一节中讨论了共轭方向法,其中n个共轭方向是预先设定好的。但是如何 让获取这些共轭方向并为提及。本节讨论一种重要的共轭方向法——共轭梯 度法。这种方法是将共轭性和最速下降方向相结合,利用已知迭代点处的梯 度方向构造一组共轭方向,并沿此方向进行搜索,求出函数的极小点。因在 迭代过程中通过对负梯度方向进行适当校正获得共轭方向,故而称之为共轭 梯度法。 共轭方向法基本原理告诉我们,共轭性和精确线性搜索产生二次终止性,共 轭梯度法实施的最速下降方向具有共轭性,从而提高算法的有效性和可靠性。
T T gk ( gk gk 1 ) gk gk k 1 T T dk 1 ( gk gk 1 ) gk 1 gk 1
共轭梯度法的迭代公式为:
k 为最佳步长因子) xk 1 xk k dk ( dk 为共轭方向,
对二次函数
T gk d k T k d k Gd k
m n
步迭代后终止。且对1 i
T
m
,下列关系式成立:
(4.2.23) (4.2.24) (4.2.25)
1)di
Gd j 0 (
2)gi
T
gj 0

j 0,1, , i 1) j 0,1, , i 1)
T T d g g i gi 3) i i
4) [ g0 , g1 ,
(
d (1) g1 0 d (0)
8 16 T 4 ( , ) ( 8 , 4 )T 9 9 81
40 ( 1, 4 )T 81
1
T g1 d (1)
d
(1) T
Gd (1)
9 20
40 8 16 1 ( , ) 81 9 9 4 4 0 1 40 2 ( ) ( 1, 4 ) 4 81 0 2

xk a j d k 处的计算值,其中
{a j } 是由步长算法产生的实验步长序列,如果
g k 1 d k 1 || g k 1 ||2 || d k 1 ||2
T




其中 是一个小正数,则步长因子 j 作为 k 。如果在任何试验中,
上述式子都不满足,则需要精确线性搜索产生步长因子 k 。 再开始FR共轭梯度法
x( 2) x(1) 1 d (1)
( 2 8 T 9 40 , ) ( 1, 4 )T 9 9 20 81
( 0 , 0 )T
g 2 ( 0 , 0 )T
x( 2)即为所求极小点。
定理4.3 对于正定二次函数,采用基于精确一维搜索的共轭梯度算法,必定经过
x0 为初始点。首先取 d0 g0
T d0 0 (精确一维搜索性质,见定理4.1.3)。 则有:g1
T 2)令 d1 g1 0 d0 ,适当选择 0 ,使 d1 Gd0 0 ,
T T T g1 Gd0 g1 ( g1 g0 ) g1 g1 得 0 T T T d0 Gd0 d0 ( g1 g0 ) g0 g0
T T gk k 1 gk dk 1可能大于0,这时 d k 将不是一个下降方向,我 的,并且 gk
们需要重置
d k 为 gk
。但是,如果频繁地利用最速下降方向作为搜索
方向,将大大削弱共轭梯度法的效率,而使得算法的形态变得更像最速 下降法。下面的检查措施可以克服这个困难。 设 g k 1 , d k 1 , k 分别表示 g k 1 , d k 1 , k 在点
, gi ] [ g0 , Gg0 , , di ] [ g0 , Gg0 ,
, Gi g0 ] , Gi g0 ]
(4.2.26 ) (4.2.27)
5) [d0 , d1 ,
其中,m是G的相异特征值的个数,4.2.23表示的是搜索方向的共轭性,
4.2.24表示的是梯度的直交性,4.2.25表示的是下降条件,4.2.26和
(从而得到 d1 )
1 ,使得 3)再令 d2 g2 0d0 1d1 ,适当选择 0 ,
T d2 Gdi 0 ( i 0,1),
由此得:
T T g2 ( g2 g1 ) g2 g2 0 0 , 1 T d1T ( g2 g1 ) g1 g1
而对非二次函数,则采用精确一维搜索得到 k

共轭方向的修正公式为:dk 1
k
gk 1 k dk
(4.2.18)
其中, 由下面诸式之一计算:
相关文档
最新文档