离散拉普拉斯算子
L = del2(U)
L = del2(U,h)
L = del2(U,hx,hy,...,hN)
示例
L = del2( U ) 在所有点之间使用默认间距 h = 1 ,返回应用于 U 的 拉普拉斯微分运算子 的离散近似值。
L = del2( U )
L
U
h = 1
L = del2( U , h ) 用于在 U 的所有维度中的点之间指定均匀的标量间距 h 。
L = del2( U , h )
h
L = del2( U , hx,hy,...,hN ) 用于在 U 的每个维度中的点之间指定间距 hx,hy,...,hN 。将每个间距输入指定为坐标的标量或向量。间距输入数必须等于 U 中的维数。
L = del2( U , hx,hy,...,hN )
hx,hy,...,hN
第一个间距值 hx 指定点的 x 间距(标量)或 x 坐标(向量)。如果是向量,则其长度必须等于 size(U,2) 。
hx
size(U,2)
第二个间距值 hy 指定点的 y 间距(标量)或 y 坐标(向量)。如果是向量,则其长度必须等于 size(U,1) 。
hy
size(U,1)
所有其他间距值指定 U 中对应维度的各点的间距(标量)或坐标(向量)。对于 n > 2 的情况,如果第 n 个间距输入是向量,则其长度必须等于 size(U,n) 。
n > 2
n
size(U,n)
全部折叠
根据位置数据的向量计算对象的加速度。
创建位置数据的向量。
p = [1 3 6 10 16 18 29];
要找出对象的加速度,请使用 del2 来计算 p 的第二个数值导数。在数据点之间使用默认间距 h = 1 。
del2
p
L = 4*del2(p)
L = 1×7 1 1 1 2 -4 9 22
L 的每个值是该点的即时加速度的近似值。
计算余弦向量的一维离散维拉普拉斯算子。
定义函数的域。
x = linspace(-2*pi,2*pi);
这会在 - 2 π ≤ x ≤ 2 π 范围内生成 100 个等间距点。
在此域内创建余弦值的向量。
U = cos(x);
使用 del2 计算 U 的拉普拉斯算子。使用域向量 x 确定 U 中每个点的一维坐标。
x
L = 4*del2(U,x);
通过解析,此函数的拉普拉斯算子等于 Δ U = - cos ( x ) 。
绘制结果。
plot(x,U,x,L) legend('U(x)','L(x)','Location','Best')
U 和 L 的图形与拉普拉斯算子的分析结果一致。
计算并绘制多元函数的离散拉普拉斯算子。
定义函数的 x 和 y 域。
[x,y] = meshgrid(-5:0.25:5,-5:0.25:5);
在此域中定义 U ( x , y ) = 1 3 ( x 4 + y 4 ) 函数。
U = 1/3.*(x.^4+y.^4);
使用 del2 计算此函数的拉普拉斯算子。 U 中各点之间的间距在所有方向上都相等,因此只要指定一个间距输入 h 即可。
h = 0.25; L = 4*del2(U,h);
通过解析,此函数的拉普拉斯算子等于 Δ U ( x , y ) = 4 x 2 + 4 y 2 。
绘制离散拉普拉斯算子 L 。
figure surf(x,y,L) grid on title('Plot of $\Delta U(x,y) = 4x^2+4y^2$','Interpreter','latex') xlabel('x') ylabel('y') zlabel('z') view(35,14)
L 的图形与拉普拉斯算子的分析结果一致。
计算自然对数函数的离散拉普拉斯算子。
在实数网格上定义函数的 x 和 y 域。
[x,y] = meshgrid(-5:5,-5:0.5:5);
在此域中定义 U ( x , y ) = 1 2 log ( x 2 y ) 函数。
U = 0.5*log(x.^2.*y);
当参量 y 为负值时,对数为复数值。
y
使用 del2 计算此函数的离散拉普拉斯算子。指定每个方向上的网格点之间的间距。
hx = 1; hy = 0.5; L = 4*del2(U,hx,hy);
通过解析,拉普拉斯算子等于 Δ U ( x , y ) = - ( 1 / x 2 + 1 / 2 y 2 ) 。此函数不在行 x = 0 或 y = 0 上定义。
将 U 和 L 的实部绘制在同一个图形上。
figure surf(x,y,real(L)) hold on surf(x,y,real(U)) grid on title('Plot of U(x,y) and $\Delta$ U(x,y)','Interpreter','latex') xlabel('x') ylabel('y') zlabel('z') view(41,58)
上曲面是 U ,下曲面是 L 。
输入数组,指定为向量、矩阵或多维数组。
数据类型: single | double 复数支持: 是
single
double
1
所有维度中的间距,指定为 1 (默认值)或标量。
每个维度中的间距,指定为单独的标量(对于均匀间距)或向量(对于非均匀间距)参量。间距输入数必须等于 U 中的维数。每个间距输入定义 U 的一个维度中的点之间的间距:
离散拉普拉斯算子近似值,以向量、矩阵或多维数组的形式返回。 L 与输入 U 的大小相同。
MATLAB ® 中的 del2 使用的拉普拉斯算子的定义取决于 U 中数据的维度。
如果 U 是表示函数 U(x) 的向量且该函数在一条直线的点位置进行计算,则 del2(U) 是下式的有限差分逼近
del2(U)
L = Δ U 4 = 1 4 ∂ 2 U ∂ x 2 .
如果 U 是表示函数 U(x,y) 的矩阵且该函数在方形网格的点位置进行计算,则 del2(U) 是下式的有限差分逼近
L = Δ U 4 = 1 4 ( ∂ 2 U ∂ x 2 + ∂ 2 U ∂ y 2 ) .
对于带有三个或更多变量的函数 U(x,y,z,...),离散拉普拉斯算子 del2(U) 会计算每个维度中的第二个导数,
L = Δ U 2 N = 1 2 N ( ∂ 2 U ∂ x 2 + ∂ 2 U ∂ y 2 + ∂ 2 U ∂ z 2 + ... ) ,
其中 N 是 U 中的维数,且 N ≥ 2 。
如果输入 U 是一个矩阵,则 L 的内部点通过取 U 中的点与其四个相邻点的平均值之间的差值找到:
L i j = [ ( u i + 1 , j + u i − 1 , j + u i , j + 1 + u i , j − 1 ) 4 − u i , j ] .
然后, del2 会通过线性外插第二个差分来从内部延伸计算 L 边界上的值。此公式会针对多维 U 进行扩展。
backgroundPool
ThreadPool
此函数完全支持基于线程的环境。有关详细信息,请参阅 在基于线程的环境中运行 MATLAB 函数 。
此函数完全支持 GPU 数组。有关详细信息,请参阅 Run MATLAB Functions on a GPU (Parallel Computing Toolbox) 。
此函数完全支持分布式数组。有关详细信息,请参阅 Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox) 。
在 R2006a 之前推出
diff | gradient
diff
gradient
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.