Diferencia entre revisiones de «Series de Fourier JC»

De MateWiki
Saltar a: navegación, buscar

Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/mat/public_html/w/includes/diff/DairikiDiff.php on line 434
(Incertidumbre en Ecuaciones en Derivadas Parciales)
(Póster)
 
(No se muestran 26 ediciones intermedias de 2 usuarios)
Línea 1: Línea 1:
{{ TrabajoED | Series de Fourier. Grupo 6-A | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP25/26|2025-26]] | Carlos Asensio y Javier Martínez }}
+
{{ TrabajoED | Series de Fourier. Grupo 6-A | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP25/26|2025-26]] | Carlos Asensio  
  
== Incertidumbre en Ecuaciones en Derivadas Parciales ==
+
Javier Martínez }}
  
En el estudio de las '''Ecuaciones en Derivadas Parciales (EDP)''', solemos asumir que tanto las condiciones iniciales como las condiciones de frontera son funciones bien definidas. Sin embargo, en la modelización real de cualquier fenómeno físico existe una cierta incertidumbre.
 
  
Para modelar esto, recurrimos a conjuntos de funciones aleatorias. Como se ha analizado, en muchos problemas de matemáticas o física existen funciones periódicas de cuadrado integrable que se pueden aproximar mediante la suma de funciones trigonométricas en un espacio de Hilbert, <math>L^2(-L, L)</math>, de la siguiente forma:
+
== Póster ==
 +
[[Archivo:EDPS_POSTER_1.pdf]]
 +
[[Archivo:EDPS_POSTER_2.jpg|center|800px]]
  
<center>
+
__TOC__
<math>f(x) \approx \frac{a_0}{2} + \sum_{k=1}^\infty a_k \cos\left(\frac{k\pi x}{L}\right) + b_k \operatorname{sen}\left(\frac{k\pi x}{L}\right)</math>
+
</center>
+
  
Los valores <math>a_0, a_k</math> y <math>b_k</math> son los coeficientes de Fourier habituales que toman un valor fijo.
+
=CODIGO 1 =
 +
<source lang: "Matlab" line>
 +
%% Histograma Adaptativo según Desviación Típica en un punto x
  
Para añadir la incertidumbre mencionada previamente, utilizaremos nuevos coeficientes <math>a_\sigma, b_\sigma</math> que siguen una determinada distribución, de tal modo que nuestra función resulta de la forma:
+
clear; clc; close all;
 +
 
 +
% 1. Parámetros de Control
 +
L = 1;             
 +
N_harmonicos = 500; 
 +
M_iter = 3000;
 +
x_fijo = 0.5;     
 +
omega = 2 * pi / L;
 +
p=2;
 +
 
 +
 
 +
% 2. Definición de la desviación típica por modo
 +
k = 1:N_harmonicos;
 +
sigma_k = 1 ./ (k.^(p/2));
 +
 
 +
% 3. Simulación de Monte Carlo
 +
valores_f = zeros(1, M_iter);
 +
for m = 1:M_iter
 +
    ak = randn(1, N_harmonicos) .* sigma_k;
 +
    bk = randn(1, N_harmonicos) .* sigma_k;
 +
   
 +
    % Evaluamos la serie en x_fijo
 +
    f_x = sum( ak .* cos(k * omega * x_fijo) + bk .* sin(k * omega * x_fijo) );
 +
    valores_f(m) = f_x;
 +
end
 +
 
 +
% 4. Cálculo de la Varianza Teórica
 +
% La varianza de la suma es la suma de las varianzas de los sumandos
 +
 
 +
var_teorica_adaptada = sum(sigma_k.^2);
 +
 
 +
% 5. Representación Gráfica
 +
figure('Color', 'w');
 +
h = histogram(valores_f, 50, 'Normalization', 'pdf', 'FaceColor', [0.2, 0.7, 0.5], 'EdgeColor', 'none');
 +
hold on;
 +
 
 +
% Generar Gaussiana basada en la varianza calculada
 +
