Найти производную функцию: Дифференцирование функции, заданной неявно

Вычисление производных функций в Python — заметки Джошуа Боуэна

В машинном обучении производные используются для решения задач оптимизации. Алгоритмы оптимизации, такие как градиентный спуск, используют производные, чтобы решить, следует ли увеличивать или уменьшать веса, чтобы все ближе и ближе приближаться к максимуму или минимуму функции. В этом посте рассказывается, как эти функции используются в Python.

Символическое дифференцирование манипулирует заданным уравнением, используя различные правила, для получения производной этого уравнения. Если вы знаете уравнение, из которого хотите получить производную, вы можете выполнить символьное дифференцирование в Python. Давайте используем это уравнение в качестве примера:

f(x) = 2x 2 +5

Импорт SymPy

Для символьного дифференцирования нам понадобится библиотека SymPy. SymPy — это библиотека Python для символьной математики. Он призван стать полнофункциональной системой компьютерной алгебры (CAS). Сначала импортируйте SymPy:

 из sympy import * 
Создайте символ

Переменные не определяются автоматически в SymPy. Их необходимо определить явно, используя символов . символов  берет строку имен переменных, разделенных пробелами или запятыми, и создает из них символы. Символ — это просто термин SymPy для переменной.

В нашем примере функция f(x) = 2x 2 +5 имеет одну переменную x , поэтому давайте создадим для нее переменную:

 x = символы ('x') 

Если уравнение Работая с несколькими переменными, вы можете определить их все в одной строке:

 x, y, z = symbols('x y z') 

Символы можно использовать для создания символических выражений в коде Python.

 >>> х**2 + у
х  2  +у
>>> х**2 + грех(у)
x  2  +sin(y) 
Напишите символическое выражение

Итак, используя только что определенный символ x , давайте создадим символическое выражение на Python для нашего примера функции f(x) = 2x 2 +5 :

 f = 2*x**2+5 
Возьмем производную

Теперь, наконец, возьмем производную функции. Для вычисления производных используйте

diff функция. Первым параметром функции diff должна быть функция, от которой вы хотите получить производную. Второй параметр должен быть переменной, по которой вы берете производную.

 х = символы ('х')
ф = 2*х**2+5
df = diff(f, x) 

Вывод для f и df должен выглядеть следующим образом:

 >>> f
2*х**2+5
>>> дф
4*x 

Вы можете получить n-ю производную, добавив необязательный третий аргумент, количество раз, которое вы хотите дифференцировать. Например, взяв 3-ю производную:

 d3fd3x = diff(f, x, 3) 
Подстановка значений в выражения

Итак, мы можем создавать символьные функции и вычислять их производные, но как мы используем эти функции? Нам нужно иметь возможность подставить значение в эти уравнения и получить решение.

Мы можем подставлять значения в символьные уравнения, используя метод subs . Метод subs заменяет все экземпляры переменной заданным значением.

subs возвращает новое выражение; он не изменяет исходный. Здесь мы подставляем 4 вместо переменной x в df :

 >>> df.subs(x, 4)
16 

Чтобы преобразовать числовое выражение в число с плавающей запятой, используйте evalf .

 >>> df.subs(x, 4).evalf()
16.0 

Чтобы выполнить несколько замен одновременно, передайте список из (старый, новый)  пар подпрограммам . Вот пример:

 >>> expr = x**3 + 4*x*y - z
>>> expr.subs([(x, 2), (y, 4), (z, 0)])
40 
Функция lambdify

Если вы оцениваете выражение только в одной или двух точках, subs и evalf работают хорошо. Но если вы собираетесь оценивать выражение во многих точках, вам следует преобразовать выражение SymPy в числовое выражение, что дает вам больше возможностей для вычисления выражений, в том числе с использованием других библиотек, таких как NumPy и SciPy.

Самый простой способ преобразовать символьное выражение в числовое — использовать функцию lambdify .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *