2017-10-12 2 views
1

in RI versuchen, 1) erhalten eine allgemeine Form einer inversen Matrix (ich meine eine Matrix mit Parametern anstelle von bestimmten Zahlen), 2) dann verwenden Sie dies zur Berechnung eines Integral.Inverse von Matrix und numerische Integration in R

Ich meine, ich habe eine P-Matrix mit einem Parameter Theta, ich muss etwas hinzufügen und subtrahieren, dann eine Umkehrung davon und multiplizieren Sie es mit einem Vektor, so dass ich einen Vektor Pil gegeben habe. Vom Vektor pil nehme ich Begriff für Ausdruck und multipliziere ihn mit einer Funktion, wobei wiederum der Parameter theta und das Ergebnis von 0 bis unendlich integriert werden müssen.

Ich versuchte dies, aber es hat nicht funktioniert, weil ich weiß, sollte das Ergebnis pst werden = (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 

Dies war nur für das erste Glied des Vektors pst, denn wenn Ich wusste nicht, wie ich dafür einen Zyklus machen sollte.

Bitte, haben Sie eine Idee, warum es nicht funktioniert und wie es funktioniert?

Antwort

1

Funktionen, die in integrate verwendet werden, sollten wie in der Hilfe angegeben vektorisiert werden. Am Ende des Codes fügen Sie dieses

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

Das Ergebnis ist das erste Element des erwarteten Ergebnisses ist.

Sie müssen mehr Informationen über die Eingabe präsentieren, um Ihren erwarteten Vektor zu erhalten.

+0

Vielen Dank, das hat mir sehr geholfen :) – Bee