ドキュメンテーション

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

quad

(非推奨) 数値積分、適応 Simpson 求積法

quad は推奨されません。代わりに integral を使用してください。

構文

q = quad(fun,a,b)
q = quad(fun,a,b,tol)
q = quad(fun,a,b,tol,trace)
[q,fcnt] = quad(...)

説明

"求積" は、関数のグラフの下の部分の面積を求めるために使用する数値法で、定積分を計算します。

q=abf(x) dx

q = quad(fun,a,b) は、a から b の区間で、再帰的な適応 Simpson 求積法を使用して、誤差が 1e-6 の範囲内になるように、関数 fun の積分を近似します。fun は関数ハンドルです。a から b の範囲は、有限でなければなりません。関数 y = fun(x) は、ベクトル引数 x を受け入れ、積分を x の各要素で計算し、結果のベクトル y を返します。

関数のパラメーター化では、必要に応じて関数 fun にパラメーターを追加する方法について説明しています。

q = quad(fun,a,b,tol) は、既定の設定の 1.0e-6 の代わりに、絶対許容誤差 tol を使用します。tol に大きい値を設定すると、関数の評価回数が減り、計算は速くなりますが、結果の精度は低下します。Version 5.3 以前の MATLAB® の関数 quad では、信頼性の低いアルゴリズムを使用しており、既定の相対許容誤差は 1.0e-3 でした。

q = quad(fun,a,b,tol,trace) (trace はゼロでない値) は、計算の反復の間 [fcnt a b-a Q] の値を示します。

[q,fcnt] = quad(...) は、関数の評価回数を返します。

関数 quadl は、高精度で滑らかな被積分関数を効率よく実行できる場合があります。

次の一覧には、MATLAB のどの求積関数を使用するかを判断するために参照できる情報が含まれています。

  • 関数 quad は、低い精度で滑らかでない被積分関数を最も効率よく実行できる可能性があります。

  • 関数 quadl は、関数 quad よりも、高い精度で滑らかな被積分関数を効率よく実行できる場合があります。

  • 関数 quadgk は、高い精度で振動被積分関数を最も効率よく実行できる可能性があります。無限区間をサポートし、端点での適度な特異性を扱うことができます。区分的な線形経路に沿った閉曲線積分もサポートします。

  • 関数 quadv は、配列値が指定された関数 fun に対して関数 quad をベクトル化します。

  • 区間が無限 ([a,)) の場合、fun(x) の積分が存在するには、x が無限に近づくにつれて fun(x) が減衰しなければならず、関数 quadgk ではそれを速く減衰させる必要があります。無限の区間の振動関数には特別な方法が必要ですが、fun(x) が速く減衰する場合は、関数 quadgk を使用できます。

  • 関数 quadgk は、特異性がさほど強くない場合に、有限の端点で特異性をもつ関数を積分します。たとえば、p >= -1/2 の場合に、log|x-c||x-c|p のような端点 c で動作する関数を積分します。関数が (a,b) 内の点で特異である場合、特異点を端点として使用して部分区間に対する積分の和として積分を記述し、関数 quadgk を使用して計算して、結果を加算します。

以下の積分を計算します。

021x32x5dx,

被積分を計算する関数 myfun を記述します。

function y = myfun(x) 
y = 1./(x.^3-2*x-5);

次に、myfun への関数ハンドル @myfunquad に渡し、積分範囲を 0 から 2 に設定します。

Q = quad(@myfun,0,2)

Q =

   -0.4605

または、積分を無名関数のハンドル F として、関数 quad に渡すことができます。

F = @(x)1./(x.^3-2*x-5);
Q = quad(F,0,2); 

診断

関数 quad は、次のいずれかの警告を出力する可能性があります。

'Minimum step size reached' は、リカーシブな区間の部分区間が、元の区間長の丸め誤差の次数になるような部分区間長になることを示します。被積分の特異点がある可能性があります。

'Maximum function count exceeded' は、積分計算が 10,000 回以上実行されたことを示します。被積分の特異性がある可能性があります。

'Infinite or Not-a-Number function value encountered' は、ある区間内で積分計算中に浮動小数点のオーバーフローまたはゼロ除算が発生したことを示します。

アルゴリズム

関数 quad は、リカーシブな適応 Simpson 法を使用して、低次数法を実装します。

参照

[1] Gander, W. and W. Gautschi, “Adaptive Quadrature – Revisited,” BIT, Vol. 40, 2000, pp. 84-101. This document is also available at https://www.inf.ethz.ch/personal/gander.

R2006a より前に導入