x_axis = linspace(min(valores_f), max(valores_f), 200);
 +
y_gauss = (1/sqrt(2*pi*var_teorica_adaptada)) * exp(-x_axis.^2 / (2*var_teorica_adaptada));
 +
 
 +
plot(x_axis, y_gauss, 'r', 'LineWidth', 2.5);
 +
 
 +
title(['Distribución Adaptada: \sigma_{total}^2 = ', num2str(var_teorica_adaptada, '%.4f')]);
 +
subtitle(['Parámetros: p = ', num2str(p)]);
 +
xlabel(['Valor de f(x) en x = ', num2str(x_fijo)]);
 +
ylabel('Densidad de Probabilidad');
 +
legend('Simulación', 'Gaussiana Teórica Adaptada');
 +
grid on;
 +
 
 +
 
 +
fprintf('Varianza Teórica Calculada: %f\n', var_teorica_adaptada);
 +
fprintf('Varianza Observada: %f\n', var(valores_f));
 +
 
 +
</source>
 +
 
 +
=CODIGO 2 =
 +
<source lang: "Matlab" line>
 +
%% Simulación de Función Aleatoria con coeficientes normales.
 +
 
 +
% 1. Parámetros
 +
L = 1;              % Longitud del dominio
 +
N = 500;            % Número de armónicos
 +
dx = 0.001;
 +
x = 0:dx:L;
 +
f = zeros(size(x));
 +
p=8;
 +
 
 +
% 2. Generación de Coeficientes
 +
% Introducimos la desviación típica (raiz de la varianza)
 +
k = 1:N;
 +
sigma_k = 1./k.^(p/2);
 +
 
 +
% Coeficientes: Normal(0, 1) multiplicada por su desviación estándar
 +
ak = randn(1, N) .* sigma_k;
 +
bk = randn(1, N) .* sigma_k;
 +
 
 +
% 3. Construcción de la Serie
 +
omega = 2 * pi / L;
 +
for i = 1:N
 +
    f = f + ak(i)*cos(i*omega*x) + bk(i)*sin(i*omega*x);
 +
end
 +
 
 +
% 4. Representación Gráfica
 +
figure('Color', 'w');
 +
plot(x, f, 'LineWidth', 1.5, 'Color', [0.8, 0.2, 0.2]);
 +
title(['Función Aleatoria (Desviación \sigma_k^2 = 1/k^', num2str(p), ')']);
 +
xlabel('x');
 +
ylabel('f_{\sigma}(x)');
 +
grid on;
 +
 
 +
</source>
 +
 
 +
=CODIGO 3 =
 +
<source lang: "Matlab" line>
 +
% Solución de la Ecuación del Calor con Condiciones Iniciales Aleatorias
 +
% Caso: Dominio Periódico (Anillo) con Coeficientes de Fourier Estocásticos
 +
 
 +
clear; clc; close all;
 +
 
 +
%% 1. Parámetros del Problema
 +
 
 +
L = 2*pi;              % Longitud del dominio (anillo)
 +
alpha = 0.5;          % Difusividad térmica
 +
T_final = 3.0;        % Tiempo total de simulación
 +
N_x = 500;            % Puntos en el espacio
 +
x = linspace(0, L, N_x);
 +
k_max = 50;            % Número de modos de Fourier a sumar
 +
p = 1;                % Exponente de decaimiento de varianza (1/k^p)
 +
 
 +
%% 2. Generación de la Condición Inicial Aleatoria (t = 0)
 +
% Coeficientes de Fourier aleatorios
 +
A0 = randn(1); % Media aleatoria
 +
Ak = randn(1, k_max) ./ ( (1:k_max).^(p/2) ); % Varianza 1/k^p
 +
Bk = randn(1, k_max) ./ ( (1:k_max).^(p/2) );
 +
 
 +
% Construcción de la función inicial f(x)
 +
u_initial = A0/2;
 +
