zoukankan      html  css  js  c++  java
  • 多变量微积分笔记5——梯度与方向导数

      梯度一词有时用于斜度,也就是一个曲面沿着给定方向的倾斜程度。

      梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。

      在单变量的实值函数的情况,梯度只是导数,或者,对于一个线性函数,也就是线的斜率。

      本篇涉及到的一些知识点可参考下面的链接:

    1. 向量:《线性代数笔记2——向量(向量简介)
    2. 点积:《线性代数笔记3——向量2(点积)
    3. 平面和法向量:《线性代数笔记5——平面方程与矩阵
    4. 向量方程和直线的参数方程:《线性代数笔记6——直线和曲线的参数方程

    梯度的定义

      如果w = w(x, y, z), x = x(t), y = y(t), z = z(t),根据上篇介绍的链式法则:

     

      如果设w 是一个综合了w所有偏导数的向量,dr/dt是w变化速率的向量(速度向量),即:

      这样原式就可以简写为▽w和dr/dt的点积:

     

      ▽w就是梯度向量,简称梯度。对于函数w定义域上的任意x, y, z,都可以得到一个对应的梯度向量,所以也说w是w在某一点(x, y, x)上的梯度。由定义可以看到,梯度包含了偏导和导数的信息。

    梯度垂直于等值面

      梯度的一个重要性质是:如果令w是一个常数,则梯度向量垂直于原函数的等面值。

      在平面直角坐标系中,对于圆的方程w(x, y) = x2 + y2 = C,w = C,在w上的任意一点(x, y)做梯度向量:

     

      w⊥等值线,即对于任意(x, y)的梯度▽w,都有▽w⊥w(x, y)

      对于多元函数也是如此,此时梯度是垂直于函数等值面的空间向量。

      先来看最简单的线性方程,w(x, y, z) = a1x + a2y + a3z,假设它的等值面是a1x + a2y + a3z = C,此时w的梯度:

     

      a1x + a2y + a3z = C的法向量也是< a1, a2, a3>,所以对于平面来说,法向量就是梯度向量。

      对于更复杂的三元函数,每个梯度都垂直于相应的等高线:

     

    垂直的原因

      可以通过三元函数对梯度垂直于等值面加以证明。

      三元函数的等值面w(x, y , z) = C是一个曲面,等值面上的一条曲线向量是r = r(t):

      对于等值面上的曲线来说,它的速度向量:

     

      如果点在w上移动,在任一点上的速度向量v和曲线r相切;由于r在w上,所以速度向量v与曲面w相切。

     

      链式法则告诉我们w的值是由w的梯度向量和速度向量的点积决定的:

     

      由于w是等值面,所以:

     

      由于点积为0,所以▽w⊥v。对于任意方向的速度向量v,它们都源于同一点P,并且将共同组成一个曲线在该点的切平面,▽w垂直于这个切平面,也就是▽w在 P点与等值面垂直。

     

      从上面的论述得知,梯度向量垂直于函数在某点的等值面,等同于梯度垂直于在该点处的切面,梯度向量就是切平面的法向量。由此我们可以根据某点的梯度求得函数在该点处的切平面。

    找出切平面

      示例:找出x2 + y2 – z2 = 4在(2, 1, 1)处的切平面

      这相当于 w(x, y, z) = x2 + y2 – z2在w = 4时的等值面。在(2, 1, 1)点处:

      也就是切平面的法向量是<4, 2, -2>,切平面是:

    4x + 2y – 2z = C

      将(2, 1, 1)代入切平面后,C = 8,最终得到切平面:

    2x + y – z = 4

      下图就是这个不怎么好看的三维图形:

    方向导数

    什么是方向导数

      方向导数是梯度向量的重要应用。

      w = w(x, y)的偏导wx和wy衡量了点在x轴和y轴移动时w的变化,那么如果在其它方向移动呢?是否在任意方向上都有一个导数呢?答案是肯定的,那就是方向导数。

    几何意义

      对于w(x, y)来说,偏导的几何意义是平行于x轴或y轴方向的垂直平面上截线的斜率。类似的,方向导数就是某一方向上垂直平面截线在该方向的斜率,如下图所示:

      P1和P2点沿着u方向切线的斜率就是这两点在u方向上的方向导数。

    计算方向导数

      点沿着x轴或y轴移动会产生一系列向量,如果沿着其它方向——例如某个单位向量u的方向——移动会如何?也就是给出一个单位向量u,沿着u的方向移动,函数值的会变化有多快?如下图所示,z = w(x, y)是一个多元函数,在某点(x, y)处开始,有一个单位向量u,问题是:当w上的对应点沿着u的方向变化时,函数w的值变化的有多快?

      先来看看直线的轨迹。如果以单位速度沿着u的方向运动,设s是运动的距离,轨迹向量r是点运动的轨迹,因为是直线,所以s = |r|。现在设轨迹向量r是关于运动距离的函数,r = r(s),那么r的变化率是单位向量u,也就是r的导数dr/ds = u

      我们真正关注的是沿着r的方向运动时,w的变化率是什么?也就是说,我们从一点开始,沿着某个方向改变变量(不一定是x或y的方向,可以是任意方向,比如这里r的方向),它的方向导数是什么?也就是dw/ds = ?

      u是和r同向的单位向量,现在将u作为下标代入dw/ds,表示沿u方向移动的导数:

      这就是在u方向上的方向导数的公式。

      如果把u写成两个方向的分量,u = <a, b>,u方向上的方向导数实际上也是梯度向量▽w在u方向上的分量:

      例如在x轴方向的方向导数,就等于x轴方向的分量,设x轴方向的单位向量是i,则:

     

      根据点积的定义,两个向量的点积等于这两个向量的模的乘积乘以二者的夹角余玄,这可以得到方向导数的第二个公式:

     

      最终,方向导数的计算公式是:

    梯度的意义

      现在再来看看梯度告诉了我们什么。

      方向导数计算了梯度向量在u方向上的分量,让我们试着找出w在哪个方向上变化的最快,哪个方向上变化最慢或者根本不变。

      由于已知w函数和w上的一点,所以梯度是已知的,不确定的是方向根据方向导数的公式可以得到以下结论:

     

      由此得到了梯度的一种理解:梯度的方向是在给定点处令w的值增加得最快的方向;或者说在给定点处朝梯度方向运动,w的值将变化的最剧烈,变化率,也就是斜率等于梯度的模长。梯度的反方向,w的值减小的最快;梯度垂直的方向,也就是与等值面相切的方向,w不变。如果把w看作爬山,w上的给定点是你站立的位置,那么梯度方向就是向上爬山时最陡峭的地方,梯度的逆向就是向下爬时最陡峭的地方,梯度垂直方向就是站立点的等高线。在等高线上,梯度总是指向值最大的方向:

     综合示例

    示例1

      求z = x3 + 3xy2在(1, 2, 13)处的切平面。

      

      切平面的法向量是<15, 12, -1>,切平面是15x + 12y – z = C。代入(1, 2, 13),C = 26

      也可以根据点积求得切平面。(x, y, z)是切平面上的点,由于法向量与切面向量垂直,故:

      这将得到相同的切平面15x + 12y – z = 26

    示例2

      求x3 + 2xy + y2 = 9在(1, 2)处的切线。

      切线是7x + 6y = C。代入(1, 2),C = 19

    示例3

      计算函数在P点处v方向的梯度。

     

      

     

      

      首先计算一下fx,似乎有些混乱,如果简化为一元函数就清晰多了:

      用y和z替换a和b,就得到f关于x的偏导,同理可得fy,fz

     

      

     

     


       出处:微信公众号 "我是8位的"

       本文以学习、研究和分享为主,如需转载,请联系本人,标明作者和出处,非商业用途! 

       扫描二维码关注作者公众号“我是8位的”

  • 相关阅读:
    python的多线程问题
    python 调用函数时使用星号 *, **
    python正则中的贪婪与非贪婪
    python中文处理
    Python 模块之 ConfigParser: 用 Python 解析配置文件
    substr使用注意
    [转]互联网后台服务的协议设计
    Java设计模式从精通到入门四 工厂方法模式
    logback中logger详解
    logback实践笔记
  • 原文地址:https://www.cnblogs.com/bigmonkey/p/8400658.html
Copyright © 2011-2022 走看看