Скалярная минимизация с использованием scipy («минимизация» против «минимизации») - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть полиномиальная функция, для которой я хотел бы найти все локальные экстремумы.Я могу оценить полином через P(x) и его производную через d_P(x).

Моей первой мыслью было использование minimize_scalar, однако, похоже, я не смог воспользоваться тем, что яможно оценить производную.В качестве альтернативы я могу использовать более общую функцию minimize и предоставить градиент.

Есть ли практическое правило о том, какой метод будет работать лучше, или это то, где я должен проверить оба метода и посмотреть, чтоработает лучше.Так как функция, которую я оптимизирую, является полиномом (хорошо себя ведет), мне интересно, действительно ли это так важно, какой я использую, но если у кого-то есть больше фона, это было бы здорово.

В частности, P(x) - это(уникальный) полином степени n, который альтернативно достигает значения 1 или -1 на наборе n-1 точек.

Вот пример P(x), масштабированный таким образом, чтобыP(0)=1.Обратите внимание, что ось Y построена в масштабе журнала.enter image description here

1 Ответ

0 голосов
/ 20 февраля 2019

Поскольку у вас есть непрерывная скалярная функция, документация minimize_scalar предлагает более дискретный подход к оптимизации.Так как он не использует информацию о градиенте, у вас не будет проблем с шумом / неоднородностями / дискретностью в вашей цели.Однако, если вы используете minimize в сочетании с методом, основанным на градиенте, у вас будут проблемы с конвергенцией для шума / разрывов / дискретности.

Если целевая функция непрерывна в первом порядке, то и minimize, и minimize_scalar должны дать одно и то же решение для данной границы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...