基于C++的成功-失败法演示
确定搜索区间的一维搜索算法
求多元函数 f(x) 的最优解通常采用迭代的方法:
- 在可行域内任取一点 x0作为初始点,从 x0 出发,按照一定的方法,一次找到 x1,x2,x3,…,xn,…, 使得某个xn为函数 f(x) 的最优解,或者点列 x1,x2,… 收敛到函数 f(x) 的最优解。在这个过程中,我们希望点列满足 f(xk+1) ≤ f(xk) ,即在点列上 f(x) 是下降的,这就是所谓的下降算法。
- 为求函数的最小值点,通常分两步进行:首先确定函数的搜索区间;然后不断缩短搜索区间,直至区间缩短到一点为止。下面介绍第一种搜索区间的方法---成功失败法。
一.成功-失败法
设函数 f(x) 是R1上的单峰函数,∀x0∊R1 ,步长 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++的成功-失败法演示的更多相关文章
- 【原创】NIO框架入门(二):服务端基于MINA2的UDP双向通信Demo演示
前言 NIO框架的流行,使得开发大并发.高性能的互联网服务端成为可能.这其中最流行的无非就是MINA和Netty了,MINA目前的主要版本是MINA2.而Netty的主要版本是Netty3和Netty ...
- 【原创】NIO框架入门(一):服务端基于Netty4的UDP双向通信Demo演示
申明:本文由作者基于日常实践整理,希望对初次接触MINA.Netty的人有所启发.如需与作者交流,见文签名,互相学习. 学习交流 更多学习资料:点此进入 推荐 移动端即时通讯交流: 215891622 ...
- socket异步通信-如何设置成非阻塞模式、非阻塞模式下判断connect成功(失败)、判断recv/recvfrom成功(失败)、判断send/sendto
socket异步通信-如何设置成非阻塞模式.非阻塞模式下判断connect成功(失败).判断recv/recvfrom成功(失败).判断send/sendto 博客分类: Linux Socket s ...
- InstallShield: 1628 完成基于脚本的安装失败
问题: 第一次卸载程序失败,以后每次卸载出现1628 完成基于脚本的安装失败,使用安装包打开也会出现相同问题. 原因: 首先检查安装包是否出错,然后检查卸载脚本是否出错. InstallShield程 ...
- laravel基于Bootstrap的成功和失败的提示信息和验证提示信息
message.blade.php <!-- 成功提示框 --> @if(Session::has("success")) <div class="al ...
- zabbix 添加主机成功失败判断
zabbix 成功添加后: $VAR1 = bless( { 'version' => 0, 'content' => { 'jsonrpc' => '2.0', 'id' => ...
- 利用ExecuteMultipleRequest来批量导入数据,成功的成功失败的失败,并生成导入结果文件
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
- 【安全性测试】解决关于appscan基于登录会话检测失败问题
有些问题久了忽然就想通怎么解决了,很神奇.这次要说的是,关于appscan无法检测到会话的问题,因为在百度上一直找不到相关的解决方法,这个问题困扰了我很久,今天终于找到方法解决了! 日常配置扫描内容: ...
- C / C ++ 基于梯度下降法的线性回归法(适用于机器学习)
写在前面的话: 在第一学期做项目的时候用到过相应的知识,觉得挺有趣的,就记录整理了下来,基于C/C++语言 原贴地址:https://helloacm.com/cc-linear-regression ...
随机推荐
- flask第一章 flask启动 路由视图 FlaskRequest jinja2 FlaskSession
一.简单了解flask web框架 优点: 小而精,组件只有session,第三方机构强烈支持flask,极其简单 缺点: 由于第三方软件的关系,稳定性相对较差,flask-session 扩展知识: ...
- 浅谈redis的HyperLogLog与布隆过滤器
首先,HyperLogLog与布隆过滤器都是针对大数据统计存储应用场景下的知名算法. HyperLogLog是在大数据的情况下关于数据基数的空间复杂度优化实现,布隆过滤器是在大数据情况下关于检索一个元 ...
- JavaScript常用数组操作方法,包含ES6方法
一.concat() concat() 方法用于连接两个或多个数组.该方法不会改变现有的数组,仅会返回被连接数组的一个副本. var arr1 = [1,2,3]; var arr2 = [4,5]; ...
- python 常用网站
https://www.tutorialgateway.org/python-tutorial/
- 解决spring3升级到spring4后jackjson报错
1.这里说的是基于spring+springmvc+hibernate框架(其实跟持久层框架也没关系) 2.首先是springmvc的配置,处理json数据都会用到的.第5行是spring-4.x的写 ...
- hadoop管理命令
-help 功能:输出这个命令参数手册 -ls 功能:显示目录信息 示例: hadoop fs -ls hdfs://hadoop-server01:9000/ 备注:这些参数中,所有的hdfs ...
- Tensorflow实战系列之四:
这个是第四篇,打算写一些语义分割的内容实战.
- shell_base
1.使用if_then语句if command then commands fi 先运行if后面的命令,如果命令的退出状态是0(成功执行命令),就将执行then后面,fi前面的所有命令.否则就跳到fi ...
- 《A Knowledge-Grounded Neural Conversation Model》
abstract 现在的大多数模型都可以被应用在闲聊场景下,但是还没有证据表明他们可以应用在更有用的对话场景下.这篇论文提出了一个知识驱动的,带有背景知识的神经网络对话系统,目的是为了在对话中产生更有 ...
- python模块之_正则 re_configparser_logging_hashlib
正则表达式的内容放在最下面了 configparser 模块: #!/usr/bin/env python # coding:utf-8 import configparser # 专门用于操作配置文 ...