多个变量的函数

  1. 比如, w=f(x,y)w=f(x,y)w=f(x,y)是三维空间中的曲面, w=f(x,y,z)w=f(x,y,z)w=f(x,y,z)是四维空间中的曲面.
  2. 对于定义域是平面的函数 f(x,y)f(x,y)f(x,y), 我们定义 等高线(level curve, contour curve) f(x,y)=kf(x,y)=kf(x,y)=k 为二维曲线, 可以由 w=kw=kw=k 得到, 其中 kkk 是一个常数.
  3. 对于定义域是三维的函数f(x,y,z)f(x,y,z)f(x,y,z), 我们相应的可以定义 等高面(level surfaces) f(x,y,z)=kf(x,y,z)=kf(x,y,z)=k.
  4. 等高线是z=f(x,y)z=f(x,y)z=f(x,y)和z=kz=kz=k两个曲面的交叉, 另一个定义traces是z=f(x,y)z=f(x,y)z=f(x,y)与x=kx=kx=k 或 y=ky=ky=k的交叉.

See https://tutorial.math.lamar.edu/classes/calciii/MultiVrbleFcns.aspx#LevelCurve example 4 for more visual illustrations.

偏导数

偏导数的定义很简单,比如说对于一个函数 f(x1,x2,...,xn)f(x_1,x_2,...,x_n)f(x1​,x2​,...,xn​), fff 对 xix_ixi​ 的偏导即为
∂f∂xi=lim⁡α→0f(x1,x2,...,xi+α,...,xn)−f(x1,x2,...,xn)α\frac{\partial f}{\partial x_i}=\lim_{\alpha\rightarrow 0}\frac{f(x_1,x_2, ..., x_i+\alpha,...,x_n)-f(x_1,x_2,...,x_n)}{\alpha}∂xi​∂f​=α→0lim​αf(x1​,x2​,...,xi​+α,...,xn​)−f(x1​,x2​,...,xn​)​
即,当沿着 [0,...,α,...,0][0,...,\alpha,...,0][0,...,α,...,0]的方向移动时, fff的变化快慢. 注意对于偏导数而言, 方向固定为[0,...,α,...,0][0,...,\alpha,...,0][0,...,α,...,0]这是在Rn\mathbb{R}^nRn中移动的. 如果n=2n=2n=2,那实际上方向是二维的,就只在水平面上移动, 这个偏导数的大小就是沿着给定方向变化的快慢.

方向导数

那么如果我们想看fff沿着Rn\mathbb{R}^nRn任一方向的变化快慢 (而不仅仅是bases的方向), 就得用到方向导数了. 定义如下:

f(x1,x2,...,xn)f(x_1,x_2,...,x_n)f(x1​,x2​,...,xn​) 沿着方向 t=(t1,t2,...,tn)⊤\bm{t}=(t_1,t_2,...,t_n)^\topt=(t1​,t2​,...,tn​)⊤ (通常t\bm{t}t模长为1) 的方向导数为
Dtf(x1,x2,...,xn)=lim⁡α→0f(x1+t1α,x2+t2α,...,xn+tnα)−f(x1,x2,...,xn)αD_\bm{t} f(x_1,x_2,...,x_n)=\lim_{\alpha\rightarrow 0}\frac{f(x_1+t_1\alpha,x_2+t_2\alpha, ...,x_n+t_n\alpha)-f(x_1,x_2,...,x_n)}{\alpha}Dt​f(x1​,x2​,...,xn​)=α→0lim​αf(x1​+t1​α,x2​+t2​α,...,xn​+tn​α)−f(x1​,x2​,...,xn​)​
=∂f∂x1t1+∂f∂x2t2+...+∂f∂xntn=\frac{\partial f}{\partial x_1}t_1+\frac{\partial f}{\partial x_2}t_2+...+\frac{\partial f}{\partial x_n}t_n=∂x1​∂f​t1​+∂x2​∂f​t2​+...+∂xn​∂f​tn​

