选择将哪个函数积分为奇数的数字正交?


9

例如,我想数值计算的范数在某些域中包括零,我试过高斯求积,但失败了,它与使用球坐标进行积分的单位球上的实范数相差很远,有什么好办法吗?对于具有重入角的区域,该问题经常出现在有限元计算玩具问题中。谢谢。L2u=1(x2+y2+z2)1/3L2


2
如果原点在积分域内,我是否建议分解积分,然后将每个积分转换为球坐标?
JM

我同意JM的看法-如果您事先知道奇异点的位置和结构,那么最好还是使用该结构信息来聪明地编写对正交例程的调用,而不是将其馈送到数值包中并希望(a)它找到奇异点,然后(b)对它们进行正确的处理。

Answers:


8

您应该能够使用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正交。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.