以下是使用MATLAB编写黄金分割法求解 f ( x ) = x 2 + 2 x f(x)=x^2+2x f(x)=x2+2x在区间 [ − 3 , 5 ] [-3,5] [−3,5]上的最小值的代码:

function [xmin,fmin] = goldenSectionMethod(f,a,b,tol)
% 黄金分割法求解函数f在区间[a,b]上的最小值
% 输入:
%   f - 函数句柄,指向要优化的目标函数
%   a, b - 区间[a,b],需要满足a<b
%   tol - 迭代精度,默认值为1e-6
% 输出:
%   xmin - 最小值的横坐标
%   fmin - 最小值if nargin < 4tol = 1e-6;
end% 黄金分割比例
phi = (1 + sqrt(5)) / 2;% 初始化
s = b - phi * (b-a);  % 第一步
t = a + phi * (b-a);  % 第一步
fs = f(s); ft = f(t); % 第一步
iter = 0;while abs(b-a) > toliter = iter + 1;if fs < ftb = t;t = s;s = b - (t-a);ft = fs;fs = f(s);elsea = s;s = t;t = a + (b-t);fs = ft;ft = f(t);end
endxmin = (a+b)/2;
fmin = f(xmin);disp(['迭代次数:', num2str(iter)]);end

我们在主程序中调用该函数,并可视化优化过程:

% 求解f(x)在[-3,5]上的最小值
f = @(x) x^2 + 2*x;
a = -3;
b = 5;% 应用黄金分割法
tic;
[xmin,fmin] = goldenSectionMethod(f,a,b);
toc;% 作图
x = linspace(a,b,1000);
y = arrayfun(f,x);
figure;
plot(x,y,'LineWidth',2);
hold on;
plot(xmin,fmin,'r*','MarkerSize',10);
grid on;
xlabel('x');
ylabel('f(x)');
title(['f(x)=x^2+2x在[',num2str(a),',',num2str(b),']上的黄金分割法优化']);
legend('函数曲线',['最小点(',num2str(xmin),',',num2str(fmin),')']);

在运行上述代码后,我们可以得到如下的优化结果:

迭代次数:18
Elapsed time is 0.000621 seconds.

