用lsqcurvefit做非线性二乘估计参数,matlab程序总是出错,希望大神帮忙!!!下面是程序:
function f=curvefun1(x,S0,K,r,T)
z1=1/(x(4)*sqrt(T))*(log(S0/K)+(r+x(4)^2/2)*T);
z2=1/(x(4)*sqrt(T))*(log(S0/K)+(r-x(4)^2/2)*T);
fai1=1/sqrt(2*pi())*exp(z1^2/2);
fai2=1/sqrt(2*pi())*exp(z2^2/2);
deta1=int(fai,-inf,z1);
deta2=int(fai2,-inf,z2);
f=S0*deta1-exp(-r*T)*K*deta2+x(1)*fai1*S0*sqrt(T)/x(4)+x(2)*fai1*(-x(4)*sqrt(T)-z1)*S0/x(4)^2+x(3)*fai1*(z1^2+3*x(4)*sqrt(T)*z1+2*x(4)^2*T-1)*S0/(x(4)^3*sqrt(T));
end
调用该函数
[x,resnorm]=lsqcurvefit(@curvefun1,[-0.0431 0.0013619 0.0001321 0.31],[S0;K;r;T],result);
错误:
Error using curvefun1 (line 2)
Not enough input arguments.
Error in lsqcurvefit (line 203)
initVals.F = feval(funfcn_x_xdata{3},xCurrent,XDATA,varargin{:});
Caused by:
Failure in initial user-supplied objective function evaluation. LSQCURVEFIT cannot continue.