Diferencia entre revisiones de «Ecuación del calor LAJS»

De MateWiki
Saltar a: navegación, buscar
(Nueva ecuación del calor con dato inicial discontinuo)
(Solución del problema y visualización)
Línea 218: Línea 218:
 
==== Solución del problema y visualización ====
 
==== Solución del problema y visualización ====
  
Ahora vamos a encontrar la solución al problema original utilizando el método de separación de variables. Consideramos la solución como la suma del estado estacionario y una solución transitoria  <math>w(x,t) </math> que cumple condiciones de contorno, es decir, u(x,t)=v(x)+w(x,t). La parte  <math>w(x,t) </math> se calcula mediante la serie de Fourier<math>w(x,t) = \sum_{n=1}^{\infty} b_n e^{-(n\pi)^2 t} \sin(n\pi x)</math>, donde los coeficientes <math>b_n</math> se calculan a partir de la condición inicial <math>w(x,0) = u(x,0) - v(x) = - 10 \, \mathbf{1}_{[1/3,2/3]}(x)</math>. Podemos aproximarla con métodos numéricos como la fórmula del trapecio:
+
Ahora vamos a encontrar la solución al problema original utilizando el método de separación de variables. Consideramos la solución como la suma del estado estacionario y una solución transitoria  <math>w(x,t) </math> que cumple condiciones de contorno, es decir, <math>u(x,t)=v(x)+w(x,t)</math>. La parte  <math>w(x,t) </math> se calcula mediante la serie de Fourier<math>w(x,t) = \sum_{n=1}^{\infty} b_n e^{-(n\pi)^2 t} \sin(n\pi x)</math>, donde los coeficientes <math>b_n</math> se calculan a partir de la condición inicial <math>w(x,0) = u(x,0) - v(x) = - 10 \, \mathbf{1}_{[1/3,2/3]}(x)</math>. Podemos aproximarla con métodos numéricos como la fórmula del trapecio:
  
 
{{matlab|codigo=
 
{{matlab|codigo=

Revisión del 13:14 7 abr 2026

1 Introducción

El objetivo de este trabajo será dibujar diferentes soluciones de la ecuación del calor en una dimensión, lo que nos ayudará a tener una idea más gráfica e intuitiva sobre las soluciones de este problema que hemos estudiado en clase.

2 Planteamiento y solución del problema

Comenzamos considerando una varilla metálica que ocupa el intervalo [math][0, 1][/math] y que se encuentra aislada por su superficie lateral, de forma que la conducción de calor únicamente ocurre en dirección longitudinal. La temperatura inicial de la varilla será de [math]10ºC[/math]. En el extremo derecho la temperatura se mantiene en [math]10ºC[/math], mientras que en el izquierdo la temperatura es siempre de [math]1ºC[/math]. Por tanto, si consideramos las constantes de conductividad térmica y calor específico iguales a uno, la ecuación que modeliza nuestro problema queda [math]u_t - u_{xx}=0, \quad x \in (0,1), \ t \gt 0[/math], sujeta a las condiciones de contorno [math]u(0,t) = 1[/math] (extremo izquierdo) y [math]u(1,t) = 10[/math] (extremo derecho). Por último, la condición inicial será [math]u(x,0) = 10 \quad \forall x \in [0,1][/math]. El sistema de EDPs que modeliza nuestro problema queda:

[math]\begin{cases} u_t - u_{xx}=0 & \text{en } (0,1) \times (0, \infty) \\[10pt] u(0,t) = 1 & t \gt 0 \\[5pt] u(1,t) = 10 & t \gt 0 \\[5pt] u(x,0) = 10 & x \in [0,1] \end{cases}[/math]
2.1 Solución estacionaria

En cuanto a la ecuación del estado estacionario, sabemos que ocurre al suponer [math]t \to \infty [/math] y que por tanto la solución ya no varía en tiempo, es decir, cuando [math] u_t \sim 0 [/math]. Entonces el problema para la solución estacionaria es

[math]\begin{cases} - v_{xx}=0 & \text{en } (0,1) \\[10pt] v(0) = 1 \\[5pt] v(1) = 10 \end{cases}[/math]

Lo que nos da una EDO que se resuelve fácilmente y se llega a la solución [math] v(x)=9x+1 [/math]. En la siguiente imagen podemos ver la gráfica de esta solución, que representa la temperatura que observaríamos si dejáramos pasar mucho tiempo bajo las condiciones descritas.

Visualización de la solución estacionaria


2.2 Solución del problema y visualización

A continuación hallamos la solución al problema original, que lo haremos por el método de separación de variables. La forma de resolverlo es considerando la solución como la suma del estado estacionario y una solución transitoria [math]w(x,t)[/math] que cumple condiciones de contorno, es decir, [math]u(x,t) = v(x) + w(x,t)[/math]. La parte [math]w(x,t)[/math] se calcula mediante la serie de Fourier [math]w(x,t) = \sum_{n=1}^{\infty} b_n e^{-(n\pi)^2 t} \sin(n\pi x)[/math], donde los coeficientes [math]b_n[/math] se calculan a partir de la condición inicial [math]w(x,0) = u(x,0) - v(x) = 10 - (9x + 1) = 9 - 9x[/math]. La solución final a nuestro problema es:

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

Para la visualización de esta solución hemos creado un código en Matlab que nos da una gráfica tridimensional, que utiliza los primeros 10 términos de la serie de Fourier en el intervalo de tiempo [0, 1]. En la imagen que genera el código podemos observar que el extremo derecho de la varilla comienza en una temperatura de [math]10^{\circ}C[/math], y sin embargo, en el extremo izquierdo la temperatura cae hasta [math]1^{\circ}C[/math]. Además se observa el fenómeno de Gibbs en la gráfica: las oscilaciones que se ven cerca de [math]t=0[/math] y [math]x=0[/math] son una consecuencia de usar solo 10 términos de la serie de Fourier. Al intentar aproximar una discontinuidad (el salto de [math]10^{\circ}C[/math] a [math]1^{\circ}C[/math]), aparecen estas oscilaciones que desaparecen a medida que el tiempo avanza y la solución se suaviza. Se aprecia que cerca de [math]t=1[/math], la superficie es prácticamente una superficie plana inclinada, lo que indica que el sistema ha alcanzado o está muy cerca de su estado estacionario.

% Parámetros iniciales
L = 1;  
t_final = 1;
Nx = 50;            
Nt = 50;            

x = linspace(0, L, Nx);
t = linspace(0, t_final, Nt);
[X, T] = meshgrid(x, t);

% Solución estacionaria: v = 9x + 1 
V = 9*X + 1;

% Parte transitoria: suma de los primeros 10 términos de Fourier 
W = zeros(size(X));
for n = 1:10
    bn = 18 / (n * pi);
    W = W + bn * exp(-(n*pi)^2 * T) .* sin(n*pi * X);
end

% Solución final: u(x,t) = v(x) + w(x,t) 
U = V + W;

% Gráfica
figure;
surf(X, T, U);
shading interp; % Suaviza los colores
colorbar;
title('Evolución de la Temperatura (Primeros 10 términos)');
xlabel('Posición (x)');
ylabel('Tiempo (t)');
zlabel('Temperatura (u)');
grid on;


Gráfica de la solución


3 Estudio del flujo de calor en los extremos

Para analizar el flujo de calor en los extremos de la barra a lo largo del tiempo utilizamos la ley de Fourier, que asegura que el flujo es proporcional al gradiente de temperatura: [math]q = -k u_x[/math]. Como en el problema hemos asumido que la conductividad térmica era uno, resulta que el flujo es igual a la derivada espacial evaluada en los bordes de la barra. La derivada respecto de [math]x[/math] que obtuvimos antes es:

[math]u_x = 9 + \sum_{n=1}^{\infty} b_n n\pi e^{-(n\pi)^2 t} \cos(n\pi x)[/math]

De nuevo, hemos desarrollado un código en Matlab para dibujar la evolución del flujo entrante y saliente. De la imagen que nos devuelve el código podemos interpretar varias cosas: en primer lugar, vemos que ambos flujos convergen al valor 9, lo que tiene sentido porque antes hemos calculado que la solución estacionaria era [math]v(x)=9x+1[/math]. Además en [math]x=0[/math] el flujo es muy elevado, y esto se debe a que, como la barra está a [math]10 \circ C[/math] en un extremo y a [math]1 \circ C[/math] en el otro, hay una salida muy fuerte de energía hacia el exterior por la parte izquierda de la barra. De la misma manera, en el extremo derecho inicialmente el flujo es cercano a cero porque la barra y el borde están a la misma temperatura, y el flujo empieza a variar cuando el enfriamiento de la izquierda llega al lado derecho. Esta gráfica está relacionada con la que hemos visto antes: el flujo es la pendiente de la superficie que hemos dibujado antes.

% Parámetros
L = 1;
t = linspace(0.01, 1, 100); % Mejor evitar t=0 por la discontinuidad inicial
flujo0 = zeros(size(t));
flujo1 = zeros(size(t));

% Cálculo de los flujos usando 10 términos
for i = 1:length(t)
    sum_i = 0;
    sum_d = 0;
    for n = 1:10
        bn = 18 / (n * pi);
        term_base = bn * (n * pi) * exp(-(n*pi)^2 * t(i));
        sum_i = sum_i + term_base * cos(0);          % cos(n*pi*0) = 1
        sum_d = sum_d + term_base * cos(n * pi);     % cos(n*pi) = (-1)^n
    end
    flujo0(i) = 9 + sum_i;
    flujo1(i) = 9 + sum_d;
end

% Gráfica
figure;
plot(t, flujo0, 'b', 'LineWidth', 2); hold on;
plot(t, flujo1, 'r', 'LineWidth', 2);
grid on;
legend('Flujo en x=0 ', 'Flujo en x=1');
title('Flujo de calor en los extremos a lo largo del tiempo');
xlabel('Tiempo (t)');
ylabel('Gradiente de Temperatura u_x');


Flujo de calor


4 Efecto de cambiar la conductividad

Ahora vamos a cambiar la conductividad térmica de la varilla de [math]\alpha=1[/math] a [math]\alpha=1/2[/math]. Esto quiere decir que ahora el calor se mueve de manera más lenta a lo largo de la varilla y que por tanto se tardará más en llegar al estado estacionario. Entonces tenemos que con este cambio la nueva ecuación del calor es:

[math]u_t - \frac{1}{2}u_{xx}=0[/math]

La nueva solución es muy parecida a la de antes:

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

Pero ahora la varilla tarda más en calentarse o enfriarse en cada punto, es decir, la solución se aproxima más despacio al estado estacionario.

Para compararlas, hemos creado un código en Matlab donde calcularemos las dos soluciones ([math]\alpha=1[/math] y [math]\alpha=1/2[/math]) usando los primeros 10 términos de la serie

L = 1; t_final = 1; Nx = 60; Nt = 60;
x = linspace(0, L, Nx);
t = linspace(0, t_final, Nt);
[X, T] = meshgrid(x, t);

% Estado Estacionario 
V1 = 9*X + 1; 
V2 = 9*0.5 + 1; % Valor en x=0.5

% Cálculo de la serie de Fourier para ambos coeficientes
W1 = zeros(size(X)); 
W2 = zeros(size(X)); 

for n = 1:10
    bn = 18 / (n * pi);
    % Caso alpha = 1
    W1 = W1 + bn * exp(-(n*pi)^2 * T) .* sin(n*pi * X);
    % Caso alpha = 1/2
    W2 = W2 + bn * exp(-0.5 * (n*pi)^2 * T) .* sin(n*pi * X);
end

U1 = V1 + W1;
U2 = V1 + W2;

% Grafica 1 (superficies 3D)
figure('Units', 'normalized', 'Position', [0.1, 0.2, 0.8, 0.4]);

subplot(1,2,1);
surf(X, T, U1); shading interp; colorbar;
title('Solución con \alpha = 1');
xlabel('Posición (x)'); ylabel('Tiempo (t)'); zlabel('Temp (u)');

subplot(1,2,2);
surf(X, T, U2); shading interp; colorbar;
title('Solución con \alpha = 1/2');
xlabel('Posición (x)'); ylabel('Tiempo (t)'); zlabel('Temp (u)');

% Gráfica de diferencias en el punto medio ---
x_idx = round(Nx/2); % Índice correspondiente a x=0.5
dif1 = U1(:, x_idx) - V2;
dif2 = U2(:, x_idx) - V2;

figure;
plot(t, dif1, 'b', 'LineWidth', 2); hold on;
plot(t, dif2, 'r', 'LineWidth', 2);
grid on;
title('Diferencia: u(1/2, t) - v(1/2)');
xlabel('Tiempo (t)'); ylabel('Temperatura (ºC)');
legend('\alpha = 1', '\alpha = 1/2');


Se ha detectado un bucle de plantilla: Plantilla:Imagen múltiple

5 Nueva ecuación del calor con dato inicial discontinuo

Ahora vamos a estudiar la ecuación del calor cuando cambiamos la temperatura inicial de la varilla. Mantenemos las condiciones de contorno constantes con temperatura fija de [math]10ºC[/math] en ambos extremos, pero ahora vamos a considerar un nuevo dato inicial que viene dado por la función discontinua:

[math]u_0(x)=10-10 \,\ \mathbf{1}_{[1/3,2/3]}(x)[/math].

Es decir, que la temperatura inicial es [math]10ºC[/math] en toda el dominio excepto en el intervalo $[1/3,2/3]$ donde vale [math]0ºC[/math]. Vamos ahora a resolver este nuevo problema.

5.1 Estado estacionario

El estado estacionario se obtiene imponiendo que la temperatura no depende del tiempo. Entonces el problema para la solución estacionaria es:

[math]\begin{cases} - v_{xx}=0 \\[10pt] v(0) = 10 \\[5pt] v(1) = 10 \end{cases}[/math].

La solución general es [math]v(x)=Ax+B[/math]. Aplicamos las condiciones de contorno y obtenemos que [math]B=10 [/math], [math]A=0 [/math] y por tanto, la solución es [math]v(x)=10 [/math].

5.2 Solución del problema y visualización

Ahora vamos a encontrar la solución al problema original utilizando el método de separación de variables. Consideramos la solución como la suma del estado estacionario y una solución transitoria [math]w(x,t) [/math] que cumple condiciones de contorno, es decir, [math]u(x,t)=v(x)+w(x,t)[/math]. La parte [math]w(x,t) [/math] se calcula mediante la serie de Fourier[math]w(x,t) = \sum_{n=1}^{\infty} b_n e^{-(n\pi)^2 t} \sin(n\pi x)[/math], donde los coeficientes [math]b_n[/math] se calculan a partir de la condición inicial [math]w(x,0) = u(x,0) - v(x) = - 10 \, \mathbf{1}_{[1/3,2/3]}(x)[/math]. Podemos aproximarla con métodos numéricos como la fórmula del trapecio:

x = linspace(0,1,200);
t = linspace(0,1,100);
[X,T] = meshgrid(x,t);

u = 10*ones(size(X)); % parte estacionaria

for n=1:10
    f = @(x) -10*(x>=1/3 & x<=2/3).*sin(n*pi*x);
    bn = 2*trapz(x,f(x));
    
    u = u + bn*sin(n*pi*X).*exp(-n^2*pi^2*T);
end

surf(X,T,u)
shading interp
xlabel('x')
ylabel('t')
zlabel('u(x,t)')
title('Evolución de la temperatura')


6 Ecuación del calor y solución con dato inicial [math]f_{\sigma}[/math]

Consideramos el problema de Cauchy en [math]\mathbb{R}[/math]:

[math]\begin{cases} u_t = u_{xx}, \\ u(x,0) = f_{\sigma}(x), \end{cases} x \in \mathbb{R}, t \gt 0,[/math]

con [math]f_{\sigma}[/math] de soporte en [math](-1, 1)[/math]. La solución viene dada por la convolución con la solución fundamental de la ecuación del calor:

[math]u(x,t) = \int_{-\infty}^{\infty} G(x - y, t) f_{\sigma}(y) \, dy, \quad G(z,t) = \frac{1}{\sqrt{4\pi t}} e^{-z^2/(4t)}.[/math]

7 Promedio de la temperatura en [math]x = 0[/math] a lo largo del tiempo

Calculamos la esperanza matemática de la temperatura, fijando [math] x=0 [/math]. Por las propiedades de la esperanza,

[math]\mathbb{E}[u(0,t)] = \int_{-\infty}^{\infty} G(-y, t) \mathbb{E}[f_{\sigma}(y)] \, dy = 0,[/math]

porque [math]\mathbb{E}[f_{\sigma}(y)] = 0[/math] (los coeficientes tienen media cero). Por tanto, la temperatura esperada en [math]x = 0[/math] es nula para todo [math]t \gt 0[/math].