2017-10-12 153 views
1

在RI尝试到 1)得到矩阵的逆矩阵的一般形式(我的意思是一个带参数的矩阵,而不是具体的数字),然后用这个来计算一个矩阵积分。我的意思是,我得到一个带参数theta的P矩阵,我需要加上和减去一些东西,然后把这个反过来并乘以一个向量,这样我得到一个向量pil。从矢量pil中逐项求出并乘以一个函数再次得到参数theta并且结果必须从0到无穷大积分。矩阵和数值积分的逆矩阵R

我尝试这样做,但它没有工作,因为我知道结果应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

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

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

结果是您预期的结果的第一要素。

您将不得不提供有关输入的更多信息以获得预期的矢量。

+0

非常感谢你,这大大帮助了我:) – Bee