Diferencia entre revisiones de «Series de Fourier NAA»

De MateWiki
Saltar a: navegación, buscar

Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/mat/public_html/w/includes/diff/DairikiDiff.php on line 434
 
(No se muestran 26 ediciones intermedias de 2 usuarios)
Línea 1: Línea 1:
{{ TrabajoED | Series de Fourier. Grupo AAN| [[:Categoría:EDP|EDP]]|[[:Categoría:EDP25/26|2025-26]] | Ainhoa Martín García
+
{{ TrabajoED | Series de Fourier. Grupo NAA| [[:Categoría:EDP|EDP]]|[[:Categoría:EDP25/26|2025-26]] | Natalia Gutiérrez de Uriarte
  
 
Alba Peralta Zamora
 
Alba Peralta Zamora
  
Natalia Gutiérrez de Uriarte }}
+
Ainhoa Martín García}}
 +
 
 +
[[Archivo:series fourier naa.jpg|800px|right|]]
 +
 
 +
A continuación, se van a mostrar los códigos que se han utilizado para representar cada una de las gráficas del trabajo. Todos ellos han sido escritos en Matlab.
 +
 
 +
Código para representar la aproximación por serie de Fourier.
 +
 
 +
<source lang="matlab" line>
 +
 
 +
clear; clc; close all;
 +
 
 +
% Dominio
 +
x = linspace(-pi, pi, 1000);
 +
 
 +
% Onda cuadrada original
 +
f = sign(sin(x));
 +
figure
 +
plot(x, f, 'k')
 +
hold on
 +
% Número de términos de Fourier
 +
N = [1 5 10 20 50 100];
 +
colores = {'r', 'b', 'g', 'y', 'm', 'c'};
 +
 
 +
 
 +
for i=1:length(N)
 +
    % Inicializar aproximación
 +
    fourier = zeros(size(x));
 +
    % Construcción de la serie
 +
    for n = 1:2:(2*N(i)-1)
 +
        fourier = fourier + (1/n)*sin(n*x);
 +
    end
 +
 
 +
    fourier = (4/pi) * fourier;
 +
   
 +
  % Graficar fourier con N distinto
 +
    plot(x, fourier, colores{i})
 +
    grid on
 +
   
 +
end
 +
legend('f(x)', 'N=1', 'N=5', 'N=10', 'N=20', 'N=50', 'N=100')
 +
 
 +
</source>
 +
 
 +
Código para representar el error con Fourier.
 +
 
 +
<source lang="matlab" line>
 +
%error en L2
 +
 
 +
clear; clc; close all;
 +
 
 +
% Dominio
 +
x = linspace(-pi, pi, 10000);  % Más puntos para mejor precisión
 +
 
 +
% Onda cuadrada original
 +
f = sign(sin(x));
 +
 
 +
% Número de términos de Fourier
 +
N = [1 5 10 20 50 100];
 +
error_norma2 = zeros(size(N));  % Guardar errores
 +
 
 +
for i = 1:length(N)
 +
    % Inicializar aproximación
 +
    fourier = zeros(size(x));
 +
   
 +
    % Construcción de la serie (solo impares)
 +
    for n = 1:2:(2*N(i)-1)
 +
        fourier = fourier + (1/n) * sin(n*x);
 +
    end
 +
 
 +
    fourier = (4/pi) * fourier;
 +
   
 +
    % Calcular error norma L²
 +
    diferencia = f - fourier;
 +
    norma2 = sqrt((1/(2*pi)) * trapz(x, diferencia.^2));
 +
   
 +
    % Guardar el error
 +
    error_norma2(i) = norma2;
 +
end
 +
 
 +
% Gráfica del error en norma L²
 +
figure
 +
plot(k, error_norma2, 'bo-', 'LineWidth', 2, 'MarkerSize', 8)
 +
grid on
 +
title('Error en norma L^2 de la aproximación de Fourier')
 +
xlabel('Número de términos (N)')
 +
ylabel('||f - S_N||_2')
 +
xlim([0, max(N)+5])
 +
</source>
 +
 
 +
Código para representar las aproximaciones con Cesàro.
 +
<source lang="matlab" line>
 +
clear; clc; close all;
 +
 
 +
% Dominio
 +
x = linspace(-pi, pi, 2000);
 +
 
 +
