一、“最速”
由高数知识可知,当函数沿着负梯度方向行进时,下降速度最快,所以,“最速方向”就是负梯度方向。
二、求解方法
2.1 已知条件
目标函数: f ( x ⃗ ) f(\vec{x}) f(x)
梯度: g ⃗ ( x ⃗ ) = ∇ f ( x ⃗ ) \vec{g}(\vec{x})=\nabla f(\vec{x}) g(x)=∇f(x)
当前迭代点: x ⃗ k \vec{x}_k xk(初始点 x ⃗ 0 \vec{x}_0 x0 任取)
2.2 迭代方法
下一个迭代点: x ⃗ k + 1 = x ⃗ k + t k p ⃗ k \vec{x}_{k+1}=\vec{x}_k+t_k\vec{p}_k xk+1=xk+tkpk
其中,由于要满足 “最速下降”, 所以 p ⃗ k \vec{p}_k pk 取 − g ⃗ k -\vec{g}_k −gk
所以: x ⃗ k + 1 = x ⃗ k − t k g ⃗ k \vec{x}_{k+1}=\vec{x}_k-t_k\vec{g}_k xk+1=xk−tkgk
特殊地,当 f ( x ⃗ ) f(\vec{x}) f(x) 为正定二次函数时: t k = g ⃗ k T g ⃗ k g ⃗ k T Q g ⃗ k t_k=\frac{\vec{g}_k^{\rm T}\vec{g}_k}{\vec{g}_k^{\rm T}Q\vec{g}_k} tk=gkTQgkgkTgk
2.3 终止准则
如果是做题,一般题目会给定迭代几次或者到何时停止,编程时采用H终止准则:
给定
ϵ
1
\epsilon_1
ϵ1、
ϵ
2
\epsilon_2
ϵ2、
ϵ
3
\epsilon_3
ϵ3,当以下三个条件均满足时终止:
(1)
∣
∣
∇
f
(
x
⃗
k
+
1
)
∣
∣
⩽
ϵ
1
||\nabla f(\vec{x}_{k+1})||\leqslant \epsilon_1
∣∣∇f(xk+1)∣∣⩽ϵ1
(2) ∣ ∣ x ⃗ k + 1 − x ⃗ k ∣ ∣ ∣ ∣ x ⃗ k ∣ ∣ + 1 ⩽ ϵ 2 \frac{||\vec{x}_{k+1}-\vec{x}_k||}{||\vec{x}_k||+1}\leqslant \epsilon_2 ∣∣xk∣∣+1∣∣xk+1−xk∣∣⩽ϵ2
(3) ∣ f k + 1 − f k ∣ ∣ f k ∣ + 1 ⩽ ϵ 3 \frac{|f_{k+1}-f_k|}{|f_k|+1}\leqslant \epsilon_3 ∣fk∣+1∣fk+1−fk∣⩽ϵ3
一般取: ϵ 1 = 1 0 − 4 \epsilon_1=10^{-4} ϵ1=10−4, ϵ 2 = ϵ 3 = 1 0 − 5 \epsilon_2=\epsilon_3=10^{-5} ϵ2=ϵ3=10−5
三、直观理解
四、例题
m i n f ( x ⃗ ) = x 1 2 + 4 x 2 2 {\rm min} f(\vec{x})=x_1^2+4x_2^2 minf(x)=x12+4x22 迭代两次求 x ⃗ 2 \vec{x}_2 x2,初始点: x ⃗ 0 = [ 1 , 1 ] T \vec{x}_0=[1,1]^{\rm T} x0=[1,1]T
解: g ⃗ ( x ⃗ ) = ∇ f ( x ⃗ ) = [ 2 x 1 , 8 x 2 ] T \vec{g}(\vec{x})=\nabla f(\vec{x})=[2x_1,8x_2]^{\rm T} g(x)=∇f(x)=[2x1,8x2]T f ( x ⃗ 0 ) = 5 , g ⃗ 0 = [ 2 , 8 ] T f(\vec{x}_0)=5, \space\space\space \vec{g}_0=[2,8]^{\rm T} f(x0)=5, g0=[2,8]T该目标函数是正定二次函数,即: f ( x ⃗ ) = 1 2 x ⃗ T Q x ⃗ = 1 2 x ⃗ T [ 2 0 0 8 ] x ⃗ f(\vec{x})=\frac{1}{2}\vec{x}^{\rm T}Q\vec{x}=\frac{1}{2}\vec{x}^{\rm T}\begin{bmatrix} 2 & 0 \\ 0 & 8 \\ \end{bmatrix}\vec{x} f(x)=21xTQx=21xT[2008]x ∴ x ⃗ 1 = x ⃗ 0 − g ⃗ 0 T g ⃗ 0 g ⃗ 0 T Q g ⃗ 0 g ⃗ 0 = [ 0.73846 − 0.04616 ] \therefore \vec{x}_1=\vec{x}_0-\frac{\vec{g}_0^{\rm T}\vec{g}_0}{\vec{g}_0^{\rm T}Q\vec{g}_0}\vec{g}_0=\begin{bmatrix} 0.73846 \\ -0.04616 \\ \end{bmatrix} ∴x1=x0−g0TQg0g0Tg0g0=[0.73846−0.04616]然后: f ( x ⃗ 1 ) = 0.55385 , g ⃗ 1 = [ 1.47692 , − 0.36923 ] T f(\vec{x}_1)=0.55385, \space\space\space \vec{g}_1=[1.47692,-0.36923]^{\rm T} f(x1)=0.55385, g1=[1.47692,−0.36923]T ∴ x ⃗ 2 = x ⃗ 1 − g ⃗ 1 T g ⃗ 1 g ⃗ 1 T Q g ⃗ 1 g ⃗ 1 = [ 0.11076 0.11076 ] \therefore \vec{x}_2=\vec{x}_1-\frac{\vec{g}_1^{\rm T}\vec{g}_1}{\vec{g}_1^{\rm T}Q\vec{g}_1}\vec{g}_1=\begin{bmatrix} 0.11076 \\ 0.11076 \\ \end{bmatrix} ∴x2=x1−g1TQg1g1Tg1g1=[0.110760.11076]