1. 方向余弦
在二维空间中(X-Y平面),向量
l
=
(
a
,
b
)
\boldsymbol{l}=(a,b)
l=(a,b),这个向量
l
\boldsymbol{l}
l 与坐标轴x和y的夹角分别为
α
\alpha
α 和
β
\beta
β ,如下图1所示。
图1 方向余弦
其中
α
\alpha
α 和
β
\beta
β为向量
l
\boldsymbol{l}
l 的方向角。向量
l
\boldsymbol{l}
l 的方向余弦为:
cos
α
=
a
a
2
+
b
2
\cos\alpha=\frac{a}{\sqrt{a^2+b^2}}
cosα=a2+b2
a、
cos
β
=
b
a
2
+
b
2
\cos\beta=\frac{b}{\sqrt{a^2+b^2}}
cosβ=a2+b2
b,且
(
cos
α
)
2
+
(
cos
β
)
2
=
1
(\cos\alpha)^2+(\cos\beta)^2=1
(cosα)2+(cosβ)2=1。(方向余弦是该向量
l
\boldsymbol{l}
l 对应的单位向量的坐标)。假设
l
0
\boldsymbol{l_0}
l0 为向量
l
\boldsymbol{l}
l 对应的单位向量,则
l
0
=
(
a
a
2
+
b
2
,
b
a
2
+
b
2
)
=
(
cos
α
,
cos
β
)
\boldsymbol{l_0}=(\frac{a}{\sqrt{a^2+b^2}},\frac{b}{\sqrt{a^2+b^2}})=(\cos\alpha,\cos\beta)
l0=(a2+b2
a,a2+b2
b)=(cosα,cosβ) 单位向量
l
0
\boldsymbol{l_0}
l0的模:
∣
l
0
∣
=
(
cos
α
)
2
+
(
cos
β
)
2
=
1
|\boldsymbol{l_0}|=\sqrt{(\cos\alpha)^2+(\cos\beta)^2}=1
∣l0∣=(cosα)2+(cosβ)2
=1
2. 方向导数
2.1 初识方向导数
方向导数本质上是一个数值,可理解为一个函数
f
(
x
,
y
)
f(x,y)
f(x,y)在某个点A(
x
0
,
y
0
,
z
0
x_0,y_0,z_0
x0,y0,z0)处沿指定方向的变化率(切线的斜率,偏导数)。因此,构建方向导数需要两个元素:函数、指定方向(方向向量)。 对于二元函数
f
(
x
,
y
)
f(x,y)
f(x,y),对
x
x
x 的偏导数
f
x
′
(
x
0
,
y
0
)
f^{'}_x (x_0,y_0)
fx′(x0,y0)指的是:函数
f
(
x
,
y
)
f(x,y)
f(x,y) 在点
(
x
0
,
y
0
,
z
0
)
(x_0,y_0,z_0)
(x0,y0,z0)处沿着
x
x
x 坐标轴的变化率;对
y
y
y 的偏导数
f
y
′
(
x
0
,
y
0
)
f^{'}_y (x_0,y_0)
fy′(x0,y0)指的是:函数
f
(
x
,
y
)
f(x,y)
f(x,y) 在点
(
x
0
,
y
0
,
z
0
)
(x_0,y_0,z_0)
(x0,y0,z0)处沿着
y
y
y 坐标轴的变化率。这里的
x
x
x 和
y
y
y 坐标轴可看作是方向向量,那么
x
x
x 坐标轴对应的方向向量可以是
(
1
,
0
)
(1,0)
(1,0),
y
y
y 坐标轴对应的方向向量可以是
(
0
,
1
)
(0,1)
(0,1)。
上面我们也说了,对
x
x
x,
y
y
y的偏导数其实就是二元函数
f
(
x
,
y
)
f(x,y)
f(x,y)在某个点(
x
0
,
y
0
,
z
0
x_0,y_0,z_0
x0,y0,z0)处沿着
x
x
x,
y
y
y坐标轴的变化率。先看下图2,从图2中可知:显然从点 A
(
x
0
,
y
0
,
z
0
)
(x_0,y_0,z_0)
(x0,y0,z0)出发,可不止一个方向,而是360°都有方向,且每个方向都有方向导数。那么可以这样说:方向导数是沿着任意一指定方向的变化率,不一定是沿着
x
x
x,
y
y
y坐标轴。简而言之,方向导数是沿着各个方向上的导数。当然,与普通函数的导数类似,方向导数也不是百分之百存在,需要函数满足在某点处可微,才能计算出该函数在该点的方向导数。
图 2 方向导数1
2.2 通俗理解方向导数
对于这个函数
z
=
f
(
x
,
y
)
z=f(x,y)
z=f(x,y),在点
(
x
0
,
y
0
,
z
0
)
(x_0,y_0,z_0)
(x0,y0,z0) 处的方向导数不唯一,沿着不同的方向都可以确定一个方向导数。这就好比我们现在处于山中的某一点,如果我们想下山,道路并不是唯一的,而是可以沿任何方向移动的。区别在于有些方向可以让我们下山的速度更快,有些方向让我们下山的速度更慢,有些方向甚至引导我们往山顶走(也可以理解为下山速度时负的)。这里的"速度的值"就是方向导数的直观理解。 (这一段话来自:终于理解了方向导数与梯度 )
2.3 和方向导数相关的公式
2.3.1 方向导数的定义公式
假设向量
l
\boldsymbol{l}
l 的单位方向向量为
l
0
=
(
cos
α
,
cos
β
)
\boldsymbol{l_0}=(\cos\alpha,\cos\beta)
l0=(cosα,cosβ),若下列极限存在,则该极限称为函数
z
=
f
(
x
,
y
)
z=f(x,y)
z=f(x,y)在点
(
x
0
,
y
0
)
(x_0,y_0)
(x0,y0) 处沿着方向
l
\boldsymbol{l}
l (也就是沿着向量
l
\boldsymbol{l}
l的方向) 的方向导数,记作:
∂
f
∂
l
∣
(
x
0
,
y
0
)
=
lim
t
→
0
+
f
(
x
0
+
t
cos
α
,
y
0
+
t
cos
β
)
−
f
(
x
0
,
y
0
)
t
\frac{\partial f}{\partial \boldsymbol{l}} |_{(x_0,y_0)}= \lim_{t \rightarrow 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)
我们可以结合下图3来理解上面的公式。从图3可以得出:方向向量
l
=
(
t
cos
α
,
t
cos
β
)
\boldsymbol{l}=(t\cos\alpha,t\cos\beta)
l=(tcosα,tcosβ),那么单位方向向量
l
0
=
(
cos
α
,
cos
β
)
\boldsymbol{l_0}=(\cos\alpha,\cos\beta)
l0=(cosα,cosβ);点A坐标
(
x
0
,
y
0
)
(x_0,y_0)
(x0,y0);点B坐标
(
x
0
+
t
cos
α
,
y
0
+
t
cos
β
)
(x_0+t\cos\alpha,y_0+t\cos\beta)
(x0+tcosα,y0+tcosβ);
t
t
t表示向量
l
\boldsymbol{l}
l 的模(大小)。自变量
(
x
,
y
)
(x,y)
(x,y)从A点
(
x
0
,
y
0
)
(x_0,y_0)
(x0,y0)走到了B点
(
x
0
+
t
cos
α
,
y
0
+
t
cos
β
)
(x_0+t\cos\alpha,y_0+t\cos\beta)
(x0+tcosα,y0+tcosβ),那么因变量
z
=
f
(
x
,
y
)
z=f(x,y)
z=f(x,y)也会发生改变,即变化量
△
z
=
f
(
x
0
+
t
cos
α
,
y
0
+
t
cos
β
)
−
f
(
x
0
,
y
0
)
\triangle z=f(x_0+t\cos \alpha,y_0+t\cos \beta)-f(x_0,y_0)
△z=f(x0+tcosα,y0+tcosβ)−f(x0,y0)。
图 3 方向导数2
所以函数
f
(
x
,
y
)
f(x,y)
f(x,y) 在某点
(
x
0
,
y
0
)
(x_0,y_0)
(x0,y0) 处沿着方向向量
l
\boldsymbol{l}
l 的方向导数(变化率)可以写成:
∂
f
∂
l
∣
(
x
0
,
y
0
)
=
lim
t
→
0
+
△
z
t
=
lim
t
→
0
+
f
(
x
0
+
t
cos
α
,
y
0
+
t
cos
β
)
−
f
(
x
0
,
y
0
)
t
\frac{\partial f}{\partial \boldsymbol{l}} |_{(x_0,y_0)}= \lim_{t \rightarrow 0^+} \frac{\triangle z}{t}= \lim_{t \rightarrow 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+limt△z=t→0+limtf(x0+tcosα,y0+tcosβ)−f(x0,y0)
对于上面的公式,如果
α
=
0
,
β
=
90
°
\alpha=0,\beta=90°
α=0,β=90°,那么方向向量
l
=
(
t
,
0
)
\boldsymbol{l}=(t,0)
l=(t,0),则方向向量
l
\boldsymbol{l}
l 平行于
x
x
x 轴,此时就变成了对
x
x
x 的偏导数了。如下公式所示:
∂
f
∂
l
∣
(
x
0
,
y
0
)
=
lim
t
→
0
+
f
(
x
0
+
t
,
y
0
)
−
f
(
x
0
,
y
0
)
t
=
f
x
′
(
x
0
,
y
0
)
\frac{\partial f}{\partial \boldsymbol{l}} |_{(x_0,y_0)}= \lim_{t \rightarrow 0^+} \frac{f(x_0+t,y_0)-f(x_0,y_0)}{t}=f^{'}_x(x_0,y_0)
∂l∂f∣(x0,y0)=t→0+limtf(x0+t,y0)−f(x0,y0)=fx′(x0,y0) 同理,如果
α
=
90
°
,
β
=
0
\alpha=90°,\beta=0
α=90°,β=0,那么方向向量
l
=
(
0
,
t
)
\boldsymbol{l}=(0,t)
l=(0,t),则方向向量
l
\boldsymbol{l}
l 平行于
y
y
y 轴,此时就变成了对
y
y
y 的偏导数了。如下公式所示:
∂
f
∂
l
∣
(
x
0
,
y
0
)
=
lim
t
→
0
+
f
(
x
0
,
y
0
+
t
)
−
f
(
x
0
,
y
0
)
t
=
f
y
′
(
x
0
,
y
0
)
\frac{\partial f}{\partial \boldsymbol{l}} |_{(x_0,y_0)}= \lim_{t \rightarrow 0^+} \frac{f(x_0,y_0+t)-f(x_0,y_0)}{t}=f^{'}_y(x_0,y_0)
∂l∂f∣(x0,y0)=t→0+limtf(x0,y0+t)−f(x0,y0)=fy′(x0,y0)
2.3.2 方向导数的计算公式
如果函数
z
=
f
(
x
,
y
)
z=f(x,y)
z=f(x,y) 在点 A
(
x
0
,
y
0
)
(x_0,y_0)
(x0,y0) 处可微,则函数
z
=
f
(
x
,
y
)
z=f(x,y)
z=f(x,y) 在点 A
(
x
0
,
y
0
)
(x_0,y_0)
(x0,y0) 处沿着任意方向的方向导数都存在,且方向导数为:
∂
f
∂
l
∣
(
x
0
,
y
0
)
=
f
x
′
(
x
0
,
y
0
)
cos
α
+
f
y
′
(
x
0
,
y
0
)
cos
β
\frac{\partial f}{\partial \boldsymbol{l}} |_{(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\alpha
cosα、
cos
β
\cos\beta
cosβ 是方向向量
l
\boldsymbol{l}
l 的方向余弦,或者说
cos
α
\cos\alpha
cosα、
cos
β
\cos\beta
cosβ 是单位向量
l
0
=
(
cos
α
,
cos
β
)
\boldsymbol{l_0}=(\cos\alpha,\cos\beta)
l0=(cosα,cosβ) 对应的
x
x
x和
y
y
y的坐标;
f
x
′
(
x
0
,
y
0
)
f^{'}_x(x_0,y_0)
fx′(x0,y0)是在
(
x
0
,
y
0
)
(x_0,y_0)
(x0,y0) 处对
x
x
x 的偏导数;
f
y
′
(
x
0
,
y
0
)
f^{'}_y(x_0,y_0)
fy′(x0,y0)是在
(
x
0
,
y
0
)
(x_0,y_0)
(x0,y0) 处对
y
y
y 的偏导数。
下面我推导一下上面的公式是怎样得到的(下面的推导看不看都行)。
∂
f
∂
l
∣
(
x
0
,
y
0
)
=
lim
t
→
0
+
f
(
x
0
+
t
cos
α
,
y
0
+
t
cos
β
)
−
f
(
x
0
,
y
0
)
t
=
lim
t
→
0
+
f
(
x
0
+
t
cos
α
,
y
0
+
t
cos
β
)
−
f
(
x
0
,
y
0
+
t
cos
β
)
t
+
lim
t
→
0
+
f
(
x
0
,
y
0
+
t
cos
β
)
−
f
(
x
0
,
y
0
)
t
(
此处,令
△
x
=
t
cos
α
,
△
y
=
t
cos
β
,
由此可得到:
)
=
lim
△
x
→
0
+
f
(
x
0
+
△
x
,
y
0
+
t
cos
β
)
−
f
(
x
0
,
y
0
+
t
cos
β
)
△
x
cos
α
+
lim
△
y
→
0
+
f
(
x
0
,
y
0
+
△
y
)
−
f
(
x
0
,
y
0
)
△
y
cos
β
=
f
x
′
(
x
0
,
y
0
)
cos
α
+
f
y
′
(
x
0
,
y
0
)
cos
β
\begin{align*} \frac{\partial f}{\partial \boldsymbol{l}} |_{(x_0,y_0)} =&\lim_{t \rightarrow 0^+} \frac{f(x_0+t\cos \alpha,y_0+t\cos \beta)-f(x_0,y_0)}{t} \\ =&\lim_{t \rightarrow 0^+} \frac{f(x_0+t\cos \alpha,y_0+t\cos \beta)-f(x_0,y_0+t\cos \beta)}{t} \\ & +\lim_{t \rightarrow 0^+} \frac{f(x_0,y_0+t\cos \beta)-f(x_0,y_0)}{t} \\ &(此处,令\triangle x=t\cos \alpha,\triangle y=t\cos \beta,由此可得到:) \\ =&\lim_{\triangle x \rightarrow 0^+} \frac{f(x_0+\triangle x,y_0+t\cos \beta)-f(x_0,y_0+t\cos \beta)}{\triangle x} \cos \alpha \\ & +\lim_{\triangle y \rightarrow 0^+} \frac{f(x_0,y_0+\triangle y)-f(x_0,y_0)}{\triangle y}\cos \beta \\ =& f^{'}_x(x_0,y_0)\cos\alpha+f_y^{'}(x_0,y_0)\cos\beta \end{align*}
∂l∂f∣(x0,y0)====t→0+limtf(x0+tcosα,y0+tcosβ)−f(x0,y0)t→0+limtf(x0+tcosα,y0+tcosβ)−f(x0,y0+tcosβ)+t→0+limtf(x0,y0+tcosβ)−f(x0,y0)(此处,令△x=tcosα,△y=tcosβ,由此可得到:)△x→0+lim△xf(x0+△x,y0+tcosβ)−f(x0,y0+tcosβ)cosα+△y→0+lim△yf(x0,y0+△y)−f(x0,y0)cosβfx′(x0,y0)cosα+fy′(x0,y0)cosβ
2.3.2 方向导数的例题
上面讲的都是二元函数
z
=
f
(
x
,
y
)
z=f(x,y)
z=f(x,y),对于三元函数
u
=
f
(
x
,
y
,
z
)
u=f(x,y,z)
u=f(x,y,z), 其方向导数公式如下:
∂
f
∂
l
∣
(
x
0
,
y
0
,
z
0
)
=
f
x
′
(
x
0
,
y
0
,
z
0
)
cos
α
+
f
y
′
(
x
0
,
y
0
,
z
0
)
cos
β
+
f
z
′
(
x
0
,
y
0
,
z
0
)
cos
γ
\frac{\partial f}{\partial \boldsymbol{l}} |_{(x_0,y_0,z_0)}= f^{'}_x(x_0,y_0,z_0)\cos\alpha+f_y^{'}(x_0,y_0,z_0)\cos\beta+f^{'}_z(x_0,y_0,z_0)\cos\gamma
∂l∂f∣(x0,y0,z0)=fx′(x0,y0,z0)cosα+fy′(x0,y0,z0)cosβ+fz′(x0,y0,z0)cosγ
其中,
cos
α
\cos\alpha
cosα、
cos
β
\cos\beta
cosβ 和
cos
γ
\cos\gamma
cosγ 是方向向量
l
\boldsymbol{l}
l 的方向余弦,或者说
cos
α
\cos\alpha
cosα、
cos
β
\cos\beta
cosβ 和
cos
γ
\cos\gamma
cosγ 是单位向量
l
0
=
(
cos
α
,
cos
β
,
cos
γ
)
\boldsymbol{l_0}=(\cos\alpha,\cos\beta,\cos\gamma)
l0=(cosα,cosβ,cosγ) 对应的
x
x
x、
y
y
y 和
z
z
z 的坐标;
f
x
′
(
x
0
,
y
0
,
z
0
)
f^{'}_x(x_0,y_0,z_0)
fx′(x0,y0,z0)是在
(
x
0
,
y
0
,
z
0
)
(x_0,y_0,z_0)
(x0,y0,z0) 处对
x
x
x 的偏导数;
f
y
′
(
x
0
,
y
0
,
z
0
)
f^{'}_y(x_0,y_0,z_0)
fy′(x0,y0,z0)是在
(
x
0
,
y
0
,
z
0
)
(x_0,y_0,z_0)
(x0,y0,z0) 处对
y
y
y 的偏导数;
f
z
′
(
x
0
,
y
0
,
z
0
)
f^{'}_z(x_0,y_0,z_0)
fz′(x0,y0,z0)是在
(
x
0
,
y
0
,
z
0
)
(x_0,y_0,z_0)
(x0,y0,z0) 处对
z
z
z 的偏导数。
经过我上面的解释,相信大家应该能看懂下面的例题解答。
图 4 例题
3.梯度
3.1 梯度定义
梯度是一个向量,它既有大小(其大小为最大的方向导数),也有方向。梯度指向函数增长最快的方向,即梯度的方向就是函数变化率(切线的斜率,偏导数)最大的方向。我在网上找到的梯度的定义如下:
图 5 梯度的定义
从上面的定义可知:梯度
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
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}
gradf(x0,y0)=∇f(x0,y0)=fx′(x0,y0)i+fy′(x0,y0)j。下面简单说一下,在向量表示中经常遇到的
i
、
j
、
k
\boldsymbol{i}、\boldsymbol{j}、\boldsymbol{k}
i、j、k 是什么意思。
在三维空间直角坐标系中,
i
、
j
、
k
\boldsymbol{i}、\boldsymbol{j}、\boldsymbol{k}
i、j、k 分别表示与
x
x
x 轴、
y
y
y 轴、
z
z
z 轴方向相同的单位向量,是表示空间向量的一组基底,坐标表示为:
i
=
(
1
,
0
,
0
)
、
j
=
(
0
,
1
,
0
)
、
k
=
(
0
,
0
,
1
)
\boldsymbol{i}=(1,0,0)、\boldsymbol{j}=(0,1,0)、\boldsymbol{k}=(0,0,1)
i=(1,0,0)、j=(0,1,0)、k=(0,0,1) 。在三维空间中,任何一个向量都可以通过这三个基向量(
i
、
j
、
k
\boldsymbol{i}、\boldsymbol{j}、\boldsymbol{k}
i、j、k)的线性组合来表示。例如:一个向量表示为
A
=
2
i
+
3
j
−
k
A=2\boldsymbol{i}+3\boldsymbol{j}-\boldsymbol{k}
A=2i+3j−k,表明
A
A
A 向量在
x
x
x 轴方向上延伸了2个单位;在
y
y
y 轴方向上延伸了3个单位;在
z
z
z 轴方向上缩短(负方向)了1个单位。直观理解就是:你可以把向量
A
=
2
i
+
3
j
−
k
A=2\boldsymbol{i}+3\boldsymbol{j}-\boldsymbol{k}
A=2i+3j−k 看成是从原点
(
0
,
0
,
0
)
(0,0,0)
(0,0,0) 到点
(
2
,
3
,
−
1
)
(2,3,-1)
(2,3,−1) 的一个箭头(或一个向量),这些系数
(
2
,
3
,
−
1
)
(2,3,-1)
(2,3,−1) 分别表示该箭头(向量)在三个坐标轴上的投影长度,在对应轴上的投影长度分别是 2、3 和 -1。
通过上面对
i
、
j
、
k
\boldsymbol{i}、\boldsymbol{j}、\boldsymbol{k}
i、j、k 的描述,我们应该知道梯度
g
r
a
d
f
(
x
0
,
y
0
)
=
∇
f
(
x
0
,
y
0
)
grad f(x_0,y_0)=\nabla f(x_0,y_0)
gradf(x0,y0)=∇f(x0,y0) 表示在
x
x
x 轴的投影长度为
f
x
′
(
x
0
,
y
0
)
f^{'}_x(x_0,y_0)
fx′(x0,y0),在
y
y
y 轴的投影长度为
f
y
′
(
x
0
,
y
0
)
f^{'}_y(x_0,y_0)
fy′(x0,y0)。我们还可以用另外一种方式来表示梯度,即
g
r
a
d
f
(
x
0
,
y
0
)
=
∇
f
(
x
0
,
y
0
)
=
(
f
x
′
(
x
0
,
y
0
)
,
f
y
′
(
x
0
,
y
0
)
)
(
i
,
j
)
grad f(x_0,y_0)=\nabla f(x_0,y_0)=(f^{'}_x(x_0,y_0),f^{'}_y(x_0,y_0))(\boldsymbol{i},\boldsymbol{j})
gradf(x0,y0)=∇f(x0,y0)=(fx′(x0,y0),fy′(x0,y0))(i,j),向量
(
f
x
′
(
x
0
,
y
0
)
,
f
y
′
(
x
0
,
y
0
)
)
(f^{'}_x(x_0,y_0),f^{'}_y(x_0,y_0))
(fx′(x0,y0),fy′(x0,y0))就是函数
f
(
x
,
y
)
f(x,y)
f(x,y)在点
(
x
0
,
y
0
)
(x_0,y_0)
(x0,y0) 处的梯度
g
r
a
d
f
(
x
0
,
y
0
)
grad f(x_0,y_0)
gradf(x0,y0)。
最后总结一下:多元函数
f
(
x
,
y
,
z
,
…
)
f(x,y,z,\ldots)
f(x,y,z,…) 在点
(
x
0
,
y
0
,
z
0
,
…
)
(x_0,y_0,z_0,\ldots)
(x0,y0,z0,…)处每个变量方向上的偏导数所组成的向量就是梯度,即
∇
f
(
x
0
,
y
0
,
z
0
,
…
)
=
(
f
x
′
,
f
y
′
,
f
z
′
,
…
)
\nabla f(x_0,y_0,z_0,\ldots) = (f^{'}_x,f^{'}_y,f^{'}_z,\ldots)
∇f(x0,y0,z0,…)=(fx′,fy′,fz′,…)。
3.2 梯度和方向导数的关系
方向导数是一个标量(数值),描述函数在特定方向上的变化率,是梯度与该单位方向向量的点积(或者说是梯度在单位方向向量上的投影)。函数在某点处的梯度是一个向量,在梯度方向上的方向导数最大,而梯度的模(大小)为方向导数的最大值。梯度的方向就是二元函数
f
(
x
,
y
)
f(x,y)
f(x,y) 在点
(
x
0
,
y
0
)
(x_0,y_0)
(x0,y0) 处增长最快的方向。二者之间的关系可以参考下图6:
图 6 梯度和方向导数的区别
(1)先解释一下:为什么
f
x
′
(
x
0
,
y
0
)
cos
α
+
f
y
′
(
x
0
,
y
0
)
cos
β
=
g
r
a
d
f
(
x
0
,
y
0
)
⋅
e
l
f^{'}_x(x_0,y_0)\cos\alpha+f_y^{'}(x_0,y_0)\cos\beta=grad f(x_0,y_0)\cdot e_l
fx′(x0,y0)cosα+fy′(x0,y0)cosβ=gradf(x0,y0)⋅el。
这是因为
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(x_0,y_0)\cos\alpha+f_y^{'}(x_0,y_0)\cos\beta=(f^{'}_x(x_0,y_0),f_y^{'}(x_0,y_0))\cdot(\cos\alpha,\cos\beta)
fx′(x0,y0)cosα+fy′(x0,y0)cosβ=(fx′(x0,y0),fy′(x0,y0))⋅(cosα,cosβ),将方向导数的计算转为向量的点积形式。我们从上面可知梯度
g
r
a
d
f
(
x
0
,
y
0
)
=
(
f
x
′
(
x
0
,
y
0
)
,
f
y
′
(
x
0
,
y
0
)
)
grad f(x_0,y_0)=(f^{'}_x(x_0,y_0),f_y^{'}(x_0,y_0))
gradf(x0,y0)=(fx′(x0,y0),fy′(x0,y0)),
e
l
=
(
cos
α
,
cos
β
)
e_l=(\cos\alpha,\cos\beta)
el=(cosα,cosβ)。所有上述等式成立。
(2)再解释一下:方向导数
∂
f
∂
l
∣
(
x
0
,
y
0
)
=
g
r
a
d
f
(
x
0
,
y
0
)
⋅
e
l
=
∣
g
r
a
d
f
(
x
0
,
y
0
)
∣
cos
θ
\frac{\partial f}{\partial \boldsymbol{l}} |_{(x_0,y_0)}=grad f(x_0,y_0) \cdot e_l=|grad f(x_0,y_0)| \cos\theta
∂l∂f∣(x0,y0)=gradf(x0,y0)⋅el=∣gradf(x0,y0)∣cosθ。即:方向导数是梯度与该单位方向向量的点积(或者说是梯度在单位方向向量上的投影)
我们知道梯度
g
r
a
d
f
(
x
0
,
y
0
)
grad f(x_0,y_0)
gradf(x0,y0) 是一个向量,
e
l
e_l
el是单位方向向量。因此方向导数的计算可以转换为两个向量的点乘(点积、内积),计算向量的点乘有两种方式:
点积表示:
a
⋅
b
=
a
1
b
1
+
a
2
b
2
+
⋯
+
a
n
b
n
\boldsymbol{a} \cdot \boldsymbol{b}=a_1b_1+a_2b_2+⋯+a_nb_n
a⋅b=a1b1+a2b2+⋯+anbn;几何表示:
a
⋅
b
=
∣
a
∣
⋅
∣
b
∣
cos
θ
\boldsymbol{a} \cdot \boldsymbol{b}=|a|\cdot|b|\cos\theta
a⋅b=∣a∣⋅∣b∣cosθ。 关于向量的描述可以参考:向量——通俗地解释
基于向量点乘的几何表示法,我们可知:
g
r
a
d
f
(
x
0
,
y
0
)
⋅
e
l
=
∣
g
r
a
d
f
(
x
0
,
y
0
)
∣
⋅
∣
e
l
∣
cos
θ
grad f(x_0,y_0) \cdot e_l=|grad f(x_0,y_0)| \cdot |e_l| \cos\theta
gradf(x0,y0)⋅el=∣gradf(x0,y0)∣⋅∣el∣cosθ,由于
e
l
e_l
el 是单位向量,所以模
∣
e
l
∣
=
1
|e_l|=1
∣el∣=1。进而我们可以得到
g
r
a
d
f
(
x
0
,
y
0
)
⋅
e
l
=
∣
g
r
a
d
f
(
x
0
,
y
0
)
∣
⋅
cos
θ
grad f(x_0,y_0) \cdot e_l=|grad f(x_0,y_0)| \cdot \cos\theta
gradf(x0,y0)⋅el=∣gradf(x0,y0)∣⋅cosθ。
(3)最后解释一下:梯度方向上的方向导数最大,而梯度的模(大小、值)是方向导数中的最大值。 从下图7我们可以看出:单位方向向量
e
l
e_l
el 指向不同的角度时,向量
e
l
e_l
el 与梯度
g
r
a
d
f
(
x
0
,
y
0
)
grad f(x_0,y_0)
gradf(x0,y0)的夹角
θ
\theta
θ 是不一样的 ,那么
cos
θ
\cos \theta
cosθ 的值不同的。从上面可知:方向导数
∂
f
∂
l
∣
(
x
0
,
y
0
)
=
g
r
a
d
f
(
x
0
,
y
0
)
⋅
e
l
=
∣
g
r
a
d
f
(
x
0
,
y
0
)
∣
cos
θ
\frac{\partial f}{\partial \boldsymbol{l}} |_{(x_0,y_0)}=grad f(x_0,y_0) \cdot e_l=|grad f(x_0,y_0)| \cos\theta
∂l∂f∣(x0,y0)=gradf(x0,y0)⋅el=∣gradf(x0,y0)∣cosθ,梯度的模
∣
g
r
a
d
f
(
x
0
,
y
0
)
∣
|grad f(x_0,y_0)|
∣gradf(x0,y0)∣是固定不变的,因此当单位方向向量
e
l
e_l
el 指向不同的角度时,其方向导数是不同的。其中:
当
θ
=
0
\theta=0
θ=0时,单位方向向量
e
l
e_l
el与梯度方向处于同一方向,此时方向导数取最大值,且最大值为梯度的模(大小、值)。即:沿着梯度方向上的方向导数最大,而梯度的模(大小、值)是方向导数中的最大值;当
θ
=
π
2
\theta=\frac{\pi}{2}
θ=2π时,单位方向向量
e
l
e_l
el与梯度方向正交(两向量垂直,点积为0),此时方向导数为0;当
θ
=
π
\theta={\pi}
θ=π时,单位方向向量
e
l
e_l
el与梯度方向相反,此时方向导数为最小值。
图 7 梯度和方向导数的关系
扩展理解:依然采用下山的例子来解释。我们想要走到山下,道路有千万条,但总有一条可以让我们以最快的速度下山。当然,这里的最快速度仅仅作用在当前的位置点上(局部最优并不是全局最优),也就是说在当前位置A我们选择一个方向往山下走,走了一步之后到达了另外一个位置B,然后我们在B位置计算梯度方向,并沿该方向到达位置处c,重复这个过程一直到终点。但是,如果我们把走的每一步连接起来构成下山的完整路线,这条路线可能并不是下山的最快最优路线。
原因是什么?可以用一句古诗来解释:“不识庐山真面目,只缘身在此山中。”因为我们在山上的时候是不知道山的具体形状的,因此无法找到一条全局最优路线。那我们只能关注脚下的路,将每一步走好,这就是梯度下降法的原理。
扩展一下: (1)对于一个多元函数
f
(
x
,
y
,
z
,
…
)
f(x,y,z,…)
f(x,y,z,…),我们通常使用
▽
f
\bigtriangledown f
▽f表示该函数的梯度,包含了函数在每个变量方向上的偏导数。即:
▽
f
=
(
∂
f
∂
x
,
∂
f
∂
y
,
∂
f
∂
z
,
…
)
\bigtriangledown f=(\frac{\partial f}{\partial \boldsymbol{x}},\frac{\partial f}{\partial \boldsymbol{y}},\frac{\partial f}{\partial \boldsymbol{z}},…)
▽f=(∂x∂f,∂y∂f,∂z∂f,…)。 (2)对于一个多元函数
f
(
x
,
y
,
z
,
…
)
f(x,y,z,…)
f(x,y,z,…)和单位向量
u
\boldsymbol{u}
u,其在点 P 的方向导数
D
u
f
D_uf
Duf 可以表示为
D
u
f
=
▽
f
⋅
u
D_uf=\bigtriangledown f \cdot \boldsymbol{u}
Duf=▽f⋅u 以后遇见这些特殊的符号能知道啥意思就行,我觉得反正本质上并没有啥区别,但符号表示就是不一样(吐槽一下:明明很简单、通俗易懂的东西,有时候就非得用一些所谓高大上、装B的数学符号、数学公式来描述、来表示,因为这样才会显得有水平。唉,难搞啊,搞不懂为什么会这样。我只是发个牢骚,简单吐槽一下,没有别的意思。其实既然存在,那么应该有它存在的道理)。
参考文章:
终于理解了方向导数与梯度 如何理解梯度(方向导数的最大值) 方向导数和梯度的直观理解,为什么梯度方向函数变化最快?