【问题标题】:need help understanding Apache Commons Math BracketFinder需要帮助了解 Apache Commons Math BracketFinder
【发布时间】:2011-12-21 09:49:00
【问题描述】:

我首先要说这感觉应该很容易......但这对我来说并不完全显而易见。我正在尝试使用 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 有一个最小值。如果我从零开始并沿着函数移动,我将如何在 Pi/2 处寻找那个根?它实际上归结为构造函数参数和初始点。是否有任何最佳实践(假设您对函数的形状有所了解)可以用来以合理的方式设置这些参数?

谢谢

【问题讨论】:

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


    【解决方案1】:

    您现在可能已经解决了这个问题,但是包围方法根本不需要任何初始点,BracketFinder 的目的是找到一个起始猜测,您应该在调用BrentOptimizer 时应用它。在BracketFinder中应用默认构造函数应该没问题。

    收到括号点后,使用抽象基类BaseAbstractUnivariateOptimizer中定义的三点optimize方法,其中minmaxstartValue取自BracketFinder:s@分别为 987654333@、getHi()getMid()

    BracketFinder 的实现显然是基于本书 C 版本的第 10.1 章 Numerical Recipes 中的实现。这可以为您提供有关所使用的包围原则的更多背景知识。

    【讨论】:

      猜你喜欢
      • 2017-06-19
      • 2016-05-03
      • 1970-01-01
      • 2021-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多