文章目录

  • 梯度(gradient)
    • 什么是梯度
    • 差分形式
  • 散度(divergence)
  • 拉普拉斯算子(Laplace Operator)
    • 差分形式

梯度(gradient)

什么是梯度

开始这个话题之前,我想先引入梯度算子,写作▽\triangledown▽ 函数式写作 grad(x)grad(x)grad(x),对于二维或者三维来说,就写作grad(x,y,z)grad(x, y, z)grad(x,y,z)。你在教科书上能见到它的解析式表达形式,如果对于三维空间来说,就写作

grad(x,y,z)=▽f=∂f∂xi+∂f∂yj+∂f∂zkgrad(x, y, z)=\triangledown f = \frac{\partial f}{\partial x} i + \frac{\partial f}{\partial y}j + \frac{\partial f}{\partial z}kgrad(x,y,z)=▽f=∂x∂f​i+∂y∂f​j+∂z∂f​k

其中 iii jjj kkk表示在x, y, z轴上的向量分量,如果不太清楚这个表达形式的同学,可能需要翻看一下自己高中数学关于向量分量描述的相关章节了。

因为这个公式是个偏微分的表达形式,例如对于X轴上,用差分形式进行表达,就是这样的:

∂f∂x=f(x+Δxo,y,z)−f(x,y,z)Δxo\frac{\partial f}{\partial x} = \frac{f(x + \Delta x_o, y, z) - f(x, y, z)}{ \Delta x_o}∂x∂f​=Δxo​f(x+Δxo​,y,z)−f(x,y,z)​

因此,分别对于Y轴,Z轴来说,就分别是这样的:

∂f∂y=f(x,y+Δyo,z)−f(x,y,z)Δyo\frac{\partial f}{\partial y} = \frac{f(x, y + \Delta y_o, z) - f(x, y, z)}{ \Delta y_o}∂y∂f​=Δyo​f(x,y+Δyo​,z)−f(x,y,z)​

∂f∂z=f(x,y,z+Δzo)−f(x,y,z)Δzo\frac{\partial f}{\partial z} = \frac{f(x, y, z + \Delta z_o) - f(x, y, z)}{ \Delta z_o}∂z∂f​=Δzo​f(x,y,z+Δzo​)−f(x,y,z)​

差分形式

而对于计算机来说,通常我们令Δxo=Δyo=Δzo=1\Delta x_o = \Delta y_o = \Delta z_o = 1Δxo​=Δyo​=Δzo​=1,然后常用的一种差分形式就可以表示如下:

∂f∂x≈f(x+1,y,z)−f(x,y,z)\frac{\partial f}{\partial x} \approx f(x +1, y, z) - f(x, y, z)∂x∂f​≈f(x+1,y,z)−f(x,y,z)

∂f∂y≈f(x,y+1,z)−f(x,y,z)\frac{\partial f}{\partial y} \approx f(x, y +1, z) - f(x, y, z)∂y∂f​≈f(x,y+1,z)−f(x,y,z)

∂f∂z≈f(x,y,z+1)−f(x,y,z)\frac{\partial f}{\partial z} \approx f(x, y, z +1) - f(x, y, z)∂z∂f​≈f(x,y,z+1)−f(x,y,z)

所以你也看出来了,所谓的梯度,用大白话讲,就是对于某一点它分别在X轴上、Y轴上以及Z轴上的斜率。

散度(divergence)

你会发现它跟梯度算子很相似,写作▽⋅F⃗\triangledown \cdot \vec{F}▽⋅F 在很多书上它被简写成这样 ▽⋅F\triangledown \cdot F▽⋅F 区别在于多了一个点乘符号。

你或许会觉得梯度散度长得很像,有区别吗?我个人理解其实区别并不大,因为散度的解析式也写成这样的形式:

div(F)=▽⋅F=∂Fx∂x+∂Fy∂y+∂Fz∂zdiv(F) = \triangledown \cdot F = \frac{\partial F_x}{\partial x} + \frac{\partial F_y}{\partial y} + \frac{\partial F_z}{\partial z}div(F)=▽⋅F=∂x∂Fx​​+∂y∂Fy​​+∂z∂Fz​​

形式上两者是很相似的,尽管梯度写作:

grad(x,y,z)=▽f=∂f∂xi+∂f∂yj+∂f∂zkgrad(x, y, z)=\triangledown f = \frac{\partial f}{\partial x} i + \frac{\partial f}{\partial y}j + \frac{\partial f}{\partial z}kgrad(x,y,z)=▽f=∂x∂f​i+∂y∂f​j+∂z∂f​k

但可以把梯度里的 fff 和向量分量做一个映射,变成一个新的向量后,就可以得到这样一个表达式:

F⃗(x,y,z)=xi⃗+yj⃗+zk⃗\vec{F}(x,y,z)=x \vec i + y \vec j+z \vec kF(x,y,z)=xi+yj​+zk

于是梯度就能转换为散度的表达形式:

▽⋅F⃗=∂Fi∂i+∂Fj∂j+∂Fk∂k\triangledown \cdot \vec F = \frac{\partial F_i}{\partial i} + \frac{\partial F_j}{\partial j} + \frac{\partial F_k}{\partial k}▽⋅F=∂i∂Fi​​+∂j∂Fj​​+∂k∂Fk​​

所以,实际上我们关心的其实只有梯度算子▽\triangledown▽。

要说这两者最大表示区别,我觉得是在于这两者观察角度的不同。举例来说,梯度是在给定欧式空间坐标后,研究在这空间里类似山脊一侧某一点的坡度的斜率。

而散度,则是在流场中的某一点,放置一个探测器,计算该点的速度、密度、热量的变化率。

如果观察坐标系,可以发现对于梯度来说,其坐标系在外,观察点位于坐标系中任意一个点上。而散度,它的坐标系通常表示为它自身,即以观察点为中心,建立XYZ坐标系。

也就是说,如果你把梯度的观察点设置为欧式空间坐标的原点,那么此刻的梯度和散度就是一回事了。

拉普拉斯算子(Laplace Operator)

在介绍完梯度和散度后,现在来介绍拉普拉斯算子:它写作 △\triangle△ 或者 ▽2\triangledown^2▽2 解析式写为:

▽2=∂2∂x2+∂2∂y2+∂2∂z2\triangledown^2 = \frac{\partial^2}{\partial x^2} + \frac{\partial^2}{\partial y^2}+\frac{\partial^2}{\partial z^2}▽2=∂x2∂2​+∂y2∂2​+∂z2∂2​

它表示梯度或者散度的变化率,即变化率的变化率。如果举一个经典的变化率的变化率,那无疑就是经典力学的加速度公式

vt=vo+atv_t = v_o + atvt​=vo​+at

使用拉普拉斯算子的重要物理意义,在于假设一个场分别在XYZ分量上的变化都是线性的,那么可以直接使用拉普拉斯算子,直接估测出距离测试点PoP_oPo​ (ΔX,ΔY,ΔZ)(\Delta X, \Delta Y, \Delta Z)(ΔX,ΔY,ΔZ)的某一点 PtP_tPt​ 上的物理值,例如速度、密度、热量等。估算方式可以简单到如同求解加速度一样。

那么它的差分形式的近似表达式又是什么呢,从1阶差分形式可以知道

▽f(x)=f(x+1)−f(x)\triangledown f(x) = f(x +1) - f(x)▽f(x)=f(x+1)−f(x)

那么它的二阶形式就表示为:

▽2f(X)=▽f(X+1)−▽f(X)\triangledown^2f(X) = \triangledown f(X+1) - \triangledown f(X)▽2f(X)=▽f(X+1)−▽f(X)

代入一阶差分,于是就可以得到

▽2f(x)=f(x+2)−2f(x+1)+f(x)\triangledown^2f(x) = f(x+2) - 2f(x+1) + f(x)▽2f(x)=f(x+2)−2f(x+1)+f(x)

差分形式

所以,对于拉普拉斯算子,它的向前差分形式的各XYZ上的差分计算方法即为:

∂2∂x2≈f(x+2,y,z)−2f(x+1,y,z)+f(x,y,z)\frac{\partial^2}{\partial x^2} \approx f(x+2, y, z) - 2f(x+1, y, z) + f(x, y, z)∂x2∂2​≈f(x+2,y,z)−2f(x+1,y,z)+f(x,y,z)
∂2∂y2≈f(x,y+2,z)−2f(x,y+1,z)+f(x,y,z)\frac{\partial^2}{\partial y^2} \approx f(x, y+2, z) - 2f(x, y+1, z) + f(x, y, z)∂y2∂2​≈f(x,y+2,z)−2f(x,y+1,z)+f(x,y,z)
∂2∂z2≈f(x,y,z+2)−2f(x,y,z+1)+f(x,y,z)\frac{\partial^2}{\partial z^2} \approx f(x, y, z+2) - 2f(x, y, z+1) + f(x, y, z)∂z2∂2​≈f(x,y,z+2)−2f(x,y,z+1)+f(x,y,z)

当然,在弄懂这个原理后,你可以自行推导出它的向后差分形式,或者中央差分形式的表达式,这里只做一个引子。

浅谈矢量场 —— 1. 梯度、散度与拉普拉斯算子相关推荐

  1. 搞清Δ,梯度, 方向导数,散度,拉普拉斯算子

    搞清Δ,∇,\Delta, \nabla,Δ,∇, 方向导数,散度,拉普拉斯算子 符号 解释 Δ\DeltaΔ 它体现在公式中ΔT,Δx,Δy\Delta T,\Delta x,\Delta yΔT, ...

  2. 梯度与散度与拉普拉斯算子

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

  3. 【机器学习】浅谈正规方程法梯度下降

  4. Robert算子、Sobel算子、拉普拉斯算子

    文章目录 1.Robert算子 2.Sobel算子 3.拉普拉斯算子 4.结果 1.Robert算子 // 1. Robert算子cv::Mat gray;cv::Mat dstRoX;cv::Mat ...

  5. sobel算子 拉普拉斯算子以及散度与梯度的概念

    在ECBSR论文的代码研究中,我发现关于ECBSR提出的多分支重参数化模型中,代码用到了sobel算子与laplace算子,很难判断这两个算子是为了论文的创新点还是真的有用,这块只能等待后续的对比实验 ...

  6. 梯度,散度,拉普拉斯算子

    综述 说到mesh上的处理技巧,拉普拉斯绝对是关键的一环,比如surface smoothing, parameterization and shape modeling等等都是十分重要的. 人们常说 ...

  7. matlab 梯度 什么意思,浅谈Matlab中的梯度(gradient)

    浅谈Matlab中的梯度(gradient) 发布时间:2018-05-01 22:22, 浏览次数:461 , 标签: Matlab gradient 梯度(gradient)是函数在改点变化最大的 ...

  8. KL距离,Kullback-Leibler Divergence 浅谈KL散度

    KL距离,是Kullback-Leibler差异(Kullback-Leibler Divergence)的简称,也叫做相对熵(Relative Entropy).它衡量的是相同事件空间里的两个概率分 ...

  9. 梯度、散度、旋度、拉普拉斯算子、高斯散度定理

    关于梯度.散度.旋度,笔者之前转载过一篇文章: 如何直观形象地理解梯度.散度.旋度 本文(后文)内容是笔者在阅读<Fluid Simulation for Computer Graphics&g ...

最新文章

  1. (53)进程结构体EPROCESS,擦除 DebugPort 实现反调试,ActiveProcessLinks 断链实现进程隐藏
  2. linux地柜查找文件_linux-find【递归搜索文件名】
  3. VTK:PolyData之ShrinkPolyData
  4. WEB前端学习四 js什么是原始类型
  5. springboot报错---No identifier specified for entity: com.example.demo.entity.User
  6. c语言基础符号,C语言符号大全。陆续更新基础知识给新人提供。(申精)
  7. 利用 opencv 中的 cv.Canny 函数快速进行图像边缘检测
  8. VS2008下的配置opencv
  9. OpenGL超级宝典(第7版)之清单的初始环境配置VS2019
  10. 2013年度最强AngularJS资源合集
  11. 机器学习与深度学习常见面试题
  12. 全面了解三极管——三极管基本参数2
  13. 备战数学建模36-时间序列模型2
  14. 自学白帽黑客的第一年总结
  15. 那些年我看过的书 —— 致敬我的大学生活 —— Say Good Bye !
  16. linux 安装与卸载ProFTPd
  17. 设计模式 -- 组合模式(Composite)
  18. Scratch少儿编程案例-算法练习-存款收益计算
  19. 基于逻辑回归的鸢尾花分类
  20. 斐波那契数列求和——C语言(小白版)

热门文章

  1. matlab 行 读取文件 跳过_MATLAB对于文本文件(txt)数据读取的技巧总结(经典中的经典)...
  2. QorIQ LX2160A安全引擎操作模式
  3. 博睿数据拨测入场加速广电深度融合
  4. 代码主题darcula_仿IntelliJ Darcula的Swing主题FlatLaf使用方法
  5. Latex使用总结(待完善)
  6. 文治者必有武备不然长大了挨欺负_有文事者必有武备,有武备者必有文事。
  7. instagram分享_存档instagram帐户正在教被忘记的历史
  8. php slik转wav_silk转mp3(小程序音频silk转普通mp3接口)
  9. NVIDIA vulkan driver的安装和Jetson平台上vulkan sdk的制作
  10. 《微信小程序商城界面设计实战》--学习笔记作业