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.
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*} \]
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:
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.
El Teorema siguiente nos da la función \(S_n(x)\) 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*} \]
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.\)
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)). \]
Antes de desarrollar las ecuaciones anteriores veamos el siguiente lema que nos será muy útil:
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*} \]
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*} \]
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*} \]
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*} \]
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. \]
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. \]
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. \]
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:
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*} \]
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). \]
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.
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.
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*} \]
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). \]
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:
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}. \]
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\) |
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.
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.
Nos planteamos el problema siguiente:
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*} \]
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\)).
El Teorema siguiente nos da la función \(S_n(x)\) buscada:
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*} \]
De forma parecida al caso continuo, necesitamos el lema siguiente para la demostración del Teorema:
Sean \(k\), \(l\) y \(m\) tres enteros. Entonces se cumplen las igualdades siguientes:
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. \]
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\).
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.
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\).
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. \]
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). \]
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). \]
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}\)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}\).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}\)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}\).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*} \]
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*} \]
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.
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*} \]
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. \]
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\).
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\).
El lema siguiente nos calcula la suma solicitada:
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*} \]
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). \]
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\).
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*} \]
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\) |
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. \]
Veamos a continuación que los coeficientes \(a_k\) y \(b_k\) se pueden calcular a partir de los coeficientes \(c_k\):
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\).
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.
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} \]
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\).
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} \]
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\).
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}\).
Introduzcamos un poco de notación:
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\).
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}\).
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\):
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\) |
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,
En resumen, hemos reducido el número total de operaciones de \(O(m^2)\) a \(O(m\ln_2 m)\).
Demos el algoritmo detallado para \(m=4=2^2\), y por tanto, \(p=2\).
El gráfico siguiente muestra esquematizado el paso III:
El gráfico siguiente muestra esquematizado el paso IV:
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\))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}\))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
.)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\).)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}\). )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\))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\))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}\))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
.)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\).)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}\). )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\))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.
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*} \]
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*} \]
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.
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*} \]
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*} \]
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)\).
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. \]
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. \]
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*} \]
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.