注册 登录
编程论坛 ASP.NET技术论坛

MATLAB编程中while abs(norm(x)-normX)/normX>1e-6使用意思

wofengying 发布于 2010-04-12 20:15, 1856 次点击
>>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,请高手们多多海涵。
4 回复
#2
misswang2010-04-12 22:28
大哥,你贴错位置了吧,这个不是的吧
#3
wofengying2010-04-13 21:37
不好意思,弄错了
#4
czyzhuo2010-04-19 10:46
呵呵。。。
#5
funny1192011-08-14 15:13
楼主,加我,我们应该是一个方向的,你这个程序我也正在看,qq:1060729487
1