【MATLAB】黄金分割算法实现单变量函数最优值求解

本文介绍了如何使用MATLAB的黄金分割算法来寻找单变量函数在单峰区间[a, b]的近似最小值。通过自定义函数与MATLAB内置工具箱的比较,展示了算法的准确性和一致性。" 84173488,7109636,SQL Server 解决阻塞与死锁问题,"['数据库管理', 'SQL', '故障排查', '数据库优化', '服务器监控']
摘要由CSDN通过智能技术生成
用黄金分割算法求单变量函数f(x)在单峰区间[a,b]上的近似极小点

函数实现:

function [i,s,phis,ds,dphi,G] = golds(phi, a,b,epsilon, delta)
% 函数功能:黄金分割法精确线搜索
% 函数思想:通过试探点函数值的比较,使包含极小点的搜索区间不断缩小。
% 输入参数:phi:目标函数;a、b:搜索区间的两个端点;
%           epsilon:自变量的容许误差; delta:函数值的容许误差

% 输出结果:i:迭代次数;s:近似极小点;phis:极小值;
%           ds:近似极小点的误差限;dphi:极小值的误差限;
%           G:ix4矩阵,第i行分别是a、p、q、b的第i次迭代值[ai,pi,qi,bi].

t = (sqrt(5)-1)/2;  % 0.618,区间长度的缩短率
h = b - a;
phia = feval(phi,a); phib = feval(phi, b);
p = a + (1 - t) * h; q = a + t * h;
phip = feval(phi, p); phiq = feval(phi, q);
i = 1; G(i, :) = [a, p, q, b];
while(abs(phib - phia) > delta) || (h > epsilon)
    if(phip <= phiq)
        b = q;phib = phiq; q = p; phiq = phip;
        h = b - a;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ThetaQing

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

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

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

打赏作者

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

抵扣说明:

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

余额充值