外推内插法代码
// 外推内插法
function [a,b]=JinTui(f,x0,h0)
%f为函数
%x0为初始点
%h0为初始步长
x1=x0;
x2=x1+h0;
i=1;
if f(x2) < f(x1) %下降沿,前进运算
h=2*h0;
x3=x2+h;
while f(x3) < f(x2) %迭代过程
h=2*h;%步长翻倍
x1=x2;
x2=x3;
x3=x3+h;
end
%x1,x3即为所求区间
a=x1;
b=x3;
%进一步缩小,在x2和x3之间插入一点x4
x4=(x2+x3)/2;
if f(x4)<f(x2)
a=x2;
else
b=x4;
end
else %上升沿,后退运算
x1=x0+h0;
x2=x0;
h=-1*h0; %改变方向
x3=x0+h;
while f(x3) < f(x2) %迭代过程
h=2*h;
x1=x2;
x2=x3;
x3=x3+h;
end
%x1,x3即为所求区间
a=x3
b=x1
%进一步缩小,在x3和x2之间插入一点x4
x4=(x2+x3)/2;
if f(x4)<f(x2)
b=x2;
else
a=x4;
end
end
end