Ecuación del calor. Yan, Otelo, Mika

De MateWiki
Revisión del 12:35 7 mar 2024 de Otelo (Discusión | contribuciones) (Cambios en las condiciones de frontera y principio del máximo)

Saltar a: navegación, buscar
Trabajo realizado por estudiantes
Título Ecuación del calor. Grupo 6-A
Asignatura EDP
Curso 2023-24
Autores Miguel Cazorla Pedraza

Otelo Gallego Ayala Yan Wang

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


1 Introducción

En este articulo primero estudiaremos la ecuación del calor en dominio acotado, y más tarde trataremos su solución fundamental en todo [math] \mathbb{R} [/math]. Además, graficaremos los resultados para entender mejor la teoría de estas ecuaciones y compararemos diversos casos.

2 Ecuación del calor I

Vamos a dibujar diferentes soluciones de la ecuación del calor en una dimensión. Para ello, partimos del siguiente enunciado:

[math] \textit{Se considera una varilla metálica que ocupa el intervalo [0,1] y que se encuentra aislada por su superficie lateral, de manera que la conducción de calor sólo se produce}[/math] [math] \textit{en la dirección longitudinal. La temperatura inicial de la varilla es } [/math] [math] 0^oC [/math]. [math] \textit{ En el extremo izquierdo se consigue mantener la temperatura a } 0^oC \textit{mientras que en el} [/math] [math] \textit{ derecho la temperatura es de } 1^oC [/math].

Suponiendo que tanto la conductividad térmica como el calor específico tienen un valor constante [math] 1 [/math], y llamando [math] u(x,t) [/math] a la función temperatura en función del espacio y el tiempo, tenemos que el anterior enunciado se ve modelizado por el siguiente sistema EDP:

