Diferencia entre revisiones de «Series de Fourier (Arturo, Mario)»
(→. Cambio de intervalo) |
(→. Base trigonométrica) |
||
| Línea 101: | Línea 101: | ||
[[Archivo:Constante.png|300px|thumb|right|Término de la base constante igual a <math> 1/2 </math>.]] | [[Archivo:Constante.png|300px|thumb|right|Término de la base constante igual a <math> 1/2 </math>.]] | ||
[[Archivo:Basecos1.png|300px|thumb|right|Términos de la base <math> \cos(n\pi x)</math> para n=1,2,...10.]] | [[Archivo:Basecos1.png|300px|thumb|right|Términos de la base <math> \cos(n\pi x)</math> para n=1,2,...10.]] | ||
| − | + | ||
Para familiarizarse con las bases empleadas en los desarrollos en series de Fourier es imprescindible dibujar en una gráfica algunos términos de una base. En este caso, se van a dibujar algunos de los términos de la base trigonométrica <math> \left\{\frac{1}{2}, \cos(n\pi x), \sin(n\pi x)\right\}_{n \in \mathbb{N}} </math> de <math> L^2(−1, 1) </math>. | Para familiarizarse con las bases empleadas en los desarrollos en series de Fourier es imprescindible dibujar en una gráfica algunos términos de una base. En este caso, se van a dibujar algunos de los términos de la base trigonométrica <math> \left\{\frac{1}{2}, \cos(n\pi x), \sin(n\pi x)\right\}_{n \in \mathbb{N}} </math> de <math> L^2(−1, 1) </math>. | ||
| + | |||
| + | [[Archivo:Basesen1.png|300px|thumb|right|Términos de la base <math> \sin(n\pi x)</math> para n=1,2,...10.]] | ||
El periodo de una función trigonométrica, como el seno o el coseno, determina la longitud de un ciclo completo de la función. En el caso del seno y el coseno estándar, el periodo es <math> 2\pi </math>. Sin embargo, al cambiar el periodo, se modifica la longitud del ciclo, lo que afectará la frecuencia y la variación de la función en el dominio. | El periodo de una función trigonométrica, como el seno o el coseno, determina la longitud de un ciclo completo de la función. En el caso del seno y el coseno estándar, el periodo es <math> 2\pi </math>. Sin embargo, al cambiar el periodo, se modifica la longitud del ciclo, lo que afectará la frecuencia y la variación de la función en el dominio. | ||
Revisión del 01:06 16 feb 2024
| Trabajo realizado por estudiantes | |
|---|---|
| Título | Series de Fourier. Grupo 6-A |
| Asignatura | EDP |
| Curso | 2023-24 |
| Autores | Arturo Barrena García Mario Ríos Manjón |
| Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura | |
Contenido
1 . Introducción
Las Series de Fourier, nombradas en honor al matemático francés Jean-Baptiste Joseph Fourier, han emergido como un pilar fundamental en el estudio de funciones periódicas y en la resolución de problemas en diversos campos de la ciencia y la ingeniería. Estas series representan una herramienta matemática potente y versátil que permite descomponer funciones periódicas complejas en una combinación infinita de senos y cosenos, revelando así una estructura subyacente que facilita el análisis y la comprensión de fenómenos periódicos.
En esencia, las Series de Fourier ofrecen una perspectiva única para entender cómo las funciones periódicas pueden expresarse como la suma ponderada de armónicos simples. Este enfoque proporciona un método efectivo para analizar señales periódicas en términos de sus componentes fundamentales, permitiendo la resolución de problemas desde la teoría de control hasta el procesamiento de señales y la física aplicada.
El proceso de descomposición armónica propuesto por Fourier es particularmente relevante en el análisis de señales periódicas en el ámbito de la teoría de la comunicación, la ingeniería eléctrica, la física teórica y otras disciplinas. La capacidad de representar funciones periódicas complejas mediante la suma infinita de funciones senoidales y cosenoidales simplifica la resolución de ecuaciones diferenciales, el estudio de fenómenos ondulatorios y la síntesis de señales complejas en términos de componentes más simples.
Además, las Series de Fourier no solo se limitan a funciones periódicas clásicas, sino que su aplicación se extiende a funciones no periódicas mediante el concepto de transformada de Fourier. Este enfoque ampliado permite analizar señales no periódicas y ofrece un puente entre la teoría de funciones periódicas y la teoría de distribuciones, lo que hace que las Series de Fourier sean una herramienta matemática fundamental en la resolución de problemas prácticos y teóricos.
2 . Preliminares
2.1 . Series de Fourier
Tomemos el espacio de Hilbert [math]L^2(-\pi,\pi)[/math], así como una base de dicho espacio [math]\{ \frac{1}{2},\cos(nx),\sin(nx)\}_{n \in \mathbb{N}}[/math]. Esto significa que cualquier función cuadrado-integrable en [math] [-\pi,\pi][/math] puede ser expresada como una combinación lineal de estas funciones de la base (en casi todo punto). Formalmente, sea [math] f \in L^2 ([-\pi,\pi]) [/math] se define la serie de Fourier como la serie convergente tal que:
resultado de expresar la función [math]f[/math] como combinación lineal de los términos de la base anterior. Los coeficientes [math] a_0,a_n, b_n \in \mathbb{R} [/math] reciben el nombre de coeficientes de Fourier. Además, esta base es ortogonal ya que usando la definición de producto escalar de [math]L^{2}[/math] obtenemos:
Sin embargo, se debe observar que [math]\{ \frac{1}{2},\cos(n x),\sin(n x)\}_{n \in \mathbb{N}}[/math] es una base ortogonal pero no ortonormal, es decir, que las componentes de la base no están normalizadas. Por tanto, es posible calcular los coeficientes de Fourier de la siguiente forma:
Desarrollando, se llega a que es posible calcularlos de la siguiente forma:
Otra cosa importante a recalcar es que la definición anterior se ha hecho para funciones definidas sobre el compacto [math][-\pi,\pi][/math]. Sin embargo, esto se puede definir para cualquier otro intervalo de la forma [math][-T,T][/math] mediante el cambio de variable [math]y=x\frac{T}{\pi}[/math], obteniendo la base ortogonal de [math]L^2([-T,T])[/math]:
En este caso, los coeficientes de Fourier se podrían calcular simplemente haciendo:
También es posible generalizar a intervalos de la forma [math] [a,b] [/math]. Expresar la serie de Fourier de la función [math]f(x)[/math] en el intervalo [math] [a,b] [/math] es equivalente a expresar la serie de la función desplazada [math]g(x)=f(x-a-\frac{b-a}{2})[/math] en el intervalo [math][-\frac{b-a}{2},\frac{b-a}{2}][/math], el cual es de la forma anterior (simétrico con respecto al 0), y luego deshacer el desplazamiento. Como ya hemos visto, la base ortogonal que hemos usado de [math]L^2(-\frac{b-a}{2},\frac{b-a}{2})[/math] es:
Con esto, tendremos que:
donde:
Sin embargo, usando propiedades trigonométricas llegamos a que podemos expresar [math]f[/math] de la siguiente forma:
para algunos [math]a_0, a_k, b_k[/math] con [math]k\in \mathbb{N} [/math] por lo que la base ortogonal [math]\lbrace \frac{1}{2},\cos(\frac{2 n\pi}{b-a} x),\sin(\frac{2 n\pi}{b-a} x)\rbrace_{n \in \mathbb{N}}[/math] de [math]L^2(-\frac{b-a}{2},\frac{b-a}{2})[/math] también es base ortogonal de [math]L^2(a,b)[/math]. Por tanto, podemos calcular los coeficientes de la siguiente forma:
2.2 . Extensión par e impar
Dada una función [math]f[/math] en un intervalo de la forma [math] [0,T] [/math] es muy típico aproximar este tipo de funciones extendiéndola de forma par o impar. De este modo conseguimos que nuestra nueva función [math]g[/math] esté definida en [math] [-T,T] [/math] y al ser par o impar, varios coeficientes de Fourier se hacen [math]0[/math].
Extender de forma par una función [math]f[/math] es muy sencillo, basta con definir:
[math] g_1(x)= \left \{ \begin{array}{ll} f(x), & \quad x\in [0,T], \\ f(-x), & \quad x \in [-T,0). \end{array} \right. [/math]
Veamos cómo son los coeficientes de esta función par [math]g_1[/math]:
donde los coeficientes que son [math]0[/math] lo son debido a que la integral de una función par en un intervalo simétrico con respecto al [math]0[/math] es igual a [math]0[/math] y el producto de funciones pares ([math]g_1[/math] y el coseno) es par. Por lo tanto, se tiene que:
Finalmente, basta restringir [math] g_1 [/math] a [math] [0,T] [/math] para obtener el desarrollo de [math] f [/math]. Es decir, esto también demuestra que [math]\lbrace \sin(\frac{n\pi}{T} x)\rbrace_{n \in \mathbb{N}}[/math] es una base ortogonal de [math]L^2(0,T)[/math].
De igual forma, para extender [math]f[/math] de forma impar definimos:
[math] g_2(x)= \left \{ \begin{array}{ll} f(x), & \quad x\in [0,T], \\ -f(-x), & \quad x \in [-T,0). \end{array} \right. [/math]
Veamos cómo son los coeficientes de esta función par [math]g_2[/math]:
donde los coeficientes que son [math]0[/math] lo son debido a que de nuevo la integral de una función par en un intervalo simétrico con respecto al [math]0[/math] es igual a [math]0[/math] y el producto de funciones impares ([math]g_2[/math] y el seno) es par. Por lo tanto, se tiene que:
Finalmente, basta restringir [math] g_2 [/math] a [math] [0,T] [/math] para obtener el desarrollo de [math] f [/math]. Es decir, esto también demuestra que [math]\lbrace 1/2,\cos(\frac{n\pi}{T} x)\rbrace_{n \in \mathbb{N}}[/math] es una base ortogonal de [math]L^2(0,T)[/math].
3 . Base trigonométrica
Para familiarizarse con las bases empleadas en los desarrollos en series de Fourier es imprescindible dibujar en una gráfica algunos términos de una base. En este caso, se van a dibujar algunos de los términos de la base trigonométrica [math] \left\{\frac{1}{2}, \cos(n\pi x), \sin(n\pi x)\right\}_{n \in \mathbb{N}} [/math] de [math] L^2(−1, 1) [/math].
El periodo de una función trigonométrica, como el seno o el coseno, determina la longitud de un ciclo completo de la función. En el caso del seno y el coseno estándar, el periodo es [math] 2\pi [/math]. Sin embargo, al cambiar el periodo, se modifica la longitud del ciclo, lo que afectará la frecuencia y la variación de la función en el dominio.
En este caso, el periodo tanto para el seno como para el coseno es [math]T= \frac{2}{n}[/math]. Se puede observar a medida que [math]n[/math] es mayor el periodo se hace mas pequeño, eso quiere decir que la frecuencia disminuye por lo tanto el tiempo que tarda en completar un ciclo es menor (si se interpreta el eje x como el tiempo), consecuentemente hay mayor número de oscilaciones ya que la curva completa un mayor numero de ciclos en menos tiempo tal y como se puede observar en las figuras mostradas.
Véase que el código de matlab será:
close all
clear all
vectorx=-1:0.001:1;
for n=1:10
g1=@(x) cos(n.*pi.*x);
subplot(2,5,n);
xline(0);
hold on
yline(0);
plot(vectorx,g1(vectorx),'r')
axis equal
xlim([-1,1])
ylim([-1,1])
title(['$cos(', num2str(n), '\pi x)$'], 'Interpreter', 'latex');
hold off
end
vectory=zeros(1,length(vectorx));
for n=1:10
g2=@(x) (sin(n*pi*x));
for i=1:length(vectorx)
vectory(i)=g2(vectorx(i));
end
figure(2)
subplot(2,5,n);
xline(0);
hold on
yline(0);
plot(vectorx,vectory,'g')
axis equal
xlim([-1,1])
ylim([-1,1])
title(['$sen(', num2str(n), '\pi x)$'], 'Interpreter', 'latex');
hold off
end
figure(3)
plot(vectorx,1/2.*ones(1,length(vectorx)));
title('1/2')
4 . Aproximación de una función continua
Una vez se tiene una cierta familiaridad con la base trigonométrica, lo cual se ha logrado en la anterior sección, es hora de tratar de aproximar una función mediante la serie de Fourier usando dicha base. Por simplicidad, lo normal es comenzar aproximando una función continua. En esta sección, se escogerá:
la cual se tratará de aproximar en el intervalo [math][0,1][/math]. Para aproximar en este intervalo, simplemente podemos extender nuestra función de forma impar al intervalo [math][-1,1][/math] de manera que la función siga siendo continua y usar las funciones impares de la base trigonométrica en [math]L^2(−1,1)[/math], es decir, [math]\left\{\sin(n\pi x)\right\}_{n \in \mathbb{N}}[/math], usando lo visto en los preliminares. Con esto, tendremos que:
donde:
Si llamamos:
Esto permite aproximar [math]f[/math] con [math] f_n [/math] para varios valores de [math]n[/math], observando cómo cuánto mayor sea [math]n[/math] mejor es la aproximación. Haciendo esto, se han dibujado las gráficas para [math]n=1,5,10[/math].
Visualmente, es posible observar la mejora en la aproximación con el aumento del valor de [math]n[/math]. Sin embargo, para una mayor rigurosidad, se deben observar los errores para cada [math]n[/math] y cómo disminuyen con el aumento de la [math]n[/math]. En este caso se calcula el error en la norma [math]L^2(0,1)[/math] y el error uniforme para [math]n=1,2,...,10[/math]:
Se han calculado dichos errores para cada [math]n[/math] y se han dibujado en una gráfica, donde es posible observar cómo ambos decrecen al aumentar la [math]n[/math], lo cual quiere decir que la serie converge uniformemente y en norma de [math]L^2(0,1)[/math] a [math]f[/math].
close all
clear all
%Trapecio
f=@(x)x.*(1-x);
xx=0:0.001:1;
Y=zeros(10,length(xx));
for i = 1:10
g=@(x) f(x).*sin(i.*pi.*x);
a=2*trapz(xx,g(xx));
h=@(x)a.*sin(i.*pi.*x);
Y(i,:)=h(xx);
end
F=zeros(10,length(xx));
F(1,:)=Y(1,:);
for i= 2:10
F(i,:)=sum(Y(1:i,:));
end
%Gráficas
Ns=[1,5,10];
for i=1:length(Ns)
subplot(1,3,i)
hold on
plot(xx,F(Ns(i),:), 'b--', "LineWidth",1)
plot(xx,f(xx))
hold off
ylim([0,0.35])
legend("f_{"+num2str(Ns(i))+"}(x)", 'f(x)')
end
%Errores
ErrorNorma=zeros(1,10);
ErrorUnif=zeros(1,10);
for i=1:10
Resta=abs(f(xx)-F(i,:));
%Error norma
Integral=trapz(xx,Resta.^2);
ErrorNorma(i)=Integral^(1/2);
%Error uniforme
ErrorUnif(i)=max(Resta);
end
figure(2)
subplot(1,2,1)
semilogy(1:10,ErrorNorma)
ylim([0,0.009])
legend('Error Norma')
subplot(1,2,2)
semilogy(1:10,ErrorUnif)
ylim([0,0.013])
legend('Error Uniforme')
5 . Aproximación de una función discontinua
En la anterior sección se usó la base trigonométrica para aproximar una función por su serie de Fourier. Sin embargo, esta función era continua. En esta sección se observará qué ocurre cuando una función no es continua, además de estudiar los errores que se tienen en la aproximación para distintos [math]n[/math] tal y como se hizo para la función continua.
Se escoge la siguiente función discontinua:
Trataremos de aproximarla en [0,1] al igual que en el caso anterior. Para aproximar en este intervalo, simplemente podemos extender nuestra función de forma par al intervalo [-1,1] y usar las funciones pares de la base trigonométrica en [−1,1], es decir, [math]\left\{1/2,\cos(n\pi x)\right\}_{n \in \mathbb{N}}[/math], usando lo visto en los preliminares. Con esto, tendremos que:
donde:
Si llamamos:
esto permite aproximar [math]f[/math] con [math] f_n [/math] para varios valores de [math]n[/math], observando cómo cuánto mayor sea [math]n[/math] mejor es la aproximación. Haciendo esto, se han dibujado las gráficas para [math]n=1,5,10[/math].
De nuevo, visualmente, es posible observar la mejora en la aproximación con el aumento del valor de [math]n[/math]. Sin embargo, parecen aparecer unas oscilaciones en los extremos que hacen que la aproximación no parezca tan exacta como en el caso anterior. Para estudiar esta aproximación de forma más rigurosa, se han vuelto a calcular el error en norma y el error uniforme, dibujándolos en una gráfica para distintos valores de [math]n[/math].
Es fácil ver que el error en norma, al igual que antes, se reduce al aumentar la [math]n[/math].Sin embargo, el error uniforme se mantiene en [math]1/2[/math] todo el rato. Esto se debe a que la serie de Fourier en [math]x=1/2[/math] tomará el valor medio entre [math]1[/math] y [math]0[/math], es decir, [math]1/2[/math]. Esto hace que para cualquier [math]n[/math] la función [math]f_n[/math] aproxime [math]f(1/2)\approx 1/2[/math], causando así siempre un error uniforme de valor [math]1/2[/math]. Esto también nos muestra que la serie de Fourier no converge uniformemente a [math]f[/math] (lo cual tiene sentido pues una sucesión de funciones continuas no puede converger uniformemente a una función discontinua). Además, la mala aproximación de la serie en [math]x=1/2[/math] hace que se provoquen esas oscilaciones que pueden observarse en la gráfica. Estas oscilaciones se conocen como el fenómeno de Gibbs. Una forma de reducir el efecto del fenómeno de Gibbs es usar las sumas de Cesàro para aproximar la función [math]f[/math]. Estas se definen como:
Representando en una gráfica las sumas de Cesàro junto con la función f, podemos observar cómo se reducen las oscilaciones del fenómeno de Gibbs.
De nuevo, para una mayor rigurosidad, se deben observar los errores para cada [math]N[/math] y cómo disminuyen con el aumento de la [math]N[/math] en el caso de las sumas de Cesàro. En este caso, tal y cómo se ve en la gráfica, el error en norma aumenta un poco con respecto a la aproximación anterior y el error uniforme se mantiene igual. Sin embargo, el efecto de las oscilaciones se ha reducido por completo.
close all
clear all
%Trapecio
f=@(x)x.*(1-x);
xx=0:0.001:1;
Y=zeros(10,length(xx));
for i = 1:10
g=@(x) f(x).*sin(i.*pi.*x);
a=2*trapz(xx,g(xx));
h=@(x)a.*sin(i.*pi.*x);
Y(i,:)=h(xx);
end
F=zeros(10,length(xx));
F(1,:)=Y(1,:);
for i= 2:10
F(i,:)=sum(Y(1:i,:));
end
%Gráficas
Ns=[1,5,10];
for i=1:length(Ns)
subplot(1,3,i)
hold on
plot(xx,F(Ns(i),:), 'b--', "LineWidth",1)
plot(xx,f(xx))
hold off
ylim([0,0.35])
legend("f_{"+num2str(Ns(i))+"}(x)", 'f(x)')
end
%Errores
ErrorNorma=zeros(1,10);
ErrorUnif=zeros(1,10);
for i=1:10
Resta=abs(f(xx)-F(i,:));
%Error norma
Integral=trapz(xx,Resta.^2);
ErrorNorma(i)=Integral^(1/2);
%Error uniforme
ErrorUnif(i)=max(Resta);
end
figure(2)
subplot(1,2,1)
semilogy(1:10,ErrorNorma)
ylim([0,0.009])
legend('Error Norma')
subplot(1,2,2)
semilogy(1:10,ErrorUnif)
ylim([0,0.013])
legend('Error Uniforme')
%Sumas de Cesaro
S=zeros(11,length(xx));
S(1,:)=F(1,:);
for N=2:11
S(N,:)=1/N.*sum(F(1:N,:));
end
%Gráficas sumas de Cesaro
for i=1:length(Ns)
figure(3)
subplot(1,4,i)
hold on
plot(xx,S(Ns(i),:), 'b--', "LineWidth",1)
plot(xx,f(xx))
hold off
ylim([-0.2,1.5])
legend("f_{"+num2str(Ns(i)-1)+"}(x)", 'f(x)')
end
%Errores
ErrorNorma=zeros(1,10);
ErrorUnif=zeros(1,10);
for i=1:11
Resta=abs(f(xx)-S(i,:));
%Error norma
Integral=trapz(xx,Resta.^2);
ErrorNorma(i)=Integral^(1/2);
%Error uniforme
ErrorUnif(i)=max(Resta);
end
figure(4)
subplot(1,2,1)
semilogy(0:10,ErrorNorma)
legend('Error Norma')
subplot(1,2,2)
plot(0:10,ErrorUnif)
ylim([0,0.7])
legend('Error Uniforme')
6 . Cambio de intervalo
En las secciones anteriores se ha tratado de aproximar funciones siempre en un intervalo simétrico respecto al cero, más específicamente en [-1,1] (cuando se aproximaba una función en [0,1] simplemente se extendía de forma par o impar a [-1,1] y se hacía la aproximación en este intervalo para luego restringirla a [0,1]). Sin embargo, el desarrollo en series de Fourier permite aproximar una función en cualquier intervalo, no necesariamente uno simétrico con respecto al 0. Para ello, en esta sección se hará una aproximación de una función en el intervalo [1,3].
En este caso, aproximaremos la función [math] f(x) = xe^{-x} [/math] en [1, 3]. Como vimos en los preliminares, aproximar la función [math]f(x)[/math] en el intervalo [1,3] es equivalente a aproximar la función desplazada [math]g(x)=f(x+2)[/math] en el intervalo [-1,1] y luego deshacer el desplazamiento una vez obtenida la aproximación. De aquí se deducía que una base ortogonal de [math] L^2(1,3) [/math] es la propia base ortogonal que usábamos en [math] L^2(-1,1) [/math]. Como ya hemos visto en los anteriores apartados, la base trigonométrica de [math] L^2(-1,1) [/math] es [math]\left\{1/2,\sin(n\pi x),\cos(n\pi x)\right\}_{n \in \mathbb{N}}[/math].
Con esto, tendremos que:
donde:
Obteniendo el siguiente resutado para los coeficientes:
De forma análoga a lo que se hizo en las anteriores secciones, si definimos:
esto permite aproximar [math]f[/math] con [math] f_n [/math] para varios valores de [math]n[/math], observando cómo cuánto mayor sea [math]n[/math] mejor es la aproximación. Haciendo esto, se han dibujado las gráficas para [math]n=5,10,20[/math].
Se puede observar que aproxima bastante bien en la gráfica. Sin embargo, vuelven a aparecer las oscilaciones del fenómeno de Gibbs aunque la función en este caso sea continua. Esto se debe a que la serie trata de aproximar la función con funciones periódicas aunque la función no sea periódica. Lo que trata de aproximar la serie es la función en [math][1,3][/math] pero extendida periódicamente en cada intervalo de longitud 2, de forma que en [math][3,5][/math] toma los mismos valores que en [math][1,3][/math]. Esta función, es discontinua, ya que cada vez que comienza el siguiente periodo hay una discontinuidad, esto hace que las [math]f_n[/math] aproximen constantemente [math]f(3)\approx \frac{f(1)+f(3)}{2}[/math] para cualquier [math]n[/math] y causa el efecto de Gibbs visto en la anterior sección.
clear all
close all
f=@(x)x.*exp(-x);
xx=-1:0.001:1;
A=zeros(21,length(xx));
B=zeros(20,length(xx));
a_0=trapz(xx,f(xx+2)/2);
A(1,:)=a_0.*ones(1,length(xx));
for k=1:20
g1=@(x)f(x+2).*sin(k.*pi.*x);
g2=@(x)f(x+2).*cos(k.*pi.*x);
a_k= trapz(xx,g1(xx));
b_k= trapz(xx,g2(xx));
h1=@(x)a_k.*sin(k.*pi.*x);
h2=@(x)b_k.*cos(k.*pi.*x);
A(k+1,:)=h1(xx);
B(k,:)=h2(xx);
end
F=zeros(21,length(xx));
F(1,:)=A(1,:);
F(2,:)=sum(A(1:2,:))+B(1,:);
for i= 3:21
F(i,:)=sum(A(1:i,:)) + sum(B(1:i-1,:));
end
%Gráficas
subplot(1,3,1)
hold on
plot(xx+2,F(6,:), 'b--', "LineWidth",1)
plot(xx+2,f(xx+2))
hold off
legend('f_{5}(x)', 'f(x)')
subplot(1,3,2)
hold on
plot(xx+2,F(11,:), 'b--', "LineWidth",1)
plot(xx+2,f(xx+2))
hold off
legend('f_{10}(x)', 'f(x)')
subplot(1,3,3)
hold on
plot(xx+2,F(21,:), 'b--', "LineWidth",1)
plot(xx+2,f(xx+2))
hold off
legend('f_{20}(x)', 'f(x)')Este primer código calcula los coeficientes de la serie de Fourier aproximando las integrales por el método del trapecio, ya que calcular los coeficientes analíticamente no suele ser sencillo y no es aplicable a todos los casos. Ahora aportamos un segundo código utilizando los coeficientes anteriormente calculados, en el cual se comprueba que efectivamente son correctos.
clear all
close all
f=@(x)x.*exp(-x);
xx=1:0.001:3;
A=zeros(21,length(xx));
B=zeros(20,length(xx));
A(1,:)=(exp(-3) * (exp(2) - 2)).*ones(1,length(xx));
for k=1:20
a_k = -(exp(-3) * (2 * (pi^2 * k.^2 + 2) .* sin(3 * pi * k) + pi * k .* (3 * pi^2 * k.^2 + 5) .* cos(3 * pi * k) - 2 * exp(2) * sin(pi * k) - exp(2) * pi * k .* (pi^2 * k.^2 + 3) .* cos(pi * k))) ./ (pi^2 * k.^2 + 1).^2;
b_k = (exp(-3) * (pi * k .* (3 * pi^2 * k.^2 + 5) .* sin(3 * pi * k) - 2 * (pi^2 * k.^2 + 2) .* cos(3 * pi * k) - exp(2) * pi * k .* (pi^2 * k.^2 + 3) .* sin(pi * k) + 2 * exp(2) * cos(pi * k))) ./ (pi^2 * k.^2 + 1).^2;
h1=@(x)a_k.*sin(k.*pi.*x);
h2=@(x)b_k.*cos(k.*pi.*x);
A(k+1,:)=h1(xx);
B(k,:)=h2(xx);
end
F=zeros(21,length(xx));
F(1,:)=A(1,:);
F(2,:)=sum(A(1:2,:))+B(1,:);
for i= 3:21
F(i,:)=sum(A(1:i,:)) + sum(B(1:i-1,:));
end
%Gráficas
subplot(1,3,1)
hold on
plot(xx,F(6,:), 'b--', "LineWidth",1)
plot(xx,f(xx))
hold off
legend('f_{5}(x)', 'f(x)')
subplot(1,3,2)
hold on
plot(xx,F(11,:), 'b--', "LineWidth",1)
plot(xx,f(xx))
hold off
legend('f_{10}(x)', 'f(x)')
subplot(1,3,3)
hold on
plot(xx,F(21,:), 'b--', "LineWidth",1)
plot(xx,f(xx))
hold off
legend('f_{20}(x)', 'f(x)')
7 . Base trigonométrica compleja
Finalmente, se verá brevemente cómo también es posible aproximar funciones usando la base trigonométrica compleja. En [math][-\pi,\pi][/math] la base trigonométrica compleja es [math]\left\{e^{inx}\right\}_{n \in \mathbb{Z}}[/math].
En este caso, se aproximará la función [math] f(x) = 4x(1/2-x)^2 [/math] en [0,1]. Para ello, adaptamos la base trigonométrica compleja a este intervalo, de forma que tenemos la base [math]\left\{e^{2\pi inx}\right\}_{n \in \mathbb{Z}}[/math] de [math]L^2(0,1)[/math]. Con esto, tendremos que:
donde:
Si llamamos:
esto permite aproximar [math]f[/math] con [math] f_n [/math] para varios valores de [math]n[/math], observando cómo cuánto mayor sea [math]n[/math] mejor es la aproximación. De nuevo, se han dibujado gráficas para [math]n=5,10,20[/math].
Al igual que antes, se puede ver claramente cómo al aumentar la [math]n[/math] la aproximación es mejor, aunque aparecen de nuevo algunas oscilaciones que representan el fenómeno de Gibbs al no ser [math]f[/math] una función periódica.
clear all
close all
f=@(x)4.*x.*(1/2-x).^2;
xx=0:0.001:1;
A=zeros(21,length(xx));
B=zeros(20,length(xx));
a_0=trapz(xx,f(xx));
A(1,:)=a_0.*ones(1,length(xx));
for k=1:20
g1=@(x)f(x).*conj(exp(k.*2i.*pi.*x));
g2=@(x)f(x).*conj(exp(-k.*2i.*pi.*x));
a_k= trapz(xx,g1(xx));
b_k= trapz(xx,g2(xx));
h1=@(x)a_k.*exp(k.*2i.*pi.*x);
h2=@(x)b_k.*exp(-k.*2i.*pi.*x);
A(k+1,:)=h1(xx);
B(k,:)=h2(xx);
end
F=zeros(21,length(xx));
F(1,:)=A(1,:);
F(2,:)=sum(A(1:2,:))+B(1,:);
for i= 3:21
F(i,:)=sum(A(1:i,:)) + sum(B(1:i-1,:));
end
%Gráficas
subplot(1,3,1)
hold on
plot(xx,F(6,:), 'b--', "LineWidth",1)
plot(xx,f(xx))
hold off
legend('f_{5}(x)', 'f(x)')
subplot(1,3,2)
hold on
plot(xx,F(11,:), 'b--', "LineWidth",1)
plot(xx,f(xx))
hold off
legend('f_{10}(x)', 'f(x)')
subplot(1,3,3)
hold on
plot(xx,F(21,:), 'b--', "LineWidth",1)
plot(xx,f(xx))
hold off
legend('f_{20}(x)', 'f(x)')