最优化学习笔记(十四)——共轭梯度法

    共轭梯度法不需要预先给定 Q 共轭方向,而是随着迭代的进行不断产生 Q 共轭方向。在每次的迭代中,利用上一个搜索方向和目标函数在当前迭代点的梯度向量 之间的线性组合构造一个新的方向,使其与前边已经产生的搜索方向组成 Q 共轭方向。对于一个 n 维二次型函数,沿着Q共轭方向进行搜索,经过 n 次迭代,即可得到极小点。
    考虑二次型函数:

f(x)=12xTQxxTb,xRn

其中, Q=QT>0 。初始点 x(0) ,搜索方向采用最速下降法的方向,即函数 f x(0)处梯度的负方向,即:

d(0)=g(0)

产生下一个迭代点:
x(1)=x(0)+α0d(0)

其中,步长为:
α0=argminα0f(x(0)+α0d(0))=g(0)Td(0)d(0)TQd(0)

再展开下一次迭代,搜索方向 d(0) d(1) 应该是关于 Q 共轭的。推广开来,在 k+1 词迭代中:
d(k+1)=g(k+1)+βkd(k),k=0,1,2

按照如下方式选择 βk , 可以使得 d(k+1) d(0),d(1),,d(k) 组成 Q 共轭方向:
βk=g(k+1)TQd(k)d(k)TQd(k)

共轭梯度法的算法步骤可以归纳如下:

  1. k=0 ,选择初始值: x(0)
  2. 计算 g(0)=f(x(0)) ,如果 g(0)=0 ,停止。否则: d(0)=g(0) .
  3. 计算 αk=g(k)Td(k)d(k)TQd(k)
  4. 计算 x(k+1)=x(k)+αkd(k)
  5. 计算 g(k+1)=f(x(k+1)) ,如果 g(k+1)=0 ,停止。
  6. 计算 βk=g(k+1)TQd(k)d(k)TQd(k)
  7. 计算 d(k+1)=g(k+1)+βkd(k)
  8. k=k+1 ,回到第 3 <script type="math/tex" id="MathJax-Element-10156">3</script>步。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值