Interpolación trigonométrica

Introducción

Hasta ahora hemos visto cómo aproximar funciones continuas por funciones polinómicas minimizando el error cometido basado en la norma euclídea (caso de aproximación por mínimos cuadrados) o la norma infinito (caso de la aproximación minimax).

En el caso de aproximación por mínimos cuadrados, hemos visto cómo aproximar una nube de puntos \((x_k,y_k),\ k=1,\ldots,m\) (caso discreto) o cómo aproximar una función continua en un determinado intervalo \([a,b]\) (caso continuo).

Sin embargo, el uso de polinomios no siempre es la mejor opción para aproximar una función o una nube de puntos.

Los polinomios tienen una tendencia natura a oscilar mucho, sobre todo cuando aumentamos el grado de los mismos.

Esto hace que las cotas de los errores cometidos sea mucho más grande que los errores reales.

Introducción

En esta sección, consideraremos otro tipo de funciones para aproximar una nube de puntos o una función continua: las llamadas funciones trigonométricas.

Nos centraremos para simplificar los cálculos y para un mayor entendimiento de los conceptos que vamos a ver al intervalo \([-\pi,\pi]\).

Dado un entero positivo \(n\), las funciones trigonométricas consideradas \(\{\psi_0(x),\psi_1(x),\ldots,\psi_n(x),\psi_{n+1}(x),\ldots,\psi_{2n-1}(x)\}\) tienen la expresión siguiente: \[ \begin{align*} \psi_{0}(x)= & \frac{1}{2},\\ \psi_{k}(x)=&\cos(kx),\quad k=1,\ldots,n\\ \psi_{n+1}(x)=&\sin(x),\\ \psi_{n+k}(x)=&\sin(kx),\quad k=1,\ldots,n-1. \end{align*} \]

Espacio de aproximación

El espacio de aproximación \(T_n\) considerado será el espacio vectorial cuya base de funciones es el conjunto anterior \(\{\psi_0(x),\psi_1(x),\ldots,\psi_n(x),\psi_{n+1}(x),\ldots,\psi_{2n-1}(x)\}\): \[ \begin{align*} T_n = \{S_n(x)\ |\ S_n(x)=& \frac{a_0}{2}+\sum_{j=1}^{n-1} (a_j\psi_j(x)+b_j\psi_{n+j}(x))+a_n \psi_n(x)\\ = & \frac{a_0}{2}+\sum_{j=1}^{n-1} (a_j\cos(jx)+b_j\sin(jx))+a_n\cos(nx)\}. \end{align*} \] El problema que queremos resolver es el siguiente:

Problema de aproximación trigonométrica

Sea \(f\in {\cal}[-\pi,\pi]\) una función continua en el intervalo \([-\pi,\pi]\), queremos hallar la función \(S_n(x)\in T_n\) que pertenece al espacio de aproximación definido anteriormente tal que la función error siguiente sea mínima: \[ \begin{align*} & E(a_0,a_1,\ldots,a_n,b_1,b_2,\ldots,b_{n-1})= \int_{-\pi}^{\pi}(f(x)-S_n(x))^2\, dx\\ &\quad = \int_{-\pi}^{\pi}\left(f(x)-\left(\frac{a_0}{2}+\sum_{j=1}^{n-1} (a_j\cos(jx)+b_j\sin(jx))+a_n\cos(nx)\right)\right)^2\, dx. \end{align*} \] La función error depende de \(2n-1\) coeficientes \(a_k\), \(k=0,\ldots,n\) y \(b_k\), \(k=1,\ldots,n-1\) que tenemos que hallar.

Cálculo del mínimo de la función error

El Teorema siguiente nos da la función \(S_n(x)\) que minimiza la función error:

Teorema: función que minimiza la función error.

Sea \(f\) una función definida e integrable en el intervalo \([-\pi,\pi]\). Entonces la función que minimiza la función error es la siguiente: \[ S_n(x)=\frac{a_0}{2}+\sum_{j=1}^{n-1} (a_j\cos(jx)+b_j\sin(jx))+a_n\cos(nx), \] con \[ \begin{align*} a_k = & \frac{1}{\pi}\int_{-\pi}^\pi f(x)\cos(kx)\,dx,\ k=0,\ldots,n\\ b_k = & \frac{1}{\pi}\int_{-\pi}^\pi f(x)\sin(kx)\,dx,\ k=1,\ldots,n-1. \end{align*} \]

Cálculo del mínimo de la función error

Observación.

La razón de que en la expresión \(S_n(x)\) aparezca \(\frac{a_0}{2}\) es que la expresión de \(a_k\) queda compacta, para \(k=0,\ldots,n\). De hecho, \(\displaystyle a_0 =\frac{1}{\pi}\int_{-\pi}^\pi f(x)\,dx.\)

Observación.

La función \(S_n(x)\) cuando \(n\to\infty\) se denomina desarrollo de Fourier de la función \(f(x)\): \[ S(x)=\frac{a_0}{2}+\sum_{k=1}^\infty (a_k\cos(kx)+b_k\sin(kx)). \]

Cálculo del mínimo de la función error

Antes de desarrollar las ecuaciones anteriores veamos el siguiente lema que nos será muy útil:

Lema.

Sean \(j,k\) valores enteros. Entonces se cumplen las igualdades siguientes: \[ \begin{align*} \int_{-\pi}^{\pi}\sin(jx)\, dx= & 0,\ j=0,1,\ldots,\quad \int_{-\pi}^\pi \cos(jx)\, dx= 0,\ j=1,2,\ldots,\\ \int_{-\pi}^\pi \cos(jx)\cos(kx)\, dx = & 0,\mbox{ si }j\neq k,\quad \int_{-\pi}^\pi \cos^2(kx)\, dx = \pi,\ k=1,2,\ldots,\\ \int_{-\pi}^\pi \sin(jx)\cos(kx)\, dx = & 0,\ j,k=1,2,\ldots,\\ \int_{-\pi}^\pi \sin(jx)\sin(kx)\, dx = & 0,\ \mbox{ si }j\neq k,\quad \int_{-\pi}^\pi \sin^2(kx)\, dx = \pi,\ k=1,2,\ldots \end{align*} \]

Demostración del lema

Empecemos con la primer línea de igualdades: \[ \begin{align*} \int_{-\pi}^{\pi}\cos(jx)\, dx= & \left[\frac{\sin(jx)}{j}\right]_{-\pi}^\pi =\frac{1}{j}(\sin(j\pi)-\sin(-j\pi))=0,\ j=1,\ldots,n\\ \int_{-\pi}^{\pi}\sin(jx)\, dx= & -\left[\frac{\cos(jx)}{j}\right]_{-\pi}^\pi =-\frac{1}{j}(\cos(j\pi)-\cos(-j\pi)) -\frac{1}{j}((-1)^j-(-1)^j)=0,\ j=1,\ldots,n-1. \end{align*} \] Con respecto a la segunda linea, \[ \begin{align*} & \int_{-\pi}^\pi \cos(jx)\cos(kx)\, dx = \int_{-\pi}^\pi \frac{1}{2}(\cos((j-k)x)+\cos((j+k)x))\, dx \\ = & \frac{1}{2}\left(\int_{-\pi}^\pi \cos((j-k)x)\, dx +\int_{-\pi}^\pi \cos((j+k)x)\, dx \right)= \frac{1}{2}\left(\left[\frac{\sin((j-k)x)}{j-k}\right]_{-\pi}^\pi+\left[\frac{\sin((j+k)x)}{j+k}\right]_{-\pi}^\pi\right)\\=&\frac{1}{2}\Biggl(\frac{1}{j-k}(\sin((j-k)\pi)-\sin((j-k)(-\pi))) +\frac{1}{j+k}(\sin((j+k)\pi)-\sin((j+k)(-\pi)))\Biggr) = 0,\ j\neq k,\\ & \int_{-\pi}^\pi \cos^2(kx)\, dx =\frac{1}{2}\int_{-\pi}^\pi (1+\cos(2kx))\, dx=\frac{1}{2}\left[x+\frac{\sin(2kx)}{2k}\right]_{-\pi}^\pi \\ = & \frac{1}{2}\left(\pi+\frac{\sin(2k\pi)}{2k}-\left(-\pi+\frac{\sin(-2k\pi)}{2k}\right)\right)=\frac{1}{2}(\pi-(-\pi))=\frac{1}{2}\cdot 2\pi =\pi. \end{align*} \]

Demostración del lema (continuación)

Con respecto a la tercera linea, \[ \begin{align*} & \int_{-\pi}^\pi \sin(jx)\cos(kx)\, dx = \int_{-\pi}^\pi \frac{1}{2}(\sin((j-k)x)+\sin((j+k)x))\, dx \\ = & \frac{1}{2}\left(\int_{-\pi}^\pi \sin((j-k)x)\, dx +\int_{-\pi}^\pi \sin((j+k)x)\, dx \right)= -\frac{1}{2}\left(\left[\frac{\cos((j-k)x)}{j-k}\right]_{-\pi}^\pi+\left[\frac{\cos((j+k)x)}{j+k}\right]_{-\pi}^\pi\right)\\=&\frac{1}{2}\Biggl(\frac{1}{j-k}(\cos((j-k)\pi)-\cos((j-k)(-\pi))) +\frac{1}{j+k}(\cos((j+k)\pi)-\cos((j+k)(-\pi)))\Biggr) \\ = & \frac{1}{2}\Biggl(\frac{1}{j-k}((-1)^{j-k}-(-1)^{j-k})+\frac{1}{j+k}((-1)^{j+k}-(-1)^{j+k})\Biggr) = 0,\ j\neq k,\\ & \int_{-\pi}^\pi \sin(kx)\cos(kx)\, dx = \int_{-\pi}^\pi \frac{1}{2}\sin(2kx)\, dx = -\frac{1}{2} \left[\frac{\cos(2kx)}{2k}\right]_{-\pi}^\pi =-\frac{1}{4k}(\cos(2k\pi)-\cos(-2k\pi))\\ = & -\frac{1}{4k}(1-1)=0,\ k=1,\ldots,n. \end{align*} \]

Demostración del lema (continuación)

Por último, con respecto a la última línea, \[ \begin{align*} & \int_{-\pi}^\pi \sin(jx)\sin(kx)\, dx = \int_{-\pi}^\pi \frac{1}{2}(\cos((j-k)x)-\cos((j+k)x))\, dx \\ = & \frac{1}{2}\left(\int_{-\pi}^\pi \cos((j-k)x)\, dx -\int_{-\pi}^\pi \cos((j+k)x)\, dx \right)= \frac{1}{2}\left(\left[\frac{\sin((j-k)x)}{j-k}\right]_{-\pi}^\pi-\left[\frac{\sin((j+k)x)}{j+k}\right]_{-\pi}^\pi\right)\\=&\frac{1}{2}\Biggl(\frac{1}{j-k}(\sin((j-k)\pi)-\sin((j-k)(-\pi))) -\frac{1}{j+k}(\sin((j+k)\pi)-\sin((j+k)(-\pi)))\Biggr) = 0,\ j\neq k,\\ & \int_{-\pi}^\pi \sin^2(kx)\, dx =\frac{1}{2}\int_{-\pi}^\pi (1-\cos(2kx))\, dx=\frac{1}{2}\left[x-\frac{\sin(2kx)}{2k}\right]_{-\pi}^\pi \\ = & \frac{1}{2}\left(\pi-\frac{\sin(2k\pi)}{2k}-\left(-\pi-\frac{\sin(-2k\pi)}{2k}\right)\right)=\frac{1}{2}(\pi-(-\pi))=\frac{1}{2}\cdot 2\pi =\pi. \end{align*} \]

Demostración del Teorema

Para hallar el mínimo de la función error, dichos coeficientes tienen que verificar el siguiente sistema de ecuaciones: \[ \begin{align*} \frac{\partial E}{\partial a_k}(a_0,\ldots,a_n,b_1,\ldots,b_{n-1})= & 0,\ k=0,1,\ldots,n,\\ \frac{\partial E}{\partial b_k}(a_0,\ldots,a_n,b_1,\ldots,b_{n-1})= & 0,\ k=1,\ldots,n-1. \end{align*} \] A continuación vamos a simplificar el sistema de ecuaciones anterior. Empecemos por el coeficiente \(a_0\): \[ \begin{align*} \frac{\partial E}{\partial a_0}= &-2\int_{-\pi}^{\pi}\left(f(x)-\left(\frac{a_0}{2}+\sum_{j=1}^{n-1} (a_j\cos(jx)+b_j\sin(jx))+a_n\cos(nx)\right)\right)\frac{1}{2}\, dx \\ = & -\left(\int_{-\pi}^\pi f(x)\, dx-\pi a_0-\sum_{j=1}^n a_j\int_{-\pi}^{\pi}\cos(jx)\,dx-\sum_{j=1}^{n-1} b_j\int_{-\pi}^{\pi}\sin(jx)\,dx\right)=0. \end{align*} \] Usando el lema, podemos hallar el coeficiente \(a_0\): \[ \int_{-\pi}^\pi f(x)\, dx -\pi a_0 =0,\ \Rightarrow a_0=\frac{1}{\pi}\int_{-\pi}^\pi f(x)\, dx. \]

Demostración del Teorema (continuación)

A continuación, desarrollemos la ecuación correspondiente al coeficiente \(a_k\), \(k=1,\ldots,n\): \[ \begin{align*} \frac{\partial E}{\partial a_k}= &-2\int_{-\pi}^{\pi}\left(f(x)-\left(\frac{a_0}{2}+\sum_{j=1}^{n-1} (a_j\cos(jx)+b_j\sin(jx))+a_n\cos(nx)\right)\right)\cos(kx)\, dx \\ = & -\Biggl(\int_{-\pi}^\pi f(x)\cos(kx)\, dx-\frac{a_0}{2}\int_{-\pi}^\pi \cos(kx)\,dx -a_k\int_{-\pi}^\pi \cos^2(kx)\, dx\\ & \quad -\sum_{j=1,j\neq k}^n a_k\int_{-\pi}^{\pi}\cos(jx)\cos(kx)\,dx -\sum_{j=1}^{n-1} b_j\int_{-\pi}^{\pi}\sin(jx)\cos(kx)\,dx\Biggr)=0. \end{align*} \]

Usando el lema anterior, podemos hallar el coeficiente \(a_k\): \[ -\left(\int_{-\pi}^\pi f(x)\cos(kx)\, dx-\pi a_k\right)=0,\ \Rightarrow a_k=\frac{1}{\pi}\int_{-\pi}^\pi f(x)\cos(kx)\, dx. \]

Demostración del Teorema (continuación)

