Scipy-integrate

提供:Dev Guides
移動先:案内検索

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は、数値積分に対するほとんどのニーズを満たします。