R中矩阵与数值积分的逆

时间:2017-10-12 05:06:22

标签: r integration numerical inverse

在R中我尝试着 1)得到矩阵的逆的一般形式(我的意思是带参数而不是特定数字的矩阵), 2)然后用它来计算积分。

我的意思是,我有一个带参数theta的P矩阵,我需要加上和减去一些东西,然后取一个倒数并乘以一个向量,这样我就得到了一个向量。从矢量pil中我逐个项,并将它乘以一个函数再次参数theta,结果必须从0到无穷大。

我尝试了这个,但它没有用,因为我知道结果应该是pst = (0.3021034 0.0645126 0.6333840)

c<-0.1
g<-0.15
    integrand1 <- function(theta) {
  pil1 <- function(theta) {
    P<-matrix(c( 
      1-exp(-theta), 1-exp(-theta),1-exp(-theta),exp(-theta),0,0,0,exp(-theta),exp(-theta)
    ),3,3);
    pil<-(rep(1,3))%*%solve(diag(1,3)-P+matrix(1,3,3));
    return(pil[[1]])
  }
  q<-pil1(theta)*(c^g/gamma(g)*theta^(g-1)*exp(-c*theta))
  return(q)}

(pst1<-integrate(integrand1, lower = 0, upper = Inf)$value)
#0.4144018

这只是矢量pst的第一项,因为当我不知道如何为此循环时。

请您知道为什么它不起作用以及如何使其工作?

1 个答案:

答案 0 :(得分:1)

integrate中使用的函数应按照帮助中的说明进行矢量化。 在代码的最后添加此

integrand2 <- Vectorize(integrand1)
integrate(integrand2, lower = 0, upper = Inf)$value
#[1] 0.3021034

结果是预期结果的第一个元素。

您必须提供有关输入的更多信息才能获得预期的矢量。