SciPy - еще одна популярная математическая библиотека Python, реализующая более высокоуровневые математические функции, например из линейной алгебры или теории вероятностей. SciPy использует NumPy (вообще сложно представить, кто не использует NumPy).
Чтобы понять возможности SciPy, нужно знать базовые (а иногда и не совсем базовые) математические понятия. Чтобы посмотреть хоть что-то рассмотрим простейшее понятие - минимум функции.
Минимум функции
Например задача нахождения точки экстремума функции - это задача из области оптимизации. Рассмотрим, что такое экстремум функции на примере функции подсчета погрешности. Функции подсчета погрешности в простейшем случае измеряют отклонение предсказанного результата от проверочных эталонных значений. Чем меньше значение погрешности возвращает проверочная функция, тем точнее результат предсказания. Т.е. мы заинтересованы в нахождении таких параметров для функции, чтобы функция нахождения погрешности возвращала минимальную погрешность. Конкретные значения таких параметров называются точкой минимума. Аналогичные значения параметров функции, при которых она возвращает максимально возможный результат (в данном случае - наибольшую погрешность) называются точкой максимума. Точки минимума и максимума - это точки экстремума функции. Так как нахождение точки экстремума - процесс итеративный, т.е. в простейшем случае пробуем вызвать функцию с произвольными параметрами - смотрим на результат. Далее пробуем увеличить какой-то параметр - смотрим уменьшился результат функции или увеличился.
Таким образом, двигаясь на пути к точки минимума, мы уменьшаем значение функции погрешности, то есть оптимизируем нашу функцию.
Почему точка? Это вопрос геометрического смысла функции. Любая чистая функция - это описанный закон зависимости между входными параметрами и выходным значением функции. Любую математическую зависимость можно визуализировать, например откладывая входной параметр по оси X, а результат по оси Y. Если функция непрерывная, то мы получим график зависимости и если выбрать правильный отрезок X для визуализации, то можно увидеть минимальное значение функции Y - точку экстремума.
Нахождение минимума функции с помощью SciPy
Функционал SciPy разбит на подпакеты по областям. В данном случае нас будет интересовать sub package optimze. Импортируем только его используя следующий Python синтаксис:
Ну а теперь зададим произвольную функцию и найдем ее точку минимума:
Проверить результат можно по-разному, например, визуализировав функцию на небольшом отрезке: