2017-10-12 19 views
1

、RI内 1)行列の逆行列の一般的な形を得る(私は特定の数の代わりにパラメータを持つ行列を意味する) 2)これを使って積分。行列の逆行列と数値積分の逆数R

私は、パラメータthetaを持つP行列を得ました。私は何かを加えたり引いたりしなければなりません。次にこれを逆数にしてベクトルで乗算し、ベクトルpilを与えます。ベクトルpilから、私は項で項を取って、関数thetaに再び乗算し、結果を0から無限に積分しなければなりません。

のでとき、これは、単にベクトルpstファイルの最初期のためだった

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 

(0.3021034 0.0645126 0.6333840) =私はこれを試してみましたが、私は結果がpstファイルする必要があります知っているので、それは動作しませんでした私はこのためのサイクルの方法を知らなかった。

どうしたらうまくいかないのか、どのように動作させるのかご存知ですか?

答えて

1

integrateで使用される関数は、ヘルプに記載されているようにベクトル化する必要があります。あなたのコードの終わりに この

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

結果があなたの期待された結果の最初の要素である追加します。

予想されるベクトルを得るために入力に関する詳細情報を提示する必要があります。

+0

これまでにありがとう、ありがとうございました。 – Bee