PDA

查看完整版本 : [MATLAB数学相关] 求大神帮忙查看错误


sooby24
2012-05-11, 13:57
我在进行算法编程时遇到了错误,小弟初学 找不到解决方法 希望各位大神帮我看看哪里出现了错误 :
算法截图如下:在附件中
代码:
function [tx,tstopc,time,tk]=pro(M,q,xstart,tol)
x=xstart; %%% 这里的xstart要严格大于0
b=1;y=0.95;u=0.01;g=1.9;
Fx=M*x+q;
stopc=norm(x-max(x-Fx,0),inf);
k=0;tic;
while (stopc>tol && k<=5000)
k=k+1;
x0=x;
Fx0=Fx;
x=max(x0-b*Fx0/(1+u),0);
Fx=M*x+q;
df=b*(Fx-Fx0);
r=norm(df)/norm(x-x0);
while(r > y)
b=0.8*b/r;
x=max(x0-b*Fx0/(1+u),0);
Fx=M*x+q;
df=b*(Fx-Fx0);
r=norm(df)/norm(x-x0);
end
dx=x0-x;
dm=norm(dx);
q=dm^2/(1+u)+dx'*df/(1+u);
d=dx+df/(1+u);
dn=norm(d);
a0=q/(dn^2);
a=g*(1-u)*a0/(1+u);
x=max(x0-a*b*Fx/(1+u),0);
Fx=M*x+q;
stopc=norm(x-max(x-Fx,0),inf);
if r<=0.5
b=b*0.7/r;
end
end
tx=x;
tstopc=stopc;
time=toc;
tk=k;
另: 附件中的P[]算法就是求方括号内的数与0两者较大的数
希望各位大神帮小弟解决这个问题!!不胜感激