Производная по направлению
Производная по направлению отвечает: с какой скоростью растёт функция, если идти не вдоль оси, а в произвольную сторону.
Производная по направлению $D_{\vec u} f = \nabla f \cdot \hat u$ — скорость изменения $f$ вдоль единичного вектора $\hat u$.
Связь с градиентом
Частные производные — это скорости вдоль осей. А что если идти под углом? Ответ красив: производная по любому направлению $\hat u$ — это проекция градиента на это направление:
$$D_{\vec u} f = \nabla f \cdot \hat u = |\nabla f|\cos\theta$$
где $\theta$ — угол между градиентом и $\hat u$. Отсюда сразу видно:
- Максимум при $\theta = 0$: идём вдоль градиента, скорость $= |\nabla f|$.
- Ноль при $\theta = 90^\circ$: идём вдоль линии уровня, функция не меняется.
- Минимум при $\theta = 180^\circ$: идём против градиента, скорость $= -|\nabla f|$.
Важно: $\hat u$ обязан быть единичным, иначе формула даст неверный масштаб.
Проверка на Python
import math
def grad_f(x, y):
# f = x^2 + y^2 => grad = (2x, 2y)
return (2*x, 2*y)
def dir_deriv(g, u):
length = math.hypot(*u)
uhat = (u[0]/length, u[1]/length) # нормируем
return g[0]*uhat[0] + g[1]*uhat[1]
g = grad_f(1.0, 1.0)
print("grad f =", g, " |grad f| =", round(math.hypot(*g), 4))
print("D вдоль (1,1) =", round(dir_deriv(g, (1, 1)), 4)) # макс
print("D вдоль (1,-1) =", round(dir_deriv(g, (1, -1)), 4)) # вдоль уровня
print("D вдоль (-1,-1)=", round(dir_deriv(g, (-1, -1)), 4)) # минВывод:
grad f = (2.0, 2.0) |grad f| = 2.8284 D вдоль (1,1) = 2.8284 D вдоль (1,-1) = 0.0 D вдоль (-1,-1)= -2.8284
Максимум совпал с $|\nabla f|$, вдоль уровня вышел ровно ноль — формула работает.
Как работает под капотом
Производная по направлению — это предел $\lim_{t\to 0} \frac{f(\vec p + t\hat u) - f(\vec p)}{t}$. Подставив разложение Тейлора $f(\vec p + t\hat u) \approx f(\vec p) + t\,\nabla f \cdot \hat u$, получаем именно $\nabla f \cdot \hat u$. Скалярное произведение здесь не случайно: оно как раз и проецирует.
Частые ошибки
- Не нормировать направление $\vec u$ — тогда скорость окажется завышенной в $|\vec u|$ раз.
- Забывать знак: вдоль $-\nabla f$ производная отрицательна (функция убывает).
- Думать, что производная по направлению — вектор. Это число.
Итог
- $D_{\vec u} f = \nabla f \cdot \hat u$ — проекция градиента на направление.
- Максимум скорости — вдоль градиента, ноль — вдоль линии уровня.
- $\hat u$ обязательно единичный, результат — скаляр.