for k = 1:k_max
 +
    u_initial = u_initial + Ak(k)*cos(2*pi*k*x/L) + Bk(k)*sin(2*pi*k*x/L);
 +
end
 +
 
 +
%% 3. Evolución Temporal y Graficación
 +
t_steps = [0, 0.05, 0.2, 0.5, 1.5,3];
 +
figure('Color', 'w', 'Position', [100, 100, 1000, 600]);
 +
hold on; grid on;
 +
 
 +
colors = jet(length(t_steps));
 +
 
 +
for i = 1:length(t_steps)
 +
    t = t_steps(i);
 +
   
 +
    % Calculamos la solución u(x,t) usando la serie de Fourier
 +
    u_t = A0/2;
 +
    for k = 1:k_max
 +
        decay = exp(-alpha * (2*pi*k/L)^2 * t);
 +
        u_t = u_t + decay * (Ak(k)*cos(2*pi*k*x/L) + Bk(k)*sin(2*pi*k*x/L));
 +
    end
 +
   
 +
    plot(x, u_t, 'Color', colors(i,:), 'LineWidth', 2, ...
 +
        'DisplayName', sprintf('t = %.2f', t));
 +
end
 +
 
 +
title(['Evolución de u(x,t) con C.I. Aleatoria (p = ', num2str(p), ')']);
 +
xlabel('Posición x');
 +
ylabel('Temperatura u');
 +
legend show;
 +
set(gca, 'FontSize', 12);
 +
 
 +
</source>
  
<center>
 
<math>f_\sigma(x) \approx \sum_{k=1}^\infty a_k^\sigma \cos\left(\frac{k\pi x}{L}\right) + b_k^\sigma \operatorname{sen}\left(\frac{k\pi x}{L}\right)</math>
 
</center>
 
  
 
[[Categoría:EDP]]
 
[[Categoría:EDP]]
 
[[Categoría:EDP25/26]]
 
[[Categoría:EDP25/26]]

Revisión actual del 09:56 19 feb 2026

Trabajo realizado por estudiantes
Título Series de Fourier. Grupo 6-A
Asignatura EDP
Curso 2025-26
Autores Carlos Asensio

Javier Martínez

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


1 Póster

Archivo:EDPS POSTER 1.pdf center

2 CODIGO 1

%% Histograma Adaptativo según Desviación Típica en un punto x

clear; clc; close all;

% 1. Parámetros de Control
L = 1;              
N_harmonicos = 500;  
M_iter = 3000; 
x_fijo = 0.5;       
omega = 2 * pi / L;
p=2;


% 2. Definición de la desviación típica por modo
k = 1:N_harmonicos;
sigma_k = 1 ./ (k.^(p/2)); 

% 3. Simulación de Monte Carlo
valores_f = zeros(1, M_iter);
for m = 1:M_iter
    ak = randn(1, N_harmonicos) .* sigma_k;
    bk = randn(1, N_harmonicos) .* sigma_k;
    
    % Evaluamos la serie en x_fijo
    f_x = sum( ak .* cos(k * omega * x_fijo) + bk .* sin(k * omega * x_fijo) );
    valores_f(m) = f_x;
end

% 4. Cálculo de la Varianza Teórica 
% La varianza de la suma es la suma de las varianzas de los sumandos

var_teorica_adaptada = sum(sigma_k.^2); 

% 5. Representación Gráfica
figure('Color', 'w');
h = histogram(valores_f, 50, 'Normalization', 'pdf', 'FaceColor', [0.2, 0.7, 0.5], 'EdgeColor', 'none');
hold on;

% Generar Gaussiana basada en la varianza calculada
x_axis = linspace(min(valores_f), max(valores_f), 200);
y_gauss = (1/sqrt(2*pi*var_teorica_adaptada)) * exp(-x_axis.^2 / (2*var_teorica_adaptada));

plot(x_axis, y_gauss, 'r', 'LineWidth', 2.5);

