我特别感兴趣的是计算去除球形孔的立方体的偏导数。我将数据集导入为一维数组,然后通过定义网格并从网格中移除球体来对数据进行插值。然后我沿轴取偏导数。
import numpy as np
from scipy.interpolate import Rbf
##Process of importing x, y, z coordinates as 1D arrays
##and function values f at at those coordinate as 1D arrau
x_int_pts = np.linspace(-1,1,41)
y_int_pts = x_int_pts
z_int_pts = x_int_pts
X, Y, Z = np.meshgrid(x_int_pts, y_int_pts,z_int_pts)
radius = 0.5
r = np.sqrt(X**2 + Y**2 + Z**2)
outside = r > radius
interpolated_f = Rbf(x,y,z,f,function='linear')(X[outside], Y[outside], Z[outside])
gdfx = np.gradient(interpolated_f, x_int_pts, axis=1)
gdfy = np.gradient(interpolated_f, y_int_pts, axis=0)
gdfz = np.gradient(interpolated_f, z_int_pts, axis=2)
如果网格只是立方体,我会得到正确的偏导数。问题是必须修改我必须区分的点,以说明在球体体积内删除的点。