LP tronquée à n : P(X=k)=e^
{-l}*{l^
k}/{k!} si
k<n et le reste du poids sur P(X=n).
function [lpd] = loipoisson(n,lambda)
lpd=zeros(1,n+1); // pour avoir un vecteur ligne
// dont les coefficients sont de'cale's
lpd(1)=%e^
(-lambda);
s=lpd(1);
for k=1:n-1, lpd(k+1)=lpd(k)*lambda/k, s=s+lpd(k+1), end;
lpd(n+1)=1-s;
endfunction
=============================================================================
function [lpd] = loipoisson2(n,lambda) // la même avec un vecteur
// colonne allongé au fur et à
mesure
lpd(1)=%e^
(-lambda)
s=lpd(1)
for k=1:n-1, lpd(k+1)=lpd(k)*lambda/k, s=s+lpd(k+1), end
lpd(n+1)=1-s
endfunction
=============================================================================
function [lpr] = loipoissonrepart(n,lambda) // fonction de
// répartition en cumulant : lpr est un vecteur colonne
lpr=zeros(n+1,1) // déclaration de taille du
tableau
lpr(1)=%e^
(-lambda)
s=lpr(1)
for k=1:n-1, lpr(k+1)=lpr(k)*lambda/k, s=s+lpr(k+1), end
// calcul de la distribution
for k=2:n, lpr(k)=lpr(k-1)+lpr(k), end // calcul cumulatif
lpr(n+1)=1 // pour être sûr
endfunction
=============================================================================
function alea = aleaPoisson(n,lambda) // en test
// tabrepart = loipoissonrepart(n,lambda) à faire avant usage
// tabrepart(n+1)=1 par hypothèse
s=rand();
i=1;
while s>tabrepart(i), i=i+1, end;
alea=i;
endfunction
=============================================================================
function [freqtirage]= tiragePoisson(N,n,lambda) // pour de vrai
// fait aleaPoisson(n,p) N fois et stocke les fréquences dans
// le tableau freqtirage de dimension n+1.
freqtirage=zeros(n+1,1);
tabrepart = loipoissonrepart(n,lambda);
// write(%io(2),"fonction de repartition")
// write(%io(2),tabrepart,"(""| "",e10.3,"" |"")")
// write(%io(2),1-tabrepart(n+1),"(""* "",e10.3,"" *"")")
for k=1:N,
s=rand();
i=1;
while s>tabrepart(i), i=i+1, end;
freqtirage(i)=freqtirage(i)+1;
end;
endfunction
Un message classique lors de la redéfinition d'une fonction
->getf("poisson.sci") Warning :redefining function: loipoisson
=============================================================================
-->LPtirage= tiragePoisson(200,20,5) LPtirage = ! 2. ! ! 5. ! ! 16. ! ! 30. ! ! 36. ! ! 39. ! ! 28. ! ! 24. ! ! 10. ! ! 5. ! ! 2. ! ! 3. ! ! 0. ! ! 0. ! ! 0. ! ! 0. ! ! 0. ! ! 0. ! ! 0. ! ! 0. ! ! 0. !
============================================================================
->plot2d3([1:21],LPtirage)
->plot2d2([1:21],LPtirage)
permet de tracer les valeurs sous forme d'histogramme
ou encore mieux pour compter a` partir de 0
->plot2d3([0:20],LPtirage) ->plot2d2([0:20],LPtirage)
=============================================================================