нужна помощь в понимании Apache Commons Math BracketFinder - PullRequest
0 голосов
/ 03 ноября 2011

Я начну с того, что мне кажется, что это должно быть легко ... но для меня это не совсем очевидно.Я пытаюсь использовать 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?Это действительно сводится к аргументам конструктора и начальным точкам.Есть ли какие-либо рекомендации (если вы немного знаете о форме вашей функции), которые я могу использовать для разумной установки этих параметров?

Спасибо

1 Ответ

0 голосов
/ 15 июня 2012

Вы, вероятно, уже разобрались с этим, но метод брекетинга вообще не ожидает никаких начальных точек, цель с BracketFinder состоит в том, чтобы найти начальное предположение, которое вы должны применить в своем вызове к BrentOptimizer . Должно быть в порядке, чтобы применить конструктор по умолчанию в BracketFinder.

Получив точки брекетинга, используйте трехточечный optimize метод, определенный в абстрактном базовом классе BaseAbstractUnivariateOptimizer , где min, max, startValue взяты из BracketFinder: s getLo(), getHi() и getMid() соответственно.

Реализация BracketFinder , очевидно, основана на том, что можно найти в Числовые рецепты , глава 10.1 в версии C книги. Это может дать вам дополнительную информацию об используемых принципах брекетинга.

...