|
|||||||
|
|
|
|||||
|
|
|||||||
Sea N(t) un proceso de conteo que cumple con las propiedades de Incremento Independinete (I.I) , Incremento Estacionario (I.E) y propiedad de orden.
Teorema
Si { N(t), t > 0 } es un proceso Poisson con tasa media
l, la distribución a través del tiempo
está dado por :
Programación de la función
¿Como debemos plantear el algoritmo para resolver casos donde x tiende a infinito y el problema de factorial nos resulta difícil de evaluar ?
Una solución factible sería realizar la multiplicatoria en función de x , de términos numéricamente más pequeños,
tal como :
ALGORITMO
LEER x , t , l
mult = 1.0
SI ( x es igual a 0 ) ENTONCES
mult = exp(-lt)
SINO
i = 1
fexp = exp(-lt / x+1)
mult = fexp
MIENTRAS (i sea menor o igual a x) HACER
mult = mult * (lt / i ) * fexp
i = i + 1
FIN MIENTRAS
FIN SI
RETORNAR mult
Implementación
class ProcPoisson
{
public static double fPoisson(int x, double lamda, double t)
{
double mult = 1.0;
if (x == 0)
{
mult = Math.exp(-lamda * t);
}
else
{
int i = 1;
double fexp = Math.exp( (-lamda * t) / (double) (x+1));
mult = fexp;
while (i <= x)
{
mult *= ((lamda*t) / (double) i ) * fexp;
/* double aux = ((lamda*t) / (double) i ) * fexp;
System.out.println("\t" + i + "\t" + aux + "\t" + mult); */
i++;
}
}
return mult;
}
}
Programa de prueba
Evaluación del método para x = 20 , l = 3.5 , t = 20.5
class pruebaProc
{
public static void main(String arg[ ])
{
System.out.println("\ti\tfactor mult\t\tacumulador\n");
double f = ProcPoisson.fPoisson(20,3.5,20.5);
System.out.println("\n\tResultado : " + f);
}
}
Salida del programa