Series de Fourier (Grupo ACIRV)
| Trabajo realizado por estudiantes | |
|---|---|
| Título | Series de Fourier (Grupo ACIRV). |
| Asignatura | EDP |
| Curso | 2024-25 |
| Autores | Ángela Sotelo Fernández, Carmen Doñoro Molina, Inés Torres Gómez, Rubén Gutiérrez Hernández, Violeta Luján Barrios. |
| Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura | |
Contenido
1 Introducción
2 Base trigonométrica compleja
La base trigonométrica es una base del espacio [math]L^2([-\pi,\pi])[/math], por lo que las funciones pertenecientes a este espacio pueden escribirse como una combinación lineal de los elementos de la base. A estas expresiones se les llama series de Fourier.
Dado que es una base ortonormal, sus coeficientes pueden calcularse mediante integración, obteniendo las siguientes fórmulas:
[math]d_0 = \int_{-\pi}^{\pi} f(x) \frac{1}{2} \, dx[/math]
[math]d_n = \int_{-\pi}^{\pi} f(x) \cos(n\pi x) \, dx[/math]
[math]c_n = \int_{-\pi}^{\pi} f(x) \sin(n\pi x) \, dx[/math]
Utilizando el siguiente código en MATLAB, se pueden representar los 10 primeros elementos de la base en una gráfica:
% Definimos la malla para pintar funciones del [-1,1]
x = linspace(-1, 1, 1000);
n_max = 5; % Número de funciones a pintar para seno y coseno
% Pintamos la gráfica de f = 1/2
figure;
plot(x, 1/2 * ones(size(x)), 'k', 'LineWidth', 1, 'DisplayName', '1/2');
hold on;
% Pintamos cos(n*pi*x) y sin(n*pi*x) para n = 1 hasta n_max
for n = 1:n_max
% Definimos las funciones
f_cos = cos(n * pi * x);
f_sin = sin(n * pi * x);
plot(x, f_cos, 'LineWidth', 1, 'DisplayName', sprintf('cos(%d\\pi x)', n));
plot(x, f_sin,'--', 'LineWidth', 1, 'DisplayName', sprintf('sin(%d\\pi x)', n));
end
% Ponemos leyenda en la gráfica
title(sprintf('Base \\{1/2, cos(n\\pi x), sin(n\\pi x)\\} para n = 1 ... %d', n_max));
xlabel('x');
ylabel('Valor de la función');
legend('show', 'Location', 'BestOutside');
grid on;
axis([-1 1 -1.5 1.5]);
hold off;
3 Aproximación de una función continua
Vamos a aproximar la función \( f(x) = 1 - 2 \left| \frac{1}{2} - x \right| \).
En primer lugar, extendemos de forma impar la función al intervalo simétrico \([-1,1]\). Obtenemos entonces \( f_{\text{ext}}(x) = \operatorname{sign}(x) \cdot \left(1 - 2 \left| \frac{1}{2} - |x| \right| \right). \) Es decir,
f_{\text{ext}}(x) = \begin{cases} -(1 - 2 | \frac{1}{2} - |x| |), & \text{si } x \in [-1,0) \\ 1 - 2 \left| \frac{1}{2} - x \right|, & \text{si } x \in [0,1]. \end{cases}
\)Ahora debemos comprobar que la función es continua.
En el dominio \( [-1,0) \cup (0,1] \), es continua por estar definida como una función continua. Falta por ver que es continua en \( x = 0 \):
\( f_{\text{ext}}(0) = 0. \)
Ahora calculamos los límites laterales:
\( \lim_{x \to 0^-} f_{\text{ext}}(x) = -1 + 1 = 0, \)
\( \lim_{x \to 0^+} f_{\text{ext}}(x) = 1 - 1 = 0. \)
Dado que los límites laterales coinciden con \( f_{\text{ext}}(0) \), concluimos que la función es continua en todos los puntos.
Ahora para la representación, con las fórmulas que hemos calculado arriba, calculamos los coeficientes de Fourier:
\( d_0 = \int_{-1}^{1} f_{\text{ext}}(x) \frac{1}{2} \, dx \)
\( d_n = \int_{-1}^{1} f_{\text{ext}}(x) \cos(n\pi x) \, dx \)
\( c_n = \int_{-1}^{1} f_{\text{ext}}(x) \sin(n\pi x) \, dx \)
Como los coeficientes \( d_0 \) y \( d_n \) son integrales de una función impar sobre un intervalo simétrico, sabemos que se anulan.
Por tanto, la función nos va a quedar como una combinación lineal de los coeficientes \( c_n \), es decir:
\( f_{\text{ext}}(x) \approx \sum_{n=1}^{\infty} c_n \sin(n\pi x). \)
Definimos \( f_n(x) \) como la suma de los primeros \( n \) términos de la serie de Fourier:
\( f_{\text{ext}}(x) = \sum_{n=1}^{n} b_n \sin(n\pi x), \hspace{2mm} \text{con} \hspace{2mm} b_k = 2\int_{0}^{1} f(x)\sin{(k\pi x)} \,dx . \)
A continuación, representamos gráficamente \( f(x) \) y \( f_n(x) \) para \( n=1,5,10 \). Nótese que aumentar el número de términos de la serie de Fourier permite aproximar mejor la función original.
Los coeficientes de Fourier se obtienen numéricamente resolviendo las integrales usando la fórmula del trapecio con una división bastante fina \( (10^{-3}) \) con la función \( trapz \) que proporciona MatLab.
Para hacer un estudio completo de las aproximaciones, vamos a representar el error de \( f_n(x) \) respecto a \( f(x) \) en función de \( n \). Para calcular este error, vamos a emplear tanto la norma \( L^2 \) como la del supremo o uniforme.