python - R 相当于 scipy.integrate.simps()?
问题描述
我正在寻找对一个函数进行一些数值积分,其中我只有来自该函数的样本,并且不能生成任意新样本。我知道在 python 世界中,这可以通过 scipy.integrate.simps() 来实现,但我的工作流程目前在 R 中。关于 R 函数/包的任何建议来实现这一点?
解决方案
假设您有一个 x 值向量和一个 y 值向量,您可以相当容易地应用辛普森规则。
simpson <- function(x, y)
{
if(length(x) < 5)
stop("Must have at least 5 values")
if(length(x) %% 2 == 0)
stop("Number of values must be odd")
ord <- order(x)
x <- x[ord]
y <- y[ord]
diffs <- diff(x)
delta <- mean(diffs)
if((max(diffs) - min(diffs))/delta > 1e-6)
stop("X-values must be equally spaced")
coefs <- c(1, 4, rep(c(2, 4), (length(x) - 3)/2), 1)
sum(coefs*y)*delta/3
}
simpson(1:7, (1:7)^2
# [1] 114
推荐阅读
- scala - 保存到 s3 时未调用 Spark 上下文未调用 stop() 和关闭挂钩
- typescript - 在活动离子滑梯上实现“活动”CSS类
- visual-studio - 如何为解决方案资源管理器中显示的文件扩展名设置自定义图标
- vue.js - Vue不能在子组件中添加方法
- html - 类名周围的方括号是什么?
- javascript - 如何从 SuccessFactors Career(招聘)网站获取 CandidateID?
- c++ - 如何使用 XDevAPI 将结果从 Row 存储到字符串对象
- java - 我需要有关 Android 上的 Geofence 或 Geofire 的帮助
- php - 页面重定向问题codeigniter:404错误
- css - 标题 div 的背景颜色不起作用