メインコンテンツ

integral

説明

q = integral(fun,xmin,xmax) は、大域適応求積法と既定の許容誤差を使用して、xmin から xmax まで関数 fun を数値積分します。

q = integral(fun,xmin,xmax,Name=Value) は、1 つ以上の名前と値の引数を使用してオプションを指定します。たとえば、名前と値の引数 WayPoints を実数または複素数のベクトルとして指定して、積分に使用する特定の点を指示します。

すべて折りたたむ

関数 f(x)=e-x2(lnx)2 を作成します。

fun = @(x) exp(-x.^2).*log(x).^2;

x=0 から x=Inf までの積分を評価します。

q = integral(fun,0,Inf)
q = 
1.9475

1 つのパラメーター c をもつ関数 f(x)=1/(x3-2x-c) を作成します。

fun = @(x,c) 1./(x.^3-2*x-c);

c=5x=0 から x=2 までの積分を評価します。

q = integral(@(x) fun(x,5),0,2)
q = 
-0.4605

この手法の詳細については、関数のパラメーター化を参照してください。

関数 f(x)=ln(x) を作成します。

fun = @(x) log(x);

既定の誤差許容量で x=0 から x=1 までの積分を評価します。

format long
q1 = integral(fun,0,1)
q1 = 
  -1.000000010959678

次に、小数点以下 12 桁の精度を指定して積分を評価します。RelTol0 に設定して、integral が絶対許容誤差のみを満たそうとするようにします。

q2 = integral(fun,0,1,AbsTol=1e-12,RelTol=0)
q2 = 
  -1.000000000000010

関数 f(z)=1/(2z-1) を作成します。

fun = @(z) 1./(2*z-1);

途中点を指定して、複素平面内の 01+1i1-1i0 の三角形の経路上で積分します。

q = integral(fun,0,0,Waypoints=[1+1i,1-1i])
q = 
0.0000 - 3.1416i

ベクトル値関数 f(x)=[sinx,sin2x,sin3x,sin4x,sin5x] を作成し、x=0 から x=1 まで積分します。名前と値の引数 ArrayValuedtrue として指定して、配列値またはベクトル値の関数の積分を評価します。

fun = @(x) sin((1:5)*x);
q = integral(fun,0,1,ArrayValued=true)
q = 1×5

    0.4597    0.7081    0.6633    0.4134    0.1433

R2026a 以降

スカラー入力を想定した関数 f(x)=2x-x2 を作成します。

fun = @(x) 2*x-x^2;

x=0 から x=1 までの積分を評価します。名前と値の引数 Vectorizedfalse として指定して、ベクトル化を使用せずに積分を計算します。

q = integral(fun,0,1,Vectorized=false)
q = 
0.6667

関数 f(x)=x5e-xsinx を作成します。

fun = @(x) x.^5.*exp(-x).*sin(x);

絶対および相対の許容誤差を調整し、x=0 から x=Inf までの積分を評価します。

format long
q = integral(fun,0,Inf,AbsTol=1e-13,RelTol=1e-8)
q = 
 -14.999999999998360

入力引数

すべて折りたたむ

被積分関数。積分する関数を定義する関数ハンドルとして指定します。

スカラー値問題の場合、関数 y = fun(x) はベクトル引数 x を受け入れてベクトル結果 y を返さなければなりません。そのため、一般に、fun では行列演算子ではなく配列演算子を使用します。たとえば、* (mtimes) ではなく、.* (times) を使用します。

名前と値の引数 ArrayValuedtrue として指定する場合、fun はスカラー入力を受け入れて固定サイズの配列を返さなければなりません。

x の下限。実数 (有限または無限) または複素数 (有限) として指定します。xmin または xmax のいずれかが複素数である場合、integralxmin から xmax までの直線に沿って経路積分を近似します。

データ型: double | single
複素数のサポート: あり

x の上限。実数 (有限または無限) または複素数 (有限) として指定します。xmin または xmax のいずれかが複素数である場合、integralxmin から xmax までの直線に沿って経路積分を近似します。

データ型: double | single
複素数のサポート: あり

名前と値の引数

すべて折りたたむ

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

例: q = integral(fun,xmin,xmax,AbsTol=1e-12) は絶対許容誤差を小数点以下 12 桁に近い精度に設定します。

絶対許容誤差。非負の実数として指定します。integral は、絶対許容誤差を使用して絶対誤差 |qQ| の推定を制限します。ここで、q は積分の計算値であり、Q は (未知の) 正確な値です。絶対許容誤差を減らすと、integral で提供される精度の小数点以下の桁数が増えることがあります。

メモ

AbsTolRelTol は一緒に動作します。integral は絶対許容誤差または相対許容誤差を満たす可能性がありますが、両方とも満たす必要はありません。これらの許容誤差の使用の詳細については、ヒントのセクションを参照してください。

例: q = integral(fun,xmin,xmax,AbsTol=1e-12)

データ型: double | single

相対許容誤差。非負の実数として指定します。integral は、相対許容誤差を使用して相対誤差 |qQ|/|Q| の推定を制限します。ここで、q は積分の計算値であり、Q は (未知の) 正確な値です。相対許容誤差を減らすと、integral で提供される精度の有効桁数が増えることがあります。

メモ

RelTolAbsTol は一緒に動作します。integral は相対許容誤差または絶対許容誤差を満たす可能性がありますが、両方とも満たす必要はありません。これらの許容誤差の使用の詳細については、ヒントのセクションを参照してください。

例: q = integral(fun,xmin,xmax,RelTol=1e-9)

データ型: double | single

関数が配列値です。数値または logical 1 (true) または 0 (false) として指定します。fun がスカラー入力を受け入れ、ベクトル、行列、または N 次元配列の出力を返す関数であることを示すには、ArrayValuedtrue または 1 として指定します。

既定値である false は、fun がベクトル入力を受け入れベクトル出力を返す関数であることを示します。

R2026a 以降

ベクトル化された計算を実行します。数値または logical 1 (true) または 0 (false) として指定します。既定では、Vectorizedtrue で、高速に実行するために積分の計算がベクトル化されます。スカラー値の関数の場合、被積分関数 y = fun(x) はベクトル引数 x を受け入れて要素単位で演算を実行し、ベクトル結果 y を返さなければなりません。

Vectorizedfalse として指定すると、被積分関数はスカラー引数 x のみを受け入れ、スカラー結果 y を返します。

メモ

ArrayValuedtrue として指定している場合、integralVectorized の値を無視します。

積分途中点。実数または複素数のベクトルとして指定します。途中点を使用して、積分器に初期メッシュで使用させる積分区間内の点を示します。

  • 局所的極値など、関数の興味深い機能の近くに評価点を追加します。

  • 不連続点の位置を指定して、被積分関数の不連続点に対して効率的に積分します。

  • 複素数を途中点として指定して複雑な閉曲線積分を実行します。xminxmax または途中点ベクトルの要素が複素数の場合、積分は、複素平面内の一連の直線パスに対して実行されます。この場合、積分の極限と途中点はすべて有限でなければなりません。

特異点を指定するために途中点を使用しないでください。その代わり、区間を分割し、終端点で特異点となる別の積分の結果を追加してください。

例: q = integral(fun,xmin,xmax,Waypoints=[1+1i,1-1i]) は、積分区間に沿った 2 つの複素数途中点を指定します。

データ型: double | single
複素数のサポート: あり

出力引数

すべて折りたたむ

積分の計算値。数値スカラーまたは数値配列として返されます。

ヒント

  • integral 関数は次の式を満たそうとします。ここで、q は積分の計算値であり、Q は (未知の) 正確な値です。

    abs(q - Q) <= max(AbsTol,RelTol*abs(q))
    絶対許容誤差と相対許容誤差は、精度と計算時間のトレードオフ方法を提供します。通常、相対許容誤差が積分の精度を決定します。ただし、abs(q) が十分に小さい場合、絶対許容誤差が積分の精度を決定します。絶対許容誤差と相対許容誤差を両方とも指定することをお勧めします。

  • 積分の単精度極限を指定する場合、または fun が単精度の結果を返す場合、より大きな絶対許容誤差または相対許容誤差の指定が必要な場合があります。

参照

[1] Shampine, L.F. “Vectorized Adaptive Quadrature in MATLAB®.” Journal of Computational and Applied Mathematics 211, no. 2 (February 2008): 131–40. https://doi.org/10.1016/j.cam.2006.11.021.

拡張機能

すべて展開する

バージョン履歴

R2012a で導入

すべて展開する