Diferencia entre revisiones de «Series de Fourier NAA»
De MateWiki
| (No se muestran 17 ediciones intermedias de 2 usuarios) | |||
| Línea 5: | Línea 5: | ||
Ainhoa Martín García}} | 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> | <source lang="matlab" line> | ||
| Línea 12: | Línea 16: | ||
% Dominio | % Dominio | ||
| − | x = linspace(-pi, pi, | + | x = linspace(-pi, pi, 1000); |
% Onda cuadrada original | % Onda cuadrada original | ||
f = sign(sin(x)); | f = sign(sin(x)); | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
figure | figure | ||
| − | |||
plot(x, f, 'k') | plot(x, f, 'k') | ||
hold on | 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) |
| − | for n = 1:2:(2* | + | % 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 | end | ||
| − | + | fourier = (4/pi) * fourier; | |
| − | + | % Graficar fourier con N distinto | |
| − | + | plot(x, fourier, colores{i}) | |
| − | + | ||
| − | plot(x, | + | |
grid on | grid on | ||
| − | + | ||
| − | + | ||
| − | + | ||
end | end | ||
| − | legend('f(x)', ' | + | legend('f(x)', 'N=1', 'N=5', 'N=10', 'N=20', 'N=50', 'N=100') |
| + | |||
</source> | </source> | ||
| − | + | Código para representar el error con Fourier. | |
<source lang="matlab" line> | <source lang="matlab" line> | ||
| Línea 64: | Línea 61: | ||
% Número de términos de Fourier | % Número de términos de Fourier | ||
| − | + | N = [1 5 10 20 50 100]; | |
| − | error_norma2 = zeros(size( | + | error_norma2 = zeros(size(N)); % Guardar errores |
| − | for i = 1:length( | + | for i = 1:length(N) |
% Inicializar aproximación | % Inicializar aproximación | ||
fourier = zeros(size(x)); | fourier = zeros(size(x)); | ||
% Construcción de la serie (solo impares) | % Construcción de la serie (solo impares) | ||
| − | for n = 1:2:(2* | + | for n = 1:2:(2*N(i)-1) |
fourier = fourier + (1/n) * sin(n*x); | fourier = fourier + (1/n) * sin(n*x); | ||
end | end | ||
| Línea 91: | Línea 88: | ||
grid on | grid on | ||
title('Error en norma L^2 de la aproximación de Fourier') | title('Error en norma L^2 de la aproximación de Fourier') | ||
| − | xlabel('Número de términos ( | + | xlabel('Número de términos (N)') |
| − | ylabel('||f - | + | ylabel('||f - S_N||_2') |
| − | xlim([0, max( | + | 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; | clear; clc; close all; | ||
% Dominio | % Dominio | ||
| − | x = linspace(-pi, pi, 10000); | + | x = linspace(-pi, pi, 10000); % Más puntos para mejor precisión |
| + | |||
% Onda cuadrada original | % Onda cuadrada original | ||
f = sign(sin(x)); | f = sign(sin(x)); | ||
| − | % Valores de | + | % Valores de N |
| − | + | N = [1 5 10 20 50 100]; | |
| − | error_norma2 = zeros(size( | + | error_norma2 = zeros(size(N)); % Guardar errores |
| − | for i = 1:length( | + | for i = 1:length(N) |
% Inicializar suma de Cesàro | % Inicializar suma de Cesàro | ||
| Línea 114: | Línea 152: | ||
% Construcción (solo impares) | % Construcción (solo impares) | ||
| − | for n = 1:2:(2* | + | for n = 1:2:(2*N(i)-1) |
| − | weight = 1 - (n/(2* | + | weight = 1 - (n/(2*N(i))); |
cesaro = cesaro + weight*(1/n)*sin(n*x); | cesaro = cesaro + weight*(1/n)*sin(n*x); | ||
end | end | ||
| Línea 134: | Línea 172: | ||
grid on | grid on | ||
title('Error en norma L^2 - Suma de Cesàro') | title('Error en norma L^2 - Suma de Cesàro') | ||
| − | xlabel('Número de términos ( | + | xlabel('Número de términos (N)') |
| − | ylabel('||f - \ | + | ylabel('||f - \sigma_N||_2') |
| − | xlim([0, max( | + | xlim([0, max(N)+5]) |
| − | + | ||
</source> | </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:EDP]] | ||
[[Categoría:EDP25/26]] | [[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 | |
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
- Matewiki
- R.J. Hernández Heredero, UPM
- P. Diago Nañez, UCM
- Jonathan E. Chirinos Rodríguez, TFG
- Partial Differential Equations in Action, From Modelling to Theory, Fourth Edition.