5.29

完成工程数学实验一黄金分割法

1)请用0.618法求解优化问题:

 

的极小点和极小值(进退法确定初始区间),精度为10-6

(2)根据0.618法算法步骤编写Matlab的程序实现0.618搜索法;

(3)要求输出内容包括:极小点、极小值、每次迭代的abalak的值;

(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)

 

posted @ 2024-06-19 15:17  jais  阅读(10)  评论(0编辑  收藏  举报