ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

integral

構文

q = integral(fun,xmin,xmax)
q = integral(fun,xmin,xmax,Name,Value)

説明

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

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

すべて折りたたむ

関数 を作成します。

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

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

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

1 つのパラメーター をもつ関数 を作成します。

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

関数 を作成します。

fun = @(x)log(x);

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

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

小数点以下 12 桁の精度を指定して、積分を再び評価します。

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

関数 を作成します。

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

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

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

ベクトル値関数 を作成し、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

関数 を作成します。

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.999999999998364

入力引数

すべて折りたたむ

関数ハンドルとして指定する被積分関数であり、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
複素数のサポート: あり

名前と値のペアの引数

オプションの Name,Value の引数ペアをコンマ区切りで指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

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

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

メモ

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

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

データ型: single | double

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

メモ

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

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

データ型: single | double

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

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

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

'Waypoints' と、実数または複素数のベクトルとで構成され、コンマ区切りのペアとして指定される、積分中間点。中間点を使用して、積分器に使用させる積分区間内の点を示します。中間点を使用して、被積分関数の不連続点に対して効率的に積分できます。与えるベクトル内で不連続点の場所を指定します。

複雑な閉曲線積分を実行するときに、中間点を指定できます。xminxmax または中間点ベクトルの要素が複素数の場合、積分は、複素平面内の一連の直線パスに対して実行されます。

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

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

ヒント

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

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

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

  • xminxmax または 中間点に対して複素数値を指定した場合は、制限および中間点のすべてが有限でなければなりません。

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

参照

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

R2012a で導入