Nabla Operator
This is a personal note with personal understanding.
Notations
Index Notation is included.
Scalars are not bold (a,b,c⋯a,b,c\cdotsa,b,c⋯), while vectors are bold (a,b,c⋯\boldsymbol{a,b,c\cdots}a,b,c⋯)
Sometimes for convenience,
∂x=∂∂x∂y=∂∂y∂z=∂∂z\partial_x = \frac{\partial}{\partial x} \qquad\partial_y = \frac{\partial}{\partial y} \qquad\partial_z = \frac{\partial}{\partial z}∂x=∂x∂∂y=∂y∂∂z=∂z∂
Row vector inner product a⋅b=abT\newcommand{\V}[1]{\boldsymbol{#1}}\V{a}\cdot\V{b} = \V{a}\V{b}^Ta⋅b=abT
Definitions
Operators and functions can be expressed as a row vector.
∇=(∂∂x,∂∂y,∂∂z)\nabla = \Big(\frac{\partial}{\partial x}, \frac{\partial}{\partial y}, \frac{\partial}{\partial z}\Big)∇=(∂x∂,∂y∂,∂z∂)
Gradient of a scalar function is a vector
gradf=∇f=(∂∂x,∂∂y,∂∂z)f=(∂f∂x,∂f∂y,∂f∂z)\text{grad} f = \nabla f = \Big(\frac{\partial}{\partial x}, \frac{\partial}{\partial y}, \frac{\partial}{\partial z}\Big)f = \Big(\frac{\partial f}{\partial x}, \frac{\partial f}{\partial y}, \frac{\partial f}{\partial z}\Big)gradf=∇f=(∂x∂,∂y∂,∂z∂)f=(∂x∂f,∂y∂f,∂z∂f)
Divergence of a vector function is a scalar
divF=∇⋅F=∂Fi∂xi=∂Fx∂x+∂Fy∂y+∂Fz∂z\newcommand{\V}[1]{\boldsymbol{#1}} \text{div}\V{F} = \nabla\cdot\V{F} = \frac{\partial F_i}{\partial x_i} = \frac{\partial F_x}{\partial x} + \frac{\partial F_y}{\partial y} + \frac{\partial F_z}{\partial z}divF=∇⋅F=∂xi∂Fi=∂x∂Fx+∂y∂Fy+∂z∂Fz
Curl of a vector function is a vector
curlF=∇×F=det∣e^1e^2e^3∂x∂y∂zFxFyFz∣\newcommand{\V}[1]{\boldsymbol{#1}} \text{curl}\V{F} = \nabla\times\V{F} = \det\left|\begin{matrix}\hat{e}_1 & \hat{e}_2 & \hat{e}_3 \\ \partial_x & \partial_y & \partial_z \\ F_x & F_y & F_z \end{matrix}\right|curlF=∇×F=det∣∣∣∣∣∣e^1∂xFxe^2∂yFye^3∂zFz∣∣∣∣∣∣
Jacobian Matrix of a vector function is a 2d matrix
JF=DF=∇F=(∂xFx∂yFx∂zFx∂xFy∂yFy∂zFy∂xFz∂yFz∂zFz)\newcommand{\V}[1]{\boldsymbol{#1}} \V{J}_\V{F} = D\V{F} = \nabla\V{F} = \left(\begin{matrix}\partial_x F_x & \partial_y F_x & \partial_z F_x \\ \partial_x F_y & \partial_y F_y & \partial_z F_y\\ \partial_x F_z & \partial_y F_z & \partial_z F_z \end{matrix}\right)JF=DF=∇F=⎝⎛∂xFx∂xFy∂xFz∂yFx∂yFy∂yFz∂zFx∂zFy∂zFz⎠⎞
Derivative
Infinitesimal changes form column vectors.
For a scalar function fff, total derivative is
df=(∇f)dr=(∂f∂x,∂f∂y,∂f∂z)[dxdydz]\newcommand{\V}[1]{\boldsymbol{#1}} df = (\nabla f)d\V{r} = \Big(\frac{\partial f}{\partial x}, \frac{\partial f}{\partial y}, \frac{\partial f}{\partial z}\Big)\left[\begin{aligned}dx \\ dy\\ dz\end{aligned}\right]df=(∇f)dr=(∂x∂f,∂y∂f,∂z∂f)⎣⎢⎡dxdydz⎦⎥⎤
For a vector function F\boldsymbol{F}F
dF=(∇F)dr=(∂xFx∂yFx∂zFx∂xFy∂yFy∂zFy∂xFz∂yFz∂zFz)[dxdydz]\newcommand{\V}[1]{\boldsymbol{#1}} d\V{F} = (\nabla \V{F})d\V{r} = \left(\begin{matrix}\partial_x F_x & \partial_y F_x & \partial_z F_x \\ \partial_x F_y & \partial_y F_y & \partial_z F_y\\ \partial_x F_z & \partial_y F_z & \partial_z F_z \end{matrix}\right)\left[\begin{aligned}dx \\ dy\\ dz\end{aligned}\right]dF=(∇F)dr=⎝⎛∂xFx∂xFy∂xFz∂yFx∂yFy∂yFz∂zFx∂zFy∂zFz⎠⎞⎣⎢⎡dxdydz⎦⎥⎤
This can be applied to gradient of dot product.
∇(A⋅B)=A⋅(∇B)+B⋅(∇A)\newcommand{\V}[1]{\boldsymbol{#1}} \nabla(\V{A}\cdot\V{B}) = \V{A}\cdot(\nabla\V{B}) + \V{B}\cdot(\nabla\V{A})∇(A⋅B)=A⋅(∇B)+B⋅(∇A)
Nabla Operator相关推荐
- 5-3-BP神经网络
文章目录 引入名词 BP神经网络 NaN 独热码 Nabla算子 1神经网络 1.1 神经元模型 1.2 神经元激活函数 1.2.1 为什么要使用激活函数? 1.2.2为什么激活函数需要非线性函数? ...
- Laplace-Beltrami operator的理解
laplace-beltrami operator 是 laplace operator在riemann manifolds上的拓展. 至于他们两到底有什么区别和联系,请看[2]中的一段话: 可以看到 ...
- 叉乘点乘混合运算公式_用抽象指标记号推导nabla算符相关公式
正好这段时间电动力学讲完了nabla算符的一些公式,一开始记起来还有点烦人,遂尝试用抽象指标记号推一下. 需要先说明的几件事: 算符在此处即为和欧式度规 适配的导数算符(ordinary deriva ...
- TVM Operator Inventory (TOPI)简介
TOPI简介 这是 TVM Operator Inventory (TOPI) 的介绍.TOPI 提供了比 TVM 具有更高抽象的 numpy 风格的,通用操作和调度.TOPI 如何在 TVM 中,编 ...
- C++ 重载运算符 operator
operator 是什么 operator 是C++的一个关键字,它和运算符(+,-,*,/,=,等等)一起使用,表示一个运算符重载函数 operator 没有返回语句 operator 的作用 : ...
- 【C++】operator bool() 和 operator const bool() const
1.问题描述 在走读QtCreator源码时,看到如下运算符重载 源码在QtCreator-v4.9.2中 src\plugins\projectexplorer\projectexplorer.h ...
- ::operator new、sgi stl alloc、dlmalloc测试结果
注: 使用的dlmalloc为2.8.3版本 使用GetTickCount(),测试1000000次的new/delete 分配空间大小为2的幂,依次递增 在Debug模式下 sgi-stl allo ...
- c++, 派生类的构造函数和析构函数 , [ 以及operator=不能被继承 or Not的探讨]
说明:文章中关于operator=实现的示例,从语法上是对的,但逻辑和习惯上都是错误的. 参见另一篇专门探究operator=的文章:<c++,operator=>http://www.c ...
- 类的operator new与operator delete的重载
为什么有必要写自己的operator new和operator delete? 答案通常是:为了效率. 缺省版本的operator new是一种通用型的内存分配器,它必须可以分配任意大小的内存块.同样 ...
最新文章
- 异常检测——无监督、高斯分布模型,需要带标记的样本数据,基本假设:特征符合高斯分布...
- js控制文本框仅仅能输入中文、英文、数字与指定特殊符号
- 为什么使用了索引,查询还是慢?
- 3G时代手机网站的特点和开发原则
- when and where is beanDefinitionNames filled
- Java函数编码_转[收集java的常用函数代码]
- 2.11 计算机视觉现状
- ORA-00906 missing left parenthesis括号
- MUI - 图片预览(perviewimage)的优化
- pandas不显示index_pandas层级索引
- 计算机字体对于现代设计有何意义,字体设计课程计算机授课方式的探索.doc
- Sql语句查询今天、昨天、本月等日期数据
- RZ G2L核心板内存性能测试
- 四轴基本知识扫盲及资料收集
- 51nod-1603 限高二叉排列树
- C#创建Windows窗体应用程序实例1【姓名输入】
- SWUST OJ4:迷宫问题
- python 自建ip地址池详细教程
- Flash--基础认识
- Python如何将txt文件录入Excel表格
热门文章
- 商业模式新生代_商业模式新生代
- 商业模式新生代读书笔记
- Coordinate Attention for Efficient Mobile Network Design论文详解(结合代码)
- Scanner 用法
- java 来自集合中泛型序列化的bug,难得一遇
- 中国大学MOOC计算机程序设计(C++)——第2周 简单信息的表示和基本运算代码
- 札记【2】 吾非大佬
- 计算机音乐天龙八部,新天龙八部玩家最难忘的音乐,13年47首BGM,全部浓缩在了一起...
- 歪批:XCode之外的选择?苹果非主流开发平台概览
- 如何有效渡过充满迷茫的大学生活