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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。