Diferencia entre revisiones de «Ecuación del calor (ADMR)»
(→Coeficiente de difusión) |
(→Solución acotada vs Solución no acotada) |
||
| Línea 34: | Línea 34: | ||
<math>\quad | <math>\quad | ||
u(x,t) = \sum_{n=1}^\infty A_{n} \cos\left(\frac{\pi}{a}(n - \frac{1}{2}) x\right) e^{-\dfrac{\pi^2}{a^2}\left(n - \frac{1}{2}\right)^2 t}, | u(x,t) = \sum_{n=1}^\infty A_{n} \cos\left(\frac{\pi}{a}(n - \frac{1}{2}) x\right) e^{-\dfrac{\pi^2}{a^2}\left(n - \frac{1}{2}\right)^2 t}, | ||
| − | \quad \text{ donde } | + | \quad \text{ donde } \quad |
A_n = \frac{\int_{-a}^{a} u(x,0) \cos\left(\frac{\pi}{a}(n - \frac{1}{2}) x\right)dx}{\int_{-a}^{a} \cos^2\left(\frac{\pi}{a}(n - \frac{1}{2}) x\right)dx}. | A_n = \frac{\int_{-a}^{a} u(x,0) \cos\left(\frac{\pi}{a}(n - \frac{1}{2}) x\right)dx}{\int_{-a}^{a} \cos^2\left(\frac{\pi}{a}(n - \frac{1}{2}) x\right)dx}. | ||
</math> | </math> | ||
| Línea 56: | Línea 56: | ||
<math>\quad | <math>\quad | ||
| − | u(x,t) = \sum_{m=0}^\infty B_{m} cos\left(\frac{m\pi}{b} x\right) e^{-\dfrac{m^2\pi^2}{b^2} t},\quad \text{ donde } | + | u(x,t) = \sum_{m=0}^\infty B_{m} cos\left(\frac{m\pi}{b} x\right) e^{-\dfrac{m^2\pi^2}{b^2} t},\quad \text{ donde } \quad |
B_m = \frac{\int_{-b}^{b} u(x,0) \cos\left(\frac{m\pi}{b} x\right)dx}{\int_{-b}^{b} \cos^2\left(\frac{m\pi}{b}x\right)dx}. | B_m = \frac{\int_{-b}^{b} u(x,0) \cos\left(\frac{m\pi}{b} x\right)dx}{\int_{-b}^{b} \cos^2\left(\frac{m\pi}{b}x\right)dx}. | ||
</math> | </math> | ||
| Línea 70: | Línea 70: | ||
\end{cases} | \end{cases} | ||
\end{align} | \end{align} | ||
| + | \quad | ||
\Longrightarrow | \Longrightarrow | ||
| + | \quad | ||
u(x,t) = \frac{1}{\sqrt{4\pi t}}e^{\frac{-x^2}{4t}} * e^{-x^2} = \frac{e^{\frac{-x^2}{4t+1}}}{\sqrt{4t+1}}. | u(x,t) = \frac{1}{\sqrt{4\pi t}}e^{\frac{-x^2}{4t}} * e^{-x^2} = \frac{e^{\frac{-x^2}{4t+1}}}{\sqrt{4t+1}}. | ||
</math> | </math> | ||
Revisión del 00:06 19 mar 2025
| Trabajo realizado por estudiantes | |
|---|---|
| Título | Ecuación del calor (Grupo ADMR). |
| Asignatura | EDP |
| Curso | 2024-25 |
| Autores |
|
| Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura | |
Contenido
1 Introducción
El desarrollo de la ecuación del calor se atribuye principalmente al matemático y físico francés Joseph Fourier, quien en 1822 publicó su obra Théorie analytique de la chaleur. En este trabajo formuló una ecuación diferencial en derivadas parciales que describe la propagación del calor por difusión en un medio continuo. Su análisis no sólo permitió comprender mejor este fenómeno físico, sino que también promovió el desarrollo de las Series de Fourier, que fueron objeto de estudio en nuestro trabajo anterior. En esta ocasión, profundicemos en dos aspectos de este modelo.
Desde un punto de vista físico, estas ecuaciones permiten la modelización de fenómenos como el calentamiento de materiales o la difusión de solutos en fluidos estacionarios, como ya hemos explorado en algunos ejercicios. Sin embargo, la influencia de la física es más profunda: de hecho, el coeficiente de difusión lleva su nombre por la interpretación física de su acción en el sistema. ¿Cuál es este efecto, y por qué se lo denota de esta forma?
Al tiempo que exploramos este efecto, planteemos también el paso entre problemas de dominio acotado y los de no acotado. Parecería evidente que estos últimos se extiendan naturalmente con los anteriores, pero en el desarrollo teórico de clase se obtenían mediante soluciones autosimilares en vez de problemas de autofunciones. ¿Convergen las soluciones del sistema acotado a la del no acotado cuando el dominio crece lo suficiente? Y de ser así, ¿qué condiciones de frontera en una dimensión funcionan mejor?
2 Solución acotada vs Solución no acotada
Demos por conocidos el uso de separación de variables para resolver problemas de autofunciones en caso acotado y el manejo de la solución fundamental junto con la convolución para el sistema no acotado. Para comparar todas las soluciones correspondientes, consideremos sistema [math] 1-[/math]dimensional, con una gaussiana [math] e^{-x^2} [/math] como condición inicial. La justificación de una curva así puede ser, en un experimento físico, el uso de un láser para calentar un punto de una tira fina de metal. Considerando que los fotones puedan desviarse como una distribución normal por el teorema central del límite, es un montaje experimental factible. Además, es una función continua y diferenciable, par y asintóticamente nula, buenas propiedades para un estado inicial del sistema. Pongamos ahora dos posibles condiciones en las fronteras.
Si consideramos de Dirichlet, a una tira de longitud [math] 2a [/math] le colocaremos en los extremos un material que se mantenga siempre a la misma temperatura, pongamos que a una temperatura nula. El sistema resulta
[math]\quad
\begin{align}
\begin{cases} u_{t} - u_{xx} = 0 \quad &\forall t \gt 0, x\in [-a,a],\\
u(-a,t) = u(a,t) = 0 \quad &\forall t \gt 0, \\
u(x,0) = e^{-x^2} \quad &\forall x\in [-a,a].
\end{cases}
\end{align}
[/math]
La solución al resolver el problema de autofunciones viene dada por
[math]\quad
u(x,t) = \sum_{n=1}^\infty A_{n} \cos\left(\frac{\pi}{a}(n - \frac{1}{2}) x\right) e^{-\dfrac{\pi^2}{a^2}\left(n - \frac{1}{2}\right)^2 t},
\quad \text{ donde } \quad
A_n = \frac{\int_{-a}^{a} u(x,0) \cos\left(\frac{\pi}{a}(n - \frac{1}{2}) x\right)dx}{\int_{-a}^{a} \cos^2\left(\frac{\pi}{a}(n - \frac{1}{2}) x\right)dx}.
[/math]
Consideremos ahora condiciones de frontera Neumann, con un flujo nulo que físicamente viene de poner extremos aislantes. Para cierto [math] b \gt 0,[/math] y no necesariamente igual que con [math] a [/math]. Consideraremos la ecuación del calor
[math]\quad
\begin{align}
\begin{cases} u_{t} - u_{xx} = 0 \quad &\forall t \gt 0 , x\in [-b,b],\\
u_x(-b,t) = u_x(b,t) = 0 \quad &\forall t \gt 0, \\
u(x,0) = e^{-x^2} \quad &\forall x\in[-b,b].
\end{cases}
\end{align}
[/math]
De nuevo podemos resolver el sistema, por ser homogéneo, mediante separación de variables, obteniendo
[math]\quad
u(x,t) = \sum_{m=0}^\infty B_{m} cos\left(\frac{m\pi}{b} x\right) e^{-\dfrac{m^2\pi^2}{b^2} t},\quad \text{ donde } \quad
B_m = \frac{\int_{-b}^{b} u(x,0) \cos\left(\frac{m\pi}{b} x\right)dx}{\int_{-b}^{b} \cos^2\left(\frac{m\pi}{b}x\right)dx}.
[/math]
Un último detalle antes de proceder a los errores es la obtención simbólica de la solución no acotada, realizada a mano y mediante Maple.
[math]\quad
\begin{align}
\begin{cases} u_{t} - u_{xx} = 0 \quad &\forall t\gt0, x\in \mathbb{R},\\
u(x,0) = e^{-x^2} \quad &\forall x\in \mathbb{R}
\end{cases}
\end{align}
\quad
\Longrightarrow
\quad
u(x,t) = \frac{1}{\sqrt{4\pi t}}e^{\frac{-x^2}{4t}} * e^{-x^2} = \frac{e^{\frac{-x^2}{4t+1}}}{\sqrt{4t+1}}.
[/math]
Ahora que pasamos a los errores, es relevante indicar la naturaleza numérica de los cálculos y la acumulación de errores en estos. Con esto en mente, queremos comprobar cuán bien aproximan las soluciones del caso acotado Dirichlet y Neumann a la obtenida por la solución fundamental. Para ello, escojamos un tiempo máximo [math]t_{max} [/math] hasta el cuál tomaremos el error en norma [math] L^{\infty} [/math]. Queremos estudiar
- El efecto de aumentar el rango de definición con [math] a,b [/math].
- El efecto de aumentar el número de términos en las series de los sistemas acotados.
2.1 Análisis de los errores
Consideramos los parámetros, donde [math] n [/math] es el término de la serie de Fourier donde truncamos:
- [math] a = b = 20, [/math]
- [math] t_{max} = 1, [/math]
- [math] n = 100. [/math]
A continuación, ampliaremos [math]a, b[/math] y [math]n[/math] dejando fijo [math]t_{max}[/math] y luego fijaremos [math]a[/math] y [math]b[/math] en vez del tiempo. Podemos observar que al aumentar [math]a, b[/math] y [math]n[/math] el error entre las solucionnes acotadas y no acotada disminuye. Nótese que se estanca a partir de cierto [math]n[/math]. De hecho, el error llega a aumentar a partir de ciertos [math] a,b [/math] si truncamos demasiado pronto o demasiado tarde por la aproximación del trapecio para particiones del espacio demasiado bastas -no observado por pericia en código final-.
Al ampliar el tiempo con la [math]n[/math] como los errores se concentran para tiempos pequeños, al hacer más grande [math]t_{max}[/math] los errores máximos no aumentan. En cambio, si tomamos el máximo error para diferentes tiempos vemos con suficiente precisión no hay diferencia pero que para truncamientos precoces Neumann tiene ligeramente menor error.
3 Coeficiente de difusión
Vamos a interpretar como influye exactamente el coeficiente de difusión en la solución de la ecuación del calor. Imaginemos por un segundo que tenemos varias barras (cada una de un material diferente) y queremos estudiar como se difunde el calor a través de cada una de ellas. Usando Matlab podemos calcular y representar fácilmente la solución del problema para diferentes valores del coeficiente de difusión, que denotaremos por [math][/math] D [math][/math].
Como se puede observar en la animación, fijado un tiempo, a medida que crece el valor del coeficiente de difusión el pico de la solución fundamental se va haciendo más cada vez más pequeño, es decir, a mayor coeficiente de difusión, menor es el tiempo que tarda en expandirse el calor. De hecho, podemos observar este hecho directamente de la expresión de la solución fundamental del calor. La solución de la ecuación del calor unidimensional en una barra de longitud \( L = 1 \), con coeficiente de difusión \( D \) y condición inicial dada por una función gaussiana \( f(x) = e^{-x^2} \), se expresa como una serie de Fourier:
[math]
u(x,t) = \sum_{n=1}^{\infty} A_n e^{-D (n\pi)^2 t} \sin(n\pi x),
[/math]
[Solución que depende de D]- [Viendo la solución del apartado 3 me estoy dando cuenta que también depende de la longitud de la barra, si estuviésemos trabajando con el problema acotado podríamos ver como afectan estos dos parámetros al tiempo de difusión]
Tomando el límite de D tendiendo a [math][/math] \infty [math][/math] vemos que u(x,t) tiende a 0, fijado un t determinado. Por tanto, podemos concluir que la solución del calor alcanzará el estado estacionario antes si su coeficiente del calor es mayor.
4 Códigos
%%% Código generado junto con Chat GPT para la representación de la solución fundamental de la ecuación del calor unidimensional para distintos valores del coeficiente de difusión.
clc
clear all
close all
% Vector de valores de D (coeficiente de difusión)
DD = [1,2,3,4,5,6,7,8,9,10];
% Nombre del archivo GIF de salida
output_gif = 'Fundamental.gif';
% Crear la figura
figura = figure(1);
grid on;
view(3);
% Bucle para iterar sobre cada valor de D
for i = 1:length(DD)
D = DD(i);
% Función fundamental de la ecuación del calor
phi_D = @(x, t) exp(-x.^2./(4*D*t))./sqrt(4*D*pi*t);
% Definición de la malla
xx = -1:0.01:1; % Rango de x
tt = 10^(-2):0.01:1; % Rango de t
[X, T] = meshgrid(xx, tt); % Malla de coordenadas
PHI_D = phi_D(X, T); % Evaluación de la función
% Graficar la superficie
clf;
surf(X, T, PHI_D);
shading flat
shading interp
colormap('jet')
xlabel('x');
ylabel('t');
zlabel('$\Phi_D(x,t)$', 'Interpreter', 'latex');
title(['Solución fundamental de la ecuación del calor, cuando D=', num2str(D)])
axis([-1, 1, 0, 1, 0, 3])
drawnow;
% Captura de la imagen para el GIF
frame = getframe(figura);
img = frame2im(frame);
[imind, cm] = rgb2ind(img, 256);
% Escribir la imagen en el archivo GIF
if i == 1
imwrite(imind, cm, output_gif, 'gif', 'LoopCount', Inf, 'DelayTime', 0.7);
else
imwrite(imind, cm, output_gif, 'gif', 'WriteMode', 'append', 'DelayTime', 0.7);
end
end%%% Código generado junto con Chat GPT para la representación de la soluciones de la ecuación del calor unidimensional para distintos valores del coeficiente de difusión.
clc
clear all
close all
% Vector de valores de D (coeficiente de difusión)
DD = [1,10,20,30,40,50,60,70,80,90,100];
% Función gaussiana
gaus = @(x) (exp(-x.^2));
% Nombre del archivo GIF de salida
output_gif = 'Convoluciones_teorica.gif';
% Crear la figura
figura = figure(1);
grid on;
view(3);
% Bucle para iterar sobre cada valor de D
for h = 1:length(DD)
D = DD(h);
% Funciones fundamentales y convolución
phi_D = @(x, t) exp(-x.^2./(4*D*t))./sqrt(4*D*pi*t);
convo = @(x,t) (exp(-x.^2./(4*D.*t+1))/sqrt(4*D.*t+1));
% Definición de la malla
xx = -10:0.1:10; % Rango de x
tt = 10^(-2):0.01:1; % Rango de t
% Inicialización de la matriz de convolución
conv = zeros(length(xx), length(tt));
% Cálculo de la convolución
for j = 1:length(tt)
auxt = tt(j);
for i = 1:length(xx)
auxx = xx(i);
val_conv(i,j) = convo(auxx, auxt);
end
end
% Graficar la superficie
clf;
hold on;
view(3);
surf(xx, tt, val_conv.');
xlabel('x');
ylabel('t');
zlabel('$\Phi_D(x,t)*N(x)$', 'Interpreter', 'latex');
shading flat;
shading interp;
colormap('jet');
title(['Soluciones en dominio no acotado, cuando D=', num2str(D)]);
axis([-10, 10, 0, 1, 0, 1]);
hold off;
drawnow;
% Captura de la imagen para el GIF
frame = getframe(figura);
img = frame2im(frame);
[imind, cm] = rgb2ind(img, 256);
% Escribir la imagen en el archivo GIF
if h == 1
imwrite(imind, cm, output_gif, 'gif', 'LoopCount', Inf, 'DelayTime', 0.7);
else
imwrite(imind, cm, output_gif, 'gif', 'WriteMode', 'append', 'DelayTime', 0.7);
end
end5 Referencias
- Sandro Salsa, Gianmaria Verzini. Partial Differential Equations in Action From Modelling to Theory ([1]).