Free Web Site - Free Web Space and Site Hosting - Web Hosting - Internet Store and Ecommerce Solution Provider - High Speed Internet
Search the Web

Procesos Poisson

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


siguiente