在MATLAB 命令中输入主函数
Syms t
f=t^4-t^2-2*t+5;
[x1,x2] = minJT(f,0,0.1)
进退法确定搜索区间函数文件minJT如下:
function [minx,maxx]= minJT(f,x0,h0,eps)
%目标函数: f ;
%初始点 : x0;
%初始步长: h0;
%精度 :esp;
%区间左端点 : minx;
%区间右端点: maxx;
format long;
if nargin ==3
esp =1.0e-6;
end
x1 = x0;
k = 0;
h = h0;
while 1
x4=x1+h; %试探歩
k=k+1;
f4=subs(f,findsym(f),x4);
f1=subs(f,findsym(f),x1);
if f4 < f1
x2=x1;
x1=x4;
f2=f1;
f1=f4;
h=2*h; %加大步长
else
if k ==1
h=-h; %反向搜索
x2=x4;
f2=f4;
else
x3=x2;
x2=x1;
x1=x4;
break ; %终止循环进行
end
end
end
minx = min (x1,x3);
maxx=x1+x3-minx;
format short ;