前言
本文介绍了无约束问题中常用的两种算法,最速下降法和拟牛顿法(BFGS算法),最后通过matlab编程实现了以上两种算法,并对实际问题进行求解。
- 符号定义
假设有无约束问题 min f ( x ) , ( x ∈ R n ) \min f(x), (x \in R^n) minf(x),(x∈Rn),
记函数f(x)的一阶导数为 ∇ f ( x ) \nabla f(x) ∇f(x),二阶导数为 ∇ 2 f ( x ) \nabla^2 f(x) ∇2f(x).
一、 最速下降法
-
简介
最速下降法,又叫梯度下降法,是一种求解无约束问题的常用算法,以负梯度方向作为下降方向的算法。 -
收敛速度
求解严格凸二次函数极小化问题时恰好具有线性收敛速度。 -
优缺点
优点:具有存储量少的特点,且算法简单易理解。
缺点:收敛速度较慢。 -
算法步骤
步1:给定初始点 x ( 0 ) ∈ R n x^{(0)} \in R^n x(0)∈Rn,精度 ϵ > 0 \epsilon > 0 ϵ>0. 令k=0.
步2:若 ∣ ∣ ∇ f ( x ( k ) ) ∣ ∣ ≤ ϵ ||\nabla f(x^{(k)})|| \leq \epsilon ∣∣∇f(x(k))∣∣≤ϵ,则算法终止. 得解 x ( k ) x^{(k)} x(k). 否则,计算 d ( k ) = − ∇ f ( x ( k ) ) d^{(k)} = -\nabla f(x^{(k)}) d(k)=−∇f(x(k)). 转步3.
步3:由线性搜索确定步长 α k \alpha_k αk.
步4:令 x ( k + 1 ) = x ( k ) + α k d ( k ) , k = k + 1. x^{(k+1)} = x^{(k)} + \alpha_kd^{(k)}, k=k+1. x(k+1)=