下面这个程序运行后报错,错误显示没有定义y,不知道怎么回事,请各位高手指教!谢谢了!
图中是我要遍的程序,图中的函数 f 和程序里面的 f 不是一回事,图中f=sum_{i=1-n} {log(1+lambda^T*(x_i - mu))}
经验证,下面程序中函数 f 没有错
function [F1,F2,F3]=f(x,mu,lambda)w1=x-mu;
w2=1+lambda.*(x-mu);
F1=log(w2);
F2=w1./w2;
F3=-w1.*w1./w2;
x=normrnd(0,1,10,1);
lambda=0; k=0; gamma=1; mu=0;
while (abs(y)<10^-8)
[F1,F2,F3]=f(x,mu,lambda);
y1=sum(F1);
y2=sum(F2);
y3=sum(F3);
y=inv(y3)*y2;
delta=gamma*y;
while (f(lambda-delta)<f(lambda))
gamma=0.5*gamma;
end
k=k+1;
lambda=lambda-delta;
gamma=1/sqrt(k+1);
end
lambda