Diferencia entre revisiones de «Ecuación del calor (Grupo ILIA)»
| Línea 144: | Línea 144: | ||
<center> | <center> | ||
<math> | <math> | ||
| − | u(x) = 2 \left(-\frac{2x-1}{2}H\left(\frac{2x-1}{2}\right +\frac{x}{2}\right) | + | u(x) = 2 \left(-\frac{2x-1}{2}H\left(\frac{2x-1}{2}\right) +\frac{x}{2}\right) |
</math> | </math> | ||
</center> | </center> | ||
Revisión del 09:31 20 mar 2025
| Trabajo realizado por estudiantes | |
|---|---|
| Título | Ecuación del calor. Grupo ILIA |
| Asignatura | EDP |
| Curso | 2024-25 |
| Autores | Ignacio Campos Paños, Ignacio Martínez Cerezo, Alicia Ruiz Dominguez, Luis Ramos Ortiz |
| Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura | |
Contenido
1 Introducción
La ecuación del calor es una de las ecuaciones en derivadas parciales más fundamentales en la física y las matemáticas aplicadas, modelando la difusión de la temperatura en distintos medios. Su estudio es esencial en múltiples disciplinas, desde la ingeniería térmica hasta la biomedicina, donde se analiza la propagación del calor en tejidos biológicos. En este trabajo, estudiaremos el comportamiento de esta ecuación en una barra unidimensional aislada en el intervalo [0,1], imponiendo condiciones de frontera con temperatura constante.
En la vida real, las fuentes de calor no necesariamente tienen por qué estar en los extremos, por lo que también buscamos un enfoque más aplicado y realista. Nos enfocaremos en la propagación del calor cuando existe una fuente térmica localizada, es decir, introduciremos una fuente de calor puntual en algún punto en el interior de la barra (0,1) y veremos cómo se comporta la ecuación del calor. En la práctica, muchas aplicaciones incluyen fuentes térmicas, como calefactores, reacciones químicas o dispositivos electrónicos que generan calor; y esto tiene aplicaciones en procesos industriales, generación de energía y modelización de sistemas térmicos.
En resumen, exploraremos cómo la presencia de una fuente de calor afecta a la distribución de la temperatura en el tiempo, resolviendo el problema tanto analíticamente como numéricamente. A través de esta aproximación, podremos comprender mejor la influencia de fuentes térmicas en sistemas difusivos y validar métodos numéricos para resolver ecuaciones en derivadas parciales. Estudiaremos varios aspectos:
- Ecuación del calor sin fuente térmica: resolvemos el problema con condiciones iniciales y de frontera, y obtenemos la solución estacionaria.
- Ecuación del calor con fuente: en este caso, la ecuación incluye un término [math] f(x,t) [/math] que representa una generación de calor interna. Esto hace que la temperatura no solo se difunda, sino que también aumente o disminuya dependiendo de la fuente.
- Comparación entre ambas: veremos cómo la solución cambia al introducir un calentamiento localizado, observando si se alcanza un estado estacionario diferente o si la temperatura sigue variando en el tiempo.
2 Ecuación del calor
La ecuación de difusión del calor original sin fuentes de calor externas viene dada por: [math] u_t=u_{xx} [/math] donde la función u(x,t) es la función temperatura en cada posición e instante de tiempo, [math]u_t[/math] la derivada temporal y [math]u_{xx}[/math] la segunda derivada espacial, que modela la difusión del calor.
Si consideramos que la condición inicial en [math]t=0[/math] es [math]u(x,0)=\operatorname{sen}(x)[/math], podemos obtener el siguiente problema de ecuación del calor con condiciones frontera:
Resolviendo este problema obtenemos que la solución estacionaria es:
y la solución general:
Vamos a graficar la solución.
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# puntos de la malla
x = np.linspace(0, 1, 50)
t = np.linspace(0, 0.5, 50)
X, T = np.meshgrid(x, t) # malla
U = np.sin(2 * np.pi * X) * np.exp(-4 * np.pi**2 * T) # sol general
# figura
fig = plt.figure(figsize=(10, 6))
ax = fig.add_subplot(111, projection='3d')
# grafica
ax.plot_surface(X, T, U, cmap='viridis')
ax.set_xlabel('Posición x')
ax.set_ylabel('Tiempo t')
ax.set_zlabel('Temperatura u(x,t)')
ax.set_title('Solución de la ecuación del calor')
plt.show()Como podemos ver la solución tiende rápidamente a la solución estacionaria en el que toda la barra está a 0 grados, que es lógico si tenemos en cuenta que los extremos tienen temperatura constante de 0.
3 Ecuación del calor con fuente térmica puntual
En los casos sencillos de la ecuación del calor, como los vistos en clase, no existe aporte de calor a nuestro sistema o, si existe, es regular a lo largo del espacio y el tiempo. Sin embargo, en muchas situaciones prácticas, el calor puede ser generado en puntos específicos del dominio. Para modelar este efecto, introducimos una función [math]f(x,t)[/math] que representa un nuevo foco de calor en un punto concreto [math]x_0[/math] de la barra de manera localizada. Así, la ecuación del calor modificada queda como sigue:
donde [math]f(x,t)[/math] es una fuente térmica localizada, que modelamos como:
Aquí, [math]q(t)[/math] representa la cantidad de calor que se añade en función del tiempo y [math]\delta(x-x_0)[/math] es la delta de Dirac, que hace que el calor se añada únicamente en el punto [math]x_0[/math]. Al emplear la distribución [math]\delta[/math] de Dirac, estamos imponiendo que esta adición energética (calorífica) se encuentre extremadamente localizada, como la acción de un láser sobre una barra que simplificamos como unidimensional.
Para ilustrar este fenómeno, consideramos el mismo problema de la sección 2 pero con la fuente térmica puntual en [math]x_0=0.5[/math], con una intensidad constante [math]q(t)=2[/math]. Obtenemos el siguiente problema:
Si intentamos resolver este problema suponiendo la existencia de una solución estacionaria, debemos realizar la suposición de que la integral de la función [math]\delta[/math] es la función Heaviside, es decir:
[math] H(x) = \begin{cases} 0 & x \lt0\\ 1 & x \geq 0 \end{cases} [/math]
Con esta información:
[math] \begin{align*} -u_{xx}(x) &= 2\delta(x-0.5)\\ \Rightarrow -u_x(x) &= 2\int \delta(x-0.5)dx = 2H(x-0.5) + 2C_1= \begin{cases} 2C_1 &\text{ si } x\lt 0.5\\ 2+2C_1 & \text{ si } x \geq 0.5 \end{cases}\\ \Rightarrow -u(x) &= 2\int H(x-0.5)dx + 2C_1\cdot x\\ \Rightarrow -u(x) & = 2\cdot\left((x-0.5)H(x-0.5) + C_2 + C_1\cdot x\right)\\ \end{align*} [/math]
Evaluando en las condiciones iniciales, llegamos a:
[math] \begin{align*} 0 &= -u(0) = (-0.5)H(-0.5) + C_2\\ 0&= 0 + C_2 \\ \Rightarrow C_2 &= 0 \end{align*} [/math]
[math] \begin{align*} 0 &= -u(1) = (0.5)H(0.5) + C_1+ C_2\\ 0&= 0.5 + C_1\\ \Rightarrow C_1 &= -0.5 \end{align*} [/math]
Luego nuestra solución tendría la forma:
[math] u(x) = 2 \left(-\frac{2x-1}{2}H\left(\frac{2x-1}{2}\right) +\frac{x}{2}\right) [/math]
Representando nuestra solución estacionaria, llegamos a:
Por la forma de nuestra ecuación cabría esperar una solución que, además de las condiciones iniciales, tenga (y a simple vista se aprecie) una zona de temperatura máxima en [math] x_0 = 0.5 [/math], donde a ambos lados la temperatura descendería hasta llegar a los extremos, donde la temperatura es constantemente nula.
Vista la solución estacionaria y vista que coincide con la hallada numéricamente, sin embargo, resulta algo difícil operar con estas funciones para hallar la solución homogeneizada, con lo que habitualmente se emplean formas alternativas de resolver el problema que involucran expresar la [math]\delta[/math] como una combinación de las funciones de nuestra base de Fourier.
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numba
# Parámetros del problema
L = 1.0 # Longitud del dominio espacial
t0 = 0 #Tiempo inicial
T = 0.1 # Tiempo final
nx = 100 # Número de puntos en la dirección x
nt = 10000 # Número de pasos de tiempo
dx = L / (nx - 1) # diferencia en espacio
dt = (T-t0) / nt # diferencia en tiempo
alpha = 1.0 # Coeficiente de difusión (para la ecuación del calor)
r = alpha * dt / (dx**2) #Coeficiente de estabilidad
# Verificamos que se cumple la cond. de estabilidad para el esquema
if r > 0.5:
raise ValueError(f"La condición de estabilidad no se cumple, 0.5 < {r=}")
#Inicializamos el intervalo discretizado en x
x = np.linspace(0, L, nx)
#Inicializamos el intervalo en t que vamos a emplear
t = np.linspace(t0, T, nt + 1)
#Creamos el mallado en x y t:
X,T_mesh = np.meshgrid(x,t)
# Inicializar la solución u(x, t) con ceros
u = np.zeros((nt + 1, nx))
# Aplicamos las condiciones de frontera e inicial
u[:, 0] = 0
u[:, -1] = 0
u[0, :] = np.sin(2*np.pi*x)
# Calculamos el índice del punto más cercano a x = 0.5
index_source = int(0.5 / dx)
# Evolución temporal
for n in range(nt):
u[n + 1, :] = u[n, :] # Inicializar la siguiente iteración con los valores actuales
for i in range(1, nx - 1):
u[n + 1, i] = u[n, i] + r * (u[n, i + 1] - 2 * u[n, i] + u[n, i - 1])
# Aproximación de la delta de Dirac
u[n + 1, index_source] += 2 * dt / dx
# Crear la figura y el subplot 3D
fig = plt.figure(figsize=(12, 8))
ax = fig.add_subplot(111, projection='3d')
# Graficar la superficie, y añadimos etiquetas, barra de color, etc.
surf = ax.plot_surface(X, T_mesh, u, cmap='viridis')
ax.set_xlabel('x')
ax.set_ylabel('t')
ax.set_zlabel('u(x, t)')
ax.set_title('Evolución temporal de la ecuación de calor con fuente (aproximación numérica)')
fig.colorbar(surf, ax=ax, label='u(x, t)')
plt.show()3.1 Interpretación de la solución numérica y comparación con el caso sin fuente
Los resultados numéricos muestran que efectivamente la fuente térmica localizada en [math] x_0 = 0.5 [/math] genera una acumulación de calor en su entorno inmediato. A medida que avanza el tiempo, se observa la disipación progresiva del calor debido a la difusión, que suaviza la temperatura alrededor de este punto, extendiéndola hacia el resto del dominio.
En comparación con el caso sin fuente, donde la temperatura inicial se disipa homogéneamente y tiende a cero en todo el dominio, en este caso se observa un comportamiento diferente: la región en torno a [math] x_0 = 0.5 [/math] se mantiene significativamente más caliente durante más tiempo. Esto refleja el efecto de la fuente térmica puntual, que introduce energía de manera continua en el sistema, impidiendo que la temperatura disminuya de forma uniforme.