Ecuación del calor (ADMR)

De MateWiki
Revisión del 21:35 17 mar 2025 de Ángel De Lucas (Discusión | contribuciones) (Introducción)

Saltar a: navegación, buscar
Trabajo realizado por estudiantes
Título Ecuación del calor (Grupo ADMR).
Asignatura EDP
Curso 2024-25
Autores
  • Ángel De Lucas Miranda,
  • Daniel Rodríguez Calderón,
  • Marcos Cabellos Hernández,
  • Rafael Pascual Ortega.
Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura


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 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

En esta sección se dará por conocida la solución fundamental y el método de separación de variables.

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) = e^{-x^2} \end{cases} [/math]


Físicamente, podemos interpretar que en el instante inicial hay una fuente de calor en el centro de la barra -o dos fuentes de frío a temperatura constante en los extremos- y éste se esparce por la barra. Matemáticamente, se usará la paridad de la función [math] e^{-x^2} [/math] y que para [math] x [/math] muy grandes o muy pequeños tiende a cero. A partir del instante inicial, los extremos de la barra se fuerzan a temperatura cero. 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 } 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 y con la misma interpretación física para el instante inicial. 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{cases} u_{t} - u_{xx} = 0 \\ u_x(-b,t) = u_x(b,t) = 0 \quad \forall t \gt 0 \\ u(x,0) = e^{-x^2}. \end{cases} [/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 } 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

Solución fundamental de la ecuación del calor unidimensional para distintos valores del coeficiente de difusión. La representación gráfica parte del tiempo inicial [math][/math] 0.01, [math][/math] esperando una delta de Dirac en el instante inicial. Nótese que en este tiempo, a mayor coeficiente de difusión más se ha difundido el calor en el sistema, lo que se nota especialmente en el valor máximo observado y su disminución cuanto más crece el coeficiente.
%%% 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
Soluciones de la ecuación del calor unidimensional para distintos valores del coeficiente de difusión.
%%% 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

end

5 Referencias

  • Sandro Salsa, Gianmaria Verzini. Partial Differential Equations in Action From Modelling to Theory ([1]).