Clase main: es la clase principal y la que se ejecutara para hacer correr el programa
public class Main {
public static void main(String[] argc) {
Estad p = new Estad();
System.out.printf("Factorial de 5 = %.0f\n", p.Factorial(5));
System.out.printf("Permutacion 5, 3 = %.0f\n", p.Permutacion(5, 3));
System.out.printf("Combinacion 5, 3 = %.0f\n", p.Combinacion(5, 3));
System.out.printf("Binomial 20, 3, 0.5 puntual= %f\n", p.Binomial(20, 3, 0.5, false));
System.out.printf("Binomial 20, 14, 0.5 acumulado= %f\n", p.Binomial(20, 14, 0.5, true));
System.out.printf("Normal 1.75 1.85, 1.80, 0.05 = %f\n", p.Normal(1.75, 1.85, 1.80, 0.05));
System.out.printf("Poison 20, 3, 5 Poisson= %f\n", p.Poisson(20, 3, 5));
System.out.printf("Hipergeometrica 10, 15, 20, 7, 5, Hipergeometrica = %f\n", p.Hipergeometrica( 20, 10, 15, 7, 5));
}
}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Clase estad: en esta clase se encuentran todas las operaciones que el programa ha de realizar.
public class Estad {
public double Factorial( int n ) {
if( n == 0 ) return 1;
return n * Factorial( n - 1 );
}
public double Permutacion( int n, int r ) {
return( this.Factorial( n ) / this.Factorial( n - r ));
}
public double Combinacion( int n, int r ) {
return( this.Factorial( n ) / ( this.Factorial( n - r ) * this.Factorial( r )));
}
public double Binomial( int n, int r, double p, boolean acum ) {
double acumulado;
if( acum ) {
acumulado = 0.0;
for( int i = 0; i <= r; i++ ) {
acumulado += this.Combinacion( n, i ) * Math.pow(p, i) * Math.pow( (1.0 - p), (n - i));
}
return acumulado;
} else {
return( this.Combinacion( n, r ) * Math.pow(p, r) * Math.pow( (1.0 - p), (n - r)));
}
}
public double Normal( double linf, double lsup, double media, double sigmma) {
double parte1, parte2, dx, area1 = 0.0, area2 = 1.0;
int celdas = 50;
parte1 = 1.0 / ( sigmma * Math.sqrt(2.0 * Math.PI));
while(Math.abs(area1 - area2) > 0.0000001) {
area2 = area1;
area1 = 0.0;
celdas *= 2;
dx = (double)Math.abs(linf - lsup) / celdas;
for( double i = linf; i < lsup; i += dx ) {
parte2 = (i - media) / sigmma;
area1 += ( parte1 * Math.pow(Math.E, ( -1.0/2.0 * Math.pow(parte2, 2) ))) * dx;
}
}
return area1;
}
public double Poisson (int n, int p, int k){
return Math.pow(2.71828, n*p) * ((Math.pow(n*p, k)/this.Factorial(k)));
}
public double Hipergeometrica (int N, int N1, int N2, int n, int k) {
return ((this.Factorial(N1) / (this.Factorial(k)*this.Factorial(N1-k)))) * ( this.Factorial(N2) / (this.Factorial(n-k) * this.Factorial(N2- (n-k)))) / ( this.Factorial(N) / ( this.Factorial(n) * (this.Factorial(N-n))));
}
}

No hay comentarios:
Publicar un comentario