1
バイナリ検索で2つの比較がありますが、2つの下線の間に正確な優先順位を付けることはできません。私は、以下の2つのサンプルで間で振動:小さなEPSで、二分探索パラメータに対応するエラーがなるという危険がありますのでバイナリ検索と比較のeps
for (int step = 0; step < 100; ++step) {
double middle = (left + right)/2;
if (f(middle) > 0) right = middle; else left = middle;
}
と
for (int step = 0; step < 100; ++step) {
double middle = (left + right)/2;
if (f(middle) > eps) right = middle; else left = middle;
}
fは、単調増加関数でありますずっと大きい。一方、丸め誤差のために同じ値の比較が正しくない場合でも、等しい値が1つの点にしか現れず、すべてが非常に近い点で正しいので、バイナリ検索は依然として正確に収束します。私はそれについて考えてみたいです。
誰かが0を見つけたように見え、もう1人が 'eps'を見つけましたか?質問はなんですか? –
また、max-minの.0000000000000000000000000000788860905%まで正確にする必要がありますか? 'double'では52個のループしか必要としません。 –
http://petr-mitrichev.blogspot.com/2011/06/binary-search-and-eps-in-comparisons.html funnily十分に、このブログは質問を投稿した人に属します – Rohan