Что это?
sympy.diff() - берёт символическую производную (в том числе частные и старших порядков).
Baseline (простое объяснение)
➖Первая производная: diff(f, x)
➖n-го порядка: diff(f, x, n)
➖Частные: diff(f, x, y) сначала по x, потом по y
➖Переменной нет в выражении → 0
➖Если переменных несколько, всегда указывайте переменную явно
Зачем это вам?
➖Оценивать «направление и скорость изменения» функций
➖Строить градиенты для оптимизации/ML
➖Вычислять чувствительность показателей к входам
Что получаем?
➖Точное (символьное) выражение производной
➖Можно упростить (simplify) или превратить в численную функцию (lambdify)
➖Подстановка чисел через .subs({x:1, y:2}).evalf()
Кейс: минимум, который покрывает 80% задач
# 0) Импорт и переменные
from sympy import symbols, sin, diff
x, y = symbols('x y')
# 1) Функция
f = sin(x) + x**2*y # f(x,y)
# 2) Первые производные (градиент)
fx = diff(f, x) # cos(x) + 2*x*y
fy = diff(f, y) # x**2
# 3) Вторые и смешанные
fxx = diff(f, x, 2) # -sin(x) + 2*y
fxy = diff(f, x, y) # 2*x
fyx = diff(f, y, x) # 2*x (гипотеза: совпадает при «гладких» f)
fyy = diff(f, y, 2) # 0
# 4) Значение производной в точке (x=1, y=2)
val_fx = fx.subs({x: 1, y: 2}).evalf() # cos(1) + 4 ≈ 4.5403
# 5) Проверка «переменной нет»
z = symbols('z')
dz = diff(x + 5, z) # 0
# 6) Старший порядок в 1D
d3 = diff(x**5, x, 3) # 60*x**2
Итог: показаны первая/вторая/смешанные производные, подстановка чисел и случай «нет такой переменной». Этого достаточно для решения большинства учебных и прикладных задач.
#python #sympy #baseline #дифференцирование ✏️
