【MATLAB与机械设计】一维优化黄金分割算法

黄金分割算法是一种特殊的序列消去算法,黄金分割法的基本思想是:计算并比较插入的值的函数值,并且不断舍弃函数峰值旁边的一部分,进行对原有区间的消去,使其区间按等比例(0.618)等速缩短 ,(感觉是不是可以按更高的比例进行缩短,这样是不是更快)

1,黄金分割法迭代过程
在这里插入图片描述
2,黄金分割法的程序框图
在这里插入图片描述
3,MATLAB可运行程序

function [x,fx] = Golden_Section(f,a,b,exp)
%% 说明
%{
本函数用于黄金分割法精确函数极值的区间
其中f为输入的目标函数
a,b分别为初始区间的左右端点
exp为精度

调用方法:
clear; clc;
fun = @(x) ((1/4)*x^4-(2/3)*x^3-2*x^2-7*x+8);
[x,fx]=HJ(fun,3,4,0.05);
disp('函数的极小值点为:');
x
disp('函数的极小值为:');
fx

%}
%% 函数主体
rbd=0.618;
d=a+rbd*(b-a);
c=a+(1-rbd)*(b-a);
fc=f(c);
fd=f(d);
while abs(b-a)>=exp 
    if fc<fd
        b=d;
        d=c;
        fd=fc;
        c=a+(1-rbd)*(b-a);
        fc=f(c);
    end
    if fc>fd
        a=c;
        c=d;
        fc=fd;
        d=a+rbd*(b-a);
        fd=f(d);
    end
end
x=(a+b)/2;
fx=f(x);
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱读书的小丁同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值