當前位置:編程學習大全網 - 網站源碼 - MATLAB中quad的誤差問題

MATLAB中quad的誤差問題

MATLAB中?quad?函數是用Simpson's?rule方法,即利用給定區間內的二次曲線進行擬合法求積分的,屬於數值積分。

quad?的完整調用格式是?[Q,fcnt]?=?quad(funfcn,a,b,tol,trace,varargin)

第三個參數tol的缺省值是?1e-6(我用的是R2009a的版本)?,所以

quad(y,?0,?26.9)

相當於?

quad(y,?0,?26.9,1e-6)?

是以?1e-6?為求積誤差的。

另外,這個quad計算定積分使用的Simpson's?rule方法,在區間較大時,無法保證多項式擬合能夠無窮逼近,特別地區間較大時該方法對於highly?oscillatory(高度震動)的函數可能失效。

解決方法:把[0,26.9]分解成兩個小區間分別積分——在matlab中輸入:

quad(y,0,13)+quad(y,13,26.9)則會給出正確結果:0.9185

或者,妳積分時設置更小的積分精度或使用?quadl?函數。quadl?函數是用自適應Lobatto正交法求積分的,求解精度比qaud?高。

附圖是把積分壹直算到了28時的結果,圖中顯示的尖點都是計算錯誤的地方,可見區間越大,積分越不可信。

  • 上一篇:Win10系統安裝mysql後怎麽配置環境變量?
  • 下一篇:股票軟件中CCI指標是什麽啊?
  • copyright 2024編程學習大全網