quadv
(非推奨) ベクトル化された求積法
quadv
は推奨されません。代わりに、integral
を 'ArrayValued'
オプションと共に使用します。
構文
Q = quadv(fun,a,b)
Q = quadv(fun,a,b,tol)
Q = quadv(fun,a,b,tol,trace)
[Q,fcnt] = quadv(...)
説明
Q = quadv(fun,a,b)
は、a
から b
の区間で、再帰的な適応 Simpson 求積法を使用して、誤差 1.e-6
の範囲内で、複素配列値の関数 fun
の積分を近似します。fun
は、関数ハンドルです。関数 Y = fun(x)
は、スカラー引数 x
を受け入れ、x
での積分値を含む、結果の配列 Y
を返します。a
から b
の範囲は、有限でなければなりません。
関数のパラメーター化には、必要に応じて関数 fun
に追加パラメーターを指定する方法が説明されています。
Q = quadv(fun,a,b,tol)
は、既定の設定の 1.e-6
の代わりに、すべての積分に絶対許容誤差 tol
を使用します。
メモ
すべての要素に同じ許容誤差が使用されるので、関数 quadv
で得た結果の各要素は通常、関数 quad
で得た結果の各要素と等しくありません。
Q = quadv(fun,a,b,tol,trace)
(trace
はゼロでない値) は、計算の反復の間 [fcnt a b-a Q(1)]
の値を示します。
[Q,fcnt] = quadv(...)
は、関数の評価回数を返します。
次の一覧には、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
を使用して計算して、結果を加算します。
例
パラメーター化された配列値の関数 myarrayfun
について、次のように定義します。
function Y = myarrayfun(x,n) Y = 1./((1:n)+x);
次のコマンドは、a = 0 と b = 1 の間で、パラメーター値 n = 10 として myarrayfun
を積分します。
Qv = quadv(@(x)myarrayfun(x,10),0,1);
結果の配列 Qv
には、k = 1:10
の場合について Q(k) = log((k+1)./(k))
を推定する要素が 10 個あります。
Qv
の要素は、ループ内で関数 quad
を使用して積分計算をする場合と若干異なります。
for k = 1:10 Qs(k) = quadv(@(x)myscalarfun(x,k),0,1); end
ここで myscalarfun
は、次のようになります。
function y = myscalarfun(x,k) y = 1./(k+x);
バージョン履歴
R2006a より前に導入