zoukankan      html  css  js  c++  java
  • 小谈导数、梯度和极值

    [转载请注明出处] http://www.cnblogs.com/jerrylead

    记得在高中做数学题时,经常要求曲线的切线。见到形如clip_image002之类的函数,不管三七二十一直接求导得到clip_image004,这就是切线的斜率,然后clip_image006就得到了clip_image008处的切线。

    上大学又学习了曲面切线和法向量的求法,求偏导是法向量,然后套公式求出切线。

    一个经典例子如下:

    clip_image001

    (来自web上某个《几何应用》ppt)

    其中的向量n是F(x,y,z)的偏导数。

    然而,这两者求法看似无关啊,clip_image003中求得的clip_image005是切线,然而下面的求偏导后却是法向量,为啥都是求导,差别这么大呢?切平面的方程为啥又是与法向量有关呢?

    当然这些问题的问答都可以通过严格的数学推导完成。这里想从更加直白的角度来说明道理。

    首先,法向量(梯度)是F(X)(其中X={x0,x1,x2,…xn}是n维向量)对各个分量求偏导后的结果,代表了F(X)在各个方向的变化率,整个法向量就是F(X)在各个方向上变化率叠加出来的向量。如对于一维的F(x)=clip_image007,在x上导数是2x,意味着在x方向上是以2x的速度变化,比如当x=2时,F(x)变化率为4大于当x=1时(变化率为2)的变化率,法向量的方向只能是x方向,因为F(X)是一维。这里的F(X)称为隐函数,如我们平时使用的clip_image003[1]使用隐函数就可以表示成F(x,y)=f(x)-y,这样其实F(x,y)是二维的。至于为什么导数就是变化率,可以通过导数的定义就可以知道了(微小的dx变化引起多大的dy变化)。

    那么我们明白了,隐函数F(X)的法向量就是F(X)对各个分量的偏导数的向量。那么为何clip_image003[2]中求得的clip_image005[1]是切线,而不是法向量?其实我们不能搞混了隐函数F(X)和clip_image003[3]。隐函数是一个函数,它的值根据X的取值不同而不同。而clip_image003[4]只是x和y之间满足的约束关系,如建立x-y坐标,两者的约束关系可以通过图形(直线、曲线等)来表示。比如我们可以用clip_image009来表示一条抛物线,而且能够在x-y坐标系下画出来。而换用隐函数表示就是F(x,y)=clip_image011,只有当F(x,y)等于一个给定值(比如0时),它才是一条抛物线,否则它只是一个函数,如果用z来代替F(x,y),那么F(x,y)其实是一个曲面,维度上升了1。我们对F(x,y)求偏导后的结果其实就是F(x,y)的值z的变化率。

    clip_image002[4]

    说明F(x,y)的值究竟将在(x,y)的小范围能变化多少,这个变化率决定于x方向上的微小变换dx和y方向上微小变换dy的线性组合,而他们的系数就是偏导数。将dx和dy换成单位向量i和j就是法向量了。那么梯度也就反映了F(X)在某一点的变化率和变换方向。

    说的有点绕口,简而言之,对于一个隐函数F(X),我们想知道在给定X附近F(X)的变化方向和大小。怎么去刻画?由于X的各个方向(x0,x1,x2…xn)上变化速率和方向都不同(比如在x0上以平方级别变化,在x1上以线性方式变化,这个要根据具体的表达式了),而我们想知道他们叠加在一块是怎么变化的。我们使用全微分公式(比如上面的clip_image002[6],可以知道他们之间的叠加系数就是偏导数,叠加结果就是变化率,而方向就是x0,x1,x2…相应的变化方向i,j,k…等线性组合得到的方向。

    回到为什么“clip_image003[5]中求得的clip_image005[2]是切线”的问题,其实这是最终结论了,是推导出来的。第一步我们将clip_image003[6]写成隐函数(这里的x,y都是实数了,上面的X是向量),clip_image017

    然后求F对x的偏导得clip_image019=clip_image005[3]

    求F对y的偏导得-1。

    即梯度是clip_image021

    由于切线和法向量是垂直的,因此切线和法向量内积为0。

    设切线方向向量为(m,n),那么clip_image023,即clip_image002[8]

    可见,切线斜率是clip_image027

    回到上面蓝色图片中的曲面求切平面问题,求出某点的法向量后,在该点的切平面要满足两个条件,一是要过切点,而是要反映出该点的变化方向(这里不是该点F(X)值的变化方向,而是该点自己的变化方向)。然而该点的变化最终要反映出该点F(X)值的变化,也就是切平面的变化要反映出法向量的变化,而偏导数正是反映出了F(X)值的变化。因此切平面的偏导数与F(X)的偏导数是一样的。我们从蓝色图片中看到,切平面正是利用了F(X)的偏导数。

    有上面的全微分公式,我们可以更好地理解极值,为什么常说函数取得极值的时候导数为0呢。假设一维情况,clip_image029吧,要求极小值,两边微分后得clip_image031,当x=0时,导数2x为0,取得极值。否则,如果x为正数,那么dx只需向左调整(dx<0),就能使F(x)值变小,如果x为负数,那么dx只需向右调整(dx>0),就能使F(x)变小。因此最后调整结果是x=0。对于二维情况,clip_image002[4]

    clip_image033的值在计算后会有正负值,但我们应该注意到dx可正可负,dy也可正可负,只要clip_image033[1]有一个不为0,那么通过调整dx,dy的正负号(也就是确定怎么移动x和y)就可以使clip_image015[1]的值变大变小。只有在偏导数都是0的情况下,无论如何调整dx和dy,clip_image002[6]都是0,取得极值。

    以上只是一些个人浅显理解,目的是建立感性认识,会存在一些纰漏。

  • 相关阅读:
    对scott中emp表进行各种操作
    可兼容的事件绑定方法
    深度复制
    原型链的继承
    如何在github上发布自己的项目
    用单例连接oracle数据库
    Struts2之输入验证
    JSP之监听器Listener(二)
    JSP之监听器Listener(一)————————ServletContextListener
    JSP之过滤器Filter
  • 原文地址:https://www.cnblogs.com/jerrylead/p/1978280.html
Copyright © 2011-2022 走看看