5.29
完成工程数学实验一黄金分割法
1)请用0.618法求解优化问题:
的极小点和极小值(进退法确定初始区间),精度为10-6;
(2)根据0.618法算法步骤编写Matlab的程序实现0.618搜索法;
(3)要求输出内容包括:极小点、极小值、每次迭代的a、b、al、ak的值;
(4)按照模板撰写实验报告,要求规范整洁。
三、算法步骤、代码、及结果
1. 算法步骤
2. 代码
函数文件:
function [i,s,phis,ds,dphi,G]=golds(phi,a,b,epsilon,delta)
t=(sqrt(5)-1)/2;
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; 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
i=i+1;
G(i,:)=[a,p,q,b];
end
if(phip<=phiq)
s=p;
phis=phip;
else
s=q;
phis=phiq;
end
ds=abs(b-a);
dphi=abs(phib-phia);
脚本文件:
phi= @(x)x^2-x+6;
[i,s,phis,ds,dphi,G]=golds(phi,-1,2,1e-6,1e-6)