您应该能够使用mpmath(一个用于任意精度浮点计算的Python模块)获得准确的结果。文档中有一些带有奇异之处的集成示例。您将要明确告诉它打破间隔:
from mpmath import *
f = lambda x,y,z: 1./(x**2+y**2+z**2)**1./3
quad(f,[-1,0,1],[-1,0,1],[-1,0,1])
您可能需要提高精度(例如mp.dps=30
),这可能会很慢,但是应该非常准确。
您也可以尝试嵌套调用MATLAB quadgk()
,该调用在1D中使用自适应Gauss-Kronrod正交。