[书籍]马昌风-最优化方法与MATLAB程序设计
书中例题编程详解

利用0.618法(黄金分割法)求极小值

思路图解:

MATLAB程序如下:

clc,clear;
epsilon=10^-4;
phi=@(x) x^2-sin(x);   %phi为目标函数a=0;b=1; %a,b,分别为区间(a,b)的端点
t=(sqrt(5)-1)/2;  %t为区间长度缩短率,即为每次迭代,区间缩短为原来的t倍
h=b-a;   %h为区间长度
delta=10^-4;  %delta为容许误差phia=feval(phi,a);   %phia为区间左端点函数值
phib=feval(phi,b);  %phia为区间左端点函数值p=a+(1-t)*h; %区间左端点取值表达式
q=a+t*h;  %区间右端点取值表达式phip=feval(phi,p); %计算经过一次缩短区间之后的左端点函数值
phiq=feval(phi,q); %计算经过一次缩短区间之后的右端点函数值
k=1;  %k为迭代次数
while(abs(phib-phia)>epsilon)|(h>delta)  %当区间长度大于容许误差时或%两区间端点函数值大于精度时,一直运行       if(phip<phiq)   %如果左区间函数值小于右区间函数值b=q;phib=phiq;q=a+t*(b-a);phiq=feval(phi,q);h=b-a;p=a+(1-t)*h;phip=feval(phi,p);elsea=p;phia=phip;p=q;phip=phiq;h=b-a;q=a+t*h;phiq=feval(phi,q);endk=k+1
end
ds=abs(b-a);     %ds为区间的误差
dphi=abs(phib-phia);  %dphi为函数值的误差
if(phip<phiq)s=p;    phs=phip;
elses=q;    phis=phiq;
end
s
ds
dphi

利用0.618法(黄金分割法)求极小值相关推荐

  1. matlab实现进退法、0.618法、牛顿法

    文章目录 实验一 一维最优化方法 实验目的及要求: 实验原理: 算法1:进退法 算法2:0.618法 算法3:牛顿法 实验内容(方法和步骤) 例题 题目1 编写程序实现进退法. 题目2 利用进退法求解 ...

  2. 最优化-(黄金分割法)0.618法

    0.618法求极小值 过程 代码 过程 (黄金分割法)0.618法求极小点. 给:f(x),范围[a,b],精度ε(无,则默认为0) 过程① x1 = b - 0.618 * (b - a) x2 = ...

  3. 0.618法C语言编程,c语言编程题--0.618法求最小值

    c语言编程题--0.618法求最小值0 题目: 1.函数f(x)=x+10/x,初始量a=2,b=10,c=0.3 2.步骤:(1)取a1=a+0.382*(b-a),b1=b+0.618*(b-a) ...

  4. 黄金分割法(0.618法)python实现

    黄金分割法的python实现 在准备学优化方法期末考试的时候拿到习题没有答案,就想写一个程序然后和自己算出来的答案对一下就写了个程序,考完试了留着也没用索性写一篇出来造福学弟学妹,黄金分割法通俗的讲就 ...

  5. 0.618方法matlab流程图,0.618法的matlab实现

    (3)从上述计算结果可以看出,利用 MATLAB 实现的黄金分割法,通过 14 次 迭代可以满足收敛精度要求,并且计算结果和理论结果基本一致,误差为 (1.0013) (1) 0....... 暂无评 ...

  6. 最优化方法——0.618法matlab实现

    一.基本思想 0.618法的基本思想是通过取试探点和进行函数值的比较,使包含极小点的搜索区间不断缩短,当区间长度缩短到一定程度时,区间上各点的函数值均接近极小值,从而各点可以看作为极小点的近似. 二. ...

  7. 0.618法matlab

    0.618法 建立golds.m文件 function [s,phis,k,G,E]=golds(phi,a,b,delta,epsilon) %输入:phi是目标函数,a,b是搜索区间的两个端点 % ...

  8. 【最优化】C++实现0.618法、Fibonacci法、二分法

    参考课本:最优化方法 - 孙文瑜等 根据课本P110算法3.2.1(0.618法计算步骤)编写C++代码,例题为P137第4题(1)(2) 0.618法代码 #include <iostream ...

  9. matlab e 精确到,matlab中用0.618法求minf(x)=e^(-x)+x^2在区间(0,1)上的极小值,精确到0.03....

    共回答了15个问题采纳率:86.7% clc clear all; elp=0.03; tao=0.618; N=fix(log(elp)/log(tao))+1; k=1; a(k)=0; b(k) ...

最新文章

  1. redisson get()数据报错,missing type id property ‘@class’
  2. cmd xcopy进行远程复制
  3. 《JavaScript入门经典》学习笔记1
  4. oracle订单,银科软件:Oracle ERP订单管理模块详细介绍
  5. Develop内部函数,持续更新
  6. CSS之两栏固定布局(一)
  7. 破五唯后,高校从“唯论文”变成了“唯纵向”?​
  8. java规定日期格式输出_Java格式化输出日期百分比时间等
  9. 关于socket组播和ssdp(二)
  10. 深入分析 iBATIS 框架之系统架构与映射原理【转】
  11. Python办公自动化 - 4 PDF办公自动化
  12. 解释stateless worker
  13. CodeSmith链接Oracle、MySQL数据库
  14. vs2017 c#代码生成期间遇到了错误,值不在预期的范围内
  15. 软件系统的复杂性,没有银弹,只有焦油坑
  16. 6月13日木叶下向量
  17. python中column什么意思_DataFrame属性和column有什么区别
  18. 英语语法:词法之动词不定式
  19. user()与current_user()
  20. 艾司博讯:拼多多拼单不想要了怎么退

热门文章

  1. 计算机绘制表格教案,word中插入表格教案
  2. 970万,看美女是如何炼成巨贪的!
  3. rk3328 android10 Debug串口打印信息
  4. 太阳的后裔--OST.3 This love这份爱
  5. 时序分解股票数据并部署在微信公众号上
  6. php判断无理数,如何快速判断一个数的开方是不是无理数?
  7. Jenkins中出现No valid crumb was included in the request
  8. Word论文引用自动更新
  9. matlab 的谱相减语音增强算法的研究,基于MATLAB的谱相减语音增强算法的研究
  10. Atmel Studio 编译no such file