algorithm - 公差标准 Brent 方法
问题描述
布伦特方法的停止标准是
if abs(m) <= tol or fb == 0.0 then // root found (interval is small enough)
found := true;
但是,如果abs(m)
达到低于所述容差但 的值f(b)
没有接近于零怎么办?这种情况会被认为是收敛失败还是收敛成功?我可以看到abs(m) < tolerance
,即|b-a| < tolerance
,但函数的值不等于零或任何接近的地方。布伦特的方法的重点不是找到一个函数的根,这样f(b) == 0.0
或低于某个容差吗?
|b-a| < tolerance
即使函数的值不接近于零,即低于给定的容差,当实现收敛时是否总是这样?
解决方案
如果r
是根,那么您希望将r
(不是f(r)
)近似到给定的容差范围内,这正是这里发生的情况。当然,此时的图形可能f
几乎是垂直的,因此b
您的近似值f(b)
不接近0
。如果发生这种情况,您需要更小的容差。对于大多数应用程序,知道小数点后 6 位的根就足够了,但是如果您的应用程序涉及一个函数,其值会随着小数点后 7 位的变化而发生巨大变化,您当然会遇到问题。这就是为什么在数值分析课程中,方法中的误差表达式涉及导数的界限。您需要某种平滑假设才能获得合理的结果。
推荐阅读
- r - 如何使用 github_document 作为输出的 R Markdown 主题?
- elasticsearch - 如何查询存储在elasticsearch中的metricbeat系统cpu和内存数据
- visual-studio-code - 为什么“p”没有在““当我写“p”并点击 TAB 键时?它也适用于许多其他 html 元素
- keyboard - 用于在 Android AIDE 应用程序上进行编码的物理 USB 键盘
- sql - 使用主查询中的按项目分组的 SQL 子查询
- asp.net - ASP.NET 应用程序无法加载非托管 DLL
- python - 如何遍历列表,删除元素?
- selenium-webdriver - 在量角器中进行 e2e 测试时,我可以使用什么来模拟获取请求,类似于没有 Angular 的 addMockModule
- html - 用户代理是否需要按文档顺序提交 URL 编码的表单数据?
- ruby-on-rails - 保存foreign_key = nil后-解决db中的错误