微分算子及其离散化1:梯度
type
status
date
slug
summary
tags
category
icon
password

1 梯度 gradient

定义

梯度算子(读作nabla或Del)定义:
作用于标量函数
因此梯度算子作用于一个标量函数(标量场),输出一个向量场
例如定义域为三维的标量函数

几何理解

函数值域某点的梯度是一个向量,方向是该点函数增长最快的方向,大小是增长的速率。
如图中函数。函数的值域构成了xy平面上的标量场,求这个标量场每点的梯度构成了梯度场(向量场)。
 
每个取值点用箭头标注了该点的梯度,箭头指向函数值增长最快的方向。相反方向就是函数值减小最快的方向,这也是梯度下降法的理论基础。

离散化(有限差分)

前向差分

首先以一维函数为例。在定义域上均匀划分网格,网格间距为.
notion image
对于第个点,其梯度为到相邻网格点的变化率,这里相邻网格点取下一个点
在网格上取值来拟合梯度(斜率):
这种以用离散取值做差的思想来拟合连续函数的思想即有限差分(finite difference method)
上面取下一个点和当前点做差分的方式称为前向差分(forward difference)。

后向差分

如果向前取相邻的网格点,则梯度的离散化为:
notion image
这种取上一个点当前点做差分的方式称为后向差分(backward difference)。

中心差分

notion image
还可以同时用到往前和往后的相邻点,此时前后相邻点相差为,第点的梯度拟合为:

精度与误差

把三种差分方式放在一起观察:
notion image
图中实线为i点真实斜率,可以看出在这里中心差分对真是斜率的拟合程度更好。
因为是以离散方式来拟合连续量,因此网格划分越密(网格间距越小),拟合精度越高。
如果网格精度增加一倍(网格间距缩小一倍,变为)。对于前向/后向差分,误差也会变为原来误差的一半,因此这两种方法为一阶精度。对于中心差分,误差会变为原来误差的四分之一,因此中心差分为二阶精度。详细证明:todo

高维情况

多元函数的梯度向量由各个变量的梯度组合而成。
梯度算子作用于二维的标量函数,把每个维度的有限差分进行组合(以中心差分为例):
类似地,梯度算子作用于三维的标量函数,把每个维度的有限差分进行组合(以中心差分为例):
更高维度以此类推。
以二维均匀网格上的中心差分为例。图中为点的邻域(假设取值点都定义在网格中心)。
notion image
首先考虑x方向的差分
notion image
y方向同理
notion image
组合起来:
这种由当前点和左右点、上下点差分的格式被称为五点差分格式。类似地,三维网格上的由当前点和左右点、上下点、前后点差分的格式被称为七点差分格式。
如果xyz各方向的网格间距各不相同(例如分别为),中心差分格式变为:
或以网格位置编码(i,j,k)的形式来表达:
 

© Housz 2021-2024