代码之家  ›  专栏  ›  技术社区  ›  Bee

R中的矩阵逆与数值积分

  •  1
  • Bee  · 技术社区  · 8 年前

    1) 得到矩阵逆的一般形式(我指的是具有参数而不是特定数字的矩阵), 2) 然后用它来计算一个积分。

    我的意思是,我得到了一个带有参数θ的P矩阵,我需要加减一些东西,然后取它的逆,然后乘以一个向量,这样我就得到了一个向量pil。从向量pil中,我逐项取其,再乘以一个函数和参数θ,结果必须从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 回复  |  直到 8 年前
        1
  •  1
  •   Bhas    8 年前

    中使用的函数 integrate 应按照帮助中的说明进行矢量化。 在代码末尾添加以下内容

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