0.618法
function x=gold(a,b,fun,error)
lada=0.618;
myfun=fun;
x1=b-lada*(b-a);
x2=a+lada*(b-a);
f1=myfun(x1);
f2=myfun(x2);
while (b-a>error)
if f1>f2
a=x1;
x1=x2;
f1=f2;
x2=a+lada*(b-a);
f2=myfun(x2);
else
b=x2;
x2=x1;
f2=f1;
x1=b-lada*(b-a);
f1=myfun(x1);
end
end
t=-1:0.01:3;
y=myfun(t);
plot(t,y)
x=0.5*(a+b);
end
目标函数
function y=myfun(x)
y=x.*x-x+2;
end
在命令行窗口输入: