方向导数与梯度

这篇文章为方向导数与梯度的学习笔记,原视频为https://www.bilibili.com/video/BV1vZfKYeEii/

方向导数

定义

学习方向导数我们首先要从偏导数开始。在高数中我们都学习过偏导数。偏导数的几何含义是一个点朝向某一个坐标轴方向的导数。例如对 x x x的偏导数就是一个点在与 x x x轴平行的方向上的导数。几何图像和数学表达式如下:

现在类比偏导数,如果要推到更一般的情况,要的不是沿着坐标轴方向,而是任意方向的导数呢(也就是曲面上某一点沿着任意方向的切线斜率)?这就是要学习的方向导数。

为了给方向导数下一个定义,我们依旧来类比偏导数的定义。偏导数的数学定义为

lim ⁡ Δ x → 0 f ( x 0 + Δ x , y 0 ) − f ( x 0 , y 0 ) Δ x \lim_{\Delta x \to 0}\frac{f(x_0+\Delta x,y_0)-f(x_0,y_0)}{\Delta x} Δx→0limΔxf(x0+Δx,y0)−f(x0,y0)

用大白话来说就是极限情况下沿 x x x轴方向函数值的变化量除自变量的变化量(如果是对 y y y轴的偏导数就是沿 y y y轴方向)。

类比到方向导数中,也是在方向 l l l上极限情况下函数值的变化量除自变量的变化量。

由此我们可以给出方向导数的定义:

定义 :设 l l l 为 x O y xOy xOy 平面上以点 P 0 ( x 0 , y 0 ) P_0(x_0,y_0) P0(x0,y0) 以起点的一条射线, e l = ( cos ⁡ α , cos ⁡ β ) \boldsymbol{e}_l = (\cos\alpha,\cos\beta) el=(cosα,cosβ) 是与 l l l 同方向的单位向量,射线 l l l 的参数方程为