Por último, desarrollemos la ecuación correspondiente al coeficiente \(b_k\), \(k=1,\ldots,n-1\): \[ \begin{align*} \frac{\partial E}{\partial b_k}= &-2\int_{-\pi}^{\pi}\left(f(x)-\left(\frac{a_0}{2}+\sum_{j=1}^{n-1} (a_j\cos(jx)+b_j\sin(jx))+a_n\cos(nx)\right)\right) \sin(kx)\, dx \\ = & -\Biggl(\int_{-\pi}^\pi f(x)\sin(kx)\, dx-\frac{a_0}{2}\int_{-\pi}^\pi \sin(kx)\,dx -b_k\int_{-\pi}^\pi \sin^2(kx)\, dx\\ & \quad -\sum_{j=1}^n a_k\int_{-\pi}^{\pi}\cos(jx)\sin(kx)\,dx -\sum_{j=1,j\neq k}^{n-1} b_j\int_{-\pi}^{\pi}\sin(jx)\sin(kx)\,dx\Biggr)=0. \end{align*} \]

Usando el lema anterior, podemos hallar el coeficiente \(b_k\): \[ -\left(\int_{-\pi}^\pi f(x)\sin(kx)\, dx-\pi b_k\right)=0,\ \Rightarrow b_k=\frac{1}{\pi}\int_{-\pi}^\pi f(x)\sin(kx)\, dx. \]

Expresión del término del error

El término del error para la función trigonométrica \(S_n(x)\) que da el mínimo queda simplificado tal como dice el resultado siguiente:

Proposición. Expresión del término del error.

Sea \(\displaystyle S_n(x)=\frac{a_0}{2}+\sum_{j=1}^{n-1} (a_j\cos(jx)+b_j\sin(jx))+a_n\cos(nx),\) la expresión que minimiza el error \[ \begin{align*} & E(a_0,a_1,\ldots,a_n,b_1,b_2,\ldots,b_{n-1})= \int_{-\pi}^{\pi}(f(x)-S_n(x))^2\, dx\\ &\quad = \int_{-\pi}^{\pi}\left(f(x)-\left(\frac{a_0}{2}+\sum_{j=1}^{n} a_j\cos(jx)+\sum_{j=1}^{n-1}b_j\sin(jx))\right)\right)^2\, dx. \end{align*} \]

Expresión del término del error

Proposición. Expresión del término del error (continuación)

es decir: \[ \begin{align*} a_k=& \frac{1}{\pi}\int_{-\pi}^\pi f(x)\cos(kx)\, dx,\ k=0,1,\ldots,n,\\ b_k= &\frac{1}{\pi}\int_{-\pi}^\pi f(x)\sin(kx)\, dx,\ k=1,\ldots,n-1. \end{align*} \] Entonces la expresión del término del error puede escribirse de la forma siguiente: \[ E(a_i,b_j)=\int_{-\pi}^\pi f(x)^2\, dx-\pi\left(\frac{a_0^2}{2}+\sum_{k=1}^n a_k^2+\sum_{k=1}^{n-1}b_k^2\right). \]

Demostración de la proposición

Si desarrollamos la expresión del error, obtenemos: \[ \begin{align*} & E(a_0,a_1,\ldots,a_n,b_1,b_2,\ldots,b_{n-1})= \int_{-\pi}^{\pi}(f(x)-S_n(x))^2\, dx\\ &\quad = \int_{-\pi}^{\pi}\left(f(x)-\left(\frac{a_0}{2}+\sum_{j=1}^{n} a_j\cos(jx)+\sum_{j=1}^{n-1}b_j\sin(jx))\right)\right)^2\, dx\\ &\quad =\int_{-\pi}^\pi f(x)^2\, dx+\frac{a_0^2}{4}\int_{-\pi}^\pi \, dx+\sum_{j=1}^n a_j^2\int_{-\pi}^\pi \cos^2(jx)\, dx+\sum_{j=1}^{n-1}b_j^2\int_{-\pi}^\pi \sin^2(jx)\,dx\\ &\quad\quad -a_0\int_{-\pi}^\pi f(x)\, dx-2\sum_{k=1}^n a_j\int_{-\pi}^\pi f(x)\cos(jx)\,dx-2\sum_{k=1}^{n-1} b_j\int_{-\pi}^\pi f(x)\sin(jx)\,dx. \end{align*} \] En la última igualdad hemos usado el lema anterior en el sentido que las integrales \(\displaystyle\int_{-\pi}^\pi\cos(jx)\sin(j'x)\,dx\), para cualquier \(j,j'\), \(\displaystyle\int_{-\pi}^\pi\cos(jx)\cos(j'x)\, dx\) y \(\displaystyle\int_{-\pi}^\pi\sin(jx)\sin(j'x)\, dx\) con \(j\neq j'\) son todas nulas.

Demostración de la proposición (continuación)

A continuación, usando que \(\displaystyle \pi a_0= \int_{-\pi}^\pi f(x)\, dx\), \(\displaystyle\pi a_k=\int_{-\pi}^\pi f(x)\cos(kx)\, dx\), \(k=1,\ldots,n\), \(\displaystyle\pi b_k= \int_{-\pi}^\pi f(x)\sin(kx)\, dx\), \(k=1,\ldots,n-1\) obtenemos: \[ \begin{align*} & E(a_0,a_1,\ldots,a_n,b_1,b_2,\ldots,b_{n-1})=\int_{-\pi}^\pi f(x)^2\, dx+\frac{a_0^2}{4}\cdot 2\pi +\sum_{j=1}^n a_j^2\cdot\pi+\sum_{j=1}^{n-1}b_j^2\cdot \pi\\ &\quad\quad -a_0\cdot\pi a_0-2\sum_{k=1}^n a_j\cdot\pi a_j-2\sum_{k=1}^{n-1} b_j\cdot\pi b_j \\ &\quad =\int_{-\pi}^\pi f(x)^2\, dx+\pi\frac{a_0^2}{2}+\pi\sum_{j=1}^n a_j^2+\pi\sum_{j=1}^{n-1}b_j^2 -\pi a_0^2-2\pi\sum_{k=1}^n a_j^2-2\pi\sum_{k=1}^{n-1} b_j^2\\ &\quad =\int_{-\pi}^\pi f(x)^2\, dx-\pi\left(\frac{a_0^2}{2}+\sum_{j=1}^n a_j^2+\sum_{j=1}^{n-1}b_j^2 \right), \end{align*} \] tal como queríamos demostrar.

Ejemplo

Vamos a hallar la función \(S_n(x)\) para la función \(f(x)=x^2\), \(x\in [-\pi,\pi]\).

El coeficiente \(a_0\) será: \[ a_0=\frac{1}{\pi}\int_{-\pi}^\pi f(x)\, dx=\frac{1}{\pi}\int_{-\pi}^\pi x^2\, dx=\frac{1}{\pi}\left[\frac{x^3}{3}\right]_{-\pi}^\pi =\frac{1}{3\pi}(\pi^3-(-\pi^3))=\frac{2\pi^3}{3\pi}=\frac{2\pi^2}{3}. \] Los coeficientes \(a_k\), \(k=1,\ldots,n\) serán: \[ a_k=\frac{1}{\pi}\int_{-\pi}^\pi x^2\cos(kx)\, dx. \] Si integramos por partes con: \[ \begin{array}{llcll} u &= x^2,& du &=2xdx,\\ dv & = \cos(kx), & v&=\frac{1}{k}\sin(kx), \end{array} \] obtenemos: \[ \begin{align*} a_k = & \frac{1}{\pi}\left(\left[x^2\cdot\frac{1}{k}\sin(kx)\right]_{-\pi}^{\pi}-\frac{2}{k}\int_{-\pi}^\pi x\sin(kx)\, dx\right)\\ = & \frac{1}{\pi}\left(\pi^2\cdot\frac{1}{k}\sin(k\pi)-(-\pi)^2\cdot\frac{1}{k}\sin(-k\pi)-\frac{2}{k}\int_{-\pi}^\pi x\sin(kx)\, dx\right)=-\frac{2}{k\pi}\int_{-\pi}^\pi x\sin(kx)\, dx. \end{align*} \]

Ejemplo (continuación)

Si volvemos a aplicar integración por partes, \[ \begin{array}{llcll} u &= x,& du &=dx,\\ dv & = \sin(kx), & v&=-\frac{1}{k}\cos(kx), \end{array} \] obtenemos: \[ \begin{align*} a_k = & -\frac{2}{k\pi}\left(\left[-x\cdot\frac{1}{k}\cos(kx)\right]_{-\pi}^\pi+\frac{1}{k}\int_{-\pi}^\pi \cos(kx)\, dx\right)=\frac{2}{k^2\pi}\left[x\cdot\frac{1}{k}\cos(kx)\right]_{-\pi}^\pi\\ = & \frac{2}{k^2\pi}(\pi\cos(k\pi)-(-\pi)\cos(-k\pi))= \frac{2}{k^2\pi}(\pi (-1)^k+\pi (-1)^k) =\frac{2}{k^2\pi}\cdot 2\pi\cdot (-1)^k = \frac{4\cdot (-1)^k}{k^2}. \end{align*} \]

Los coeficientes \(b_k\), \(k=1,\ldots,n-1\) se pueden calcular de la misma manera. Ahora bien, como \[ b_k =\frac{1}{\pi}\int_{-\pi}^\pi x^2\sin(kx)\, dx, \] y la función \(x^2\sin(kx)\) es impar, la integral anterior será nula. Por tanto \(b_k=0\), \(k=1,\ldots,n-1\).

La función \(S_n(x)\) será en este caso: \[ S_n(x)=\frac{\pi^2}{3}+4\sum_{k=1}^n\frac{(-1)^k}{k^2}\cos(kx). \]

Ejemplo (continuación)

En el gráfico siguiente se muestra la función \(f(x)=x^2\) en negro, \(S_2(x)\) en azul y \(S_5(x)\) en rojo:

Ejemplo (continuación)

La expresión del error será en este caso: \[ \begin{align*} E(a_i,b_j)= & \int_{-\pi}^\pi f(x)^2\, dx-\pi\left(\frac{a_0^2}{2}+\sum_{k=1}^n a_k^2+\sum_{k=1}^{n-1}b_k^2\right)=\int_{-\pi}^\pi x^4\, dx-\pi\left(\frac{1}{2}\cdot\left(\frac{2\pi^2}{3}\right)^2+\sum_{k=1}^n\left(\frac{4\cdot (-1)^k}{k^2}\right)^2 \right)\\ = & \left[\frac{x^5}{5}\right]_{-\pi}^\pi -\pi\left(\frac{2\pi^4}{9}+16\sum_{k=1}^n\frac{1}{k^4}\right)=\frac{\pi^5}{5}-\frac{(-\pi)^5}{5}-\frac{2\pi^5}{9}-16\pi\sum_{k=1}^n\frac{1}{k^4}=\frac{2\pi^5}{5}-\frac{2\pi^5}{9}-16\pi\sum_{k=1}^n\frac{1}{k^4}\\ = & \frac{8\pi^5}{45}-16\pi\sum_{k=1}^n\frac{1}{k^4} \end{align*} \]

Si en la expresión anterior hacemos tender \(n\to\infty\) hacia infinito, podemos hallar la suma de la serie \(\displaystyle\sum_{k=1}^\infty\frac{1}{k^4}\): \[ \frac{8\pi^5}{45}-16\pi\sum_{k=1}^\infty\frac{1}{k^4}=0,\ \Rightarrow \sum_{k=1}^\infty\frac{1}{k^4}=\frac{\frac{8\pi^5}{45}}{16\pi}=\frac{\pi^4}{90}. \]

Ejemplo (continuación)

La tabla siguiente nos da la expresión del error para distintos valores de \(n\):

\(n\) Error
\(2\) \(0.9964244\)
\(3\) \(0.3758629\)
\(4\) \(0.1795134\)
\(5\) \(0.0990886\)
\(6\) \(0.0603035\)
\(7\) \(0.0393683\)
\(8\) \(0.0270964\)

Aproximación trigonométrica discreta

En la sección anterior, vimos cómo aproximar una función \(f\) integrable en \([-\pi,\pi]\) por una función trigonométrica \[ S_n(x)=\frac{a_0}{2}+\sum_{j=1}^n a_j\cos(jx)+\sum_{j=1}^{n-1} b_j\sin(jx), \] hallando los coeficientes \(a_j\), \(j=0,1,\ldots,n\) y \(b_j\), \(j=1,\ldots,n-1\) que minimizan la función error: \[ \begin{align*} & E(a_0,a_1,\ldots,a_n,b_1,b_2,\ldots,b_{n-1})= \int_{-\pi}^{\pi}(f(x)-S_n(x))^2\, dx\\ &\quad = \int_{-\pi}^{\pi}\left(f(x)-\left(\frac{a_0}{2}+\sum_{j=1}^{n} a_j\cos(jx)+\sum_{j=1}^{n-1}b_j\sin(jx))\right)\right)^2\, dx. \end{align*} \] En esta sección vamos a ver la versión discreta de dicha aproximación.

Aproximación trigonométrica discreta

Concretamente, sea \(m\) un entero positivo. Consideramos los \(2m\) puntos siguientes equiespaciados en el intervalo \([-\pi,\pi]\): \[ x_j =-\pi +\frac{j\pi}{m},\ j=0,\ldots,2m-1. \] Supongamos que nos dan \(y_j\), \(j=0,1,\ldots,2m-1\) las \(2m\) ordenadas correspondientes a dichos \(2m\) puntos.

Es decir, los puntos en el plano \((x_j,y_j)\), \(j=0,1,\ldots,2m-1\) forman nuestra nube de puntos.

Aproximación trigonométrica discreta

Nos planteamos el problema siguiente:

Problema de minimización trigonométrica discreta.

Queremos hallar una función \(S_n(x)\in T_n\), con \(n<m\), \[ S_n(x)=\frac{a_0}{2}+\sum_{j=1}^n a_j\cos(jx)+\sum_{j=1}^{n-1} b_j\sin(jx), \] que minimice la función error siguiente: \[ \begin{align*} & E(a_0,a_1,\ldots,a_n,b_1,b_2,\ldots,b_{n-1})= \sum_{i=0}^{2m-1}(y_i-S_n(x_i))^2\\ &\quad = \sum_{i=0}^{2m-1}\left(y_i-\left(\frac{a_0}{2}+\sum_{j=1}^{n} a_j\cos(jx_i)+\sum_{j=1}^{n-1}b_j\sin(jx_i))\right)\right)^2\,. \end{align*} \]

Cálculo del mínimo de la función error

Observación.

La condición \(n<m\) se impone ya que si \(n=m\), basta hallar la función trigonométrica \(S_n(x)\) que interpole la nube de puntos \((x_k,y_k),\ k=0,1,\ldots,2m-1\), es decir \(S_n(x_k)=y_k,\ k=0,1,\ldots,2m-1\) y la función error sería mínima al ser nula: \(E(a_i,b_j)=0\).

