2016-05-19 13 views
1

ich bin hier, weil ich bin mit R einige mathematische Funktionen zu simulieren, ich verwende diese Gleichheit wahr in Mathe, falsch in R

Und wenn ich es auf R simulieren habe ich zwei differents Graph und ich finde nicht wo ich falsch liege .... Kannst du mir helfen? Hier ist der Code: Ps: Ich habe auch das Integral berechnet durch die Funktion zu machen versuchen zu integrieren, aber es die gleiche Sache

hier machen wir haben:

setwd("~/Desktop/stage rapport") 

#Pi probabilité de la réussite d'un épreuve de bernouilli en intégrale 
#p : la probabilité d'un tirage de bernouilli 
#t : le nombre total de tirage avant échec de l'épreuve 
#n : nombre de succés necessaire à la réussite de l'épreuve 
#prec : la precision de l'intégrale 
Pi = function(t,n,p,prec){ 
    resintg = 0 
    for (i in seq(p,1,by=prec)){ 
    resintg = resintg + (i^(t-n))*((1-i)^(n-1))*prec 
    } 
    return(resintg*factorial(t)/(factorial(n-1)*factorial(t-n))) 
} 

#Ps probabilité de la réussite d'un épreuve de bernouilli en somme totale 
#p : la probabilité d'un tirage de bernouilli 
#t : le nombre total de tirage avant échec de l'épreuve 
#n : nombre de succés necessaire à la réussite de l'épreuve 
#prec : la precision de l'intégrale 
Ps = function(t,n,p){ 
    val = 0 
    for (k in seq(0,t-n)){ 
    list = seq(k+1,k+n-1) 
    val = val + prod(list)*(p)^(k) 
    } 

    return((val*((1-p)^n))/factorial(n-1)) 
} 

################################################### 
#Le Main : 
################################################### 


#paramètre 
t = 24 
n = 8 
i = 1 
preci = 0.1 

#calcul de P(p)1 
x = seq(0,1,by=0.01) 
y = NULL 
for (p in x){ 
    y = c(y,Pi(t,n,p,preci)) 
} 

#calcul de P(p)2 
x_ = seq(0,1,by=0.01) 
y_ = NULL 
for (p in x){ 
    y_ = c(y_,Ps(t,n,p)) 
} 
#tracer des courbes 
png("courbeforum.png",width = 1200, height = 700) 
plot(x,y,type = "l",col = "red",ylim = c(0,1)) 
lines(x_,y_,col="blue") 
dev.off() 
+1

Ihre Funktion bereits in R implementiert ist, und es ist die kumulative der negativen Binomialverteilung. Siehe "? Dnbinom". Siehe auch die entsprechende Wiki-Seite. – nicola

+0

ja es ist Simulation eines negativen Binomialgesetzes, danke für den Tipp –

Antwort

2

die Präzision erhöhen. Wenn Sie es

preci = 0.001 

gesetzt erhalten Sie eine Ausgabe erhalten:

enter image description here

+0

Ho danke! Ich habe versucht, die Präzision zu ändern, aber in meinem ursprünglichen Programm verwende ich: 'return (1 - (resintg * faktoriell (t)/(faktoriell (n-1) * faktoriell (tn)))) in Ausgabe, weil i will es in Funktion von (1-p) und ändern Sie die Präzision hat nicht geholfen, ich denke, es ist ein Problem mit dem - Zeichen, die nicht genug Präzision haben ... –

Verwandte Themen