争论"点"在python的quad函数中

时间:2017-02-14 21:05:27

标签: python scipy integral

我想在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}

equation

我从手册中发现,quadpoints有一个可选参数,它是有界积分区间中的一系列断点,可能会出现被积函数的局部困难。 points可以用来计算上面的表达式吗?如果是这样,我应该如何实现呢?

2 个答案:

答案 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好,但你永远不知道直到你尝试过。