En el caso \(n=m\), tenemos \(2m\) ecuaciones \(S_n(x_k)=y_k,\ k=0,1,\ldots,2m-1\) y \(2n=2m\) incógnitas \(a_0,a_1,\ldots,a_n,b_1,\ldots,b_{n-1}\), (\(n+1+n-1=2n\)).

Cálculo del mínimo de la función error

El Teorema siguiente nos da la función \(S_n(x)\) buscada:

Teorema: función que minimiza la función error.

La función \(S_n(x)\) que minimiza la función error es la siguiente: \[ S_n(x)=\frac{a_0}{2}+\sum_{j=1}^n a_j\cos(jx)+\sum_{j=1}^{n-1} b_j\sin(jx), \] con: \[ \begin{align*} a_k = & \frac{1}{m}\sum_{i=0}^{2m-1}y_i\cos(kx_i),\ k=0,1,\ldots,n,\\ b_k = & \frac{1}{m}\sum_{i=0}^{2m-1}y_i\sin(kx_i),\ k=1,2,\ldots,n-1. \end{align*} \]

Cálculo del mínimo de la función error

De forma parecida al caso continuo, necesitamos el lema siguiente para la demostración del Teorema:

Lema.

Sean \(k\), \(l\) y \(m\) tres enteros. Entonces se cumplen las igualdades siguientes:

  • si \(k\) no es múltiplo de \(2m\), \[ \sum_{j=0}^{2m-1}\cos(kx_j)= 0,\quad \sum_{j=0}^{2m-1}\sin(kx_j)=0. \]
  • si \(k\) no es múltiplo de \(m\), \[ \sum_{j=0}^{2m-1}\cos(kx_j)^2 = m,\quad \sum_{j=0}^{2m-1}\sin^2(kx_j)=m. \]

Cálculo del mínimo de la función error

Lema (continuación).

  • si \(k+l\) y \(l-k\) no son múltiplos de \(2m\), \[ \sum_{j=0}^{2m-1}\cos(kx_j)\sin(lx_j) = 0. \]

  • si \(k+l\) y \(l-k\) no son múltiplos de \(2m\) y \(k\neq l\), \[ \sum_{j=0}^{2m-1}\cos(kx_j)\cos(lx_j) = 0,\quad \sum_{j=0}^{2m-1}\sin(kx_j)\sin(lx_j) = 0. \]

Demostración del lema

Veamos la primera parte del lema.

Supongamos que \(k\) no es múltiplo de \(2m\).

Recordemos la fórmula de Euler que dice: \(\mathrm{e}^{\mathrm{i}t}=\cos(t)+\mathrm{i}\sin(t)\), donde \(t\) es un número real cualquiera.

Entonces, podemos escribir: \[ \begin{align*} & \sum_{j=0}^{2m-1}\cos(kx_j)+\mathrm{i}\sum_{j=0}^{2m-1}\sin(kx_j)=\sum_{j=0}^{2m-1}(\cos(kx_j)+\mathrm{i}\sin(k x_j))=\sum_{j=0}^{2m-1}\mathrm{e}^{\mathrm{i}kx_j}=\sum_{j=0}^{2m-1}\mathrm{e}^{\mathrm{i}k\left(-\pi +\frac{j\pi}{m}\right)}=\mathrm{e}^{-\mathrm{i}k\pi}\sum_{j=0}^{2m-1}\mathrm{e}^{\frac{\mathrm{i}kj\pi}{m}}. \end{align*} \] La suma \(\displaystyle\mathrm{e}^{\frac{\mathrm{i}kj\pi}{m}}\) es la suma de una serie geométrica de razón \(r=\mathrm{e}^{\frac{\mathrm{i}k\pi}{m}}\). Como \(r\neq 1\) ya que \(k\) no es múlpiplo de \(2m\), podemos usar la fórmula \(\displaystyle\sum_{j=0}^{2m-1}r^j =\frac{1-r^{2m}}{1-r}\): \[ \sum_{j=0}^{2m-1}\cos(kx_j)+\mathrm{i}\sum_{j=0}^{2m-1}\sin(kx_j)=\mathrm{e}^{-\mathrm{i}k\pi}\cdot\frac{1-\left(\mathrm{e}^{\frac{\mathrm{i}k\pi}{m}}\right)^{2m}}{1-\mathrm{e}^{\frac{\mathrm{i}k\pi}{m}}}=\mathrm{e}^{-\mathrm{i}k\pi}\cdot\frac{1-\mathrm{e}^{2\mathrm{i}k\pi}}{1-\mathrm{e}^{\frac{\mathrm{i}k\pi}{m}}}=0, \] ya que, en general \(\mathrm{e}^{2\mathrm{i}k\pi}=1\) si \(k\) es un entero.

Quedan probadas las expresiones de la primera parte del lema: \(\displaystyle \sum_{j=0}^{2m-1}\cos(kx_j)=0,\ \sum_{j=0}^{2m-1}\sin(kx_j)=0\).

Demostración del lema (continuación)

Veamos la segunda parte del lema, es decir, que si \(k\) no es múltiplo de \(m\), \(\displaystyle\sum_{j=0}^{2m-1}\cos(kx_j)^2 = m,\ \sum_{j=0}^{2m-1}\sin^2(kx_j)=m\): \[ \begin{align*} \sum_{j=0}^{2m-1}\cos(kx_j)^2 = & \sum_{j=0}^{2m-1} \frac{1}{2}(1+\cos(2kx_j))=\frac{1}{2}\left(\sum_{j=0}^{2m-1} 1+\sum_{j=0}^{2m-1}\cos(2kx_j)\right)=\frac{1}{2}\cdot 2m=m, \end{align*} \] ya que si \(k\) no es múltiplo de \(m\), \(2k\) no es múltiplo de \(2m\) y, por tanto, \(\displaystyle\sum_{j=0}^{2m-1}\cos(2kx_j)=0\), aplicando la expresión de la primera parte del lema.

De la misma manera, \[ \begin{align*} \sum_{j=0}^{2m-1}\sin(kx_j)^2 = & \sum_{j=0}^{2m-1} \frac{1}{2}(1-\cos(2kx_j))=\frac{1}{2}\left(\sum_{j=0}^{2m-1} 1-\sum_{j=0}^{2m-1}\cos(2kx_j)\right)=\frac{1}{2}\cdot 2m=m, \end{align*} \] usando un razonamiento similar.

Demostración del lema (continuación)

Demostremos la tercera parte del lema: sean \(k\) y \(l\) tal que \(k+l\) y \(l-k\) no son múltiplos de \(2m\). Entonces: \[ \begin{align*} \sum_{j=0}^{2m-1}\cos(kx_j)\sin(lx_j) = & \frac{1}{2}\sum_{j=0}^{2m-1}(\sin((l+k)x_j)+\sin((l-k)x_j))=\frac{1}{2}(0+0)=0, \end{align*} \] usando la primera parte del lema usando que \(k+l\) y \(l-k\) no son múltiplos de \(2m\).

La demostración de la cuarta parte del lema es la siguiente: \[ \begin{align*} \sum_{j=0}^{2m-1}\cos(kx_j)\cos(lx_j) = & \frac{1}{2}\sum_{j=0}^{2m-1}(\cos((k-l)x_j)+\cos((k+l)x_j))=\frac{1}{2}(0+0)=0,\\ \sum_{j=0}^{2m-1}\sin(kx_j)\sin(lx_j) = & \frac{1}{2}\sum_{j=0}^{2m-1}(\cos((k-l)x_j)-\cos((k+l)x_j))=\frac{1}{2}(0+0)=0 \end{align*} \] usando la primera parte del lema usando que \(k+l\) y \(l-k\) no son múltiplos de \(2m\) y \(k\neq l\).

Demostración del Teorema

Para hallar el mínimo de la función error, dichos coeficientes tienen que verificar el siguiente sistema de ecuaciones: \[ \begin{align*} \frac{\partial E}{\partial a_k}(a_0,\ldots,a_n,b_1,\ldots,b_{n-1})= & 0,\ k=0,1,\ldots,n,\\ \frac{\partial E}{\partial b_k}(a_0,\ldots,a_n,b_1,\ldots,b_{n-1})= & 0,\ k=1,\ldots,n-1. \end{align*} \] A continuación vamos a simplificar el sistema de ecuaciones anterior. Empecemos por el coeficiente \(a_0\): \[ \begin{align*} \frac{\partial E}{\partial a_0}= &-2\sum_{i=0}^{2m-1}\left(y_i-\left(\frac{a_0}{2}+ \sum_{j=1}^{n}a_j\cos(jx_i)+\sum_{j=1}^{n-1}b_j\sin(j x_i)\right)\right)\frac{1}{2} \\ = & -\left(\sum_{i=0}^{2m-1} y_i-a_0\cdot m-\sum_{j=1}^{n} a_j\sum_{i=0}^{2m-1}\cos(jx_i)-\sum_{j=1}^{n-1} b_j\sum_{i=0}^{2m-1}\sin(jx_i)\right)=- \left(\sum_{i=0}^{2m-1} y_i-a_0\cdot m\right)=0, \end{align*} \] ya que como \(n<m\), \(j=1,\ldots,n\) no es múltiplo de \(2m\) y por tanto, \(\displaystyle\sum_{i=0}^{2m-1}\cos(jx_i)=\sum_{i=0}^{2m-1}\sin(jx_i)=0\), usando el lema anterior.

El coeficiente \(a_0\) será, pues, \[ \sum_{i=0}^{2m-1} y_i-a_0\cdot m=0,\ \Rightarrow a_0=\frac{1}{m}\sum_{i=0}^{2m-1} y_i. \]

Demostración del Teorema (continuación)

La ecuación correspondiente al coeficiente \(a_k\) será: \[ \begin{align*} \frac{\partial E}{\partial a_k}= &-2\sum_{i=0}^{2m-1}\left(\left(y_i-\left(\frac{a_0}{2}+ \sum_{j=1}^{n}a_j\cos(jx_i)+\sum_{j=1}^{n-1}b_j\sin(jx_i)\right)\right)\cos(kx_i)\right) \\ = & -2\left(\sum_{i=0}^{2m-1} y_i\cos(kx_i)-\frac{a_0}{2}\sum_{i=0}^{2m-1}\cos(kx_i)-\sum_{j=1}^{n} a_j\sum_{i=0}^{2m-1}\cos(jx_i)\cos(kx_i)-\sum_{j=1}^{n-1} b_j\sum_{i=0}^{2m-1}\sin(jx_i)\cos(kx_i)\right)\\ = & -2\left(\sum_{i=0}^{2m-1} y_i\cos(kx_i)-a_k\sum_{i=0}^{2m-1}\cos^2(kx_i)\right)=-2\left(\sum_{i=0}^{2m-1} y_i\cos(kx_i)-m\cdot a_k\right), \end{align*} \] donde en la penúltima igualdad hemos usado la primera, tercera y cuarta parte del lema y en la última igualdad, la segunda parte del lema. Hay que tener en cuenta que \(j+k\leq 2n<2m\), \(j-k\leq 2n<2m\) y por tanto no son múltiplos de \(2m\).

El coeficiente \(a_k\) será, pues, \[ \sum_{i=0}^{2m-1} y_i\cos(kx_i)-m\cdot a_k=0,\ \Rightarrow a_k=\frac{1}{m}\sum_{i=0}^{2m-1} y_i\cos(kx_i). \]

Demostración del Teorema (continuación)

La ecuación correspondiente al coeficiente \(b_k\) será: \[ \begin{align*} \frac{\partial E}{\partial b_k}= &-2\sum_{i=0}^{2m-1}\left(\left(y_i-\left(\frac{a_0}{2}+ \sum_{j=1}^{n}a_j\cos(jx_i)+\sum_{j=1}^{n-1}b_j\sin(jx_i)\right)\right)\sin(kx_i)\right) \\ = & -2\left(\sum_{i=0}^{2m-1} y_i\sin(kx_i)-\frac{a_0}{2}\sum_{i=0}^{2m-1}\sin(kx_i)-\sum_{j=1}^{n} a_j\sum_{i=0}^{2m-1}\cos(jx_i)\sin(kx_i)-\sum_{j=1}^{n-1} b_j\sum_{i=0}^{2m-1}\sin(jx_i)\sin(kx_i)\right)\\ = & -2\left(\sum_{i=0}^{2m-1} y_i\sin(kx_i)-b_k\sum_{i=0}^{2m-1}\sin^2(kx_i)\right)=-2\left(\sum_{i=0}^{2m-1} y_i\sin(kx_i)-m\cdot b_k\right), \end{align*} \] donde también en la penúltima igualdad hemos usado la primera, tercera y cuarta parte del lema y en la última igualdad, la segunda parte del lema. Hay que tener en cuenta que \(j+k\leq 2n<2m\), \(j-k\leq 2n<2m\) y por tanto no son múltiplos de \(2m\).

El coeficiente \(b_k\) será, pues, \[ \sum_{i=0}^{2m-1} y_i\sin(kx_i)-m\cdot b_k=0,\ \Rightarrow b_k=\frac{1}{m}\sum_{i=0}^{2m-1} y_i\sin(kx_i). \]

Aprox. trigonométrica discreta. Pseudocódigo

Caso 1: Supondremos que el lenguaje de programación en el que se va a programar el código empieza a inicializar en \(1\):

  • INPUT número de puntos de la nube \(m\), puntos de la nube \((x_k,y_k)\), \(k=1,\ldots,2\cdot m\), valor \(n\).
  • Set \(\mathbf{a}=\mathbf{0}\). (Inicializamos los vectores \(\mathbf{a}\) y \(\mathbf{b}\) donde guardaremos \(a_k\), \(k=1,\ldots,n+1\) y \(b_k,\ k=1,\ldots,n-1\).)
  • Set \(\mathbf{b}=\mathbf{0}\).
  • For i=1,...,2*m (primero calculamos \(a_1\))
    • Set \(a_1=a_1+y_i\)
  • Set \(a_1=\frac{a_1}{m}\)

Aprox. trigonométrica discreta. Pseudocódigo

  • For k=2,...,n (Calculamos \(a_{k}\), las componentes del vector \(\mathbf{a}\) y las componentes del vector \(\mathbf{b}\), para \(k=2,\ldots,n\))
    • For i=1,...,2*m
      • Set \(a_k=a_k+y_i\cdot\cos((k-1)\cdot x_i)\)
      • Set \(b_{k-1}=b_{k-1}+y_i\cdot\sin((k-1)\cdot x_i)\)
    • Set \(a_k =\frac{a_k}{m}\)
    • Set \(b_k =\frac{b_k}{m}\)
  • For i=1,...,2*m (Calculamos \(a_{n+1}\))
    • Set \(a_{n+1}=a_{n+1}+y_i\cdot\cos(n\cdot x_i)\)
  • Set \(a_{n+1}=\frac{a_{n+1}}{m}\).
  • Print \(a_1,a_2,\ldots,a_{n+1},b_1,\ldots,b_{n-1}\).

