Diferencia entre revisiones de «Series de Fourier (Grupo CCE)»

De MateWiki
Saltar a: navegación, buscar
(Estudio de la Convergencia según la regularidad)
(Estudio de Convergencia según el número de términos)
Línea 55: Línea 55:
  
 
=== Estudio de Convergencia según el número de términos===
 
=== Estudio de Convergencia según el número de términos===
Calculamos los coeficientes <math>a_k</math> mediante la '''fórmula del trapecio''' con una división de <math>10^{-3}</math>. Evaluamos el error en las normas <math>L^2</math> y uniforme (<math>L^\infty</math>) para observar la calidad de la aproximación en función del número de términos de la serie. Luego hemos dibujado en una gráfica el error en ambas normas en función de n, donde podemos ver que las gráficas obtenidas son del tipo exponencial negativa.  
+
Calculamos los coeficientes <math>a_k</math> mediante la '''fórmula del trapecio''' con una división de <math>10^{-3}</math>. Evaluamos el error en las normas <math>L^2</math> y uniforme (<math>L^\infty</math>) .
 +
 
 
{| class="wikitable" style="width: 100%; border: none; background: transparent;"
 
{| class="wikitable" style="width: 100%; border: none; background: transparent;"
 
|-
 
|-

Revisión del 08:10 19 feb 2026

Trabajo realizado por estudiantes
Título Series de Fourier. Grupo CCE
Asignatura EDP
Curso 2025-26
Autores Coloma de Lara

Carlos de Miguel

Elena Rodríguez

Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura


1 Visualizar la base trigométrica

Vamos a dibujar en una gráfica, con Matlab, los 7 primeros términos de la serie trigonométrica en [math] x\in [-1,1] [/math], para que sea más fácil visualizarla.

Implementación en MATLAB Resultado Gráfico
% definimos intervalo [-T, T]
T = 1;                  
x = linspace(-T, T, 1000); 
n_max = 7;    %numero de terminos          

% normalizamos
phi_0_factor = 1/sqrt(2*T);
phi_n_factor = 1/sqrt(T);

figure('Color', 'w');

%  d0 y dn (Cosenos - Pares)
subplot(2,1,1); hold on;
plot(x, ones(size(x)) * phi_0_factor, 'k', 'LineWidth', 2.5, 'DisplayName', 'd_0');
colors_d = lines(n_max);
for n = 1:n_max
    y_cos = phi_n_factor * cos(n * pi * x / T);
    plot(x, y_cos, 'Color', [colors_d(n,:), 0.5]);
end
title('Funciones de la base para d_0 y d_n (Pares)');
grid on; ylabel('Amplitud');

%  cn (Senos - Impares)
subplot(2,1,2); hold on;
colors_c = jet(n_max);
for n = 1:n_max
    y_sin = phi_n_factor * sin(n * pi * x / T);
    plot(x, y_sin, 'Color', [colors_c(n,:), 0.5]);
end
title('Funciones de la base para c_n (Impares)');
grid on; xlabel('x'); ylabel('Amplitud');
Visualización de la base ortonormal en [-1, 1].

2 Aproximación de una función continua

En este apartado, aproximamos la función continua [math]f(x) = 1 - 2|1/2 - x|[/math] en el intervalo [math][0, 1][/math].

2.1 Estudio de Convergencia según el número de términos

Calculamos los coeficientes [math]a_k[/math] mediante la fórmula del trapecio con una división de [math]10^{-3}[/math]. Evaluamos el error en las normas [math]L^2[/math] y uniforme ([math]L^\infty[/math]) .

Implementación en MATLAB
% Parámetros iniciales
dx = 1e-3; % división sugerida
x = 0:dx:1;
f = 1 - 2*abs(0.5 - x);
% Configuración de términos para visualización 
valores_n = [1, 5, 10]; 
figure(1);
plot(x, f, 'k--', 'LineWidth', 2); hold on;
% Bucle para calcular aproximaciones y errores 
N_max = 50; 
err_L2 = zeros(1, N_max);
err_inf = zeros(1, N_max);

for n = 1:N_max
    fn = zeros(size(x));
    for k = 1:n
        % Cálculo de ak mediante trapecio
        integrando = 2 * f .* sin(k * pi * x);
        ak = trapz(x, integrando);
        
        % suma de los términos impares
        fn = fn + ak * sin(k * pi * x);
    end
    % guardar errores en normas L2 y uniforme 
    err_L2(n) = sqrt(trapz(x, (f - fn).^2));
    err_inf(n) = max(abs(f - fn));
    
    if ismember(n, valores_n)
        plot(x, fn, 'DisplayName', ['n = ' num2str(n)]);
    end
end

title('Aproximación de f(x) por Serie de Fourier (Senos)');
xlabel('x'); ylabel('f(x)');
legend('Original', 'n=1', 'n=5', 'n=10');
grid on;

% gráfica de Errores 
figure(2);
subplot(2,1,1);
plot(1:N_max, err_L2, 'bo-', 'LineWidth', 1.5);
title('Evolución del Error en Norma L^2');
xlabel('n (términos)'); ylabel('Error'); grid on;

subplot(2,1,2);
plot(1:N_max, err_inf, 'ro-', 'LineWidth', 1.5);
title('Evolución del Error en Norma Uniforme');
xlabel('n (términos)'); ylabel('Error'); grid on;
Resultado de la Aproximación Estudio de Convergencia
Visualización de aproximación de f(x) en [0,1].
Errores graficados en norma L2 y uniforme.

2.2 Estudio de la Convergencia según la regularidad

Implementación en MATLAB: Comparativa de Regularidad
% Parámetros iniciales
dx = 1e-3;
x = 0:dx:1;
N = 20; % Número de armónicos para la comparativa

% Definición de las tres funciones
f1 = double(x < 0.5);          % 1. Función Salto (C^-1)
f2 = 1 - 2*abs(0.5 - x);       % 2. Función Triangular (C^0)
f3 = x.^2 - x;                 % 3. Parábola (C^inf)

funciones = {f1, f2, f3};
titulos = {'Aproximación Función Salto', 'Aproximación Función f(x)', 'Aproximación Parábola'};

for i = 1:3
    f_actual = funciones{i};
    figure(i);
    plot(x, f_actual, 'k--', 'LineWidth', 2); hold on;
    
    % Reconstrucción mediante Serie de Fourier (Base completa)
    L = 1;
    a0 = (2/L) * trapz(x, f_actual);
    fn = (a0/2) * ones(size(x));
    
    for k = 1:N
        ak = (2/L) * trapz(x, f_actual .* cos(2*pi*k*x/L));
        bk = (2/L) * trapz(x, f_actual .* sin(2*pi*k*x/L));
        fn = fn + ak*cos(2*pi*k*x/L) + bk*sin(2*pi*k*x/L);
    end
    
    plot(x, fn, 'r', 'LineWidth', 1.5);
    title(titulos{i});
    xlabel('x'); ylabel('f(x)');
    legend('Original', ['Serie Fourier (N=' num2str(N) ')']);
    grid on;
end
1. Función f(x) (Continua) 2. Parábola (Suave) 3. Función Salto (Discontinua)
Convergencia moderada sobre todo en el pico.
Convergencia rápida.
Salto grupoCCE.png


Implementación en MATLAB Resultado Gráfico
dx = 1e-3;
x = 0:dx:1;
N_max = 50;
f1 = double(x < 0.5);         
f2 = 1 - 2*abs(0.5 - x);      
f3 = x.^2 - x;                
funciones = {f1, f2, f3};
colores = {'b', 'r', 'g'};
nombres = {'Salto', 'Triangular f(x)', 'Parábola'};

figure(1); 
hold on;

for i = 1:3
    f_target = funciones{i};
    err_L2 = zeros(1, N_max);
    for n = 1:N_max
        a0 = 2 * trapz(x, f_target);
        fn = (a0/2) * ones(size(x));
        for k = 1:n
            ak = 2 * trapz(x, f_target .* cos(2*pi*k*x));
            bk = 2 * trapz(x, f_target .* sin(2*pi*k*x));
            fn = fn + ak*cos(2*pi*k*x) + bk*sin(2*pi*k*x);
        end
        % cálculo del error 
        err_L2(n) = sqrt(trapz(x, (f_target - fn).^2));
    end
    
    plot(1:N_max, err_L2, 'Color', colores{i}, 'LineWidth', 2, 'DisplayName', nombres{i});
end

set(gca, 'YScale', 'log'); % escala logarítmica para ver mejor las diferencias
title('Evolución del Error Residual (Norma L^2)');
xlabel('Número de terminos (N)'); ylabel('Error (log)');
legend('show'); grid on;
Error de cada función.


Coeficientes de Fourier bn
n Función Salto Función Triangular Parábola x^2-x
1 1.2732 0.8106 -0.2580
3 0.4244 -0.0901 -0.0096
5 0.2546 0.0324 -0.0021
7 0.1819 -0.0165 -0.0008
9 0.1415 0.0100 -0.0004
11 0.1157 -0.0067 -0.0002
13 0.0979 0.0048 -0.0001
15 0.0849 -0.0036 -0.0001
Decaimiento 1/n 1/n² 1/n³