Diferencia entre revisiones de «Ecuación del calor (ADMR)»
(→Códigos) |
(→Códigos) |
||
| Línea 128: | Línea 128: | ||
</source> | </source> | ||
| − | [[Archivo: | + | [[Archivo:Convoluciones_teorica.gif|500px|thumb|right|Soluciones de la ecuación del calor unidimensional para distintos valores del coeficiente de difusión.]] |
<source lang="matlab"> | <source lang="matlab"> | ||
Revisión del 18:16 16 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 solo permitió comprender mejor este fenómeno físico, sino que también llevó al desarrollo de las Series de Fourier, que fueron objeto de estudio en nuestro trabajo anterior.
Desde un punto de vista físico, es natural abordar este problema en un dominio acotado, como una barra metálica de longitud finita, dado que los sistemas reales suelen estar limitados en el espacio. Sin embargo, el afán de abstracción y generalización característico de la matemática llevó a Fourier a considerar también el caso de un dominio no acotado, es decir, una barra metálica de longitud infinita.
En este trabajo, analizamos cómo varían las soluciones de la ecuación del calor en dominios acotados y no acotados, identificando sus diferencias y explorando sus implicaciones en la modelización de procesos físicos reales.
2 To do list
1) (Problema acot y sol)Damos la sol. con frontera 0 --> para extender mejor a no acot 2) Dibujinchis 3) (Problema no acot) Dar el problema, sol, dibujinchi 4) Comparar ambas sol. error cuadrático, y el unif. y error numérico para intervalos crecientes [-a,a]
5) Pasar de Diric. a Neum. y dar la explicacion fis. de Neum. Dibujinchis comparación, solapadas 6) Ver cómo afecta la cte calorifica, densidad y k = relacion flujo gradiente (la D) en ambos casos.
3 Solución acotada vs Solución no acotada
Vamos a considerar el siguiente problema de calor bidimensional sobre una barra metálica de longitud [math]2a, a\gt0[/math] con condiciones Dirichlet en la frontera:
[math]\quad \begin{cases} u_{t} - u_{xx} = 0 \\ u(-a,t) = u(a,t) = 0 \quad \forall t \gt 0 \\ u(x,0) = Gaus \end{cases} [/math]
cuya 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 } 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, de forma que el sistema quede aislado. Para cierto [math] a \in \mathbb{R}[/math] consideraremos la ecuación del calor
[math]\quad \begin{cases} u_{t} - u_{xx} = 0 \\ u_x(-b,t) = u_x(b,t) = 0 \quad \forall t \gt 0 \\ u(x,0) = Gaus. \end{cases} [/math]
De nuevo podemos resolver el sistema, por ser homogéneo, mediante separación de variables, con [math] b \in \mathbb{R}[/math] y no necesariamente igual que con [math] a [/math]. Obteniendo
[math]\quad u(x,t) = \sum_{m=1}^\infty B_{m} cos\left(\frac{m\pi}{b} x\right) e^{-\dfrac{m^2\pi^2}{b^2} t}\quad \text{ donde } 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]
Veamos si, para valores de [math] a \text{y} b [/math] grandes, las soluciones previamente halladas distan mucho entre sí, es decir, vamos a estudiar los errores y las diferencias que hay entre ambas soluciones.
4 Códigos
%%% Código generado junto con Chat GPT para la representación de la base trigonométrica compleja.
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
close(pelicula);%%% Código generado junto con Chat GPT para la representación de la base trigonométrica compleja.
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];
mu = 0;
s = 1;
% 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
% Pausa para la visualización
pause(0.5);
end5 Referencias
- Sandro Salsa, Gianmaria Verzini. Partial Differential Equations in Action From Modelling to Theory ([1]).