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 に答える