Octave 我想在x等于1时停止代码
我用八度音阶来写这段代码Octave 我想在x等于1时停止代码,octave,numerical-analysis,Octave,Numerical Analysis,我用八度音阶来写这段代码 x=0.0; while (x~=1.0) x=x+0.1; fprintf('x=%20.18f\n',x) pause endwhile 当x等于1时,我想停止代码。 我写了一些这样的代码 x=0.0; while (x~=1.0) x=x+0.1; fprintf('x=%20.18f\n',x) if abs(x-1)<(eps/2), print(x) endif pause endwh
x=0.0;
while (x~=1.0)
x=x+0.1;
fprintf('x=%20.18f\n',x)
pause
endwhile
当x
等于1
时,我想停止代码。
我写了一些这样的代码
x=0.0;
while (x~=1.0)
x=x+0.1;
fprintf('x=%20.18f\n',x)
if abs(x-1)<(eps/2),
print(x)
endif
pause
endwhile
x=0.0;
而(x~=1.0)
x=x+0.1;
fprintf('x=%20.18f\n',x)
如果添加时abs(x-1):
x = 0.0;
x = x + 0.1;
例如,由于数值精度的原因,您可以使用x=0.1000000000000006
,因此while
将永远不会退出,因为它总是与1
不同
您可以使用小于或者您可以尝试在while
循环中使用迭代器k
,而不是x
本身,即
k = 0;
x = 0.0;
while (k~=round(1.0/0.1))
k += 1;
x += 0.1;
fprintf('x=%20.18f\n',x);
endwhile
@CrisLuengo感谢您的反馈。是的,我试过了,发现1.0/0.1
与10
相同。无论如何,为了安全起见,可能round(1.0/0.1)
会更好。无论如何,您的建议是最好的,始终使用整数作为循环变量。如果您知道迭代次数,则更容易:for x=0:0.1:1
,也就是说。@CrisLuengo是的,同意,for
如果知道迭代次数,应该是更好的选择。
k = 0;
x = 0.0;
while (k~=round(1.0/0.1))
k += 1;
x += 0.1;
fprintf('x=%20.18f\n',x);
endwhile