繁体   English   中英

二进制搜索和eps的比较

[英]binary search and eps in comparisons

我在二进制搜索中有2个比较,但是我不能在两个底层之间进行精确的选择。 我在以下两个示例之间进行振荡:

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是单调递增的函数,因为即使eps较小,也存在二进制搜索参数中的相应误差会更大的危险。 另一方面,即使由于舍入误差我们对于相等值的比较是不正确的,二分查找仍将正确收敛,因为相等值可能只出现在一个点上,而在非常接近它的点上都是正确的。 我想对此有所了解。

从您的代码来看,您试图确定该函数何时具有零值。 第一种方法已经足够好,因为它符合您的意图。 似乎没有必要使用第二种方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM