确定搜索区间的一维搜索算法

求多元函数 f(x) 的最优解通常采用迭代的方法:

  1. 在可行域内任取一点 x0作为初始点,从 x出发,按照一定的方法,一次找到 x1,x2,x3,…,xn,…, 使得某个xn为函数 f(x) 的最优解,或者点列 x1,x2,… 收敛到函数 f(x) 的最优解。在这个过程中,我们希望点列满足 f(xk+1) ≤ f(xk) ,即在点列上 f(x) 是下降的,这就是所谓的下降算法。
  2. 为求函数的最小值点,通常分两步进行:首先确定函数的搜索区间;然后不断缩短搜索区间,直至区间缩短到一点为止。下面介绍第一种搜索区间的方法---成功失败法。

一.成功-失败法

设函数 f(x) 是R1上的单峰函数,∀x0R,步长 h>0。

(1)若 f(x0) > f(x0+h) ,则当 f(x0+h) > f(x0+3h) 时,步长加倍,向前推进。此时令 x0=x0+h , h=2h ,重新开始搜索;否则得搜索区间[a,b]=[x0,x0+3h]。

(2)若 f(x0) = f(x0+h),则得搜索区间 [a,b] = [x0,x0+h]。

(3)若 f(x0) < f(x0+h),则缩小步长,向后转,小步后退,即令 x0=x0+h ,h= -h/4 ,重新开始搜索。

根据以上思想,确定搜索区间的成功-失败法计算框图如下:

下面我们以一道例题为例说明成功-失败法在 C++ 中的实现:

例:编写成功-失败法的计算程序确定函数 f(x)=x3-27x+10 的最小值的一个搜索区间,初始点取 x0=4.5 ,初始步长取 h=0.5 。

这里是在 Dev 编译器中实现编程的,具体代码如下:

程序运行结果如下:

以上就是成功失败法的具体样例,由于作者水平有限,希望发现不当之处的朋友及时指正,谢谢!

基于C++的成功-失败法演示的更多相关文章

  1. 【原创】NIO框架入门(二):服务端基于MINA2的UDP双向通信Demo演示

    前言 NIO框架的流行,使得开发大并发.高性能的互联网服务端成为可能.这其中最流行的无非就是MINA和Netty了,MINA目前的主要版本是MINA2.而Netty的主要版本是Netty3和Netty ...

  2. 【原创】NIO框架入门(一):服务端基于Netty4的UDP双向通信Demo演示

    申明:本文由作者基于日常实践整理,希望对初次接触MINA.Netty的人有所启发.如需与作者交流,见文签名,互相学习. 学习交流 更多学习资料:点此进入 推荐 移动端即时通讯交流: 215891622 ...

  3. socket异步通信-如何设置成非阻塞模式、非阻塞模式下判断connect成功(失败)、判断recv/recvfrom成功(失败)、判断send/sendto

    socket异步通信-如何设置成非阻塞模式.非阻塞模式下判断connect成功(失败).判断recv/recvfrom成功(失败).判断send/sendto 博客分类: Linux Socket s ...

  4. InstallShield: 1628 完成基于脚本的安装失败

    问题: 第一次卸载程序失败,以后每次卸载出现1628 完成基于脚本的安装失败,使用安装包打开也会出现相同问题. 原因: 首先检查安装包是否出错,然后检查卸载脚本是否出错. InstallShield程 ...

  5. laravel基于Bootstrap的成功和失败的提示信息和验证提示信息

    message.blade.php <!-- 成功提示框 --> @if(Session::has("success")) <div class="al ...

  6. zabbix 添加主机成功失败判断

    zabbix 成功添加后: $VAR1 = bless( { 'version' => 0, 'content' => { 'jsonrpc' => '2.0', 'id' => ...

  7. 利用ExecuteMultipleRequest来批量导入数据,成功的成功失败的失败,并生成导入结果文件

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  8. 【安全性测试】解决关于appscan基于登录会话检测失败问题

    有些问题久了忽然就想通怎么解决了,很神奇.这次要说的是,关于appscan无法检测到会话的问题,因为在百度上一直找不到相关的解决方法,这个问题困扰了我很久,今天终于找到方法解决了! 日常配置扫描内容: ...

  9. C / C ++ 基于梯度下降法的线性回归法(适用于机器学习)

    写在前面的话: 在第一学期做项目的时候用到过相应的知识,觉得挺有趣的,就记录整理了下来,基于C/C++语言 原贴地址:https://helloacm.com/cc-linear-regression ...

随机推荐

  1. [数]补题ver.

    上次补题好像把两次训练混在一起了,总之先按时间顺序补完这一次|ू・ω・` ) HDU-6301 不会的东西不能逃避.jpg 红小豆非常讨厌构造题,因为非常不会,并且非常逃避学习这类题,因为总也搞不清楚 ...

  2. 一款堪称完美的编程字体Source Code Pro

    对于程序员来说,好的字体应该满足的基本条件: 字母和数字易于分辨,如: 英文字母o 和 阿拉伯数字 0 ,或者 英文字母 l 和 阿拉伯数字 1 ,两个单引号 '' 和双引号 ”. 字体等宽,保持对齐 ...

  3. mvc route .html 后缀 404

    <system.webServer>    <validation validateIntegratedModeConfiguration="false" /&g ...

  4. HFun.快速开发平台(五)=》自定义系统数据选择

    本篇介绍HFun.快速开发平台的另一项系统常用功能:系统数据或参数选择,主要应用在表单录入中信息的选择,如类别,编号等.先贴出本系统实现的页面效果: 如上图所示,系统中将参数的选择统一展现为该方式,开 ...

  5. C#安装Telnet

    1.打开电脑控制面板: 2.“查看方式”改成小图标: 3.点击“程序和功能”: 4.在左侧选择“启用或关闭Windows功能”: 5.选择“Telnet服务器”.Telnet客户端: 6.点击“确定” ...

  6. bash循环

    bash脚本-循环02   bash脚本编程:循环 执行流程: 1.顺序执行 2.选择执行:if 3.循环执行:for,while,until 1.循环执行的条件 进入条件: for:列表元素非空 w ...

  7. 60行python代码分析2018互联网大事件

    2018年是改革开放四十周年,也是互联网发展的重要一年.经历了区块链,人工智能潮的互联网行业逐渐迎来了冬天.这一年里有无数的事件发生着,正好学了python数据处理相关,那么就用python对18年的 ...

  8. C# 温故之.NET 异步

    Bitter Coffee的温故之.NET 异步 相当经典(请允许我用经典两字),读了好几遍,留存.

  9. ;html5斜体字

    font-style:italic; italic|oblique|normal 依次倾斜,越来越邪:

  10. 2017年4月28日16:40:40 log

    //TODO order  CreateOrderServiceHandler  generateManagementCustomer 子活动名称和uid