Aprox. trigonométrica discreta. Pseudocódigo

Caso 2: Supondremos que el lenguaje de programación en el que se va a programar el código empieza a inicializar en \(0\) como Python:

  • INPUT número de puntos de la nube \(m\), puntos de la nube \((x_k,y_k)\), \(k=0,\ldots,2\cdot m-1\), valor \(n\).
  • Set \(\mathbf{a}=\mathbf{0}\). (Inicializamos los vectores \(\mathbf{a}\) y \(\mathbf{b}\) donde guardaremos \(a_k\), \(k=0,\ldots,n\) y \(b_k,\ k=1,\ldots,n-1\).)
  • Set \(\mathbf{b}=\mathbf{0}\).
  • For i=0,...,2*m-1 (primero calculamos \(a_0\))
    • Set \(a_0=a_0+y_i\)
  • Set \(a_0=\frac{a_0}{m}\)

Aprox. trigonométrica discreta. Pseudocódigo

  • For k=1,...,n-1 (Calculamos \(a_{k}\), las componentes del vector \(\mathbf{a}\) y las componentes del vector \(\mathbf{b}\), para \(k=1,\ldots,n-1\))
    • For i=0,...,2*m-1
      • Set \(a_k=a_k+y_i\cdot\cos(k\cdot x_i)\)
      • Set \(b_k=b_k+y_i\cdot\sin(k\cdot x_i)\)
    • Set \(a_k =\frac{a_k}{m}\)
    • Set \(b_k =\frac{b_k}{m}\)
  • For i=0,...,2*m-1 (Calculamos \(a_{n}\))
    • Set \(a_{n}=a_{n}+y_i\cdot\cos(n\cdot x_i)\)
  • Set \(a_{n}=\frac{a_{n}}{m}\).
  • Print \(a_0,a_1,\ldots,a_{n},b_1,\ldots,b_{n-1}\).

Ejemplo

Vamos a hallar la aproximación discreta con \(n=2\), de la nube de puntos \((x_k,y_k)\), \(k=0,1,\ldots,2m-1\), con \(m=5\), considerando \(y_k =f(x_k)=x_k^2\), escogiendo la misma función que en el caso continuo.

Los valores \(x_k\) serán: \[ \begin{align*} x_k = & -\pi+\frac{2k\pi}{10},\ k=0,1,\ldots,9,\\ x_k = & -3.141593, -2.513274, -1.884956, -1.256637, -0.628319, 0, 0.628319, 1.256637, 1.884956, 2.513274. \end{align*} \] Los valores \(y_k\) serán: \[ \begin{align*} y_k = & x_k^2,\ k=0,1,\ldots,9,\\ y_k = & 9.869604, 6.316547, 3.553058, 1.579137, 0.394784, 0, 0.394784, 1.579137, 3.553058, 6.316547. \end{align*} \] El valor \(a_0\) será: \[ \begin{align*} a_0= & \frac{1}{m}\sum_{i=0}^{9}y_i=\frac{1}{5}(9.8696044+6.3165468+3.5530576+1.5791367+0.3947842+0+0.3947842\\ & \quad +1.5791367+3.5530576+6.3165468)=6.711331. \end{align*} \]

Ejemplo (continuación)

Los valores \(a_1\) y \(a_2\) serán: \[ \begin{align*} a_1 = &\frac{1}{m}\sum_{i=0}^{9}y_i\cos(x_i)=\frac{1}{5}(9.8696044\cdot\cos(-3.1415927)+6.3165468\cdot\cos(-2.5132741)\\ & \quad +3.5530576\cdot\cos(-1.8849556)+1.5791367\cdot\cos(-1.2566371)+0.3947842\cdot\cos(-0.6283185)\\ & \quad +0\cdot\cos(0)+0.3947842\cdot\cos(0.6283185) +1.5791367\cdot\cos(1.2566371)\\ & \quad +3.5530576\cdot\cos(1.8849556)+6.3165468\cdot\cos(2.5132741))=-4.1342336,\\ a_2 = &\frac{1}{m}\sum_{i=0}^{9}y_i\cos(2x_i)=\frac{1}{5}(9.8696044\cdot\cos(2\cdot (-3.1415927))+6.3165468\cdot\cos(2\cdot (-2.5132741))\\ & \quad +3.5530576\cdot\cos(2\cdot (-1.8849556))+1.5791367\cdot\cos(2\cdot (-1.2566371))\\ & \quad +0.3947842\cdot\cos(2\cdot (-0.6283185)) +0\cdot\cos(2\cdot0)+0.3947842\cdot\cos(2\cdot0.6283185)\\ & \quad +1.5791367\cdot\cos(2\cdot1.2566371) +3.5530576\cdot\cos(2\cdot1.8849556)+6.3165468\cdot\cos(2\cdot2.5132741))\\ = & 1.1426741. \end{align*} \] El valor \(b_1\) vale: \[ \begin{align*} b_1 = &\frac{1}{m}\sum_{i=0}^{9}y_i\sin(x_i)=\frac{1}{5}(9.8696044\cdot\sin(-3.1415927)+6.3165468\cdot\sin(-2.5132741)\\ & \quad +3.5530576\cdot\sin(-1.8849556)+1.5791367\cdot\sin(-1.2566371)+0.3947842\cdot\sin(-0.6283185)\\ & \quad +0\cdot\sin(0)+0.3947842\cdot\sin(0.6283185) +1.5791367\cdot\sin(1.2566371)\\ & \quad +3.5530576\cdot\sin(1.8849556)+6.3165468\cdot\sin(2.5132741))=0,\\ \end{align*} \]

Ejemplo (continuación)

La función \(S_{2}(x)\) será: \[ \begin{align*} S_{2}(x) = & \frac{6.711331}{2}-4.1342336\cdot\cos(x)+1.1426741\cdot\cos(2x)\\ = &3.3556655-4.1342336\cdot\cos(x)+1.1426741\cdot\cos(2x). \end{align*} \] La gráfica siguiente muestra la nube de puntos (en negro) y la aproximación \(S_{2}(x)\) en rojo.

Ejemplo (continuación)

Ejemplo (continuación)

El error cometido será: \[ \begin{align*} & E(a_0,a_1,a_2,b_1)= (9.8696044-(3.3556655-4.1342336\cdot\cos(-3.1415927)+1.1426741\cdot\cos(2\cdot (-3.1415927))))^2\\ &\quad +(6.3165468-(3.3556655-4.1342336\cdot\cos(-2.5132741)+1.1426741\cdot\cos(2\cdot (-2.5132741))))^2 \\ &\quad +(3.5530576-(3.3556655-4.1342336\cdot\cos(-1.8849556)+1.1426741\cdot\cos(2\cdot (-1.8849556))))^2\\ &\quad +(1.5791367-(3.3556655-4.1342336\cdot\cos(-1.2566371)+1.1426741\cdot\cos(2\cdot (-1.2566371))))^2\\ &\quad +(0.3947842-(3.3556655-4.1342336\cdot\cos(-0.6283185)+1.1426741\cdot\cos(2\cdot (-0.6283185))))^2\\ &\quad +(0-(3.3556655-4.1342336\cdot\cos(0)+1.1426741\cdot\cos(2\cdot 0)))^2\\ &\quad +(0.3947842-(3.3556655-4.1342336\cdot\cos(0.6283185)+1.1426741\cdot\cos(2\cdot 0.6283185)))^2\\ &\quad +(1.5791367-(3.3556655-4.1342336\cdot\cos(1.2566371)+1.1426741\cdot\cos(2\cdot 1.2566371)))^2\\ &\quad +(3.5530576-(3.3556655-4.1342336\cdot\cos(1.8849556)+1.1426741\cdot\cos(2\cdot 1.8849556)))^2\\ &\quad +(6.3165468-(3.3556655-4.1342336\cdot\cos(2.5132741)+1.1426741\cdot\cos(2\cdot 2.5132741)))^2 = 3.1612443. \end{align*} \]

Transformada rápida de Fourier

Introducción

Cuando en la aproximación trigonométrica discreta, el valor de \(m\) y \(n\) coinciden, \(n=m\), el valor de la aproximación \(S_n(x)\) se denomina serie de Fourier discreta correspondiente a la nube de puntos \((x_k,y_k),\ k=0,\ldots,2m-1\): \[ S_n(x)=\frac{a_0}{2}+\sum_{j=1}^n a_j\cos(jx)+\sum_{j=1}^{n-1} b_j\sin(jx). \] En este caso, la función \(S_n(x)\) interpola a los puntos \((x_k,y_k)\), \(k=0,1,\ldots,2m-1\) ya que tenemos \(n+1+n-1=2n\) coeficientes \(a_k,\ k=0,\ldots,n\) y \(b_k,\ k=1,\ldots,n-1\) y \(2m=2n\) condiciones: \[ S_n(x_k)=y_k,\ k=0,1,\ldots,2m-1=2n-1. \]

Introducción

Ahora bien, las expresiones de las \(a_k\), \(k=0,1,\ldots,n\), \(b_k\), \(k=1,\ldots,n-1\) son las que hemos deducido anteriormente: \[ \begin{align*} a_k = & \frac{1}{m}\sum_{i=0}^{2m-1}y_i\cos(kx_i),\ k=0,1,\ldots,n-1,\\ b_k = & \frac{1}{m}\sum_{i=0}^{2m-1}y_i\sin(kx_i),\ k=0,1,\ldots,n-1, \end{align*} \] excepto la expresión para \(a_n\).

Introducción

Para deducir la expresión para \(a_n\), hacíamos lo siguiente: \[ \begin{align*} \frac{\partial E}{\partial a_n}= &-2\sum_{i=0}^{2m-1}\left(\left(y_i-\left(\frac{a_0}{2}+ \sum_{j=1}^{n}a_j\cos(jx_i)+\sum_{j=1}^{n-1}b_j\sin(jx_i)\right)\right)\cos(nx_i)\right) \\ = & -2\left(\sum_{i=0}^{2m-1} y_i\cos(nx_i)-\frac{a_0}{2}\sum_{i=0}^{2m-1}\cos(nx_i)-\sum_{j=1}^{n} a_j\sum_{i=0}^{2m-1}\cos(jx_i)\cos(nx_i)-\sum_{j=1}^{n-1} b_j\sum_{i=0}^{2m-1}\sin(jx_i)\cos(nx_i)\right)\\ = & -2\left(\sum_{i=0}^{2m-1} y_i\cos(nx_i)-a_n\sum_{i=0}^{2m-1}\cos^2(nx_i)\right). \end{align*} \] Nos falta calcular \(\displaystyle\sum_{i=0}^{2m-1}\cos^2(nx_i)=\sum_{i=0}^{2m-1}\cos^2(mx_i)\) pero no podemos aplicar el lema ya que recordemos que el lema nos da la suma \(\displaystyle\sum_{i=0}^{2m-1}\cos^2(k x_i)=m\), si \(k\) no es múltiplo de \(m\) pero en nuestro caso \(k=n\) y como \(n=m\), \(k=m\) es múltiplo de \(m\).

Introducción

El lema siguiente nos calcula la suma solicitada:

Lema. \[ \sum_{i=0}^{2m-1}\cos^2(mx_i) =2m. \]

Demostración

