Diferencia entre revisiones de «Series de Fourier NAA»
De MateWiki
m (Ainhoa trasladó la página Series de Fourier AAN a Series de Fourier NAA) |
|||
| Línea 40: | Línea 40: | ||
legend('f(x)', 'k=1', 'k=5', 'k=10', 'k=20', 'k=50', 'k=100') | legend('f(x)', 'k=1', 'k=5', 'k=10', 'k=20', 'k=50', 'k=100') | ||
| + | <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 | ||
| + | k= [1 5 10 20 50 100]; % prueba 20, 50, 100... | ||
| + | colores = {'r', 'b', 'g', 'y', 'm', 'c'}; | ||
| + | |||
| + | figure | ||
| + | subplot(2,1,1) | ||
| + | plot(x, f, 'k') | ||
| + | hold on | ||
| + | |||
| + | for i=1:length(k) | ||
| + | % Inicializar suma de Cesàro | ||
| + | cesaro = zeros(size(x)); | ||
| + | |||
| + | % Construcción (solo impares) | ||
| + | for n = 1:2:(2*k(i)-1) | ||
| + | weight = 1 - (n/(2*k(i))); % factor de Cesàro | ||
| + | cesaro = cesaro + weight*(1/n)*sin(n*x); | ||
| + | end | ||
| + | |||
| + | cesaro = (4/pi)*cesaro; | ||
| + | |||
| + | % Error puntual | ||
| + | E = abs(f - cesaro); | ||
| + | subplot(2,1,1) | ||
| + | plot(x, cesaro, colores{i}) | ||
| + | grid on | ||
| + | subplot(2,1,2) | ||
| + | plot(x, E, colores{i}) | ||
| + | |||
| + | end | ||
| + | legend('f(x)', 'k=1', 'k=5', 'k=10', 'k=20', 'k=50', 'k=100') | ||
| + | |||
| + | <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 | ||
| + | k = [1 5 10 20 50 100]; | ||
| + | error_norma2 = zeros(size(k)); % Guardar errores | ||
| + | |||
| + | for i = 1:length(k) | ||
| + | % Inicializar aproximación | ||
| + | fourier = zeros(size(x)); | ||
| + | |||
| + | % Construcción de la serie (solo impares) | ||
| + | for n = 1:2:(2*k(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 (k)') | ||
| + | ylabel('||f - S_k||_2') | ||
| + | xlim([0, max(k)+5]) | ||
| + | |||
| + | <source lang="matlab" line> | ||
| + | |||
| + | clear; clc; close all; | ||
| + | |||
| + | % Dominio | ||
| + | x = linspace(-pi, pi, 10000); | ||
| + | % Onda cuadrada original | ||
| + | f = sign(sin(x)); | ||
| + | |||
| + | % Valores de k | ||
| + | k = [1 5 10 20 50 100]; | ||
| + | error_norma2 = zeros(size(k)); % Guardar errores | ||
| + | |||
| + | for i = 1:length(k) | ||
| + | |||
| + | % Inicializar suma de Cesàro | ||
| + | cesaro = zeros(size(x)); | ||
| + | |||
| + | % Construcción (solo impares) | ||
| + | for n = 1:2:(2*k(i)-1) | ||
| + | weight = 1 - (n/(2*k(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 (k)') | ||
| + | ylabel('||f - \sigma_k||_2') | ||
| + | xlim([0, max(k)+5]) | ||
</source> | </source> | ||
Revisión del 22:23 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 | |
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
k = [1 5 10 20 50 100];
colores = {'r', 'b', 'g', 'y', 'm', 'c'};
for i=1:length(k)
% Inicializar aproximación
fourier = zeros(size(x));
% Construcción de la serie
for n = 1:2:(2*k(i)-1)
fourier = fourier + (1/n)*sin(n*x);
end
fourier = (4/pi) * fourier;
% Graficar fourier con k distinto
plot(x, fourier, colores{i})
grid on
end
legend('f(x)', 'k=1', 'k=5', 'k=10', 'k=20', 'k=50', 'k=100')
<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
k= [1 5 10 20 50 100]; % prueba 20, 50, 100...
colores = {'r', 'b', 'g', 'y', 'm', 'c'};
figure
subplot(2,1,1)
plot(x, f, 'k')
hold on
for i=1:length(k)
% Inicializar suma de Cesàro
cesaro = zeros(size(x));
% Construcción (solo impares)
for n = 1:2:(2*k(i)-1)
weight = 1 - (n/(2*k(i))); % factor de Cesàro
cesaro = cesaro + weight*(1/n)*sin(n*x);
end
cesaro = (4/pi)*cesaro;
% Error puntual
E = abs(f - cesaro);
subplot(2,1,1)
plot(x, cesaro, colores{i})
grid on
subplot(2,1,2)
plot(x, E, colores{i})
end
legend('f(x)', 'k=1', 'k=5', 'k=10', 'k=20', 'k=50', 'k=100')
<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
k = [1 5 10 20 50 100];
error_norma2 = zeros(size(k)); % Guardar errores
for i = 1:length(k)
% Inicializar aproximación
fourier = zeros(size(x));
% Construcción de la serie (solo impares)
for n = 1:2:(2*k(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 (k)')
ylabel('||f - S_k||_2')
xlim([0, max(k)+5])
<source lang="matlab" line>
clear; clc; close all;
% Dominio
x = linspace(-pi, pi, 10000);
% Onda cuadrada original
f = sign(sin(x));
% Valores de k
k = [1 5 10 20 50 100];
error_norma2 = zeros(size(k)); % Guardar errores
for i = 1:length(k)
% Inicializar suma de Cesàro
cesaro = zeros(size(x));
% Construcción (solo impares)
for n = 1:2:(2*k(i)-1)
weight = 1 - (n/(2*k(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 (k)')
ylabel('||f - \sigma_k||_2')
xlim([0, max(k)+5])