2010-09-05 9 views
1

J'utilise un livre avec une fonction que j'aimerais utiliser. Cependant, je ne pense pas que je reçois les bonnes valeurs de ma fonction.Comment implémenter cette fonction dans MATLAB?

Voici les instructions du livre:

alt text

est la fonction ici comme je l'ai créé dans Matlab:

function [ shortProbability ] = pShort(zkt, zktStar, short) 

if zkt > zktStar 
    shortProbability = 0; 
else 
    normalizer = 1/(1-exp(-short*zktStar)); 
    shortProbability = normalizer * (short * exp(-short*zkt)); 
end 

end 

Les valeurs que je suis BRANCHER sont:

zkt = 0:1:100 
zktStar = 50; 
short = 0.01; 

Cependant, mon graphique ne se comporte pas comme le un que je suis censé finir avec, ce qui est la suivante:

alt text

Je reçois ce à partir du graphique, ce qui semble correct, mais je ne pense pas qu'il est normalisé correctement:

alt text

Quelqu'un peut-il m'aider à corriger cette fonction?

+0

Eh bien, qu'est-ce que vous obtenez? –

+0

Lorsque p (zkt) est une fonction de densité de probabilité, to integr-vom -inf à + inf devrait être égal à 1. En regardant simplement votre intrigue, la distribution ne semble pas fausse. – zellus

+0

@James: En supposant que nous sommes censés regarder le graphique bleu, cela semble à peu près correct (au moins en ce qui concerne la normalisation). C'est à peu près une fonction rectangulaire de hauteur 0.02 et de largeur 50, sa surface est donc égale à 1. C'est donc un PDF valide. –

Répondre

1

Ceci est le exponential distribution. Vous pouvez utiliser EXPPDF et EXPCDF de la Boîte à outils statistiques:

normalizer = 1 ./ (expcdf(zktStar,1/short) - expcdf(0,1/short)); 
shortProbability = exppdf(zkt, 1/short) * normalizer; 

et il devrait être équivalent à ce que vous avez ...


C'est ce que je reçois quand je le combine avec le graphique de votre previous question:

alt text

Pour confirmer, nous calculons la surface sous chacun des courbes (assez proche de 1):

>> trapz(zkt,hitProbabilty) 
ans = 
    1 

>> trapz(zkt,shortProbability) 
ans = 
     1.0077 
+0

Merci encore Amro, vous m'aidez vraiment! J'ai été capable de convertir ces fonctions MATLAB en C# en utilisant la bibliothèque MathsDotNet, elles contiennent beaucoup de méthodes utiles pour ces fonctions statistiques. – James

Questions connexes