我在 3d 网格上测量了磁场。我的测量值分布在四个 xy 平面上,如下图所示。测量值大致遵循笛卡尔网格,但具有不同的间距和间隙。测量在 z 方向上更加稀疏,但我预计磁场在 x 和 y 方向上的变化幅度更大。磁场的每个矢量分量(、、)在不同点测量。
在下图中,我显示了的测量点。和的点分布相似,但不完全相同。整个域不是凸的,但我只看黑色矩形内的区域。
我想计算磁场的卷曲以确定电流密度。例如。
由于数据不均匀并且和不是在同一位置测量的,我不能使用简单的有限差分关系。我尝试了三种方法
- 和插值到一个公共网格,然后在点之间取一阶差并除以间距。
- 和插值到一个公共网格中,然后在具有梯度的点之间取二阶差并除以间距。
- 使用 scipy.spatial.Delaunay对和位置进行三角测量,并将三角测量和数据传递给具有梯度方法的 matplotlib.tri.LinearTriInterpolator。
我为这三种方法中的每一种绘制了磁场和只有第三个(从左到右)图似乎是场的卷曲,并给了我我期望从实验中得到的幅度。
scipy.interpolate.griddata 使用 scipy.interpolate.LinearNDInterpolator 对位置进行三角测量并使用线性重心插值。matplotlib.tri 也是如此。这些结果是预期的吗?如果所有方法都使用线性插值,为什么第三种方法比插值的差异更准确?