0

例如,我得到了一个 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
4

2 回答 2

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
于 2013-03-04T17:38:27.443 回答
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.

于 2013-03-04T17:53:34.227 回答