Diferencia entre revisiones de «Ecuación del calor DF»

De MateWiki
Saltar a: navegación, buscar
(Página creada con «=Póster= {{ TrabajoED | Series de Fourier. Grupo DFN | EDP|2025-26 | Daniel Tormo...»)
 
(Página reemplazada por «=Póster= {{ TrabajoED | Series de Fourier. Grupo DFN | EDP|2025-26 | Daniel...»)
Línea 4: Línea 4:
 
Fernando Madrid
 
Fernando Madrid
 
   }}
 
   }}
 
__TOC__
 
 
=Funciones =
 
 
Esta primera función calcula los coeficientes de Fourier de manera aleatoria en base a una función f.
 
 
<source lang: "Matlab" line>
 
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
 
 
</source>
 
 
Esta función genera la Serie de Fourier a partir de sus coeficientes.
 
<source lang: "Matlab" line>
 
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
 
 
</source>
 
 
Con esto creamos una lista de series de Fourier.
 
<source lang: "Matlab" line>
 
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
 
 
</source>
 
 
=Códigos=
 
En esta primera hacemos los cálculos de media, varianza y covarianza.
 
 
<source lang: "Matlab" line>
 
 
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
 
</source>
 
 
<source lang: "Matlab" line>
 
 
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
 
 
 
</source>
 
 
[[Categoría:EDP]]
 
[[Categoría:EDP25/26]]
 

Revisión del 17:36 12 abr 2026

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

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