登录
首页 » 算法 » 优化一个变量的函数

优化一个变量的函数

于 2022-01-26 发布 文件大小:3.21 kB
0 165
下载积分: 2 下载次数: 1

代码说明:

翻译 maninwest@Codeforge 作者:John D. Cook@CodeProject这里介绍一个算法,优化化带有一个变量的函数而不需要导数。通常,需要导数的方法稳定但是慢,不需要导数的方法快捷但是不稳定。这里实现的这个方法稳定且高效。这个方法开始是Richard Brent 实现的。 给定一个函数  f(x) 和一个区间l [a, b], 该方法是找出函数 f(x) 在 [a, b] 区间的最小值。该方法也可以用于找出最大值。要找出最大值,指向传递原函数的反函数。即 f(x) 的最大值出现在-f(x) 的最小值点。Brent 的方法比较稳定。也很容易使用。用户不需要提供导数函数。该方法为了稳定牺牲了一些效率,但是相比其他稳定的方法如黄金分割法,则更加快捷。使用函数这里给出的代码是一个 C++ 函数和使用此函数的示例项目。要在你自己的项目中使用,只需在 Brent.h.头文件中添加#include 即可。最小化函数的主要输入是一个模板化实参,一个函数对象实现目标函数最小化。目标函数必须使用签名 double operator()(double x)实现 Public 方法。例如,这里是一个用于计算函数 f(x) = -x exp(-x) 的函数对象类。 class foo { public: double operator()(double x) {return -x*exp(-x);} };代码需要函数对象而不是函数的主要原因是,需要在应用中优化的函数,除了函数实参外,还要依赖参数。函数对象可以有很多参数,它们在找到一个变量的结果函数最小值前固定。其他实参是函数需要找到最小值的区间的终点,偏差用于停止, 一个输出参数用

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • 项目实施的堆
    函数和过程: 1.Heapify 2.建堆 3.插入 4.提取最大 5.增加的关键 6.初始化 7.打印堆 从文件堆成 8.读取文本)
    2023-02-08 06:50:03下载
    积分:1
  • 基于奇异值分解的数字图像水印使用复数小波变换
    A 新鲁棒非盲图像水印的方法在本文中。所提出的方法执行通过奇异值分解 (SVD) 改性的复杂小波变换 (CWT) 域图像而连续小波变换提供了更高的容量比实小波域。改性的适当的子带,导致毫不逊色保留质量的水印。拟议的技术的附加好处是其 最常见的攻击的鲁棒性。分析和实验结果表明多改进的性能与纯方法的基于奇异值分解的混合方法 (例如 DWT-SVD 为近年最好基于奇异值分解计划)。
    2022-03-26 02:47:00下载
    积分:1
  • 3n+1的 acm程序设计大赛的练习题目
    3n+1的算法 acm程序设计大赛的练习题目-3n algorithm acm a program design contest entitled to practice
    2022-08-15 14:41:36下载
    积分:1
  • 组合数学的与程序设计
    组合数学的算法与程序设计-combination of mathematical algorithms and program design
    2023-07-02 17:00:05下载
    积分:1
  • uu编码&&解码
    uu encode and decode
    2023-08-07 01:25:03下载
    积分:1
  • 用几种规则控制倒立摆的模糊运动的程序
    用几种规则控制倒立摆的模糊运动的程序-Several rules of fuzzy control of inverted pendulum movement procedures
    2023-07-07 14:10:03下载
    积分:1
  • STM32F1摄像头定位(融合测试) 定位
    STM32F1摄像头定位算法(融合测试) 定位算法
    2022-02-28 09:18:24下载
    积分:1
  • 一种新的受限扩散池模型
    一种新的受限扩散凝聚模型--单向扩散凝聚模型DLUA,输入不同的参数可产生各种不同的图案,可作为辅助研究或教学演示。-a new pool of restricted diffusion model-- the proliferation of one-way model DLUA rally, importation of different parameters can produce a variety of designs, as a complementary research or teaching demonstration.
    2022-03-07 16:53:46下载
    积分:1
  • C写的宿舍管理系统
    用C语言实现了宿舍管理系统,包括用密码登录不同等级的界面(超级管理员、管理员、普通用户);用链表、数据结构实现基本信息的输入;用文件实现录入数据的存储及读取;链表相关的增加、删除、查询、修改、排序等功能的实现。适合C语言的初学者。
    2023-02-10 13:20:03下载
    积分:1
  • 背包问题的C++ 实现
    背包问题的 求解代码,自己用C++实现,里面包括0-1背包问题 和  单位质量的背包问题,包括如下几个关键的函数:void vwComp(Item*item,int n) ;void vwSort(Item*item,int n);int getMaxValue(Item*item,int n, int p,int cvs,int cws);double frackKnapsack(Item*item,int n,double *chs);void zeroOneKnapsack(Item*item,int n,int &fv,int &fw,int *fch)
    2022-10-14 21:55:03下载
    积分:1
  • 696518资源总数
  • 106164会员总数
  • 18今日下载