title(['Distribución Adaptada: \sigma_{total}^2 = ', num2str(var_teorica_adaptada, '%.4f')]);
subtitle(['Parámetros: p = ', num2str(p)]);
xlabel(['Valor de f(x) en x = ', num2str(x_fijo)]);
ylabel('Densidad de Probabilidad');
legend('Simulación', 'Gaussiana Teórica Adaptada');
grid on;


fprintf('Varianza Teórica Calculada: %f\n', var_teorica_adaptada);
fprintf('Varianza Observada: %f\n', var(valores_f));

3 CODIGO 2

%% Simulación de Función Aleatoria con coeficientes normales.

% 1. Parámetros
L = 1;              % Longitud del dominio
N = 500;            % Número de armónicos
dx = 0.001;
x = 0:dx:L;
f = zeros(size(x));
p=8;

% 2. Generación de Coeficientes
% Introducimos la desviación típica (raiz de la varianza) 
k = 1:N;
sigma_k = 1./k.^(p/2); 

% Coeficientes: Normal(0, 1) multiplicada por su desviación estándar
ak = randn(1, N) .* sigma_k;
bk = randn(1, N) .* sigma_k;

% 3. Construcción de la Serie
omega = 2 * pi / L;
for i = 1:N
    f = f + ak(i)*cos(i*omega*x) + bk(i)*sin(i*omega*x);
end

% 4. Representación Gráfica
figure('Color', 'w');
plot(x, f, 'LineWidth', 1.5, 'Color', [0.8, 0.2, 0.2]);
title(['Función Aleatoria (Desviación \sigma_k^2 = 1/k^', num2str(p), ')']);
xlabel('x');
ylabel('f_{\sigma}(x)');
grid on;

4 CODIGO 3

% Solución de la Ecuación del Calor con Condiciones Iniciales Aleatorias
% Caso: Dominio Periódico (Anillo) con Coeficientes de Fourier Estocásticos

clear; clc; close all;

%% 1. Parámetros del Problema

L = 2*pi;              % Longitud del dominio (anillo)
alpha = 0.5;           % Difusividad térmica
T_final = 3.0;         % Tiempo total de simulación
N_x = 500;             % Puntos en el espacio
x = linspace(0, L, N_x);
k_max = 50;            % Número de modos de Fourier a sumar
p = 1;                 % Exponente de decaimiento de varianza (1/k^p)

%% 2. Generación de la Condición Inicial Aleatoria (t = 0)
% Coeficientes de Fourier aleatorios
A0 = randn(1); % Media aleatoria
Ak = randn(1, k_max) ./ ( (1:k_max).^(p/2) ); % Varianza 1/k^p
Bk = randn(1, k_max) ./ ( (1:k_max).^(p/2) );

% Construcción de la función inicial f(x)
u_initial = A0/2;
for k = 1:k_max
    u_initial = u_initial + Ak(k)*cos(2*pi*k*x/L) + Bk(k)*sin(2*pi*k*x/L);
end

%% 3. Evolución Temporal y Graficación
t_steps = [0, 0.05, 0.2, 0.5, 1.5,3]; 
figure('Color', 'w', 'Position', [100, 100, 1000, 600]);
hold on; grid on;

colors = jet(length(t_steps)); 

for i = 1:length(t_steps)
    t = t_steps(i);
    
    % Calculamos la solución u(x,t) usando la serie de Fourier
    u_t = A0/2;
    for k = 1:k_max
        decay = exp(-alpha * (2*pi*k/L)^2 * t); 
        u_t = u_t + decay * (Ak(k)*cos(2*pi*k*x/L) + Bk(k)*sin(2*pi*k*x/L));
    end
    
    plot(x, u_t, 'Color', colors(i,:), 'LineWidth', 2, ...
        'DisplayName', sprintf('t = %.2f', t));
end

title(['Evolución de u(x,t) con C.I. Aleatoria (p = ', num2str(p), ')']);
xlabel('Posición x');
ylabel('Temperatura u');
legend show;
set(gca, 'FontSize', 12);