3D 空间中非均匀采样数据的梯度

计算科学 有限差分 插值 scipy
2021-12-04 14:10:08

我在 3d 网格上测量了磁场。我的测量值分布在四个 xy 平面上,如下图所示。测量值大致遵循笛卡尔网格,但具有不同的间距和间隙。测量在 z 方向上更加稀疏,但我预计磁场在 x 和 y 方向上的变化幅度更大。磁场的每个矢量分量()在不同点测量。BxByBz

在下图中,我显示了的测量点。的点分布相似,但不完全相同。整个域不是凸的,但我只看黑色矩形内的区域。BxByBz

测量位置

我想计算磁场的卷曲以确定电流密度。例如jz=1/μ0(By/xBx/y)

由于数据不均匀并且不是在同一位置测量的,我不能使用简单的有限差分关系。我尝试了三种方法BxBy

  1. 插值到一个公共网格,然后在点之间取一阶差并除以间距。BxBy
  2. 插值到一个公共网格中,然后在具有梯度的点之间取二阶差并除以间距。BxBy
  3. 使用 scipy.spatial.Delaunay对位置进行三角测量,并将三角测量和数据传递给具有梯度方法的 matplotlib.tri.LinearTriInterpolator。BxBy

我为这三种方法中的每一种绘制了磁场和只有第三个(从左到右)图似乎是场的卷曲,并给了我我期望从实验中得到的幅度。jz

当前的

scipy.interpolate.griddata 使用 scipy.interpolate.LinearNDInterpolator 对位置进行三角测量并使用线性重心插值。matplotlib.tri 也是如此。这些结果是预期的吗?如果所有方法都使用线性插值,为什么第三种方法比插值的差异更准确?

0个回答
没有发现任何回复~