Нужна помощь в понимании Apache Commons Math BracketFinder

Я начну с того, что мне кажется, что это должно быть легко... но для меня это не совсем очевидно. Я пытаюсь использовать 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 ответ

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

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

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

Другие вопросы по тегам