next up previous


Informática. Exame resolto de prácticas. Setembro 2002

A Serie de Fourier dunha función periódica f (x) par (isto é, f (- x) = f (x)) de período P está determinada pola seguinte expresión:

f (x) = $\displaystyle {\frac{{a_0}}{{2}}}$ + $\displaystyle \sum_{{k = 1}}^{\infty}$akcos$\displaystyle \Big($$\displaystyle {\frac{{2 \pi kx}}{{P}}}$$\displaystyle \Big)$ (1)

Onde:

a0 = $\displaystyle {\frac{{2}}{{P}}}$$\displaystyle \int_{{0}}^{P}$f (t)dt,    ak = $\displaystyle {\frac{{2}}{{P}}}$$\displaystyle \int_{{0}}^{P}$f (t)cos$\displaystyle \Big($$\displaystyle {\frac{{2 \pi kt}}{{P}}}$$\displaystyle \Big)$dt, k = 1,...,$\displaystyle \infty$ (2)

As integrais pódense aproximar empregando a Regra de Simpson:

$\displaystyle \int_{a}^{b}$g(t)dt = $\displaystyle {\frac{{b - a}}{{3n}}}$$\displaystyle \Bigg[$g(a) + g(b) + 4$\displaystyle \sum_{{i = 2}}^{{n,2}}$g(ti-1) + 2$\displaystyle \sum_{{i = 2}}^{{n - 2,2}}$g(ti)$\displaystyle \Bigg]$ (3)

ti = a + $\displaystyle {\frac{{i(b - a)}}{{n}}}$,    i = 1, 2,..., n - 1, n (4)

Onde os ti son os n puntos na partición do intervalo [a, b] e $ \sum_{{i = 2}}^{{n,2}}$ designa á suma dende i = 2 ata n con incrementos de 2:

$\displaystyle \sum_{{i = 2}}^{{n,2}}$g(ti-1) = g(t1) + g(t3) +...+ g(tn-3) + g(tn-1) (5)

Escribir un programa en Fortran que calcule os valores ak, k = 0,..., K para f (t) = cos(t), P = 2$ \pi$. Para esto:



Para f (t) = cos(t) e P = 2$ \pi$, o resultado debe ser a1 = 1 e ak = 0, k$ \ne$1.



SOLUCIÓN:

      program serie_fourier
      parameter (PI = 3.141592)
      real integral1, integral2

      p = 2*PI; n = 100

      a = 2*integral1(0., p, n)/p
      print 3, "a0 = ", a
 3    format(a5, f8.5)

      do 1 k = 1, 10
         a = 2*integral2(0., p, k, n)/p
 1       print 2, "a", k, " = ", a
 2    format(a1, i2, a3, f8.5)

      stop
      end


cccccccccccccccccccccccccccc
      real function integral1(a, b, n)
      f(t) = cos(t)
      h = (b - a)/n

      integral1 = f(a) + f(b)
      do 1 i = 2, n, 2
 1       integral1 = integral1 + 4*f(a + (i - 1)*h)

      do 2 i = 2, n - 2, 2
 2       integral1 = integral1 + 2*f(a + i*h)

      integral1 = h*integral1/3

      return
      end

cccccccccccccccccccccccccccc
      real function integral2(a, b, k, n)
      f(t) = cos(t)*cos(k*t)
      h = (b - a)/n

      integral2 = f(a) + f(b)
      do 1 i = 2, n, 2
 1       integral2 = integral2 + 4*f(a + (i - 1)*h)

      do 2 i = 2, n - 2, 2
 2       integral2 = integral2 + 2*f(a + i*h)

      integral2 = h*integral2/3

      return
      end


next up previous
© 2006, Dr. Manuel Fernández Delgado, Universidad de Santiago de Compostela, Departamento de Electrónica e Computación