Для вычисления производных будем использовать библиотеку SymPy. Это библиотека с открытым исходным кодом, полностью написанная на языке Python. Разрабатывается как система компьютерной алгебры.
Подключение SymPy
Вначале нам необходимо установить библиотеку. Для этого в терминале (командной строке) следует ввести команду: pip install sympy
.
Для подключения библиотеки в коде на Python 3 следует использовать ключевое слово import
.
Чтобы не писать перед всеми функциями sympy
с точкой, подключу следующим образом:
from sympy import *
Следует обратить внимание, что в SymPy объявлено множество классов и функций, имена которых могут пересекаться с названиями в других библиотеках. Например, если используете библиотеку math, то там также есть sin
, cos
, pi
и другие.
Формула российских дорог
Например, возьмем функцию с двумя независимыми переменными, типа поверхности y=f(x, z). Воспользуемся формулой российских дорог: y=sin(x)+0,5·z.
Перед тем как взять производную этой функции в Python, надо объявить все переменные, которые будут использоваться в ней. Для этого следует воспользоваться функцией symbols
. В качестве аргумента используем строку с перечисленными через запятую или пробел названиями переменных.
x, z = symbols('x z')
После этого берем частную производную в Python 3 с помощью функции diff
. Первым аргументом пишем функцию, вторым – переменную, по которой будем её дифференцировать.
Результат выводим с помощью print
.
Дорога в горку
Возьмём производную по z:
from sympy import * x, z = symbols('x z') print(diff(sin(x)+0.5*z, z)) 0.500000000000000
В результате получили 0.5. Частная производная по z положительна, следовательно, дорога в горку.
Дорога с колеёй
Теперь возьмём производную по x:
from sympy import * x, z = symbols('x z') print(diff(sin(x)+0.5*z, x)) cos(x)
Получили, что частная производная по x равна cos(x). Трактору на колею наплевать, ему важен только наклон горки.
В зависимости от задачи берем производную по нужному параметру.
В функции diff
при необходимости, можно указать третьим параметром порядок дифференцирования. Так как мы вычисляли производную первого порядка, то его не указывали.