定义gradient
∇f=[∂f∂x1,∂f∂x2,...,∂f∂xn]⊤\nabla f=\left[\frac{\partial f}{\partial x_1}, \frac{\partial f}{\partial x_2}, ...,\frac{\partial f}{\partial x_n}\right]^\top∇f=[∂x1​∂f​,∂x2​∂f​,...,∂xn​∂f​]⊤
f(x)f(\bm{x})f(x)沿着 t\bm{t}t 的方向导数可以更简洁的写为
Dtf(x)=(∇f)⊤⋅tD_t f(\bm{x})=(\nabla f)^\top \cdot \bm{t}Dt​f(x)=(∇f)⊤⋅t
where x,t∈Rn\bm{x}, \bm{t}\ \in\mathbb{R}^nx,t ∈Rn.

注意:梯度gradient是一个方向(且只在Rn\mathbb{R}^nRn上), 方向导数则是一个数(沿着某一方向的变化率).

  • 当 t\bm{t}t和∇f\nabla f∇f同向时,方向导数最大, 函数上升速度最快; 反向时,方向导数最小(负的),
    函数下降速度最快.
  • 对于f(x1,x2,..,xn)f(x_1,x_2,..,x_n)f(x1​,x2​,..,xn​), 它在t=(t1,t2,...,tn)\bm{t}=(t_1,t_2,...,t_n)t=(t1​,t2​,...,tn​)处的梯度与等高面f(x1,x2,..,xn)=kf(x_1,x_2,..,x_n)=kf(x1​,x2​,..,xn​)=k正交,
    其中f(x1,x2,..,xn)=kf(x_1,x_2,..,x_n)=kf(x1​,x2​,..,xn​)=k经过t\bm{t}t.

    => 令等高面为 S\mathcal{S}S, t\bm{t}t在S\mathcal{S}S上, 且S\mathcal{S}S上的任意一条经过t\bm{t}t的curve都与 ∇f(x1,x2,..,xn)\nabla f(x_1,x_2,..,x_n)∇f(x1​,x2​,..,xn​) 正交

曲面的两种写法

好,最后我们来看看高维曲面的切平面和法向量.

首先, 我们知道一个曲面有两种写法

[第一种写法]
z=f(x1,x2,...,xn)z=f(x_1,x_2,...,x_n)z=f(x1​,x2​,...,xn​)

第一种写法表示 (x1,x2,...,xn)(x_1,x_2,...,x_n)(x1​,x2​,...,xn​) 的定义域在一个 nnn 维空间中, 自变量只能在这个空间中到处跑然后zzz取得不同的值. 所以当我们算任意一点的 gradient 时 – 这里的任意一点指的是(x1,x2,...,xn)(x_1,x_2,...,x_n)(x1​,x2​,...,xn​), 一般是optimization 问题的定义域
∇f(x1,x2,...,xn)=[∂f∂x1,∂f∂x2,⋯,∂f∂xn]⊤\nabla f(x_1,x_2,...,x_n)=\left[ \frac{\partial f}{\partial x_1},\frac{\partial f}{\partial x_2} , \cdots, \frac{\partial f}{\partial x_n} \right]^\top∇f(x1​,x2​,...,xn​)=[∂x1​∂f​,∂x2​∂f​,⋯,∂xn​∂f​]⊤

他表示的是一个 nnn维空间的向量, 在任意一点都指示着接下来往哪走是函数上升最快的方向.

[第二种写法]

F(x1,x2,...,xn,z)=f(x1,x2,...,xn)−z=0F(x_1,x_2,...,x_n,z)=f(x_1,x_2,...,x_n)-z=0F(x1​,x2​,...,xn​,z)=f(x1​,x2​,...,xn​)−z=0

不同于第一种写法,这种写法是将 f(x1,x2,...,xn)f(x_1,x_2,...,x_n)f(x1​,x2​,...,xn​) 描述为 一个 n+1n+1n+1 维空间中一个图形 F(x1,x2,...,xn,z)F(x_1,x_2,...,x_n,z)F(x1​,x2​,...,xn​,z) 的一个截面: 若令 w=F(x1,x2,...,xn,z)w=F(x_1,x_2,...,x_n,z)w=F(x1​,x2​,...,xn​,z), 那么 f(x1,x2,...,xn)f(x_1,x_2,...,x_n)f(x1​,x2​,...,xn​) 是 w=F(x1,x2,...,xn,z)w= F(x_1,x_2,...,x_n,z)w=F(x1​,x2​,...,xn​,z) 和 w=0w=0w=0 的截面.

若对 FFF 求gradient, 那么这个 gradient 实际上是一个 n+1n+1n+1 维的向量 – “任意一点的梯度” 这句话中的任意一点是 (x1,x2,...,xn,z)(x_1,x_2,...,x_n,z)(x1​,x2​,...,xn​,z)
∇F(x1,x2,...,xn,z)=[∂F∂x1,∂F∂x2,⋯,∂F∂xn,∂F∂z]⊤\nabla F(x_1,x_2,...,x_n,z)=\left[ \frac{\partial F}{\partial x_1},\frac{\partial F}{\partial x_2} , \cdots, \frac{\partial F}{\partial x_n}, \frac{\partial F}{\partial z} \right]^\top∇F(x1​,x2​,...,xn​,z)=[∂x1​∂F​,∂x2​∂F​,⋯,∂xn​∂F​,∂z∂F​]⊤

=[∂f∂x1,∂f∂x2,⋯,∂f∂xn,−1]⊤= \left[ \frac{\partial f}{\partial x_1},\frac{\partial f}{\partial x_2} , \cdots, \frac{\partial f}{\partial x_n}, -1 \right]^\top=[∂x1​∂f​,∂x2​∂f​,⋯,∂xn​∂f​,−1]⊤

注意,这个梯度的前 nnn 项与 第一种写法下的梯度 ∇f(x1,x2,...,xn)\nabla f(x_1,x_2,...,x_n)∇f(x1​,x2​,...,xn​) 是完全一致的, 是同一个方向, 因此,

  • ∇f(x1,x2,...,xn)\nabla f(x_1,x_2,...,x_n)∇f(x1​,x2​,...,xn​)是 ∇F(x1,x2,...,xn,z)\nabla F(x_1,x_2,...,x_n,z)∇F(x1​,x2​,...,xn​,z) 在 Rn\mathbb{R}^nRn 上的投影

切平面, 法向量, 法线

现在让我们想想, 对于fff上任意一点 (t1,t2,...,tn,tz)(t_1,t_2,...,t_n, t_z)(t1​,t2​,...,tn​,tz​), where tz=f(t1,t2,...,tn)t_z=f(t_1,t_2,...,t_n)tz​=f(t1​,t2​,...,tn​), 我们怎么写出它的切平面 tangent (hyper) plane) 和 法线 normal line. 显然, 如果我们用第一种写法, 是得不到的因为他只限于nnn 维空间. 而切平面 和 法线 实际上都是 n+1n+1n+1 维空间的. 所以我们采用第二种写法.

已知:

  1. 曲面上任意一点的 gradient 与 该surface垂直. 所以这个gradient是法向量.
    => 这个可以由上一节最后的结论推出: n+1n+1n+1 维函数 FFF 令 k=0k=0k=0.
  2. 曲面上任意一点的切平面由 所有与法向量垂直的高维直线 构成.

则有: 切平面
[∇F(x,z)]⊤[x1−t1,x2−t2,...,xn−tn,z−tz]⊤=0\left[\nabla F(\bm{x},z)\right]^\top [x_1-t_1,x_2-t_2,...,x_n-t_n, z-t_z]^\top= 0[∇F(x,z)]⊤[x1​−t1​,x2​−t2​,...,xn​−tn​,z−tz​]⊤=0

[∂f∂x1,∂f∂x2,⋯,∂f∂xn,−1][x1−t1,x2−t2,...,xn−tn,z−tz]⊤=0\left[ \frac{\partial f}{\partial x_1},\frac{\partial f}{\partial x_2} , \cdots, \frac{\partial f}{\partial x_n}, -1 \right] [x_1-t_1,x_2-t_2,...,x_n-t_n, z-t_z]^\top=0[∂x1​∂f​,∂x2​∂f​,⋯,∂xn​∂f​,−1][x1​−t1​,x2​−t2​,...,xn​−tn​,z−tz​]⊤=0

从这个式子中,我们也能得到第一种表达方式下的切平面方程. Let x=(x1,x2,...,xn,z)⊤\bm{x} = (x_1,x_2,...,x_n, z)^\topx=(x1​,x2​,...,xn​,z)⊤, t=(t1,t2,...,tn,tz)⊤\bm{t} = (t_1,t_2,...,t_n, t_z)^\topt=(t1​,t2​,...,tn​,tz​)⊤,

[∇f(x1,x2,...,xn)]⊤(x−t)+f(t1,t2,...,tn)=z[\nabla f(x_1,x_2,...,x_n) ]^\top (\bm{x}-\bm{t}) + f(t_1,t_2,...,t_n) = z[∇f(x1​,x2​,...,xn​)]⊤(x−t)+f(t1​,t2​,...,tn​)=z

最后我们来求法线. 已知,

  1. 法向量是 ∇F(x1,x2,...,xn,z)\nabla F(x_1,x_2,...,x_n,z)∇F(x1​,x2​,...,xn​,z)
  2. 法线过点(t1,t2,...,tn,tz)(t_1,t_2,...,t_n, t_z)(t1​,t2​,...,tn​,tz​)

hyperplane中的一条线可以用参数方程表示: 任意一个向量, 比如∇F(x1,x2,...,xn,z)\nabla F(x_1,x_2,...,x_n,z)∇F(x1​,x2​,...,xn​,z), scale之后可以用来表示穿过原点的一条直线上的所有点, 若我们在这个向量上再加一个vector,就可以让他平行的移动了. 所以, 法线的参数方程为

(t1,t2,...,tn,tz)+t∇F(x1,x2,...,xn,z)(t_1,t_2,...,t_n, t_z)+t\nabla F(x_1,x_2,...,x_n,z)(t1​,t2​,...,tn​,tz​)+t∇F(x1​,x2​,...,xn​,z)

Reference:
https://tutorial.math.lamar.edu/classes/calciii/DirectionalDeriv.aspx#Gradient_Defn
https://tutorial.math.lamar.edu/classes/calciii/gradientvectortangentplane.aspx

高维曲面: 方向导数, 梯度, 切平面, 法向量相关推荐

  1. 高等数学:第八章 多元函数微分法及其应用(3)方向导数 梯度 多元函数的极值

    §8.7  方向导数与梯度 一.方向导数 1.定义 设函数在点的某一邻域内有定义,自点引射线,设轴正向到射线的转角为,为邻域内且在上的另一点. 若比值 这里,当沿着趋向于时的极限存在,称此极限值为函数 ...

  2. [Machine Learning] 方向导数梯度(Directional Derivative Gradient)

    方向导数 首先,我们先来讨论一下函数 y = f ( x 1 , x 2 ) y = f(x_1,x_2) y=f(x1​,x2​)在一点P沿某一方向的变化率问题. 假设函数 y = f ( x 1 ...

  3. 全微分/偏导数/方向导数/梯度/全导数

    1.偏导数 参考 :导数.偏导数.方向导数 就是对某一变量求导,把其他变量作为常数 2.方向导数 可以认为偏导数是特殊的方向导数,是在自变量方向上的方向导数. 任意方向导数为: 3.梯度 参考: 导数 ...

  4. 借助可视化,最直观理解梯度,以及偏导数、方向导数和法向量等

    ↑ 点击蓝字 关注视学算法 作者丨shine-lee@博客园 来源丨https://www.cnblogs.com/shine-lee/p/11715033.html 编辑丨极市平台 写在前面 梯度是 ...

  5. 太赞了!借助可视化,最直观理解梯度,以及偏导数、方向导数和法向量等

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者丨shine-lee@博客园 来源丨https://ww ...

  6. 直观理解梯度,以及偏导数、方向导数和法向量等

    博客:blog.shinelee.me | 博客园 | CSDN 写在前面 梯度是微积分中的基本概念,也是机器学习解优化问题经常使用的数学工具(梯度下降算法),虽然常说常听常见,但其细节.物理意义以及 ...

  7. 理解偏导数、梯度、方向导数

    偏导数 我们都知道导数是一元函数的变化率,衡量每个x位置处的瞬间变化率. 偏导数是针对多变量函数而言的,它通过将多变量函数退化成一元函数分别求各自的导数.以二元函数为例: Z = F(x,y) 求x的 ...

  8. 关于方向导数和梯度你真的懂了吗?

    文章目录 前言 一.空间曲线的切线与法平面 二.曲面的切平面与法线 三.方向导数和梯度 梯度的几何意义 总结 前言 方向导数和梯度是多元函数微分学中两个抽象的概念,如果对它们没有深刻的理解,那么就会感 ...

  9. 优化问题---梯度、方向导数、法线

    目 总结: 1.方向导数 2.梯度 3 法向量 总结: 方向导数:是一个数:反映的是f(x,y)在P0点沿方向v的变化率. 偏导数:是多个数(每元有一个):是指多元函数沿坐标轴方向的方向导数,因此二元 ...

  10. 彻底搞明白梯度下降算法1:方向导数与梯度概念理解

    预备知识点:斜率与变化率 方向导数 梯度 总结 1.预备知识点:斜率与变化率 斜率: 数学.几何学名词,是表示一条直线(或曲线的切线)关于横坐标轴倾斜程度的量.它通常用直线(或曲线的切线)与横坐标轴夹 ...

最新文章

  1. linux终端字体大小6,[adminitrative][archlinux][setfont] 设置console的字体大小
  2. 微软亚洲互联网工程院招聘NLP算法工程师、AI应用科学家
  3. 5月第2周编辑部标题训练:寻找读者最关注的新闻点
  4. KEIL-MDK编译错误问题解决办法
  5. MySQL中的BLOB类型
  6. 【默认加入持久化机制,防止消息丢失,v0.0.3】对RabbitMQ.Client进行一下小小的包装,绝对实用方便...
  7. caffe开始训练自己的模型(转载并验证过)
  8. 如何设计一个安全对外的接口
  9. 【LeetCode笔记】33. 搜索旋转排序数组(Java、二分法)
  10. nacos1.2(1.3)的下载及CentOS7下安装nacos
  11. 20150823 命令练习总结
  12. 通过镜像快速搭建本地yum源
  13. 【夯实PHP基础】PHP的反射机制
  14. linux一键安装aria2,Centos7下安装Aria2教程 之 Aria2 一键安装管理脚本
  15. 点亮LED灯——arduino 学习第一天
  16. 有道云笔记中轻松驾驭职场框架图
  17. 寄存柜程序模拟(C语言)
  18. 本科数学基础差的感觉 SLAM 很难,如何去提高?
  19. 浅谈ACX带通滤波器应用
  20. bitcoin源码分析

热门文章

  1. 一文说透所有期权基本交易策略
  2. 青果教务php,拟物校园 | 拟物校园,一个高校教务系统爬虫,现支持正方教务、青果教务。...
  3. sql 语句高级用法常用合集
  4. Android Dialog宽度设置固定大小
  5. winserver2012设置开机自启动
  6. 北京市电动自行车产品目录 汇总查询
  7. 2021-2027全球与中国相控阵校准测试系统市场现状及未来发展趋势
  8. html的外部调用函数,如何在HTML中调用外部JavaScript函数
  9. ENVI遥感图像处理方法(第二版) 邓书斌 及实验数据
  10. matlab catia程序,利用VBA进行CATIA二次开发的基本流程 | 坐倚北风