首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中多重积分函数的编码

R中多重积分函数的编码
EN

Stack Overflow用户
提问于 2017-02-06 23:23:18
回答 2查看 863关注 0票数 2

为了将以下内容转换为函数,我想知道如何用R码编写以下双积分?:($\bar{x} = \mu$):

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-07 18:25:03

假设pi0pi1以矢量化的方式实现函数$\pi_0$和$\pi_1$,一个可能的解决方案是:

代码语言:javascript
复制
integral <- function(n, mu, s, pi0, pi1) {

  C <- (2 * pi)^(-n/2) 
  C * integrate(f = function(sigmavec) sapply(sigmavec, function(sigma) {
    integrate(f = function(delta) {

      exp(-n/2 * ((mu / sigma - delta)^2 + (s / sigma)^2)) * pi1(delta)

    }, lower = -Inf, upper = Inf)$value

  }) * pi0(sigmavec) / (sigmavec^n), lower = 0, upper = Inf)$value

}

# Tests
integral(n = 1, mu = 0, s = 1, pi0 = dnorm, pi1 = dnorm)
# [1] 0.0473819
integral(n = 1, mu = 0, s = 1, pi0 = function(sigma) 1/sigma, pi1 = dcauchy)
# [1] 0.2615783
票数 1
EN

Stack Overflow用户

发布于 2017-02-07 02:17:55

请注意,如果这个问题是关于主题,但我是开放的回答。

也许你应该问一个更一般的问题,如何用计算机程序(代码)来写/计算积分?至少有两种方法

  1. 使用数值积分,例如蒙特卡罗方法
  2. 用符号工具箱解析地解决了问题,并对数值进行了插件。

关于$\int_0^1 x^2$的示例

代码语言:javascript
复制
f<-function(x){
  x^2
}
curve(f,0,1)

# method 1
integrate(f,lower=0,upper = 1)

# method 2
library(Ryacas)
x <- Sym("x")
f <- function(x) {
  x^2
}
f2=yacas(yacas(Integrate(f(x), x)))
f2

x <- 1
Eval(f2)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42095957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档