私は単純なforループを持っています:
for n=0:0.001:100
if x<100
do something
end
end
ただし、コードが複雑なため、xの最終的な値は約100.345であるため、ループが中断します。
if x<100 ± 0.4
ステートメントが真でループが再開するように、エラーマージンを適用したいと思います。
これはどのように可能ですか?
私は単純なforループを持っています:
for n=0:0.001:100
if x<100
do something
end
end
ただし、コードが複雑なため、xの最終的な値は約100.345であるため、ループが中断します。
if x<100 ± 0.4
ステートメントが真でループが再開するように、エラーマージンを適用したいと思います。
これはどのように可能ですか?
論理積(&&
)演算子を使用して範囲を作成します。条件付きコードは、両方のステートメントが真の場合にのみ実行されます。
e = 0.4;
v = 100;
if x<v+e && x>v-e
do something
end
n=0
必要に応じて、条件付きコードでループを再開するように設定できます。
2つの浮動小数点数が互いにある程度の許容範囲内にあるかどうかを確認する標準的な方法は、絶対差を計算し、それを許容範囲と比較することです。あなたの場合、それは次のようになります:
expected = 100;
tolerance = 0.4;
if abs(x - expected) < tolerance
% do something
end
誰もこれについて言及していないことに驚いていますが、許容誤差を追加したい場合は、一方向にのみ追加する必要があります。
これは、xが比較値よりも小さいかどうかのみをチェックするためです。したがって、これを簡単に行うことができます。
for n=0:0.001:100
if x<100+0.4
% do something
end
end
もちろん、ただ使うこともできますx<100.4