选择什么数值求积来整合具有奇点的函数?

计算科学 有限元 正交
2021-12-09 08:08:12

例如,我想数值计算L2-范数u=1(x2+y2+z2)1/3范数有点远,有什么好的方法可以做到这一点吗?这个问题经常出现在具有重入角的域的有限元计算玩具问题中。谢谢。L2

1个回答

您应该能够使用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(),它在一维中使用自适应 Gauss-Kronrod 正交。