首页 > 解决方案 > 公差标准 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即使函数的值不接近于零,即低于给定的容差,当实现收敛时是否总是这样?

标签: algorithmmathrootnumerical-methodsmodelica

解决方案


如果r是根,那么您希望将r(不是f(r))近似到给定的容差范围内,这正是这里发生的情况。当然,此时的图形可能f几乎是垂直的,因此b您的近似值f(b)不接近0。如果发生这种情况,您需要更小的容差。对于大多数应用程序,知道小数点后 6 位的根就足够了,但是如果您的应用程序涉及一个函数,其值会随着小数点后 7 位的变化而发生巨大变化,您当然会遇到问题。这就是为什么在数值分析课程中,方法中的误差表达式涉及导数的界限。您需要某种平滑假设才能获得合理的结果。


推荐阅读