方向导数公式的证明
方向导数的计算公式
方向导数 \(D_\mathbf{u}f(\mathbf{x})\) 衡量了函数 \(f\) 在点 \(\mathbf{x}\) 处沿单位向量 \(\mathbf{u}\) 方向的变化率。要证明 \(D_\mathbf{u}f(\mathbf{x}) = \nabla f(\mathbf{x}) \cdot \mathbf{u}\),我们可以使用多元函数链式法则。
首先,我们用极限来定义方向导数:
这个表达式与单变量函数导数的定义非常相似,它测量的是当自变量从 \(\mathbf{x}\) 沿着 \(\mathbf{u}\) 方向移动一小段距离 \(h\) 时,函数值的变化率。
为了计算这个极限,我们引入一个辅助函数。
定义一个单变量函数 \(g(t) = f(\mathbf{x} + t\mathbf{u})\)。
- 这里的 \(t\) 是一个标量,代表沿着 \(\mathbf{u}\) 方向移动的距离。
- 当 \(t=0\) 时,\(g(0) = f(\mathbf{x})\)。
- 当 \(t=h\) 时,\(g(h) = f(\mathbf{x} + h\mathbf{u})\)。
利用这个辅助函数,\(D_\mathbf{u}f(\mathbf{x})\) 的极限定义可以写成:
这个极限正是函数 \(g(t)\) 在 \(t=0\) 处的导数,即 \(g'(0)\)。$$D_\mathbf{u}f(\mathbf{x}) = g'(0)$$
现在,我们只需计算 \(g'(t)\),然后将 \(t=0\) 代入即可。我们可以使用多元函数链式法则来完成这个任务。
设 \(\mathbf{y}(t) = \mathbf{x} + t\mathbf{u}\)。这里,\(\mathbf{y}(t)\) 是一个向量函数,它的分量为:
\(\mathbf{y}(t) = (x_1 + tu_1, x_2 + tu_2, \dots, x_n + tu_n)\)
其中 \(\mathbf{x} = (x_1, \dots, x_n)\) 且 \(\mathbf{u} = (u_1, \dots, u_n)\)。
根据链式法则,
我们计算每个分量对 \(t\) 的导数:
\(\frac{dy_i}{dt} = \frac{d}{dt}(x_i + tu_i) = u_i\)
将这些代入链式法则公式,且由于这里的 \(\frac{\partial f}{\partial y_i}\) ,由于最终求的是 \(g'(0)\) ,所以 \(y(0) = x + 0 u = x\), 故可以把\(\frac{\partial f}{\partial y_i}\) 变为 \(\frac{\partial f}{\partial x_i}\)。
这个和式可以用向量点积的形式简洁地表示:
左边的向量就是梯度 \(\nabla f(\mathbf{x})\),右边的向量就是方向向量 \(\mathbf{u}\)。
所以,我们得到:
由于 \(D_\mathbf{u}f(\mathbf{x}) = g'(0)\),且 \(\frac{dg}{dt}\) 与 \(t\) 无关,我们最终证明了:
这个公式的意义在于,它将方向导数(一个关于方向的概念)与梯度(一个固定的向量)联系起来,为计算任意方向上的变化率提供了一个简单、统一的方法。
“滥用符号”的问题
在数学推导中很常见的“符号替换”或“滥用符号”的现象。
1. 我们的目标:计算 \(g'(t)\)
我们的任务是计算单变量函数 \(g(t) = f(\mathbf{y}(t))\) 的导数,其中 \(\mathbf{y}(t) = \mathbf{x} + t\mathbf{u}\)。
根据链式法则,我们得到:
这里的 \(\frac{\partial f}{\partial y_i}\) 是函数 \(f\) 对其第 \(i\) 个输入变量的偏导数。
关键点来了:当我们写出 \(\frac{\partial f}{\partial y_i}\) 时,它是在函数 \(f\) 的自变量是向量 \(\mathbf{y}\) 时计算的。具体来说,这个偏导数是在点 \(\mathbf{y}(t)\) 处计算的。所以,更严谨的写法应该是:
2. 为什么可以“替换”?
我们再看一眼 \(\mathbf{y}(t)\) 的定义:\(\mathbf{y}(t) = \mathbf{x} + t\mathbf{u}\)。
这意味着 \(\mathbf{y}\) 的分量是:\(y_i = x_i + tu_i\)。
在我们的证明中,\(\mathbf{x}\) 是一个固定的点,而 \(\mathbf{y}\) 是一个从\(\mathbf{x}\)出发,沿着方向 \(\mathbf{u}\) 运动的点。
当我们在讨论 \(f(\mathbf{y})\) 的偏导数时,我们是在讨论函数 \(f\) 在任意点 \(\mathbf{y}\) 处的偏导数。
而当我们在讨论 \(f(\mathbf{x})\) 的偏导数时,我们是在讨论函数 \(f\) 在特定点 \(\mathbf{x}\) 处的偏导数。
在最终的推导中,我们需要的其实是 \(g'(0)\),也就是 \(t=0\) 时的导数。
当 \(t=0\) 时:
由于 \(\mathbf{y}\) 的分量是:\(y_i = x_i + tu_i\)。带入 \(t=0\) 后可知 \(y_i = x_i + 0*u_i = x_i\)
即 当 \(t=0\) 时,\(y_i = x_i\)
所以,整理后得:
3. “滥用符号”的解释
在数学写作中,尤其是在一些教科书或推导中,为了简化符号,人们常常会省略对自变量的显式标记。
- 严谨的写法:\(\frac{\partial f}{\partial y_i}(\mathbf{y}(t))\),明确表示偏导数是在 \(\mathbf{y}(t)\) 点计算的。
- 简化的写法:\(\frac{\partial f}{\partial y_i}\),没有明确指出是在哪个点计算的。
当推导进行到 \(\frac{dg}{dt} = \sum_{i=1}^{n} \frac{\partial f}{\partial y_i} \frac{dy_i}{dt}\) 时,作者知道最终我们关心的是 \(t=0\) 时的值。而当 \(t=0\) 时,\(\mathbf{y}(0) = \mathbf{x}\)。所以,这里的 \(\frac{\partial f}{\partial y_i}\) 实际上就是在点 \(\mathbf{x}\) 处计算的偏导数。
因此,“这里的 \(\frac{\partial f}{\partial y_i}\) 已经根据链式法则的规则被视为 \(\frac{\partial f}{\partial x_i}\)” 实际上是一种符号上的简化。它意味着,因为我们最终关心的就是 \(t=0\) 的情况(也就是在 \(\mathbf{x}\) 点),所以我们可以把符号 \(\frac{\partial f}{\partial y_i}\) 视为与 \(\frac{\partial f}{\partial x_i}\) 是同一个东西,因为它都代表了函数 \(f\) 在点 \(\mathbf{x}\) 对其第 \(i\) 个自变量的偏导数。
简而言之,虽然在推导过程中我们使用了辅助变量 \(\mathbf{y}\),但由于最终的求导是在 \(\mathbf{x}\) 点进行的,所以这些偏导数本质上就是函数 \(f\) 在点 \(\mathbf{x}\) 处的偏导数。