我想在Python的scipy.integrate.quad
包中使用scipy
函数进行主积分。例如,我想计算(抱歉乳胶代码):
\begin{equation}
\lim_{\epsilon\rightarrow 0}
\left(\int_{-1}^{-\epsilon}dx\frac{1}{x}+\int_\epsilon^1 dx\frac{1}{x}\right)
\end{equation}
或
我从手册中发现,quad
,points
有一个可选参数,它是有界积分区间中的一系列断点,可能会出现被积函数的局部困难。 points
可以用来计算上面的表达式吗?如果是这样,我应该如何实现呢?
答案 0 :(得分:0)
您可以尝试使用weight
参数来选择加权函数。对于你写的积分,
In [15]: quad(lambda x: 1, -2, 3, weight='cauchy', wvar=0)
Out[15]: (0.4054651081081642, 0.0)
In [16]: log(3./2.)
Out[16]: 0.4054651081081644
答案 1 :(得分:0)
正如here所指出,如果您的被积函数的格式为g(x)=f(x)/(x-x0)
,您确实可以使用weight='cauchy'
。请务必将f
作为被积函数,而不是商。显然,如果您的被积函数不是这种形式,您可以尝试将其乘以(x-x0)。
quad
使用QUADPACK's QAWCE
例程,这是Cauchy主值的专用解算器。
你也可以尝试整合g(x0+x') + g(x0-x')
x0
是你的奇点,并将x'=0
标记为难度值。 (如果整合限制在x0
周围不对称,则必须单独整合多余部分。)这可能不比专家QAWCE
好,但你永远不知道直到你尝试过。