例如,我得到y = x + 1的函数在迭代下进行,当相对值小于值假设0.0001时,我怎么能让程序停止。相对值定义为,
当x = 1时,y = 2; x = 2,y = 3; x = 3,y = 4;等等等等。然后,
y的相对值(当x = 2时)=(3-2)/ 3 = 0.333333
此过程重复,直到相对值小于0.0001。
现在的问题是如何定义当前的y值和之前的y值,以便我可以将其设置为类似
的循环条件x = input('enter initial value of x');
while abs((current y-previous y)/current y) < 0.0001
y = 1 + x
end
答案 0 :(得分:1)
怎么样:
x = input('enter initial value of x');
previousy = x;
currenty = x+1;
while( abs((currenty-previousy)/currenty) >= 0.0001)
previousy = currenty;
currenty = currenty+1;
end
答案 1 :(得分:1)
你真的不需要任何用户输入,也不需要循环,你的方法并不是MATLAB原生的。
我对解决方案的建议不包括循环,而是看起来像这样:
x = 1:1e5; %// Values of x
y = x + 1; %// Corresponding values of y
idx = find([NaN diff(y)] ./ y < 0.0001, 1); %// First index satisfying condition
currenty = y(idx) %// Value of y at that index
会产生currenty = 10001
。