由上节我们得出的一个引理:
引理 在共轭方向算法中, 对于所有的k,0≤k≤n−1,0≤i≤kk,0≤k≤n−1,0≤i≤k 都有 :

g(k+1)Td(i)=0

\boldsymbol{g}^{(k+1)T}\boldsymbol{d}^{(i)}=0
由上可知: g(k+1)\boldsymbol{g}^{(k+1)}正交于由向量 d(0),d(1),…,d(k)\boldsymbol{d}^{(0)},\boldsymbol{d}^{(1)},\dots,\boldsymbol{d}^{(k)}张成的子空间中的任意向量。该引理可用于证明共轭方向法的一个很有意思的最优性性质。可以证明 f(x(k+1))f(\boldsymbol{x}^{(k+1)})不仅能够满足 f(x(k+1))=minαf(x(k)+αd(k))f(\boldsymbol{x}^{(k+1)}) = \min_{\alpha}f(\boldsymbol{x}^{(k)}+\alpha \boldsymbol{d}^{(k)}),而且还能满足

f(x(k+1))=minα0,α1,…,αkf(x(0)+∑i=0kαid(i))

f(\boldsymbol{x}^{(k+1)}) = \min_{\alpha_0,\alpha_1,\dots,\alpha_k}f(\boldsymbol{x}^{(0)}+\sum_{i=0}^k\alpha_i \boldsymbol{d}^{(i)})

换言之,如果记:

νk=x(0)+span[d(0),d(1),…,d(k)]

\nu_k=\boldsymbol{x}^{(0)} + span[\boldsymbol{d}^{(0)},\boldsymbol{d}^{(1)}, \dots, \boldsymbol{d}^{(k)}]
则有 f(x(k+1))=minx∈νkf(x)f(\boldsymbol{x}^{(k+1)}) = \min_{x \in \nu_k} f(\boldsymbol{x}).随着 kk的增大,子空间span[d(0),d(1),…,d(k)]span[\boldsymbol{d}^{(0)},\boldsymbol{d}^{(1)}, \dots, \boldsymbol{d}^{(k)}]不断扩张,直至充满整个 Rn\mathbb{R}^n(前提是它们是线性无关的)。因此,当 kk足够大时,x∗\boldsymbol{x}^{*}将位于 νk\nu_k中。基于此,以上结论有时也称为扩张子空间定理。

定义矩阵D(k)\boldsymbol{D}^{(k)}为:

D(k)=[d(0),d(1),…,d(k)]

\boldsymbol{D}^{(k)} = [\boldsymbol{d}^{(0)},\boldsymbol{d}^{(1)}, \dots, \boldsymbol{d}^{(k)}]
其中, d(i)\boldsymbol{d}^{(i)}为矩阵 D(k)\boldsymbol{D}^{(k)}的第 ii列。注意, x(0)+R(D(k))=νk\boldsymbol{x}^{(0)}+\mathcal{R}(\boldsymbol{D}^{(k)}) = \nu_k,同时,

x(k+1)=x(0)+∑i=0kαid(i)=x(0)+D(k)α

\boldsymbol{x}^{(k+1)} = \boldsymbol{x}^{(0)}+\sum_{i=0}^k\alpha_i \boldsymbol{d}^{(i)}\\ =\boldsymbol{x}^{(0)}+\boldsymbol{D}^{(k)}\boldsymbol{\alpha}
其中, α=[α0,α1,…,αk]T\boldsymbol{\alpha} = [\alpha_0,\alpha_1, \dots, \alpha_k]^T . 因此,

x(k+1)∈x(0)+R(D(k))=νk

\boldsymbol{x}^{(k+1)} \in \boldsymbol{x}^{(0)}+\mathcal{R}(\boldsymbol{D}^{(k)}) = \nu_k
对于任意向量 x∈νk\boldsymbol{x} \in \nu_k, 存在一个向量 a\boldsymbol{a},使得 x=x(0)+D(k)a\boldsymbol{x} = \boldsymbol{x}^{(0)}+\boldsymbol{D}^{(k)}\boldsymbol{a}.令 ϕk(a)=f(x(0)+D(k)a)\phi_k(\boldsymbol{a})=f(\boldsymbol{x}^{(0)}+\boldsymbol{D}^{(k)}\boldsymbol{a})可知 ϕk(a)\phi_k(\boldsymbol{a})是一个二次型函数,具有唯一的极小点。由链式法则可得:

Dϕk(a)=∇f(x(0)+D(k)a)D(k)

D\phi_k(\boldsymbol{a})=\nabla f(\boldsymbol{x}^{(0)}+\boldsymbol{D}^{(k)}\boldsymbol{a})\boldsymbol{D}^{(k)}
带入 α\boldsymbol{\alpha}可得:

Dϕk(α)=∇f(x(0)+D(k)α)TD(k)=∇f(x(k+1))TD(k)=g(k+1)TD(k)

D\phi_k(\boldsymbol{\alpha})=\nabla f(\boldsymbol{x}^{(0)}+\boldsymbol{D}^{(k)}\boldsymbol{\alpha})^T\boldsymbol{D}^{(k)}\\ =\nabla f(\boldsymbol{x}^{(k+1)})^T\boldsymbol{D}^{(k)}\\ =\boldsymbol{g}^{(k+1)T}\boldsymbol{D}^{(k)}
由定理可知, g(k+1)TD(k)=0T\boldsymbol{g}^{(k+1)T}\boldsymbol{D}^{(k)} = \boldsymbol{0}^{T}. 因此, α\boldsymbol{\alpha}能够满足函数 ϕk\phi_k的局部极小点的一阶必要条件,是 ϕk\phi_k的极小点,即:

f(x(k+1))=minaf(x(0)+D(k)a)=minx∈νkf(x)

f(\boldsymbol{x}^{(k+1)}) = \min_a f(\boldsymbol{x}^{(0)}+\boldsymbol{D}^{(k)}\boldsymbol{a})= \min_{\boldsymbol{x} \in \nu_k} f(\boldsymbol{x})
扩张子空间定理证明完成。
    共轭方向法的计算效率很高,但是,前提是必须能够给定一组 Q\boldsymbol{Q}共轭方向。幸运的是,存在一种方法,能够随着迭代进行, 逐一产生 Q\boldsymbol{Q}共轭方向,无需提前指定。

最优化学习笔记(十三)——基本共轭方向算法(扩张子空间定理)相关推荐

  1. 【算法学习笔记十三】随机算法

    按照字典中使用的定义,当事件不可预测地发生时,它被认为是随机的. 对象在没有任何计划的情况下被创建时称为随机. 根本的问题是,随机性是否真的存在,或者我们是否只使用这个术语来建模具有未知规律性的对象和 ...

  2. 【学习笔记】多项式相关算法

    [学习笔记]多项式相关算法 手动博客搬家: 本文发表于20181125 13:19:28, 原地址https://blog.csdn.net/suncongbo/article/details/844 ...

  3. 最优化学习笔记(五)——牛顿法(多维数据)

    在最优化学习系列中,第一次就说的是牛顿法,但是那是在一维搜索上的,它其实就是将函数ff在xx处利用泰勒公式展开,得到它的近似函数,进而求解最小值.本节内容主要说明牛顿法在多维数据上的迭代公式.最优化学 ...

  4. Apollo星火计划学习笔记——Apollo开放空间规划算法原理与实践

    文章目录 前言 1. 开放空间规划算法总体介绍 1.1 Task: OPEN_SPACE_ROI_DECIDER 1.2 Task: OPEN_SPACE_TRAJECTORY_PROVIDER 1. ...

  5. Polyworks脚本开发学习笔记(十三)-深入了解MACRO命令

    Polyworks脚本开发学习笔记(十三)-深入了解MACRO命令 MACRO命令中包含了很多宏脚本管理以及变量操作命令,交互操作命令等,是非常重要的一个模块. 数组和字符串操作 从数组中拿掉一个元素 ...

  6. Boost库学习笔记(二)算法模块-C++11标准

    Boost库学习笔记(二)算法模块-C++11标准 一.综述 Boost.Algorithm是一系列人通用推荐算法的集合,虽然有用的通用算法很多,但是为了保证质量和体积,并不会将太多通用算法通过审查测 ...

  7. OpenGL学习笔记(十三):将纹理贴图应用到四边形上,对VAO/VBO/EBO/纹理/着色器的使用方式进行总结

    原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/7919 ...

  8. 【学习笔记】目标检测算法总结

    [学习笔记]目标检测算法总结 说明 MacOS操作系统. MindNote思维导图软件. B站学习视频+原论文学习. 初学者 笔记 如有问题请多多指教 记录 Overfeat模型.R-CNN.Fast ...

  9. C++ Primer 学习笔记 第十章 泛型算法

    C++ Primer 学习笔记 第十章 泛型算法 336 find函数 #include <iostream> #include <vector> #include <s ...

最新文章

  1. 描述一下Spring框架的作用和优点?
  2. 使用jquery.qrcode生成二维码(转)
  3. OpenGL 统一变量uniform
  4. POJ3348-Cows【凸包,计算几何】
  5. 这可能是把Docker的概念讲的最清楚的一篇文章
  6. MariaDB数据库介绍之一、备份(mysqldump、lvm2快照、xtrabackup)
  7. 如何测试并调试基于 NDK 的 Android 应用
  8. 解决mac系统大小写切换异常问题
  9. 【POJ 3580】 SuperMemo
  10. 线性代数笔记(矩阵)
  11. 面包菜单收起和出现案例
  12. AVX-512指令的前世今生
  13. 关于 python 的 IDE
  14. 方舟服务器参数文件夹,方舟生存进化私人服务器怎么设置 私人服务器参数调整攻略...
  15. 数据结构与算法(python) 线性结构:无序列表 Unordered List以及链表
  16. mt7688 OpenWrt 编译
  17. 中国联通3G网络覆盖全国200余城市
  18. 2018软件工程复旦、南京大学、北航、中科院、中南大学保研经历分享
  19. Nokia6030电子元件的问题
  20. 2021-2027全球与中国虹膜识别机市场现状及未来发展趋势

热门文章

  1. PHP在哪里执行_php文件放在哪运行
  2. Python小白的数学建模课-18.最小生成树问题
  3. 数据分析(SQL)常见面试题:开窗函数
  4. 如何删除Win All的流氓程序文件
  5. mysql 修改数据库的数据库_如何更改MySQL数据库的数据库名
  6. php获取数组中的全部可以吗,php获取数组中所有值的方法
  7. mysql -- 死锁
  8. 从NetCore报错到MySql安全
  9. Luogu P1280 Niko的任务【线性dp】By cellur925
  10. 获得网页中元素的位置