R中的矩阵求逆和数值积分
Inverse of matrix and numerical integration in R
在 R 中我尝试
1) 得到矩阵逆的一般形式(我的意思是一个带有参数而不是特定数字的矩阵),
2) 然后用它来计算积分。
我的意思是,我有一个带有参数 theta 的 P 矩阵,我需要加减一些东西,然后取它的倒数并将它乘以一个向量,这样我就得到了一个向量 pil。我从向量 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 的第一项,因为当时我不知道如何为此进行 for 循环。
拜托,你知道为什么它不起作用以及如何让它起作用吗?
integrate
中使用的函数应该按照帮助中的说明进行矢量化。
在你的代码末尾添加这个
integrand2 <- Vectorize(integrand1)
integrate(integrand2, lower = 0, upper = Inf)$value
#[1] 0.3021034
结果是您预期结果的第一个元素。
您必须提供有关输入的更多信息才能获得预期的向量。
在 R 中我尝试 1) 得到矩阵逆的一般形式(我的意思是一个带有参数而不是特定数字的矩阵), 2) 然后用它来计算积分。
我的意思是,我有一个带有参数 theta 的 P 矩阵,我需要加减一些东西,然后取它的倒数并将它乘以一个向量,这样我就得到了一个向量 pil。我从向量 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 的第一项,因为当时我不知道如何为此进行 for 循环。
拜托,你知道为什么它不起作用以及如何让它起作用吗?
integrate
中使用的函数应该按照帮助中的说明进行矢量化。
在你的代码末尾添加这个
integrand2 <- Vectorize(integrand1)
integrate(integrand2, lower = 0, upper = Inf)$value
#[1] 0.3021034
结果是您预期结果的第一个元素。
您必须提供有关输入的更多信息才能获得预期的向量。