在 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))