| 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 | ![]() |