Series de Fourier (Grupo ILIA)

De MateWiki
Revisión del 09:32 13 feb 2025 de Nacho (Discusión | contribuciones) (Actualizado el código.)

Saltar a: navegación, buscar
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:

[math] f(x) \approx \frac{d_0}{2\pi} + \sum_{n=1}^{\infty} d_n \frac{1}{\sqrt{\pi}} \cos(nx) + \sum_{n=1}^{\infty}c_n \frac{1}{\sqrt{\pi}} \sin(nx) [/math]


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.


Primeros términos de la Base Trigonométrica
import numpy as np
import matplotlib.pyplot as plt


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, 1000)
# número de elementos de la base (1, cos(n pi x), sen(n pi x))
n = 10


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(3, 1, figsize=(15, 15), dpi=300)


plt.subplot(3, 1, 1)
plt.grid()
plt.title("Término constante")
plt.plot([-1, 1], [1 / 2, 1 / 2], color=colors[-1], label="Término constante")

plt.subplot(3, 1, 2)
plt.grid()
plt.title("Términos en coseno")

for i in range(1, n + 1):
    plt.plot(X, base[i](X), color=colors[i - 1], label=f"cos({str(i)*(i>1)}πx)")
plt.legend(loc="right")


plt.subplot(3, 1, 3)
plt.grid()
plt.title("Términos en seno")

for i in range(n + 1, len(base)):
    plt.plot(X, base[i](X), color=colors[i - n - 1], label=f"sen({str(i-n) * ((i-n) > 1)}πx)")
plt.legend()


Al graficar estos términos, podemos apreciar cómo la combinación de estos elementos nos permite aproximar funciones periódicas arbitrarias, tal y como buscábamos. La relevancia de esta base radica en su aplicación en la aproximación de funciones mediante series trigonométricas. En particular, la expansión de Fourier de una función \( f(x) \) en esta base se expresa como:

[math] f(x) \approx \sum_{n=1}^{\infty} c_n e_n \quad \text{con} \quad c_n = \langle f, e_n \rangle [/math]


Donde \( e_n \) es cada uno de los términos de la base [math] \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} [/math], y [math] c_n [/math] son los coeficientes que se calculan mediante el producto interno de [math] f(x) [/math] con los elementos de la base.


Como se puede observar, a medida que el parámetro [math] n [/math] aumenta, los términos oscilan con un periodo cada vez menor, concretamente [math] T = \frac{2}{n} [/math], lo que refleja una mayor "frecuencia" en las oscilaciones. Esta característica es esencial en la aproximación de funciones suaves por medio de las series de Fourier, donde las funciones periódicas se aproximan cada vez con mayor precisión mediante una combinación lineal de estos términos básicos.