2017-02-14 35 views
0

我想使用Python的scipy包中的scipy.integrate.quad函數來完成主體積分。例如,我想計算(遺憾的膠乳碼):python的四元函數中的參數「points」

\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

我從手動存在的quad一個可選參數,points,這是發現有界積分區間中的一系列斷點,可能發生被積函數的局部困難。可以用points來計算上面的表達式嗎?如果是這樣,我該如何執行它?

+0

_「... python的四元函數。」_ - 我不熟悉Python中的任何內置「四元」函數。你能詳細解釋一下嗎? –

+0

我的意思是scipy.integrate.quad –

+0

'scipy.integrate.quad'可以處理可積奇點。這是你的功能的情況嗎?表達式的限制並不是SciPy本身可以解決的問題。 –

回答

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 
0

正如指出的here,如果你的積的形式g(x)=f(x)/(x-x0)你的確可以使用weight='cauchy'的。一定要通過f作爲被積函數,而不是商數。顯然,如果你的被積函數不是這種形式,你可以嘗試乘以(x-x0)。

quad使用QUADPACK'sQAWCE例行程序是柯西主值的專用求解程序。

您或許也可以嘗試整合g(x0+x') + g(x0-x'),其中x0是您的奇點,並將x'=0標記爲難度值。 (如果積分限制不是x0左右對稱,則必須分開整合剩餘部分。)這可能不會比專家QAWCE更好,但您永遠不會知道直到您嘗試過。