在 R 中集成
Integrating in R
我正在尝试在 R 中计算 。我有以下值。
nb <- 100
tb <- 25
ns <- 90
ts <- 15
A0 <- 1
S_norm <- 0.4
R <-tb/ts
y_meas <- (ns-nb/R)/A0
sigma_meas = sqrt(ns+(nb+1)/R^2)/A0
我对如何积分 L(psi) 感到很困惑,比如从 -10 到 10。因为我是根据 log A 积分的。
您可以替代 logA
并且对于 psi
的固定值,您可以按如下方式整合:
psi <- 5
integrate(function(x) exp(-0.5*(((x/A0)/S_norm)^2 + ((psi-y_meas*A0/exp(x))/sigma_meas)^2)),
-10, 10)
# 0.1775989 with absolute error < 6.6e-05
除了@SandipanDey 的出色回答之外,如果您可以将限制扩展到 -Infinity...+Infinity,则有更好的方法将函数与 e-x[=17= 集成]2 内核:Gauss-Hermite quadrature,还有一个 R 包。
简单示例:
library(gaussquad)
n.quad <- 128 # integration order
# get the particular (weights,abscissas) as data frame
# with 2 observables and n.quad observations
rule <- ghermite.h.quadrature.rules(n.quad, mu = 0.0)[[n.quad]]
# test function - integrate 1 over exp(-x^2) from -Inf to Inf
# should get sqrt(pi) as an answer
f <- function(x) {
1.0
}
q <- ghermite.h.quadrature(f, rule)
print(q - sqrt(pi))
我正在尝试在 R 中计算
nb <- 100
tb <- 25
ns <- 90
ts <- 15
A0 <- 1
S_norm <- 0.4
R <-tb/ts
y_meas <- (ns-nb/R)/A0
sigma_meas = sqrt(ns+(nb+1)/R^2)/A0
我对如何积分 L(psi) 感到很困惑,比如从 -10 到 10。因为我是根据 log A 积分的。
您可以替代 logA
并且对于 psi
的固定值,您可以按如下方式整合:
psi <- 5
integrate(function(x) exp(-0.5*(((x/A0)/S_norm)^2 + ((psi-y_meas*A0/exp(x))/sigma_meas)^2)),
-10, 10)
# 0.1775989 with absolute error < 6.6e-05
除了@SandipanDey 的出色回答之外,如果您可以将限制扩展到 -Infinity...+Infinity,则有更好的方法将函数与 e-x[=17= 集成]2 内核:Gauss-Hermite quadrature,还有一个 R 包。
简单示例:
library(gaussquad)
n.quad <- 128 # integration order
# get the particular (weights,abscissas) as data frame
# with 2 observables and n.quad observations
rule <- ghermite.h.quadrature.rules(n.quad, mu = 0.0)[[n.quad]]
# test function - integrate 1 over exp(-x^2) from -Inf to Inf
# should get sqrt(pi) as an answer
f <- function(x) {
1.0
}
q <- ghermite.h.quadrature(f, rule)
print(q - sqrt(pi))