Análisis de Fourier de una función periódica (II)

prev.gif (997 bytes)chapter.gif (1105 bytes)home.gif (1232 bytes)next.gif (998 bytes)

Integración numérica

Ejemplos.

Bibliografía

El código fuente


Ejemplos

Sea el pulso rectangular de la figura

FIG15_04.gif (2489 bytes)

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

 

Pulso doble escalón

FIG15_05.gif (2816 bytes)

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();

Pulso diente de sierra

FIG15_06.gif (2351 bytes)

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();

Pulso diente de sierra

FIG15_07.gif (2688 bytes)

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();

 

Bibliografía

Puig Adam. Cálculo integral. Biblioteca Matemática. (1969)

 

El código fuente

disco.gif (1035 bytes) Fourier.java, Funcion1.java, Funcion2.java, Funcion3.java, Funcion4.java, IntegralApp3.java