Integración numérica |
Sea el pulso rectangular de la figura
Se define una clase Funcion1 derivada de Fourier que describa la función pulso rectangular en cada uno de los intervalos
public class Funcion1 extends Fourier { public Funcion1(double[] discont) { super(discont); } public double funcion(double t){ if(iDiscont==0) return 0.0; if(iDiscont==1) return 1.0; return 0.0; } } |
Se crea un array de las discontinuidades incluídos los extremos del periodo
double anchura=1.0; double periodo=5.0; double[] tiempo=new double [4]; tiempo[0]=-periodo/2; tiempo[1]=-anchura/2; tiempo[2]=anchura/2; tiempo[3]=periodo/2;
Se crea un objeto de la clase Funcion1 pasándole el array tiempo como único argumento de su constructor.
Fourier fo=new Funcion1(tiempo);
Desde dicho objeto se llama a la función mostrarCoeficientes que calcula y muestra los coeficientes de Fourier
fo.mostrarCoeficientes();
En la siguiente tabla se muestran los resultados. Como la función tiene simetría par los coeficientes b son nulos.
orden | a | b |
0 | 1 | |
1 | 0.6366 | 0 |
2 | 0 | 0 |
3 | -0.2122 | 0 |
4 | 0 | 0 |
5 | 0.1273 | 0 |
6 | 0 | 0 |
7 | -0.09097 | 0 |
8 | 0 | 0 |
9 | 0.07078 | 0 |
La clase derivada
public class Funcion2 extends Fourier { private double h; public Funcion2(double[] discont, double h) { super(discont); if(h>0){ this.h=h; }else{ this.h=-h; } } public double funcion(double t){ if(iDiscont==0) return 0.0; if(iDiscont==1) return 1.0; if(iDiscont==2) return -h; return 0.0; } } |
Ejemplo
double anchura=2.0; double periodo=4.0; double profundidad=1.0; double[] tiempo=new double [5]; tiempo[0]=-periodo/2; tiempo[1]=-anchura/2; tiempo[2]=0.0; tiempo[3]=anchura/2; tiempo[4]=periodo/2; fo=new Funcion2(tiempo, profundidad); fo.mostrarCoeficientes();
La clase derivada
public class Funcion3 extends Fourier { public Funcion3(double[] discont) { super(discont); } public double funcion(double t){ if(iDiscont==0) return -t; return t; } } |
Ejemplo
double periodo=4.0; double[] tiempo=new double [3]; tiempo[0]=-periodo/2; tiempo[1]=0.0; tiempo[2]=periodo/2; fo=new Funcion3(tiempo); fo.mostrarCoeficientes();
La clase derivada
public class Funcion4 extends Fourier { public Funcion4(double[] discont) { super(discont); } public double funcion(double t){ if(iDiscont==0) return t+P/2; return t-P/2; } } |
Ejemplo
double periodo=4.0; double[] tiempo=new double [3]; tiempo[0]=-periodo/2; tiempo[1]=0.0; tiempo[2]=periodo/2; fo=new Funcion4(tiempo); fo.mostrarCoeficientes();
Puig Adam. Cálculo integral. Biblioteca Matemática. (1969)
Fourier.java, Funcion1.java,
Funcion2.java, Funcion3.java,
Funcion4.java, IntegralApp3.java