% Onda cuadrada original
 +
f = sign(sin(x));
 +
 
 +
% Número de términos
 +
N= [1 5 10 20 50 100];  % prueba 20, 50, 100...
 +
colores = {'r', 'b', 'g', 'y', 'm', 'c'};
 +
 
 +
figure
 +
plot(x, f, 'k')
 +
hold on
 +
 
 +
for i=1:length(N)
 +
    % Inicializar suma de Cesàro
 +
    cesaro = zeros(size(x));
 +
 
 +
    % Construcción (solo impares)
 +
    for n = 1:2:(2*N(i)-1)
 +
        weight = 1 - (n/(2*N(i)));  % factor de Cesàro
 +
        cesaro = cesaro + weight*(1/n)*sin(n*x);
 +
    end
 +
 
 +
    cesaro = (4/pi)*cesaro;
 +
   
 +
 
 +
    plot(x, cesaro, colores{i})
 +
    grid on
 +
   
 +
end
 +
legend('f(x)', 'N=1', 'N=5', 'N=10', 'N=20', 'N=50', 'N=100')
 +
</source>
 +
 
 +
Código para el error con Cesàro.
 +
 
 +
<source lang="matlab" line>
 +
clear; clc; close all;
 +
 
 +
% Dominio
 +
x = linspace(-pi, pi, 10000);  % Más puntos para mejor precisión
 +
 
 +
% Onda cuadrada original
 +
f = sign(sin(x));
 +
 
 +
% Valores de N
 +
N = [1 5 10 20 50 100];
 +
error_norma2 = zeros(size(N));  % Guardar errores
 +
 
 +
for i = 1:length(N)
 +
 
 +
    % Inicializar suma de Cesàro
 +
    cesaro = zeros(size(x));
 +
 
 +
    % Construcción (solo impares)
 +
    for n = 1:2:(2*N(i)-1)
 +
        weight = 1 - (n/(2*N(i)));
 +
        cesaro = cesaro + weight*(1/n)*sin(n*x);
 +
    end
 +
 
 +
    cesaro = (4/pi)*cesaro;
 +
 
 +
    % Calcular error norma L²
 +
    diferencia = f - cesaro;
 +
    norma2 = sqrt((1/(2*pi)) * trapz(x, diferencia.^2));
 +
   
 +
    % Guardar el error
 +
    error_norma2(i) = norma2;
 +
end
 +
 
 +
% Gráfica del error en norma L²
 +
figure
 +
plot(k, error_norma2, 'bo-', 'LineWidth', 2, 'MarkerSize', 8)
 +
grid on
 +
title('Error en norma L^2 - Suma de Cesàro')
 +
xlabel('Número de términos (N)')
 +
ylabel('||f - \sigma_N||_2')
 +
xlim([0, max(N)+5])
 +
</source>
 +
 
 +
'''REFERENCIAS'''
 +
 
 +