{ x = x 0 + t cos ⁡ α , y = y 0 + t cos ⁡ β , \begin{cases} x = x_0 + t\cos\alpha,\\ y = y_0 + t\cos\beta, \end{cases} {x=x0+tcosα,y=y0+tcosβ,

若极限

lim ⁡ t → 0 + f ( x 0 + t cos ⁡ α ,   y 0 + t cos ⁡ β ) − f ( x 0 , y 0 ) t \lim_{t\to 0^+}\frac{f\left(x_0 + t\cos\alpha,\,y_0 + t\cos\beta\right)-f\left(x_0,y_0\right)}{t} t→0+limtf(x0+tcosα,y0+tcosβ)−f(x0,y0)

存在,则称此极限为函数 f ( x , y ) f(x,y) f(x,y) 在 ( x 0 , y 0 ) (x_0,y_0) (x0,y0) 点沿 l l l 方向的方向导数 ,记为

∂ f ∂ l ∣ ( x 0 , y 0 ) \left.\frac{\partial f}{\partial l}\right|_{(x_0,y_0)} ∂l∂f (x0,y0)

在这个定义中我们用 t t t表示自变量在 l l l 方向上的变化量, t cos ⁡ α , t cos ⁡ β t\cos\alpha, t\cos\beta tcosα,tcosβ分别为 x , y x,y x,y轴上的变化量, f ( x 0 + t cos ⁡ α ,   y 0 + t cos ⁡ β ) f\left(x_0 + t\cos\alpha,\,y_0 + t\cos\beta\right) f(x0+tcosα,y0+tcosβ)就是函数的变化量。对应的几何图像如下:

(1) 方向导数 ∂ f ∂ l ∣ ( x 0 , y 0 ) \displaystyle\left.\frac{\partial f}{\partial l}\right|_{(x_0,y_0)} ∂l∂f (x0,y0) 是函数在 P 0 ( x 0 , y 0 ) P_0(x_0,y_0) P0(x0,y0) 处沿指定方向 l l l 的变化率。

(2) 习惯上 l l l 为射线,而非向量,无需写向量符号。

(3)偏导数需要看双侧导数,都存在才能得出偏导数存在。而方向导数只需要看射线 l l l 对应的方向上导数存在即可得到方向导数存在。

定理

定理 :如果函数 f ( x , y ) f(x,y) f(x,y) 在 P 0 ( x 0 , y 0 ) P_0(x_0,y_0) P0(x0,y0) 点可微分,那么函数在该点沿任一方向 l l l 的方向导数存在,且有

∂ f ∂ l ∣ ( x 0 , y 0 ) = f x ( x 0 , y 0 ) cos ⁡ α + f y ( x 0 , y 0 ) cos ⁡ β \left.\frac{\partial f}{\partial l}\right|_{(x_0,y_0)} = f_x(x_0,y_0)\cos\alpha + f_y(x_0,y_0)\cos\beta ∂l∂f (x0,y0)=fx(x0,y0)cosα+fy(x0,y0)cosβ

其中 cos ⁡ α , cos ⁡ β \cos\alpha,\cos\beta cosα,cosβ 是 l l l 方向的方向余弦。(二元情况下)

方向余弦部分的知识如下:

方向角

非零向量 a = ( a x , a y , a z ) \boldsymbol{a}=(a_x,a_y,a_z) a=(ax,ay,az) 与 x , y , z x,y,z x,y,z 轴正向的夹角 α , β , γ \alpha,\beta,\gamma α,β,γ,称为向量 a \boldsymbol{a} a 的方向角。

方向余弦

向量 a = ( a x , a y , a z ) \boldsymbol{a}=(a_x,a_y,a_z) a=(ax,ay,az) 的方向余弦为

{ cos ⁡ α = a x ∣ a ∣ = a x a x 2 + a y 2 + a z 2 cos ⁡ β = a y ∣ a ∣ = a y a x 2 + a y 2 + a z 2 cos ⁡ γ = a z ∣ a ∣ = a z a x 2 + a y 2 + a z 2 \begin{cases} \cos\alpha = \dfrac{a_x}{|\boldsymbol{a}|} = \dfrac{a_x}{\sqrt{a_x^2+a_y^2+a_z^2}}\\6pt \cos\beta = \dfrac{a_y}{|\boldsymbol{a}|} = \dfrac{a_y}{\sqrt{a_x^2+a_y^2+a_z^2}}\\6pt \cos\gamma = \dfrac{a_z}{|\boldsymbol{a}|} = \dfrac{a_z}{\sqrt{a_x^2+a_y^2+a_z^2}} \end{cases} ⎩ ⎨ ⎧cosα=∣a∣ax=ax2+ay2+az2 axcosβ=∣a∣ay=ax2+ay2+az2 aycosγ=∣a∣az=ax2+ay2+az2 az

注:

  1. 向量 e = ( cos ⁡ α , cos ⁡ β , cos ⁡ γ ) \boldsymbol{e}=(\cos\alpha,\cos\beta,\cos\gamma) e=(cosα,cosβ,cosγ) 是与 a \boldsymbol{a} a 同方向的单位向量。
  2. cos ⁡ 2 α + cos ⁡ 2 β + cos ⁡ 2 γ = 1 \cos^2\alpha + \cos^2\beta + \cos^2\gamma = 1 cos2α+cos2β+cos2γ=1。

定理的证明

函数 f ( x , y ) f(x,y) f(x,y) 在点 P 0 ( x 0 , y 0 ) P_0(x_0,y_0) P0(x0,y0) 可微

由可微定义:

Δ z = f ( x 0 + Δ x , y 0 + Δ y ) − f ( x 0 , y 0 ) = f x ′ ( x 0 , y 0 ) Δ x + f y ′ ( x 0 , y 0 ) Δ y + o ( ( Δ x ) 2 + ( Δ y ) 2 ) \begin{align*} \Delta z &= f(x_0+\Delta x,y_0+\Delta y)-f(x_0,y_0) \\ &= f_x'(x_0,y_0)\Delta x + f_y'(x_0,y_0)\Delta y + o\left(\sqrt{(\Delta x)^2+(\Delta y)^2}\right) \end{align*} Δz=f(x0+Δx,y0+Δy)−f(x0,y0)=fx′(x0,y0)Δx+fy′(x0,y0)Δy+o((Δx)2+(Δy)2 )

令 Δ x = t cos ⁡ α , Δ y = t cos ⁡ β \Delta x = t\cos\alpha,\ \Delta y = t\cos\beta Δx=tcosα, Δy=tcosβ,其中 t = ( Δ x ) 2 + ( Δ y ) 2 t=\sqrt{(\Delta x)^2+(\Delta y)^2} t=(Δx)2+(Δy)2 。

方向导数定义:

∂ f ∂ l ∣ ( x 0 , y 0 ) = lim ⁡ t → 0 + f ( x 0 + t cos ⁡ α , y 0 + t cos ⁡ β ) − f ( x 0 , y 0 ) t \left.\frac{\partial f}{\partial l}\right|{(x_0,y_0)} =\lim{t\to 0^+}\frac{f(x_0+t\cos\alpha,\ y_0+t\cos\beta)-f(x_0,y_0)}{t} ∂l∂f (x0,y0)=t→0+limtf(x0+tcosα, y0+tcosβ)−f(x0,y0)

代入增量公式:

= lim ⁡ t → 0 + f x ′ ( x 0 , y 0 ) ⋅ t cos ⁡ α + f y ′ ( x 0 , y 0 ) ⋅ t cos ⁡ β + o ( t ) t =\lim_{t\to 0^+}\frac{f_x'(x_0,y_0)\cdot t\cos\alpha + f_y'(x_0,y_0)\cdot t\cos\beta + o(t)}{t} =t→0+limtfx′(x0,y0)⋅tcosα+fy′(x0,y0)⋅tcosβ+o(t)

约去 t t t 取极限:

= f x ′ ( x 0 , y 0 ) cos ⁡ α + f y ′ ( x 0 , y 0 ) cos ⁡ β = f_x'(x_0,y_0)\cos\alpha + f_y'(x_0,y_0)\cos\beta =fx′(x0,y0)cosα+fy′(x0,y0)cosβ

梯度

定义

前面关于方向导数的内容中可知方向导数 ∂ f ∂ l ∣ ( x 0 , y 0 ) \displaystyle\left.\frac{\partial f}{\partial l}\right|_{(x_0,y_0)} ∂l∂f (x0,y0) 是函数在 P 0 ( x 0 , y 0 ) P_0(x_0,y_0) P0(x0,y0) 处沿指定射线方向 l l l 的变化率。

那么从一点出发的射线有无数条,能否全面掌握函数在一点的变化情况呢?比如沿哪个方向变化率最大?最大变化率是多少?因此定义了梯度的概念:

定义 :设函数 f ( x , y ) f(x,y) f(x,y) 在平面区域 D D D 内具有一阶连续偏导数,对于每一点 P 0 ( x 0 , y 0 ) ∈ D P_0(x_0,y_0) \in D P0(x0,y0)∈D,都可以定出一个向量

f x ′ ( x 0 , y 0 ) i + f y ′ ( x 0 , y 0 ) j , f_x'(x_0,y_0)\boldsymbol{i} + f_y'(x_0,y_0)\boldsymbol{j}, fx′(x0,y0)i+fy′(x0,y0)j,

称为 f ( x , y ) f(x,y) f(x,y) 在点 P 0 ( x 0 , y 0 ) P_0(x_0,y_0) P0(x0,y0) 的梯度 ,记为 g r a d f ( x 0 , y 0 ) \mathbf{grad}f(x_0,y_0) gradf(x0,y0) 或 ∇ f ( x 0 , y 0 ) \nabla f(x_0,y_0) ∇f(x0,y0),即

g r a d f ( x 0 , y 0 ) = ∇ f ( x 0 , y 0 ) = f x ′ ( x 0 , y 0 ) i + f y ′ ( x 0 , y 0 ) j = ( f x ′ ( x 0 , y 0 ) , f y ′ ( x 0 , y 0 ) ) \mathbf{grad}f(x_0,y_0)=\nabla f(x_0,y_0)=f_x'(x_0,y_0)\boldsymbol{i}+f_y'(x_0,y_0)\boldsymbol{j}=\big(f'_x(x_0,y_0),\ f'_y(x_0,y_0)\big) gradf(x0,y0)=∇f(x0,y0)=fx′(x0,y0)i+fy′(x0,y0)j=(fx′(x0,y0), fy′(x0,y0))

注: ( f x ′ ( x 0 , y 0 ) , f y ′ ( x 0 , y 0 ) ) \big(f'_x(x_0,y_0),\ f'_y(x_0,y_0)\big) (fx′(x0,y0), fy′(x0,y0))是表示向量的另一种书写形式。

其中 ∇ = ∂ ∂ x i + ∂ ∂ y j \nabla = \dfrac{\partial}{\partial x}\boldsymbol{i}+\dfrac{\partial}{\partial y}\boldsymbol{j} ∇=∂x∂i+∂y∂j 称为(二维的)向量微分算子或 Nabla 算子,

∇ f = ∂ f ∂ x i + ∂ f ∂ y j . \nabla f = \frac{\partial f}{\partial x}\boldsymbol{i}+\frac{\partial f}{\partial y}\boldsymbol{j}. ∇f=∂x∂fi+∂y∂fj.

同理,三元函数梯度:

g r a d f ( x 0 , y 0 , z 0 ) = ∇ f ( x 0 , y 0 , z 0 ) = f x ′ ( x 0 , y 0 , z 0 ) i + f y ′ ( x 0 , y 0 , z 0 ) j + f z ′ ( x 0 , y 0 , z 0 ) k \mathbf{grad}f(x_0,y_0,z_0)=\nabla f(x_0,y_0,z_0) =f_x'(x_0,y_0,z_0)\boldsymbol{i}+f_y'(x_0,y_0,z_0)\boldsymbol{j}+f_z'(x_0,y_0,z_0)\boldsymbol{k} gradf(x0,y0,z0)=∇f(x0,y0,z0)=fx′(x0,y0,z0)i+fy′(x0,y0,z0)j+fz′(x0,y0,z0)k

从定义可以看出梯度是一个向量,简单来说就是把各个坐标轴的偏导数和向量拼到一起 。

梯度与等位线的关系

将三元函数同一个值连起来的线投影到平面上,即为等位线(类似于地理地图中的等高线)

而梯度就是等位线上点 ( x 0 , y 0 ) (x_0,y_0) (x0,y0) 的法向量 n \boldsymbol{n} n,且指向 f ( x , y ) f(x,y) f(x,y) 增大的方向(对应上坡的方向)。

那么为什么梯度就是法向量呢?假设有这么一个函数 F ( x , y ) = c F(x,y)=c F(x,y)=c,其图像如下:

如果要求 P 0 P_0 P0点的法向量,我们知道法向量是和切线垂直的,所以先求这个点的切线。根据隐函数求导定理,这个点切线斜率 y ′ ( x ) = − F x ′ F y ′ y'(x) = -\dfrac{F_x'}{F_y'} y′(x)=−Fy′Fx′,对应垂直的法线斜率为 = F y ′ F x ′ =\dfrac{F_y'}{F_x'} =Fx′Fy′

建立个坐标轴并令法向量对应的 x x x轴值为1

则法向量可以表示为 O P 0 → = ( 1 , F y ′ F x ′ ) \overrightarrow{OP_0} = \left(1,\dfrac{F_y'}{F_x'}\right) OP0 =(1,Fx′Fy′),即 n ⃗ = ( F x ′ , F y ′ ) \vec{n}=(F_x',F_y') n =(Fx′,Fy′),而这正好就是梯度的定义形式

方向导数与梯度

如果 f ( x , y ) f(x,y) f(x,y) 在 P 0 ( x 0 , y 0 ) P_0(x_0,y_0) P0(x0,y0) 可微分, e l = ( cos ⁡ α , cos ⁡ β ) \boldsymbol e_l=(\cos\alpha,\cos\beta) el=(cosα,cosβ) 是与 l l l 同向的单位向量,那么

∂ f ∂ l ∣ ( x 0 , y 0 ) = f x ( x 0 , y 0 ) cos ⁡ α + f y ( x 0 , y 0 ) cos ⁡ β = ( f x ( x 0 , y 0 ) , f y ( x 0 , y 0 ) ) ⋅ ( cos ⁡ α , cos ⁡ β ) = ∇ f ( x 0 , y 0 ) ⋅ e l = ∣ ∇ f ( x 0 , y 0 ) ∣ cos ⁡ ⟨ ∇ f ( x 0 , y 0 ) , e l ⟩ \begin{aligned} \left.\frac{\partial f}{\partial l}\right|_{(x_0,y_0)} &= f_x(x_0,y_0)\cos\alpha + f_y(x_0,y_0)\cos\beta \\ &=\big(f_x(x_0,y_0), f_y(x_0,y_0)\big)\cdot \big(\cos\alpha,\cos\beta\big) \\10pt &=\nabla f(x_0,y_0)\cdot \boldsymbol e_l =\big|\nabla f(x_0,y_0)\big|\cos\big\langle\nabla f(x_0,y_0),\boldsymbol e_l\big\rangle \end{aligned} ∂l∂f (x0,y0)=fx(x0,y0)cosα+fy(x0,y0)cosβ=(fx(x0,y0),fy(x0,y0))⋅(cosα,cosβ)=∇f(x0,y0)⋅el= ∇f(x0,y0) cos⟨∇f(x0,y0),el⟩

注:上述计算过程用到了向量的乘积: a ⃗ ⋅ b ⃗ = ∣ a ⃗ ∣ ⋅ ∣ b ⃗ ∣ cos ⁡ ⟨ a ⃗ , b ⃗ ⟩ \vec a \cdot \vec b = |\vec a|\cdot|\vec b|\cos\langle\vec a,\vec b\rangle a ⋅b =∣a ∣⋅∣b ∣cos⟨a ,b ⟩

可知,当 ⟨ ∇ f ( x 0 , y 0 ) , e l ⟩ = 0 \big\langle\nabla f(x_0,y_0),\boldsymbol e_l\big\rangle=0 ⟨∇f(x0,y0),el⟩=0时,即方向 l l l 与梯度 ∇ f ( x 0 , y 0 ) \nabla f(x_0,y_0) ∇f(x0,y0) 的方向相同时,方向导数 ∂ f ∂ l ∣ ( x 0 , y 0 ) \displaystyle\left.\frac{\partial f}{\partial l}\right|_{(x_0,y_0)} ∂l∂f (x0,y0) 最大,

函数 f ( x , y ) f(x,y) f(x,y) 增加最快。这个最大值为梯度 ∇ f ( x 0 , y 0 ) \nabla f(x_0,y_0) ∇f(x0,y0) 的模,即

∂ f ∂ l ∣ ( x 0 , y 0 ) = ∣ ∇ f ( x 0 , y 0 ) ∣ \left.\frac{\partial f}{\partial l}\right|_{(x_0,y_0)}=\big|\nabla f(x_0,y_0)\big| ∂l∂f (x0,y0)= ∇f(x0,y0)

相关推荐
瑞码空间1 小时前
01背包:动态规划的Hello World
c++·算法·0/1背包问题
Wang's Blog1 小时前
AI Agent白手起家63: LangGraph 人机交互——让人类介入 AI 工作流
人工智能·算法·人机交互
乐观勇敢坚强的老彭2 小时前
C++ STL 常用容器的速查表
java·c++·算法
北冥you鱼2 小时前
深入解析 Go 中 sync.YAML.Unmarshal:如何将 YAML 数据填充到 Config 结构体
开发语言·算法·golang
星轨初途3 小时前
LeetCode 热题 100——day11 滑动窗口最大值
数据结构·c++·算法·leetcode·职场和发展
gbase_lmax3 小时前
深度递归与广度递归(DFS,BFS)实现
算法·深度优先·宽度优先
西柚研究生1234564 小时前
论文分析15:跨层特征交互的多尺度无人机小目标检测算法
人工智能·算法·目标检测
rannn_11111 小时前
【力扣hot100】链表专题|160、206、234、141、142
java·算法·leetcode·链表·面试·开发
数模竞赛Paid answer12 小时前
2026年华东杯数学建模B题医药物流安排问题解题全过程文档及程序
算法·数学建模·数据分析·华东杯