方向导数和梯度

今天我们来讨论一下什么是方向导数,什么是梯度,以及为什么沿着梯度的反方向移动会让函数值减小得最快。首先我们了解一下偏导数。偏导数的概念非常容易理解,例如下图,z=x2+y2,x与y形成的二维平面上,每个点(对应一组xy值)都能在z的函数图像上找到对应的投影点,这个点的高度就是z值的大小。z对x的偏导数就在保持变量y大小不变的情况下(粉色切面上y值均相等),沿着x轴的方向,z变化的值与x变化的值之比,也就是图一中切线的斜率。

图一:三维空间中某点处沿着x的偏导数方向的切线

反过来,我们也可以求出z对y的偏导数。然而,xy平面上的点也可以向着不同于x和y轴的方向移动,此时z值的变化率会各不相同,自然也不等于偏导数。如何求出在某点处让z值变化最快的方向?我们需要完成以下分析。
1. 定义方向导数
首先明确,随着xy平面上的点沿着一个方向变化一个单位,z的变化值应当定义为沿着该方向的方向导数,即沿着某个方向的导数。如图二所示,假设从A点向B点移动t个单位,即在x轴方向上移动了tcos θ 的距离,在y轴上移动了 tcos β 的距离。当这个θ 等于0时,就是x的偏导数(当θ 等于90度时等于y的偏导数)。所以我们说偏导数是方向导数的一种特殊情况。

图二:沿某方向移动t个单位
2. 计算方向导数
由全微分公式

ΔZ=fxΔx+fyΔy+o((x2+y2)1/2)

可以推出,由x和y两个自变量组成的函数,其方向导数的计算公式为:

f(x0+tcosα,y0+tsinα)f(x0,y0)=fxtcosα+fytsinα+o(t)

(因为在上例的移动过程中共移动了t个单位,x的变化量即为tcosα,y同理)
两边同时除t,我们就很自然地得到了以下的方向导数公式:

(f(x0+tcosα,y0+tsinα)f(x0,y0))/t=fxcosα+fysinα

当t趋向于无穷小时,等号左侧即为我们要求的方向导数
3. 推导方向导数的最大值
数学中,我们把由 某个函数全部偏导数 组成的向量称为函数的梯度。在第二步中我们获得的这个公式,其意义是可以进一步将fx,fy两个偏导数抽离出来组成梯度,将cos α 和 cos β同样抽离出来,组成一个方向向量。这样方向导数就可以写成是梯度与方向导数的内积。根据我们的向量知识,两个向量的内积,即为方向向量投影到梯度向量上的长度,与梯度向量长度的乘积。由于在某一点处梯度向量是确定的,方向向量的长度也是固定的1,因此只有当方向向量与梯度向量共线时,也就是夹角 α 为0时取到最大值。因此我们可以说,当我们沿着梯度方向移动一个点时,会获得最大的方向导数,也就是说此时函数值的变化程度最大。当我们想要尽可能减小函数值时,应该沿着梯度方向的反方向移动。

图三:方向导数的最值求解

posted @   小丑与锁鸟  阅读(138)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示