同时也可以得到如下的图像,展示了优化过程:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YICxmkN9-1681116905370)(https://cdn.nlark.com/yuque/0/2021/png/151482/1627456468342-061f1ade-72db-49c0-a54a-89e6c2b6ffdc.png)]

从图像和输出结果中可以看出,使用黄金分割法可以在迭代次数不多的情况下快速得到 f ( x ) = x 2 + 2 x f(x)=x^2+2x f(x)=x2+2x的最小值 x = − 1 x=-1 x=−1。什么? 请问有什么需要我帮忙继续的吗?

MATLAB编写黄金分割法相关推荐

  1. matlab三点确定抛物线,[转]matlab编写的进退法,黄金分割法,抛物线法(二次插值法),wolfe不精确一维搜索...

    这是我最优化方法课程的编程作业,贴来和大家分享,后续会继续发来一些最优化的程序.. 以下程序由matlab编写 程序简介 jintuifa.m 进退法,用于确定下单峰区间.根据最优化方法(天津大学出版 ...

  2. matlab用进退法写程序,matlab编写的进退法,黄金分割法,抛物线法(二次插值法),wolfe不精确一维搜索...

    这是我最优化方法课程的编程作业,贴来和大家分享,后续会继续发来一些最优化的程序.. 以下程序由matlab编写 程序简介 jintuifa.m 进退法,用于确定下单峰区间.根据最优化方法(天津大学出版 ...

  3. matlab教程lqg函数与收敛速度,科学网—Matlab编写由加速度积分得到速度和位移函数 - 王德才的博文...

    研究中经常会用到将加速度数据积分成速度和位移,对前几年编写的程序重新进行了改写.为了测试和验证peer2acc函数.dirFolder函数和acc2vd函数,编写了一个简单的测试程序 acc2vd函数 ...

  4. matlab编写识别手写数字_用于图像识别的五大最佳编程语言!

    这段时间垃圾分类相关小程序.APP的上线,让图像识别又一次进入人们的视线,我国图像识别技术在全世界都排在前列. 再此之前,就已经有很多技术运用到了图像识别,支付宝的刷脸支付.酒店刷脸进门.淘宝拍图识别 ...

  5. matlab 高斯迭代代码_用Matlab编写你的第一个有限元_《数值计算与程序设计》系列课程...

    本课主要分析了有限元的基本理论, 不同于其他学习资料的是本文从数学的角度重新阐述了有限元分析的基本步骤,如通解与特解的讲解,并以一个偏微分方程实例,从基础插值出发,详细地讲解了有限元数学推导的每一步过 ...

  6. matlab heaviside,Matlab编写的Lyapunov指数计算程序汇总.doc

    Matlab编写的Lyapunov指数计算程序汇总 matlab编写的Lyapunov指数计算程序汇总申明:以下各程序为个人在网络上收集的Lyapunov指数计算程序,未经过验证,不保证程序的正确性和 ...

  7. matlab浊音段和清音段,基于Matlab编写的语音端点检测1

    wavread 基于Matlab编写的语音端点检测 专业: 班级: 姓名: 指导教师: 2011年6月18日 一.实验目的 1.学会MATLAB的使用,掌握MATLAB的程序设计方法: 3.掌握语音处 ...

  8. matlab编写扫雷,【matlab编程】Matlab版扫雷

    我发现有些人平常闲着的时候会玩window自带的游戏,其中最常见的就是扫雷和纸牌.本来想用matlab编写全自动扫雷程序用来作弊,可是后来发现扫雷问题是NP完全问题(正如:旅行商NP难问题一样不能被解 ...

  9. matlab加速度转化为位移,科学网—Matlab编写由加速度积分得到速度和位移函数 - 王德才的博文...

    研究中经常会用到将加速度数据积分成速度和位移,对前几年编写的程序重新进行了改写.为了测试和验证peer2acc函数.dirFolder函数和acc2vd函数,编写了一个简单的测试程序 acc2vd函数 ...

最新文章

  1. 吉林大学不如温州大学,泰晤士最新世界大学排名惹争议
  2. 清华团队将Transformer用到3D点云分割上后,效果好极了
  3. python散点图点的大小-Python散点图。 标记的大小和样式
  4. 6.2 K-Means 算法步骤-机器学习笔记-斯坦福吴恩达教授
  5. Spring Boot参数校验以及分组校验的使用
  6. Java黑皮书课后题第3章:*3.34(几何:线段上的点)编程练习题3.32显示了如何测试一个点是否在一个无限长的直线上。修改3.32测试一个点是否在一个线段上。编写程序,输入三个点坐标,显示在否线段
  7. mysql char和varchar_MySQL char与varchar的差异
  8. 前端学习(219):css伪类选择器
  9. java numberformat 方法_Java NumberFormat parse()用法及代码示例
  10. 6内置数据结构_set
  11. C++工作笔记-对static_cast的进一步认识(强制转换改变内存,并且删除存在的问题)
  12. [BZOJ1135][P3488][POI2009]LYZ[线段树+Hall定理]
  13. jquery环形3D立体旋转特效
  14. 证明人工智能的数据只要足够多,就可以接近理想效果
  15. 史上最拉风年货?苏宁门店私人飞机开售 网友:这个真香不了吧
  16. Spring Boot 2 快速教程:WebFlux Restful CRUD 实践(三)
  17. 多线程下的单例模式你真的了解吗?
  18. MVC之Ajax如影随行
  19. 网站安全测试报告模板
  20. php制作单位换算,在线单位换算器

热门文章

  1. SSO单点登录-分布式系统实战
  2. Docker Swarm学习教程【转载】
  3. 网络——VRRP、浮动路由(备份路由)
  4. 1]解决java.util.concurrent.RejectedExecutionException
  5. mxgraph进阶 三 Web绘图——mxGraph项目实战 精华篇
  6. 《OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks》翻译
  7. MVC5 + EF6 + Bootstrap3 (14) 分部视图PartialView
  8. 【日拱一卒行而不辍20221010】自制操作系统
  9. 海量数据去重之SimHash算法简介和应用
  10. PPT导入视频裁剪后,如何裁剪后的视频另存为保存下来?