[math] \left\{ \frac{du}{dt}(x,t) - \frac{d^2u}{dx^2}(x,t)=0, \hspace{5mm} x\in[0,1] \hspace{3mm} t\gt0 \atop u(x,0)=0, \hspace{5mm} u(0,t)=0, \hspace{5mm} u(1,t)=1, \hspace{5mm} x\in[0,1] \hspace{3mm} t\gt0 \right. [/math]

Para dar solución a este sistema, resolveremos primero el problema resultante de tomar [math] t \rightarrow \infty [/math], que implica [math] \frac{du}{dt}(x,t) = 0 [/math] por lo que se denomina caso estacionario.

[math] \left\{ - \frac{d^2V}{dx^2}(x)=0, \hspace{5mm} x\in[0,1]\atop \hspace{5mm} V(0)=0, \hspace{5mm} V(1)=1 \hspace{5mm} \right. [/math]

La solución estacionaria es [math] V(x) = x [/math]. Veamos cómo es su representación gráfica en 3D:

Solución estacionaria
%Resumen: creamos una matriz que representa una malla de puntos (tiempo,
%espacio) y en cada una de las columnas introducimos el valor de x para
%todos los tiempos

%matriz
evaluaciones = zeros(100,100);

%límite temporal y vectores 
T = 1;
t = linspace(0,T,100);
x = linspace(0,1,100);

%rellenamos la matriz 
for j=1:100
        evaluaciones(:,j) = x(j).*ones(100,1);
end

%representación gráfica
surf(t,x,evaluaciones')
title('Solución estacionaria')
xlabel('Tiempo')
ylabel('Espacio')
zlabel('Temperatura (°C)')


La solución del sistema original por separación de las variables que obtenemos es:

[math] u(x,t) = x + \sum_{k=1}^{\infty}{\frac{2(-1)^k}{k\pi}\sin(k \pi x)e^{-k^2 \pi^2 t}} [/math]

Y su representación gráfica:

Solución del problema original
%Resumen: la idea del programa es crear una matriz de pares (tiempo,
%espacio) y en cada uno de esos puntos calcular la aproximación de la
%solución mediante un bucle for que realiza la suma de términos de la serie

%creamos la malla en  la que introduciremos las evaluaciones 
%la condición frontera del extremo izquierdo queda impuesta por ser una
%matriz de ceros 
evaluaciones = zeros(100,100);

%imponemos la condición frontera del extremo derecho
evaluaciones(:,100) = ones(100,1);

%limite temporal y vectores de tiempos y espacios
T = 1;
t = linspace(0,T,100);
x = linspace(0,1,100);

%coeficiente de conductividad térmica
cct = 1;

%en cada punto de la malla sumamos los diez primeros términos de la serie
%obtenida como solución. Después, sumamos también la solución estacionaria,
%que para este problema es x
for i = 1:100
    for j=2:99
        for k = 1:10
            evaluaciones(i,j) = evaluaciones(i,j) + (1/(k*pi))*2*((-1)^k)*exp(-cct*(k^2)*(pi^2)*(t(i)))*sin(k*pi*(x(j)));
        end
        evaluaciones(i,j) = evaluaciones(i,j)+x(j);
    end
end

%representación gráfica
surf(t,x,evaluaciones')
title('Solución del problema original')
xlabel('Tiempo')
ylabel('Espacio')
zlabel('Temperatura (°C)')

Podemos observar que a medida que aumenta t, la representación de la solución se va pareciendo más a la estacionaria.

A continuación observamos en una gráfica el flujo de calor saliente y entrante en ambos extremos de la varilla a lo largo del tiempo:

YAN

3 Cambio en el coeficiente de conductividad térmica

En este apartado vamos a variar el coeficiente de conductividad térmica de 1 a 1/2. Esto nos deja la siguiente ecuación diferencial:

[math] \frac{du_{1/2}}{dt}(x,t) - \frac{1}{2}\frac{d^2u_{1/2}}{dx^2}(x,t)=0 [/math]

Nótese que este cambio en el coeficiente de conductividad no tiene influencia en la solución del problema estacionario, por lo que tras homogeneizar las condiciones frontera resulta el siguiente sistema:

[math] \left\{ \frac{du_{1/2}}{dt}(x,t) - \frac{1}{2}\frac{d^2u_{1/2}}{dx^2}(x,t)=0, \hspace{5mm} x\in[0,1]\hspace{3mm} t\gt0 \atop u_{1/2}(x,0)=x , \hspace{5mm} u_{1/2}(0,t)=0, \hspace{5mm} u_{1/2}(1,t)=0, \hspace{5mm} x\in[0,1]\hspace{3mm} t\gt0 \right. [/math]


Por tanto, la solución para este caso es:

[math] u_{1/2}(x,t) = x + \sum_{k=1}^{\infty}{\frac{2(-1)^k}{k\pi}\sin(k \pi x)e^{\frac{-k^2 \pi^2 t}{2}}} [/math]

Y su representación gráfica, obtenida con el mismo código que en el apartado anterior pero con coeficiente de conductividad térmica (cct) 1/2 es la siguiente:

Representación de u con cct = 1/2

Vemos que a simple vista tiene una apariencia casi idéntica a la solución del problema original. Por ello, para entender la influencia del coeficiente de conductividad en la función solución del sistema, veamos las diferencias entre la soluciones [math] u_{1/2} [/math] , [math] u [/math] y la solución estacionaria evaluada en [math] x=\frac{1}{2} [/math]

Representación de la diferencia para cct=1
Representación de la diferencia para cct=1/2
%Resumen: En este programa, primero creamos vectores de las
%soluciones en x=1/2 con distintos coeficientes de conductividad mediante 
% un bucle for. Más tarde se calculan las diferencias en x=1/2 entre estas
%soluciones y la estacionaria, y el %programa acaba gráficando los resultados.

%Definimos la matriz de evaluaciones en x=1/2, y los vectores tiempo y espacio.
%vector de coeficientes de conductividad termica
coefs = [1;1/2;4;1/5;1/10]; 
evaluaciones= zeros(5,100); %solo las de x=1/2 para cada coeficiente
T = 1;
t = linspace(0,T,100);
x = linspace(0,1,100);

%calculamos las soluciones en x=1/2 para cada coeficiente de coefs
for i = 1:length(coefs)
        for k = 1:10
            for j = 1:100
            evaluaciones(i,j) = evaluaciones(i,j) + (1/(k*pi))*2*((-1)^k)*exp(-coefs(i)*(k^2)*(pi^2)*(t(j)))*sin(k*pi*(x(50)));
            end
        end
        evaluaciones(i,:) = evaluaciones(i,:) + x(50)*ones(1,100); %sumamos la estacionaria
end

%Aquí el vector en x=1/2 de la solución estacionaria.
evaluacioncte=zeros(1,100);
for i = 1:100
    evaluacioncte(:,i)=evaluacioncte(:,i)+x(50);
end

%para cada coeficiente graficamos la diferencia
for c = 1:length(coefs)
        diferencias = evaluaciones(c,:)-evaluacioncte;
        figure(c)
        plot(t,diferencias)
        title("Diferencia u(1/2,t)-V(1/2) para cct ="+ num2str(coefs(c)) )      
        xlabel('Tiempo')             
        ylabel('Diferencia')
        ylim([-0.6,0.1])
end


En estas gráficas de diferencias podemos ver como ambas se acercan al valor cero según se va aumentando la [math] t [/math] ya que las soluciones se acercan más a la estacionaria. Además, podemos ver que la solución con el coeficiente de conductividad más bajo lo hace de una forma más lenta que la original. De hecho, probando con distintos valores para este coeficiente podemos concluir que cuanto menor es, más tarda en alcanzarse la solución estacionaria. A continuación se muestran las gráficas obtenidas para coeficientes [math] 4, \frac{1}{5} y \frac{1}{10} [/math] en las que apreciamos mejor el efecto mencionado.

Representación de la diferencia para cct=4
Representación de la diferencia para cct=1/5
Representación de la diferencia para cct=1/10

4 Cambio en la condición inicial

Pasamos ahora a variar la condición inicial. Para ello, tendremos que la temperatura en el extremo derecho es también 0 °C, pero consideramos que la temperatura inicial de la barra viene dada por la función [math] u_0(x) = \max\{0, 1-4·|x-1/2|\} [/math]. Así, el sistema EDPS resultante es el siguiente:

[math] \left\{ \begin{array}{ll} \frac{du}{dt}(x,t) - \frac{d^2u}{dx^2}(x,t)=0, \hspace{5mm} x\in[0,1] \hspace{3mm} t\gt0 \\ u(x,0)= u_0(x) = \max\{0, 1-4·|x-1/2|\} - x, \hspace{5mm} x\in[0,1] \\ u(0,t)=0,\hspace{3mm} t\gt0\\ u(1,t)=0,\hspace{3mm} t\gt0 \end{array} \right. [/math]

En este caso, la solución estacionaria es [math] V(x) = 0 [/math] y por tanto, la gráfica de la temperatura según el espacio y el tiempo es:

Solución estacionaria para la nueva condición inicial
%matriz
evaluaciones = zeros(100,100);

%representación gráfica
surf(t,x,evaluaciones')
title('Solución estacionaria')
xlabel('Tiempo')
xlim([0,1])
ylabel('Espacio')
ylim([0,1])
zlabel('Temperatura (°C)')
zlim([-0.1,1])


La solución del sistema por separación de las variables pierde el término x por ser nula la estacionaria y se queda en:

[math] u(x,t) = \sum_{k=1}^{\infty}{c_k\sin(k \pi x)e^{-k^2 \pi^2 t}} [/math]

donde [math]c_k = 2·\int_{0}^{1}\sin(k \pi x)·u_0(x) \hspace{3mm} dx[/math], tras haber considerado la extensión impar de [math]u_0(x)[/math] en [math][-1,1][/math]

Para este sistema no hemos calculado una expresión de la solución, sino que hemos ido calculando los coeficientes de Fourier con la regla del trapecio para cada k y hemos obtenido la siguiente gráfica:

Solución para la nueva condición inicial
%Resumen: la idea del programa es crear una matriz de pares (tiempo,
%espacio) y en cada uno de esos puntos calcular la aproximación de la
%solución mediante un bucle for que realiza la suma de términos de la serie
%calculada

%creamos la malla en  la que introduciremos las evaluaciones 
evaluaciones2 = zeros(100,100); 
%quedan impuestas los condiciones frontera por ser una matriz de ceros ya
% que posteriormente no modificamos ni la primera ni la última columna

%limite temporal y vectores de tiempos y espacios
T = 1;
t = linspace(0,T,100); 
x = linspace(0,1,100); 

%funcion de la condicion inicial
cond =@(y) max(0,1-4*abs(y-1/2)); 

%imponemos la condicion inicial 
evaluaciones2(1,:) = cond(x)';

%en el siguiente bucle for, para cada k calculamos el coeficiente de
%Fourier y sumamos  el correspondiente término de la serie en cada punto de
% la malla. Para el cálculo de la integral que nos da el coeficiente de
% Fourier usamos la regla del trapecio con 1000 puntos en [0,1]
for k=1:100 
    %puntos
    N=1000;  
    %extremos del intervalo
    a=0; b=1;            
    h=(b-a)/N; 
    %partición del intervalo
    u=a:h:b;           
    %f es la funcion que queremos integrar
    f=(cond(u).*sin(k.*pi.*u))'; 
    %vector de pesos
    w=ones(N+1,1);                 
    w(1)=1/2; w(N+1)=1/2;
    %m es el valor de la integral
    m=h*w'*f; 
    %calculo final de los coeficientes del seno 
    coef = 2*m;   
    %sumamos los 100 primeros términos de la serie en cada punto de la
    % malla con los nuevos coeficientes
    for j =2:99
        for i = 2:100
                evaluaciones2(i,j) = evaluaciones2(i,j) + coef.*sin(k.*pi.*(x(j))).*exp(-(k^2).*(pi^2).*(t(i))); 
        end
    end
end

%plot en 3D
surf(t,x,evaluaciones2') 
xlabel('Tiempo')
ylabel('Espacio')
zlabel('Temperatura (°C)')


APARTADO DE LOS FLUJOS - YAN

5 Cambios en las condiciones de frontera y principio del máximo

Por último, repetiremos el apartado anterior pero esta vez suponiendo que la barra está aislada térmicamente en el extremo derecho. Esto quiere decir que pasamos a tener una condicion de frontera de tipo Neumann en [math] x = 1 [/math] :

[math] u_t(1,t) = 0 [/math]

Si introducimos esta condición en el sistema queda así:

[math] \left\{ \begin{array}{ll} \frac{du}{dt}(x,t) - \frac{d^2u}{dx^2}(x,t)=0, \hspace{5mm} x\in[0,1] \hspace{3mm} t\gt0 \\ u(x,0)= u_0(x) = \max\{0, 1-4·|x-1/2|\} - x, \hspace{5mm} x\in[0,1] \\ u(0,t)=0,\hspace{3mm} t\gt0\\ u_t(1,t)=0,\hspace{3mm} t\gt0 \end{array} \right. [/math]

Al resolver por separación de variables obtenemos las siguientes autofunciones:

[math] \{sin((2k-1)\frac{\pi}{2}x)\}_{k\in\mathbb{N}} [/math]

Véase que esta no es la base trigonométrica usual, y de hecho este conjunto de funciones no tendría por qué ser una base. Sin embargo, se tiene que estas forman un conjunto completo en [0,1] y además se puede comprobar que son ortogonales analíticamente puesto que se cumple que:

[math] \int_{0}^{1}\sin((2l-1)\frac{\pi}{2}x)·\sin((2m-1)\frac{\pi}{2}x) \hspace{3mm} dx = \frac{\frac{sin(\pi(l-m))}{l-m}-\frac{sin(\pi(l+m-1))}{l+m-1}}{2\pi} =0 \hspace{5mm} \forall l\neq m \in \mathbb{N} [/math]

Así, podemos concluir que este conjunto de autofunciones es efectivamente una base. Por ello, la solución de nuestro sistema EDPS resulta ser:

[math] u(x,t) = \sum_{k=1}^{\infty}{c_k\sin((2k-1)\frac{\pi}{2}x)e^{-(2k-1)^2 \frac{\pi^2}{4} t}} [/math]

donde [math]c_k = 2·\int_{0}^{1}\sin((2k-1)\frac{\pi}{2}x)·u_0(x) \hspace{3mm} dx [/math], tras haber considerado la extensión impar de [math]u_0(x)[/math] en [math][-1,1][/math]

Gráficamente:

Solución para la condición d frontera tipo Neumann
%Resumen: la idea del programa es crear una matriz de pares (tiempo,
%espacio) y en cada uno de esos puntos calcular la aproximación de la
%solución mediante un bucle for que realiza la suma de términos de la serie
%calculada

%creamos la malla en  la que introduciremos las evaluaciones 
evaluaciones2 = zeros(100,100); 
%queda impuesta la condición frontera por ser una matriz de ceros ya
% que posteriormente no modificamos la primera columna

%limite temporal y vectores de tiempos y espacios
T = 1;
t = linspace(0,T,100); 
x = linspace(0,1,100); 

%funcion de la condicion inicial
cond =@(y) max(0,1-4*abs(y-1/2)); 

%imponemos la condicion inicial 
evaluaciones2(1,:) = cond(x)';

%en el siguiente bucle for, para cada k calculamos el coeficiente de
%Fourier y sumamos  el correspondiente término de la serie en cada punto de
% la malla. Para el cálculo de la integral que nos da el coeficiente de
% Fourier usamos la regla del trapecio con 1000 puntos en [0,1]
for k=1:100 
    %puntos
    N=1000;  
    %extremos del intervalo
    a=0; b=1;            
    h=(b-a)/N; 
    %partición del intervalo
    u=a:h:b;           
    %f es la funcion que queremos integrar
    f=(cond(u).*sin((2*k-1).*(pi/2).*u))'; 
    %vector de pesos
    w=ones(N+1,1);                 
    w(1)=1/2; w(N+1)=1/2;
    %m es el valor de la integral
    m=h*w'*f; 
    %calculo final de los coeficientes del seno 
    coef = 2*m;   
    %sumamos los 100 primeros términos de la serie en cada punto de la
    % malla con los nuevos coeficientes
    for j =2:100
        for i = 2:100
                evaluaciones2(i,j) = evaluaciones2(i,j) + coef.*sin((2*k-1).*(pi/2).*(x(j))).*exp(-((2*k-1)^2).*(pi^2)/4.*(t(i))); 
        end
    end
end

%plot en 3D
surf(t,x,evaluaciones2') 
xlabel('Tiempo')
ylabel('Espacio')
zlabel('Temperatura (°C)')


Observamos que la nueva gráfica es muy parecida a la anterior y prácticamente lo único que cambia es el extremo [math]x=1[/math], donde hemos impuesto la condición frontera tipo Neumann. En esta gráfica se dibuja una curva en dicho extremo que primero crece un poco más que la del otro extremo y después tiende a la estacionaria (0). Esto se debe al flujo nulo, que hace que se caliente hasta que empieza a compensarse la temperatura a lo largo de la varilla.

Por último, comprobaremos si se cumple el Principio del Máximo en este problema. Recordamos el enunciado:

[math] \textbf{Teorema: Principio del Máximo.} [/math]

Sea [math] Q_T=\Omega \times (0,T)[/math] con [math] \Omega [/math] abierto de [math] \mathbb{R}^n [/math] y [math] T\gt0 [/math]. Sea [math] u\in C^{2,1}(Q_T)\cap (\bar{Q}_T)[/math] tal que verifica [math] u_t-Δu \leq 0 [/math] en [math] Q_T [/math]. Entonces [math] u [/math] alcanza su máximo en la frontera parabólica [math] \partial _p Q_T [/math], esto es:

Solución para la condición d frontera tipo Neumann

Como podemos observar en la gráfica el máximo de la solución fundamental se alcanza en [math] t=0 [/math] y el mínimo en t=1 y en los extremos de la varilla.

[math] \max_{(x,t)\in Q_T} u(x,t) = \max_{(x,t)\in \partial _pQ_T} u(x,t)[/math]

6 Ecuación del calor II

En esta sección vamos a dibujar diferentes soluciones de la ecuación del calor usando la solución fundamental.


En primer lugar, tomamos [math]x \in [-1,1] [/math] y [math]t \in [10^{-2},1] [/math] para dibujar la solución fundamental de la ecuación del calor en dimensión 1, que como vimos en clase es:

[math] u(x,t) = \frac{1}{2 \sqrt{\pi t}}e^{-\frac{1}{4t}x^2} [/math]
Solución fundamental
%Resumen: creamos una matriz que representa una malla de puntos (tiempo,
%espacio) y en cada punto introducimos el valor de la solución fundamental
%evaluada en este

%matriz
evaluaciones = zeros(100,100);

%límite temporal y vectores 
T = 1;
t = linspace(10^(-2),T,100);
x = linspace(-1,1,100);

%introducimos los valores de la solucion en cada punto
for i = 1:100
    for j=1:100
        evaluaciones(i,j) = 1/(2*sqrt(pi*t(i)))*exp(-(x(j)^2)/(4*t(i)));
    end
end

%representacion grafica
surf(t,x,evaluaciones')
title('Solución fundamental')
xlabel('Tiempo')
ylabel('Espacio')
zlabel('Temperatura (°C)')


Ahora, vamos a dibujar la solución de la ecuación del calor en una dimensión en el semiespacio [math] x \gt 0 [/math] con condiciones:

[math] u(0,t) = 1 [/math]
[math] u(x, 0) = 0 [/math]

Para ello, ...

A contuación veremos la relación de la ecuación del calor con la convolución.

Si tomamos la función [math]u_0(x) = 1_{[-1,1]} [/math] como condición inicial y denotamos la solución fundamental como [math] K(x,t) [/math] , entonces:

[math] u(x,t) = \int_{-\infty}^{\infty} K(x-y,t)·u_0(y) dy [/math]

es la solución de [math] u_t - u_{xx} = 0[/math] para [math] x \in \mathbb{R} [/math]

Si representamos esta solución para distintos valores de t obtenemos las siguientes gráficas:

Solución para t = 0.001
Solución para t = 0.01
Solución para t = 0.1

Podemos concluir que ...

Para terminar, tomamos el intervalo espacial [math] (x_1,x_2) = [-1,1]^2[/math] para representar la solución fundamental de la ecuación del calor en dimensión 2 para los mismos valores de t:

Solución n=2 para t = 0.001
Solución n=2 para t = 0.01
Solución n=2 para t = 0.1

Observamos que cuanto más cerca está t de 0, más singular es la solución.