MATLAB编程中while abs(norm(x)-normX)/normX>1e-6使用意思
>>muX=[22;10;2];sigmaX=[2;0.9;0.6];>> sLn=sqrt(log(1+(sigmaX(1)/muX(1))^2));mLn=log(muX(1))-sLn^2/2;
>> aEv=sqrt(6)*sigmaX(3)/pi;uEv=-psi(1)*aEv-muX(3);
>> muX1=muX;sigmaX1=sigmaX;%x1:equivalent normalized variable
>> x=muX;normX=eps;
>> while abs(norm(x)-normX)/normX>1e-6
normX=norm(x);
gX=[-1;-1;-1];
cdfX=[logncdf(x(1),mLn,sLn);1-evcdf(-x(3),uEv,aEv)];
pdfX=[lognpdf(x(1),mLn,sLn);evpdf(-x(3),uEv,aEv)];
nc=norminv(cdfX);
sigmaX1(1:2:3)=normpdf(nc)./pdfX;
muX1(1:2:3)=[x(1:2:3)-nc.*sigmaX(1:2:3)];
gs=gX.*sigmaX1;alphaX=-gs/norm(gs);
bbeta=(g+gX'*(muX1-x))/norm(gs)
x=muX1+bbeta*sigmaX1.*alphaX;
end
在该程序中abs(norm(x)-normX)/normX>1e-6用意是什么?
normX与norm(x)的区别?
muX1=muX; x=muX;为什么要这样赋值,不可直接用muX吗?
如果可以的话请高手帮我对程序进行一下注解,本人刚学MATLAB,请高手们多多海涵。