Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

divergence

计算向量场的散度

说明

示例

div = divergence(X,Y,Z,Fx,Fy,Fz) 计算具有向量分量 FxFyFz 的三维向量场的数值散度

数组 XYZ 用于定义向量分量 FxFyFz 的坐标,它们必须是单调的,但无需间隔均匀。XYZ 必须为大小相同的三维数组,可以由 meshgrid 生成。

div = divergence(Fx,Fy,Fz) 假定一个默认的样本点网格。默认网格点 XYZ 由表达式 [X,Y,Z] = meshgrid(1:n,1:m,1:p) 确定,其中 [m,n,p] = size(Fx)。如果您希望节省内存且不在意点之间的绝对距离,则可使用此语法。

示例

div = divergence(X,Y,Fx,Fy) 计算具有向量分量 FxFy 的二维向量场的数值散度

矩阵 XY 用于定义 FxFy 坐标,它们必须是单调的,但无需间隔均匀。XY 必须为大小相同的二维矩阵,可以由 meshgrid 生成。

div = divergence(Fx,Fy) 假定一个默认的样本点网格。默认网格点 XY 由表达式 [X,Y] = meshgrid(1:n,1:m) 确定,其中 [m,n] = size(Fx)。如果您希望节省内存且不在意点之间的绝对距离,则可使用此语法。

示例

全部折叠

加载一个表示风场的三维向量场数据集。该数据集包含大小为 35×41×15 的数组。

load wind

计算向量场的数值散度。

div = divergence(x,y,z,u,v,w);

将向量三维体数据的发散显示为切片平面。用 x=90x=134 显示 yz 平面的散度,用 y=59 显示 xz 平面的散度,用 z=0 显示 xy 平面的散度。使用颜色表示散度。

h = slice(x,y,z,div,[90 134],59,0);
shading interp
colorbar
daspect([1 1 1]);
axis tight
camlight
set([h(1),h(2)],'ambientstrength',0.6);

Figure contains an axes object. The axes object contains 4 objects of type surface.

指定二维坐标和向量场。

[x,y] = meshgrid(-8:2:8,-8:2:8);
Fx = 200 - (x.^2 + y.^2);
Fy = 200 - (x.^2 + y.^2);

绘制向量场分量 FxFy

quiver(x,y,Fx,Fy)

Figure contains an axes object. The axes object contains an object of type quiver.

求二维向量场的数值散度。绘制散度的等高线。

D = divergence(x,y,Fx,Fy);
hold on
contour(x,y,D,'ShowText','on')

Figure contains an axes object. The axes object contains 2 objects of type quiver, contour.

输入参数

全部折叠

输入坐标,指定为矩阵或三维数组。

  • 对于二维向量场,XY 必须为大小相同的二维矩阵,并且该大小不能小于 2×2

  • 对于三维向量场,XYZ 必须为相同大小的三维数组,并且该大小不能小于 2×2×2

数据类型: single | double
复数支持:

输入坐标处的向量场分量,指定为矩阵或三维数组。FxFyFz 的大小必须与 XYZ 的大小相同。

数据类型: single | double
复数支持:

详细信息

全部折叠

数值散度

向量场的数值散度是根据向量场在某些点的已知值来估计散度值的一种方式。

对于具有三个变量的三维向量场 F(x,y,z)=Fx(x,y,z)e^x+Fy(x,y,z)e^y+Fz(x,y,z)e^zF 的散度定义为

div F=·F=Fxx+Fyy+Fzz.

对于具有两个变量的二维向量场 F(x,y)=Fx(x,y)e^x+Fy(x,y)e^y,散度为

div F=·F=Fxx+Fyy.

算法

divergence 使用有限差分计算其定义中的偏导数。对于内部数据点,使用中心差分计算偏导数。对于沿边缘的数据点,使用单侧(正向)差分计算偏导数。

例如,假设有一个二维向量场 F,它由位于 XY 位置的矩阵 FxFy 表示,大小为 m×n。位置是由 [X,Y] = meshgrid(x,y) 创建的二维网格,其中 x 是长度为 n 的向量,y 是长度为 m 的向量。然后 divergence 计算偏导数 ∂Fx / ∂x∂Fy / ∂y,如下所示

  • dFx(:,i) = (Fx(:,i+1) - Fx(:,i-1))/(x(i+1) - x(i-1))

    dFy(j,:) = (Fy(j+1,:) - Fy(j-1,:))/(y(j+1) - y(j-1))

    (对于内部数据点。)

  • dFx(:,1) = (Fx(:,2) - Fx(:,1))/(x(2) - x(1))

    dFx(:,n) = (Fx(:,n) - Fx(:,n-1))/(x(n) - x(n-1))

    (对于左边缘和右边缘的数据点。)

  • dFy(1,:) = (Fy(2,:) - Fy(1,:))/(y(2) - y(1))

    dFy(m,:) = (Fy(m,:) - Fy(m-1,:))/(y(m) - y(m-1))

    (对于上边缘和下边缘的数据点。)

向量场的数值散度等于 div = dFx + dFy

扩展功能

版本历史记录

在 R2006a 之前推出