在上文中展示了方向导数背后的概念。要点是,给定一个多变量的标量值函数 f : R n → R ( c o n f u s e d ? ) f:\bold R^n \to \bold R(\color{red}{confused?)} f:Rn→R(confused?)
方向导数 D u f D_uf Duf是在任意给定单位向量 u \bold u uf斜率的偏微分统一形式。梯度 ∇ f \nabla f ∇f是最大向上斜率对应方向上的一个向量,并且它的长度方向导数在这个方向上的长度方向导数是梯度和单位向量点乘结果: D u f = ∇ f ⋅ u D_uf = \nabla f \cdot \bold u Duf=∇f⋅u这个介绍缺少一个重要的信息:梯度的切确含义是什么?怎样从f计算出它?实际上计算梯度还是相当简单的,当然你得知道一个函数可导意味着什么。
在点 x = a \bold x= \bold a x=a一个函数 f ( x ) f(\bold x) f(x)可导意味着什么?这个函数在一个极小区间基本上线性得,这是微积分得基本概念,比如这里必须可以线性逼近。 L ( x ) = f ( a ) + D f ( a ) ( x − a ) L(\bold x) = f(\bold a) + Df(\bold a)(\bold x-\bold a) L(x)=f(a)+Df(a)(x−a) 对于所有靠近 a \bold a a得 x \bold x x,这个值与 f ( x ) f(\bold x) f(x)非常近似。可导的定义意味着,对所有从 a \bold a a出发的方向, f ( x ) f(\bold x) f(x)和 L ( x ) L(\bold x) L(x)有相同的斜率。这样我们就可以用 L L L来代替 f f f来计算在 x \bold x x点上f的方向导数。
使用方向导数的定义,我们能计算沿着 u \bold u u方向,在 a \bold a a点 f f f的方向导数: D u f ( a ) = D u L ( a ) = lim h → 0 L ( a + h u ) − L ( a ) h = lim h → 0 f ( a ) + D f ( a ) ( a + h u − a ) − ( f ( a ) + D f ( a ) ( a − a ) ) h = lim h → 0 D f ( a ) ( h u ) h = lim h → 0 D f ( a ) u = D f ( a ) u \begin{aligned} D_uf(\bold a) &= D_uL(\bold a) = \lim_{\mathclap{h\to0}} {{L(\bold a+h\bold u) - L(\bold a)} \over {h}}\\ &= \lim_{\mathclap{h\to0}} {{f(\bold a) + Df(\bold a)({\bold a + h\bold u - \bold a}) - (f(\bold a) + Df(\bold a)(\bold a-\bold a))} \over {h}}\\ &= \lim_{\mathclap{h\to0}} {{Df(\bold a)({h\bold u}) } \over {h}} = \lim_{\mathclap{h\to0}} {{Df(\bold a){\bold u} } } = Df(\bold a)u \end{aligned} Duf(a)=DuL(a)=h→0limhL(a+hu)−L(a)=h→0limhf(a)+Df(a)(a+hu−a)−(f(a)+Df(a)(a−a))=h→0limhDf(a)(hu)=h→0limDf(a)u=Df(a)u 因为 D f ( x ) Df(\bold x) Df(x)是一个 1 × n 1 \times n 1×n的行向量,并且u是一个 n × 1 n \times 1 n×1的列向量,它们相乘将会得到一个标量。我们也可以重写这个公式,把它表示两个向量的点乘形式。把 1 × n 1 \times n 1×n偏导数矩阵写成一个向量,并将其记录为 ∇ f \nabla f ∇f,并将其称为梯度。我们可以得到方向导数: D u f ( a ) = ∇ f ( a ) ⋅ u D_uf(\bold a) = \nabla f(\bold a) \cdot \bold u Duf(a)=∇f(a)⋅u