integrate
位於 stats
包(package)。 說明
一個變量的函數在有限或無限區間內的自適應求積。
用法
integrate(f, lower, upper, ..., subdivisions = 100L,
rel.tol = .Machine$double.eps^0.25, abs.tol = rel.tol,
stop.on.error = TRUE, keep.xy = FALSE, aux = NULL)
參數
f |
一個R函數采用數字第一個參數並返回相同長度的數字向量。返回非有限元將產生錯誤。 |
lower, upper |
整合的局限性。可以是無限的。 |
... |
要傳遞給 |
subdivisions |
子區間的最大數量。 |
rel.tol |
要求的相對精度。 |
abs.tol |
要求絕對準確。 |
stop.on.error |
合乎邏輯的。如果為 true(默認值),則錯誤會停止該函數。如果為 false,某些錯誤將在 |
keep.xy |
沒用過。為了與 S 兼容。 |
aux |
沒用過。為了與 S 兼容。 |
細節
請注意,...
之後的參數必須完全匹配。
如果一個或兩個極限都是無限的,則無限範圍將映射到有限區間。
對於有限區間,全局自適應區間細分與Wynn的Epsilon算法外推結合使用,基本步驟是Gauss-Kronrod求積。
如果 abs.tol <= 0
則 rel.tol
不能小於 max(50*.Machine$double.eps,
0.5e-28)
。
注意C源代碼中的注釋‘<R>/src/appl/integrate.c’ 提供更多詳細信息,尤其是失敗原因(內部錯誤代碼ier >= 1
)。
在R版本 3.2.x,第一個條目lower
和upper
已使用,而如果它們的長度不是一,則現在會發出錯誤信號。
值
帶有組件的類 "integrate"
的列表
value |
積分的最終估計。 |
abs.error |
絕對誤差模的估計。 |
subdivisions |
細分過程中產生的子區間的數量。 |
message |
|
call |
匹配的調用。 |
注意
與所有數值積分例程一樣,這些例程在有限的點集上評估函數。如果函數在幾乎所有範圍內近似恒定(特別是零),則結果和誤差估計可能會嚴重錯誤。
當在無限間隔上積分時,明確地這樣做,而不是僅僅使用一個大數作為端點。這增加了獲得正確答案的機會 - 任何在無限區間內積分有限的函數在該區間的大部分時間內都必須接近於零。
為了使有限點集處的值公平地反映函數在其他地方的行為,該函數需要是well-behaved,例如可微分,除了少量的跳躍或可積奇點。
f
必須接受輸入向量並在這些點生成函數評估向量。 Vectorize
函數可能有助於將 f
轉換為這種形式。
例子
integrate(dnorm, -1.96, 1.96)
integrate(dnorm, -Inf, Inf)
## a slowly-convergent integral
integrand <- function(x) {1/((x+1)*sqrt(x))}
integrate(integrand, lower = 0, upper = Inf)
## don't do this if you really want the integral from 0 to Inf
integrate(integrand, lower = 0, upper = 10)
integrate(integrand, lower = 0, upper = 100000)
integrate(integrand, lower = 0, upper = 1000000, stop.on.error = FALSE)
## some functions do not handle vector input properly
f <- function(x) 2.0
try(integrate(f, 0, 1))
integrate(Vectorize(f), 0, 1) ## correct
integrate(function(x) rep(2.0, length(x)), 0, 1) ## correct
## integrate can fail if misused
integrate(dnorm, 0, 2)
integrate(dnorm, 0, 20)
integrate(dnorm, 0, 200)
integrate(dnorm, 0, 2000)
integrate(dnorm, 0, 20000) ## fails on many systems
integrate(dnorm, 0, Inf) ## works
integrate(dnorm, 0:1, 20) #-> error!
## "silently" gave integrate(dnorm, 0, 20) in earlier versions of R
來源
基於 R. Piessens 和 E. deDoncker-Kapenga 的 QUADPACK 例程 dqags
和 dqagi
,可從 Netlib 獲取。
參考
R. Piessens, E. deDoncker-Kapenga, C. Uberhuber, D. Kahaner (1983) Quadpack: a Subroutine Package for Automatic Integration; Springer Verlag.
相關用法
- R interaction.plot 雙向交互作用圖
- R influence.measures 回歸刪除診斷
- R isoreg 等張/單調回歸
- R identify.hclust 識別樹狀圖中的簇
- R is.empty.model 測試模型的公式是否為空
- R stlmethods STL 對象的方法
- R medpolish 矩陣的中值波蘭(穩健雙向分解)
- R naprint 調整缺失值
- R summary.nls 總結非線性最小二乘模型擬合
- R summary.manova 多元方差分析的匯總方法
- R formula 模型公式
- R nls.control 控製 nls 中的迭代
- R aggregate 計算數據子集的匯總統計
- R deriv 簡單表達式的符號和算法導數
- R kruskal.test Kruskal-Wallis 秩和檢驗
- R quade.test 四方測試
- R decompose 移動平均線的經典季節性分解
- R plot.stepfun 繪製階躍函數
- R alias 查找模型中的別名(依賴項)
- R qqnorm 分位數-分位數圖
- R eff.aovlist 多層方差分析的計算效率
- R pairwise.t.test 成對 t 檢驗
- R loglin 擬合對數線性模型
- R predict.smooth.spline 通過平滑樣條擬合進行預測
- R bartlett.test 方差齊性的 Bartlett 檢驗
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Integration of One-Dimensional Functions。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。