2017-02-14 5 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

私がある、pointsquadのオプションの引数があることが、マニュアルから見つけます被積分関数の局所的な困難が生じる可能性のある有界積分区間内の一連のブレークポイント。上記式の計算にpointsを使用できますか?もしそうなら、私はそれをどのように実装すべきでしょうか?

+0

_ "Pythonのクワッド関数" _ _私はPythonの組み込み "クワッド"関数に慣れていません。これについて詳しく説明できますか? –

+0

私はscipy.integrate.quadを意味しました –

+0

'scipy.integrate.quad'は積分可能な特異点を扱うことができます。それはあなたの機能の場合ですか?表現の限界はSciPy自体があなたのところで解決できるものではありません。 –

答えて

0

weightパラメータを使用して重み関数を選択できます。あなたの積分は、あなたが実際にweight='cauchy'を使用することができ、フォームg(x)=f(x)/(x-x0)であれば、あなたが書いた一体型のため、

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を指摘しました。商ではなく、被積分関数としてfを渡すようにしてください。明らかに、被積分関数がこの形式でない場合、それを(x-x0)で乗算することができます。

quadは、Cauchyプリンシパル値の専用ソルバであるQUADPACK'sQAWCEルーチンを使用します。

g(x0+x') + g(x0-x')ここでx0はあなたの特異点であり、x'=0を難しい値としてマークしてみてください。 (積分限界がx0の周りで対称でない場合、余分を別々に積分する必要があります)。これは恐らく専門家QAWCEよりも優れていませんが、試してみるまでは分かりません。

関連する問題