# Script para ver y ocultar el codigo del jupyter
from IPython.display import HTML
HTML('''<script>
function code_toggle() {
if (code_shown){
$('div.input').hide('500');
$('#toggleButton').val('Ver el Codigo de Python')
} else {
$('div.input').show('500');
$('#toggleButton').val('Ocultar el Codigo')
}
code_shown = !code_shown
}
$( document ).ready(function(){
code_shown=false;
$('div.input').hide()
});
</script>
<form action="javascript:code_toggle()">
<input type="submit" id="toggleButton" value="Ver el Codigo de Python"></form>''')
Las series de Fourier constituyen la herramienta matemática básica del análisis de Fourier empleado para analizar funciones periódicas a través de la descomposición de dicha función en una suma infinita de funciones senoidales mucho más simples (como combinación de senos y cosenos con frecuencias enteras). El nombre se debe al matemático francés Jean-Baptiste Joseph Fourier que desarrolló la teoría cuando estudiaba la ecuación del calor. Fue el primero que estudió tales series sistemáticamente, y publicando sus resultados iniciales en 1807 y 1811. Esta área de investigación se llama algunas veces Análisis armónico.
Es una aplicación usada en muchas ramas de la ingeniería, además de ser una herramienta sumamente útil en la teoría matemática abstracta. Áreas de aplicación incluyen análisis vibratorio, acústica, óptica, procesamiento de imágenes y señales, y compresión de datos. En ingeniería, para el caso de los sistemas de telecomunicaciones, y a través del uso de los componentes espectrales de frecuencia de una señal dada, se puede optimizar el diseño de un sistema para la señal portadora del mismo. Refierase al uso de un analizador de espectros.
En los sistemas LTI es importante poder representar señales como la combinacion lineal de señales basicas que posean 2 propiedades:
La respuesta de una sistema LTI antes una señal Exponencial Compleja es la misma señal Exponencial Compleja con un cambio de amplitud $$\large e^{st} \rightarrow H(s)e^{st} $$ $$\large Z^n \rightarrow H[z] Z^{n} $$
Donde $\large H(s)$ y $\large H[z]$ con los valores propios (eingen valores) y $\large e^{st}$ y $\large Z^{n}$ son las funciones propias (eingen funciones)
Esto se puede demostrar para los sistemas continuos
$$ \large \begin{equation} x(t) = e^{st} \\ y(t) = \int_{- \infty}^{+ \infty} h(\tau) x(t-\tau)\mathrm{d} \tau \\ y(t) = \int_{- \infty}^{+ \infty} h(\tau) e^{s(t-\tau)}\mathrm{d} \tau \\ y(t) = e^{st} {\underbrace{ \int_{- \infty}^{+ \infty} h(\tau) e^{-s \tau}\mathrm{d} \tau}_{H(s) \rightarrow \text{Constante Compleja}}} \\ y(t) = H(s)e^{st} \end{equation} $$Para los sistemas discretos
$$ \large \begin{equation} x[n] = Z^n \\ y[n] = \sum_{k = - \infty}^{+ \infty} h[k]x[n-k] \\ y[n] = \sum_{k = - \infty}^{+ \infty} h[k] Z^{n-k} \\ y[n] = Z^n {\underbrace{ \sum_{k = - \infty}^{+ \infty} h[k] Z^-k}_{H[Z]}} \\ y[n] = h[z]Z^n \end{equation} $$En Resumen para los sistemas continuos $$ \large \begin{equation} x(t) = a_1 e^{s_1 t} + a_2 e^{s_2 t} + a_3 e^{s_3 t} \rightarrow \\ a_1 e^{s_1 t} \rightarrow a_1 H(s_1) e^{s_1 t} \\ a_2 e^{s_2 t} \rightarrow a_2 H(s_2) e^{s_2 t} \\ a_3 e^{s_3 t} \rightarrow a_3 H(s_3) e^{s_3 t} \\ y(t) = a_1 H(s_1) e^{s_1 t} + a_2 H(s_2) e^{s_2 t} + a_3 H(s_3) e^{s_3 t} \\ \quad \\ x(t) = \sum_{k} a_k e^{s_k t} \rightarrow y(t) = \sum_{k}a_k H(s_k) e^{s_k t} \end{equation} $$
Para los sistemas Discretos $$ \large \begin{equation} x[n] = \sum_{k} a_k Z_{k}^{n} \\ y[n] = \sum_{k} a_k H(Z_k) Z_{k}^{n} \end{equation} $$
las señales exponenciales complejas que están relacionadas armónicamente cumplen que
$$ \large \phi_k(t) = e^{j k \omega_0 t} = e^{j k \left( \frac{2 \pi}{T}\right) t} \quad k = 0, \pm 1, \pm 2, ... $$SERIE DE FOURIER $$ \Large \boxed{x(t) = \sum_{k = - \infty}^{+ \infty}a_k e^{j k \omega_0 t} = \sum_{k = - \infty}^{+ \infty}a_k e^{j k \left( \frac{2 \pi}{T} \right) t} } $$
Ejemplo: $$ \large \begin{equation} x(t) = \sum_{k = -3}^{3}a_k e^{j k 2 \pi t}\\ a_0 = 1, \quad a_1=a_{-1} = \frac{1}{4} \\ a_2=a_{-2} = \frac{1}{2}, \qquad a_3=a_{-3} = \frac{1}{3} \\ x(t) = 1 + \frac{1}{4} \left ( e^{j 2 \pi t} +e^{- j 2 \pi t} \right ) + \frac{1}{2} \left ( e^{j 4 \pi t} +e^{- j 4 \pi t} \right ) + \frac{1}{3} \left ( e^{j 6 \pi t} +e^{- j 6 \pi t} \right ) \rightarrow \\ x(t) = 1 + \frac{1}{2}\cos(2 \pi t) + \cos(4 \pi t) + \frac{2}{3}\cos(6 \pi t) \end{equation} $$
Como son Complejos conjugados entonces $$ \large x(t) = a_0 + \sum_{k=1}^{\infty} 2 \mathbb{Re} \left \{ a_k e^{j k \omega_0 t} \right \} $$ Si $a_k$ se expresa de forma polar entonces
$$ \large a_k = A_k e^{j \theta_k} \rightarrow \\ \large x(t) = a_0 + \sum_{k=1}^{\infty} 2 \mathbb{Re} \left \{ A_k e^{j( k \omega_0 t + \theta_k)} \right \} \\ \large x(t) = a_0 + 2 \sum_{k=1}^{\infty} A_k \cos ( k \omega_0 t + \theta_k) $$Que es llamada la serie de fourier de una señal periodica real continua, otra forma de representacion se obtiene cuando
$$ \large a_k = B_k +jC_k \rightarrow \\ \large x(t) = a_0 + 2 \sum_{k=1}^{\infty}[ B_k \cos ( k \omega_0 t)- C_k \sin ( k \omega_0 t)] $$Se demostrara como calcular los valores de $\large a_k$ $$ \large x(t)\qquad \quad = \sum_{k = - \infty}^{+ \infty}a_k e^{j k \omega_0 t} \\ x(t) e^{-j n \omega_0 t} = \sum_{k = - \infty}^{+ \infty}a_k e^{j k \omega_0 t} \: e^{-j n \omega_0 t} \\ \int_0^T x(t) e^{-j n \omega_0 t} \mathbb{d}t= \int_0^T \sum_{k = - \infty}^{+ \infty}a_k e^{j k \omega_0 t} \: e^{-j n \omega_0 t} \mathbb{d}t\\ \int_0^T x(t) e^{-j n \omega_0 t} \mathbb{d}t= \sum_{k = - \infty}^{+ \infty}a_k {\underbrace{ \left [ \int_0^T e^{j (k -n)\omega_0 t} \mathbb{d}t \right ]}_{\large \bigstar}} \\ \large \bigstar \: \int_0^T e^{j (k -n)\omega_0 t} \mathbb{d}t = \int_0^T \cos((k-n)w_0 t) \mathbb{d}t + j\int_0^T \sin((k-n)w_0 t) \mathbb{d}t $$ En $\large \bigstar$ Si $\large k \neq n \:$ entonces la integral es igual a cero
En $\large \bigstar$ Si $\large k = n \:$ entonces $\large \int_0^T e^{j (k -n)\omega_0 t} \mathbb{d}t = T$
Finalmente reemplazando los valores obtenidos en $\bigstar$ ,cuando $k=n$, en la formula original podemos despejar y obtenemos:
$$ \large \boxed{a_k = \frac{1}{T}\int_0^T x(t)e^{-j k \omega_0 t} \mathbb{d}t} $$$$ \large \boxed{a_0 = \frac{1}{T}\int_0^T x(t) \mathbb{d}t} $$y recordando que la serie de Fourier es igual a:
$$ \Large \boxed{x(t) = \sum_{k = - \infty}^{+ \infty}a_k e^{j k \omega_0 t} = \sum_{k = - \infty}^{+ \infty}a_k e^{j k \left( \frac{2 \pi}{T} \right) t} } $$Determinar la serie de Fourier para $\large x(t) = \sin (\omega_0 t)$
Determinar la serie de Fourier para $\large x(t) = 1 + \sin (\omega_0 t) + 2 \cos (\omega_0 t) + \cos (2\omega_0 t + \frac{\pi}{4})$
Calculo Serie de Fourier de una señal cuadrada
Para que se pueda calcular las series de Fourier se deben cumplir las condiciones de Dirichlet
Sobre cualquier Periodo $x(t)$ debe ser absolutamente integrable. $$\large \int_T |x(t)| \mathbb{d}t < \infty $$
La variacion de $x(t)$ en cualquier intervalo finito de tiempo debera estas acotado, entonces existe un numero finito de maximos y minimos durante un periodo.
En cualquier intervalo finito de tiempo hay solo un numero finito de discontinuidades, ademas esas discontinuidades deben ser finitas.
El fenómeno de Gibbs es la descripción del comportamiento que tiene la serie de Fourier asociada a una función definida a trozos periódica en una discontinuidad no evitable de salto finito. Su nombre se debe a J. Willard Gibbs, quien fue el primero en explicar este fenómeno, en 1899.
Cuando la función que se está desarrollando en Serie de Fourier tiene discontinuidades (señales de variación rápida) no es posible que haya una buena convergencia en los entornos de las mismas.
Esta señal es un buen ejemplo para demostrar el fenomeno de Gibbs
# Importar librerias basicas
import numpy as np
import matplotlib.pyplot as plt
import sympy as sym
%matplotlib inline
plt.style.use('bmh') # estilo de las graficas
from IPython.display import Latex # para visualizar ecuaciones en jupyter
from scipy import signal as sp
amplitud = 1
periodo = np.pi
t = np.arange(-1, 10, 0.001)
funcion = ((sp.square(2 * t)) * (amplitud / 2.0)) + (amplitud / 2.0)
plt.plot(t, funcion, lw=2)
plt.grid()
plt.annotate('Pi', xy = (np.pi, 1), xytext = (np.pi, 1.1))
plt.annotate('Pi/2', xy = (np.pi / 2.0, 1), xytext = (np.pi / 2.0, 1.1))
plt.ylabel('Amplitud')
plt.xlabel('Tiempo(t)')
plt.ylim(-1,2)
plt.xlim(-0.5, 4)
plt.show()
#Importamos todo el modulo sympy
%matplotlib inline
import numpy as np
import matplotlib.pylab as plt
from sympy import *
#ademas importamos las variables simbolicas 'n' y 't'
from sympy.abc import t, n
ao = integrate(2 / pi, (t, 0, pi / 2))
#integramos la funcion (2/pi) cuya variable es 't'
#y limites de integracion entre 0 y pi/2
print('Coeficientes de la serie de Fourier en forma Trigonometrica')
print("\n"+"a0 = ")
pprint(ao)
#Usamos la funcion pprint para mostrar ao
an = integrate((2 / pi) * cos(2 * n * t), (t, 0, pi / 2))
an = integrate((2 / pi) * cos(2 * n * t), (t, 0, pi / 2))
#integramos la funcion (2/pi)*cos(2nt)
#Su variable es 't' y sus limites de integracion son 0 y pi/2
print ("\n"+"an = ")
pprint(an)
#Usamos la funcion pprint para mostrar an
bn = together(integrate((2 / pi) * sin(2 * n * t), (t, 0, pi / 2)))
#integramos la funcion (2/pi*cos(2nt)
#Su variable es 't' y sus limites de integracion
#son 0 y pi/2. Ademas usamos la funcion "together"
#para simplificar la expresion
print("\n"+"bn = ")
pprint(bn)
#Usamos la funcion pprint para mostrar bn
print("\n"+"f(x) = ")
Coeficientes de la serie de Fourier en forma Trigonometrica a0 = 1 an = ⎧sin(π⋅n) ⎪──────── for n > -∞ ∧ n < ∞ ∧ n ≠ 0 ⎨ π⋅n ⎪ ⎩ 1 otherwise bn = ⎧ cos(π⋅n) 1 ⎪- ──────── + ─── for n > -∞ ∧ n < ∞ ∧ n ≠ 0 ⎨ π⋅n π⋅n ⎪ ⎩ 0 otherwise f(x) =
armonicos = 10
serie = (ao/2)
for i in range(1, armonicos + 1):
serie = serie + (an*cos(2*n*t)).subs(n, i)
for j in range(1, armonicos + 1):
serie = serie + (bn*sin(2*n*t)).subs(n, j)
pprint(serie)
#Usando el modulo para graficas de sympy
plotting.plot(serie, ylim=(-0.5, 1.5), xlim=(-0.5,5));
2⋅sin(2⋅t) 2⋅sin(6⋅t) 2⋅sin(10⋅t) 2⋅sin(14⋅t) 2⋅sin(18⋅t) 1 ────────── + ────────── + ─────────── + ─────────── + ─────────── + ─ π 3⋅π 5⋅π 7⋅π 9⋅π 2
points = [1,2,4,10,30,50]
for ii in points:
armonicos = ii
serie = (ao/2)
for i in range(1, armonicos + 1):
serie = serie + (an*cos(2*n*t)).subs(n, i)
for j in range(1, armonicos + 1):
serie = serie + (bn*sin(2*n*t)).subs(n, j)
#Usando el modulo para graficas de sympy
print(f'Numero de terminos = {ii}')
sym.plotting.plot(serie, ylim=(-0.5, 1.5), xlim=(-0.5,5))
Numero de terminos = 1
Numero de terminos = 2
Numero de terminos = 4
Numero de terminos = 10
Numero de terminos = 30
Numero de terminos = 50
Como se puede apreciar, a medida que se suman más términos a la serie, ésta se va aproximando a la onda cuadrada dado que las oscilaciones se vuelven más rápidas y más pequeñas, pero los picos no disminuyen. Estos picos en las series de Fourier de la función cuadrada nunca desaparecen; son llamados el fenómeno de Gibbs nombrado por el físico estadounidense Josiah Willard Gibbs. Ocurren cada vez que las señales tienen discontinuidades de salto (generalmente en los extremos), y siempre estarán presentes cuando la señal tiene oscilaciones fuertes como en este caso de uno a menos uno.
Cuando una señal periodica se desplaza en $\large t$ las magnitudes de $\large |a_k| = |b_k|$ no se alteran
Haciendo $k = -m \rightarrow$ $$ y(t) = x(-t) \rightarrow x(-t) = \sum_{m = -\infty}^{\infty}a_m e^{j m \omega_0 t} \rightarrow \large bk = a_{-k} \\ \large \boxed{x(-t) \overset{fs}{\longleftrightarrow} a_{-k}} $$
El escalamiento hace que cambie el periodo de la señal
$$ \Large \boxed{x(\alpha t) = \sum_{k = - \infty}^{+ \infty}a_k e^{j k (\alpha\omega_0) t} } $$La principal diferencia con la serie continua, es que la serie discreta es finita, lo que indica que una señal discreta periodica se puede representar como una combinacion lineal de exponenciales complejas armonicas discretas
$$ \large x[n] = x[n+N] \qquad \omega_0 = \frac{2 \pi}{N} \quad \text{Frecuencia Fundamental} $$las señales exponenciales complejas que estan relacionadas armónicamente cumplen que
$$ \large \phi_k[n] = e^{j k \omega_0 n} = e^{j k \left( \frac{2 \pi}{N}\right) t} \quad k = 0, \pm 1, \pm 2, ... $$Pero solo existen $N$ Señales distintas, debido a la periodicidad de las señales exponenciales complejas discretas, la serie discreta de fourier esta definida como:
$$ \Large \boxed{x[n] = \sum_{k = <N>}a_k e^{j k \left( \frac{2 \pi}{N} \right) n} } $$Se demostrara como calcular los valores de $a_k$ $$ \large x[n]\qquad \quad = \sum_{k = <N>}a_k e^{j k \omega_0 n} \\ \large \sum_{n = <N>}x[n] e^{-j r \omega_0 t} = \sum_{n = <N>} \sum_{k = <N>}a_k e^{j (k-r) \omega_0 n} \\ \large \sum_{n = <N>}x[n] e^{-j r \omega_0 t} = \sum_{k = <N>}a_k \sum_{n = <N>} e^{j (k-r) \omega_0 n} \\ \large \sum_{n = <N>} e^{j k \omega_0 n} \begin{cases} N, \qquad K = 0 \\ 0, \qquad \text{para los otros valores} \end{cases} $$
Resolviendo de la misma manera que para las serries continuas obtenemos que: $$ \boxed{\large \begin{aligned} a_k &= \frac{1}{N} \sum_{n=<N>} x[n] e^{-j k \omega_0 n} \\ x[n] &= \sum_{k = <N>}a_k e^{j k \left( \frac{2 \pi}{N} \right) n} \end{aligned} } $$ Recordar que $\large a_k = a_{k+N}$
Determinar la serie de Fourier para $\large x[n] = \sin (\omega_0 n)$
Calculo Serie de Fourier de una señal cuadrada
Para las señales discretas no se presenta el fenomeno de Gibbs, estas se representan completamente con componentes finitas, como se puede ver en la solucion de la señal cuadrada
Las Propiedades son iguales a las de las señales continuas, a diferencia de estos casos:
Esta operacion se llama convolucion periodica
Para las señales continuas $$ \large x(t) = e^{st} \\ y(t) = H(s)e^{st} \\ H(s) = \int_{- \infty}^{+ \infty} h(\tau) e^{-s \tau}\mathrm{d} \tau $$ En la cual $\large h(t)$ es la respuesta al impulso
Para las señales discretas
Si $\large s ,z$ con señales complejas generales $\large H(s), H[Z]$ se conocen como las funciones del sistema.
Si $\large s=j \omega$ entonces $\large H(j\omega)$ es la Respuesta en frecuencia
$$ \large \boxed{ H(j\omega) = \int_{- \infty}^{+ \infty} h(\tau) e^{-s \tau}\mathrm{d} \tau} $$Entonces si:
$$ \large x(t) = \sum_{k = - \infty}^{+ \infty}a_k e^{j k (\omega_0) t} \rightarrow \\ y(t) = \sum_{k = - \infty}^{+ \infty}a_k H(e^{j\omega_0}) e^{j k (\omega_0) t} $$Donde $\large y(t)$ tambien es periodica con la misma frecuencia fundamental de $\large x(t)$
Para las Señales discretas $\large |Z| =1$ donde $\large Z = e^{j\omega}$ $$ \large \boxed{ H(e^{j\omega}) = \sum_{n = -\infty}^{+ \infty} h[n] e^{-j \omega n}} $$
$$ \large x[n] = \sum_{k = <N>}a_k e^{j k \left( \frac{2 \pi}{N} \right) n} \\ \large y[n] = \sum_{k = <N>}a_k H(e^{j k \left( \frac{2 \pi}{N} \right)}) e^{j k \left( \frac{2 \pi}{N} \right) n} $$Phd. Jose R. Zapata