\[ \begin{align*} \sum_{i=0}^{2m-1}\cos^2(mx_i) = &\sum_{i=0}^{2m-1}\frac{1}{2}(1+\cos(2mx_i))=\frac{1}{2}\left(\sum_{i=0}^{2m-1} 1+\sum_{i=0}^{2m-1} \cos(2mx_i)\right)=\frac{1}{2}\left(2m+\sum_{i=0}^{2m-1} \cos(2mx_i)\right) \\ = & \frac{1}{2}\left(2m+\sum_{i=0}^{2m-1} \cos\left((2m \left(-\pi +\frac{i\pi}{m}\right)\right)\right) =\frac{1}{2}\left(2m+\sum_{i=0}^{2m-1} \cos\left((-2m\pi +2i\pi\right)\right)\\ = &\frac{1}{2}\left(2m+\sum_{i=0}^{2m-1} \cos\left((-2m+2i)\pi\right)\right)=\frac{1}{2}\left(2m+\sum_{i=0}^{2m-1} 1\right)=\frac{1}{2}\left(2m+2m\right)=2m. \end{align*} \]

Introducción

Entonces: \[ \begin{align*} \frac{\partial E}{\partial a_n}= & -2\left(\sum_{i=0}^{2m-1} y_i\cos(nx_i)-a_n\sum_{i=0}^{2m-1}\cos^2(nx_i)\right)=0,\ \Rightarrow \\ \sum_{i=0}^{2m-1} y_i\cos(nx_i)-2ma_n= & 0. \end{align*} \] El valor de \(a_n\) será, pues, · \[ a_n=\frac{1}{2m}\sum_{i=0}^{2m-1}y_i\cos(n x_i). \]

Serie de Fourier discreta

La función trigonométrica interpoladora o la expresión de la serie de Fourier discreta correspondiente a la nube de puntos \((x_k,y_k)\), \(k=0,1,\ldots,2m-1\) será: \[ S_m(x)=\frac{a_0}{2}+\sum_{j=1}^m a_j\cos(jx)+\sum_{j=1}^{m-1}b_j\sin(jx), \] con \[ \begin{align*} a_k = & \frac{1}{m}\sum_{i=0}^{2m-1}y_i\cos(kx_i),\ k=0,1,\ldots,m-1,\ a_m = \frac{1}{2m}\sum_{i=0}^{2m-1}y_i\cos(m x_i),\\ b_k = & \frac{1}{m}\sum_{i=0}^{2m-1}y_i\sin(kx_i),\ k=0,1,\ldots,m-1,\\ \end{align*} \] donde sólo hemos escrito el valor \(m\) ya que suponemos que \(n=m\).

Serie de Fourier discreta

De cara a tener una expresión más compacta en la expresión de los coeficientes \(a_k\), redefinimos \(a_m\) como \(\displaystyle a_m=\frac{1}{m}\sum_{i=0}^{2m-1}y_i\cos(m x_i)\) y escribimos la serie de Fourier discreta como: \[ S_m(x)=\frac{a_0+a_m\cos(mx)}{2}+\sum_{j=1}^{m-1} a_j\cos(jx)+\sum_{j=1}^{m-1}b_j\sin(jx), \] con \[ \begin{align*} a_k = & \frac{1}{m}\sum_{i=0}^{2m-1}y_i\cos(kx_i),\ k=0,1,\ldots,m,\\ b_k = & \frac{1}{m}\sum_{i=0}^{2m-1}y_i\sin(kx_i),\ k=0,1,\ldots,m-1.\\ \end{align*} \]

Transformada rápida de Fourier

Calcular los valores \(a_k\), \(k=0,\ldots,m-1\) y \(b_k\), \(k=1,\ldots,m-1\) requiere en total: \((2m)^2=4m^2\) multiplicaciones/divisiones y \((2m)^2=4m^2\) sumas/restas ya que:

Cálculo de \(a_k\) Cálculo de \(b_k\)
Sumas/restas \(2m\) \(2m\)
Multiplicaciones/divisiones \(2m\) \(2m\)
Total (hay \(m+1\) coeficientes \(a_k\) y \(m-1\) coeficientes \(b_k\), en total \(m+1+m-1=2m\) coeficientes) \((2m)\cdot (2m)=4m^2\) \((2m)\cdot (2m)=4m^2\)

Transformada rápida de Fourier

El número total de operaciones es de orden \(m^2\): \(O(m^2)\).

Vamos a diseñar un algoritmo que reduce el número de operaciones a \(O(m\ln_2(m))\). Dicho algoritmo se denomina transformada rápida de Fourier.

En primer lugar, consideramos la función siguiente: \[ \frac{1}{m}\sum_{k=0}^{2m-1}c_k \mathrm{e}^{\mathrm{i}kx},\mbox{ con }c_k=\sum_{j=0}^{2m-1}y_j\mathrm{e}^{\frac{\mathrm{i}k\pi j}{m}},\ k=0,1,\ldots,2m-1. \]

Transformada rápida de Fourier

Veamos a continuación que los coeficientes \(a_k\) y \(b_k\) se pueden calcular a partir de los coeficientes \(c_k\):

Proposición.

La relación entre los coeficientes \(c_k\), \(a_k\) y \(b_k\) es la siguiente: \[ a_k+\mathrm{i}b_k=\frac{(-1)^k}{m}c_k,\ k=0,1,\ldots,m, \] donde suponemos que \(b_0=b_m=0\).

Por tanto, si \(k=0\), la relación anterior nos dice que \(a_0 =\frac{(-1)^0}{m}c_0=\frac{c_0}{m}\) y si \(k=m\), \(a_m=\frac{(-1)^m}{m}c_m\).

Demostración de la proposición

Sea \(k\) un valor entre \(0\) y \(m\). Entonces, \[ \begin{align*} \frac{(-1)^k}{m}c_k = & \frac{1}{m}c_k\cdot\mathrm{e}^{-\mathrm{i}\pi k}=\frac{1}{m}\sum_{j=0}^{2m-1}y_j\mathrm{e}^{\frac{\mathrm{i}k\pi j}{m}}\cdot\mathrm{e}^{-\mathrm{i}\pi k}=\frac{1}{m}\sum_{j=0}^{2m-1}y_j\mathrm{e}^{\mathrm{i}k\left(-\pi+\frac{\pi j}{m}\right)}\\ = & \frac{1}{m}\sum_{j=0}^{2m-1}y_j\left(\cos\left(k\left(-\pi+\frac{\pi j}{m}\right)\right)+\mathrm{i}\sin\left(k\left(-\pi+\frac{\pi j}{m}\right)\right)\right)=\frac{1}{m}\sum_{j=0}^{2m-1}y_j\left(\cos\left(kx_j\right)+\mathrm{i}\sin\left(k x_j\right)\right)\\ = & \frac{1}{m}\sum_{j=0}^{2m-1}y_j\cos\left(kx_j\right)+\mathrm{i}\frac{1}{m}\sum_{j=0}^{2m-1}y_j\sin\left(kx_j\right)=a_k+\mathrm{i}b_k, \end{align*} \] tal como queríamos demostrar.

Transformada rápida de Fourier

A partir de ahora, supongamos que \(m\) es un potencia de \(2\), es decir, que existe un entero \(p\) tal que \(m=2^p\).

Para empezar, calculemos para \(k=0,1,\ldots,m-1\), la suma siguiente: \[ c_k+c_{m+k}=\sum_{j=0}^{2m-1}y_j\mathrm{e}^{\frac{\mathrm{i}k\pi j}{m}}+\sum_{j=0}^{2m-1}y_j\mathrm{e}^{\frac{\mathrm{i}(m+k)\pi j}{m}}=\sum_{j=0}^{2m-1}y_j\mathrm{e}^{\frac{\mathrm{i}k\pi j}{m}}\left(1+\mathrm{e}^{\mathrm{i}\pi j}\right). \] El valor de \(1+\mathrm{e}^{\mathrm{i}\pi j}\) vale: \[ 1+\mathrm{e}^{\mathrm{i}\pi j} =\begin{cases}2,& \mbox{ si } j \mbox{ es par}\\ 0, & \mbox{ si } j\mbox{ es impar.}\end{cases} \]

Transformada rápida de Fourier

Entonces en la suma \(\displaystyle \sum_{j=0}^{2m-1}y_j\mathrm{e}^{\frac{\mathrm{i}k\pi j}{m}}\left(1+\mathrm{e}^{\mathrm{i}\pi j}\right)\) que aparece en la expresión de \(c_k+c_{m+k}\) sólo se suman los términos en los que \(j\) es par, es decir: \[ c_k + c_{m+k}=2\sum_{l=0}^{m-1}y_{2l}\mathrm{e}^{\frac{\mathrm{i}\pi k(2l)}{m}}=2\sum_{l=0}^{m-1}y_{2l}\mathrm{e}^{\frac{\mathrm{i}\pi kl}{\frac{m}{2}}}, \] donde hemos hecho el cambio de índice \(j=2l\) y como \(j=0,1,\ldots,2m-1\), \(l=0,1,\ldots,m-1\).

Transformada rápida de Fourier

A continuación, calculamos la suma siguiente: \[ c_k-c_{m+k}=\sum_{j=0}^{2m-1}y_j\mathrm{e}^{\frac{\mathrm{i}k\pi j}{m}}-\sum_{j=0}^{2m-1}y_j\mathrm{e}^{\frac{\mathrm{i}(m+k)\pi j}{m}}=\sum_{j=0}^{2m-1}y_j\mathrm{e}^{\frac{\mathrm{i}k\pi j}{m}}\left(1-\mathrm{e}^{\mathrm{i}\pi j}\right). \] El valor de \(1-\mathrm{e}^{\mathrm{i}\pi j}\) vale: \[ 1-\mathrm{e}^{\mathrm{i}\pi j} =\begin{cases}0,& \mbox{ si } j \mbox{ es par}\\ 2, & \mbox{ si } j\mbox{ es impar.}\end{cases} \]

Transformada rápida de Fourier

Entonces en la suma \(\displaystyle \sum_{j=0}^{2m-1}y_j\mathrm{e}^{\frac{\mathrm{i}k\pi j}{m}}\left(1-\mathrm{e}^{\mathrm{i}\pi j}\right)\) que aparece en la expresión de \(c_k-c_{m+k}\) sólo se suman los términos en los que \(j\) es impar, es decir: \[ c_k - c_{m+k}=2\sum_{l=0}^{m-1}y_{2l+1}\mathrm{e}^{\frac{\mathrm{i}\pi k(2l+1)}{m}}=2\mathrm{e}^{\frac{\mathrm{i}k\pi}{m}}\sum_{l=0}^{m-1}y_{2l+1}\mathrm{e}^{\frac{\mathrm{i}\pi kl}{\frac{m}{2}}}, \] donde hemos hecho el cambio de índice \(j=2l+1\) y como \(j=0,1,\ldots,2m-1\), \(l=0,1,\ldots,m-1\).

Transformada rápida de Fourier

En resumen, hemos deducido lo siguiente: \[ \begin{align*} c_k +c_{m+k}=& 2\sum_{l=0}^{m-1}y_{2l}\mathrm{e}^{\frac{\mathrm{i}\pi kl}{\frac{m}{2}}},\\ c_k -c_{m+k}= & 2\mathrm{e}^{\frac{\mathrm{i}k\pi}{m}}\sum_{l=0}^{m-1}y_{2l+1}\mathrm{e}^{\frac{\mathrm{i}\pi kl}{\frac{m}{2}}}. \end{align*} \]

Ahora viene la idea clave: las sumas \(\displaystyle\sum_{l=0}^{m-1}y_{2l}\mathrm{e}^{\frac{\mathrm{i}\pi kl}{\frac{m}{2}}}\) y \(\displaystyle\sum_{l=0}^{m-1}y_{2l+1}\mathrm{e}^{\frac{\mathrm{i}\pi kl}{\frac{m}{2}}}\) corresponden a la definición de los coeficientes \(c_k\) para las muestras \(y_0,y_2,\ldots,y_{2m-2}\) (términos pares) y \(y_1,y_3,\ldots,y_{2m-1}\) (términos impares), respectivamente.

Es decir, si sustituimos \(m\) por \(\frac{m}{2}\) en la definición de los \(c_k\) obtenemos los nuevos \(c_k\) que aparecen en los términos de la derecha en las expresiones de \(c_k+c_{m+k}\) y \(c_{k}-c_{m+k}\).

Transformada rápida de Fourier

Introduzcamos un poco de notación:

  • llamamos \(c_k^{(2m)}\) a los coeficientes \(c_k\) para la muestra \(y_0,y_1,\ldots,y_{2m-1}\), y
  • llamamos \(c_{k,p}^{(m)}\) y \(c_{k,i}^{(m)}\) a los coeficientes \(c_k\) para las muestras \(y_0,y_2,\ldots,y_{2m-2}\) (términos pares) y \(y_1,y_3,\ldots,y_{2m-1}\) (términos impares) respectivamente.

La relación anterior sería: \[ \begin{align*} c_k^{(2m)} +c_{m+k}^{(2m)}=& 2c_{k,p}^{(m)},\\ c_k^{(2m)} -c_{m+k}^{(2m)}= & 2\mathrm{e}^{\frac{\mathrm{i}k\pi}{m}}c_{k,i}^{(m)}, \end{align*} \] para \(k=0,\ldots,m-1\).

Transformada rápida de Fourier. Algoritmo

La solución del sistema anterior, es decir, el valor de \(c_k^{(2m)}\) y \(c_{m+k}^{(2m)}\) en función de \(c_{k,p}^{(m)}\) y \(c_{k,i}^{(m)}\) es la siguiente: \[ c_k^{(2m)}=c_{k,p}^{(m)}+\mathrm{e}^{\frac{\mathrm{i}k\pi}{m}}c_{k,i}^{(m)},\quad c_{m+k}^{(2m)}=c_{k,p}^{(m)}-\mathrm{e}^{\frac{\mathrm{i}k\pi}{m}}c_{k,i}^{(m)},\ k=0,1,\ldots,m-1. \] La expresión anterior permite hallar los coeficientes \(c_k^{(2m)}\), \(c_{m+k}^{(2m)}\) para la muestra \(y_0,y_1,\ldots,y_{2m-1}\) de longitud \(2m\) en función de los coeficientes \(c_{k,p}^{(m)}\) y \(c_{k,i}^{(m)}\) correspondientes a las muestras \(y_0,y_2,\ldots,y_{2m-2}\) y \(y_1,y_3,\ldots,y_{2m-1}\), respectivamente, ambas de longitud \(m\).

El algoritmo de la transformada rápida de Fourier es ir cada vez reduciendo el tamaño de la muestra hasta llegar a una muestra de tamaño \(2\), calcular los coeficientes \(c_k\) correspondiente a esta muestra e ir doblando la muestra aplicando la expresión anterior hasta llegar a la muestra inicial \(y_0,y_1,\ldots,y_{2m-1}\) de tamaño \(2m=2^{p+1}\).

Transformada rápida de Fourier. Algoritmo

Calculemos los coeficientes \(c_0^{(2)}\) y \(c_1^{(2)}\) para una muestra de tamaño \(2\), \(y_0,y_1\). \[ \begin{align*} c_0^{(2)} = & \left(y_0\mathrm{e}^{\frac{\mathrm{i}\pi\cdot 0\cdot 0}{1}}+y_1\mathrm{e}^{\frac{\mathrm{i}\pi\cdot 1\cdot 0}{1}}\right)=y_0+y_1,\\ c_1^{(2)} = & \left(y_0\mathrm{e}^{\frac{\mathrm{i}\pi\cdot 0\cdot 1}{1}}+y_1\mathrm{e}^{\frac{\mathrm{i}\pi\cdot 1\cdot 1}{1}}\right)=y_0+y_1\mathrm{e}^{\mathrm{i}\pi}=y_0-y_1. \end{align*} \] Veamos cuantas operaciones hemos de realizar si usamos el algoritmo de la transformada rápida de Fourier.

Consideremos la expresión que nos da los coeficientes \(c_{k}^{(2m)}\) y \(c_{m+k}^{(2m)}\) en función de los coeficientes \(c_{k,p}^{(m)}\) y \(c_{k,i}^{(m)}\), \(k=0,1,\ldots,m-1\):

  • Número de multiplicaciones/divisiones: \(2m\).
  • Número de sumas/restas: \(2m\).

Número de operaciones

La tabla siguiente nos muestra el número de operaciones en todos los pasos:

Paso Multiplicaciones/divisiones Sumas/restas
\(\frac{m}{2^{p-1}}=2\longrightarrow \frac{m}{2^{p-2}}=4\) \(2^{p}\cdot \frac{m}{2^{p-1}}=2^{p}\cdot 2=2^{p+1}=2m\) \(2^{p}\cdot \frac{m}{2^{p-1}}=2^{p}\cdot 2=2^{p+1}=2m\)
\(\vdots\) \(\vdots\) \(\vdots\)
\(\frac{m}{2^{j+1}}\longrightarrow \frac{m}{2^j}\) \(2^{j+2}\cdot \frac{m}{2^{j+1}}=2m\) \(2^{j+2}\cdot \frac{m}{2^{j+1}}=2m\)
\(\vdots\) \(\vdots\) \(\vdots\)
\(\frac{m}{2}\longrightarrow m\) \(2^2\cdot \frac{m}{2}=2m\) \(2^2\cdot \frac{m}{2}=2m\)
\(m\longrightarrow 2m\) \(2\cdot m=2m\) \(2\cdot m=2m\)

Número de operaciones

Como puede verse en la tabla anterior hay en total \(p\) pasos y en el último paso, es decir, el paso para \(m=1\) en el que hay \(m\) muestras de tamaño \(2\), hay \(0\cdot m=m\) multiplicaciones y \(2\cdot m=2m\) sumas/restas.

Por tanto,

  • Número total de multiplicaciones/divisiones: \(0+2m\cdot p=2m\cdot \ln_2 m=O(m\ln_2 m)\).
  • Número total de sumas/restas: \(2m+2m\cdot p=2m(1+\ln_2 m)=O(m\ln_2 m)\).

En resumen, hemos reducido el número total de operaciones de \(O(m^2)\) a \(O(m\ln_2 m)\).

Algoritmo detallado para \(m=4\)

Demos el algoritmo detallado para \(m=4=2^2\), y por tanto, \(p=2\).

  • Paso I: lo primero que tenemos que hacer es reordenar la muestra de \(y_k\), \(k=0\ldots,7\) para poder aplicar el algoritmo:
    • Paso \(\frac{m}{2}=2\longrightarrow m=4\):
      • muestra 1: \(y_0,y_2,y_4,y_6\),
      • muestra 2: \(y_1,y_3,y_5,y_7\).
    • Muestras de longitud \(2\):
      • muestra 1: \(y_0,y_4\),
      • muestra 2: \(y_2,y_6\),
      • muestra 3: \(y_1,y_5\),
      • muestra 4: \(y_3,y_7\).

Algoritmo detallado para \(m=4\)

  • Paso II: calculamos los coeficientes para las muestras \(1\), \(2\), \(3\) y \(4\). \[ \begin{align*} c_{0,1}^{(2)}=&y_0+y_4,\quad c_{1,1}^{(2)}=y_0-y_4,\\ c_{0,2}^{(2)}=&y_2+y_6,\quad c_{1,2}^{(2)}=y_2-y_6,\\ c_{0,3}^{(2)}=&y_1+y_5,\quad c_{1,3}^{(2)}=y_1-y_5,\\ c_{0,4}^{(2)}=&y_3+y_7,\quad c_{1,4}^{(2)}=y_3-y_7. \end{align*} \]

Algoritmo detallado para \(m=4\)

  • Paso III: calculamos los coeficientes para las muestras \(1\) y \(2\) en el paso \(\frac{m}{2}=2\longrightarrow m=4\):
    • Muestra 1: \(y_0,y_2,y_4,y_6\). Usamos las expresiones siguientes: \[ \begin{align*} c_{0,1}^{(4)}=&c_{0,1}^{(2)}+\mathrm{e}^{\frac{\mathrm{i}\cdot 0\pi}{2}}c_{0,2}^{(2)}=c_{0,1}^{(2)}+c_{0,2}^{(2)}=y_0+y_4+y_2+y_6\\ = & y_0+y_2+y_4+y_6,\\ c_{1,1}^{(4)}=&c_{1,1}^{(2)}+\mathrm{e}^{\frac{\mathrm{i}\pi}{2}}c_{1,2}^{(2)}=c_{1,1}^{(2)}+\mathrm{i}c_{1,2}^{(2)}=y_0-y_4+\mathrm{i}(y_2-y_6)\\ = & y_0+\mathrm{i}y_2-y_4-\mathrm{i}y_6,\\ c_{2,1}^{(4)}=&c_{0,1}^{(2)}-\mathrm{e}^{\frac{\mathrm{i}\cdot 0\pi}{2}}c_{0,2}^{(2)}=c_{0,1}^{(2)}-c_{0,2}^{(2)}=y_0+y_4-(y_2+y_6)\\ = & y_0-y_2+y_4-y_6,\\ c_{3,1}^{(4)}=&c_{1,1}^{(2)}-\mathrm{e}^{\frac{\mathrm{i}\pi}{2}}c_{1,2}^{(2)}=c_{1,1}^{(2)}-\mathrm{i}c_{1,2}^{(2)}=y_0-y_4-\mathrm{i}(y_2-y_6)\\ = & y_0-\mathrm{i}y_2-y_4+\mathrm{i}y_6, \end{align*} \]

Algoritmo detallado para \(m=4\)

  • Paso III (continuación): calculamos los coeficientes para las muestras \(1\) y \(2\) en el paso \(\frac{m}{2}=2\longrightarrow m=4\):
    • Muestra 2: \(y_1,y_3,y_5,y_7\). Usamos las expresiones siguientes: \[ \begin{align*} c_{0,2}^{(4)}=&c_{0,3}^{(2)}+\mathrm{e}^{\frac{\mathrm{i}\cdot 0\pi}{2}}c_{0,4}^{(2)}=c_{0,3}^{(2)}+c_{0,4}^{(2)}=y_1+y_5+y_3+y_7\\ = & y_1+y_3+y_5+y_7,\\ c_{1,2}^{(4)}=&c_{1,3}^{(2)}+\mathrm{e}^{\frac{\mathrm{i}\pi}{2}}c_{1,4}^{(2)}=c_{1,3}^{(2)}+\mathrm{i}c_{1,4}^{(2)}=y_1-y_5+\mathrm{i}(y_3-y_7)\\ = & y_1+\mathrm{i}y_3-y_5-\mathrm{i}y_7,\\ c_{2,2}^{(4)}=&c_{0,3}^{(2)}-\mathrm{e}^{\frac{\mathrm{i}\cdot 0\pi}{2}}c_{0,4}^{(2)}=c_{0,3}^{(2)}-c_{0,4}^{(2)}=y_1+y_5-(y_3+y_7)\\ = & y_1-y_3+y_5-y_7,\\ c_{3,2}^{(4)}=&c_{1,3}^{(2)}-\mathrm{e}^{\frac{\mathrm{i}\pi}{2}}c_{1,4}^{(2)}=c_{1,3}^{(2)}-\mathrm{i}c_{1,4}^{(2)}=y_1-y_5-\mathrm{i}(y_3-y_7)\\ = & y_1-\mathrm{i}y_3-y_5 +\mathrm{i}y_7. \end{align*} \]

Algoritmo detallado para \(m=4\)

  • Paso IV: calculamos los coeficientes para la muestra original \(y_0,y_1,y_2,y_3,y_4,y_5,y_6,y_7\) en el paso \(m=4\longrightarrow 2m=8\): \[ \begin{align*} c_{0}^{(8)}=& c_{0,1}^{(4)}+\mathrm{e}^{\frac{\mathrm{i}\cdot 0\pi}{4}}c_{0,2}^{(4)}= c_{0,1}^{(4)}+c_{0,2}^{(4)}\\ = &y_0+y_2+y_4+y_6+y_1+y_5+y_3+y_7\\ =& y_0+y_1+y_2+y_3+y_4+y_5+y_6+y_7,\\ c_{1}^{(8)}=& c_{1,1}^{(4)}+\mathrm{e}^{\frac{\mathrm{i}\cdot 1\pi}{4}}c_{1,2}^{(4)}= c_{1,1}^{(4)}+\left(\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right)c_{1,2}^{(4)}\\ = &y_0+\mathrm{i}y_2-y_4-\mathrm{i}y_6+\left(\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right)(y_1+\mathrm{i}y_3-y_5-\mathrm{i}y_7)\\ =& y_0+\left(\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right)y_1+\mathrm{i}y_2+\left(\frac{-\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right)y_3-y_4\\ & \quad -\left(\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right)y_5-\mathrm{i}y_6+\left(\frac{\sqrt{2}}{2}-\frac{\sqrt{2}}{2}\mathrm{i}\right)y_7,\\ \end{align*} \]

Algoritmo detallado para \(m=4\)

  • Paso IV (continuación): \[ \begin{align*} c_{2}^{(8)}=& c_{2,1}^{(4)}+\mathrm{e}^{\frac{\mathrm{i}\cdot 2\pi}{4}}c_{2,2}^{(4)}= c_{2,1}^{(4)}+\mathrm{i}c_{2,2}^{(4)}\\ = &y_0-y_2+y_4-y_6+\mathrm{i}(y_1-y_3+y_5-y_7)\\ =& y_0+\mathrm{i}y_1-y_2-\mathrm{i}y_3+y_4+\mathrm{i}y_5-y_6-\mathrm{i}y_7,\\ c_{3}^{(8)}=& c_{3,1}^{(4)}+\mathrm{e}^{\frac{\mathrm{i}\cdot 3\pi}{4}}c_{3,2}^{(4)}= c_{3,1}^{(4)}+\left(-\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right)c_{3,2}^{(4)}\\ = &y_0-\mathrm{i}y_2-y_4+\mathrm{i}y_6+\left(-\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right)(y_1-\mathrm{i}y_3-y_5+\mathrm{i}y_7)\\ =& y_0+\left(-\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right)y_1-\mathrm{i}y_2+\left(\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right)y_3-y_4\\ & \quad +\left(\frac{\sqrt{2}}{2}-\frac{\sqrt{2}}{2}\mathrm{i}\right)y_5+\mathrm{i}y_6-\left(\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right)y_7,\\ \end{align*} \]

Algoritmo detallado para \(m=4\)

  • Paso IV (continuación): \[ \begin{align*} c_{4}^{(8)}=& c_{0,1}^{(4)}-\mathrm{e}^{\frac{\mathrm{i}\cdot 0\pi}{4}}c_{0,2}^{(4)}= c_{0,1}^{(4)}-c_{0,2}^{(4)}\\ = &y_0+y_2+y_4+y_6-(y_1+y_5+y_3+y_7)\\ =& y_0-y_1+y_2-y_3+y_4-y_5+y_6-y_7,\\ c_{5}^{(8)}=& c_{1,1}^{(4)}-\mathrm{e}^{\frac{\mathrm{i}\cdot 1\pi}{4}}c_{1,2}^{(4)}= c_{1,1}^{(4)}-\left(\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right)c_{1,2}^{(4)}\\ = &y_0+\mathrm{i}y_2-y_4-\mathrm{i}y_6-\left(\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right)(y_1+\mathrm{i}y_3-y_5-\mathrm{i}y_7)\\ =& y_0-\left(\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right)y_1+\mathrm{i}y_2+\left(\frac{\sqrt{2}}{2}-\frac{\sqrt{2}}{2}\mathrm{i}\right)y_3-y_4\\ & \quad +\left(\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right)y_5-\mathrm{i}y_6+\left(\frac{-\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right)y_7,\\ \end{align*} \]

Algoritmo detallado para \(m=4\)

  • Paso IV (continuación): \[ \begin{align*} c_{6}^{(8)}=& c_{2,1}^{(4)}-\mathrm{e}^{\frac{\mathrm{i}\cdot 2\pi}{4}}c_{2,2}^{(4)}= c_{2,1}^{(4)}-\mathrm{i}c_{2,2}^{(4)}\\ = &y_0-y_2+y_4-y_6-\mathrm{i}(y_1-y_3+y_5-y_7)\\ =& y_0-\mathrm{i}y_1-y_2+\mathrm{i}y_3+y_4-\mathrm{i}y_5-y_6+\mathrm{i}y_7,\\ c_{7}^{(8)}=& c_{3,1}^{(4)}-\mathrm{e}^{\frac{\mathrm{i}\cdot 3\pi}{4}}c_{3,2}^{(4)}= c_{3,1}^{(4)}-\left(-\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right)c_{3,2}^{(4)}\\ = &y_0-\mathrm{i}y_2-y_4+\mathrm{i}y_6+\left(\frac{\sqrt{2}}{2}-\frac{\sqrt{2}}{2}\mathrm{i}\right)(y_1-\mathrm{i}y_3-y_5+\mathrm{i}y_7)\\ =& y_0+\left(\frac{\sqrt{2}}{2}-\frac{\sqrt{2}}{2}\mathrm{i}\right)y_1-\mathrm{i}y_2-\left(\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right)y_3-y_4\\ & \quad +\left(-\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right)y_5+\mathrm{i}y_6+\left(\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right)y_7,\\ \end{align*} \]

Algoritmo detallado para \(m=4\)

El gráfico siguiente muestra esquematizado el paso III:

Algoritmo detallado para \(m=4\)

El gráfico siguiente muestra esquematizado el paso IV:

Transformada rápida de Fourier. Pseudocódigo

Caso 1: Supondremos que el lenguaje de programación en el que se va a programar el código empieza a inicializar en \(1\):

En primer lugar, tenemos que definir la rutina que nos realiza el paso \(\frac{m}{2^{j+1}}\longrightarrow \frac{m}{2^{j}}\).

Le llamamos SubirNivel que depende de un vector \(y\), paso \(j\) y del vector c donde se guardan los coeficientes \(c_k\):

  • SubirNivel = Rutina(y,j,c)
    • Set \(L=\mathrm{longitud}(\mathbf{c})\) (Calculamos la longitud del vector donde se guardan los coeficientes \(c_k\))
    • Set \(\mathbf{cn} = \mathbf{c}\) (En el vector \(\mathbf{cn}\) guardaremos los nuevos coeficientes \(c_k\))

Transformada rápida de Fourier. Pseudocódigo

    • For k=1,...,L/2 (Aplicamos la expresión hallada para los nuevos coeficientes \(c_k\) que, recordemos guardaremos en el vector \(\mathbf{cn}\))
      • Set \(cn_k = c_k+\mathrm{e}^{\frac{(k-1)\mathrm{i}\cdot\pi}{2^j}}\cdot c_{k+L/2}\)
      • Set \(cn_{L/2+k}=c_k-\mathrm{e}^{\frac{(k-1)\mathrm{i}\cdot\pi}{2^j}}\cdot c_{k+L/2}\)
    • Set \(\mathbf{z}=\mathbf{0}\) (Inicializamos el vector \(\mathbf{z}\))
    • Set \(z[\mathrm{componentes\ pares}]=\mathbf{y}[1:L/2]\) (Las componentes pares del vector \(z\) son las primeras \(L/2\) componentes del vector \(\mathbf{y}\))
    • Set \(z[\mathrm{componentes\ impares}]=\mathbf{y}[(L/2+1):L]\) (Las componentes impares del vector \(z\) son las últimas \(L/2\) componentes del vector \(\mathbf{y}\))
    • Return \(z\), \(\mathbf{cn}\) (Devolvemos el vector \(y\) arreglado y los nuevos coeficientes guardados en el vector \(\mathbf{cn}\))

Transformada rápida de Fourier. Pseudocódigo

  • INPUT m, valores \(y_k\), \(k=1,\ldots,2 m\).
  • Set \(p=\ln_2(m)\) (Calculamos \(p\) tal que \(m=2^p\).)
  • Set \(z=y\). (Empezamos a reordenar los valores \(y_k\), \(k=1,\ldots,2m\) para poder aplicar el algoritmo. Primeramente hacemos una copia de \(y\) en el vector \(z\) que será el vector que manipularemos.)

Transformada rápida de Fourier. Pseudocódigo

  • For i=1,...p
    • For j=1,...,2^(p-1)
      • Set \(aux=z[(1+(j-1)\cdot 2^{p+2-i}):(j\cdot 2^{p+2-i})]\) (Guardamos las componentes \(1+(j-1)\cdot 2^{p+2-i},\ldots,j\cdot 2^{p+2-i}\) del vector \(z\) en el vector auxiliar \(aux\).)
      • Set \(aux=aux[\mathrm{componentes\ pares}],aux[\mathrm{componentes\ impares}]\) (Separamos las componentes pares de las impares en el vector \(aux\) escribiendo primero las componentes pares seguidas de las impares.)
      • Set \(z[(1+(j-1)\cdot 2^{p+2-i}):(j\cdot 2^{p+2-i})]=aux[1:2^{p+2-i}]\) (Guardamos las primeras \(2^{p+2-i}\) componentes del vector \(aux\) en las correspondientes componentes del vector \(z\).)
  • Set \(y=z\) (Guardamos el nuevo vector \(z\) en el vector permutado \(y\).)

Transformada rápida de Fourier. Pseudocódigo

  • Set \(\mathbf{c}^{(2)}=\mathbf{0}\) (Inicializamos los coeficientes \(c_k\) para muestras de longitud \(2\), \(c_k^{(2)}\), a \(0\) donde el vector \(\mathbf{0}\) tiene \(2m\) componentes)
  • For i=0,...,m-1 (Calculamos los \(c_k\) iniciales, es decir, los \(c_k^{(2)}\) para las muestras de longitud \(2\))
    • Set \(c_{2i+1}^{(2)}=y_{2i+1}+y_{2i+2}\)
    • Set \(c_{2i+2}^{(2)}=y_{2i+1}-y_{2i+2}\)
  • For j=1,...,2^(p-1) (Vamos a realizar el primer paso \(2\longrightarrow 4\))
    • Set \(\mathrm{Resultado}_j=SubirNivel(y[(1+(j-1)\cdot 2^2):(j\cdot 2^2)],1,\mathbf{c}^{(2)})\) (La lista resultado tiene \(2^{p-1}\) componentes y el valor de cada una queda indicado en la expresión. Es decir, la componente \(\mathrm{Resultado}_j\) tiene dos componentes, una correspondiente al vector \(y\) y la otra correspondiente al vector \(\mathbf{c}\). )

Transformada rápida de Fourier. Pseudocódigo

  • For i=2,...,p (Realizamos todos los demás pasos)
    • For j=1,...,2^(p-i)
      • Set \(\mathbf{yj}=[\mathrm{Resultado}_{2j-1}^{y},\mathrm{Resultado}_{2j}^{y}]\) (Definimos el vector \(\mathbf{yj}\) como la unión los vectores \(y\) de las listas \(\mathrm{Resultado}_{2j-1}\) y \(\mathrm{Resultado}_{2j}\))
      • Set \(\mathbf{cj}=[Resultado_{2j-1}^{\mathbf{c}},Resultado_{2j}^{\mathbf{c}}]\) (Idem con los vectores \(\mathbf{c}\))
      • Set \(\mathrm{Resultadon}_j =SubirNivel(\mathbf{yj},i,\mathbf{cj})\)
    • Set \(\mathrm{Resultado}=\mathrm{Resultadon}\) (Actualizamos todo)
  • Print \(\mathrm{Resultado}\) ( es una lista de dos componentes: por un lado tenemos nuestra muestra \(y\) original y por otro tenemos calculados los coeficientes \(c_k\))

Transformada rápida de Fourier. Pseudocódigo

Caso 2: Supondremos que el lenguaje de programación en el que se va a programar el código empieza a inicializar en \(0\) como Python:

En primer lugar, tenemos que definir la rutina que nos realiza el paso \(\frac{m}{2^{j+1}}\longrightarrow \frac{m}{2^{j}}\).

Le llamamos SubirNivel que depende de un vector \(y\), paso \(j\) y del vector c donde se guardan los coeficientes \(c_k\):

  • SubirNivel = Rutina(y,j,c)
    • Set \(L=\mathrm{longitud}(\mathbf{c})\) (Calculamos la longitud del vector donde se guardan los coeficientes \(c_k\))
    • Set \(\mathbf{cn} = \mathbf{c}\) (En el vector \(\mathbf{cn}\) guardaremos los nuevos coeficientes \(c_k\))

Transformada rápida de Fourier. Pseudocódigo

    • For k=0,...,L/2-1 (Aplicamos la expresión hallada para los nuevos coeficientes \(c_k\) que, recordemos guardaremos en el vector \(\mathbf{cn}\))
      • Set \(cn_k = c_k+\mathrm{e}^{\frac{k\mathrm{i}\cdot\pi}{2^j}}\cdot c_{k+L/2}\)
      • Set \(cn_{L/2+k}=c_k-\mathrm{e}^{\frac{k\mathrm{i}\cdot\pi}{2^j}}\cdot c_{k+L/2}\)
    • Set \(\mathbf{z}=\mathbf{0}\) (Inicializamos el vector \(\mathbf{z}\))
    • Set \(z[\mathrm{componentes\ pares}]=\mathbf{y}[0:(L/2-1)]\) (Las componentes pares del vector \(z\) son las primeras \(L/2\) componentes del vector \(\mathbf{y}\))
    • Set \(z[\mathrm{componentes\ impares}]=\mathbf{y}[(L/2):(L-1)]\) (Las componentes impares del vector \(z\) son las últimas \(L/2\) componentes del vector \(\mathbf{y}\))
    • Return \(z\), \(\mathbf{cn}\) (Devolvemos el vector \(y\) arreglado y los nuevos coeficientes guardados en el vector \(\mathbf{cn}\))

Transformada rápida de Fourier. Pseudocódigo

  • INPUT m, valores \(y_k\), \(k=0,\ldots,2 m-1\).
  • Set \(p=\ln_2(m)\) (Calculamos \(p\) tal que \(m=2^p\).)
  • Set \(z=y\). (Empezamos a reordenar los valores \(y_k\), \(k=0,\ldots,2m-1\) para poder aplicar el algoritmo. Primeramente hacemos una copia de \(y\) en el vector \(z\) que será el vector que manipularemos.)

Transformada rápida de Fourier. Pseudocódigo

  • For i=1,...p
    • For j=1,...,2^(p-1)
      • Set \(aux=z[((j-1)\cdot 2^{p+2-i}):(j\cdot 2^{p+2-i})]\) (Guardamos las componentes \((j-1)\cdot 2^{p+2-i},\ldots,j\cdot 2^{p+2-i}-1\) del vector \(z\) en el vector auxiliar \(aux\).)
      • Set \(aux=aux[\mathrm{componentes\ pares}],aux[\mathrm{componentes\ impares}]\) (Separamos las componentes pares de las impares en el vector \(aux\) escribiendo primero las componentes pares seguidas de las impares.)
      • Set \(z[((j-1)\cdot 2^{p+2-i}):(j\cdot 2^{p+2-i}-1)]=aux[0:(2^{p+2-i}-1)]\) (Guardamos las primeras \(2^{p+2-i}\) componentes del vector \(aux\) en las correspondientes componentes del vector \(z\).)
  • Set \(y=z\) (Guardamos el nuevo vector \(z\) en el vector permutado \(y\).)

Transformada rápida de Fourier. Pseudocódigo

  • Set \(\mathbf{c}^{(2)}=\mathbf{0}\) (Inicializamos los coeficientes \(c_k\) para muestras de longitud \(2\), \(c_k^{(2)}\), a \(0\) donde el vector \(\mathbf{0}\) tiene \(2m\) componentes)
  • For i=0,...,m-1 (Calculamos los \(c_k\) iniciales, es decir, los \(c_k^{(2)}\) para las muestras de longitud \(2\))
    • Set \(c_{2i}^{(2)}=y_{2i}+y_{2i+1}\)
    • Set \(c_{2i+1}^{(2)}=y_{2i}-y_{2i+1}\)
  • For j=1,...,2^(p-1) (Vamos a realizar el primer paso \(2\longrightarrow 4\))
    • Set \(\mathrm{Resultado}_{j-1}=SubirNivel(y[((j-1)\cdot 2^2):(j\cdot 2^2)],1,\mathbf{c}^{(2)}[((j-1)\cdot 2^2):(j\cdot 2^2)])\) (La lista resultado tiene \(2^{p-1}\) componentes y el valor de cada una queda indicado en la expresión. Es decir, la componente \(\mathrm{Resultado}_j\) tiene dos componentes, una correspondiente al vector \(y\) y la otra correspondiente al vector \(\mathbf{c}\). )

Transformada rápida de Fourier. Pseudocódigo

  • For i=2,...,p (Realizamos todos los demás pasos)
    • For j=0,...,2^(p-i)-1
      • Set \(\mathbf{yj}=[\mathrm{Resultado}_{2j}^{y},\mathrm{Resultado}_{2j+1}^{y}]\) (Definimos el vector \(\mathbf{yj}\) como la unión los vectores \(y\) de las listas \(\mathrm{Resultado}_{2j-1}\) y \(\mathrm{Resultado}_{2j}\))
      • Set \(\mathbf{cj}=[Resultado_{2j}^{\mathbf{c}},Resultado_{2j+1}^{\mathbf{c}}]\) (Idem con los vectores \(\mathbf{c}\))
      • Set \(\mathrm{Resultadon}_j =SubirNivel(\mathbf{yj},i,\mathbf{cj})\)
    • Set \(\mathrm{Resultado}=\mathrm{Resultadon}\) (Actualizamos todo)
  • Print \(\mathrm{Resultado}\) ( es una lista de dos componentes: por un lado tenemos nuestra muestra \(y\) original y por otro tenemos calculados los coeficientes \(c_k\))

Ejemplo

Vamos a hallar la Transformada de Fourier de la forma: \[ S_m(x)=\frac{a_0+a_m\cos(mx)}{2}+\sum_{j=1}^{m-1} a_j\cos(jx)+\sum_{j=1}^{m-1}b_j\sin(jx), \] con \[ \begin{align*} a_k = & \frac{1}{m}\sum_{i=0}^{2m-1}y_i\cos(kx_i),\ k=0,1,\ldots,m,\\ b_k = & \frac{1}{m}\sum_{i=0}^{2m-1}y_i\sin(kx_i),\ k=0,1,\ldots,m-1.\\ \end{align*} \] que interpola la nube de puntos \((x_k,y_k)\), \(k=0,1,\ldots,2m-1\), con \(m=4\) (\(2m-1=7\)) siguientes: \[ \begin{align*} x_k = & -\pi+\frac{k\pi}{4},\ k=0,1,\ldots,7,\\ x_k = & -3.141593, -2.356194, -1.570796, -0.785398, 0, 0.785398, 1.570796, 2.356194,\\ y_k = & x_k^2=9.8696044, 5.5516525, 2.4674011, 0.6168503, 0, 0.6168503, 2.4674011, 5.5516525, \end{align*} \] usando la Transformada Rápida de Fourier.

Ejemplo (continuación)

  • Paso I: Reordenamos la muestra de \(y_k\) para poder aplicar el algoritmo: \[ \begin{align*} & y_0,\ y_1,\ y_2,\ y_3,\ y_4,\ y_5,\ y_6,\ y_7\\ & y_0,\ y_2,\ y_4,\ y_6,\quad y_1,\ y_3,\ y_5,\ y_7,\\ & \mathrm{Muestra\ 1:\ }y_0,\ y_4,\quad \mathrm{Muestra\ 2:\ }y_2,\ y_6,\quad \mathrm{Muestra\ 3:\ }y_1,\ y_5,\quad \mathrm{Muestra\ 4:\ }y_3,\ y_7,\\ & \mathrm{Muestra\ 1:\ } 9.8696044, 0,\quad \mathrm{Muestra\ 2:\ }2.4674011, 2.4674011,\\ & \mathrm{Muestra\ 3:\ } 5.5516525, 0.6168503,\quad \mathrm{Muestra\ 4:\ }0.6168503, 5.5516525. \end{align*} \]

  • Paso II: Calculamos los coeficientes para las muestras 1,2,3 y 4 anteriores: \[ \begin{align*} c_{0,1}^{(2)} = & y_0+y_4 = 9.8696044+0=9.8696044,\quad c_{1,1}^{(2)} = y_0-y_4 = 9.8696044-0=9.8696044,\\ c_{0,2}^{(2)} = & y_2+y_6 = 2.4674011+2.4674011=4.9348022,\quad c_{1,2}^{(2)} = y_2-y_6 = 2.4674011-2.4674011=0,\\ c_{0,3}^{(2)} = & y_1+y_5 = 5.5516525+0.6168503=6.1685028,\quad c_{1,3}^{(2)} = y_1-y_5 = 5.5516525-0.6168503=4.9348022,\\ c_{0,4}^{(2)} = & y_3+y_7 = 0.6168503+5.5516525=6.1685028,\quad c_{1,4}^{(2)} = y_3-y_7 = 0.6168503-5.5516525=-4.9348022. \end{align*} \]

Ejemplo (continuación)

  • Paso III: calculamos los coeficientes para las muestras 1 y 2 en el paso \(2\longrightarrow 4\):
    • Muestra 1: \[ \begin{align*} c_{0,1}^{(4)} = & y_0+y_2+y_4+y_6=9.8696044+2.4674011+0+0.6168503=14.8044066,\\ c_{1,1}^{(4)} = & y_0+\mathrm{i}y_2-y_4-\mathrm{i}y_6=9.8696044+2.4674011\mathrm{i}-0-2.4674011\mathrm{i}\\ = & 9.86960440108936+0i,\\ c_{2,1}^{(4)} = & y_0-y_2+y_4-y_6=9.8696044-2.4674011+0-2.4674011=4.9348022,\\ c_{3,1}^{(4)} = & y_0-\mathrm{i}y_2-y_4+\mathrm{i}y_6=9.8696044-2.4674011\mathrm{i}-0+2.4674011\mathrm{i}\\ = & 9.86960440108936+0i. \end{align*} \]
    • Muestra 2: \[ \begin{align*} c_{0,2}^{(4)} = & y_1+y_3+y_5+y_7=5.5516525+0.6168503+0.6168503+5.5516525=12.3370055,\\ c_{1,2}^{(4)} = & y_1+\mathrm{i}y_3-y_5-\mathrm{i}y_7=5.5516525+0.6168503\mathrm{i}-0.6168503-5.5516525\mathrm{i}\\ = & 4.93480220054468-4.93480220054468i,\\ c_{2,2}^{(4)} = & y_1-y_3+y_5-y_7=5.5516525-0.6168503+0.6168503-5.5516525=0,\\ c_{3,2}^{(4)} = & y_1-\mathrm{i}y_3-y_5+\mathrm{i}y_7=5.5516525-0.6168503\mathrm{i}-0.6168503+5.5516525\mathrm{i}\\ = & 4.93480220054468+4.93480220054468i. \end{align*} \]

Ejemplo (continuación)

  • Paso IV: Calculamos los coeficientes de la muetra original \(y_0,\ldots,y_7\) en el paso \(4\longrightarrow 8\): \[ \begin{align*} c_0^{(8)} = & y_0+y_1+y_2+y_3+y_4+y_5+y_6+y_7 =9.8696044+5.5516525+2.4674011+0.6168503\\ &\quad +0+0.6168503+2.4674011+5.5516525=27.1414121,\\ c_1^{(8)} = & y_0+\left(\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right)y_1+\mathrm{i}y_2+\left(\frac{-\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right)y_3-y_4 -\left(\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right)y_5-\mathrm{i}y_6\\ & \quad +\left(\frac{\sqrt{2}}{2}-\frac{\sqrt{2}}{2}\mathrm{i}\right)y_7\\ = & 9.8696044+\left(\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right) 5.5516525+ 2.4674011\mathrm{i}+\left(\frac{-\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right) 0.6168503\\ & \quad - 0 -\left(\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right) 0.6168503-2.4674011\mathrm{i} +\left(\frac{\sqrt{2}}{2}-\frac{\sqrt{2}}{2}\mathrm{i}\right) 5.5516525\\ = & 16.8484686, \end{align*} \]

Ejemplo (continuación)

  • Paso IV (continuación): \[ \begin{align*} c_2^{(8)} = & y_0+\mathrm{i}y_1-y_2-\mathrm{i}y_3+y_4+\mathrm{i}y_5-y_6-\mathrm{i}y_7 =9.8696044+5.5516525\mathrm{i}-2.4674011-0.6168503\mathrm{i}\\ &\quad +0+0.6168503\mathrm{i}-2.4674011-5.5516525\mathrm{i}=4.9348022,\\ c_3^{(8)} = & y_0+\left(-\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right)y_1-\mathrm{i}y_2+\left(\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right)y_3-y_4 +\left(\frac{\sqrt{2}}{2}-\frac{\sqrt{2}}{2}\mathrm{i}\right)y_5+\mathrm{i}y_6\\ & \quad -\left(\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right)y_7\\ = & 9.8696044+\left(-\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right) 5.5516525- 2.4674011\mathrm{i}+\left(\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right) 0.6168503\\ & \quad - 0 +\left(\frac{\sqrt{2}}{2}-\frac{\sqrt{2}}{2}\mathrm{i}\right) 0.6168503+2.4674011\mathrm{i} -\left(\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right) 5.5516525\\ = & 2.8907402, \end{align*} \]

Ejemplo (continuación)

  • Paso IV (continuación): \[ \begin{align*} c_4^{(8)} = & y_0-y_1+y_2-y_3+y_4-y_5+y_6-y_7 =9.8696044-5.5516525+2.4674011-0.6168503\\ &\quad +0-0.6168503+2.4674011-5.5516525=2.4674011,\\ c_5^{(8)} = & y_0-\left(\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right)y_1+\mathrm{i}y_2+\left(\frac{\sqrt{2}}{2}-\frac{\sqrt{2}}{2}\mathrm{i}\right)y_3-y_4 +\left(\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right)y_5-\mathrm{i}y_6\\ & \quad +\left(\frac{-\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right)y_7\\ = & 9.8696044-\left(\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right) 5.5516525+ 2.4674011\mathrm{i}+\left(\frac{\sqrt{2}}{2}-\frac{\sqrt{2}}{2}\mathrm{i}\right) 0.6168503\\ & \quad - 0 +\left(\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right) 0.6168503-2.4674011\mathrm{i} +\left(-\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right) 5.5516525\\ = & 2.8907402, \end{align*} \]

Ejemplo (continuación)

  • Paso IV (continuación): \[ \begin{align*} c_6^{(8)} = & y_0-\mathrm{i}y_1-y_2+\mathrm{i}y_3+y_4-\mathrm{i}y_5-y_6+\mathrm{i}y_7 =9.8696044-5.5516525\mathrm{i}-2.4674011+0.6168503\mathrm{i}\\ &\quad +0-0.6168503\mathrm{i}-2.4674011+5.5516525\mathrm{i}=4.9348022,\\ c_7^{(8)} = & y_0+\left(\frac{\sqrt{2}}{2}-\frac{\sqrt{2}}{2}\mathrm{i}\right)y_1-\mathrm{i}y_2-\left(\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right)y_3-y_4 +\left(-\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right)y_5+\mathrm{i}y_6\\ & \quad +\left(\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right)y_7\\ = & 9.8696044+\left(\frac{\sqrt{2}}{2}-\frac{\sqrt{2}}{2}\mathrm{i}\right) 5.5516525- 2.4674011\mathrm{i}-\left(\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right) 0.6168503\\ & \quad - 0 +\left(-\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right) 0.6168503+2.4674011\mathrm{i} +\left(\frac{\sqrt{2}}{2}+\frac{\sqrt{2}}{2}\mathrm{i}\right) 5.5516525\\ = & 16.8484686. \end{align*} \]

Ejemplo (continuación)

Recordemos que para calcular los coeficientes \(a_k\) y \(b_k\), debemos usar la relación siguiente: \[ a_k+\mathrm{i}b_k = \frac{(-1)^k}{m}c_k,\ k=0,1,\ldots,m. \] Como todos los \(c_k\) hallados son reales, es decir, con la parte imaginaria cero, los coeficientes \(b_k\) serán \(0\) y los coeficientes \(a_k\) serán: \[ \begin{align*} a_0 = & \frac{(-1)^0}{m}c_0^{(8)} =\frac{1}{4}\cdot 27.1414121 = 6.785353,\\ a_1 = & \frac{(-1)^1}{m}c_1^{(8)} =\frac{-1}{4}\cdot 16.8484686 = -4.2121172,\\ a_2 = & \frac{(-1)^2}{m}c_2^{(8)} =\frac{1}{4}\cdot 4.9348022 = 1.2337006,\\ a_3 = & \frac{(-1)^3}{m}c_3^{(8)} =\frac{-1}{4}\cdot 2.8907402 = -0.7226851,\\ a_4 = & \frac{(-1)^4}{m}c_4^{(8)} =\frac{1}{4}\cdot 2.4674011 = 0.6168503. \end{align*} \]

Ejemplo (continuación)

La transformada de Fourier correspondiente a la nube de puntos \((x_k,y_k)\) es la siguiente: \[ \begin{align*} S_{4}(x)= & \frac{6.785353+0.6168503\cdot\cos(4 x)}{2}-4.2121172\cdot\cos(x)+1.2337006\cdot\cos(2x)-0.7226851\cdot\cos(3x),\\ = & 3.3926765-4.2121172\cdot\cos(x)+1.2337006\cdot\cos(2x)-0.7226851\cdot\cos(3x)+0.3084251\cdot\cos(4x). \end{align*} \]

El gráfico siguiente muestra la transformada de Fourier \(S_4(x)\) en negro junto con la nube de puntos en rojo.

Ejemplo (continuación)

Trans. rápida de Fourier en cualquier intervalo

Supongamos que nuestra nube de puntos \((t_k,y_k)\), \(k=0,1,\ldots,2m-1\) está en un intervalo \([a,b]\) y queremos hallar la correspondiente transformada de Fourier de dicha nube para este intervalo.

En este caso, hemos de tener en cuenta la aplicación siguiente que nos transforma valores del intervalo \([-\pi,\pi]\) al intervalo \([a,b]\) y viceversa: \[ \begin{align*} [-\pi,\pi] & \longrightarrow [a,b]\\ x & \longrightarrow t=\frac{(b-a)}{2\pi}x+\frac{a+b}{2},\\ x=\frac{2\pi}{(b-a)}\left(t-\frac{(a+b)}{2}\right) &\longleftarrow t. \end{align*} \]

Trans. rápida de Fourier en cualquier intervalo

Entonces la función transformada de Fourier en el intervalo \([a,b]\) será de la forma: \[ \begin{align*} S_m(t)= & \frac{a_0+a_m\cos\left(\frac{2\pi m}{(b-a)}\left(t-\frac{(a+b)}{2}\right)\right)}{2}\\ & \quad +\sum_{j=1}^{m-1} a_j\cos\left(\frac{2\pi j}{(b-a)}\left(t-\frac{(a+b)}{2}\right)\right)\\ & \quad +\sum_{j=1}^{m-1}b_j\sin\left(\frac{2\pi j}{(b-a)}\left(t-\frac{(a+b)}{2}\right)\right), \end{align*} \]

Trans. rápida de Fourier en cualquier intervalo

donde: \[ \begin{align*} a_k = & \frac{1}{m}\sum_{i=0}^{2m-1}y_i\cos\left(\frac{2\pi k}{(b-a)}\left(t_i-\frac{(a+b)}{2}\right)\right),\ k=0,1,\ldots,m,\\ b_k = & \frac{1}{m}\sum_{i=0}^{2m-1}y_i\sin\left(\frac{2\pi k}{(b-a)}\left(t_i-\frac{(a+b)}{2}\right)\right),\ k=0,1,\ldots,m-1.\\ \end{align*} \]

En la práctica se transforma la nube de puntos \((t_k,y_k)\), \(k=0,1,\ldots,2m-1\) en el intervalo \([-\pi,\pi]\), \[ (t_k,y_k)\longrightarrow \left(x_k=\frac{2\pi}{(b-a)}\left(t_k -\frac{(a+b)}{2}\right),y_k\right),\ k=0,1,\ldots,2m-1, \] se calcula la función transformada de Fourier en el intervalo \([-\pi,\pi]\) hallando los coeficientes \(a_k\) y \(b_k\) y por último se considera la expresión anterior \(S_m(t)\).

Ejemplo

Vamos a hallar la transformada de Fourier de los puntos \((x_k,y_k)\), \(k=0,1\ldots,7\) (\(m=4\)) en el intervalo \([0,1]\), con \(y_k=x_k^2\).

\[ \begin{align*} t_k = & \frac{k}{2m},\ k=0,1,\ldots,7,\\ t_k = & 0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875,\\ y_k = & t_k^2 = 0, 0.015625, 0.0625, 0.140625, 0.25, 0.390625, 0.5625, 0.765625. \end{align*} \] La transformación que debemos hacer en este caso es: \[ x=\frac{2\pi}{(b-a)}\left(t-\frac{(a+b)}{2}\right)=\frac{2\pi}{(1-0)}\left(t-\frac{(0+1)}{2}\right)=2\pi \left(t+\frac{1}{2}\right). \] Los valores \(x_k\) correspondientes a la nube de puntos \((x_k,y_k)\) será pues: \[ x_k = 2\pi \left(t_k-\frac{1}{2}\right)=-3.1415927, -2.3561945, -1.5707963, -0.7853982, 0, 0.7853982, 1.5707963, 2.3561945. \]

Ejemplo (continuación)

Si aplicamos la Transformada rápida de Fourier a la nube de puntos anteriores obtenemos los coeficientes \(c_k\) siguientes: \[ \begin{align*} c_0 = & 2.1875+0i,\quad c_1 = -0.07322330470336-1.20710678118655i,\\ c_2 = & -0.375-0.5i,\quad c_3 = -0.426776695296637-0.207106781186548i,\\ c_4 = & -0.4375+0i,\quad c_5 = -0.426776695296637+0.207106781186549i,\\ c_6 = & -0.375000000000001+0.5i,\quad c_7 = -0.07322330470336+1.20710678118655i. \end{align*} \] Los coeficientes \(a_k\) y \(b_k\) usando la expresión \[ a_k+\mathrm{i}b_k = \frac{(-1)^k}{m}c_k,\ k=0,1,\ldots,m. \]

Ejemplo (continuación)

serán: \[ \begin{align*} a_0 = & \mathrm{Re}\left(\frac{(-1)^0\cdot c_0}{m}\right)=\mathrm{Re}\left(\frac{1\cdot (2.1875+0i)}{4}\right)=0.546875,\\ a_1 = & \mathrm{Re}\left(\frac{(-1)^1\cdot c_1}{m}\right)=\mathrm{Re}\left(\frac{-1\cdot (-0.07322330470336-1.20710678118655i)}{4}\right)=0.0183058,\\ a_2 = & \mathrm{Re}\left(\frac{(-1)^2\cdot c_2}{m}\right)=\mathrm{Re}\left(\frac{1\cdot (-0.375-0.5i)}{4}\right)=-0.09375,\\ a_3 = & \mathrm{Re}\left(\frac{(-1)^3\cdot c_3}{m}\right)=\mathrm{Re}\left(\frac{-1\cdot (-0.426776695296637-0.207106781186548i)}{4}\right)=0.1066942,\\ a_4 = & \mathrm{Re}\left(\frac{(-1)^4\cdot c_4}{m}\right)=\mathrm{Re}\left(\frac{1\cdot (-0.4375+0i)}{4}\right)=-0.109375, \end{align*} \]

\[ \begin{align*} b_0 = & 0,\\ b_1 = & \mathrm{Im}\left(\frac{(-1)^1\cdot c_1}{m}\right)=\mathrm{Im}\left(\frac{-1\cdot (-0.07322330470336-1.20710678118655i)}{4}\right)=0.3017767,\\ b_2 = & \mathrm{Im}\left(\frac{(-1)^2\cdot c_2}{m}\right)=\mathrm{Im}\left(\frac{1\cdot (-0.375-0.5i)}{4}\right)=-0.125,\\ b_3 = & \mathrm{Im}\left(\frac{(-1)^3\cdot c_3}{m}\right)=\mathrm{Im}\left(\frac{-1\cdot (-0.426776695296637-0.207106781186548i)}{4}\right)=0.0517767,\\ b_4 = & 0. \end{align*} \]

Ejemplo (continuación)

La transformada de Fourier en el intervalo \([-\pi,\pi]\) será: \[ \begin{align*} S_{4}(x)= & \frac{0.546875-0.109375\cdot\cos(4 x)}{2}+0.0183058\cdot\cos(x)-0.09375\cdot\cos(2x)+0.1066942\cdot\cos(3x)\\ & \quad +0.3017767\cdot\sin(x)-0.125\cdot\sin(2x)+0.0517767\cdot\sin(3x) \\= & 0.2734375+0.0183058\cdot\cos(x)-0.09375\cdot\cos(2x)+0.1066942\cdot\cos(3x)-0.0546875\cdot\cos(4x)\\ & \quad +0.3017767\cdot\sin(x)-0.125\cdot\sin(2x)+0.0517767\cdot\sin(3x). \end{align*} \]

Usando el cambio \(x=2\pi \left(t-\frac{1}{2}\right)\), la transformada de Fourier en el intervalo \([0,1]\) será: \[ \begin{align*} S_{4}(t)= & 0.2734375+0.0183058\cdot\cos\left(2\pi \left(t-\frac{1}{2}\right)\right)-0.09375\cdot\cos\left(4\pi \left(t-\frac{1}{2}\right)\right)\\ & \quad +0.1066942\cdot\cos\left(6\pi \left(t-\frac{1}{2}\right)\right)-0.0546875\cdot\cos\left(8\pi \left(t-\frac{1}{2}\right)\right)\\ & \quad +0.3017767\cdot\sin\left(2\pi \left(t-\frac{1}{2}\right)\right)-0.125\cdot\sin\left(4\pi \left(t-\frac{1}{2}\right)\right)+0.0517767\cdot\sin\left(6\pi \left(t-\frac{1}{2}\right)\right). \end{align*} \]

El gráfico siguiente muestra la transformada de Fourier \(S_4(x)\) en negro junto con la nube de puntos en rojo.

Ejemplo (continuación)