0.618法matlab

0.618法
建立golds.m文件
function [s,phis,k,G,E]=golds(phi,a,b,delta,epsilon)
%输入:phi是目标函数,a,b是搜索区间的两个端点
% delta,epsilon分别是自变量和函数值的容许误差
%输出:s,phis分别是近似极小点和极小值,G是nx4矩阵
% 其第k行分贝时a,p,q,b的第k次迭代值[ak,pk,qk,bk]
% E=[ds,dphi],分别是s和phis的误差限
t=(sqrt(5)-1)/2;h=b-a;
phia=feval(phi,a);phib=feval(phi,b);
p=a+(1-t)h;q=a+th;
phip=feval(phi,p);phiq=feval(phi,q);
k=1;G(k,:)=[a,p,q,b];
while(abs(phib-phia)>epsilon)|(h>delta)
if(phip<phiq)
b=q;phib=phiq;q=p;phiq=phip;
h=b-a;p=a+(1-t)h;phip=feval(phi,p);
else
a=p;phia=phip;p=q;phip=phiq;
h=b-a;q=a+t
h;phiq=feval(phi,q);
end
k=k+1;G(k,:)=[a,p,q,b];
end
ds=abs(b-a);dphi=abs(phib-phia);
if(phip<=phiq)
s=p;phis=phip;
else
s=q;phis=phiq;
end
E=[ds,dphi];

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值