Scipy-integrate
SciPy-統合
関数を分析的に統合できない場合、または分析的に統合するのが非常に困難な場合は、一般に数値積分法を使用します。 SciPyには、数値積分を実行するための多数のルーチンがあります。 それらのほとんどは同じ scipy.integrate ライブラリにあります。 次の表に、一般的に使用される関数を示します。
| Sr No. | Function & Description |
|---|---|
| 1 |
quad 単一の統合 |
| 2 |
dblquad 二重統合 |
| 3 |
tplquad トリプルインテグレーション |
| 4 |
nquad n-fold複数統合 |
| 5 |
fixed_quad ガウス求積法、次数n |
| 6 |
quadrature 公差に対するガウス求積法 |
| 7 |
romberg ロンバーグ統合 |
| 8 |
trapz 台形規則 |
| 9 |
cumtrapz 積分を累積的に計算する台形規則 |
| 10 |
simps シンプソンのルール |
| 11 |
romb ロンバーグ統合 |
| 12 |
polyint 分析多項式積分(NumPy) |
| 13 |
poly1d polyint(NumPy)のヘルパー関数 |
単一積分
Quad機能は、SciPyの統合機能の主力製品です。 数値積分は quadrature と呼ばれることもあるため、その名前が付けられています。 通常、aからbまでの特定の固定範囲で関数_f(x)_の単積分を実行するためのデフォルトの選択です。
\ int _ \ {a} ^ \ {b} f(x)dx
quadの一般的な形式は* scipy.integrate.quad(f、a、b)*です。ここで、「f」は統合する関数の名前です。 一方、「a」と「b」はそれぞれ下限と上限です。 0と1の範囲で積分されたガウス関数の例を見てみましょう。
最初に関数を定義する必要があります→$ f(x)= e ^ \ {-x ^ 2} $、これはラムダ式を使用して実行でき、その関数でquadメソッドを呼び出します。
import scipy.integrate
from numpy import exp
f= lambda x:exp(-x**2)
i = scipy.integrate.quad(f, 0, 1)
print i
上記のプログラムは、次の出力を生成します。
(0.7468241328124271, 8.291413475940725e-15)
quad関数は2つの値を返します。最初の数値は積分値で、2番目の値は積分値の絶対誤差の推定値です。
注意-quadは最初の引数として関数を必要とするため、引数としてexpを直接渡すことはできません。 Quad関数は、正および負の無限大を制限として受け入れます。 Quad関数は、exp、sin、cosなどの単一変数の標準の定義済みNumPy関数を統合できます。
複数の積分
ダブルおよびトリプル統合のメカニズムは、関数 dblquad、tplquad および nquad にまとめられています。 これらの関数は、それぞれ4つまたは6つの引数を統合します。 すべての内部積分の限界は、関数として定義する必要があります。
二重積分
*dblquad* の一般的な形式はscipy.integrate.dblquad(func、a、b、gfun、hfun)です。 ここで、funcは統合する関数の名前、「a」と「b」はそれぞれx変数の下限と上限、gfunとhfunは下限と上限を定義する関数の名前ですy変数の。
例として、二重積分法を実行してみましょう。
\ int _ \ {0} ^ \ {1/2} dy \ int _ \ {0} ^ \ {\ sqrt \ {1-4y ^ 2}} 16xy \:dx
ラムダ式を使用して、関数f、g、およびhを定義します。 多くの場合gとhが定数であっても、下限についてはここで行ったように、関数として定義する必要があることに注意してください。
import scipy.integrate
from numpy import exp
from math import sqrt
f = lambda x, y : 16*x*y
g = lambda x : 0
h = lambda y : sqrt(1-4*y**2)
i = scipy.integrate.dblquad(f, 0, 0.5, g, h)
print i
上記のプログラムは、次の出力を生成します。
(0.5, 1.7092350012594845e-14)
上記のルーチンに加えて、scipy.integrateには、n倍の多重統合を実行するnquadや、さまざまな統合アルゴリズムを実装する他のルーチンなど、他の多くの統合ルーチンがあります。 ただし、quadおよびdblquadは、数値積分に対するほとんどのニーズを満たします。