*[https://mat.caminos.upm.es/wiki/Categor%C3%ADa:EDP24/25 Matewiki]
 +
*[https://www.etsist.upm.es/uploaded/docs_personales/hernandez_heredero_rafael_jose/old/CalI/CIT6.pdf R.J. Hernández Heredero, UPM]
 +
*[https://docta.ucm.es/rest/api/core/bitstreams/f0559a49-2b27-4e4d-a5d0-12633ce93153/content P. Diago Nañez, UCM]
 +
*[https://riull.ull.es/xmlui/bitstream/handle/915/15738/Series%20de%20Fourier.pdf?sequence=1 Jonathan E. Chirinos Rodríguez, TFG]
 +
*''Partial Differential Equations in Action, From Modelling to Theory, Fourth Edition.''
 +
 
 +
 
 +
[[Categoría:EDP]]
 +
[[Categoría:EDP25/26]]

Revisión actual del 23:14 18 feb 2026

Trabajo realizado por estudiantes
Título Series de Fourier. Grupo NAA
Asignatura EDP
Curso 2025-26
Autores Natalia Gutiérrez de Uriarte

Alba Peralta Zamora

Ainhoa Martín García

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


Series fourier naa.jpg

A continuación, se van a mostrar los códigos que se han utilizado para representar cada una de las gráficas del trabajo. Todos ellos han sido escritos en Matlab.

Código para representar la aproximación por serie de Fourier.

clear; clc; close all;

% Dominio
x = linspace(-pi, pi, 1000);

% Onda cuadrada original
f = sign(sin(x));
figure
plot(x, f, 'k')
hold on
% Número de términos de Fourier
N = [1 5 10 20 50 100];
colores = {'r', 'b', 'g', 'y', 'm', 'c'};


for i=1:length(N)
    % Inicializar aproximación
    fourier = zeros(size(x));
    % Construcción de la serie
    for n = 1:2:(2*N(i)-1)
        fourier = fourier + (1/n)*sin(n*x);
    end

    fourier = (4/pi) * fourier;
    
   % Graficar fourier con N distinto
    plot(x, fourier, colores{i})
    grid on
    
end
legend('f(x)', 'N=1', 'N=5', 'N=10', 'N=20', 'N=50', 'N=100')

Código para representar el error con Fourier.

%error en L2

clear; clc; close all;

% Dominio
x = linspace(-pi, pi, 10000);  % Más puntos para mejor precisión

% Onda cuadrada original
f = sign(sin(x));

% Número de términos de Fourier
N = [1 5 10 20 50 100];
error_norma2 = zeros(size(N));  % Guardar errores

for i = 1:length(N)
    % Inicializar aproximación
    fourier = zeros(size(x));
    
    % Construcción de la serie (solo impares)
    for n = 1:2:(2*N(i)-1)
        fourier = fourier + (1/n) * sin(n*x);
    end

    fourier = (4/pi) * fourier;
    
    % Calcular error norma L²
    diferencia = f - fourier;
    norma2 = sqrt((1/(2*pi)) * trapz(x, diferencia.^2));
    
    % Guardar el error
    error_norma2(i) = norma2;
end

% Gráfica del error en norma L²
figure
plot(k, error_norma2, 'bo-', 'LineWidth', 2, 'MarkerSize', 8)
grid on
title('Error en norma L^2 de la aproximación de Fourier')
xlabel('Número de términos (N)')
ylabel('||f - S_N||_2')
xlim([0, max(N)+5])

Código para representar las aproximaciones con Cesàro.

clear; clc; close all;

% Dominio
x = linspace(-pi, pi, 2000);

% Onda cuadrada original
f = sign(sin(x));

% Número de términos
 N= [1 5 10 20 50 100];   % prueba 20, 50, 100...
colores = {'r', 'b', 'g', 'y', 'm', 'c'};

figure
plot(x, f, 'k')
hold on

for i=1:length(N)
    % Inicializar suma de Cesàro
    cesaro = zeros(size(x));

    % Construcción (solo impares)
    for n = 1:2:(2*N(i)-1)
        weight = 1 - (n/(2*N(i)));   % factor de Cesàro
        cesaro = cesaro + weight*(1/n)*sin(n*x);
    end

    cesaro = (4/pi)*cesaro;
    
   
    plot(x, cesaro, colores{i})
    grid on
    
end
legend('f(x)', 'N=1', 'N=5', 'N=10', 'N=20', 'N=50', 'N=100')

Código para el error con Cesàro.

clear; clc; close all;

% Dominio
x = linspace(-pi, pi, 10000);  % Más puntos para mejor precisión

% Onda cuadrada original
f = sign(sin(x));

% Valores de N
N = [1 5 10 20 50 100];
error_norma2 = zeros(size(N));  % Guardar errores

for i = 1:length(N)

    % Inicializar suma de Cesàro
    cesaro = zeros(size(x));

    % Construcción (solo impares)
    for n = 1:2:(2*N(i)-1)
        weight = 1 - (n/(2*N(i)));
        cesaro = cesaro + weight*(1/n)*sin(n*x);
    end

    cesaro = (4/pi)*cesaro;

    % Calcular error norma L²
    diferencia = f - cesaro;
    norma2 = sqrt((1/(2*pi)) * trapz(x, diferencia.^2));
    
    % Guardar el error
    error_norma2(i) = norma2;
end

% Gráfica del error en norma L²
figure
plot(k, error_norma2, 'bo-', 'LineWidth', 2, 'MarkerSize', 8)
grid on
title('Error en norma L^2 - Suma de Cesàro')
xlabel('Número de términos (N)')
ylabel('||f - \sigma_N||_2')
xlim([0, max(N)+5])

REFERENCIAS