Diferencia entre revisiones de «Series de Fourier DFN»

De MateWiki
Saltar a: navegación, buscar
(Página creada con «{{ TrabajoED | Series de Fourier. Grupo DFN | EDP|2025-26 | Daniel Tormos Fernando Madrid Nicolás Sánchez }} Archivo:Po...»)
 
m
 
(No se muestran 8 ediciones intermedias de 2 usuarios)
Línea 1: Línea 1:
 +
=[[Archivo:Poster DFN.pdf|miniaturadeimagen|Póster]]=
 
{{ TrabajoED | Series de Fourier. Grupo DFN | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP25/26|2025-26]] | Daniel Tormos
 
{{ TrabajoED | Series de Fourier. Grupo DFN | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP25/26|2025-26]] | Daniel Tormos
  
Línea 4: Línea 5:
  
 
Nicolás Sánchez  }}
 
Nicolás Sánchez  }}
 
[[Archivo:Poster_EPNL.png||900px]]
 
[[Archivo:Poster_EPNL.pdf]]
 
  
 
__TOC__
 
__TOC__
  
=Función 1 =
+
=Funciones =
El primer código para visualizar las series de fourier con coeficientes normales (0,1) es el siguiente:
+
 
 +
Esta primera función calcula los coeficientes de Fourier de manera aleatoria en base a una función f.
 +
 
 
<source lang: "Matlab" line>
 
<source lang: "Matlab" line>
 
function [coefs] = rand_coefs(f,N)
 
function [coefs] = rand_coefs(f,N)
Línea 24: Línea 24:
 
</source>
 
</source>
  
=Función 2=
+
Esta función genera la Serie de Fourier a partir de sus coeficientes.
 
<source lang: "Matlab" line>
 
<source lang: "Matlab" line>
 
function [F] = generar_F(a,b)
 
function [F] = generar_F(a,b)
Línea 43: Línea 43:
 
</source>
 
</source>
  
=Función 3=
+
Con esto creamos una lista de series de Fourier.
 
<source lang: "Matlab" line>
 
<source lang: "Matlab" line>
 
function [coefs, funciones] = familia_funciones(f,N,Num)
 
function [coefs, funciones] = familia_funciones(f,N,Num)
Línea 69: Línea 69:
 
</source>
 
</source>
  
 
+
=Códigos=
=Aplicaciones=
+
En esta primera hacemos los cálculos de media, varianza y covarianza.
Farei
+
  
 
<source lang: "Matlab" line>
 
<source lang: "Matlab" line>
Línea 101: Línea 100:
 
VAR2 = (1/(Num-1))*S2
 
VAR2 = (1/(Num-1))*S2
 
COV = (1/(Num-1))*C
 
COV = (1/(Num-1))*C
 +
</source>
 +
 +
<source lang: "Matlab" line>
  
 
f1 = @(x) 1./(x.^(2)); f2 = @(x) 1./x; f3 = @(x) 1/sqrt(x);
 
f1 = @(x) 1./(x.^(2)); f2 = @(x) 1./x; f3 = @(x) 1/sqrt(x);

Revisión actual del 05:01 19 feb 2026

1 Archivo:Poster DFN.pdf

Trabajo realizado por estudiantes
Título Series de Fourier. Grupo DFN
Asignatura EDP
Curso 2025-26
Autores Daniel Tormos

Fernando Madrid

Nicolás Sánchez

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


2 Funciones

Esta primera función calcula los coeficientes de Fourier de manera aleatoria en base a una función f.

function [coefs] = rand_coefs(f,N)
    % Crea un vector de N elementos con coeficientes a_i aleatorios entre
    % f(i) y -f(i).
    coefs = zeros(N,1);
    for i = 1:N
        coefs(i) = rand*2*f(i)-f(i);
    end
end

Esta función genera la Serie de Fourier a partir de sus coeficientes.

function [F] = generar_F(a,b)
    % Genera una función F a partir de sus coeficientes de Fourier.
    
    % a son los N+1 coeficientes para los elementos pares de la base
    % trigonométrica en [-pi,pi], y b son los N coeficientes de los 
    % elementos impares.

    N = length(b);
    n = (1:N)';  % Vector columna
    a = a(:);    % Asegurar que a es columna
    b = b(:);    % Asegurar que b es columna
    
    F = @(x) (a(1)/sqrt(2*pi)) + sum((a(n+1)/sqrt(pi)).*cos(n*x) + (b(n)/sqrt(pi)).*sin(n*x), 1);
