Diferencia entre revisiones de «Series de Fourier NAA»
De MateWiki
| Línea 6: | Línea 6: | ||
| + | Código para representar aproximación por serie de Fourier. | ||
<source lang="matlab" line> | <source lang="matlab" line> | ||
| Línea 12: | Línea 13: | ||
% 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 error con Fourier. | |
<source lang="matlab" line> | <source lang="matlab" line> | ||
| Línea 64: | Línea 58: | ||
% 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 85: | ||
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 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 149: | ||
% 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 169: | ||
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> | ||
| − | |||
[[Categoría:EDP]] | [[Categoría:EDP]] | ||
[[Categoría:EDP25/26]] | [[Categoría:EDP25/26]] | ||
Revisión del 22:38 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 | |
Código para representar 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 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 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])