需要帮助理解Apache Commons Math BracketFinder

时间:2011-11-03 17:32:11

标签: math optimization numerical-methods numerical-analysis apache-commons-math

我首先要说这感觉应该很容易......但对我来说并不完全是显而易见的。我正在尝试使用BrentOptimizer来查找函数的局部最小值和最大值。我知道这些的周期性,我觉得我应该能够使用BracketFinder来包围最佳效果,然后将其发送到BrentOptimizer。

她是文档:http://commons.apache.org/math/api-2.2/org/apache/commons/math/optimization/univariate/BracketFinder.html

因此,对于一个简单的案例,请考虑:

f(x) = sin(x)

我们知道Pi / 2最大,3Pi / 2最小。如果我从0开始并沿着函数移动,我将如何在Pi / 2中寻找根?它真正归结为构造函数参数和初始点。是否有任何最佳实践(假设您对函数的形状有一点了解),我可以用它来合理地设置这些参数?

由于

1 个答案:

答案 0 :(得分:0)

你现在可能已经对此进行了排序,但是包围方法根本没有预期任何初始点,BracketFinder的意图是找到你应该在调用{{{{ 3}}。在BracketFinder中应用默认构造函数应该没问题。

收到包围点后,请使用抽象基类BrentOptimizer中定义的三点optimize方法,其中minmaxstartValue分别取自BracketFinder:s getLo()getHi()getMid()

BaseAbstractUnivariateOptimizer实现显然基于本书C版本的第{10.1}章BracketFinder中找到的实现。这可以为您提供更多关于所使用的包围原则的背景信息。