求助各位高手帮忙看看我的code!!感激涕零啊!!!
function f=nsllh(x)
close=xlsread('HW_3_Part2Data','#3','D3:D1257');
nvix=xlsread('HW_3_Part2Data','#3','H4:H1257');
alpha=zeros(1,1);beta=zeros(1,1);theta=zeros(1,1);gamma=zeros(1,1);
x=[alpha,beta,theta,gamma];
r=zeros(1254,1);
for i=1:1254
r(i+1,1)=log(close(i+1,1)/close(i,1));
end
sigma=var(r);
omega=sigma*(1-alpha*(1+theta^2)-beta);
npsigma=ones(1254,1);
npsigma(1,1)=sigma;
for i=1:1253
npsigma(i+1,1)=omega+alpha*(r(i,1)-theta*npsigma(i,1)^0.5)^2+beta*npsigma(i,1)+gamma*nvix(i,1)^2/252;
end
alpha=x(1);beta=x(2);theta=x(3);gamma=x(4);
for i=1:1254
nllh(i,1)=0.5*log(2*3.1415926)+0.5*log(npsigma(i,1))+0.5*(r(i,1)^2/npsigma(i,1));
end
f=sum(nllh);
另外nonlcon的code是:
function [c,ceq]=mycon(x)
alpha=zeros(1,1);beta=zeros(1,1);theta=zeros(1,1);
x=[alpha,beta,theta];
c=alpha*(1+theta^2)+beta-1;
ceq=[];
run出来显示:
x0=[0.04;0.5;2;0.07];
Optimization terminated: first-order optimality measure less
than options.TolFun and maximum constraint violation is less
than options.TolCon.
No active inequalities.
x =
0.0400
0.5000
2.0000
0.0700
fval =
-3.6963e+003
exitflag =
1
output =
iterations: 1
funcCount: 10
stepsize: 1
algorithm: 'medium-scale: SQP, Quasi-Newton, line-search'
firstorderopt: 0
cgiterations: []
message: [1x144 char]
lamda =
lower: [4x1 double]
upper: [4x1 double]
eqlin: [1x0 double]
eqnonlin: [1x0 double]
ineqlin: [1x0 double]
ineqnonlin: 0
??为什么会这样呢?fval已经改变了但是x不会变?而且iteration只有1.