MATLAB Function Reference |
以數值方法求積分,adaptive Lobatto quadrature
Syntax
q = quadl(fun,a,b) q = quadl(fun,a,b,tol) q = quadl(fun,a,b,tol,trace) q = quadl(fun,a,b,tol,trace,p1,p2,...) [q,fcnt] = quadl(fun,a,b,...)
Description
q = quadl(fun,a,b)
求函數 fun
從 a
到 b
積分的近似值,使用遞迴的 adaptive Lobatto quadrature 誤差在 10-6 之內。fun
接收一個向量 x
然後傳回一個向量 y
。y
是函數 fun
在每一個 x
元素求的。
q = quadl(fun,a,b,tol)
使用絕對誤差容忍度 tol
來取代預設值 1.0e-6
。較大的 tol
值會導致較少的函數計算和較快的計算速度,但是得到的解準確度較低。
quadl(fun,a,b,tol,trace)
使用一個不為零的 trace
,在遞迴計算時會顯示 [fcnt a b-a q]
的值。
quadl(fun,a,b,tol,trace,p1,p2,...)
提供額外的參數 p1,p2,...
直接傳到函數 fun
,就是 fun(x,p1,p2,...)
。傳空矩陣到 tol
或 trace
可以使用預設值。
[q,fcnt] = quadl(...)
傳回函數計算的數目。
在定義 fun
時使用陣列運算符號 .*
,./
和 .^
,則它可以輸入向量的參數做計算。
函數 quad
可能較有效率,但是準確度較低或是導致不平滑的被積函數(integrands)。
Examples
Q = quadl('1./(x.^3-2*x-5)',0,2);
F = inline('1./(x.^3-2*x-5)'); Q = quadl(F,0,2);
Q = quadl(@myfun,0,2);
function y = myfun(x) y = 1./(x.^3-2*x-5);
Algorithm
quadl
使用 adaptive Gauss/Lobatto qudrature rule 建構一個高等級的方法。
Diagnostics
'Minimum step size reached'
表示原來間距在間距遞迴分枝時,已經產生一個距離在捨去誤差等級的間距。可能產生不完整的罕見錯誤。
'Maximum function count exceeded'
表示被積函數(integrand)已經被計算超過 10,000 次。可能產生不完整的罕見錯誤。
'Infinite or Not-a-Number function value encountered'
表示在被積函數(intrgrand)間距中的計算中產生浮點數溢位或是除以零。
See Also
dblquad
, inline
, quad
, @
(function handle)
References
[1] Gander, W. and W. Gautschi, "Adaptive Quadrature - Revisited", BIT, Vol. 40, 2000, pp. 84-101. This document is also available at http:// www.inf.ethz.ch/personal/gander.
quad, quad8 | questdlg |