Diferencia entre revisiones de «Ecuación del calor (Grupo ILIA)»

De MateWiki
Saltar a: navegación, buscar
 
(No se muestran 28 ediciones intermedias de 3 usuarios)
Línea 1: Línea 1:
{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Ignacio Campos Paños, Ignacio Martínez Cerezo, Alicia Ruiz Dominguez, Luis Ramos Ortiz }}
+
{{ TrabajoED | Ecuación del calor. Grupo ILIA | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Ignacio Campos Paños, Ignacio Martínez Cerezo, Alicia Ruiz Dominguez, Luis Ramos Ortiz }}
  
 
=Introducción=
 
=Introducción=
La ecuación del calor es una de las ecuaciones en derivadas parciales más importantes y conocidas, dada su implicación en diversos ámbitos tanto de la ingeniería como de la física.  
+
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.  
Estudiaremos el comportamiento de esta ecuación en una barra unidimensional aislada en el intervalo [0,1], imponiendo condiciones de frontera con temperatura constante.
+
 
Pero en la vida real las fuentes de calor no necesariamente tienen por qué estar en los extremos, por lo que el objetivo de este artículo es introducir una fuente de calor puntual en algún punto en el interior de la barra (0,1) y ver cómo se comporta la ecuación del calor.
+
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.
  
  
Línea 14: Línea 22:
 
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.
 
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)=sen(x)</math>, podemos obtener el siguiente problema de ecuación del calor con condiciones frontera:
+
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:
 
<center><math>
 
<center><math>
 
\begin{cases}   
 
\begin{cases}   
Línea 20: Línea 28:
 
u(0,t) = 0, & t > 0 \\   
 
u(0,t) = 0, & t > 0 \\   
 
u(1,t) = 0, & t > 0 \\
 
u(1,t) = 0, & t > 0 \\
u(x,0) = sen(2\pi x), & x \in [0,1]
+
u(x,0) = \operatorname{sen}(2\pi x), & x \in [0,1]
 
\end{cases}   
 
\end{cases}   
 
</math></center>
 
</math></center>
Línea 27: Línea 35:
 
y la solución general:
 
y la solución general:
  
<center><math>u(x,t)=sen(2\pi x)e^{-4\pi^{2}t}</math></center>
+
<center><math>u(x,t)=\operatorname{sen}(2\pi x)e^{-4\pi^{2}t}</math></center>
  
 
Vamos a graficar la solución.
 
Vamos a graficar la solución.
Línea 65: Línea 73:
  
 
=Ecuación del calor con fuente térmica puntual=
 
=Ecuación del calor con fuente térmica puntual=
Hemos visto uno de los casos más sencillos de la difusión de calor, pero ahora se introduce una función <math>f(x,t)</math> que representa un nuevo foco de calor en un punto <math>x_0</math> de la barra, de manera que la ecuación del calor queda como sigue:
+
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:
 +
 
 
<center><math>u_t = u_{xx}+f(x,t)</math></center>
 
<center><math>u_t = u_{xx}+f(x,t)</math></center>
Donde <math>f(x,t)</math> es de la forma <math>f(x,t)=q(t)\delta(x-x_0)</math>, donde <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 hacer que el calor se añada únicamente en el punto <math>x_0</math>.
 
  
Si consideramos <math>q(t)=2</math>, <math>x_0=0.5</math> y tomamos el mismo problema de la sección 2 con esta modificación, obtenemos el siguiente problema:
+
donde <math>f(x,t)</math> es una fuente térmica localizada, que modelamos como:
 +
 
 +
<center><math>f(x,t)=q(t)\delta(x-x_0)</math></center>
 +
 
 +
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:
  
 
<center><math>
 
<center><math>
Línea 76: Línea 90:
 
u(0,t) = 0, & t > 0 \\   
 
u(0,t) = 0, & t > 0 \\   
 
u(1,t) = 0, & t > 0 \\
 
u(1,t) = 0, & t > 0 \\
u(x,0) = sen(2\pi x), & x \in [0,1] \\
+
u(x,0) = \operatorname{sen}(2\pi x), & x \in [0,1] \\
 
f(x,t)=2\delta(x-0.5)
 
f(x,t)=2\delta(x-0.5)
 
\end{cases}   
 
\end{cases}   
 
</math></center>
 
</math></center>
  
Para resolver este problema tenemos que integrar a la izquierda y a la derecha de <math>x_0</math> para resolver la ecuación diferencial cuando <math>t</math> tiende a infinito <math>u_{xx}=-2\delta(x-0.5)</math>.
+
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:
 
