You are on page 1of 2

import java.lang.

*;
public class SimpsonTresOctavos {
double lInf;
double lSup;
double h;
double integral;
int n;
public static void main(String args[]){
SimpsonTresOctavos s=new SimpsonTresOctavos();
LeeUnDouble l=new LeeUnDouble();
System.out.println("Introduce el limite inferior:");
l.leeNumero();
s.lInf=l.num;
System.out.println("\nIntroduce el limite superior:");
l.leeNumero();
s.lSup=l.num;
//A prueba de pendejos:
do{
System.out.println("\nIntroduce N: ");
l.leeNumero();
s.n=(int)l.num;
if(s.n%3!=0 || s.n<=0){
System.out.println("\nN debe ser positivo y multiplo
de 3.");
}
}while(s.n%3!=0 || s.n<=0);
s.h=(s.lSup-s.lInf)/s.n;
s.integral=(3.0/8.0)*s.h*(s.funcion(s.lInf)
+2*s.sumaTres(s.lInf,s.h,s.n)+
3*s.sumaNoTres(s.lInf,s.h,s.n)+s.funcion(s.lSup));
// eso de 3.0/8.0 lo tuve que hacer porque internamente la maquina al hacer
esto: 3/8 hace
// una division entera dando como resultado cero.

System.out.println("\nLa integral es: "+s.integral);

}
public double sumaTres(double inf,double H,int N){
double suma=0;
for(int i=3;i<=(N-3);i=i+3){
suma=suma+funcion(inf+i*H);
}
return suma;
}
public double sumaNoTres(double inf,double H,int N){
double suma=0;
for(int i=1;i<N;i++){
if(i%3!=0){
suma=suma+funcion(inf+i*H);
}
}
return suma;
}
public double funcion(double x){
double fx;
//fx=4/(1+x*x);
fx=(x*x*Math.exp(x));
return fx;
}
}

You might also like