function [xo,fo] = Opt_Quadratic(f,x,TolX,TolFun,MaxIter)
% 用三点二次插值法求f(x)最优解
%输出: xo为取最小值的点 fo为最小的函数值
if nargin < 5 %在函数体内获得实际输入的变量的个数
MaxIter =100; %最大迭代次数默认为100
end
if nargin < 4
TolFun= 1e-8; %函数值误差为1e-8
end
if nargin < 3
TolX = 1e-5; %自变量距离误差
end
%%%根据输入确定三点的初始值,并求出对应的函数值
if length(x) > 2
x012 = x(1:3);
else
if length(x) == 2
a = x(1);
b = x(2);
else
a = x-10; b = x+10;
end
x012 = [a (a + b)/2 b];
end
f012 = f(x012);
%%%%初始化三点值
x0 = x012(1);
x1 = x012(2);
x2 = x012(3);
f0 = f012(1);
f1 = f012(2);
f2 = f012(3);
%%%%%求出插值二项式的取最小值处的x3以及相应的最小值f3
nd =