黄金分割法。0.618法。优选法。

以0.618^n的速率缩减区间,寻找最值点。

两点说明。

1. 当能明确目标函数是一个单峰函数的时候,

2. 当知道目标函数的极值点在哪个区间范围内的时候,

此方法非常有效。

昨天看招聘信息,第一条就是,天文地理、物理数学等烧脑专业优先。+_+

对于我们这种还不算特别烧脑的专业的人来说,凭空想可能有点难度。

不过拿一支笔在草稿纸上画画图,应该就可以知道怎么缩小区间了。

需要多用几个临时变量,e.g. x_low_try,较小的试探点,x_high_try,较大的试探点。

要得到f(x)的函数值,最好能另写一个函数,输入x,返回f(x),这样有助于代码实现。

%% 黄金分割法
% qcy
% 2016年12月22日23:43:40clear;
close all;
clc%%fun = @(x) x.^2 - 2 * x - 3; % 匿名函数x = -2:0.001:5;
f = x.^2 - 2*x - 3;
figure(1);
plot(x,f);
hold on;grid on;
title('f(x) = x^2 - 2x - 3');SEARCH_MAX = 1e4;
X_LEN_EPS = 1e-4;
count = 0;x_low = -2;
x_high = 5; range = x_high - x_low;x_low_try = x_low + (1-0.618) * range; % 右试探点
x_high_try = x_low + 0.618 * range; % 左试探点while count X_LEN_EPS)y_low_try = fun(x_low_try);y_high_try = fun(x_high_try);if y_low_try < y_high_try x_high = x_high_try; % 更新右端点,左端点不动range = x_high - x_low; % 更新x的搜索范围x_low_try = x_low + (1-0.618) * range; % 更新试探点x_high_try = x_low + 0.618 * range; % 更新试探点elsex_low = x_low_try; % 更新右端点,左端点不动range = x_high - x_low; % 更新x的搜索范围x_low_try = x_low + (1-0.618) * range; % 更新试探点x_high_try = x_low + 0.618 * range; % 更新试探点endplot( (x_high + x_low)/2 , fun((x_high + x_low)/2) ,'r.','markersize',7) %标记当前的位置drawnow;pause(0.2);count = count + 1;endx_min = (x_high + x_low)/2 ;
y_min = fun(x_min);plot(x_min,y_min,'mp','markersize',7) %标记当前的位置

经典算法(2):黄金分割法(Gold)相关推荐

  1. 数据挖掘的一些经典算法

    数据挖掘能做以下七种不同事情 (分析方法): 数据挖掘能做以下七种不同事情 · 分类 (Classification) · 估计(Estimation) · 预测(Prediction) · 相关性分 ...

  2. 经典算法研究系列:二、Dijkstra 算法初探

    经典算法研究系列:二.Dijkstra 算法初探  July   二零一一年一月 ====================== 本文主要参考:算法导论 第二版.维基百科. 写的不好之处,还望见谅. 本 ...

  3. 经典算法书籍推荐以及算法书排行【算法四库全书】

    经典算法书籍推荐以及算法书排行[算法四库全书] 作者:霞落满天   https://linuxstyle.blog.csdn.net/    https://blog.csdn.net/21aspne ...

  4. 经典算法题每日演练——第六题 协同推荐SlopeOne 算法

    原文:经典算法题每日演练--第六题 协同推荐SlopeOne 算法 相信大家对如下的Category都很熟悉,很多网站都有类似如下的功能,"商品推荐","猜你喜欢&quo ...

  5. 白话经典算法系列之七 堆与堆排序

     堆排序与高速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法.学习堆排序前,先解说下什么是数据结构中的二叉堆. 二叉堆的定义 二叉堆是全然二叉树或者是近似全然二叉树. 二叉堆满 ...

  6. 免费技术直播:唐宇迪带你一节课了解机器学习经典算法

    常常有小伙伴在后台反馈:机器学习经典算法有哪些? 自学难度大又没有效果,该怎么办? CSDN为了解决这个难题,联合唐宇迪老师为大家带来了一场精彩的直播[一节课掌握机器学习经典算法-线性回归模型].本次 ...

  7. 一文了解迁移学习经典算法

    来源 | linolzhang的CSDN博客 作者 | linolzhang ▌一. 了解迁移学习 迁移学习(Transfer Learning)目标是将从一个环境中学到的知识用来帮助新环境中的学习任 ...

  8. 调包侠福音!机器学习经典算法开源教程(附参数详解及代码实现)

    Datawhale 作者:赵楠.杨开漠.谢文昕.张雨 寄语:本文针对5大机器学习经典算法,梳理了其模型.策略和求解等方面的内容,同时给出了其对应sklearn的参数详解和代码实现,帮助学习者入门和巩固 ...

  9. 密码学中经典算法及应用

    一.加密算法理论基础 1.1 背景 密码学相关安全技术在整个信息技术领域的重要地位无需多言.如果没有现代密码学和信息安全的研究成果,人类社会根本无法进入信息时代. 实际上,密码学和安全领域所涉及的知识 ...

  10. PMVS:多视图匹配经典算法

    导语:Multi-View Stereo(MVS)多视图立体匹配与三维重建的任务是:以已知内外参数的多幅图像(SfM的结果)为输入,重建出真实世界中物体/场景的三维模型. 本文作者提出了PMVS的经典 ...

最新文章

  1. (NO.00001)iOS游戏SpeedBoy Lite成形记(二十二)
  2. java的知识点17——java.util.Arrays类、多维数组
  3. [scala-spark]7. list 与 map
  4. 如何判断一个SAP CRM UI能否被扩展
  5. neo4j导入两个文件_Neo4j:找到两个纬度/经度之间的中点
  6. quartz基本使用
  7. android显示过程,Android 桌面加载图标过程分析
  8. mysql日志文件架构_mysql日志文件
  9. 免费Ebook 分享《Silverlight for Windows Phone Toolkit in Depth》
  10. 米线店结账程序 装饰着模式_云南大学《设计模式》实验报告2_装饰者模式.doc...
  11. mac本在终端查看本地ip
  12. 一切不能拌饭的菜都是耍流氓
  13. 让学前端不再害怕英语单词(三)
  14. c# 计算圆锥的体积_用c#编写一个程序计算出球、圆柱和圆锥的表面积和体积。...
  15. Serverless 开发前端初尝试
  16. 支持Python3、JavaScript、Shell、TypeScript 的定时任务管理面板项目
  17. 前端体系结构知识概括
  18. 看到一个描述性弹性域窗口怎么去找此弹性域段的定义
  19. Google在东京搬出了所有的AI产品和技术,你知道哪个? | 精选
  20. mac 装 Flash Player的时候别忘记装 PPAPI插件版本的

热门文章

  1. 阿里云服务器远程桌面连接
  2. VMware 17 Pro安装(升级)
  3. remosaic插值算法_图像插值算法及其实现
  4. 推荐一个免费下matlab代码的网站
  5. Unity触发检测和碰撞检测
  6. OpenCV笔记:模板匹配 cv2.matchTemplate()、cv2.minMaxLoc() 与 绘制矩形 cv2.rectangle() 方法介绍
  7. 【nginx】nginx的使用
  8. 浅谈一下汽车行业中的OTA/FOTA/SOTA
  9. 第3周课件-全网最详细的ORB-SLAM2精讲
  10. 深度学习中常见的损失函数(L1Loss、L2loss)