www.gusucode.com > 《图像配准技术及其Matlab编程实现》--源码程序 > 《图像配准技术及其Matlab编程实现》/match/ParabolicInterpolationMethod.m

    function [minFx,minX]=ParabolicInterpolationMethod(a,b)

%参数:a:初始搜索区间
%     b:初始搜索区间
%     minFx:函数最小值
%     minX:最小值对应点
%功能:利用抛物线插值法搜索目标函数的最小值

Epsilon=10^-10;
IterTimes=100;
if a>b
    temp=a;
    a=b;
    b=temp;
    
end
v=a;
w=b;
x=0.5*(b-a);
fx=F(x);
fv=F(v);
fw=F(w);
y(1)=x;
for iter=1:IterTimes
    r=(x-w)*(fx-fv);  %构造抛物线拟合
    q=(x-v)*(fx-fw);
    p=(x-v)*q-(x-w)*r;
    q=2*(q-r);
    d=p/(q+eps);
    u=x-d;
    fu=F(u);
    if fu<=fx
        x=u;
        fx=fu;
        if u<=x
            w=x;
            fv=fx;
        else
            v=x;
            fv=fx;
        end
    end
    y(iter+1)=x;
    if abs(y(iter+1)-y(iter))<=Epsilon
        break;;
    end
end

minX=x;
minFx=fx;

function fx=F(x)
   fx=(x-2.98765)^2;