这个程序错在哪里了?
这是一个迭代的程序,我输入x=以后,在运行过程中一直busy,按说这个不是非常大阿是不是我的循环体有问题啊
请各位大虾指点!
function y=bb2_2_10(x)
format short
eps=input('please input your accuracy:');
a=-5;
b=5;
x0=a+(b-a)*rand(1,2);
A=diag();
m=1;
iterstep(1,:)=x;
while m==1
while norm((x-x0)*A)>eps
grad=(x-x0)*A;
alpha=grad*grad'/(grad*A*grad');
x=x-alpha*grad;
iterstep(m+1,:)=x;
m=m+1;
end
end
while m>=2
while norm((x-x0)*A)>eps
x1=iterstep(m-1,:);
x2=iterstep(m,:);
grad1=(x1-x0)*A;
grad2=(x2-x0)*A;
alpha=grad1*grad1'/(grad1*A*grad1');
x2=x2-alpha*grad2;
x=x2;
iterstep(m+1,:)=x;
m=m+1;
end
end
step=max(size(iterstep))-1
x
iterstep
回复
你的程序问题出在两个while外循环,稍作修改,可以很快得出结果. eps是MATLAB中常量的名称,eps=2.2204e-016。因此不合适作为变量的名称。请教二楼
我是一个新手请帮忙告之如何修改!
谢谢!
谢谢三楼 判断条件有问题
while m>=2
这一句表示只要m>=2就运行循环中的语句
而在你的循环中
和m相关的只有 m=m+1;
也就是说每运行一次m增加1,永远都满足m>=2这个条件,程序也就无限循环下
建议先搞清楚程序的逻辑关系,给出程序运行结束的条件 我说来 原帖由 changyl01 于 2006-11-10 22:09 发表
我说来
???? 大错了
呵呵
不好意思
谢谢特聘教授!
您是哪里的?
页:
[1]