<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
		<id>https://mat.caminos.upm.es/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Marcos</id>
		<title>MateWiki - Contribuciones del usuario [es]</title>
		<link rel="self" type="application/atom+xml" href="https://mat.caminos.upm.es/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Marcos"/>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/wiki/Especial:Contribuciones/Marcos"/>
		<updated>2026-04-28T21:28:48Z</updated>
		<subtitle>Contribuciones del usuario</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84962</id>
		<title>Ecuación del calor (Grupo MAMBD))</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84962"/>
				<updated>2025-03-18T23:35:19Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Delta de dirac como función de condición inicial */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
En el siguiente trabajo, se busca explorar el comportamiento de la solución a la ecuación del calor para regiones no acotadas, así como la distribución de dicha solución en según que dimensiones.&lt;br /&gt;
&lt;br /&gt;
El problema del calor viene dado por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt;u(x, t)&amp;lt;/math&amp;gt; representa la temperatura del medio en función del tiempo y de la posición.&lt;br /&gt;
&lt;br /&gt;
Como estamos en un medio infinito, tendremos que mirar como una perturbación térmica puntual se difunde con el tiempo. Para ello usamos la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;G(x,t)=\frac{1}{(4\pi t)^{n/2}}e^{-\frac{|x|^2}{4t}},&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Solución de la ecuación del calor empleando la convolución=&lt;br /&gt;
&lt;br /&gt;
Planteamos un problema particular para la ecuación del calor en una dimensión, dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Definimos la temperatura en el instante inicial&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; x\in[-3,-2]\cup[-1,1]\cup[2,3]\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el tiempo, el calor empieza a difundirse según la ecuación dada, cuya solución viene dada por la convolución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\int_{-\infty}^{\infty} G(x-y,t)u_0(y) dy=\frac{1}{\sqrt{4 \pi t}}\int_{-\infty}^{\infty} u_0(y)e^{-\frac{(x-y)^2}{4t}}.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujando la solución para diferentes tiempos, obtenemos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: difusion_termica_1D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0, 10] &amp;lt;/math&amp;gt;, en 1 dimensión.]]&lt;br /&gt;
&lt;br /&gt;
Se aprecia como, conforme avanza el tiempo, la solución tiende a cero y pierde su forma (de tres picos) dada por la condición inicial. Al inicio, las regiones calientes se distinguen claramente, pero poco a poco el calor se extiende a las áreas frías, mostrando como el calor comienza a difundirse por el resto del espacio hasta que la temperatura se ha distribuido de manera uniforme.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:BarraMetal.png|400px|thumb|right|Difusión del mensaje en la barra de metal]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
&lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
imp = 6;&lt;br /&gt;
T=[0.001,0.01,0.1];&lt;br /&gt;
a = [-3, -1, 2];  % Inicio de los segmentos de calor&lt;br /&gt;
b = [-2,  1, 3];  % Fin de los segmentos de calor&lt;br /&gt;
tf = max(T); &lt;br /&gt;
div = 10^-3; &lt;br /&gt;
&lt;br /&gt;
X = -10:div:10;  &lt;br /&gt;
&lt;br /&gt;
% Función de solución fundamental de la ecuación del calor en 1D&lt;br /&gt;
Phi = @(x,t) (1./((4*pi*t).^(1/2)) .* exp(-abs(x).^2./(4*t))); &lt;br /&gt;
&lt;br /&gt;
U = zeros(length(X), length(T));  % Matriz para almacenar soluciones en diferentes tiempos&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución usando la integral de convolución&lt;br /&gt;
for j = 1:length(X)&lt;br /&gt;
    for i = 1:length(T)&lt;br /&gt;
        integral_sum = 0;&lt;br /&gt;
        for k = 1:length(a) &lt;br /&gt;
            Y = a(k):div:b(k); &lt;br /&gt;
            integral_sum = integral_sum + trapz(Y, Phi(X(j)*ones(1,length(Y)) - Y, T(i)*ones(1,length(Y))));&lt;br /&gt;
        end&lt;br /&gt;
        U(j,i) = 5 * integral_sum; &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Dibujar todas las soluciones en una misma gráfica&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
colors = ['r', 'g', 'b'];&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(T) &lt;br /&gt;
    plot(X, U(:,i), colors(i), 'LineWidth', 1.5, 'DisplayName', &amp;quot;t = &amp;quot; + num2str(T(i)) + &amp;quot; s&amp;quot;) &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
xlim([-10 10])  &lt;br /&gt;
ylim([0 5.5]) &lt;br /&gt;
xlabel('Posición x') &lt;br /&gt;
ylabel('Temperatura U(x,t)') &lt;br /&gt;
title(&amp;quot;Difusión térmica del mensaje en la barra de metal&amp;quot;) &lt;br /&gt;
legend show &lt;br /&gt;
grid on &lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
t_values = logspace(-3, 1, 50); % Valores de tiempo en escala logarítmica&lt;br /&gt;
colors = 'r'; % Color de la curva&lt;br /&gt;
&lt;br /&gt;
% Condición inicial: Representación simplificada de un mensaje con calor&lt;br /&gt;
u0 = zeros(size(x));&lt;br /&gt;
u0(x &amp;gt; -3 &amp;amp; x &amp;lt; -2) = 5; % Letra &amp;quot;segmento 1&amp;quot;&lt;br /&gt;
u0(x &amp;gt; -1 &amp;amp; x &amp;lt; 1) = 5;  % Letra &amp;quot;segmento 2&amp;quot;&lt;br /&gt;
u0(x &amp;gt; 2 &amp;amp; x &amp;lt; 3) = 5;  % Letra &amp;quot;segmento 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
% Configurar video&lt;br /&gt;
video = VideoWriter('difusion_termica.avi');&lt;br /&gt;
video.FrameRate = 10;&lt;br /&gt;
open(video);&lt;br /&gt;
&lt;br /&gt;
% Figura para la animación&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
xlabel('Posición x');&lt;br /&gt;
ylabel('Temperatura u(x, t)');&lt;br /&gt;
title('Evolución de la difusión térmica');&lt;br /&gt;
grid on;&lt;br /&gt;
axis([x_min x_max 0 5]); % Fijar dimensiones de la cuadrícula en X y Y&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    t = t_values(i);&lt;br /&gt;
    sigma = sqrt(2 * t) / dx; % Relación con la solución analítica&lt;br /&gt;
    u_t = imgaussfilt(u0, sigma); % Aproximación de difusión&lt;br /&gt;
    &lt;br /&gt;
    plot(x, u_t, 'Color', colors, 'LineWidth', 2);&lt;br /&gt;
    legend(sprintf('t = %.4f', t));&lt;br /&gt;
    axis([x_min x_max 0 5]); % Mantener eje Y fijo en cada iteración&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
    clf;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(video);&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Delta de dirac como función de condición inicial=&lt;br /&gt;
Partimos de: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}&lt;br /&gt;
    u_t - u_{xx} = 0 \\&lt;br /&gt;
    u(x,0) = \delta (x)&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso, tenemos la solución fundamental de la ecuación del calor en 1D. La pregunta que surge aquí es por qué solo tiene un pico. La respuesta a la pregunta es sencilla: La condición inicial es una delta de dirac que actúa como fuente puntual inicial de calor, por lo que al partir de una función cuyo máximo valor se concentra en un punto la función solución adquiere esta forma.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Sección3imagenGrupoMAMBD.png|400px|thumb|center| Evolución de la solución de la ecuación del calor con fuente puntual.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
def heat_kernel(x, t, alpha=1):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Solución fundamental de la ecuación del calor (distribución gaussiana).&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    return (1 / np.sqrt(4 * np.pi * alpha * t)) * np.exp(-x**2 / (4 * alpha * t))&lt;br /&gt;
&lt;br /&gt;
# Discretización del espacio y tiempos&lt;br /&gt;
x_values = np.linspace(-5, 5, 100)&lt;br /&gt;
t_values = [0.01, 0.1, 0.5, 1, 2]  # Diferentes tiempos para visualizar la evolución&lt;br /&gt;
&lt;br /&gt;
plt.figure(figsize=(8,6))&lt;br /&gt;
for t in t_values:&lt;br /&gt;
    u_values = heat_kernel(x_values, t)&lt;br /&gt;
    plt.plot(x_values, u_values, label=f't = {t}')&lt;br /&gt;
&lt;br /&gt;
plt.xlabel('Posición x')&lt;br /&gt;
plt.ylabel('Temperatura u(x,t)')&lt;br /&gt;
plt.title('Evolución de la solución de la ecuación del calor con fuente puntual')&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Regularidad y dimensiones=&lt;br /&gt;
Vamos a explorar que ocurre al pasar a dos dimensiones (2D), analizando como la difusión del calor se dispersa más rápido en 2D debido a la propagación en múltiples direcciones.&lt;br /&gt;
&lt;br /&gt;
En 1D, la ecuación del calor viene dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Sabemos que dicha ecuación tiene un efecto regularizador, es decir, aunque la condición inicial tenga discontinuidades, la solución se vuelve suave para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;. Por otro lado, la difusión en 1D ocurre a lo largo de una sola dirección (el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) y la solución se suaviza a una determinada velocidad en el tiempo.&lt;br /&gt;
&lt;br /&gt;
Veamos que ocurre en 2D. Ahora, nuestra ecuación es &amp;lt;math&amp;gt;u_t-u_{xx}-u_{yy}=0&amp;lt;/math&amp;gt;. La temperatura inicial se define ahora como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; (x,y)\in([-3,-2]\cup[-1,1]\cup[2,3])\times([-3,-2]\cup[-1,1]\cup[2,3])\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Generalizando a &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; dimensiones, la ecuación del calor vendrá dada por: &amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;, cuya solución fundamental (análoga a la hallada para una dimensión) se distribuye como una gaussiana en varias variables (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;): &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t) = \frac{1}{(4\pi t)^{n/2}} e^{-\frac{|x|^2}{4 t}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El efecto regularizador de la ecuación sigue presente en cualquier dimensión &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Sin embargo, en dimensiones más altas, esta dispersión es más rápida, ya que &amp;lt;math&amp;gt;(4\pi t)^{n/2}&amp;lt;/math&amp;gt; en la solución fundamental crece cuando lo hace &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;; nos surge entonces la pregunta de cómo podemos comparar el tiempo de dispersión en distintas dimensiones. &lt;br /&gt;
&lt;br /&gt;
En \( n \) dimensiones, el calor decae como \(u(x,t) \sim t^{-n/2}\), lo que reafirma que este se disipa más rápido a medida que aumenta la dimensión del espacio. Si queremos comparar el tiempo característico de disipación \( t_d \) en distintas dimensiones, llegamos a la relación \( t_d(n) \sim \frac{t_d(1)}{n/2} \), que nos dice que el tiempo de disipación en dimensión \( n \) es inversamente proporcional a \( n/2 \).&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Heat_equation_2D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0, 10] &amp;lt;/math&amp;gt;, dimensión 2 (2D).]]&lt;br /&gt;
&lt;br /&gt;
Comparemos así la gráfica superior con la hallada para el análisis en dos dimensiones. Podemos apreciar fácilmente como para un mismo periodo de tiempo el calor en cada punto del espacio es menor en esta gráfica que en la anterior pues en 1D, el calor solo se propaga en una dirección, lo que complica la disipación tal y como vemos, pues al aumentar un grado de libertad, para \( t=10 \) el calor en el sistema es casi impredecible.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
a=-4; b=4;                      % Intervalo de definición de la x ([a,b]^2) &lt;br /&gt;
div=0.05;                       % División del vector en x &lt;br /&gt;
X=a:div:b;                      % Vector de X &lt;br /&gt;
[X1,X2]=meshgrid(X,X);          % Creación de la malla en x &lt;br /&gt;
&lt;br /&gt;
% Definir las condiciones iniciales&lt;br /&gt;
U0 = zeros(size(X1));&lt;br /&gt;
U0((X1 &amp;gt; -3) &amp;amp; (X1 &amp;lt; -2) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5; % Letra 1&lt;br /&gt;
U0((X1 &amp;gt; -1) &amp;amp; (X1 &amp;lt; 1) &amp;amp; (X2 &amp;gt; -2) &amp;amp; (X2 &amp;lt; 2)) = 5;  % Letra 2&lt;br /&gt;
U0((X1 &amp;gt; 2) &amp;amp; (X1 &amp;lt; 3) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5;  % Letra 3&lt;br /&gt;
&lt;br /&gt;
% Solución de la ecuación del calor mediante convolución con la solución fundamental&lt;br /&gt;
norma2=@(x1,x2)sqrt(x1.^2+x2.^2);  % Función norma &lt;br /&gt;
Phi2 = @(x1,x2,t)(1./((4*pi*t)).*exp(-norma2(x1,x2).^2./(4*t))); % Solución fundamental en 2D&lt;br /&gt;
&lt;br /&gt;
% Parámetros de animación&lt;br /&gt;
T_max = 10;        % Tiempo máximo de simulación&lt;br /&gt;
num_frames = 100;  % Número de cuadros en la animación&lt;br /&gt;
T_values = linspace(0.001, T_max, num_frames);&lt;br /&gt;
&lt;br /&gt;
% Crear objeto de video&lt;br /&gt;
video_filename = 'heat_equation_2D.mp4';&lt;br /&gt;
vid = VideoWriter(video_filename, 'MPEG-4');&lt;br /&gt;
vid.FrameRate = 20; % FPS del video&lt;br /&gt;
open(vid);&lt;br /&gt;
&lt;br /&gt;
figure;&lt;br /&gt;
cmap = hot;&lt;br /&gt;
clim = [0, 5]; % Fijar la escala de colores entre 0 y 5&lt;br /&gt;
for i=1:length(T_values)&lt;br /&gt;
    U = conv2(U0, Phi2(X1,X2,T_values(i)), 'same') * div^2; % Convolución discreta&lt;br /&gt;
    &lt;br /&gt;
    surf(X1,X2,U)&lt;br /&gt;
    shading interp &lt;br /&gt;
    colorbar;&lt;br /&gt;
    colormap(cmap);&lt;br /&gt;
    caxis(clim); % Mantener la escala de colores fija&lt;br /&gt;
    xlabel('X') &lt;br /&gt;
    ylabel('Y') &lt;br /&gt;
    zlabel('Temperatura') &lt;br /&gt;
    title(&amp;quot;Evolución en 2D para t=&amp;quot;+num2str(T_values(i),'%.3f')+' s') &lt;br /&gt;
    axis([-4 4 -4 4 0 5]);&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(vid, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(vid);&lt;br /&gt;
&lt;br /&gt;
disp(['Video guardado como: ', video_filename]);&lt;br /&gt;
&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84961</id>
		<title>Ecuación del calor (Grupo MAMBD))</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84961"/>
				<updated>2025-03-18T23:34:33Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Delta de dirac como función de condición inicial */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
En el siguiente trabajo, se busca explorar el comportamiento de la solución a la ecuación del calor para regiones no acotadas, así como la distribución de dicha solución en según que dimensiones.&lt;br /&gt;
&lt;br /&gt;
El problema del calor viene dado por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt;u(x, t)&amp;lt;/math&amp;gt; representa la temperatura del medio en función del tiempo y de la posición.&lt;br /&gt;
&lt;br /&gt;
Como estamos en un medio infinito, tendremos que mirar como una perturbación térmica puntual se difunde con el tiempo. Para ello usamos la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;G(x,t)=\frac{1}{(4\pi t)^{n/2}}e^{-\frac{|x|^2}{4t}},&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Solución de la ecuación del calor empleando la convolución=&lt;br /&gt;
&lt;br /&gt;
Planteamos un problema particular para la ecuación del calor en una dimensión, dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Definimos la temperatura en el instante inicial&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; x\in[-3,-2]\cup[-1,1]\cup[2,3]\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el tiempo, el calor empieza a difundirse según la ecuación dada, cuya solución viene dada por la convolución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\int_{-\infty}^{\infty} G(x-y,t)u_0(y) dy=\frac{1}{\sqrt{4 \pi t}}\int_{-\infty}^{\infty} u_0(y)e^{-\frac{(x-y)^2}{4t}}.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujando la solución para diferentes tiempos, obtenemos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: difusion_termica_1D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0, 10] &amp;lt;/math&amp;gt;, en 1 dimensión.]]&lt;br /&gt;
&lt;br /&gt;
Se aprecia como, conforme avanza el tiempo, la solución tiende a cero y pierde su forma (de tres picos) dada por la condición inicial. Al inicio, las regiones calientes se distinguen claramente, pero poco a poco el calor se extiende a las áreas frías, mostrando como el calor comienza a difundirse por el resto del espacio hasta que la temperatura se ha distribuido de manera uniforme.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:BarraMetal.png|400px|thumb|right|Difusión del mensaje en la barra de metal]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
&lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
imp = 6;&lt;br /&gt;
T=[0.001,0.01,0.1];&lt;br /&gt;
a = [-3, -1, 2];  % Inicio de los segmentos de calor&lt;br /&gt;
b = [-2,  1, 3];  % Fin de los segmentos de calor&lt;br /&gt;
tf = max(T); &lt;br /&gt;
div = 10^-3; &lt;br /&gt;
&lt;br /&gt;
X = -10:div:10;  &lt;br /&gt;
&lt;br /&gt;
% Función de solución fundamental de la ecuación del calor en 1D&lt;br /&gt;
Phi = @(x,t) (1./((4*pi*t).^(1/2)) .* exp(-abs(x).^2./(4*t))); &lt;br /&gt;
&lt;br /&gt;
U = zeros(length(X), length(T));  % Matriz para almacenar soluciones en diferentes tiempos&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución usando la integral de convolución&lt;br /&gt;
for j = 1:length(X)&lt;br /&gt;
    for i = 1:length(T)&lt;br /&gt;
        integral_sum = 0;&lt;br /&gt;
        for k = 1:length(a) &lt;br /&gt;
            Y = a(k):div:b(k); &lt;br /&gt;
            integral_sum = integral_sum + trapz(Y, Phi(X(j)*ones(1,length(Y)) - Y, T(i)*ones(1,length(Y))));&lt;br /&gt;
        end&lt;br /&gt;
        U(j,i) = 5 * integral_sum; &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Dibujar todas las soluciones en una misma gráfica&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
colors = ['r', 'g', 'b'];&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(T) &lt;br /&gt;
    plot(X, U(:,i), colors(i), 'LineWidth', 1.5, 'DisplayName', &amp;quot;t = &amp;quot; + num2str(T(i)) + &amp;quot; s&amp;quot;) &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
xlim([-10 10])  &lt;br /&gt;
ylim([0 5.5]) &lt;br /&gt;
xlabel('Posición x') &lt;br /&gt;
ylabel('Temperatura U(x,t)') &lt;br /&gt;
title(&amp;quot;Difusión térmica del mensaje en la barra de metal&amp;quot;) &lt;br /&gt;
legend show &lt;br /&gt;
grid on &lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
t_values = logspace(-3, 1, 50); % Valores de tiempo en escala logarítmica&lt;br /&gt;
colors = 'r'; % Color de la curva&lt;br /&gt;
&lt;br /&gt;
% Condición inicial: Representación simplificada de un mensaje con calor&lt;br /&gt;
u0 = zeros(size(x));&lt;br /&gt;
u0(x &amp;gt; -3 &amp;amp; x &amp;lt; -2) = 5; % Letra &amp;quot;segmento 1&amp;quot;&lt;br /&gt;
u0(x &amp;gt; -1 &amp;amp; x &amp;lt; 1) = 5;  % Letra &amp;quot;segmento 2&amp;quot;&lt;br /&gt;
u0(x &amp;gt; 2 &amp;amp; x &amp;lt; 3) = 5;  % Letra &amp;quot;segmento 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
% Configurar video&lt;br /&gt;
video = VideoWriter('difusion_termica.avi');&lt;br /&gt;
video.FrameRate = 10;&lt;br /&gt;
open(video);&lt;br /&gt;
&lt;br /&gt;
% Figura para la animación&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
xlabel('Posición x');&lt;br /&gt;
ylabel('Temperatura u(x, t)');&lt;br /&gt;
title('Evolución de la difusión térmica');&lt;br /&gt;
grid on;&lt;br /&gt;
axis([x_min x_max 0 5]); % Fijar dimensiones de la cuadrícula en X y Y&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    t = t_values(i);&lt;br /&gt;
    sigma = sqrt(2 * t) / dx; % Relación con la solución analítica&lt;br /&gt;
    u_t = imgaussfilt(u0, sigma); % Aproximación de difusión&lt;br /&gt;
    &lt;br /&gt;
    plot(x, u_t, 'Color', colors, 'LineWidth', 2);&lt;br /&gt;
    legend(sprintf('t = %.4f', t));&lt;br /&gt;
    axis([x_min x_max 0 5]); % Mantener eje Y fijo en cada iteración&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
    clf;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(video);&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Delta de dirac como función de condición inicial=&lt;br /&gt;
Partimos de: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t - u_{xx} = 0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,0) = \delta (x)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}&lt;br /&gt;
    x^2, &amp;amp; \text{si } x \geq 0 \\&lt;br /&gt;
    -x, &amp;amp; \text{si } x &amp;lt; 0&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
En este caso, tenemos la solución fundamental de la ecuación del calor en 1D. La pregunta que surge aquí es por qué solo tiene un pico. La respuesta a la pregunta es sencilla: La condición inicial es una delta de dirac que actúa como fuente puntual inicial de calor, por lo que al partir de una función cuyo máximo valor se concentra en un punto la función solución adquiere esta forma.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Sección3imagenGrupoMAMBD.png|400px|thumb|center| Evolución de la solución de la ecuación del calor con fuente puntual.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
def heat_kernel(x, t, alpha=1):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Solución fundamental de la ecuación del calor (distribución gaussiana).&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    return (1 / np.sqrt(4 * np.pi * alpha * t)) * np.exp(-x**2 / (4 * alpha * t))&lt;br /&gt;
&lt;br /&gt;
# Discretización del espacio y tiempos&lt;br /&gt;
x_values = np.linspace(-5, 5, 100)&lt;br /&gt;
t_values = [0.01, 0.1, 0.5, 1, 2]  # Diferentes tiempos para visualizar la evolución&lt;br /&gt;
&lt;br /&gt;
plt.figure(figsize=(8,6))&lt;br /&gt;
for t in t_values:&lt;br /&gt;
    u_values = heat_kernel(x_values, t)&lt;br /&gt;
    plt.plot(x_values, u_values, label=f't = {t}')&lt;br /&gt;
&lt;br /&gt;
plt.xlabel('Posición x')&lt;br /&gt;
plt.ylabel('Temperatura u(x,t)')&lt;br /&gt;
plt.title('Evolución de la solución de la ecuación del calor con fuente puntual')&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Regularidad y dimensiones=&lt;br /&gt;
Vamos a explorar que ocurre al pasar a dos dimensiones (2D), analizando como la difusión del calor se dispersa más rápido en 2D debido a la propagación en múltiples direcciones.&lt;br /&gt;
&lt;br /&gt;
En 1D, la ecuación del calor viene dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Sabemos que dicha ecuación tiene un efecto regularizador, es decir, aunque la condición inicial tenga discontinuidades, la solución se vuelve suave para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;. Por otro lado, la difusión en 1D ocurre a lo largo de una sola dirección (el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) y la solución se suaviza a una determinada velocidad en el tiempo.&lt;br /&gt;
&lt;br /&gt;
Veamos que ocurre en 2D. Ahora, nuestra ecuación es &amp;lt;math&amp;gt;u_t-u_{xx}-u_{yy}=0&amp;lt;/math&amp;gt;. La temperatura inicial se define ahora como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; (x,y)\in([-3,-2]\cup[-1,1]\cup[2,3])\times([-3,-2]\cup[-1,1]\cup[2,3])\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Generalizando a &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; dimensiones, la ecuación del calor vendrá dada por: &amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;, cuya solución fundamental (análoga a la hallada para una dimensión) se distribuye como una gaussiana en varias variables (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;): &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t) = \frac{1}{(4\pi t)^{n/2}} e^{-\frac{|x|^2}{4 t}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El efecto regularizador de la ecuación sigue presente en cualquier dimensión &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Sin embargo, en dimensiones más altas, esta dispersión es más rápida, ya que &amp;lt;math&amp;gt;(4\pi t)^{n/2}&amp;lt;/math&amp;gt; en la solución fundamental crece cuando lo hace &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;; nos surge entonces la pregunta de cómo podemos comparar el tiempo de dispersión en distintas dimensiones. &lt;br /&gt;
&lt;br /&gt;
En \( n \) dimensiones, el calor decae como \(u(x,t) \sim t^{-n/2}\), lo que reafirma que este se disipa más rápido a medida que aumenta la dimensión del espacio. Si queremos comparar el tiempo característico de disipación \( t_d \) en distintas dimensiones, llegamos a la relación \( t_d(n) \sim \frac{t_d(1)}{n/2} \), que nos dice que el tiempo de disipación en dimensión \( n \) es inversamente proporcional a \( n/2 \).&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Heat_equation_2D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0, 10] &amp;lt;/math&amp;gt;, dimensión 2 (2D).]]&lt;br /&gt;
&lt;br /&gt;
Comparemos así la gráfica superior con la hallada para el análisis en dos dimensiones. Podemos apreciar fácilmente como para un mismo periodo de tiempo el calor en cada punto del espacio es menor en esta gráfica que en la anterior pues en 1D, el calor solo se propaga en una dirección, lo que complica la disipación tal y como vemos, pues al aumentar un grado de libertad, para \( t=10 \) el calor en el sistema es casi impredecible.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
a=-4; b=4;                      % Intervalo de definición de la x ([a,b]^2) &lt;br /&gt;
div=0.05;                       % División del vector en x &lt;br /&gt;
X=a:div:b;                      % Vector de X &lt;br /&gt;
[X1,X2]=meshgrid(X,X);          % Creación de la malla en x &lt;br /&gt;
&lt;br /&gt;
% Definir las condiciones iniciales&lt;br /&gt;
U0 = zeros(size(X1));&lt;br /&gt;
U0((X1 &amp;gt; -3) &amp;amp; (X1 &amp;lt; -2) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5; % Letra 1&lt;br /&gt;
U0((X1 &amp;gt; -1) &amp;amp; (X1 &amp;lt; 1) &amp;amp; (X2 &amp;gt; -2) &amp;amp; (X2 &amp;lt; 2)) = 5;  % Letra 2&lt;br /&gt;
U0((X1 &amp;gt; 2) &amp;amp; (X1 &amp;lt; 3) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5;  % Letra 3&lt;br /&gt;
&lt;br /&gt;
% Solución de la ecuación del calor mediante convolución con la solución fundamental&lt;br /&gt;
norma2=@(x1,x2)sqrt(x1.^2+x2.^2);  % Función norma &lt;br /&gt;
Phi2 = @(x1,x2,t)(1./((4*pi*t)).*exp(-norma2(x1,x2).^2./(4*t))); % Solución fundamental en 2D&lt;br /&gt;
&lt;br /&gt;
% Parámetros de animación&lt;br /&gt;
T_max = 10;        % Tiempo máximo de simulación&lt;br /&gt;
num_frames = 100;  % Número de cuadros en la animación&lt;br /&gt;
T_values = linspace(0.001, T_max, num_frames);&lt;br /&gt;
&lt;br /&gt;
% Crear objeto de video&lt;br /&gt;
video_filename = 'heat_equation_2D.mp4';&lt;br /&gt;
vid = VideoWriter(video_filename, 'MPEG-4');&lt;br /&gt;
vid.FrameRate = 20; % FPS del video&lt;br /&gt;
open(vid);&lt;br /&gt;
&lt;br /&gt;
figure;&lt;br /&gt;
cmap = hot;&lt;br /&gt;
clim = [0, 5]; % Fijar la escala de colores entre 0 y 5&lt;br /&gt;
for i=1:length(T_values)&lt;br /&gt;
    U = conv2(U0, Phi2(X1,X2,T_values(i)), 'same') * div^2; % Convolución discreta&lt;br /&gt;
    &lt;br /&gt;
    surf(X1,X2,U)&lt;br /&gt;
    shading interp &lt;br /&gt;
    colorbar;&lt;br /&gt;
    colormap(cmap);&lt;br /&gt;
    caxis(clim); % Mantener la escala de colores fija&lt;br /&gt;
    xlabel('X') &lt;br /&gt;
    ylabel('Y') &lt;br /&gt;
    zlabel('Temperatura') &lt;br /&gt;
    title(&amp;quot;Evolución en 2D para t=&amp;quot;+num2str(T_values(i),'%.3f')+' s') &lt;br /&gt;
    axis([-4 4 -4 4 0 5]);&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(vid, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(vid);&lt;br /&gt;
&lt;br /&gt;
disp(['Video guardado como: ', video_filename]);&lt;br /&gt;
&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84960</id>
		<title>Ecuación del calor (Grupo MAMBD))</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84960"/>
				<updated>2025-03-18T23:32:13Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Delta de dirac como función de condición inicial */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
En el siguiente trabajo, se busca explorar el comportamiento de la solución a la ecuación del calor para regiones no acotadas, así como la distribución de dicha solución en según que dimensiones.&lt;br /&gt;
&lt;br /&gt;
El problema del calor viene dado por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt;u(x, t)&amp;lt;/math&amp;gt; representa la temperatura del medio en función del tiempo y de la posición.&lt;br /&gt;
&lt;br /&gt;
Como estamos en un medio infinito, tendremos que mirar como una perturbación térmica puntual se difunde con el tiempo. Para ello usamos la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;G(x,t)=\frac{1}{(4\pi t)^{n/2}}e^{-\frac{|x|^2}{4t}},&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Solución de la ecuación del calor empleando la convolución=&lt;br /&gt;
&lt;br /&gt;
Planteamos un problema particular para la ecuación del calor en una dimensión, dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Definimos la temperatura en el instante inicial&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; x\in[-3,-2]\cup[-1,1]\cup[2,3]\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el tiempo, el calor empieza a difundirse según la ecuación dada, cuya solución viene dada por la convolución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\int_{-\infty}^{\infty} G(x-y,t)u_0(y) dy=\frac{1}{\sqrt{4 \pi t}}\int_{-\infty}^{\infty} u_0(y)e^{-\frac{(x-y)^2}{4t}}.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujando la solución para diferentes tiempos, obtenemos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: difusion_termica_1D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0, 10] &amp;lt;/math&amp;gt;, en 1 dimensión.]]&lt;br /&gt;
&lt;br /&gt;
Se aprecia como, conforme avanza el tiempo, la solución tiende a cero y pierde su forma (de tres picos) dada por la condición inicial. Al inicio, las regiones calientes se distinguen claramente, pero poco a poco el calor se extiende a las áreas frías, mostrando como el calor comienza a difundirse por el resto del espacio hasta que la temperatura se ha distribuido de manera uniforme.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:BarraMetal.png|400px|thumb|right|Difusión del mensaje en la barra de metal]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
&lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
imp = 6;&lt;br /&gt;
T=[0.001,0.01,0.1];&lt;br /&gt;
a = [-3, -1, 2];  % Inicio de los segmentos de calor&lt;br /&gt;
b = [-2,  1, 3];  % Fin de los segmentos de calor&lt;br /&gt;
tf = max(T); &lt;br /&gt;
div = 10^-3; &lt;br /&gt;
&lt;br /&gt;
X = -10:div:10;  &lt;br /&gt;
&lt;br /&gt;
% Función de solución fundamental de la ecuación del calor en 1D&lt;br /&gt;
Phi = @(x,t) (1./((4*pi*t).^(1/2)) .* exp(-abs(x).^2./(4*t))); &lt;br /&gt;
&lt;br /&gt;
U = zeros(length(X), length(T));  % Matriz para almacenar soluciones en diferentes tiempos&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución usando la integral de convolución&lt;br /&gt;
for j = 1:length(X)&lt;br /&gt;
    for i = 1:length(T)&lt;br /&gt;
        integral_sum = 0;&lt;br /&gt;
        for k = 1:length(a) &lt;br /&gt;
            Y = a(k):div:b(k); &lt;br /&gt;
            integral_sum = integral_sum + trapz(Y, Phi(X(j)*ones(1,length(Y)) - Y, T(i)*ones(1,length(Y))));&lt;br /&gt;
        end&lt;br /&gt;
        U(j,i) = 5 * integral_sum; &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Dibujar todas las soluciones en una misma gráfica&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
colors = ['r', 'g', 'b'];&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(T) &lt;br /&gt;
    plot(X, U(:,i), colors(i), 'LineWidth', 1.5, 'DisplayName', &amp;quot;t = &amp;quot; + num2str(T(i)) + &amp;quot; s&amp;quot;) &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
xlim([-10 10])  &lt;br /&gt;
ylim([0 5.5]) &lt;br /&gt;
xlabel('Posición x') &lt;br /&gt;
ylabel('Temperatura U(x,t)') &lt;br /&gt;
title(&amp;quot;Difusión térmica del mensaje en la barra de metal&amp;quot;) &lt;br /&gt;
legend show &lt;br /&gt;
grid on &lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
t_values = logspace(-3, 1, 50); % Valores de tiempo en escala logarítmica&lt;br /&gt;
colors = 'r'; % Color de la curva&lt;br /&gt;
&lt;br /&gt;
% Condición inicial: Representación simplificada de un mensaje con calor&lt;br /&gt;
u0 = zeros(size(x));&lt;br /&gt;
u0(x &amp;gt; -3 &amp;amp; x &amp;lt; -2) = 5; % Letra &amp;quot;segmento 1&amp;quot;&lt;br /&gt;
u0(x &amp;gt; -1 &amp;amp; x &amp;lt; 1) = 5;  % Letra &amp;quot;segmento 2&amp;quot;&lt;br /&gt;
u0(x &amp;gt; 2 &amp;amp; x &amp;lt; 3) = 5;  % Letra &amp;quot;segmento 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
% Configurar video&lt;br /&gt;
video = VideoWriter('difusion_termica.avi');&lt;br /&gt;
video.FrameRate = 10;&lt;br /&gt;
open(video);&lt;br /&gt;
&lt;br /&gt;
% Figura para la animación&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
xlabel('Posición x');&lt;br /&gt;
ylabel('Temperatura u(x, t)');&lt;br /&gt;
title('Evolución de la difusión térmica');&lt;br /&gt;
grid on;&lt;br /&gt;
axis([x_min x_max 0 5]); % Fijar dimensiones de la cuadrícula en X y Y&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    t = t_values(i);&lt;br /&gt;
    sigma = sqrt(2 * t) / dx; % Relación con la solución analítica&lt;br /&gt;
    u_t = imgaussfilt(u0, sigma); % Aproximación de difusión&lt;br /&gt;
    &lt;br /&gt;
    plot(x, u_t, 'Color', colors, 'LineWidth', 2);&lt;br /&gt;
    legend(sprintf('t = %.4f', t));&lt;br /&gt;
    axis([x_min x_max 0 5]); % Mantener eje Y fijo en cada iteración&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
    clf;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(video);&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Delta de dirac como función de condición inicial=&lt;br /&gt;
Partimos de: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t - u_{xx} = 0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,0) = \delta (x)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso, tenemos la solución fundamental de la ecuación del calor en 1D. La pregunta que surge aquí es por qué solo tiene un pico. La respuesta a la pregunta es sencilla: La condición inicial es una delta de dirac que actúa como fuente puntual inicial de calor, por lo que al partir de una función cuyo máximo valor se concentra en un punto la función solución adquiere esta forma.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Sección3imagenGrupoMAMBD.png|400px|thumb|center| Evolución de la solución de la ecuación del calor con fuente puntual.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
def heat_kernel(x, t, alpha=1):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Solución fundamental de la ecuación del calor (distribución gaussiana).&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    return (1 / np.sqrt(4 * np.pi * alpha * t)) * np.exp(-x**2 / (4 * alpha * t))&lt;br /&gt;
&lt;br /&gt;
# Discretización del espacio y tiempos&lt;br /&gt;
x_values = np.linspace(-5, 5, 100)&lt;br /&gt;
t_values = [0.01, 0.1, 0.5, 1, 2]  # Diferentes tiempos para visualizar la evolución&lt;br /&gt;
&lt;br /&gt;
plt.figure(figsize=(8,6))&lt;br /&gt;
for t in t_values:&lt;br /&gt;
    u_values = heat_kernel(x_values, t)&lt;br /&gt;
    plt.plot(x_values, u_values, label=f't = {t}')&lt;br /&gt;
&lt;br /&gt;
plt.xlabel('Posición x')&lt;br /&gt;
plt.ylabel('Temperatura u(x,t)')&lt;br /&gt;
plt.title('Evolución de la solución de la ecuación del calor con fuente puntual')&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Regularidad y dimensiones=&lt;br /&gt;
Vamos a explorar que ocurre al pasar a dos dimensiones (2D), analizando como la difusión del calor se dispersa más rápido en 2D debido a la propagación en múltiples direcciones.&lt;br /&gt;
&lt;br /&gt;
En 1D, la ecuación del calor viene dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Sabemos que dicha ecuación tiene un efecto regularizador, es decir, aunque la condición inicial tenga discontinuidades, la solución se vuelve suave para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;. Por otro lado, la difusión en 1D ocurre a lo largo de una sola dirección (el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) y la solución se suaviza a una determinada velocidad en el tiempo.&lt;br /&gt;
&lt;br /&gt;
Veamos que ocurre en 2D. Ahora, nuestra ecuación es &amp;lt;math&amp;gt;u_t-u_{xx}-u_{yy}=0&amp;lt;/math&amp;gt;. La temperatura inicial se define ahora como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; (x,y)\in([-3,-2]\cup[-1,1]\cup[2,3])\times([-3,-2]\cup[-1,1]\cup[2,3])\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Generalizando a &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; dimensiones, la ecuación del calor vendrá dada por: &amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;, cuya solución fundamental (análoga a la hallada para una dimensión) se distribuye como una gaussiana en varias variables (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;): &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t) = \frac{1}{(4\pi t)^{n/2}} e^{-\frac{|x|^2}{4 t}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El efecto regularizador de la ecuación sigue presente en cualquier dimensión &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Sin embargo, en dimensiones más altas, esta dispersión es más rápida, ya que &amp;lt;math&amp;gt;(4\pi t)^{n/2}&amp;lt;/math&amp;gt; en la solución fundamental crece cuando lo hace &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;; nos surge entonces la pregunta de cómo podemos comparar el tiempo de dispersión en distintas dimensiones. &lt;br /&gt;
&lt;br /&gt;
En \( n \) dimensiones, el calor decae como \(u(x,t) \sim t^{-n/2}\), lo que reafirma que este se disipa más rápido a medida que aumenta la dimensión del espacio. Si queremos comparar el tiempo característico de disipación \( t_d \) en distintas dimensiones, llegamos a la relación \( t_d(n) \sim \frac{t_d(1)}{n/2} \), que nos dice que el tiempo de disipación en dimensión \( n \) es inversamente proporcional a \( n/2 \).&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Heat_equation_2D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0, 10] &amp;lt;/math&amp;gt;, dimensión 2 (2D).]]&lt;br /&gt;
&lt;br /&gt;
Comparemos así la gráfica superior con la hallada para el análisis en dos dimensiones. Podemos apreciar fácilmente como para un mismo periodo de tiempo el calor en cada punto del espacio es menor en esta gráfica que en la anterior pues en 1D, el calor solo se propaga en una dirección, lo que complica la disipación tal y como vemos, pues al aumentar un grado de libertad, para \( t=10 \) el calor en el sistema es casi impredecible.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
a=-4; b=4;                      % Intervalo de definición de la x ([a,b]^2) &lt;br /&gt;
div=0.05;                       % División del vector en x &lt;br /&gt;
X=a:div:b;                      % Vector de X &lt;br /&gt;
[X1,X2]=meshgrid(X,X);          % Creación de la malla en x &lt;br /&gt;
&lt;br /&gt;
% Definir las condiciones iniciales&lt;br /&gt;
U0 = zeros(size(X1));&lt;br /&gt;
U0((X1 &amp;gt; -3) &amp;amp; (X1 &amp;lt; -2) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5; % Letra 1&lt;br /&gt;
U0((X1 &amp;gt; -1) &amp;amp; (X1 &amp;lt; 1) &amp;amp; (X2 &amp;gt; -2) &amp;amp; (X2 &amp;lt; 2)) = 5;  % Letra 2&lt;br /&gt;
U0((X1 &amp;gt; 2) &amp;amp; (X1 &amp;lt; 3) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5;  % Letra 3&lt;br /&gt;
&lt;br /&gt;
% Solución de la ecuación del calor mediante convolución con la solución fundamental&lt;br /&gt;
norma2=@(x1,x2)sqrt(x1.^2+x2.^2);  % Función norma &lt;br /&gt;
Phi2 = @(x1,x2,t)(1./((4*pi*t)).*exp(-norma2(x1,x2).^2./(4*t))); % Solución fundamental en 2D&lt;br /&gt;
&lt;br /&gt;
% Parámetros de animación&lt;br /&gt;
T_max = 10;        % Tiempo máximo de simulación&lt;br /&gt;
num_frames = 100;  % Número de cuadros en la animación&lt;br /&gt;
T_values = linspace(0.001, T_max, num_frames);&lt;br /&gt;
&lt;br /&gt;
% Crear objeto de video&lt;br /&gt;
video_filename = 'heat_equation_2D.mp4';&lt;br /&gt;
vid = VideoWriter(video_filename, 'MPEG-4');&lt;br /&gt;
vid.FrameRate = 20; % FPS del video&lt;br /&gt;
open(vid);&lt;br /&gt;
&lt;br /&gt;
figure;&lt;br /&gt;
cmap = hot;&lt;br /&gt;
clim = [0, 5]; % Fijar la escala de colores entre 0 y 5&lt;br /&gt;
for i=1:length(T_values)&lt;br /&gt;
    U = conv2(U0, Phi2(X1,X2,T_values(i)), 'same') * div^2; % Convolución discreta&lt;br /&gt;
    &lt;br /&gt;
    surf(X1,X2,U)&lt;br /&gt;
    shading interp &lt;br /&gt;
    colorbar;&lt;br /&gt;
    colormap(cmap);&lt;br /&gt;
    caxis(clim); % Mantener la escala de colores fija&lt;br /&gt;
    xlabel('X') &lt;br /&gt;
    ylabel('Y') &lt;br /&gt;
    zlabel('Temperatura') &lt;br /&gt;
    title(&amp;quot;Evolución en 2D para t=&amp;quot;+num2str(T_values(i),'%.3f')+' s') &lt;br /&gt;
    axis([-4 4 -4 4 0 5]);&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(vid, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(vid);&lt;br /&gt;
&lt;br /&gt;
disp(['Video guardado como: ', video_filename]);&lt;br /&gt;
&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84959</id>
		<title>Ecuación del calor (Grupo MAMBD))</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84959"/>
				<updated>2025-03-18T23:31:31Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Delta de dirac como función de condición inicial */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
En el siguiente trabajo, se busca explorar el comportamiento de la solución a la ecuación del calor para regiones no acotadas, así como la distribución de dicha solución en según que dimensiones.&lt;br /&gt;
&lt;br /&gt;
El problema del calor viene dado por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt;u(x, t)&amp;lt;/math&amp;gt; representa la temperatura del medio en función del tiempo y de la posición.&lt;br /&gt;
&lt;br /&gt;
Como estamos en un medio infinito, tendremos que mirar como una perturbación térmica puntual se difunde con el tiempo. Para ello usamos la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;G(x,t)=\frac{1}{(4\pi t)^{n/2}}e^{-\frac{|x|^2}{4t}},&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Solución de la ecuación del calor empleando la convolución=&lt;br /&gt;
&lt;br /&gt;
Planteamos un problema particular para la ecuación del calor en una dimensión, dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Definimos la temperatura en el instante inicial&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; x\in[-3,-2]\cup[-1,1]\cup[2,3]\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el tiempo, el calor empieza a difundirse según la ecuación dada, cuya solución viene dada por la convolución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\int_{-\infty}^{\infty} G(x-y,t)u_0(y) dy=\frac{1}{\sqrt{4 \pi t}}\int_{-\infty}^{\infty} u_0(y)e^{-\frac{(x-y)^2}{4t}}.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujando la solución para diferentes tiempos, obtenemos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: difusion_termica_1D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0, 10] &amp;lt;/math&amp;gt;, en 1 dimensión.]]&lt;br /&gt;
&lt;br /&gt;
Se aprecia como, conforme avanza el tiempo, la solución tiende a cero y pierde su forma (de tres picos) dada por la condición inicial. Al inicio, las regiones calientes se distinguen claramente, pero poco a poco el calor se extiende a las áreas frías, mostrando como el calor comienza a difundirse por el resto del espacio hasta que la temperatura se ha distribuido de manera uniforme.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:BarraMetal.png|400px|thumb|right|Difusión del mensaje en la barra de metal]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
&lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
imp = 6;&lt;br /&gt;
T=[0.001,0.01,0.1];&lt;br /&gt;
a = [-3, -1, 2];  % Inicio de los segmentos de calor&lt;br /&gt;
b = [-2,  1, 3];  % Fin de los segmentos de calor&lt;br /&gt;
tf = max(T); &lt;br /&gt;
div = 10^-3; &lt;br /&gt;
&lt;br /&gt;
X = -10:div:10;  &lt;br /&gt;
&lt;br /&gt;
% Función de solución fundamental de la ecuación del calor en 1D&lt;br /&gt;
Phi = @(x,t) (1./((4*pi*t).^(1/2)) .* exp(-abs(x).^2./(4*t))); &lt;br /&gt;
&lt;br /&gt;
U = zeros(length(X), length(T));  % Matriz para almacenar soluciones en diferentes tiempos&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución usando la integral de convolución&lt;br /&gt;
for j = 1:length(X)&lt;br /&gt;
    for i = 1:length(T)&lt;br /&gt;
        integral_sum = 0;&lt;br /&gt;
        for k = 1:length(a) &lt;br /&gt;
            Y = a(k):div:b(k); &lt;br /&gt;
            integral_sum = integral_sum + trapz(Y, Phi(X(j)*ones(1,length(Y)) - Y, T(i)*ones(1,length(Y))));&lt;br /&gt;
        end&lt;br /&gt;
        U(j,i) = 5 * integral_sum; &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Dibujar todas las soluciones en una misma gráfica&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
colors = ['r', 'g', 'b'];&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(T) &lt;br /&gt;
    plot(X, U(:,i), colors(i), 'LineWidth', 1.5, 'DisplayName', &amp;quot;t = &amp;quot; + num2str(T(i)) + &amp;quot; s&amp;quot;) &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
xlim([-10 10])  &lt;br /&gt;
ylim([0 5.5]) &lt;br /&gt;
xlabel('Posición x') &lt;br /&gt;
ylabel('Temperatura U(x,t)') &lt;br /&gt;
title(&amp;quot;Difusión térmica del mensaje en la barra de metal&amp;quot;) &lt;br /&gt;
legend show &lt;br /&gt;
grid on &lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
t_values = logspace(-3, 1, 50); % Valores de tiempo en escala logarítmica&lt;br /&gt;
colors = 'r'; % Color de la curva&lt;br /&gt;
&lt;br /&gt;
% Condición inicial: Representación simplificada de un mensaje con calor&lt;br /&gt;
u0 = zeros(size(x));&lt;br /&gt;
u0(x &amp;gt; -3 &amp;amp; x &amp;lt; -2) = 5; % Letra &amp;quot;segmento 1&amp;quot;&lt;br /&gt;
u0(x &amp;gt; -1 &amp;amp; x &amp;lt; 1) = 5;  % Letra &amp;quot;segmento 2&amp;quot;&lt;br /&gt;
u0(x &amp;gt; 2 &amp;amp; x &amp;lt; 3) = 5;  % Letra &amp;quot;segmento 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
% Configurar video&lt;br /&gt;
video = VideoWriter('difusion_termica.avi');&lt;br /&gt;
video.FrameRate = 10;&lt;br /&gt;
open(video);&lt;br /&gt;
&lt;br /&gt;
% Figura para la animación&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
xlabel('Posición x');&lt;br /&gt;
ylabel('Temperatura u(x, t)');&lt;br /&gt;
title('Evolución de la difusión térmica');&lt;br /&gt;
grid on;&lt;br /&gt;
axis([x_min x_max 0 5]); % Fijar dimensiones de la cuadrícula en X y Y&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    t = t_values(i);&lt;br /&gt;
    sigma = sqrt(2 * t) / dx; % Relación con la solución analítica&lt;br /&gt;
    u_t = imgaussfilt(u0, sigma); % Aproximación de difusión&lt;br /&gt;
    &lt;br /&gt;
    plot(x, u_t, 'Color', colors, 'LineWidth', 2);&lt;br /&gt;
    legend(sprintf('t = %.4f', t));&lt;br /&gt;
    axis([x_min x_max 0 5]); % Mantener eje Y fijo en cada iteración&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
    clf;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(video);&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Delta de dirac como función de condición inicial=&lt;br /&gt;
Partimos de: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t - u_xx = 0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,0) = \delta (x)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso, tenemos la solución fundamental de la ecuación del calor en 1D. La pregunta que surge aquí es por qué solo tiene un pico. La respuesta a la pregunta es sencilla: La condición inicial es una delta de dirac que actúa como fuente puntual inicial de calor, por lo que al partir de una función cuyo máximo valor se concentra en un punto la función solución adquiere esta forma.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Sección3imagenGrupoMAMBD.png|400px|thumb|center| Evolución de la solución de la ecuación del calor con fuente puntual.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
def heat_kernel(x, t, alpha=1):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Solución fundamental de la ecuación del calor (distribución gaussiana).&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    return (1 / np.sqrt(4 * np.pi * alpha * t)) * np.exp(-x**2 / (4 * alpha * t))&lt;br /&gt;
&lt;br /&gt;
# Discretización del espacio y tiempos&lt;br /&gt;
x_values = np.linspace(-5, 5, 100)&lt;br /&gt;
t_values = [0.01, 0.1, 0.5, 1, 2]  # Diferentes tiempos para visualizar la evolución&lt;br /&gt;
&lt;br /&gt;
plt.figure(figsize=(8,6))&lt;br /&gt;
for t in t_values:&lt;br /&gt;
    u_values = heat_kernel(x_values, t)&lt;br /&gt;
    plt.plot(x_values, u_values, label=f't = {t}')&lt;br /&gt;
&lt;br /&gt;
plt.xlabel('Posición x')&lt;br /&gt;
plt.ylabel('Temperatura u(x,t)')&lt;br /&gt;
plt.title('Evolución de la solución de la ecuación del calor con fuente puntual')&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Regularidad y dimensiones=&lt;br /&gt;
Vamos a explorar que ocurre al pasar a dos dimensiones (2D), analizando como la difusión del calor se dispersa más rápido en 2D debido a la propagación en múltiples direcciones.&lt;br /&gt;
&lt;br /&gt;
En 1D, la ecuación del calor viene dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Sabemos que dicha ecuación tiene un efecto regularizador, es decir, aunque la condición inicial tenga discontinuidades, la solución se vuelve suave para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;. Por otro lado, la difusión en 1D ocurre a lo largo de una sola dirección (el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) y la solución se suaviza a una determinada velocidad en el tiempo.&lt;br /&gt;
&lt;br /&gt;
Veamos que ocurre en 2D. Ahora, nuestra ecuación es &amp;lt;math&amp;gt;u_t-u_{xx}-u_{yy}=0&amp;lt;/math&amp;gt;. La temperatura inicial se define ahora como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; (x,y)\in([-3,-2]\cup[-1,1]\cup[2,3])\times([-3,-2]\cup[-1,1]\cup[2,3])\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Generalizando a &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; dimensiones, la ecuación del calor vendrá dada por: &amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;, cuya solución fundamental (análoga a la hallada para una dimensión) se distribuye como una gaussiana en varias variables (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;): &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t) = \frac{1}{(4\pi t)^{n/2}} e^{-\frac{|x|^2}{4 t}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El efecto regularizador de la ecuación sigue presente en cualquier dimensión &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Sin embargo, en dimensiones más altas, esta dispersión es más rápida, ya que &amp;lt;math&amp;gt;(4\pi t)^{n/2}&amp;lt;/math&amp;gt; en la solución fundamental crece cuando lo hace &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;; nos surge entonces la pregunta de cómo podemos comparar el tiempo de dispersión en distintas dimensiones. &lt;br /&gt;
&lt;br /&gt;
En \( n \) dimensiones, el calor decae como \(u(x,t) \sim t^{-n/2}\), lo que reafirma que este se disipa más rápido a medida que aumenta la dimensión del espacio. Si queremos comparar el tiempo característico de disipación \( t_d \) en distintas dimensiones, llegamos a la relación \( t_d(n) \sim \frac{t_d(1)}{n/2} \), que nos dice que el tiempo de disipación en dimensión \( n \) es inversamente proporcional a \( n/2 \).&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Heat_equation_2D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0, 10] &amp;lt;/math&amp;gt;, dimensión 2 (2D).]]&lt;br /&gt;
&lt;br /&gt;
Comparemos así la gráfica superior con la hallada para el análisis en dos dimensiones. Podemos apreciar fácilmente como para un mismo periodo de tiempo el calor en cada punto del espacio es menor en esta gráfica que en la anterior pues en 1D, el calor solo se propaga en una dirección, lo que complica la disipación tal y como vemos, pues al aumentar un grado de libertad, para \( t=10 \) el calor en el sistema es casi impredecible.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
a=-4; b=4;                      % Intervalo de definición de la x ([a,b]^2) &lt;br /&gt;
div=0.05;                       % División del vector en x &lt;br /&gt;
X=a:div:b;                      % Vector de X &lt;br /&gt;
[X1,X2]=meshgrid(X,X);          % Creación de la malla en x &lt;br /&gt;
&lt;br /&gt;
% Definir las condiciones iniciales&lt;br /&gt;
U0 = zeros(size(X1));&lt;br /&gt;
U0((X1 &amp;gt; -3) &amp;amp; (X1 &amp;lt; -2) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5; % Letra 1&lt;br /&gt;
U0((X1 &amp;gt; -1) &amp;amp; (X1 &amp;lt; 1) &amp;amp; (X2 &amp;gt; -2) &amp;amp; (X2 &amp;lt; 2)) = 5;  % Letra 2&lt;br /&gt;
U0((X1 &amp;gt; 2) &amp;amp; (X1 &amp;lt; 3) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5;  % Letra 3&lt;br /&gt;
&lt;br /&gt;
% Solución de la ecuación del calor mediante convolución con la solución fundamental&lt;br /&gt;
norma2=@(x1,x2)sqrt(x1.^2+x2.^2);  % Función norma &lt;br /&gt;
Phi2 = @(x1,x2,t)(1./((4*pi*t)).*exp(-norma2(x1,x2).^2./(4*t))); % Solución fundamental en 2D&lt;br /&gt;
&lt;br /&gt;
% Parámetros de animación&lt;br /&gt;
T_max = 10;        % Tiempo máximo de simulación&lt;br /&gt;
num_frames = 100;  % Número de cuadros en la animación&lt;br /&gt;
T_values = linspace(0.001, T_max, num_frames);&lt;br /&gt;
&lt;br /&gt;
% Crear objeto de video&lt;br /&gt;
video_filename = 'heat_equation_2D.mp4';&lt;br /&gt;
vid = VideoWriter(video_filename, 'MPEG-4');&lt;br /&gt;
vid.FrameRate = 20; % FPS del video&lt;br /&gt;
open(vid);&lt;br /&gt;
&lt;br /&gt;
figure;&lt;br /&gt;
cmap = hot;&lt;br /&gt;
clim = [0, 5]; % Fijar la escala de colores entre 0 y 5&lt;br /&gt;
for i=1:length(T_values)&lt;br /&gt;
    U = conv2(U0, Phi2(X1,X2,T_values(i)), 'same') * div^2; % Convolución discreta&lt;br /&gt;
    &lt;br /&gt;
    surf(X1,X2,U)&lt;br /&gt;
    shading interp &lt;br /&gt;
    colorbar;&lt;br /&gt;
    colormap(cmap);&lt;br /&gt;
    caxis(clim); % Mantener la escala de colores fija&lt;br /&gt;
    xlabel('X') &lt;br /&gt;
    ylabel('Y') &lt;br /&gt;
    zlabel('Temperatura') &lt;br /&gt;
    title(&amp;quot;Evolución en 2D para t=&amp;quot;+num2str(T_values(i),'%.3f')+' s') &lt;br /&gt;
    axis([-4 4 -4 4 0 5]);&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(vid, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(vid);&lt;br /&gt;
&lt;br /&gt;
disp(['Video guardado como: ', video_filename]);&lt;br /&gt;
&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84958</id>
		<title>Ecuación del calor (Grupo MAMBD))</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84958"/>
				<updated>2025-03-18T23:31:19Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Delta de dirac como función de condición inicial */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
En el siguiente trabajo, se busca explorar el comportamiento de la solución a la ecuación del calor para regiones no acotadas, así como la distribución de dicha solución en según que dimensiones.&lt;br /&gt;
&lt;br /&gt;
El problema del calor viene dado por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt;u(x, t)&amp;lt;/math&amp;gt; representa la temperatura del medio en función del tiempo y de la posición.&lt;br /&gt;
&lt;br /&gt;
Como estamos en un medio infinito, tendremos que mirar como una perturbación térmica puntual se difunde con el tiempo. Para ello usamos la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;G(x,t)=\frac{1}{(4\pi t)^{n/2}}e^{-\frac{|x|^2}{4t}},&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Solución de la ecuación del calor empleando la convolución=&lt;br /&gt;
&lt;br /&gt;
Planteamos un problema particular para la ecuación del calor en una dimensión, dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Definimos la temperatura en el instante inicial&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; x\in[-3,-2]\cup[-1,1]\cup[2,3]\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el tiempo, el calor empieza a difundirse según la ecuación dada, cuya solución viene dada por la convolución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\int_{-\infty}^{\infty} G(x-y,t)u_0(y) dy=\frac{1}{\sqrt{4 \pi t}}\int_{-\infty}^{\infty} u_0(y)e^{-\frac{(x-y)^2}{4t}}.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujando la solución para diferentes tiempos, obtenemos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: difusion_termica_1D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0, 10] &amp;lt;/math&amp;gt;, en 1 dimensión.]]&lt;br /&gt;
&lt;br /&gt;
Se aprecia como, conforme avanza el tiempo, la solución tiende a cero y pierde su forma (de tres picos) dada por la condición inicial. Al inicio, las regiones calientes se distinguen claramente, pero poco a poco el calor se extiende a las áreas frías, mostrando como el calor comienza a difundirse por el resto del espacio hasta que la temperatura se ha distribuido de manera uniforme.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:BarraMetal.png|400px|thumb|right|Difusión del mensaje en la barra de metal]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
&lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
imp = 6;&lt;br /&gt;
T=[0.001,0.01,0.1];&lt;br /&gt;
a = [-3, -1, 2];  % Inicio de los segmentos de calor&lt;br /&gt;
b = [-2,  1, 3];  % Fin de los segmentos de calor&lt;br /&gt;
tf = max(T); &lt;br /&gt;
div = 10^-3; &lt;br /&gt;
&lt;br /&gt;
X = -10:div:10;  &lt;br /&gt;
&lt;br /&gt;
% Función de solución fundamental de la ecuación del calor en 1D&lt;br /&gt;
Phi = @(x,t) (1./((4*pi*t).^(1/2)) .* exp(-abs(x).^2./(4*t))); &lt;br /&gt;
&lt;br /&gt;
U = zeros(length(X), length(T));  % Matriz para almacenar soluciones en diferentes tiempos&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución usando la integral de convolución&lt;br /&gt;
for j = 1:length(X)&lt;br /&gt;
    for i = 1:length(T)&lt;br /&gt;
        integral_sum = 0;&lt;br /&gt;
        for k = 1:length(a) &lt;br /&gt;
            Y = a(k):div:b(k); &lt;br /&gt;
            integral_sum = integral_sum + trapz(Y, Phi(X(j)*ones(1,length(Y)) - Y, T(i)*ones(1,length(Y))));&lt;br /&gt;
        end&lt;br /&gt;
        U(j,i) = 5 * integral_sum; &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Dibujar todas las soluciones en una misma gráfica&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
colors = ['r', 'g', 'b'];&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(T) &lt;br /&gt;
    plot(X, U(:,i), colors(i), 'LineWidth', 1.5, 'DisplayName', &amp;quot;t = &amp;quot; + num2str(T(i)) + &amp;quot; s&amp;quot;) &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
xlim([-10 10])  &lt;br /&gt;
ylim([0 5.5]) &lt;br /&gt;
xlabel('Posición x') &lt;br /&gt;
ylabel('Temperatura U(x,t)') &lt;br /&gt;
title(&amp;quot;Difusión térmica del mensaje en la barra de metal&amp;quot;) &lt;br /&gt;
legend show &lt;br /&gt;
grid on &lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
t_values = logspace(-3, 1, 50); % Valores de tiempo en escala logarítmica&lt;br /&gt;
colors = 'r'; % Color de la curva&lt;br /&gt;
&lt;br /&gt;
% Condición inicial: Representación simplificada de un mensaje con calor&lt;br /&gt;
u0 = zeros(size(x));&lt;br /&gt;
u0(x &amp;gt; -3 &amp;amp; x &amp;lt; -2) = 5; % Letra &amp;quot;segmento 1&amp;quot;&lt;br /&gt;
u0(x &amp;gt; -1 &amp;amp; x &amp;lt; 1) = 5;  % Letra &amp;quot;segmento 2&amp;quot;&lt;br /&gt;
u0(x &amp;gt; 2 &amp;amp; x &amp;lt; 3) = 5;  % Letra &amp;quot;segmento 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
% Configurar video&lt;br /&gt;
video = VideoWriter('difusion_termica.avi');&lt;br /&gt;
video.FrameRate = 10;&lt;br /&gt;
open(video);&lt;br /&gt;
&lt;br /&gt;
% Figura para la animación&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
xlabel('Posición x');&lt;br /&gt;
ylabel('Temperatura u(x, t)');&lt;br /&gt;
title('Evolución de la difusión térmica');&lt;br /&gt;
grid on;&lt;br /&gt;
axis([x_min x_max 0 5]); % Fijar dimensiones de la cuadrícula en X y Y&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    t = t_values(i);&lt;br /&gt;
    sigma = sqrt(2 * t) / dx; % Relación con la solución analítica&lt;br /&gt;
    u_t = imgaussfilt(u0, sigma); % Aproximación de difusión&lt;br /&gt;
    &lt;br /&gt;
    plot(x, u_t, 'Color', colors, 'LineWidth', 2);&lt;br /&gt;
    legend(sprintf('t = %.4f', t));&lt;br /&gt;
    axis([x_min x_max 0 5]); % Mantener eje Y fijo en cada iteración&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
    clf;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(video);&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Delta de dirac como función de condición inicial=&lt;br /&gt;
Partimos de: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t - u_xx = 0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,0) = /delta (x)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso, tenemos la solución fundamental de la ecuación del calor en 1D. La pregunta que surge aquí es por qué solo tiene un pico. La respuesta a la pregunta es sencilla: La condición inicial es una delta de dirac que actúa como fuente puntual inicial de calor, por lo que al partir de una función cuyo máximo valor se concentra en un punto la función solución adquiere esta forma.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Sección3imagenGrupoMAMBD.png|400px|thumb|center| Evolución de la solución de la ecuación del calor con fuente puntual.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
def heat_kernel(x, t, alpha=1):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Solución fundamental de la ecuación del calor (distribución gaussiana).&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    return (1 / np.sqrt(4 * np.pi * alpha * t)) * np.exp(-x**2 / (4 * alpha * t))&lt;br /&gt;
&lt;br /&gt;
# Discretización del espacio y tiempos&lt;br /&gt;
x_values = np.linspace(-5, 5, 100)&lt;br /&gt;
t_values = [0.01, 0.1, 0.5, 1, 2]  # Diferentes tiempos para visualizar la evolución&lt;br /&gt;
&lt;br /&gt;
plt.figure(figsize=(8,6))&lt;br /&gt;
for t in t_values:&lt;br /&gt;
    u_values = heat_kernel(x_values, t)&lt;br /&gt;
    plt.plot(x_values, u_values, label=f't = {t}')&lt;br /&gt;
&lt;br /&gt;
plt.xlabel('Posición x')&lt;br /&gt;
plt.ylabel('Temperatura u(x,t)')&lt;br /&gt;
plt.title('Evolución de la solución de la ecuación del calor con fuente puntual')&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Regularidad y dimensiones=&lt;br /&gt;
Vamos a explorar que ocurre al pasar a dos dimensiones (2D), analizando como la difusión del calor se dispersa más rápido en 2D debido a la propagación en múltiples direcciones.&lt;br /&gt;
&lt;br /&gt;
En 1D, la ecuación del calor viene dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Sabemos que dicha ecuación tiene un efecto regularizador, es decir, aunque la condición inicial tenga discontinuidades, la solución se vuelve suave para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;. Por otro lado, la difusión en 1D ocurre a lo largo de una sola dirección (el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) y la solución se suaviza a una determinada velocidad en el tiempo.&lt;br /&gt;
&lt;br /&gt;
Veamos que ocurre en 2D. Ahora, nuestra ecuación es &amp;lt;math&amp;gt;u_t-u_{xx}-u_{yy}=0&amp;lt;/math&amp;gt;. La temperatura inicial se define ahora como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; (x,y)\in([-3,-2]\cup[-1,1]\cup[2,3])\times([-3,-2]\cup[-1,1]\cup[2,3])\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Generalizando a &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; dimensiones, la ecuación del calor vendrá dada por: &amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;, cuya solución fundamental (análoga a la hallada para una dimensión) se distribuye como una gaussiana en varias variables (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;): &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t) = \frac{1}{(4\pi t)^{n/2}} e^{-\frac{|x|^2}{4 t}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El efecto regularizador de la ecuación sigue presente en cualquier dimensión &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Sin embargo, en dimensiones más altas, esta dispersión es más rápida, ya que &amp;lt;math&amp;gt;(4\pi t)^{n/2}&amp;lt;/math&amp;gt; en la solución fundamental crece cuando lo hace &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;; nos surge entonces la pregunta de cómo podemos comparar el tiempo de dispersión en distintas dimensiones. &lt;br /&gt;
&lt;br /&gt;
En \( n \) dimensiones, el calor decae como \(u(x,t) \sim t^{-n/2}\), lo que reafirma que este se disipa más rápido a medida que aumenta la dimensión del espacio. Si queremos comparar el tiempo característico de disipación \( t_d \) en distintas dimensiones, llegamos a la relación \( t_d(n) \sim \frac{t_d(1)}{n/2} \), que nos dice que el tiempo de disipación en dimensión \( n \) es inversamente proporcional a \( n/2 \).&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Heat_equation_2D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0, 10] &amp;lt;/math&amp;gt;, dimensión 2 (2D).]]&lt;br /&gt;
&lt;br /&gt;
Comparemos así la gráfica superior con la hallada para el análisis en dos dimensiones. Podemos apreciar fácilmente como para un mismo periodo de tiempo el calor en cada punto del espacio es menor en esta gráfica que en la anterior pues en 1D, el calor solo se propaga en una dirección, lo que complica la disipación tal y como vemos, pues al aumentar un grado de libertad, para \( t=10 \) el calor en el sistema es casi impredecible.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
a=-4; b=4;                      % Intervalo de definición de la x ([a,b]^2) &lt;br /&gt;
div=0.05;                       % División del vector en x &lt;br /&gt;
X=a:div:b;                      % Vector de X &lt;br /&gt;
[X1,X2]=meshgrid(X,X);          % Creación de la malla en x &lt;br /&gt;
&lt;br /&gt;
% Definir las condiciones iniciales&lt;br /&gt;
U0 = zeros(size(X1));&lt;br /&gt;
U0((X1 &amp;gt; -3) &amp;amp; (X1 &amp;lt; -2) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5; % Letra 1&lt;br /&gt;
U0((X1 &amp;gt; -1) &amp;amp; (X1 &amp;lt; 1) &amp;amp; (X2 &amp;gt; -2) &amp;amp; (X2 &amp;lt; 2)) = 5;  % Letra 2&lt;br /&gt;
U0((X1 &amp;gt; 2) &amp;amp; (X1 &amp;lt; 3) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5;  % Letra 3&lt;br /&gt;
&lt;br /&gt;
% Solución de la ecuación del calor mediante convolución con la solución fundamental&lt;br /&gt;
norma2=@(x1,x2)sqrt(x1.^2+x2.^2);  % Función norma &lt;br /&gt;
Phi2 = @(x1,x2,t)(1./((4*pi*t)).*exp(-norma2(x1,x2).^2./(4*t))); % Solución fundamental en 2D&lt;br /&gt;
&lt;br /&gt;
% Parámetros de animación&lt;br /&gt;
T_max = 10;        % Tiempo máximo de simulación&lt;br /&gt;
num_frames = 100;  % Número de cuadros en la animación&lt;br /&gt;
T_values = linspace(0.001, T_max, num_frames);&lt;br /&gt;
&lt;br /&gt;
% Crear objeto de video&lt;br /&gt;
video_filename = 'heat_equation_2D.mp4';&lt;br /&gt;
vid = VideoWriter(video_filename, 'MPEG-4');&lt;br /&gt;
vid.FrameRate = 20; % FPS del video&lt;br /&gt;
open(vid);&lt;br /&gt;
&lt;br /&gt;
figure;&lt;br /&gt;
cmap = hot;&lt;br /&gt;
clim = [0, 5]; % Fijar la escala de colores entre 0 y 5&lt;br /&gt;
for i=1:length(T_values)&lt;br /&gt;
    U = conv2(U0, Phi2(X1,X2,T_values(i)), 'same') * div^2; % Convolución discreta&lt;br /&gt;
    &lt;br /&gt;
    surf(X1,X2,U)&lt;br /&gt;
    shading interp &lt;br /&gt;
    colorbar;&lt;br /&gt;
    colormap(cmap);&lt;br /&gt;
    caxis(clim); % Mantener la escala de colores fija&lt;br /&gt;
    xlabel('X') &lt;br /&gt;
    ylabel('Y') &lt;br /&gt;
    zlabel('Temperatura') &lt;br /&gt;
    title(&amp;quot;Evolución en 2D para t=&amp;quot;+num2str(T_values(i),'%.3f')+' s') &lt;br /&gt;
    axis([-4 4 -4 4 0 5]);&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(vid, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(vid);&lt;br /&gt;
&lt;br /&gt;
disp(['Video guardado como: ', video_filename]);&lt;br /&gt;
&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84957</id>
		<title>Ecuación del calor (Grupo MAMBD))</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84957"/>
				<updated>2025-03-18T23:30:07Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Delta de dirac como función de condición inicial */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
En el siguiente trabajo, se busca explorar el comportamiento de la solución a la ecuación del calor para regiones no acotadas, así como la distribución de dicha solución en según que dimensiones.&lt;br /&gt;
&lt;br /&gt;
El problema del calor viene dado por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt;u(x, t)&amp;lt;/math&amp;gt; representa la temperatura del medio en función del tiempo y de la posición.&lt;br /&gt;
&lt;br /&gt;
Como estamos en un medio infinito, tendremos que mirar como una perturbación térmica puntual se difunde con el tiempo. Para ello usamos la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;G(x,t)=\frac{1}{(4\pi t)^{n/2}}e^{-\frac{|x|^2}{4t}},&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Solución de la ecuación del calor empleando la convolución=&lt;br /&gt;
&lt;br /&gt;
Planteamos un problema particular para la ecuación del calor en una dimensión, dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Definimos la temperatura en el instante inicial&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; x\in[-3,-2]\cup[-1,1]\cup[2,3]\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el tiempo, el calor empieza a difundirse según la ecuación dada, cuya solución viene dada por la convolución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\int_{-\infty}^{\infty} G(x-y,t)u_0(y) dy=\frac{1}{\sqrt{4 \pi t}}\int_{-\infty}^{\infty} u_0(y)e^{-\frac{(x-y)^2}{4t}}.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujando la solución para diferentes tiempos, obtenemos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: difusion_termica_1D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0, 10] &amp;lt;/math&amp;gt;, en 1 dimensión.]]&lt;br /&gt;
&lt;br /&gt;
Se aprecia como, conforme avanza el tiempo, la solución tiende a cero y pierde su forma (de tres picos) dada por la condición inicial. Al inicio, las regiones calientes se distinguen claramente, pero poco a poco el calor se extiende a las áreas frías, mostrando como el calor comienza a difundirse por el resto del espacio hasta que la temperatura se ha distribuido de manera uniforme.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:BarraMetal.png|400px|thumb|right|Difusión del mensaje en la barra de metal]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
&lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
imp = 6;&lt;br /&gt;
T=[0.001,0.01,0.1];&lt;br /&gt;
a = [-3, -1, 2];  % Inicio de los segmentos de calor&lt;br /&gt;
b = [-2,  1, 3];  % Fin de los segmentos de calor&lt;br /&gt;
tf = max(T); &lt;br /&gt;
div = 10^-3; &lt;br /&gt;
&lt;br /&gt;
X = -10:div:10;  &lt;br /&gt;
&lt;br /&gt;
% Función de solución fundamental de la ecuación del calor en 1D&lt;br /&gt;
Phi = @(x,t) (1./((4*pi*t).^(1/2)) .* exp(-abs(x).^2./(4*t))); &lt;br /&gt;
&lt;br /&gt;
U = zeros(length(X), length(T));  % Matriz para almacenar soluciones en diferentes tiempos&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución usando la integral de convolución&lt;br /&gt;
for j = 1:length(X)&lt;br /&gt;
    for i = 1:length(T)&lt;br /&gt;
        integral_sum = 0;&lt;br /&gt;
        for k = 1:length(a) &lt;br /&gt;
            Y = a(k):div:b(k); &lt;br /&gt;
            integral_sum = integral_sum + trapz(Y, Phi(X(j)*ones(1,length(Y)) - Y, T(i)*ones(1,length(Y))));&lt;br /&gt;
        end&lt;br /&gt;
        U(j,i) = 5 * integral_sum; &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Dibujar todas las soluciones en una misma gráfica&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
colors = ['r', 'g', 'b'];&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(T) &lt;br /&gt;
    plot(X, U(:,i), colors(i), 'LineWidth', 1.5, 'DisplayName', &amp;quot;t = &amp;quot; + num2str(T(i)) + &amp;quot; s&amp;quot;) &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
xlim([-10 10])  &lt;br /&gt;
ylim([0 5.5]) &lt;br /&gt;
xlabel('Posición x') &lt;br /&gt;
ylabel('Temperatura U(x,t)') &lt;br /&gt;
title(&amp;quot;Difusión térmica del mensaje en la barra de metal&amp;quot;) &lt;br /&gt;
legend show &lt;br /&gt;
grid on &lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
t_values = logspace(-3, 1, 50); % Valores de tiempo en escala logarítmica&lt;br /&gt;
colors = 'r'; % Color de la curva&lt;br /&gt;
&lt;br /&gt;
% Condición inicial: Representación simplificada de un mensaje con calor&lt;br /&gt;
u0 = zeros(size(x));&lt;br /&gt;
u0(x &amp;gt; -3 &amp;amp; x &amp;lt; -2) = 5; % Letra &amp;quot;segmento 1&amp;quot;&lt;br /&gt;
u0(x &amp;gt; -1 &amp;amp; x &amp;lt; 1) = 5;  % Letra &amp;quot;segmento 2&amp;quot;&lt;br /&gt;
u0(x &amp;gt; 2 &amp;amp; x &amp;lt; 3) = 5;  % Letra &amp;quot;segmento 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
% Configurar video&lt;br /&gt;
video = VideoWriter('difusion_termica.avi');&lt;br /&gt;
video.FrameRate = 10;&lt;br /&gt;
open(video);&lt;br /&gt;
&lt;br /&gt;
% Figura para la animación&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
xlabel('Posición x');&lt;br /&gt;
ylabel('Temperatura u(x, t)');&lt;br /&gt;
title('Evolución de la difusión térmica');&lt;br /&gt;
grid on;&lt;br /&gt;
axis([x_min x_max 0 5]); % Fijar dimensiones de la cuadrícula en X y Y&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    t = t_values(i);&lt;br /&gt;
    sigma = sqrt(2 * t) / dx; % Relación con la solución analítica&lt;br /&gt;
    u_t = imgaussfilt(u0, sigma); % Aproximación de difusión&lt;br /&gt;
    &lt;br /&gt;
    plot(x, u_t, 'Color', colors, 'LineWidth', 2);&lt;br /&gt;
    legend(sprintf('t = %.4f', t));&lt;br /&gt;
    axis([x_min x_max 0 5]); % Mantener eje Y fijo en cada iteración&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
    clf;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(video);&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Delta de dirac como función de condición inicial=&lt;br /&gt;
Partimos de: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este caso, tenemos la solución fundamental de la ecuación del calor en 1D. La pregunta que surge aquí es por qué solo tiene un pico. La respuesta a la pregunta es sencilla: La condición inicial es una delta de dirac que actúa como fuente puntual inicial de calor, por lo que al partir de una función cuyo máximo valor se concentra en un punto la función solución adquiere esta forma.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Sección3imagenGrupoMAMBD.png|400px|thumb|center| Evolución de la solución de la ecuación del calor con fuente puntual.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
def heat_kernel(x, t, alpha=1):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Solución fundamental de la ecuación del calor (distribución gaussiana).&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    return (1 / np.sqrt(4 * np.pi * alpha * t)) * np.exp(-x**2 / (4 * alpha * t))&lt;br /&gt;
&lt;br /&gt;
# Discretización del espacio y tiempos&lt;br /&gt;
x_values = np.linspace(-5, 5, 100)&lt;br /&gt;
t_values = [0.01, 0.1, 0.5, 1, 2]  # Diferentes tiempos para visualizar la evolución&lt;br /&gt;
&lt;br /&gt;
plt.figure(figsize=(8,6))&lt;br /&gt;
for t in t_values:&lt;br /&gt;
    u_values = heat_kernel(x_values, t)&lt;br /&gt;
    plt.plot(x_values, u_values, label=f't = {t}')&lt;br /&gt;
&lt;br /&gt;
plt.xlabel('Posición x')&lt;br /&gt;
plt.ylabel('Temperatura u(x,t)')&lt;br /&gt;
plt.title('Evolución de la solución de la ecuación del calor con fuente puntual')&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Regularidad y dimensiones=&lt;br /&gt;
Vamos a explorar que ocurre al pasar a dos dimensiones (2D), analizando como la difusión del calor se dispersa más rápido en 2D debido a la propagación en múltiples direcciones.&lt;br /&gt;
&lt;br /&gt;
En 1D, la ecuación del calor viene dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Sabemos que dicha ecuación tiene un efecto regularizador, es decir, aunque la condición inicial tenga discontinuidades, la solución se vuelve suave para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;. Por otro lado, la difusión en 1D ocurre a lo largo de una sola dirección (el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) y la solución se suaviza a una determinada velocidad en el tiempo.&lt;br /&gt;
&lt;br /&gt;
Veamos que ocurre en 2D. Ahora, nuestra ecuación es &amp;lt;math&amp;gt;u_t-u_{xx}-u_{yy}=0&amp;lt;/math&amp;gt;. La temperatura inicial se define ahora como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; (x,y)\in([-3,-2]\cup[-1,1]\cup[2,3])\times([-3,-2]\cup[-1,1]\cup[2,3])\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Generalizando a &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; dimensiones, la ecuación del calor vendrá dada por: &amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;, cuya solución fundamental (análoga a la hallada para una dimensión) se distribuye como una gaussiana en varias variables (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;): &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t) = \frac{1}{(4\pi t)^{n/2}} e^{-\frac{|x|^2}{4 t}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El efecto regularizador de la ecuación sigue presente en cualquier dimensión &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Sin embargo, en dimensiones más altas, esta dispersión es más rápida, ya que &amp;lt;math&amp;gt;(4\pi t)^{n/2}&amp;lt;/math&amp;gt; en la solución fundamental crece cuando lo hace &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;; nos surge entonces la pregunta de cómo podemos comparar el tiempo de dispersión en distintas dimensiones. &lt;br /&gt;
&lt;br /&gt;
En \( n \) dimensiones, el calor decae como \(u(x,t) \sim t^{-n/2}\), lo que reafirma que este se disipa más rápido a medida que aumenta la dimensión del espacio. Si queremos comparar el tiempo característico de disipación \( t_d \) en distintas dimensiones, llegamos a la relación \( t_d(n) \sim \frac{t_d(1)}{n/2} \), que nos dice que el tiempo de disipación en dimensión \( n \) es inversamente proporcional a \( n/2 \).&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Heat_equation_2D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0, 10] &amp;lt;/math&amp;gt;, dimensión 2 (2D).]]&lt;br /&gt;
&lt;br /&gt;
Comparemos así la gráfica superior con la hallada para el análisis en dos dimensiones. Podemos apreciar fácilmente como para un mismo periodo de tiempo el calor en cada punto del espacio es menor en esta gráfica que en la anterior pues en 1D, el calor solo se propaga en una dirección, lo que complica la disipación tal y como vemos, pues al aumentar un grado de libertad, para \( t=10 \) el calor en el sistema es casi impredecible.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
a=-4; b=4;                      % Intervalo de definición de la x ([a,b]^2) &lt;br /&gt;
div=0.05;                       % División del vector en x &lt;br /&gt;
X=a:div:b;                      % Vector de X &lt;br /&gt;
[X1,X2]=meshgrid(X,X);          % Creación de la malla en x &lt;br /&gt;
&lt;br /&gt;
% Definir las condiciones iniciales&lt;br /&gt;
U0 = zeros(size(X1));&lt;br /&gt;
U0((X1 &amp;gt; -3) &amp;amp; (X1 &amp;lt; -2) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5; % Letra 1&lt;br /&gt;
U0((X1 &amp;gt; -1) &amp;amp; (X1 &amp;lt; 1) &amp;amp; (X2 &amp;gt; -2) &amp;amp; (X2 &amp;lt; 2)) = 5;  % Letra 2&lt;br /&gt;
U0((X1 &amp;gt; 2) &amp;amp; (X1 &amp;lt; 3) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5;  % Letra 3&lt;br /&gt;
&lt;br /&gt;
% Solución de la ecuación del calor mediante convolución con la solución fundamental&lt;br /&gt;
norma2=@(x1,x2)sqrt(x1.^2+x2.^2);  % Función norma &lt;br /&gt;
Phi2 = @(x1,x2,t)(1./((4*pi*t)).*exp(-norma2(x1,x2).^2./(4*t))); % Solución fundamental en 2D&lt;br /&gt;
&lt;br /&gt;
% Parámetros de animación&lt;br /&gt;
T_max = 10;        % Tiempo máximo de simulación&lt;br /&gt;
num_frames = 100;  % Número de cuadros en la animación&lt;br /&gt;
T_values = linspace(0.001, T_max, num_frames);&lt;br /&gt;
&lt;br /&gt;
% Crear objeto de video&lt;br /&gt;
video_filename = 'heat_equation_2D.mp4';&lt;br /&gt;
vid = VideoWriter(video_filename, 'MPEG-4');&lt;br /&gt;
vid.FrameRate = 20; % FPS del video&lt;br /&gt;
open(vid);&lt;br /&gt;
&lt;br /&gt;
figure;&lt;br /&gt;
cmap = hot;&lt;br /&gt;
clim = [0, 5]; % Fijar la escala de colores entre 0 y 5&lt;br /&gt;
for i=1:length(T_values)&lt;br /&gt;
    U = conv2(U0, Phi2(X1,X2,T_values(i)), 'same') * div^2; % Convolución discreta&lt;br /&gt;
    &lt;br /&gt;
    surf(X1,X2,U)&lt;br /&gt;
    shading interp &lt;br /&gt;
    colorbar;&lt;br /&gt;
    colormap(cmap);&lt;br /&gt;
    caxis(clim); % Mantener la escala de colores fija&lt;br /&gt;
    xlabel('X') &lt;br /&gt;
    ylabel('Y') &lt;br /&gt;
    zlabel('Temperatura') &lt;br /&gt;
    title(&amp;quot;Evolución en 2D para t=&amp;quot;+num2str(T_values(i),'%.3f')+' s') &lt;br /&gt;
    axis([-4 4 -4 4 0 5]);&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(vid, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(vid);&lt;br /&gt;
&lt;br /&gt;
disp(['Video guardado como: ', video_filename]);&lt;br /&gt;
&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84956</id>
		<title>Ecuación del calor (Grupo MAMBD))</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84956"/>
				<updated>2025-03-18T23:29:02Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Delta de dirac como función de condición inicial */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
En el siguiente trabajo, se busca explorar el comportamiento de la solución a la ecuación del calor para regiones no acotadas, así como la distribución de dicha solución en según que dimensiones.&lt;br /&gt;
&lt;br /&gt;
El problema del calor viene dado por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt;u(x, t)&amp;lt;/math&amp;gt; representa la temperatura del medio en función del tiempo y de la posición.&lt;br /&gt;
&lt;br /&gt;
Como estamos en un medio infinito, tendremos que mirar como una perturbación térmica puntual se difunde con el tiempo. Para ello usamos la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;G(x,t)=\frac{1}{(4\pi t)^{n/2}}e^{-\frac{|x|^2}{4t}},&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Solución de la ecuación del calor empleando la convolución=&lt;br /&gt;
&lt;br /&gt;
Planteamos un problema particular para la ecuación del calor en una dimensión, dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Definimos la temperatura en el instante inicial&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; x\in[-3,-2]\cup[-1,1]\cup[2,3]\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el tiempo, el calor empieza a difundirse según la ecuación dada, cuya solución viene dada por la convolución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\int_{-\infty}^{\infty} G(x-y,t)u_0(y) dy=\frac{1}{\sqrt{4 \pi t}}\int_{-\infty}^{\infty} u_0(y)e^{-\frac{(x-y)^2}{4t}}.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujando la solución para diferentes tiempos, obtenemos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: difusion_termica_1D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0, 10] &amp;lt;/math&amp;gt;, en 1 dimensión.]]&lt;br /&gt;
&lt;br /&gt;
Se aprecia como, conforme avanza el tiempo, la solución tiende a cero y pierde su forma (de tres picos) dada por la condición inicial. Al inicio, las regiones calientes se distinguen claramente, pero poco a poco el calor se extiende a las áreas frías, mostrando como el calor comienza a difundirse por el resto del espacio hasta que la temperatura se ha distribuido de manera uniforme.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:BarraMetal.png|400px|thumb|right|Difusión del mensaje en la barra de metal]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
&lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
imp = 6;&lt;br /&gt;
T=[0.001,0.01,0.1];&lt;br /&gt;
a = [-3, -1, 2];  % Inicio de los segmentos de calor&lt;br /&gt;
b = [-2,  1, 3];  % Fin de los segmentos de calor&lt;br /&gt;
tf = max(T); &lt;br /&gt;
div = 10^-3; &lt;br /&gt;
&lt;br /&gt;
X = -10:div:10;  &lt;br /&gt;
&lt;br /&gt;
% Función de solución fundamental de la ecuación del calor en 1D&lt;br /&gt;
Phi = @(x,t) (1./((4*pi*t).^(1/2)) .* exp(-abs(x).^2./(4*t))); &lt;br /&gt;
&lt;br /&gt;
U = zeros(length(X), length(T));  % Matriz para almacenar soluciones en diferentes tiempos&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución usando la integral de convolución&lt;br /&gt;
for j = 1:length(X)&lt;br /&gt;
    for i = 1:length(T)&lt;br /&gt;
        integral_sum = 0;&lt;br /&gt;
        for k = 1:length(a) &lt;br /&gt;
            Y = a(k):div:b(k); &lt;br /&gt;
            integral_sum = integral_sum + trapz(Y, Phi(X(j)*ones(1,length(Y)) - Y, T(i)*ones(1,length(Y))));&lt;br /&gt;
        end&lt;br /&gt;
        U(j,i) = 5 * integral_sum; &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Dibujar todas las soluciones en una misma gráfica&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
colors = ['r', 'g', 'b'];&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(T) &lt;br /&gt;
    plot(X, U(:,i), colors(i), 'LineWidth', 1.5, 'DisplayName', &amp;quot;t = &amp;quot; + num2str(T(i)) + &amp;quot; s&amp;quot;) &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
xlim([-10 10])  &lt;br /&gt;
ylim([0 5.5]) &lt;br /&gt;
xlabel('Posición x') &lt;br /&gt;
ylabel('Temperatura U(x,t)') &lt;br /&gt;
title(&amp;quot;Difusión térmica del mensaje en la barra de metal&amp;quot;) &lt;br /&gt;
legend show &lt;br /&gt;
grid on &lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
t_values = logspace(-3, 1, 50); % Valores de tiempo en escala logarítmica&lt;br /&gt;
colors = 'r'; % Color de la curva&lt;br /&gt;
&lt;br /&gt;
% Condición inicial: Representación simplificada de un mensaje con calor&lt;br /&gt;
u0 = zeros(size(x));&lt;br /&gt;
u0(x &amp;gt; -3 &amp;amp; x &amp;lt; -2) = 5; % Letra &amp;quot;segmento 1&amp;quot;&lt;br /&gt;
u0(x &amp;gt; -1 &amp;amp; x &amp;lt; 1) = 5;  % Letra &amp;quot;segmento 2&amp;quot;&lt;br /&gt;
u0(x &amp;gt; 2 &amp;amp; x &amp;lt; 3) = 5;  % Letra &amp;quot;segmento 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
% Configurar video&lt;br /&gt;
video = VideoWriter('difusion_termica.avi');&lt;br /&gt;
video.FrameRate = 10;&lt;br /&gt;
open(video);&lt;br /&gt;
&lt;br /&gt;
% Figura para la animación&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
xlabel('Posición x');&lt;br /&gt;
ylabel('Temperatura u(x, t)');&lt;br /&gt;
title('Evolución de la difusión térmica');&lt;br /&gt;
grid on;&lt;br /&gt;
axis([x_min x_max 0 5]); % Fijar dimensiones de la cuadrícula en X y Y&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    t = t_values(i);&lt;br /&gt;
    sigma = sqrt(2 * t) / dx; % Relación con la solución analítica&lt;br /&gt;
    u_t = imgaussfilt(u0, sigma); % Aproximación de difusión&lt;br /&gt;
    &lt;br /&gt;
    plot(x, u_t, 'Color', colors, 'LineWidth', 2);&lt;br /&gt;
    legend(sprintf('t = %.4f', t));&lt;br /&gt;
    axis([x_min x_max 0 5]); % Mantener eje Y fijo en cada iteración&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
    clf;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(video);&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Delta de dirac como función de condición inicial=&lt;br /&gt;
En este caso, tenemos la solución fundamental de la ecuación del calor en 1D. La pregunta que surge aquí es por qué solo tiene un pico. La respuesta a la pregunta es sencilla: La condición inicial es una delta de dirac que actúa como fuente puntual inicial de calor, por lo que al partir de una función cuyo máximo valor se concentra en un punto la función solución adquiere esta forma.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Sección3imagenGrupoMAMBD.png|400px|thumb|center| Evolución de la solución de la ecuación del calor con fuente puntual.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
def heat_kernel(x, t, alpha=1):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Solución fundamental de la ecuación del calor (distribución gaussiana).&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    return (1 / np.sqrt(4 * np.pi * alpha * t)) * np.exp(-x**2 / (4 * alpha * t))&lt;br /&gt;
&lt;br /&gt;
# Discretización del espacio y tiempos&lt;br /&gt;
x_values = np.linspace(-5, 5, 100)&lt;br /&gt;
t_values = [0.01, 0.1, 0.5, 1, 2]  # Diferentes tiempos para visualizar la evolución&lt;br /&gt;
&lt;br /&gt;
plt.figure(figsize=(8,6))&lt;br /&gt;
for t in t_values:&lt;br /&gt;
    u_values = heat_kernel(x_values, t)&lt;br /&gt;
    plt.plot(x_values, u_values, label=f't = {t}')&lt;br /&gt;
&lt;br /&gt;
plt.xlabel('Posición x')&lt;br /&gt;
plt.ylabel('Temperatura u(x,t)')&lt;br /&gt;
plt.title('Evolución de la solución de la ecuación del calor con fuente puntual')&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Regularidad y dimensiones=&lt;br /&gt;
Vamos a explorar que ocurre al pasar a dos dimensiones (2D), analizando como la difusión del calor se dispersa más rápido en 2D debido a la propagación en múltiples direcciones.&lt;br /&gt;
&lt;br /&gt;
En 1D, la ecuación del calor viene dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Sabemos que dicha ecuación tiene un efecto regularizador, es decir, aunque la condición inicial tenga discontinuidades, la solución se vuelve suave para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;. Por otro lado, la difusión en 1D ocurre a lo largo de una sola dirección (el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) y la solución se suaviza a una determinada velocidad en el tiempo.&lt;br /&gt;
&lt;br /&gt;
Veamos que ocurre en 2D. Ahora, nuestra ecuación es &amp;lt;math&amp;gt;u_t-u_{xx}-u_{yy}=0&amp;lt;/math&amp;gt;. La temperatura inicial se define ahora como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; (x,y)\in([-3,-2]\cup[-1,1]\cup[2,3])\times([-3,-2]\cup[-1,1]\cup[2,3])\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Generalizando a &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; dimensiones, la ecuación del calor vendrá dada por: &amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;, cuya solución fundamental (análoga a la hallada para una dimensión) se distribuye como una gaussiana en varias variables (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;): &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t) = \frac{1}{(4\pi t)^{n/2}} e^{-\frac{|x|^2}{4 t}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El efecto regularizador de la ecuación sigue presente en cualquier dimensión &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Sin embargo, en dimensiones más altas, esta dispersión es más rápida, ya que &amp;lt;math&amp;gt;(4\pi t)^{n/2}&amp;lt;/math&amp;gt; en la solución fundamental crece cuando lo hace &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;; nos surge entonces la pregunta de cómo podemos comparar el tiempo de dispersión en distintas dimensiones. &lt;br /&gt;
&lt;br /&gt;
En \( n \) dimensiones, el calor decae como \(u(x,t) \sim t^{-n/2}\), lo que reafirma que este se disipa más rápido a medida que aumenta la dimensión del espacio. Si queremos comparar el tiempo característico de disipación \( t_d \) en distintas dimensiones, llegamos a la relación \( t_d(n) \sim \frac{t_d(1)}{n/2} \), que nos dice que el tiempo de disipación en dimensión \( n \) es inversamente proporcional a \( n/2 \).&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Heat_equation_2D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0, 10] &amp;lt;/math&amp;gt;, dimensión 2 (2D).]]&lt;br /&gt;
&lt;br /&gt;
Comparemos así la gráfica superior con la hallada para el análisis en dos dimensiones. Podemos apreciar fácilmente como para un mismo periodo de tiempo el calor en cada punto del espacio es menor en esta gráfica que en la anterior pues en 1D, el calor solo se propaga en una dirección, lo que complica la disipación tal y como vemos, pues al aumentar un grado de libertad, para \( t=10 \) el calor en el sistema es casi impredecible.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
a=-4; b=4;                      % Intervalo de definición de la x ([a,b]^2) &lt;br /&gt;
div=0.05;                       % División del vector en x &lt;br /&gt;
X=a:div:b;                      % Vector de X &lt;br /&gt;
[X1,X2]=meshgrid(X,X);          % Creación de la malla en x &lt;br /&gt;
&lt;br /&gt;
% Definir las condiciones iniciales&lt;br /&gt;
U0 = zeros(size(X1));&lt;br /&gt;
U0((X1 &amp;gt; -3) &amp;amp; (X1 &amp;lt; -2) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5; % Letra 1&lt;br /&gt;
U0((X1 &amp;gt; -1) &amp;amp; (X1 &amp;lt; 1) &amp;amp; (X2 &amp;gt; -2) &amp;amp; (X2 &amp;lt; 2)) = 5;  % Letra 2&lt;br /&gt;
U0((X1 &amp;gt; 2) &amp;amp; (X1 &amp;lt; 3) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5;  % Letra 3&lt;br /&gt;
&lt;br /&gt;
% Solución de la ecuación del calor mediante convolución con la solución fundamental&lt;br /&gt;
norma2=@(x1,x2)sqrt(x1.^2+x2.^2);  % Función norma &lt;br /&gt;
Phi2 = @(x1,x2,t)(1./((4*pi*t)).*exp(-norma2(x1,x2).^2./(4*t))); % Solución fundamental en 2D&lt;br /&gt;
&lt;br /&gt;
% Parámetros de animación&lt;br /&gt;
T_max = 10;        % Tiempo máximo de simulación&lt;br /&gt;
num_frames = 100;  % Número de cuadros en la animación&lt;br /&gt;
T_values = linspace(0.001, T_max, num_frames);&lt;br /&gt;
&lt;br /&gt;
% Crear objeto de video&lt;br /&gt;
video_filename = 'heat_equation_2D.mp4';&lt;br /&gt;
vid = VideoWriter(video_filename, 'MPEG-4');&lt;br /&gt;
vid.FrameRate = 20; % FPS del video&lt;br /&gt;
open(vid);&lt;br /&gt;
&lt;br /&gt;
figure;&lt;br /&gt;
cmap = hot;&lt;br /&gt;
clim = [0, 5]; % Fijar la escala de colores entre 0 y 5&lt;br /&gt;
for i=1:length(T_values)&lt;br /&gt;
    U = conv2(U0, Phi2(X1,X2,T_values(i)), 'same') * div^2; % Convolución discreta&lt;br /&gt;
    &lt;br /&gt;
    surf(X1,X2,U)&lt;br /&gt;
    shading interp &lt;br /&gt;
    colorbar;&lt;br /&gt;
    colormap(cmap);&lt;br /&gt;
    caxis(clim); % Mantener la escala de colores fija&lt;br /&gt;
    xlabel('X') &lt;br /&gt;
    ylabel('Y') &lt;br /&gt;
    zlabel('Temperatura') &lt;br /&gt;
    title(&amp;quot;Evolución en 2D para t=&amp;quot;+num2str(T_values(i),'%.3f')+' s') &lt;br /&gt;
    axis([-4 4 -4 4 0 5]);&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(vid, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(vid);&lt;br /&gt;
&lt;br /&gt;
disp(['Video guardado como: ', video_filename]);&lt;br /&gt;
&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84955</id>
		<title>Ecuación del calor (Grupo MAMBD))</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84955"/>
				<updated>2025-03-18T23:28:17Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Delta de dirac como función de condición inicial */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
En el siguiente trabajo, se busca explorar el comportamiento de la solución a la ecuación del calor para regiones no acotadas, así como la distribución de dicha solución en según que dimensiones.&lt;br /&gt;
&lt;br /&gt;
El problema del calor viene dado por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt;u(x, t)&amp;lt;/math&amp;gt; representa la temperatura del medio en función del tiempo y de la posición.&lt;br /&gt;
&lt;br /&gt;
Como estamos en un medio infinito, tendremos que mirar como una perturbación térmica puntual se difunde con el tiempo. Para ello usamos la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;G(x,t)=\frac{1}{(4\pi t)^{n/2}}e^{-\frac{|x|^2}{4t}},&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Solución de la ecuación del calor empleando la convolución=&lt;br /&gt;
&lt;br /&gt;
Planteamos un problema particular para la ecuación del calor en una dimensión, dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Definimos la temperatura en el instante inicial&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; x\in[-3,-2]\cup[-1,1]\cup[2,3]\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el tiempo, el calor empieza a difundirse según la ecuación dada, cuya solución viene dada por la convolución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\int_{-\infty}^{\infty} G(x-y,t)u_0(y) dy=\frac{1}{\sqrt{4 \pi t}}\int_{-\infty}^{\infty} u_0(y)e^{-\frac{(x-y)^2}{4t}}.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujando la solución para diferentes tiempos, obtenemos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: difusion_termica_1D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0, 10] &amp;lt;/math&amp;gt;, en 1 dimensión.]]&lt;br /&gt;
&lt;br /&gt;
Se aprecia como, conforme avanza el tiempo, la solución tiende a cero y pierde su forma (de tres picos) dada por la condición inicial. Al inicio, las regiones calientes se distinguen claramente, pero poco a poco el calor se extiende a las áreas frías, mostrando como el calor comienza a difundirse por el resto del espacio hasta que la temperatura se ha distribuido de manera uniforme.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:BarraMetal.png|400px|thumb|right|Difusión del mensaje en la barra de metal]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
&lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
imp = 6;&lt;br /&gt;
T=[0.001,0.01,0.1];&lt;br /&gt;
a = [-3, -1, 2];  % Inicio de los segmentos de calor&lt;br /&gt;
b = [-2,  1, 3];  % Fin de los segmentos de calor&lt;br /&gt;
tf = max(T); &lt;br /&gt;
div = 10^-3; &lt;br /&gt;
&lt;br /&gt;
X = -10:div:10;  &lt;br /&gt;
&lt;br /&gt;
% Función de solución fundamental de la ecuación del calor en 1D&lt;br /&gt;
Phi = @(x,t) (1./((4*pi*t).^(1/2)) .* exp(-abs(x).^2./(4*t))); &lt;br /&gt;
&lt;br /&gt;
U = zeros(length(X), length(T));  % Matriz para almacenar soluciones en diferentes tiempos&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución usando la integral de convolución&lt;br /&gt;
for j = 1:length(X)&lt;br /&gt;
    for i = 1:length(T)&lt;br /&gt;
        integral_sum = 0;&lt;br /&gt;
        for k = 1:length(a) &lt;br /&gt;
            Y = a(k):div:b(k); &lt;br /&gt;
            integral_sum = integral_sum + trapz(Y, Phi(X(j)*ones(1,length(Y)) - Y, T(i)*ones(1,length(Y))));&lt;br /&gt;
        end&lt;br /&gt;
        U(j,i) = 5 * integral_sum; &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Dibujar todas las soluciones en una misma gráfica&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
colors = ['r', 'g', 'b'];&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(T) &lt;br /&gt;
    plot(X, U(:,i), colors(i), 'LineWidth', 1.5, 'DisplayName', &amp;quot;t = &amp;quot; + num2str(T(i)) + &amp;quot; s&amp;quot;) &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
xlim([-10 10])  &lt;br /&gt;
ylim([0 5.5]) &lt;br /&gt;
xlabel('Posición x') &lt;br /&gt;
ylabel('Temperatura U(x,t)') &lt;br /&gt;
title(&amp;quot;Difusión térmica del mensaje en la barra de metal&amp;quot;) &lt;br /&gt;
legend show &lt;br /&gt;
grid on &lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
t_values = logspace(-3, 1, 50); % Valores de tiempo en escala logarítmica&lt;br /&gt;
colors = 'r'; % Color de la curva&lt;br /&gt;
&lt;br /&gt;
% Condición inicial: Representación simplificada de un mensaje con calor&lt;br /&gt;
u0 = zeros(size(x));&lt;br /&gt;
u0(x &amp;gt; -3 &amp;amp; x &amp;lt; -2) = 5; % Letra &amp;quot;segmento 1&amp;quot;&lt;br /&gt;
u0(x &amp;gt; -1 &amp;amp; x &amp;lt; 1) = 5;  % Letra &amp;quot;segmento 2&amp;quot;&lt;br /&gt;
u0(x &amp;gt; 2 &amp;amp; x &amp;lt; 3) = 5;  % Letra &amp;quot;segmento 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
% Configurar video&lt;br /&gt;
video = VideoWriter('difusion_termica.avi');&lt;br /&gt;
video.FrameRate = 10;&lt;br /&gt;
open(video);&lt;br /&gt;
&lt;br /&gt;
% Figura para la animación&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
xlabel('Posición x');&lt;br /&gt;
ylabel('Temperatura u(x, t)');&lt;br /&gt;
title('Evolución de la difusión térmica');&lt;br /&gt;
grid on;&lt;br /&gt;
axis([x_min x_max 0 5]); % Fijar dimensiones de la cuadrícula en X y Y&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    t = t_values(i);&lt;br /&gt;
    sigma = sqrt(2 * t) / dx; % Relación con la solución analítica&lt;br /&gt;
    u_t = imgaussfilt(u0, sigma); % Aproximación de difusión&lt;br /&gt;
    &lt;br /&gt;
    plot(x, u_t, 'Color', colors, 'LineWidth', 2);&lt;br /&gt;
    legend(sprintf('t = %.4f', t));&lt;br /&gt;
    axis([x_min x_max 0 5]); % Mantener eje Y fijo en cada iteración&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
    clf;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(video);&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Delta de dirac como función de condición inicial=&lt;br /&gt;
En este caso, tenemos la solución fundamental de la ecuación del calor en 1D. La pregunta que surge aquí es por qué solo tiene un pico. La respuesta a la pregunta es sencilla: La condición inicial es una delta de dirac que actúa como fuente puntual inicial de calor, por lo que al partir de una función cuyo máximo valor se concentra en un punto la función solución adquiere esta forma.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Sección3imagenGrupoMAMBD.png|400px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
def heat_kernel(x, t, alpha=1):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Solución fundamental de la ecuación del calor (distribución gaussiana).&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    return (1 / np.sqrt(4 * np.pi * alpha * t)) * np.exp(-x**2 / (4 * alpha * t))&lt;br /&gt;
&lt;br /&gt;
# Discretización del espacio y tiempos&lt;br /&gt;
x_values = np.linspace(-5, 5, 100)&lt;br /&gt;
t_values = [0.01, 0.1, 0.5, 1, 2]  # Diferentes tiempos para visualizar la evolución&lt;br /&gt;
&lt;br /&gt;
plt.figure(figsize=(8,6))&lt;br /&gt;
for t in t_values:&lt;br /&gt;
    u_values = heat_kernel(x_values, t)&lt;br /&gt;
    plt.plot(x_values, u_values, label=f't = {t}')&lt;br /&gt;
&lt;br /&gt;
plt.xlabel('Posición x')&lt;br /&gt;
plt.ylabel('Temperatura u(x,t)')&lt;br /&gt;
plt.title('Evolución de la solución de la ecuación del calor con fuente puntual')&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Regularidad y dimensiones=&lt;br /&gt;
Vamos a explorar que ocurre al pasar a dos dimensiones (2D), analizando como la difusión del calor se dispersa más rápido en 2D debido a la propagación en múltiples direcciones.&lt;br /&gt;
&lt;br /&gt;
En 1D, la ecuación del calor viene dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Sabemos que dicha ecuación tiene un efecto regularizador, es decir, aunque la condición inicial tenga discontinuidades, la solución se vuelve suave para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;. Por otro lado, la difusión en 1D ocurre a lo largo de una sola dirección (el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) y la solución se suaviza a una determinada velocidad en el tiempo.&lt;br /&gt;
&lt;br /&gt;
Veamos que ocurre en 2D. Ahora, nuestra ecuación es &amp;lt;math&amp;gt;u_t-u_{xx}-u_{yy}=0&amp;lt;/math&amp;gt;. La temperatura inicial se define ahora como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; (x,y)\in([-3,-2]\cup[-1,1]\cup[2,3])\times([-3,-2]\cup[-1,1]\cup[2,3])\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Generalizando a &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; dimensiones, la ecuación del calor vendrá dada por: &amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;, cuya solución fundamental (análoga a la hallada para una dimensión) se distribuye como una gaussiana en varias variables (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;): &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t) = \frac{1}{(4\pi t)^{n/2}} e^{-\frac{|x|^2}{4 t}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El efecto regularizador de la ecuación sigue presente en cualquier dimensión &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Sin embargo, en dimensiones más altas, esta dispersión es más rápida, ya que &amp;lt;math&amp;gt;(4\pi t)^{n/2}&amp;lt;/math&amp;gt; en la solución fundamental crece cuando lo hace &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;; nos surge entonces la pregunta de cómo podemos comparar el tiempo de dispersión en distintas dimensiones. &lt;br /&gt;
&lt;br /&gt;
En \( n \) dimensiones, el calor decae como \(u(x,t) \sim t^{-n/2}\), lo que reafirma que este se disipa más rápido a medida que aumenta la dimensión del espacio. Si queremos comparar el tiempo característico de disipación \( t_d \) en distintas dimensiones, llegamos a la relación \( t_d(n) \sim \frac{t_d(1)}{n/2} \), que nos dice que el tiempo de disipación en dimensión \( n \) es inversamente proporcional a \( n/2 \).&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Heat_equation_2D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0, 10] &amp;lt;/math&amp;gt;, dimensión 2 (2D).]]&lt;br /&gt;
&lt;br /&gt;
Comparemos así la gráfica superior con la hallada para el análisis en dos dimensiones. Podemos apreciar fácilmente como para un mismo periodo de tiempo el calor en cada punto del espacio es menor en esta gráfica que en la anterior pues en 1D, el calor solo se propaga en una dirección, lo que complica la disipación tal y como vemos, pues al aumentar un grado de libertad, para \( t=10 \) el calor en el sistema es casi impredecible.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
a=-4; b=4;                      % Intervalo de definición de la x ([a,b]^2) &lt;br /&gt;
div=0.05;                       % División del vector en x &lt;br /&gt;
X=a:div:b;                      % Vector de X &lt;br /&gt;
[X1,X2]=meshgrid(X,X);          % Creación de la malla en x &lt;br /&gt;
&lt;br /&gt;
% Definir las condiciones iniciales&lt;br /&gt;
U0 = zeros(size(X1));&lt;br /&gt;
U0((X1 &amp;gt; -3) &amp;amp; (X1 &amp;lt; -2) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5; % Letra 1&lt;br /&gt;
U0((X1 &amp;gt; -1) &amp;amp; (X1 &amp;lt; 1) &amp;amp; (X2 &amp;gt; -2) &amp;amp; (X2 &amp;lt; 2)) = 5;  % Letra 2&lt;br /&gt;
U0((X1 &amp;gt; 2) &amp;amp; (X1 &amp;lt; 3) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5;  % Letra 3&lt;br /&gt;
&lt;br /&gt;
% Solución de la ecuación del calor mediante convolución con la solución fundamental&lt;br /&gt;
norma2=@(x1,x2)sqrt(x1.^2+x2.^2);  % Función norma &lt;br /&gt;
Phi2 = @(x1,x2,t)(1./((4*pi*t)).*exp(-norma2(x1,x2).^2./(4*t))); % Solución fundamental en 2D&lt;br /&gt;
&lt;br /&gt;
% Parámetros de animación&lt;br /&gt;
T_max = 10;        % Tiempo máximo de simulación&lt;br /&gt;
num_frames = 100;  % Número de cuadros en la animación&lt;br /&gt;
T_values = linspace(0.001, T_max, num_frames);&lt;br /&gt;
&lt;br /&gt;
% Crear objeto de video&lt;br /&gt;
video_filename = 'heat_equation_2D.mp4';&lt;br /&gt;
vid = VideoWriter(video_filename, 'MPEG-4');&lt;br /&gt;
vid.FrameRate = 20; % FPS del video&lt;br /&gt;
open(vid);&lt;br /&gt;
&lt;br /&gt;
figure;&lt;br /&gt;
cmap = hot;&lt;br /&gt;
clim = [0, 5]; % Fijar la escala de colores entre 0 y 5&lt;br /&gt;
for i=1:length(T_values)&lt;br /&gt;
    U = conv2(U0, Phi2(X1,X2,T_values(i)), 'same') * div^2; % Convolución discreta&lt;br /&gt;
    &lt;br /&gt;
    surf(X1,X2,U)&lt;br /&gt;
    shading interp &lt;br /&gt;
    colorbar;&lt;br /&gt;
    colormap(cmap);&lt;br /&gt;
    caxis(clim); % Mantener la escala de colores fija&lt;br /&gt;
    xlabel('X') &lt;br /&gt;
    ylabel('Y') &lt;br /&gt;
    zlabel('Temperatura') &lt;br /&gt;
    title(&amp;quot;Evolución en 2D para t=&amp;quot;+num2str(T_values(i),'%.3f')+' s') &lt;br /&gt;
    axis([-4 4 -4 4 0 5]);&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(vid, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(vid);&lt;br /&gt;
&lt;br /&gt;
disp(['Video guardado como: ', video_filename]);&lt;br /&gt;
&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Secci%C3%B3n3imagenGrupoMAMBD.png&amp;diff=84954</id>
		<title>Archivo:Sección3imagenGrupoMAMBD.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Secci%C3%B3n3imagenGrupoMAMBD.png&amp;diff=84954"/>
				<updated>2025-03-18T23:26:47Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84953</id>
		<title>Ecuación del calor (Grupo MAMBD))</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84953"/>
				<updated>2025-03-18T23:25:33Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Delta de dirac como función de condición inicial */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
En el siguiente trabajo, se busca explorar el comportamiento de la solución a la ecuación del calor para regiones no acotadas, así como la distribución de dicha solución en según que dimensiones.&lt;br /&gt;
&lt;br /&gt;
El problema del calor viene dado por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt;u(x, t)&amp;lt;/math&amp;gt; representa la temperatura del medio en función del tiempo y de la posición.&lt;br /&gt;
&lt;br /&gt;
Como estamos en un medio infinito, tendremos que mirar como una perturbación térmica puntual se difunde con el tiempo. Para ello usamos la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;G(x,t)=\frac{1}{(4\pi t)^{n/2}}e^{-\frac{|x|^2}{4t}},&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Solución de la ecuación del calor empleando la convolución=&lt;br /&gt;
&lt;br /&gt;
Planteamos un problema particular para la ecuación del calor en una dimensión, dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Definimos la temperatura en el instante inicial&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; x\in[-3,-2]\cup[-1,1]\cup[2,3]\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el tiempo, el calor empieza a difundirse según la ecuación dada, cuya solución viene dada por la convolución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\int_{-\infty}^{\infty} G(x-y,t)u_0(y) dy=\frac{1}{\sqrt{4 \pi t}}\int_{-\infty}^{\infty} u_0(y)e^{-\frac{(x-y)^2}{4t}}.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujando la solución para diferentes tiempos, obtenemos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: difusion_termica_1D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0, 10] &amp;lt;/math&amp;gt;, en 1 dimensión.]]&lt;br /&gt;
&lt;br /&gt;
Se aprecia como, conforme avanza el tiempo, la solución tiende a cero y pierde su forma (de tres picos) dada por la condición inicial. Al inicio, las regiones calientes se distinguen claramente, pero poco a poco el calor se extiende a las áreas frías, mostrando como el calor comienza a difundirse por el resto del espacio hasta que la temperatura se ha distribuido de manera uniforme.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:BarraMetal.png|400px|thumb|right|Difusión del mensaje en la barra de metal]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
&lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
imp = 6;&lt;br /&gt;
T=[0.001,0.01,0.1];&lt;br /&gt;
a = [-3, -1, 2];  % Inicio de los segmentos de calor&lt;br /&gt;
b = [-2,  1, 3];  % Fin de los segmentos de calor&lt;br /&gt;
tf = max(T); &lt;br /&gt;
div = 10^-3; &lt;br /&gt;
&lt;br /&gt;
X = -10:div:10;  &lt;br /&gt;
&lt;br /&gt;
% Función de solución fundamental de la ecuación del calor en 1D&lt;br /&gt;
Phi = @(x,t) (1./((4*pi*t).^(1/2)) .* exp(-abs(x).^2./(4*t))); &lt;br /&gt;
&lt;br /&gt;
U = zeros(length(X), length(T));  % Matriz para almacenar soluciones en diferentes tiempos&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución usando la integral de convolución&lt;br /&gt;
for j = 1:length(X)&lt;br /&gt;
    for i = 1:length(T)&lt;br /&gt;
        integral_sum = 0;&lt;br /&gt;
        for k = 1:length(a) &lt;br /&gt;
            Y = a(k):div:b(k); &lt;br /&gt;
            integral_sum = integral_sum + trapz(Y, Phi(X(j)*ones(1,length(Y)) - Y, T(i)*ones(1,length(Y))));&lt;br /&gt;
        end&lt;br /&gt;
        U(j,i) = 5 * integral_sum; &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Dibujar todas las soluciones en una misma gráfica&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
colors = ['r', 'g', 'b'];&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(T) &lt;br /&gt;
    plot(X, U(:,i), colors(i), 'LineWidth', 1.5, 'DisplayName', &amp;quot;t = &amp;quot; + num2str(T(i)) + &amp;quot; s&amp;quot;) &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
xlim([-10 10])  &lt;br /&gt;
ylim([0 5.5]) &lt;br /&gt;
xlabel('Posición x') &lt;br /&gt;
ylabel('Temperatura U(x,t)') &lt;br /&gt;
title(&amp;quot;Difusión térmica del mensaje en la barra de metal&amp;quot;) &lt;br /&gt;
legend show &lt;br /&gt;
grid on &lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
t_values = logspace(-3, 1, 50); % Valores de tiempo en escala logarítmica&lt;br /&gt;
colors = 'r'; % Color de la curva&lt;br /&gt;
&lt;br /&gt;
% Condición inicial: Representación simplificada de un mensaje con calor&lt;br /&gt;
u0 = zeros(size(x));&lt;br /&gt;
u0(x &amp;gt; -3 &amp;amp; x &amp;lt; -2) = 5; % Letra &amp;quot;segmento 1&amp;quot;&lt;br /&gt;
u0(x &amp;gt; -1 &amp;amp; x &amp;lt; 1) = 5;  % Letra &amp;quot;segmento 2&amp;quot;&lt;br /&gt;
u0(x &amp;gt; 2 &amp;amp; x &amp;lt; 3) = 5;  % Letra &amp;quot;segmento 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
% Configurar video&lt;br /&gt;
video = VideoWriter('difusion_termica.avi');&lt;br /&gt;
video.FrameRate = 10;&lt;br /&gt;
open(video);&lt;br /&gt;
&lt;br /&gt;
% Figura para la animación&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
xlabel('Posición x');&lt;br /&gt;
ylabel('Temperatura u(x, t)');&lt;br /&gt;
title('Evolución de la difusión térmica');&lt;br /&gt;
grid on;&lt;br /&gt;
axis([x_min x_max 0 5]); % Fijar dimensiones de la cuadrícula en X y Y&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    t = t_values(i);&lt;br /&gt;
    sigma = sqrt(2 * t) / dx; % Relación con la solución analítica&lt;br /&gt;
    u_t = imgaussfilt(u0, sigma); % Aproximación de difusión&lt;br /&gt;
    &lt;br /&gt;
    plot(x, u_t, 'Color', colors, 'LineWidth', 2);&lt;br /&gt;
    legend(sprintf('t = %.4f', t));&lt;br /&gt;
    axis([x_min x_max 0 5]); % Mantener eje Y fijo en cada iteración&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
    clf;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(video);&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Delta de dirac como función de condición inicial=&lt;br /&gt;
En este caso, tenemos la solución fundamental de la ecuación del calor en 1D. La pregunta que surge aquí es por qué solo tiene un pico. La respuesta a la pregunta es sencilla: La condición inicial es una delta de dirac que actúa como fuente puntual inicial de calor, por lo que al partir de una función cuyo máximo valor se concentra en un punto la función solución adquiere esta forma.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
def heat_kernel(x, t, alpha=1):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Solución fundamental de la ecuación del calor (distribución gaussiana).&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    return (1 / np.sqrt(4 * np.pi * alpha * t)) * np.exp(-x**2 / (4 * alpha * t))&lt;br /&gt;
&lt;br /&gt;
# Discretización del espacio y tiempos&lt;br /&gt;
x_values = np.linspace(-5, 5, 100)&lt;br /&gt;
t_values = [0.01, 0.1, 0.5, 1, 2]  # Diferentes tiempos para visualizar la evolución&lt;br /&gt;
&lt;br /&gt;
plt.figure(figsize=(8,6))&lt;br /&gt;
for t in t_values:&lt;br /&gt;
    u_values = heat_kernel(x_values, t)&lt;br /&gt;
    plt.plot(x_values, u_values, label=f't = {t}')&lt;br /&gt;
&lt;br /&gt;
plt.xlabel('Posición x')&lt;br /&gt;
plt.ylabel('Temperatura u(x,t)')&lt;br /&gt;
plt.title('Evolución de la solución de la ecuación del calor con fuente puntual')&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Regularidad y dimensiones=&lt;br /&gt;
Vamos a explorar que ocurre al pasar a dos dimensiones (2D), analizando como la difusión del calor se dispersa más rápido en 2D debido a la propagación en múltiples direcciones.&lt;br /&gt;
&lt;br /&gt;
En 1D, la ecuación del calor viene dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Sabemos que dicha ecuación tiene un efecto regularizador, es decir, aunque la condición inicial tenga discontinuidades, la solución se vuelve suave para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;. Por otro lado, la difusión en 1D ocurre a lo largo de una sola dirección (el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) y la solución se suaviza a una determinada velocidad en el tiempo.&lt;br /&gt;
&lt;br /&gt;
Veamos que ocurre en 2D. Ahora, nuestra ecuación es &amp;lt;math&amp;gt;u_t-u_{xx}-u_{yy}=0&amp;lt;/math&amp;gt;. La temperatura inicial se define ahora como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; (x,y)\in([-3,-2]\cup[-1,1]\cup[2,3])\times([-3,-2]\cup[-1,1]\cup[2,3])\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Generalizando a &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; dimensiones, la ecuación del calor vendrá dada por: &amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;, cuya solución fundamental (análoga a la hallada para una dimensión) se distribuye como una gaussiana en varias variables (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;): &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t) = \frac{1}{(4\pi t)^{n/2}} e^{-\frac{|x|^2}{4 t}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El efecto regularizador de la ecuación sigue presente en cualquier dimensión &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Sin embargo, en dimensiones más altas, esta dispersión es más rápida, ya que &amp;lt;math&amp;gt;(4\pi t)^{n/2}&amp;lt;/math&amp;gt; en la solución fundamental crece cuando lo hace &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;; nos surge entonces la pregunta de cómo podemos comparar el tiempo de dispersión en distintas dimensiones. &lt;br /&gt;
&lt;br /&gt;
En \( n \) dimensiones, el calor decae como \(u(x,t) \sim t^{-n/2}\), lo que reafirma que este se disipa más rápido a medida que aumenta la dimensión del espacio. Si queremos comparar el tiempo característico de disipación \( t_d \) en distintas dimensiones, llegamos a la relación \( t_d(n) \sim \frac{t_d(1)}{n/2} \), que nos dice que el tiempo de disipación en dimensión \( n \) es inversamente proporcional a \( n/2 \).&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Heat_equation_2D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0, 10] &amp;lt;/math&amp;gt;, dimensión 2 (2D).]]&lt;br /&gt;
&lt;br /&gt;
Comparemos así la gráfica superior con la hallada para el análisis en dos dimensiones. Podemos apreciar fácilmente como para un mismo periodo de tiempo el calor en cada punto del espacio es menor en esta gráfica que en la anterior pues en 1D, el calor solo se propaga en una dirección, lo que complica la disipación tal y como vemos, pues al aumentar un grado de libertad, para \( t=10 \) el calor en el sistema es casi impredecible.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
a=-4; b=4;                      % Intervalo de definición de la x ([a,b]^2) &lt;br /&gt;
div=0.05;                       % División del vector en x &lt;br /&gt;
X=a:div:b;                      % Vector de X &lt;br /&gt;
[X1,X2]=meshgrid(X,X);          % Creación de la malla en x &lt;br /&gt;
&lt;br /&gt;
% Definir las condiciones iniciales&lt;br /&gt;
U0 = zeros(size(X1));&lt;br /&gt;
U0((X1 &amp;gt; -3) &amp;amp; (X1 &amp;lt; -2) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5; % Letra 1&lt;br /&gt;
U0((X1 &amp;gt; -1) &amp;amp; (X1 &amp;lt; 1) &amp;amp; (X2 &amp;gt; -2) &amp;amp; (X2 &amp;lt; 2)) = 5;  % Letra 2&lt;br /&gt;
U0((X1 &amp;gt; 2) &amp;amp; (X1 &amp;lt; 3) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5;  % Letra 3&lt;br /&gt;
&lt;br /&gt;
% Solución de la ecuación del calor mediante convolución con la solución fundamental&lt;br /&gt;
norma2=@(x1,x2)sqrt(x1.^2+x2.^2);  % Función norma &lt;br /&gt;
Phi2 = @(x1,x2,t)(1./((4*pi*t)).*exp(-norma2(x1,x2).^2./(4*t))); % Solución fundamental en 2D&lt;br /&gt;
&lt;br /&gt;
% Parámetros de animación&lt;br /&gt;
T_max = 10;        % Tiempo máximo de simulación&lt;br /&gt;
num_frames = 100;  % Número de cuadros en la animación&lt;br /&gt;
T_values = linspace(0.001, T_max, num_frames);&lt;br /&gt;
&lt;br /&gt;
% Crear objeto de video&lt;br /&gt;
video_filename = 'heat_equation_2D.mp4';&lt;br /&gt;
vid = VideoWriter(video_filename, 'MPEG-4');&lt;br /&gt;
vid.FrameRate = 20; % FPS del video&lt;br /&gt;
open(vid);&lt;br /&gt;
&lt;br /&gt;
figure;&lt;br /&gt;
cmap = hot;&lt;br /&gt;
clim = [0, 5]; % Fijar la escala de colores entre 0 y 5&lt;br /&gt;
for i=1:length(T_values)&lt;br /&gt;
    U = conv2(U0, Phi2(X1,X2,T_values(i)), 'same') * div^2; % Convolución discreta&lt;br /&gt;
    &lt;br /&gt;
    surf(X1,X2,U)&lt;br /&gt;
    shading interp &lt;br /&gt;
    colorbar;&lt;br /&gt;
    colormap(cmap);&lt;br /&gt;
    caxis(clim); % Mantener la escala de colores fija&lt;br /&gt;
    xlabel('X') &lt;br /&gt;
    ylabel('Y') &lt;br /&gt;
    zlabel('Temperatura') &lt;br /&gt;
    title(&amp;quot;Evolución en 2D para t=&amp;quot;+num2str(T_values(i),'%.3f')+' s') &lt;br /&gt;
    axis([-4 4 -4 4 0 5]);&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(vid, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(vid);&lt;br /&gt;
&lt;br /&gt;
disp(['Video guardado como: ', video_filename]);&lt;br /&gt;
&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84952</id>
		<title>Ecuación del calor (Grupo MAMBD))</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84952"/>
				<updated>2025-03-18T23:24:15Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Delta de dirac como función de condición inicial */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
En el siguiente trabajo, se busca explorar el comportamiento de la solución a la ecuación del calor para regiones no acotadas, así como la distribución de dicha solución en según que dimensiones.&lt;br /&gt;
&lt;br /&gt;
El problema del calor viene dado por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt;u(x, t)&amp;lt;/math&amp;gt; representa la temperatura del medio en función del tiempo y de la posición.&lt;br /&gt;
&lt;br /&gt;
Como estamos en un medio infinito, tendremos que mirar como una perturbación térmica puntual se difunde con el tiempo. Para ello usamos la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;G(x,t)=\frac{1}{(4\pi t)^{n/2}}e^{-\frac{|x|^2}{4t}},&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Solución de la ecuación del calor empleando la convolución=&lt;br /&gt;
&lt;br /&gt;
Planteamos un problema particular para la ecuación del calor en una dimensión, dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Definimos la temperatura en el instante inicial&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; x\in[-3,-2]\cup[-1,1]\cup[2,3]\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el tiempo, el calor empieza a difundirse según la ecuación dada, cuya solución viene dada por la convolución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\int_{-\infty}^{\infty} G(x-y,t)u_0(y) dy=\frac{1}{\sqrt{4 \pi t}}\int_{-\infty}^{\infty} u_0(y)e^{-\frac{(x-y)^2}{4t}}.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujando la solución para diferentes tiempos, obtenemos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: difusion_termica_1D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0, 10] &amp;lt;/math&amp;gt;, en 1 dimensión.]]&lt;br /&gt;
&lt;br /&gt;
Se aprecia como, conforme avanza el tiempo, la solución tiende a cero y pierde su forma (de tres picos) dada por la condición inicial. Al inicio, las regiones calientes se distinguen claramente, pero poco a poco el calor se extiende a las áreas frías, mostrando como el calor comienza a difundirse por el resto del espacio hasta que la temperatura se ha distribuido de manera uniforme.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:BarraMetal.png|400px|thumb|right|Difusión del mensaje en la barra de metal]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
&lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
imp = 6;&lt;br /&gt;
T=[0.001,0.01,0.1];&lt;br /&gt;
a = [-3, -1, 2];  % Inicio de los segmentos de calor&lt;br /&gt;
b = [-2,  1, 3];  % Fin de los segmentos de calor&lt;br /&gt;
tf = max(T); &lt;br /&gt;
div = 10^-3; &lt;br /&gt;
&lt;br /&gt;
X = -10:div:10;  &lt;br /&gt;
&lt;br /&gt;
% Función de solución fundamental de la ecuación del calor en 1D&lt;br /&gt;
Phi = @(x,t) (1./((4*pi*t).^(1/2)) .* exp(-abs(x).^2./(4*t))); &lt;br /&gt;
&lt;br /&gt;
U = zeros(length(X), length(T));  % Matriz para almacenar soluciones en diferentes tiempos&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución usando la integral de convolución&lt;br /&gt;
for j = 1:length(X)&lt;br /&gt;
    for i = 1:length(T)&lt;br /&gt;
        integral_sum = 0;&lt;br /&gt;
        for k = 1:length(a) &lt;br /&gt;
            Y = a(k):div:b(k); &lt;br /&gt;
            integral_sum = integral_sum + trapz(Y, Phi(X(j)*ones(1,length(Y)) - Y, T(i)*ones(1,length(Y))));&lt;br /&gt;
        end&lt;br /&gt;
        U(j,i) = 5 * integral_sum; &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Dibujar todas las soluciones en una misma gráfica&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
colors = ['r', 'g', 'b'];&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(T) &lt;br /&gt;
    plot(X, U(:,i), colors(i), 'LineWidth', 1.5, 'DisplayName', &amp;quot;t = &amp;quot; + num2str(T(i)) + &amp;quot; s&amp;quot;) &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
xlim([-10 10])  &lt;br /&gt;
ylim([0 5.5]) &lt;br /&gt;
xlabel('Posición x') &lt;br /&gt;
ylabel('Temperatura U(x,t)') &lt;br /&gt;
title(&amp;quot;Difusión térmica del mensaje en la barra de metal&amp;quot;) &lt;br /&gt;
legend show &lt;br /&gt;
grid on &lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
t_values = logspace(-3, 1, 50); % Valores de tiempo en escala logarítmica&lt;br /&gt;
colors = 'r'; % Color de la curva&lt;br /&gt;
&lt;br /&gt;
% Condición inicial: Representación simplificada de un mensaje con calor&lt;br /&gt;
u0 = zeros(size(x));&lt;br /&gt;
u0(x &amp;gt; -3 &amp;amp; x &amp;lt; -2) = 5; % Letra &amp;quot;segmento 1&amp;quot;&lt;br /&gt;
u0(x &amp;gt; -1 &amp;amp; x &amp;lt; 1) = 5;  % Letra &amp;quot;segmento 2&amp;quot;&lt;br /&gt;
u0(x &amp;gt; 2 &amp;amp; x &amp;lt; 3) = 5;  % Letra &amp;quot;segmento 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
% Configurar video&lt;br /&gt;
video = VideoWriter('difusion_termica.avi');&lt;br /&gt;
video.FrameRate = 10;&lt;br /&gt;
open(video);&lt;br /&gt;
&lt;br /&gt;
% Figura para la animación&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
xlabel('Posición x');&lt;br /&gt;
ylabel('Temperatura u(x, t)');&lt;br /&gt;
title('Evolución de la difusión térmica');&lt;br /&gt;
grid on;&lt;br /&gt;
axis([x_min x_max 0 5]); % Fijar dimensiones de la cuadrícula en X y Y&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    t = t_values(i);&lt;br /&gt;
    sigma = sqrt(2 * t) / dx; % Relación con la solución analítica&lt;br /&gt;
    u_t = imgaussfilt(u0, sigma); % Aproximación de difusión&lt;br /&gt;
    &lt;br /&gt;
    plot(x, u_t, 'Color', colors, 'LineWidth', 2);&lt;br /&gt;
    legend(sprintf('t = %.4f', t));&lt;br /&gt;
    axis([x_min x_max 0 5]); % Mantener eje Y fijo en cada iteración&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
    clf;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(video);&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Delta de dirac como función de condición inicial=&lt;br /&gt;
En este caso, tenemos la solución fundamental de la ecuación del calor en 1D. La pregunta que surge aquí es por qué solo tiene un pico. La respuesta a la pregunta es sencilla: La condición inicial es una delta de dirac que actúa como fuente puntual inicial de calor, por lo que al partir de una función cuyo máximo valor se concentra en un punto la función solución adquiere esta forma.&lt;br /&gt;
&lt;br /&gt;
{{Python|codigo=   &lt;br /&gt;
t_values = logspace(-3, 1, 50); % Valores de tiempo en escala logarítmica&lt;br /&gt;
colors = 'r'; % Color de la curva&lt;br /&gt;
&lt;br /&gt;
% Condición inicial: Representación simplificada de un mensaje con calor&lt;br /&gt;
u0 = zeros(size(x));&lt;br /&gt;
u0(x &amp;gt; -3 &amp;amp; x &amp;lt; -2) = 5; % Letra &amp;quot;segmento 1&amp;quot;&lt;br /&gt;
u0(x &amp;gt; -1 &amp;amp; x &amp;lt; 1) = 5;  % Letra &amp;quot;segmento 2&amp;quot;&lt;br /&gt;
u0(x &amp;gt; 2 &amp;amp; x &amp;lt; 3) = 5;  % Letra &amp;quot;segmento 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
% Configurar video&lt;br /&gt;
video = VideoWriter('difusion_termica.avi');&lt;br /&gt;
video.FrameRate = 10;&lt;br /&gt;
open(video);&lt;br /&gt;
&lt;br /&gt;
% Figura para la animación&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
xlabel('Posición x');&lt;br /&gt;
ylabel('Temperatura u(x, t)');&lt;br /&gt;
title('Evolución de la difusión térmica');&lt;br /&gt;
grid on;&lt;br /&gt;
axis([x_min x_max 0 5]); % Fijar dimensiones de la cuadrícula en X y Y&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    t = t_values(i);&lt;br /&gt;
    sigma = sqrt(2 * t) / dx; % Relación con la solución analítica&lt;br /&gt;
    u_t = imgaussfilt(u0, sigma); % Aproximación de difusión&lt;br /&gt;
    &lt;br /&gt;
    plot(x, u_t, 'Color', colors, 'LineWidth', 2);&lt;br /&gt;
    legend(sprintf('t = %.4f', t));&lt;br /&gt;
    axis([x_min x_max 0 5]); % Mantener eje Y fijo en cada iteración&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
    clf;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(video);&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Regularidad y dimensiones=&lt;br /&gt;
Vamos a explorar que ocurre al pasar a dos dimensiones (2D), analizando como la difusión del calor se dispersa más rápido en 2D debido a la propagación en múltiples direcciones.&lt;br /&gt;
&lt;br /&gt;
En 1D, la ecuación del calor viene dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Sabemos que dicha ecuación tiene un efecto regularizador, es decir, aunque la condición inicial tenga discontinuidades, la solución se vuelve suave para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;. Por otro lado, la difusión en 1D ocurre a lo largo de una sola dirección (el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) y la solución se suaviza a una determinada velocidad en el tiempo.&lt;br /&gt;
&lt;br /&gt;
Veamos que ocurre en 2D. Ahora, nuestra ecuación es &amp;lt;math&amp;gt;u_t-u_{xx}-u_{yy}=0&amp;lt;/math&amp;gt;. La temperatura inicial se define ahora como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; (x,y)\in([-3,-2]\cup[-1,1]\cup[2,3])\times([-3,-2]\cup[-1,1]\cup[2,3])\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Generalizando a &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; dimensiones, la ecuación del calor vendrá dada por: &amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;, cuya solución fundamental (análoga a la hallada para una dimensión) se distribuye como una gaussiana en varias variables (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;): &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t) = \frac{1}{(4\pi t)^{n/2}} e^{-\frac{|x|^2}{4 t}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El efecto regularizador de la ecuación sigue presente en cualquier dimensión &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Sin embargo, en dimensiones más altas, esta dispersión es más rápida, ya que &amp;lt;math&amp;gt;(4\pi t)^{n/2}&amp;lt;/math&amp;gt; en la solución fundamental crece cuando lo hace &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;; nos surge entonces la pregunta de cómo podemos comparar el tiempo de dispersión en distintas dimensiones. &lt;br /&gt;
&lt;br /&gt;
En \( n \) dimensiones, el calor decae como \(u(x,t) \sim t^{-n/2}\), lo que reafirma que este se disipa más rápido a medida que aumenta la dimensión del espacio. Si queremos comparar el tiempo característico de disipación \( t_d \) en distintas dimensiones, llegamos a la relación \( t_d(n) \sim \frac{t_d(1)}{n/2} \), que nos dice que el tiempo de disipación en dimensión \( n \) es inversamente proporcional a \( n/2 \).&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Heat_equation_2D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0, 10] &amp;lt;/math&amp;gt;, dimensión 2 (2D).]]&lt;br /&gt;
&lt;br /&gt;
Comparemos así la gráfica superior con la hallada para el análisis en dos dimensiones. Podemos apreciar fácilmente como para un mismo periodo de tiempo el calor en cada punto del espacio es menor en esta gráfica que en la anterior pues en 1D, el calor solo se propaga en una dirección, lo que complica la disipación tal y como vemos, pues al aumentar un grado de libertad, para \( t=10 \) el calor en el sistema es casi impredecible.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
a=-4; b=4;                      % Intervalo de definición de la x ([a,b]^2) &lt;br /&gt;
div=0.05;                       % División del vector en x &lt;br /&gt;
X=a:div:b;                      % Vector de X &lt;br /&gt;
[X1,X2]=meshgrid(X,X);          % Creación de la malla en x &lt;br /&gt;
&lt;br /&gt;
% Definir las condiciones iniciales&lt;br /&gt;
U0 = zeros(size(X1));&lt;br /&gt;
U0((X1 &amp;gt; -3) &amp;amp; (X1 &amp;lt; -2) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5; % Letra 1&lt;br /&gt;
U0((X1 &amp;gt; -1) &amp;amp; (X1 &amp;lt; 1) &amp;amp; (X2 &amp;gt; -2) &amp;amp; (X2 &amp;lt; 2)) = 5;  % Letra 2&lt;br /&gt;
U0((X1 &amp;gt; 2) &amp;amp; (X1 &amp;lt; 3) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5;  % Letra 3&lt;br /&gt;
&lt;br /&gt;
% Solución de la ecuación del calor mediante convolución con la solución fundamental&lt;br /&gt;
norma2=@(x1,x2)sqrt(x1.^2+x2.^2);  % Función norma &lt;br /&gt;
Phi2 = @(x1,x2,t)(1./((4*pi*t)).*exp(-norma2(x1,x2).^2./(4*t))); % Solución fundamental en 2D&lt;br /&gt;
&lt;br /&gt;
% Parámetros de animación&lt;br /&gt;
T_max = 10;        % Tiempo máximo de simulación&lt;br /&gt;
num_frames = 100;  % Número de cuadros en la animación&lt;br /&gt;
T_values = linspace(0.001, T_max, num_frames);&lt;br /&gt;
&lt;br /&gt;
% Crear objeto de video&lt;br /&gt;
video_filename = 'heat_equation_2D.mp4';&lt;br /&gt;
vid = VideoWriter(video_filename, 'MPEG-4');&lt;br /&gt;
vid.FrameRate = 20; % FPS del video&lt;br /&gt;
open(vid);&lt;br /&gt;
&lt;br /&gt;
figure;&lt;br /&gt;
cmap = hot;&lt;br /&gt;
clim = [0, 5]; % Fijar la escala de colores entre 0 y 5&lt;br /&gt;
for i=1:length(T_values)&lt;br /&gt;
    U = conv2(U0, Phi2(X1,X2,T_values(i)), 'same') * div^2; % Convolución discreta&lt;br /&gt;
    &lt;br /&gt;
    surf(X1,X2,U)&lt;br /&gt;
    shading interp &lt;br /&gt;
    colorbar;&lt;br /&gt;
    colormap(cmap);&lt;br /&gt;
    caxis(clim); % Mantener la escala de colores fija&lt;br /&gt;
    xlabel('X') &lt;br /&gt;
    ylabel('Y') &lt;br /&gt;
    zlabel('Temperatura') &lt;br /&gt;
    title(&amp;quot;Evolución en 2D para t=&amp;quot;+num2str(T_values(i),'%.3f')+' s') &lt;br /&gt;
    axis([-4 4 -4 4 0 5]);&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(vid, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(vid);&lt;br /&gt;
&lt;br /&gt;
disp(['Video guardado como: ', video_filename]);&lt;br /&gt;
&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84951</id>
		<title>Ecuación del calor (Grupo MAMBD))</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84951"/>
				<updated>2025-03-18T23:24:00Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Delta de dirac como función de condición inicial */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
En el siguiente trabajo, se busca explorar el comportamiento de la solución a la ecuación del calor para regiones no acotadas, así como la distribución de dicha solución en según que dimensiones.&lt;br /&gt;
&lt;br /&gt;
El problema del calor viene dado por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt;u(x, t)&amp;lt;/math&amp;gt; representa la temperatura del medio en función del tiempo y de la posición.&lt;br /&gt;
&lt;br /&gt;
Como estamos en un medio infinito, tendremos que mirar como una perturbación térmica puntual se difunde con el tiempo. Para ello usamos la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;G(x,t)=\frac{1}{(4\pi t)^{n/2}}e^{-\frac{|x|^2}{4t}},&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Solución de la ecuación del calor empleando la convolución=&lt;br /&gt;
&lt;br /&gt;
Planteamos un problema particular para la ecuación del calor en una dimensión, dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Definimos la temperatura en el instante inicial&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; x\in[-3,-2]\cup[-1,1]\cup[2,3]\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el tiempo, el calor empieza a difundirse según la ecuación dada, cuya solución viene dada por la convolución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\int_{-\infty}^{\infty} G(x-y,t)u_0(y) dy=\frac{1}{\sqrt{4 \pi t}}\int_{-\infty}^{\infty} u_0(y)e^{-\frac{(x-y)^2}{4t}}.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujando la solución para diferentes tiempos, obtenemos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: difusion_termica_1D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0, 10] &amp;lt;/math&amp;gt;, en 1 dimensión.]]&lt;br /&gt;
&lt;br /&gt;
Se aprecia como, conforme avanza el tiempo, la solución tiende a cero y pierde su forma (de tres picos) dada por la condición inicial. Al inicio, las regiones calientes se distinguen claramente, pero poco a poco el calor se extiende a las áreas frías, mostrando como el calor comienza a difundirse por el resto del espacio hasta que la temperatura se ha distribuido de manera uniforme.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:BarraMetal.png|400px|thumb|right|Difusión del mensaje en la barra de metal]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
&lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
imp = 6;&lt;br /&gt;
T=[0.001,0.01,0.1];&lt;br /&gt;
a = [-3, -1, 2];  % Inicio de los segmentos de calor&lt;br /&gt;
b = [-2,  1, 3];  % Fin de los segmentos de calor&lt;br /&gt;
tf = max(T); &lt;br /&gt;
div = 10^-3; &lt;br /&gt;
&lt;br /&gt;
X = -10:div:10;  &lt;br /&gt;
&lt;br /&gt;
% Función de solución fundamental de la ecuación del calor en 1D&lt;br /&gt;
Phi = @(x,t) (1./((4*pi*t).^(1/2)) .* exp(-abs(x).^2./(4*t))); &lt;br /&gt;
&lt;br /&gt;
U = zeros(length(X), length(T));  % Matriz para almacenar soluciones en diferentes tiempos&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución usando la integral de convolución&lt;br /&gt;
for j = 1:length(X)&lt;br /&gt;
    for i = 1:length(T)&lt;br /&gt;
        integral_sum = 0;&lt;br /&gt;
        for k = 1:length(a) &lt;br /&gt;
            Y = a(k):div:b(k); &lt;br /&gt;
            integral_sum = integral_sum + trapz(Y, Phi(X(j)*ones(1,length(Y)) - Y, T(i)*ones(1,length(Y))));&lt;br /&gt;
        end&lt;br /&gt;
        U(j,i) = 5 * integral_sum; &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Dibujar todas las soluciones en una misma gráfica&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
colors = ['r', 'g', 'b'];&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(T) &lt;br /&gt;
    plot(X, U(:,i), colors(i), 'LineWidth', 1.5, 'DisplayName', &amp;quot;t = &amp;quot; + num2str(T(i)) + &amp;quot; s&amp;quot;) &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
xlim([-10 10])  &lt;br /&gt;
ylim([0 5.5]) &lt;br /&gt;
xlabel('Posición x') &lt;br /&gt;
ylabel('Temperatura U(x,t)') &lt;br /&gt;
title(&amp;quot;Difusión térmica del mensaje en la barra de metal&amp;quot;) &lt;br /&gt;
legend show &lt;br /&gt;
grid on &lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
t_values = logspace(-3, 1, 50); % Valores de tiempo en escala logarítmica&lt;br /&gt;
colors = 'r'; % Color de la curva&lt;br /&gt;
&lt;br /&gt;
% Condición inicial: Representación simplificada de un mensaje con calor&lt;br /&gt;
u0 = zeros(size(x));&lt;br /&gt;
u0(x &amp;gt; -3 &amp;amp; x &amp;lt; -2) = 5; % Letra &amp;quot;segmento 1&amp;quot;&lt;br /&gt;
u0(x &amp;gt; -1 &amp;amp; x &amp;lt; 1) = 5;  % Letra &amp;quot;segmento 2&amp;quot;&lt;br /&gt;
u0(x &amp;gt; 2 &amp;amp; x &amp;lt; 3) = 5;  % Letra &amp;quot;segmento 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
% Configurar video&lt;br /&gt;
video = VideoWriter('difusion_termica.avi');&lt;br /&gt;
video.FrameRate = 10;&lt;br /&gt;
open(video);&lt;br /&gt;
&lt;br /&gt;
% Figura para la animación&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
xlabel('Posición x');&lt;br /&gt;
ylabel('Temperatura u(x, t)');&lt;br /&gt;
title('Evolución de la difusión térmica');&lt;br /&gt;
grid on;&lt;br /&gt;
axis([x_min x_max 0 5]); % Fijar dimensiones de la cuadrícula en X y Y&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    t = t_values(i);&lt;br /&gt;
    sigma = sqrt(2 * t) / dx; % Relación con la solución analítica&lt;br /&gt;
    u_t = imgaussfilt(u0, sigma); % Aproximación de difusión&lt;br /&gt;
    &lt;br /&gt;
    plot(x, u_t, 'Color', colors, 'LineWidth', 2);&lt;br /&gt;
    legend(sprintf('t = %.4f', t));&lt;br /&gt;
    axis([x_min x_max 0 5]); % Mantener eje Y fijo en cada iteración&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
    clf;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(video);&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Delta de dirac como función de condición inicial=&lt;br /&gt;
En este caso, tenemos la solución fundamental de la ecuación del calor en 1D. La pregunta que surge aquí es por qué solo tiene un pico. La respuesta a la pregunta es sencilla: La condición inicial es una delta de dirac que actúa como fuente puntual inicial de calor, por lo que al partir de una función cuyo máximo valor se concentra en un punto la función solución adquiere esta forma.&lt;br /&gt;
&lt;br /&gt;
{{python|codigo=   &lt;br /&gt;
t_values = logspace(-3, 1, 50); % Valores de tiempo en escala logarítmica&lt;br /&gt;
colors = 'r'; % Color de la curva&lt;br /&gt;
&lt;br /&gt;
% Condición inicial: Representación simplificada de un mensaje con calor&lt;br /&gt;
u0 = zeros(size(x));&lt;br /&gt;
u0(x &amp;gt; -3 &amp;amp; x &amp;lt; -2) = 5; % Letra &amp;quot;segmento 1&amp;quot;&lt;br /&gt;
u0(x &amp;gt; -1 &amp;amp; x &amp;lt; 1) = 5;  % Letra &amp;quot;segmento 2&amp;quot;&lt;br /&gt;
u0(x &amp;gt; 2 &amp;amp; x &amp;lt; 3) = 5;  % Letra &amp;quot;segmento 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
% Configurar video&lt;br /&gt;
video = VideoWriter('difusion_termica.avi');&lt;br /&gt;
video.FrameRate = 10;&lt;br /&gt;
open(video);&lt;br /&gt;
&lt;br /&gt;
% Figura para la animación&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
xlabel('Posición x');&lt;br /&gt;
ylabel('Temperatura u(x, t)');&lt;br /&gt;
title('Evolución de la difusión térmica');&lt;br /&gt;
grid on;&lt;br /&gt;
axis([x_min x_max 0 5]); % Fijar dimensiones de la cuadrícula en X y Y&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    t = t_values(i);&lt;br /&gt;
    sigma = sqrt(2 * t) / dx; % Relación con la solución analítica&lt;br /&gt;
    u_t = imgaussfilt(u0, sigma); % Aproximación de difusión&lt;br /&gt;
    &lt;br /&gt;
    plot(x, u_t, 'Color', colors, 'LineWidth', 2);&lt;br /&gt;
    legend(sprintf('t = %.4f', t));&lt;br /&gt;
    axis([x_min x_max 0 5]); % Mantener eje Y fijo en cada iteración&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
    clf;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(video);&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Regularidad y dimensiones=&lt;br /&gt;
Vamos a explorar que ocurre al pasar a dos dimensiones (2D), analizando como la difusión del calor se dispersa más rápido en 2D debido a la propagación en múltiples direcciones.&lt;br /&gt;
&lt;br /&gt;
En 1D, la ecuación del calor viene dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Sabemos que dicha ecuación tiene un efecto regularizador, es decir, aunque la condición inicial tenga discontinuidades, la solución se vuelve suave para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;. Por otro lado, la difusión en 1D ocurre a lo largo de una sola dirección (el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) y la solución se suaviza a una determinada velocidad en el tiempo.&lt;br /&gt;
&lt;br /&gt;
Veamos que ocurre en 2D. Ahora, nuestra ecuación es &amp;lt;math&amp;gt;u_t-u_{xx}-u_{yy}=0&amp;lt;/math&amp;gt;. La temperatura inicial se define ahora como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; (x,y)\in([-3,-2]\cup[-1,1]\cup[2,3])\times([-3,-2]\cup[-1,1]\cup[2,3])\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Generalizando a &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; dimensiones, la ecuación del calor vendrá dada por: &amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;, cuya solución fundamental (análoga a la hallada para una dimensión) se distribuye como una gaussiana en varias variables (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;): &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t) = \frac{1}{(4\pi t)^{n/2}} e^{-\frac{|x|^2}{4 t}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El efecto regularizador de la ecuación sigue presente en cualquier dimensión &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Sin embargo, en dimensiones más altas, esta dispersión es más rápida, ya que &amp;lt;math&amp;gt;(4\pi t)^{n/2}&amp;lt;/math&amp;gt; en la solución fundamental crece cuando lo hace &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;; nos surge entonces la pregunta de cómo podemos comparar el tiempo de dispersión en distintas dimensiones. &lt;br /&gt;
&lt;br /&gt;
En \( n \) dimensiones, el calor decae como \(u(x,t) \sim t^{-n/2}\), lo que reafirma que este se disipa más rápido a medida que aumenta la dimensión del espacio. Si queremos comparar el tiempo característico de disipación \( t_d \) en distintas dimensiones, llegamos a la relación \( t_d(n) \sim \frac{t_d(1)}{n/2} \), que nos dice que el tiempo de disipación en dimensión \( n \) es inversamente proporcional a \( n/2 \).&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Heat_equation_2D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0, 10] &amp;lt;/math&amp;gt;, dimensión 2 (2D).]]&lt;br /&gt;
&lt;br /&gt;
Comparemos así la gráfica superior con la hallada para el análisis en dos dimensiones. Podemos apreciar fácilmente como para un mismo periodo de tiempo el calor en cada punto del espacio es menor en esta gráfica que en la anterior pues en 1D, el calor solo se propaga en una dirección, lo que complica la disipación tal y como vemos, pues al aumentar un grado de libertad, para \( t=10 \) el calor en el sistema es casi impredecible.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
a=-4; b=4;                      % Intervalo de definición de la x ([a,b]^2) &lt;br /&gt;
div=0.05;                       % División del vector en x &lt;br /&gt;
X=a:div:b;                      % Vector de X &lt;br /&gt;
[X1,X2]=meshgrid(X,X);          % Creación de la malla en x &lt;br /&gt;
&lt;br /&gt;
% Definir las condiciones iniciales&lt;br /&gt;
U0 = zeros(size(X1));&lt;br /&gt;
U0((X1 &amp;gt; -3) &amp;amp; (X1 &amp;lt; -2) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5; % Letra 1&lt;br /&gt;
U0((X1 &amp;gt; -1) &amp;amp; (X1 &amp;lt; 1) &amp;amp; (X2 &amp;gt; -2) &amp;amp; (X2 &amp;lt; 2)) = 5;  % Letra 2&lt;br /&gt;
U0((X1 &amp;gt; 2) &amp;amp; (X1 &amp;lt; 3) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5;  % Letra 3&lt;br /&gt;
&lt;br /&gt;
% Solución de la ecuación del calor mediante convolución con la solución fundamental&lt;br /&gt;
norma2=@(x1,x2)sqrt(x1.^2+x2.^2);  % Función norma &lt;br /&gt;
Phi2 = @(x1,x2,t)(1./((4*pi*t)).*exp(-norma2(x1,x2).^2./(4*t))); % Solución fundamental en 2D&lt;br /&gt;
&lt;br /&gt;
% Parámetros de animación&lt;br /&gt;
T_max = 10;        % Tiempo máximo de simulación&lt;br /&gt;
num_frames = 100;  % Número de cuadros en la animación&lt;br /&gt;
T_values = linspace(0.001, T_max, num_frames);&lt;br /&gt;
&lt;br /&gt;
% Crear objeto de video&lt;br /&gt;
video_filename = 'heat_equation_2D.mp4';&lt;br /&gt;
vid = VideoWriter(video_filename, 'MPEG-4');&lt;br /&gt;
vid.FrameRate = 20; % FPS del video&lt;br /&gt;
open(vid);&lt;br /&gt;
&lt;br /&gt;
figure;&lt;br /&gt;
cmap = hot;&lt;br /&gt;
clim = [0, 5]; % Fijar la escala de colores entre 0 y 5&lt;br /&gt;
for i=1:length(T_values)&lt;br /&gt;
    U = conv2(U0, Phi2(X1,X2,T_values(i)), 'same') * div^2; % Convolución discreta&lt;br /&gt;
    &lt;br /&gt;
    surf(X1,X2,U)&lt;br /&gt;
    shading interp &lt;br /&gt;
    colorbar;&lt;br /&gt;
    colormap(cmap);&lt;br /&gt;
    caxis(clim); % Mantener la escala de colores fija&lt;br /&gt;
    xlabel('X') &lt;br /&gt;
    ylabel('Y') &lt;br /&gt;
    zlabel('Temperatura') &lt;br /&gt;
    title(&amp;quot;Evolución en 2D para t=&amp;quot;+num2str(T_values(i),'%.3f')+' s') &lt;br /&gt;
    axis([-4 4 -4 4 0 5]);&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(vid, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(vid);&lt;br /&gt;
&lt;br /&gt;
disp(['Video guardado como: ', video_filename]);&lt;br /&gt;
&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84950</id>
		<title>Ecuación del calor (Grupo MAMBD))</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84950"/>
				<updated>2025-03-18T23:23:06Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
En el siguiente trabajo, se busca explorar el comportamiento de la solución a la ecuación del calor para regiones no acotadas, así como la distribución de dicha solución en según que dimensiones.&lt;br /&gt;
&lt;br /&gt;
El problema del calor viene dado por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt;u(x, t)&amp;lt;/math&amp;gt; representa la temperatura del medio en función del tiempo y de la posición.&lt;br /&gt;
&lt;br /&gt;
Como estamos en un medio infinito, tendremos que mirar como una perturbación térmica puntual se difunde con el tiempo. Para ello usamos la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;G(x,t)=\frac{1}{(4\pi t)^{n/2}}e^{-\frac{|x|^2}{4t}},&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Solución de la ecuación del calor empleando la convolución=&lt;br /&gt;
&lt;br /&gt;
Planteamos un problema particular para la ecuación del calor en una dimensión, dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Definimos la temperatura en el instante inicial&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; x\in[-3,-2]\cup[-1,1]\cup[2,3]\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el tiempo, el calor empieza a difundirse según la ecuación dada, cuya solución viene dada por la convolución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\int_{-\infty}^{\infty} G(x-y,t)u_0(y) dy=\frac{1}{\sqrt{4 \pi t}}\int_{-\infty}^{\infty} u_0(y)e^{-\frac{(x-y)^2}{4t}}.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujando la solución para diferentes tiempos, obtenemos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: difusion_termica_1D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0, 10] &amp;lt;/math&amp;gt;, en 1 dimensión.]]&lt;br /&gt;
&lt;br /&gt;
Se aprecia como, conforme avanza el tiempo, la solución tiende a cero y pierde su forma (de tres picos) dada por la condición inicial. Al inicio, las regiones calientes se distinguen claramente, pero poco a poco el calor se extiende a las áreas frías, mostrando como el calor comienza a difundirse por el resto del espacio hasta que la temperatura se ha distribuido de manera uniforme.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:BarraMetal.png|400px|thumb|right|Difusión del mensaje en la barra de metal]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
&lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
imp = 6;&lt;br /&gt;
T=[0.001,0.01,0.1];&lt;br /&gt;
a = [-3, -1, 2];  % Inicio de los segmentos de calor&lt;br /&gt;
b = [-2,  1, 3];  % Fin de los segmentos de calor&lt;br /&gt;
tf = max(T); &lt;br /&gt;
div = 10^-3; &lt;br /&gt;
&lt;br /&gt;
X = -10:div:10;  &lt;br /&gt;
&lt;br /&gt;
% Función de solución fundamental de la ecuación del calor en 1D&lt;br /&gt;
Phi = @(x,t) (1./((4*pi*t).^(1/2)) .* exp(-abs(x).^2./(4*t))); &lt;br /&gt;
&lt;br /&gt;
U = zeros(length(X), length(T));  % Matriz para almacenar soluciones en diferentes tiempos&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución usando la integral de convolución&lt;br /&gt;
for j = 1:length(X)&lt;br /&gt;
    for i = 1:length(T)&lt;br /&gt;
        integral_sum = 0;&lt;br /&gt;
        for k = 1:length(a) &lt;br /&gt;
            Y = a(k):div:b(k); &lt;br /&gt;
            integral_sum = integral_sum + trapz(Y, Phi(X(j)*ones(1,length(Y)) - Y, T(i)*ones(1,length(Y))));&lt;br /&gt;
        end&lt;br /&gt;
        U(j,i) = 5 * integral_sum; &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Dibujar todas las soluciones en una misma gráfica&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
colors = ['r', 'g', 'b'];&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(T) &lt;br /&gt;
    plot(X, U(:,i), colors(i), 'LineWidth', 1.5, 'DisplayName', &amp;quot;t = &amp;quot; + num2str(T(i)) + &amp;quot; s&amp;quot;) &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
xlim([-10 10])  &lt;br /&gt;
ylim([0 5.5]) &lt;br /&gt;
xlabel('Posición x') &lt;br /&gt;
ylabel('Temperatura U(x,t)') &lt;br /&gt;
title(&amp;quot;Difusión térmica del mensaje en la barra de metal&amp;quot;) &lt;br /&gt;
legend show &lt;br /&gt;
grid on &lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
t_values = logspace(-3, 1, 50); % Valores de tiempo en escala logarítmica&lt;br /&gt;
colors = 'r'; % Color de la curva&lt;br /&gt;
&lt;br /&gt;
% Condición inicial: Representación simplificada de un mensaje con calor&lt;br /&gt;
u0 = zeros(size(x));&lt;br /&gt;
u0(x &amp;gt; -3 &amp;amp; x &amp;lt; -2) = 5; % Letra &amp;quot;segmento 1&amp;quot;&lt;br /&gt;
u0(x &amp;gt; -1 &amp;amp; x &amp;lt; 1) = 5;  % Letra &amp;quot;segmento 2&amp;quot;&lt;br /&gt;
u0(x &amp;gt; 2 &amp;amp; x &amp;lt; 3) = 5;  % Letra &amp;quot;segmento 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
% Configurar video&lt;br /&gt;
video = VideoWriter('difusion_termica.avi');&lt;br /&gt;
video.FrameRate = 10;&lt;br /&gt;
open(video);&lt;br /&gt;
&lt;br /&gt;
% Figura para la animación&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
xlabel('Posición x');&lt;br /&gt;
ylabel('Temperatura u(x, t)');&lt;br /&gt;
title('Evolución de la difusión térmica');&lt;br /&gt;
grid on;&lt;br /&gt;
axis([x_min x_max 0 5]); % Fijar dimensiones de la cuadrícula en X y Y&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    t = t_values(i);&lt;br /&gt;
    sigma = sqrt(2 * t) / dx; % Relación con la solución analítica&lt;br /&gt;
    u_t = imgaussfilt(u0, sigma); % Aproximación de difusión&lt;br /&gt;
    &lt;br /&gt;
    plot(x, u_t, 'Color', colors, 'LineWidth', 2);&lt;br /&gt;
    legend(sprintf('t = %.4f', t));&lt;br /&gt;
    axis([x_min x_max 0 5]); % Mantener eje Y fijo en cada iteración&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
    clf;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(video);&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Delta de dirac como función de condición inicial=&lt;br /&gt;
En este caso, tenemos la solución fundamental de la ecuación del calor en 1D. La pregunta que surge aquí es por qué solo tiene un pico. La respuesta a la pregunta es sencilla: La condición inicial es una delta de dirac que actúa como fuente puntual inicial de calor, por lo que al partir de una función cuyo máximo valor se concentra en un punto la función solución adquiere esta forma.&lt;br /&gt;
&lt;br /&gt;
{{python|codigo=&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
def heat_kernel(x, t, alpha=1):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Solución fundamental de la ecuación del calor (distribución gaussiana).&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    return (1 / np.sqrt(4 * np.pi * alpha * t)) * np.exp(-x**2 / (4 * alpha * t))&lt;br /&gt;
&lt;br /&gt;
# Discretización del espacio y tiempos&lt;br /&gt;
x_values = np.linspace(-5, 5, 100)&lt;br /&gt;
t_values = [0.01, 0.1, 0.5, 1, 2]  # Diferentes tiempos para visualizar la evolución&lt;br /&gt;
&lt;br /&gt;
plt.figure(figsize=(8,6))&lt;br /&gt;
for t in t_values:&lt;br /&gt;
    u_values = heat_kernel(x_values, t)&lt;br /&gt;
    plt.plot(x_values, u_values, label=f't = {t}')&lt;br /&gt;
&lt;br /&gt;
plt.xlabel('Posición x')&lt;br /&gt;
plt.ylabel('Temperatura u(x,t)')&lt;br /&gt;
plt.title('Evolución de la solución de la ecuación del calor con fuente puntual')&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
 &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Regularidad y dimensiones=&lt;br /&gt;
Vamos a explorar que ocurre al pasar a dos dimensiones (2D), analizando como la difusión del calor se dispersa más rápido en 2D debido a la propagación en múltiples direcciones.&lt;br /&gt;
&lt;br /&gt;
En 1D, la ecuación del calor viene dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Sabemos que dicha ecuación tiene un efecto regularizador, es decir, aunque la condición inicial tenga discontinuidades, la solución se vuelve suave para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;. Por otro lado, la difusión en 1D ocurre a lo largo de una sola dirección (el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) y la solución se suaviza a una determinada velocidad en el tiempo.&lt;br /&gt;
&lt;br /&gt;
Veamos que ocurre en 2D. Ahora, nuestra ecuación es &amp;lt;math&amp;gt;u_t-u_{xx}-u_{yy}=0&amp;lt;/math&amp;gt;. La temperatura inicial se define ahora como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; (x,y)\in([-3,-2]\cup[-1,1]\cup[2,3])\times([-3,-2]\cup[-1,1]\cup[2,3])\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Generalizando a &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; dimensiones, la ecuación del calor vendrá dada por: &amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;, cuya solución fundamental (análoga a la hallada para una dimensión) se distribuye como una gaussiana en varias variables (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;): &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t) = \frac{1}{(4\pi t)^{n/2}} e^{-\frac{|x|^2}{4 t}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El efecto regularizador de la ecuación sigue presente en cualquier dimensión &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Sin embargo, en dimensiones más altas, esta dispersión es más rápida, ya que &amp;lt;math&amp;gt;(4\pi t)^{n/2}&amp;lt;/math&amp;gt; en la solución fundamental crece cuando lo hace &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;; nos surge entonces la pregunta de cómo podemos comparar el tiempo de dispersión en distintas dimensiones. &lt;br /&gt;
&lt;br /&gt;
En \( n \) dimensiones, el calor decae como \(u(x,t) \sim t^{-n/2}\), lo que reafirma que este se disipa más rápido a medida que aumenta la dimensión del espacio. Si queremos comparar el tiempo característico de disipación \( t_d \) en distintas dimensiones, llegamos a la relación \( t_d(n) \sim \frac{t_d(1)}{n/2} \), que nos dice que el tiempo de disipación en dimensión \( n \) es inversamente proporcional a \( n/2 \).&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Heat_equation_2D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0, 10] &amp;lt;/math&amp;gt;, dimensión 2 (2D).]]&lt;br /&gt;
&lt;br /&gt;
Comparemos así la gráfica superior con la hallada para el análisis en dos dimensiones. Podemos apreciar fácilmente como para un mismo periodo de tiempo el calor en cada punto del espacio es menor en esta gráfica que en la anterior pues en 1D, el calor solo se propaga en una dirección, lo que complica la disipación tal y como vemos, pues al aumentar un grado de libertad, para \( t=10 \) el calor en el sistema es casi impredecible.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
a=-4; b=4;                      % Intervalo de definición de la x ([a,b]^2) &lt;br /&gt;
div=0.05;                       % División del vector en x &lt;br /&gt;
X=a:div:b;                      % Vector de X &lt;br /&gt;
[X1,X2]=meshgrid(X,X);          % Creación de la malla en x &lt;br /&gt;
&lt;br /&gt;
% Definir las condiciones iniciales&lt;br /&gt;
U0 = zeros(size(X1));&lt;br /&gt;
U0((X1 &amp;gt; -3) &amp;amp; (X1 &amp;lt; -2) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5; % Letra 1&lt;br /&gt;
U0((X1 &amp;gt; -1) &amp;amp; (X1 &amp;lt; 1) &amp;amp; (X2 &amp;gt; -2) &amp;amp; (X2 &amp;lt; 2)) = 5;  % Letra 2&lt;br /&gt;
U0((X1 &amp;gt; 2) &amp;amp; (X1 &amp;lt; 3) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5;  % Letra 3&lt;br /&gt;
&lt;br /&gt;
% Solución de la ecuación del calor mediante convolución con la solución fundamental&lt;br /&gt;
norma2=@(x1,x2)sqrt(x1.^2+x2.^2);  % Función norma &lt;br /&gt;
Phi2 = @(x1,x2,t)(1./((4*pi*t)).*exp(-norma2(x1,x2).^2./(4*t))); % Solución fundamental en 2D&lt;br /&gt;
&lt;br /&gt;
% Parámetros de animación&lt;br /&gt;
T_max = 10;        % Tiempo máximo de simulación&lt;br /&gt;
num_frames = 100;  % Número de cuadros en la animación&lt;br /&gt;
T_values = linspace(0.001, T_max, num_frames);&lt;br /&gt;
&lt;br /&gt;
% Crear objeto de video&lt;br /&gt;
video_filename = 'heat_equation_2D.mp4';&lt;br /&gt;
vid = VideoWriter(video_filename, 'MPEG-4');&lt;br /&gt;
vid.FrameRate = 20; % FPS del video&lt;br /&gt;
open(vid);&lt;br /&gt;
&lt;br /&gt;
figure;&lt;br /&gt;
cmap = hot;&lt;br /&gt;
clim = [0, 5]; % Fijar la escala de colores entre 0 y 5&lt;br /&gt;
for i=1:length(T_values)&lt;br /&gt;
    U = conv2(U0, Phi2(X1,X2,T_values(i)), 'same') * div^2; % Convolución discreta&lt;br /&gt;
    &lt;br /&gt;
    surf(X1,X2,U)&lt;br /&gt;
    shading interp &lt;br /&gt;
    colorbar;&lt;br /&gt;
    colormap(cmap);&lt;br /&gt;
    caxis(clim); % Mantener la escala de colores fija&lt;br /&gt;
    xlabel('X') &lt;br /&gt;
    ylabel('Y') &lt;br /&gt;
    zlabel('Temperatura') &lt;br /&gt;
    title(&amp;quot;Evolución en 2D para t=&amp;quot;+num2str(T_values(i),'%.3f')+' s') &lt;br /&gt;
    axis([-4 4 -4 4 0 5]);&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(vid, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(vid);&lt;br /&gt;
&lt;br /&gt;
disp(['Video guardado como: ', video_filename]);&lt;br /&gt;
&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84948</id>
		<title>Ecuación del calor (Grupo MAMBD))</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84948"/>
				<updated>2025-03-18T23:08:07Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Regularidad y dimensiones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
En el siguiente trabajo, se busca explorar el comportamiento de la solución a la ecuación del calor para regiones no acotadas, así como la distribución de dicha solución en según que dimensiones.&lt;br /&gt;
&lt;br /&gt;
El problema del calor viene dado por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt;u(x, t)&amp;lt;/math&amp;gt; representa la temperatura del medio en función del tiempo y de la posición.&lt;br /&gt;
&lt;br /&gt;
Como estamos en un medio infinito, tendremos que mirar como una perturbación térmica puntual se difunde con el tiempo. Para ello usamos la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;G(x,t)=\frac{1}{(4\pi t)^{n/2}}e^{-\frac{|x|^2}{4t}},&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Solución de la ecuación del calor empleando la convolución=&lt;br /&gt;
&lt;br /&gt;
Planteamos un problema particular para la ecuación del calor en una dimensión, dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Definimos la temperatura en el instante inicial&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; x\in[-3,-2]\cup[-1,1]\cup[2,3]\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el tiempo, el calor empieza a difundirse según la ecuación dada, cuya solución viene dada por la convolución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\int_{-\infty}^{\infty} G(x-y,t)u_0(y) dy=\frac{1}{\sqrt{4 \pi t}}\int_{-\infty}^{\infty} u_0(y)e^{-\frac{(x-y)^2}{4t}}.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujando la solución para diferentes tiempos, obtenemos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: difusion_termica_1D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0, 10] &amp;lt;/math&amp;gt;, en 1 dimensión.]]&lt;br /&gt;
&lt;br /&gt;
Se aprecia como, conforme avanza el tiempo, la solución tiende a cero y pierde su forma (de tres picos) dada por la condición inicial. Al inicio, las regiones calientes se distinguen claramente, pero poco a poco el calor se extiende a las áreas frías, mostrando como el calor comienza a difundirse por el resto del espacio hasta que la temperatura se ha distribuido de manera uniforme.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:BarraMetal.png|400px|thumb|right|Difusión del mensaje en la barra de metal]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
&lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
imp = 6;&lt;br /&gt;
T=[0.001,0.01,0.1];&lt;br /&gt;
a = [-3, -1, 2];  % Inicio de los segmentos de calor&lt;br /&gt;
b = [-2,  1, 3];  % Fin de los segmentos de calor&lt;br /&gt;
tf = max(T); &lt;br /&gt;
div = 10^-3; &lt;br /&gt;
&lt;br /&gt;
X = -10:div:10;  &lt;br /&gt;
&lt;br /&gt;
% Función de solución fundamental de la ecuación del calor en 1D&lt;br /&gt;
Phi = @(x,t) (1./((4*pi*t).^(1/2)) .* exp(-abs(x).^2./(4*t))); &lt;br /&gt;
&lt;br /&gt;
U = zeros(length(X), length(T));  % Matriz para almacenar soluciones en diferentes tiempos&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución usando la integral de convolución&lt;br /&gt;
for j = 1:length(X)&lt;br /&gt;
    for i = 1:length(T)&lt;br /&gt;
        integral_sum = 0;&lt;br /&gt;
        for k = 1:length(a) &lt;br /&gt;
            Y = a(k):div:b(k); &lt;br /&gt;
            integral_sum = integral_sum + trapz(Y, Phi(X(j)*ones(1,length(Y)) - Y, T(i)*ones(1,length(Y))));&lt;br /&gt;
        end&lt;br /&gt;
        U(j,i) = 5 * integral_sum; &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Dibujar todas las soluciones en una misma gráfica&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
colors = ['r', 'g', 'b'];&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(T) &lt;br /&gt;
    plot(X, U(:,i), colors(i), 'LineWidth', 1.5, 'DisplayName', &amp;quot;t = &amp;quot; + num2str(T(i)) + &amp;quot; s&amp;quot;) &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
xlim([-10 10])  &lt;br /&gt;
ylim([0 5.5]) &lt;br /&gt;
xlabel('Posición x') &lt;br /&gt;
ylabel('Temperatura U(x,t)') &lt;br /&gt;
title(&amp;quot;Difusión térmica del mensaje en la barra de metal&amp;quot;) &lt;br /&gt;
legend show &lt;br /&gt;
grid on &lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
t_values = logspace(-3, 1, 50); % Valores de tiempo en escala logarítmica&lt;br /&gt;
colors = 'r'; % Color de la curva&lt;br /&gt;
&lt;br /&gt;
% Condición inicial: Representación simplificada de un mensaje con calor&lt;br /&gt;
u0 = zeros(size(x));&lt;br /&gt;
u0(x &amp;gt; -3 &amp;amp; x &amp;lt; -2) = 5; % Letra &amp;quot;segmento 1&amp;quot;&lt;br /&gt;
u0(x &amp;gt; -1 &amp;amp; x &amp;lt; 1) = 5;  % Letra &amp;quot;segmento 2&amp;quot;&lt;br /&gt;
u0(x &amp;gt; 2 &amp;amp; x &amp;lt; 3) = 5;  % Letra &amp;quot;segmento 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
% Configurar video&lt;br /&gt;
video = VideoWriter('difusion_termica.avi');&lt;br /&gt;
video.FrameRate = 10;&lt;br /&gt;
open(video);&lt;br /&gt;
&lt;br /&gt;
% Figura para la animación&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
xlabel('Posición x');&lt;br /&gt;
ylabel('Temperatura u(x, t)');&lt;br /&gt;
title('Evolución de la difusión térmica');&lt;br /&gt;
grid on;&lt;br /&gt;
axis([x_min x_max 0 5]); % Fijar dimensiones de la cuadrícula en X y Y&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    t = t_values(i);&lt;br /&gt;
    sigma = sqrt(2 * t) / dx; % Relación con la solución analítica&lt;br /&gt;
    u_t = imgaussfilt(u0, sigma); % Aproximación de difusión&lt;br /&gt;
    &lt;br /&gt;
    plot(x, u_t, 'Color', colors, 'LineWidth', 2);&lt;br /&gt;
    legend(sprintf('t = %.4f', t));&lt;br /&gt;
    axis([x_min x_max 0 5]); % Mantener eje Y fijo en cada iteración&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
    clf;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(video);&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Regularidad y dimensiones=&lt;br /&gt;
Vamos a explorar que ocurre al pasar a dos dimensiones (2D), analizando como la difusión del calor se dispersa más rápido en 2D debido a la propagación en múltiples direcciones.&lt;br /&gt;
&lt;br /&gt;
En 1D, la ecuación del calor viene dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Sabemos que dicha ecuación tiene un efecto regularizador, es decir, aunque la condición inicial tenga discontinuidades, la solución se vuelve suave para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;. Por otro lado, la difusión en 1D ocurre a lo largo de una sola dirección (el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) y la solución se suaviza a una determinada velocidad en el tiempo.&lt;br /&gt;
&lt;br /&gt;
Veamos que ocurre en 2D. Ahora, nuestra ecuación es &amp;lt;math&amp;gt;u_t-u_{xx}-u_{yy}=0&amp;lt;/math&amp;gt;. La temperatura inicial se define ahora como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; (x,y)\in([-3,-2]\cup[-1,1]\cup[2,3])\times([-3,-2]\cup[-1,1]\cup[2,3])\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Generalizando a &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; dimensiones, la ecuación del calor vendrá dada por: &amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;, cuya solución fundamental (análoga a la hallada para una dimensión) se distribuye como una gaussiana en varias variables (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;): &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t) = \frac{1}{(4\pi t)^{n/2}} e^{-\frac{|x|^2}{4 t}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El efecto regularizador de la ecuación sigue presente en cualquier dimensión &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Sin embargo, en dimensiones más altas, esta dispersión es más rápida, ya que &amp;lt;math&amp;gt;(4\pi t)^{n/2}&amp;lt;/math&amp;gt; en la solución fundamental crece cuando lo hace &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;; nos surge entonces la pregunta de cómo podemos comparar el tiempo de dispersión en distintas dimensiones. &lt;br /&gt;
&lt;br /&gt;
En \( n \) dimensiones, el calor decae como \(u(x,t) \sim t^{-n/2}\), lo que reafirma que este se disipa más rápido a medida que aumenta la dimensión del espacio. Si queremos comparar el tiempo característico de disipación \( t_d \) en distintas dimensiones, llegamos a la relación \( t_d(n) \sim \frac{t_d(1)}{n/2} \), que nos dice que el tiempo de disipación en dimensión \( n \) es inversamente proporcional a \( n/2 \).&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Heat_equation_2D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0, 10] &amp;lt;/math&amp;gt;, dimensión 2 (2D).]]&lt;br /&gt;
&lt;br /&gt;
Comparemos así la gráfica superior con la hallada para el análisis en dos dimensiones. Podemos apreciar fácilmente como para un mismo periodo de tiempo el calor en cada punto del espacio es menor en esta gráfica que en la anterior pues en 1D, el calor solo se propaga en una dirección, lo que complica la disipación tal y como vemos, pues al aumentar un grado de libertad, para \( t=10 \) el calor en el sistema es casi impredecible.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
a=-4; b=4;                      % Intervalo de definición de la x ([a,b]^2) &lt;br /&gt;
div=0.05;                       % División del vector en x &lt;br /&gt;
X=a:div:b;                      % Vector de X &lt;br /&gt;
[X1,X2]=meshgrid(X,X);          % Creación de la malla en x &lt;br /&gt;
&lt;br /&gt;
% Definir las condiciones iniciales&lt;br /&gt;
U0 = zeros(size(X1));&lt;br /&gt;
U0((X1 &amp;gt; -3) &amp;amp; (X1 &amp;lt; -2) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5; % Letra 1&lt;br /&gt;
U0((X1 &amp;gt; -1) &amp;amp; (X1 &amp;lt; 1) &amp;amp; (X2 &amp;gt; -2) &amp;amp; (X2 &amp;lt; 2)) = 5;  % Letra 2&lt;br /&gt;
U0((X1 &amp;gt; 2) &amp;amp; (X1 &amp;lt; 3) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5;  % Letra 3&lt;br /&gt;
&lt;br /&gt;
% Solución de la ecuación del calor mediante convolución con la solución fundamental&lt;br /&gt;
norma2=@(x1,x2)sqrt(x1.^2+x2.^2);  % Función norma &lt;br /&gt;
Phi2 = @(x1,x2,t)(1./((4*pi*t)).*exp(-norma2(x1,x2).^2./(4*t))); % Solución fundamental en 2D&lt;br /&gt;
&lt;br /&gt;
% Parámetros de animación&lt;br /&gt;
T_max = 10;        % Tiempo máximo de simulación&lt;br /&gt;
num_frames = 100;  % Número de cuadros en la animación&lt;br /&gt;
T_values = linspace(0.001, T_max, num_frames);&lt;br /&gt;
&lt;br /&gt;
% Crear objeto de video&lt;br /&gt;
video_filename = 'heat_equation_2D.mp4';&lt;br /&gt;
vid = VideoWriter(video_filename, 'MPEG-4');&lt;br /&gt;
vid.FrameRate = 20; % FPS del video&lt;br /&gt;
open(vid);&lt;br /&gt;
&lt;br /&gt;
figure;&lt;br /&gt;
cmap = hot;&lt;br /&gt;
clim = [0, 5]; % Fijar la escala de colores entre 0 y 5&lt;br /&gt;
for i=1:length(T_values)&lt;br /&gt;
    U = conv2(U0, Phi2(X1,X2,T_values(i)), 'same') * div^2; % Convolución discreta&lt;br /&gt;
    &lt;br /&gt;
    surf(X1,X2,U)&lt;br /&gt;
    shading interp &lt;br /&gt;
    colorbar;&lt;br /&gt;
    colormap(cmap);&lt;br /&gt;
    caxis(clim); % Mantener la escala de colores fija&lt;br /&gt;
    xlabel('X') &lt;br /&gt;
    ylabel('Y') &lt;br /&gt;
    zlabel('Temperatura') &lt;br /&gt;
    title(&amp;quot;Evolución en 2D para t=&amp;quot;+num2str(T_values(i),'%.3f')+' s') &lt;br /&gt;
    axis([-4 4 -4 4 0 5]);&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(vid, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(vid);&lt;br /&gt;
&lt;br /&gt;
disp(['Video guardado como: ', video_filename]);&lt;br /&gt;
&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84944</id>
		<title>Ecuación del calor (Grupo MAMBD))</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84944"/>
				<updated>2025-03-18T22:57:02Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Introducción */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
En el siguiente trabajo, se busca explorar el comportamiento de la solución a la ecuación del calor para regiones no acotadas, así como la distribución de dicha solución en según que dimensiones.&lt;br /&gt;
&lt;br /&gt;
El problema del calor viene dado por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt;u(x, t)&amp;lt;/math&amp;gt; representa la temperatura del medio en función del tiempo y de la posición.&lt;br /&gt;
&lt;br /&gt;
Como estamos en un medio infinito, tendremos que mirar como una perturbación térmica puntual se difunde con el tiempo. Para ello usamos la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;G(x,t)=\frac{1}{(4\pi t)^{n/2}}e^{-\frac{|x|^2}{4t}},&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Solución de la ecuación del calor empleando la convolución=&lt;br /&gt;
&lt;br /&gt;
Planteamos un problema particular para la ecuación del calor en una dimensión, dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Definimos la temperatura en el instante inicial&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; x\in[-3,-2]\cup[-1,1]\cup[2,3]\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el tiempo, el calor empieza a difundirse según la ecuación dada, cuya solución viene dada por la convolución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\int_{-\infty}^{\infty} G(x-y,t)u_0(y) dy=\frac{1}{\sqrt{4 \pi t}}\int_{-\infty}^{\infty} u_0(y)e^{-\frac{(x-y)^2}{4t}}.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujando la solución para diferentes tiempos, obtenemos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: difusion_termica_1D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0, 10] &amp;lt;/math&amp;gt;, en 1 dimensión.]]&lt;br /&gt;
&lt;br /&gt;
Se aprecia como, conforme avanza el tiempo, la solución tiende a cero y pierde su forma (de tres picos) dada por la condición inicial. Al inicio, las regiones calientes se distinguen claramente, pero poco a poco el calor se extiende a las áreas frías, mostrando como el calor comienza a difundirse por el resto del espacio hasta que la temperatura se ha distribuido de manera uniforme.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:BarraMetal.png|400px|thumb|right|Difusión del mensaje en la barra de metal]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
&lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
imp = 6;&lt;br /&gt;
T=[0.001,0.01,0.1];&lt;br /&gt;
a = [-3, -1, 2];  % Inicio de los segmentos de calor&lt;br /&gt;
b = [-2,  1, 3];  % Fin de los segmentos de calor&lt;br /&gt;
tf = max(T); &lt;br /&gt;
div = 10^-3; &lt;br /&gt;
&lt;br /&gt;
X = -10:div:10;  &lt;br /&gt;
&lt;br /&gt;
% Función de solución fundamental de la ecuación del calor en 1D&lt;br /&gt;
Phi = @(x,t) (1./((4*pi*t).^(1/2)) .* exp(-abs(x).^2./(4*t))); &lt;br /&gt;
&lt;br /&gt;
U = zeros(length(X), length(T));  % Matriz para almacenar soluciones en diferentes tiempos&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución usando la integral de convolución&lt;br /&gt;
for j = 1:length(X)&lt;br /&gt;
    for i = 1:length(T)&lt;br /&gt;
        integral_sum = 0;&lt;br /&gt;
        for k = 1:length(a) &lt;br /&gt;
            Y = a(k):div:b(k); &lt;br /&gt;
            integral_sum = integral_sum + trapz(Y, Phi(X(j)*ones(1,length(Y)) - Y, T(i)*ones(1,length(Y))));&lt;br /&gt;
        end&lt;br /&gt;
        U(j,i) = 5 * integral_sum; &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Dibujar todas las soluciones en una misma gráfica&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
colors = ['r', 'g', 'b'];&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(T) &lt;br /&gt;
    plot(X, U(:,i), colors(i), 'LineWidth', 1.5, 'DisplayName', &amp;quot;t = &amp;quot; + num2str(T(i)) + &amp;quot; s&amp;quot;) &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
xlim([-10 10])  &lt;br /&gt;
ylim([0 5.5]) &lt;br /&gt;
xlabel('Posición x') &lt;br /&gt;
ylabel('Temperatura U(x,t)') &lt;br /&gt;
title(&amp;quot;Difusión térmica del mensaje en la barra de metal&amp;quot;) &lt;br /&gt;
legend show &lt;br /&gt;
grid on &lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
t_values = logspace(-3, 1, 50); % Valores de tiempo en escala logarítmica&lt;br /&gt;
colors = 'r'; % Color de la curva&lt;br /&gt;
&lt;br /&gt;
% Condición inicial: Representación simplificada de un mensaje con calor&lt;br /&gt;
u0 = zeros(size(x));&lt;br /&gt;
u0(x &amp;gt; -3 &amp;amp; x &amp;lt; -2) = 5; % Letra &amp;quot;segmento 1&amp;quot;&lt;br /&gt;
u0(x &amp;gt; -1 &amp;amp; x &amp;lt; 1) = 5;  % Letra &amp;quot;segmento 2&amp;quot;&lt;br /&gt;
u0(x &amp;gt; 2 &amp;amp; x &amp;lt; 3) = 5;  % Letra &amp;quot;segmento 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
% Configurar video&lt;br /&gt;
video = VideoWriter('difusion_termica.avi');&lt;br /&gt;
video.FrameRate = 10;&lt;br /&gt;
open(video);&lt;br /&gt;
&lt;br /&gt;
% Figura para la animación&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
xlabel('Posición x');&lt;br /&gt;
ylabel('Temperatura u(x, t)');&lt;br /&gt;
title('Evolución de la difusión térmica');&lt;br /&gt;
grid on;&lt;br /&gt;
axis([x_min x_max 0 5]); % Fijar dimensiones de la cuadrícula en X y Y&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    t = t_values(i);&lt;br /&gt;
    sigma = sqrt(2 * t) / dx; % Relación con la solución analítica&lt;br /&gt;
    u_t = imgaussfilt(u0, sigma); % Aproximación de difusión&lt;br /&gt;
    &lt;br /&gt;
    plot(x, u_t, 'Color', colors, 'LineWidth', 2);&lt;br /&gt;
    legend(sprintf('t = %.4f', t));&lt;br /&gt;
    axis([x_min x_max 0 5]); % Mantener eje Y fijo en cada iteración&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
    clf;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(video);&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Regularidad y dimensiones=&lt;br /&gt;
Vamos a explorar que ocurre al pasar a dos dimensiones (2D), analizando como la difusión del calor se dispersa más rápido en 2D debido a la propagación en múltiples direcciones.&lt;br /&gt;
&lt;br /&gt;
En 1D, la ecuación del calor viene dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Sabemos que dicha ecuación tiene un efecto regularizador, es decir, aunque la condición inicial tenga discontinuidades, la solución se vuelve suave para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;. Por otro lado, la difusión en 1D ocurre a lo largo de una sola dirección (el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) y la solución se suaviza a una determinada velocidad en el tiempo.&lt;br /&gt;
&lt;br /&gt;
Veamos que ocurre en 2D. Ahora, nuestra ecuación es &amp;lt;math&amp;gt;u_t-u_{xx}-u_{yy}=0&amp;lt;/math&amp;gt;. La temperatura inicial se define ahora como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; (x,y)\in([-3,-2]\cup[-1,1]\cup[2,3])\times([-3,-2]\cup[-1,1]\cup[2,3])\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Generalizando a &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; dimensiones, la ecuación del calor vendrá dada por: &amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;, cuya solución fundamental (análoga a la hallada para una dimensión) se distribuye como una gaussiana en varias variables (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;): &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t) = \frac{1}{(4\pi t)^{n/2}} e^{-\frac{|x|^2}{4 t}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El efecto regularizador de la ecuación sigue presente en cualquier dimensión &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Sin embargo, en dimensiones más altas, esta dispersión es más rápida, ya que &amp;lt;math&amp;gt;(4\pi t)^{n/2}&amp;lt;/math&amp;gt; en la solución fundamental crece cuando lo hace &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;; nos surge entonces la pregunta de cómo podemos comparar el tiempo de dispersión en distintas dimensiones. Sabemos que la varianza de la solución fundamental en una dimensión es \(\sigma^2 = 2t\), con lo que para el análisis cualitativo de la dispersión se tiene que \(\sigma^2 \sim t\).&lt;br /&gt;
&lt;br /&gt;
En 2D, la dispersión es más rápida porque la normalización de la solución implica un decaimiento más rápido \( u \sim t^{-1}\) frente a \( u \sim t^{-1/2} \). En \( n \) dimensiones, el calor decae como \(u(x,t) \sim t^{-n/2}\), lo que reafirma que este se disipa más rápido a medida que aumenta la dimensión del espacio. Si queremos comparar el tiempo característico de disipación \( t_d \) en distintas dimensiones, llegamos a la relación \( t_d(n) \sim \frac{t_d(1)}{n/2} \), que nos dice que el tiempo de disipación en dimensión \( n \) es inversamente proporcional a \( n/2 \).&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Heat_equation_2D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0, 10] &amp;lt;/math&amp;gt;, dimensión 2 (2D).]]&lt;br /&gt;
&lt;br /&gt;
Comparemos así la gráfica superior con la hallada para el análisis en dos dimensiones. Podemos apreciar fácilmente como para un mismo periodo de tiempo el calor en cada punto del espacio es menor en esta gráfica que en la anterior pues en 1D, el calor solo se propaga en una dirección, lo que complica la disipación tal y como vemos, pues al aumentar un grado de libertad, para \( t=10 \) el calor en el sistema es casi impredecible.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
a=-4; b=4;                      % Intervalo de definición de la x ([a,b]^2) &lt;br /&gt;
div=0.05;                       % División del vector en x &lt;br /&gt;
X=a:div:b;                      % Vector de X &lt;br /&gt;
[X1,X2]=meshgrid(X,X);          % Creación de la malla en x &lt;br /&gt;
&lt;br /&gt;
% Definir las condiciones iniciales&lt;br /&gt;
U0 = zeros(size(X1));&lt;br /&gt;
U0((X1 &amp;gt; -3) &amp;amp; (X1 &amp;lt; -2) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5; % Letra 1&lt;br /&gt;
U0((X1 &amp;gt; -1) &amp;amp; (X1 &amp;lt; 1) &amp;amp; (X2 &amp;gt; -2) &amp;amp; (X2 &amp;lt; 2)) = 5;  % Letra 2&lt;br /&gt;
U0((X1 &amp;gt; 2) &amp;amp; (X1 &amp;lt; 3) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5;  % Letra 3&lt;br /&gt;
&lt;br /&gt;
% Solución de la ecuación del calor mediante convolución con la solución fundamental&lt;br /&gt;
norma2=@(x1,x2)sqrt(x1.^2+x2.^2);  % Función norma &lt;br /&gt;
Phi2 = @(x1,x2,t)(1./((4*pi*t)).*exp(-norma2(x1,x2).^2./(4*t))); % Solución fundamental en 2D&lt;br /&gt;
&lt;br /&gt;
% Parámetros de animación&lt;br /&gt;
T_max = 10;        % Tiempo máximo de simulación&lt;br /&gt;
num_frames = 100;  % Número de cuadros en la animación&lt;br /&gt;
T_values = linspace(0.001, T_max, num_frames);&lt;br /&gt;
&lt;br /&gt;
% Crear objeto de video&lt;br /&gt;
video_filename = 'heat_equation_2D.mp4';&lt;br /&gt;
vid = VideoWriter(video_filename, 'MPEG-4');&lt;br /&gt;
vid.FrameRate = 20; % FPS del video&lt;br /&gt;
open(vid);&lt;br /&gt;
&lt;br /&gt;
figure;&lt;br /&gt;
cmap = hot;&lt;br /&gt;
clim = [0, 5]; % Fijar la escala de colores entre 0 y 5&lt;br /&gt;
for i=1:length(T_values)&lt;br /&gt;
    U = conv2(U0, Phi2(X1,X2,T_values(i)), 'same') * div^2; % Convolución discreta&lt;br /&gt;
    &lt;br /&gt;
    surf(X1,X2,U)&lt;br /&gt;
    shading interp &lt;br /&gt;
    colorbar;&lt;br /&gt;
    colormap(cmap);&lt;br /&gt;
    caxis(clim); % Mantener la escala de colores fija&lt;br /&gt;
    xlabel('X') &lt;br /&gt;
    ylabel('Y') &lt;br /&gt;
    zlabel('Temperatura') &lt;br /&gt;
    title(&amp;quot;Evolución en 2D para t=&amp;quot;+num2str(T_values(i),'%.3f')+' s') &lt;br /&gt;
    axis([-4 4 -4 4 0 5]);&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(vid, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(vid);&lt;br /&gt;
&lt;br /&gt;
disp(['Video guardado como: ', video_filename]);&lt;br /&gt;
&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84928</id>
		<title>Ecuación del calor (Grupo MAMBD))</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84928"/>
				<updated>2025-03-18T22:13:22Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Solución de la ecuación del calor empleando la convolución */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
En el siguiente trabajo, se busca explorar el comportamiento de la solución a la ecuación del calor para regiones no acotadas, así como la distribución de dicha solución en según que dimensiones.&lt;br /&gt;
&lt;br /&gt;
El problema del calor viene dado por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt;u(x, t)&amp;lt;/math&amp;gt; representa la temperatura del medio en función del tiempo y de la posición.&lt;br /&gt;
&lt;br /&gt;
Como estamos en un medio infinito, tendremos que mirar como una perturbación térmica puntual se difunde con el tiempo. Para ello usamos la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;G(x,t)=\frac{1}{\sqrt{4\pi t}}e^{-\frac{x^2}{4t}},&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Solución de la ecuación del calor empleando la convolución=&lt;br /&gt;
&lt;br /&gt;
Planteamos un problema particular para la ecuación del calor en una dimensión, dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Definimos la temperatura en el instante inicial&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; x\in[-3,-2]\cup[-1,1]\cup[2,3]\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el tiempo, el calor empieza a difundirse según la ecuación dada, cuya solución viene dada por la convolución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\int_{-\infty}^{\infty} G(x-y,t)u_0(y) dy=\frac{1}{\sqrt{4 \pi t}}\int_{-\infty}^{\infty} u_0(y)e^{-\frac{(x-y)^2}{4t}}.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujando la solución para diferentes tiempos, obtenemos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: difusion_termica_1D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0, 10] &amp;lt;/math&amp;gt;, en 1 dimensión.]]&lt;br /&gt;
&lt;br /&gt;
Se aprecia como, conforme avanza el tiempo, la solución tiende a cero y pierde su forma (de tres picos) dada por la condición inicial. Al inicio, las regiones calientes se distinguen claramente, pero poco a poco el calor se extiende a las áreas frías, mostrando como el calor comienza a difundirse por el resto del espacio hasta que la temperatura se ha distribuido de manera uniforme.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:BarraMetal.png|400px|thumb|right|Difusión del mensaje en la barra de metal]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
&lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
imp = 6;&lt;br /&gt;
T=[0.001,0.01,0.1];&lt;br /&gt;
a = [-3, -1, 2];  % Inicio de los segmentos de calor&lt;br /&gt;
b = [-2,  1, 3];  % Fin de los segmentos de calor&lt;br /&gt;
tf = max(T); &lt;br /&gt;
div = 10^-3; &lt;br /&gt;
&lt;br /&gt;
X = -10:div:10;  &lt;br /&gt;
&lt;br /&gt;
% Función de solución fundamental de la ecuación del calor en 1D&lt;br /&gt;
Phi = @(x,t) (1./((4*pi*t).^(1/2)) .* exp(-abs(x).^2./(4*t))); &lt;br /&gt;
&lt;br /&gt;
U = zeros(length(X), length(T));  % Matriz para almacenar soluciones en diferentes tiempos&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución usando la integral de convolución&lt;br /&gt;
for j = 1:length(X)&lt;br /&gt;
    for i = 1:length(T)&lt;br /&gt;
        integral_sum = 0;&lt;br /&gt;
        for k = 1:length(a) &lt;br /&gt;
            Y = a(k):div:b(k); &lt;br /&gt;
            integral_sum = integral_sum + trapz(Y, Phi(X(j)*ones(1,length(Y)) - Y, T(i)*ones(1,length(Y))));&lt;br /&gt;
        end&lt;br /&gt;
        U(j,i) = 5 * integral_sum; &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Dibujar todas las soluciones en una misma gráfica&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
colors = ['r', 'g', 'b'];&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(T) &lt;br /&gt;
    plot(X, U(:,i), colors(i), 'LineWidth', 1.5, 'DisplayName', &amp;quot;t = &amp;quot; + num2str(T(i)) + &amp;quot; s&amp;quot;) &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
xlim([-10 10])  &lt;br /&gt;
ylim([0 5.5]) &lt;br /&gt;
xlabel('Posición x') &lt;br /&gt;
ylabel('Temperatura U(x,t)') &lt;br /&gt;
title(&amp;quot;Difusión térmica del mensaje en la barra de metal&amp;quot;) &lt;br /&gt;
legend show &lt;br /&gt;
grid on &lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
t_values = logspace(-3, 1, 50); % Valores de tiempo en escala logarítmica&lt;br /&gt;
colors = 'r'; % Color de la curva&lt;br /&gt;
&lt;br /&gt;
% Condición inicial: Representación simplificada de un mensaje con calor&lt;br /&gt;
u0 = zeros(size(x));&lt;br /&gt;
u0(x &amp;gt; -3 &amp;amp; x &amp;lt; -2) = 5; % Letra &amp;quot;segmento 1&amp;quot;&lt;br /&gt;
u0(x &amp;gt; -1 &amp;amp; x &amp;lt; 1) = 5;  % Letra &amp;quot;segmento 2&amp;quot;&lt;br /&gt;
u0(x &amp;gt; 2 &amp;amp; x &amp;lt; 3) = 5;  % Letra &amp;quot;segmento 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
% Configurar video&lt;br /&gt;
video = VideoWriter('difusion_termica.avi');&lt;br /&gt;
video.FrameRate = 10;&lt;br /&gt;
open(video);&lt;br /&gt;
&lt;br /&gt;
% Figura para la animación&lt;br /&gt;
figure;&lt;br /&gt;
hold on;&lt;br /&gt;
xlabel('Posición x');&lt;br /&gt;
ylabel('Temperatura u(x, t)');&lt;br /&gt;
title('Evolución de la difusión térmica');&lt;br /&gt;
grid on;&lt;br /&gt;
axis([x_min x_max 0 5]); % Fijar dimensiones de la cuadrícula en X y Y&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    t = t_values(i);&lt;br /&gt;
    sigma = sqrt(2 * t) / dx; % Relación con la solución analítica&lt;br /&gt;
    u_t = imgaussfilt(u0, sigma); % Aproximación de difusión&lt;br /&gt;
    &lt;br /&gt;
    plot(x, u_t, 'Color', colors, 'LineWidth', 2);&lt;br /&gt;
    legend(sprintf('t = %.4f', t));&lt;br /&gt;
    axis([x_min x_max 0 5]); % Mantener eje Y fijo en cada iteración&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
    clf;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(video);&lt;br /&gt;
hold off;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Regularidad y dimensiones=&lt;br /&gt;
Vamos a explorar que ocurre al pasar a dos dimensiones (2D), analizando como la difusión del calor se dispersa más rápido en 2D debido a la propagación en múltiples direcciones.&lt;br /&gt;
&lt;br /&gt;
En 1D, la ecuación del calor viene dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Sabemos que dicha ecuación tiene un efecto regularizador, es decir, aunque la condición inicial tenga discontinuidades, la solución se vuelve suave para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;. Por otro lado, la difusión en 1D ocurre a lo largo de una sola dirección (el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) y la solución se suaviza a una determinada velocidad en el tiempo.&lt;br /&gt;
&lt;br /&gt;
Veamos que ocurre en 2D. Ahora, nuestra ecuación es &amp;lt;math&amp;gt;u_t-u_{xx}-u_{yy}=0&amp;lt;/math&amp;gt;. La temperatura inicial se define ahora como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; (x,y)\in([-3,-2]\cup[-1,1]\cup[2,3])\times([-3,-2]\cup[-1,1]\cup[2,3])\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Generalizando a &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; dimensiones, la ecuación del calor vendrá dada por: &amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;, cuya solución fundamental (análoga a la hallada para una dimensión) se distribuye como una gaussiana en varias variables (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;): &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t) = \frac{1}{(4\pi t)^{n/2}} e^{-\frac{|x|^2}{4 t}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El efecto regularizador de la ecuación sigue presente en cualquier dimensión &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Sin embargo, en dimensiones más altas, esta dispersión es más rápida, ya que &amp;lt;math&amp;gt;(4\pi t)^{n/2}&amp;lt;/math&amp;gt; en la solución fundamental crece cuando lo hace &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;; nos surge entonces la pregunta de cómo podemos comparar el tiempo de dispersión en distintas dimensiones. Sabemos que la varianza de la solución fundamental en una dimensión es \(\sigma^2 = 2t\), con lo que para el análisis cualitativo de la dispersión se tiene que \(\sigma^2 \sim t\).&lt;br /&gt;
&lt;br /&gt;
En 2D, la dispersión es más rápida porque la normalización de la solución implica un decaimiento más rápido \( u \sim t^{-1}\) frente a \( u \sim t^{-1/2} \). En \( n \) dimensiones, el calor decae como \(u(x,t) \sim t^{-n/2}\), lo que reafirma que este se disipa más rápido a medida que aumenta la dimensión del espacio. Si queremos comparar el tiempo característico de disipación \( t_d \) en distintas dimensiones, llegamos a la relación \( t_d(n) \sim \frac{t_d(1)}{n/2} \), que nos dice que el tiempo de disipación en dimensión \( n \) es inversamente proporcional a \( n/2 \).&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Heat_equation_2D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0, 10] &amp;lt;/math&amp;gt;, dimensión 2 (2D).]]&lt;br /&gt;
&lt;br /&gt;
Comparemos así la gráfica superior con la hallada para el análisis en dos dimensiones. Podemos apreciar fácilmente como para un mismo periodo de tiempo el calor en cada punto del espacio es menor en esta gráfica que en la anterior pues en 1D, el calor solo se propaga en una dirección, lo que complica la disipación tal y como vemos, pues al aumentar un grado de libertad, para \( t=10 \) el calor en el sistema es casi impredecible.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
a=-4; b=4;                      % Intervalo de definición de la x ([a,b]^2) &lt;br /&gt;
div=0.05;                       % División del vector en x &lt;br /&gt;
X=a:div:b;                      % Vector de X &lt;br /&gt;
[X1,X2]=meshgrid(X,X);          % Creación de la malla en x &lt;br /&gt;
&lt;br /&gt;
% Definir las condiciones iniciales&lt;br /&gt;
U0 = zeros(size(X1));&lt;br /&gt;
U0((X1 &amp;gt; -3) &amp;amp; (X1 &amp;lt; -2) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5; % Letra 1&lt;br /&gt;
U0((X1 &amp;gt; -1) &amp;amp; (X1 &amp;lt; 1) &amp;amp; (X2 &amp;gt; -2) &amp;amp; (X2 &amp;lt; 2)) = 5;  % Letra 2&lt;br /&gt;
U0((X1 &amp;gt; 2) &amp;amp; (X1 &amp;lt; 3) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5;  % Letra 3&lt;br /&gt;
&lt;br /&gt;
% Solución de la ecuación del calor mediante convolución con la solución fundamental&lt;br /&gt;
norma2=@(x1,x2)sqrt(x1.^2+x2.^2);  % Función norma &lt;br /&gt;
Phi2 = @(x1,x2,t)(1./((4*pi*t)).*exp(-norma2(x1,x2).^2./(4*t))); % Solución fundamental en 2D&lt;br /&gt;
&lt;br /&gt;
% Parámetros de animación&lt;br /&gt;
T_max = 10;        % Tiempo máximo de simulación&lt;br /&gt;
num_frames = 100;  % Número de cuadros en la animación&lt;br /&gt;
T_values = linspace(0.001, T_max, num_frames);&lt;br /&gt;
&lt;br /&gt;
% Crear objeto de video&lt;br /&gt;
video_filename = 'heat_equation_2D.mp4';&lt;br /&gt;
vid = VideoWriter(video_filename, 'MPEG-4');&lt;br /&gt;
vid.FrameRate = 20; % FPS del video&lt;br /&gt;
open(vid);&lt;br /&gt;
&lt;br /&gt;
figure;&lt;br /&gt;
cmap = hot;&lt;br /&gt;
clim = [0, 5]; % Fijar la escala de colores entre 0 y 5&lt;br /&gt;
for i=1:length(T_values)&lt;br /&gt;
    U = conv2(U0, Phi2(X1,X2,T_values(i)), 'same') * div^2; % Convolución discreta&lt;br /&gt;
    &lt;br /&gt;
    surf(X1,X2,U)&lt;br /&gt;
    shading interp &lt;br /&gt;
    colorbar;&lt;br /&gt;
    colormap(cmap);&lt;br /&gt;
    caxis(clim); % Mantener la escala de colores fija&lt;br /&gt;
    xlabel('X') &lt;br /&gt;
    ylabel('Y') &lt;br /&gt;
    zlabel('Temperatura') &lt;br /&gt;
    title(&amp;quot;Evolución en 2D para t=&amp;quot;+num2str(T_values(i),'%.3f')+' s') &lt;br /&gt;
    axis([-4 4 -4 4 0 5]);&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(vid, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(vid);&lt;br /&gt;
&lt;br /&gt;
disp(['Video guardado como: ', video_filename]);&lt;br /&gt;
&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84836</id>
		<title>Ecuación del calor (Grupo MAMBD))</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84836"/>
				<updated>2025-03-18T17:21:28Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Regularidad y dimensiones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
En el siguiente trabajo, se busca explorar el comportamiento de la solución a la ecuación del calor para regiones no acotadas, así como la distribución de dicha solución en según que dimensiones.&lt;br /&gt;
&lt;br /&gt;
El problema del calor viene dado por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde u(x, t) representa la temperatura del medio en función del tiempo y de la posición.&lt;br /&gt;
&lt;br /&gt;
Como estamos en un medio infinito, tendremos que mirar como una perturbación térmica puntual se difunde con el tiempo. Para ello usamos la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;G(x,t)=\frac{1}{\sqrt{4\pi t}}e^{-\frac{x^2}{4t}},&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Mensaje secreto en la ecuación del calor=&lt;br /&gt;
&lt;br /&gt;
Imaginamos que escribimos un mensaje secreto en una barra de metal infinita usando calor (interpretando teóricamente dicha barra como una recta, ya que estamos en dimensión 1). Definimos la temperatura en el instante inicial&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; \text{$x$ está en una de las letras}\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
es decir, el mensaje inicial está formado por letras dibujadas en el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; con calor. Con el tiempo, el calor empieza a difundirse según la ecuación &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Su solución viene dada por la convolución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\int_{-\infty}^{\infty} G(x-y,t)u_0(y) dy=\frac{1}{4\sqrt{\pi t}}\int_{-\infty}^{\infty} u_0(y)e^{-\frac{(x-y)^2}{4t}}.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujando la solución para diferentes tiempos, obtenemos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: MesajeCalor.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0,1.60] &amp;lt;/math&amp;gt;, dimensión 1 (1D).]]&lt;br /&gt;
&lt;br /&gt;
Conforme avanza el tiempo, la difusión del calor hace que los bordes de las letras pierdan definición. Al inicio, las regiones calientes se distinguen claramente, pero poco a poco el calor se extiende a las áreas frías, suavizando los contornos. A medida que esta difusión continúa, las letras se vuelven borrosas hasta que el contraste desaparece por completo y el mensaje se vuelve ilegible, ya que la temperatura se ha distribuido de manera uniforme en la barra.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:BarraMetal.png|400px|thumb|right|Difusión del mensaje en la barra de metal]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
&lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
imp = 6;&lt;br /&gt;
T=[0.001,0.01,0.1];&lt;br /&gt;
a = [-3, -1, 2];  % Inicio de los segmentos de calor&lt;br /&gt;
b = [-2,  1, 3];  % Fin de los segmentos de calor&lt;br /&gt;
tf = max(T); &lt;br /&gt;
div = 10^-3; &lt;br /&gt;
&lt;br /&gt;
X = -10:div:10;  &lt;br /&gt;
&lt;br /&gt;
% Función de solución fundamental de la ecuación del calor en 1D&lt;br /&gt;
Phi = @(x,t) (1./((4*pi*t).^(1/2)) .* exp(-abs(x).^2./(4*t))); &lt;br /&gt;
&lt;br /&gt;
U = zeros(length(X), length(T));  % Matriz para almacenar soluciones en diferentes tiempos&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución usando la integral de convolución&lt;br /&gt;
for j = 1:length(X)&lt;br /&gt;
    for i = 1:length(T)&lt;br /&gt;
        integral_sum = 0;&lt;br /&gt;
        for k = 1:length(a) &lt;br /&gt;
            Y = a(k):div:b(k); &lt;br /&gt;
            integral_sum = integral_sum + trapz(Y, Phi(X(j)*ones(1,length(Y)) - Y, T(i)*ones(1,length(Y))));&lt;br /&gt;
        end&lt;br /&gt;
        U(j,i) = 5 * integral_sum; &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Dibujar todas las soluciones en una misma gráfica&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
colors = ['r', 'g', 'b'];&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(T) &lt;br /&gt;
    plot(X, U(:,i), colors(i), 'LineWidth', 1.5, 'DisplayName', &amp;quot;t = &amp;quot; + num2str(T(i)) + &amp;quot; s&amp;quot;) &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
xlim([-10 10])  &lt;br /&gt;
ylim([0 5.5]) &lt;br /&gt;
xlabel('Posición x') &lt;br /&gt;
ylabel('Temperatura U(x,t)') &lt;br /&gt;
title(&amp;quot;Difusión térmica del mensaje en la barra de metal&amp;quot;) &lt;br /&gt;
legend show &lt;br /&gt;
grid on &lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Regularidad y dimensiones=&lt;br /&gt;
Vamos a explorar que ocurre al pasar a dos dimensiones (2D), analizando como la difusión del calor se dispersa más rápido en 2D debido a la propagación en múltiples direcciones.&lt;br /&gt;
&lt;br /&gt;
En 1D, la ecuación del calor viene dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Sabemos que dicha ecuación tiene un efecto regularizador, es decir, aunque la condición inicial tenga discontinuidades, la solución se vuelve suave para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;. Por otro lado, la difusión en 1D ocurre a lo largo de una sola dirección (el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) y la solución se suaviza rápidamente con el tiempo.&lt;br /&gt;
&lt;br /&gt;
Veamos que ocurre en 2D. Ahora, nuestra ecuación es &amp;lt;math&amp;gt;u_t-u_{xx}-u_{yy}=0&amp;lt;/math&amp;gt;. La temperatura inicial se define ahora como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; \text{si $(x,y)$ está dentro de una de las letras}\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Continuemos con la generalización a &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; dimensiones tal que la ecuación del calor vendrá dada por: &amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;, cuya solución fundamental (análoga a la hallada para una dimensión) se distribuye como una gaussiana en varias variables (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;): &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t) = \frac{1}{(4\pi t)^{n/2}} e^{-\frac{|x|^2}{4 t}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El efecto regularizador de la ecuación sigue presente en cualquier dimensión &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Sin embargo, en dimensiones más altas, esta dispersión es más rápida, ya que &amp;lt;math&amp;gt;(4\pi t)^{n/2}&amp;lt;/math&amp;gt; en al solución fundamental crece cuando lo hace &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Este crecimiento (en el denominador) implica que la temperatura en un punto dado &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; disminuye más rápido pues hay más direcciones donde se puede difundir el calor.&lt;br /&gt;
&lt;br /&gt;
Este hecho nos surge la pregunta de cómo podemos comparar el tiempo de dispersión en 1D, 2D y \(n\)D. Sabemos que la varianza de la solución fundamental en una dimensión es \(\sigma^2 = 2t\), con lo que para el análisis cualitativo de la dispersión se tiene que \(\sigma^2 \sim t\). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo: MensajeCalor_2D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0,1.6] &amp;lt;/math&amp;gt;, dimensión 2 (2D).]]&lt;br /&gt;
&lt;br /&gt;
En 2D, la dispersión es más rápida porque la normalización de la solución implica un decaimiento más rápido \( u \sim t^{-1}\) frente a \( u \sim t^{-1/2} \). En \( n \) dimensiones, el calor decae como \(u(x,t) \sim t^{-n/2}\), lo que reafirma que el calor se disipa más rápido a medida que aumenta la dimensión del espacio.&lt;br /&gt;
&lt;br /&gt;
Si queremos comparar el tiempo característico de disipación \( t_d \) en distintas dimensiones, llegamos a la relación \( t_d(n) \sim \frac{t_d(1)}{n/2} \), que nos dice que el tiempo de disipación en dimensión \( n \) es inversamente proporcional a \( n/2 \).&lt;br /&gt;
&lt;br /&gt;
YA SOLO QUEDARIA UNA COMPARACIÓN ENTRE ESTE VIDEO DE 2 DIMENSIONES Y EL ANTERIOR DE 1, DONDE VEMOS EFECTIVAMENTE LO QUE ESTAMOS DICIENDO DE ACUERDO A LA DISPERSION EN FUNCIÓN DEL AUMENTO DE LAS DIMENSIONES.&lt;br /&gt;
&lt;br /&gt;
En 1D, el calor solo se propaga en una dirección, lo que complica la disipación. En 2D, la propagación ocurre en más direcciones facilitando así la disipación y haciendo que la temperatura en un punto caiga más rápido.&lt;br /&gt;
Por lo general, a medida que aumenta la dimensión &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, la disipación crece, siguiendo la relación \( u(x,t) \sim t^{-n/2}\). &lt;br /&gt;
Habiendo hecho el análisis, el tiempo de disipación es inversamente proporcional a &amp;lt;math&amp;gt;n/2&amp;lt;/math&amp;gt;, lo que significa que la difusión se acelera a medida que aumentan las dimensiones. &lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
a=-4; b=4;                      % Intervalo de definición de la x ([a,b]^2) &lt;br /&gt;
div=0.05;                       % División del vector en x &lt;br /&gt;
X=a:div:b;                      % Vector de X &lt;br /&gt;
[X1,X2]=meshgrid(X,X);          % Creación de la malla en x &lt;br /&gt;
&lt;br /&gt;
% Definir las condiciones iniciales&lt;br /&gt;
U0 = zeros(size(X1));&lt;br /&gt;
U0((X1 &amp;gt; -3) &amp;amp; (X1 &amp;lt; -2) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5; % Letra 1&lt;br /&gt;
U0((X1 &amp;gt; -1) &amp;amp; (X1 &amp;lt; 1) &amp;amp; (X2 &amp;gt; -2) &amp;amp; (X2 &amp;lt; 2)) = 5;  % Letra 2&lt;br /&gt;
U0((X1 &amp;gt; 2) &amp;amp; (X1 &amp;lt; 3) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5;  % Letra 3&lt;br /&gt;
&lt;br /&gt;
% Solución de la ecuación del calor mediante convolución con la solución fundamental&lt;br /&gt;
norma2=@(x1,x2)sqrt(x1.^2+x2.^2);  % Función norma &lt;br /&gt;
Phi2 = @(x1,x2,t)(1./((4*pi*t)).*exp(-norma2(x1,x2).^2./(4*t))); % Solución fundamental en 2D&lt;br /&gt;
&lt;br /&gt;
% Parámetros de animación&lt;br /&gt;
T_max = 0.7;       % Tiempo máximo de simulación&lt;br /&gt;
num_frames = 100;  % Número de cuadros en la animación&lt;br /&gt;
T_values = linspace(0.001, T_max, num_frames);&lt;br /&gt;
&lt;br /&gt;
% Crear objeto de video&lt;br /&gt;
video_filename = 'heat_equation_2D.mp4';&lt;br /&gt;
vid = VideoWriter(video_filename, 'MPEG-4');&lt;br /&gt;
vid.FrameRate = 20; % FPS del video&lt;br /&gt;
open(vid);&lt;br /&gt;
&lt;br /&gt;
figure;&lt;br /&gt;
for i=1:length(T_values)&lt;br /&gt;
    U = conv2(U0, Phi2(X1,X2,T_values(i)), 'same') * div^2; % Convolución discreta&lt;br /&gt;
    &lt;br /&gt;
    surf(X1,X2,U)&lt;br /&gt;
    shading interp &lt;br /&gt;
    colormap hot &lt;br /&gt;
    xlabel('X') &lt;br /&gt;
    ylabel('Y') &lt;br /&gt;
    zlabel('Temperatura') &lt;br /&gt;
    title(&amp;quot;Evolución en 2D para t=&amp;quot;+num2str(T_values(i),'%.3f')+' s') &lt;br /&gt;
    axis([-4 4 -4 4 0 5]);&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(vid, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(vid);&lt;br /&gt;
&lt;br /&gt;
disp(['Video guardado como: ', video_filename]);&lt;br /&gt;
&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84832</id>
		<title>Ecuación del calor (Grupo MAMBD))</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84832"/>
				<updated>2025-03-18T17:14:14Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Regularidad y dimensiones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
En el siguiente trabajo, se busca explorar el comportamiento de la solución a la ecuación del calor para regiones no acotadas, así como la distribución de dicha solución en según que dimensiones.&lt;br /&gt;
&lt;br /&gt;
El problema del calor viene dado por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde u(x, t) representa la temperatura del medio en función del tiempo y de la posición.&lt;br /&gt;
&lt;br /&gt;
Como estamos en un medio infinito, tendremos que mirar como una perturbación térmica puntual se difunde con el tiempo. Para ello usamos la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;G(x,t)=\frac{1}{\sqrt{4\pi t}}e^{-\frac{x^2}{4t}},&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Mensaje secreto en la ecuación del calor=&lt;br /&gt;
&lt;br /&gt;
Imaginamos que escribimos un mensaje secreto en una barra de metal infinita usando calor (interpretando teóricamente dicha barra como una recta, ya que estamos en dimensión 1). Definimos la temperatura en el instante inicial&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; \text{$x$ está en una de las letras}\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
es decir, el mensaje inicial está formado por letras dibujadas en el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; con calor. Con el tiempo, el calor empieza a difundirse según la ecuación &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Su solución viene dada por la convolución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\int_{-\infty}^{\infty} G(x-y,t)u_0(y) dy=\frac{1}{4\sqrt{\pi t}}\int_{-\infty}^{\infty} u_0(y)e^{-\frac{(x-y)^2}{4t}}.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujando la solución para diferentes tiempos, obtenemos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: MesajeCalor.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0,1.60] &amp;lt;/math&amp;gt;, dimensión 1 (1D).]]&lt;br /&gt;
&lt;br /&gt;
Conforme avanza el tiempo, la difusión del calor hace que los bordes de las letras pierdan definición. Al inicio, las regiones calientes se distinguen claramente, pero poco a poco el calor se extiende a las áreas frías, suavizando los contornos. A medida que esta difusión continúa, las letras se vuelven borrosas hasta que el contraste desaparece por completo y el mensaje se vuelve ilegible, ya que la temperatura se ha distribuido de manera uniforme en la barra.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:BarraMetal.png|400px|thumb|right|Difusión del mensaje en la barra de metal]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
&lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
imp = 6;&lt;br /&gt;
T=[0.001,0.01,0.1];&lt;br /&gt;
a = [-3, -1, 2];  % Inicio de los segmentos de calor&lt;br /&gt;
b = [-2,  1, 3];  % Fin de los segmentos de calor&lt;br /&gt;
tf = max(T); &lt;br /&gt;
div = 10^-3; &lt;br /&gt;
&lt;br /&gt;
X = -10:div:10;  &lt;br /&gt;
&lt;br /&gt;
% Función de solución fundamental de la ecuación del calor en 1D&lt;br /&gt;
Phi = @(x,t) (1./((4*pi*t).^(1/2)) .* exp(-abs(x).^2./(4*t))); &lt;br /&gt;
&lt;br /&gt;
U = zeros(length(X), length(T));  % Matriz para almacenar soluciones en diferentes tiempos&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución usando la integral de convolución&lt;br /&gt;
for j = 1:length(X)&lt;br /&gt;
    for i = 1:length(T)&lt;br /&gt;
        integral_sum = 0;&lt;br /&gt;
        for k = 1:length(a) &lt;br /&gt;
            Y = a(k):div:b(k); &lt;br /&gt;
            integral_sum = integral_sum + trapz(Y, Phi(X(j)*ones(1,length(Y)) - Y, T(i)*ones(1,length(Y))));&lt;br /&gt;
        end&lt;br /&gt;
        U(j,i) = 5 * integral_sum; &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Dibujar todas las soluciones en una misma gráfica&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
colors = ['r', 'g', 'b'];&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(T) &lt;br /&gt;
    plot(X, U(:,i), colors(i), 'LineWidth', 1.5, 'DisplayName', &amp;quot;t = &amp;quot; + num2str(T(i)) + &amp;quot; s&amp;quot;) &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
xlim([-10 10])  &lt;br /&gt;
ylim([0 5.5]) &lt;br /&gt;
xlabel('Posición x') &lt;br /&gt;
ylabel('Temperatura U(x,t)') &lt;br /&gt;
title(&amp;quot;Difusión térmica del mensaje en la barra de metal&amp;quot;) &lt;br /&gt;
legend show &lt;br /&gt;
grid on &lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Regularidad y dimensiones=&lt;br /&gt;
Vamos a explorar que ocurre al pasar a dos dimensiones (2D), analizando como la difusión del calor se dispersa más rápido en 2D debido a la propagación en múltiples direcciones.&lt;br /&gt;
&lt;br /&gt;
En 1D, la ecuación del calor viene dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Sabemos que dicha ecuación tiene un efecto regularizador, es decir, aunque la condición inicial tenga discontinuidades, la solución se vuelve suave para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;. Por otro lado, la difusión en 1D ocurre a lo largo de una sola dirección (el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) y la solución se suaviza rápidamente con el tiempo.&lt;br /&gt;
&lt;br /&gt;
Veamos que ocurre en 2D. Ahora, nuestra ecuación es &amp;lt;math&amp;gt;u_t-u_{xx}-u_{yy}=0&amp;lt;/math&amp;gt;. La temperatura inicial se define ahora como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; \text{si $(x,y)$ está dentro de una de las letras}\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Continuemos con la generalización a &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; dimensiones tal que la ecuación del calor vendrá dada por: &amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;, cuya solución fundamental (análoga a la hallada para una dimensión) se distribuye como una gaussiana en varias variables (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;): &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t) = \frac{1}{(4\pi t)^{n/2}} e^{-\frac{|x|^2}{4 t}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El efecto regularizador de la ecuación sigue presente en cualquier dimensión &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Sin embargo, en dimensiones más altas, esta dispersión es más rápida, ya que &amp;lt;math&amp;gt;(4\pi t)^{n/2}&amp;lt;/math&amp;gt; en al solución fundamental crece cuando lo hace &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Este crecimiento (en el denominador) implica que la temperatura en un punto dado &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; disminuye más rápido pues hay más direcciones donde se puede difundir el calor.&lt;br /&gt;
&lt;br /&gt;
Este hecho nos surge la pregunta de cómo podemos comparar el tiempo de dispersión en 1D, 2D y \(n\)D. Sabemos que la varianza de la solución fundamental en una dimensión es \(\sigma^2 = 2t\), con lo que para el análisis cualitativo de la dispersión se tiene que \(\sigma^2 \sim t\). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo: MensajeCalor_2D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0,1.6] &amp;lt;/math&amp;gt;, dimensión 2 (2D).]]&lt;br /&gt;
&lt;br /&gt;
En 2D, la dispersión es más rápida porque la normalización de la solución implica un decaimiento más rápido \( u \sim t^{-1}\) frente a \( u \sim t^{-1/2} \). En \( n \) dimensiones, el calor decae como \(u(x,t) \sim t^{-n/2}\), lo que reafirma que el calor se disipa más rápido a medida que aumenta la dimensión del espacio.&lt;br /&gt;
&lt;br /&gt;
Si queremos comparar el tiempo característico de disipación \( t_d \) en distintas dimensiones, llegamos a la relación \( t_d(n) \sim \frac{t_d(1)}{n/2} \), que nos dice que el tiempo de disipación en dimensión \( n \) es inversamente proporcional a \( n/2 \).&lt;br /&gt;
&lt;br /&gt;
YA SOLO QUEDARIA UNA COMPARACIÓN ENTRE ESTE VIDEO DE 2 DIMENSIONES Y EL ANTERIOR DE 1, DONDE VEMOS EFECTIVAMENTE LO QUE ESTAMOS DICIENDO DE ACUERDO A LA DISPERSION EN FUNCIÓN DEL AUMENTO DE LAS DIMENSIONES.&lt;br /&gt;
&lt;br /&gt;
En 1D la solución fundamental es una distribución gaussiana &lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
a=-4; b=4;                      % Intervalo de definición de la x ([a,b]^2) &lt;br /&gt;
div=0.05;                       % División del vector en x &lt;br /&gt;
X=a:div:b;                      % Vector de X &lt;br /&gt;
[X1,X2]=meshgrid(X,X);          % Creación de la malla en x &lt;br /&gt;
&lt;br /&gt;
% Definir las condiciones iniciales&lt;br /&gt;
U0 = zeros(size(X1));&lt;br /&gt;
U0((X1 &amp;gt; -3) &amp;amp; (X1 &amp;lt; -2) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5; % Letra 1&lt;br /&gt;
U0((X1 &amp;gt; -1) &amp;amp; (X1 &amp;lt; 1) &amp;amp; (X2 &amp;gt; -2) &amp;amp; (X2 &amp;lt; 2)) = 5;  % Letra 2&lt;br /&gt;
U0((X1 &amp;gt; 2) &amp;amp; (X1 &amp;lt; 3) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5;  % Letra 3&lt;br /&gt;
&lt;br /&gt;
% Solución de la ecuación del calor mediante convolución con la solución fundamental&lt;br /&gt;
norma2=@(x1,x2)sqrt(x1.^2+x2.^2);  % Función norma &lt;br /&gt;
Phi2 = @(x1,x2,t)(1./((4*pi*t)).*exp(-norma2(x1,x2).^2./(4*t))); % Solución fundamental en 2D&lt;br /&gt;
&lt;br /&gt;
% Parámetros de animación&lt;br /&gt;
T_max = 0.7;       % Tiempo máximo de simulación&lt;br /&gt;
num_frames = 100;  % Número de cuadros en la animación&lt;br /&gt;
T_values = linspace(0.001, T_max, num_frames);&lt;br /&gt;
&lt;br /&gt;
% Crear objeto de video&lt;br /&gt;
video_filename = 'heat_equation_2D.mp4';&lt;br /&gt;
vid = VideoWriter(video_filename, 'MPEG-4');&lt;br /&gt;
vid.FrameRate = 20; % FPS del video&lt;br /&gt;
open(vid);&lt;br /&gt;
&lt;br /&gt;
figure;&lt;br /&gt;
for i=1:length(T_values)&lt;br /&gt;
    U = conv2(U0, Phi2(X1,X2,T_values(i)), 'same') * div^2; % Convolución discreta&lt;br /&gt;
    &lt;br /&gt;
    surf(X1,X2,U)&lt;br /&gt;
    shading interp &lt;br /&gt;
    colormap hot &lt;br /&gt;
    xlabel('X') &lt;br /&gt;
    ylabel('Y') &lt;br /&gt;
    zlabel('Temperatura') &lt;br /&gt;
    title(&amp;quot;Evolución en 2D para t=&amp;quot;+num2str(T_values(i),'%.3f')+' s') &lt;br /&gt;
    axis([-4 4 -4 4 0 5]);&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(vid, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(vid);&lt;br /&gt;
&lt;br /&gt;
disp(['Video guardado como: ', video_filename]);&lt;br /&gt;
&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84830</id>
		<title>Ecuación del calor (Grupo MAMBD))</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84830"/>
				<updated>2025-03-18T17:07:16Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Regularidad y dimensiones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
En el siguiente trabajo, se busca explorar el comportamiento de la solución a la ecuación del calor para regiones no acotadas, así como la distribución de dicha solución en según que dimensiones.&lt;br /&gt;
&lt;br /&gt;
El problema del calor viene dado por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde u(x, t) representa la temperatura del medio en función del tiempo y de la posición.&lt;br /&gt;
&lt;br /&gt;
Como estamos en un medio infinito, tendremos que mirar como una perturbación térmica puntual se difunde con el tiempo. Para ello usamos la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;G(x,t)=\frac{1}{\sqrt{4\pi t}}e^{-\frac{x^2}{4t}},&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Mensaje secreto en la ecuación del calor=&lt;br /&gt;
&lt;br /&gt;
Imaginamos que escribimos un mensaje secreto en una barra de metal infinita usando calor (interpretando teóricamente dicha barra como una recta, ya que estamos en dimensión 1). Definimos la temperatura en el instante inicial&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; \text{$x$ está en una de las letras}\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
es decir, el mensaje inicial está formado por letras dibujadas en el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; con calor. Con el tiempo, el calor empieza a difundirse según la ecuación &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Su solución viene dada por la convolución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\int_{-\infty}^{\infty} G(x-y,t)u_0(y) dy=\frac{1}{4\sqrt{\pi t}}\int_{-\infty}^{\infty} u_0(y)e^{-\frac{(x-y)^2}{4t}}.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujando la solución para diferentes tiempos, obtenemos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: MesajeCalor.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0,1.60] &amp;lt;/math&amp;gt;, dimensión 1 (1D).]]&lt;br /&gt;
&lt;br /&gt;
Conforme avanza el tiempo, la difusión del calor hace que los bordes de las letras pierdan definición. Al inicio, las regiones calientes se distinguen claramente, pero poco a poco el calor se extiende a las áreas frías, suavizando los contornos. A medida que esta difusión continúa, las letras se vuelven borrosas hasta que el contraste desaparece por completo y el mensaje se vuelve ilegible, ya que la temperatura se ha distribuido de manera uniforme en la barra.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:BarraMetal.png|400px|thumb|right|Difusión del mensaje en la barra de metal]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
&lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
imp = 6;&lt;br /&gt;
T=[0.001,0.01,0.1];&lt;br /&gt;
a = [-3, -1, 2];  % Inicio de los segmentos de calor&lt;br /&gt;
b = [-2,  1, 3];  % Fin de los segmentos de calor&lt;br /&gt;
tf = max(T); &lt;br /&gt;
div = 10^-3; &lt;br /&gt;
&lt;br /&gt;
X = -10:div:10;  &lt;br /&gt;
&lt;br /&gt;
% Función de solución fundamental de la ecuación del calor en 1D&lt;br /&gt;
Phi = @(x,t) (1./((4*pi*t).^(1/2)) .* exp(-abs(x).^2./(4*t))); &lt;br /&gt;
&lt;br /&gt;
U = zeros(length(X), length(T));  % Matriz para almacenar soluciones en diferentes tiempos&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución usando la integral de convolución&lt;br /&gt;
for j = 1:length(X)&lt;br /&gt;
    for i = 1:length(T)&lt;br /&gt;
        integral_sum = 0;&lt;br /&gt;
        for k = 1:length(a) &lt;br /&gt;
            Y = a(k):div:b(k); &lt;br /&gt;
            integral_sum = integral_sum + trapz(Y, Phi(X(j)*ones(1,length(Y)) - Y, T(i)*ones(1,length(Y))));&lt;br /&gt;
        end&lt;br /&gt;
        U(j,i) = 5 * integral_sum; &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Dibujar todas las soluciones en una misma gráfica&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
colors = ['r', 'g', 'b'];&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(T) &lt;br /&gt;
    plot(X, U(:,i), colors(i), 'LineWidth', 1.5, 'DisplayName', &amp;quot;t = &amp;quot; + num2str(T(i)) + &amp;quot; s&amp;quot;) &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
xlim([-10 10])  &lt;br /&gt;
ylim([0 5.5]) &lt;br /&gt;
xlabel('Posición x') &lt;br /&gt;
ylabel('Temperatura U(x,t)') &lt;br /&gt;
title(&amp;quot;Difusión térmica del mensaje en la barra de metal&amp;quot;) &lt;br /&gt;
legend show &lt;br /&gt;
grid on &lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Regularidad y dimensiones=&lt;br /&gt;
Vamos a explorar que ocurre al pasar a dos dimensiones (2D), analizando como la difusión del calor se dispersa más rápido en 2D debido a la propagación en múltiples direcciones.&lt;br /&gt;
&lt;br /&gt;
En 1D, la ecuación del calor viene dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Sabemos que dicha ecuación tiene un efecto regularizador, es decir, aunque la condición inicial tenga discontinuidades, la solución se vuelve suave para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;. Por otro lado, la difusión en 1D ocurre a lo largo de una sola dirección (el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) y la solución se suaviza rápidamente con el tiempo.&lt;br /&gt;
&lt;br /&gt;
Veamos que ocurre en 2D. Ahora, nuestra ecuación es &amp;lt;math&amp;gt;u_t-u_{xx}-u_{yy}=0&amp;lt;/math&amp;gt;. La temperatura inicial se define ahora como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; \text{si $(x,y)$ está dentro de una de las letras}\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Continuemos con la generalización a &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; dimensiones tal que la ecuación del calor vendrá dada por: &amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;, cuya solución fundamental (análoga a la hallada para una dimensión) se distribuye como una gaussiana en varias variables (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;): &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t) = \frac{1}{(4\pi t)^{n/2}} e^{-\frac{|x|^2}{4 t}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El efecto regularizador de la ecuación sigue presente en cualquier dimensión &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Sin embargo, en dimensiones más altas, esta dispersión es más rápida, ya que &amp;lt;math&amp;gt;(4\pi t)^{n/2}&amp;lt;/math&amp;gt; en al solución fundamental crece cuando lo hace &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Este crecimiento (en el denominador) implica que la temperatura en un punto dado &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; disminuye más rápido pues hay más direcciones donde se puede difundir el calor.&lt;br /&gt;
&lt;br /&gt;
Este hecho nos surge la pregunta de cómo podemos comparar el tiempo de dispersión en 1D, 2D y \(n\)D. Sabemos que la varianza de la solución fundamental en una dimensión es \(\sigma^2 = 2t\), con lo que para el análisis cualitativo de la dispersión se tiene que \(\sigma^2 \sim t\). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo: MensajeCalor_2D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0,1.6] &amp;lt;/math&amp;gt;, dimensión 2 (2D).]]&lt;br /&gt;
&lt;br /&gt;
En 2D, la dispersión es más rápida porque la normalización de la solución implica un decaimiento más rápido \( u \sim t^{-1}\) frente a \( u \sim t^{-1/2} \). En \( n \) dimensiones, el calor decae como \(u(x,t) \sim t^{-n/2}\), lo que reafirma que el calor se disipa más rápido a medida que aumenta la dimensión del espacio.&lt;br /&gt;
&lt;br /&gt;
Si queremos comparar el tiempo característico de disipación \( t_d \) en distintas dimensiones, llegamos a la relación \( t_d(n) \sim \frac{t_d(1)}{n/2} \), que nos dice que el tiempo de disipación en dimensión \( n \) es inversamente proporcional a \( n/2 \).&lt;br /&gt;
&lt;br /&gt;
YA SOLO QUEDARIA UNA COMPARACIÓN ENTRE ESTE VIDEO DE 2 DIMENSIONES Y EL ANTERIOR DE 1, DONDE VEMOS EFECTIVAMENTE LO QUE ESTAMOS DICIENDO DE ACUERDO A LA DISPERSION EN FUNCIÓN DEL AUMENTO DE LAS DIMENSIONES.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
a=-4; b=4;                      % Intervalo de definición de la x ([a,b]^2) &lt;br /&gt;
div=0.05;                       % División del vector en x &lt;br /&gt;
X=a:div:b;                      % Vector de X &lt;br /&gt;
[X1,X2]=meshgrid(X,X);          % Creación de la malla en x &lt;br /&gt;
&lt;br /&gt;
% Definir las condiciones iniciales&lt;br /&gt;
U0 = zeros(size(X1));&lt;br /&gt;
U0((X1 &amp;gt; -3) &amp;amp; (X1 &amp;lt; -2) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5; % Letra 1&lt;br /&gt;
U0((X1 &amp;gt; -1) &amp;amp; (X1 &amp;lt; 1) &amp;amp; (X2 &amp;gt; -2) &amp;amp; (X2 &amp;lt; 2)) = 5;  % Letra 2&lt;br /&gt;
U0((X1 &amp;gt; 2) &amp;amp; (X1 &amp;lt; 3) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5;  % Letra 3&lt;br /&gt;
&lt;br /&gt;
% Solución de la ecuación del calor mediante convolución con la solución fundamental&lt;br /&gt;
norma2=@(x1,x2)sqrt(x1.^2+x2.^2);  % Función norma &lt;br /&gt;
Phi2 = @(x1,x2,t)(1./((4*pi*t)).*exp(-norma2(x1,x2).^2./(4*t))); % Solución fundamental en 2D&lt;br /&gt;
&lt;br /&gt;
% Parámetros de animación&lt;br /&gt;
T_max = 0.7;       % Tiempo máximo de simulación&lt;br /&gt;
num_frames = 100;  % Número de cuadros en la animación&lt;br /&gt;
T_values = linspace(0.001, T_max, num_frames);&lt;br /&gt;
&lt;br /&gt;
% Crear objeto de video&lt;br /&gt;
video_filename = 'heat_equation_2D.mp4';&lt;br /&gt;
vid = VideoWriter(video_filename, 'MPEG-4');&lt;br /&gt;
vid.FrameRate = 20; % FPS del video&lt;br /&gt;
open(vid);&lt;br /&gt;
&lt;br /&gt;
figure;&lt;br /&gt;
for i=1:length(T_values)&lt;br /&gt;
    U = conv2(U0, Phi2(X1,X2,T_values(i)), 'same') * div^2; % Convolución discreta&lt;br /&gt;
    &lt;br /&gt;
    surf(X1,X2,U)&lt;br /&gt;
    shading interp &lt;br /&gt;
    colormap hot &lt;br /&gt;
    xlabel('X') &lt;br /&gt;
    ylabel('Y') &lt;br /&gt;
    zlabel('Temperatura') &lt;br /&gt;
    title(&amp;quot;Evolución en 2D para t=&amp;quot;+num2str(T_values(i),'%.3f')+' s') &lt;br /&gt;
    axis([-4 4 -4 4 0 5]);&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(vid, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(vid);&lt;br /&gt;
&lt;br /&gt;
disp(['Video guardado como: ', video_filename]);&lt;br /&gt;
&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84829</id>
		<title>Ecuación del calor (Grupo MAMBD))</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84829"/>
				<updated>2025-03-18T17:05:58Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Regularidad y dimensiones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
En el siguiente trabajo, se busca explorar el comportamiento de la solución a la ecuación del calor para regiones no acotadas, así como la distribución de dicha solución en según que dimensiones.&lt;br /&gt;
&lt;br /&gt;
El problema del calor viene dado por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde u(x, t) representa la temperatura del medio en función del tiempo y de la posición.&lt;br /&gt;
&lt;br /&gt;
Como estamos en un medio infinito, tendremos que mirar como una perturbación térmica puntual se difunde con el tiempo. Para ello usamos la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;G(x,t)=\frac{1}{\sqrt{4\pi t}}e^{-\frac{x^2}{4t}},&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Mensaje secreto en la ecuación del calor=&lt;br /&gt;
&lt;br /&gt;
Imaginamos que escribimos un mensaje secreto en una barra de metal infinita usando calor (interpretando teóricamente dicha barra como una recta, ya que estamos en dimensión 1). Definimos la temperatura en el instante inicial&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; \text{$x$ está en una de las letras}\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
es decir, el mensaje inicial está formado por letras dibujadas en el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; con calor. Con el tiempo, el calor empieza a difundirse según la ecuación &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Su solución viene dada por la convolución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\int_{-\infty}^{\infty} G(x-y,t)u_0(y) dy=\frac{1}{4\sqrt{\pi t}}\int_{-\infty}^{\infty} u_0(y)e^{-\frac{(x-y)^2}{4t}}.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujando la solución para diferentes tiempos, obtenemos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: MesajeCalor.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0,1.60] &amp;lt;/math&amp;gt;, dimensión 1 (1D).]]&lt;br /&gt;
&lt;br /&gt;
Conforme avanza el tiempo, la difusión del calor hace que los bordes de las letras pierdan definición. Al inicio, las regiones calientes se distinguen claramente, pero poco a poco el calor se extiende a las áreas frías, suavizando los contornos. A medida que esta difusión continúa, las letras se vuelven borrosas hasta que el contraste desaparece por completo y el mensaje se vuelve ilegible, ya que la temperatura se ha distribuido de manera uniforme en la barra.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:BarraMetal.png|400px|thumb|right|Difusión del mensaje en la barra de metal]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
&lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
imp = 6;&lt;br /&gt;
T=[0.001,0.01,0.1];&lt;br /&gt;
a = [-3, -1, 2];  % Inicio de los segmentos de calor&lt;br /&gt;
b = [-2,  1, 3];  % Fin de los segmentos de calor&lt;br /&gt;
tf = max(T); &lt;br /&gt;
div = 10^-3; &lt;br /&gt;
&lt;br /&gt;
X = -10:div:10;  &lt;br /&gt;
&lt;br /&gt;
% Función de solución fundamental de la ecuación del calor en 1D&lt;br /&gt;
Phi = @(x,t) (1./((4*pi*t).^(1/2)) .* exp(-abs(x).^2./(4*t))); &lt;br /&gt;
&lt;br /&gt;
U = zeros(length(X), length(T));  % Matriz para almacenar soluciones en diferentes tiempos&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución usando la integral de convolución&lt;br /&gt;
for j = 1:length(X)&lt;br /&gt;
    for i = 1:length(T)&lt;br /&gt;
        integral_sum = 0;&lt;br /&gt;
        for k = 1:length(a) &lt;br /&gt;
            Y = a(k):div:b(k); &lt;br /&gt;
            integral_sum = integral_sum + trapz(Y, Phi(X(j)*ones(1,length(Y)) - Y, T(i)*ones(1,length(Y))));&lt;br /&gt;
        end&lt;br /&gt;
        U(j,i) = 5 * integral_sum; &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Dibujar todas las soluciones en una misma gráfica&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
colors = ['r', 'g', 'b'];&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(T) &lt;br /&gt;
    plot(X, U(:,i), colors(i), 'LineWidth', 1.5, 'DisplayName', &amp;quot;t = &amp;quot; + num2str(T(i)) + &amp;quot; s&amp;quot;) &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
xlim([-10 10])  &lt;br /&gt;
ylim([0 5.5]) &lt;br /&gt;
xlabel('Posición x') &lt;br /&gt;
ylabel('Temperatura U(x,t)') &lt;br /&gt;
title(&amp;quot;Difusión térmica del mensaje en la barra de metal&amp;quot;) &lt;br /&gt;
legend show &lt;br /&gt;
grid on &lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Regularidad y dimensiones=&lt;br /&gt;
Vamos a explorar que ocurre al pasar a dos dimensiones (2D), analizando como la difusión del calor se dispersa más rápido en 2D debido a la propagación en múltiples direcciones.&lt;br /&gt;
&lt;br /&gt;
En 1D, la ecuación del calor viene dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Sabemos que dicha ecuación tiene un efecto regularizador, es decir, aunque la condición inicial tenga discontinuidades, la solución se vuelve suave para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;. Por otro lado, la difusión en 1D ocurre a lo largo de una sola dirección (el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) y la solución se suaviza rápidamente con el tiempo.&lt;br /&gt;
&lt;br /&gt;
Veamos que ocurre en 2D. Ahora, nuestra ecuación es &amp;lt;math&amp;gt;u_t-u_{xx}-u_{yy}=0&amp;lt;/math&amp;gt;. La temperatura inicial se define ahora como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; \text{si $(x,y)$ está dentro de una de las letras}\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Continuemos con la generalización a &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; dimensiones tal que la ecuación del calor vendrá dada por: &amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;, cuya solución fundamental (análoga a la hallada para una dimensión) se distribuye como una gaussiana en varias variables (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;): &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t) = \frac{1}{(4\pi t)^{n/2}} e^{-\frac{|x|^2}{4 t}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El efecto regularizador de la ecuación sigue presente en cualquier dimensión &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Sin embargo, en dimensiones más altas, esta dispersión es más rápida, ya que &amp;lt;math&amp;gt;(4\pi t)^{n/2}&amp;lt;/math&amp;gt; en al solución fundamental crece considerablemente cuando lo hace &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Este crecimiento (en el denominador) implica que la temperatura en un punto dado &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; disminuye más rápido pues hay más direcciones donde se puede difundir el calor.&lt;br /&gt;
&lt;br /&gt;
Con esto nos surge la pregunta de cómo podemos comparar el tiempo de dispersión en 1D, 2D y \(n\)D. Sabemos que la varianza de la solución fundamental en una dimensión es \(\sigma^2 = 2t\), con lo que para el análisis cualitativo de la dispersión se tiene que \(\sigma^2 \sim t\). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo: MensajeCalor_2D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0,1.6] &amp;lt;/math&amp;gt;, dimensión 2 (2D).]]&lt;br /&gt;
&lt;br /&gt;
En 2D, la dispersión es más rápida porque la normalización de la solución implica un decaimiento más rápido \( u \sim t^{-1}\) frente a \( u \sim t^{-1/2} \). En \( n \) dimensiones, el calor decae como \(u(x,t) \sim t^{-n/2}\), lo que reafirma que el calor se disipa más rápido a medida que aumenta la dimensión del espacio.&lt;br /&gt;
&lt;br /&gt;
Si queremos comparar el tiempo característico de disipación \( t_d \) en distintas dimensiones, llegamos a la relación \( t_d(n) \sim \frac{t_d(1)}{n/2} \), que nos dice que el tiempo de disipación en dimensión \( n \) es inversamente proporcional a \( n/2 \).&lt;br /&gt;
&lt;br /&gt;
YA SOLO QUEDARIA UNA COMPARACIÓN ENTRE ESTE VIDEO DE 2 DIMENSIONES Y EL ANTERIOR DE 1, DONDE VEMOS EFECTIVAMENTE LO QUE ESTAMOS DICIENDO DE ACUERDO A LA DISPERSION EN FUNCIÓN DEL AUMENTO DE LAS DIMENSIONES.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
a=-4; b=4;                      % Intervalo de definición de la x ([a,b]^2) &lt;br /&gt;
div=0.05;                       % División del vector en x &lt;br /&gt;
X=a:div:b;                      % Vector de X &lt;br /&gt;
[X1,X2]=meshgrid(X,X);          % Creación de la malla en x &lt;br /&gt;
&lt;br /&gt;
% Definir las condiciones iniciales&lt;br /&gt;
U0 = zeros(size(X1));&lt;br /&gt;
U0((X1 &amp;gt; -3) &amp;amp; (X1 &amp;lt; -2) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5; % Letra 1&lt;br /&gt;
U0((X1 &amp;gt; -1) &amp;amp; (X1 &amp;lt; 1) &amp;amp; (X2 &amp;gt; -2) &amp;amp; (X2 &amp;lt; 2)) = 5;  % Letra 2&lt;br /&gt;
U0((X1 &amp;gt; 2) &amp;amp; (X1 &amp;lt; 3) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5;  % Letra 3&lt;br /&gt;
&lt;br /&gt;
% Solución de la ecuación del calor mediante convolución con la solución fundamental&lt;br /&gt;
norma2=@(x1,x2)sqrt(x1.^2+x2.^2);  % Función norma &lt;br /&gt;
Phi2 = @(x1,x2,t)(1./((4*pi*t)).*exp(-norma2(x1,x2).^2./(4*t))); % Solución fundamental en 2D&lt;br /&gt;
&lt;br /&gt;
% Parámetros de animación&lt;br /&gt;
T_max = 0.7;       % Tiempo máximo de simulación&lt;br /&gt;
num_frames = 100;  % Número de cuadros en la animación&lt;br /&gt;
T_values = linspace(0.001, T_max, num_frames);&lt;br /&gt;
&lt;br /&gt;
% Crear objeto de video&lt;br /&gt;
video_filename = 'heat_equation_2D.mp4';&lt;br /&gt;
vid = VideoWriter(video_filename, 'MPEG-4');&lt;br /&gt;
vid.FrameRate = 20; % FPS del video&lt;br /&gt;
open(vid);&lt;br /&gt;
&lt;br /&gt;
figure;&lt;br /&gt;
for i=1:length(T_values)&lt;br /&gt;
    U = conv2(U0, Phi2(X1,X2,T_values(i)), 'same') * div^2; % Convolución discreta&lt;br /&gt;
    &lt;br /&gt;
    surf(X1,X2,U)&lt;br /&gt;
    shading interp &lt;br /&gt;
    colormap hot &lt;br /&gt;
    xlabel('X') &lt;br /&gt;
    ylabel('Y') &lt;br /&gt;
    zlabel('Temperatura') &lt;br /&gt;
    title(&amp;quot;Evolución en 2D para t=&amp;quot;+num2str(T_values(i),'%.3f')+' s') &lt;br /&gt;
    axis([-4 4 -4 4 0 5]);&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(vid, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(vid);&lt;br /&gt;
&lt;br /&gt;
disp(['Video guardado como: ', video_filename]);&lt;br /&gt;
&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84828</id>
		<title>Ecuación del calor (Grupo MAMBD))</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84828"/>
				<updated>2025-03-18T16:57:23Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Regularidad y dimensiones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
En el siguiente trabajo, se busca explorar el comportamiento de la solución a la ecuación del calor para regiones no acotadas, así como la distribución de dicha solución en según que dimensiones.&lt;br /&gt;
&lt;br /&gt;
El problema del calor viene dado por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde u(x, t) representa la temperatura del medio en función del tiempo y de la posición.&lt;br /&gt;
&lt;br /&gt;
Como estamos en un medio infinito, tendremos que mirar como una perturbación térmica puntual se difunde con el tiempo. Para ello usamos la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;G(x,t)=\frac{1}{\sqrt{4\pi t}}e^{-\frac{x^2}{4t}},&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Mensaje secreto en la ecuación del calor=&lt;br /&gt;
&lt;br /&gt;
Imaginamos que escribimos un mensaje secreto en una barra de metal infinita usando calor (interpretando teóricamente dicha barra como una recta, ya que estamos en dimensión 1). Definimos la temperatura en el instante inicial&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; \text{$x$ está en una de las letras}\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
es decir, el mensaje inicial está formado por letras dibujadas en el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; con calor. Con el tiempo, el calor empieza a difundirse según la ecuación &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Su solución viene dada por la convolución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\int_{-\infty}^{\infty} G(x-y,t)u_0(y) dy=\frac{1}{4\sqrt{\pi t}}\int_{-\infty}^{\infty} u_0(y)e^{-\frac{(x-y)^2}{4t}}.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujando la solución para diferentes tiempos, obtenemos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: MesajeCalor.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0,1.60] &amp;lt;/math&amp;gt;, dimensión 1 (1D).]]&lt;br /&gt;
&lt;br /&gt;
Conforme avanza el tiempo, la difusión del calor hace que los bordes de las letras pierdan definición. Al inicio, las regiones calientes se distinguen claramente, pero poco a poco el calor se extiende a las áreas frías, suavizando los contornos. A medida que esta difusión continúa, las letras se vuelven borrosas hasta que el contraste desaparece por completo y el mensaje se vuelve ilegible, ya que la temperatura se ha distribuido de manera uniforme en la barra.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:BarraMetal.png|400px|thumb|right|Difusión del mensaje en la barra de metal]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
&lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
imp = 6;&lt;br /&gt;
T=[0.001,0.01,0.1];&lt;br /&gt;
a = [-3, -1, 2];  % Inicio de los segmentos de calor&lt;br /&gt;
b = [-2,  1, 3];  % Fin de los segmentos de calor&lt;br /&gt;
tf = max(T); &lt;br /&gt;
div = 10^-3; &lt;br /&gt;
&lt;br /&gt;
X = -10:div:10;  &lt;br /&gt;
&lt;br /&gt;
% Función de solución fundamental de la ecuación del calor en 1D&lt;br /&gt;
Phi = @(x,t) (1./((4*pi*t).^(1/2)) .* exp(-abs(x).^2./(4*t))); &lt;br /&gt;
&lt;br /&gt;
U = zeros(length(X), length(T));  % Matriz para almacenar soluciones en diferentes tiempos&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución usando la integral de convolución&lt;br /&gt;
for j = 1:length(X)&lt;br /&gt;
    for i = 1:length(T)&lt;br /&gt;
        integral_sum = 0;&lt;br /&gt;
        for k = 1:length(a) &lt;br /&gt;
            Y = a(k):div:b(k); &lt;br /&gt;
            integral_sum = integral_sum + trapz(Y, Phi(X(j)*ones(1,length(Y)) - Y, T(i)*ones(1,length(Y))));&lt;br /&gt;
        end&lt;br /&gt;
        U(j,i) = 5 * integral_sum; &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Dibujar todas las soluciones en una misma gráfica&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
colors = ['r', 'g', 'b'];&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(T) &lt;br /&gt;
    plot(X, U(:,i), colors(i), 'LineWidth', 1.5, 'DisplayName', &amp;quot;t = &amp;quot; + num2str(T(i)) + &amp;quot; s&amp;quot;) &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
xlim([-10 10])  &lt;br /&gt;
ylim([0 5.5]) &lt;br /&gt;
xlabel('Posición x') &lt;br /&gt;
ylabel('Temperatura U(x,t)') &lt;br /&gt;
title(&amp;quot;Difusión térmica del mensaje en la barra de metal&amp;quot;) &lt;br /&gt;
legend show &lt;br /&gt;
grid on &lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Regularidad y dimensiones=&lt;br /&gt;
Vamos a explorar que ocurre al pasar a dos dimensiones (2D), analizando como la difusión del calor se dispersa más rápido en 2D debido a la propagación en múltiples direcciones.&lt;br /&gt;
&lt;br /&gt;
En 1D, la ecuación del calor viene dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Sabemos que dicha ecuación tiene un efecto regularizador, es decir, aunque la condición inicial tenga discontinuidades, la solución se vuelve suave para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;. Por otro lado, la difusión en 1D ocurre a lo largo de una sola dirección (el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) y la solución se suaviza rápidamente con el tiempo.&lt;br /&gt;
&lt;br /&gt;
Veamos que ocurre en 2D. Ahora, nuestra ecuación es &amp;lt;math&amp;gt;u_t-u_{xx}-u_{yy}=0&amp;lt;/math&amp;gt;. La temperatura inicial se define ahora como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; \text{si $(x,y)$ está dentro de una de las letras}\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Continuemos con la generalización a &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; dimensiones tal que la ecuación del calor vendrá dada por: &amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;, cuya solución fundamental (análoga a la hallada para una dimensión) se distribuye como una gaussiana en varias variables (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;): &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t) = \frac{1}{(4\pi t)^{n/2}} e^{-\frac{|x|^2}{4 t}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí, el efecto regularizador del que hablábamos sigue presente, pues el término &amp;lt;math&amp;gt;(4\pi t)^{n/2}&amp;lt;/math&amp;gt; muestra como en &amp;lt;math&amp;gt;u(x ,t)&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;x \in \mathbb{R}^n&amp;lt;/math&amp;gt;, este efecto se vuelve más pronunciado en dimensiones superiores porque el denominador crece más rápido. Con esto nos surge la pregunta de cómo podemos comparar el tiempo de dispersión en 1D, 2D y \(n\)D. Sabemos que la varianza de la solución fundamental en una dimensión es \(\sigma^2 = 2t\), con lo que para el análisis cualitativo de la dispersión se tiene que \(\sigma^2 \sim t\). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo: MensajeCalor_2D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0,1.6] &amp;lt;/math&amp;gt;, dimensión 2 (2D).]]&lt;br /&gt;
&lt;br /&gt;
En 2D, la dispersión es más rápida porque la normalización de la solución implica un decaimiento más rápido \( u \sim t^{-1}\) frente a \( u \sim t^{-1/2} \). En \( n \) dimensiones, el calor decae como \(u(x,t) \sim t^{-n/2}\), lo que reafirma que el calor se disipa más rápido a medida que aumenta la dimensión del espacio.&lt;br /&gt;
&lt;br /&gt;
Si queremos comparar el tiempo característico de disipación \( t_d \) en distintas dimensiones, llegamos a la relación \( t_d(n) \sim \frac{t_d(1)}{n/2} \), que nos dice que el tiempo de disipación en dimensión \( n \) es inversamente proporcional a \( n/2 \).&lt;br /&gt;
&lt;br /&gt;
YA SOLO QUEDARIA UNA COMPARACIÓN ENTRE ESTE VIDEO DE 2 DIMENSIONES Y EL ANTERIOR DE 1, DONDE VEMOS EFECTIVAMENTE LO QUE ESTAMOS DICIENDO DE ACUERDO A LA DISPERSION EN FUNCIÓN DEL AUMENTO DE LAS DIMENSIONES.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
a=-4; b=4;                      % Intervalo de definición de la x ([a,b]^2) &lt;br /&gt;
div=0.05;                       % División del vector en x &lt;br /&gt;
X=a:div:b;                      % Vector de X &lt;br /&gt;
[X1,X2]=meshgrid(X,X);          % Creación de la malla en x &lt;br /&gt;
&lt;br /&gt;
% Definir las condiciones iniciales&lt;br /&gt;
U0 = zeros(size(X1));&lt;br /&gt;
U0((X1 &amp;gt; -3) &amp;amp; (X1 &amp;lt; -2) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5; % Letra 1&lt;br /&gt;
U0((X1 &amp;gt; -1) &amp;amp; (X1 &amp;lt; 1) &amp;amp; (X2 &amp;gt; -2) &amp;amp; (X2 &amp;lt; 2)) = 5;  % Letra 2&lt;br /&gt;
U0((X1 &amp;gt; 2) &amp;amp; (X1 &amp;lt; 3) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5;  % Letra 3&lt;br /&gt;
&lt;br /&gt;
% Solución de la ecuación del calor mediante convolución con la solución fundamental&lt;br /&gt;
norma2=@(x1,x2)sqrt(x1.^2+x2.^2);  % Función norma &lt;br /&gt;
Phi2 = @(x1,x2,t)(1./((4*pi*t)).*exp(-norma2(x1,x2).^2./(4*t))); % Solución fundamental en 2D&lt;br /&gt;
&lt;br /&gt;
% Parámetros de animación&lt;br /&gt;
T_max = 0.7;       % Tiempo máximo de simulación&lt;br /&gt;
num_frames = 100;  % Número de cuadros en la animación&lt;br /&gt;
T_values = linspace(0.001, T_max, num_frames);&lt;br /&gt;
&lt;br /&gt;
% Crear objeto de video&lt;br /&gt;
video_filename = 'heat_equation_2D.mp4';&lt;br /&gt;
vid = VideoWriter(video_filename, 'MPEG-4');&lt;br /&gt;
vid.FrameRate = 20; % FPS del video&lt;br /&gt;
open(vid);&lt;br /&gt;
&lt;br /&gt;
figure;&lt;br /&gt;
for i=1:length(T_values)&lt;br /&gt;
    U = conv2(U0, Phi2(X1,X2,T_values(i)), 'same') * div^2; % Convolución discreta&lt;br /&gt;
    &lt;br /&gt;
    surf(X1,X2,U)&lt;br /&gt;
    shading interp &lt;br /&gt;
    colormap hot &lt;br /&gt;
    xlabel('X') &lt;br /&gt;
    ylabel('Y') &lt;br /&gt;
    zlabel('Temperatura') &lt;br /&gt;
    title(&amp;quot;Evolución en 2D para t=&amp;quot;+num2str(T_values(i),'%.3f')+' s') &lt;br /&gt;
    axis([-4 4 -4 4 0 5]);&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(vid, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(vid);&lt;br /&gt;
&lt;br /&gt;
disp(['Video guardado como: ', video_filename]);&lt;br /&gt;
&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84827</id>
		<title>Ecuación del calor (Grupo MAMBD))</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84827"/>
				<updated>2025-03-18T16:56:59Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Regularidad y dimensiones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
En el siguiente trabajo, se busca explorar el comportamiento de la solución a la ecuación del calor para regiones no acotadas, así como la distribución de dicha solución en según que dimensiones.&lt;br /&gt;
&lt;br /&gt;
El problema del calor viene dado por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde u(x, t) representa la temperatura del medio en función del tiempo y de la posición.&lt;br /&gt;
&lt;br /&gt;
Como estamos en un medio infinito, tendremos que mirar como una perturbación térmica puntual se difunde con el tiempo. Para ello usamos la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;G(x,t)=\frac{1}{\sqrt{4\pi t}}e^{-\frac{x^2}{4t}},&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Mensaje secreto en la ecuación del calor=&lt;br /&gt;
&lt;br /&gt;
Imaginamos que escribimos un mensaje secreto en una barra de metal infinita usando calor (interpretando teóricamente dicha barra como una recta, ya que estamos en dimensión 1). Definimos la temperatura en el instante inicial&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; \text{$x$ está en una de las letras}\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
es decir, el mensaje inicial está formado por letras dibujadas en el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; con calor. Con el tiempo, el calor empieza a difundirse según la ecuación &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Su solución viene dada por la convolución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\int_{-\infty}^{\infty} G(x-y,t)u_0(y) dy=\frac{1}{4\sqrt{\pi t}}\int_{-\infty}^{\infty} u_0(y)e^{-\frac{(x-y)^2}{4t}}.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujando la solución para diferentes tiempos, obtenemos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: MesajeCalor.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0,1.60] &amp;lt;/math&amp;gt;, dimensión 1 (1D).]]&lt;br /&gt;
&lt;br /&gt;
Conforme avanza el tiempo, la difusión del calor hace que los bordes de las letras pierdan definición. Al inicio, las regiones calientes se distinguen claramente, pero poco a poco el calor se extiende a las áreas frías, suavizando los contornos. A medida que esta difusión continúa, las letras se vuelven borrosas hasta que el contraste desaparece por completo y el mensaje se vuelve ilegible, ya que la temperatura se ha distribuido de manera uniforme en la barra.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:BarraMetal.png|400px|thumb|right|Difusión del mensaje en la barra de metal]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
&lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
imp = 6;&lt;br /&gt;
T=[0.001,0.01,0.1];&lt;br /&gt;
a = [-3, -1, 2];  % Inicio de los segmentos de calor&lt;br /&gt;
b = [-2,  1, 3];  % Fin de los segmentos de calor&lt;br /&gt;
tf = max(T); &lt;br /&gt;
div = 10^-3; &lt;br /&gt;
&lt;br /&gt;
X = -10:div:10;  &lt;br /&gt;
&lt;br /&gt;
% Función de solución fundamental de la ecuación del calor en 1D&lt;br /&gt;
Phi = @(x,t) (1./((4*pi*t).^(1/2)) .* exp(-abs(x).^2./(4*t))); &lt;br /&gt;
&lt;br /&gt;
U = zeros(length(X), length(T));  % Matriz para almacenar soluciones en diferentes tiempos&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución usando la integral de convolución&lt;br /&gt;
for j = 1:length(X)&lt;br /&gt;
    for i = 1:length(T)&lt;br /&gt;
        integral_sum = 0;&lt;br /&gt;
        for k = 1:length(a) &lt;br /&gt;
            Y = a(k):div:b(k); &lt;br /&gt;
            integral_sum = integral_sum + trapz(Y, Phi(X(j)*ones(1,length(Y)) - Y, T(i)*ones(1,length(Y))));&lt;br /&gt;
        end&lt;br /&gt;
        U(j,i) = 5 * integral_sum; &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Dibujar todas las soluciones en una misma gráfica&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
colors = ['r', 'g', 'b'];&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(T) &lt;br /&gt;
    plot(X, U(:,i), colors(i), 'LineWidth', 1.5, 'DisplayName', &amp;quot;t = &amp;quot; + num2str(T(i)) + &amp;quot; s&amp;quot;) &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
xlim([-10 10])  &lt;br /&gt;
ylim([0 5.5]) &lt;br /&gt;
xlabel('Posición x') &lt;br /&gt;
ylabel('Temperatura U(x,t)') &lt;br /&gt;
title(&amp;quot;Difusión térmica del mensaje en la barra de metal&amp;quot;) &lt;br /&gt;
legend show &lt;br /&gt;
grid on &lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Regularidad y dimensiones=&lt;br /&gt;
Vamos a explorar que ocurre al pasar a dos dimensiones (2D), analizando como la difusión del calor se dispersa más rápido en 2D debido a la propagación en múltiples direcciones.&lt;br /&gt;
&lt;br /&gt;
En 1D, la ecuación del calor viene dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Sabemos que dicha ecuación tiene un efecto regularizador, es decir, aunque la condición inicial tenga discontinuidades, la solución se vuelve suave para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;. Por otro lado, la difusión en 1D ocurre a lo largo de una sola dirección (el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) y la solución se suaviza rápidamente con el tiempo.&lt;br /&gt;
&lt;br /&gt;
Veamos que ocurre en 2D. Ahora, nuestra ecuación es &amp;lt;math&amp;gt;u_t-u_{xx}-u_{yy}=0&amp;lt;/math&amp;gt;. La temperatura inicial se define ahora como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; \text{si $(x,y)$ está dentro de una de las letras}\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Continuemos con la generalización a &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; dimensiones tal que la ecuación del calor vendrá dada por: &amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;, cuya solución fundamental (análoga a la hallada para una dimensión) se distribuye como una gaussiana en varias variables (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;): &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t) = \frac{1}{(4\pi t)^{n/2}} e^{-\frac{|x|^2}{4 t}}&amp;lt;/math&amp;gt;&amp;lt;center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí, el efecto regularizador del que hablábamos sigue presente, pues el término &amp;lt;math&amp;gt;(4\pi t)^{n/2}&amp;lt;/math&amp;gt; muestra como en &amp;lt;math&amp;gt;u(x ,t)&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;x \in \mathbb{R}^n&amp;lt;/math&amp;gt;, este efecto se vuelve más pronunciado en dimensiones superiores porque el denominador crece más rápido. Con esto nos surge la pregunta de cómo podemos comparar el tiempo de dispersión en 1D, 2D y \(n\)D. Sabemos que la varianza de la solución fundamental en una dimensión es \(\sigma^2 = 2t\), con lo que para el análisis cualitativo de la dispersión se tiene que \(\sigma^2 \sim t\). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo: MensajeCalor_2D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0,1.6] &amp;lt;/math&amp;gt;, dimensión 2 (2D).]]&lt;br /&gt;
&lt;br /&gt;
En 2D, la dispersión es más rápida porque la normalización de la solución implica un decaimiento más rápido \( u \sim t^{-1}\) frente a \( u \sim t^{-1/2} \). En \( n \) dimensiones, el calor decae como \(u(x,t) \sim t^{-n/2}\), lo que reafirma que el calor se disipa más rápido a medida que aumenta la dimensión del espacio.&lt;br /&gt;
&lt;br /&gt;
Si queremos comparar el tiempo característico de disipación \( t_d \) en distintas dimensiones, llegamos a la relación \( t_d(n) \sim \frac{t_d(1)}{n/2} \), que nos dice que el tiempo de disipación en dimensión \( n \) es inversamente proporcional a \( n/2 \).&lt;br /&gt;
&lt;br /&gt;
YA SOLO QUEDARIA UNA COMPARACIÓN ENTRE ESTE VIDEO DE 2 DIMENSIONES Y EL ANTERIOR DE 1, DONDE VEMOS EFECTIVAMENTE LO QUE ESTAMOS DICIENDO DE ACUERDO A LA DISPERSION EN FUNCIÓN DEL AUMENTO DE LAS DIMENSIONES.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
a=-4; b=4;                      % Intervalo de definición de la x ([a,b]^2) &lt;br /&gt;
div=0.05;                       % División del vector en x &lt;br /&gt;
X=a:div:b;                      % Vector de X &lt;br /&gt;
[X1,X2]=meshgrid(X,X);          % Creación de la malla en x &lt;br /&gt;
&lt;br /&gt;
% Definir las condiciones iniciales&lt;br /&gt;
U0 = zeros(size(X1));&lt;br /&gt;
U0((X1 &amp;gt; -3) &amp;amp; (X1 &amp;lt; -2) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5; % Letra 1&lt;br /&gt;
U0((X1 &amp;gt; -1) &amp;amp; (X1 &amp;lt; 1) &amp;amp; (X2 &amp;gt; -2) &amp;amp; (X2 &amp;lt; 2)) = 5;  % Letra 2&lt;br /&gt;
U0((X1 &amp;gt; 2) &amp;amp; (X1 &amp;lt; 3) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5;  % Letra 3&lt;br /&gt;
&lt;br /&gt;
% Solución de la ecuación del calor mediante convolución con la solución fundamental&lt;br /&gt;
norma2=@(x1,x2)sqrt(x1.^2+x2.^2);  % Función norma &lt;br /&gt;
Phi2 = @(x1,x2,t)(1./((4*pi*t)).*exp(-norma2(x1,x2).^2./(4*t))); % Solución fundamental en 2D&lt;br /&gt;
&lt;br /&gt;
% Parámetros de animación&lt;br /&gt;
T_max = 0.7;       % Tiempo máximo de simulación&lt;br /&gt;
num_frames = 100;  % Número de cuadros en la animación&lt;br /&gt;
T_values = linspace(0.001, T_max, num_frames);&lt;br /&gt;
&lt;br /&gt;
% Crear objeto de video&lt;br /&gt;
video_filename = 'heat_equation_2D.mp4';&lt;br /&gt;
vid = VideoWriter(video_filename, 'MPEG-4');&lt;br /&gt;
vid.FrameRate = 20; % FPS del video&lt;br /&gt;
open(vid);&lt;br /&gt;
&lt;br /&gt;
figure;&lt;br /&gt;
for i=1:length(T_values)&lt;br /&gt;
    U = conv2(U0, Phi2(X1,X2,T_values(i)), 'same') * div^2; % Convolución discreta&lt;br /&gt;
    &lt;br /&gt;
    surf(X1,X2,U)&lt;br /&gt;
    shading interp &lt;br /&gt;
    colormap hot &lt;br /&gt;
    xlabel('X') &lt;br /&gt;
    ylabel('Y') &lt;br /&gt;
    zlabel('Temperatura') &lt;br /&gt;
    title(&amp;quot;Evolución en 2D para t=&amp;quot;+num2str(T_values(i),'%.3f')+' s') &lt;br /&gt;
    axis([-4 4 -4 4 0 5]);&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(vid, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(vid);&lt;br /&gt;
&lt;br /&gt;
disp(['Video guardado como: ', video_filename]);&lt;br /&gt;
&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84826</id>
		<title>Ecuación del calor (Grupo MAMBD))</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84826"/>
				<updated>2025-03-18T16:56:20Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Regularidad y dimensiones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
En el siguiente trabajo, se busca explorar el comportamiento de la solución a la ecuación del calor para regiones no acotadas, así como la distribución de dicha solución en según que dimensiones.&lt;br /&gt;
&lt;br /&gt;
El problema del calor viene dado por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde u(x, t) representa la temperatura del medio en función del tiempo y de la posición.&lt;br /&gt;
&lt;br /&gt;
Como estamos en un medio infinito, tendremos que mirar como una perturbación térmica puntual se difunde con el tiempo. Para ello usamos la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;G(x,t)=\frac{1}{\sqrt{4\pi t}}e^{-\frac{x^2}{4t}},&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Mensaje secreto en la ecuación del calor=&lt;br /&gt;
&lt;br /&gt;
Imaginamos que escribimos un mensaje secreto en una barra de metal infinita usando calor (interpretando teóricamente dicha barra como una recta, ya que estamos en dimensión 1). Definimos la temperatura en el instante inicial&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; \text{$x$ está en una de las letras}\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
es decir, el mensaje inicial está formado por letras dibujadas en el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; con calor. Con el tiempo, el calor empieza a difundirse según la ecuación &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Su solución viene dada por la convolución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\int_{-\infty}^{\infty} G(x-y,t)u_0(y) dy=\frac{1}{4\sqrt{\pi t}}\int_{-\infty}^{\infty} u_0(y)e^{-\frac{(x-y)^2}{4t}}.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujando la solución para diferentes tiempos, obtenemos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: MesajeCalor.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0,1.60] &amp;lt;/math&amp;gt;, dimensión 1 (1D).]]&lt;br /&gt;
&lt;br /&gt;
Conforme avanza el tiempo, la difusión del calor hace que los bordes de las letras pierdan definición. Al inicio, las regiones calientes se distinguen claramente, pero poco a poco el calor se extiende a las áreas frías, suavizando los contornos. A medida que esta difusión continúa, las letras se vuelven borrosas hasta que el contraste desaparece por completo y el mensaje se vuelve ilegible, ya que la temperatura se ha distribuido de manera uniforme en la barra.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:BarraMetal.png|400px|thumb|right|Difusión del mensaje en la barra de metal]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
&lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
imp = 6;&lt;br /&gt;
T=[0.001,0.01,0.1];&lt;br /&gt;
a = [-3, -1, 2];  % Inicio de los segmentos de calor&lt;br /&gt;
b = [-2,  1, 3];  % Fin de los segmentos de calor&lt;br /&gt;
tf = max(T); &lt;br /&gt;
div = 10^-3; &lt;br /&gt;
&lt;br /&gt;
X = -10:div:10;  &lt;br /&gt;
&lt;br /&gt;
% Función de solución fundamental de la ecuación del calor en 1D&lt;br /&gt;
Phi = @(x,t) (1./((4*pi*t).^(1/2)) .* exp(-abs(x).^2./(4*t))); &lt;br /&gt;
&lt;br /&gt;
U = zeros(length(X), length(T));  % Matriz para almacenar soluciones en diferentes tiempos&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución usando la integral de convolución&lt;br /&gt;
for j = 1:length(X)&lt;br /&gt;
    for i = 1:length(T)&lt;br /&gt;
        integral_sum = 0;&lt;br /&gt;
        for k = 1:length(a) &lt;br /&gt;
            Y = a(k):div:b(k); &lt;br /&gt;
            integral_sum = integral_sum + trapz(Y, Phi(X(j)*ones(1,length(Y)) - Y, T(i)*ones(1,length(Y))));&lt;br /&gt;
        end&lt;br /&gt;
        U(j,i) = 5 * integral_sum; &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Dibujar todas las soluciones en una misma gráfica&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
colors = ['r', 'g', 'b'];&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(T) &lt;br /&gt;
    plot(X, U(:,i), colors(i), 'LineWidth', 1.5, 'DisplayName', &amp;quot;t = &amp;quot; + num2str(T(i)) + &amp;quot; s&amp;quot;) &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
xlim([-10 10])  &lt;br /&gt;
ylim([0 5.5]) &lt;br /&gt;
xlabel('Posición x') &lt;br /&gt;
ylabel('Temperatura U(x,t)') &lt;br /&gt;
title(&amp;quot;Difusión térmica del mensaje en la barra de metal&amp;quot;) &lt;br /&gt;
legend show &lt;br /&gt;
grid on &lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Regularidad y dimensiones=&lt;br /&gt;
Vamos a explorar que ocurre al pasar a dos dimensiones (2D), analizando como la difusión del calor se dispersa más rápido en 2D debido a la propagación en múltiples direcciones.&lt;br /&gt;
&lt;br /&gt;
En 1D, la ecuación del calor viene dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Sabemos que dicha ecuación tiene un efecto regularizador, es decir, aunque la condición inicial tenga discontinuidades, la solución se vuelve suave para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;. Por otro lado, la difusión en 1D ocurre a lo largo de una sola dirección (el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) y la solución se suaviza rápidamente con el tiempo.&lt;br /&gt;
&lt;br /&gt;
Veamos que ocurre en 2D. Ahora, nuestra ecuación es &amp;lt;math&amp;gt;u_t-u_{xx}-u_{yy}=0&amp;lt;/math&amp;gt;. La temperatura inicial se define ahora como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; \text{si $(x,y)$ está dentro de una de las letras}\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Continuemos con la generalización a &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; dimensiones tal que la ecuación del calor vendrá dada por: &amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;, cuya solución fundamental (análoga a la hallada para una dimensión) se distribuye como una gaussiana en varias variables (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;): &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t) = \frac{1}{(4\pi t)^{n/2}} e^{-\frac{|x|^2}{4 t}}&amp;lt;/math&amp;gt;&amp;lt;center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí, el efecto regularizador del que hablábamos sigue presente, pues el término &amp;lt;math&amp;gt;(4\pi t)^{n/2}&amp;lt;/math&amp;gt; muestra como en &amp;lt;math&amp;gt;u(x ,t)&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;x \in \mathbb{R}^n&amp;lt;/math&amp;gt;, este efecto se vuelve más pronunciado en dimensiones superiores porque el denominador crece más rápido. Con esto nos surge la pregunta de cómo podemos comparar el tiempo de dispersión en 1D, 2D y \(n\)D. Sabemos que la varianza de la solución fundamental en una dimensión es \(\sigma^2 = 2t\), con lo que para el análisis cualitativo de la dispersión se tiene que \(\sigma^2 \sim t\). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo: MensajeCalor_2D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0,1.6] &amp;lt;/math&amp;gt;, dimensión 2 (2D).]]&lt;br /&gt;
&lt;br /&gt;
En 2D, la dispersión es más rápida porque la normalización de la solución implica un decaimiento más rápido \( u \sim t^{-1}\) frente a \( u \sim t^{-1/2} \). En \( n \) dimensiones, el calor decae como \(u(x,t) \sim t^{-n/2}\), lo que reafirma que el calor se disipa más rápido a medida que aumenta la dimensión del espacio.&lt;br /&gt;
&lt;br /&gt;
Si queremos comparar el tiempo característico de disipación \( t_d \) en distintas dimensiones, llegamos a la relación \( t_d(n) \sim \frac{t_d(1)}{n/2} \), que nos dice que el tiempo de disipación en dimensión \( n \) es inversamente proporcional a \( n/2 \).&lt;br /&gt;
&lt;br /&gt;
YA SOLO QUEDARIA UNA COMPARACIÓN ENTRE ESTE VIDEO DE 2 DIMENSIONES Y EL ANTERIOR DE 1, DONDE VEMOS EFECTIVAMENTE LO QUE ESTAMOS DICIENDO DE ACUERDO A LA DISPERSION EN FUNCIÓN DEL AUMENTO DE LAS DIMENSIONES.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
a=-4; b=4;                      % Intervalo de definición de la x ([a,b]^2) &lt;br /&gt;
div=0.05;                       % División del vector en x &lt;br /&gt;
X=a:div:b;                      % Vector de X &lt;br /&gt;
[X1,X2]=meshgrid(X,X);          % Creación de la malla en x &lt;br /&gt;
&lt;br /&gt;
% Definir las condiciones iniciales&lt;br /&gt;
U0 = zeros(size(X1));&lt;br /&gt;
U0((X1 &amp;gt; -3) &amp;amp; (X1 &amp;lt; -2) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5; % Letra 1&lt;br /&gt;
U0((X1 &amp;gt; -1) &amp;amp; (X1 &amp;lt; 1) &amp;amp; (X2 &amp;gt; -2) &amp;amp; (X2 &amp;lt; 2)) = 5;  % Letra 2&lt;br /&gt;
U0((X1 &amp;gt; 2) &amp;amp; (X1 &amp;lt; 3) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5;  % Letra 3&lt;br /&gt;
&lt;br /&gt;
% Solución de la ecuación del calor mediante convolución con la solución fundamental&lt;br /&gt;
norma2=@(x1,x2)sqrt(x1.^2+x2.^2);  % Función norma &lt;br /&gt;
Phi2 = @(x1,x2,t)(1./((4*pi*t)).*exp(-norma2(x1,x2).^2./(4*t))); % Solución fundamental en 2D&lt;br /&gt;
&lt;br /&gt;
% Parámetros de animación&lt;br /&gt;
T_max = 0.7;       % Tiempo máximo de simulación&lt;br /&gt;
num_frames = 100;  % Número de cuadros en la animación&lt;br /&gt;
T_values = linspace(0.001, T_max, num_frames);&lt;br /&gt;
&lt;br /&gt;
% Crear objeto de video&lt;br /&gt;
video_filename = 'heat_equation_2D.mp4';&lt;br /&gt;
vid = VideoWriter(video_filename, 'MPEG-4');&lt;br /&gt;
vid.FrameRate = 20; % FPS del video&lt;br /&gt;
open(vid);&lt;br /&gt;
&lt;br /&gt;
figure;&lt;br /&gt;
for i=1:length(T_values)&lt;br /&gt;
    U = conv2(U0, Phi2(X1,X2,T_values(i)), 'same') * div^2; % Convolución discreta&lt;br /&gt;
    &lt;br /&gt;
    surf(X1,X2,U)&lt;br /&gt;
    shading interp &lt;br /&gt;
    colormap hot &lt;br /&gt;
    xlabel('X') &lt;br /&gt;
    ylabel('Y') &lt;br /&gt;
    zlabel('Temperatura') &lt;br /&gt;
    title(&amp;quot;Evolución en 2D para t=&amp;quot;+num2str(T_values(i),'%.3f')+' s') &lt;br /&gt;
    axis([-4 4 -4 4 0 5]);&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(vid, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(vid);&lt;br /&gt;
&lt;br /&gt;
disp(['Video guardado como: ', video_filename]);&lt;br /&gt;
&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84825</id>
		<title>Ecuación del calor (Grupo MAMBD))</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84825"/>
				<updated>2025-03-18T16:52:16Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Introducción */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
En el siguiente trabajo, se busca explorar el comportamiento de la solución a la ecuación del calor para regiones no acotadas, así como la distribución de dicha solución en según que dimensiones.&lt;br /&gt;
&lt;br /&gt;
El problema del calor viene dado por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde u(x, t) representa la temperatura del medio en función del tiempo y de la posición.&lt;br /&gt;
&lt;br /&gt;
Como estamos en un medio infinito, tendremos que mirar como una perturbación térmica puntual se difunde con el tiempo. Para ello usamos la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;G(x,t)=\frac{1}{\sqrt{4\pi t}}e^{-\frac{x^2}{4t}},&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Mensaje secreto en la ecuación del calor=&lt;br /&gt;
&lt;br /&gt;
Imaginamos que escribimos un mensaje secreto en una barra de metal infinita usando calor (interpretando teóricamente dicha barra como una recta, ya que estamos en dimensión 1). Definimos la temperatura en el instante inicial&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; \text{$x$ está en una de las letras}\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
es decir, el mensaje inicial está formado por letras dibujadas en el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; con calor. Con el tiempo, el calor empieza a difundirse según la ecuación &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Su solución viene dada por la convolución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\int_{-\infty}^{\infty} G(x-y,t)u_0(y) dy=\frac{1}{4\sqrt{\pi t}}\int_{-\infty}^{\infty} u_0(y)e^{-\frac{(x-y)^2}{4t}}.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujando la solución para diferentes tiempos, obtenemos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: MesajeCalor.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0,1.60] &amp;lt;/math&amp;gt;, dimensión 1 (1D).]]&lt;br /&gt;
&lt;br /&gt;
Conforme avanza el tiempo, la difusión del calor hace que los bordes de las letras pierdan definición. Al inicio, las regiones calientes se distinguen claramente, pero poco a poco el calor se extiende a las áreas frías, suavizando los contornos. A medida que esta difusión continúa, las letras se vuelven borrosas hasta que el contraste desaparece por completo y el mensaje se vuelve ilegible, ya que la temperatura se ha distribuido de manera uniforme en la barra.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:BarraMetal.png|400px|thumb|right|Difusión del mensaje en la barra de metal]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
&lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
imp = 6;&lt;br /&gt;
T=[0.001,0.01,0.1];&lt;br /&gt;
a = [-3, -1, 2];  % Inicio de los segmentos de calor&lt;br /&gt;
b = [-2,  1, 3];  % Fin de los segmentos de calor&lt;br /&gt;
tf = max(T); &lt;br /&gt;
div = 10^-3; &lt;br /&gt;
&lt;br /&gt;
X = -10:div:10;  &lt;br /&gt;
&lt;br /&gt;
% Función de solución fundamental de la ecuación del calor en 1D&lt;br /&gt;
Phi = @(x,t) (1./((4*pi*t).^(1/2)) .* exp(-abs(x).^2./(4*t))); &lt;br /&gt;
&lt;br /&gt;
U = zeros(length(X), length(T));  % Matriz para almacenar soluciones en diferentes tiempos&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución usando la integral de convolución&lt;br /&gt;
for j = 1:length(X)&lt;br /&gt;
    for i = 1:length(T)&lt;br /&gt;
        integral_sum = 0;&lt;br /&gt;
        for k = 1:length(a) &lt;br /&gt;
            Y = a(k):div:b(k); &lt;br /&gt;
            integral_sum = integral_sum + trapz(Y, Phi(X(j)*ones(1,length(Y)) - Y, T(i)*ones(1,length(Y))));&lt;br /&gt;
        end&lt;br /&gt;
        U(j,i) = 5 * integral_sum; &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Dibujar todas las soluciones en una misma gráfica&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
colors = ['r', 'g', 'b'];&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(T) &lt;br /&gt;
    plot(X, U(:,i), colors(i), 'LineWidth', 1.5, 'DisplayName', &amp;quot;t = &amp;quot; + num2str(T(i)) + &amp;quot; s&amp;quot;) &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
xlim([-10 10])  &lt;br /&gt;
ylim([0 5.5]) &lt;br /&gt;
xlabel('Posición x') &lt;br /&gt;
ylabel('Temperatura U(x,t)') &lt;br /&gt;
title(&amp;quot;Difusión térmica del mensaje en la barra de metal&amp;quot;) &lt;br /&gt;
legend show &lt;br /&gt;
grid on &lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Regularidad y dimensiones=&lt;br /&gt;
Vamos a explorar que ocurre al pasar a dos dimensiones (2D), analizando como la difusión del calor se dispersa más rápido en 2D debido a la propagación en múltiples direcciones.&lt;br /&gt;
&lt;br /&gt;
En 1D, la ecuación del calor viene dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Sabemos que dicha ecuación tiene un efecto regularizador, es decir, aunque la condición inicial tenga discontinuidades, la solución se vuelve suave para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;. Por otro lado, la difusión en 1D ocurre a lo largo de una sola dirección (el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) y la solución se suaviza rápidamente con el tiempo.&lt;br /&gt;
&lt;br /&gt;
Veamos que ocurre en 2D. Ahora, nuestra ecuación es &amp;lt;math&amp;gt;u_t-u_{xx}-u_{yy}=0&amp;lt;/math&amp;gt;. La temperatura inicial se define ahora como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; \text{si $(x,y)$ está dentro de una de las letras}\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Continuemos con la generalización a &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; dimensiones tal que la ecuación del calor vendrá dada por: &amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;, cuya solución fundamental (análoga a la hallada para una dimensión) se distribuye como una gaussiana en varias variables (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;): &amp;lt;math&amp;gt;u(x,t) = \frac{1}{(4\pi t)^{n/2}} e^{-\frac{|x|^2}{4 t}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí, el efecto regularizador del que hablábamos sigue presente, pues el término &amp;lt;math&amp;gt;(4\pi t)^{n/2}&amp;lt;/math&amp;gt; muestra como en &amp;lt;math&amp;gt;u(x ,t)&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;x \in \mathbb{R}^n&amp;lt;/math&amp;gt;, este efecto se vuelve más pronunciado en dimensiones superiores porque el denominador crece más rápido. Con esto nos surge la pregunta de cómo podemos comparar el tiempo de dispersión en 1D, 2D y \(n\)D. Sabemos que la varianza de la solución fundamental en una dimensión es \(\sigma^2 = 2t\), con lo que para el análisis cualitativo de la dispersión se tiene que \(\sigma^2 \sim t\). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo: MensajeCalor_2D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0,1.6] &amp;lt;/math&amp;gt;, dimensión 2 (2D).]]&lt;br /&gt;
&lt;br /&gt;
En 2D, la dispersión es más rápida porque la normalización de la solución implica un decaimiento más rápido \( u \sim t^{-1}\) frente a \( u \sim t^{-1/2} \). En \( n \) dimensiones, el calor decae como \(u(x,t) \sim t^{-n/2}\), lo que reafirma que el calor se disipa más rápido a medida que aumenta la dimensión del espacio.&lt;br /&gt;
&lt;br /&gt;
Si queremos comparar el tiempo característico de disipación \( t_d \) en distintas dimensiones, llegamos a la relación \( t_d(n) \sim \frac{t_d(1)}{n/2} \), que nos dice que el tiempo de disipación en dimensión \( n \) es inversamente proporcional a \( n/2 \).&lt;br /&gt;
&lt;br /&gt;
YA SOLO QUEDARIA UNA COMPARACIÓN ENTRE ESTE VIDEO DE 2 DIMENSIONES Y EL ANTERIOR DE 1, DONDE VEMOS EFECTIVAMENTE LO QUE ESTAMOS DICIENDO DE ACUERDO A LA DISPERSION EN FUNCIÓN DEL AUMENTO DE LAS DIMENSIONES.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
a=-4; b=4;                      % Intervalo de definición de la x ([a,b]^2) &lt;br /&gt;
div=0.05;                       % División del vector en x &lt;br /&gt;
X=a:div:b;                      % Vector de X &lt;br /&gt;
[X1,X2]=meshgrid(X,X);          % Creación de la malla en x &lt;br /&gt;
&lt;br /&gt;
% Definir las condiciones iniciales&lt;br /&gt;
U0 = zeros(size(X1));&lt;br /&gt;
U0((X1 &amp;gt; -3) &amp;amp; (X1 &amp;lt; -2) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5; % Letra 1&lt;br /&gt;
U0((X1 &amp;gt; -1) &amp;amp; (X1 &amp;lt; 1) &amp;amp; (X2 &amp;gt; -2) &amp;amp; (X2 &amp;lt; 2)) = 5;  % Letra 2&lt;br /&gt;
U0((X1 &amp;gt; 2) &amp;amp; (X1 &amp;lt; 3) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5;  % Letra 3&lt;br /&gt;
&lt;br /&gt;
% Solución de la ecuación del calor mediante convolución con la solución fundamental&lt;br /&gt;
norma2=@(x1,x2)sqrt(x1.^2+x2.^2);  % Función norma &lt;br /&gt;
Phi2 = @(x1,x2,t)(1./((4*pi*t)).*exp(-norma2(x1,x2).^2./(4*t))); % Solución fundamental en 2D&lt;br /&gt;
&lt;br /&gt;
% Parámetros de animación&lt;br /&gt;
T_max = 0.7;       % Tiempo máximo de simulación&lt;br /&gt;
num_frames = 100;  % Número de cuadros en la animación&lt;br /&gt;
T_values = linspace(0.001, T_max, num_frames);&lt;br /&gt;
&lt;br /&gt;
% Crear objeto de video&lt;br /&gt;
video_filename = 'heat_equation_2D.mp4';&lt;br /&gt;
vid = VideoWriter(video_filename, 'MPEG-4');&lt;br /&gt;
vid.FrameRate = 20; % FPS del video&lt;br /&gt;
open(vid);&lt;br /&gt;
&lt;br /&gt;
figure;&lt;br /&gt;
for i=1:length(T_values)&lt;br /&gt;
    U = conv2(U0, Phi2(X1,X2,T_values(i)), 'same') * div^2; % Convolución discreta&lt;br /&gt;
    &lt;br /&gt;
    surf(X1,X2,U)&lt;br /&gt;
    shading interp &lt;br /&gt;
    colormap hot &lt;br /&gt;
    xlabel('X') &lt;br /&gt;
    ylabel('Y') &lt;br /&gt;
    zlabel('Temperatura') &lt;br /&gt;
    title(&amp;quot;Evolución en 2D para t=&amp;quot;+num2str(T_values(i),'%.3f')+' s') &lt;br /&gt;
    axis([-4 4 -4 4 0 5]);&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(vid, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(vid);&lt;br /&gt;
&lt;br /&gt;
disp(['Video guardado como: ', video_filename]);&lt;br /&gt;
&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84824</id>
		<title>Ecuación del calor (Grupo MAMBD))</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84824"/>
				<updated>2025-03-18T16:51:18Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Introducción */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
En el siguiente trabajo, se busca explorar el comportamiento de la solución a la ecuación del calor para regiones no acotadas, así como la distribución de dicha solución en según que dimensiones.&lt;br /&gt;
&lt;br /&gt;
El problema del calor viene dado por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde u(x, t) representa la temperatura del medio en función del tiempo y de la posición.&lt;br /&gt;
&lt;br /&gt;
Como estamos en un medio infinito, tendremos que mirar como una perturbación térmica puntual se difunde con el tiempo. Para ello usamos la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;G(x,t)=\frac{1}{2\sqrt{\pi t}}e^{-\frac{x^2}{4t}},&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Mensaje secreto en la ecuación del calor=&lt;br /&gt;
&lt;br /&gt;
Imaginamos que escribimos un mensaje secreto en una barra de metal infinita usando calor (interpretando teóricamente dicha barra como una recta, ya que estamos en dimensión 1). Definimos la temperatura en el instante inicial&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; \text{$x$ está en una de las letras}\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
es decir, el mensaje inicial está formado por letras dibujadas en el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; con calor. Con el tiempo, el calor empieza a difundirse según la ecuación &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Su solución viene dada por la convolución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\int_{-\infty}^{\infty} G(x-y,t)u_0(y) dy=\frac{1}{4\sqrt{\pi t}}\int_{-\infty}^{\infty} u_0(y)e^{-\frac{(x-y)^2}{4t}}.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujando la solución para diferentes tiempos, obtenemos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: MesajeCalor.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0,1.60] &amp;lt;/math&amp;gt;, dimensión 1 (1D).]]&lt;br /&gt;
&lt;br /&gt;
Conforme avanza el tiempo, la difusión del calor hace que los bordes de las letras pierdan definición. Al inicio, las regiones calientes se distinguen claramente, pero poco a poco el calor se extiende a las áreas frías, suavizando los contornos. A medida que esta difusión continúa, las letras se vuelven borrosas hasta que el contraste desaparece por completo y el mensaje se vuelve ilegible, ya que la temperatura se ha distribuido de manera uniforme en la barra.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:BarraMetal.png|400px|thumb|right|Difusión del mensaje en la barra de metal]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
&lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
imp = 6;&lt;br /&gt;
T=[0.001,0.01,0.1];&lt;br /&gt;
a = [-3, -1, 2];  % Inicio de los segmentos de calor&lt;br /&gt;
b = [-2,  1, 3];  % Fin de los segmentos de calor&lt;br /&gt;
tf = max(T); &lt;br /&gt;
div = 10^-3; &lt;br /&gt;
&lt;br /&gt;
X = -10:div:10;  &lt;br /&gt;
&lt;br /&gt;
% Función de solución fundamental de la ecuación del calor en 1D&lt;br /&gt;
Phi = @(x,t) (1./((4*pi*t).^(1/2)) .* exp(-abs(x).^2./(4*t))); &lt;br /&gt;
&lt;br /&gt;
U = zeros(length(X), length(T));  % Matriz para almacenar soluciones en diferentes tiempos&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución usando la integral de convolución&lt;br /&gt;
for j = 1:length(X)&lt;br /&gt;
    for i = 1:length(T)&lt;br /&gt;
        integral_sum = 0;&lt;br /&gt;
        for k = 1:length(a) &lt;br /&gt;
            Y = a(k):div:b(k); &lt;br /&gt;
            integral_sum = integral_sum + trapz(Y, Phi(X(j)*ones(1,length(Y)) - Y, T(i)*ones(1,length(Y))));&lt;br /&gt;
        end&lt;br /&gt;
        U(j,i) = 5 * integral_sum; &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Dibujar todas las soluciones en una misma gráfica&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
colors = ['r', 'g', 'b'];&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(T) &lt;br /&gt;
    plot(X, U(:,i), colors(i), 'LineWidth', 1.5, 'DisplayName', &amp;quot;t = &amp;quot; + num2str(T(i)) + &amp;quot; s&amp;quot;) &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
xlim([-10 10])  &lt;br /&gt;
ylim([0 5.5]) &lt;br /&gt;
xlabel('Posición x') &lt;br /&gt;
ylabel('Temperatura U(x,t)') &lt;br /&gt;
title(&amp;quot;Difusión térmica del mensaje en la barra de metal&amp;quot;) &lt;br /&gt;
legend show &lt;br /&gt;
grid on &lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Regularidad y dimensiones=&lt;br /&gt;
Vamos a explorar que ocurre al pasar a dos dimensiones (2D), analizando como la difusión del calor se dispersa más rápido en 2D debido a la propagación en múltiples direcciones.&lt;br /&gt;
&lt;br /&gt;
En 1D, la ecuación del calor viene dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Sabemos que dicha ecuación tiene un efecto regularizador, es decir, aunque la condición inicial tenga discontinuidades, la solución se vuelve suave para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;. Por otro lado, la difusión en 1D ocurre a lo largo de una sola dirección (el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) y la solución se suaviza rápidamente con el tiempo.&lt;br /&gt;
&lt;br /&gt;
Veamos que ocurre en 2D. Ahora, nuestra ecuación es &amp;lt;math&amp;gt;u_t-u_{xx}-u_{yy}=0&amp;lt;/math&amp;gt;. La temperatura inicial se define ahora como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; \text{si $(x,y)$ está dentro de una de las letras}\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Continuemos con la generalización a &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; dimensiones tal que la ecuación del calor vendrá dada por: &amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;, cuya solución fundamental (análoga a la hallada para una dimensión) se distribuye como una gaussiana en varias variables (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;): &amp;lt;math&amp;gt;u(x,t) = \frac{1}{(4\pi t)^{n/2}} e^{-\frac{|x|^2}{4 t}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí, el efecto regularizador del que hablábamos sigue presente, pues el término &amp;lt;math&amp;gt;(4\pi t)^{n/2}&amp;lt;/math&amp;gt; muestra como en &amp;lt;math&amp;gt;u(x ,t)&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;x \in \mathbb{R}^n&amp;lt;/math&amp;gt;, este efecto se vuelve más pronunciado en dimensiones superiores porque el denominador crece más rápido. Con esto nos surge la pregunta de cómo podemos comparar el tiempo de dispersión en 1D, 2D y \(n\)D. Sabemos que la varianza de la solución fundamental en una dimensión es \(\sigma^2 = 2t\), con lo que para el análisis cualitativo de la dispersión se tiene que \(\sigma^2 \sim t\). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo: MensajeCalor_2D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0,1.6] &amp;lt;/math&amp;gt;, dimensión 2 (2D).]]&lt;br /&gt;
&lt;br /&gt;
En 2D, la dispersión es más rápida porque la normalización de la solución implica un decaimiento más rápido \( u \sim t^{-1}\) frente a \( u \sim t^{-1/2} \). En \( n \) dimensiones, el calor decae como \(u(x,t) \sim t^{-n/2}\), lo que reafirma que el calor se disipa más rápido a medida que aumenta la dimensión del espacio.&lt;br /&gt;
&lt;br /&gt;
Si queremos comparar el tiempo característico de disipación \( t_d \) en distintas dimensiones, llegamos a la relación \( t_d(n) \sim \frac{t_d(1)}{n/2} \), que nos dice que el tiempo de disipación en dimensión \( n \) es inversamente proporcional a \( n/2 \).&lt;br /&gt;
&lt;br /&gt;
YA SOLO QUEDARIA UNA COMPARACIÓN ENTRE ESTE VIDEO DE 2 DIMENSIONES Y EL ANTERIOR DE 1, DONDE VEMOS EFECTIVAMENTE LO QUE ESTAMOS DICIENDO DE ACUERDO A LA DISPERSION EN FUNCIÓN DEL AUMENTO DE LAS DIMENSIONES.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
a=-4; b=4;                      % Intervalo de definición de la x ([a,b]^2) &lt;br /&gt;
div=0.05;                       % División del vector en x &lt;br /&gt;
X=a:div:b;                      % Vector de X &lt;br /&gt;
[X1,X2]=meshgrid(X,X);          % Creación de la malla en x &lt;br /&gt;
&lt;br /&gt;
% Definir las condiciones iniciales&lt;br /&gt;
U0 = zeros(size(X1));&lt;br /&gt;
U0((X1 &amp;gt; -3) &amp;amp; (X1 &amp;lt; -2) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5; % Letra 1&lt;br /&gt;
U0((X1 &amp;gt; -1) &amp;amp; (X1 &amp;lt; 1) &amp;amp; (X2 &amp;gt; -2) &amp;amp; (X2 &amp;lt; 2)) = 5;  % Letra 2&lt;br /&gt;
U0((X1 &amp;gt; 2) &amp;amp; (X1 &amp;lt; 3) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5;  % Letra 3&lt;br /&gt;
&lt;br /&gt;
% Solución de la ecuación del calor mediante convolución con la solución fundamental&lt;br /&gt;
norma2=@(x1,x2)sqrt(x1.^2+x2.^2);  % Función norma &lt;br /&gt;
Phi2 = @(x1,x2,t)(1./((4*pi*t)).*exp(-norma2(x1,x2).^2./(4*t))); % Solución fundamental en 2D&lt;br /&gt;
&lt;br /&gt;
% Parámetros de animación&lt;br /&gt;
T_max = 0.7;       % Tiempo máximo de simulación&lt;br /&gt;
num_frames = 100;  % Número de cuadros en la animación&lt;br /&gt;
T_values = linspace(0.001, T_max, num_frames);&lt;br /&gt;
&lt;br /&gt;
% Crear objeto de video&lt;br /&gt;
video_filename = 'heat_equation_2D.mp4';&lt;br /&gt;
vid = VideoWriter(video_filename, 'MPEG-4');&lt;br /&gt;
vid.FrameRate = 20; % FPS del video&lt;br /&gt;
open(vid);&lt;br /&gt;
&lt;br /&gt;
figure;&lt;br /&gt;
for i=1:length(T_values)&lt;br /&gt;
    U = conv2(U0, Phi2(X1,X2,T_values(i)), 'same') * div^2; % Convolución discreta&lt;br /&gt;
    &lt;br /&gt;
    surf(X1,X2,U)&lt;br /&gt;
    shading interp &lt;br /&gt;
    colormap hot &lt;br /&gt;
    xlabel('X') &lt;br /&gt;
    ylabel('Y') &lt;br /&gt;
    zlabel('Temperatura') &lt;br /&gt;
    title(&amp;quot;Evolución en 2D para t=&amp;quot;+num2str(T_values(i),'%.3f')+' s') &lt;br /&gt;
    axis([-4 4 -4 4 0 5]);&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(vid, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(vid);&lt;br /&gt;
&lt;br /&gt;
disp(['Video guardado como: ', video_filename]);&lt;br /&gt;
&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84823</id>
		<title>Ecuación del calor (Grupo MAMBD))</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84823"/>
				<updated>2025-03-18T16:50:14Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Introducción */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
En el siguiente trabajo, se busca explorar el comportamiento de la solución a la ecuación del calor para regiones no acotadas, así como la distribución de dicha solución en según que dimensiones.&lt;br /&gt;
&lt;br /&gt;
El problema del calor viene dado por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t-u_{xx}=0.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde u(x, t) representa la temperatura del medio en función del tiempo y de la posición.&lt;br /&gt;
&lt;br /&gt;
Como estamos en un medio infinito, tendremos que mirar como una perturbación térmica puntual se difunde con el tiempo. Para ello usamos la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;G(x,t)=\frac{1}{2\sqrt{\pi t}}e^{-\frac{x^2}{4t}},&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Mensaje secreto en la ecuación del calor=&lt;br /&gt;
&lt;br /&gt;
Imaginamos que escribimos un mensaje secreto en una barra de metal infinita usando calor (interpretando teóricamente dicha barra como una recta, ya que estamos en dimensión 1). Definimos la temperatura en el instante inicial&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; \text{$x$ está en una de las letras}\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
es decir, el mensaje inicial está formado por letras dibujadas en el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; con calor. Con el tiempo, el calor empieza a difundirse según la ecuación &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Su solución viene dada por la convolución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\int_{-\infty}^{\infty} G(x-y,t)u_0(y) dy=\frac{1}{4\sqrt{\pi t}}\int_{-\infty}^{\infty} u_0(y)e^{-\frac{(x-y)^2}{4t}}.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujando la solución para diferentes tiempos, obtenemos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: MesajeCalor.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0,1.60] &amp;lt;/math&amp;gt;, dimensión 1 (1D).]]&lt;br /&gt;
&lt;br /&gt;
Conforme avanza el tiempo, la difusión del calor hace que los bordes de las letras pierdan definición. Al inicio, las regiones calientes se distinguen claramente, pero poco a poco el calor se extiende a las áreas frías, suavizando los contornos. A medida que esta difusión continúa, las letras se vuelven borrosas hasta que el contraste desaparece por completo y el mensaje se vuelve ilegible, ya que la temperatura se ha distribuido de manera uniforme en la barra.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:BarraMetal.png|400px|thumb|right|Difusión del mensaje en la barra de metal]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
&lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
imp = 6;&lt;br /&gt;
T=[0.001,0.01,0.1];&lt;br /&gt;
a = [-3, -1, 2];  % Inicio de los segmentos de calor&lt;br /&gt;
b = [-2,  1, 3];  % Fin de los segmentos de calor&lt;br /&gt;
tf = max(T); &lt;br /&gt;
div = 10^-3; &lt;br /&gt;
&lt;br /&gt;
X = -10:div:10;  &lt;br /&gt;
&lt;br /&gt;
% Función de solución fundamental de la ecuación del calor en 1D&lt;br /&gt;
Phi = @(x,t) (1./((4*pi*t).^(1/2)) .* exp(-abs(x).^2./(4*t))); &lt;br /&gt;
&lt;br /&gt;
U = zeros(length(X), length(T));  % Matriz para almacenar soluciones en diferentes tiempos&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución usando la integral de convolución&lt;br /&gt;
for j = 1:length(X)&lt;br /&gt;
    for i = 1:length(T)&lt;br /&gt;
        integral_sum = 0;&lt;br /&gt;
        for k = 1:length(a) &lt;br /&gt;
            Y = a(k):div:b(k); &lt;br /&gt;
            integral_sum = integral_sum + trapz(Y, Phi(X(j)*ones(1,length(Y)) - Y, T(i)*ones(1,length(Y))));&lt;br /&gt;
        end&lt;br /&gt;
        U(j,i) = 5 * integral_sum; &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Dibujar todas las soluciones en una misma gráfica&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
colors = ['r', 'g', 'b'];&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(T) &lt;br /&gt;
    plot(X, U(:,i), colors(i), 'LineWidth', 1.5, 'DisplayName', &amp;quot;t = &amp;quot; + num2str(T(i)) + &amp;quot; s&amp;quot;) &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
xlim([-10 10])  &lt;br /&gt;
ylim([0 5.5]) &lt;br /&gt;
xlabel('Posición x') &lt;br /&gt;
ylabel('Temperatura U(x,t)') &lt;br /&gt;
title(&amp;quot;Difusión térmica del mensaje en la barra de metal&amp;quot;) &lt;br /&gt;
legend show &lt;br /&gt;
grid on &lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Regularidad y dimensiones=&lt;br /&gt;
Vamos a explorar que ocurre al pasar a dos dimensiones (2D), analizando como la difusión del calor se dispersa más rápido en 2D debido a la propagación en múltiples direcciones.&lt;br /&gt;
&lt;br /&gt;
En 1D, la ecuación del calor viene dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Sabemos que dicha ecuación tiene un efecto regularizador, es decir, aunque la condición inicial tenga discontinuidades, la solución se vuelve suave para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;. Por otro lado, la difusión en 1D ocurre a lo largo de una sola dirección (el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) y la solución se suaviza rápidamente con el tiempo.&lt;br /&gt;
&lt;br /&gt;
Veamos que ocurre en 2D. Ahora, nuestra ecuación es &amp;lt;math&amp;gt;u_t-u_{xx}-u_{yy}=0&amp;lt;/math&amp;gt;. La temperatura inicial se define ahora como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; \text{si $(x,y)$ está dentro de una de las letras}\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Continuemos con la generalización a &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; dimensiones tal que la ecuación del calor vendrá dada por: &amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;, cuya solución fundamental (análoga a la hallada para una dimensión) se distribuye como una gaussiana en varias variables (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;): &amp;lt;math&amp;gt;u(x,t) = \frac{1}{(4\pi t)^{n/2}} e^{-\frac{|x|^2}{4 t}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí, el efecto regularizador del que hablábamos sigue presente, pues el término &amp;lt;math&amp;gt;(4\pi t)^{n/2}&amp;lt;/math&amp;gt; muestra como en &amp;lt;math&amp;gt;u(x ,t)&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;x \in \mathbb{R}^n&amp;lt;/math&amp;gt;, este efecto se vuelve más pronunciado en dimensiones superiores porque el denominador crece más rápido. Con esto nos surge la pregunta de cómo podemos comparar el tiempo de dispersión en 1D, 2D y \(n\)D. Sabemos que la varianza de la solución fundamental en una dimensión es \(\sigma^2 = 2t\), con lo que para el análisis cualitativo de la dispersión se tiene que \(\sigma^2 \sim t\). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo: MensajeCalor_2D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0,1.6] &amp;lt;/math&amp;gt;, dimensión 2 (2D).]]&lt;br /&gt;
&lt;br /&gt;
En 2D, la dispersión es más rápida porque la normalización de la solución implica un decaimiento más rápido \( u \sim t^{-1}\) frente a \( u \sim t^{-1/2} \). En \( n \) dimensiones, el calor decae como \(u(x,t) \sim t^{-n/2}\), lo que reafirma que el calor se disipa más rápido a medida que aumenta la dimensión del espacio.&lt;br /&gt;
&lt;br /&gt;
Si queremos comparar el tiempo característico de disipación \( t_d \) en distintas dimensiones, llegamos a la relación \( t_d(n) \sim \frac{t_d(1)}{n/2} \), que nos dice que el tiempo de disipación en dimensión \( n \) es inversamente proporcional a \( n/2 \).&lt;br /&gt;
&lt;br /&gt;
YA SOLO QUEDARIA UNA COMPARACIÓN ENTRE ESTE VIDEO DE 2 DIMENSIONES Y EL ANTERIOR DE 1, DONDE VEMOS EFECTIVAMENTE LO QUE ESTAMOS DICIENDO DE ACUERDO A LA DISPERSION EN FUNCIÓN DEL AUMENTO DE LAS DIMENSIONES.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
a=-4; b=4;                      % Intervalo de definición de la x ([a,b]^2) &lt;br /&gt;
div=0.05;                       % División del vector en x &lt;br /&gt;
X=a:div:b;                      % Vector de X &lt;br /&gt;
[X1,X2]=meshgrid(X,X);          % Creación de la malla en x &lt;br /&gt;
&lt;br /&gt;
% Definir las condiciones iniciales&lt;br /&gt;
U0 = zeros(size(X1));&lt;br /&gt;
U0((X1 &amp;gt; -3) &amp;amp; (X1 &amp;lt; -2) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5; % Letra 1&lt;br /&gt;
U0((X1 &amp;gt; -1) &amp;amp; (X1 &amp;lt; 1) &amp;amp; (X2 &amp;gt; -2) &amp;amp; (X2 &amp;lt; 2)) = 5;  % Letra 2&lt;br /&gt;
U0((X1 &amp;gt; 2) &amp;amp; (X1 &amp;lt; 3) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5;  % Letra 3&lt;br /&gt;
&lt;br /&gt;
% Solución de la ecuación del calor mediante convolución con la solución fundamental&lt;br /&gt;
norma2=@(x1,x2)sqrt(x1.^2+x2.^2);  % Función norma &lt;br /&gt;
Phi2 = @(x1,x2,t)(1./((4*pi*t)).*exp(-norma2(x1,x2).^2./(4*t))); % Solución fundamental en 2D&lt;br /&gt;
&lt;br /&gt;
% Parámetros de animación&lt;br /&gt;
T_max = 0.7;       % Tiempo máximo de simulación&lt;br /&gt;
num_frames = 100;  % Número de cuadros en la animación&lt;br /&gt;
T_values = linspace(0.001, T_max, num_frames);&lt;br /&gt;
&lt;br /&gt;
% Crear objeto de video&lt;br /&gt;
video_filename = 'heat_equation_2D.mp4';&lt;br /&gt;
vid = VideoWriter(video_filename, 'MPEG-4');&lt;br /&gt;
vid.FrameRate = 20; % FPS del video&lt;br /&gt;
open(vid);&lt;br /&gt;
&lt;br /&gt;
figure;&lt;br /&gt;
for i=1:length(T_values)&lt;br /&gt;
    U = conv2(U0, Phi2(X1,X2,T_values(i)), 'same') * div^2; % Convolución discreta&lt;br /&gt;
    &lt;br /&gt;
    surf(X1,X2,U)&lt;br /&gt;
    shading interp &lt;br /&gt;
    colormap hot &lt;br /&gt;
    xlabel('X') &lt;br /&gt;
    ylabel('Y') &lt;br /&gt;
    zlabel('Temperatura') &lt;br /&gt;
    title(&amp;quot;Evolución en 2D para t=&amp;quot;+num2str(T_values(i),'%.3f')+' s') &lt;br /&gt;
    axis([-4 4 -4 4 0 5]);&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(vid, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(vid);&lt;br /&gt;
&lt;br /&gt;
disp(['Video guardado como: ', video_filename]);&lt;br /&gt;
&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84822</id>
		<title>Ecuación del calor (Grupo MAMBD))</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84822"/>
				<updated>2025-03-18T16:49:18Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Regularidad y dimensiones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
La ecuación del calor es un modelo matemático que describe la difusión térmica en un medio. En una dimensión, se expresa como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t-u_{xx}=0.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt; representa la temperatura en función del tiempo y la posición. &lt;br /&gt;
&lt;br /&gt;
Resolveremos un problema específico utilizando la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;G(x,t)=\frac{1}{2\sqrt{\pi t}}e^{-\frac{x^2}{4t}},&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
permitiéndonos analizar la propagación del calor en una región no acotada e interpretar los resultados.&lt;br /&gt;
&lt;br /&gt;
=Mensaje secreto en la ecuación del calor=&lt;br /&gt;
&lt;br /&gt;
Imaginamos que escribimos un mensaje secreto en una barra de metal infinita usando calor (interpretando teóricamente dicha barra como una recta, ya que estamos en dimensión 1). Definimos la temperatura en el instante inicial&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; \text{$x$ está en una de las letras}\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
es decir, el mensaje inicial está formado por letras dibujadas en el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; con calor. Con el tiempo, el calor empieza a difundirse según la ecuación &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Su solución viene dada por la convolución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\int_{-\infty}^{\infty} G(x-y,t)u_0(y) dy=\frac{1}{4\sqrt{\pi t}}\int_{-\infty}^{\infty} u_0(y)e^{-\frac{(x-y)^2}{4t}}.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujando la solución para diferentes tiempos, obtenemos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: MesajeCalor.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0,1.60] &amp;lt;/math&amp;gt;, dimensión 1 (1D).]]&lt;br /&gt;
&lt;br /&gt;
Conforme avanza el tiempo, la difusión del calor hace que los bordes de las letras pierdan definición. Al inicio, las regiones calientes se distinguen claramente, pero poco a poco el calor se extiende a las áreas frías, suavizando los contornos. A medida que esta difusión continúa, las letras se vuelven borrosas hasta que el contraste desaparece por completo y el mensaje se vuelve ilegible, ya que la temperatura se ha distribuido de manera uniforme en la barra.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:BarraMetal.png|400px|thumb|right|Difusión del mensaje en la barra de metal]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=   &lt;br /&gt;
&lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
imp = 6;&lt;br /&gt;
T=[0.001,0.01,0.1];&lt;br /&gt;
a = [-3, -1, 2];  % Inicio de los segmentos de calor&lt;br /&gt;
b = [-2,  1, 3];  % Fin de los segmentos de calor&lt;br /&gt;
tf = max(T); &lt;br /&gt;
div = 10^-3; &lt;br /&gt;
&lt;br /&gt;
X = -10:div:10;  &lt;br /&gt;
&lt;br /&gt;
% Función de solución fundamental de la ecuación del calor en 1D&lt;br /&gt;
Phi = @(x,t) (1./((4*pi*t).^(1/2)) .* exp(-abs(x).^2./(4*t))); &lt;br /&gt;
&lt;br /&gt;
U = zeros(length(X), length(T));  % Matriz para almacenar soluciones en diferentes tiempos&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución usando la integral de convolución&lt;br /&gt;
for j = 1:length(X)&lt;br /&gt;
    for i = 1:length(T)&lt;br /&gt;
        integral_sum = 0;&lt;br /&gt;
        for k = 1:length(a) &lt;br /&gt;
            Y = a(k):div:b(k); &lt;br /&gt;
            integral_sum = integral_sum + trapz(Y, Phi(X(j)*ones(1,length(Y)) - Y, T(i)*ones(1,length(Y))));&lt;br /&gt;
        end&lt;br /&gt;
        U(j,i) = 5 * integral_sum; &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Dibujar todas las soluciones en una misma gráfica&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
colors = ['r', 'g', 'b'];&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(T) &lt;br /&gt;
    plot(X, U(:,i), colors(i), 'LineWidth', 1.5, 'DisplayName', &amp;quot;t = &amp;quot; + num2str(T(i)) + &amp;quot; s&amp;quot;) &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
xlim([-10 10])  &lt;br /&gt;
ylim([0 5.5]) &lt;br /&gt;
xlabel('Posición x') &lt;br /&gt;
ylabel('Temperatura U(x,t)') &lt;br /&gt;
title(&amp;quot;Difusión térmica del mensaje en la barra de metal&amp;quot;) &lt;br /&gt;
legend show &lt;br /&gt;
grid on &lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Regularidad y dimensiones=&lt;br /&gt;
Vamos a explorar que ocurre al pasar a dos dimensiones (2D), analizando como la difusión del calor se dispersa más rápido en 2D debido a la propagación en múltiples direcciones.&lt;br /&gt;
&lt;br /&gt;
En 1D, la ecuación del calor viene dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Sabemos que dicha ecuación tiene un efecto regularizador, es decir, aunque la condición inicial tenga discontinuidades, la solución se vuelve suave para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;. Por otro lado, la difusión en 1D ocurre a lo largo de una sola dirección (el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) y la solución se suaviza rápidamente con el tiempo.&lt;br /&gt;
&lt;br /&gt;
Veamos que ocurre en 2D. Ahora, nuestra ecuación es &amp;lt;math&amp;gt;u_t-u_{xx}-u_{yy}=0&amp;lt;/math&amp;gt;. La temperatura inicial se define ahora como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; \text{si $(x,y)$ está dentro de una de las letras}\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Continuemos con la generalización a &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; dimensiones tal que la ecuación del calor vendrá dada por: &amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;, cuya solución fundamental (análoga a la hallada para una dimensión) se distribuye como una gaussiana en varias variables (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;): &amp;lt;math&amp;gt;u(x,t) = \frac{1}{(4\pi t)^{n/2}} e^{-\frac{|x|^2}{4 t}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí, el efecto regularizador del que hablábamos sigue presente, pues el término &amp;lt;math&amp;gt;(4\pi t)^{n/2}&amp;lt;/math&amp;gt; muestra como en &amp;lt;math&amp;gt;u(x ,t)&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;x \in \mathbb{R}^n&amp;lt;/math&amp;gt;, este efecto se vuelve más pronunciado en dimensiones superiores porque el denominador crece más rápido. Con esto nos surge la pregunta de cómo podemos comparar el tiempo de dispersión en 1D, 2D y \(n\)D. Sabemos que la varianza de la solución fundamental en una dimensión es \(\sigma^2 = 2t\), con lo que para el análisis cualitativo de la dispersión se tiene que \(\sigma^2 \sim t\). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo: MensajeCalor_2D.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0,1.6] &amp;lt;/math&amp;gt;, dimensión 2 (2D).]]&lt;br /&gt;
&lt;br /&gt;
En 2D, la dispersión es más rápida porque la normalización de la solución implica un decaimiento más rápido \( u \sim t^{-1}\) frente a \( u \sim t^{-1/2} \). En \( n \) dimensiones, el calor decae como \(u(x,t) \sim t^{-n/2}\), lo que reafirma que el calor se disipa más rápido a medida que aumenta la dimensión del espacio.&lt;br /&gt;
&lt;br /&gt;
Si queremos comparar el tiempo característico de disipación \( t_d \) en distintas dimensiones, llegamos a la relación \( t_d(n) \sim \frac{t_d(1)}{n/2} \), que nos dice que el tiempo de disipación en dimensión \( n \) es inversamente proporcional a \( n/2 \).&lt;br /&gt;
&lt;br /&gt;
YA SOLO QUEDARIA UNA COMPARACIÓN ENTRE ESTE VIDEO DE 2 DIMENSIONES Y EL ANTERIOR DE 1, DONDE VEMOS EFECTIVAMENTE LO QUE ESTAMOS DICIENDO DE ACUERDO A LA DISPERSION EN FUNCIÓN DEL AUMENTO DE LAS DIMENSIONES.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clc &lt;br /&gt;
clear all &lt;br /&gt;
close all &lt;br /&gt;
&lt;br /&gt;
a=-4; b=4;                      % Intervalo de definición de la x ([a,b]^2) &lt;br /&gt;
div=0.05;                       % División del vector en x &lt;br /&gt;
X=a:div:b;                      % Vector de X &lt;br /&gt;
[X1,X2]=meshgrid(X,X);          % Creación de la malla en x &lt;br /&gt;
&lt;br /&gt;
% Definir las condiciones iniciales&lt;br /&gt;
U0 = zeros(size(X1));&lt;br /&gt;
U0((X1 &amp;gt; -3) &amp;amp; (X1 &amp;lt; -2) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5; % Letra 1&lt;br /&gt;
U0((X1 &amp;gt; -1) &amp;amp; (X1 &amp;lt; 1) &amp;amp; (X2 &amp;gt; -2) &amp;amp; (X2 &amp;lt; 2)) = 5;  % Letra 2&lt;br /&gt;
U0((X1 &amp;gt; 2) &amp;amp; (X1 &amp;lt; 3) &amp;amp; (X2 &amp;gt; -1) &amp;amp; (X2 &amp;lt; 1)) = 5;  % Letra 3&lt;br /&gt;
&lt;br /&gt;
% Solución de la ecuación del calor mediante convolución con la solución fundamental&lt;br /&gt;
norma2=@(x1,x2)sqrt(x1.^2+x2.^2);  % Función norma &lt;br /&gt;
Phi2 = @(x1,x2,t)(1./((4*pi*t)).*exp(-norma2(x1,x2).^2./(4*t))); % Solución fundamental en 2D&lt;br /&gt;
&lt;br /&gt;
% Parámetros de animación&lt;br /&gt;
T_max = 0.7;       % Tiempo máximo de simulación&lt;br /&gt;
num_frames = 100;  % Número de cuadros en la animación&lt;br /&gt;
T_values = linspace(0.001, T_max, num_frames);&lt;br /&gt;
&lt;br /&gt;
% Crear objeto de video&lt;br /&gt;
video_filename = 'heat_equation_2D.mp4';&lt;br /&gt;
vid = VideoWriter(video_filename, 'MPEG-4');&lt;br /&gt;
vid.FrameRate = 20; % FPS del video&lt;br /&gt;
open(vid);&lt;br /&gt;
&lt;br /&gt;
figure;&lt;br /&gt;
for i=1:length(T_values)&lt;br /&gt;
    U = conv2(U0, Phi2(X1,X2,T_values(i)), 'same') * div^2; % Convolución discreta&lt;br /&gt;
    &lt;br /&gt;
    surf(X1,X2,U)&lt;br /&gt;
    shading interp &lt;br /&gt;
    colormap hot &lt;br /&gt;
    xlabel('X') &lt;br /&gt;
    ylabel('Y') &lt;br /&gt;
    zlabel('Temperatura') &lt;br /&gt;
    title(&amp;quot;Evolución en 2D para t=&amp;quot;+num2str(T_values(i),'%.3f')+' s') &lt;br /&gt;
    axis([-4 4 -4 4 0 5]);&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(vid, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(vid);&lt;br /&gt;
&lt;br /&gt;
disp(['Video guardado como: ', video_filename]);&lt;br /&gt;
&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84667</id>
		<title>Ecuación del calor (Grupo MAMBD))</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84667"/>
				<updated>2025-03-16T23:09:41Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Regularidad y dimensiones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
La ecuación del calor es un modelo matemático que describe la difusión térmica en un medio. En una dimensión, se expresa como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t-u_{xx}=0.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt; representa la temperatura en función del tiempo y la posición. &lt;br /&gt;
&lt;br /&gt;
Resolveremos un problema específico utilizando la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;G(x,t)=\frac{1}{2\sqrt{\pi t}}e^{-\frac{x^2}{4t}},&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
permitiéndonos analizar la propagación del calor en una región no acotada e interpretar los resultados.&lt;br /&gt;
&lt;br /&gt;
=Mensaje secreto en la ecuación del calor=&lt;br /&gt;
&lt;br /&gt;
Imaginamos que escribimos un mensaje secreto en una barra de metal infinita usando calor (interpretando teóricamente dicha barra como una recta, ya que estamos en dimensión 1). Definimos la temperatura en el instante inicial&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; \text{$x$ está en una de las letras}\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
es decir, el mensaje inicial está formado por letras dibujadas en el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; con calor. Con el tiempo, el calor empieza a difundirse según la ecuación &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Su solución viene dada por la convolución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\int_{-\infty}^{\infty} G(x-y,t)u_0(y) dy=\frac{1}{4\sqrt{\pi t}}\int_{-\infty}^{\infty} u_0(y)e^{-\frac{(x-y)^2}{4t}}.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujando la solución para diferentes tiempos, obtenemos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: MesajeCalor.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0,1.60] &amp;lt;/math&amp;gt;, dimensión 1 (1D).]]&lt;br /&gt;
&lt;br /&gt;
Conforme avanza el tiempo, la difusión del calor hace que los bordes de las letras pierdan definición. Al inicio, las regiones calientes se distinguen claramente, pero poco a poco el calor se extiende a las áreas frías, suavizando los contornos. A medida que esta difusión continúa, las letras se vuelven borrosas hasta que el contraste desaparece por completo y el mensaje se vuelve ilegible, ya que la temperatura se ha distribuido de manera uniforme en la barra.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:BarraMetalEC.png|400px|thumb|right|Difusión del mensaje en la barra de metal]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
# Parámetros&lt;br /&gt;
L = 10.0  # Longitud de la barra&lt;br /&gt;
T = 0.1   # Tiempo final&lt;br /&gt;
nx = 100  # Número de puntos en el espacio&lt;br /&gt;
nt = 1000 # Número de puntos en el tiempo&lt;br /&gt;
alpha = 1 # Coeficiente de difusión térmica&lt;br /&gt;
&lt;br /&gt;
dx = L / (nx - 1)&lt;br /&gt;
dt = T / (nt - 1)&lt;br /&gt;
r = alpha * dt / dx**2&lt;br /&gt;
&lt;br /&gt;
# Inicialización&lt;br /&gt;
x = np.linspace(0, L, nx)&lt;br /&gt;
u = np.zeros(nx)&lt;br /&gt;
&lt;br /&gt;
# Condición inicial&lt;br /&gt;
def initial_condition(x):&lt;br /&gt;
    # Definir las regiones de las letras&lt;br /&gt;
    if 2 &amp;lt; x &amp;lt; 3 or 4 &amp;lt; x &amp;lt; 5:&lt;br /&gt;
        return 5&lt;br /&gt;
    else:&lt;br /&gt;
        return 0&lt;br /&gt;
&lt;br /&gt;
u = np.array([initial_condition(xi) for xi in x])&lt;br /&gt;
&lt;br /&gt;
# Evolución temporal&lt;br /&gt;
for t in range(nt):&lt;br /&gt;
    un = u.copy()&lt;br /&gt;
    for i in range(1, nx-1):&lt;br /&gt;
        u[i] = un[i] + r * (un[i+1] - 2*un[i] + un[i-1])&lt;br /&gt;
&lt;br /&gt;
    # Visualización en tiempos específicos&lt;br /&gt;
    if t in [int(0.001/dt), int(0.01/dt), int(0.1/dt)]:&lt;br /&gt;
        plt.plot(x, u, label=f't={t*dt:.3f}')&lt;br /&gt;
&lt;br /&gt;
plt.xlabel('Posición x')&lt;br /&gt;
plt.ylabel('Temperatura u(x,t)')&lt;br /&gt;
plt.title('Difusión térmica del mensaje')&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Regularidad y dimensiones=&lt;br /&gt;
Vamos a explorar que ocurre al pasar a dos dimensiones (2D), analizando como la difusión del calor se dispersa más rápido en 2D debido a la propagación en múltiples direcciones.&lt;br /&gt;
&lt;br /&gt;
En 1D, la ecuación del calor viene dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Sabemos que dicha ecuación tiene un efecto regularizador, es decir, aunque la condición inicial tenga discontinuidades, la solución se vuelve suave para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;. Por otro lado, la difusión en 1D ocurre a lo largo de una sola dirección (el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) y la solución se suaviza rápidamente con el tiempo.&lt;br /&gt;
&lt;br /&gt;
Veamos que ocurre en 2D. Ahora, nuestra ecuación es &amp;lt;math&amp;gt;u_t-u_{xx}-u_{yy}=0&amp;lt;/math&amp;gt;. La temperatura inicial se define ahora como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; \text{si $(x,y)$ está dentro de una de las letras}\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Continuemos con la generalización a &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; dimensiones tal que la ecuación del calor vendrá dada por: &amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cuya solución fundamental (análoga a la hallada para una dimensión) se distribuye como una gaussiana en varias variables (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;): &amp;lt;math&amp;gt;u(x,t) = \frac{1}{(4\pi t)^{n/2}} e^{-\frac{|x|^2}{4 t}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí, el efecto regularizador del que hablábamos sigue presente pues el término &amp;lt;math&amp;gt;(4\pi t)^{n/2}&amp;lt;/math&amp;gt;, que muestra como en &amp;lt;math&amp;gt;u(x ,t)&amp;lt;/math&amp;gt; con &amp;lt;math&amp;gt;x \in \mathbb{R}^n&amp;lt;/math&amp;gt; este efecto se vuelve más pronunciado en dimensiones superiores, pues el denominador crece más rápido. Con esto nos surge la siguiente pregunta, cómo podemos comparar el tiempo de dispersión en 1D, 2D y \(n\)D. Sabemos que la varianza de la solución fundamental en una dimensión es \(\sigma^2 = 2t\) con lo que para el análisis cualitativo de la dispersión se tiene que \(\sigma^2 \sim t\). &lt;br /&gt;
&lt;br /&gt;
En 2D, la dispersión es más rápida porque la normalización de la solución implica un decaimiento más rápido \( u \sim t^{-1}\) frente a \( u \sim t^{-1/2} \). En \( n \) dimensiones, el calor decae como \(u(x,t) \sim t^{-n/2}\) lo que reafirma que el calor se disipa más rápido a medida que aumenta la dimensión del espacio.&lt;br /&gt;
&lt;br /&gt;
Si queremos comparar el tiempo característico de disipación \( t_d \) en distintas dimensiones, fácilmente llegamos a la relación \( t_d(n) \sim t_d(1) n/2 \) que nos dice que el tiempo de disipación en dimensión \( n \) es inversamente proporcional a \( n/2 \).&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Difusion_termica_2DGrupoMAMBD-gif.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0,10] &amp;lt;/math&amp;gt;, dimensión 2 (2D).]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
% Parámetros del espacio y tiempo&lt;br /&gt;
Lx = 10; Ly = 10; dx = 0.1; dy = 0.1;&lt;br /&gt;
x = -Lx:dx:Lx;&lt;br /&gt;
y = -Ly:dy:Ly;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
t_values = logspace(-3, 1, 50); % Valores de tiempo en escala logarítmica&lt;br /&gt;
&lt;br /&gt;
% Condición inicial: Definir &amp;quot;letras&amp;quot; con calor&lt;br /&gt;
U0 = zeros(size(X));&lt;br /&gt;
U0((X &amp;gt; -3) &amp;amp; (X &amp;lt; -2) &amp;amp; (Y &amp;gt; -1) &amp;amp; (Y &amp;lt; 1)) = 5; % Letra 1&lt;br /&gt;
U0((X &amp;gt; -1) &amp;amp; (X &amp;lt; 1) &amp;amp; (Y &amp;gt; -2) &amp;amp; (Y &amp;lt; 2)) = 5;  % Letra 2&lt;br /&gt;
U0((X &amp;gt; 2) &amp;amp; (X &amp;lt; 3) &amp;amp; (Y &amp;gt; -1) &amp;amp; (Y &amp;lt; 1)) = 5;  % Letra 3&lt;br /&gt;
&lt;br /&gt;
% Configurar video&lt;br /&gt;
video = VideoWriter('difusion_termica_2D.avi');&lt;br /&gt;
video.FrameRate = 10;&lt;br /&gt;
open(video);&lt;br /&gt;
&lt;br /&gt;
% Configurar la figura&lt;br /&gt;
figure;&lt;br /&gt;
cmap = hot;&lt;br /&gt;
clim = [0, 5]; % Fijar la escala de colores entre 0 y 5&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    t = t_values(i);&lt;br /&gt;
    sigma = sqrt(2 * t) / dx;&lt;br /&gt;
    U_t = gaussian_filter(U0, sigma);&lt;br /&gt;
    &lt;br /&gt;
    imagesc(x, y, U_t);&lt;br /&gt;
    axis([-Lx Lx -Ly Ly]);&lt;br /&gt;
    colorbar;&lt;br /&gt;
    colormap(cmap);&lt;br /&gt;
    caxis(clim); % Mantener la escala de colores fija&lt;br /&gt;
    title(sprintf('Difusión térmica en t = %.4f', t));&lt;br /&gt;
    xlabel('x');&lt;br /&gt;
    ylabel('y');&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(video);&lt;br /&gt;
&lt;br /&gt;
function G = gaussian_filter(U, sigma)&lt;br /&gt;
    tam = ceil(6 * sigma); % Tamaño del kernel basado en sigma&lt;br /&gt;
    [X, Y] = meshgrid(-tam:tam, -tam:tam);&lt;br /&gt;
    &lt;br /&gt;
    % Definir el filtro gaussiano&lt;br /&gt;
    G = exp(-(X.^2 + Y.^2) / (2 * sigma^2));&lt;br /&gt;
    G = G / sum(G(:)); % Normalizar&lt;br /&gt;
    &lt;br /&gt;
    % Aplicar la convolución con el filtro gaussiano&lt;br /&gt;
    G = conv2(U, G, 'same');&lt;br /&gt;
end&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84665</id>
		<title>Ecuación del calor (Grupo MAMBD))</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84665"/>
				<updated>2025-03-16T23:01:41Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Introducción */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
La ecuación del calor es un modelo matemático que describe la difusión térmica en un medio. En una dimensión, se expresa como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t-u_{xx}=0.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt; representa la temperatura en función del tiempo y la posición. &lt;br /&gt;
&lt;br /&gt;
Resolveremos un problema específico utilizando la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;G(x,t)=\frac{1}{2\sqrt{\pi t}}e^{-\frac{x^2}{4t}},&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
permitiéndonos analizar la propagación del calor en una región no acotada e interpretar los resultados.&lt;br /&gt;
&lt;br /&gt;
=Mensaje secreto en la ecuación del calor=&lt;br /&gt;
&lt;br /&gt;
Imaginamos que escribimos un mensaje secreto en una barra de metal infinita usando calor (interpretando teóricamente dicha barra como una recta, ya que estamos en dimensión 1). Definimos la temperatura en el instante inicial&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; \text{$x$ está en una de las letras}\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
es decir, el mensaje inicial está formado por letras dibujadas en el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; con calor. Con el tiempo, el calor empieza a difundirse según la ecuación &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Su solución viene dada por la convolución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\int_{-\infty}^{\infty} G(x-y,t)u_0(y) dy=\frac{1}{4\sqrt{\pi t}}\int_{-\infty}^{\infty} u_0(y)e^{-\frac{(x-y)^2}{4t}}.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujando la solución para diferentes tiempos, obtenemos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: MesajeCalor.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0,1.60] &amp;lt;/math&amp;gt;, dimensión 1 (1D).]]&lt;br /&gt;
&lt;br /&gt;
Conforme avanza el tiempo, la difusión del calor hace que los bordes de las letras pierdan definición. Al inicio, las regiones calientes se distinguen claramente, pero poco a poco el calor se extiende a las áreas frías, suavizando los contornos. A medida que esta difusión continúa, las letras se vuelven borrosas hasta que el contraste desaparece por completo y el mensaje se vuelve ilegible, ya que la temperatura se ha distribuido de manera uniforme en la barra.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:BarraMetalEC.png|400px|thumb|right|Difusión del mensaje en la barra de metal]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
# Parámetros&lt;br /&gt;
L = 10.0  # Longitud de la barra&lt;br /&gt;
T = 0.1   # Tiempo final&lt;br /&gt;
nx = 100  # Número de puntos en el espacio&lt;br /&gt;
nt = 1000 # Número de puntos en el tiempo&lt;br /&gt;
alpha = 1 # Coeficiente de difusión térmica&lt;br /&gt;
&lt;br /&gt;
dx = L / (nx - 1)&lt;br /&gt;
dt = T / (nt - 1)&lt;br /&gt;
r = alpha * dt / dx**2&lt;br /&gt;
&lt;br /&gt;
# Inicialización&lt;br /&gt;
x = np.linspace(0, L, nx)&lt;br /&gt;
u = np.zeros(nx)&lt;br /&gt;
&lt;br /&gt;
# Condición inicial&lt;br /&gt;
def initial_condition(x):&lt;br /&gt;
    # Definir las regiones de las letras&lt;br /&gt;
    if 2 &amp;lt; x &amp;lt; 3 or 4 &amp;lt; x &amp;lt; 5:&lt;br /&gt;
        return 5&lt;br /&gt;
    else:&lt;br /&gt;
        return 0&lt;br /&gt;
&lt;br /&gt;
u = np.array([initial_condition(xi) for xi in x])&lt;br /&gt;
&lt;br /&gt;
# Evolución temporal&lt;br /&gt;
for t in range(nt):&lt;br /&gt;
    un = u.copy()&lt;br /&gt;
    for i in range(1, nx-1):&lt;br /&gt;
        u[i] = un[i] + r * (un[i+1] - 2*un[i] + un[i-1])&lt;br /&gt;
&lt;br /&gt;
    # Visualización en tiempos específicos&lt;br /&gt;
    if t in [int(0.001/dt), int(0.01/dt), int(0.1/dt)]:&lt;br /&gt;
        plt.plot(x, u, label=f't={t*dt:.3f}')&lt;br /&gt;
&lt;br /&gt;
plt.xlabel('Posición x')&lt;br /&gt;
plt.ylabel('Temperatura u(x,t)')&lt;br /&gt;
plt.title('Difusión térmica del mensaje')&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Regularidad y dimensiones=&lt;br /&gt;
Vamos a explorar que ocurre al pasar a dos dimensiones (2D), analizando como la difusión del calor se dispersa más rápido en 2D debido a la propagación en múltiples direcciones.&lt;br /&gt;
&lt;br /&gt;
En 1D, la ecuación del calor viene dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Sabemos que dicha ecuación tiene un efecto regularizador, es decir, aunque la condición inicial tenga discontinuidades, la solución se vuelve suave para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;. Por otro lado, la difusión en 1D ocurre a lo largo de una sola dirección (el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) y la solución se suaviza rápidamente con el tiempo.&lt;br /&gt;
&lt;br /&gt;
Veamos que ocurre en 2D. Ahora, nuestra ecuación es &amp;lt;math&amp;gt;u_t-u_{xx}-u_{yy}=0&amp;lt;/math&amp;gt;. La temperatura inicial se define ahora como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; \text{si $(x,y)$ está dentro de una de las letras}\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Continuemos con la generalización a &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; dimensiones tal que la ecuación del calor vendrá dada por: &amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cuya solución fundamental (análoga a la hallada para una dimensión) se distribuye como una gaussiana en varias variables (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;): &amp;lt;math&amp;gt;u(x,t) = \frac{1}{(4\pi t)^{n/2}} e^{-\frac{|x|^2}{4 t}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí, el efecto regularizador del que hablábamos sigue presente pues el término &amp;lt;math&amp;gt;(4\pi t)^{n/2}&amp;lt;/math&amp;gt;, que muestra como en &amp;lt;math&amp;gt;u(x ,t)&amp;lt;/math&amp;gt; con &amp;lt;math&amp;gt;x \in \mathbb{R}^n&amp;lt;/math&amp;gt; este efecto se vuelve más pronunciado en dimensiones superiores, pues el denominador crece más rápido. Con esto nos surge la siguiente pregunta, cómo podemos comparar el tiempo de dispersión en 1D, 2D y \(n\)D. Sabemos que la varianza de la solución fundamental en una dimensión es \(\sigma^2 = 2t\) con lo que para el análisis cualitativo de la dispersión se tiene que \(\sigma^2 \sim t\). &lt;br /&gt;
&lt;br /&gt;
En 2D, la dispersión es más rápida porque la normalización de la solución implica un decaimiento más rápido \( u \sim t^{-1}\) frente a \(u \sim t^{-1/2}\). En \( n \) dimensiones, el calor decae como \(u(x,t) \sim t^{-n/2}\) lo que reafirma que el calor se disipa más rápido a medida que aumenta la dimensión del espacio.&lt;br /&gt;
&lt;br /&gt;
Si queremos comparar el tiempo característico de disipación \( t_d \) en distintas dimensiones, fácilmente llegamos a la relación \( t_d(n) \sim t_d(1) n/2 \) que nos dice que el tiempo de disipación en dimensión \( n \) es inversamente proporcional a \( n/2 \).&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Difusion_termica_2DGrupoMAMBD-gif.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0,10] &amp;lt;/math&amp;gt;, dimensión 2 (2D).]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
% Parámetros del espacio y tiempo&lt;br /&gt;
Lx = 10; Ly = 10; dx = 0.1; dy = 0.1;&lt;br /&gt;
x = -Lx:dx:Lx;&lt;br /&gt;
y = -Ly:dy:Ly;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
t_values = logspace(-3, 1, 50); % Valores de tiempo en escala logarítmica&lt;br /&gt;
&lt;br /&gt;
% Condición inicial: Definir &amp;quot;letras&amp;quot; con calor&lt;br /&gt;
U0 = zeros(size(X));&lt;br /&gt;
U0((X &amp;gt; -3) &amp;amp; (X &amp;lt; -2) &amp;amp; (Y &amp;gt; -1) &amp;amp; (Y &amp;lt; 1)) = 5; % Letra 1&lt;br /&gt;
U0((X &amp;gt; -1) &amp;amp; (X &amp;lt; 1) &amp;amp; (Y &amp;gt; -2) &amp;amp; (Y &amp;lt; 2)) = 5;  % Letra 2&lt;br /&gt;
U0((X &amp;gt; 2) &amp;amp; (X &amp;lt; 3) &amp;amp; (Y &amp;gt; -1) &amp;amp; (Y &amp;lt; 1)) = 5;  % Letra 3&lt;br /&gt;
&lt;br /&gt;
% Configurar video&lt;br /&gt;
video = VideoWriter('difusion_termica_2D.avi');&lt;br /&gt;
video.FrameRate = 10;&lt;br /&gt;
open(video);&lt;br /&gt;
&lt;br /&gt;
% Configurar la figura&lt;br /&gt;
figure;&lt;br /&gt;
cmap = hot;&lt;br /&gt;
clim = [0, 5]; % Fijar la escala de colores entre 0 y 5&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    t = t_values(i);&lt;br /&gt;
    sigma = sqrt(2 * t) / dx;&lt;br /&gt;
    U_t = gaussian_filter(U0, sigma);&lt;br /&gt;
    &lt;br /&gt;
    imagesc(x, y, U_t);&lt;br /&gt;
    axis([-Lx Lx -Ly Ly]);&lt;br /&gt;
    colorbar;&lt;br /&gt;
    colormap(cmap);&lt;br /&gt;
    caxis(clim); % Mantener la escala de colores fija&lt;br /&gt;
    title(sprintf('Difusión térmica en t = %.4f', t));&lt;br /&gt;
    xlabel('x');&lt;br /&gt;
    ylabel('y');&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(video);&lt;br /&gt;
&lt;br /&gt;
function G = gaussian_filter(U, sigma)&lt;br /&gt;
    tam = ceil(6 * sigma); % Tamaño del kernel basado en sigma&lt;br /&gt;
    [X, Y] = meshgrid(-tam:tam, -tam:tam);&lt;br /&gt;
    &lt;br /&gt;
    % Definir el filtro gaussiano&lt;br /&gt;
    G = exp(-(X.^2 + Y.^2) / (2 * sigma^2));&lt;br /&gt;
    G = G / sum(G(:)); % Normalizar&lt;br /&gt;
    &lt;br /&gt;
    % Aplicar la convolución con el filtro gaussiano&lt;br /&gt;
    G = conv2(U, G, 'same');&lt;br /&gt;
end&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84664</id>
		<title>Ecuación del calor (Grupo MAMBD))</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84664"/>
				<updated>2025-03-16T23:00:22Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Regularidad y dimensiones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
La ecuación del calor es un modelo matemático que describe la difusión térmica en un medio. En una dimensión, se expresa como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t-u_{xx}=0.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt; representa la temperatura en función del tiempo y la posición. &lt;br /&gt;
&lt;br /&gt;
Resolveremos un problema específico utilizando la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;G(x,t)=\frac{1}{4\sqrt{\pi t}}e^{-\frac{x^2}{4t}},&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
permitiéndonos analizar la propagación del calor en una región no acotada e interpretar los resultados.&lt;br /&gt;
&lt;br /&gt;
=Mensaje secreto en la ecuación del calor=&lt;br /&gt;
&lt;br /&gt;
Imaginamos que escribimos un mensaje secreto en una barra de metal infinita usando calor (interpretando teóricamente dicha barra como una recta, ya que estamos en dimensión 1). Definimos la temperatura en el instante inicial&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; \text{$x$ está en una de las letras}\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
es decir, el mensaje inicial está formado por letras dibujadas en el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; con calor. Con el tiempo, el calor empieza a difundirse según la ecuación &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Su solución viene dada por la convolución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\int_{-\infty}^{\infty} G(x-y,t)u_0(y) dy=\frac{1}{4\sqrt{\pi t}}\int_{-\infty}^{\infty} u_0(y)e^{-\frac{(x-y)^2}{4t}}.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujando la solución para diferentes tiempos, obtenemos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: MesajeCalor.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0,1.60] &amp;lt;/math&amp;gt;, dimensión 1 (1D).]]&lt;br /&gt;
&lt;br /&gt;
Conforme avanza el tiempo, la difusión del calor hace que los bordes de las letras pierdan definición. Al inicio, las regiones calientes se distinguen claramente, pero poco a poco el calor se extiende a las áreas frías, suavizando los contornos. A medida que esta difusión continúa, las letras se vuelven borrosas hasta que el contraste desaparece por completo y el mensaje se vuelve ilegible, ya que la temperatura se ha distribuido de manera uniforme en la barra.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:BarraMetalEC.png|400px|thumb|right|Difusión del mensaje en la barra de metal]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
# Parámetros&lt;br /&gt;
L = 10.0  # Longitud de la barra&lt;br /&gt;
T = 0.1   # Tiempo final&lt;br /&gt;
nx = 100  # Número de puntos en el espacio&lt;br /&gt;
nt = 1000 # Número de puntos en el tiempo&lt;br /&gt;
alpha = 1 # Coeficiente de difusión térmica&lt;br /&gt;
&lt;br /&gt;
dx = L / (nx - 1)&lt;br /&gt;
dt = T / (nt - 1)&lt;br /&gt;
r = alpha * dt / dx**2&lt;br /&gt;
&lt;br /&gt;
# Inicialización&lt;br /&gt;
x = np.linspace(0, L, nx)&lt;br /&gt;
u = np.zeros(nx)&lt;br /&gt;
&lt;br /&gt;
# Condición inicial&lt;br /&gt;
def initial_condition(x):&lt;br /&gt;
    # Definir las regiones de las letras&lt;br /&gt;
    if 2 &amp;lt; x &amp;lt; 3 or 4 &amp;lt; x &amp;lt; 5:&lt;br /&gt;
        return 5&lt;br /&gt;
    else:&lt;br /&gt;
        return 0&lt;br /&gt;
&lt;br /&gt;
u = np.array([initial_condition(xi) for xi in x])&lt;br /&gt;
&lt;br /&gt;
# Evolución temporal&lt;br /&gt;
for t in range(nt):&lt;br /&gt;
    un = u.copy()&lt;br /&gt;
    for i in range(1, nx-1):&lt;br /&gt;
        u[i] = un[i] + r * (un[i+1] - 2*un[i] + un[i-1])&lt;br /&gt;
&lt;br /&gt;
    # Visualización en tiempos específicos&lt;br /&gt;
    if t in [int(0.001/dt), int(0.01/dt), int(0.1/dt)]:&lt;br /&gt;
        plt.plot(x, u, label=f't={t*dt:.3f}')&lt;br /&gt;
&lt;br /&gt;
plt.xlabel('Posición x')&lt;br /&gt;
plt.ylabel('Temperatura u(x,t)')&lt;br /&gt;
plt.title('Difusión térmica del mensaje')&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Regularidad y dimensiones=&lt;br /&gt;
Vamos a explorar que ocurre al pasar a dos dimensiones (2D), analizando como la difusión del calor se dispersa más rápido en 2D debido a la propagación en múltiples direcciones.&lt;br /&gt;
&lt;br /&gt;
En 1D, la ecuación del calor viene dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Sabemos que dicha ecuación tiene un efecto regularizador, es decir, aunque la condición inicial tenga discontinuidades, la solución se vuelve suave para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;. Por otro lado, la difusión en 1D ocurre a lo largo de una sola dirección (el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) y la solución se suaviza rápidamente con el tiempo.&lt;br /&gt;
&lt;br /&gt;
Veamos que ocurre en 2D. Ahora, nuestra ecuación es &amp;lt;math&amp;gt;u_t-u_{xx}-u_{yy}=0&amp;lt;/math&amp;gt;. La temperatura inicial se define ahora como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; \text{si $(x,y)$ está dentro de una de las letras}\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Continuemos con la generalización a &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; dimensiones tal que la ecuación del calor vendrá dada por: &amp;lt;math&amp;gt;u_t - \Delta u = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cuya solución fundamental (análoga a la hallada para una dimensión) se distribuye como una gaussiana en varias variables (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;): &amp;lt;math&amp;gt;u(x,t) = \frac{1}{(4\pi t)^{n/2}} e^{-\frac{|x|^2}{4 t}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí, el efecto regularizador del que hablábamos sigue presente pues el término &amp;lt;math&amp;gt;(4\pi t)^{n/2}&amp;lt;/math&amp;gt;, que muestra como en &amp;lt;math&amp;gt;u(x ,t)&amp;lt;/math&amp;gt; con &amp;lt;math&amp;gt;x \in \mathbb{R}^n&amp;lt;/math&amp;gt; este efecto se vuelve más pronunciado en dimensiones superiores, pues el denominador crece más rápido. Con esto nos surge la siguiente pregunta, cómo podemos comparar el tiempo de dispersión en 1D, 2D y \(n\)D. Sabemos que la varianza de la solución fundamental en una dimensión es \(\sigma^2 = 2t\) con lo que para el análisis cualitativo de la dispersión se tiene que \(\sigma^2 \sim t\). &lt;br /&gt;
&lt;br /&gt;
En 2D, la dispersión es más rápida porque la normalización de la solución implica un decaimiento más rápido \( u \sim t^{-1}\) frente a \(u \sim t^{-1/2}\). En \( n \) dimensiones, el calor decae como \(u(x,t) \sim t^{-n/2}\) lo que reafirma que el calor se disipa más rápido a medida que aumenta la dimensión del espacio.&lt;br /&gt;
&lt;br /&gt;
Si queremos comparar el tiempo característico de disipación \( t_d \) en distintas dimensiones, fácilmente llegamos a la relación \( t_d(n) \sim t_d(1) n/2 \) que nos dice que el tiempo de disipación en dimensión \( n \) es inversamente proporcional a \( n/2 \).&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Difusion_termica_2DGrupoMAMBD-gif.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0,10] &amp;lt;/math&amp;gt;, dimensión 2 (2D).]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
% Parámetros del espacio y tiempo&lt;br /&gt;
Lx = 10; Ly = 10; dx = 0.1; dy = 0.1;&lt;br /&gt;
x = -Lx:dx:Lx;&lt;br /&gt;
y = -Ly:dy:Ly;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
t_values = logspace(-3, 1, 50); % Valores de tiempo en escala logarítmica&lt;br /&gt;
&lt;br /&gt;
% Condición inicial: Definir &amp;quot;letras&amp;quot; con calor&lt;br /&gt;
U0 = zeros(size(X));&lt;br /&gt;
U0((X &amp;gt; -3) &amp;amp; (X &amp;lt; -2) &amp;amp; (Y &amp;gt; -1) &amp;amp; (Y &amp;lt; 1)) = 5; % Letra 1&lt;br /&gt;
U0((X &amp;gt; -1) &amp;amp; (X &amp;lt; 1) &amp;amp; (Y &amp;gt; -2) &amp;amp; (Y &amp;lt; 2)) = 5;  % Letra 2&lt;br /&gt;
U0((X &amp;gt; 2) &amp;amp; (X &amp;lt; 3) &amp;amp; (Y &amp;gt; -1) &amp;amp; (Y &amp;lt; 1)) = 5;  % Letra 3&lt;br /&gt;
&lt;br /&gt;
% Configurar video&lt;br /&gt;
video = VideoWriter('difusion_termica_2D.avi');&lt;br /&gt;
video.FrameRate = 10;&lt;br /&gt;
open(video);&lt;br /&gt;
&lt;br /&gt;
% Configurar la figura&lt;br /&gt;
figure;&lt;br /&gt;
cmap = hot;&lt;br /&gt;
clim = [0, 5]; % Fijar la escala de colores entre 0 y 5&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    t = t_values(i);&lt;br /&gt;
    sigma = sqrt(2 * t) / dx;&lt;br /&gt;
    U_t = gaussian_filter(U0, sigma);&lt;br /&gt;
    &lt;br /&gt;
    imagesc(x, y, U_t);&lt;br /&gt;
    axis([-Lx Lx -Ly Ly]);&lt;br /&gt;
    colorbar;&lt;br /&gt;
    colormap(cmap);&lt;br /&gt;
    caxis(clim); % Mantener la escala de colores fija&lt;br /&gt;
    title(sprintf('Difusión térmica en t = %.4f', t));&lt;br /&gt;
    xlabel('x');&lt;br /&gt;
    ylabel('y');&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(video);&lt;br /&gt;
&lt;br /&gt;
function G = gaussian_filter(U, sigma)&lt;br /&gt;
    tam = ceil(6 * sigma); % Tamaño del kernel basado en sigma&lt;br /&gt;
    [X, Y] = meshgrid(-tam:tam, -tam:tam);&lt;br /&gt;
    &lt;br /&gt;
    % Definir el filtro gaussiano&lt;br /&gt;
    G = exp(-(X.^2 + Y.^2) / (2 * sigma^2));&lt;br /&gt;
    G = G / sum(G(:)); % Normalizar&lt;br /&gt;
    &lt;br /&gt;
    % Aplicar la convolución con el filtro gaussiano&lt;br /&gt;
    G = conv2(U, G, 'same');&lt;br /&gt;
end&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84656</id>
		<title>Ecuación del calor (Grupo MAMBD))</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_MAMBD))&amp;diff=84656"/>
				<updated>2025-03-16T22:17:34Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Regularidad y dimensiones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
La ecuación del calor es un modelo matemático que describe la difusión térmica en un medio. En una dimensión, se expresa como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t-u_{xx}=0.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt; representa la temperatura en función del tiempo y la posición. &lt;br /&gt;
&lt;br /&gt;
Resolveremos un problema específico utilizando la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;G(x,t)=\frac{1}{4\sqrt{\pi t}}e^{-\frac{x^2}{4t}},&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
permitiéndonos analizar la propagación del calor en una región no acotada e interpretar los resultados.&lt;br /&gt;
&lt;br /&gt;
=Mensaje secreto en la ecuación del calor=&lt;br /&gt;
&lt;br /&gt;
Imaginamos que escribimos un mensaje secreto en una barra de metal infinita usando calor (interpretando teóricamente dicha barra como una recta, ya que estamos en dimensión 1). Definimos la temperatura en el instante inicial&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; \text{$x$ está en una de las letras}\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
es decir, el mensaje inicial está formado por letras dibujadas en el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; con calor. Con el tiempo, el calor empieza a difundirse según la ecuación &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Su solución viene dada por la convolución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\int_{-\infty}^{\infty} G(x-y,t)u_0(y) dy=\frac{1}{4\sqrt{\pi t}}\int_{-\infty}^{\infty} u_0(y)e^{-\frac{(x-y)^2}{4t}}.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujando la solución para diferentes tiempos, obtenemos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: MesajeCalor.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0,1.60] &amp;lt;/math&amp;gt;, dimensión 1 (1D).]]&lt;br /&gt;
&lt;br /&gt;
Conforme avanza el tiempo, la difusión del calor hace que los bordes de las letras pierdan definición. Al inicio, las regiones calientes se distinguen claramente, pero poco a poco el calor se extiende a las áreas frías, suavizando los contornos. A medida que esta difusión continúa, las letras se vuelven borrosas hasta que el contraste desaparece por completo y el mensaje se vuelve ilegible, ya que la temperatura se ha distribuido de manera uniforme en la barra.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:BarraMetalEC.png|400px|thumb|right|Difusión del mensaje en la barra de metal]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
# Parámetros&lt;br /&gt;
L = 10.0  # Longitud de la barra&lt;br /&gt;
T = 0.1   # Tiempo final&lt;br /&gt;
nx = 100  # Número de puntos en el espacio&lt;br /&gt;
nt = 1000 # Número de puntos en el tiempo&lt;br /&gt;
alpha = 1 # Coeficiente de difusión térmica&lt;br /&gt;
&lt;br /&gt;
dx = L / (nx - 1)&lt;br /&gt;
dt = T / (nt - 1)&lt;br /&gt;
r = alpha * dt / dx**2&lt;br /&gt;
&lt;br /&gt;
# Inicialización&lt;br /&gt;
x = np.linspace(0, L, nx)&lt;br /&gt;
u = np.zeros(nx)&lt;br /&gt;
&lt;br /&gt;
# Condición inicial&lt;br /&gt;
def initial_condition(x):&lt;br /&gt;
    # Definir las regiones de las letras&lt;br /&gt;
    if 2 &amp;lt; x &amp;lt; 3 or 4 &amp;lt; x &amp;lt; 5:&lt;br /&gt;
        return 5&lt;br /&gt;
    else:&lt;br /&gt;
        return 0&lt;br /&gt;
&lt;br /&gt;
u = np.array([initial_condition(xi) for xi in x])&lt;br /&gt;
&lt;br /&gt;
# Evolución temporal&lt;br /&gt;
for t in range(nt):&lt;br /&gt;
    un = u.copy()&lt;br /&gt;
    for i in range(1, nx-1):&lt;br /&gt;
        u[i] = un[i] + r * (un[i+1] - 2*un[i] + un[i-1])&lt;br /&gt;
&lt;br /&gt;
    # Visualización en tiempos específicos&lt;br /&gt;
    if t in [int(0.001/dt), int(0.01/dt), int(0.1/dt)]:&lt;br /&gt;
        plt.plot(x, u, label=f't={t*dt:.3f}')&lt;br /&gt;
&lt;br /&gt;
plt.xlabel('Posición x')&lt;br /&gt;
plt.ylabel('Temperatura u(x,t)')&lt;br /&gt;
plt.title('Difusión térmica del mensaje')&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Regularidad y dimensiones=&lt;br /&gt;
Vamos a explorar que ocurre al pasar a dos dimensiones (2D), analizando como la difusión del calor se dispersa más rápido en 2D debido a la propagación en múltiples direcciones.&lt;br /&gt;
&lt;br /&gt;
En 1D, la ecuación del calor viene dada por &amp;lt;math&amp;gt;u_t-u_{xx}=0&amp;lt;/math&amp;gt;. Sabemos que dicha ecuación tiene un efecto regularizador, es decir, aunque la condición inicial tenga discontinuidades, la solución se vuelve suave para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;. Por otro lado, la difusión en 1D ocurre a lo largo de una sola dirección (el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) y la solución se suaviza rápidamente con el tiempo.&lt;br /&gt;
&lt;br /&gt;
Veamos que ocurre en 2D. Ahora, nuestra ecuación es &amp;lt;math&amp;gt;u_t-u_{xx}-u_{yy}=0&amp;lt;/math&amp;gt;. La temperatura inicial se define ahora como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_0(x)=\left\{\begin{array}{ll}&lt;br /&gt;
     5, &amp;amp; \text{si $(x,y)$ está dentro de una de las letras}\\&lt;br /&gt;
     0, &amp;amp; \text{en otro caso}&lt;br /&gt;
\end{array}\right. ,&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí, el efecto regularizador del que hablábamos sigue presente. En cambio, la rapidez con la que se suaviza la solución puede variar. En dimensiones superiores la difusión ocurre en múltiples direcciones, lo que hará que se suavice más rápido. En general, a mayor dimensión, más rápido se dispersa el calor, ya que hay mas direcciones hacia las que puede propagarse.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Difusion_termica_2DGrupoMAMBD-gif.gif|400px|thumb|center| Vídeo de la difusión del mensaje en la barra de metal con &amp;lt;math&amp;gt; t \in [0,10] &amp;lt;/math&amp;gt;, dimensión 2 (2D).]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
% Parámetros del espacio y tiempo&lt;br /&gt;
Lx = 10; Ly = 10; dx = 0.1; dy = 0.1;&lt;br /&gt;
x = -Lx:dx:Lx;&lt;br /&gt;
y = -Ly:dy:Ly;&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
t_values = logspace(-3, 1, 50); % Valores de tiempo en escala logarítmica&lt;br /&gt;
&lt;br /&gt;
% Condición inicial: Definir &amp;quot;letras&amp;quot; con calor&lt;br /&gt;
U0 = zeros(size(X));&lt;br /&gt;
U0((X &amp;gt; -3) &amp;amp; (X &amp;lt; -2) &amp;amp; (Y &amp;gt; -1) &amp;amp; (Y &amp;lt; 1)) = 5; % Letra 1&lt;br /&gt;
U0((X &amp;gt; -1) &amp;amp; (X &amp;lt; 1) &amp;amp; (Y &amp;gt; -2) &amp;amp; (Y &amp;lt; 2)) = 5;  % Letra 2&lt;br /&gt;
U0((X &amp;gt; 2) &amp;amp; (X &amp;lt; 3) &amp;amp; (Y &amp;gt; -1) &amp;amp; (Y &amp;lt; 1)) = 5;  % Letra 3&lt;br /&gt;
&lt;br /&gt;
% Configurar video&lt;br /&gt;
video = VideoWriter('difusion_termica_2D.avi');&lt;br /&gt;
video.FrameRate = 10;&lt;br /&gt;
open(video);&lt;br /&gt;
&lt;br /&gt;
% Configurar la figura&lt;br /&gt;
figure;&lt;br /&gt;
cmap = hot;&lt;br /&gt;
clim = [0, 5]; % Fijar la escala de colores entre 0 y 5&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    t = t_values(i);&lt;br /&gt;
    sigma = sqrt(2 * t) / dx;&lt;br /&gt;
    U_t = gaussian_filter(U0, sigma);&lt;br /&gt;
    &lt;br /&gt;
    imagesc(x, y, U_t);&lt;br /&gt;
    axis([-Lx Lx -Ly Ly]);&lt;br /&gt;
    colorbar;&lt;br /&gt;
    colormap(cmap);&lt;br /&gt;
    caxis(clim); % Mantener la escala de colores fija&lt;br /&gt;
    title(sprintf('Difusión térmica en t = %.4f', t));&lt;br /&gt;
    xlabel('x');&lt;br /&gt;
    ylabel('y');&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(video);&lt;br /&gt;
&lt;br /&gt;
function G = gaussian_filter(U, sigma)&lt;br /&gt;
    tam = ceil(6 * sigma); % Tamaño del kernel basado en sigma&lt;br /&gt;
    [X, Y] = meshgrid(-tam:tam, -tam:tam);&lt;br /&gt;
    &lt;br /&gt;
    % Definir el filtro gaussiano&lt;br /&gt;
    G = exp(-(X.^2 + Y.^2) / (2 * sigma^2));&lt;br /&gt;
    G = G / sum(G(:)); % Normalizar&lt;br /&gt;
    &lt;br /&gt;
    % Aplicar la convolución con el filtro gaussiano&lt;br /&gt;
    G = conv2(U, G, 'same');&lt;br /&gt;
end&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Difusion_termica_2DGrupoMAMBD-gif.gif&amp;diff=84655</id>
		<title>Archivo:Difusion termica 2DGrupoMAMBD-gif.gif</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Difusion_termica_2DGrupoMAMBD-gif.gif&amp;diff=84655"/>
				<updated>2025-03-16T22:17:00Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Difusion_termica_2DGrupoMAMBD.mp4&amp;diff=84654</id>
		<title>Archivo:Difusion termica 2DGrupoMAMBD.mp4</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Difusion_termica_2DGrupoMAMBD.mp4&amp;diff=84654"/>
				<updated>2025-03-16T22:13:59Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(MAMBD)&amp;diff=83931</id>
		<title>Series de Fourier (MAMBD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(MAMBD)&amp;diff=83931"/>
				<updated>2025-02-13T13:12:24Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Cambio de intervalo de aproximación */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
&lt;br /&gt;
El interés de las series de Fourier radica en su capacidad para aproximar, a partir de una base de funciones trigonométricas, aplicaciones periódicas ampliando así el alcance de los desarrollos de Taylor. Sea &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; una función integrable y periódica en &amp;lt;math&amp;gt;[-T,T]&amp;lt;/math&amp;gt;, dada la base &amp;lt;math&amp;gt;B=\left\{ \frac{1}{\sqrt{2T}} \right\} \cup &lt;br /&gt;
\left\{ \frac{1}{\sqrt{T}} \cdot \cos \left( \frac{n\pi x}{T} \right) \right\}_{n \in \mathbb{N}} &lt;br /&gt;
\cup &lt;br /&gt;
\left\{ \frac{1}{\sqrt{T}} \cdot \sin \left( \frac{n\pi x}{T} \right) \right\}_{n \in \mathbb{N}}&amp;lt;/math&amp;gt;, su serie de Fourier viene dada por la expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{equation*}&lt;br /&gt;
    f(x) \sim \frac{d_0}{\sqrt{2T}} + \sum_{n=1}^{\infty} d_n \cdot \cos \left( \frac{n\pi x}{T} \right) + \sum_{n=1}^{\infty} c_n \cdot \sin \left( \frac{n\pi x}{T} \right)&lt;br /&gt;
\end{equation*}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cuyos coeficientes son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
&amp;amp;\bullet \quad d_0 = \langle f, \frac{1}{\sqrt{2T}} \rangle = \int_{-T}^{T} f(x) \cdot \frac{1}{\sqrt{2T}} \,dx \\  &lt;br /&gt;
&amp;amp;\bullet \quad d_n = \langle f, \cos \left( \frac{n\pi x}{T} \right) \rangle = \int_{-T}^{T} f(x) \cdot \cos \left( \frac{n\pi x}{T} \right) \,dx \\  &lt;br /&gt;
&amp;amp;\bullet \quad c_n = \langle f, \sin \left( \frac{n\pi x}{T} \right) \rangle = \int_{-T}^{T} f(x) \cdot \sin \left( \frac{n\pi x}{T} \right) \,dx.&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Aproximación de una función continua=  &lt;br /&gt;
&lt;br /&gt;
Para ilustrar la aproximación por series trigonométricas, consideramos la función &amp;lt;math&amp;gt;f(x)=1-2\left|\frac{1}{2}-x\right|&amp;lt;/math&amp;gt; en el intervalo &amp;lt;math&amp;gt;[0,1]&amp;lt;/math&amp;gt;. Buscamos extenderla de forma impar obteniendo una función&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;g(x)=\left\{\begin{array}{cc}&lt;br /&gt;
    f(x), &amp;amp; x\in[0,1] \\&lt;br /&gt;
    -f(-x), &amp;amp; x\in[-1,0)&lt;br /&gt;
\end{array}\right..&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La extensión impar que buscamos viene dada por&lt;br /&gt;
&amp;lt;math&amp;gt;g(x)=\left\{\begin{array}{cc}&lt;br /&gt;
    -2-2x, &amp;amp; -1\leq x&amp;lt;-\frac{1}{2} \\&lt;br /&gt;
    2x, &amp;amp; -\frac{1}{2}\leq x&amp;lt;\frac{1}{2} \\&lt;br /&gt;
    2-2x, &amp;amp; \frac{1}{2}\leq x\leq1&lt;br /&gt;
\end{array}\right.,&amp;lt;/math&amp;gt; que es efectivamente una función continua en &amp;lt;math&amp;gt;[-1,1]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ahora, por ser &amp;lt;math&amp;gt;f\in L^2([-1,1])&amp;lt;/math&amp;gt;, utilizamos para la aproximación la base trigonométrica correspondiente &amp;lt;math&amp;gt;\left\{\frac{1}{2}, \cos(n\pi x), \sin(n\pi x)\right\}_{n\in\mathbb{N}}&amp;lt;/math&amp;gt;. Sin embargo, al haber extendido la función de forma impar, el producto escalar de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; con las funciones pares de la base, es decir &amp;lt;math&amp;gt;(\left\{\frac{1}{2}\right\}&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;\{\cos(n\pi x)\})&amp;lt;/math&amp;gt;, resultan ser impares. Con esto deducimos que integrar dicho producto en un intervalo simétrico da como resultado cero, pues las áreas positivas y negativas se anulan entre sí debido a la simetría de la función con respecto al origen. Entonces podemos definir &amp;lt;math&amp;gt;f_n(x)&amp;lt;/math&amp;gt; como la suma de los primeros &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; términos de la serie de Fourier&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;f_n(x)=\sum_{k=1}^n a_k \sin(k\pi x), \hspace{0.5cm} a_k=2\int_0^1 f(x)\sin(k\pi x).&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez hecho el análisis anterior, nos disponemos a ver gráficamente como a medida que aumentamos la cantidad de términos de la serie esta se aproxima mejor a la función original &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;. Para ello, hemos usado el lenguaje de programación de Python con el que hemos conseguido representar los siguientes gráficos, en ellos vemos como efectivamente, al aumentar la &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, los primeros términos de la serie de Fourier se acercan más y más a nuestra función original. Así mismo, por motivo de esta mejora en la aproximación, en la segunda gráfica podemos apreciar como el error disminuye conforme aumenta &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;; si observamos la segunda gráfica vemos como el error de aproximación desciende del orden &amp;lt;math&amp;gt;10^{-2}&amp;lt;/math&amp;gt; que es una cifra más que aceptable pues hemos de tener en cuenta que solamente hemos tomado 20 términos de una serie infinita.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:ComparacionFourierMAMBD.jpeg|400px|thumb|right|Comparación de la extensión impar con la aproximación de Fourier]]&lt;br /&gt;
[[Archivo:ErroresFourier.jpeg|400px|thumb|right|Comparación de la extensión impar con la aproximación de Fourier]]&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
#Primero, hemos definido la función del enunciado y su extensión impar. A continuación de eso, hemos creado dos funciones, las cuales crean los coeficientes de Fourier y la serie de Fourier, respectivamente. Además, se ha creado una última función para los errores. Usando matplotlib.pyplot, deja las siguientes gráficas:&lt;br /&gt;
&lt;br /&gt;
# Definimos la función del enunciado con la que trabajar&lt;br /&gt;
def f(x):&lt;br /&gt;
    return 1 - 2 * np.abs(1/2 - x)&lt;br /&gt;
&lt;br /&gt;
# Extensión impar de la propia función para poder aproximarla con la serie de Fourier&lt;br /&gt;
def odd_extension(x):&lt;br /&gt;
    return np.where(x &amp;lt; 0, -f(-x), f(x))&lt;br /&gt;
&lt;br /&gt;
# Cálculo de los coeficientes de la serie con integración numérica por medio del método del trapecio&lt;br /&gt;
def compute_coefficients(n_max, dx=1e-3):&lt;br /&gt;
    x = np.arange(0, 1, dx)&lt;br /&gt;
    a_k = []&lt;br /&gt;
    for k in range(1, n_max + 1):&lt;br /&gt;
        integrand = f(x) * np.sin(k * np.pi * x)&lt;br /&gt;
        a_k.append(2 * np.trapz(integrand, x))  # Integral numérica por trapecios&lt;br /&gt;
    return a_k&lt;br /&gt;
&lt;br /&gt;
# Construcción de la serie de Fourier&lt;br /&gt;
def fourier_approximation(x, a_k):&lt;br /&gt;
    f_n = np.zeros_like(x)&lt;br /&gt;
    for k, ak in enumerate(a_k, start=1):&lt;br /&gt;
        f_n += ak * np.sin(k * np.pi * x)&lt;br /&gt;
    return f_n&lt;br /&gt;
&lt;br /&gt;
# Valores de n&lt;br /&gt;
n_values = [1, 5, 10]&lt;br /&gt;
&lt;br /&gt;
# Discretización del intervalo&lt;br /&gt;
x = np.linspace(0, 1, 1000)&lt;br /&gt;
x_ext = np.linspace(-1, 1, 2000)&lt;br /&gt;
&lt;br /&gt;
# Gráfica de la función original&lt;br /&gt;
plt.plot(x, f(x), label='f(x)', color='black', linewidth=2)&lt;br /&gt;
&lt;br /&gt;
# Aproximaciones de Fourier con f extendida&lt;br /&gt;
for n in n_values:&lt;br /&gt;
    a_k = compute_coefficients(n)&lt;br /&gt;
    f_n = fourier_approximation(x_ext, a_k)&lt;br /&gt;
    plt.plot(x_ext, f_n, label=f'n={n}')&lt;br /&gt;
&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.xlabel('x')&lt;br /&gt;
plt.ylabel('f(x) y f_n(x)')&lt;br /&gt;
plt.title('Comparación de la extensión impar con la Aproximación de Fourier')&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Calculamos el error de estimación entre la correspondiente f_n(x) y f(x)&lt;br /&gt;
def compute_errors(n_values, x, dx=1e-3):&lt;br /&gt;
    L2_errors = []&lt;br /&gt;
    uniform_errors = []&lt;br /&gt;
    f_exact = odd_extension(x)&lt;br /&gt;
    for n in n_values:&lt;br /&gt;
        a_k = compute_coefficients(n, dx)&lt;br /&gt;
        f_n = fourier_approximation(x, a_k)&lt;br /&gt;
        error = np.abs(f_exact - f_n)&lt;br /&gt;
        L2_error = np.sqrt(np.trapz(error**2, x))  # Norma L^2&lt;br /&gt;
        uniform_error = np.max(error)  # Norma uniforme&lt;br /&gt;
        L2_errors.append(L2_error)&lt;br /&gt;
        uniform_errors.append(uniform_error)&lt;br /&gt;
    return L2_errors, uniform_errors&lt;br /&gt;
&lt;br /&gt;
# Valores de n&lt;br /&gt;
n_values2 = np.arange(1, 21)&lt;br /&gt;
&lt;br /&gt;
# Discretización del intervalo&lt;br /&gt;
x_ext = np.linspace(-1, 1, 2000)&lt;br /&gt;
&lt;br /&gt;
# Cálculo de errores&lt;br /&gt;
L2_errors, uniform_errors = compute_errors(n_values2, x_ext)&lt;br /&gt;
&lt;br /&gt;
# Gráfica de errores&lt;br /&gt;
plt.figure(figsize=(8, 5))&lt;br /&gt;
plt.plot(n_values2, L2_errors, label='Error L2', marker='o')&lt;br /&gt;
plt.plot(n_values2, uniform_errors, label='Error Uniforme', marker='s')&lt;br /&gt;
plt.yscale('log')&lt;br /&gt;
plt.xlabel('Número de términos n')&lt;br /&gt;
plt.ylabel('Error')&lt;br /&gt;
plt.title('Errores en función de n')&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Cambio de intervalo de aproximación=&lt;br /&gt;
&lt;br /&gt;
A continuación aproximaremos la función \( f(x) = x e^x \) en el intervalo \([-2, 3]\) mediante su serie de Fourier. En primer lugar, calcularemos la base trigonométrica asociada al espacio \( L^2([-2, 3]) \). Luego, daremos su desarrollo en serie de Fourier y finalmente aproximaremos &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; con los primeros 5, 10 y 20 términos de la serie obtenida.&lt;br /&gt;
&lt;br /&gt;
Como ya sabemos, en el espacio &amp;lt;math&amp;gt;L^2[-\pi, \pi]&amp;lt;/math&amp;gt; la base trigonométrica asociada es:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{B} = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}} \cos(nx), \frac{1}{\sqrt{\pi}} \sin(nx) \right\}_{n \in \mathbb{N}}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En general, para &amp;lt;math&amp;gt;L^2([a,b])&amp;lt;/math&amp;gt;, mediante el cambio de variable &amp;lt;math&amp;gt;&lt;br /&gt;
g(x) = \frac{2\pi}{b - a} (x - a) - \pi,&lt;br /&gt;
&amp;lt;/math&amp;gt; se tiene que la base trigonométrica asociada es&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} =&lt;br /&gt;
\left\{&lt;br /&gt;
\frac{1}{\sqrt{b - a}} \left[&lt;br /&gt;
\sqrt{\frac{2}{b - a}} \cos\left( n (\frac{2\pi(x - a)}{b - a} - \pi) \right),&lt;br /&gt;
\sqrt{\frac{2}{b - a}} \sin\left( n (\frac{2\pi(x - a)}{b - a} - \pi )\right)&lt;br /&gt;
\right]&lt;br /&gt;
\right\}_{n=1}^{\infty},&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
que es una base ortonormal para &amp;lt;math&amp;gt;L^2([a,b])&amp;lt;/math&amp;gt;. Bajo este cambio de variable, una función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;L^2([a,b])&amp;lt;/math&amp;gt; se puede expresar como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) = \frac{d_0}{\sqrt{b - a}}  + \sum_{n=1}^{\infty} d_n \cos\left(n g(x)\right) + \sum_{n=1}^{\infty} c_n \sin\left(n g(x)\right),&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;g(x)&amp;lt;/math&amp;gt; es el cambio de variable aplicado, y &amp;lt;math&amp;gt;d_n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;c_n&amp;lt;/math&amp;gt; son los coeficientes correspondientes. De esta manera, &amp;lt;math&amp;gt;g(x) \in [-\pi, \pi]&amp;lt;/math&amp;gt;, lo que permite trasladar la base ortonormal del espacio &amp;lt;math&amp;gt;L^2(-\pi, \pi)&amp;lt;/math&amp;gt; al nuevo intervalo &amp;lt;math&amp;gt;[a, b]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ahora, pasemos de lo general a nuestro caso concreto, el intervalo  &amp;lt;math&amp;gt;[-2, 3]&amp;lt;/math&amp;gt;. Obtenemos que:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \sim \frac{d_0}{\sqrt{5}}  + \sum_{n=1}^{\infty} d_n \frac{\sqrt{2}}{\sqrt{5}}\cos\left(n \frac{2\pi x - \pi}{5}\right) + \sum_{n=1}^{\infty} c_n \frac{\sqrt{2}}{\sqrt{5}}\sin\left(n \frac{2\pi x - \pi}{5}\right),&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Definición:''' El espacio &amp;lt;math&amp;gt;L^2(-T, T)&amp;lt;/math&amp;gt; se define como el conjunto de funciones medibles &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; en el intervalo &amp;lt;math&amp;gt;[-T, T]&amp;lt;/math&amp;gt; tales que:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\int_{-T}^{T} |f(x)|^2 \, dx &amp;lt; \infty.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Definición:''' Decimos que una función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; satisface la '''condición de dirichlet''' si &amp;lt;math&amp;gt;f(x) \in L^2([-T,T])&amp;lt;/math&amp;gt;, es continua salvo en un conjunto finito de puntos y podemos dividir &amp;lt;math&amp;gt;[-T,T]&amp;lt;/math&amp;gt; en un conjunto de subintervalos en los que &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; es monótona.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Teorema:''' Sea &amp;lt;math&amp;gt;f \in L^2([-2, 3])&amp;lt;/math&amp;gt;  una función continua y que satisface la condición de Dirichlet, entonces  su serie de Fourier converge puntualmente a &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; si &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; es un punto de continuidad en &amp;lt;math&amp;gt;[-2,3]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Claramente, &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; es continua y satisface la condición de dirichlet. Además, se verifica que &amp;lt;math&amp;gt;f(x) \in L^2([-2, 3])&amp;lt;/math&amp;gt;, pues:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\int_{-2}^{3} (x e^{-x})^2 \, dx = \frac{5}{4 e^6} \left( e^{10} - 5 \right) &amp;lt; \infty.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concluimos con que su desarrollo en serie de Fourier converge en los puntos de continuidad a &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;. Finalmente, calculemos los coeficientes de Fourier. Para la base ortonormal asociada al espacio &amp;lt;math&amp;gt;L^2([-2, 3])&amp;lt;/math&amp;gt;, los coeficientes de Fourier de la función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; son:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \frac{1}{\sqrt{5}} \int_{-2}^{3} x e^x \, dx = \frac{-4 + e^5}{\sqrt{5} e^3}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
d_n = \frac{\sqrt{2}}{\sqrt{5}c} \int_{-2}^{3} x e^x \cos\left( n \frac{2\pi x - \pi}{5} \right) \, dx \quad \text{para} \quad n \geq 1&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
c_n = \frac{\sqrt{2}}{\sqrt{5}} \int_{-2}^{3} x e^x \sin\left( n \frac{2\pi x - \pi}{5} \right) \, dx \quad \text{para} \quad n \geq 1.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Calcularemos los coeficientes &amp;lt;math&amp;gt;d_n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;c_n&amp;lt;/math&amp;gt; mediante métodos numéricos en Python, obteniendo así la serie de Fourier de &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;[-2,3]&amp;lt;/math&amp;gt; y, por tanto, la gráfica de la función y de la serie para distintos valores de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Ejercicio5GrupoMAMBD.png|800px|thumb|right|Aproximación de Fourier con distintos n]]&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from scipy.integrate import quad&lt;br /&gt;
&lt;br /&gt;
# Definimos la función f(x)&lt;br /&gt;
def f(x):&lt;br /&gt;
    return x * np.exp(-x)&lt;br /&gt;
&lt;br /&gt;
# Intervalo de definición&lt;br /&gt;
a= -2&lt;br /&gt;
b = 3&lt;br /&gt;
&lt;br /&gt;
# Funciones base ortonormales en L^2([-2,3])&lt;br /&gt;
def phi0(x):&lt;br /&gt;
    return 1/np.sqrt(5)&lt;br /&gt;
&lt;br /&gt;
def phi(n, x):&lt;br /&gt;
    return np.sqrt(2/5) * np.cos(n * (2*np.pi*x - np.pi) / 5)&lt;br /&gt;
&lt;br /&gt;
def psi(n, x):&lt;br /&gt;
    return np.sqrt(2/5) * np.sin(n * (2*np.pi*x - np.pi) / 5)&lt;br /&gt;
&lt;br /&gt;
# Cálculo de los coeficientes de Fourier&lt;br /&gt;
d0, _ = quad(lambda x: f(x) * phi0(x), a, b)&lt;br /&gt;
&lt;br /&gt;
# Se calcularán los coeficientes para n=1,...,N_max&lt;br /&gt;
N_max = 20&lt;br /&gt;
d_coeffs = []  # para los coeficientes asociados a los cosenos&lt;br /&gt;
c_coeffs = []  # para los coeficientes asociados a los senos&lt;br /&gt;
&lt;br /&gt;
for n in range(1, N_max+1):&lt;br /&gt;
    d_n, _ = quad(lambda x: f(x) * phi(n, x), a, b)&lt;br /&gt;
    c_n, _ = quad(lambda x: f(x) * psi(n, x), a, b)&lt;br /&gt;
    d_coeffs.append(d_n)&lt;br /&gt;
    c_coeffs.append(c_n)&lt;br /&gt;
&lt;br /&gt;
# Función que reconstruye la serie de Fourier truncada a N términos&lt;br /&gt;
def fourier_series(x, N):&lt;br /&gt;
    s = d0 * phi0(x)&lt;br /&gt;
    for n in range(1, N+1):&lt;br /&gt;
        s += d_coeffs[n-1] * phi(n, x) + c_coeffs[n-1] * psi(n, x)&lt;br /&gt;
    return s&lt;br /&gt;
&lt;br /&gt;
x_vals = np.linspace(a, b, 400)&lt;br /&gt;
f_vals = f(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Lista de números de términos para la aproximación&lt;br /&gt;
n_list = [5, 10, 20]&lt;br /&gt;
&lt;br /&gt;
# Se generan tres gráficos, uno para cada valor de n&lt;br /&gt;
plt.figure(figsize=(15, 4))&lt;br /&gt;
for i, n in enumerate(n_list, 1):&lt;br /&gt;
    # Se evalúa la serie de Fourier para cada x&lt;br /&gt;
    s_vals = np.array([fourier_series(x, n) for x in x_vals])&lt;br /&gt;
    &lt;br /&gt;
    plt.subplot(1, 3, i)&lt;br /&gt;
    plt.plot(x_vals, f_vals, label=r'$f(x)= x e^-x$', color='blue', linestyle='--')&lt;br /&gt;
    plt.plot(x_vals, s_vals, label=f'Aproximación (n={n})', color='red')&lt;br /&gt;
    plt.title(f'Aproximación de Fourier con n = {n} términos')&lt;br /&gt;
    plt.xlabel('x')&lt;br /&gt;
    plt.ylabel('y')&lt;br /&gt;
    plt.legend()&lt;br /&gt;
    plt.grid(True)&lt;br /&gt;
&lt;br /&gt;
plt.tight_layout()&lt;br /&gt;
plt.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(MAMBD)&amp;diff=83930</id>
		<title>Series de Fourier (MAMBD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(MAMBD)&amp;diff=83930"/>
				<updated>2025-02-13T13:11:33Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Cambio de intervalo de aproximación */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
&lt;br /&gt;
El interés de las series de Fourier radica en su capacidad para aproximar, a partir de una base de funciones trigonométricas, aplicaciones periódicas ampliando así el alcance de los desarrollos de Taylor. Sea &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; una función integrable y periódica en &amp;lt;math&amp;gt;[-T,T]&amp;lt;/math&amp;gt;, dada la base &amp;lt;math&amp;gt;B=\left\{ \frac{1}{\sqrt{2T}} \right\} \cup &lt;br /&gt;
\left\{ \frac{1}{\sqrt{T}} \cdot \cos \left( \frac{n\pi x}{T} \right) \right\}_{n \in \mathbb{N}} &lt;br /&gt;
\cup &lt;br /&gt;
\left\{ \frac{1}{\sqrt{T}} \cdot \sin \left( \frac{n\pi x}{T} \right) \right\}_{n \in \mathbb{N}}&amp;lt;/math&amp;gt;, su serie de Fourier viene dada por la expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{equation*}&lt;br /&gt;
    f(x) \sim \frac{d_0}{\sqrt{2T}} + \sum_{n=1}^{\infty} d_n \cdot \cos \left( \frac{n\pi x}{T} \right) + \sum_{n=1}^{\infty} c_n \cdot \sin \left( \frac{n\pi x}{T} \right)&lt;br /&gt;
\end{equation*}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cuyos coeficientes son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
&amp;amp;\bullet \quad d_0 = \langle f, \frac{1}{\sqrt{2T}} \rangle = \int_{-T}^{T} f(x) \cdot \frac{1}{\sqrt{2T}} \,dx \\  &lt;br /&gt;
&amp;amp;\bullet \quad d_n = \langle f, \cos \left( \frac{n\pi x}{T} \right) \rangle = \int_{-T}^{T} f(x) \cdot \cos \left( \frac{n\pi x}{T} \right) \,dx \\  &lt;br /&gt;
&amp;amp;\bullet \quad c_n = \langle f, \sin \left( \frac{n\pi x}{T} \right) \rangle = \int_{-T}^{T} f(x) \cdot \sin \left( \frac{n\pi x}{T} \right) \,dx.&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Aproximación de una función continua=  &lt;br /&gt;
&lt;br /&gt;
Para ilustrar la aproximación por series trigonométricas, consideramos la función &amp;lt;math&amp;gt;f(x)=1-2\left|\frac{1}{2}-x\right|&amp;lt;/math&amp;gt; en el intervalo &amp;lt;math&amp;gt;[0,1]&amp;lt;/math&amp;gt;. Buscamos extenderla de forma impar obteniendo una función&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;g(x)=\left\{\begin{array}{cc}&lt;br /&gt;
    f(x), &amp;amp; x\in[0,1] \\&lt;br /&gt;
    -f(-x), &amp;amp; x\in[-1,0)&lt;br /&gt;
\end{array}\right..&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La extensión impar que buscamos viene dada por&lt;br /&gt;
&amp;lt;math&amp;gt;g(x)=\left\{\begin{array}{cc}&lt;br /&gt;
    -2-2x, &amp;amp; -1\leq x&amp;lt;-\frac{1}{2} \\&lt;br /&gt;
    2x, &amp;amp; -\frac{1}{2}\leq x&amp;lt;\frac{1}{2} \\&lt;br /&gt;
    2-2x, &amp;amp; \frac{1}{2}\leq x\leq1&lt;br /&gt;
\end{array}\right.,&amp;lt;/math&amp;gt; que es efectivamente una función continua en &amp;lt;math&amp;gt;[-1,1]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ahora, por ser &amp;lt;math&amp;gt;f\in L^2([-1,1])&amp;lt;/math&amp;gt;, utilizamos para la aproximación la base trigonométrica correspondiente &amp;lt;math&amp;gt;\left\{\frac{1}{2}, \cos(n\pi x), \sin(n\pi x)\right\}_{n\in\mathbb{N}}&amp;lt;/math&amp;gt;. Sin embargo, al haber extendido la función de forma impar, el producto escalar de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; con las funciones pares de la base, es decir &amp;lt;math&amp;gt;(\left\{\frac{1}{2}\right\}&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;\{\cos(n\pi x)\})&amp;lt;/math&amp;gt;, resultan ser impares. Con esto deducimos que integrar dicho producto en un intervalo simétrico da como resultado cero, pues las áreas positivas y negativas se anulan entre sí debido a la simetría de la función con respecto al origen. Entonces podemos definir &amp;lt;math&amp;gt;f_n(x)&amp;lt;/math&amp;gt; como la suma de los primeros &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; términos de la serie de Fourier&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;f_n(x)=\sum_{k=1}^n a_k \sin(k\pi x), \hspace{0.5cm} a_k=2\int_0^1 f(x)\sin(k\pi x).&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez hecho el análisis anterior, nos disponemos a ver gráficamente como a medida que aumentamos la cantidad de términos de la serie esta se aproxima mejor a la función original &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;. Para ello, hemos usado el lenguaje de programación de Python con el que hemos conseguido representar los siguientes gráficos, en ellos vemos como efectivamente, al aumentar la &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, los primeros términos de la serie de Fourier se acercan más y más a nuestra función original. Así mismo, por motivo de esta mejora en la aproximación, en la segunda gráfica podemos apreciar como el error disminuye conforme aumenta &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;; si observamos la segunda gráfica vemos como el error de aproximación desciende del orden &amp;lt;math&amp;gt;10^{-2}&amp;lt;/math&amp;gt; que es una cifra más que aceptable pues hemos de tener en cuenta que solamente hemos tomado 20 términos de una serie infinita.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:ComparacionFourierMAMBD.jpeg|400px|thumb|right|Comparación de la extensión impar con la aproximación de Fourier]]&lt;br /&gt;
[[Archivo:ErroresFourier.jpeg|400px|thumb|right|Comparación de la extensión impar con la aproximación de Fourier]]&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
#Primero, hemos definido la función del enunciado y su extensión impar. A continuación de eso, hemos creado dos funciones, las cuales crean los coeficientes de Fourier y la serie de Fourier, respectivamente. Además, se ha creado una última función para los errores. Usando matplotlib.pyplot, deja las siguientes gráficas:&lt;br /&gt;
&lt;br /&gt;
# Definimos la función del enunciado con la que trabajar&lt;br /&gt;
def f(x):&lt;br /&gt;
    return 1 - 2 * np.abs(1/2 - x)&lt;br /&gt;
&lt;br /&gt;
# Extensión impar de la propia función para poder aproximarla con la serie de Fourier&lt;br /&gt;
def odd_extension(x):&lt;br /&gt;
    return np.where(x &amp;lt; 0, -f(-x), f(x))&lt;br /&gt;
&lt;br /&gt;
# Cálculo de los coeficientes de la serie con integración numérica por medio del método del trapecio&lt;br /&gt;
def compute_coefficients(n_max, dx=1e-3):&lt;br /&gt;
    x = np.arange(0, 1, dx)&lt;br /&gt;
    a_k = []&lt;br /&gt;
    for k in range(1, n_max + 1):&lt;br /&gt;
        integrand = f(x) * np.sin(k * np.pi * x)&lt;br /&gt;
        a_k.append(2 * np.trapz(integrand, x))  # Integral numérica por trapecios&lt;br /&gt;
    return a_k&lt;br /&gt;
&lt;br /&gt;
# Construcción de la serie de Fourier&lt;br /&gt;
def fourier_approximation(x, a_k):&lt;br /&gt;
    f_n = np.zeros_like(x)&lt;br /&gt;
    for k, ak in enumerate(a_k, start=1):&lt;br /&gt;
        f_n += ak * np.sin(k * np.pi * x)&lt;br /&gt;
    return f_n&lt;br /&gt;
&lt;br /&gt;
# Valores de n&lt;br /&gt;
n_values = [1, 5, 10]&lt;br /&gt;
&lt;br /&gt;
# Discretización del intervalo&lt;br /&gt;
x = np.linspace(0, 1, 1000)&lt;br /&gt;
x_ext = np.linspace(-1, 1, 2000)&lt;br /&gt;
&lt;br /&gt;
# Gráfica de la función original&lt;br /&gt;
plt.plot(x, f(x), label='f(x)', color='black', linewidth=2)&lt;br /&gt;
&lt;br /&gt;
# Aproximaciones de Fourier con f extendida&lt;br /&gt;
for n in n_values:&lt;br /&gt;
    a_k = compute_coefficients(n)&lt;br /&gt;
    f_n = fourier_approximation(x_ext, a_k)&lt;br /&gt;
    plt.plot(x_ext, f_n, label=f'n={n}')&lt;br /&gt;
&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.xlabel('x')&lt;br /&gt;
plt.ylabel('f(x) y f_n(x)')&lt;br /&gt;
plt.title('Comparación de la extensión impar con la Aproximación de Fourier')&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Calculamos el error de estimación entre la correspondiente f_n(x) y f(x)&lt;br /&gt;
def compute_errors(n_values, x, dx=1e-3):&lt;br /&gt;
    L2_errors = []&lt;br /&gt;
    uniform_errors = []&lt;br /&gt;
    f_exact = odd_extension(x)&lt;br /&gt;
    for n in n_values:&lt;br /&gt;
        a_k = compute_coefficients(n, dx)&lt;br /&gt;
        f_n = fourier_approximation(x, a_k)&lt;br /&gt;
        error = np.abs(f_exact - f_n)&lt;br /&gt;
        L2_error = np.sqrt(np.trapz(error**2, x))  # Norma L^2&lt;br /&gt;
        uniform_error = np.max(error)  # Norma uniforme&lt;br /&gt;
        L2_errors.append(L2_error)&lt;br /&gt;
        uniform_errors.append(uniform_error)&lt;br /&gt;
    return L2_errors, uniform_errors&lt;br /&gt;
&lt;br /&gt;
# Valores de n&lt;br /&gt;
n_values2 = np.arange(1, 21)&lt;br /&gt;
&lt;br /&gt;
# Discretización del intervalo&lt;br /&gt;
x_ext = np.linspace(-1, 1, 2000)&lt;br /&gt;
&lt;br /&gt;
# Cálculo de errores&lt;br /&gt;
L2_errors, uniform_errors = compute_errors(n_values2, x_ext)&lt;br /&gt;
&lt;br /&gt;
# Gráfica de errores&lt;br /&gt;
plt.figure(figsize=(8, 5))&lt;br /&gt;
plt.plot(n_values2, L2_errors, label='Error L2', marker='o')&lt;br /&gt;
plt.plot(n_values2, uniform_errors, label='Error Uniforme', marker='s')&lt;br /&gt;
plt.yscale('log')&lt;br /&gt;
plt.xlabel('Número de términos n')&lt;br /&gt;
plt.ylabel('Error')&lt;br /&gt;
plt.title('Errores en función de n')&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Cambio de intervalo de aproximación=&lt;br /&gt;
&lt;br /&gt;
A continuación aproximaremos la función \( f(x) = x e^x \) en el intervalo \([-2, 3]\) mediante su serie de Fourier. En primer lugar, calcularemos la base trigonométrica asociada al espacio \( L^2([-2, 3]) \). Luego, daremos su desarrollo en serie de Fourier y finalmente aproximaremos &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; con los primeros 5, 10 y 20 términos de la serie obtenida.&lt;br /&gt;
&lt;br /&gt;
Como ya sabemos, en el espacio &amp;lt;math&amp;gt;L^2[-\pi, \pi]&amp;lt;/math&amp;gt; la base trigonométrica asociada es:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{B} = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}} \cos(nx), \frac{1}{\sqrt{\pi}} \sin(nx) \right\}_{n \in \mathbb{N}}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En general, para &amp;lt;math&amp;gt;L^2([a,b])&amp;lt;/math&amp;gt;, mediante el cambio de variable &amp;lt;math&amp;gt;&lt;br /&gt;
g(x) = \frac{2\pi}{b - a} (x - a) - \pi,&lt;br /&gt;
&amp;lt;/math&amp;gt; se tiene que la base trigonométrica asociada es&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} =&lt;br /&gt;
\left\{&lt;br /&gt;
\frac{1}{\sqrt{b - a}} \left[&lt;br /&gt;
\sqrt{\frac{2}{b - a}} \cos\left( n (\frac{2\pi(x - a)}{b - a} - \pi) \right),&lt;br /&gt;
\sqrt{\frac{2}{b - a}} \sin\left( n (\frac{2\pi(x - a)}{b - a} - \pi )\right)&lt;br /&gt;
\right]&lt;br /&gt;
\right\}_{n=1}^{\infty},&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
que es una base ortonormal para &amp;lt;math&amp;gt;L^2([a,b])&amp;lt;/math&amp;gt;. Bajo este cambio de variable, una función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;L^2([a,b])&amp;lt;/math&amp;gt; se puede expresar como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) = \frac{d_0}{\sqrt{b - a}}  + \sum_{n=1}^{\infty} d_n \cos\left(n g(x)\right) + \sum_{n=1}^{\infty} c_n \sin\left(n g(x)\right),&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;g(x)&amp;lt;/math&amp;gt; es el cambio de variable aplicado, y &amp;lt;math&amp;gt;d_n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;c_n&amp;lt;/math&amp;gt; son los coeficientes correspondientes. De esta manera, &amp;lt;math&amp;gt;g(x) \in [-\pi, \pi]&amp;lt;/math&amp;gt;, lo que permite trasladar la base ortonormal del espacio &amp;lt;math&amp;gt;L^2(-\pi, \pi)&amp;lt;/math&amp;gt; al nuevo intervalo &amp;lt;math&amp;gt;[a, b]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ahora, pasemos de lo general a nuestro caso concreto, el intervalo  &amp;lt;math&amp;gt;[-2, 3]&amp;lt;/math&amp;gt;. Obtenemos que:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \sim \frac{d_0}{\sqrt{5}}  + \sum_{n=1}^{\infty} d_n \frac{\sqrt{2}}{\sqrt{5}}\cos\left(n \frac{2\pi x - \pi}{5}\right) + \sum_{n=1}^{\infty} c_n \frac{\sqrt{2}}{\sqrt{5}}\sin\left(n \frac{2\pi x - \pi}{5}\right),&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Definición:''' El espacio &amp;lt;math&amp;gt;L^2(-T, T)&amp;lt;/math&amp;gt; se define como el conjunto de funciones medibles &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; en el intervalo &amp;lt;math&amp;gt;[-T, T]&amp;lt;/math&amp;gt; tales que:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\int_{-T}^{T} |f(x)|^2 \, dx &amp;lt; \infty.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Definición:''' Decimos que una función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; satisface la '''condición de dirichlet''' si &amp;lt;math&amp;gt;f(x) \in L^2([-T,T])&amp;lt;/math&amp;gt;, es continua salvo en un conjunto finito de puntos y podemos dividir &amp;lt;math&amp;gt;[-T,T]&amp;lt;/math&amp;gt; en un conjunto de subintervalos en los que &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; es monótona.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Teorema:''' Sea &amp;lt;math&amp;gt;f \in L^2([-2, 3])&amp;lt;/math&amp;gt;  una función continua y que satisface la condición de Dirichlet, entonces  su serie de Fourier converge puntualmente a &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; si &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; es un punto de continuidad en &amp;lt;math&amp;gt;[-2,3]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Claramente, &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; es continua y satisface la condición de dirichlet. Además, se verifica que &amp;lt;math&amp;gt;f(x) \in L^2([-2, 3])&amp;lt;/math&amp;gt;, pues:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\int_{-2}^{3} (x e^{-x})^2 \, dx = \frac{5}{4 e^6} \left( e^{10} - 5 \right) &amp;lt; \infty.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concluimos con que su desarrollo en serie de Fourier converge en los puntos de continuidad a &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;. Finalmente, calculemos los coeficientes de Fourier. Para la base ortonormal asociada al espacio &amp;lt;math&amp;gt;L^2([-2, 3])&amp;lt;/math&amp;gt;, los coeficientes de Fourier de la función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; son:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \frac{1}{\sqrt{5}} \int_{-2}^{3} x e^x \, dx = \frac{-4 + e^5}{\sqrt{5} e^3}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
d_n = \frac{\sqrt{2}}{\sqrt{5}c} \int_{-2}^{3} x e^x \cos\left( n \frac{2\pi x - \pi}{5} \right) \, dx \quad \text{para} \quad n \geq 1&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
c_n = \frac{\sqrt{2}}{\sqrt{5}} \int_{-2}^{3} x e^x \sin\left( n \frac{2\pi x - \pi}{5} \right) \, dx \quad \text{para} \quad n \geq 1.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Calcularemos los coeficientes &amp;lt;math&amp;gt;d_n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;c_n&amp;lt;/math&amp;gt; mediante métodos numéricos en Python, obteniendo así la serie de Fourier de &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;[-2,3]&amp;lt;/math&amp;gt; y, por tanto, la gráfica de la función y de la serie para distintos valores de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Insetar fotos (no se hacerlo)'''&lt;br /&gt;
[[Archivo:Ejercicio5GrupoMAMBD.png|400px|thumb|right|Aproximación de Fourier con distintos n]]&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from scipy.integrate import quad&lt;br /&gt;
&lt;br /&gt;
# Definimos la función f(x)&lt;br /&gt;
def f(x):&lt;br /&gt;
    return x * np.exp(-x)&lt;br /&gt;
&lt;br /&gt;
# Intervalo de definición&lt;br /&gt;
a= -2&lt;br /&gt;
b = 3&lt;br /&gt;
&lt;br /&gt;
# Funciones base ortonormales en L^2([-2,3])&lt;br /&gt;
def phi0(x):&lt;br /&gt;
    return 1/np.sqrt(5)&lt;br /&gt;
&lt;br /&gt;
def phi(n, x):&lt;br /&gt;
    return np.sqrt(2/5) * np.cos(n * (2*np.pi*x - np.pi) / 5)&lt;br /&gt;
&lt;br /&gt;
def psi(n, x):&lt;br /&gt;
    return np.sqrt(2/5) * np.sin(n * (2*np.pi*x - np.pi) / 5)&lt;br /&gt;
&lt;br /&gt;
# Cálculo de los coeficientes de Fourier&lt;br /&gt;
d0, _ = quad(lambda x: f(x) * phi0(x), a, b)&lt;br /&gt;
&lt;br /&gt;
# Se calcularán los coeficientes para n=1,...,N_max&lt;br /&gt;
N_max = 20&lt;br /&gt;
d_coeffs = []  # para los coeficientes asociados a los cosenos&lt;br /&gt;
c_coeffs = []  # para los coeficientes asociados a los senos&lt;br /&gt;
&lt;br /&gt;
for n in range(1, N_max+1):&lt;br /&gt;
    d_n, _ = quad(lambda x: f(x) * phi(n, x), a, b)&lt;br /&gt;
    c_n, _ = quad(lambda x: f(x) * psi(n, x), a, b)&lt;br /&gt;
    d_coeffs.append(d_n)&lt;br /&gt;
    c_coeffs.append(c_n)&lt;br /&gt;
&lt;br /&gt;
# Función que reconstruye la serie de Fourier truncada a N términos&lt;br /&gt;
def fourier_series(x, N):&lt;br /&gt;
    s = d0 * phi0(x)&lt;br /&gt;
    for n in range(1, N+1):&lt;br /&gt;
        s += d_coeffs[n-1] * phi(n, x) + c_coeffs[n-1] * psi(n, x)&lt;br /&gt;
    return s&lt;br /&gt;
&lt;br /&gt;
x_vals = np.linspace(a, b, 400)&lt;br /&gt;
f_vals = f(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Lista de números de términos para la aproximación&lt;br /&gt;
n_list = [5, 10, 20]&lt;br /&gt;
&lt;br /&gt;
# Se generan tres gráficos, uno para cada valor de n&lt;br /&gt;
plt.figure(figsize=(15, 4))&lt;br /&gt;
for i, n in enumerate(n_list, 1):&lt;br /&gt;
    # Se evalúa la serie de Fourier para cada x&lt;br /&gt;
    s_vals = np.array([fourier_series(x, n) for x in x_vals])&lt;br /&gt;
    &lt;br /&gt;
    plt.subplot(1, 3, i)&lt;br /&gt;
    plt.plot(x_vals, f_vals, label=r'$f(x)= x e^-x$', color='blue', linestyle='--')&lt;br /&gt;
    plt.plot(x_vals, s_vals, label=f'Aproximación (n={n})', color='red')&lt;br /&gt;
    plt.title(f'Aproximación de Fourier con n = {n} términos')&lt;br /&gt;
    plt.xlabel('x')&lt;br /&gt;
    plt.ylabel('y')&lt;br /&gt;
    plt.legend()&lt;br /&gt;
    plt.grid(True)&lt;br /&gt;
&lt;br /&gt;
plt.tight_layout()&lt;br /&gt;
plt.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(MAMBD)&amp;diff=83929</id>
		<title>Series de Fourier (MAMBD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(MAMBD)&amp;diff=83929"/>
				<updated>2025-02-13T13:10:31Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Aproximación de una función continua */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
&lt;br /&gt;
El interés de las series de Fourier radica en su capacidad para aproximar, a partir de una base de funciones trigonométricas, aplicaciones periódicas ampliando así el alcance de los desarrollos de Taylor. Sea &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; una función integrable y periódica en &amp;lt;math&amp;gt;[-T,T]&amp;lt;/math&amp;gt;, dada la base &amp;lt;math&amp;gt;B=\left\{ \frac{1}{\sqrt{2T}} \right\} \cup &lt;br /&gt;
\left\{ \frac{1}{\sqrt{T}} \cdot \cos \left( \frac{n\pi x}{T} \right) \right\}_{n \in \mathbb{N}} &lt;br /&gt;
\cup &lt;br /&gt;
\left\{ \frac{1}{\sqrt{T}} \cdot \sin \left( \frac{n\pi x}{T} \right) \right\}_{n \in \mathbb{N}}&amp;lt;/math&amp;gt;, su serie de Fourier viene dada por la expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{equation*}&lt;br /&gt;
    f(x) \sim \frac{d_0}{\sqrt{2T}} + \sum_{n=1}^{\infty} d_n \cdot \cos \left( \frac{n\pi x}{T} \right) + \sum_{n=1}^{\infty} c_n \cdot \sin \left( \frac{n\pi x}{T} \right)&lt;br /&gt;
\end{equation*}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cuyos coeficientes son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
&amp;amp;\bullet \quad d_0 = \langle f, \frac{1}{\sqrt{2T}} \rangle = \int_{-T}^{T} f(x) \cdot \frac{1}{\sqrt{2T}} \,dx \\  &lt;br /&gt;
&amp;amp;\bullet \quad d_n = \langle f, \cos \left( \frac{n\pi x}{T} \right) \rangle = \int_{-T}^{T} f(x) \cdot \cos \left( \frac{n\pi x}{T} \right) \,dx \\  &lt;br /&gt;
&amp;amp;\bullet \quad c_n = \langle f, \sin \left( \frac{n\pi x}{T} \right) \rangle = \int_{-T}^{T} f(x) \cdot \sin \left( \frac{n\pi x}{T} \right) \,dx.&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Aproximación de una función continua=  &lt;br /&gt;
&lt;br /&gt;
Para ilustrar la aproximación por series trigonométricas, consideramos la función &amp;lt;math&amp;gt;f(x)=1-2\left|\frac{1}{2}-x\right|&amp;lt;/math&amp;gt; en el intervalo &amp;lt;math&amp;gt;[0,1]&amp;lt;/math&amp;gt;. Buscamos extenderla de forma impar obteniendo una función&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;g(x)=\left\{\begin{array}{cc}&lt;br /&gt;
    f(x), &amp;amp; x\in[0,1] \\&lt;br /&gt;
    -f(-x), &amp;amp; x\in[-1,0)&lt;br /&gt;
\end{array}\right..&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La extensión impar que buscamos viene dada por&lt;br /&gt;
&amp;lt;math&amp;gt;g(x)=\left\{\begin{array}{cc}&lt;br /&gt;
    -2-2x, &amp;amp; -1\leq x&amp;lt;-\frac{1}{2} \\&lt;br /&gt;
    2x, &amp;amp; -\frac{1}{2}\leq x&amp;lt;\frac{1}{2} \\&lt;br /&gt;
    2-2x, &amp;amp; \frac{1}{2}\leq x\leq1&lt;br /&gt;
\end{array}\right.,&amp;lt;/math&amp;gt; que es efectivamente una función continua en &amp;lt;math&amp;gt;[-1,1]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ahora, por ser &amp;lt;math&amp;gt;f\in L^2([-1,1])&amp;lt;/math&amp;gt;, utilizamos para la aproximación la base trigonométrica correspondiente &amp;lt;math&amp;gt;\left\{\frac{1}{2}, \cos(n\pi x), \sin(n\pi x)\right\}_{n\in\mathbb{N}}&amp;lt;/math&amp;gt;. Sin embargo, al haber extendido la función de forma impar, el producto escalar de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; con las funciones pares de la base, es decir &amp;lt;math&amp;gt;(\left\{\frac{1}{2}\right\}&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;\{\cos(n\pi x)\})&amp;lt;/math&amp;gt;, resultan ser impares. Con esto deducimos que integrar dicho producto en un intervalo simétrico da como resultado cero, pues las áreas positivas y negativas se anulan entre sí debido a la simetría de la función con respecto al origen. Entonces podemos definir &amp;lt;math&amp;gt;f_n(x)&amp;lt;/math&amp;gt; como la suma de los primeros &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; términos de la serie de Fourier&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;f_n(x)=\sum_{k=1}^n a_k \sin(k\pi x), \hspace{0.5cm} a_k=2\int_0^1 f(x)\sin(k\pi x).&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez hecho el análisis anterior, nos disponemos a ver gráficamente como a medida que aumentamos la cantidad de términos de la serie esta se aproxima mejor a la función original &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;. Para ello, hemos usado el lenguaje de programación de Python con el que hemos conseguido representar los siguientes gráficos, en ellos vemos como efectivamente, al aumentar la &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, los primeros términos de la serie de Fourier se acercan más y más a nuestra función original. Así mismo, por motivo de esta mejora en la aproximación, en la segunda gráfica podemos apreciar como el error disminuye conforme aumenta &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;; si observamos la segunda gráfica vemos como el error de aproximación desciende del orden &amp;lt;math&amp;gt;10^{-2}&amp;lt;/math&amp;gt; que es una cifra más que aceptable pues hemos de tener en cuenta que solamente hemos tomado 20 términos de una serie infinita.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:ComparacionFourierMAMBD.jpeg|400px|thumb|right|Comparación de la extensión impar con la aproximación de Fourier]]&lt;br /&gt;
[[Archivo:ErroresFourier.jpeg|400px|thumb|right|Comparación de la extensión impar con la aproximación de Fourier]]&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
#Primero, hemos definido la función del enunciado y su extensión impar. A continuación de eso, hemos creado dos funciones, las cuales crean los coeficientes de Fourier y la serie de Fourier, respectivamente. Además, se ha creado una última función para los errores. Usando matplotlib.pyplot, deja las siguientes gráficas:&lt;br /&gt;
&lt;br /&gt;
# Definimos la función del enunciado con la que trabajar&lt;br /&gt;
def f(x):&lt;br /&gt;
    return 1 - 2 * np.abs(1/2 - x)&lt;br /&gt;
&lt;br /&gt;
# Extensión impar de la propia función para poder aproximarla con la serie de Fourier&lt;br /&gt;
def odd_extension(x):&lt;br /&gt;
    return np.where(x &amp;lt; 0, -f(-x), f(x))&lt;br /&gt;
&lt;br /&gt;
# Cálculo de los coeficientes de la serie con integración numérica por medio del método del trapecio&lt;br /&gt;
def compute_coefficients(n_max, dx=1e-3):&lt;br /&gt;
    x = np.arange(0, 1, dx)&lt;br /&gt;
    a_k = []&lt;br /&gt;
    for k in range(1, n_max + 1):&lt;br /&gt;
        integrand = f(x) * np.sin(k * np.pi * x)&lt;br /&gt;
        a_k.append(2 * np.trapz(integrand, x))  # Integral numérica por trapecios&lt;br /&gt;
    return a_k&lt;br /&gt;
&lt;br /&gt;
# Construcción de la serie de Fourier&lt;br /&gt;
def fourier_approximation(x, a_k):&lt;br /&gt;
    f_n = np.zeros_like(x)&lt;br /&gt;
    for k, ak in enumerate(a_k, start=1):&lt;br /&gt;
        f_n += ak * np.sin(k * np.pi * x)&lt;br /&gt;
    return f_n&lt;br /&gt;
&lt;br /&gt;
# Valores de n&lt;br /&gt;
n_values = [1, 5, 10]&lt;br /&gt;
&lt;br /&gt;
# Discretización del intervalo&lt;br /&gt;
x = np.linspace(0, 1, 1000)&lt;br /&gt;
x_ext = np.linspace(-1, 1, 2000)&lt;br /&gt;
&lt;br /&gt;
# Gráfica de la función original&lt;br /&gt;
plt.plot(x, f(x), label='f(x)', color='black', linewidth=2)&lt;br /&gt;
&lt;br /&gt;
# Aproximaciones de Fourier con f extendida&lt;br /&gt;
for n in n_values:&lt;br /&gt;
    a_k = compute_coefficients(n)&lt;br /&gt;
    f_n = fourier_approximation(x_ext, a_k)&lt;br /&gt;
    plt.plot(x_ext, f_n, label=f'n={n}')&lt;br /&gt;
&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.xlabel('x')&lt;br /&gt;
plt.ylabel('f(x) y f_n(x)')&lt;br /&gt;
plt.title('Comparación de la extensión impar con la Aproximación de Fourier')&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Calculamos el error de estimación entre la correspondiente f_n(x) y f(x)&lt;br /&gt;
def compute_errors(n_values, x, dx=1e-3):&lt;br /&gt;
    L2_errors = []&lt;br /&gt;
    uniform_errors = []&lt;br /&gt;
    f_exact = odd_extension(x)&lt;br /&gt;
    for n in n_values:&lt;br /&gt;
        a_k = compute_coefficients(n, dx)&lt;br /&gt;
        f_n = fourier_approximation(x, a_k)&lt;br /&gt;
        error = np.abs(f_exact - f_n)&lt;br /&gt;
        L2_error = np.sqrt(np.trapz(error**2, x))  # Norma L^2&lt;br /&gt;
        uniform_error = np.max(error)  # Norma uniforme&lt;br /&gt;
        L2_errors.append(L2_error)&lt;br /&gt;
        uniform_errors.append(uniform_error)&lt;br /&gt;
    return L2_errors, uniform_errors&lt;br /&gt;
&lt;br /&gt;
# Valores de n&lt;br /&gt;
n_values2 = np.arange(1, 21)&lt;br /&gt;
&lt;br /&gt;
# Discretización del intervalo&lt;br /&gt;
x_ext = np.linspace(-1, 1, 2000)&lt;br /&gt;
&lt;br /&gt;
# Cálculo de errores&lt;br /&gt;
L2_errors, uniform_errors = compute_errors(n_values2, x_ext)&lt;br /&gt;
&lt;br /&gt;
# Gráfica de errores&lt;br /&gt;
plt.figure(figsize=(8, 5))&lt;br /&gt;
plt.plot(n_values2, L2_errors, label='Error L2', marker='o')&lt;br /&gt;
plt.plot(n_values2, uniform_errors, label='Error Uniforme', marker='s')&lt;br /&gt;
plt.yscale('log')&lt;br /&gt;
plt.xlabel('Número de términos n')&lt;br /&gt;
plt.ylabel('Error')&lt;br /&gt;
plt.title('Errores en función de n')&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Cambio de intervalo de aproximación=&lt;br /&gt;
&lt;br /&gt;
A continuación aproximaremos la función \( f(x) = x e^x \) en el intervalo \([-2, 3]\) mediante su serie de Fourier. En primer lugar, calcularemos la base trigonométrica asociada al espacio \( L^2([-2, 3]) \). Luego, daremos su desarrollo en serie de Fourier y finalmente aproximaremos &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; con los primeros 5, 10 y 20 términos de la serie obtenida.&lt;br /&gt;
&lt;br /&gt;
Como ya sabemos, en el espacio &amp;lt;math&amp;gt;L^2[-\pi, \pi]&amp;lt;/math&amp;gt; la base trigonométrica asociada es:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{B} = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}} \cos(nx), \frac{1}{\sqrt{\pi}} \sin(nx) \right\}_{n \in \mathbb{N}}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En general, para &amp;lt;math&amp;gt;L^2([a,b])&amp;lt;/math&amp;gt;, mediante el cambio de variable &amp;lt;math&amp;gt;&lt;br /&gt;
g(x) = \frac{2\pi}{b - a} (x - a) - \pi,&lt;br /&gt;
&amp;lt;/math&amp;gt; se tiene que la base trigonométrica asociada es&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} =&lt;br /&gt;
\left\{&lt;br /&gt;
\frac{1}{\sqrt{b - a}} \left[&lt;br /&gt;
\sqrt{\frac{2}{b - a}} \cos\left( n (\frac{2\pi(x - a)}{b - a} - \pi) \right),&lt;br /&gt;
\sqrt{\frac{2}{b - a}} \sin\left( n (\frac{2\pi(x - a)}{b - a} - \pi )\right)&lt;br /&gt;
\right]&lt;br /&gt;
\right\}_{n=1}^{\infty},&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
que es una base ortonormal para &amp;lt;math&amp;gt;L^2([a,b])&amp;lt;/math&amp;gt;. Bajo este cambio de variable, una función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;L^2([a,b])&amp;lt;/math&amp;gt; se puede expresar como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) = \frac{d_0}{\sqrt{b - a}}  + \sum_{n=1}^{\infty} d_n \cos\left(n g(x)\right) + \sum_{n=1}^{\infty} c_n \sin\left(n g(x)\right),&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;g(x)&amp;lt;/math&amp;gt; es el cambio de variable aplicado, y &amp;lt;math&amp;gt;d_n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;c_n&amp;lt;/math&amp;gt; son los coeficientes correspondientes. De esta manera, &amp;lt;math&amp;gt;g(x) \in [-\pi, \pi]&amp;lt;/math&amp;gt;, lo que permite trasladar la base ortonormal del espacio &amp;lt;math&amp;gt;L^2(-\pi, \pi)&amp;lt;/math&amp;gt; al nuevo intervalo &amp;lt;math&amp;gt;[a, b]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ahora, pasemos de lo general a nuestro caso concreto, el intervalo  &amp;lt;math&amp;gt;[-2, 3]&amp;lt;/math&amp;gt;. Obtenemos que:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \sim \frac{d_0}{\sqrt{5}}  + \sum_{n=1}^{\infty} d_n \frac{\sqrt{2}}{\sqrt{5}}\cos\left(n \frac{2\pi x - \pi}{5}\right) + \sum_{n=1}^{\infty} c_n \frac{\sqrt{2}}{\sqrt{5}}\sin\left(n \frac{2\pi x - \pi}{5}\right),&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Definición:''' El espacio &amp;lt;math&amp;gt;L^2(-T, T)&amp;lt;/math&amp;gt; se define como el conjunto de funciones medibles &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; en el intervalo &amp;lt;math&amp;gt;[-T, T]&amp;lt;/math&amp;gt; tales que:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\int_{-T}^{T} |f(x)|^2 \, dx &amp;lt; \infty.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Definición:''' Decimos que una función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; satisface la '''condición de dirichlet''' si &amp;lt;math&amp;gt;f(x) \in L^2([-T,T])&amp;lt;/math&amp;gt;, es continua salvo en un conjunto finito de puntos y podemos dividir &amp;lt;math&amp;gt;[-T,T]&amp;lt;/math&amp;gt; en un conjunto de subintervalos en los que &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; es monótona.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Teorema:''' Sea &amp;lt;math&amp;gt;f \in L^2([-2, 3])&amp;lt;/math&amp;gt;  una función continua y que satisface la condición de Dirichlet, entonces  su serie de Fourier converge puntualmente a &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; si &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; es un punto de continuidad en &amp;lt;math&amp;gt;[-2,3]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Claramente, &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; es continua y satisface la condición de dirichlet. Además, se verifica que &amp;lt;math&amp;gt;f(x) \in L^2([-2, 3])&amp;lt;/math&amp;gt;, pues:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\int_{-2}^{3} (x e^{-x})^2 \, dx = \frac{5}{4 e^6} \left( e^{10} - 5 \right) &amp;lt; \infty.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concluimos con que su desarrollo en serie de Fourier converge en los puntos de continuidad a &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;. Finalmente, calculemos los coeficientes de Fourier. Para la base ortonormal asociada al espacio &amp;lt;math&amp;gt;L^2([-2, 3])&amp;lt;/math&amp;gt;, los coeficientes de Fourier de la función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; son:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \frac{1}{\sqrt{5}} \int_{-2}^{3} x e^x \, dx = \frac{-4 + e^5}{\sqrt{5} e^3}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
d_n = \frac{\sqrt{2}}{\sqrt{5}c} \int_{-2}^{3} x e^x \cos\left( n \frac{2\pi x - \pi}{5} \right) \, dx \quad \text{para} \quad n \geq 1&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
c_n = \frac{\sqrt{2}}{\sqrt{5}} \int_{-2}^{3} x e^x \sin\left( n \frac{2\pi x - \pi}{5} \right) \, dx \quad \text{para} \quad n \geq 1.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Calcularemos los coeficientes &amp;lt;math&amp;gt;d_n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;c_n&amp;lt;/math&amp;gt; mediante métodos numéricos en Python, obteniendo así la serie de Fourier de &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;[-2,3]&amp;lt;/math&amp;gt; y, por tanto, la gráfica de la función y de la serie para distintos valores de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Insetar fotos (no se hacerlo)'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from scipy.integrate import quad&lt;br /&gt;
&lt;br /&gt;
# Definimos la función f(x)&lt;br /&gt;
def f(x):&lt;br /&gt;
    return x * np.exp(-x)&lt;br /&gt;
&lt;br /&gt;
# Intervalo de definición&lt;br /&gt;
a= -2&lt;br /&gt;
b = 3&lt;br /&gt;
&lt;br /&gt;
# Funciones base ortonormales en L^2([-2,3])&lt;br /&gt;
def phi0(x):&lt;br /&gt;
    return 1/np.sqrt(5)&lt;br /&gt;
&lt;br /&gt;
def phi(n, x):&lt;br /&gt;
    return np.sqrt(2/5) * np.cos(n * (2*np.pi*x - np.pi) / 5)&lt;br /&gt;
&lt;br /&gt;
def psi(n, x):&lt;br /&gt;
    return np.sqrt(2/5) * np.sin(n * (2*np.pi*x - np.pi) / 5)&lt;br /&gt;
&lt;br /&gt;
# Cálculo de los coeficientes de Fourier&lt;br /&gt;
d0, _ = quad(lambda x: f(x) * phi0(x), a, b)&lt;br /&gt;
&lt;br /&gt;
# Se calcularán los coeficientes para n=1,...,N_max&lt;br /&gt;
N_max = 20&lt;br /&gt;
d_coeffs = []  # para los coeficientes asociados a los cosenos&lt;br /&gt;
c_coeffs = []  # para los coeficientes asociados a los senos&lt;br /&gt;
&lt;br /&gt;
for n in range(1, N_max+1):&lt;br /&gt;
    d_n, _ = quad(lambda x: f(x) * phi(n, x), a, b)&lt;br /&gt;
    c_n, _ = quad(lambda x: f(x) * psi(n, x), a, b)&lt;br /&gt;
    d_coeffs.append(d_n)&lt;br /&gt;
    c_coeffs.append(c_n)&lt;br /&gt;
&lt;br /&gt;
# Función que reconstruye la serie de Fourier truncada a N términos&lt;br /&gt;
def fourier_series(x, N):&lt;br /&gt;
    s = d0 * phi0(x)&lt;br /&gt;
    for n in range(1, N+1):&lt;br /&gt;
        s += d_coeffs[n-1] * phi(n, x) + c_coeffs[n-1] * psi(n, x)&lt;br /&gt;
    return s&lt;br /&gt;
&lt;br /&gt;
x_vals = np.linspace(a, b, 400)&lt;br /&gt;
f_vals = f(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Lista de números de términos para la aproximación&lt;br /&gt;
n_list = [5, 10, 20]&lt;br /&gt;
&lt;br /&gt;
# Se generan tres gráficos, uno para cada valor de n&lt;br /&gt;
plt.figure(figsize=(15, 4))&lt;br /&gt;
for i, n in enumerate(n_list, 1):&lt;br /&gt;
    # Se evalúa la serie de Fourier para cada x&lt;br /&gt;
    s_vals = np.array([fourier_series(x, n) for x in x_vals])&lt;br /&gt;
    &lt;br /&gt;
    plt.subplot(1, 3, i)&lt;br /&gt;
    plt.plot(x_vals, f_vals, label=r'$f(x)= x e^-x$', color='blue', linestyle='--')&lt;br /&gt;
    plt.plot(x_vals, s_vals, label=f'Aproximación (n={n})', color='red')&lt;br /&gt;
    plt.title(f'Aproximación de Fourier con n = {n} términos')&lt;br /&gt;
    plt.xlabel('x')&lt;br /&gt;
    plt.ylabel('y')&lt;br /&gt;
    plt.legend()&lt;br /&gt;
    plt.grid(True)&lt;br /&gt;
&lt;br /&gt;
plt.tight_layout()&lt;br /&gt;
plt.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Ejercicio5GrupoMAMBD.png&amp;diff=83928</id>
		<title>Archivo:Ejercicio5GrupoMAMBD.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Ejercicio5GrupoMAMBD.png&amp;diff=83928"/>
				<updated>2025-02-13T13:09:15Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(MAMBD)&amp;diff=83864</id>
		<title>Series de Fourier (MAMBD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(MAMBD)&amp;diff=83864"/>
				<updated>2025-02-12T20:13:39Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Aproximación de una función continua */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
&lt;br /&gt;
El interés de las series de Fourier radica en su capacidad para aproximar, a partir de una base de funciones trigonométricas, ampliando así el alcance de los desarrollos de Taylor. Sea &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; una función integrable y periódica en &amp;lt;math&amp;gt;[-T,T]&amp;lt;/math&amp;gt;, dada la base &amp;lt;math&amp;gt;B=\left\{ \frac{1}{\sqrt{2T}} \right\} \cup &lt;br /&gt;
\left\{ \frac{1}{\sqrt{T}} \cdot \cos \left( \frac{n\pi x}{T} \right) \right\}_{n \in \mathbb{N}} &lt;br /&gt;
\cup &lt;br /&gt;
\left\{ \frac{1}{\sqrt{T}} \cdot \sin \left( \frac{n\pi x}{T} \right) \right\}_{n \in \mathbb{N}}&amp;lt;/math&amp;gt;, su serie de Fourier viene dada por la expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{equation*}&lt;br /&gt;
    f(x) \sim \frac{d_0}{\sqrt{2T}} + \sum_{n=1}^{\infty} d_n \cdot \cos \left( \frac{n\pi x}{T} \right) + \sum_{n=1}^{\infty} c_n \cdot \sin \left( \frac{n\pi x}{T} \right)&lt;br /&gt;
\end{equation*}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cuyos coeficientes son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
&amp;amp;\bullet \quad d_0 = \langle f, \frac{1}{\sqrt{2T}} \rangle = \int_{-T}^{T} f(x) \cdot \frac{1}{\sqrt{2T}} \,dx \\  &lt;br /&gt;
&amp;amp;\bullet \quad d_n = \langle f, \cos \left( \frac{n\pi x}{T} \right) \rangle = \int_{-T}^{T} f(x) \cdot \cos \left( \frac{n\pi x}{T} \right) \,dx \\  &lt;br /&gt;
&amp;amp;\bullet \quad c_n = \langle f, \sin \left( \frac{n\pi x}{T} \right) \rangle = \int_{-T}^{T} f(x) \cdot \sin \left( \frac{n\pi x}{T} \right) \,dx.&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Aproximación de una función continua=  &lt;br /&gt;
&lt;br /&gt;
Para ilustrar la aproximación por series trigonométricas, consideramos la función &amp;lt;math&amp;gt;f(x)=1-2\left|\frac{1}{2}-x\right|&amp;lt;/math&amp;gt; en el intervalo &amp;lt;math&amp;gt;[0,1]&amp;lt;/math&amp;gt;. Buscamos extenderla de forma impar obteniendo una función&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;g(x)=\left\{\begin{array}{cc}&lt;br /&gt;
    f(x), &amp;amp; x\in[0,1] \\&lt;br /&gt;
    -f(-x), &amp;amp; x\in[-1,0)&lt;br /&gt;
\end{array}\right..&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En nuestro caso, la extensión impar viene dada por&lt;br /&gt;
&amp;lt;math&amp;gt;g(x)=\left\{\begin{array}{cc}&lt;br /&gt;
    -2-2x, &amp;amp; -1\leq x&amp;lt;-\frac{1}{2} \\&lt;br /&gt;
    2x, &amp;amp; -\frac{1}{2}\leq x&amp;lt;\frac{1}{2} \\&lt;br /&gt;
    2-2x, &amp;amp; \frac{1}{2}\leq x\leq1&lt;br /&gt;
\end{array}\right.,&amp;lt;/math&amp;gt; que es efectivamente una función continua en &amp;lt;math&amp;gt;[-1,1]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ahora, por ser &amp;lt;math&amp;gt;f\in L^2([-1,1])&amp;lt;/math&amp;gt;, utilizamos para la aproximación la base trigonométrica correspondiente &amp;lt;math&amp;gt;\left\{\frac{1}{2}, \cos(n\pi x), \sin(n\pi x)\right\}_{n\in\mathbb{N}}&amp;lt;/math&amp;gt;. Sin embargo, al haber extendido la función de forma impar, el producto escalar de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; con las funciones pares de la base &amp;lt;math&amp;gt;(\left\{\frac{1}{2}\right\}&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;\{\cos(n\pi x)\})&amp;lt;/math&amp;gt; resultan ser impares. Con esto deducimos que al integrar dicho producto en un intervalo simétrico, el resultado es cero, ya que las áreas positivas y negativas se anulan entre sí debido a la simetría de la función con respecto al origen. Entonces podemos definir &amp;lt;math&amp;gt;f_n(x)&amp;lt;/math&amp;gt; como la suma de los primeros &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; términos de la serie de Fourier&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;f_n(x)=\sum_{k=1}^n a_k \sin(k\pi x), \hspace{0.5cm} a_k=2\int_0^1 f(x)\sin(k\pi x).&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez hecho el análisis anterior, nos disponemos a ver gráficamente los resultados, para ello, hemos usado el lenguaje de programación de Python. Primero, hemos definido la función del enunciado y su extensión impar. A continuación de eso, hemos creado dos funciones, las cuales crean los coeficientes de Fourier y la serie de Fourier, respectivamente. Además, se ha creado una última función para los errores. Usando matplotlib.pyplot, deja las siguientes gráficas:&lt;br /&gt;
'''Insetar fotos (no se hacerlo)'''&lt;br /&gt;
[[Archivo:ComparacionFourierMAMBD.jpeg|400px|thumb|right|Comparación de la extensión impar con la aproximación de Fourier]]&lt;br /&gt;
{{python|&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
def f(x):&lt;br /&gt;
    return 1 - 2 * np.abs(1/2 - x)&lt;br /&gt;
&lt;br /&gt;
def odd_extension(x):&lt;br /&gt;
    return np.where(x &amp;lt; 0, -f(-x), f(x))&lt;br /&gt;
&lt;br /&gt;
def compute_coefficients(n_max, dx=1e-3):&lt;br /&gt;
    x = np.arange(0, 1, dx)&lt;br /&gt;
    a_k = []&lt;br /&gt;
    for k in range(1, n_max + 1):&lt;br /&gt;
        integrand = f(x) * np.sin(k * np.pi * x)&lt;br /&gt;
        a_k.append(2 * np.trapz(integrand, x))  # Integral numérica por trapecios&lt;br /&gt;
    return a_k&lt;br /&gt;
&lt;br /&gt;
def fourier_approximation(x, a_k):&lt;br /&gt;
    f_n = np.zeros_like(x)&lt;br /&gt;
    for k, ak in enumerate(a_k, start=1):&lt;br /&gt;
        f_n += ak * np.sin(k * np.pi * x)&lt;br /&gt;
    return f_n&lt;br /&gt;
&lt;br /&gt;
# Valores de n&lt;br /&gt;
n_values = [1, 5, 10]&lt;br /&gt;
&lt;br /&gt;
# Discretización del intervalo&lt;br /&gt;
x = np.linspace(0, 1, 1000)&lt;br /&gt;
x_ext = np.linspace(-1, 1, 2000)&lt;br /&gt;
&lt;br /&gt;
# Gráfica de la función original&lt;br /&gt;
plt.plot(x, f(x), label='f(x)', color='black', linewidth=2)&lt;br /&gt;
&lt;br /&gt;
# Aproximaciones de Fourier con f extendida&lt;br /&gt;
for n in n_values:&lt;br /&gt;
    a_k = compute_coefficients(n)&lt;br /&gt;
    f_n = fourier_approximation(x_ext, a_k)&lt;br /&gt;
    plt.plot(x_ext, f_n, label=f'n={n}')&lt;br /&gt;
&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.xlabel('x')&lt;br /&gt;
plt.ylabel('f(x) y f_n(x)')&lt;br /&gt;
plt.title('Comparación de la extensión impar con la Aproximación de Fourier')&lt;br /&gt;
plt.show()&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Cambio de intervalo de aproximación=&lt;br /&gt;
&lt;br /&gt;
A continuación aproximaremos la función \( f(x) = x e^x \) en el intervalo \([-2, 3]\) mediante su serie de Fourier. En primer lugar, calcularemos la base trigonométrica asociada al espacio \( L^2([-2, 3]) \). Luego, daremos su desarrollo en serie de Fourier y finalmente aproximaremos &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; con los primeros 5, 10 y 20 términos de la serie obtenida.&lt;br /&gt;
&lt;br /&gt;
Como ya sabemos, en el espacio &amp;lt;math&amp;gt;L^2[-\pi, \pi]&amp;lt;/math&amp;gt; la base trigonométrica asociada es:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{B} = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}} \cos(nx), \frac{1}{\sqrt{\pi}} \sin(nx) \right\}_{n \in \mathbb{N}}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En general, para &amp;lt;math&amp;gt;L^2([a,b])&amp;lt;/math&amp;gt;, mediante el cambio de variable &amp;lt;math&amp;gt;&lt;br /&gt;
g(x) = \frac{2\pi}{b - a} (x - a) - \pi,&lt;br /&gt;
&amp;lt;/math&amp;gt; se tiene que la base trigonométrica asociada es&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} =&lt;br /&gt;
\left\{&lt;br /&gt;
\frac{1}{\sqrt{b - a}} \left[&lt;br /&gt;
\sqrt{\frac{2}{b - a}} \cos\left( n (\frac{2\pi(x - a)}{b - a} - \pi) \right),&lt;br /&gt;
\sqrt{\frac{2}{b - a}} \sin\left( n (\frac{2\pi(x - a)}{b - a} - \pi )\right)&lt;br /&gt;
\right]&lt;br /&gt;
\right\}_{n=1}^{\infty},&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
que es una base ortonormal para &amp;lt;math&amp;gt;L^2([a,b])&amp;lt;/math&amp;gt;. Bajo este cambio de variable, una función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;L^2([a,b])&amp;lt;/math&amp;gt; se puede expresar como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) = \frac{d_0}{\sqrt{b - a}}  + \sum_{n=1}^{\infty} d_n \cos\left(n g(x)\right) + \sum_{n=1}^{\infty} c_n \sin\left(n g(x)\right),&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;g(x)&amp;lt;/math&amp;gt; es el cambio de variable aplicado, y &amp;lt;math&amp;gt;d_n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;c_n&amp;lt;/math&amp;gt; son los coeficientes correspondientes. De esta manera, &amp;lt;math&amp;gt;g(x) \in [-\pi, \pi]&amp;lt;/math&amp;gt;, lo que permite trasladar la base ortonormal del espacio &amp;lt;math&amp;gt;L^2(-\pi, \pi)&amp;lt;/math&amp;gt; al nuevo intervalo &amp;lt;math&amp;gt;[a, b]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ahora, pasemos de lo general a nuestro caso concreto, el intervalo  &amp;lt;math&amp;gt;[-2, 3]&amp;lt;/math&amp;gt;. Obtenemos que:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \sim \frac{d_0}{\sqrt{5}}  + \sum_{n=1}^{\infty} d_n \frac{\sqrt{2}}{\sqrt{5}}\cos\left(n \frac{2\pi x - \pi}{5}\right) + \sum_{n=1}^{\infty} c_n \frac{\sqrt{2}}{\sqrt{5}}\sin\left(n \frac{2\pi x - \pi}{5}\right),&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Definición:''' El espacio &amp;lt;math&amp;gt;L^2(-T, T)&amp;lt;/math&amp;gt; se define como el conjunto de funciones medibles &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; en el intervalo &amp;lt;math&amp;gt;[-T, T]&amp;lt;/math&amp;gt; tales que:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\int_{-T}^{T} |f(x)|^2 \, dx &amp;lt; \infty.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Definición:''' Decimos que una función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; satisface la '''condición de dirichlet''' si &amp;lt;math&amp;gt;f(x) \in L^2([-T,T])&amp;lt;/math&amp;gt;, es continua salvo en un conjunto finito de puntos y podemos dividir &amp;lt;math&amp;gt;[-T,T]&amp;lt;/math&amp;gt; en un conjunto de subintervalos en los que &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; es monótona.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Teorema:''' Sea &amp;lt;math&amp;gt;f \in L^2([-2, 3])&amp;lt;/math&amp;gt;  una función continua y que satisface la condición de Dirichlet, entonces  su serie de Fourier converge puntualmente a &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; si &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; es un punto de continuidad en &amp;lt;math&amp;gt;[-2,3]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Claramente, &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; es continua y satisface la condición de dirichlet. Además, se verifica que &amp;lt;math&amp;gt;f(x) \in L^2([-2, 3])&amp;lt;/math&amp;gt;, pues:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\int_{-2}^{3} (x e^{-x})^2 \, dx = \frac{5}{4 e^6} \left( e^{10} - 5 \right) &amp;lt; \infty.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concluimos con que su desarrollo en serie de Fourier converge en los puntos de continuidad a &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;. A continuación, calculemos los coeficientes de Fourier. Para la base ortonormal asociada al espacio &amp;lt;math&amp;gt;L^2([-2, 3])&amp;lt;/math&amp;gt;, los coeficientes de Fourier de la función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; son:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \frac{1}{\sqrt{5}} \int_{-2}^{3} x e^x \, dx = \frac{-4 + e^5}{\sqrt{5} e^3}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
d_n = \frac{\sqrt{2}}{\sqrt{5}} \int_{-2}^{3} x e^x \cos\left( n \frac{2\pi x - \pi}{5} \right) \, dx \quad \text{para} \quad n \geq 1&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
c_n = \frac{\sqrt{2}}{\sqrt{5}} \int_{-2}^{3} x e^x \sin\left( n \frac{2\pi x - \pi}{5} \right) \, dx \quad \text{para} \quad n \geq 1.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Calcularemos los coeficientes &amp;lt;math&amp;gt;d_n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;c_n&amp;lt;/math&amp;gt; mediante métodos numéricos en Python, obteniendo así la serie de Fourier de &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;[-2,3]&amp;lt;/math&amp;gt; y, por tanto, la gráfica de la función y de la serie para distintos valores de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(MAMBD)&amp;diff=83847</id>
		<title>Series de Fourier (MAMBD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(MAMBD)&amp;diff=83847"/>
				<updated>2025-02-12T19:48:34Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Aproximación de una función continua */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
&lt;br /&gt;
El interés de las series de Fourier radica en su capacidad para aproximar, a partir de una base de funciones trigonométricas, ampliando así el alcance de los desarrollos de Taylor. Sea &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; una función integrable y periódica en &amp;lt;math&amp;gt;[0,T]&amp;lt;/math&amp;gt;, dada la base &amp;lt;math&amp;gt;B=\left\{ \frac{1}{\sqrt{2T}} \right\} \cup &lt;br /&gt;
\left\{ \frac{1}{\sqrt{T}} \cdot \cos \left( \frac{n\pi x}{T} \right) \right\}_{n \in \mathbb{N}} &lt;br /&gt;
\cup &lt;br /&gt;
\left\{ \frac{1}{\sqrt{T}} \cdot \sin \left( \frac{n\pi x}{T} \right) \right\}_{n \in \mathbb{N}}&amp;lt;/math&amp;gt;, su serie de Fourier viene dada por la expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{equation*}&lt;br /&gt;
    f(x) \sim \frac{d_0}{\sqrt{2T}} + \sum_{n=1}^{\infty} d_n \cdot \cos \left( \frac{n\pi x}{T} \right) + \sum_{n=1}^{\infty} c_n \cdot \sin \left( \frac{n\pi x}{T} \right)&lt;br /&gt;
\end{equation*}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cuyos coeficientes son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
&amp;amp;\bullet \quad d_0 = \langle f, \frac{1}{\sqrt{2T}} \rangle = \int_{-T}^{T} f(x) \cdot \frac{1}{\sqrt{2T}} \,dx \\  &lt;br /&gt;
&amp;amp;\bullet \quad d_n = \langle f, \cos \left( \frac{n\pi x}{T} \right) \rangle = \int_{-T}^{T} f(x) \cdot \cos \left( \frac{n\pi x}{T} \right) \,dx \\  &lt;br /&gt;
&amp;amp;\bullet \quad c_n = \langle f, \sin \left( \frac{n\pi x}{T} \right) \rangle = \int_{-T}^{T} f(x) \cdot \sin \left( \frac{n\pi x}{T} \right) \,dx.&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Aproximación de una función continua=  &lt;br /&gt;
&lt;br /&gt;
Para ilustrar la aproximación por series trigonométricas, consideramos la función &amp;lt;math&amp;gt;f(x)=1-2\left|\frac{1}{2}-x\right|&amp;lt;/math&amp;gt; en el intervalo &amp;lt;math&amp;gt;[0,1]&amp;lt;/math&amp;gt;. Buscamos extenderla de forma impar obteniendo una función&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;g(x)=\left\{\begin{array}{cc}&lt;br /&gt;
    f(x), &amp;amp; x\in[0,1] \\&lt;br /&gt;
    -f(-x), &amp;amp; x\in[-1,0)&lt;br /&gt;
\end{array}\right..&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En nuestro caso, la extensión impar viene dada por&lt;br /&gt;
&amp;lt;math&amp;gt;g(x)=\left\{\begin{array}{cc}&lt;br /&gt;
    -2-2x, &amp;amp; -1\leq x&amp;lt;-\frac{1}{2} \\&lt;br /&gt;
    2x, &amp;amp; -\frac{1}{2}\leq x&amp;lt;\frac{1}{2} \\&lt;br /&gt;
    2-2x, &amp;amp; \frac{1}{2}\leq x\leq1&lt;br /&gt;
\end{array}\right.,&amp;lt;/math&amp;gt; que es efectivamente una función continua en &amp;lt;math&amp;gt;[-1,1]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ahora, por ser &amp;lt;math&amp;gt;f\in L^2([-1,1])&amp;lt;/math&amp;gt;, utilizamos para la aproximación la base trigonométrica correspondiente &amp;lt;math&amp;gt;\left\{\frac{1}{2}, \cos(n\pi x), \sin(n\pi x)\right\}_{n\in\mathbb{N}}&amp;lt;/math&amp;gt;. Sin embargo, al haber extendido la función de forma impar, el producto escalar de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; con las funciones pares de la base &amp;lt;math&amp;gt;(\left\{\frac{1}{2}\right\}&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;\{\cos(n\pi x)\})&amp;lt;/math&amp;gt; resultan ser impares. Con esto deducimos que al integrar dicho producto en un intervalo simétrico, el resultado es cero, ya que las áreas positivas y negativas se anulan entre sí debido a la simetría de la función con respecto al origen. Entonces podemos definir &amp;lt;math&amp;gt;f_n(x)&amp;lt;/math&amp;gt; como la suma de los primeros &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; términos de la serie de Fourier&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;f_n(x)=\sum_{k=1}^n a_k \sin(k\pi x), \hspace{0.5cm} a_k=2\int_0^1 f(x)\sin(k\pi x).&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez hecho el análisis anterior, nos disponemos a ver gráficamente los resultados, para ello, hemos usado el lenguaje de programación de Python. Primero, hemos definido la función del enunciado y su extensión impar. A continuación de eso, hemos creado dos funciones, las cuales crean los coeficientes de Fourier y la serie de Fourier, respectivamente. Además, se ha creado una última función para los errores. Usando matplotlib.pyplot, deja las siguientes gráficas:&lt;br /&gt;
'''Insetar fotos (no se hacerlo)'''&lt;br /&gt;
&lt;br /&gt;
=Cambio de intervalo de aproximación=&lt;br /&gt;
&lt;br /&gt;
A continuación aproximaremos la función \( f(x) = x e^x \) en el intervalo \([-2, 3]\) mediante su serie de Fourier. En primer lugar, calcularemos la base trigonométrica asociada al espacio \( L^2([-2, 3]) \). Luego, daremos su desarrollo en serie de Fourier y finalmente aproximaremos &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; con los primeros 5, 10 y 20 términos de la serie obtenida.&lt;br /&gt;
&lt;br /&gt;
Como ya sabemos, en el espacio &amp;lt;math&amp;gt;L^2[-\pi, \pi]&amp;lt;/math&amp;gt; la base trigonométrica asociada es:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{B} = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}} \cos(nx), \frac{1}{\sqrt{\pi}} \sin(nx) \right\}_{n \in \mathbb{N}}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En general, para &amp;lt;math&amp;gt;L^2([a,b])&amp;lt;/math&amp;gt;, mediante el cambio de variable &amp;lt;math&amp;gt;&lt;br /&gt;
g(x) = \frac{2\pi}{b - a} (x - a) - \pi,&lt;br /&gt;
&amp;lt;/math&amp;gt; se tiene que la base trigonométrica asociada es&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} =&lt;br /&gt;
\left\{&lt;br /&gt;
\frac{1}{\sqrt{b - a}} \left[&lt;br /&gt;
\sqrt{\frac{2}{b - a}} \cos\left( n (\frac{2\pi(x - a)}{b - a} - \pi) \right),&lt;br /&gt;
\sqrt{\frac{2}{b - a}} \sin\left( n (\frac{2\pi(x - a)}{b - a} - \pi )\right)&lt;br /&gt;
\right]&lt;br /&gt;
\right\}_{n=1}^{\infty},&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
que es una base ortonormal para &amp;lt;math&amp;gt;L^2([a,b])&amp;lt;/math&amp;gt;. Bajo este cambio de variable, una función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;L^2([a,b])&amp;lt;/math&amp;gt; se puede expresar como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) = \frac{d_0}{\sqrt{b - a}}  + \sum_{n=1}^{\infty} d_n \cos\left(n g(x)\right) + \sum_{n=1}^{\infty} c_n \sin\left(n g(x)\right),&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;g(x)&amp;lt;/math&amp;gt; es el cambio de variable aplicado, y &amp;lt;math&amp;gt;d_n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;c_n&amp;lt;/math&amp;gt; son los coeficientes correspondientes. De esta manera, &amp;lt;math&amp;gt;g(x) \in [-\pi, \pi]&amp;lt;/math&amp;gt;, lo que permite trasladar la base ortonormal del espacio &amp;lt;math&amp;gt;L^2(-\pi, \pi)&amp;lt;/math&amp;gt; al nuevo intervalo &amp;lt;math&amp;gt;[a, b]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ahora, pasemos de lo general a nuestro caso concreto, el intervalo  &amp;lt;math&amp;gt;[-2, 3]&amp;lt;/math&amp;gt;. Obtenemos que:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \sim \frac{d_0}{\sqrt{5}}  + \sum_{n=1}^{\infty} d_n \frac{\sqrt{2}}{\sqrt{5}}\cos\left(n \frac{2\pi x - \pi}{5}\right) + \sum_{n=1}^{\infty} c_n \frac{\sqrt{2}}{\sqrt{5}}\sin\left(n \frac{2\pi x - \pi}{5}\right),&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Definición:''' El espacio &amp;lt;math&amp;gt;L^2(-T, T)&amp;lt;/math&amp;gt; se define como el conjunto de funciones medibles &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; en el intervalo &amp;lt;math&amp;gt;[-T, T]&amp;lt;/math&amp;gt; tales que:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\int_{-T}^{T} |f(x)|^2 \, dx &amp;lt; \infty.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Definición:''' Decimos que una función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; satisface la '''condición de dirichlet''' si &amp;lt;math&amp;gt;f(x) \in L^2([-T,T])&amp;lt;/math&amp;gt;, es continua salvo en un conjunto finito de puntos y podemos dividir &amp;lt;math&amp;gt;[-T,T]&amp;lt;/math&amp;gt; en un conjunto de subintervalos en los que &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; es monótona.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Teorema:''' Sea &amp;lt;math&amp;gt;f \in L^2([-2, 3])&amp;lt;/math&amp;gt;  una función continua y que satisface la condición de Dirichlet, entonces  su serie de Fourier converge puntualmente a &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; si &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; es un punto de continuidad en &amp;lt;math&amp;gt;[-2,3]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Claramente, &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; es continua y satisface la condición de dirichlet. Además, se verifica que &amp;lt;math&amp;gt;f(x) \in L^2([-2, 3])&amp;lt;/math&amp;gt;, pues:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\int_{-2}^{3} (x e^{-x})^2 \, dx = \frac{5}{4 e^6} \left( e^{10} - 5 \right) &amp;lt; \infty.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concluimos con que su desarrollo en serie de Fourier converge en los puntos de continuidad a &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;. A continuación, calculemos los coeficientes de Fourier. Para la base ortonormal asociada al espacio &amp;lt;math&amp;gt;L^2([-2, 3])&amp;lt;/math&amp;gt;, los coeficientes de Fourier de la función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; son:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \frac{1}{\sqrt{5}} \int_{-2}^{3} x e^x \, dx = \frac{-4 + e^5}{\sqrt{5} e^3}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
d_n = \frac{\sqrt{2}}{\sqrt{5}} \int_{-2}^{3} x e^x \cos\left( n \frac{2\pi x - \pi}{5} \right) \, dx \quad \text{para} \quad n \geq 1&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
c_n = \frac{\sqrt{2}}{\sqrt{5}} \int_{-2}^{3} x e^x \sin\left( n \frac{2\pi x - \pi}{5} \right) \, dx \quad \text{para} \quad n \geq 1.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Calcularemos los coeficientes &amp;lt;math&amp;gt;d_n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;c_n&amp;lt;/math&amp;gt; mediante métodos numéricos en Python, obteniendo así la serie de Fourier de &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;[-2,3]&amp;lt;/math&amp;gt; y, por tanto, la gráfica de la función y de la serie para distintos valores de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(MAMBD)&amp;diff=83845</id>
		<title>Series de Fourier (MAMBD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(MAMBD)&amp;diff=83845"/>
				<updated>2025-02-12T19:46:42Z</updated>
		
		<summary type="html">&lt;p&gt;Marcos: /* Aproximación de una función continua */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Matilde Rubio Arranz, Antonio Lozano Fernández, Marcos Gil García, Bárbara Jiménez Pérez y Daniel Marcos Viña }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
&lt;br /&gt;
El interés de las series de Fourier radica en su capacidad para aproximar, a partir de una base de funciones trigonométricas, ampliando así el alcance de los desarrollos de Taylor. Sea &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; una función integrable y periódica en &amp;lt;math&amp;gt;[0,T]&amp;lt;/math&amp;gt;, dada la base &amp;lt;math&amp;gt;B=\left\{ \frac{1}{\sqrt{2T}} \right\} \cup &lt;br /&gt;
\left\{ \frac{1}{\sqrt{T}} \cdot \cos \left( \frac{n\pi x}{T} \right) \right\}_{n \in \mathbb{N}} &lt;br /&gt;
\cup &lt;br /&gt;
\left\{ \frac{1}{\sqrt{T}} \cdot \sin \left( \frac{n\pi x}{T} \right) \right\}_{n \in \mathbb{N}}&amp;lt;/math&amp;gt;, su serie de Fourier viene dada por la expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{equation*}&lt;br /&gt;
    f(x) \sim \frac{d_0}{\sqrt{2T}} + \sum_{n=1}^{\infty} d_n \cdot \cos \left( \frac{n\pi x}{T} \right) + \sum_{n=1}^{\infty} c_n \cdot \sin \left( \frac{n\pi x}{T} \right)&lt;br /&gt;
\end{equation*}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cuyos coeficientes son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
&amp;amp;\bullet \quad d_0 = \langle f, \frac{1}{\sqrt{2T}} \rangle = \int_{-T}^{T} f(x) \cdot \frac{1}{\sqrt{2T}} \,dx \\  &lt;br /&gt;
&amp;amp;\bullet \quad d_n = \langle f, \cos \left( \frac{n\pi x}{T} \right) \rangle = \int_{-T}^{T} f(x) \cdot \cos \left( \frac{n\pi x}{T} \right) \,dx \\  &lt;br /&gt;
&amp;amp;\bullet \quad c_n = \langle f, \sin \left( \frac{n\pi x}{T} \right) \rangle = \int_{-T}^{T} f(x) \cdot \sin \left( \frac{n\pi x}{T} \right) \,dx.&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Aproximación de una función continua=  &lt;br /&gt;
&lt;br /&gt;
Para ilustrar la aproximación por series trigonométricas, consideramos la función &amp;lt;math&amp;gt;f(x)=1-2\left|\frac{1}{2}-x\right|&amp;lt;/math&amp;gt; en el intervalo &amp;lt;math&amp;gt;[0,1]&amp;lt;/math&amp;gt;. Buscamos extenderla de forma impar obteniendo una función&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;g(x)=\left\{\begin{array}{cc}&lt;br /&gt;
    f(x), &amp;amp; x\in[0,1] \\&lt;br /&gt;
    -f(-x), &amp;amp; x\in[-1,0)&lt;br /&gt;
\end{array}\right..&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En nuestro caso, la extensión impar viene dada por&lt;br /&gt;
&amp;lt;math&amp;gt;g(x)=\left\{\begin{array}{cc}&lt;br /&gt;
    -2-2x, &amp;amp; -1\leq x&amp;lt;-\frac{1}{2} \\&lt;br /&gt;
    2x, &amp;amp; -\frac{1}{2}\leq x&amp;lt;\frac{1}{2} \\&lt;br /&gt;
    2-2x, &amp;amp; \frac{1}{2}\leq x\leq1&lt;br /&gt;
\end{array}\right.,&amp;lt;/math&amp;gt; que es efectivamente una función continua en &amp;lt;math&amp;gt;[-1,1]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ahora, por ser &amp;lt;math&amp;gt;f\in L^2([-1,1])&amp;lt;/math&amp;gt;, utilizamos para la aproximación la base trigonométrica correspondiente &amp;lt;math&amp;gt;\left\{\frac{1}{2}, \cos(n\pi x), \sin(n\pi x)\right\}_{n\in\mathbb{N}}&amp;lt;/math&amp;gt;. Sin embargo, al haber extendido la función de forma impar, el producto escalar de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; con las funciones pares de la base &amp;lt;math&amp;gt;(\left\{\frac{1}{2}\right\}&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;\{\cos(n\pi x)\})&amp;lt;/math&amp;gt; resultan ser impares. Con esto deducimos que al integrar dicho producto en un intervalo simétrico, el resultado es cero, ya que las áreas positivas y negativas se anulan entre sí debido a la simetría de la función con respecto al origen. Entonces podemos definir &amp;lt;math&amp;gt;f_n(x)&amp;lt;/math&amp;gt; como la suma de los primeros &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; términos de la serie de Fourier&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;f_n(x)=\sum_{k=1}^n a_k \sin(k\pi x), \hspace{0.5cm} a_k=2\int_0^1 f(x)\sin(k\pi x).&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez hecho el análisis anterior, nos disponemos a ver gráficamente los resultados, para ello, hemos usado el lenguaje de programación de Python. Primero, hemos definido la función del enunciado y su extensión impar. A continuación de eso, hemos creado dos funciones, las cuales crean los coeficientes de Fourier y la serie de Fourier, respectivamente. Además, se ha creado una última función para los errores. Usando matplotlib.pyplot, deja las siguientes gráficas:&lt;br /&gt;
&lt;br /&gt;
=Cambio de intervalo de aproximación=&lt;br /&gt;
&lt;br /&gt;
A continuación aproximaremos la función \( f(x) = x e^x \) en el intervalo \([-2, 3]\) mediante su serie de Fourier. En primer lugar, calcularemos la base trigonométrica asociada al espacio \( L^2([-2, 3]) \). Luego, daremos su desarrollo en serie de Fourier y finalmente aproximaremos &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; con los primeros 5, 10 y 20 términos de la serie obtenida.&lt;br /&gt;
&lt;br /&gt;
Como ya sabemos, en el espacio &amp;lt;math&amp;gt;L^2[-\pi, \pi]&amp;lt;/math&amp;gt; la base trigonométrica asociada es:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{B} = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}} \cos(nx), \frac{1}{\sqrt{\pi}} \sin(nx) \right\}_{n \in \mathbb{N}}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En general, para &amp;lt;math&amp;gt;L^2([a,b])&amp;lt;/math&amp;gt;, mediante el cambio de variable &amp;lt;math&amp;gt;&lt;br /&gt;
g(x) = \frac{2\pi}{b - a} (x - a) - \pi,&lt;br /&gt;
&amp;lt;/math&amp;gt; se tiene que la base trigonométrica asociada es&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} =&lt;br /&gt;
\left\{&lt;br /&gt;
\frac{1}{\sqrt{b - a}} \left[&lt;br /&gt;
\sqrt{\frac{2}{b - a}} \cos\left( n (\frac{2\pi(x - a)}{b - a} - \pi) \right),&lt;br /&gt;
\sqrt{\frac{2}{b - a}} \sin\left( n (\frac{2\pi(x - a)}{b - a} - \pi )\right)&lt;br /&gt;
\right]&lt;br /&gt;
\right\}_{n=1}^{\infty},&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
que es una base ortonormal para &amp;lt;math&amp;gt;L^2([a,b])&amp;lt;/math&amp;gt;. Bajo este cambio de variable, una función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;L^2([a,b])&amp;lt;/math&amp;gt; se puede expresar como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) = \frac{d_0}{\sqrt{b - a}}  + \sum_{n=1}^{\infty} d_n \cos\left(n g(x)\right) + \sum_{n=1}^{\infty} c_n \sin\left(n g(x)\right),&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;g(x)&amp;lt;/math&amp;gt; es el cambio de variable aplicado, y &amp;lt;math&amp;gt;d_n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;c_n&amp;lt;/math&amp;gt; son los coeficientes correspondientes. De esta manera, &amp;lt;math&amp;gt;g(x) \in [-\pi, \pi]&amp;lt;/math&amp;gt;, lo que permite trasladar la base ortonormal del espacio &amp;lt;math&amp;gt;L^2(-\pi, \pi)&amp;lt;/math&amp;gt; al nuevo intervalo &amp;lt;math&amp;gt;[a, b]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ahora, pasemos de lo general a nuestro caso concreto, el intervalo  &amp;lt;math&amp;gt;[-2, 3]&amp;lt;/math&amp;gt;. Obtenemos que:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \sim \frac{d_0}{\sqrt{5}}  + \sum_{n=1}^{\infty} d_n \frac{\sqrt{2}}{\sqrt{5}}\cos\left(n \frac{2\pi x - \pi}{5}\right) + \sum_{n=1}^{\infty} c_n \frac{\sqrt{2}}{\sqrt{5}}\sin\left(n \frac{2\pi x - \pi}{5}\right),&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Definición:''' El espacio &amp;lt;math&amp;gt;L^2(-T, T)&amp;lt;/math&amp;gt; se define como el conjunto de funciones medibles &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; en el intervalo &amp;lt;math&amp;gt;[-T, T]&amp;lt;/math&amp;gt; tales que:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\int_{-T}^{T} |f(x)|^2 \, dx &amp;lt; \infty.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Definición:''' Decimos que una función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; satisface la '''condición de dirichlet''' si &amp;lt;math&amp;gt;f(x) \in L^2([-T,T])&amp;lt;/math&amp;gt;, es continua salvo en un conjunto finito de puntos y podemos dividir &amp;lt;math&amp;gt;[-T,T]&amp;lt;/math&amp;gt; en un conjunto de subintervalos en los que &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; es monótona.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Teorema:''' Sea &amp;lt;math&amp;gt;f \in L^2([-2, 3])&amp;lt;/math&amp;gt;  una función continua y que satisface la condición de Dirichlet, entonces  su serie de Fourier converge puntualmente a &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; si &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; es un punto de continuidad en &amp;lt;math&amp;gt;[-2,3]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Claramente, &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; es continua y satisface la condición de dirichlet. Además, se verifica que &amp;lt;math&amp;gt;f(x) \in L^2([-2, 3])&amp;lt;/math&amp;gt;, pues:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\int_{-2}^{3} (x e^{-x})^2 \, dx = \frac{5}{4 e^6} \left( e^{10} - 5 \right) &amp;lt; \infty.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concluimos con que su desarrollo en serie de Fourier converge en los puntos de continuidad a &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;. A continuación, calculemos los coeficientes de Fourier. Para la base ortonormal asociada al espacio &amp;lt;math&amp;gt;L^2([-2, 3])&amp;lt;/math&amp;gt;, los coeficientes de Fourier de la función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; son:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \frac{1}{\sqrt{5}} \int_{-2}^{3} x e^x \, dx = \frac{-4 + e^5}{\sqrt{5} e^3}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
d_n = \frac{\sqrt{2}}{\sqrt{5}} \int_{-2}^{3} x e^x \cos\left( n \frac{2\pi x - \pi}{5} \right) \, dx \quad \text{para} \quad n \geq 1&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
c_n = \frac{\sqrt{2}}{\sqrt{5}} \int_{-2}^{3} x e^x \sin\left( n \frac{2\pi x - \pi}{5} \right) \, dx \quad \text{para} \quad n \geq 1.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Calcularemos los coeficientes &amp;lt;math&amp;gt;d_n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;c_n&amp;lt;/math&amp;gt; mediante métodos numéricos en Python, obteniendo así la serie de Fourier de &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;[-2,3]&amp;lt;/math&amp;gt; y, por tanto, la gráfica de la función y de la serie para distintos valores de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Marcos</name></author>	</entry>

	</feed>