Series de Fourier (Grupo ILIA)
| Trabajo realizado por estudiantes | |
|---|---|
| Título | Series de Fourier (Grupo ILIA) |
| Asignatura | EDP |
| Curso | 2024-25 |
| Autores | Ignacio Campos Paños, Ignacio Martínez Cerezo, Luis Ramos Ortiz, Alicia Ruiz Dominguez |
| Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura | |
1 Introducción
En una amplia gama de problemas de ingeniería y matemáticas aparecen funciones periódicas que se necesitan aproximar mediante sumas de funciones trigonométricas, lo que conduce a las series de Fourier.
Estas series constituyen una herramienta fundamental en la resolución de ecuaciones en derivadas parciales y otros muchos ámbitos de la ciencia. La idea principal es que una función [math]f(x)[/math], definida en un espacio de Hilbert [math]L^2(-\pi,\pi)[/math], puede expresarse como una combinación infinita de funciones trigonométricas de la forma:
Los coeficientes [math]d_0[/math], [math]d_n[/math] y [math]c_n[/math] son los coeficientes de Fourier y se definen de la siguiente manera:
[math] \quad d_0 = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}} dx [/math]
[math] \quad d_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}cos(nx) dx [/math]
[math] \quad c_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}sen(nx) dx [/math]
Este método permite descomponer funciones periódicas en sus componentes fundamentales, lo que es de gran utilidad en física, ingeniería y matemáticas aplicadas. A continuación, se presentan las primeras funciones base utilizadas en la expansión en series de Fourier.
2 Base trigonométrica
Para comprender mejor la construcción de las series de Fourier y poder visualizar las funciones base mencionadas, representamos gráficamente los primeros términos de la base trigonométrica [math] \mathcal{B} := \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} [/math] en el intervalo [math] [ -1, 1 ] [/math] mediante un código en Python. Esto nos permitirá observar cómo estas funciones elementales forman una base ortonormal en el espacio [math] L^2( [-1,1]) [/math] y cómo, mediante combinaciones lineales de estas, podemos aproximar funciones arbitrarias.
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import pyplot as plt, colors as mcolors
def base_fourier_cos(n: int) -> list[callable]:
"""Genera los n primeros términos de cosenos de la base trigonométrica de fourier
Args:
n (int): Número de términos
Returns:
list[callable]: lista con funciones lambda, ordenada según su posición en la base.
"""
basis_functions = []
for k in range(1, n + 1):
basis_functions.append(lambda x, k=k: np.cos(np.pi * k * x))
return basis_functions
def base_fourier_sen(n: int) -> list[callable]:
"""Genera los n primeros términos de senos de la base trigonométrica de fourier
Args:
n (int): Número de términos
Returns:
list[callable]: lista con funciones lambda, ordenada según su posición en la base.
"""
basis_functions = []
for k in range(1, n + 1):
basis_functions.append(lambda x, k=k: np.sin(np.pi * k * x))
return basis_functions
# Parámetros
X = np.linspace(-1, 1, 400)
# número de elementos de la base (1, cos(n pi x), sen(n pi x))
n = 10
c1 = "blue"
c2 = "red"
def colorgradient(
c1: "str | tuple[int, int, int]", c2: "str | tuple[int, int, int]", n=256
) -> list[int]:
"""
Given two hex colors, returns a color gradient
with n colors.
"""
import numpy as np
colors = colors = [
"#0000FF",
"#0033CC",
"#0066CC",
"#0099FF",
"#33CCFF",
"#66CCCC",
"#CC9966",
"#FF6633",
"#FF3300",
"#FF0000",
]
# Obtener funciones base
base = [lambda x: 1] + base_fourier_cos(n) + base_fourier_sen(n)
# Graficar
plt.subplots(1, figsize = (15, 15), dpi = 300)
# Término constante
plt.subplot(3,1,1)
plt.plot([-1,1], [1/2, 1/2], color = colors[-1], label = "Término constante")
plt.title("Término constante")
# Términos en coseno
plt.subplot(3, 1,2)
for i in range(1, n + 1):
plt.plot(X, base[i](X), color=colors[i - 1], label = f"cos({i}πx)")
plt.title("Términos en coseno")
plt.legend()
# Términos en seno
plt.subplot(3, 1, 3)
for i in range(n + 1, len(base)):
plt.plot(X, base[i](X), color=colors[i - n - 1], label = "sen({i-n}πx)")
plt.title("Términos en seno")
plt.legend()
plt.show()La relevancia de estas bases radica en su aplicación en la aproximación de funciones mediante series trigonométricas. Por ejemplo, sobre la base proporcionada, la aproximación de Fourier responderá a
- [math]f(t) \approx \sum_{n=1}^{\infty}c_n e_n \quad \text{con} \quad c_n=\langle f, e_n \rangle[/math]
Como observamos, a medida que aumenta el valor del parámetro [math] n [/math], el periodo de oscilación de las funciones es menor, concretamente [math] \frac{2}{n} [/math].