+
<center>
para <math>x\neq 0.5</math> la ecuación diferencial queda:
+
<math>
<center><math>u_{xx}=0</math></center>.
+
H(x) =  
Integramos dos veces y tenemos:
+
<center><math>u(x)=c_1x + c_2</math></center>.
+
Esto se hace para la región <math>0\leq x< 0.5</math> y para <math>0.5\leq x< 0.5</math> y obtenemos las dos siguientes funciones:
+
<center><math>u(x)=c_1x + c_2</math></center>
+
<center><math>u(x)=d_1x + d_2</math></center>
+
Aplicando las condiciones frontera <math>u(0)=0</math> y <math>u(1)=1</math> llegamos a que:
+
<center><math>u(0)=c_2=0</math></center>
+
<center><math>u(1)=d_1 + d_2=0</math></center>.
+
Además, como la solución tiene que ser continua en 0.5:
+
<center><math>c_1\cdot 0.5=d_1\cdot 0.5+c_2</math></center>.
+
Pasamos ahora a integrar ambos lados de la igualdad de la ecuación diferencial en un entorno arbitrariamente pequeño del 0.5.
+
<center><math>\int_{0.5-\epsilon}^{0.5+\epsilon}u_{xx}dx=\int_{0.5-\epsilon}^{0.5+\epsilon}-2\delta(x-0.5)dx</math></center>.
+
La integral del lado derecho es -2 y aplicamos el teorema fundamental del cálculo a la izquierda, resultando:
+
<center><math>u_x(0.5^+)-u_x(0.5^-)=-2</math></center>
+
y sabemos
+
<center><math>u_x(0.5^+)=d_1, u_x(0.5^-)=c_1</math></center>
+
por lo que
+
<center><math>d_1-c_1=-2</math></center>.
+
Con esta información calculamos los valores de <math>c_1</math>, <math>d_1</math> y <math>d_2</math>.
+
 
+
<center><math>
+
 
\begin{cases}
 
\begin{cases}
c_1\cdot 0.5=d_1\cdot 0.5 +d_2\\
+
0 & x <0\\
d_1-c_1=-2\\
+
1 & x \geq 0
d_1+d_2=0
+
 
\end{cases}
 
\end{cases}
</math></center>
+
</math>
Así que <math>c_1=1</math>, <math>d_1=-1</math> y <math>d_2=1</math>.
+
</center>
 +
Con esta información:
 +
<center>
 +
<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< 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>
 +
</center>
 +
Evaluando en las condiciones iniciales, llegamos a:
 +
<center>
 +
<math>
 +
\begin{align*}
 +
    0 &= -u(0) = (-0.5)H(-0.5) + C_2\\
 +
    0&= 0 + C_2 \\
 +
\Rightarrow  C_2 &= 0
 +
\end{align*}
 +
</math>
 +
</center>
  
Sustituyendo estos valores tenemos que la solución estacionaria es:
+
<center>
 +
<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>
 +
</center>
  
<center><math>
 
\begin{cases}
 
2x, 0\leq x\leq 0.5\\
 
2(1-x), 0.5\leq x\leq 1
 
\end{cases}
 
</math></center>
 
  
y la solución general al problema, por superposición, es la suma de la solución estacionaria del problema y la solución general del problema homogéneo, calculado en la sección 2. Resultando en:
+
Luego nuestra solución tendría la forma:
 +
<center>
 +
<math>
 +
    u(x) = 2 \left(-\left(\frac{2x-1}{2}\right)H\left(\frac{2x-1}{2}\right) +\frac{x}{2}\right)
 +
</math>
 +
</center>
 +
Representando nuestra solución estacionaria, llegamos a:
 +
 
 +
[[Archivo:Solución estacionaria ILIA 2025 8K.png|400px|thumb|right|Solución de la ecuación del calor]]
 +
 
 +
 
 +
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.
 +
 
 +
[[Archivo:EvolucionILIA.jpeg|400px|thumb|right|Evolución temporal de la ecuación del calor con fuente térmica]]
 +
 
 +
<syntaxhighlight lang="python">
 +
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()
 +
</syntaxhighlight>
 +
 
 +
===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.
  
<center><math>
 
\begin{cases}
 
2x + sen(2\pi x)e^{-4\pi^{2}t}, 0\leq x\leq 0.5\\
 
2(1-x) + sen(2\pi x)e^{-4\pi^{2}t}, 0.5\leq x\leq 1
 
\end{cases}
 
</math></center>
 
  
  

Revisión actual 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


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:

[math] \begin{cases} u_t - u_{xx} = 0, & x \in [0,1], \quad t \gt 0 \\ u(0,t) = 0, & t \gt 0 \\ u(1,t) = 0, & t \gt 0 \\ u(x,0) = \operatorname{sen}(2\pi x), & x \in [0,1] \end{cases} [/math]

Resolviendo este problema obtenemos que la solución estacionaria es:

[math]u_s(x)=0[/math]

y la solución general:

[math]u(x,t)=\operatorname{sen}(2\pi x)e^{-4\pi^{2}t}[/math]

Vamos a graficar la solución.


Solución de la ecuación del calor
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:

[math]u_t = u_{xx}+f(x,t)[/math]

donde [math]f(x,t)[/math] es una fuente térmica localizada, que modelamos como:

[math]f(x,t)=q(t)\delta(x-x_0)[/math]

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:

[math] \begin{cases} u_t - u_{xx} = f(x,t), & x \in [0,1], \quad t \gt 0 \\ u(0,t) = 0, & t \gt 0 \\ u(1,t) = 0, & t \gt 0 \\ u(x,0) = \operatorname{sen}(2\pi x), & x \in [0,1] \\ f(x,t)=2\delta(x-0.5) \end{cases} [/math]

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(-\left(\frac{2x-1}{2}\right)H\left(\frac{2x-1}{2}\right) +\frac{x}{2}\right) [/math]

Representando nuestra solución estacionaria, llegamos a:

Solución de la ecuación del calor


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.

Evolución temporal de la ecuación del calor con fuente térmica
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.