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+lim​tf(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+lim​t△z​=t→0+lim​tf(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+lim​tf(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+lim​tf(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+lim​tf(x0​+tcosα,y0​+tcosβ)−f(x0​,y0​)​t→0+lim​tf(x0​+tcosα,y0​+tcosβ)−f(x0​,y0​+tcosβ)​+t→0+lim​tf(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=a1​b1​+a2​b2​+⋯+an​bn​;几何表示:

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

Du​f 可以表示为

D

u

f

=

f

u

D_uf=\bigtriangledown f \cdot \boldsymbol{u}

Du​f=▽f⋅u 以后遇见这些特殊的符号能知道啥意思就行,我觉得反正本质上并没有啥区别,但符号表示就是不一样(吐槽一下:明明很简单、通俗易懂的东西,有时候就非得用一些所谓高大上、装B的数学符号、数学公式来描述、来表示,因为这样才会显得有水平。唉,难搞啊,搞不懂为什么会这样。我只是发个牢骚,简单吐槽一下,没有别的意思。其实既然存在,那么应该有它存在的道理)。

参考文章:

终于理解了方向导数与梯度 如何理解梯度(方向导数的最大值) 方向导数和梯度的直观理解,为什么梯度方向函数变化最快?