gpt4 book ai didi

python - python中奇点的数值积分(主值)

转载 作者:太空宇宙 更新时间:2023-11-03 13:07:45 25 4
gpt4 key购买 nike

我正在尝试使用 scipy.integrate 中的 quad 函数将一个函数与奇点集成,但我没有得到想要的答案。这是代码:

from scipy.integrate import quad
import numpy as np
def fun(x):
return 1./(1-x**2)
quad(fun, -2, 2, points=[-1, 1])

这会导致 IntegrationWarning 并返回大约 0.4 的值。

函数的极点是 [-1,1]。答案应该是大约 1.09(用笔和纸计算)。

最佳答案

weight='cauchy' 选项可用于高效计算像这个这样的发散积分的主值。这意味着提供给 quad 的函数将隐式乘以 1/(x-wvar),因此相应地调整该函数(将其乘以 x-wvar 其中 wvar 是奇异点)。

i1 = quad(lambda x: -1./(x+1), 0, 2, weight='cauchy', wvar=1)[0]
i2 = quad(lambda x: -1./(x-1), -2, 0, weight='cauchy', wvar=-1)[0]
result = i1 + i2

结果是 1.0986122886681091

使用像这样的简单函数,您还可以使用 SymPy 进行符号集成:

from sympy import symbols, integrate
x = symbols('x')
f = integrate(1/(1-x**2), x)
result = (f.subs(x, 2) - f.subs(x, -2)).evalf()

结果:1.09861228866811。如果没有 evalf(),它将是 log(3)

关于python - python中奇点的数值积分(主值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52693899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com