如何根据前一个术语执行一系列循环条件?

时间:2013-03-04 17:33:10

标签: matlab

例如,我得到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

2 个答案:

答案 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