end

Con esto creamos una lista de series de Fourier.

function [coefs, funciones] = familia_funciones(f,N,Num)
    % f,N son las entradas para rand_coefs
    % Num es el número de funciones de la familia

    % Devuelve:

    % Una lista de parejas de vectores de coeficientes a y b. Para
    % obtener los coeficientes impares de la funcion 3 (por ejemplo),
    % llamas coefs(3).b

    % Una lista de funciones. Para obtener la función 3, llamas
    % funciones{3}

    coefs(Num) = struct('a',[],'b',[]);
    funciones = cell(1,Num);
    for i = 1:Num
        coefs(i).a = rand_coefs(f,N+1);
        coefs(i).b = rand_coefs(f,N);
        funciones{i} = generar_F(coefs(i).a,coefs(i).b); 
    end
end

3 Códigos

En esta primera hacemos los cálculos de media, varianza y covarianza.

f1 = @(x) 1./(x.^2); f2 = @(x) 1./x; f3 = @(x) 1/sqrt(x);
N = 500;
Num = 1e5;
[coefs,funciones] = familia_funciones(f2,N,Num); % Elegir la f_i que se quiera
x1 = 1; x2 = 0.2; % Distintos puntos
Sum_1 = 0;
Sum_2 = 0;
for i =1:Num
    Sum_1 = Sum_1 + funciones{i}(x1);
    Sum_2 = Sum_2 + funciones{i}(x2);
end
mean1 = (1/Num)*Sum_1
mean2 = (1/Num)*Sum_2
media_metodo_A = mean1;

S1 = 0;
S2 = 0;
C = 0;
for i =1:Num
    S1 = S1 + (funciones{i}(x1)-mean1)^2;
    S2 = S2 + (funciones{i}(x2)-mean2)^2;
    C = C + (funciones{i}(x1)-mean1)*(funciones{i}(x2)-mean2);
end
VAR1 = (1/(Num-1))*S1
VAR2 = (1/(Num-1))*S2
COV = (1/(Num-1))*C
f1 = @(x) 1./(x.^(2)); f2 = @(x) 1./x; f3 = @(x) 1/sqrt(x);
N = 100;
a1 = rand_coefs(f1,N+1); b1 = rand_coefs(f1,N);
a2 = rand_coefs(f2,N+1); b2 = rand_coefs(f2,N);
a3 = rand_coefs(f3,N+1); b3 = rand_coefs(f3,N);
F1 = generar_F(a1,b1); F2 = generar_F(a2,b2); F3 = generar_F(a3,b3);
x = linspace(-pi,pi,600);
P = linspace(-pi,pi,300);

V=zeros(1000,3);

for i=1:1000

    for k=1:length(P)-1
        V(i,1)=V(i,1)+abs(F1(P(k))-F1(P(k+1)));
    end

    for k=1:length(P)-1
        V(i,2)=V(i,2)+abs(F2(P(k))-F2(P(k+1)));
    end

    for k=1:length(P)-1
        V(i,3)=V(i,3)+abs(F3(P(k))-F3(P(k+1)));
    end
    a1 = rand_coefs(f1,N+1); b1 = rand_coefs(f1,N);
    a2 = rand_coefs(f2,N+1); b2 = rand_coefs(f2,N);
    a3 = rand_coefs(f3,N+1); b3 = rand_coefs(f3,N);
    F1 = generar_F(a1,b1); F2 = generar_F(a2,b2); F3 = generar_F(a3,b3);
end

tablaResultados = table(mean(V)', min(V)', max(V)', std(V)', ...
    'VariableNames', {'Media', 'Minimo', 'Maximo', 'Desviacion Tipica' }, ...
    'RowNames', {'Funcion 1', 'Funcion 2', 'Funcion 3'});

 plot(x,F1(x));
 hold on
 plot(x,F2(x));
 plot(x,F3(x));
 legend