1. 方向余弦
在二维空间中(X-Y平面),向量
l
=
(
a
,
b
)
\boldsymbol{l}=(a,b)
l=(a,b),这个向量
l
\boldsymbol{l}
l 与坐标轴x和y的夹角分别为
α
\alpha
α 和
β
\beta
β ,如下图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+b2a、
cos
β
=
b
a
2
+
b
2
\cos\beta=\frac{b}{\sqrt{a^2+b^2}}
cosβ=a2+b2b,且
(
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+b2a,a2+b2b)=(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.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)。
所以函数
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 的偏导数。
经过我上面的解释,相信大家应该能看懂下面的例题解答。
3.梯度
3.1 梯度定义
梯度是一个向量,它既有大小(其大小为最大的方向导数),也有方向。梯度指向函数增长最快的方向,即梯度的方向就是函数变化率(切线的斜率,偏导数)最大的方向。我在网上找到的梯度的定义如下:
从上面的定义可知:梯度 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:
(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与梯度方向相反,此时方向导数为最小值。
扩展理解:依然采用下山的例子来解释。我们想要走到山下,道路有千万条,但总有一条可以让我们以最快的速度下山。当然,这里的最快速度仅仅作用在当前的位置点上(局部最优并不是全局最优),也就是说在当前位置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的数学符号、数学公式来描述、来表示,因为这样才会显得有水平。唉,难搞啊,搞不懂为什么会这样。我只是发个牢骚,简单吐槽一下,没有别的意思。其实既然存在,那么应该有它存在的道理)。
参考文章: