Main Content

integral

説明

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

q = integral(fun,xmin,xmax,Name,Value) は、1 つ以上の Name,Value のペアの引数を使用して追加オプションを指定します。たとえば、'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 桁の精度を指定して、積分を再び評価します。RelTol を 0 に設定して、integral が絶対許容誤差のみを満たそうとするようにします。

q2 = integral(fun,0,1,'RelTol',0,'AbsTol',1e-12)
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 まで積分します。'ArrayValued',true を指定して、配列値またはベクトル値関数の積分を評価します。

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

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

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

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

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

入力引数

すべて折りたたむ

関数ハンドルとして指定する被積分関数であり、xmin から xmax まで積分される関数を定義します。

スカラー値問題の場合、関数 y = fun(x) はベクトル引数 x を受け入れてベクトル結果 y を返さなければなりません。これは通常、fun が行列演算子ではなく配列演算子を使用しなければならないことを意味します。たとえば、* (mtimes) ではなく、.* (times) を使用します。'ArrayValued' オプションを true に設定した場合、fun はスカラーを受け入れて固定サイズの配列を返さなければなりません。

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

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

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

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

名前と値の引数

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

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

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

'AbsTol' と非負の実数で構成され、コンマ区切りのペアとして指定される、絶対許容誤差。integral は、絶対許容誤差を使用して絶対誤差 |q – Q| の推定を制限します。ここで、q は積分の計算値であり、Q は (未知の) 正確な値です。絶対許容誤差を減らすと、integral で精度の小数点以下の桁数をより多く指定できることもあります。

メモ

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

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

データ型: single | double

'RelTol' と非負の実数で構成され、コンマ区切りのペアとして指定される、相対許容誤差。integral は、相対許容誤差を使用して相対誤差 |q – Q|/|Q| の推定を制限します。ここで、q は積分の計算値であり、Q は (未知の) 正確な値です。相対許容誤差を減らすと、integral で精度の有効桁数をより多く指定できることもあります。

メモ

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

例: integral(fun,a,b,'RelTol',1e-9) は相対許容誤差を約 9 桁の有効桁数に設定します。

データ型: single | double

配列値関数フラグ。'ArrayValued' と、数値または logical の 1 (true) または 0 (false) とで構成される、コンマ区切りのペアとして指定します。このフラグを true または 1 に設定すると、fun がスカラー入力を受け入れ、ベクトル、行列または N 次元配列の出力を返す関数であることを示します。

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

例: integral(fun,a,b,'ArrayValued',true) は、被積分関数が配列値関数であることを示します。

'Waypoints' と、実数または複素数のベクトルとで構成され、コンマ区切りのペアとして指定される、積分途中点。途中点を使用して、積分器に初期メッシュで使用させる積分区間内の点を示します。

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

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

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

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

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

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

ヒント

  • integral 関数は次を満たそうとします。

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

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

参照

[1] L.F. Shampine “Vectorized Adaptive Quadrature in MATLAB®,” Journal of Computational and Applied Mathematics, 211, 2008, pp.131–140.

拡張機能

バージョン履歴

R2012a で導入