quadl
(非推奨) 数値積分、適応 Lobatto 求積法
quadl は推奨されません。代わりに integral を使用してください。
構文
q = quadl(fun,a,b)
q = quadl(fun,a,b,tol)
quadl(fun,a,b,tol,trace)
[q,fcnt] = quadl(...)
説明
q = quadl(fun,a,b) は、a から b の区間で、再帰的な適応 Lobatto 求積法を使用して、誤差が 10-6 の範囲内になるように関数 fun の積分を近似します。fun は関数ハンドルです。この関数はベクトル x を受け取り、x の各要素について評価される関数 fun であるベクトル y を返します。a から b の範囲は、有限でなければなりません。
関数のパラメーター化では、必要に応じて関数 fun にパラメーターを追加する方法について説明しています。
q = quadl(fun,a,b,tol) は、既定の設定の 1.0e-6 の代わりに、絶対許容誤差 tol を使用します。tol に大きい値を設定すると、関数の評価回数が減り、計算は速くなりますが、結果の精度は低下します。
quadl(fun,a,b,tol,trace) (trace はゼロでない値) は、計算の反復の間 [fcnt a b-a q] の値を示します。
[q,fcnt] = quadl(...) は、関数の評価回数を返します。
fun 定義内で、配列演算子 .*, ./, .^ を使用することで、ベクトル引数で計算できます。
低い精度つまり滑らかでない被積分関数を使用する場合は、関数 quad が他より効率的である場合があります。
次の一覧には、MATLAB® のどの求積関数を使用するかを判断するために参照できる情報が含まれています。
低い精度で滑らかでない被積分関数を使用する場合は、関数
quadが最も効率的である場合があります。滑らかな被積分関数を使った精度の高い計算には、関数
quadlが関数quadよりも効率的である場合があります。高い精度の計算や振動被積分関数には、関数
quadgkが最も効率的である場合があります。無限区間をサポートし、端点での適度な特異性を扱うことができます。区分的な線形経路に沿った閉曲線積分もサポートします。関数
quadvは、配列値が指定された関数funに対して関数quadをベクトル化します。区間が無限 () の場合、
fun(x)の積分が存在するには、xが無限に近づくにつれてfun(x)が減衰しなければならず、関数quadgkではそれを速く減衰させる必要があります。無限の区間の振動関数には特別な方法が必要ですが、fun(x)が速く減衰する場合は、関数quadgkを使用できます。関数
quadgkは、特異性がさほど強くない場合に、有限の端点で特異性をもつ関数を積分します。たとえば、p >= -1/2の場合に、log|x-c|や|x-c|pのような端点cで動作する関数を積分します。関数が(a,b)内の点で特異である場合、特異点を端点として使用して部分区間に対する積分の和として積分を記述し、関数quadgkを使用して計算して、結果を加算します。
例
関数ハンドル @myfun を quadl に渡します。
Q = quadl(@myfun,0,2);
関数 myfun.m は次のようになります。
function y = myfun(x) y = 1./(x.^3-2*x-5);
無名関数ハンドル F を quadl に渡します。
F = @(x) 1./(x.^3-2*x-5); Q = quadl(F,0,2);
診断
関数 quadl は、次のいずれかの警告を出力する可能性があります。
'Minimum step size reached' は、リカーシブな区間の部分区間が、元の区間長の丸め誤差の次数になるような部分区間長になることを示します。被積分の特異点がある可能性があります。
'Maximum function count exceeded' は、積分計算が 10,000 回以上実行されたことを示します。被積分の特異性がある可能性があります。
'Infinite or Not-a-Number function value encountered' は、ある区間内で積分計算中に浮動小数点のオーバーフローまたはゼロ除算が発生したことを示します。
アルゴリズム
関数 quadl は、適応 Gauss/Lobatto 求積法を使用して、高次数法を実装します。
参照
[1] Gander, W. and W. Gautschi, “Adaptive Quadrature – Revisited,” BIT, Vol. 40, 2000, pp. 84-101. This document is also available at https://people.inf.ethz.ch/gander/.
バージョン履歴
R2006a より前に導入