python – 如何在2D点数据上最佳地执行曲面积分?

我有一个363 x-乘190 y-points的数据集,并且我将在多个不同的子区域中集成相关的功能值.我试图创建一个SciPy interp2d函数进行集成;但是,即使使用线性插值创建该功能也需要2个多小时(现在还没有完成).

执行此任务的更好方法是什么?

下面的一些片段……

在下面的convert_RT_to_XY函数中,imb / jmb是我转换为笛卡尔边界的r,theta网格边界.

后来,在我的代码中,我将网格边界(imb / jmb)转换为网格中心值(imm,jmm),转换为向量(iX,iY),将我的函数转换为向量(iZ),然后尝试制作我的插值函数.

# Convert R, T mesh vectors to X, Y mesh arrays.                                                                       
def convert_RT_to_XY(imb, jmb):                                                                                        
    R, T = np.meshgrid(imb,jmb)                                                                                        
    X = R * np.cos(np.radians(T*360))                                                                                  
    Y = R * np.sin(np.radians(T*360))                                                                                  
    return(X, Y) 

imm = imb[:-1]+np.divide(np.diff(imb),2)                                                                       
jmm = jmb[:-1]+np.divide(np.diff(jmb),2) 
iX, iY =  convert_RT_to_XY(imm, jmm)   
iX = np.ndarray.flatten(iX)                                                                                    
iY = np.ndarray.flatten(iY)                                                                                    
iZ = np.ndarray.flatten(plot_function)                                                                         
f = interpolate.interp2d(iX, iY, iZ, kind='linear') 

最终,我想表演:

result = dblquad(f, 10, 30,
    lambda x: 10,
    lambda x: 30))

最佳答案 查看SciPy的
RectBivariateSpline.如果您将数据放在笛卡尔网格上,它的执行速度比interp2D快得多

点赞