Ecuación del calor (Grupo MAMBD))
| Trabajo realizado por estudiantes | |
|---|---|
| Título | Ecuación del calor. Grupo MAMBD |
| Asignatura | EDP |
| Curso | 2024-25 |
| Autores | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña |
| Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura | |
1 Introducción
En el siguiente trabajo, se busca explorar el comportamiento de la solución a la ecuación del calor para regiones no acotadas, así como la distribución de dicha solución en según que dimensiones.
El problema del calor viene dado por:
Donde u(x, t) representa la temperatura del medio en función del tiempo y de la posición.
Como estamos en un medio infinito, tendremos que mirar como una perturbación térmica puntual se difunde con el tiempo. Para ello usamos la solución fundamental:
2 Mensaje secreto en la ecuación del calor
Imaginamos que escribimos un mensaje secreto en una barra de metal infinita usando calor (interpretando teóricamente dicha barra como una recta, ya que estamos en dimensión 1). Definimos la temperatura en el instante inicial
es decir, el mensaje inicial está formado por letras dibujadas en el eje [math]x[/math] con calor. Con el tiempo, el calor empieza a difundirse según la ecuación [math]u_t-u_{xx}=0[/math]. Su solución viene dada por la convolución
Dibujando la solución para diferentes tiempos, obtenemos lo siguiente:
Conforme avanza el tiempo, la difusión del calor hace que los bordes de las letras pierdan definición. Al inicio, las regiones calientes se distinguen claramente, pero poco a poco el calor se extiende a las áreas frías, suavizando los contornos. A medida que esta difusión continúa, las letras se vuelven borrosas hasta que el contraste desaparece por completo y el mensaje se vuelve ilegible, ya que la temperatura se ha distribuido de manera uniforme en la barra.
clc
clear all
close all
imp = 6;
T=[0.001,0.01,0.1];
a = [-3, -1, 2]; % Inicio de los segmentos de calor
b = [-2, 1, 3]; % Fin de los segmentos de calor
tf = max(T);
div = 10^-3;
X = -10:div:10;
% Función de solución fundamental de la ecuación del calor en 1D
Phi = @(x,t) (1./((4*pi*t).^(1/2)) .* exp(-abs(x).^2./(4*t)));
U = zeros(length(X), length(T)); % Matriz para almacenar soluciones en diferentes tiempos
% Cálculo de la solución usando la integral de convolución
for j = 1:length(X)
for i = 1:length(T)
integral_sum = 0;
for k = 1:length(a)
Y = a(k):div:b(k);
integral_sum = integral_sum + trapz(Y, Phi(X(j)*ones(1,length(Y)) - Y, T(i)*ones(1,length(Y))));
end
U(j,i) = 5 * integral_sum;
end
end
% Dibujar todas las soluciones en una misma gráfica
figure
hold on
colors = ['r', 'g', 'b'];
for i = 1:length(T)
plot(X, U(:,i), colors(i), 'LineWidth', 1.5, 'DisplayName', "t = " + num2str(T(i)) + " s")
end
xlim([-10 10])
ylim([0 5.5])
xlabel('Posición x')
ylabel('Temperatura U(x,t)')
title("Difusión térmica del mensaje en la barra de metal")
legend show
grid on
hold off
3 Regularidad y dimensiones
Vamos a explorar que ocurre al pasar a dos dimensiones (2D), analizando como la difusión del calor se dispersa más rápido en 2D debido a la propagación en múltiples direcciones.
En 1D, la ecuación del calor viene dada por [math]u_t-u_{xx}=0[/math]. Sabemos que dicha ecuación tiene un efecto regularizador, es decir, aunque la condición inicial tenga discontinuidades, la solución se vuelve suave para [math]t\gt0[/math]. Por otro lado, la difusión en 1D ocurre a lo largo de una sola dirección (el eje [math]x[/math]) y la solución se suaviza rápidamente con el tiempo.
Veamos que ocurre en 2D. Ahora, nuestra ecuación es [math]u_t-u_{xx}-u_{yy}=0[/math]. La temperatura inicial se define ahora como:
Aquí, el efecto regularizador del que hablábamos sigue presente, pues el término [math](4\pi t)^{n/2}[/math] muestra como en [math]u(x ,t)[/math], [math]x \in \mathbb{R}^n[/math], este efecto se vuelve más pronunciado en dimensiones superiores porque el denominador crece más rápido. Con esto nos surge la pregunta de cómo podemos comparar el tiempo de dispersión en 1D, 2D y \(n\)D. Sabemos que la varianza de la solución fundamental en una dimensión es \(\sigma^2 = 2t\), con lo que para el análisis cualitativo de la dispersión se tiene que \(\sigma^2 \sim t\).
En 2D, la dispersión es más rápida porque la normalización de la solución implica un decaimiento más rápido \( u \sim t^{-1}\) frente a \( u \sim t^{-1/2} \). En \( n \) dimensiones, el calor decae como \(u(x,t) \sim t^{-n/2}\), lo que reafirma que el calor se disipa más rápido a medida que aumenta la dimensión del espacio.
Si queremos comparar el tiempo característico de disipación \( t_d \) en distintas dimensiones, llegamos a la relación \( t_d(n) \sim \frac{t_d(1)}{n/2} \), que nos dice que el tiempo de disipación en dimensión \( n \) es inversamente proporcional a \( n/2 \).
YA SOLO QUEDARIA UNA COMPARACIÓN ENTRE ESTE VIDEO DE 2 DIMENSIONES Y EL ANTERIOR DE 1, DONDE VEMOS EFECTIVAMENTE LO QUE ESTAMOS DICIENDO DE ACUERDO A LA DISPERSION EN FUNCIÓN DEL AUMENTO DE LAS DIMENSIONES.
clc
clear all
close all
a=-4; b=4; % Intervalo de definición de la x ([a,b]^2)
div=0.05; % División del vector en x
X=a:div:b; % Vector de X
[X1,X2]=meshgrid(X,X); % Creación de la malla en x
% Definir las condiciones iniciales
U0 = zeros(size(X1));
U0((X1 > -3) & (X1 < -2) & (X2 > -1) & (X2 < 1)) = 5; % Letra 1
U0((X1 > -1) & (X1 < 1) & (X2 > -2) & (X2 < 2)) = 5; % Letra 2
U0((X1 > 2) & (X1 < 3) & (X2 > -1) & (X2 < 1)) = 5; % Letra 3
% Solución de la ecuación del calor mediante convolución con la solución fundamental
norma2=@(x1,x2)sqrt(x1.^2+x2.^2); % Función norma
Phi2 = @(x1,x2,t)(1./((4*pi*t)).*exp(-norma2(x1,x2).^2./(4*t))); % Solución fundamental en 2D
% Parámetros de animación
T_max = 0.7; % Tiempo máximo de simulación
num_frames = 100; % Número de cuadros en la animación
T_values = linspace(0.001, T_max, num_frames);
% Crear objeto de video
video_filename = 'heat_equation_2D.mp4';
vid = VideoWriter(video_filename, 'MPEG-4');
vid.FrameRate = 20; % FPS del video
open(vid);
figure;
for i=1:length(T_values)
U = conv2(U0, Phi2(X1,X2,T_values(i)), 'same') * div^2; % Convolución discreta
surf(X1,X2,U)
shading interp
colormap hot
xlabel('X')
ylabel('Y')
zlabel('Temperatura')
title("Evolución en 2D para t="+num2str(T_values(i),'%.3f')+' s')
axis([-4 4 -4 4 0 5]);
frame = getframe(gcf);
writeVideo(vid, frame);
end
close(vid);
disp(['Video guardado como: ', video_filename]);