<?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=Alex+Heredero</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=Alex+Heredero"/>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/wiki/Especial:Contribuciones/Alex_Heredero"/>
		<updated>2026-04-29T12:07:51Z</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_(PPAD)&amp;diff=84588</id>
		<title>Ecuación del calor (PPAD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(PPAD)&amp;diff=84588"/>
				<updated>2025-03-16T17:51:23Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: /* . Conclusión */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor (Grupo PPAD). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Pablo Vidal Nacle, Pablo Maestro Fernández, Alex Heredero Santamaría, Diego Moñino Vizmanos}}&lt;br /&gt;
&lt;br /&gt;
=. Introducción=&lt;br /&gt;
La ecuación del calor clásica, formulada por Joseph Fourier, describe la difusión térmica en medios continuos y ha sido ampliamente utilizada en la física y la ingeniería. Sin embargo, un aspecto problemático de esta ecuación es que predice una velocidad de propagación infinita para las perturbaciones térmicas. Es decir, si se genera una variación de temperatura en un punto del sistema, esta afectaría instantáneamente a todo el dominio, lo cual es físicamente irreal.&lt;br /&gt;
&lt;br /&gt;
Este problema, conocido como la paradoja de la velocidad infinita de propagación, entra en conflicto con la relatividad especial, ya que ninguna perturbación física debería propagarse más rápido que la velocidad de la luz. Para corregir esta deficiencia, se han desarrollado modelos alternativos, entre ellos la ecuación de Cattaneo-Vernotte, que introduce un término de relajación en la ecuación del calor, limitando así la velocidad de propagación de las señales térmicas.&lt;br /&gt;
&lt;br /&gt;
Resolver la ecuación de Cattaneo-Vernotte es fundamental para modelar procesos térmicos en situaciones donde la ecuación clásica de Fourier no es adecuada. Esto ocurre, por ejemplo, en la propagación del calor en materiales con estructura micro o nanoescala, en plasmas, y en medios donde la conducción térmica no es instantánea. Además, su estudio permite una mejor comprensión de los procesos de difusión modificados y su relación con principios relativistas.&lt;br /&gt;
&lt;br /&gt;
Desde un punto de vista práctico, el análisis de esta ecuación puede mejorar modelos de transferencia de calor en la industria, la ingeniería de materiales y la física de semiconductores. Nuestros objetivos en este artículo serán introducir la ecuación de Cattaneo-Vernotte como una alternativa físicamente más realista, resolverla en un caso partícular, interpretar la solución obtenida y compararla con la ecuación clásica, y finalmente discutir las implicaciones físicas del modelo.&lt;br /&gt;
&lt;br /&gt;
=. Problema concreto=&lt;br /&gt;
Planteamos el siguiente problema: Se considera una varilla metálica que ocupa el intervalo [0, 1] y que se encuentra aislada por su superficie lateral, de manera que la conducción de calor sólo se produce en la&lt;br /&gt;
dirección longitudinal. En el extremo derecho&lt;br /&gt;
se consigue mantener la temperatura a 10°C mientras que en el izquierdo la temperatura&lt;br /&gt;
es siempre de 1°C. Además, la temperatura en el instante inicial viene dada por la función &amp;lt;math&amp;gt; u_0 (x)= 10-10 \cdot 1_{[1/3,2/3]}(x)&amp;lt;/math&amp;gt; . Así, el sistema que modeliza este problema es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases} &lt;br /&gt;
      u_t-u_{xx} = 0 &amp;amp; x \in [0,1], t&amp;gt;0 \\&lt;br /&gt;
      u(0,t)=10 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(1,t)=1 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(x,0)=u_0(x) &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Su solución estacionaria es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; v(x)=9x+1 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y la solución general es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x,t)= 9x+1+  \sum_{n=1}^{\infty}b_n sen(n \pi x)e^{n^2\pi ^2 t}&amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; b_n &amp;lt;/math&amp;gt; viene dado por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; b_n = \int_{-1}^{1}g(x)sen(n\pi x)dx &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
con g(x):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases} &lt;br /&gt;
      -9x-9 &amp;amp; x \in (-1,2/3)\cup (-1/3,0) \\&lt;br /&gt;
      -9x+9 &amp;amp; x \in (0,1/3)\cup (2/3,1) \\&lt;br /&gt;
      -9x+1 &amp;amp; x \in [-2/3,-1/3] \\&lt;br /&gt;
      -9x-1 &amp;amp; x \in [1/3,2/3]&lt;br /&gt;
\end{cases} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si visualizamos estas soluciones con &amp;lt;math&amp;gt; t \in [0,1] &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; x \in [0,1] &amp;lt;/math&amp;gt;, representándola a través de matlab:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:sol2.jpeg|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:sol11.jpeg|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Animación solución.gif|400px|thumb|right|Convergencia a la solución estacionaria]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
syms n&lt;br /&gt;
syms x&lt;br /&gt;
syms t&lt;br /&gt;
g=sin(n*pi*x);&lt;br /&gt;
f1=(-9*x-9)*g;&lt;br /&gt;
f2=(-9*x+9)*g;&lt;br /&gt;
f3=(-9*x+1)*g;&lt;br /&gt;
f4=(-9*x-1)*g;&lt;br /&gt;
&lt;br /&gt;
F1=int(f1,-1,-2/3);&lt;br /&gt;
F2=int(f3,-2/3,-1/3);&lt;br /&gt;
F3=int(f1,-1/3,0);&lt;br /&gt;
F4=int(f2,0,1/3);&lt;br /&gt;
F5=int(f4,1/3,2/3);&lt;br /&gt;
F6=int(f2,2/3,1);&lt;br /&gt;
&lt;br /&gt;
F(n)=F1+F2+F3+F4+F5+F6;&lt;br /&gt;
&lt;br /&gt;
sol=9*x+1;&lt;br /&gt;
k=20; %numero de elementos&lt;br /&gt;
for i=1:k&lt;br /&gt;
    sol=sol+F(i)*sin(i*pi*x)*exp(-(i^2)*pi^2*t);&lt;br /&gt;
end&lt;br /&gt;
u(x,t)=sol;&lt;br /&gt;
[X, T] = meshgrid(linspace(0,1,50), linspace(0,1,50));&lt;br /&gt;
Z=u(X,T);&lt;br /&gt;
Z=double(Z);&lt;br /&gt;
figure&lt;br /&gt;
surf(X, T, Z) &lt;br /&gt;
xlabel('x'), ylabel('t'), zlabel('u(x,t)')&lt;br /&gt;
title('Gráfico de la solución')&lt;br /&gt;
colorbar&lt;br /&gt;
shading interp &lt;br /&gt;
&lt;br /&gt;
% Definir parámetros&lt;br /&gt;
xv = linspace(0,1,100); % Dominio de x (100 puntos entre 0 y 1)&lt;br /&gt;
t_values = linspace(0,0.1,60); % Valores de t para cada frame (60 frames)&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
fig = figure;&lt;br /&gt;
v = VideoWriter('animacion_ftejercicio2.mp4', 'MPEG-4'); % Guardar animación en video&lt;br /&gt;
v.FrameRate = 5; % FPS&lt;br /&gt;
open(v);&lt;br /&gt;
&lt;br /&gt;
for t = t_values&lt;br /&gt;
    y = u(xv,t); % Evaluar la función en x para el tiempo t&lt;br /&gt;
    plot(xv, y, 'b', 'LineWidth', 2); % Graficar en 1D&lt;br /&gt;
    ylim([0, 12]); % Mantener el mismo rango en y&lt;br /&gt;
    xlabel('x');&lt;br /&gt;
    ylabel('u(x,t)');&lt;br /&gt;
    title(sprintf('t = %.2f', t)); % Mostrar el tiempo actual&lt;br /&gt;
    grid on;&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(fig);&lt;br /&gt;
    writeVideo(v, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(v); % Cerrar archivo de video&lt;br /&gt;
close(fig); % Cerrar la figura&lt;br /&gt;
&lt;br /&gt;
disp('Animación guardada como animacion_ft.mp4');&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Observamos que la solución u comienza en la temperatura correcta (salvo por oscilaciones) y para un tiempo suficientemente pequeño se aproxima considerablemente a la solución de equilibrio. No obstante, en el siguiente apartado se comentará un detalle de la solución que se debe estudiar en mayor profundidad.&lt;br /&gt;
&lt;br /&gt;
=. Paradoja de la velocidad de propagación=&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Paradoja.jpeg|400px|thumb|derecha|Solución para t=0]]&lt;br /&gt;
&lt;br /&gt;
Observamos que, en nuestra solución, para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt; la solución es estrictamente positiva. Sin embargo, en &amp;lt;math&amp;gt;t=0&amp;lt;/math&amp;gt; observamos que para el intervalo &amp;lt;math&amp;gt;  x \in [1/3,2/3]&amp;lt;/math&amp;gt; la temperatura es cero. Esto contradice la teoría de la relatividad de Einstein, ya que podemos tomar un valor &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt; arbitrariamente pequeño de manera que la temperatura sea no nula, lo cual no es posible bajo la teoría de la relatividad. Este fenómeno se conoce como la paradoja de la velocidad de propagación del calor. &lt;br /&gt;
&lt;br /&gt;
==. Ecuación de Cattaneo-Vernotte==&lt;br /&gt;
Para solucionar esta aparente falla en nuestro modelo, Cattaneo propuso una solución modificando la Ley de Fourier de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;q=-k\nabla u \rightarrow q+ \tau \frac{\partial q}{\partial t} =k\nabla u&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Añadimos el factor &amp;lt;math&amp;gt; \tau \frac{\partial q}{\partial t} &amp;lt;/math&amp;gt; a la Ley de Fourier, donde &amp;lt;math&amp;gt;\tau&amp;lt;/math&amp;gt; se conoce como el término de relajación térmica. De esta manera, se modela un retardo en la respuesta de flujo de calor a los cambios de la temperatura. Si ahora aplicamos la conservación de la energía, nos queda la conocida ecuación hiperbólica del calor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial u}{\partial t} + \tau \frac{\partial^{2}u}{\partial t^{2}} = \alpha \Delta u &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; \alpha &amp;lt;/math&amp;gt; es la difusividad térmica. Para nuestro problema, la ecuación queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases} &lt;br /&gt;
      \tau u_{tt}+u_t-u_{xx} = 0 &amp;amp; x \in [0,1], t&amp;gt;0 \\&lt;br /&gt;
      u(0,t)=10 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(1,t)=1 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(x,0)=u_0(x) &amp;amp; x \in [0,1] \\&lt;br /&gt;
      u_t(x,0)=0 &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hemos introducido en las condiciones iniciales el factor &amp;lt;math&amp;gt; u_t(x,0) &amp;lt;/math&amp;gt;, que se conoce como la velocidad térmica inicial. En nuestro caso hemos establecido esta velocidad nula ya que se asume que en el estado inicial el sistema está en equilibrio.&lt;br /&gt;
&lt;br /&gt;
Esta nueva ecuación garantiza que la velocidad de propagación del calor se produzca con velocidad finita, por lo que se utiliza en modelos donde el efecto de propagación instantánea tiene importancia. &lt;br /&gt;
&lt;br /&gt;
Homogeneizamos el problema con el cambio de variable &amp;lt;math&amp;gt; w(t,x)=u(t,x) -v(x)&amp;lt;/math&amp;gt;. Si resolvemos esta ecuación por separación de variables, tenemos las siguientes soluciones para la función espacial &amp;lt;math&amp;gt;X(x)&amp;lt;/math&amp;gt; y temporal &amp;lt;math&amp;gt; T(t)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
La ecuación espacial con estas condiciones nos proporciona la colección de soluciones &amp;lt;math&amp;gt; X_{n}(x)=A_{n}sen(n\pi x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la ecuación temporal, tenemos la solución &amp;lt;math&amp;gt; T_{n}(t)=e^{\frac{-t}{2\tau}}(c_{1}cos(\omega t) + c_{2}sen((\omega t)) &amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt; \omega = \frac{\sqrt{4\tau n^{2}\pi^{2}-1}}{2\tau} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, la solución de la ecuación de Cattaneo-Vernotte en nuestro caso es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x,t) = 1+9x+ \sum_{n=1}^{\infty} A_{n}e^{\frac{-t}{2\tau}}(c_{1}cos(\omega t) + c_{2}sen((\omega t)) \cdot sen(n\pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora, utilizando las condiciones frontera, obtenemos &amp;lt;math&amp;gt; c_{2}=0&amp;lt;/math&amp;gt;  y &amp;lt;math&amp;gt; A_{n}c_{1}=b_{n} &amp;lt;/math&amp;gt;, quedándonos la solución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;u(x,t) = 1+9x+ \sum_{n=1}^{\infty} b_{n}e^{\frac{-t}{2\tau}}cos(\omega t)  \cdot sen(n\pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
donde &amp;lt;math&amp;gt; b_{n} &amp;lt;/math&amp;gt; son los mismos coeficientes que en la solución de la ecuación original.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Solucion_cattaneo1.jpg|400px|thumb|right|Solución de la ecuación de Cattaneo-Vernotte]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Solucion_cattaneo2.jpg|400px|thumb|right|Solución de la ecuación de Cattaneo-Vernotte]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Animacioncattaneo.gif|400px|thumb|right|Convergencia a la solución estacionaria]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
syms n&lt;br /&gt;
syms x&lt;br /&gt;
syms t&lt;br /&gt;
g=sin(n*pi*x);&lt;br /&gt;
f1=(-9*x-9)*g;&lt;br /&gt;
f2=(-9*x+9)*g;&lt;br /&gt;
f3=(-9*x+1)*g;&lt;br /&gt;
f4=(-9*x-1)*g;&lt;br /&gt;
&lt;br /&gt;
F1=int(f1,-1,-2/3);&lt;br /&gt;
F2=int(f3,-2/3,-1/3);&lt;br /&gt;
F3=int(f1,-1/3,0);&lt;br /&gt;
F4=int(f2,0,1/3);&lt;br /&gt;
F5=int(f4,1/3,2/3);&lt;br /&gt;
F6=int(f2,2/3,1);&lt;br /&gt;
&lt;br /&gt;
F(n)=F1+F2+F3+F4+F5+F6;&lt;br /&gt;
&lt;br /&gt;
sol=9*x+1;&lt;br /&gt;
k=40; %numero de elementos&lt;br /&gt;
for i=1:k&lt;br /&gt;
    sol=sol+F(i)*sin(i*pi*x)*exp(-t/(2*tau))*cos(t*(sqrt(4*tau*i^2*pi^2-1))/(2*tau));&lt;br /&gt;
end&lt;br /&gt;
u(x,t)=sol;&lt;br /&gt;
&lt;br /&gt;
[X, T] = meshgrid(linspace(0,1,50), linspace(0,1,50));&lt;br /&gt;
Z=u(X,T);&lt;br /&gt;
Z=double(Z);&lt;br /&gt;
figure&lt;br /&gt;
surf(X, T, Z) &lt;br /&gt;
xlabel('x'), ylabel('t'), zlabel('u(x,t)')&lt;br /&gt;
title('Gráfico de la solución')&lt;br /&gt;
colorbar&lt;br /&gt;
shading interp &lt;br /&gt;
&lt;br /&gt;
% Definir parámetros&lt;br /&gt;
xv = linspace(0,1,100); % Dominio de x (100 puntos entre 0 y 1)&lt;br /&gt;
t_values = linspace(0,1,60); % Valores de t para cada frame (60 frames)&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
fig = figure;&lt;br /&gt;
v = VideoWriter('animacion_ftejercicio3.mp4', 'MPEG-4'); % Guardar animación en video&lt;br /&gt;
v.FrameRate = 5; % FPS&lt;br /&gt;
open(v);&lt;br /&gt;
&lt;br /&gt;
for t = t_values&lt;br /&gt;
    y = u(xv,t); % Evaluar la función en x para el tiempo t&lt;br /&gt;
    plot(xv, y, 'b', 'LineWidth', 2); % Graficar en 1D&lt;br /&gt;
    ylim([0, 12]); % Mantener el mismo rango en y&lt;br /&gt;
    xlabel('x');&lt;br /&gt;
    ylabel('u(x,t)');&lt;br /&gt;
    title(sprintf('t = %.2f', t)); % Mostrar el tiempo actual&lt;br /&gt;
    grid on;&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(fig);&lt;br /&gt;
    writeVideo(v, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(v); % Cerrar archivo de video&lt;br /&gt;
close(fig); % Cerrar la figura&lt;br /&gt;
&lt;br /&gt;
disp('Animación guardada como animacion_ft.mp4');&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como se puede apreciar en las gráficas, la convergencia a la solución estacionaria es suave y no abrupta como en el problema original, logrando una modelización más fiel de la transferencia de calor tras una perturbación térmica, como queríamos comprobar al inicio del artículo.&lt;br /&gt;
&lt;br /&gt;
=. Referencias =&lt;br /&gt;
&lt;br /&gt;
* Amin Moosaie. Non-Fourier heat conduction in a finite medium with insulated boundaries and arbitrary initial conditions ([https://www.sciencedirect.com/science/article/pii/S0735193307001637 [1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]).&lt;br /&gt;
&lt;br /&gt;
* Francisco R. Villatoro. La ciencia de la mula Francis: La velocidad de la propagación del calor, entre la paradoja y la entropía([https://francis.naukas.com/2008/10/22/la-velocidad-de-la-propagacion-del-calor-entre-la-paradoja-y-la-entropia/ [2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;])&lt;br /&gt;
&lt;br /&gt;
* Marc Calvo Schwarzwälder. Non-Fourier Heat Conduction. The Maxwell-Cattaneo Equations ([https://upcommons.upc.edu/bitstream/handle/2117/78480/memoria.pdf [3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]).&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(PPAD)&amp;diff=84523</id>
		<title>Ecuación del calor (PPAD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(PPAD)&amp;diff=84523"/>
				<updated>2025-03-16T16:44:17Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor (Grupo PPAD). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Pablo Vidal Nacle, Pablo Maestro Fernández, Alex Heredero Santamaría, Diego Moñino Vizmanos}}&lt;br /&gt;
&lt;br /&gt;
=. Introducción=&lt;br /&gt;
La ecuación del calor clásica, formulada por Joseph Fourier, describe la difusión térmica en medios continuos y ha sido ampliamente utilizada en la física y la ingeniería. Sin embargo, un aspecto problemático de esta ecuación es que predice una velocidad de propagación infinita para las perturbaciones térmicas. Es decir, si se genera una variación de temperatura en un punto del sistema, esta afectaría instantáneamente a todo el dominio, lo cual es físicamente irreal.&lt;br /&gt;
&lt;br /&gt;
Este problema, conocido como la paradoja de la velocidad infinita de propagación, entra en conflicto con la relatividad especial, ya que ninguna perturbación física debería propagarse más rápido que la velocidad de la luz. Para corregir esta deficiencia, se han desarrollado modelos alternativos, entre ellos la ecuación de Cattaneo-Vernotte, que introduce un término de relajación en la ecuación del calor, limitando así la velocidad de propagación de las señales térmicas.&lt;br /&gt;
&lt;br /&gt;
Resolver la ecuación de Cattaneo-Vernotte es fundamental para modelar procesos térmicos en situaciones donde la ecuación clásica de Fourier no es adecuada. Esto ocurre, por ejemplo, en la propagación del calor en materiales con estructura micro o nanoescala, en plasmas, y en medios donde la conducción térmica no es instantánea. Además, su estudio permite una mejor comprensión de los procesos de difusión modificados y su relación con principios relativistas.&lt;br /&gt;
&lt;br /&gt;
Desde un punto de vista práctico, el análisis de esta ecuación puede mejorar modelos de transferencia de calor en la industria, la ingeniería de materiales y la física de semiconductores. Nuestros objetivos en este artículo serán introducir la ecuación de Cattaneo-Vernotte como una alternativa físicamente más realista, resolverla en un caso partícular, interpretar la solución obtenida y compararla con la ecuación clásica, y finalmente discutir las implicaciones físicas del modelo.&lt;br /&gt;
&lt;br /&gt;
=. Problema concreto=&lt;br /&gt;
Planteamos el siguiente problema: Se considera una varilla metálica que ocupa el intervalo [0, 1] y que se encuentra aislada por su superficie lateral, de manera que la conducción de calor sólo se produce en la&lt;br /&gt;
dirección longitudinal. En el extremo derecho&lt;br /&gt;
se consigue mantener la temperatura a 10°C mientras que en el izquierdo la temperatura&lt;br /&gt;
es siempre de 1°C. Además, la temperatura en el instante inicial viene dada por la función &amp;lt;math&amp;gt; u_0 (x)= 10-10 \cdot 1_{[1/3,2/3]}(x)&amp;lt;/math&amp;gt; . Así, el sistema que modeliza este problema es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases} &lt;br /&gt;
      u_t-u_{xx} = 0 &amp;amp; x \in [0,1], t&amp;gt;0 \\&lt;br /&gt;
      u(0,t)=10 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(1,t)=1 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(x,0)=u_0(x) &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Su solución estacionaria es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; v(x)=9x+1 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y la solución general es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x,t)= 9x+1+  \sum_{n=1}^{\infty}b_n sen(n \pi x)e^{n^2\pi ^2 t}&amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; b_n &amp;lt;/math&amp;gt; viene dado por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; b_n = \int_{1}^{3}g(x)sen(n\pi x)dx &amp;lt;/math&amp;gt;, con g(x):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases} &lt;br /&gt;
      -9x-9 &amp;amp; x \in (-1,2/3)\cup (-1/3,0) \\&lt;br /&gt;
      -9x+9 &amp;amp; x \in (0,1/3)\cup (2/3,1) \\&lt;br /&gt;
      -9x+1 &amp;amp; x \in [-2/3,-1/3] \\&lt;br /&gt;
      -9x-1 &amp;amp; x \in [1/3,2/3]&lt;br /&gt;
\end{cases} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si visualizamos estas soluciones con &amp;lt;math&amp;gt; t \in [0,1] &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; x \in [0,1] &amp;lt;/math&amp;gt;, representándola a través de matlab:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:sol2.jpeg|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:sol11.jpeg|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Animación solución.gif|400px|thumb|right|Convergencia a la solución estacionaria]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
syms n&lt;br /&gt;
syms x&lt;br /&gt;
syms t&lt;br /&gt;
g=sin(n*pi*x);&lt;br /&gt;
f1=(-9*x-9)*g;&lt;br /&gt;
f2=(-9*x+9)*g;&lt;br /&gt;
f3=(-9*x+1)*g;&lt;br /&gt;
f4=(-9*x-1)*g;&lt;br /&gt;
&lt;br /&gt;
F1=int(f1,-1,-2/3);&lt;br /&gt;
F2=int(f3,-2/3,-1/3);&lt;br /&gt;
F3=int(f1,-1/3,0);&lt;br /&gt;
F4=int(f2,0,1/3);&lt;br /&gt;
F5=int(f4,1/3,2/3);&lt;br /&gt;
F6=int(f2,2/3,1);&lt;br /&gt;
&lt;br /&gt;
F(n)=F1+F2+F3+F4+F5+F6;&lt;br /&gt;
&lt;br /&gt;
sol=9*x+1;&lt;br /&gt;
k=20; %numero de elementos&lt;br /&gt;
for i=1:k&lt;br /&gt;
    sol=sol+F(i)*sin(i*pi*x)*exp(-(i^2)*pi^2*t);&lt;br /&gt;
end&lt;br /&gt;
u(x,t)=sol;&lt;br /&gt;
[X, T] = meshgrid(linspace(0,1,50), linspace(0,1,50));&lt;br /&gt;
Z=u(X,T);&lt;br /&gt;
Z=double(Z);&lt;br /&gt;
figure&lt;br /&gt;
surf(X, T, Z) &lt;br /&gt;
xlabel('x'), ylabel('t'), zlabel('u(x,t)')&lt;br /&gt;
title('Gráfico de la solución')&lt;br /&gt;
colorbar&lt;br /&gt;
shading interp &lt;br /&gt;
&lt;br /&gt;
% Definir parámetros&lt;br /&gt;
xv = linspace(0,1,100); % Dominio de x (100 puntos entre 0 y 1)&lt;br /&gt;
t_values = linspace(0,0.1,60); % Valores de t para cada frame (60 frames)&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
fig = figure;&lt;br /&gt;
v = VideoWriter('animacion_ftejercicio2.mp4', 'MPEG-4'); % Guardar animación en video&lt;br /&gt;
v.FrameRate = 5; % FPS&lt;br /&gt;
open(v);&lt;br /&gt;
&lt;br /&gt;
for t = t_values&lt;br /&gt;
    y = u(xv,t); % Evaluar la función en x para el tiempo t&lt;br /&gt;
    plot(xv, y, 'b', 'LineWidth', 2); % Graficar en 1D&lt;br /&gt;
    ylim([0, 12]); % Mantener el mismo rango en y&lt;br /&gt;
    xlabel('x');&lt;br /&gt;
    ylabel('u(x,t)');&lt;br /&gt;
    title(sprintf('t = %.2f', t)); % Mostrar el tiempo actual&lt;br /&gt;
    grid on;&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(fig);&lt;br /&gt;
    writeVideo(v, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(v); % Cerrar archivo de video&lt;br /&gt;
close(fig); % Cerrar la figura&lt;br /&gt;
&lt;br /&gt;
disp('Animación guardada como animacion_ft.mp4');&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Observamos que la solución u comienza en la temperatura correcta (salvo por oscilaciones) y para un tiempo suficientemente pequeño se aproxima considerablemente a la solución de equilibrio. No obstante, en el siguiente apartado se comentará un detalle de la solución que se debe estudiar en mayor profundidad.&lt;br /&gt;
&lt;br /&gt;
=. Paradoja de la velocidad de propagación=&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Paradoja.jpeg|400px|thumb|derecha|Solución para t=0]]&lt;br /&gt;
&lt;br /&gt;
Observamos que, en nuestra solución, para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt; la solución es estrictamente positiva. Sin embargo, en &amp;lt;math&amp;gt;t=0&amp;lt;/math&amp;gt; observamos que para el intervalo &amp;lt;math&amp;gt;  x \in [1/3,2/3]&amp;lt;/math&amp;gt; la temperatura es cero. Esto contradice la teoría de la relatividad de Einstein, ya que podemos tomar un valor &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt; arbitrariamente pequeño de manera que la temperatura sea no nula, lo cual no es posible bajo la teoría de la relatividad. Este fenómeno se conoce como la paradoja de la velocidad de propagación del calor. &lt;br /&gt;
&lt;br /&gt;
==. Ecuación de Cattaneo-Vernotte==&lt;br /&gt;
Para solucionar esta aparente falla en nuestro modelo, Cattaneo propuso una solución modificando la Ley de Fourier de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;q=-k\nabla u \rightarrow q+ \tau \frac{\partial q}{\partial t} =k\nabla u&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Añadimos el factor &amp;lt;math&amp;gt; \tau \frac{\partial q}{\partial t} &amp;lt;/math&amp;gt; a la Ley de Fourier, donde &amp;lt;math&amp;gt;\tau&amp;lt;/math&amp;gt; se conoce como el término de relajación térmica. De esta manera, se modela un retardo en la respuesta de flujo de calor a los cambios de la temperatura. Si ahora aplicamos la conservación de la energía, nos queda la conocida ecuación hiperbólica del calor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial u}{\partial t} + \tau \frac{\partial^{2}u}{\partial t^{2}} = \alpha \Delta u &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; \alpha &amp;lt;/math&amp;gt; es la difusividad térmica. Para nuestro problema, la ecuación queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases} &lt;br /&gt;
      \tau u_{tt}+u_t-u_{xx} = 0 &amp;amp; x \in [0,1], t&amp;gt;0 \\&lt;br /&gt;
      u(0,t)=10 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(1,t)=1 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(x,0)=u_0(x) &amp;amp; x \in [0,1] \\&lt;br /&gt;
      u_t(x,0)=0 &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hemos introducido en las condiciones iniciales el factor &amp;lt;math&amp;gt; u_t(x,0) &amp;lt;/math&amp;gt;, que se conoce como la velocidad térmica inicial. En nuestro caso hemos establecido esta velocidad nula ya que se asume que en el estado inicial el sistema está en equilibrio.&lt;br /&gt;
&lt;br /&gt;
Esta nueva ecuación garantiza que la velocidad de propagación del calor se produzca con velocidad finita, por lo que se utiliza en modelos donde el efecto de propagación instantánea tiene importancia. &lt;br /&gt;
&lt;br /&gt;
Homogeneizamos el problema con el cambio de variable &amp;lt;math&amp;gt; w(t,x)=u(t,x) -v(x)&amp;lt;/math&amp;gt;. Si resolvemos esta ecuación por separación de variables, tenemos las siguientes soluciones para la función espacial &amp;lt;math&amp;gt;X(x)&amp;lt;/math&amp;gt; y temporal &amp;lt;math&amp;gt; T(t)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
La ecuación espacial con estas condiciones nos proporciona la colección de soluciones &amp;lt;math&amp;gt; X_{n}(x)=A_{n}sen(n\pi x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la ecuación temporal, tenemos la solución &amp;lt;math&amp;gt; T_{n}(t)=e^{\frac{-t}{2\tau}}(c_{1}cos(\omega t) + c_{2}sen((\omega t)) &amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt; \omega = \frac{\sqrt{4\tau n^{2}\pi^{2}-1}}{2\tau} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, la solución de la ecuación de Cattaneo-Vernotte en nuestro caso es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x,t) = 1+9x+ \sum_{n=1}^{\infty} A_{n}e^{\frac{-t}{2\tau}}(c_{1}cos(\omega t) + c_{2}sen((\omega t)) \cdot sen(n\pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora, utilizando las condiciones frontera, obtenemos &amp;lt;math&amp;gt; c_{2}=0&amp;lt;/math&amp;gt;  y &amp;lt;math&amp;gt; A_{n}c_{1}=b_{n} &amp;lt;/math&amp;gt;, quedándonos la solución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;u(x,t) = 1+9x+ \sum_{n=1}^{\infty} b_{n}e^{\frac{-t}{2\tau}}cos(\omega t)  \cdot sen(n\pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
syms n&lt;br /&gt;
syms x&lt;br /&gt;
syms t&lt;br /&gt;
g=sin(n*pi*x);&lt;br /&gt;
f1=(-9*x-9)*g;&lt;br /&gt;
f2=(-9*x+9)*g;&lt;br /&gt;
f3=(-9*x+1)*g;&lt;br /&gt;
f4=(-9*x-1)*g;&lt;br /&gt;
&lt;br /&gt;
F1=int(f1,-1,-2/3);&lt;br /&gt;
F2=int(f3,-2/3,-1/3);&lt;br /&gt;
F3=int(f1,-1/3,0);&lt;br /&gt;
F4=int(f2,0,1/3);&lt;br /&gt;
F5=int(f4,1/3,2/3);&lt;br /&gt;
F6=int(f2,2/3,1);&lt;br /&gt;
&lt;br /&gt;
F(n)=F1+F2+F3+F4+F5+F6;&lt;br /&gt;
&lt;br /&gt;
sol=9*x+1;&lt;br /&gt;
k=40; %numero de elementos&lt;br /&gt;
for i=1:k&lt;br /&gt;
    sol=sol+F(i)*sin(i*pi*x)*exp(-t/(2*tau))*cos(t*(sqrt(4*tau*i^2*pi^2-1))/(2*tau));&lt;br /&gt;
end&lt;br /&gt;
u(x,t)=sol;&lt;br /&gt;
&lt;br /&gt;
[X, T] = meshgrid(linspace(0,1,50), linspace(0,1,50));&lt;br /&gt;
Z=u(X,T);&lt;br /&gt;
Z=double(Z);&lt;br /&gt;
figure&lt;br /&gt;
surf(X, T, Z) &lt;br /&gt;
xlabel('x'), ylabel('t'), zlabel('u(x,t)')&lt;br /&gt;
title('Gráfico de la solución')&lt;br /&gt;
colorbar&lt;br /&gt;
shading interp &lt;br /&gt;
&lt;br /&gt;
% Definir parámetros&lt;br /&gt;
xv = linspace(0,1,100); % Dominio de x (100 puntos entre 0 y 1)&lt;br /&gt;
t_values = linspace(0,1,60); % Valores de t para cada frame (60 frames)&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
fig = figure;&lt;br /&gt;
v = VideoWriter('animacion_ftejercicio3.mp4', 'MPEG-4'); % Guardar animación en video&lt;br /&gt;
v.FrameRate = 5; % FPS&lt;br /&gt;
open(v);&lt;br /&gt;
&lt;br /&gt;
for t = t_values&lt;br /&gt;
    y = u(xv,t); % Evaluar la función en x para el tiempo t&lt;br /&gt;
    plot(xv, y, 'b', 'LineWidth', 2); % Graficar en 1D&lt;br /&gt;
    ylim([0, 12]); % Mantener el mismo rango en y&lt;br /&gt;
    xlabel('x');&lt;br /&gt;
    ylabel('u(x,t)');&lt;br /&gt;
    title(sprintf('t = %.2f', t)); % Mostrar el tiempo actual&lt;br /&gt;
    grid on;&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(fig);&lt;br /&gt;
    writeVideo(v, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(v); % Cerrar archivo de video&lt;br /&gt;
close(fig); % Cerrar la figura&lt;br /&gt;
&lt;br /&gt;
disp('Animación guardada como animacion_ft.mp4');&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=. Referencias =&lt;br /&gt;
&lt;br /&gt;
* Amin Moosaie. Non-Fourier heat conduction in a finite medium with insulated boundaries and arbitrary initial conditions ([https://www.sciencedirect.com/science/article/pii/S0735193307001637 [1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]).&lt;br /&gt;
&lt;br /&gt;
* Francisco R. Villatoro. La ciencia de la mula Francis: La velocidad de la propagación del calor, entre la paradoja y la entropía([https://francis.naukas.com/2008/10/22/la-velocidad-de-la-propagacion-del-calor-entre-la-paradoja-y-la-entropia/ [2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;])&lt;br /&gt;
&lt;br /&gt;
* Marc Calvo Schwarzwälder. Non-Fourier Heat Conduction. The Maxwell-Cattaneo Equations ([https://upcommons.upc.edu/bitstream/handle/2117/78480/memoria.pdf [3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]).&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(PPAD)&amp;diff=84522</id>
		<title>Ecuación del calor (PPAD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(PPAD)&amp;diff=84522"/>
				<updated>2025-03-16T16:43:14Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor (Grupo PPAD). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Pablo Vidal Nacle, Pablo Maestro Fernández, Alex Heredero Santamaría, Diego Moñino Vizmanos}}&lt;br /&gt;
&lt;br /&gt;
=. Introducción=&lt;br /&gt;
La ecuación del calor clásica, formulada por Joseph Fourier, describe la difusión térmica en medios continuos y ha sido ampliamente utilizada en la física y la ingeniería. Sin embargo, un aspecto problemático de esta ecuación es que predice una velocidad de propagación infinita para las perturbaciones térmicas. Es decir, si se genera una variación de temperatura en un punto del sistema, esta afectaría instantáneamente a todo el dominio, lo cual es físicamente irreal.&lt;br /&gt;
&lt;br /&gt;
Este problema, conocido como la paradoja de la velocidad infinita de propagación, entra en conflicto con la relatividad especial, ya que ninguna perturbación física debería propagarse más rápido que la velocidad de la luz. Para corregir esta deficiencia, se han desarrollado modelos alternativos, entre ellos la ecuación de Cattaneo-Vernotte, que introduce un término de relajación en la ecuación del calor, limitando así la velocidad de propagación de las señales térmicas.&lt;br /&gt;
&lt;br /&gt;
Resolver la ecuación de Cattaneo-Vernotte es fundamental para modelar procesos térmicos en situaciones donde la ecuación clásica de Fourier no es adecuada. Esto ocurre, por ejemplo, en la propagación del calor en materiales con estructura micro o nanoescala, en plasmas, y en medios donde la conducción térmica no es instantánea. Además, su estudio permite una mejor comprensión de los procesos de difusión modificados y su relación con principios relativistas.&lt;br /&gt;
&lt;br /&gt;
Desde un punto de vista práctico, el análisis de esta ecuación puede mejorar modelos de transferencia de calor en la industria, la ingeniería de materiales y la física de semiconductores. Nuestros objetivos en este artículo serán introducir la ecuación de Cattaneo-Vernotte como una alternativa físicamente más realista, resolverla en un caso partícular, interpretar la solución obtenida y compararla con la ecuación clásica, y finalmente discutir las implicaciones físicas del modelo.&lt;br /&gt;
&lt;br /&gt;
=. Problema concreto=&lt;br /&gt;
Planteamos el siguiente problema: Se considera una varilla metálica que ocupa el intervalo [0, 1] y que se encuentra aislada por su superficie lateral, de manera que la conducción de calor sólo se produce en la&lt;br /&gt;
dirección longitudinal. En el extremo derecho&lt;br /&gt;
se consigue mantener la temperatura a 10°C mientras que en el izquierdo la temperatura&lt;br /&gt;
es siempre de 1°C. Además, la temperatura en el instante inicial viene dada por la función &amp;lt;math&amp;gt; u_0 (x)= 10-10 \cdot 1_{[1/3,2/3]}(x)&amp;lt;/math&amp;gt; . Así, el sistema que modeliza este problema es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases} &lt;br /&gt;
      u_t-u_{xx} = 0 &amp;amp; x \in [0,1], t&amp;gt;0 \\&lt;br /&gt;
      u(0,t)=10 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(1,t)=1 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(x,0)=u_0(x) &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Su solución estacionaria es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; v(x)=9x+1 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y la solución general es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x,t)= 9x+1+  \sum_{n=1}^{\infty}b_n sen(n \pi x)e^{n^2\pi ^2 t}&amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; b_n &amp;lt;/math&amp;gt; viene dado por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; b_n = integral(g(x)sen(n\pi x)dx &amp;lt;/math&amp;gt;, con:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;math&amp;gt;g(x)=&amp;lt;/math&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases} &lt;br /&gt;
      -9x-9 &amp;amp; x \in (-1,2/3)\cup (-1/3,0) \\&lt;br /&gt;
      -9x+9 &amp;amp; x \in (0,1/3)\cup (2/3,1) \\&lt;br /&gt;
      -9x+1 &amp;amp; x \in [-2/3,-1/3] \\&lt;br /&gt;
      -9x-1 &amp;amp; x \in [1/3,2/3]&lt;br /&gt;
\end{cases} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si visualizamos estas soluciones con &amp;lt;math&amp;gt; t \in [0,1] &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; x \in [0,1] &amp;lt;/math&amp;gt;, representándola a través de matlab:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:sol2.jpeg|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:sol11.jpeg|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Animación solución.gif|400px|thumb|right|Convergencia a la solución estacionaria]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
syms n&lt;br /&gt;
syms x&lt;br /&gt;
syms t&lt;br /&gt;
g=sin(n*pi*x);&lt;br /&gt;
f1=(-9*x-9)*g;&lt;br /&gt;
f2=(-9*x+9)*g;&lt;br /&gt;
f3=(-9*x+1)*g;&lt;br /&gt;
f4=(-9*x-1)*g;&lt;br /&gt;
&lt;br /&gt;
F1=int(f1,-1,-2/3);&lt;br /&gt;
F2=int(f3,-2/3,-1/3);&lt;br /&gt;
F3=int(f1,-1/3,0);&lt;br /&gt;
F4=int(f2,0,1/3);&lt;br /&gt;
F5=int(f4,1/3,2/3);&lt;br /&gt;
F6=int(f2,2/3,1);&lt;br /&gt;
&lt;br /&gt;
F(n)=F1+F2+F3+F4+F5+F6;&lt;br /&gt;
&lt;br /&gt;
sol=9*x+1;&lt;br /&gt;
k=20; %numero de elementos&lt;br /&gt;
for i=1:k&lt;br /&gt;
    sol=sol+F(i)*sin(i*pi*x)*exp(-(i^2)*pi^2*t);&lt;br /&gt;
end&lt;br /&gt;
u(x,t)=sol;&lt;br /&gt;
[X, T] = meshgrid(linspace(0,1,50), linspace(0,1,50));&lt;br /&gt;
Z=u(X,T);&lt;br /&gt;
Z=double(Z);&lt;br /&gt;
figure&lt;br /&gt;
surf(X, T, Z) &lt;br /&gt;
xlabel('x'), ylabel('t'), zlabel('u(x,t)')&lt;br /&gt;
title('Gráfico de la solución')&lt;br /&gt;
colorbar&lt;br /&gt;
shading interp &lt;br /&gt;
&lt;br /&gt;
% Definir parámetros&lt;br /&gt;
xv = linspace(0,1,100); % Dominio de x (100 puntos entre 0 y 1)&lt;br /&gt;
t_values = linspace(0,0.1,60); % Valores de t para cada frame (60 frames)&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
fig = figure;&lt;br /&gt;
v = VideoWriter('animacion_ftejercicio2.mp4', 'MPEG-4'); % Guardar animación en video&lt;br /&gt;
v.FrameRate = 5; % FPS&lt;br /&gt;
open(v);&lt;br /&gt;
&lt;br /&gt;
for t = t_values&lt;br /&gt;
    y = u(xv,t); % Evaluar la función en x para el tiempo t&lt;br /&gt;
    plot(xv, y, 'b', 'LineWidth', 2); % Graficar en 1D&lt;br /&gt;
    ylim([0, 12]); % Mantener el mismo rango en y&lt;br /&gt;
    xlabel('x');&lt;br /&gt;
    ylabel('u(x,t)');&lt;br /&gt;
    title(sprintf('t = %.2f', t)); % Mostrar el tiempo actual&lt;br /&gt;
    grid on;&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(fig);&lt;br /&gt;
    writeVideo(v, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(v); % Cerrar archivo de video&lt;br /&gt;
close(fig); % Cerrar la figura&lt;br /&gt;
&lt;br /&gt;
disp('Animación guardada como animacion_ft.mp4');&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Observamos que la solución u comienza en la temperatura correcta (salvo por oscilaciones) y para un tiempo suficientemente pequeño se aproxima considerablemente a la solución de equilibrio. No obstante, en el siguiente apartado se comentará un detalle de la solución que se debe estudiar en mayor profundidad.&lt;br /&gt;
&lt;br /&gt;
=. Paradoja de la velocidad de propagación=&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Paradoja.jpeg|400px|thumb|derecha|Solución para t=0]]&lt;br /&gt;
&lt;br /&gt;
Observamos que, en nuestra solución, para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt; la solución es estrictamente positiva. Sin embargo, en &amp;lt;math&amp;gt;t=0&amp;lt;/math&amp;gt; observamos que para el intervalo &amp;lt;math&amp;gt;  x \in [1/3,2/3]&amp;lt;/math&amp;gt; la temperatura es cero. Esto contradice la teoría de la relatividad de Einstein, ya que podemos tomar un valor &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt; arbitrariamente pequeño de manera que la temperatura sea no nula, lo cual no es posible bajo la teoría de la relatividad. Este fenómeno se conoce como la paradoja de la velocidad de propagación del calor. &lt;br /&gt;
&lt;br /&gt;
==. Ecuación de Cattaneo-Vernotte==&lt;br /&gt;
Para solucionar esta aparente falla en nuestro modelo, Cattaneo propuso una solución modificando la Ley de Fourier de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;q=-k\nabla u \rightarrow q+ \tau \frac{\partial q}{\partial t} =k\nabla u&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Añadimos el factor &amp;lt;math&amp;gt; \tau \frac{\partial q}{\partial t} &amp;lt;/math&amp;gt; a la Ley de Fourier, donde &amp;lt;math&amp;gt;\tau&amp;lt;/math&amp;gt; se conoce como el término de relajación térmica. De esta manera, se modela un retardo en la respuesta de flujo de calor a los cambios de la temperatura. Si ahora aplicamos la conservación de la energía, nos queda la conocida ecuación hiperbólica del calor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial u}{\partial t} + \tau \frac{\partial^{2}u}{\partial t^{2}} = \alpha \Delta u &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; \alpha &amp;lt;/math&amp;gt; es la difusividad térmica. Para nuestro problema, la ecuación queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases} &lt;br /&gt;
      \tau u_{tt}+u_t-u_{xx} = 0 &amp;amp; x \in [0,1], t&amp;gt;0 \\&lt;br /&gt;
      u(0,t)=10 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(1,t)=1 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(x,0)=u_0(x) &amp;amp; x \in [0,1] \\&lt;br /&gt;
      u_t(x,0)=0 &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hemos introducido en las condiciones iniciales el factor &amp;lt;math&amp;gt; u_t(x,0) &amp;lt;/math&amp;gt;, que se conoce como la velocidad térmica inicial. En nuestro caso hemos establecido esta velocidad nula ya que se asume que en el estado inicial el sistema está en equilibrio.&lt;br /&gt;
&lt;br /&gt;
Esta nueva ecuación garantiza que la velocidad de propagación del calor se produzca con velocidad finita, por lo que se utiliza en modelos donde el efecto de propagación instantánea tiene importancia. &lt;br /&gt;
&lt;br /&gt;
Homogeneizamos el problema con el cambio de variable &amp;lt;math&amp;gt; w(t,x)=u(t,x) -v(x)&amp;lt;/math&amp;gt;. Si resolvemos esta ecuación por separación de variables, tenemos las siguientes soluciones para la función espacial &amp;lt;math&amp;gt;X(x)&amp;lt;/math&amp;gt; y temporal &amp;lt;math&amp;gt; T(t)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
La ecuación espacial con estas condiciones nos proporciona la colección de soluciones &amp;lt;math&amp;gt; X_{n}(x)=A_{n}sen(n\pi x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la ecuación temporal, tenemos la solución &amp;lt;math&amp;gt; T_{n}(t)=e^{\frac{-t}{2\tau}}(c_{1}cos(\omega t) + c_{2}sen((\omega t)) &amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt; \omega = \frac{\sqrt{4\tau n^{2}\pi^{2}-1}}{2\tau} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, la solución de la ecuación de Cattaneo-Vernotte en nuestro caso es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x,t) = 1+9x+ \sum_{n=1}^{\infty} A_{n}e^{\frac{-t}{2\tau}}(c_{1}cos(\omega t) + c_{2}sen((\omega t)) \cdot sen(n\pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora, utilizando las condiciones frontera, obtenemos &amp;lt;math&amp;gt; c_{2}=0&amp;lt;/math&amp;gt;  y &amp;lt;math&amp;gt; A_{n}c_{1}=b_{n} &amp;lt;/math&amp;gt;, quedándonos la solución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;u(x,t) = 1+9x+ \sum_{n=1}^{\infty} b_{n}e^{\frac{-t}{2\tau}}cos(\omega t)  \cdot sen(n\pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
syms n&lt;br /&gt;
syms x&lt;br /&gt;
syms t&lt;br /&gt;
g=sin(n*pi*x);&lt;br /&gt;
f1=(-9*x-9)*g;&lt;br /&gt;
f2=(-9*x+9)*g;&lt;br /&gt;
f3=(-9*x+1)*g;&lt;br /&gt;
f4=(-9*x-1)*g;&lt;br /&gt;
&lt;br /&gt;
F1=int(f1,-1,-2/3);&lt;br /&gt;
F2=int(f3,-2/3,-1/3);&lt;br /&gt;
F3=int(f1,-1/3,0);&lt;br /&gt;
F4=int(f2,0,1/3);&lt;br /&gt;
F5=int(f4,1/3,2/3);&lt;br /&gt;
F6=int(f2,2/3,1);&lt;br /&gt;
&lt;br /&gt;
F(n)=F1+F2+F3+F4+F5+F6;&lt;br /&gt;
&lt;br /&gt;
sol=9*x+1;&lt;br /&gt;
k=40; %numero de elementos&lt;br /&gt;
for i=1:k&lt;br /&gt;
    sol=sol+F(i)*sin(i*pi*x)*exp(-t/(2*tau))*cos(t*(sqrt(4*tau*i^2*pi^2-1))/(2*tau));&lt;br /&gt;
end&lt;br /&gt;
u(x,t)=sol;&lt;br /&gt;
&lt;br /&gt;
[X, T] = meshgrid(linspace(0,1,50), linspace(0,1,50));&lt;br /&gt;
Z=u(X,T);&lt;br /&gt;
Z=double(Z);&lt;br /&gt;
figure&lt;br /&gt;
surf(X, T, Z) &lt;br /&gt;
xlabel('x'), ylabel('t'), zlabel('u(x,t)')&lt;br /&gt;
title('Gráfico de la solución')&lt;br /&gt;
colorbar&lt;br /&gt;
shading interp &lt;br /&gt;
&lt;br /&gt;
% Definir parámetros&lt;br /&gt;
xv = linspace(0,1,100); % Dominio de x (100 puntos entre 0 y 1)&lt;br /&gt;
t_values = linspace(0,1,60); % Valores de t para cada frame (60 frames)&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
fig = figure;&lt;br /&gt;
v = VideoWriter('animacion_ftejercicio3.mp4', 'MPEG-4'); % Guardar animación en video&lt;br /&gt;
v.FrameRate = 5; % FPS&lt;br /&gt;
open(v);&lt;br /&gt;
&lt;br /&gt;
for t = t_values&lt;br /&gt;
    y = u(xv,t); % Evaluar la función en x para el tiempo t&lt;br /&gt;
    plot(xv, y, 'b', 'LineWidth', 2); % Graficar en 1D&lt;br /&gt;
    ylim([0, 12]); % Mantener el mismo rango en y&lt;br /&gt;
    xlabel('x');&lt;br /&gt;
    ylabel('u(x,t)');&lt;br /&gt;
    title(sprintf('t = %.2f', t)); % Mostrar el tiempo actual&lt;br /&gt;
    grid on;&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(fig);&lt;br /&gt;
    writeVideo(v, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(v); % Cerrar archivo de video&lt;br /&gt;
close(fig); % Cerrar la figura&lt;br /&gt;
&lt;br /&gt;
disp('Animación guardada como animacion_ft.mp4');&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=. Referencias =&lt;br /&gt;
&lt;br /&gt;
* Amin Moosaie. Non-Fourier heat conduction in a finite medium with insulated boundaries and arbitrary initial conditions ([https://www.sciencedirect.com/science/article/pii/S0735193307001637 [1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]).&lt;br /&gt;
&lt;br /&gt;
* Francisco R. Villatoro. La ciencia de la mula Francis: La velocidad de la propagación del calor, entre la paradoja y la entropía([https://francis.naukas.com/2008/10/22/la-velocidad-de-la-propagacion-del-calor-entre-la-paradoja-y-la-entropia/ [2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;])&lt;br /&gt;
&lt;br /&gt;
* Marc Calvo Schwarzwälder. Non-Fourier Heat Conduction. The Maxwell-Cattaneo Equations ([https://upcommons.upc.edu/bitstream/handle/2117/78480/memoria.pdf [3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]).&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(PPAD)&amp;diff=84521</id>
		<title>Ecuación del calor (PPAD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(PPAD)&amp;diff=84521"/>
				<updated>2025-03-16T16:42:52Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor (Grupo PPAD). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Pablo Vidal Nacle, Pablo Maestro Fernández, Alex Heredero Santamaría, Diego Moñino Vizmanos}}&lt;br /&gt;
&lt;br /&gt;
=. Introducción=&lt;br /&gt;
La ecuación del calor clásica, formulada por Joseph Fourier, describe la difusión térmica en medios continuos y ha sido ampliamente utilizada en la física y la ingeniería. Sin embargo, un aspecto problemático de esta ecuación es que predice una velocidad de propagación infinita para las perturbaciones térmicas. Es decir, si se genera una variación de temperatura en un punto del sistema, esta afectaría instantáneamente a todo el dominio, lo cual es físicamente irreal.&lt;br /&gt;
&lt;br /&gt;
Este problema, conocido como la paradoja de la velocidad infinita de propagación, entra en conflicto con la relatividad especial, ya que ninguna perturbación física debería propagarse más rápido que la velocidad de la luz. Para corregir esta deficiencia, se han desarrollado modelos alternativos, entre ellos la ecuación de Cattaneo-Vernotte, que introduce un término de relajación en la ecuación del calor, limitando así la velocidad de propagación de las señales térmicas.&lt;br /&gt;
&lt;br /&gt;
Resolver la ecuación de Cattaneo-Vernotte es fundamental para modelar procesos térmicos en situaciones donde la ecuación clásica de Fourier no es adecuada. Esto ocurre, por ejemplo, en la propagación del calor en materiales con estructura micro o nanoescala, en plasmas, y en medios donde la conducción térmica no es instantánea. Además, su estudio permite una mejor comprensión de los procesos de difusión modificados y su relación con principios relativistas.&lt;br /&gt;
&lt;br /&gt;
Desde un punto de vista práctico, el análisis de esta ecuación puede mejorar modelos de transferencia de calor en la industria, la ingeniería de materiales y la física de semiconductores. Nuestros objetivos en este artículo serán introducir la ecuación de Cattaneo-Vernotte como una alternativa físicamente más realista, resolverla en un caso partícular, interpretar la solución obtenida y compararla con la ecuación clásica, y finalmente discutir las implicaciones físicas del modelo.&lt;br /&gt;
&lt;br /&gt;
=. Problema concreto=&lt;br /&gt;
Planteamos el siguiente problema: Se considera una varilla metálica que ocupa el intervalo [0, 1] y que se encuentra aislada por su superficie lateral, de manera que la conducción de calor sólo se produce en la&lt;br /&gt;
dirección longitudinal. En el extremo derecho&lt;br /&gt;
se consigue mantener la temperatura a 10°C mientras que en el izquierdo la temperatura&lt;br /&gt;
es siempre de 1°C. Además, la temperatura en el instante inicial viene dada por la función &amp;lt;math&amp;gt; u_0 (x)= 10-10 \cdot 1_{[1/3,2/3]}(x)&amp;lt;/math&amp;gt; . Así, el sistema que modeliza este problema es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases} &lt;br /&gt;
      u_t-u_{xx} = 0 &amp;amp; x \in [0,1], t&amp;gt;0 \\&lt;br /&gt;
      u(0,t)=10 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(1,t)=1 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(x,0)=u_0(x) &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Su solución estacionaria es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; v(x)=9x+1 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y la solución general es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x,t)= 9x+1+  \sum_{n=1}^{\infty}b_n sen(n \pi x)e^{n^2\pi ^2 t}&amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; b_n &amp;lt;/math&amp;gt; viene dado por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; b_n = integral(g(x)sen(n\pi x)dx &amp;lt;math&amp;gt;, con:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;math&amp;gt;g(x)=&amp;lt;/math&amp;gt;&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases} &lt;br /&gt;
      -9x-9 &amp;amp; x \in (-1,2/3)\cup (-1/3,0) \\&lt;br /&gt;
      -9x+9 &amp;amp; x \in (0,1/3)\cup (2/3,1) \\&lt;br /&gt;
      -9x+1 &amp;amp; x \in [-2/3,-1/3] \\&lt;br /&gt;
      -9x-1 &amp;amp; x \in [1/3,2/3]&lt;br /&gt;
\end{cases} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si visualizamos estas soluciones con &amp;lt;math&amp;gt; t \in [0,1] &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; x \in [0,1] &amp;lt;/math&amp;gt;, representándola a través de matlab:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:sol2.jpeg|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:sol11.jpeg|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Animación solución.gif|400px|thumb|right|Convergencia a la solución estacionaria]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
syms n&lt;br /&gt;
syms x&lt;br /&gt;
syms t&lt;br /&gt;
g=sin(n*pi*x);&lt;br /&gt;
f1=(-9*x-9)*g;&lt;br /&gt;
f2=(-9*x+9)*g;&lt;br /&gt;
f3=(-9*x+1)*g;&lt;br /&gt;
f4=(-9*x-1)*g;&lt;br /&gt;
&lt;br /&gt;
F1=int(f1,-1,-2/3);&lt;br /&gt;
F2=int(f3,-2/3,-1/3);&lt;br /&gt;
F3=int(f1,-1/3,0);&lt;br /&gt;
F4=int(f2,0,1/3);&lt;br /&gt;
F5=int(f4,1/3,2/3);&lt;br /&gt;
F6=int(f2,2/3,1);&lt;br /&gt;
&lt;br /&gt;
F(n)=F1+F2+F3+F4+F5+F6;&lt;br /&gt;
&lt;br /&gt;
sol=9*x+1;&lt;br /&gt;
k=20; %numero de elementos&lt;br /&gt;
for i=1:k&lt;br /&gt;
    sol=sol+F(i)*sin(i*pi*x)*exp(-(i^2)*pi^2*t);&lt;br /&gt;
end&lt;br /&gt;
u(x,t)=sol;&lt;br /&gt;
[X, T] = meshgrid(linspace(0,1,50), linspace(0,1,50));&lt;br /&gt;
Z=u(X,T);&lt;br /&gt;
Z=double(Z);&lt;br /&gt;
figure&lt;br /&gt;
surf(X, T, Z) &lt;br /&gt;
xlabel('x'), ylabel('t'), zlabel('u(x,t)')&lt;br /&gt;
title('Gráfico de la solución')&lt;br /&gt;
colorbar&lt;br /&gt;
shading interp &lt;br /&gt;
&lt;br /&gt;
% Definir parámetros&lt;br /&gt;
xv = linspace(0,1,100); % Dominio de x (100 puntos entre 0 y 1)&lt;br /&gt;
t_values = linspace(0,0.1,60); % Valores de t para cada frame (60 frames)&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
fig = figure;&lt;br /&gt;
v = VideoWriter('animacion_ftejercicio2.mp4', 'MPEG-4'); % Guardar animación en video&lt;br /&gt;
v.FrameRate = 5; % FPS&lt;br /&gt;
open(v);&lt;br /&gt;
&lt;br /&gt;
for t = t_values&lt;br /&gt;
    y = u(xv,t); % Evaluar la función en x para el tiempo t&lt;br /&gt;
    plot(xv, y, 'b', 'LineWidth', 2); % Graficar en 1D&lt;br /&gt;
    ylim([0, 12]); % Mantener el mismo rango en y&lt;br /&gt;
    xlabel('x');&lt;br /&gt;
    ylabel('u(x,t)');&lt;br /&gt;
    title(sprintf('t = %.2f', t)); % Mostrar el tiempo actual&lt;br /&gt;
    grid on;&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(fig);&lt;br /&gt;
    writeVideo(v, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(v); % Cerrar archivo de video&lt;br /&gt;
close(fig); % Cerrar la figura&lt;br /&gt;
&lt;br /&gt;
disp('Animación guardada como animacion_ft.mp4');&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Observamos que la solución u comienza en la temperatura correcta (salvo por oscilaciones) y para un tiempo suficientemente pequeño se aproxima considerablemente a la solución de equilibrio. No obstante, en el siguiente apartado se comentará un detalle de la solución que se debe estudiar en mayor profundidad.&lt;br /&gt;
&lt;br /&gt;
=. Paradoja de la velocidad de propagación=&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Paradoja.jpeg|400px|thumb|derecha|Solución para t=0]]&lt;br /&gt;
&lt;br /&gt;
Observamos que, en nuestra solución, para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt; la solución es estrictamente positiva. Sin embargo, en &amp;lt;math&amp;gt;t=0&amp;lt;/math&amp;gt; observamos que para el intervalo &amp;lt;math&amp;gt;  x \in [1/3,2/3]&amp;lt;/math&amp;gt; la temperatura es cero. Esto contradice la teoría de la relatividad de Einstein, ya que podemos tomar un valor &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt; arbitrariamente pequeño de manera que la temperatura sea no nula, lo cual no es posible bajo la teoría de la relatividad. Este fenómeno se conoce como la paradoja de la velocidad de propagación del calor. &lt;br /&gt;
&lt;br /&gt;
==. Ecuación de Cattaneo-Vernotte==&lt;br /&gt;
Para solucionar esta aparente falla en nuestro modelo, Cattaneo propuso una solución modificando la Ley de Fourier de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;q=-k\nabla u \rightarrow q+ \tau \frac{\partial q}{\partial t} =k\nabla u&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Añadimos el factor &amp;lt;math&amp;gt; \tau \frac{\partial q}{\partial t} &amp;lt;/math&amp;gt; a la Ley de Fourier, donde &amp;lt;math&amp;gt;\tau&amp;lt;/math&amp;gt; se conoce como el término de relajación térmica. De esta manera, se modela un retardo en la respuesta de flujo de calor a los cambios de la temperatura. Si ahora aplicamos la conservación de la energía, nos queda la conocida ecuación hiperbólica del calor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial u}{\partial t} + \tau \frac{\partial^{2}u}{\partial t^{2}} = \alpha \Delta u &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; \alpha &amp;lt;/math&amp;gt; es la difusividad térmica. Para nuestro problema, la ecuación queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases} &lt;br /&gt;
      \tau u_{tt}+u_t-u_{xx} = 0 &amp;amp; x \in [0,1], t&amp;gt;0 \\&lt;br /&gt;
      u(0,t)=10 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(1,t)=1 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(x,0)=u_0(x) &amp;amp; x \in [0,1] \\&lt;br /&gt;
      u_t(x,0)=0 &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hemos introducido en las condiciones iniciales el factor &amp;lt;math&amp;gt; u_t(x,0) &amp;lt;/math&amp;gt;, que se conoce como la velocidad térmica inicial. En nuestro caso hemos establecido esta velocidad nula ya que se asume que en el estado inicial el sistema está en equilibrio.&lt;br /&gt;
&lt;br /&gt;
Esta nueva ecuación garantiza que la velocidad de propagación del calor se produzca con velocidad finita, por lo que se utiliza en modelos donde el efecto de propagación instantánea tiene importancia. &lt;br /&gt;
&lt;br /&gt;
Homogeneizamos el problema con el cambio de variable &amp;lt;math&amp;gt; w(t,x)=u(t,x) -v(x)&amp;lt;/math&amp;gt;. Si resolvemos esta ecuación por separación de variables, tenemos las siguientes soluciones para la función espacial &amp;lt;math&amp;gt;X(x)&amp;lt;/math&amp;gt; y temporal &amp;lt;math&amp;gt; T(t)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
La ecuación espacial con estas condiciones nos proporciona la colección de soluciones &amp;lt;math&amp;gt; X_{n}(x)=A_{n}sen(n\pi x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la ecuación temporal, tenemos la solución &amp;lt;math&amp;gt; T_{n}(t)=e^{\frac{-t}{2\tau}}(c_{1}cos(\omega t) + c_{2}sen((\omega t)) &amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt; \omega = \frac{\sqrt{4\tau n^{2}\pi^{2}-1}}{2\tau} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, la solución de la ecuación de Cattaneo-Vernotte en nuestro caso es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x,t) = 1+9x+ \sum_{n=1}^{\infty} A_{n}e^{\frac{-t}{2\tau}}(c_{1}cos(\omega t) + c_{2}sen((\omega t)) \cdot sen(n\pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora, utilizando las condiciones frontera, obtenemos &amp;lt;math&amp;gt; c_{2}=0&amp;lt;/math&amp;gt;  y &amp;lt;math&amp;gt; A_{n}c_{1}=b_{n} &amp;lt;/math&amp;gt;, quedándonos la solución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;u(x,t) = 1+9x+ \sum_{n=1}^{\infty} b_{n}e^{\frac{-t}{2\tau}}cos(\omega t)  \cdot sen(n\pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
syms n&lt;br /&gt;
syms x&lt;br /&gt;
syms t&lt;br /&gt;
g=sin(n*pi*x);&lt;br /&gt;
f1=(-9*x-9)*g;&lt;br /&gt;
f2=(-9*x+9)*g;&lt;br /&gt;
f3=(-9*x+1)*g;&lt;br /&gt;
f4=(-9*x-1)*g;&lt;br /&gt;
&lt;br /&gt;
F1=int(f1,-1,-2/3);&lt;br /&gt;
F2=int(f3,-2/3,-1/3);&lt;br /&gt;
F3=int(f1,-1/3,0);&lt;br /&gt;
F4=int(f2,0,1/3);&lt;br /&gt;
F5=int(f4,1/3,2/3);&lt;br /&gt;
F6=int(f2,2/3,1);&lt;br /&gt;
&lt;br /&gt;
F(n)=F1+F2+F3+F4+F5+F6;&lt;br /&gt;
&lt;br /&gt;
sol=9*x+1;&lt;br /&gt;
k=40; %numero de elementos&lt;br /&gt;
for i=1:k&lt;br /&gt;
    sol=sol+F(i)*sin(i*pi*x)*exp(-t/(2*tau))*cos(t*(sqrt(4*tau*i^2*pi^2-1))/(2*tau));&lt;br /&gt;
end&lt;br /&gt;
u(x,t)=sol;&lt;br /&gt;
&lt;br /&gt;
[X, T] = meshgrid(linspace(0,1,50), linspace(0,1,50));&lt;br /&gt;
Z=u(X,T);&lt;br /&gt;
Z=double(Z);&lt;br /&gt;
figure&lt;br /&gt;
surf(X, T, Z) &lt;br /&gt;
xlabel('x'), ylabel('t'), zlabel('u(x,t)')&lt;br /&gt;
title('Gráfico de la solución')&lt;br /&gt;
colorbar&lt;br /&gt;
shading interp &lt;br /&gt;
&lt;br /&gt;
% Definir parámetros&lt;br /&gt;
xv = linspace(0,1,100); % Dominio de x (100 puntos entre 0 y 1)&lt;br /&gt;
t_values = linspace(0,1,60); % Valores de t para cada frame (60 frames)&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
fig = figure;&lt;br /&gt;
v = VideoWriter('animacion_ftejercicio3.mp4', 'MPEG-4'); % Guardar animación en video&lt;br /&gt;
v.FrameRate = 5; % FPS&lt;br /&gt;
open(v);&lt;br /&gt;
&lt;br /&gt;
for t = t_values&lt;br /&gt;
    y = u(xv,t); % Evaluar la función en x para el tiempo t&lt;br /&gt;
    plot(xv, y, 'b', 'LineWidth', 2); % Graficar en 1D&lt;br /&gt;
    ylim([0, 12]); % Mantener el mismo rango en y&lt;br /&gt;
    xlabel('x');&lt;br /&gt;
    ylabel('u(x,t)');&lt;br /&gt;
    title(sprintf('t = %.2f', t)); % Mostrar el tiempo actual&lt;br /&gt;
    grid on;&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(fig);&lt;br /&gt;
    writeVideo(v, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(v); % Cerrar archivo de video&lt;br /&gt;
close(fig); % Cerrar la figura&lt;br /&gt;
&lt;br /&gt;
disp('Animación guardada como animacion_ft.mp4');&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=. Referencias =&lt;br /&gt;
&lt;br /&gt;
* Amin Moosaie. Non-Fourier heat conduction in a finite medium with insulated boundaries and arbitrary initial conditions ([https://www.sciencedirect.com/science/article/pii/S0735193307001637 [1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]).&lt;br /&gt;
&lt;br /&gt;
* Francisco R. Villatoro. La ciencia de la mula Francis: La velocidad de la propagación del calor, entre la paradoja y la entropía([https://francis.naukas.com/2008/10/22/la-velocidad-de-la-propagacion-del-calor-entre-la-paradoja-y-la-entropia/ [2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;])&lt;br /&gt;
&lt;br /&gt;
* Marc Calvo Schwarzwälder. Non-Fourier Heat Conduction. The Maxwell-Cattaneo Equations ([https://upcommons.upc.edu/bitstream/handle/2117/78480/memoria.pdf [3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]).&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(PPAD)&amp;diff=84513</id>
		<title>Ecuación del calor (PPAD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(PPAD)&amp;diff=84513"/>
				<updated>2025-03-16T16:37:05Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor (Grupo PPAD). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Pablo Vidal Nacle, Pablo Maestro Fernández, Alex Heredero Santamaría, Diego Moñino Vizmanos}}&lt;br /&gt;
&lt;br /&gt;
=. Introducción=&lt;br /&gt;
La ecuación del calor clásica, formulada por Joseph Fourier, describe la difusión térmica en medios continuos y ha sido ampliamente utilizada en la física y la ingeniería. Sin embargo, un aspecto problemático de esta ecuación es que predice una velocidad de propagación infinita para las perturbaciones térmicas. Es decir, si se genera una variación de temperatura en un punto del sistema, esta afectaría instantáneamente a todo el dominio, lo cual es físicamente irreal.&lt;br /&gt;
&lt;br /&gt;
Este problema, conocido como la paradoja de la velocidad infinita de propagación, entra en conflicto con la relatividad especial, ya que ninguna perturbación física debería propagarse más rápido que la velocidad de la luz. Para corregir esta deficiencia, se han desarrollado modelos alternativos, entre ellos la ecuación de Cattaneo-Vernotte, que introduce un término de relajación en la ecuación del calor, limitando así la velocidad de propagación de las señales térmicas.&lt;br /&gt;
&lt;br /&gt;
Resolver la ecuación de Cattaneo-Vernotte es fundamental para modelar procesos térmicos en situaciones donde la ecuación clásica de Fourier no es adecuada. Esto ocurre, por ejemplo, en la propagación del calor en materiales con estructura micro o nanoescala, en plasmas, y en medios donde la conducción térmica no es instantánea. Además, su estudio permite una mejor comprensión de los procesos de difusión modificados y su relación con principios relativistas.&lt;br /&gt;
&lt;br /&gt;
Desde un punto de vista práctico, el análisis de esta ecuación puede mejorar modelos de transferencia de calor en la industria, la ingeniería de materiales y la física de semiconductores. Nuestros objetivos en este artículo serán introducir la ecuación de Cattaneo-Vernotte como una alternativa físicamente más realista, resolverla en un caso partícular, interpretar la solución obtenida y compararla con la ecuación clásica, y finalmente discutir las implicaciones físicas del modelo.&lt;br /&gt;
&lt;br /&gt;
=. Problema concreto=&lt;br /&gt;
Planteamos el siguiente problema: Se considera una varilla metálica que ocupa el intervalo [0, 1] y que se encuentra aislada por su superficie lateral, de manera que la conducción de calor sólo se produce en la&lt;br /&gt;
dirección longitudinal. En el extremo derecho&lt;br /&gt;
se consigue mantener la temperatura a 10°C mientras que en el izquierdo la temperatura&lt;br /&gt;
es siempre de 1°C. Además, la temperatura en el instante inicial viene dada por la función &amp;lt;math&amp;gt; u_0 (x)= 10-10 \cdot 1_{[1/3,2/3]}(x)&amp;lt;/math&amp;gt; . Así, el sistema que modeliza este problema es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases} &lt;br /&gt;
      u_t-u_{xx} = 0 &amp;amp; x \in [0,1], t&amp;gt;0 \\&lt;br /&gt;
      u(0,t)=10 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(1,t)=1 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(x,0)=u_0(x) &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Su solución estacionaria es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; v(x)=9x+1 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y la solución general es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x,t)= 9x+1+  \sum_{n=1}^{\infty}b_n sen(n \pi x)e^{n^2\pi ^2 t}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; b_n &amp;lt;/math&amp;gt; es una constante de la forma:&lt;br /&gt;
&lt;br /&gt;
AQUI VEMOS QUE HACEMOS CON BN&lt;br /&gt;
&lt;br /&gt;
Si visualizamos estas soluciones con &amp;lt;math&amp;gt; t \in [0,1] &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; x \in [0,1] &amp;lt;/math&amp;gt;, representándola a través de matlab:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:sol2.jpeg|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:sol11.jpeg|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Animación solución.gif|400px|thumb|right|Convergencia a la solución estacionaria]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
syms n&lt;br /&gt;
syms x&lt;br /&gt;
syms t&lt;br /&gt;
g=sin(n*pi*x);&lt;br /&gt;
f1=(-9*x-9)*g;&lt;br /&gt;
f2=(-9*x+9)*g;&lt;br /&gt;
f3=(-9*x+1)*g;&lt;br /&gt;
f4=(-9*x-1)*g;&lt;br /&gt;
&lt;br /&gt;
F1=int(f1,-1,-2/3);&lt;br /&gt;
F2=int(f3,-2/3,-1/3);&lt;br /&gt;
F3=int(f1,-1/3,0);&lt;br /&gt;
F4=int(f2,0,1/3);&lt;br /&gt;
F5=int(f4,1/3,2/3);&lt;br /&gt;
F6=int(f2,2/3,1);&lt;br /&gt;
&lt;br /&gt;
F(n)=F1+F2+F3+F4+F5+F6;&lt;br /&gt;
&lt;br /&gt;
sol=9*x+1;&lt;br /&gt;
k=20; %numero de elementos&lt;br /&gt;
for i=1:k&lt;br /&gt;
    sol=sol+F(i)*sin(i*pi*x)*exp(-(i^2)*pi^2*t);&lt;br /&gt;
end&lt;br /&gt;
u(x,t)=sol;&lt;br /&gt;
[X, T] = meshgrid(linspace(0,1,50), linspace(0,1,50));&lt;br /&gt;
Z=u(X,T);&lt;br /&gt;
Z=double(Z);&lt;br /&gt;
figure&lt;br /&gt;
surf(X, T, Z) &lt;br /&gt;
xlabel('x'), ylabel('t'), zlabel('u(x,t)')&lt;br /&gt;
title('Gráfico de la solución')&lt;br /&gt;
colorbar&lt;br /&gt;
shading interp &lt;br /&gt;
&lt;br /&gt;
% Definir parámetros&lt;br /&gt;
xv = linspace(0,1,100); % Dominio de x (100 puntos entre 0 y 1)&lt;br /&gt;
t_values = linspace(0,0.1,60); % Valores de t para cada frame (60 frames)&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
fig = figure;&lt;br /&gt;
v = VideoWriter('animacion_ftejercicio2.mp4', 'MPEG-4'); % Guardar animación en video&lt;br /&gt;
v.FrameRate = 5; % FPS&lt;br /&gt;
open(v);&lt;br /&gt;
&lt;br /&gt;
for t = t_values&lt;br /&gt;
    y = u(xv,t); % Evaluar la función en x para el tiempo t&lt;br /&gt;
    plot(xv, y, 'b', 'LineWidth', 2); % Graficar en 1D&lt;br /&gt;
    ylim([0, 12]); % Mantener el mismo rango en y&lt;br /&gt;
    xlabel('x');&lt;br /&gt;
    ylabel('u(x,t)');&lt;br /&gt;
    title(sprintf('t = %.2f', t)); % Mostrar el tiempo actual&lt;br /&gt;
    grid on;&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(fig);&lt;br /&gt;
    writeVideo(v, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(v); % Cerrar archivo de video&lt;br /&gt;
close(fig); % Cerrar la figura&lt;br /&gt;
&lt;br /&gt;
disp('Animación guardada como animacion_ft.mp4');&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Observamos que la solución u comienza en la temperatura correcta (salvo por oscilaciones) y para un tiempo suficientemente pequeño se aproxima considerablemente a la solución de equilibrio. No obstante, en el siguiente apartado se comentará un detalle de la solución que se debe estudiar en mayor profundidad.&lt;br /&gt;
&lt;br /&gt;
=. Paradoja de la velocidad de propagación=&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Paradoja.jpeg|400px|thumb|derecha|Solución para t=0]]&lt;br /&gt;
&lt;br /&gt;
Observamos que, en nuestra solución, para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt; la solución es estrictamente positiva. Sin embargo, en &amp;lt;math&amp;gt;t=0&amp;lt;/math&amp;gt; observamos que para el intervalo &amp;lt;math&amp;gt;  x \in [1/3,2/3]&amp;lt;/math&amp;gt; la temperatura es cero. Esto contradice la teoría de la relatividad de Einstein, ya que podemos tomar un valor &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt; arbitrariamente pequeño de manera que la temperatura sea no nula, lo cual no es posible bajo la teoría de la relatividad. Este fenómeno se conoce como la paradoja de la velocidad de propagación del calor. &lt;br /&gt;
&lt;br /&gt;
==. Ecuación de Cattaneo-Vernotte==&lt;br /&gt;
Para solucionar esta aparente falla en nuestro modelo, Cattaneo propuso una solución modificando la Ley de Fourier de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;q=-k\nabla u \rightarrow q+ \tau \frac{\partial q}{\partial t} =k\nabla u&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Añadimos el factor &amp;lt;math&amp;gt; \tau \frac{\partial q}{\partial t} &amp;lt;/math&amp;gt; a la Ley de Fourier, donde &amp;lt;math&amp;gt;\tau&amp;lt;/math&amp;gt; se conoce como el término de relajación térmica. De esta manera, se modela un retardo en la respuesta de flujo de calor a los cambios de la temperatura. Si ahora aplicamos la conservación de la energía, nos queda la conocida ecuación hiperbólica del calor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial u}{\partial t} + \tau \frac{\partial^{2}u}{\partial t^{2}} = \alpha \Delta u &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; \alpha &amp;lt;/math&amp;gt; es la difusividad térmica. Para nuestro problema, la ecuación queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases} &lt;br /&gt;
      \tau u_{tt}+u_t-u_{xx} = 0 &amp;amp; x \in [0,1], t&amp;gt;0 \\&lt;br /&gt;
      u(0,t)=10 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(1,t)=1 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(x,0)=u_0(x) &amp;amp; x \in [0,1] \\&lt;br /&gt;
      u_t(x,0)=0 &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hemos introducido en las condiciones iniciales el factor &amp;lt;math&amp;gt; u_t(x,0) &amp;lt;/math&amp;gt;, que se conoce como la velocidad térmica inicial. En nuestro caso hemos establecido esta velocidad nula ya que se asume que en el estado inicial el sistema está en equilibrio.&lt;br /&gt;
&lt;br /&gt;
Esta nueva ecuación garantiza que la velocidad de propagación del calor se produzca con velocidad finita, por lo que se utiliza en modelos donde el efecto de propagación instantánea tiene importancia. &lt;br /&gt;
&lt;br /&gt;
Homogeneizamos el problema con el cambio de variable &amp;lt;math&amp;gt; w(t,x)=u(t,x) -v(x)&amp;lt;/math&amp;gt;. Si resolvemos esta ecuación por separación de variables, tenemos las siguientes soluciones para la función espacial &amp;lt;math&amp;gt;X(x)&amp;lt;/math&amp;gt; y temporal &amp;lt;math&amp;gt; T(t)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
La ecuación espacial con estas condiciones nos proporciona la colección de soluciones &amp;lt;math&amp;gt; X_{n}(x)=A_{n}sen(n\pi x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la ecuación temporal, tenemos la solución &amp;lt;math&amp;gt; T_{n}(t)=e^{\frac{-t}{2\tau}}(c_{1}cos(\omega t) + c_{2}sen((\omega t)) &amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt; \omega = \frac{\sqrt{4\tau n^{2}\pi^{2}-1}}{2\tau} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, la solución de la ecuación de Cattaneo-Vernotte en nuestro caso es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x,t) = 1+9x+ \sum_{n=1}^{\infty} A_{n}e^{\frac{-t}{2\tau}}(c_{1}cos(\omega t) + c_{2}sen((\omega t)) \cdot sen(n\pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora, utilizando las condiciones frontera, obtenemos &amp;lt;math&amp;gt; c_{2}=0&amp;lt;/math&amp;gt;  y &amp;lt;math&amp;gt; A_{n}c_{1}=b_{n} &amp;lt;/math&amp;gt;, quedándonos la solución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;u(x,t) = 1+9x+ \sum_{n=1}^{\infty} b_{n}e^{\frac{-t}{2\tau}}cos(\omega t)  \cdot sen(n\pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
syms n&lt;br /&gt;
syms x&lt;br /&gt;
syms t&lt;br /&gt;
g=sin(n*pi*x);&lt;br /&gt;
f1=(-9*x-9)*g;&lt;br /&gt;
f2=(-9*x+9)*g;&lt;br /&gt;
f3=(-9*x+1)*g;&lt;br /&gt;
f4=(-9*x-1)*g;&lt;br /&gt;
&lt;br /&gt;
F1=int(f1,-1,-2/3);&lt;br /&gt;
F2=int(f3,-2/3,-1/3);&lt;br /&gt;
F3=int(f1,-1/3,0);&lt;br /&gt;
F4=int(f2,0,1/3);&lt;br /&gt;
F5=int(f4,1/3,2/3);&lt;br /&gt;
F6=int(f2,2/3,1);&lt;br /&gt;
&lt;br /&gt;
F(n)=F1+F2+F3+F4+F5+F6;&lt;br /&gt;
&lt;br /&gt;
sol=9*x+1;&lt;br /&gt;
k=40; %numero de elementos&lt;br /&gt;
for i=1:k&lt;br /&gt;
    sol=sol+F(i)*sin(i*pi*x)*exp(-t/(2*tau))*cos(t*(sqrt(4*tau*i^2*pi^2-1))/(2*tau));&lt;br /&gt;
end&lt;br /&gt;
u(x,t)=sol;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[X, T] = meshgrid(linspace(0,1,50), linspace(0,1,50));&lt;br /&gt;
Z=u(X,T);&lt;br /&gt;
Z=double(Z);&lt;br /&gt;
figure&lt;br /&gt;
surf(X, T, Z) &lt;br /&gt;
xlabel('x'), ylabel('t'), zlabel('u(x,t)')&lt;br /&gt;
title('Gráfico de la solución')&lt;br /&gt;
colorbar&lt;br /&gt;
shading interp &lt;br /&gt;
&lt;br /&gt;
% Definir parámetros&lt;br /&gt;
xv = linspace(0,1,100); % Dominio de x (100 puntos entre 0 y 1)&lt;br /&gt;
t_values = linspace(0,1,60); % Valores de t para cada frame (60 frames)&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
fig = figure;&lt;br /&gt;
v = VideoWriter('animacion_ftejercicio3.mp4', 'MPEG-4'); % Guardar animación en video&lt;br /&gt;
v.FrameRate = 5; % FPS&lt;br /&gt;
open(v);&lt;br /&gt;
&lt;br /&gt;
for t = t_values&lt;br /&gt;
    y = u(xv,t); % Evaluar la función en x para el tiempo t&lt;br /&gt;
    plot(xv, y, 'b', 'LineWidth', 2); % Graficar en 1D&lt;br /&gt;
    ylim([0, 12]); % Mantener el mismo rango en y&lt;br /&gt;
    xlabel('x');&lt;br /&gt;
    ylabel('u(x,t)');&lt;br /&gt;
    title(sprintf('t = %.2f', t)); % Mostrar el tiempo actual&lt;br /&gt;
    grid on;&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(fig);&lt;br /&gt;
    writeVideo(v, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(v); % Cerrar archivo de video&lt;br /&gt;
close(fig); % Cerrar la figura&lt;br /&gt;
&lt;br /&gt;
disp('Animación guardada como animacion_ft.mp4');&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=. Referencias =&lt;br /&gt;
&lt;br /&gt;
* Amin Moosaie. Non-Fourier heat conduction in a finite medium with insulated boundaries and arbitrary initial conditions ([https://www.sciencedirect.com/science/article/pii/S0735193307001637 [1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]).&lt;br /&gt;
&lt;br /&gt;
* Francisco R. Villatoro. La ciencia de la mula Francis: La velocidad de la propagación del calor, entre la paradoja y la entropía([https://francis.naukas.com/2008/10/22/la-velocidad-de-la-propagacion-del-calor-entre-la-paradoja-y-la-entropia/ [2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;])&lt;br /&gt;
&lt;br /&gt;
* Marc Calvo Schwarzwälder. Non-Fourier Heat Conduction. The Maxwell-Cattaneo Equations ([https://upcommons.upc.edu/bitstream/handle/2117/78480/memoria.pdf [3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]).&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(PPAD)&amp;diff=84485</id>
		<title>Ecuación del calor (PPAD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(PPAD)&amp;diff=84485"/>
				<updated>2025-03-16T15:50:26Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor (Grupo PPAD). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Pablo Vidal Nacle, Pablo Maestro Fernández, Alex Heredero Santamaría, Diego Moñino Vizmanos}}&lt;br /&gt;
&lt;br /&gt;
=. Introducción=&lt;br /&gt;
La ecuación del calor clásica es una herramienta crucial para los ingenieros y físicos. Ahora bien, esta ecuación plantea un serio problema conocido como la paradoja de la velocidad de propagación. En este trabajo estudiaremos estefenómeno y plantearemos una solución, apoyándonos en un ejemplo concreto.&lt;br /&gt;
&lt;br /&gt;
=. Problema concreto=&lt;br /&gt;
Planteamos el siguiente problema: Se considera una varilla metálica que ocupa el intervalo [0, 1] y que se encuentra aislada por su superficie lateral, de manera que la conducción de calor sólo se produce en la&lt;br /&gt;
dirección longitudinal. En el extremo derecho&lt;br /&gt;
se consigue mantener la temperatura a 10°C mientras que en el izquierdo la temperatura&lt;br /&gt;
es siempre de 1°C. Además, la temperatura en el instante inicial viene dada por la función &amp;lt;math&amp;gt; u_0 (x)= 10-10 \cdot 1_{[1/3,2/3]}(x)&amp;lt;/math&amp;gt; . Así, el sistema que modeliza este problema es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases} &lt;br /&gt;
      u_t-u_{xx} = 0 &amp;amp; x \in [0,1], t&amp;gt;0 \\&lt;br /&gt;
      u(0,t)=10 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(1,t)=1 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(x,0)=u_0(x) &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Su solución estacionaria es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; v(x)=9x+1 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y la solución general es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x,t)= 9x+1+  \sum_{n=1}^{\infty}b_n sen(n \pi x)e^{n^2\pi ^2 t}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; b_n &amp;lt;/math&amp;gt; es una constante de la forma:&lt;br /&gt;
&lt;br /&gt;
AQUI VEMOS QUE HACEMOS CON BN&lt;br /&gt;
&lt;br /&gt;
Si visualizamos estas soluciones con &amp;lt;math&amp;gt; t \in [0,1] &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; x \in [0,1] &amp;lt;/math&amp;gt;, representándola a través de matlab:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:sol2.jpeg|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:sol11.jpeg|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Animación solución.gif|400px|thumb|right|Convergencia a la solución estacionaria]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
syms n&lt;br /&gt;
syms x&lt;br /&gt;
syms t&lt;br /&gt;
g=sin(n*pi*x);&lt;br /&gt;
f1=(-9*x-9)*g;&lt;br /&gt;
f2=(-9*x+9)*g;&lt;br /&gt;
f3=(-9*x+1)*g;&lt;br /&gt;
f4=(-9*x-1)*g;&lt;br /&gt;
&lt;br /&gt;
F1=int(f1,-1,-2/3);&lt;br /&gt;
F2=int(f3,-2/3,-1/3);&lt;br /&gt;
F3=int(f1,-1/3,0);&lt;br /&gt;
F4=int(f2,0,1/3);&lt;br /&gt;
F5=int(f4,1/3,2/3);&lt;br /&gt;
F6=int(f2,2/3,1);&lt;br /&gt;
&lt;br /&gt;
F(n)=F1+F2+F3+F4+F5+F6;&lt;br /&gt;
&lt;br /&gt;
sol=9*x+1;&lt;br /&gt;
k=20; %numero de elementos&lt;br /&gt;
for i=1:k&lt;br /&gt;
    sol=sol+F(i)*sin(i*pi*x)*exp(-(i^2)*pi^2*t);&lt;br /&gt;
end&lt;br /&gt;
u(x,t)=sol;&lt;br /&gt;
[X, T] = meshgrid(linspace(0,1,50), linspace(0,1,50));&lt;br /&gt;
Z=u(X,T);&lt;br /&gt;
Z=double(Z);&lt;br /&gt;
figure&lt;br /&gt;
surf(X, T, Z) &lt;br /&gt;
xlabel('x'), ylabel('t'), zlabel('u(x,t)')&lt;br /&gt;
title('Gráfico de la solución')&lt;br /&gt;
colorbar&lt;br /&gt;
shading interp &lt;br /&gt;
&lt;br /&gt;
% Definir parámetros&lt;br /&gt;
xv = linspace(0,1,100); % Dominio de x (100 puntos entre 0 y 1)&lt;br /&gt;
t_values = linspace(0,0.1,60); % Valores de t para cada frame (60 frames)&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
fig = figure;&lt;br /&gt;
v = VideoWriter('animacion_ftejercicio2.mp4', 'MPEG-4'); % Guardar animación en video&lt;br /&gt;
v.FrameRate = 5; % FPS&lt;br /&gt;
open(v);&lt;br /&gt;
&lt;br /&gt;
for t = t_values&lt;br /&gt;
    y = u(xv,t); % Evaluar la función en x para el tiempo t&lt;br /&gt;
    plot(xv, y, 'b', 'LineWidth', 2); % Graficar en 1D&lt;br /&gt;
    ylim([0, 12]); % Mantener el mismo rango en y&lt;br /&gt;
    xlabel('x');&lt;br /&gt;
    ylabel('u(x,t)');&lt;br /&gt;
    title(sprintf('t = %.2f', t)); % Mostrar el tiempo actual&lt;br /&gt;
    grid on;&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(fig);&lt;br /&gt;
    writeVideo(v, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(v); % Cerrar archivo de video&lt;br /&gt;
close(fig); % Cerrar la figura&lt;br /&gt;
&lt;br /&gt;
disp('Animación guardada como animacion_ft.mp4');&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Observamos que la solución u comienza en la temperatura correcta (salvo por oscilaciones) y para un tiempo suficientemente pequeño se aproxima considerablemente a la solución de equilibrio. No obstante, en el siguiente apartado se comentará un detalle de la solución que se debe estudiar en mayor profundidad.&lt;br /&gt;
&lt;br /&gt;
=. Paradoja de la velocidad de propagación=&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Paradoja.jpeg|400px|thumb|derecha|Solución para t=0]]&lt;br /&gt;
&lt;br /&gt;
Observamos que, en nuestra solución, para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt; la solución es estrictamente positiva. Sin embargo, en &amp;lt;math&amp;gt;t=0&amp;lt;/math&amp;gt; observamos que para el intervalo &amp;lt;math&amp;gt;  x \in [1/3,2/3]&amp;lt;/math&amp;gt; la temperatura es cero. Esto contradice la teoría de la relatividad de Einstein, ya que podemos tomar un valor &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt; arbitrariamente pequeño de manera que la temperatura sea no nula, lo cual no es posible bajo la teoría de la relatividad. Este fenómeno se conoce como la paradoja de la velocidad de propagación del calor. &lt;br /&gt;
&lt;br /&gt;
==. Ecuación de Cattaneo-Vernotte==&lt;br /&gt;
Para solucionar esta aparente falla en nuestro modelo, Cattaneo propuso una solución modificando la Ley de Fourier de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;q=-k\nabla u \rightarrow q+ \tau \frac{\partial q}{\partial t} =k\nabla u&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Añadimos el factor &amp;lt;math&amp;gt; \tau \frac{\partial q}{\partial t} &amp;lt;/math&amp;gt; a la Ley de Fourier, donde &amp;lt;math&amp;gt;\tau&amp;lt;/math&amp;gt; se conoce como el término de relajación térmica. De esta manera, se modela un retardo en la respuesta de flujo de calor a los cambios de la temperatura. Si ahora aplicamos la conservación de la energía, nos queda la conocida ecuación hiperbólica del calor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial u}{\partial t} + \tau \frac{\partial^{2}u}{\partial t^{2}} = \alpha \Delta u &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; \alpha &amp;lt;/math&amp;gt; es la difusividad térmica. Para nuestro problema, la ecuación queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases} &lt;br /&gt;
      \tau u_{tt}+u_t-u_{xx} = 0 &amp;amp; x \in [0,1], t&amp;gt;0 \\&lt;br /&gt;
      u(0,t)=10 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(1,t)=1 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(x,0)=u_0(x) &amp;amp; x \in [0,1] \\&lt;br /&gt;
      u_t(x,0)=0 &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hemos introducido en las condiciones iniciales el factor &amp;lt;math&amp;gt; u_t(x,0) &amp;lt;/math&amp;gt;, que se conoce como la velocidad térmica inicial. En nuestro caso hemos establecido esta velocidad nula ya que se asume que en el estado inicial el sistema está en equilibrio.&lt;br /&gt;
&lt;br /&gt;
Esta nueva ecuación garantiza que la velocidad de propagación del calor se produzca con velocidad finita, por lo que se utiliza en modelos donde el efecto de propagación instantánea tiene importancia. &lt;br /&gt;
&lt;br /&gt;
Homogeneizamos el problema con el cambio de variable &amp;lt;math&amp;gt; w(t,x)=u(t,x) -v(x)&amp;lt;/math&amp;gt;. Si resolvemos esta ecuación por separación de variables, tenemos las siguientes soluciones para la función espacial &amp;lt;math&amp;gt;X(x)&amp;lt;/math&amp;gt; y temporal &amp;lt;math&amp;gt; T(t)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
La ecuación espacial con estas condiciones nos proporciona la colección de soluciones &amp;lt;math&amp;gt; X_{n}(x)=A_{n}sen(n\pi x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la ecuación temporal, tenemos la solución &amp;lt;math&amp;gt; T_{n}(t)=e^{\frac{-t}{2\tau}}(c_{1}cos(\omega t) + c_{2}sen((\omega t)) &amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt; \omega = \frac{\sqrt{4\tau n^{2}\pi^{2}-1}}{2\tau} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, la solución de la ecuación de Cattaneo-Vernotte en nuestro caso es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x,t) = 1+9x+ \sum_{n=1}^{\infty} A_{n}e^{\frac{-t}{2\tau}}(c_{1}cos(\omega t) + c_{2}sen((\omega t)) \cdot sen(n\pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=. Referencias =&lt;br /&gt;
&lt;br /&gt;
* Amin Moosaie. Non-Fourier heat conduction in a finite medium with insulated boundaries and arbitrary initial conditions ([https://www.sciencedirect.com/science/article/pii/S0735193307001637 [1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]).&lt;br /&gt;
&lt;br /&gt;
* Francisco R. Villatoro. La ciencia de la mula Francis: La velocidad de la propagación del calor, entre la paradoja y la entropía([https://francis.naukas.com/2008/10/22/la-velocidad-de-la-propagacion-del-calor-entre-la-paradoja-y-la-entropia/ [2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;])&lt;br /&gt;
&lt;br /&gt;
* Marc Calvo Schwarzwälder. Non-Fourier Heat Conduction. The Maxwell-Cattaneo Equations ([https://upcommons.upc.edu/bitstream/handle/2117/78480/memoria.pdf [3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]).&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(PPAD)&amp;diff=84484</id>
		<title>Ecuación del calor (PPAD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(PPAD)&amp;diff=84484"/>
				<updated>2025-03-16T15:49:40Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor (Grupo PPAD). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Pablo Vidal Nacle, Pablo Maestro Fernández, Alex Heredero Santamaría, Diego Moñino Vizmanos}}&lt;br /&gt;
&lt;br /&gt;
=. Introducción=&lt;br /&gt;
La ecuación del calor clásica es una herramienta crucial para los ingenieros y físicos. Ahora bien, esta ecuación plantea un serio problema conocido como la paradoja de la velocidad de propagación. En este trabajo estudiaremos estefenómeno y plantearemos una solución, apoyándonos en un ejemplo concreto.&lt;br /&gt;
&lt;br /&gt;
=. Problema concreto=&lt;br /&gt;
Planteamos el siguiente problema: Se considera una varilla metálica que ocupa el intervalo [0, 1] y que se encuentra aislada por su superficie lateral, de manera que la conducción de calor sólo se produce en la&lt;br /&gt;
dirección longitudinal. En el extremo derecho&lt;br /&gt;
se consigue mantener la temperatura a 10°C mientras que en el izquierdo la temperatura&lt;br /&gt;
es siempre de 1°C. Además, la temperatura en el instante inicial viene dada por la función &amp;lt;math&amp;gt; u_0 (x)= 10-10 \cdot 1_{[1/3,2/3]}(x)&amp;lt;/math&amp;gt; . Así, el sistema que modeliza este problema es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases} &lt;br /&gt;
      u_t-u_{xx} = 0 &amp;amp; x \in [0,1], t&amp;gt;0 \\&lt;br /&gt;
      u(0,t)=10 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(1,t)=1 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(x,0)=u_0(x) &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Su solución estacionaria es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; v(x)=9x+1 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y la solución general es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x,t)= 9x+1+  \sum_{n=1}^{\infty}b_n sen(n \pi x)e^{n^2\pi ^2 t}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; b_n &amp;lt;/math&amp;gt; es una constante de la forma:&lt;br /&gt;
&lt;br /&gt;
AQUI VEMOS QUE HACEMOS CON BN&lt;br /&gt;
&lt;br /&gt;
Si visualizamos estas soluciones con &amp;lt;math&amp;gt; t \in [0,1] &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; x \in [0,1] &amp;lt;/math&amp;gt;, representándola a través de matlab:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:sol2.jpeg|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:sol11.jpeg|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Animación solución.gif|400px|thumb|right|Convergencia a la solución estacionaria]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
syms n&lt;br /&gt;
syms x&lt;br /&gt;
syms t&lt;br /&gt;
g=sin(n*pi*x);&lt;br /&gt;
f1=(-9*x-9)*g;&lt;br /&gt;
f2=(-9*x+9)*g;&lt;br /&gt;
f3=(-9*x+1)*g;&lt;br /&gt;
f4=(-9*x-1)*g;&lt;br /&gt;
&lt;br /&gt;
F1=int(f1,-1,-2/3);&lt;br /&gt;
F2=int(f3,-2/3,-1/3);&lt;br /&gt;
F3=int(f1,-1/3,0);&lt;br /&gt;
F4=int(f2,0,1/3);&lt;br /&gt;
F5=int(f4,1/3,2/3);&lt;br /&gt;
F6=int(f2,2/3,1);&lt;br /&gt;
&lt;br /&gt;
F(n)=F1+F2+F3+F4+F5+F6;&lt;br /&gt;
&lt;br /&gt;
sol=9*x+1;&lt;br /&gt;
k=20; %numero de elementos&lt;br /&gt;
for i=1:k&lt;br /&gt;
    sol=sol+F(i)*sin(i*pi*x)*exp(-(i^2)*pi^2*t);&lt;br /&gt;
end&lt;br /&gt;
u(x,t)=sol;&lt;br /&gt;
[X, T] = meshgrid(linspace(0,1,50), linspace(0,1,50));&lt;br /&gt;
Z=u(X,T);&lt;br /&gt;
Z=double(Z);&lt;br /&gt;
figure&lt;br /&gt;
surf(X, T, Z) &lt;br /&gt;
xlabel('x'), ylabel('t'), zlabel('u(x,t)')&lt;br /&gt;
title('Gráfico de la solución')&lt;br /&gt;
colorbar&lt;br /&gt;
shading interp &lt;br /&gt;
&lt;br /&gt;
% Definir parámetros&lt;br /&gt;
xv = linspace(0,1,100); % Dominio de x (100 puntos entre 0 y 1)&lt;br /&gt;
t_values = linspace(0,0.1,60); % Valores de t para cada frame (60 frames)&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
fig = figure;&lt;br /&gt;
v = VideoWriter('animacion_ftejercicio2.mp4', 'MPEG-4'); % Guardar animación en video&lt;br /&gt;
v.FrameRate = 5; % FPS&lt;br /&gt;
open(v);&lt;br /&gt;
&lt;br /&gt;
for t = t_values&lt;br /&gt;
    y = u(xv,t); % Evaluar la función en x para el tiempo t&lt;br /&gt;
    plot(xv, y, 'b', 'LineWidth', 2); % Graficar en 1D&lt;br /&gt;
    ylim([0, 12]); % Mantener el mismo rango en y&lt;br /&gt;
    xlabel('x');&lt;br /&gt;
    ylabel('u(x,t)');&lt;br /&gt;
    title(sprintf('t = %.2f', t)); % Mostrar el tiempo actual&lt;br /&gt;
    grid on;&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(fig);&lt;br /&gt;
    writeVideo(v, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(v); % Cerrar archivo de video&lt;br /&gt;
close(fig); % Cerrar la figura&lt;br /&gt;
&lt;br /&gt;
disp('Animación guardada como animacion_ft.mp4');&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Observamos que la solución u comienza en la temperatura correcta (salvo por oscilaciones) y para un tiempo suficientemente pequeño se aproxima considerablemente a la solución de equilibrio. No obstante, en el siguiente apartado se comentará un detalle de la solución que se debe estudiar en mayor profundidad.&lt;br /&gt;
&lt;br /&gt;
=. Paradoja de la velocidad de propagación=&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Paradoja.jpeg|400px|thumb|derecha|Solución para t=0]]&lt;br /&gt;
&lt;br /&gt;
Observamos que, en nuestra solución, para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt; la solución es estrictamente positiva. Sin embargo, en &amp;lt;math&amp;gt;t=0&amp;lt;/math&amp;gt; observamos que para el intervalo &amp;lt;math&amp;gt;  x \in [1/3,2/3]&amp;lt;/math&amp;gt; la temperatura es cero. Esto contradice la teoría de la relatividad de Einstein, ya que podemos tomar un valor &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt; arbitrariamente pequeño de manera que la temperatura sea no nula, lo cual no es posible bajo la teoría de la relatividad. Este fenómeno se conoce como la paradoja de la velocidad de propagación del calor. &lt;br /&gt;
&lt;br /&gt;
==. Ecuación de Cattaneo-Vernotte==&lt;br /&gt;
Para solucionar esta aparente falla en nuestro modelo, Cattaneo propuso una solución modificando la Ley de Fourier de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;q=-k\nabla u \rightarrow q+ \tau \frac{\partial q}{\partial t} =k\nabla u&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Añadimos el factor &amp;lt;math&amp;gt; \tau \frac{\partial q}{\partial t} &amp;lt;/math&amp;gt; a la Ley de Fourier, donde &amp;lt;math&amp;gt;\tau&amp;lt;/math&amp;gt; se conoce como el término de relajación térmica. De esta manera, se modela un retardo en la respuesta de flujo de calor a los cambios de la temperatura. Si ahora aplicamos la conservación de la energía, nos queda la conocida ecuación hiperbólica del calor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial u}{\partial t} + \tau \frac{\partial^{2}u}{\partial t^{2}} = \alpha \Delta u &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; \alpha &amp;lt;/math&amp;gt; es la difusividad térmica. En nuestro caso, &amp;lt;math&amp;gt; \alpha=1 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases} &lt;br /&gt;
      \tau u_{tt}+u_t-u_{xx} = 0 &amp;amp; x \in [0,1], t&amp;gt;0 \\&lt;br /&gt;
      u(0,t)=10 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(1,t)=1 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(x,0)=u_0(x) &amp;amp; x \in [0,1] \\&lt;br /&gt;
      u_t(x,0)=0 &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hemos introducido en las condiciones iniciales el factor &amp;lt;math&amp;gt; u_t(x,0) &amp;lt;/math&amp;gt;, que se conoce como la velocidad térmica inicial. En nuestro caso hemos establecido esta velocidad nula ya que se asume que en el estado inicial el sistema está en equilibrio.&lt;br /&gt;
&lt;br /&gt;
Esta nueva ecuación garantiza que la velocidad de propagación del calor se produzca con velocidad finita, por lo que se utiliza en modelos donde el efecto de propagación instantánea tiene importancia. &lt;br /&gt;
&lt;br /&gt;
Homogeneizamos el problema con el cambio de variable &amp;lt;math&amp;gt; w(t,x)=u(t,x) -v(x)&amp;lt;/math&amp;gt;. Si resolvemos esta ecuación por separación de variables, tenemos las siguientes soluciones para la función espacial &amp;lt;math&amp;gt;X(x)&amp;lt;/math&amp;gt; y temporal &amp;lt;math&amp;gt; T(t)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
La ecuación espacial con estas condiciones nos proporciona la colección de soluciones &amp;lt;math&amp;gt; X_{n}(x)=A_{n}sen(n\pi x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la ecuación temporal, tenemos la solución &amp;lt;math&amp;gt; T_{n}(t)=e^{\frac{-t}{2\tau}}(c_{1}cos(\omega t) + c_{2}sen((\omega t)) &amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt; \omega = \frac{\sqrt{4\tau n^{2}\pi^{2}-1}}{2\tau} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, la solución de la ecuación de Cattaneo-Vernotte en nuestro caso es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x,t) = 1+9x+ \sum_{n=1}^{\infty} A_{n}e^{\frac{-t}{2\tau}}(c_{1}cos(\omega t) + c_{2}sen((\omega t)) \cdot sen(n\pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=. Referencias =&lt;br /&gt;
&lt;br /&gt;
* Amin Moosaie. Non-Fourier heat conduction in a finite medium with insulated boundaries and arbitrary initial conditions ([https://www.sciencedirect.com/science/article/pii/S0735193307001637 [1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]).&lt;br /&gt;
&lt;br /&gt;
* Francisco R. Villatoro. La ciencia de la mula Francis: La velocidad de la propagación del calor, entre la paradoja y la entropía([https://francis.naukas.com/2008/10/22/la-velocidad-de-la-propagacion-del-calor-entre-la-paradoja-y-la-entropia/ [2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;])&lt;br /&gt;
&lt;br /&gt;
* Marc Calvo Schwarzwälder. Non-Fourier Heat Conduction. The Maxwell-Cattaneo Equations ([https://upcommons.upc.edu/bitstream/handle/2117/78480/memoria.pdf [3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]).&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(PPAD)&amp;diff=84452</id>
		<title>Ecuación del calor (PPAD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(PPAD)&amp;diff=84452"/>
				<updated>2025-03-16T13:55:10Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor (Grupo PPAD). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Pablo Vidal Nacle, Pablo Maestro Fernández, Alex Heredero Santamaría, Diego Moñino Vizmanos}}&lt;br /&gt;
&lt;br /&gt;
=. Introducción=&lt;br /&gt;
La ecuación del calor clásica es una herramienta crucial para los ingenieros y físicos. Ahora bien, esta ecuación plantea un serio problema conocido como la paradoja de la velocidad de propagación. En este trabajo estudiaremos estefenómeno y plantearemos una solución, apoyándonos en un ejemplo concreto.&lt;br /&gt;
&lt;br /&gt;
=. Problema concreto=&lt;br /&gt;
Consideramos el siguiente problema: Se considera una varilla metálica que ocupa el intervalo [0, 1] y que se encuentra aislada por su superficie lateral, de manera que la conducción de calor sólo se produce en la&lt;br /&gt;
dirección longitudinal. En el extremo derecho&lt;br /&gt;
se consigue mantener la temperatura a 10°C mientras que en el izquierdo la temperatura&lt;br /&gt;
es siempre de 1°C. Además, la temperatura en el instante inicial viene dada por la función &amp;lt;math&amp;gt; u_0 (x)= 10-10 \cdot 1_{[1/3,2/3]}(x)&amp;lt;/math&amp;gt; . Así, el sistema que modeliza este problema es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases} &lt;br /&gt;
      u_t-u_{xx} = 0 &amp;amp; x \in [0,1], t&amp;gt;0 \\&lt;br /&gt;
      u(0,t)=10 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(1,t)=1 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(x,0)=u_0(x) &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Su solución estacionaria es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; v(x)=9x+1 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y la solución general es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x,t)= 9x+1+  \sum_{n=1}^{\infty}b_n sen(n \pi x)e^{n^2\pi ^2 t}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; b_n &amp;lt;/math&amp;gt; es una constante de la forma:&lt;br /&gt;
&lt;br /&gt;
AQUI VEMOS QUE HACEMOS CON BN&lt;br /&gt;
&lt;br /&gt;
Si visualizamos estas soluciones con &amp;lt;math&amp;gt; t \in [0,1] &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; x \in [0,1] &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:sol2.jpeg|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:sol11.jpeg|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Animación solución.gif|400px|thumb|right|Convergencia a la solución estacionaria]]&lt;br /&gt;
&lt;br /&gt;
Observamos que la solución u comienza en la temperatura correcta (salvo por oscilaciones) y para un tiempo suficientemente pequeño se aproxima considerablemente a la solución de equilibrio. Además, en el siguiente apartado se comentará un detalle de la solución que se debe estudiar en mayor profundidad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
syms n&lt;br /&gt;
syms x&lt;br /&gt;
syms t&lt;br /&gt;
g=sin(n*pi*x);&lt;br /&gt;
f1=(-9*x-9)*g;&lt;br /&gt;
f2=(-9*x+9)*g;&lt;br /&gt;
f3=(-9*x+1)*g;&lt;br /&gt;
f4=(-9*x-1)*g;&lt;br /&gt;
&lt;br /&gt;
F1=int(f1,-1,-2/3);&lt;br /&gt;
F2=int(f3,-2/3,-1/3);&lt;br /&gt;
F3=int(f1,-1/3,0);&lt;br /&gt;
F4=int(f2,0,1/3);&lt;br /&gt;
F5=int(f4,1/3,2/3);&lt;br /&gt;
F6=int(f2,2/3,1);&lt;br /&gt;
&lt;br /&gt;
F(n)=F1+F2+F3+F4+F5+F6;&lt;br /&gt;
&lt;br /&gt;
sol=9*x+1;&lt;br /&gt;
k=20; %numero de elementos&lt;br /&gt;
for i=1:k&lt;br /&gt;
    sol=sol+F(i)*sin(i*pi*x)*exp(-(i^2)*pi^2*t);&lt;br /&gt;
end&lt;br /&gt;
u(x,t)=sol;&lt;br /&gt;
[X, T] = meshgrid(linspace(0,1,50), linspace(0,1,50));&lt;br /&gt;
Z=u(X,T);&lt;br /&gt;
Z=double(Z);&lt;br /&gt;
figure&lt;br /&gt;
surf(X, T, Z) &lt;br /&gt;
xlabel('x'), ylabel('t'), zlabel('u(x,t)')&lt;br /&gt;
title('Gráfico de la solución')&lt;br /&gt;
colorbar&lt;br /&gt;
shading interp &lt;br /&gt;
&lt;br /&gt;
% Definir parámetros&lt;br /&gt;
xv = linspace(0,1,100); % Dominio de x (100 puntos entre 0 y 1)&lt;br /&gt;
t_values = linspace(0,0.1,60); % Valores de t para cada frame (60 frames)&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
fig = figure;&lt;br /&gt;
v = VideoWriter('animacion_ftejercicio2.mp4', 'MPEG-4'); % Guardar animación en video&lt;br /&gt;
v.FrameRate = 5; % FPS&lt;br /&gt;
open(v);&lt;br /&gt;
&lt;br /&gt;
for t = t_values&lt;br /&gt;
    y = u(xv,t); % Evaluar la función en x para el tiempo t&lt;br /&gt;
    plot(xv, y, 'b', 'LineWidth', 2); % Graficar en 1D&lt;br /&gt;
    ylim([0, 12]); % Mantener el mismo rango en y&lt;br /&gt;
    xlabel('x');&lt;br /&gt;
    ylabel('u(x,t)');&lt;br /&gt;
    title(sprintf('t = %.2f', t)); % Mostrar el tiempo actual&lt;br /&gt;
    grid on;&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(fig);&lt;br /&gt;
    writeVideo(v, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(v); % Cerrar archivo de video&lt;br /&gt;
close(fig); % Cerrar la figura&lt;br /&gt;
&lt;br /&gt;
disp('Animación guardada como animacion_ft.mp4');&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=. Paradoja de la velocidad de propagación=&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Paradoja.jpeg|400px|thumb|derecha|Solución para t=0]]&lt;br /&gt;
&lt;br /&gt;
Observamos que, en nuestra solución, para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt; la solución es estrictamente positiva. Sin embargo, en &amp;lt;math&amp;gt;t=0&amp;lt;/math&amp;gt; observamos que para el intervalo &amp;lt;math&amp;gt;  x \in [1/3,2/3]&amp;lt;/math&amp;gt; la temperatura es cero. Esto contradice la teoría de la relatividad de Einstein, ya que podemos tomar un valor &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt; arbitrariamente pequeño de manera que la temperatura sea no nula, lo cual no es posible bajo la teoría de la relatividad. Este fenómeno se conoce como la paradoja de la velocidad de propagación del calor. &lt;br /&gt;
&lt;br /&gt;
==. Ecuación de Cattaneo-Vernotte==&lt;br /&gt;
Para solucionar esta aparente falla en nuestro modelo, Cattaneo propuso una solución modificando la Ley de Fourier de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;q=-k\nabla u \rightarrow q+ \tau \frac{\partial q}{\partial t} =k\nabla u&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Añadimos el factor &amp;lt;math&amp;gt; \tau \frac{\partial q}{\partial t} &amp;lt;/math&amp;gt; a la Ley de Fourier, donde &amp;lt;math&amp;gt;\tau&amp;lt;/math&amp;gt; se conoce como el término de relajación térmica. De esta manera, se modela un retardo en la respuesta de flujo de calor a los cambios de la temperatura. Si ahora aplicamos la conservación de la energía, nos queda la conocida ecuación hiperbólica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial u}{\partial t} + \tau \frac{\partial^{2}u}{\partial t^{2}} = \alpha \Delta u &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; \alpha &amp;lt;/math&amp;gt; es la difusividad térmica. En nuestro caso, &amp;lt;math&amp;gt; \alpha=1 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases} &lt;br /&gt;
      \tau u_{tt}+u_t-u_{xx} = 0 &amp;amp; x \in [0,1], t&amp;gt;0 \\&lt;br /&gt;
      u(0,t)=10 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(1,t)=1 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(x,0)=u_0(x) &amp;amp; x \in [0,1] \\&lt;br /&gt;
      u_t(x,0)=0 &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hemos introducido en las condiciones iniciales el factor &amp;lt;math&amp;gt; u_t(x,0) &amp;lt;/math&amp;gt;, que se conoce como la velocidad térmica inicial. En nuestro caso hemos establecido esta velocidad nula ya que se asume que en el estado inicial el sistema está en equilibrio.&lt;br /&gt;
&lt;br /&gt;
Esta nueva ecuación garantiza que la velocidad de propagación del calor se produzca con velocidad finita, por lo que se utiliza en modelos donde el efecto de propagación instantánea tiene importancia. &lt;br /&gt;
&lt;br /&gt;
Homogeneizamos el problema con el cambio de variable &amp;lt;math&amp;gt; w(t,x)=u(t,x) -v(x)&amp;lt;/math&amp;gt;. Si resolvemos esta ecuación por separación de variables, tenemos las siguientes soluciones para la función espacial &amp;lt;math&amp;gt;X(x)&amp;lt;/math&amp;gt; y temporal &amp;lt;math&amp;gt; T(t)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
La ecuación espacial con estas condiciones nos proporciona la colección de soluciones &amp;lt;math&amp;gt; X_{n}(x)=A_{n}sen(n\pi x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la ecuación temporal, tenemos la solución &amp;lt;math&amp;gt; T_{n}(t)=e^{\frac{-t}{2\tau}}(c_{1}cos(\omega t) + c_{2}sen((\omega t)) &amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt; \omega = \frac{\sqrt{4\tau n^{2}\pi^{2}-1}}{2\tau} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, la solución de la ecuación de Cattaneo-Vernotte en nuestro caso es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x,t) = 1+9x+ \sum_{n=1}^{\infty} A_{n}e^{\frac{-t}{2\tau}}(c_{1}cos(\omega t) + c_{2}sen((\omega t)) \cdot sen(n\pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=. Referencias =&lt;br /&gt;
&lt;br /&gt;
* Amin Moosaie. Non-Fourier heat conduction in a finite medium with insulated boundaries and arbitrary initial conditions ([https://www.sciencedirect.com/science/article/pii/S0735193307001637 [1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]).&lt;br /&gt;
&lt;br /&gt;
* Francisco R. Villatoro. La ciencia de la mula Francis: La velocidad de la propagación del calor, entre la paradoja y la entropía([https://francis.naukas.com/2008/10/22/la-velocidad-de-la-propagacion-del-calor-entre-la-paradoja-y-la-entropia/ [2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;])&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(PPAD)&amp;diff=84451</id>
		<title>Ecuación del calor (PPAD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(PPAD)&amp;diff=84451"/>
				<updated>2025-03-16T13:54:44Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor (Grupo PPAD). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Pablo Vidal Nacle, Pablo Maestro Fernández, Alex Heredero Santamaría, Diego Moñino Vizmanos}}&lt;br /&gt;
&lt;br /&gt;
=. Introducción=&lt;br /&gt;
La ecuación del calor clásica es una herramienta crucial para los ingenieros y físicos. Ahora bien, esta ecuación plantea un serio problema conocido como la paradoja de la velocidad de propagación. En este trabajo estudiaremos estefenómeno y plantearemos una solución, apoyándonos en un ejemplo concreto.&lt;br /&gt;
&lt;br /&gt;
=. Problema concreto=&lt;br /&gt;
Consideramos el siguiente problema: Se considera una varilla metálica que ocupa el intervalo [0, 1] y que se encuentra aislada por su superficie lateral, de manera que la conducción de calor sólo se produce en la&lt;br /&gt;
dirección longitudinal. En el extremo derecho&lt;br /&gt;
se consigue mantener la temperatura a 10°C mientras que en el izquierdo la temperatura&lt;br /&gt;
es siempre de 1°C. Además, la temperatura en el instante inicial viene dada por la función &amp;lt;math&amp;gt; u_0 (x)= 10-10 \cdot 1_{[1/3,2/3]}(x)&amp;lt;/math&amp;gt; . Así, el sistema que modeliza este problema es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases} &lt;br /&gt;
      u_t-u_{xx} = 0 &amp;amp; x \in [0,1], t&amp;gt;0 \\&lt;br /&gt;
      u(0,t)=10 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(1,t)=1 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(x,0)=u_0(x) &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Su solución estacionaria es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; v(x)=9x+1 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y la solución general es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x,t)= 9x+1+  \sum_{n=1}^{\infty}b_n sen(n \pi x)e^{n^2\pi ^2 t}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; b_n &amp;lt;/math&amp;gt; es una constante de la forma:&lt;br /&gt;
&lt;br /&gt;
AQUI VEMOS QUE HACEMOS CON BN&lt;br /&gt;
&lt;br /&gt;
Si visualizamos estas soluciones con &amp;lt;math&amp;gt; t \in [0,1] &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; x \in [0,1] &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:sol2.jpeg|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:sol11.jpeg|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Animación solución.gif|400px|thumb|right|Convergencia a la solución estacionaria]]&lt;br /&gt;
&lt;br /&gt;
Observamos que la solución u comienza en la temperatura correcta (salvo por oscilaciones) y para un tiempo suficientemente pequeño se aproxima considerablemente a la solución de equilibrio. Además, en el siguiente apartado se comentará un detalle de la solución que se debe estudiar en mayor profundidad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
syms n&lt;br /&gt;
syms x&lt;br /&gt;
syms t&lt;br /&gt;
g=sin(n*pi*x);&lt;br /&gt;
f1=(-9*x-9)*g;&lt;br /&gt;
f2=(-9*x+9)*g;&lt;br /&gt;
f3=(-9*x+1)*g;&lt;br /&gt;
f4=(-9*x-1)*g;&lt;br /&gt;
&lt;br /&gt;
F1=int(f1,-1,-2/3);&lt;br /&gt;
F2=int(f3,-2/3,-1/3);&lt;br /&gt;
F3=int(f1,-1/3,0);&lt;br /&gt;
F4=int(f2,0,1/3);&lt;br /&gt;
F5=int(f4,1/3,2/3);&lt;br /&gt;
F6=int(f2,2/3,1);&lt;br /&gt;
&lt;br /&gt;
F(n)=F1+F2+F3+F4+F5+F6;&lt;br /&gt;
&lt;br /&gt;
sol=9*x+1;&lt;br /&gt;
k=20; %numero de elementos&lt;br /&gt;
for i=1:k&lt;br /&gt;
    sol=sol+F(i)*sin(i*pi*x)*exp(-(i^2)*pi^2*t);&lt;br /&gt;
end&lt;br /&gt;
u(x,t)=sol;&lt;br /&gt;
[X, T] = meshgrid(linspace(0,1,50), linspace(0,1,50));&lt;br /&gt;
Z=u(X,T);&lt;br /&gt;
Z=double(Z);&lt;br /&gt;
figure&lt;br /&gt;
surf(X, T, Z) &lt;br /&gt;
xlabel('x'), ylabel('t'), zlabel('u(x,t)')&lt;br /&gt;
title('Gráfico de la solución')&lt;br /&gt;
colorbar&lt;br /&gt;
shading interp &lt;br /&gt;
&lt;br /&gt;
% Definir parámetros&lt;br /&gt;
xv = linspace(0,1,100); % Dominio de x (100 puntos entre 0 y 1)&lt;br /&gt;
t_values = linspace(0,0.1,60); % Valores de t para cada frame (60 frames)&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
fig = figure;&lt;br /&gt;
v = VideoWriter('animacion_ftejercicio2.mp4', 'MPEG-4'); % Guardar animación en video&lt;br /&gt;
v.FrameRate = 5; % FPS&lt;br /&gt;
open(v);&lt;br /&gt;
&lt;br /&gt;
for t = t_values&lt;br /&gt;
    y = u(xv,t); % Evaluar la función en x para el tiempo t&lt;br /&gt;
    plot(xv, y, 'b', 'LineWidth', 2); % Graficar en 1D&lt;br /&gt;
    ylim([0, 12]); % Mantener el mismo rango en y&lt;br /&gt;
    xlabel('x');&lt;br /&gt;
    ylabel('u(x,t)');&lt;br /&gt;
    title(sprintf('t = %.2f', t)); % Mostrar el tiempo actual&lt;br /&gt;
    grid on;&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(fig);&lt;br /&gt;
    writeVideo(v, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(v); % Cerrar archivo de video&lt;br /&gt;
close(fig); % Cerrar la figura&lt;br /&gt;
&lt;br /&gt;
disp('Animación guardada como animacion_ft.mp4');&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=. Paradoja de la velocidad de propagación=&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Paradoja.jpeg|400px|thumb|derecha|Solución para t=0]]&lt;br /&gt;
&lt;br /&gt;
Observamos que, en nuestra solución, para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt; la solución es estrictamente positiva. Sin embargo, en &amp;lt;math&amp;gt;t=0&amp;lt;/math&amp;gt; observamos que para el intervalo &amp;lt;math&amp;gt;  x \in [1/3,2/3]&amp;lt;/math&amp;gt; la temperatura es cero. Esto contradice la teoría de la relatividad de Einstein, ya que podemos tomar un valor &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt; arbitrariamente pequeño de manera que la temperatura sea no nula, lo cual no es posible bajo la teoría de la relatividad. Este fenómeno se conoce como la paradoja de la velocidad de propagación del calor. &lt;br /&gt;
&lt;br /&gt;
==. Ecuación de Cattaneo-Vernotte==&lt;br /&gt;
Para solucionar esta aparente falla en nuestro modelo, Cattaneo propuso una solución modificando la Ley de Fourier de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;q=-k\nabla u \rightarrow q+ \tau \frac{\partial q}{\partial t} =k\nabla u&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Añadimos el factor &amp;lt;math&amp;gt; \tau \frac{\partial q}{\partial t} &amp;lt;/math&amp;gt; a la Ley de Fourier, donde &amp;lt;math&amp;gt;\tau&amp;lt;/math&amp;gt; se conoce como el término de relajación térmica. De esta manera, se modela un retardo en la respuesta de flujo de calor a los cambios de la temperatura. Si ahora aplicamos la conservación de la energía, nos queda la conocida ecuación hiperbólica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial u}{\partial t} + \tau \frac{\partial^{2}u}{\partial t^{2}} = \alpha \Delta u &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; \alpha &amp;lt;/math&amp;gt; es la difusividad térmica. En nuestro caso, &amp;lt;math&amp;gt; \alpha=1 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases} &lt;br /&gt;
      \tau u_{tt}+u_t-u_{xx} = 0 &amp;amp; x \in [0,1], t&amp;gt;0 \\&lt;br /&gt;
      u(0,t)=10 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(1,t)=1 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(x,0)=u_0(x) &amp;amp; x \in [0,1] \\&lt;br /&gt;
      u_t(x,0)=0 &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hemos introducido en las condiciones iniciales el factor &amp;lt;math&amp;gt; u_t(x,0) &amp;lt;\math&amp;gt;, que se conoce como la velocidad térmica inicial. En nuestro caso hemos establecido esta velocidad nula ya que se asume que en el estado inicial el sistema está en equilibrio.&lt;br /&gt;
&lt;br /&gt;
Esta nueva ecuación garantiza que la velocidad de propagación del calor se produzca con velocidad finita, por lo que se utiliza en modelos donde el efecto de propagación instantánea tiene importancia. &lt;br /&gt;
&lt;br /&gt;
Homogeneizamos el problema con el cambio de variable &amp;lt;math&amp;gt; w(t,x)=u(t,x) -v(x)&amp;lt;/math&amp;gt;. Si resolvemos esta ecuación por separación de variables, tenemos las siguientes soluciones para la función espacial &amp;lt;math&amp;gt;X(x)&amp;lt;/math&amp;gt; y temporal &amp;lt;math&amp;gt; T(t)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
La ecuación espacial con estas condiciones nos proporciona la colección de soluciones &amp;lt;math&amp;gt; X_{n}(x)=A_{n}sen(n\pi x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la ecuación temporal, tenemos la solución &amp;lt;math&amp;gt; T_{n}(t)=e^{\frac{-t}{2\tau}}(c_{1}cos(\omega t) + c_{2}sen((\omega t)) &amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt; \omega = \frac{\sqrt{4\tau n^{2}\pi^{2}-1}}{2\tau} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, la solución de la ecuación de Cattaneo-Vernotte en nuestro caso es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x,t) = 1+9x+ \sum_{n=1}^{\infty} A_{n}e^{\frac{-t}{2\tau}}(c_{1}cos(\omega t) + c_{2}sen((\omega t)) \cdot sen(n\pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=. Referencias =&lt;br /&gt;
&lt;br /&gt;
* Amin Moosaie. Non-Fourier heat conduction in a finite medium with insulated boundaries and arbitrary initial conditions ([https://www.sciencedirect.com/science/article/pii/S0735193307001637 [1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]).&lt;br /&gt;
&lt;br /&gt;
* Francisco R. Villatoro. La ciencia de la mula Francis: La velocidad de la propagación del calor, entre la paradoja y la entropía([https://francis.naukas.com/2008/10/22/la-velocidad-de-la-propagacion-del-calor-entre-la-paradoja-y-la-entropia/ [2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;])&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(PPAD)&amp;diff=84449</id>
		<title>Ecuación del calor (PPAD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(PPAD)&amp;diff=84449"/>
				<updated>2025-03-16T13:50:20Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor (Grupo PPAD). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Pablo Vidal Nacle, Pablo Maestro Fernández, Alex Heredero Santamaría, Diego Moñino Vizmanos}}&lt;br /&gt;
&lt;br /&gt;
=. Introducción=&lt;br /&gt;
La ecuación del calor clásica es una herramienta crucial para los ingenieros y físicos. Ahora bien, esta ecuación plantea un serio problema conocido como la paradoja de la velocidad de propagación. En este trabajo estudiaremos estefenómeno y plantearemos una solución, apoyándonos en un ejemplo concreto.&lt;br /&gt;
&lt;br /&gt;
=. Problema concreto=&lt;br /&gt;
Consideramos el siguiente problema: Se considera una varilla metálica que ocupa el intervalo [0, 1] y que se encuentra aislada por su superficie lateral, de manera que la conducción de calor sólo se produce en la&lt;br /&gt;
dirección longitudinal. En el extremo derecho&lt;br /&gt;
se consigue mantener la temperatura a 10°C mientras que en el izquierdo la temperatura&lt;br /&gt;
es siempre de 1°C. Además, la temperatura en el instante inicial viene dada por la función &amp;lt;math&amp;gt; u_0 (x)= 10-10 \cdot 1_{[1/3,2/3]}(x)&amp;lt;/math&amp;gt; . Así, el sistema que modeliza este problema es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases} &lt;br /&gt;
      u_t-u_{xx} = 0 &amp;amp; x \in [0,1], t&amp;gt;0 \\&lt;br /&gt;
      u(0,t)=10 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(1,t)=1 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(x,0)=u_0(x) &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Su solución estacionaria es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; v(x)=9x+1 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y la solución general es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x,t)= 9x+1+  \sum_{n=1}^{\infty}b_n sen(n \pi x)e^{n^2\pi ^2 t}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; b_n &amp;lt;/math&amp;gt; es una constante de la forma:&lt;br /&gt;
&lt;br /&gt;
AQUI VEMOS QUE HACEMOS CON BN&lt;br /&gt;
&lt;br /&gt;
Si visualizamos estas soluciones con &amp;lt;math&amp;gt; t \in [0,1] &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; x \in [0,1] &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:sol2.jpeg|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:sol11.jpeg|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Animación solución.gif|400px|thumb|right|Convergencia a la solución estacionaria]]&lt;br /&gt;
&lt;br /&gt;
Observamos que la solución u comienza en la temperatura correcta (salvo por oscilaciones) y para un tiempo suficientemente pequeño se aproxima considerablemente a la solución de equilibrio. Además, en el siguiente apartado se comentará un detalle de la solución que se debe estudiar en mayor profundidad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
syms n&lt;br /&gt;
syms x&lt;br /&gt;
syms t&lt;br /&gt;
g=sin(n*pi*x);&lt;br /&gt;
f1=(-9*x-9)*g;&lt;br /&gt;
f2=(-9*x+9)*g;&lt;br /&gt;
f3=(-9*x+1)*g;&lt;br /&gt;
f4=(-9*x-1)*g;&lt;br /&gt;
&lt;br /&gt;
F1=int(f1,-1,-2/3);&lt;br /&gt;
F2=int(f3,-2/3,-1/3);&lt;br /&gt;
F3=int(f1,-1/3,0);&lt;br /&gt;
F4=int(f2,0,1/3);&lt;br /&gt;
F5=int(f4,1/3,2/3);&lt;br /&gt;
F6=int(f2,2/3,1);&lt;br /&gt;
&lt;br /&gt;
F(n)=F1+F2+F3+F4+F5+F6;&lt;br /&gt;
&lt;br /&gt;
sol=9*x+1;&lt;br /&gt;
k=20; %numero de elementos&lt;br /&gt;
for i=1:k&lt;br /&gt;
    sol=sol+F(i)*sin(i*pi*x)*exp(-(i^2)*pi^2*t);&lt;br /&gt;
end&lt;br /&gt;
u(x,t)=sol;&lt;br /&gt;
[X, T] = meshgrid(linspace(0,1,50), linspace(0,1,50));&lt;br /&gt;
Z=u(X,T);&lt;br /&gt;
Z=double(Z);&lt;br /&gt;
figure&lt;br /&gt;
surf(X, T, Z) &lt;br /&gt;
xlabel('x'), ylabel('t'), zlabel('u(x,t)')&lt;br /&gt;
title('Gráfico de la solución')&lt;br /&gt;
colorbar&lt;br /&gt;
shading interp &lt;br /&gt;
&lt;br /&gt;
% Definir parámetros&lt;br /&gt;
xv = linspace(0,1,100); % Dominio de x (100 puntos entre 0 y 1)&lt;br /&gt;
t_values = linspace(0,0.1,60); % Valores de t para cada frame (60 frames)&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
fig = figure;&lt;br /&gt;
v = VideoWriter('animacion_ftejercicio2.mp4', 'MPEG-4'); % Guardar animación en video&lt;br /&gt;
v.FrameRate = 5; % FPS&lt;br /&gt;
open(v);&lt;br /&gt;
&lt;br /&gt;
for t = t_values&lt;br /&gt;
    y = u(xv,t); % Evaluar la función en x para el tiempo t&lt;br /&gt;
    plot(xv, y, 'b', 'LineWidth', 2); % Graficar en 1D&lt;br /&gt;
    ylim([0, 12]); % Mantener el mismo rango en y&lt;br /&gt;
    xlabel('x');&lt;br /&gt;
    ylabel('u(x,t)');&lt;br /&gt;
    title(sprintf('t = %.2f', t)); % Mostrar el tiempo actual&lt;br /&gt;
    grid on;&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(fig);&lt;br /&gt;
    writeVideo(v, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(v); % Cerrar archivo de video&lt;br /&gt;
close(fig); % Cerrar la figura&lt;br /&gt;
&lt;br /&gt;
disp('Animación guardada como animacion_ft.mp4');&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=. Paradoja de la velocidad de propagación=&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Paradoja.jpeg|400px|thumb|derecha|Solución para t=0]]&lt;br /&gt;
&lt;br /&gt;
Observamos que, en nuestra solución, para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt; la solución es estrictamente positiva. Sin embargo, en &amp;lt;math&amp;gt;t=0&amp;lt;/math&amp;gt; observamos que para el intervalo &amp;lt;math&amp;gt;  x \in [1/3,2/3]&amp;lt;/math&amp;gt; la temperatura es cero. Esto contradice la teoría de la relatividad de Einstein, ya que podemos tomar un valor &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt; arbitrariamente pequeño de manera que la temperatura sea no nula, lo cual no es posible bajo la teoría de la relatividad. Este fenómeno se conoce como la paradoja de la velocidad de propagación del calor. &lt;br /&gt;
&lt;br /&gt;
==. Ecuación de Cattaneo-Vernotte==&lt;br /&gt;
Para solucionar esta aparente falla en nuestro modelo, Cattaneo propuso una solución modificando la Ley de Fourier de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;q=-k\nabla u \rightarrow q+ \tau \frac{\partial q}{\partial t} =k\nabla u&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Añadimos el factor &amp;lt;math&amp;gt; \tau \frac{\partial q}{\partial t} &amp;lt;/math&amp;gt; a la Ley de Fourier, donde &amp;lt;math&amp;gt;\tau&amp;lt;/math&amp;gt; se conoce como el término de relajación térmica. De esta manera, se modela un retardo en la respuesta de flujo de calor a los cambios de la temperatura. Si ahora aplicamos la conservación de la energía, nos queda la conocida ecuación hiperbólica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial u}{\partial t} + \tau \frac{\partial^{2}u}{\partial t^{2}} = \alpha \Delta u &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; \alpha &amp;lt;/math&amp;gt; es la difusividad térmica. En nuestro caso, &amp;lt;math&amp;gt; \alpha=1 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases} &lt;br /&gt;
      \tau u_{tt}+u_t-u_{xx} = 0 &amp;amp; x \in [0,1], t&amp;gt;0 \\&lt;br /&gt;
      u(0,t)=10 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(1,t)=1 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(x,0)=u_0(x) &amp;amp; x \in [0,1] \\&lt;br /&gt;
      u_t(x,0)=0 &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta nueva ecuación garantiza que la velocidad de propagación del calor se produzca con velocidad finita, por lo que se utiliza en modelos donde el efecto de propagación instantánea tiene importancia. &lt;br /&gt;
&lt;br /&gt;
Homogeneizamos el problema con el cambio de variable &amp;lt;math&amp;gt; w(t,x)=u(t,x) -v(x)&amp;lt;/math&amp;gt;. Si resolvemos esta ecuación por separación de variables, tenemos las siguientes soluciones para la función espacial &amp;lt;math&amp;gt;X(x)&amp;lt;/math&amp;gt; y temporal &amp;lt;math&amp;gt; T(t)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
La ecuación espacial nos con estas condiciones nos proporciona la colección de soluciones &amp;lt;math&amp;gt; X_{n}(x)=A_{n}sen(n\pi x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la ecuación temporal, tenemos la solución &amp;lt;math&amp;gt; T_{n}(t)=e^{\frac{-t}{2\tau}}(c_{1}cos(\omega t) + c_{2}sen((\omega t)) &amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt; \omega = \frac{\sqrt{4\tau n^{2}\pi^{2}-1}}{2\tau} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, la solución de la ecuación de Cattaneo-Vernotte en nuestro caso es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x,t) = 1+9x+ \sum_{n=1}^{\infty} A_{n}e^{\frac{-t}{2\tau}}(c_{1}cos(\omega t) + c_{2}sen((\omega t)) \cdot sen(n\pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=. Referencias =&lt;br /&gt;
&lt;br /&gt;
* Amin Moosaie. Non-Fourier heat conduction in a finite medium with insulated boundaries and arbitrary initial conditions ([https://www.sciencedirect.com/science/article/pii/S0735193307001637 [1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]).&lt;br /&gt;
&lt;br /&gt;
* Francisco R. Villatoro. La ciencia de la mula Francis: La velocidad de la propagación del calor, entre la paradoja y la entropía([https://francis.naukas.com/2008/10/22/la-velocidad-de-la-propagacion-del-calor-entre-la-paradoja-y-la-entropia/ [2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;])&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(PPAD)&amp;diff=84447</id>
		<title>Ecuación del calor (PPAD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(PPAD)&amp;diff=84447"/>
				<updated>2025-03-16T13:49:57Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor (Grupo PPAD). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Pablo Vidal Nacle, Pablo Maestro Fernández, Alex Heredero Santamaría, Diego Moñino Vizmanos}}&lt;br /&gt;
&lt;br /&gt;
=. Introducción=&lt;br /&gt;
La ecuación del calor clásica es una herramienta crucial para los ingenieros y físicos. Ahora bien, esta ecuación plantea un serio problema conocido como la paradoja de la velocidad de propagación. En este trabajo estudiaremos estefenómeno y plantearemos una solución, apoyándonos en un ejemplo concreto.&lt;br /&gt;
&lt;br /&gt;
=. Problema concreto=&lt;br /&gt;
Consideramos el siguiente problema: Se considera una varilla metálica que ocupa el intervalo [0, 1] y que se encuentra aislada por su superficie lateral, de manera que la conducción de calor sólo se produce en la&lt;br /&gt;
dirección longitudinal. En el extremo derecho&lt;br /&gt;
se consigue mantener la temperatura a 10°C mientras que en el izquierdo la temperatura&lt;br /&gt;
es siempre de 1°C. Además, la temperatura en el instante inicial viene dada por la función &amp;lt;math&amp;gt; u_0 (x)= 10-10 \cdot 1_{[1/3,2/3]}(x)&amp;lt;/math&amp;gt; . Así, el sistema que modeliza este problema es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases} &lt;br /&gt;
      u_t-u_{xx} = 0 &amp;amp; x \in [0,1], t&amp;gt;0 \\&lt;br /&gt;
      u(0,t)=10 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(1,t)=1 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(x,0)=u_0(x) &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Su solución estacionaria es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; v(x)=9x+1 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y la solución general es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x,t)= 9x+1+  \sum_{n=1}^{\infty}b_n sen(n \pi x)e^{n^2\pi ^2 t}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; b_n &amp;lt;/math&amp;gt; es una constante de la forma:&lt;br /&gt;
&lt;br /&gt;
AQUI VEMOS QUE HACEMOS CON BN&lt;br /&gt;
&lt;br /&gt;
Si visualizamos estas soluciones con &amp;lt;math&amp;gt; t \in [0,1] &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; x \in [0,1] &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:sol2.jpeg|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:sol11.jpeg|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Animación solución.gif|400px|thumb|right|Convergencia a la solución estacionaria]]&lt;br /&gt;
&lt;br /&gt;
Observamos que la solución u comienza en la temperatura correcta (salvo por oscilaciones) y para un tiempo suficientemente pequeño se aproxima considerablemente a la solución de equilibrio. Además, en el siguiente apartado se comentará un detalle de la solución que se debe estudiar en mayor profundidad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
syms n&lt;br /&gt;
syms x&lt;br /&gt;
syms t&lt;br /&gt;
g=sin(n*pi*x);&lt;br /&gt;
f1=(-9*x-9)*g;&lt;br /&gt;
f2=(-9*x+9)*g;&lt;br /&gt;
f3=(-9*x+1)*g;&lt;br /&gt;
f4=(-9*x-1)*g;&lt;br /&gt;
&lt;br /&gt;
F1=int(f1,-1,-2/3);&lt;br /&gt;
F2=int(f3,-2/3,-1/3);&lt;br /&gt;
F3=int(f1,-1/3,0);&lt;br /&gt;
F4=int(f2,0,1/3);&lt;br /&gt;
F5=int(f4,1/3,2/3);&lt;br /&gt;
F6=int(f2,2/3,1);&lt;br /&gt;
&lt;br /&gt;
F(n)=F1+F2+F3+F4+F5+F6;&lt;br /&gt;
&lt;br /&gt;
sol=9*x+1;&lt;br /&gt;
k=20; %numero de elementos&lt;br /&gt;
for i=1:k&lt;br /&gt;
    sol=sol+F(i)*sin(i*pi*x)*exp(-(i^2)*pi^2*t);&lt;br /&gt;
end&lt;br /&gt;
u(x,t)=sol;&lt;br /&gt;
[X, T] = meshgrid(linspace(0,1,50), linspace(0,1,50));&lt;br /&gt;
Z=u(X,T);&lt;br /&gt;
Z=double(Z);&lt;br /&gt;
figure&lt;br /&gt;
surf(X, T, Z) &lt;br /&gt;
xlabel('x'), ylabel('t'), zlabel('u(x,t)')&lt;br /&gt;
title('Gráfico de la solución')&lt;br /&gt;
colorbar&lt;br /&gt;
shading interp &lt;br /&gt;
&lt;br /&gt;
% Definir parámetros&lt;br /&gt;
xv = linspace(0,1,100); % Dominio de x (100 puntos entre 0 y 1)&lt;br /&gt;
t_values = linspace(0,0.1,60); % Valores de t para cada frame (60 frames)&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
fig = figure;&lt;br /&gt;
v = VideoWriter('animacion_ftejercicio2.mp4', 'MPEG-4'); % Guardar animación en video&lt;br /&gt;
v.FrameRate = 5; % FPS&lt;br /&gt;
open(v);&lt;br /&gt;
&lt;br /&gt;
for t = t_values&lt;br /&gt;
    y = u(xv,t); % Evaluar la función en x para el tiempo t&lt;br /&gt;
    plot(xv, y, 'b', 'LineWidth', 2); % Graficar en 1D&lt;br /&gt;
    ylim([0, 12]); % Mantener el mismo rango en y&lt;br /&gt;
    xlabel('x');&lt;br /&gt;
    ylabel('u(x,t)');&lt;br /&gt;
    title(sprintf('t = %.2f', t)); % Mostrar el tiempo actual&lt;br /&gt;
    grid on;&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(fig);&lt;br /&gt;
    writeVideo(v, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(v); % Cerrar archivo de video&lt;br /&gt;
close(fig); % Cerrar la figura&lt;br /&gt;
&lt;br /&gt;
disp('Animación guardada como animacion_ft.mp4');&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=. Paradoja de la velocidad de propagación=&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Paradoja.jpeg|400px|thumb|derecha|Solución para t=0]]&lt;br /&gt;
&lt;br /&gt;
Observamos que, en nuestra solución, para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt; la solución es estrictamente positiva. Sin embargo, en &amp;lt;math&amp;gt;t=0&amp;lt;/math&amp;gt; observamos que para el intervalo &amp;lt;math&amp;gt;  x \in [1/3,2/3]&amp;lt;/math&amp;gt; la temperatura es cero. Esto contradice la teoría de la relatividad de Einstein, ya que podemos tomar un valor &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt; arbitrariamente pequeño de manera que la temperatura sea no nula, lo cual no es posible bajo la teoría de la relatividad. Este fenómeno se conoce como la paradoja de la velocidad de propagación del calor. &lt;br /&gt;
&lt;br /&gt;
==. Ecuación de Cattaneo-Vernotte==&lt;br /&gt;
Para solucionar esta aparente falla en nuestro modelo, Cattaneo propuso una solución modificando la Ley de Fourier de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;q=-k\nabla u \rightarrow q+ \tau \frac{\partial q}{\partial t} =k\nabla u&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Añadimos el factor &amp;lt;math&amp;gt; \tau \frac{\partial q}{\partial t} &amp;lt;/math&amp;gt; a la Ley de Fourier, donde &amp;lt;math&amp;gt;\tau&amp;lt;/math&amp;gt; se conoce como el término de relajación térmica. De esta manera, se modela un retardo en la respuesta de flujo de calor a los cambios de la temperatura. Si ahora aplicamos la conservación de la energía, nos queda la conocida ecuación hiperbólica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial u}{\partial t} + \tau \frac{\partial^{2}u}{\partial t^{2}} = \alpha \Delta u &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; \alpha &amp;lt;/math&amp;gt; es la difusividad térmica. En nuestro caso, &amp;lt;math&amp;gt; \alpha=1 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases} &lt;br /&gt;
      \tau u_{tt}+u_t-u_{xx} = 0 &amp;amp; x \in [0,1], t&amp;gt;0 \\&lt;br /&gt;
      u(0,t)=10 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(1,t)=1 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(x,0)=u_0(x) &amp;amp; x \in [0,1]&lt;br /&gt;
      u_t(x,0)=0 &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta nueva ecuación garantiza que la velocidad de propagación del calor se produzca con velocidad finita, por lo que se utiliza en modelos donde el efecto de propagación instantánea tiene importancia. &lt;br /&gt;
&lt;br /&gt;
Homogeneizamos el problema con el cambio de variable &amp;lt;math&amp;gt; w(t,x)=u(t,x) -v(x)&amp;lt;/math&amp;gt;.Si resolvemos esta ecuación por separación de variables, tenemos las siguientes soluciones para la función espacial &amp;lt;math&amp;gt;X(x)&amp;lt;/math&amp;gt; y temporal &amp;lt;math&amp;gt; T(t)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
La ecuación espacial nos con estas condiciones nos proporciona la colección de soluciones &amp;lt;math&amp;gt; X_{n}(x)=A_{n}sen(n\pi x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la ecuación temporal, tenemos la solución &amp;lt;math&amp;gt; T_{n}(t)=e^{\frac{-t}{2\tau}}(c_{1}cos(\omega t) + c_{2}sen((\omega t)) &amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt; \omega = \frac{\sqrt{4\tau n^{2}\pi^{2}-1}}{2\tau} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, la solución de la ecuación de Cattaneo-Vernotte en nuestro caso es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x,t) = 1+9x+ \sum_{n=1}^{\infty} A_{n}e^{\frac{-t}{2\tau}}(c_{1}cos(\omega t) + c_{2}sen((\omega t)) \cdot sen(n\pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=. Referencias =&lt;br /&gt;
&lt;br /&gt;
* Amin Moosaie. Non-Fourier heat conduction in a finite medium with insulated boundaries and arbitrary initial conditions ([https://www.sciencedirect.com/science/article/pii/S0735193307001637 [1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]).&lt;br /&gt;
&lt;br /&gt;
* Francisco R. Villatoro. La ciencia de la mula Francis: La velocidad de la propagación del calor, entre la paradoja y la entropía([https://francis.naukas.com/2008/10/22/la-velocidad-de-la-propagacion-del-calor-entre-la-paradoja-y-la-entropia/ [2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;])&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(PPAD)&amp;diff=84445</id>
		<title>Ecuación del calor (PPAD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(PPAD)&amp;diff=84445"/>
				<updated>2025-03-16T13:49:11Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor (Grupo PPAD). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Pablo Vidal Nacle, Pablo Maestro Fernández, Alex Heredero Santamaría, Diego Moñino Vizmanos}}&lt;br /&gt;
&lt;br /&gt;
=. Introducción=&lt;br /&gt;
La ecuación del calor clásica es una herramienta crucial para los ingenieros y físicos. Ahora bien, esta ecuación plantea un serio problema conocido como la paradoja de la velocidad de propagación. En este trabajo estudiaremos estefenómeno y plantearemos una solución, apoyándonos en un ejemplo concreto.&lt;br /&gt;
&lt;br /&gt;
=. Problema concreto=&lt;br /&gt;
Consideramos el siguiente problema: Se considera una varilla metálica que ocupa el intervalo [0, 1] y que se encuentra aislada por su superficie lateral, de manera que la conducción de calor sólo se produce en la&lt;br /&gt;
dirección longitudinal. En el extremo derecho&lt;br /&gt;
se consigue mantener la temperatura a 10°C mientras que en el izquierdo la temperatura&lt;br /&gt;
es siempre de 1°C. Además, la temperatura en el instante inicial viene dada por la función &amp;lt;math&amp;gt; u_0 (x)= 10-10 \cdot 1_{[1/3,2/3]}(x)&amp;lt;/math&amp;gt; . Así, el sistema que modeliza este problema es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases} &lt;br /&gt;
      u_t-u_{xx} = 0 &amp;amp; x \in [0,1], t&amp;gt;0 \\&lt;br /&gt;
      u(0,t)=10 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(1,t)=1 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(x,0)=u_0(x) &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Su solución estacionaria es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; v(x)=9x+1 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y la solución general es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x,t)= 9x+1+  \sum_{n=1}^{\infty}b_n sen(n \pi x)e^{n^2\pi ^2 t}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; b_n &amp;lt;/math&amp;gt; es una constante de la forma:&lt;br /&gt;
&lt;br /&gt;
AQUI VEMOS QUE HACEMOS CON BN&lt;br /&gt;
&lt;br /&gt;
Si visualizamos estas soluciones con &amp;lt;math&amp;gt; t \in [0,1] &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; x \in [0,1] &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:sol2.jpeg|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:sol11.jpeg|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Animación solución.gif|400px|thumb|right|Convergencia a la solución estacionaria]]&lt;br /&gt;
&lt;br /&gt;
Observamos que la solución u comienza en la temperatura correcta (salvo por oscilaciones) y para un tiempo suficientemente pequeño se aproxima considerablemente a la solución de equilibrio. Además, en el siguiente apartado se comentará un detalle de la solución que se debe estudiar en mayor profundidad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
syms n&lt;br /&gt;
syms x&lt;br /&gt;
syms t&lt;br /&gt;
g=sin(n*pi*x);&lt;br /&gt;
f1=(-9*x-9)*g;&lt;br /&gt;
f2=(-9*x+9)*g;&lt;br /&gt;
f3=(-9*x+1)*g;&lt;br /&gt;
f4=(-9*x-1)*g;&lt;br /&gt;
&lt;br /&gt;
F1=int(f1,-1,-2/3);&lt;br /&gt;
F2=int(f3,-2/3,-1/3);&lt;br /&gt;
F3=int(f1,-1/3,0);&lt;br /&gt;
F4=int(f2,0,1/3);&lt;br /&gt;
F5=int(f4,1/3,2/3);&lt;br /&gt;
F6=int(f2,2/3,1);&lt;br /&gt;
&lt;br /&gt;
F(n)=F1+F2+F3+F4+F5+F6;&lt;br /&gt;
&lt;br /&gt;
sol=9*x+1;&lt;br /&gt;
k=20; %numero de elementos&lt;br /&gt;
for i=1:k&lt;br /&gt;
    sol=sol+F(i)*sin(i*pi*x)*exp(-(i^2)*pi^2*t);&lt;br /&gt;
end&lt;br /&gt;
u(x,t)=sol;&lt;br /&gt;
[X, T] = meshgrid(linspace(0,1,50), linspace(0,1,50));&lt;br /&gt;
Z=u(X,T);&lt;br /&gt;
Z=double(Z);&lt;br /&gt;
figure&lt;br /&gt;
surf(X, T, Z) &lt;br /&gt;
xlabel('x'), ylabel('t'), zlabel('u(x,t)')&lt;br /&gt;
title('Gráfico de la solución')&lt;br /&gt;
colorbar&lt;br /&gt;
shading interp &lt;br /&gt;
&lt;br /&gt;
% Definir parámetros&lt;br /&gt;
xv = linspace(0,1,100); % Dominio de x (100 puntos entre 0 y 1)&lt;br /&gt;
t_values = linspace(0,0.1,60); % Valores de t para cada frame (60 frames)&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
fig = figure;&lt;br /&gt;
v = VideoWriter('animacion_ftejercicio2.mp4', 'MPEG-4'); % Guardar animación en video&lt;br /&gt;
v.FrameRate = 5; % FPS&lt;br /&gt;
open(v);&lt;br /&gt;
&lt;br /&gt;
for t = t_values&lt;br /&gt;
    y = u(xv,t); % Evaluar la función en x para el tiempo t&lt;br /&gt;
    plot(xv, y, 'b', 'LineWidth', 2); % Graficar en 1D&lt;br /&gt;
    ylim([0, 12]); % Mantener el mismo rango en y&lt;br /&gt;
    xlabel('x');&lt;br /&gt;
    ylabel('u(x,t)');&lt;br /&gt;
    title(sprintf('t = %.2f', t)); % Mostrar el tiempo actual&lt;br /&gt;
    grid on;&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(fig);&lt;br /&gt;
    writeVideo(v, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(v); % Cerrar archivo de video&lt;br /&gt;
close(fig); % Cerrar la figura&lt;br /&gt;
&lt;br /&gt;
disp('Animación guardada como animacion_ft.mp4');&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=. Paradoja de la velocidad de propagación=&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Paradoja.jpeg|400px|thumb|derecha|Solución para t=0]]&lt;br /&gt;
&lt;br /&gt;
Observamos que, en nuestra solución, para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt; la solución es estrictamente positiva. Sin embargo, en &amp;lt;math&amp;gt;t=0&amp;lt;/math&amp;gt; observamos que para el intervalo &amp;lt;math&amp;gt;  x \in [1/3,2/3]&amp;lt;/math&amp;gt; la temperatura es cero. Esto contradice la teoría de la relatividad de Einstein, ya que podemos tomar un valor &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt; arbitrariamente pequeño de manera que la temperatura sea no nula, lo cual no es posible bajo la teoría de la relatividad. Este fenómeno se conoce como la paradoja de la velocidad de propagación del calor. &lt;br /&gt;
&lt;br /&gt;
==. Ecuación de Cattaneo-Vernotte==&lt;br /&gt;
Para solucionar esta aparente falla en nuestro modelo, Cattaneo propuso una solución modificando la Ley de Fourier de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;q=-k\nabla u \rightarrow q+ \tau \frac{\partial q}{\partial t} =k\nabla u&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Añadimos el factor &amp;lt;math&amp;gt; \tau \frac{\partial q}{\partial t} &amp;lt;/math&amp;gt; a la Ley de Fourier, donde &amp;lt;math&amp;gt;\tau&amp;lt;/math&amp;gt; se conoce como el término de relajación térmica. De esta manera, se modela un retardo en la respuesta de flujo de calor a los cambios de la temperatura. Si ahora aplicamos la conservación de la energía, nos queda la conocida ecuación hiperbólica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial u}{\partial t} + \tau \frac{\partial^{2}u}{\partial t^{2}} = \alpha \Delta u &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; \alpha &amp;lt;/math&amp;gt; es la difusividad térmica. En nuestro caso, &amp;lt;math&amp;gt; \alpha=1 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases} &lt;br /&gt;
      \tau u_{tt}+u_t-u_{xx} = 0 &amp;amp; x \in [0,1], t&amp;gt;0 \\&lt;br /&gt;
      u(0,t)=10 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(1,t)=1 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(x,0)=u_0(x) &amp;amp; x \in [0,1]&lt;br /&gt;
      u_t(x,0)=0 &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta nueva ecuación garantiza que la velocidad de propagación del calor se produzca con velocidad finita, por lo que se utiliza en modelos donde el efecto de propagación instantánea tiene importancia. &lt;br /&gt;
&lt;br /&gt;
Si resolvemos esta ecuación por separación de variables, tenemos las siguientes soluciones para la función espacial &amp;lt;math&amp;gt;X(x)&amp;lt;/math&amp;gt; y temporal &amp;lt;math&amp;gt; T(t)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
La ecuación espacial nos con estas condiciones nos proporciona la colección de soluciones &amp;lt;math&amp;gt; X_{n}(x)=A_{n}sen(n\pi x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la ecuación temporal, tenemos la solución &amp;lt;math&amp;gt; T_{n}(t)=e^{\frac{-t}{2\tau}}(c_{1}cos(\omega t) + c_{2}sen((\omega t)) &amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt; \omega = \frac{\sqrt{4\tau n^{2}\pi^{2}-1}}{2\tau} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, la solución general de la ecuación de Cattaneo-Vernotte es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x,t) = 1+9x+ \sum_{n=1}^{\infty} A_{n}e^{\frac{-t}{2\tau}}(c_{1}cos(\omega t) + c_{2}sen((\omega t)) \cdot sen(n\pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=. Referencias =&lt;br /&gt;
&lt;br /&gt;
* Amin Moosaie. Non-Fourier heat conduction in a finite medium with insulated boundaries and arbitrary initial conditions ([https://www.sciencedirect.com/science/article/pii/S0735193307001637 [1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]).&lt;br /&gt;
&lt;br /&gt;
* Francisco R. Villatoro. La ciencia de la mula Francis: La velocidad de la propagación del calor, entre la paradoja y la entropía([https://francis.naukas.com/2008/10/22/la-velocidad-de-la-propagacion-del-calor-entre-la-paradoja-y-la-entropia/ [2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;])&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(PPAD)&amp;diff=84444</id>
		<title>Ecuación del calor (PPAD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(PPAD)&amp;diff=84444"/>
				<updated>2025-03-16T13:48:31Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor (Grupo PPAD). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Pablo Vidal Nacle, Pablo Maestro Fernández, Alex Heredero Santamaría, Diego Moñino Vizmanos}}&lt;br /&gt;
&lt;br /&gt;
=. Introducción=&lt;br /&gt;
La ecuación del calor clásica es una herramienta crucial para los ingenieros y físicos. Ahora bien, esta ecuación plantea un serio problema conocido como la paradoja de la velocidad de propagación. En este trabajo estudiaremos estefenómeno y plantearemos una solución, apoyándonos en un ejemplo concreto.&lt;br /&gt;
&lt;br /&gt;
=. Problema concreto=&lt;br /&gt;
Consideramos el siguiente problema: Se considera una varilla metálica que ocupa el intervalo [0, 1] y que se encuentra aislada por su superficie lateral, de manera que la conducción de calor sólo se produce en la&lt;br /&gt;
dirección longitudinal. En el extremo derecho&lt;br /&gt;
se consigue mantener la temperatura a 10°C mientras que en el izquierdo la temperatura&lt;br /&gt;
es siempre de 1°C. Además, la temperatura en el instante inicial viene dada por la función &amp;lt;math&amp;gt; u_0 (x)= 10-10 \cdot 1_{[1/3,2/3]}(x)&amp;lt;/math&amp;gt; . Así, el sistema que modeliza este problema es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases} &lt;br /&gt;
      u_t-u_{xx} = 0 &amp;amp; x \in [0,1], t&amp;gt;0 \\&lt;br /&gt;
      u(0,t)=10 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(1,t)=1 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(x,0)=u_0(x) &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Su solución estacionaria es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; v(x)=9x+1 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y la solución general es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x,t)= 9x+1+  \sum_{n=1}^{\infty}b_n sen(n \pi x)e^{n^2\pi ^2 t}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; b_n &amp;lt;/math&amp;gt; es una constante de la forma:&lt;br /&gt;
&lt;br /&gt;
AQUI VEMOS QUE HACEMOS CON BN&lt;br /&gt;
&lt;br /&gt;
Si visualizamos estas soluciones con &amp;lt;math&amp;gt; t \in [0,1] &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; x \in [0,1] &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:sol2.jpeg|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:sol11.jpeg|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Animación solución.gif|400px|thumb|right|Convergencia a la solución estacionaria]]&lt;br /&gt;
&lt;br /&gt;
Observamos que la solución u comienza en la temperatura correcta (salvo por oscilaciones) y para un tiempo suficientemente pequeño se aproxima considerablemente a la solución de equilibrio. Además, en el siguiente apartado se comentará un detalle de la solución que se debe estudiar en mayor profundidad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
syms n&lt;br /&gt;
syms x&lt;br /&gt;
syms t&lt;br /&gt;
g=sin(n*pi*x);&lt;br /&gt;
f1=(-9*x-9)*g;&lt;br /&gt;
f2=(-9*x+9)*g;&lt;br /&gt;
f3=(-9*x+1)*g;&lt;br /&gt;
f4=(-9*x-1)*g;&lt;br /&gt;
&lt;br /&gt;
F1=int(f1,-1,-2/3);&lt;br /&gt;
F2=int(f3,-2/3,-1/3);&lt;br /&gt;
F3=int(f1,-1/3,0);&lt;br /&gt;
F4=int(f2,0,1/3);&lt;br /&gt;
F5=int(f4,1/3,2/3);&lt;br /&gt;
F6=int(f2,2/3,1);&lt;br /&gt;
&lt;br /&gt;
F(n)=F1+F2+F3+F4+F5+F6;&lt;br /&gt;
&lt;br /&gt;
sol=9*x+1;&lt;br /&gt;
k=20; %numero de elementos&lt;br /&gt;
for i=1:k&lt;br /&gt;
    sol=sol+F(i)*sin(i*pi*x)*exp(-(i^2)*pi^2*t);&lt;br /&gt;
end&lt;br /&gt;
u(x,t)=sol;&lt;br /&gt;
[X, T] = meshgrid(linspace(0,1,50), linspace(0,1,50));&lt;br /&gt;
Z=u(X,T);&lt;br /&gt;
Z=double(Z);&lt;br /&gt;
figure&lt;br /&gt;
surf(X, T, Z) &lt;br /&gt;
xlabel('x'), ylabel('t'), zlabel('u(x,t)')&lt;br /&gt;
title('Gráfico de la solución')&lt;br /&gt;
colorbar&lt;br /&gt;
shading interp &lt;br /&gt;
&lt;br /&gt;
% Definir parámetros&lt;br /&gt;
xv = linspace(0,1,100); % Dominio de x (100 puntos entre 0 y 1)&lt;br /&gt;
t_values = linspace(0,0.1,60); % Valores de t para cada frame (60 frames)&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
fig = figure;&lt;br /&gt;
v = VideoWriter('animacion_ftejercicio2.mp4', 'MPEG-4'); % Guardar animación en video&lt;br /&gt;
v.FrameRate = 5; % FPS&lt;br /&gt;
open(v);&lt;br /&gt;
&lt;br /&gt;
for t = t_values&lt;br /&gt;
    y = u(xv,t); % Evaluar la función en x para el tiempo t&lt;br /&gt;
    plot(xv, y, 'b', 'LineWidth', 2); % Graficar en 1D&lt;br /&gt;
    ylim([0, 12]); % Mantener el mismo rango en y&lt;br /&gt;
    xlabel('x');&lt;br /&gt;
    ylabel('u(x,t)');&lt;br /&gt;
    title(sprintf('t = %.2f', t)); % Mostrar el tiempo actual&lt;br /&gt;
    grid on;&lt;br /&gt;
    drawnow;&lt;br /&gt;
    &lt;br /&gt;
    % Capturar frame para el video&lt;br /&gt;
    frame = getframe(fig);&lt;br /&gt;
    writeVideo(v, frame);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
close(v); % Cerrar archivo de video&lt;br /&gt;
close(fig); % Cerrar la figura&lt;br /&gt;
&lt;br /&gt;
disp('Animación guardada como animacion_ft.mp4');&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=. Paradoja de la velocidad de propagación=&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Paradoja.jpeg|400px|thumb|derecha|Solución para t=0]]&lt;br /&gt;
&lt;br /&gt;
Observamos que, en nuestra solución, para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt; la solución es estrictamente positiva. Sin embargo, en &amp;lt;math&amp;gt;t=0&amp;lt;/math&amp;gt; observamos que para el intervalo &amp;lt;math&amp;gt;  x \in [1/3,2/3]&amp;lt;/math&amp;gt; la temperatura es cero. Esto contradice la teoría de la relatividad de Einstein, ya que podemos tomar un valor &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt; arbitrariamente pequeño de manera que la temperatura sea no nula, lo cual no es posible bajo la teoría de la relatividad. Este fenómeno se conoce como la paradoja de la velocidad de propagación del calor. &lt;br /&gt;
&lt;br /&gt;
==. Ecuación de Cattaneo-Vernotte==&lt;br /&gt;
Para solucionar esta aparente falla en nuestro modelo, Cattaneo propuso una solución modificando la Ley de Fourier de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;q=-k\nabla u \rightarrow q+ \tau \frac{\partial q}{\partial t} =k\nabla u&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Añadimos el factor &amp;lt;math&amp;gt; \tau \frac{\partial q}{\partial t} &amp;lt;/math&amp;gt; a la Ley de Fourier, donde &amp;lt;math&amp;gt;\tau&amp;lt;/math&amp;gt; se conoce como el término de relajación térmica. De esta manera, se modela un retardo en la respuesta de flujo de calor a los cambios de la temperatura. Si ahora aplicamos la conservación de la energía, nos queda la conocida ecuación hiperbólica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial u}{\partial t} + \tau \frac{\partial^{2}u}{\partial t^{2}} = \alpha \Delta u &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; \alpha &amp;lt;/math&amp;gt; es la difusividad térmica. En nuestro caso, &amp;lt;math&amp;gt; \alpha=1 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases} &lt;br /&gt;
      \tau u_tt+u_t-u_{xx} = 0 &amp;amp; x \in [0,1], t&amp;gt;0 \\&lt;br /&gt;
      u(0,t)=10 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(1,t)=1 &amp;amp; t&amp;gt;0 \\&lt;br /&gt;
      u(x,0)=u_0(x) &amp;amp; x \in [0,1]&lt;br /&gt;
      u_t(x,0)=0 &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta nueva ecuación garantiza que la velocidad de propagación del calor se produzca con velocidad finita, por lo que se utiliza en modelos donde el efecto de propagación instantánea tiene importancia. &lt;br /&gt;
&lt;br /&gt;
Si resolvemos esta ecuación por separación de variables, tenemos las siguientes soluciones para la función espacial &amp;lt;math&amp;gt;X(x)&amp;lt;/math&amp;gt; y temporal &amp;lt;math&amp;gt; T(t)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
La ecuación espacial nos con estas condiciones nos proporciona la colección de soluciones &amp;lt;math&amp;gt; X_{n}(x)=A_{n}sen(n\pi x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la ecuación temporal, tenemos la solución &amp;lt;math&amp;gt; T_{n}(t)=e^{\frac{-t}{2\tau}}(c_{1}cos(\omega t) + c_{2}sen((\omega t)) &amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt; \omega = \frac{\sqrt{4\tau n^{2}\pi^{2}-1}}{2\tau} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, la solución general de la ecuación de Cattaneo-Vernotte es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x,t) = 1+9x+ \sum_{n=1}^{\infty} A_{n}e^{\frac{-t}{2\tau}}(c_{1}cos(\omega t) + c_{2}sen((\omega t)) \cdot sen(n\pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=. Referencias =&lt;br /&gt;
&lt;br /&gt;
* Amin Moosaie. Non-Fourier heat conduction in a finite medium with insulated boundaries and arbitrary initial conditions ([https://www.sciencedirect.com/science/article/pii/S0735193307001637 [1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]).&lt;br /&gt;
&lt;br /&gt;
* Francisco R. Villatoro. La ciencia de la mula Francis: La velocidad de la propagación del calor, entre la paradoja y la entropía([https://francis.naukas.com/2008/10/22/la-velocidad-de-la-propagacion-del-calor-entre-la-paradoja-y-la-entropia/ [2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;])&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=84198</id>
		<title>Series de Fourier (Grupo PPAD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=84198"/>
				<updated>2025-02-23T20:12:25Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo PPAD). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Pablo Vidal Nacle, Pablo Maestro Fernández, Alex Heredero Santamaría, Diego Moñino Vizmanos}}&lt;br /&gt;
&lt;br /&gt;
=. Introducción=&lt;br /&gt;
Se define el espacio de Hilbert &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; como:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; L^2(a,b) = \left\{ f(x)| \int_{a}^{b} |f(x)|^{2} dx \lt \infty  \right\}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; a,b \in \mathbb{R} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; a \lt b &amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; es un espacio vectorial con producto escalar asociado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left\langle f,g \right\rangle_{L^{2}}=\int_{a}^{b} f(x)g(x) dx, \forall f,g \in L^{2}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
Esta construcción del espacio &amp;lt;math&amp;gt; L^{2} &amp;lt;/math&amp;gt; motiva plantear la posibilidad de definir una base numerable que permita expresar todos los elementos del espacio en función de los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
=. Base trigonométrica=&lt;br /&gt;
Tal y como se ha definido en la introducción, consideramos el espacio &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;. En éste se define la base numerable &amp;lt;math&amp;gt; \beta &amp;lt;/math&amp;gt; dada por los siguientes elementos:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(n x), \frac{1}{\sqrt{\pi}}sen(n x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
que se conoce como referencia de Fourier trigonométrica.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Archivo:PPAD1.jpeg|800px|thumb|Término constante de la base]]&lt;br /&gt;
[[Archivo:PPAD2.jpeg|800px|thumb|Primeros 10 elementos del coseno de la base]]&lt;br /&gt;
[[Archivo:PPAD3.jpeg|800px|thumb|Primeros 10 elementos del seno de la base]]&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;
# Definir el rango de x&lt;br /&gt;
x = np.linspace(-1, 1, 400)&lt;br /&gt;
&lt;br /&gt;
# Graficar el primer término de la base (constante 1/2)&lt;br /&gt;
plt.plot(x, np.full_like(x, 1/2), label=r'$\frac{1}{2}$', linewidth=2)&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos cos(nπx) y sin(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    plt.plot(x, np.cos(n * np.pi * x), label=fr'$\cos({n}\pi x)$')&lt;br /&gt;
    plt.plot(x, np.sin(n * np.pi * x), label=fr'$\sin({n}\pi x)$')&lt;br /&gt;
&lt;br /&gt;
# Configurar la gráfica&lt;br /&gt;
plt.axhline(0, color='black', linewidth=0.8)&lt;br /&gt;
plt.axvline(0, color='black', linewidth=0.8)&lt;br /&gt;
plt.legend(loc='upper right', fontsize='x-small', ncol=2)&lt;br /&gt;
plt.xlabel('x')&lt;br /&gt;
plt.ylabel('Valor de la función')&lt;br /&gt;
plt.title('Primeros 10 términos de la base trigonométrica')&lt;br /&gt;
plt.grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
# Definir el rango de x&lt;br /&gt;
x = np.linspace(-1, 1, 400)&lt;br /&gt;
&lt;br /&gt;
# Crear una figura con 3 subgráficos&lt;br /&gt;
fig, axes = plt.subplots(3, 1, figsize=(6, 12))&lt;br /&gt;
&lt;br /&gt;
# Graficar el primer término de la base (constante 1/2)&lt;br /&gt;
axes[0].plot(x, np.full_like(x, 1/2), label=r'$\frac{1}{2}$', linewidth=2)&lt;br /&gt;
axes[0].set_title('Término constante')&lt;br /&gt;
axes[0].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[0].legend()&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos cos(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    axes[1].plot(x, np.cos(n * np.pi * x), label=fr'$\cos({n}\pi x)$', linewidth=2)&lt;br /&gt;
axes[1].set_title('Funciones coseno')&lt;br /&gt;
axes[1].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[1].legend(fontsize='x-small', ncol=2)&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos sin(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    axes[2].plot(x, np.sin(n * np.pi * x), label=fr'$\sin({n}\pi x)$', linewidth=2)&lt;br /&gt;
axes[2].set_title('Funciones seno')&lt;br /&gt;
axes[2].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[2].legend(fontsize='x-small', ncol=2)&lt;br /&gt;
&lt;br /&gt;
# Ajustar diseño&lt;br /&gt;
plt.tight_layout()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=. Aproximación de una función por la base trigonométrica=&lt;br /&gt;
Sea &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(x) = xe^{-x}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
definida en el intervalo [-2,3], se busca aproximar f mediante la base trigonométrica del espacio &amp;lt;math&amp;gt;L^2(-2,3)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Consideramos el espacio de Hilbert \( L^2(- \pi, \pi) \) con el producto interno \( \langle \cdot, \cdot \rangle_{L^2} \). En este espacio tomamos la base de Fourier trigonométrica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(nx), \frac{1}{\sqrt{\pi}}sen(nx) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si consideramos ahora el espacio \( L^2(a, b) \), buscamos una base ortonormal (referencia de Fourier) en este espacio. Para ello, hacemos el cambio de variable:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; h(x) = \frac{2\pi}{b-a} (x - a) - \pi, \quad x \in [a, b] &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta manera, \( h(x) \in [-\pi, \pi] \), lo que permite trasladar la base ortonormal del espacio \( L^2(- \pi, \pi) \) al nuevo intervalo \( [a, b] \).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta forma, obtenemos la base de Fourier de \( L^2(a,b) \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{b-a}}, \frac{\sqrt{2}}{\sqrt{b-a}} \cos\left( n \left( \frac{2\pi (x-a)}{b-a} - \pi \right) \right), \frac{\sqrt{2}}{\sqrt{b-a}} \sin\left( n \left( \frac{2\pi (x-a)}{b-a} - \pi \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para preservar la ortonormalidad en \( L^2(a,b) \), los senos y cosenos han sido normalizados con el factor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{\sqrt{2}}{\sqrt{b-a}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para los términos trigonométricos.&lt;br /&gt;
&lt;br /&gt;
Una función \( f(x) \in L^2(a,b) \) puede escribirse entonces:&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=0}^{\infty} \frac{\sqrt{2}}{\sqrt{b-a}} d_n \cos(n h(x)) + \sum_{n=0}^{\infty} \frac{\sqrt{2}}{\sqrt{b-a}} c_n \sin(n h(x))&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En &amp;lt;math&amp;gt; L^2(-2,3) &amp;lt;/math&amp;gt;, nos queda la base:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{5}}, \frac{\sqrt{2}}{\sqrt{5}} \cos\left( n \left( \frac{2\pi x - \pi}{5} \right) \right), \frac{\sqrt{2}}{\sqrt{5}} \sin\left( n \left( \frac{2\pi x - \pi}{5} \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sea la función \( f(x) = x e^{-x} \). Se verifica que \( f(x) \in L^2(-2,3) \), pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\int_{-2}^{3} x^2 e^{-2x} \, dx = \frac{5(e^{10}-5)}{4 e^6}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que \( f(x) \) es continua y satisface la condición de Dirichlet, su desarrollo en serie de Fourier converge a la función en los puntos de continuidad y en los extremos. Así, se tiene:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f \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} d_m \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;
Calculemos ahora los coeficientes de la serie de Fourier&lt;br /&gt;
&lt;br /&gt;
El coeficiente \( d_0 \) se obtiene como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \left\langle f,\frac{1}{\sqrt{5}} \right\rangle_{L^{2}} = \int_{-2}^{3} x e^{-x} \, dx = \frac{-4 + e^5}{\sqrt{5} e^3}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_n \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_n = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \cos\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}}= \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \cos\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_m \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_m = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \sin\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}} = \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \sin\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, se puede aproximar la función f mediante los primeros 5, 10 y 20 términos de su desarrollo en serie de Fourier, empleando el siguiente código de python:&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Archivo:Fourier.gif|800px|thumb|Aproximación de Fourier de la función extendida &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt;]]&lt;br /&gt;
[[Archivo:Error_fourier.gif|800px|thumb|Error absoluto entre la función &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt; y su aproximación de Fourier]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Error_supremo.png|800px|thumb|Error en norma supremo de la aproximación para distintos valores de n]]&lt;br /&gt;
[[Archivo:Error_L2.png|800px|thumb|Error en norma L2 de la aproximación para distintos valores de n]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
from tqdm import tqdm&lt;br /&gt;
import sympy as sp&lt;br /&gt;
import math&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
n=10&lt;br /&gt;
&lt;br /&gt;
def calcular_aproximacion_fourier(n):&lt;br /&gt;
    e = 0&lt;br /&gt;
    l = 0&lt;br /&gt;
    x = sp.symbols('x')&lt;br /&gt;
    &lt;br /&gt;
    for i in tqdm(range(1, n)): &lt;br /&gt;
        integrand = (math.sqrt(2)/math.sqrt(5)) * x&lt;br /&gt;
        * sp.exp(-x) * sp.cos(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        integral_result = sp.integrate(integrand, (x, -2, 3))&lt;br /&gt;
        &lt;br /&gt;
        integrand2 = (math.sqrt(2)/math.sqrt(5)) * x &lt;br /&gt;
        * sp.exp(-x) * sp.sin(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        integral_result2 = sp.integrate(integrand2, (x, -2, 3))&lt;br /&gt;
        &lt;br /&gt;
        e += integral_result * (math.sqrt(2)/math.sqrt(5)) * &lt;br /&gt;
        sp.cos(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        l += integral_result2 * (math.sqrt(2)/math.sqrt(5)) * &lt;br /&gt;
        sp.sin(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
    &lt;br /&gt;
    d0 = -(4 + sp.exp(5)) / (math.sqrt(5) * sp.exp(3))&lt;br /&gt;
    f = d0 / math.sqrt(5) + e + l&lt;br /&gt;
    &lt;br /&gt;
    return sp.lambdify(x, f, &amp;quot;numpy&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Definir la función f(x) = x * exp(-x)&lt;br /&gt;
def f(x):&lt;br /&gt;
    return x * np.exp(-x)&lt;br /&gt;
&lt;br /&gt;
# Generar valores de x en el rango [-2, 3]&lt;br /&gt;
x_vals = np.linspace(-2, 3, 1000)&lt;br /&gt;
y_vals = f(x_vals)&lt;br /&gt;
&lt;br /&gt;
f_numeric=calcular_aproximacion_fourier(n)&lt;br /&gt;
# Aproximación de Fourier (f_numeric debe estar definida previamente)&lt;br /&gt;
y_fourier = f_numeric(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Calcular el error&lt;br /&gt;
error_vals = np.abs(y_vals - y_fourier)&lt;br /&gt;
&lt;br /&gt;
# Crear el gráfico de la función y su aproximación&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, y_vals, label=r'$f(x) = x e^{-x}$',linestyle='dashed', color='b')&lt;br /&gt;
plt.plot(x_vals, y_fourier, label=f&amp;quot;Aproximación n={n}&amp;quot;, color='r')&lt;br /&gt;
plt.axhline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.axvline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;f(x)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Comparación entre f(x) y su Aproximación de Fourier&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Gráfico del error&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, error_vals, label=&amp;quot;Error Absoluto&amp;quot;, color='g')&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error entre f(x) y su aproximación de Fourier&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show&lt;br /&gt;
&lt;br /&gt;
# Valores de n a evaluar&lt;br /&gt;
n_vals1 = np.linspace(10,200,20)&lt;br /&gt;
n_vals=[]&lt;br /&gt;
for i in range(20):&lt;br /&gt;
    n_vals.append(int(n_vals1[i]))&lt;br /&gt;
&lt;br /&gt;
error_L2_vals=[]&lt;br /&gt;
error_supremo_vals = []&lt;br /&gt;
&lt;br /&gt;
for i in n_vals:&lt;br /&gt;
    f_numeric = calcular_aproximacion_fourier(i)&lt;br /&gt;
    y_fourier = f_numeric(x_vals)&lt;br /&gt;
    error_L2 = np.sqrt(np.trapz(np.abs(y_vals - y_fourier)**2, x_vals))&lt;br /&gt;
    error_L2_vals.append(error_L2)&lt;br /&gt;
    error_supremo = np.sqrt(np.trapz(np.abs(y_vals - y_fourier)**2, x_vals))&lt;br /&gt;
    error_supremo_vals.append(error_supremo)&lt;br /&gt;
&lt;br /&gt;
# Graficar el error en norma L2 vs n&lt;br /&gt;
plt.figure(figsize=(6, 4))&lt;br /&gt;
plt.plot(n_vals, error_L2_vals, linestyle='-', color='r')&lt;br /&gt;
plt.xlabel(&amp;quot;n&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error L2&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error en Norma L2 para distintos valores de n&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Graficar el error en norma supremo vs n&lt;br /&gt;
plt.figure(figsize=(6, 4))&lt;br /&gt;
plt.plot(n_vals, error_supremo_vals, linestyle='-', color='r')&lt;br /&gt;
plt.xlabel(&amp;quot;n&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error norma supremo&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error en Norma supremo para distintos valores de n&amp;quot;)&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;
&lt;br /&gt;
=. Referencias =&lt;br /&gt;
* Sandro Salsa, Gianmaria Verzini. Partial Differential Equations in Action(Edición 4).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=84197</id>
		<title>Series de Fourier (Grupo PPAD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=84197"/>
				<updated>2025-02-23T20:11:31Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo PPAD). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Pablo Vidal Nacle, Pablo Maestro Fernández, Alex Heredero Santamaría, Diego Moñino Vizmanos}}&lt;br /&gt;
&lt;br /&gt;
=. Introducción=&lt;br /&gt;
Se define el espacio de Hilbert &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; como:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; L^2(a,b) = \left\{ f(x)| \int_{a}^{b} |f(x)|^{2} dx \lt \infty  \right\}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; a,b \in \mathbb{R} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; a \lt b &amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; es un espacio vectorial con producto escalar asociado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left\langle f,g \right\rangle_{L^{2}}=\int_{a}^{b} f(x)g(x) dx, \forall f,g \in L^{2}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
Esta construcción del espacio &amp;lt;math&amp;gt; L^{2} &amp;lt;/math&amp;gt; motiva plantear la posibilidad de definir una base numerable que permita expresar todos los elementos del espacio en función de los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
=. Base trigonométrica=&lt;br /&gt;
Tal y como se ha definido en la introducción, consideramos el espacio &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;. En éste se define la base numerable &amp;lt;math&amp;gt; \beta &amp;lt;/math&amp;gt; dada por los siguientes elementos:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(n x), \frac{1}{\sqrt{\pi}}sen(n x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
que se conoce como referencia de Fourier trigonométrica.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Archivo:PPAD1.jpeg|800px|thumb|Término constante de la base]]&lt;br /&gt;
[[Archivo:PPAD2.jpeg|800px|thumb|Primeros 10 elementos del coseno de la base]]&lt;br /&gt;
[[Archivo:PPAD3.jpeg|800px|thumb|Primeros 10 elementos del seno de la base]]&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;
# Definir el rango de x&lt;br /&gt;
x = np.linspace(-1, 1, 400)&lt;br /&gt;
&lt;br /&gt;
# Graficar el primer término de la base (constante 1/2)&lt;br /&gt;
plt.plot(x, np.full_like(x, 1/2), label=r'$\frac{1}{2}$', linewidth=2)&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos cos(nπx) y sin(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    plt.plot(x, np.cos(n * np.pi * x), label=fr'$\cos({n}\pi x)$')&lt;br /&gt;
    plt.plot(x, np.sin(n * np.pi * x), label=fr'$\sin({n}\pi x)$')&lt;br /&gt;
&lt;br /&gt;
# Configurar la gráfica&lt;br /&gt;
plt.axhline(0, color='black', linewidth=0.8)&lt;br /&gt;
plt.axvline(0, color='black', linewidth=0.8)&lt;br /&gt;
plt.legend(loc='upper right', fontsize='x-small', ncol=2)&lt;br /&gt;
plt.xlabel('x')&lt;br /&gt;
plt.ylabel('Valor de la función')&lt;br /&gt;
plt.title('Primeros 10 términos de la base trigonométrica')&lt;br /&gt;
plt.grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
# Definir el rango de x&lt;br /&gt;
x = np.linspace(-1, 1, 400)&lt;br /&gt;
&lt;br /&gt;
# Crear una figura con 3 subgráficos&lt;br /&gt;
fig, axes = plt.subplots(3, 1, figsize=(6, 12))&lt;br /&gt;
&lt;br /&gt;
# Graficar el primer término de la base (constante 1/2)&lt;br /&gt;
axes[0].plot(x, np.full_like(x, 1/2), label=r'$\frac{1}{2}$', linewidth=2)&lt;br /&gt;
axes[0].set_title('Término constante')&lt;br /&gt;
axes[0].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[0].legend()&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos cos(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    axes[1].plot(x, np.cos(n * np.pi * x), label=fr'$\cos({n}\pi x)$', linewidth=2)&lt;br /&gt;
axes[1].set_title('Funciones coseno')&lt;br /&gt;
axes[1].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[1].legend(fontsize='x-small', ncol=2)&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos sin(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    axes[2].plot(x, np.sin(n * np.pi * x), label=fr'$\sin({n}\pi x)$', linewidth=2)&lt;br /&gt;
axes[2].set_title('Funciones seno')&lt;br /&gt;
axes[2].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[2].legend(fontsize='x-small', ncol=2)&lt;br /&gt;
&lt;br /&gt;
# Ajustar diseño&lt;br /&gt;
plt.tight_layout()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=. Aproximación de una función por la base trigonométrica=&lt;br /&gt;
Sea &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(x) = xe^{-x}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
definida en el intervalo [-2,3], se busca aproximar f mediante la base trigonométrica del espacio &amp;lt;math&amp;gt;L^2(-2,3)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Consideramos el espacio de Hilbert \( L^2(- \pi, \pi) \) con el producto interno \( \langle \cdot, \cdot \rangle_{L^2} \). En este espacio tomamos la base de Fourier trigonométrica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(nx), \frac{1}{\sqrt{\pi}}sen(nx) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si consideramos ahora el espacio \( L^2(a, b) \), buscamos una base ortonormal (referencia de Fourier) en este espacio. Para ello, hacemos el cambio de variable:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; h(x) = \frac{2\pi}{b-a} (x - a) - \pi, \quad x \in [a, b] &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta manera, \( h(x) \in [-\pi, \pi] \), lo que permite trasladar la base ortonormal del espacio \( L^2(- \pi, \pi) \) al nuevo intervalo \( [a, b] \).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta forma, obtenemos la base de Fourier de \( L^2(a,b) \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{b-a}}, \frac{\sqrt{2}}{\sqrt{b-a}} \cos\left( n \left( \frac{2\pi (x-a)}{b-a} - \pi \right) \right), \frac{\sqrt{2}}{\sqrt{b-a}} \sin\left( n \left( \frac{2\pi (x-a)}{b-a} - \pi \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para preservar la ortonormalidad en \( L^2(a,b) \), los senos y cosenos han sido normalizados con el factor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{\sqrt{2}}{\sqrt{b-a}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para los términos trigonométricos.&lt;br /&gt;
&lt;br /&gt;
Una función f\in\( L^2(a,b) \) puede escribirse entonces:&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=0}^{\infty} \frac{\sqrt{2}}{\sqrt{b-a}} d_n \cos(n h(x)) + \sum_{n=0}^{\infty} \frac{\sqrt{2}}{\sqrt{b-a}} c_n \sin(n h(x))&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En &amp;lt;math&amp;gt; L^2(-2,3) &amp;lt;/math&amp;gt;, nos queda la base:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{5}}, \frac{\sqrt{2}}{\sqrt{5}} \cos\left( n \left( \frac{2\pi x - \pi}{5} \right) \right), \frac{\sqrt{2}}{\sqrt{5}} \sin\left( n \left( \frac{2\pi x - \pi}{5} \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sea la función \( f(x) = x e^{-x} \). Se verifica que \( f(x) \in L^2(-2,3) \), pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\int_{-2}^{3} x^2 e^{-2x} \, dx = \frac{5(e^{10}-5)}{4 e^6}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que \( f(x) \) es continua y satisface la condición de Dirichlet, su desarrollo en serie de Fourier converge a la función en los puntos de continuidad y en los extremos. Así, se tiene:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f \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} d_m \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;
Calculemos ahora los coeficientes de la serie de Fourier&lt;br /&gt;
&lt;br /&gt;
El coeficiente \( d_0 \) se obtiene como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \left\langle f,\frac{1}{\sqrt{5}} \right\rangle_{L^{2}} = \int_{-2}^{3} x e^{-x} \, dx = \frac{-4 + e^5}{\sqrt{5} e^3}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_n \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_n = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \cos\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}}= \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \cos\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_m \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_m = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \sin\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}} = \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \sin\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, se puede aproximar la función f mediante los primeros 5, 10 y 20 términos de su desarrollo en serie de Fourier, empleando el siguiente código de python:&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Archivo:Fourier.gif|800px|thumb|Aproximación de Fourier de la función extendida &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt;]]&lt;br /&gt;
[[Archivo:Error_fourier.gif|800px|thumb|Error absoluto entre la función &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt; y su aproximación de Fourier]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Error_supremo.png|800px|thumb|Error en norma supremo de la aproximación para distintos valores de n]]&lt;br /&gt;
[[Archivo:Error_L2.png|800px|thumb|Error en norma L2 de la aproximación para distintos valores de n]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
from tqdm import tqdm&lt;br /&gt;
import sympy as sp&lt;br /&gt;
import math&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
n=10&lt;br /&gt;
&lt;br /&gt;
def calcular_aproximacion_fourier(n):&lt;br /&gt;
    e = 0&lt;br /&gt;
    l = 0&lt;br /&gt;
    x = sp.symbols('x')&lt;br /&gt;
    &lt;br /&gt;
    for i in tqdm(range(1, n)): &lt;br /&gt;
        integrand = (math.sqrt(2)/math.sqrt(5)) * x&lt;br /&gt;
        * sp.exp(-x) * sp.cos(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        integral_result = sp.integrate(integrand, (x, -2, 3))&lt;br /&gt;
        &lt;br /&gt;
        integrand2 = (math.sqrt(2)/math.sqrt(5)) * x &lt;br /&gt;
        * sp.exp(-x) * sp.sin(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        integral_result2 = sp.integrate(integrand2, (x, -2, 3))&lt;br /&gt;
        &lt;br /&gt;
        e += integral_result * (math.sqrt(2)/math.sqrt(5)) * &lt;br /&gt;
        sp.cos(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        l += integral_result2 * (math.sqrt(2)/math.sqrt(5)) * &lt;br /&gt;
        sp.sin(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
    &lt;br /&gt;
    d0 = -(4 + sp.exp(5)) / (math.sqrt(5) * sp.exp(3))&lt;br /&gt;
    f = d0 / math.sqrt(5) + e + l&lt;br /&gt;
    &lt;br /&gt;
    return sp.lambdify(x, f, &amp;quot;numpy&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Definir la función f(x) = x * exp(-x)&lt;br /&gt;
def f(x):&lt;br /&gt;
    return x * np.exp(-x)&lt;br /&gt;
&lt;br /&gt;
# Generar valores de x en el rango [-2, 3]&lt;br /&gt;
x_vals = np.linspace(-2, 3, 1000)&lt;br /&gt;
y_vals = f(x_vals)&lt;br /&gt;
&lt;br /&gt;
f_numeric=calcular_aproximacion_fourier(n)&lt;br /&gt;
# Aproximación de Fourier (f_numeric debe estar definida previamente)&lt;br /&gt;
y_fourier = f_numeric(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Calcular el error&lt;br /&gt;
error_vals = np.abs(y_vals - y_fourier)&lt;br /&gt;
&lt;br /&gt;
# Crear el gráfico de la función y su aproximación&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, y_vals, label=r'$f(x) = x e^{-x}$',linestyle='dashed', color='b')&lt;br /&gt;
plt.plot(x_vals, y_fourier, label=f&amp;quot;Aproximación n={n}&amp;quot;, color='r')&lt;br /&gt;
plt.axhline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.axvline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;f(x)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Comparación entre f(x) y su Aproximación de Fourier&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Gráfico del error&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, error_vals, label=&amp;quot;Error Absoluto&amp;quot;, color='g')&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error entre f(x) y su aproximación de Fourier&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show&lt;br /&gt;
&lt;br /&gt;
# Valores de n a evaluar&lt;br /&gt;
n_vals1 = np.linspace(10,200,20)&lt;br /&gt;
n_vals=[]&lt;br /&gt;
for i in range(20):&lt;br /&gt;
    n_vals.append(int(n_vals1[i]))&lt;br /&gt;
&lt;br /&gt;
error_L2_vals=[]&lt;br /&gt;
error_supremo_vals = []&lt;br /&gt;
&lt;br /&gt;
for i in n_vals:&lt;br /&gt;
    f_numeric = calcular_aproximacion_fourier(i)&lt;br /&gt;
    y_fourier = f_numeric(x_vals)&lt;br /&gt;
    error_L2 = np.sqrt(np.trapz(np.abs(y_vals - y_fourier)**2, x_vals))&lt;br /&gt;
    error_L2_vals.append(error_L2)&lt;br /&gt;
    error_supremo = np.sqrt(np.trapz(np.abs(y_vals - y_fourier)**2, x_vals))&lt;br /&gt;
    error_supremo_vals.append(error_supremo)&lt;br /&gt;
&lt;br /&gt;
# Graficar el error en norma L2 vs n&lt;br /&gt;
plt.figure(figsize=(6, 4))&lt;br /&gt;
plt.plot(n_vals, error_L2_vals, linestyle='-', color='r')&lt;br /&gt;
plt.xlabel(&amp;quot;n&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error L2&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error en Norma L2 para distintos valores de n&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Graficar el error en norma supremo vs n&lt;br /&gt;
plt.figure(figsize=(6, 4))&lt;br /&gt;
plt.plot(n_vals, error_supremo_vals, linestyle='-', color='r')&lt;br /&gt;
plt.xlabel(&amp;quot;n&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error norma supremo&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error en Norma supremo para distintos valores de n&amp;quot;)&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;
&lt;br /&gt;
=. Referencias =&lt;br /&gt;
* Sandro Salsa, Gianmaria Verzini. Partial Differential Equations in Action(Edición 4).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=84196</id>
		<title>Series de Fourier (Grupo PPAD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=84196"/>
				<updated>2025-02-23T20:08:34Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo PPAD). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Pablo Vidal Nacle, Pablo Maestro Fernández, Alex Heredero Santamaría, Diego Moñino Vizmanos}}&lt;br /&gt;
&lt;br /&gt;
=. Introducción=&lt;br /&gt;
Se define el espacio de Hilbert &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; como:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; L^2(a,b) = \left\{ f(x)| \int_{a}^{b} |f(x)|^{2} dx \lt \infty  \right\}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; a,b \in \mathbb{R} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; a \lt b &amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; es un espacio vectorial con producto escalar asociado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left\langle f,g \right\rangle_{L^{2}}=\int_{a}^{b} f(x)g(x) dx, \forall f,g \in L^{2}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
Esta construcción del espacio &amp;lt;math&amp;gt; L^{2} &amp;lt;/math&amp;gt; motiva plantear la posibilidad de definir una base numerable que permita expresar todos los elementos del espacio en función de los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
=. Base trigonométrica=&lt;br /&gt;
Tal y como se ha definido en la introducción, consideramos el espacio &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;. En éste se define la base numerable &amp;lt;math&amp;gt; \beta &amp;lt;/math&amp;gt; dada por los siguientes elementos:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(n x), \frac{1}{\sqrt{\pi}}sen(n x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
que se conoce como referencia de Fourier trigonométrica.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Archivo:PPAD1.jpeg|800px|thumb|Término constante de la base]]&lt;br /&gt;
[[Archivo:PPAD2.jpeg|800px|thumb|Primeros 10 elementos del coseno de la base]]&lt;br /&gt;
[[Archivo:PPAD3.jpeg|800px|thumb|Primeros 10 elementos del seno de la base]]&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;
# Definir el rango de x&lt;br /&gt;
x = np.linspace(-1, 1, 400)&lt;br /&gt;
&lt;br /&gt;
# Graficar el primer término de la base (constante 1/2)&lt;br /&gt;
plt.plot(x, np.full_like(x, 1/2), label=r'$\frac{1}{2}$', linewidth=2)&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos cos(nπx) y sin(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    plt.plot(x, np.cos(n * np.pi * x), label=fr'$\cos({n}\pi x)$')&lt;br /&gt;
    plt.plot(x, np.sin(n * np.pi * x), label=fr'$\sin({n}\pi x)$')&lt;br /&gt;
&lt;br /&gt;
# Configurar la gráfica&lt;br /&gt;
plt.axhline(0, color='black', linewidth=0.8)&lt;br /&gt;
plt.axvline(0, color='black', linewidth=0.8)&lt;br /&gt;
plt.legend(loc='upper right', fontsize='x-small', ncol=2)&lt;br /&gt;
plt.xlabel('x')&lt;br /&gt;
plt.ylabel('Valor de la función')&lt;br /&gt;
plt.title('Primeros 10 términos de la base trigonométrica')&lt;br /&gt;
plt.grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
# Definir el rango de x&lt;br /&gt;
x = np.linspace(-1, 1, 400)&lt;br /&gt;
&lt;br /&gt;
# Crear una figura con 3 subgráficos&lt;br /&gt;
fig, axes = plt.subplots(3, 1, figsize=(6, 12))&lt;br /&gt;
&lt;br /&gt;
# Graficar el primer término de la base (constante 1/2)&lt;br /&gt;
axes[0].plot(x, np.full_like(x, 1/2), label=r'$\frac{1}{2}$', linewidth=2)&lt;br /&gt;
axes[0].set_title('Término constante')&lt;br /&gt;
axes[0].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[0].legend()&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos cos(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    axes[1].plot(x, np.cos(n * np.pi * x), label=fr'$\cos({n}\pi x)$', linewidth=2)&lt;br /&gt;
axes[1].set_title('Funciones coseno')&lt;br /&gt;
axes[1].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[1].legend(fontsize='x-small', ncol=2)&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos sin(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    axes[2].plot(x, np.sin(n * np.pi * x), label=fr'$\sin({n}\pi x)$', linewidth=2)&lt;br /&gt;
axes[2].set_title('Funciones seno')&lt;br /&gt;
axes[2].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[2].legend(fontsize='x-small', ncol=2)&lt;br /&gt;
&lt;br /&gt;
# Ajustar diseño&lt;br /&gt;
plt.tight_layout()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=. Aproximación de una función por la base trigonométrica=&lt;br /&gt;
Sea &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(x) = xe^{-x}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
definida en el intervalo [-2,3], se busca aproximar f mediante la base trigonométrica del espacio &amp;lt;math&amp;gt;L^2(-2,3)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Consideramos el espacio de Hilbert \( L^2(- \pi, \pi) \) con el producto interno \( \langle \cdot, \cdot \rangle_{L^2} \). En este espacio tomamos la base de Fourier trigonométrica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(nx), \frac{1}{\sqrt{\pi}}sen(nx) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si consideramos ahora el espacio \( L^2(a, b) \), buscamos una base ortonormal (referencia de Fourier) en este espacio. Para ello, hacemos el cambio de variable:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; h(x) = \frac{2\pi}{b-a} (x - a) - \pi, \quad x \in [a, b] &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta manera, \( h(x) \in [-\pi, \pi] \), lo que permite trasladar la base ortonormal del espacio \( L^2(- \pi, \pi) \) al nuevo intervalo \( [a, b] \).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta forma, obtenemos la base de Fourier de \( L^2(a,b) \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{b-a}}, \frac{\sqrt{2}}{\sqrt{b-a}} \cos\left( n \left( \frac{2\pi (x-a)}{b-a} - \pi \right) \right), \frac{\sqrt{2}}{\sqrt{b-a}} \sin\left( n \left( \frac{2\pi (x-a)}{b-a} - \pi \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para preservar la ortonormalidad en \( L^2(a,b) \), los senos y cosenos han sido normalizados con el factor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{\sqrt{2}}{\sqrt{b-a}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para los términos trigonométricos.&lt;br /&gt;
&lt;br /&gt;
Una función f puede escribirse entonces:&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=0}^{\infty} \frac{\sqrt{2}}{\sqrt{b-a}} d_n \cos(n h(x)) + \sum_{n=0}^{\infty} \frac{\sqrt{2}}{\sqrt{b-a}} c_n \sin(n h(x))&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En &amp;lt;math&amp;gt; L^2(-2,3) &amp;lt;/math&amp;gt;, nos queda la base:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{5}}, \frac{\sqrt{2}}{\sqrt{5}} \cos\left( n \left( \frac{2\pi x - \pi}{5} \right) \right), \frac{\sqrt{2}}{\sqrt{5}} \sin\left( n \left( \frac{2\pi x - \pi}{5} \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sea la función \( f(x) = x e^{-x} \). Se verifica que \( f(x) \in L^2(-2,3) \), pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\int_{-2}^{3} x^2 e^{-2x} \, dx = \frac{5(e^{10}-5)}{4 e^6}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que \( f(x) \) es continua y satisface la condición de Dirichlet, su desarrollo en serie de Fourier converge a la función en los puntos de continuidad y en los extremos. Así, se tiene:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f \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} d_m \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;
Calculemos ahora los coeficientes de la serie de Fourier&lt;br /&gt;
&lt;br /&gt;
El coeficiente \( d_0 \) se obtiene como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \left\langle f,\frac{1}{\sqrt{5}} \right\rangle_{L^{2}} = \int_{-2}^{3} x e^{-x} \, dx = \frac{-4 + e^5}{\sqrt{5} e^3}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_n \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_n = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \cos\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}}= \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \cos\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_m \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_m = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \sin\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}} = \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \sin\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, se puede aproximar la función f mediante los primeros 5, 10 y 20 términos de su desarrollo en serie de Fourier, empleando el siguiente código de python:&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Archivo:Fourier.gif|800px|thumb|Aproximación de Fourier de la función extendida &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt;]]&lt;br /&gt;
[[Archivo:Error_fourier.gif|800px|thumb|Error absoluto entre la función &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt; y su aproximación de Fourier]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Error_supremo.png|800px|thumb|Error en norma supremo de la aproximación para distintos valores de n]]&lt;br /&gt;
[[Archivo:Error_L2.png|800px|thumb|Error en norma L2 de la aproximación para distintos valores de n]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
from tqdm import tqdm&lt;br /&gt;
import sympy as sp&lt;br /&gt;
import math&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
n=10&lt;br /&gt;
&lt;br /&gt;
def calcular_aproximacion_fourier(n):&lt;br /&gt;
    e = 0&lt;br /&gt;
    l = 0&lt;br /&gt;
    x = sp.symbols('x')&lt;br /&gt;
    &lt;br /&gt;
    for i in tqdm(range(1, n)): &lt;br /&gt;
        integrand = (math.sqrt(2)/math.sqrt(5)) * x&lt;br /&gt;
        * sp.exp(-x) * sp.cos(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        integral_result = sp.integrate(integrand, (x, -2, 3))&lt;br /&gt;
        &lt;br /&gt;
        integrand2 = (math.sqrt(2)/math.sqrt(5)) * x &lt;br /&gt;
        * sp.exp(-x) * sp.sin(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        integral_result2 = sp.integrate(integrand2, (x, -2, 3))&lt;br /&gt;
        &lt;br /&gt;
        e += integral_result * (math.sqrt(2)/math.sqrt(5)) * &lt;br /&gt;
        sp.cos(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        l += integral_result2 * (math.sqrt(2)/math.sqrt(5)) * &lt;br /&gt;
        sp.sin(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
    &lt;br /&gt;
    d0 = -(4 + sp.exp(5)) / (math.sqrt(5) * sp.exp(3))&lt;br /&gt;
    f = d0 / math.sqrt(5) + e + l&lt;br /&gt;
    &lt;br /&gt;
    return sp.lambdify(x, f, &amp;quot;numpy&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Definir la función f(x) = x * exp(-x)&lt;br /&gt;
def f(x):&lt;br /&gt;
    return x * np.exp(-x)&lt;br /&gt;
&lt;br /&gt;
# Generar valores de x en el rango [-2, 3]&lt;br /&gt;
x_vals = np.linspace(-2, 3, 1000)&lt;br /&gt;
y_vals = f(x_vals)&lt;br /&gt;
&lt;br /&gt;
f_numeric=calcular_aproximacion_fourier(n)&lt;br /&gt;
# Aproximación de Fourier (f_numeric debe estar definida previamente)&lt;br /&gt;
y_fourier = f_numeric(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Calcular el error&lt;br /&gt;
error_vals = np.abs(y_vals - y_fourier)&lt;br /&gt;
&lt;br /&gt;
# Crear el gráfico de la función y su aproximación&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, y_vals, label=r'$f(x) = x e^{-x}$',linestyle='dashed', color='b')&lt;br /&gt;
plt.plot(x_vals, y_fourier, label=f&amp;quot;Aproximación n={n}&amp;quot;, color='r')&lt;br /&gt;
plt.axhline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.axvline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;f(x)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Comparación entre f(x) y su Aproximación de Fourier&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Gráfico del error&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, error_vals, label=&amp;quot;Error Absoluto&amp;quot;, color='g')&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error entre f(x) y su aproximación de Fourier&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show&lt;br /&gt;
&lt;br /&gt;
# Valores de n a evaluar&lt;br /&gt;
n_vals1 = np.linspace(10,200,20)&lt;br /&gt;
n_vals=[]&lt;br /&gt;
for i in range(20):&lt;br /&gt;
    n_vals.append(int(n_vals1[i]))&lt;br /&gt;
&lt;br /&gt;
error_L2_vals=[]&lt;br /&gt;
error_supremo_vals = []&lt;br /&gt;
&lt;br /&gt;
for i in n_vals:&lt;br /&gt;
    f_numeric = calcular_aproximacion_fourier(i)&lt;br /&gt;
    y_fourier = f_numeric(x_vals)&lt;br /&gt;
    error_L2 = np.sqrt(np.trapz(np.abs(y_vals - y_fourier)**2, x_vals))&lt;br /&gt;
    error_L2_vals.append(error_L2)&lt;br /&gt;
    error_supremo = np.sqrt(np.trapz(np.abs(y_vals - y_fourier)**2, x_vals))&lt;br /&gt;
    error_supremo_vals.append(error_supremo)&lt;br /&gt;
&lt;br /&gt;
# Graficar el error en norma L2 vs n&lt;br /&gt;
plt.figure(figsize=(6, 4))&lt;br /&gt;
plt.plot(n_vals, error_L2_vals, linestyle='-', color='r')&lt;br /&gt;
plt.xlabel(&amp;quot;n&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error L2&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error en Norma L2 para distintos valores de n&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Graficar el error en norma supremo vs n&lt;br /&gt;
plt.figure(figsize=(6, 4))&lt;br /&gt;
plt.plot(n_vals, error_supremo_vals, linestyle='-', color='r')&lt;br /&gt;
plt.xlabel(&amp;quot;n&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error norma supremo&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error en Norma supremo para distintos valores de n&amp;quot;)&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;
&lt;br /&gt;
=. Referencias =&lt;br /&gt;
* Sandro Salsa, Gianmaria Verzini. Partial Differential Equations in Action(Edición 4).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=84195</id>
		<title>Series de Fourier (Grupo PPAD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=84195"/>
				<updated>2025-02-23T20:07:08Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo PPAD). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Pablo Vidal Nacle, Pablo Maestro Fernández, Alex Heredero Santamaría, Diego Moñino Vizmanos}}&lt;br /&gt;
&lt;br /&gt;
=. Introducción=&lt;br /&gt;
Se define el espacio de Hilbert &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; como:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; L^2(a,b) = \left\{ f(x)| \int_{a}^{b} |f(x)|^{2} dx \lt \infty  \right\}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; a,b \in \mathbb{R} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; a \lt b &amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; es un espacio vectorial con producto escalar asociado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left\langle f,g \right\rangle_{L^{2}}=\int_{a}^{b} f(x)g(x) dx, \forall f,g \in L^{2}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
Esta construcción del espacio &amp;lt;math&amp;gt; L^{2} &amp;lt;/math&amp;gt; motiva plantear la posibilidad de definir una base numerable que permita expresar todos los elementos del espacio en función de los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
=. Base trigonométrica=&lt;br /&gt;
Tal y como se ha definido en la introducción, consideramos el espacio &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;. En éste se define la base numerable &amp;lt;math&amp;gt; \beta &amp;lt;/math&amp;gt; dada por los siguientes elementos:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(n x), \frac{1}{\sqrt{\pi}}sen(n x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
que se conoce como referencia de Fourier trigonométrica.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Archivo:PPAD1.jpeg|800px|thumb|Término constante de la base]]&lt;br /&gt;
[[Archivo:PPAD2.jpeg|800px|thumb|Primeros 10 elementos del coseno de la base]]&lt;br /&gt;
[[Archivo:PPAD3.jpeg|800px|thumb|Primeros 10 elementos del seno de la base]]&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;
# Definir el rango de x&lt;br /&gt;
x = np.linspace(-1, 1, 400)&lt;br /&gt;
&lt;br /&gt;
# Graficar el primer término de la base (constante 1/2)&lt;br /&gt;
plt.plot(x, np.full_like(x, 1/2), label=r'$\frac{1}{2}$', linewidth=2)&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos cos(nπx) y sin(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    plt.plot(x, np.cos(n * np.pi * x), label=fr'$\cos({n}\pi x)$')&lt;br /&gt;
    plt.plot(x, np.sin(n * np.pi * x), label=fr'$\sin({n}\pi x)$')&lt;br /&gt;
&lt;br /&gt;
# Configurar la gráfica&lt;br /&gt;
plt.axhline(0, color='black', linewidth=0.8)&lt;br /&gt;
plt.axvline(0, color='black', linewidth=0.8)&lt;br /&gt;
plt.legend(loc='upper right', fontsize='x-small', ncol=2)&lt;br /&gt;
plt.xlabel('x')&lt;br /&gt;
plt.ylabel('Valor de la función')&lt;br /&gt;
plt.title('Primeros 10 términos de la base trigonométrica')&lt;br /&gt;
plt.grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
# Definir el rango de x&lt;br /&gt;
x = np.linspace(-1, 1, 400)&lt;br /&gt;
&lt;br /&gt;
# Crear una figura con 3 subgráficos&lt;br /&gt;
fig, axes = plt.subplots(3, 1, figsize=(6, 12))&lt;br /&gt;
&lt;br /&gt;
# Graficar el primer término de la base (constante 1/2)&lt;br /&gt;
axes[0].plot(x, np.full_like(x, 1/2), label=r'$\frac{1}{2}$', linewidth=2)&lt;br /&gt;
axes[0].set_title('Término constante')&lt;br /&gt;
axes[0].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[0].legend()&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos cos(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    axes[1].plot(x, np.cos(n * np.pi * x), label=fr'$\cos({n}\pi x)$', linewidth=2)&lt;br /&gt;
axes[1].set_title('Funciones coseno')&lt;br /&gt;
axes[1].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[1].legend(fontsize='x-small', ncol=2)&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos sin(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    axes[2].plot(x, np.sin(n * np.pi * x), label=fr'$\sin({n}\pi x)$', linewidth=2)&lt;br /&gt;
axes[2].set_title('Funciones seno')&lt;br /&gt;
axes[2].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[2].legend(fontsize='x-small', ncol=2)&lt;br /&gt;
&lt;br /&gt;
# Ajustar diseño&lt;br /&gt;
plt.tight_layout()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=. Aproximación de una función por la base trigonométrica=&lt;br /&gt;
Sea &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(x) = xe^{-x}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
definida en el intervalo [-2,3], se busca aproximar f mediante la base trigonométrica del espacio &amp;lt;math&amp;gt;L^2(-2,3)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Consideramos el espacio de Hilbert \( L^2(- \pi, \pi) \) con el producto interno \( \langle \cdot, \cdot \rangle_{L^2} \). En este espacio tomamos la base de Fourier trigonométrica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(nx), \frac{1}{\sqrt{\pi}}sen(nx) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si consideramos ahora el espacio \( L^2(a, b) \), buscamos una base ortonormal (referencia de Fourier) en este espacio. Para ello, hacemos el cambio de variable:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; h(x) = \frac{2\pi}{b-a} (x - a) - \pi, \quad x \in [a, b] &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta manera, \( h(x) \in [-\pi, \pi] \), lo que permite trasladar la base ortonormal del espacio \( L^2(- \pi, \pi) \) al nuevo intervalo \( [a, b] \).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta forma, obtenemos la base de Fourier de \( L^2(a,b) \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{b-a}}, \frac{\sqrt{2}}{\sqrt{b-a}} \cos\left( n \left( \frac{2\pi (x-a)}{b-a} - \pi \right) \right), \frac{\sqrt{2}}{\sqrt{b-a}} \sin\left( n \left( \frac{2\pi (x-a)}{b-a} - \pi \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para preservar la ortonormalidad en \( L^2(a,b) \), los senos y cosenos han sido normalizados con el factor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{\sqrt{2}}{\sqrt{b-a}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para los términos trigonométricos.&lt;br /&gt;
&lt;br /&gt;
Una función f puede escribirse entonces:&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=0}^{\infty} \frac{\sqrt{2}}{\sqrt{b-a}} d_n \cos(n h(x)) + \sum_{n=0}^{\infty} \frac{\sqrt{2}}{\sqrt{b-a}} c_n \sin(n h(x))&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En &amp;lt;math&amp;gt; L^2(-2,3) &amp;lt;/math&amp;gt;, nos queda la base:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{5}}, \frac{\sqrt{2}}{\sqrt{5}} \cos\left( n \left( \frac{2\pi x - \pi}{5} \right) \right), \frac{\sqrt{2}}{\sqrt{5}} \sin\left( n \left( \frac{2\pi x - \pi}{5} \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sea la función \( f(x) = x e^{-x} \). Se verifica que \( f(x) \in L^2(-2,3) \), pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\int_{-2}^{3} x^2 e^{-2x} \, dx = \frac{5(e^{10}-5)}{4 e^6}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que \( f(x) \) es continua y satisface la condición de Dirichlet, su desarrollo en serie de Fourier converge a la función en los puntos de continuidad y en los extremos. Así, se tiene:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f \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} d_m \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;
Calculemos ahora los coeficientes de la serie de Fourier&lt;br /&gt;
&lt;br /&gt;
El coeficiente \( d_0 \) se obtiene como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \left\langle f,\frac{1}{\sqrt{5}} \right\rangle_{L^{2}} = \int_{-2}^{3} x e^{-x} \, dx = \frac{-4 + e^5}{\sqrt{5} e^3}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_n \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_n = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \cos\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}}= \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \cos\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_m \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_m = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \sin\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}} = \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \sin\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, se puede aproximar la función f mediante los primeros 5, 10 y 20 términos de su desarrollo en serie de Fourier, empleando el siguiente código de python:&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Archivo:Fourier.gif|800px|thumb|Aproximación de Fourier de la función extendida &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt;]]&lt;br /&gt;
[[Archivo:Error_fourier.gif|800px|thumb|Error absoluto entre la función &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt; y su aproximación de Fourier]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Error_supremo.png|800px|thumb|Error en norma supremo de la aproximación para distintos valores de n]]&lt;br /&gt;
[[Archivo:Error_L2.png|800px|thumb|Error en norma L2 de la aproximación para distintos valores de n]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
from tqdm import tqdm&lt;br /&gt;
import sympy as sp&lt;br /&gt;
import math&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
n=10&lt;br /&gt;
&lt;br /&gt;
def calcular_aproximacion_fourier(n):&lt;br /&gt;
    e = 0&lt;br /&gt;
    l = 0&lt;br /&gt;
    x = sp.symbols('x')&lt;br /&gt;
    &lt;br /&gt;
    for i in tqdm(range(1, n)): &lt;br /&gt;
        integrand = (math.sqrt(2)/math.sqrt(5)) * x&lt;br /&gt;
        * sp.exp(-x) * sp.cos(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        integral_result = sp.integrate(integrand, (x, -2, 3))&lt;br /&gt;
        &lt;br /&gt;
        integrand2 = (math.sqrt(2)/math.sqrt(5)) * x &lt;br /&gt;
        * sp.exp(-x) * sp.sin(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        integral_result2 = sp.integrate(integrand2, (x, -2, 3))&lt;br /&gt;
        &lt;br /&gt;
        e += integral_result * (math.sqrt(2)/math.sqrt(5)) * &lt;br /&gt;
        sp.cos(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        l += integral_result2 * (math.sqrt(2)/math.sqrt(5)) * &lt;br /&gt;
        sp.sin(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
    &lt;br /&gt;
    d0 = -(4 + sp.exp(5)) / (math.sqrt(5) * sp.exp(3))&lt;br /&gt;
    f = d0 / math.sqrt(5) + e + l&lt;br /&gt;
    &lt;br /&gt;
    return sp.lambdify(x, f, &amp;quot;numpy&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Definir la función f(x) = x * exp(-x)&lt;br /&gt;
def f(x):&lt;br /&gt;
    return x * np.exp(-x)&lt;br /&gt;
&lt;br /&gt;
# Generar valores de x en el rango [-2, 3]&lt;br /&gt;
x_vals = np.linspace(-2, 3, 1000)&lt;br /&gt;
y_vals = f(x_vals)&lt;br /&gt;
&lt;br /&gt;
f_numeric=calcular_aproximacion_fourier(n)&lt;br /&gt;
# Aproximación de Fourier (f_numeric debe estar definida previamente)&lt;br /&gt;
y_fourier = f_numeric(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Calcular el error&lt;br /&gt;
error_vals = np.abs(y_vals - y_fourier)&lt;br /&gt;
&lt;br /&gt;
# Crear el gráfico de la función y su aproximación&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, y_vals, label=r'$f(x) = x e^{-x}$',linestyle='dashed', color='b')&lt;br /&gt;
plt.plot(x_vals, y_fourier, label=f&amp;quot;Aproximación n={n}&amp;quot;, color='r')&lt;br /&gt;
plt.axhline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.axvline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;f(x)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Comparación entre f(x) y su Aproximación de Fourier&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Gráfico del error&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, error_vals, label=&amp;quot;Error Absoluto&amp;quot;, color='g')&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error entre f(x) y su aproximación de Fourier&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show&lt;br /&gt;
&lt;br /&gt;
# Valores de n a evaluar&lt;br /&gt;
n_vals1 = np.linspace(10,200,20)&lt;br /&gt;
n_vals=[]&lt;br /&gt;
for i in range(20):&lt;br /&gt;
    n_vals.append(int(n_vals1[i]))&lt;br /&gt;
&lt;br /&gt;
error_L2_vals=[]&lt;br /&gt;
error_supremo_vals = []&lt;br /&gt;
&lt;br /&gt;
for i in n_vals:&lt;br /&gt;
    f_numeric = calcular_aproximacion_fourier(i)&lt;br /&gt;
    y_fourier = f_numeric(x_vals)&lt;br /&gt;
    error_L2 = np.sqrt(np.trapz(np.abs(y_vals - y_fourier)**2, x_vals))&lt;br /&gt;
    error_L2_vals.append(error_L2)&lt;br /&gt;
    error_supremo = np.sqrt(np.trapz(np.abs(y_vals - y_fourier)**2, x_vals))&lt;br /&gt;
    error_supremo_vals.append(error_supremo)&lt;br /&gt;
&lt;br /&gt;
# Graficar el error en norma L2 vs n&lt;br /&gt;
plt.figure(figsize=(6, 4))&lt;br /&gt;
plt.plot(n_vals, error_L2_vals, linestyle='-', color='r')&lt;br /&gt;
plt.xlabel(&amp;quot;n&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error L2&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error en Norma L2 para distintos valores de n&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Graficar el error en norma supremo vs n&lt;br /&gt;
plt.figure(figsize=(6, 4))&lt;br /&gt;
plt.plot(n_vals, error_supremo_vals, linestyle='-', color='r')&lt;br /&gt;
plt.xlabel(&amp;quot;n&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error norma supremo&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error en Norma supremo para distintos valores de n&amp;quot;)&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;
&lt;br /&gt;
=. Referencias =&lt;br /&gt;
* Sandro Salsa, Gianmaria Verzini. Partial Differential Equations in Action(Edición 4).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=84194</id>
		<title>Series de Fourier (Grupo PPAD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=84194"/>
				<updated>2025-02-23T19:58:39Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo PPAD). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Pablo Vidal Nacle, Pablo Maestro Fernández, Alex Heredero Santamaría, Diego Moñino Vizmanos}}&lt;br /&gt;
&lt;br /&gt;
=. Introducción=&lt;br /&gt;
Se define el espacio de Hilbert &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; como:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; L^2(a,b) = \left\{ f(x)| \int_{a}^{b} |f(x)|^{2} dx \lt \infty  \right\}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; a,b \in \mathbb{R} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; a \lt b &amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; es un espacio vectorial con producto escalar asociado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left\langle f,g \right\rangle_{L^{2}}=\int_{a}^{b} f(x)g(x) dx, \forall f,g \in L^{2}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
Esta construcción del espacio &amp;lt;math&amp;gt; L^{2} &amp;lt;/math&amp;gt; motiva plantear la posibilidad de definir una base numerable que permita expresar todos los elementos del espacio en función de los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
=. Base trigonométrica=&lt;br /&gt;
Tal y como se ha definido en la introducción, consideramos el espacio &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;. En éste se define la base numerable &amp;lt;math&amp;gt; \beta &amp;lt;/math&amp;gt; dada por los siguientes elementos:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(n x), \frac{1}{\sqrt{\pi}}sen(n x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
que se conoce como referencia de Fourier trigonométrica.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Archivo:PPAD1.jpeg|800px|thumb|Término constante de la base]]&lt;br /&gt;
[[Archivo:PPAD2.jpeg|800px|thumb|Primeros 10 elementos del coseno de la base]]&lt;br /&gt;
[[Archivo:PPAD3.jpeg|800px|thumb|Primeros 10 elementos del seno de la base]]&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;
# Definir el rango de x&lt;br /&gt;
x = np.linspace(-1, 1, 400)&lt;br /&gt;
&lt;br /&gt;
# Graficar el primer término de la base (constante 1/2)&lt;br /&gt;
plt.plot(x, np.full_like(x, 1/2), label=r'$\frac{1}{2}$', linewidth=2)&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos cos(nπx) y sin(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    plt.plot(x, np.cos(n * np.pi * x), label=fr'$\cos({n}\pi x)$')&lt;br /&gt;
    plt.plot(x, np.sin(n * np.pi * x), label=fr'$\sin({n}\pi x)$')&lt;br /&gt;
&lt;br /&gt;
# Configurar la gráfica&lt;br /&gt;
plt.axhline(0, color='black', linewidth=0.8)&lt;br /&gt;
plt.axvline(0, color='black', linewidth=0.8)&lt;br /&gt;
plt.legend(loc='upper right', fontsize='x-small', ncol=2)&lt;br /&gt;
plt.xlabel('x')&lt;br /&gt;
plt.ylabel('Valor de la función')&lt;br /&gt;
plt.title('Primeros 10 términos de la base trigonométrica')&lt;br /&gt;
plt.grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
# Definir el rango de x&lt;br /&gt;
x = np.linspace(-1, 1, 400)&lt;br /&gt;
&lt;br /&gt;
# Crear una figura con 3 subgráficos&lt;br /&gt;
fig, axes = plt.subplots(3, 1, figsize=(6, 12))&lt;br /&gt;
&lt;br /&gt;
# Graficar el primer término de la base (constante 1/2)&lt;br /&gt;
axes[0].plot(x, np.full_like(x, 1/2), label=r'$\frac{1}{2}$', linewidth=2)&lt;br /&gt;
axes[0].set_title('Término constante')&lt;br /&gt;
axes[0].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[0].legend()&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos cos(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    axes[1].plot(x, np.cos(n * np.pi * x), label=fr'$\cos({n}\pi x)$', linewidth=2)&lt;br /&gt;
axes[1].set_title('Funciones coseno')&lt;br /&gt;
axes[1].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[1].legend(fontsize='x-small', ncol=2)&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos sin(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    axes[2].plot(x, np.sin(n * np.pi * x), label=fr'$\sin({n}\pi x)$', linewidth=2)&lt;br /&gt;
axes[2].set_title('Funciones seno')&lt;br /&gt;
axes[2].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[2].legend(fontsize='x-small', ncol=2)&lt;br /&gt;
&lt;br /&gt;
# Ajustar diseño&lt;br /&gt;
plt.tight_layout()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=. Aproximación de una función por la base trigonométrica=&lt;br /&gt;
Sea &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(x) = xe^{-x}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
definida en el intervalo [-2,3], se busca aproximar f mediante la base trigonométrica del espacio &amp;lt;math&amp;gt;L^2(-2,3)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Consideramos el espacio de Hilbert \( L^2(- \pi, \pi) \) con el producto interno \( \langle \cdot, \cdot \rangle_{L^2} \). En este espacio tomamos la base de Fourier trigonométrica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(nx), \frac{1}{\sqrt{\pi}}sen(nx) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si consideramos ahora el espacio \( L^2(a, b) \), buscamos una base ortonormal (referencia de Fourier) en este espacio. Para ello, hacemos el cambio de variable:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; h(x) = \frac{2\pi}{b-a} (x - a) - \pi, \quad x \in [a, b] &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta manera, \( h(x) \in [-\pi, \pi] \), lo que permite trasladar la base ortonormal del espacio \( L^2(- \pi, \pi) \) al nuevo intervalo \( [a, b] \).&lt;br /&gt;
&lt;br /&gt;
Bajo este cambio de variable, una función \( f(x) \) en \( L^2(a,b) \) se puede expresar como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) = d_0 + \sum_{n=0}^{\infty} d_n \cos(n h(x)) + \sum_{n=0}^{\infty} c_n \sin(n h(x))&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde el coeficiente \( d_0 \) es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \int_a^b \frac{f(x)}{\sqrt{b-a}} \, dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta forma, obtenemos la base de Fourier de \( L^2(a,b) \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{b-a}}, \frac{\sqrt{2}}{\sqrt{b-a}} \cos\left( n \left( \frac{2\pi (x-a)}{b-a} - \pi \right) \right), \frac{\sqrt{2}}{\sqrt{b-a}} \sin\left( n \left( \frac{2\pi (x-a)}{b-a} - \pi \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para preservar la ortonormalidad en \( L^2(a,b) \), los senos y cosenos han sido normalizados con el factor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{\sqrt{2}}{\sqrt{b-a}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para los términos trigonométricos.&lt;br /&gt;
&lt;br /&gt;
En &amp;lt;math&amp;gt; L^2(-2,3) &amp;lt;/math&amp;gt;, nos queda la base:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{5}}, \frac{\sqrt{2}}{\sqrt{5}} \cos\left( n \left( \frac{2\pi x - \pi}{5} \right) \right), \frac{\sqrt{2}}{\sqrt{5}} \sin\left( n \left( \frac{2\pi x - \pi}{5} \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sea la función \( f(x) = x e^{-x} \). Se verifica que \( f(x) \in L^2(-2,3) \), pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\int_{-2}^{3} x^2 e^{-2x} \, dx = \frac{5(e^{10}-5)}{4 e^6}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que \( f(x) \) es continua y satisface la condición de Dirichlet, su desarrollo en serie de Fourier converge a la función en los puntos de continuidad y en los extremos. Así, se tiene:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f \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} d_m \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;
Calculemos ahora los coeficientes de la serie de Fourier&lt;br /&gt;
&lt;br /&gt;
El coeficiente \( d_0 \) se obtiene como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \left\langle f,\frac{1}{\sqrt{5}} \right\rangle_{L^{2}} = \int_{-2}^{3} x e^{-x} \, dx = \frac{-4 + e^5}{\sqrt{5} e^3}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_n \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_n = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \cos\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}}= \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \cos\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_m \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_m = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \sin\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}} = \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \sin\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, se puede aproximar la función f mediante los primeros 5, 10 y 20 términos de su desarrollo en serie de Fourier, empleando el siguiente código de python:&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Archivo:Fourier.gif|800px|thumb|Aproximación de Fourier de la función extendida &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt;]]&lt;br /&gt;
[[Archivo:Error_fourier.gif|800px|thumb|Error absoluto entre la función &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt; y su aproximación de Fourier]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Error_supremo.png|800px|thumb|Error en norma supremo de la aproximación para distintos valores de n]]&lt;br /&gt;
[[Archivo:Error_L2.png|800px|thumb|Error en norma L2 de la aproximación para distintos valores de n]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
from tqdm import tqdm&lt;br /&gt;
import sympy as sp&lt;br /&gt;
import math&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
n=10&lt;br /&gt;
&lt;br /&gt;
def calcular_aproximacion_fourier(n):&lt;br /&gt;
    e = 0&lt;br /&gt;
    l = 0&lt;br /&gt;
    x = sp.symbols('x')&lt;br /&gt;
    &lt;br /&gt;
    for i in tqdm(range(1, n)): &lt;br /&gt;
        integrand = (math.sqrt(2)/math.sqrt(5)) * x&lt;br /&gt;
        * sp.exp(-x) * sp.cos(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        integral_result = sp.integrate(integrand, (x, -2, 3))&lt;br /&gt;
        &lt;br /&gt;
        integrand2 = (math.sqrt(2)/math.sqrt(5)) * x &lt;br /&gt;
        * sp.exp(-x) * sp.sin(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        integral_result2 = sp.integrate(integrand2, (x, -2, 3))&lt;br /&gt;
        &lt;br /&gt;
        e += integral_result * (math.sqrt(2)/math.sqrt(5)) * &lt;br /&gt;
        sp.cos(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        l += integral_result2 * (math.sqrt(2)/math.sqrt(5)) * &lt;br /&gt;
        sp.sin(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
    &lt;br /&gt;
    d0 = -(4 + sp.exp(5)) / (math.sqrt(5) * sp.exp(3))&lt;br /&gt;
    f = d0 / math.sqrt(5) + e + l&lt;br /&gt;
    &lt;br /&gt;
    return sp.lambdify(x, f, &amp;quot;numpy&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Definir la función f(x) = x * exp(-x)&lt;br /&gt;
def f(x):&lt;br /&gt;
    return x * np.exp(-x)&lt;br /&gt;
&lt;br /&gt;
# Generar valores de x en el rango [-2, 3]&lt;br /&gt;
x_vals = np.linspace(-2, 3, 1000)&lt;br /&gt;
y_vals = f(x_vals)&lt;br /&gt;
&lt;br /&gt;
f_numeric=calcular_aproximacion_fourier(n)&lt;br /&gt;
# Aproximación de Fourier (f_numeric debe estar definida previamente)&lt;br /&gt;
y_fourier = f_numeric(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Calcular el error&lt;br /&gt;
error_vals = np.abs(y_vals - y_fourier)&lt;br /&gt;
&lt;br /&gt;
# Crear el gráfico de la función y su aproximación&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, y_vals, label=r'$f(x) = x e^{-x}$',linestyle='dashed', color='b')&lt;br /&gt;
plt.plot(x_vals, y_fourier, label=f&amp;quot;Aproximación n={n}&amp;quot;, color='r')&lt;br /&gt;
plt.axhline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.axvline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;f(x)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Comparación entre f(x) y su Aproximación de Fourier&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Gráfico del error&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, error_vals, label=&amp;quot;Error Absoluto&amp;quot;, color='g')&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error entre f(x) y su aproximación de Fourier&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show&lt;br /&gt;
&lt;br /&gt;
# Valores de n a evaluar&lt;br /&gt;
n_vals1 = np.linspace(10,200,20)&lt;br /&gt;
n_vals=[]&lt;br /&gt;
for i in range(20):&lt;br /&gt;
    n_vals.append(int(n_vals1[i]))&lt;br /&gt;
&lt;br /&gt;
error_L2_vals=[]&lt;br /&gt;
error_supremo_vals = []&lt;br /&gt;
&lt;br /&gt;
for i in n_vals:&lt;br /&gt;
    f_numeric = calcular_aproximacion_fourier(i)&lt;br /&gt;
    y_fourier = f_numeric(x_vals)&lt;br /&gt;
    error_L2 = np.sqrt(np.trapz(np.abs(y_vals - y_fourier)**2, x_vals))&lt;br /&gt;
    error_L2_vals.append(error_L2)&lt;br /&gt;
    error_supremo = np.sqrt(np.trapz(np.abs(y_vals - y_fourier)**2, x_vals))&lt;br /&gt;
    error_supremo_vals.append(error_supremo)&lt;br /&gt;
&lt;br /&gt;
# Graficar el error en norma L2 vs n&lt;br /&gt;
plt.figure(figsize=(6, 4))&lt;br /&gt;
plt.plot(n_vals, error_L2_vals, linestyle='-', color='r')&lt;br /&gt;
plt.xlabel(&amp;quot;n&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error L2&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error en Norma L2 para distintos valores de n&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Graficar el error en norma supremo vs n&lt;br /&gt;
plt.figure(figsize=(6, 4))&lt;br /&gt;
plt.plot(n_vals, error_supremo_vals, linestyle='-', color='r')&lt;br /&gt;
plt.xlabel(&amp;quot;n&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error norma supremo&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error en Norma supremo para distintos valores de n&amp;quot;)&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;
&lt;br /&gt;
=. Referencias =&lt;br /&gt;
* Sandro Salsa, Gianmaria Verzini. Partial Differential Equations in Action(Edición 4).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=84193</id>
		<title>Series de Fourier (Grupo PPAD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=84193"/>
				<updated>2025-02-23T19:58:04Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo PPAD). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Pablo Vidal Nacle, Pablo Maestro Fernández, Alex Heredero Santamaría, Diego Moñino Vizmanos}}&lt;br /&gt;
&lt;br /&gt;
=. Introducción=&lt;br /&gt;
Se define el espacio de Hilbert &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; como:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; L^2(a,b) = \left\{ f(x)| \int_{a}^{b} |f(x)|^{2} dx \lt \infty  \right\}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; a,b \in \mathbb{R} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; a \lt b &amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; es un espacio vectorial con producto escalar asociado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left\langle f,g \right\rangle_{L^{2}}=\int_{a}^{b} f(x)g(x) dx, \forall f,g \in L^{2}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
Esta construcción del espacio &amp;lt;math&amp;gt; L^{2} &amp;lt;/math&amp;gt; motiva plantear la posibilidad de definir una base numerable que permita expresar todos los elementos del espacio en función de los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
=. Base trigonométrica=&lt;br /&gt;
Tal y como se ha definido en la introducción, consideramos el espacio &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;. En éste se define la base numerable &amp;lt;math&amp;gt; \beta &amp;lt;/math&amp;gt; dada por los siguientes elementos:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(n x), \frac{1}{\sqrt{\pi}}sen(n x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
que se conoce como referencia de Fourier trigonométrica.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Archivo:PPAD1.jpeg|800px|thumb|Término constante de la base]]&lt;br /&gt;
[[Archivo:PPAD2.jpeg|800px|thumb|Primeros 10 elementos del coseno de la base]]&lt;br /&gt;
[[Archivo:PPAD3.jpeg|800px|thumb|Primeros 10 elementos del seno de la base]]&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;
# Definir el rango de x&lt;br /&gt;
x = np.linspace(-1, 1, 400)&lt;br /&gt;
&lt;br /&gt;
# Graficar el primer término de la base (constante 1/2)&lt;br /&gt;
plt.plot(x, np.full_like(x, 1/2), label=r'$\frac{1}{2}$', linewidth=2)&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos cos(nπx) y sin(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    plt.plot(x, np.cos(n * np.pi * x), label=fr'$\cos({n}\pi x)$')&lt;br /&gt;
    plt.plot(x, np.sin(n * np.pi * x), label=fr'$\sin({n}\pi x)$')&lt;br /&gt;
&lt;br /&gt;
# Configurar la gráfica&lt;br /&gt;
plt.axhline(0, color='black', linewidth=0.8)&lt;br /&gt;
plt.axvline(0, color='black', linewidth=0.8)&lt;br /&gt;
plt.legend(loc='upper right', fontsize='x-small', ncol=2)&lt;br /&gt;
plt.xlabel('x')&lt;br /&gt;
plt.ylabel('Valor de la función')&lt;br /&gt;
plt.title('Primeros 10 términos de la base trigonométrica')&lt;br /&gt;
plt.grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
# Definir el rango de x&lt;br /&gt;
x = np.linspace(-1, 1, 400)&lt;br /&gt;
&lt;br /&gt;
# Crear una figura con 3 subgráficos&lt;br /&gt;
fig, axes = plt.subplots(3, 1, figsize=(6, 12))&lt;br /&gt;
&lt;br /&gt;
# Graficar el primer término de la base (constante 1/2)&lt;br /&gt;
axes[0].plot(x, np.full_like(x, 1/2), label=r'$\frac{1}{2}$', linewidth=2)&lt;br /&gt;
axes[0].set_title('Término constante')&lt;br /&gt;
axes[0].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[0].legend()&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos cos(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    axes[1].plot(x, np.cos(n * np.pi * x), label=fr'$\cos({n}\pi x)$', linewidth=2)&lt;br /&gt;
axes[1].set_title('Funciones coseno')&lt;br /&gt;
axes[1].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[1].legend(fontsize='x-small', ncol=2)&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos sin(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    axes[2].plot(x, np.sin(n * np.pi * x), label=fr'$\sin({n}\pi x)$', linewidth=2)&lt;br /&gt;
axes[2].set_title('Funciones seno')&lt;br /&gt;
axes[2].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[2].legend(fontsize='x-small', ncol=2)&lt;br /&gt;
&lt;br /&gt;
# Ajustar diseño&lt;br /&gt;
plt.tight_layout()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=. Aproximación de una función por la base trigonométrica=&lt;br /&gt;
Sea &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(x) = xe^{-x}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
definida en el intervalo [-2,3], se busca aproximar f mediante la base trigonométrica del espacio &amp;lt;math&amp;gt;L^2(-2,3)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Consideramos el espacio de Hilbert \( L^2(- \pi, \pi) \) con el producto interno \( \langle \cdot, \cdot \rangle_{L^2} \). En este espacio tomamos la base de Fourier trigonométrica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(nx), \frac{1}{\sqrt{\pi}}sen(nx) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si consideramos ahora el espacio \( L^2(a, b) \), buscamos una base ortonormal (referencia de Fourier) en este espacio. Para ello, hacemos el cambio de variable:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; h(x) = \frac{2\pi}{b-a} (x - a) - \pi, \quad x \in [a, b] &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta manera, \( h(x) \in [-\pi, \pi] \), lo que permite trasladar la base ortonormal del espacio \( L^2(- \pi, \pi) \) al nuevo intervalo \( [a, b] \).&lt;br /&gt;
&lt;br /&gt;
Bajo este cambio de variable, una función \( f(x) \) en \( L^2(a,b) \) se puede expresar como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) = d_0 + \sum_{n=0}^{\infty} d_n \cos(n h(x)) + \sum_{n=0}^{\infty} c_n \sin(n h(x))&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde el coeficiente \( d_0 \) es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \int_a^b \frac{f(x)}{\sqrt{b-a}} \, dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para que su norma sea 1, pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\left\langle \frac{1}{\sqrt{b-a}}, \frac{1}{\sqrt{b-a}} \right\rangle = \int_a^b \frac{1}{b-a} \, dx = 1.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, obtenemos la base de Fourier de \( L^2(a,b) \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{b-a}}, \frac{\sqrt{2}}{\sqrt{b-a}} \cos\left( n \left( \frac{2\pi (x-a)}{b-a} - \pi \right) \right), \frac{\sqrt{2}}{\sqrt{b-a}} \sin\left( n \left( \frac{2\pi (x-a)}{b-a} - \pi \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para preservar la ortonormalidad en \( L^2(a,b) \), los senos y cosenos han sido normalizados con el factor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{\sqrt{2}}{\sqrt{b-a}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para los términos trigonométricos.&lt;br /&gt;
&lt;br /&gt;
En &amp;lt;math&amp;gt; L^2(-2,3) &amp;lt;/math&amp;gt;, nos queda la base:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{5}}, \frac{\sqrt{2}}{\sqrt{5}} \cos\left( n \left( \frac{2\pi x - \pi}{5} \right) \right), \frac{\sqrt{2}}{\sqrt{5}} \sin\left( n \left( \frac{2\pi x - \pi}{5} \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sea la función \( f(x) = x e^{-x} \). Se verifica que \( f(x) \in L^2(-2,3) \), pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\int_{-2}^{3} x^2 e^{-2x} \, dx = \frac{5(e^{10}-5)}{4 e^6}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que \( f(x) \) es continua y satisface la condición de Dirichlet, su desarrollo en serie de Fourier converge a la función en los puntos de continuidad y en los extremos. Así, se tiene:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f \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} d_m \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;
Calculemos ahora los coeficientes de la serie de Fourier&lt;br /&gt;
&lt;br /&gt;
El coeficiente \( d_0 \) se obtiene como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \left\langle f,\frac{1}{\sqrt{5}} \right\rangle_{L^{2}} = \int_{-2}^{3} x e^{-x} \, dx = \frac{-4 + e^5}{\sqrt{5} e^3}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_n \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_n = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \cos\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}}= \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \cos\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_m \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_m = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \sin\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}} = \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \sin\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, se puede aproximar la función f mediante los primeros 5, 10 y 20 términos de su desarrollo en serie de Fourier, empleando el siguiente código de python:&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Archivo:Fourier.gif|800px|thumb|Aproximación de Fourier de la función extendida &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt;]]&lt;br /&gt;
[[Archivo:Error_fourier.gif|800px|thumb|Error absoluto entre la función &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt; y su aproximación de Fourier]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Error_supremo.png|800px|thumb|Error en norma supremo de la aproximación para distintos valores de n]]&lt;br /&gt;
[[Archivo:Error_L2.png|800px|thumb|Error en norma L2 de la aproximación para distintos valores de n]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
from tqdm import tqdm&lt;br /&gt;
import sympy as sp&lt;br /&gt;
import math&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
n=10&lt;br /&gt;
&lt;br /&gt;
def calcular_aproximacion_fourier(n):&lt;br /&gt;
    e = 0&lt;br /&gt;
    l = 0&lt;br /&gt;
    x = sp.symbols('x')&lt;br /&gt;
    &lt;br /&gt;
    for i in tqdm(range(1, n)): &lt;br /&gt;
        integrand = (math.sqrt(2)/math.sqrt(5)) * x&lt;br /&gt;
        * sp.exp(-x) * sp.cos(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        integral_result = sp.integrate(integrand, (x, -2, 3))&lt;br /&gt;
        &lt;br /&gt;
        integrand2 = (math.sqrt(2)/math.sqrt(5)) * x &lt;br /&gt;
        * sp.exp(-x) * sp.sin(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        integral_result2 = sp.integrate(integrand2, (x, -2, 3))&lt;br /&gt;
        &lt;br /&gt;
        e += integral_result * (math.sqrt(2)/math.sqrt(5)) * &lt;br /&gt;
        sp.cos(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        l += integral_result2 * (math.sqrt(2)/math.sqrt(5)) * &lt;br /&gt;
        sp.sin(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
    &lt;br /&gt;
    d0 = -(4 + sp.exp(5)) / (math.sqrt(5) * sp.exp(3))&lt;br /&gt;
    f = d0 / math.sqrt(5) + e + l&lt;br /&gt;
    &lt;br /&gt;
    return sp.lambdify(x, f, &amp;quot;numpy&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Definir la función f(x) = x * exp(-x)&lt;br /&gt;
def f(x):&lt;br /&gt;
    return x * np.exp(-x)&lt;br /&gt;
&lt;br /&gt;
# Generar valores de x en el rango [-2, 3]&lt;br /&gt;
x_vals = np.linspace(-2, 3, 1000)&lt;br /&gt;
y_vals = f(x_vals)&lt;br /&gt;
&lt;br /&gt;
f_numeric=calcular_aproximacion_fourier(n)&lt;br /&gt;
# Aproximación de Fourier (f_numeric debe estar definida previamente)&lt;br /&gt;
y_fourier = f_numeric(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Calcular el error&lt;br /&gt;
error_vals = np.abs(y_vals - y_fourier)&lt;br /&gt;
&lt;br /&gt;
# Crear el gráfico de la función y su aproximación&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, y_vals, label=r'$f(x) = x e^{-x}$',linestyle='dashed', color='b')&lt;br /&gt;
plt.plot(x_vals, y_fourier, label=f&amp;quot;Aproximación n={n}&amp;quot;, color='r')&lt;br /&gt;
plt.axhline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.axvline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;f(x)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Comparación entre f(x) y su Aproximación de Fourier&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Gráfico del error&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, error_vals, label=&amp;quot;Error Absoluto&amp;quot;, color='g')&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error entre f(x) y su aproximación de Fourier&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show&lt;br /&gt;
&lt;br /&gt;
# Valores de n a evaluar&lt;br /&gt;
n_vals1 = np.linspace(10,200,20)&lt;br /&gt;
n_vals=[]&lt;br /&gt;
for i in range(20):&lt;br /&gt;
    n_vals.append(int(n_vals1[i]))&lt;br /&gt;
&lt;br /&gt;
error_L2_vals=[]&lt;br /&gt;
error_supremo_vals = []&lt;br /&gt;
&lt;br /&gt;
for i in n_vals:&lt;br /&gt;
    f_numeric = calcular_aproximacion_fourier(i)&lt;br /&gt;
    y_fourier = f_numeric(x_vals)&lt;br /&gt;
    error_L2 = np.sqrt(np.trapz(np.abs(y_vals - y_fourier)**2, x_vals))&lt;br /&gt;
    error_L2_vals.append(error_L2)&lt;br /&gt;
    error_supremo = np.sqrt(np.trapz(np.abs(y_vals - y_fourier)**2, x_vals))&lt;br /&gt;
    error_supremo_vals.append(error_supremo)&lt;br /&gt;
&lt;br /&gt;
# Graficar el error en norma L2 vs n&lt;br /&gt;
plt.figure(figsize=(6, 4))&lt;br /&gt;
plt.plot(n_vals, error_L2_vals, linestyle='-', color='r')&lt;br /&gt;
plt.xlabel(&amp;quot;n&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error L2&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error en Norma L2 para distintos valores de n&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Graficar el error en norma supremo vs n&lt;br /&gt;
plt.figure(figsize=(6, 4))&lt;br /&gt;
plt.plot(n_vals, error_supremo_vals, linestyle='-', color='r')&lt;br /&gt;
plt.xlabel(&amp;quot;n&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error norma supremo&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error en Norma supremo para distintos valores de n&amp;quot;)&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;
&lt;br /&gt;
=. Referencias =&lt;br /&gt;
* Sandro Salsa, Gianmaria Verzini. Partial Differential Equations in Action(Edición 4).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=84192</id>
		<title>Series de Fourier (Grupo PPAD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=84192"/>
				<updated>2025-02-23T19:56:41Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo PPAD). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Pablo Vidal Nacle, Pablo Maestro Fernández, Alex Heredero Santamaría, Diego Moñino Vizmanos}}&lt;br /&gt;
&lt;br /&gt;
=. Introducción=&lt;br /&gt;
Se define el espacio de Hilbert &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; como:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; L^2(a,b) = \left\{ f(x)| \int_{a}^{b} |f(x)|^{2} dx \lt \infty  \right\}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; a,b \in \mathbb{R} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; a \lt b &amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; es un espacio vectorial con producto escalar asociado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left\langle f,g \right\rangle_{L^{2}}=\int_{a}^{b} f(x)g(x) dx, \forall f,g \in L^{2}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
Esta construcción del espacio &amp;lt;math&amp;gt; L^{2} &amp;lt;/math&amp;gt; motiva plantear la posibilidad de definir una base numerable que permita expresar todos los elementos del espacio en función de los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
=. Base trigonométrica=&lt;br /&gt;
Tal y como se ha definido en la introducción, consideramos el espacio &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;. En éste se define la base numerable &amp;lt;math&amp;gt; \beta &amp;lt;/math&amp;gt; dada por los siguientes elementos:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(n x), \frac{1}{\sqrt{\pi}}sen(n x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
que se conoce como referencia de Fourier trigonométrica.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Archivo:PPAD1.jpeg|800px|thumb|Término constante de la base]]&lt;br /&gt;
[[Archivo:PPAD2.jpeg|800px|thumb|Primeros 10 elementos del coseno de la base]]&lt;br /&gt;
[[Archivo:PPAD3.jpeg|800px|thumb|Primeros 10 elementos del seno de la base]]&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;
# Definir el rango de x&lt;br /&gt;
x = np.linspace(-1, 1, 400)&lt;br /&gt;
&lt;br /&gt;
# Graficar el primer término de la base (constante 1/2)&lt;br /&gt;
plt.plot(x, np.full_like(x, 1/2), label=r'$\frac{1}{2}$', linewidth=2)&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos cos(nπx) y sin(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    plt.plot(x, np.cos(n * np.pi * x), label=fr'$\cos({n}\pi x)$')&lt;br /&gt;
    plt.plot(x, np.sin(n * np.pi * x), label=fr'$\sin({n}\pi x)$')&lt;br /&gt;
&lt;br /&gt;
# Configurar la gráfica&lt;br /&gt;
plt.axhline(0, color='black', linewidth=0.8)&lt;br /&gt;
plt.axvline(0, color='black', linewidth=0.8)&lt;br /&gt;
plt.legend(loc='upper right', fontsize='x-small', ncol=2)&lt;br /&gt;
plt.xlabel('x')&lt;br /&gt;
plt.ylabel('Valor de la función')&lt;br /&gt;
plt.title('Primeros 10 términos de la base trigonométrica')&lt;br /&gt;
plt.grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
# Definir el rango de x&lt;br /&gt;
x = np.linspace(-1, 1, 400)&lt;br /&gt;
&lt;br /&gt;
# Crear una figura con 3 subgráficos&lt;br /&gt;
fig, axes = plt.subplots(3, 1, figsize=(6, 12))&lt;br /&gt;
&lt;br /&gt;
# Graficar el primer término de la base (constante 1/2)&lt;br /&gt;
axes[0].plot(x, np.full_like(x, 1/2), label=r'$\frac{1}{2}$', linewidth=2)&lt;br /&gt;
axes[0].set_title('Término constante')&lt;br /&gt;
axes[0].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[0].legend()&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos cos(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    axes[1].plot(x, np.cos(n * np.pi * x), label=fr'$\cos({n}\pi x)$', linewidth=2)&lt;br /&gt;
axes[1].set_title('Funciones coseno')&lt;br /&gt;
axes[1].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[1].legend(fontsize='x-small', ncol=2)&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos sin(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    axes[2].plot(x, np.sin(n * np.pi * x), label=fr'$\sin({n}\pi x)$', linewidth=2)&lt;br /&gt;
axes[2].set_title('Funciones seno')&lt;br /&gt;
axes[2].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[2].legend(fontsize='x-small', ncol=2)&lt;br /&gt;
&lt;br /&gt;
# Ajustar diseño&lt;br /&gt;
plt.tight_layout()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=. Aproximación de una función por la base trigonométrica=&lt;br /&gt;
Sea &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(x) = xe^{-x}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
definida en el intervalo [-2,3], se busca aproximar f mediante la base trigonométrica del espacio &amp;lt;math&amp;gt;L^2(-2,3)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Consideramos el espacio de Hilbert \( L^2(- \pi, \pi) \) con el producto interno \( \langle \cdot, \cdot \rangle_{L^2} \). En este espacio tomamos la base de Fourier trigonométrica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(nx), \frac{1}{\sqrt{\pi}}sen(nx) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si consideramos ahora el espacio \( L^2(a, b) \), buscamos una base ortonormal (referencia de Fourier) en este espacio. Para ello, hacemos el cambio de variable:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; h(x) = \frac{2\pi}{b-a} (x - a) - \pi, \quad x \in [a, b] &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta manera, \( h(x) \in [-\pi, \pi] \), lo que permite trasladar la base ortonormal del espacio \( L^2(- \pi, \pi) \) al nuevo intervalo \( [a, b] \).&lt;br /&gt;
&lt;br /&gt;
Bajo este cambio de variable, una función \( f(x) \) en \( L^2(a,b) \) se puede expresar como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) = d_0 + \sum_{n=0}^{\infty} d_n \cos(n h(x)) + \sum_{n=0}^{\infty} c_n \sin(n h(x))&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde el coeficiente \( d_0 \) es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \int_a^b \frac{f(x)}{\sqrt(b-a)} \, dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para que su norma sea 1, pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\left\langle \frac{1}{\sqrt{b-a}}, \frac{1}{\sqrt{b-a}} \right\rangle = \int_a^b \frac{1}{b-a} \, dx = 1.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, obtenemos la base de Fourier de \( L^2(a,b) \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{b-a}}, \frac{\sqrt{2}}{\sqrt{b-a}} \cos\left( n \left( \frac{2\pi (x-a)}{b-a} - \pi \right) \right), \frac{\sqrt{2}}{\sqrt{b-a}} \sin\left( n \left( \frac{2\pi (x-a)}{b-a} - \pi \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para preservar la ortonormalidad en \( L^2(a,b) \), los senos y cosenos han sido normalizados con el factor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{\sqrt{2}}{\sqrt{b-a}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para los términos trigonométricos.&lt;br /&gt;
&lt;br /&gt;
En &amp;lt;math&amp;gt; L^2(-2,3) &amp;lt;/math&amp;gt;, nos queda la base:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{5}}, \frac{\sqrt{2}}{\sqrt{5}} \cos\left( n \left( \frac{2\pi x - \pi}{5} \right) \right), \frac{\sqrt{2}}{\sqrt{5}} \sin\left( n \left( \frac{2\pi x - \pi}{5} \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sea la función \( f(x) = x e^{-x} \). Se verifica que \( f(x) \in L^2(-2,3) \), pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\int_{-2}^{3} x^2 e^{-2x} \, dx = \frac{5(e^{10}-5)}{4 e^6}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que \( f(x) \) es continua y satisface la condición de Dirichlet, su desarrollo en serie de Fourier converge a la función en los puntos de continuidad y en los extremos. Así, se tiene:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f \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} d_m \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;
Calculemos ahora los coeficientes de la serie de Fourier&lt;br /&gt;
&lt;br /&gt;
El coeficiente \( d_0 \) se obtiene como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \left\langle f,\frac{1}{\sqrt{5}} \right\rangle_{L^{2}} = \int_{-2}^{3} x e^{-x} \, dx = \frac{-4 + e^5}{\sqrt{5} e^3}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_n \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_n = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \cos\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}}= \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \cos\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_m \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_m = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \sin\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}} = \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \sin\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, se puede aproximar la función f mediante los primeros 5, 10 y 20 términos de su desarrollo en serie de Fourier, empleando el siguiente código de python:&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Archivo:Fourier.gif|800px|thumb|Aproximación de Fourier de la función extendida &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt;]]&lt;br /&gt;
[[Archivo:Error_fourier.gif|800px|thumb|Error absoluto entre la función &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt; y su aproximación de Fourier]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Error_supremo.png|800px|thumb|Error en norma supremo de la aproximación para distintos valores de n]]&lt;br /&gt;
[[Archivo:Error_L2.png|800px|thumb|Error en norma L2 de la aproximación para distintos valores de n]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
from tqdm import tqdm&lt;br /&gt;
import sympy as sp&lt;br /&gt;
import math&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
n=10&lt;br /&gt;
&lt;br /&gt;
def calcular_aproximacion_fourier(n):&lt;br /&gt;
    e = 0&lt;br /&gt;
    l = 0&lt;br /&gt;
    x = sp.symbols('x')&lt;br /&gt;
    &lt;br /&gt;
    for i in tqdm(range(1, n)): &lt;br /&gt;
        integrand = (math.sqrt(2)/math.sqrt(5)) * x&lt;br /&gt;
        * sp.exp(-x) * sp.cos(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        integral_result = sp.integrate(integrand, (x, -2, 3))&lt;br /&gt;
        &lt;br /&gt;
        integrand2 = (math.sqrt(2)/math.sqrt(5)) * x &lt;br /&gt;
        * sp.exp(-x) * sp.sin(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        integral_result2 = sp.integrate(integrand2, (x, -2, 3))&lt;br /&gt;
        &lt;br /&gt;
        e += integral_result * (math.sqrt(2)/math.sqrt(5)) * &lt;br /&gt;
        sp.cos(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        l += integral_result2 * (math.sqrt(2)/math.sqrt(5)) * &lt;br /&gt;
        sp.sin(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
    &lt;br /&gt;
    d0 = -(4 + sp.exp(5)) / (math.sqrt(5) * sp.exp(3))&lt;br /&gt;
    f = d0 / math.sqrt(5) + e + l&lt;br /&gt;
    &lt;br /&gt;
    return sp.lambdify(x, f, &amp;quot;numpy&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Definir la función f(x) = x * exp(-x)&lt;br /&gt;
def f(x):&lt;br /&gt;
    return x * np.exp(-x)&lt;br /&gt;
&lt;br /&gt;
# Generar valores de x en el rango [-2, 3]&lt;br /&gt;
x_vals = np.linspace(-2, 3, 1000)&lt;br /&gt;
y_vals = f(x_vals)&lt;br /&gt;
&lt;br /&gt;
f_numeric=calcular_aproximacion_fourier(n)&lt;br /&gt;
# Aproximación de Fourier (f_numeric debe estar definida previamente)&lt;br /&gt;
y_fourier = f_numeric(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Calcular el error&lt;br /&gt;
error_vals = np.abs(y_vals - y_fourier)&lt;br /&gt;
&lt;br /&gt;
# Crear el gráfico de la función y su aproximación&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, y_vals, label=r'$f(x) = x e^{-x}$',linestyle='dashed', color='b')&lt;br /&gt;
plt.plot(x_vals, y_fourier, label=f&amp;quot;Aproximación n={n}&amp;quot;, color='r')&lt;br /&gt;
plt.axhline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.axvline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;f(x)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Comparación entre f(x) y su Aproximación de Fourier&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Gráfico del error&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, error_vals, label=&amp;quot;Error Absoluto&amp;quot;, color='g')&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error entre f(x) y su aproximación de Fourier&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show&lt;br /&gt;
&lt;br /&gt;
# Valores de n a evaluar&lt;br /&gt;
n_vals1 = np.linspace(10,200,20)&lt;br /&gt;
n_vals=[]&lt;br /&gt;
for i in range(20):&lt;br /&gt;
    n_vals.append(int(n_vals1[i]))&lt;br /&gt;
&lt;br /&gt;
error_L2_vals=[]&lt;br /&gt;
error_supremo_vals = []&lt;br /&gt;
&lt;br /&gt;
for i in n_vals:&lt;br /&gt;
    f_numeric = calcular_aproximacion_fourier(i)&lt;br /&gt;
    y_fourier = f_numeric(x_vals)&lt;br /&gt;
    error_L2 = np.sqrt(np.trapz(np.abs(y_vals - y_fourier)**2, x_vals))&lt;br /&gt;
    error_L2_vals.append(error_L2)&lt;br /&gt;
    error_supremo = np.sqrt(np.trapz(np.abs(y_vals - y_fourier)**2, x_vals))&lt;br /&gt;
    error_supremo_vals.append(error_supremo)&lt;br /&gt;
&lt;br /&gt;
# Graficar el error en norma L2 vs n&lt;br /&gt;
plt.figure(figsize=(6, 4))&lt;br /&gt;
plt.plot(n_vals, error_L2_vals, linestyle='-', color='r')&lt;br /&gt;
plt.xlabel(&amp;quot;n&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error L2&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error en Norma L2 para distintos valores de n&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Graficar el error en norma supremo vs n&lt;br /&gt;
plt.figure(figsize=(6, 4))&lt;br /&gt;
plt.plot(n_vals, error_supremo_vals, linestyle='-', color='r')&lt;br /&gt;
plt.xlabel(&amp;quot;n&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error norma supremo&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error en Norma supremo para distintos valores de n&amp;quot;)&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;
&lt;br /&gt;
=. Referencias =&lt;br /&gt;
* Sandro Salsa, Gianmaria Verzini. Partial Differential Equations in Action(Edición 4).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=84025</id>
		<title>Series de Fourier (Grupo PPAD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=84025"/>
				<updated>2025-02-13T20:08:36Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: Se ha deshecho la revisión 84024 de Alex Heredero (disc.)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo PPAD). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Pablo Vidal Nacle, Pablo Maestro Fernández, Alex Heredero Santamaría, Diego Moñino Vizmanos}}&lt;br /&gt;
&lt;br /&gt;
=. Introducción=&lt;br /&gt;
Se define el espacio de Hilbert &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; como:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; L^2(a,b) = \left\{ f(x)| \int_{a}^{b} |f(x)|^{2} dx \lt \infty  \right\}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; a,b \in \mathbb{R} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; a \lt b &amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; es un espacio vectorial con producto escalar asociado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left\langle f,g \right\rangle_{L^{2}}=\int_{a}^{b} f(x)g(x) dx, \forall f,g \in L^{2}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
Esta construcción del espacio &amp;lt;math&amp;gt; L^{2} &amp;lt;/math&amp;gt; motiva plantear la posibilidad de definir una base numerable que permita expresar todos los elementos del espacio en función de los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
=. Base trigonométrica=&lt;br /&gt;
Tal y como se ha definido en la introducción, consideramos el espacio &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;. En éste se define la base numerable &amp;lt;math&amp;gt; \beta &amp;lt;/math&amp;gt; dada por los siguientes elementos:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(n x), \frac{1}{\sqrt{\pi}}sen(n x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
que se conoce como referencia de Fourier trigonométrica.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Archivo:PPAD1.jpeg|800px|thumb|Término constante de la base]]&lt;br /&gt;
[[Archivo:PPAD2.jpeg|800px|thumb|Primeros 10 elementos del coseno de la base]]&lt;br /&gt;
[[Archivo:PPAD3.jpeg|800px|thumb|Primeros 10 elementos del seno de la base]]&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;
# Definir el rango de x&lt;br /&gt;
x = np.linspace(-1, 1, 400)&lt;br /&gt;
&lt;br /&gt;
# Graficar el primer término de la base (constante 1/2)&lt;br /&gt;
plt.plot(x, np.full_like(x, 1/2), label=r'$\frac{1}{2}$', linewidth=2)&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos cos(nπx) y sin(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    plt.plot(x, np.cos(n * np.pi * x), label=fr'$\cos({n}\pi x)$')&lt;br /&gt;
    plt.plot(x, np.sin(n * np.pi * x), label=fr'$\sin({n}\pi x)$')&lt;br /&gt;
&lt;br /&gt;
# Configurar la gráfica&lt;br /&gt;
plt.axhline(0, color='black', linewidth=0.8)&lt;br /&gt;
plt.axvline(0, color='black', linewidth=0.8)&lt;br /&gt;
plt.legend(loc='upper right', fontsize='x-small', ncol=2)&lt;br /&gt;
plt.xlabel('x')&lt;br /&gt;
plt.ylabel('Valor de la función')&lt;br /&gt;
plt.title('Primeros 10 términos de la base trigonométrica')&lt;br /&gt;
plt.grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
# Definir el rango de x&lt;br /&gt;
x = np.linspace(-1, 1, 400)&lt;br /&gt;
&lt;br /&gt;
# Crear una figura con 3 subgráficos&lt;br /&gt;
fig, axes = plt.subplots(3, 1, figsize=(6, 12))&lt;br /&gt;
&lt;br /&gt;
# Graficar el primer término de la base (constante 1/2)&lt;br /&gt;
axes[0].plot(x, np.full_like(x, 1/2), label=r'$\frac{1}{2}$', linewidth=2)&lt;br /&gt;
axes[0].set_title('Término constante')&lt;br /&gt;
axes[0].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[0].legend()&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos cos(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    axes[1].plot(x, np.cos(n * np.pi * x), label=fr'$\cos({n}\pi x)$', linewidth=2)&lt;br /&gt;
axes[1].set_title('Funciones coseno')&lt;br /&gt;
axes[1].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[1].legend(fontsize='x-small', ncol=2)&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos sin(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    axes[2].plot(x, np.sin(n * np.pi * x), label=fr'$\sin({n}\pi x)$', linewidth=2)&lt;br /&gt;
axes[2].set_title('Funciones seno')&lt;br /&gt;
axes[2].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[2].legend(fontsize='x-small', ncol=2)&lt;br /&gt;
&lt;br /&gt;
# Ajustar diseño&lt;br /&gt;
plt.tight_layout()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=. Aproximación de una función por la base trigonométrica=&lt;br /&gt;
Sea &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(x) = xe^{-x}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
definida en el intervalo [-2,3], se busca aproximar f mediante la base trigonométrica del espacio &amp;lt;math&amp;gt;L^2(-2,3)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Consideramos el espacio de Hilbert \( L^2(- \pi, \pi) \) con el producto interno \( \langle \cdot, \cdot \rangle_{L^2} \). En este espacio tomamos la base de Fourier trigonométrica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(nx), \frac{1}{\sqrt{\pi}}sen(nx) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si consideramos ahora el espacio \( L^2(a, b) \), buscamos una base ortonormal (referencia de Fourier) en este espacio. Para ello, hacemos el cambio de variable:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; h(x) = \frac{2\pi}{b-a} (x - a) - \pi, \quad x \in [a, b] &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta manera, \( h(x) \in [-\pi, \pi] \), lo que permite trasladar la base ortonormal del espacio \( L^2(- \pi, \pi) \) al nuevo intervalo \( [a, b] \).&lt;br /&gt;
&lt;br /&gt;
Bajo este cambio de variable, una función \( f(x) \) en \( L^2(a,b) \) se puede expresar como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) = d_0 + \sum_{n=0}^{\infty} d_n \cos(n R(x)) + \sum_{n=0}^{\infty} c_n \sin(n R(x))&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde el coeficiente \( d_0 \) es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \frac{1}{\sqrt{b-a}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para que su norma sea 1, pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\left\langle \frac{1}{\sqrt{b-a}}, \frac{1}{\sqrt{b-a}} \right\rangle = \int_a^b \frac{1}{b-a} \, dx = 1.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, obtenemos la base de Fourier de \( L^2(a,b) \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{b-a}}, \frac{\sqrt{2}}{\sqrt{b-a}} \cos\left( n \left( \frac{2\pi (x-a)}{b-a} - \pi \right) \right), \frac{\sqrt{2}}{\sqrt{b-a}} \sin\left( n \left( \frac{2\pi (x-a)}{b-a} - \pi \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para preservar la ortonormalidad en \( L^2(a,b) \), los senos y cosenos han sido normalizados con el factor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{\sqrt{2}}{\sqrt{b-a}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para los términos trigonométricos.&lt;br /&gt;
&lt;br /&gt;
En &amp;lt;math&amp;gt; L^2(-2,3) &amp;lt;/math&amp;gt;, nos queda la base:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{5}}, \frac{\sqrt{2}}{\sqrt{5}} \cos\left( n \left( \frac{2\pi x - \pi}{5} \right) \right), \frac{\sqrt{2}}{\sqrt{5}} \sin\left( n \left( \frac{2\pi x - \pi}{5} \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sea la función \( f(x) = x e^{-x} \). Se verifica que \( f(x) \in L^2(-2,3) \), pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\int_{-2}^{3} x^2 e^{-2x} \, dx = \frac{5(e^{10}-5)}{4 e^6}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que \( f(x) \) es continua y satisface la condición de Dirichlet, su desarrollo en serie de Fourier converge a la función en los puntos de continuidad y en los extremos. Así, se tiene:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f \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} d_m \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;
Calculemos ahora los coeficientes de la serie de Fourier&lt;br /&gt;
&lt;br /&gt;
El coeficiente \( d_0 \) se obtiene como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \left\langle f,\frac{1}{\sqrt{5}} \right\rangle_{L^{2}} = \int_{-2}^{3} x e^{-x} \, dx = \frac{-4 + e^5}{\sqrt{5} e^3}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_n \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_n = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \cos\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}}= \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \cos\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_m \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_m = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \sin\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}} = \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \sin\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, se puede aproximar la función f mediante los primeros 5, 10 y 20 términos de su desarrollo en serie de Fourier, empleando el siguiente código de python:&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Archivo:Fourier.gif|800px|thumb|Aproximación de Fourier de la función extendida &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt;]]&lt;br /&gt;
[[Archivo:Error_fourier.gif|800px|thumb|Error absoluto entre la función &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt; y su aproximación de Fourier]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Error_supremo.png|800px|thumb|Error en norma supremo de la aproximación para distintos valores de n]]&lt;br /&gt;
[[Archivo:Error_L2.png|800px|thumb|Error en norma L2 de la aproximación para distintos valores de n]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
from tqdm import tqdm&lt;br /&gt;
import sympy as sp&lt;br /&gt;
import math&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
n=10&lt;br /&gt;
&lt;br /&gt;
def calcular_aproximacion_fourier(n):&lt;br /&gt;
    e = 0&lt;br /&gt;
    l = 0&lt;br /&gt;
    x = sp.symbols('x')&lt;br /&gt;
    &lt;br /&gt;
    for i in tqdm(range(1, n)): &lt;br /&gt;
        integrand = (math.sqrt(2)/math.sqrt(5)) * x&lt;br /&gt;
        * sp.exp(-x) * sp.cos(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        integral_result = sp.integrate(integrand, (x, -2, 3))&lt;br /&gt;
        &lt;br /&gt;
        integrand2 = (math.sqrt(2)/math.sqrt(5)) * x &lt;br /&gt;
        * sp.exp(-x) * sp.sin(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        integral_result2 = sp.integrate(integrand2, (x, -2, 3))&lt;br /&gt;
        &lt;br /&gt;
        e += integral_result * (math.sqrt(2)/math.sqrt(5)) * &lt;br /&gt;
        sp.cos(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        l += integral_result2 * (math.sqrt(2)/math.sqrt(5)) * &lt;br /&gt;
        sp.sin(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
    &lt;br /&gt;
    d0 = -(4 + sp.exp(5)) / (math.sqrt(5) * sp.exp(3))&lt;br /&gt;
    f = d0 / math.sqrt(5) + e + l&lt;br /&gt;
    &lt;br /&gt;
    return sp.lambdify(x, f, &amp;quot;numpy&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Definir la función f(x) = x * exp(-x)&lt;br /&gt;
def f(x):&lt;br /&gt;
    return x * np.exp(-x)&lt;br /&gt;
&lt;br /&gt;
# Generar valores de x en el rango [-2, 3]&lt;br /&gt;
x_vals = np.linspace(-2, 3, 1000)&lt;br /&gt;
y_vals = f(x_vals)&lt;br /&gt;
&lt;br /&gt;
f_numeric=calcular_aproximacion_fourier(n)&lt;br /&gt;
# Aproximación de Fourier (f_numeric debe estar definida previamente)&lt;br /&gt;
y_fourier = f_numeric(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Calcular el error&lt;br /&gt;
error_vals = np.abs(y_vals - y_fourier)&lt;br /&gt;
&lt;br /&gt;
# Crear el gráfico de la función y su aproximación&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, y_vals, label=r'$f(x) = x e^{-x}$',linestyle='dashed', color='b')&lt;br /&gt;
plt.plot(x_vals, y_fourier, label=f&amp;quot;Aproximación n={n}&amp;quot;, color='r')&lt;br /&gt;
plt.axhline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.axvline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;f(x)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Comparación entre f(x) y su Aproximación de Fourier&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Gráfico del error&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, error_vals, label=&amp;quot;Error Absoluto&amp;quot;, color='g')&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error entre f(x) y su aproximación de Fourier&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show&lt;br /&gt;
&lt;br /&gt;
# Valores de n a evaluar&lt;br /&gt;
n_vals1 = np.linspace(10,200,20)&lt;br /&gt;
n_vals=[]&lt;br /&gt;
for i in range(20):&lt;br /&gt;
    n_vals.append(int(n_vals1[i]))&lt;br /&gt;
&lt;br /&gt;
error_L2_vals=[]&lt;br /&gt;
error_supremo_vals = []&lt;br /&gt;
&lt;br /&gt;
for i in n_vals:&lt;br /&gt;
    f_numeric = calcular_aproximacion_fourier(i)&lt;br /&gt;
    y_fourier = f_numeric(x_vals)&lt;br /&gt;
    error_L2 = np.sqrt(np.trapz(np.abs(y_vals - y_fourier)**2, x_vals))&lt;br /&gt;
    error_L2_vals.append(error_L2)&lt;br /&gt;
    error_supremo = np.sqrt(np.trapz(np.abs(y_vals - y_fourier)**2, x_vals))&lt;br /&gt;
    error_supremo_vals.append(error_supremo)&lt;br /&gt;
&lt;br /&gt;
# Graficar el error en norma L2 vs n&lt;br /&gt;
plt.figure(figsize=(6, 4))&lt;br /&gt;
plt.plot(n_vals, error_L2_vals, linestyle='-', color='r')&lt;br /&gt;
plt.xlabel(&amp;quot;n&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error L2&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error en Norma L2 para distintos valores de n&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Graficar el error en norma supremo vs n&lt;br /&gt;
plt.figure(figsize=(6, 4))&lt;br /&gt;
plt.plot(n_vals, error_supremo_vals, linestyle='-', color='r')&lt;br /&gt;
plt.xlabel(&amp;quot;n&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error norma supremo&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error en Norma supremo para distintos valores de n&amp;quot;)&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;
&lt;br /&gt;
=. Referencias =&lt;br /&gt;
* Sandro Salsa, Gianmaria Verzini. Partial Differential Equations in Action(Edición 4).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=84024</id>
		<title>Series de Fourier (Grupo PPAD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=84024"/>
				<updated>2025-02-13T20:08:10Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo PPAD). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Pablo Vidal Nacle, Pablo Maestro Fernández, Alex Heredero Santamaría, Diego Moñino Vizmanos}}&lt;br /&gt;
&lt;br /&gt;
=. Introducción=&lt;br /&gt;
Se define el espacio de Hilbert &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; como:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; L^2(a,b) = \left\{ f(x)| \int_{a}^{b} |f(x)|^{2} dx \lt \infty  \right\}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; a,b \in \mathbb{R} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; a \lt b &amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; es un espacio vectorial con producto escalar asociado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left\langle f,g \right\rangle_{L^{2}}=\int_{a}^{b} f(x)g(x) dx, \forall f,g \in L^{2}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
Esta construcción del espacio &amp;lt;math&amp;gt; L^{2} &amp;lt;/math&amp;gt; motiva plantear la posibilidad de definir una base numerable que permita expresar todos los elementos del espacio en función de los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
=. Base trigonométrica=&lt;br /&gt;
Tal y como se ha definido en la introducción, consideramos el espacio &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;. En éste se define la base numerable &amp;lt;math&amp;gt; \beta &amp;lt;/math&amp;gt; dada por los siguientes elementos:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(n x), \frac{1}{\sqrt{\pi}}sen(n x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
que se conoce como referencia de Fourier trigonométrica.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Archivo:PPAD1.jpeg|800px|thumb|Término constante de la base]]&lt;br /&gt;
[[Archivo:PPAD2.jpeg|800px|thumb|Primeros 10 elementos del coseno de la base]]&lt;br /&gt;
[[Archivo:PPAD3.jpeg|800px|thumb|Primeros 10 elementos del seno de la base]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
# Definir el rango de x&lt;br /&gt;
x = np.linspace(-1, 1, 400)&lt;br /&gt;
&lt;br /&gt;
# Crear una figura con 3 subgráficos&lt;br /&gt;
fig, axes = plt.subplots(3, 1, figsize=(6, 12))&lt;br /&gt;
&lt;br /&gt;
# Graficar el primer término de la base (constante 1/2)&lt;br /&gt;
axes[0].plot(x, np.full_like(x, 1/2), label=r'$\frac{1}{2}$', linewidth=2)&lt;br /&gt;
axes[0].set_title('Término constante')&lt;br /&gt;
axes[0].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[0].legend()&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos cos(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    axes[1].plot(x, np.cos(n * np.pi * x), label=fr'$\cos({n}\pi x)$', linewidth=2)&lt;br /&gt;
axes[1].set_title('Funciones coseno')&lt;br /&gt;
axes[1].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[1].legend(fontsize='x-small', ncol=2)&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos sin(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    axes[2].plot(x, np.sin(n * np.pi * x), label=fr'$\sin({n}\pi x)$', linewidth=2)&lt;br /&gt;
axes[2].set_title('Funciones seno')&lt;br /&gt;
axes[2].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[2].legend(fontsize='x-small', ncol=2)&lt;br /&gt;
&lt;br /&gt;
# Ajustar diseño&lt;br /&gt;
plt.tight_layout()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=. Aproximación de una función por la base trigonométrica=&lt;br /&gt;
Sea &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(x) = xe^{-x}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
definida en el intervalo [-2,3], se busca aproximar f mediante la base trigonométrica del espacio &amp;lt;math&amp;gt;L^2(-2,3)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Consideramos el espacio de Hilbert \( L^2(- \pi, \pi) \) con el producto interno \( \langle \cdot, \cdot \rangle_{L^2} \). En este espacio tomamos la base de Fourier trigonométrica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(nx), \frac{1}{\sqrt{\pi}}sen(nx) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si consideramos ahora el espacio \( L^2(a, b) \), buscamos una base ortonormal (referencia de Fourier) en este espacio. Para ello, hacemos el cambio de variable:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; h(x) = \frac{2\pi}{b-a} (x - a) - \pi, \quad x \in [a, b] &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta manera, \( h(x) \in [-\pi, \pi] \), lo que permite trasladar la base ortonormal del espacio \( L^2(- \pi, \pi) \) al nuevo intervalo \( [a, b] \).&lt;br /&gt;
&lt;br /&gt;
Bajo este cambio de variable, una función \( f(x) \) en \( L^2(a,b) \) se puede expresar como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) = d_0 + \sum_{n=0}^{\infty} d_n \cos(n R(x)) + \sum_{n=0}^{\infty} c_n \sin(n R(x))&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde el coeficiente \( d_0 \) es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \frac{1}{\sqrt{b-a}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para que su norma sea 1, pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\left\langle \frac{1}{\sqrt{b-a}}, \frac{1}{\sqrt{b-a}} \right\rangle = \int_a^b \frac{1}{b-a} \, dx = 1.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, obtenemos la base de Fourier de \( L^2(a,b) \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{b-a}}, \frac{\sqrt{2}}{\sqrt{b-a}} \cos\left( n \left( \frac{2\pi (x-a)}{b-a} - \pi \right) \right), \frac{\sqrt{2}}{\sqrt{b-a}} \sin\left( n \left( \frac{2\pi (x-a)}{b-a} - \pi \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para preservar la ortonormalidad en \( L^2(a,b) \), los senos y cosenos han sido normalizados con el factor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{\sqrt{2}}{\sqrt{b-a}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para los términos trigonométricos.&lt;br /&gt;
&lt;br /&gt;
En &amp;lt;math&amp;gt; L^2(-2,3) &amp;lt;/math&amp;gt;, nos queda la base:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{5}}, \frac{\sqrt{2}}{\sqrt{5}} \cos\left( n \left( \frac{2\pi x - \pi}{5} \right) \right), \frac{\sqrt{2}}{\sqrt{5}} \sin\left( n \left( \frac{2\pi x - \pi}{5} \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sea la función \( f(x) = x e^{-x} \). Se verifica que \( f(x) \in L^2(-2,3) \), pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\int_{-2}^{3} x^2 e^{-2x} \, dx = \frac{5(e^{10}-5)}{4 e^6}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que \( f(x) \) es continua y satisface la condición de Dirichlet, su desarrollo en serie de Fourier converge a la función en los puntos de continuidad y en los extremos. Así, se tiene:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f \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} d_m \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;
Calculemos ahora los coeficientes de la serie de Fourier&lt;br /&gt;
&lt;br /&gt;
El coeficiente \( d_0 \) se obtiene como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \left\langle f,\frac{1}{\sqrt{5}} \right\rangle_{L^{2}} = \int_{-2}^{3} x e^{-x} \, dx = \frac{-4 + e^5}{\sqrt{5} e^3}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_n \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_n = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \cos\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}}= \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \cos\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_m \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_m = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \sin\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}} = \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \sin\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, se puede aproximar la función f mediante los primeros 5, 10 y 20 términos de su desarrollo en serie de Fourier, empleando el siguiente código de python:&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Archivo:Fourier.gif|800px|thumb|Aproximación de Fourier de la función extendida &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt;]]&lt;br /&gt;
[[Archivo:Error_fourier.gif|800px|thumb|Error absoluto entre la función &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt; y su aproximación de Fourier]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Error_supremo.png|800px|thumb|Error en norma supremo de la aproximación para distintos valores de n]]&lt;br /&gt;
[[Archivo:Error_L2.png|800px|thumb|Error en norma L2 de la aproximación para distintos valores de n]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
from tqdm import tqdm&lt;br /&gt;
import sympy as sp&lt;br /&gt;
import math&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
n=10&lt;br /&gt;
&lt;br /&gt;
def calcular_aproximacion_fourier(n):&lt;br /&gt;
    e = 0&lt;br /&gt;
    l = 0&lt;br /&gt;
    x = sp.symbols('x')&lt;br /&gt;
    &lt;br /&gt;
    for i in tqdm(range(1, n)): &lt;br /&gt;
        integrand = (math.sqrt(2)/math.sqrt(5)) * x&lt;br /&gt;
        * sp.exp(-x) * sp.cos(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        integral_result = sp.integrate(integrand, (x, -2, 3))&lt;br /&gt;
        &lt;br /&gt;
        integrand2 = (math.sqrt(2)/math.sqrt(5)) * x &lt;br /&gt;
        * sp.exp(-x) * sp.sin(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        integral_result2 = sp.integrate(integrand2, (x, -2, 3))&lt;br /&gt;
        &lt;br /&gt;
        e += integral_result * (math.sqrt(2)/math.sqrt(5)) * &lt;br /&gt;
        sp.cos(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        l += integral_result2 * (math.sqrt(2)/math.sqrt(5)) * &lt;br /&gt;
        sp.sin(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
    &lt;br /&gt;
    d0 = -(4 + sp.exp(5)) / (math.sqrt(5) * sp.exp(3))&lt;br /&gt;
    f = d0 / math.sqrt(5) + e + l&lt;br /&gt;
    &lt;br /&gt;
    return sp.lambdify(x, f, &amp;quot;numpy&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Definir la función f(x) = x * exp(-x)&lt;br /&gt;
def f(x):&lt;br /&gt;
    return x * np.exp(-x)&lt;br /&gt;
&lt;br /&gt;
# Generar valores de x en el rango [-2, 3]&lt;br /&gt;
x_vals = np.linspace(-2, 3, 1000)&lt;br /&gt;
y_vals = f(x_vals)&lt;br /&gt;
&lt;br /&gt;
f_numeric=calcular_aproximacion_fourier(n)&lt;br /&gt;
# Aproximación de Fourier (f_numeric debe estar definida previamente)&lt;br /&gt;
y_fourier = f_numeric(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Calcular el error&lt;br /&gt;
error_vals = np.abs(y_vals - y_fourier)&lt;br /&gt;
&lt;br /&gt;
# Crear el gráfico de la función y su aproximación&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, y_vals, label=r'$f(x) = x e^{-x}$',linestyle='dashed', color='b')&lt;br /&gt;
plt.plot(x_vals, y_fourier, label=f&amp;quot;Aproximación n={n}&amp;quot;, color='r')&lt;br /&gt;
plt.axhline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.axvline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;f(x)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Comparación entre f(x) y su Aproximación de Fourier&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Gráfico del error&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, error_vals, label=&amp;quot;Error Absoluto&amp;quot;, color='g')&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error entre f(x) y su aproximación de Fourier&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show&lt;br /&gt;
&lt;br /&gt;
# Valores de n a evaluar&lt;br /&gt;
n_vals1 = np.linspace(10,200,20)&lt;br /&gt;
n_vals=[]&lt;br /&gt;
for i in range(20):&lt;br /&gt;
    n_vals.append(int(n_vals1[i]))&lt;br /&gt;
&lt;br /&gt;
error_L2_vals=[]&lt;br /&gt;
error_supremo_vals = []&lt;br /&gt;
&lt;br /&gt;
for i in n_vals:&lt;br /&gt;
    f_numeric = calcular_aproximacion_fourier(i)&lt;br /&gt;
    y_fourier = f_numeric(x_vals)&lt;br /&gt;
    error_L2 = np.sqrt(np.trapz(np.abs(y_vals - y_fourier)**2, x_vals))&lt;br /&gt;
    error_L2_vals.append(error_L2)&lt;br /&gt;
    error_supremo = np.sqrt(np.trapz(np.abs(y_vals - y_fourier)**2, x_vals))&lt;br /&gt;
    error_supremo_vals.append(error_supremo)&lt;br /&gt;
&lt;br /&gt;
# Graficar el error en norma L2 vs n&lt;br /&gt;
plt.figure(figsize=(6, 4))&lt;br /&gt;
plt.plot(n_vals, error_L2_vals, linestyle='-', color='r')&lt;br /&gt;
plt.xlabel(&amp;quot;n&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error L2&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error en Norma L2 para distintos valores de n&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Graficar el error en norma supremo vs n&lt;br /&gt;
plt.figure(figsize=(6, 4))&lt;br /&gt;
plt.plot(n_vals, error_supremo_vals, linestyle='-', color='r')&lt;br /&gt;
plt.xlabel(&amp;quot;n&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error norma supremo&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error en Norma supremo para distintos valores de n&amp;quot;)&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;
&lt;br /&gt;
=. Referencias =&lt;br /&gt;
* Sandro Salsa, Gianmaria Verzini. Partial Differential Equations in Action(Edición 4).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=84023</id>
		<title>Series de Fourier (Grupo PPAD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=84023"/>
				<updated>2025-02-13T20:05:03Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo PPAD). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Pablo Vidal Nacle, Pablo Maestro Fernández, Alex Heredero Santamaría, Diego Moñino Vizmanos}}&lt;br /&gt;
&lt;br /&gt;
=. Introducción=&lt;br /&gt;
Se define el espacio de Hilbert &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; como:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; L^2(a,b) = \left\{ f(x)| \int_{a}^{b} |f(x)|^{2} dx \lt \infty  \right\}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; a,b \in \mathbb{R} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; a \lt b &amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; es un espacio vectorial con producto escalar asociado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left\langle f,g \right\rangle_{L^{2}}=\int_{a}^{b} f(x)g(x) dx, \forall f,g \in L^{2}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
Esta construcción del espacio &amp;lt;math&amp;gt; L^{2} &amp;lt;/math&amp;gt; motiva plantear la posibilidad de definir una base numerable que permita expresar todos los elementos del espacio en función de los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
=. Base trigonométrica=&lt;br /&gt;
Tal y como se ha definido en la introducción, consideramos el espacio &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;. En éste se define la base numerable &amp;lt;math&amp;gt; \beta &amp;lt;/math&amp;gt; dada por los siguientes elementos:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(n x), \frac{1}{\sqrt{\pi}}sen(n x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
que se conoce como referencia de Fourier trigonométrica.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Archivo:PPAD1.jpeg|800px|thumb|Término constante de la base]]&lt;br /&gt;
[[Archivo:PPAD2.jpeg|800px|thumb|Primeros 10 elementos del coseno de la base]]&lt;br /&gt;
[[Archivo:PPAD3.jpeg|800px|thumb|Primeros 10 elementos del seno de la base]]&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;
# Definir el rango de x&lt;br /&gt;
x = np.linspace(-1, 1, 400)&lt;br /&gt;
&lt;br /&gt;
# Graficar el primer término de la base (constante 1/2)&lt;br /&gt;
plt.plot(x, np.full_like(x, 1/2), label=r'$\frac{1}{2}$', linewidth=2)&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos cos(nπx) y sin(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    plt.plot(x, np.cos(n * np.pi * x), label=fr'$\cos({n}\pi x)$')&lt;br /&gt;
    plt.plot(x, np.sin(n * np.pi * x), label=fr'$\sin({n}\pi x)$')&lt;br /&gt;
&lt;br /&gt;
# Configurar la gráfica&lt;br /&gt;
plt.axhline(0, color='black', linewidth=0.8)&lt;br /&gt;
plt.axvline(0, color='black', linewidth=0.8)&lt;br /&gt;
plt.legend(loc='upper right', fontsize='x-small', ncol=2)&lt;br /&gt;
plt.xlabel('x')&lt;br /&gt;
plt.ylabel('Valor de la función')&lt;br /&gt;
plt.title('Primeros 10 términos de la base trigonométrica')&lt;br /&gt;
plt.grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
# Definir el rango de x&lt;br /&gt;
x = np.linspace(-1, 1, 400)&lt;br /&gt;
&lt;br /&gt;
# Crear una figura con 3 subgráficos&lt;br /&gt;
fig, axes = plt.subplots(3, 1, figsize=(6, 12))&lt;br /&gt;
&lt;br /&gt;
# Graficar el primer término de la base (constante 1/2)&lt;br /&gt;
axes[0].plot(x, np.full_like(x, 1/2), label=r'$\frac{1}{2}$', linewidth=2)&lt;br /&gt;
axes[0].set_title('Término constante')&lt;br /&gt;
axes[0].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[0].legend()&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos cos(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    axes[1].plot(x, np.cos(n * np.pi * x), label=fr'$\cos({n}\pi x)$', linewidth=2)&lt;br /&gt;
axes[1].set_title('Funciones coseno')&lt;br /&gt;
axes[1].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[1].legend(fontsize='x-small', ncol=2)&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos sin(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    axes[2].plot(x, np.sin(n * np.pi * x), label=fr'$\sin({n}\pi x)$', linewidth=2)&lt;br /&gt;
axes[2].set_title('Funciones seno')&lt;br /&gt;
axes[2].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[2].legend(fontsize='x-small', ncol=2)&lt;br /&gt;
&lt;br /&gt;
# Ajustar diseño&lt;br /&gt;
plt.tight_layout()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=. Aproximación de una función por la base trigonométrica=&lt;br /&gt;
Sea &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(x) = xe^{-x}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
definida en el intervalo [-2,3], se busca aproximar f mediante la base trigonométrica del espacio &amp;lt;math&amp;gt;L^2(-2,3)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Consideramos el espacio de Hilbert \( L^2(- \pi, \pi) \) con el producto interno \( \langle \cdot, \cdot \rangle_{L^2} \). En este espacio tomamos la base de Fourier trigonométrica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(nx), \frac{1}{\sqrt{\pi}}sen(nx) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si consideramos ahora el espacio \( L^2(a, b) \), buscamos una base ortonormal (referencia de Fourier) en este espacio. Para ello, hacemos el cambio de variable:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; h(x) = \frac{2\pi}{b-a} (x - a) - \pi, \quad x \in [a, b] &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta manera, \( h(x) \in [-\pi, \pi] \), lo que permite trasladar la base ortonormal del espacio \( L^2(- \pi, \pi) \) al nuevo intervalo \( [a, b] \).&lt;br /&gt;
&lt;br /&gt;
Bajo este cambio de variable, una función \( f(x) \) en \( L^2(a,b) \) se puede expresar como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) = d_0 + \sum_{n=0}^{\infty} d_n \cos(n R(x)) + \sum_{n=0}^{\infty} c_n \sin(n R(x))&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde el coeficiente \( d_0 \) es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \frac{1}{\sqrt{b-a}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para que su norma sea 1, pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\left\langle \frac{1}{\sqrt{b-a}}, \frac{1}{\sqrt{b-a}} \right\rangle = \int_a^b \frac{1}{b-a} \, dx = 1.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, obtenemos la base de Fourier de \( L^2(a,b) \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{b-a}}, \frac{\sqrt{2}}{\sqrt{b-a}} \cos\left( n \left( \frac{2\pi (x-a)}{b-a} - \pi \right) \right), \frac{\sqrt{2}}{\sqrt{b-a}} \sin\left( n \left( \frac{2\pi (x-a)}{b-a} - \pi \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para preservar la ortonormalidad en \( L^2(a,b) \), los senos y cosenos han sido normalizados con el factor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{\sqrt{2}}{\sqrt{b-a}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para los términos trigonométricos.&lt;br /&gt;
&lt;br /&gt;
En &amp;lt;math&amp;gt; L^2(-2,3) &amp;lt;/math&amp;gt;, nos queda la base:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{5}}, \frac{\sqrt{2}}{\sqrt{5}} \cos\left( n \left( \frac{2\pi x - \pi}{5} \right) \right), \frac{\sqrt{2}}{\sqrt{5}} \sin\left( n \left( \frac{2\pi x - \pi}{5} \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sea la función \( f(x) = x e^{-x} \). Se verifica que \( f(x) \in L^2(-2,3) \), pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\int_{-2}^{3} x^2 e^{-2x} \, dx = \frac{5(e^{10}-5)}{4 e^6}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que \( f(x) \) es continua y satisface la condición de Dirichlet, su desarrollo en serie de Fourier converge a la función en los puntos de continuidad y en los extremos. Así, se tiene:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f \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} d_m \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;
Calculemos ahora los coeficientes de la serie de Fourier&lt;br /&gt;
&lt;br /&gt;
El coeficiente \( d_0 \) se obtiene como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \left\langle f,\frac{1}{\sqrt{5}} \right\rangle_{L^{2}} = \int_{-2}^{3} x e^{-x} \, dx = \frac{-4 + e^5}{\sqrt{5} e^3}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_n \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_n = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \cos\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}}= \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \cos\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_m \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_m = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \sin\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}} = \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \sin\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, se puede aproximar la función f mediante los primeros 5, 10 y 20 términos de su desarrollo en serie de Fourier, empleando el siguiente código de python:&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Archivo:Fourier.gif|800px|thumb|Aproximación de Fourier de la función extendida &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt;]]&lt;br /&gt;
[[Archivo:Error_fourier.gif|800px|thumb|Error absoluto entre la función &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt; y su aproximación de Fourier]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Error_supremo.png|800px|thumb|Error en norma supremo de la aproximación para distintos valores de n]]&lt;br /&gt;
[[Archivo:Error_L2.png|800px|thumb|Error en norma L2 de la aproximación para distintos valores de n]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
from tqdm import tqdm&lt;br /&gt;
import sympy as sp&lt;br /&gt;
import math&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
n=10&lt;br /&gt;
&lt;br /&gt;
def calcular_aproximacion_fourier(n):&lt;br /&gt;
    e = 0&lt;br /&gt;
    l = 0&lt;br /&gt;
    x = sp.symbols('x')&lt;br /&gt;
    &lt;br /&gt;
    for i in tqdm(range(1, n)): &lt;br /&gt;
        integrand = (math.sqrt(2)/math.sqrt(5)) * x&lt;br /&gt;
        * sp.exp(-x) * sp.cos(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        integral_result = sp.integrate(integrand, (x, -2, 3))&lt;br /&gt;
        &lt;br /&gt;
        integrand2 = (math.sqrt(2)/math.sqrt(5)) * x &lt;br /&gt;
        * sp.exp(-x) * sp.sin(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        integral_result2 = sp.integrate(integrand2, (x, -2, 3))&lt;br /&gt;
        &lt;br /&gt;
        e += integral_result * (math.sqrt(2)/math.sqrt(5)) * &lt;br /&gt;
        sp.cos(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        l += integral_result2 * (math.sqrt(2)/math.sqrt(5)) * &lt;br /&gt;
        sp.sin(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
    &lt;br /&gt;
    d0 = -(4 + sp.exp(5)) / (math.sqrt(5) * sp.exp(3))&lt;br /&gt;
    f = d0 / math.sqrt(5) + e + l&lt;br /&gt;
    &lt;br /&gt;
    return sp.lambdify(x, f, &amp;quot;numpy&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Definir la función f(x) = x * exp(-x)&lt;br /&gt;
def f(x):&lt;br /&gt;
    return x * np.exp(-x)&lt;br /&gt;
&lt;br /&gt;
# Generar valores de x en el rango [-2, 3]&lt;br /&gt;
x_vals = np.linspace(-2, 3, 1000)&lt;br /&gt;
y_vals = f(x_vals)&lt;br /&gt;
&lt;br /&gt;
f_numeric=calcular_aproximacion_fourier(n)&lt;br /&gt;
# Aproximación de Fourier (f_numeric debe estar definida previamente)&lt;br /&gt;
y_fourier = f_numeric(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Calcular el error&lt;br /&gt;
error_vals = np.abs(y_vals - y_fourier)&lt;br /&gt;
&lt;br /&gt;
# Crear el gráfico de la función y su aproximación&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, y_vals, label=r'$f(x) = x e^{-x}$',linestyle='dashed', color='b')&lt;br /&gt;
plt.plot(x_vals, y_fourier, label=f&amp;quot;Aproximación n={n}&amp;quot;, color='r')&lt;br /&gt;
plt.axhline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.axvline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;f(x)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Comparación entre f(x) y su Aproximación de Fourier&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Gráfico del error&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, error_vals, label=&amp;quot;Error Absoluto&amp;quot;, color='g')&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error entre f(x) y su aproximación de Fourier&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show&lt;br /&gt;
&lt;br /&gt;
# Valores de n a evaluar&lt;br /&gt;
n_vals1 = np.linspace(10,200,20)&lt;br /&gt;
n_vals=[]&lt;br /&gt;
for i in range(20):&lt;br /&gt;
    n_vals.append(int(n_vals1[i]))&lt;br /&gt;
&lt;br /&gt;
error_L2_vals=[]&lt;br /&gt;
error_supremo_vals = []&lt;br /&gt;
&lt;br /&gt;
for i in n_vals:&lt;br /&gt;
    f_numeric = calcular_aproximacion_fourier(i)&lt;br /&gt;
    y_fourier = f_numeric(x_vals)&lt;br /&gt;
    error_L2 = np.sqrt(np.trapz(np.abs(y_vals - y_fourier)**2, x_vals))&lt;br /&gt;
    error_L2_vals.append(error_L2)&lt;br /&gt;
    error_supremo = np.sqrt(np.trapz(np.abs(y_vals - y_fourier)**2, x_vals))&lt;br /&gt;
    error_supremo_vals.append(error_supremo)&lt;br /&gt;
&lt;br /&gt;
# Graficar el error en norma L2 vs n&lt;br /&gt;
plt.figure(figsize=(6, 4))&lt;br /&gt;
plt.plot(n_vals, error_L2_vals, linestyle='-', color='r')&lt;br /&gt;
plt.xlabel(&amp;quot;n&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error L2&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error en Norma L2 para distintos valores de n&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Graficar el error en norma supremo vs n&lt;br /&gt;
plt.figure(figsize=(6, 4))&lt;br /&gt;
plt.plot(n_vals, error_supremo_vals, linestyle='-', color='r')&lt;br /&gt;
plt.xlabel(&amp;quot;n&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error norma supremo&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error en Norma supremo para distintos valores de n&amp;quot;)&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;
&lt;br /&gt;
=. Referencias =&lt;br /&gt;
* Sandro Salsa, Gianmaria Verzini. Partial Differential Equations in Action(Edición 4).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:PPAD3.jpeg&amp;diff=84022</id>
		<title>Archivo:PPAD3.jpeg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:PPAD3.jpeg&amp;diff=84022"/>
				<updated>2025-02-13T20:04:04Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:PPAD2.jpeg&amp;diff=84021</id>
		<title>Archivo:PPAD2.jpeg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:PPAD2.jpeg&amp;diff=84021"/>
				<updated>2025-02-13T20:03:53Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:PPAD1.jpeg&amp;diff=84020</id>
		<title>Archivo:PPAD1.jpeg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:PPAD1.jpeg&amp;diff=84020"/>
				<updated>2025-02-13T20:03:44Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=84019</id>
		<title>Series de Fourier (Grupo PPAD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=84019"/>
				<updated>2025-02-13T20:01:07Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo PPAD). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Pablo Vidal Nacle, Pablo Maestro Fernández, Alex Heredero Santamaría, Diego Moñino Vizmanos}}&lt;br /&gt;
&lt;br /&gt;
=. Introducción=&lt;br /&gt;
Se define el espacio de Hilbert &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; como:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; L^2(a,b) = \left\{ f(x)| \int_{a}^{b} |f(x)|^{2} dx \lt \infty  \right\}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; a,b \in \mathbb{R} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; a \lt b &amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; es un espacio vectorial con producto escalar asociado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left\langle f,g \right\rangle_{L^{2}}=\int_{a}^{b} f(x)g(x) dx, \forall f,g \in L^{2}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
Esta construcción del espacio &amp;lt;math&amp;gt; L^{2} &amp;lt;/math&amp;gt; motiva plantear la posibilidad de definir una base numerable que permita expresar todos los elementos del espacio en función de los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
=. Base trigonométrica=&lt;br /&gt;
Tal y como se ha definido en la introducción, consideramos el espacio &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;. En éste se define la base numerable &amp;lt;math&amp;gt; \beta &amp;lt;/math&amp;gt; dada por los siguientes elementos:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(n x), \frac{1}{\sqrt{\pi}}sen(n x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
que se conoce como referencia de Fourier trigonométrica.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Archivo:PPAD1|800px|thumb|Aproximación de Fourier de la función extendida &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt;]]&lt;br /&gt;
[[Archivo:PPAD2|800px|thumb|Error absoluto entre la función &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt; y su aproximación de Fourier]]&lt;br /&gt;
[[Archivo:PPAD3|800px|thumb|Error en norma supremo de la aproximación para distintos valores de 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;
&lt;br /&gt;
# Definir el rango de x&lt;br /&gt;
x = np.linspace(-1, 1, 400)&lt;br /&gt;
&lt;br /&gt;
# Graficar el primer término de la base (constante 1/2)&lt;br /&gt;
plt.plot(x, np.full_like(x, 1/2), label=r'$\frac{1}{2}$', linewidth=2)&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos cos(nπx) y sin(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    plt.plot(x, np.cos(n * np.pi * x), label=fr'$\cos({n}\pi x)$')&lt;br /&gt;
    plt.plot(x, np.sin(n * np.pi * x), label=fr'$\sin({n}\pi x)$')&lt;br /&gt;
&lt;br /&gt;
# Configurar la gráfica&lt;br /&gt;
plt.axhline(0, color='black', linewidth=0.8)&lt;br /&gt;
plt.axvline(0, color='black', linewidth=0.8)&lt;br /&gt;
plt.legend(loc='upper right', fontsize='x-small', ncol=2)&lt;br /&gt;
plt.xlabel('x')&lt;br /&gt;
plt.ylabel('Valor de la función')&lt;br /&gt;
plt.title('Primeros 10 términos de la base trigonométrica')&lt;br /&gt;
plt.grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
# Definir el rango de x&lt;br /&gt;
x = np.linspace(-1, 1, 400)&lt;br /&gt;
&lt;br /&gt;
# Crear una figura con 3 subgráficos&lt;br /&gt;
fig, axes = plt.subplots(3, 1, figsize=(6, 12))&lt;br /&gt;
&lt;br /&gt;
# Graficar el primer término de la base (constante 1/2)&lt;br /&gt;
axes[0].plot(x, np.full_like(x, 1/2), label=r'$\frac{1}{2}$', linewidth=2)&lt;br /&gt;
axes[0].set_title('Término constante')&lt;br /&gt;
axes[0].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[0].legend()&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos cos(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    axes[1].plot(x, np.cos(n * np.pi * x), label=fr'$\cos({n}\pi x)$', linewidth=2)&lt;br /&gt;
axes[1].set_title('Funciones coseno')&lt;br /&gt;
axes[1].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[1].legend(fontsize='x-small', ncol=2)&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos sin(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    axes[2].plot(x, np.sin(n * np.pi * x), label=fr'$\sin({n}\pi x)$', linewidth=2)&lt;br /&gt;
axes[2].set_title('Funciones seno')&lt;br /&gt;
axes[2].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[2].legend(fontsize='x-small', ncol=2)&lt;br /&gt;
&lt;br /&gt;
# Ajustar diseño&lt;br /&gt;
plt.tight_layout()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=. Aproximación de una función por la base trigonométrica=&lt;br /&gt;
Sea &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(x) = xe^{-x}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
definida en el intervalo [-2,3], se busca aproximar f mediante la base trigonométrica del espacio &amp;lt;math&amp;gt;L^2(-2,3)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Consideramos el espacio de Hilbert \( L^2(- \pi, \pi) \) con el producto interno \( \langle \cdot, \cdot \rangle_{L^2} \). En este espacio tomamos la base de Fourier trigonométrica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(nx), \frac{1}{\sqrt{\pi}}sen(nx) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si consideramos ahora el espacio \( L^2(a, b) \), buscamos una base ortonormal (referencia de Fourier) en este espacio. Para ello, hacemos el cambio de variable:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; h(x) = \frac{2\pi}{b-a} (x - a) - \pi, \quad x \in [a, b] &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta manera, \( h(x) \in [-\pi, \pi] \), lo que permite trasladar la base ortonormal del espacio \( L^2(- \pi, \pi) \) al nuevo intervalo \( [a, b] \).&lt;br /&gt;
&lt;br /&gt;
Bajo este cambio de variable, una función \( f(x) \) en \( L^2(a,b) \) se puede expresar como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) = d_0 + \sum_{n=0}^{\infty} d_n \cos(n R(x)) + \sum_{n=0}^{\infty} c_n \sin(n R(x))&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde el coeficiente \( d_0 \) es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \frac{1}{\sqrt{b-a}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para que su norma sea 1, pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\left\langle \frac{1}{\sqrt{b-a}}, \frac{1}{\sqrt{b-a}} \right\rangle = \int_a^b \frac{1}{b-a} \, dx = 1.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, obtenemos la base de Fourier de \( L^2(a,b) \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{b-a}}, \frac{\sqrt{2}}{\sqrt{b-a}} \cos\left( n \left( \frac{2\pi (x-a)}{b-a} - \pi \right) \right), \frac{\sqrt{2}}{\sqrt{b-a}} \sin\left( n \left( \frac{2\pi (x-a)}{b-a} - \pi \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para preservar la ortonormalidad en \( L^2(a,b) \), los senos y cosenos han sido normalizados con el factor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{\sqrt{2}}{\sqrt{b-a}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para los términos trigonométricos.&lt;br /&gt;
&lt;br /&gt;
En &amp;lt;math&amp;gt; L^2(-2,3) &amp;lt;/math&amp;gt;, nos queda la base:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{5}}, \frac{\sqrt{2}}{\sqrt{5}} \cos\left( n \left( \frac{2\pi x - \pi}{5} \right) \right), \frac{\sqrt{2}}{\sqrt{5}} \sin\left( n \left( \frac{2\pi x - \pi}{5} \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sea la función \( f(x) = x e^{-x} \). Se verifica que \( f(x) \in L^2(-2,3) \), pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\int_{-2}^{3} x^2 e^{-2x} \, dx = \frac{5(e^{10}-5)}{4 e^6}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que \( f(x) \) es continua y satisface la condición de Dirichlet, su desarrollo en serie de Fourier converge a la función en los puntos de continuidad y en los extremos. Así, se tiene:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f \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} d_m \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;
Calculemos ahora los coeficientes de la serie de Fourier&lt;br /&gt;
&lt;br /&gt;
El coeficiente \( d_0 \) se obtiene como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \left\langle f,\frac{1}{\sqrt{5}} \right\rangle_{L^{2}} = \int_{-2}^{3} x e^{-x} \, dx = \frac{-4 + e^5}{\sqrt{5} e^3}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_n \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_n = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \cos\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}}= \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \cos\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_m \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_m = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \sin\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}} = \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \sin\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, se puede aproximar la función f mediante los primeros 5, 10 y 20 términos de su desarrollo en serie de Fourier, empleando el siguiente código de python:&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Archivo:Fourier.gif|800px|thumb|Aproximación de Fourier de la función extendida &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt;]]&lt;br /&gt;
[[Archivo:Error_fourier.gif|800px|thumb|Error absoluto entre la función &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt; y su aproximación de Fourier]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Error_supremo.png|800px|thumb|Error en norma supremo de la aproximación para distintos valores de n]]&lt;br /&gt;
[[Archivo:Error_L2.png|800px|thumb|Error en norma L2 de la aproximación para distintos valores de n]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
from tqdm import tqdm&lt;br /&gt;
import sympy as sp&lt;br /&gt;
import math&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
n=10&lt;br /&gt;
&lt;br /&gt;
def calcular_aproximacion_fourier(n):&lt;br /&gt;
    e = 0&lt;br /&gt;
    l = 0&lt;br /&gt;
    x = sp.symbols('x')&lt;br /&gt;
    &lt;br /&gt;
    for i in tqdm(range(1, n)): &lt;br /&gt;
        integrand = (math.sqrt(2)/math.sqrt(5)) * x&lt;br /&gt;
        * sp.exp(-x) * sp.cos(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        integral_result = sp.integrate(integrand, (x, -2, 3))&lt;br /&gt;
        &lt;br /&gt;
        integrand2 = (math.sqrt(2)/math.sqrt(5)) * x &lt;br /&gt;
        * sp.exp(-x) * sp.sin(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        integral_result2 = sp.integrate(integrand2, (x, -2, 3))&lt;br /&gt;
        &lt;br /&gt;
        e += integral_result * (math.sqrt(2)/math.sqrt(5)) * &lt;br /&gt;
        sp.cos(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        l += integral_result2 * (math.sqrt(2)/math.sqrt(5)) * &lt;br /&gt;
        sp.sin(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
    &lt;br /&gt;
    d0 = -(4 + sp.exp(5)) / (math.sqrt(5) * sp.exp(3))&lt;br /&gt;
    f = d0 / math.sqrt(5) + e + l&lt;br /&gt;
    &lt;br /&gt;
    return sp.lambdify(x, f, &amp;quot;numpy&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Definir la función f(x) = x * exp(-x)&lt;br /&gt;
def f(x):&lt;br /&gt;
    return x * np.exp(-x)&lt;br /&gt;
&lt;br /&gt;
# Generar valores de x en el rango [-2, 3]&lt;br /&gt;
x_vals = np.linspace(-2, 3, 1000)&lt;br /&gt;
y_vals = f(x_vals)&lt;br /&gt;
&lt;br /&gt;
f_numeric=calcular_aproximacion_fourier(n)&lt;br /&gt;
# Aproximación de Fourier (f_numeric debe estar definida previamente)&lt;br /&gt;
y_fourier = f_numeric(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Calcular el error&lt;br /&gt;
error_vals = np.abs(y_vals - y_fourier)&lt;br /&gt;
&lt;br /&gt;
# Crear el gráfico de la función y su aproximación&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, y_vals, label=r'$f(x) = x e^{-x}$',linestyle='dashed', color='b')&lt;br /&gt;
plt.plot(x_vals, y_fourier, label=f&amp;quot;Aproximación n={n}&amp;quot;, color='r')&lt;br /&gt;
plt.axhline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.axvline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;f(x)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Comparación entre f(x) y su Aproximación de Fourier&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Gráfico del error&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, error_vals, label=&amp;quot;Error Absoluto&amp;quot;, color='g')&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error entre f(x) y su aproximación de Fourier&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show&lt;br /&gt;
&lt;br /&gt;
# Valores de n a evaluar&lt;br /&gt;
n_vals1 = np.linspace(10,200,20)&lt;br /&gt;
n_vals=[]&lt;br /&gt;
for i in range(20):&lt;br /&gt;
    n_vals.append(int(n_vals1[i]))&lt;br /&gt;
&lt;br /&gt;
error_L2_vals=[]&lt;br /&gt;
error_supremo_vals = []&lt;br /&gt;
&lt;br /&gt;
for i in n_vals:&lt;br /&gt;
    f_numeric = calcular_aproximacion_fourier(i)&lt;br /&gt;
    y_fourier = f_numeric(x_vals)&lt;br /&gt;
    error_L2 = np.sqrt(np.trapz(np.abs(y_vals - y_fourier)**2, x_vals))&lt;br /&gt;
    error_L2_vals.append(error_L2)&lt;br /&gt;
    error_supremo = np.sqrt(np.trapz(np.abs(y_vals - y_fourier)**2, x_vals))&lt;br /&gt;
    error_supremo_vals.append(error_supremo)&lt;br /&gt;
&lt;br /&gt;
# Graficar el error en norma L2 vs n&lt;br /&gt;
plt.figure(figsize=(6, 4))&lt;br /&gt;
plt.plot(n_vals, error_L2_vals, linestyle='-', color='r')&lt;br /&gt;
plt.xlabel(&amp;quot;n&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error L2&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error en Norma L2 para distintos valores de n&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Graficar el error en norma supremo vs n&lt;br /&gt;
plt.figure(figsize=(6, 4))&lt;br /&gt;
plt.plot(n_vals, error_supremo_vals, linestyle='-', color='r')&lt;br /&gt;
plt.xlabel(&amp;quot;n&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error norma supremo&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error en Norma supremo para distintos valores de n&amp;quot;)&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;
&lt;br /&gt;
=. Referencias =&lt;br /&gt;
* Sandro Salsa, Gianmaria Verzini. Partial Differential Equations in Action(Edición 4).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=84018</id>
		<title>Series de Fourier (Grupo PPAD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=84018"/>
				<updated>2025-02-13T19:56:07Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo PPAD). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Pablo Vidal Nacle, Pablo Maestro Fernández, Alex Heredero Santamaría, Diego Moñino Vizmanos}}&lt;br /&gt;
&lt;br /&gt;
=. Introducción=&lt;br /&gt;
Se define el espacio de Hilbert &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; como:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; L^2(a,b) = \left\{ f(x)| \int_{a}^{b} |f(x)|^{2} dx \lt \infty  \right\}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; a,b \in \mathbb{R} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; a \lt b &amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; es un espacio vectorial con producto escalar asociado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left\langle f,g \right\rangle_{L^{2}}=\int_{a}^{b} f(x)g(x) dx, \forall f,g \in L^{2}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
Esta construcción del espacio &amp;lt;math&amp;gt; L^{2} &amp;lt;/math&amp;gt; motiva plantear la posibilidad de definir una base numerable que permita expresar todos los elementos del espacio en función de los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
=. Base trigonométrica=&lt;br /&gt;
Tal y como se ha definido en la introducción, consideramos el espacio &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;. En éste se define la base numerable &amp;lt;math&amp;gt; \beta &amp;lt;/math&amp;gt; dada por los siguientes elementos:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(n x), \frac{1}{\sqrt{\pi}}sen(n x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
que se conoce como referencia de Fourier trigonométrica.&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;
# Definir el rango de x&lt;br /&gt;
x = np.linspace(-1, 1, 400)&lt;br /&gt;
&lt;br /&gt;
# Graficar el primer término de la base (constante 1/2)&lt;br /&gt;
plt.plot(x, np.full_like(x, 1/2), label=r'$\frac{1}{2}$', linewidth=2)&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos cos(nπx) y sin(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    plt.plot(x, np.cos(n * np.pi * x), label=fr'$\cos({n}\pi x)$')&lt;br /&gt;
    plt.plot(x, np.sin(n * np.pi * x), label=fr'$\sin({n}\pi x)$')&lt;br /&gt;
&lt;br /&gt;
# Configurar la gráfica&lt;br /&gt;
plt.axhline(0, color='black', linewidth=0.8)&lt;br /&gt;
plt.axvline(0, color='black', linewidth=0.8)&lt;br /&gt;
plt.legend(loc='upper right', fontsize='x-small', ncol=2)&lt;br /&gt;
plt.xlabel('x')&lt;br /&gt;
plt.ylabel('Valor de la función')&lt;br /&gt;
plt.title('Primeros 10 términos de la base trigonométrica')&lt;br /&gt;
plt.grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
# Definir el rango de x&lt;br /&gt;
x = np.linspace(-1, 1, 400)&lt;br /&gt;
&lt;br /&gt;
# Crear una figura con 3 subgráficos&lt;br /&gt;
fig, axes = plt.subplots(3, 1, figsize=(6, 12))&lt;br /&gt;
&lt;br /&gt;
# Graficar el primer término de la base (constante 1/2)&lt;br /&gt;
axes[0].plot(x, np.full_like(x, 1/2), label=r'$\frac{1}{2}$', linewidth=2)&lt;br /&gt;
axes[0].set_title('Término constante')&lt;br /&gt;
axes[0].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[0].legend()&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos cos(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    axes[1].plot(x, np.cos(n * np.pi * x), label=fr'$\cos({n}\pi x)$', linewidth=2)&lt;br /&gt;
axes[1].set_title('Funciones coseno')&lt;br /&gt;
axes[1].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[1].legend(fontsize='x-small', ncol=2)&lt;br /&gt;
&lt;br /&gt;
# Graficar los términos sin(nπx) para n = 1, ..., 10&lt;br /&gt;
for n in range(1, 11):&lt;br /&gt;
    axes[2].plot(x, np.sin(n * np.pi * x), label=fr'$\sin({n}\pi x)$', linewidth=2)&lt;br /&gt;
axes[2].set_title('Funciones seno')&lt;br /&gt;
axes[2].grid(True, linestyle='--', alpha=0.6)&lt;br /&gt;
axes[2].legend(fontsize='x-small', ncol=2)&lt;br /&gt;
&lt;br /&gt;
# Ajustar diseño&lt;br /&gt;
plt.tight_layout()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=. Aproximación de una función por la base trigonométrica=&lt;br /&gt;
Sea &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(x) = xe^{-x}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
definida en el intervalo [-2,3], se busca aproximar f mediante la base trigonométrica del espacio &amp;lt;math&amp;gt;L^2(-2,3)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Consideramos el espacio de Hilbert \( L^2(- \pi, \pi) \) con el producto interno \( \langle \cdot, \cdot \rangle_{L^2} \). En este espacio tomamos la base de Fourier trigonométrica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(nx), \frac{1}{\sqrt{\pi}}sen(nx) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si consideramos ahora el espacio \( L^2(a, b) \), buscamos una base ortonormal (referencia de Fourier) en este espacio. Para ello, hacemos el cambio de variable:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; h(x) = \frac{2\pi}{b-a} (x - a) - \pi, \quad x \in [a, b] &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta manera, \( h(x) \in [-\pi, \pi] \), lo que permite trasladar la base ortonormal del espacio \( L^2(- \pi, \pi) \) al nuevo intervalo \( [a, b] \).&lt;br /&gt;
&lt;br /&gt;
Bajo este cambio de variable, una función \( f(x) \) en \( L^2(a,b) \) se puede expresar como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) = d_0 + \sum_{n=0}^{\infty} d_n \cos(n R(x)) + \sum_{n=0}^{\infty} c_n \sin(n R(x))&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde el coeficiente \( d_0 \) es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \frac{1}{\sqrt{b-a}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para que su norma sea 1, pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\left\langle \frac{1}{\sqrt{b-a}}, \frac{1}{\sqrt{b-a}} \right\rangle = \int_a^b \frac{1}{b-a} \, dx = 1.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, obtenemos la base de Fourier de \( L^2(a,b) \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{b-a}}, \frac{\sqrt{2}}{\sqrt{b-a}} \cos\left( n \left( \frac{2\pi (x-a)}{b-a} - \pi \right) \right), \frac{\sqrt{2}}{\sqrt{b-a}} \sin\left( n \left( \frac{2\pi (x-a)}{b-a} - \pi \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para preservar la ortonormalidad en \( L^2(a,b) \), los senos y cosenos han sido normalizados con el factor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{\sqrt{2}}{\sqrt{b-a}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para los términos trigonométricos.&lt;br /&gt;
&lt;br /&gt;
En &amp;lt;math&amp;gt; L^2(-2,3) &amp;lt;/math&amp;gt;, nos queda la base:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{5}}, \frac{\sqrt{2}}{\sqrt{5}} \cos\left( n \left( \frac{2\pi x - \pi}{5} \right) \right), \frac{\sqrt{2}}{\sqrt{5}} \sin\left( n \left( \frac{2\pi x - \pi}{5} \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sea la función \( f(x) = x e^{-x} \). Se verifica que \( f(x) \in L^2(-2,3) \), pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\int_{-2}^{3} x^2 e^{-2x} \, dx = \frac{5(e^{10}-5)}{4 e^6}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que \( f(x) \) es continua y satisface la condición de Dirichlet, su desarrollo en serie de Fourier converge a la función en los puntos de continuidad y en los extremos. Así, se tiene:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f \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} d_m \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;
Calculemos ahora los coeficientes de la serie de Fourier&lt;br /&gt;
&lt;br /&gt;
El coeficiente \( d_0 \) se obtiene como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \left\langle f,\frac{1}{\sqrt{5}} \right\rangle_{L^{2}} = \int_{-2}^{3} x e^{-x} \, dx = \frac{-4 + e^5}{\sqrt{5} e^3}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_n \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_n = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \cos\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}}= \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \cos\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_m \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_m = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \sin\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}} = \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \sin\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, se puede aproximar la función f mediante los primeros 5, 10 y 20 términos de su desarrollo en serie de Fourier, empleando el siguiente código de python:&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Archivo:Fourier.gif|800px|thumb|Aproximación de Fourier de la función extendida &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt;]]&lt;br /&gt;
[[Archivo:Error_fourier.gif|800px|thumb|Error absoluto entre la función &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt; y su aproximación de Fourier]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Error_supremo.png|800px|thumb|Error en norma supremo de la aproximación para distintos valores de n]]&lt;br /&gt;
[[Archivo:Error_L2.png|800px|thumb|Error en norma L2 de la aproximación para distintos valores de n]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
from tqdm import tqdm&lt;br /&gt;
import sympy as sp&lt;br /&gt;
import math&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
n=10&lt;br /&gt;
&lt;br /&gt;
def calcular_aproximacion_fourier(n):&lt;br /&gt;
    e = 0&lt;br /&gt;
    l = 0&lt;br /&gt;
    x = sp.symbols('x')&lt;br /&gt;
    &lt;br /&gt;
    for i in tqdm(range(1, n)): &lt;br /&gt;
        integrand = (math.sqrt(2)/math.sqrt(5)) * x&lt;br /&gt;
        * sp.exp(-x) * sp.cos(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        integral_result = sp.integrate(integrand, (x, -2, 3))&lt;br /&gt;
        &lt;br /&gt;
        integrand2 = (math.sqrt(2)/math.sqrt(5)) * x &lt;br /&gt;
        * sp.exp(-x) * sp.sin(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        integral_result2 = sp.integrate(integrand2, (x, -2, 3))&lt;br /&gt;
        &lt;br /&gt;
        e += integral_result * (math.sqrt(2)/math.sqrt(5)) * &lt;br /&gt;
        sp.cos(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
        l += integral_result2 * (math.sqrt(2)/math.sqrt(5)) * &lt;br /&gt;
        sp.sin(i * ((2*sp.pi*x - sp.pi) / 5))&lt;br /&gt;
    &lt;br /&gt;
    d0 = -(4 + sp.exp(5)) / (math.sqrt(5) * sp.exp(3))&lt;br /&gt;
    f = d0 / math.sqrt(5) + e + l&lt;br /&gt;
    &lt;br /&gt;
    return sp.lambdify(x, f, &amp;quot;numpy&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Definir la función f(x) = x * exp(-x)&lt;br /&gt;
def f(x):&lt;br /&gt;
    return x * np.exp(-x)&lt;br /&gt;
&lt;br /&gt;
# Generar valores de x en el rango [-2, 3]&lt;br /&gt;
x_vals = np.linspace(-2, 3, 1000)&lt;br /&gt;
y_vals = f(x_vals)&lt;br /&gt;
&lt;br /&gt;
f_numeric=calcular_aproximacion_fourier(n)&lt;br /&gt;
# Aproximación de Fourier (f_numeric debe estar definida previamente)&lt;br /&gt;
y_fourier = f_numeric(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Calcular el error&lt;br /&gt;
error_vals = np.abs(y_vals - y_fourier)&lt;br /&gt;
&lt;br /&gt;
# Crear el gráfico de la función y su aproximación&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, y_vals, label=r'$f(x) = x e^{-x}$',linestyle='dashed', color='b')&lt;br /&gt;
plt.plot(x_vals, y_fourier, label=f&amp;quot;Aproximación n={n}&amp;quot;, color='r')&lt;br /&gt;
plt.axhline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.axvline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;f(x)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Comparación entre f(x) y su Aproximación de Fourier&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Gráfico del error&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, error_vals, label=&amp;quot;Error Absoluto&amp;quot;, color='g')&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error entre f(x) y su aproximación de Fourier&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show&lt;br /&gt;
&lt;br /&gt;
# Valores de n a evaluar&lt;br /&gt;
n_vals1 = np.linspace(10,200,20)&lt;br /&gt;
n_vals=[]&lt;br /&gt;
for i in range(20):&lt;br /&gt;
    n_vals.append(int(n_vals1[i]))&lt;br /&gt;
&lt;br /&gt;
error_L2_vals=[]&lt;br /&gt;
error_supremo_vals = []&lt;br /&gt;
&lt;br /&gt;
for i in n_vals:&lt;br /&gt;
    f_numeric = calcular_aproximacion_fourier(i)&lt;br /&gt;
    y_fourier = f_numeric(x_vals)&lt;br /&gt;
    error_L2 = np.sqrt(np.trapz(np.abs(y_vals - y_fourier)**2, x_vals))&lt;br /&gt;
    error_L2_vals.append(error_L2)&lt;br /&gt;
    error_supremo = np.sqrt(np.trapz(np.abs(y_vals - y_fourier)**2, x_vals))&lt;br /&gt;
    error_supremo_vals.append(error_supremo)&lt;br /&gt;
&lt;br /&gt;
# Graficar el error en norma L2 vs n&lt;br /&gt;
plt.figure(figsize=(6, 4))&lt;br /&gt;
plt.plot(n_vals, error_L2_vals, linestyle='-', color='r')&lt;br /&gt;
plt.xlabel(&amp;quot;n&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error L2&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error en Norma L2 para distintos valores de n&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Graficar el error en norma supremo vs n&lt;br /&gt;
plt.figure(figsize=(6, 4))&lt;br /&gt;
plt.plot(n_vals, error_supremo_vals, linestyle='-', color='r')&lt;br /&gt;
plt.xlabel(&amp;quot;n&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error norma supremo&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error en Norma supremo para distintos valores de n&amp;quot;)&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;
&lt;br /&gt;
=. Referencias =&lt;br /&gt;
* Sandro Salsa, Gianmaria Verzini. Partial Differential Equations in Action(Edición 4).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=83789</id>
		<title>Series de Fourier (Grupo PPAD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=83789"/>
				<updated>2025-02-12T18:08:43Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo PPAD). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Pablo Vidal Nacle, Pablo Maestro Fernández, Alex Heredero Santamaría, Diego Moñino Vizmanos}}&lt;br /&gt;
&lt;br /&gt;
=. Introducción=&lt;br /&gt;
Se define el espacio de Hilbert &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; como:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; L^2(a,b) = \left\{ f(x)| \int_{a}^{b} |f(x)|^{2} dx \lt \infty  \right\}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; a,b \in \mathbb{R} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; a \lt b &amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; es un espacio vecotrial con producto escalar asociado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left\langle f,g \right\rangle_{L^{2}}=\int_{a}^{b} f(x)g(x) dx, \forall f,g \in L^{2}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
Esta construcción del espacio &amp;lt;math&amp;gt; L^{2} &amp;lt;/math&amp;gt; motiva plantear la posibilidad de definir una base numerable que permita expresar todos los elementos del espacio en función de los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
=. Base trigonométrica=&lt;br /&gt;
Tal y como se ha definido en la introducción, consideramos el espacio &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;. En éste se define la base numerable &amp;lt;math&amp;gt; \beta &amp;lt;/math&amp;gt; dada por los siguientes elementos:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(n x), \frac{1}{\sqrt{\pi}}sen(n x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
que se conoce como referencia de Fourier trigonométrica.&lt;br /&gt;
&lt;br /&gt;
=. Aproximación de una función por la base trigonométrica=&lt;br /&gt;
Sea &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(x) = xe^{-x}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
definida en el intervalo [-2,3], se busca aproximar f mediante la base trigonométrica del espacio &amp;lt;math&amp;gt;L^2(-2,3)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Consideramos el espacio de Hilbert \( L^2(- \pi, \pi) \) con el producto interno \( \langle \cdot, \cdot \rangle_{L^2} \). En este espacio tomamos la base de Fourier trigonométrica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(nx), \frac{1}{\sqrt{\pi}}sen(nx) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si consideramos ahora el espacio \( L^2(a, b) \), buscamos una base ortonormal (referencia de Fourier) en este espacio. Para ello, hacemos el cambio de variable:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; h(x) = \frac{2\pi}{b-a} (x - a) - \pi, \quad x \in [a, b] &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta manera, \( h(x) \in [-\pi, \pi] \), lo que permite trasladar la base ortonormal del espacio \( L^2(- \pi, \pi) \) al nuevo intervalo \( [a, b] \).&lt;br /&gt;
&lt;br /&gt;
Bajo este cambio de variable, una función \( f(x) \) en \( L^2(a,b) \) se puede expresar como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) = d_0 + \sum_{n=0}^{\infty} d_n \cos(n R(x)) + \sum_{n=0}^{\infty} c_n \sin(n R(x))&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde el coeficiente \( d_0 \) es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \frac{1}{\sqrt{b-a}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para que su norma sea 1, pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\left\langle \frac{1}{\sqrt{b-a}}, \frac{1}{\sqrt{b-a}} \right\rangle = \int_a^b \frac{1}{b-a} \, dx = 1.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, obtenemos la base de Fourier de \( L^2(a,b) \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{b-a}}, \frac{\sqrt{2}}{\sqrt{b-a}} \cos\left( n \left( \frac{2\pi (x-a)}{b-a} - \pi \right) \right), \frac{\sqrt{2}}{\sqrt{b-a}} \sin\left( n \left( \frac{2\pi (x-a)}{b-a} - \pi \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para preservar la ortonormalidad en \( L^2(a,b) \), los senos y cosenos han sido normalizados con el factor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{\sqrt{2}}{\sqrt{b-a}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para los términos trigonométricos.&lt;br /&gt;
&lt;br /&gt;
En &amp;lt;math&amp;gt; L^2(-2,3) &amp;lt;/math&amp;gt;, nos queda la base:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{5}}, \frac{\sqrt{2}}{\sqrt{5}} \cos\left( n \left( \frac{2\pi x - \pi}{5} \right) \right), \frac{\sqrt{2}}{\sqrt{5}} \sin\left( n \left( \frac{2\pi x - \pi}{5} \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sea la función \( f(x) = x e^{-x} \). Se verifica que \( f(x) \in L^2(-2,3) \), pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\int_{-2}^{3} x^2 e^{-2x} \, dx = \frac{5(e^{10}-5)}{4 e^6}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que \( f(x) \) es continua y satisface la condición de Dirichlet, su desarrollo en serie de Fourier converge a la función en los puntos de continuidad y en los extremos. Así, se tiene:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f \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} d_m \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;
Calculemos ahora los coeficientes de la serie de Fourier&lt;br /&gt;
&lt;br /&gt;
El coeficiente \( d_0 \) se obtiene como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \left\langle f,\frac{1}{\sqrt{5}} \right\rangle_{L^{2}} = \int_{-2}^{3} x e^{-x} \, dx = \frac{-4 + e^5}{\sqrt{5} e^3}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_n \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_n = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \cos\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}}= \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \cos\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_m \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_m = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \sin\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}} = \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \sin\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, se puede aproximar la función f mediante los primeros 5, 10 y 20 términos de su desarrollo en serie de Fourier, empleando el siguiente código de python:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Fourier.gif|600px|thumb|Aproximación de Fourier de la función extendida &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt;]]&lt;br /&gt;
[[Archivo:Error_fourier.gif|600px|thumb|Error absoluto entre la función &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt; y su aproximación de Fourier]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
from tqdm import tqdm&lt;br /&gt;
import sympy as sp&lt;br /&gt;
import math&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
e=0&lt;br /&gt;
n=5&lt;br /&gt;
l=0&lt;br /&gt;
&lt;br /&gt;
for i in tqdm(range(1,n)): &lt;br /&gt;
    # Definir la variable x&lt;br /&gt;
    x = sp.symbols('x')&lt;br /&gt;
&lt;br /&gt;
    # Definir la función a integrar&lt;br /&gt;
    integrand =(math.sqrt(2)/math.sqrt(5))* x * sp.exp(-x)*sp.cos(i * ((2*sp.pi*x-sp.pi)/5))&lt;br /&gt;
&lt;br /&gt;
    # Calcular la integral de la función en el intervalo [-2, 3]&lt;br /&gt;
    integral_result = sp.integrate(integrand, (x, -2, 3))&lt;br /&gt;
    integrand2 = (math.sqrt(2)/math.sqrt(5))* x * sp.exp(-x)*sp.sin(i * ((2*sp.pi*x-sp.pi)/5))&lt;br /&gt;
&lt;br /&gt;
    # Calcular la integral de la función en el intervalo [-2, 3]&lt;br /&gt;
    integral_result2 = sp.integrate(integrand2, (x, -2, 3))&lt;br /&gt;
    e=e+integral_result*(math.sqrt(2)/math.sqrt(5))*sp.cos(i * ((2*sp.pi*x-sp.pi)/5))&lt;br /&gt;
    l=l+integral_result2*(math.sqrt(2)/math.sqrt(5))*sp.sin(i * ((2*sp.pi*x-sp.pi)/5))&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
d0=-(4+sp.exp(5))/(math.sqrt(5)*sp.exp(3))&lt;br /&gt;
&lt;br /&gt;
f=d0/math.sqrt(5)+e+l&lt;br /&gt;
&lt;br /&gt;
f_numeric = sp.lambdify(x, f, &amp;quot;numpy&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Definir la función f(x) = x * exp(-x)&lt;br /&gt;
def f(x):&lt;br /&gt;
    return x * np.exp(-x)&lt;br /&gt;
&lt;br /&gt;
# Generar valores de x en el rango [-2, 3]&lt;br /&gt;
x_vals = np.linspace(-2, 3, 1000)&lt;br /&gt;
y_vals = f(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Aproximación de Fourier (f_numeric debe estar definida previamente)&lt;br /&gt;
y_fourier = f_numeric(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Calcular el error&lt;br /&gt;
error_vals = np.abs(y_vals - y_fourier)&lt;br /&gt;
&lt;br /&gt;
# Crear el gráfico de la función y su aproximación&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, y_vals, label=r'$f(x) = x e^{-x}$',linestyle='dashed', color='b')&lt;br /&gt;
plt.plot(x_vals, y_fourier, label=f&amp;quot;Aproximación n={n}&amp;quot;, color='r')&lt;br /&gt;
plt.axhline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.axvline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;f(x)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Comparación entre f(x) y su Aproximación de Fourier&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Gráfico del error&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, error_vals, label=&amp;quot;Error Absoluto&amp;quot;, color='g')&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error entre f(x) y su aproximación de Fourier&amp;quot;)&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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=83788</id>
		<title>Series de Fourier (Grupo PPAD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=83788"/>
				<updated>2025-02-12T18:08:12Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo PPAD). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Pablo Vidal Nacle, Pablo Maestro Fernández, Alex Heredero Santamaría, Diego Moñino Vizmanos}}&lt;br /&gt;
&lt;br /&gt;
=. Introducción=&lt;br /&gt;
Se define el espacio de Hilbert &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; como:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; L^2(a,b) = \left\{ f(x)| \int_{a}^{b} |f(x)|^{2} dx \lt \infty  \right\}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; a,b \in \mathbb{R} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; a \lt b &amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; es un espacio vecotrial con producto escalar asociado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left\langle f,g \right\rangle_{L^{2}}=\int_{a}^{b} f(x)g(x) dx, \forall f,g \in L^{2}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
Esta construcción del espacio &amp;lt;math&amp;gt; L^{2} &amp;lt;/math&amp;gt; motiva plantear la posibilidad de definir una base numerable que permita expresar todos los elementos del espacio en función de los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
=. Base trigonométrica=&lt;br /&gt;
Tal y como se ha definido en la introducción, consideramos el espacio &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;. En éste se define la base numerable &amp;lt;math&amp;gt; \beta &amp;lt;/math&amp;gt; dada por los siguientes elementos:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(n x), \frac{1}{\sqrt{\pi}}sen(n x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
que se conoce como referencia de Fourier trigonométrica.&lt;br /&gt;
&lt;br /&gt;
=. Aproximación de una función por la base trigonométrica=&lt;br /&gt;
Sea &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(x) = xe^{-x}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
definida en el intervalo [-2,3], se busca aproximar f mediante la base trigonométrica del espacio &amp;lt;math&amp;gt;L^2(-2,3)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Consideramos el espacio de Hilbert \( L^2(- \pi, \pi) \) con el producto interno \( \langle \cdot, \cdot \rangle_{L^2} \). En este espacio tomamos la base de Fourier trigonométrica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(nx), \frac{1}{\sqrt{\pi}}sen(nx) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si consideramos ahora el espacio \( L^2(a, b) \), buscamos una base ortonormal (referencia de Fourier) en este espacio. Para ello, hacemos el cambio de variable:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; h(x) = \frac{2\pi}{b-a} (x - a) - \pi, \quad x \in [a, b] &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta manera, \( h(x) \in [-\pi, \pi] \), lo que permite trasladar la base ortonormal del espacio \( L^2(- \pi, \pi) \) al nuevo intervalo \( [a, b] \).&lt;br /&gt;
&lt;br /&gt;
Bajo este cambio de variable, una función \( f(x) \) en \( L^2(a,b) \) se puede expresar como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) = d_0 + \sum_{n=0}^{\infty} d_n \cos(n R(x)) + \sum_{n=0}^{\infty} c_n \sin(n R(x))&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde el coeficiente \( d_0 \) es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \frac{1}{\sqrt{b-a}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para que su norma sea 1, pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\left\langle \frac{1}{\sqrt{b-a}}, \frac{1}{\sqrt{b-a}} \right\rangle = \int_a^b \frac{1}{b-a} \, dx = 1.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, obtenemos la base de Fourier de \( L^2(a,b) \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{b-a}}, \frac{\sqrt{2}}{\sqrt{b-a}} \cos\left( n \left( \frac{2\pi (x-a)}{b-a} - \pi \right) \right), \frac{\sqrt{2}}{\sqrt{b-a}} \sin\left( n \left( \frac{2\pi (x-a)}{b-a} - \pi \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para preservar la ortonormalidad en \( L^2(a,b) \), los senos y cosenos han sido normalizados con el factor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{\sqrt{2}}{\sqrt{b-a}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para los términos trigonométricos.&lt;br /&gt;
&lt;br /&gt;
En &amp;lt;math&amp;gt; L^2(-2,3) &amp;lt;\math&amp;gt;, nos queda la base:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{5}}, \frac{\sqrt{2}}{\sqrt{5}} \cos\left( n \left( \frac{2\pi x - \pi}{5} \right) \right), \frac{\sqrt{2}}{\sqrt{5}} \sin\left( n \left( \frac{2\pi x - \pi}{5} \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sea la función \( f(x) = x e^{-x} \). Se verifica que \( f(x) \in L^2(-2,3) \), pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\int_{-2}^{3} x^2 e^{-2x} \, dx = \frac{5(e^{10}-5)}{4 e^6}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que \( f(x) \) es continua y satisface la condición de Dirichlet, su desarrollo en serie de Fourier converge a la función en los puntos de continuidad y en los extremos. Así, se tiene:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f \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} d_m \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;
Calculemos ahora los coeficientes de la serie de Fourier&lt;br /&gt;
&lt;br /&gt;
El coeficiente \( d_0 \) se obtiene como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \left\langle f,\frac{1}{\sqrt{5}} \right\rangle_{L^{2}} = \int_{-2}^{3} x e^{-x} \, dx = \frac{-4 + e^5}{\sqrt{5} e^3}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_n \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_n = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \cos\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}}= \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \cos\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_m \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_m = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \sin\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}} = \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \sin\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, se puede aproximar la función f mediante los primeros 5, 10 y 20 términos de su desarrollo en serie de Fourier, empleando el siguiente código de python:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Fourier.gif|600px|thumb|Aproximación de Fourier de la función extendida &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt;]]&lt;br /&gt;
[[Archivo:Error_fourier.gif|600px|thumb|Error absoluto entre la función &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt; y su aproximación de Fourier]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
from tqdm import tqdm&lt;br /&gt;
import sympy as sp&lt;br /&gt;
import math&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
e=0&lt;br /&gt;
n=5&lt;br /&gt;
l=0&lt;br /&gt;
&lt;br /&gt;
for i in tqdm(range(1,n)): &lt;br /&gt;
    # Definir la variable x&lt;br /&gt;
    x = sp.symbols('x')&lt;br /&gt;
&lt;br /&gt;
    # Definir la función a integrar&lt;br /&gt;
    integrand =(math.sqrt(2)/math.sqrt(5))* x * sp.exp(-x)*sp.cos(i * ((2*sp.pi*x-sp.pi)/5))&lt;br /&gt;
&lt;br /&gt;
    # Calcular la integral de la función en el intervalo [-2, 3]&lt;br /&gt;
    integral_result = sp.integrate(integrand, (x, -2, 3))&lt;br /&gt;
    integrand2 = (math.sqrt(2)/math.sqrt(5))* x * sp.exp(-x)*sp.sin(i * ((2*sp.pi*x-sp.pi)/5))&lt;br /&gt;
&lt;br /&gt;
    # Calcular la integral de la función en el intervalo [-2, 3]&lt;br /&gt;
    integral_result2 = sp.integrate(integrand2, (x, -2, 3))&lt;br /&gt;
    e=e+integral_result*(math.sqrt(2)/math.sqrt(5))*sp.cos(i * ((2*sp.pi*x-sp.pi)/5))&lt;br /&gt;
    l=l+integral_result2*(math.sqrt(2)/math.sqrt(5))*sp.sin(i * ((2*sp.pi*x-sp.pi)/5))&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
d0=-(4+sp.exp(5))/(math.sqrt(5)*sp.exp(3))&lt;br /&gt;
&lt;br /&gt;
f=d0/math.sqrt(5)+e+l&lt;br /&gt;
&lt;br /&gt;
f_numeric = sp.lambdify(x, f, &amp;quot;numpy&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Definir la función f(x) = x * exp(-x)&lt;br /&gt;
def f(x):&lt;br /&gt;
    return x * np.exp(-x)&lt;br /&gt;
&lt;br /&gt;
# Generar valores de x en el rango [-2, 3]&lt;br /&gt;
x_vals = np.linspace(-2, 3, 1000)&lt;br /&gt;
y_vals = f(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Aproximación de Fourier (f_numeric debe estar definida previamente)&lt;br /&gt;
y_fourier = f_numeric(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Calcular el error&lt;br /&gt;
error_vals = np.abs(y_vals - y_fourier)&lt;br /&gt;
&lt;br /&gt;
# Crear el gráfico de la función y su aproximación&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, y_vals, label=r'$f(x) = x e^{-x}$',linestyle='dashed', color='b')&lt;br /&gt;
plt.plot(x_vals, y_fourier, label=f&amp;quot;Aproximación n={n}&amp;quot;, color='r')&lt;br /&gt;
plt.axhline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.axvline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;f(x)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Comparación entre f(x) y su Aproximación de Fourier&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Gráfico del error&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, error_vals, label=&amp;quot;Error Absoluto&amp;quot;, color='g')&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error entre f(x) y su aproximación de Fourier&amp;quot;)&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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=83786</id>
		<title>Series de Fourier (Grupo PPAD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=83786"/>
				<updated>2025-02-12T18:06:51Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo PPAD). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Pablo Vidal Nacle, Pablo Maestro Fernández, Alex Heredero Santamaría, Diego Moñino Vizmanos}}&lt;br /&gt;
&lt;br /&gt;
=. Introducción=&lt;br /&gt;
Se define el espacio de Hilbert &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; como:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; L^2(a,b) = \left\{ f(x)| \int_{a}^{b} |f(x)|^{2} dx \lt \infty  \right\}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; a,b \in \mathbb{R} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; a \lt b &amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; es un espacio vecotrial con producto escalar asociado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left\langle f,g \right\rangle_{L^{2}}=\int_{a}^{b} f(x)g(x) dx, \forall f,g \in L^{2}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
Esta construcción del espacio &amp;lt;math&amp;gt; L^{2} &amp;lt;/math&amp;gt; motiva plantear la posibilidad de definir una base numerable que permita expresar todos los elementos del espacio en función de los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
=. Base trigonométrica=&lt;br /&gt;
Tal y como se ha definido en la introducción, consideramos el espacio &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;. En éste se define la base numerable &amp;lt;math&amp;gt; \beta &amp;lt;/math&amp;gt; dada por los siguientes elementos:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(n x), \frac{1}{\sqrt{\pi}}sen(n x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
que se conoce como referencia de Fourier trigonométrica.&lt;br /&gt;
&lt;br /&gt;
=. Aproximación de una función por la base trigonométrica=&lt;br /&gt;
Sea &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(x) = xe^{-x}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
definida en el intervalo [-2,3], se busca aproximar f mediante la base trigonométrica del espacio &amp;lt;math&amp;gt;L^2(-2,3)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Consideramos el espacio de Hilbert \( L^2(- \pi, \pi) \) con el producto interno \( \langle \cdot, \cdot \rangle_{L^2} \). En este espacio tomamos la base de Fourier trigonométrica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(nx), \frac{1}{\sqrt{\pi}}sen(nx) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si consideramos ahora el espacio \( L^2(a, b) \), buscamos una base ortonormal (referencia de Fourier) en este espacio. Para ello, hacemos el cambio de variable:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; h(x) = \frac{2\pi}{b-a} (x - a) - \pi, \quad x \in [a, b] &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta manera, \( h(x) \in [-\pi, \pi] \), lo que permite trasladar la base ortonormal del espacio \( L^2(- \pi, \pi) \) al nuevo intervalo \( [a, b] \).&lt;br /&gt;
&lt;br /&gt;
Bajo este cambio de variable, una función \( f(x) \) en \( L^2(a,b) \) se puede expresar como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) = d_0 + \sum_{n=0}^{\infty} d_n \cos(n R(x)) + \sum_{n=0}^{\infty} c_n \sin(n R(x))&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde el coeficiente \( d_0 \) es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \frac{1}{\sqrt{b-a}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para que su norma sea 1, pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\left\langle \frac{1}{\sqrt{b-a}}, \frac{1}{\sqrt{b-a}} \right\rangle = \int_a^b \frac{1}{b-a} \, dx = 1.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, obtenemos la base de Fourier de \( L^2(a,b) \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{b-a}}, \frac{\sqrt{2}}{\sqrt{b-a}} \cos\left( n \left( \frac{2\pi (x-a)}{b-a} - \pi \right) \right), \frac{\sqrt{2}}{\sqrt{b-a}} \sin\left( n \left( \frac{2\pi (x-a)}{b-a} - \pi \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para preservar la ortonormalidad en \( L^2(a,b) \), los senos y cosenos han sido normalizados con el factor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{\sqrt{2}}{\sqrt{b-a}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para los términos trigonométricos.&lt;br /&gt;
&lt;br /&gt;
En L^2(-2,3), nos queda la base:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{5}}, \frac{\sqrt{2}}{\sqrt{5}} \cos\left( n \left( \frac{2\pi x - \pi}{5} \right) \right), \frac{\sqrt{2}}{\sqrt{5}} \sin\left( n \left( \frac{2\pi x - \pi}{5} \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sea la función \( f(x) = x e^{-x} \). Se verifica que \( f(x) \in L^2(-2,3) \), pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\int_{-2}^{3} x^2 e^{-2x} \, dx = \frac{5(e^{10}-5)}{4 e^6}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que \( f(x) \) es continua y satisface la condición de Dirichlet, su desarrollo en serie de Fourier converge a la función en los puntos de continuidad y en los extremos. Así, se tiene:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f \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} d_m \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;
Calculemos ahora los coeficientes de la serie de Fourier&lt;br /&gt;
&lt;br /&gt;
El coeficiente \( d_0 \) se obtiene como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \left\langle f,\frac{1}{\sqrt{5}} \right\rangle_{L^{2}} = \int_{-2}^{3} x e^{-x} \, dx = \frac{-4 + e^5}{\sqrt{5} e^3}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_n \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_n = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \cos\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}}= \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \cos\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_m \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_m = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \sin\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}} = \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \sin\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, se puede aproximar la función f mediante los primeros 5, 10 y 20 términos de su desarrollo en serie de Fourier, empleando el siguiente código de python:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Fourier.gif|600px|thumb|Aproximación de Fourier de la función extendida &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt;]]&lt;br /&gt;
[[Archivo:Error_fourier.gif|600px|thumb|Error absoluto entre la función &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt; y su aproximación de Fourier]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
from tqdm import tqdm&lt;br /&gt;
import sympy as sp&lt;br /&gt;
import math&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
e=0&lt;br /&gt;
n=5&lt;br /&gt;
l=0&lt;br /&gt;
&lt;br /&gt;
for i in tqdm(range(1,n)): &lt;br /&gt;
    # Definir la variable x&lt;br /&gt;
    x = sp.symbols('x')&lt;br /&gt;
&lt;br /&gt;
    # Definir la función a integrar&lt;br /&gt;
    integrand =(math.sqrt(2)/math.sqrt(5))* x * sp.exp(-x)*sp.cos(i * ((2*sp.pi*x-sp.pi)/5))&lt;br /&gt;
&lt;br /&gt;
    # Calcular la integral de la función en el intervalo [-2, 3]&lt;br /&gt;
    integral_result = sp.integrate(integrand, (x, -2, 3))&lt;br /&gt;
    integrand2 = (math.sqrt(2)/math.sqrt(5))* x * sp.exp(-x)*sp.sin(i * ((2*sp.pi*x-sp.pi)/5))&lt;br /&gt;
&lt;br /&gt;
    # Calcular la integral de la función en el intervalo [-2, 3]&lt;br /&gt;
    integral_result2 = sp.integrate(integrand2, (x, -2, 3))&lt;br /&gt;
    e=e+integral_result*(math.sqrt(2)/math.sqrt(5))*sp.cos(i * ((2*sp.pi*x-sp.pi)/5))&lt;br /&gt;
    l=l+integral_result2*(math.sqrt(2)/math.sqrt(5))*sp.sin(i * ((2*sp.pi*x-sp.pi)/5))&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
d0=-(4+sp.exp(5))/(math.sqrt(5)*sp.exp(3))&lt;br /&gt;
&lt;br /&gt;
f=d0/math.sqrt(5)+e+l&lt;br /&gt;
&lt;br /&gt;
f_numeric = sp.lambdify(x, f, &amp;quot;numpy&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Definir la función f(x) = x * exp(-x)&lt;br /&gt;
def f(x):&lt;br /&gt;
    return x * np.exp(-x)&lt;br /&gt;
&lt;br /&gt;
# Generar valores de x en el rango [-2, 3]&lt;br /&gt;
x_vals = np.linspace(-2, 3, 1000)&lt;br /&gt;
y_vals = f(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Aproximación de Fourier (f_numeric debe estar definida previamente)&lt;br /&gt;
y_fourier = f_numeric(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Calcular el error&lt;br /&gt;
error_vals = np.abs(y_vals - y_fourier)&lt;br /&gt;
&lt;br /&gt;
# Crear el gráfico de la función y su aproximación&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, y_vals, label=r'$f(x) = x e^{-x}$',linestyle='dashed', color='b')&lt;br /&gt;
plt.plot(x_vals, y_fourier, label=f&amp;quot;Aproximación n={n}&amp;quot;, color='r')&lt;br /&gt;
plt.axhline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.axvline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;f(x)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Comparación entre f(x) y su Aproximación de Fourier&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Gráfico del error&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, error_vals, label=&amp;quot;Error Absoluto&amp;quot;, color='g')&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error entre f(x) y su aproximación de Fourier&amp;quot;)&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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=83785</id>
		<title>Series de Fourier (Grupo PPAD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=83785"/>
				<updated>2025-02-12T18:03:03Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo PPAD). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Pablo Vidal Nacle, Pablo Maestro Fernández, Alex Heredero Santamaría, Diego Moñino Vizmanos}}&lt;br /&gt;
&lt;br /&gt;
=. Introducción=&lt;br /&gt;
Se define el espacio de Hilbert &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; como:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; L^2(a,b) = \left\{ f(x)| \int_{a}^{b} |f(x)|^{2} dx \lt \infty  \right\}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; a,b \in \mathbb{R} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; a \lt b &amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; es un espacio vecotrial con producto escalar asociado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left\langle f,g \right\rangle_{L^{2}}=\int_{a}^{b} f(x)g(x) dx, \forall f,g \in L^{2}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
Esta construcción del espacio &amp;lt;math&amp;gt; L^{2} &amp;lt;/math&amp;gt; motiva plantear la posibilidad de definir una base numerable que permita expresar todos los elementos del espacio en función de los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
=. Base trigonométrica=&lt;br /&gt;
Tal y como se ha definido en la introducción, consideramos el espacio &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;. En éste se define la base numerable &amp;lt;math&amp;gt; \beta &amp;lt;/math&amp;gt; dada por los siguientes elementos:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(n x), \frac{1}{\sqrt{\pi}}sen(n x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
que se conoce como referencia de Fourier trigonométrica.&lt;br /&gt;
&lt;br /&gt;
=. Aproximación de una función por la base trigonométrica=&lt;br /&gt;
Sea &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(x) = xe^{-x}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
definida en el intervalo [-2,3], se busca aproximar f mediante la base trigonométrica del espacio &amp;lt;math&amp;gt;L^2(-2,3)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Consideramos el espacio de Hilbert \( L^2(- \pi, \pi) \) con el producto interno \( \langle \cdot, \cdot \rangle_{L^2} \). En este espacio tomamos la base de Fourier trigonométrica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(nx), \frac{1}{\sqrt{\pi}}sen(nx) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si consideramos ahora el espacio \( L^2(a, b) \), buscamos una base ortonormal (referencia de Fourier) en este espacio. Para ello, hacemos el cambio de variable:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; h(x) = \frac{2\pi}{b-a} (x - a) - \pi, \quad x \in [a, b] &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta manera, \( h(x) \in [-\pi, \pi] \), lo que permite trasladar la base ortonormal del espacio \( L^2(- \pi, \pi) \) al nuevo intervalo \( [a, b] \).&lt;br /&gt;
&lt;br /&gt;
Bajo este cambio de variable, una función \( f(x) \) en \( L^2(a,b) \) se puede expresar como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) = d_0 + \sum_{n=0}^{\infty} d_n \cos(n R(x)) + \sum_{n=0}^{\infty} c_n \sin(n R(x))&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde el coeficiente \( d_0 \) es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \frac{1}{\sqrt{b-a}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para que su norma sea 1, pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\left\langle \frac{1}{\sqrt{b-a}}, \frac{1}{\sqrt{b-a}} \right\rangle = \int_a^b \frac{1}{b-a} \, dx = 1.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, obtenemos la base de Fourier de \( L^2(a,b) \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{b-a}}, \frac{\sqrt{2}}{\sqrt{b-a}} \cos\left( n \left( \frac{2\pi (x-a)}{b-a} - \pi \right) \right), \frac{\sqrt{2}}{\sqrt{b-a}} \sin\left( n \left( \frac{2\pi (x-a)}{b-a} - \pi \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para preservar la ortonormalidad en \( L^2(a,b) \), los senos y cosenos han sido normalizados con el factor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{\sqrt{2}}{\sqrt{b-a}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para los términos trigonométricos.&lt;br /&gt;
&lt;br /&gt;
Esto se puede reescribir como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{5}}, \frac{\sqrt{2}}{\sqrt{5}} \cos\left( n \left( \frac{2\pi x - \pi}{5} \right) \right), \frac{\sqrt{2}}{\sqrt{5}} \sin\left( n \left( \frac{2\pi x - \pi}{5} \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sea la función \( f(x) = x e^{-x} \). Se verifica que \( f(x) \in L^2(-2,3) \), pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\int_{-2}^{3} x^2 e^{-2x} \, dx = \frac{5(e^{10}-5)}{4 e^6}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que \( f(x) \) es continua y satisface la condición de Dirichlet, su desarrollo en serie de Fourier converge a la función en los puntos de continuidad y en los extremos. Así, se tiene:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f \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} d_m \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;
Calculemos ahora los coeficientes de la serie de Fourier&lt;br /&gt;
&lt;br /&gt;
El coeficiente \( d_0 \) se obtiene como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \left\langle f,\frac{1}{\sqrt{5}} \right\rangle_{L^{2}} = \int_{-2}^{3} x e^{-x} \, dx = \frac{-4 + e^5}{\sqrt{5} e^3}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_n \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_n = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \cos\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}}= \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \cos\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_m \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_m = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \sin\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}} = \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \sin\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, se puede aproximar la función f mediante los primeros 5, 10 y 20 términos de su desarrollo en serie de Fourier, empleando el siguiente código de python:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Fourier.gif|600px|thumb|Aproximación de Fourier de la función extendida &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt;]]&lt;br /&gt;
[[Archivo:Error_fourier.gif|600px|thumb|Error absoluto entre la función &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt; y su aproximación de Fourier]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
from tqdm import tqdm&lt;br /&gt;
import sympy as sp&lt;br /&gt;
import math&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
e=0&lt;br /&gt;
n=5&lt;br /&gt;
l=0&lt;br /&gt;
&lt;br /&gt;
for i in tqdm(range(1,n)): &lt;br /&gt;
    # Definir la variable x&lt;br /&gt;
    x = sp.symbols('x')&lt;br /&gt;
&lt;br /&gt;
    # Definir la función a integrar&lt;br /&gt;
    integrand =(math.sqrt(2)/math.sqrt(5))* x * sp.exp(-x)*sp.cos(i * ((2*sp.pi*x-sp.pi)/5))&lt;br /&gt;
&lt;br /&gt;
    # Calcular la integral de la función en el intervalo [-2, 3]&lt;br /&gt;
    integral_result = sp.integrate(integrand, (x, -2, 3))&lt;br /&gt;
    integrand2 = (math.sqrt(2)/math.sqrt(5))* x * sp.exp(-x)*sp.sin(i * ((2*sp.pi*x-sp.pi)/5))&lt;br /&gt;
&lt;br /&gt;
    # Calcular la integral de la función en el intervalo [-2, 3]&lt;br /&gt;
    integral_result2 = sp.integrate(integrand2, (x, -2, 3))&lt;br /&gt;
    e=e+integral_result*(math.sqrt(2)/math.sqrt(5))*sp.cos(i * ((2*sp.pi*x-sp.pi)/5))&lt;br /&gt;
    l=l+integral_result2*(math.sqrt(2)/math.sqrt(5))*sp.sin(i * ((2*sp.pi*x-sp.pi)/5))&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
d0=-(4+sp.exp(5))/(math.sqrt(5)*sp.exp(3))&lt;br /&gt;
&lt;br /&gt;
f=d0/math.sqrt(5)+e+l&lt;br /&gt;
&lt;br /&gt;
f_numeric = sp.lambdify(x, f, &amp;quot;numpy&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Definir la función f(x) = x * exp(-x)&lt;br /&gt;
def f(x):&lt;br /&gt;
    return x * np.exp(-x)&lt;br /&gt;
&lt;br /&gt;
# Generar valores de x en el rango [-2, 3]&lt;br /&gt;
x_vals = np.linspace(-2, 3, 1000)&lt;br /&gt;
y_vals = f(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Aproximación de Fourier (f_numeric debe estar definida previamente)&lt;br /&gt;
y_fourier = f_numeric(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Calcular el error&lt;br /&gt;
error_vals = np.abs(y_vals - y_fourier)&lt;br /&gt;
&lt;br /&gt;
# Crear el gráfico de la función y su aproximación&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, y_vals, label=r'$f(x) = x e^{-x}$',linestyle='dashed', color='b')&lt;br /&gt;
plt.plot(x_vals, y_fourier, label=f&amp;quot;Aproximación n={n}&amp;quot;, color='r')&lt;br /&gt;
plt.axhline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.axvline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;f(x)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Comparación entre f(x) y su Aproximación de Fourier&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Gráfico del error&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, error_vals, label=&amp;quot;Error Absoluto&amp;quot;, color='g')&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error entre f(x) y su aproximación de Fourier&amp;quot;)&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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=83783</id>
		<title>Series de Fourier (Grupo PPAD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=83783"/>
				<updated>2025-02-12T17:59:38Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo PPAD). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Pablo Vidal Nacle, Pablo Maestro Fernández, Alex Heredero Santamaría, Diego Moñino Vizmanos}}&lt;br /&gt;
&lt;br /&gt;
=. Introducción=&lt;br /&gt;
Se define el espacio de Hilbert &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; como:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; L^2(a,b) = \left\{ f(x)| \int_{a}^{b} |f(x)|^{2} dx \lt \infty  \right\}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; a,b \in \mathbb{R} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; a \lt b &amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; es un espacio vecotrial con producto escalar asociado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left\langle f,g \right\rangle_{L^{2}}=\int_{a}^{b} f(x)g(x) dx, \forall f,g \in L^{2}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
Esta construcción del espacio &amp;lt;math&amp;gt; L^{2} &amp;lt;/math&amp;gt; motiva plantear la posibilidad de definir una base numerable que permita expresar todos los elementos del espacio en función de los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
=. Base trigonométrica=&lt;br /&gt;
Tal y como se ha definido en la introducción, consideramos el espacio &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;. En éste se define la base numerable &amp;lt;math&amp;gt; \beta &amp;lt;/math&amp;gt; dada por los siguientes elementos:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(n x), \frac{1}{\sqrt{\pi}}sen(n x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
que se conoce como referencia de Fourier trigonométrica.&lt;br /&gt;
&lt;br /&gt;
=. Aproximación de una función por la base trigonométrica=&lt;br /&gt;
Sea &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(x) = xe^{-x}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
definida en el intervalo [-2,3], se busca aproximar f mediante la base trigonométrica del espacio &amp;lt;math&amp;gt;L^2(-2,3)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Consideramos el espacio de Hilbert \( L^2(- \pi, \pi) \) con el producto interno \( \langle \cdot, \cdot \rangle_{L^2} \). En este espacio tomamos la base de Fourier trigonométrica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(nx), \frac{1}{\sqrt{\pi}}sen(nx) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si consideramos ahora el espacio \( L^2(a, b) \), buscamos una base ortonormal (referencia de Fourier) en este espacio. Para ello, hacemos el cambio de variable:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; h(x) = \frac{2\pi}{b-a} (x - a) - \pi, \quad x \in [a, b] &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta manera, \( h(x) \in [-\pi, \pi] \), lo que permite trasladar la base ortonormal del espacio \( L^2(- \pi, \pi) \) al nuevo intervalo \( [a, b] \).&lt;br /&gt;
&lt;br /&gt;
Bajo este cambio de variable, una función \( f(x) \) en \( L^2(a,b) \) se puede expresar como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) = d_0 + \sum_{n=0}^{\infty} d_n \cos(n R(x)) + \sum_{n=0}^{\infty} c_n \sin(n R(x))&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde el coeficiente \( d_0 \) es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \frac{1}{\sqrt{b-a}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para que su norma sea 1, pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\left\langle \frac{1}{\sqrt{b-a}}, \frac{1}{\sqrt{b-a}} \right\rangle = \int_a^b \frac{1}{b-a} \, dx = 1.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, obtenemos la base de Fourier de \( L^2(a,b) \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{5}}, \frac{\sqrt{2}}{\sqrt{5}} \cos\left( n \left( \frac{2\pi (x+2)}{5} - \pi \right) \right), \frac{\sqrt{2}}{\sqrt{5}} \sin\left( n \left( \frac{2\pi (x+2)}{5} - \pi \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para preservar la ortonormalidad en \( L^2(a,b) \), los senos y cosenos han sido normalizados con el factor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{\sqrt{2}}{\sqrt{b-a}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para los términos trigonométricos.&lt;br /&gt;
&lt;br /&gt;
Esto se puede reescribir como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{5}}, \frac{\sqrt{2}}{\sqrt{5}} \cos\left( n \left( \frac{2\pi x - \pi}{5} \right) \right), \frac{\sqrt{2}}{\sqrt{5}} \sin\left( n \left( \frac{2\pi x - \pi}{5} \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sea la función \( f(x) = x e^{-x} \). Se verifica que \( f(x) \in L^2(-2,3) \), pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\int_{-2}^{3} x^2 e^{-2x} \, dx = \frac{5(e^{10}-5)}{4 e^6}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que \( f(x) \) es continua y satisface la condición de Dirichlet, su desarrollo en serie de Fourier converge a la función en los puntos de continuidad y en los extremos. Así, se tiene:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f \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} d_m \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;
Calculemos ahora los coeficientes de la serie de Fourier&lt;br /&gt;
&lt;br /&gt;
El coeficiente \( d_0 \) se obtiene como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \left\langle f,\frac{1}{\sqrt{5}} \right\rangle_{L^{2}} = \int_{-2}^{3} x e^{-x} \, dx = \frac{-4 + e^5}{\sqrt{5} e^3}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_n \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_n = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \cos\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}}= \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \cos\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_m \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_m = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \sin\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}} = \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \sin\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, se puede aproximar la función f mediante los primeros 5, 10 y 20 términos de su desarrollo en serie de Fourier, empleando el siguiente código de python:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Fourier.gif|600px|thumb|Aproximación de Fourier de la función extendida &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt;]]&lt;br /&gt;
[[Archivo:Error_fourier.gif|600px|thumb|Error absoluto entre la función &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt; y su aproximación de Fourier]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
from tqdm import tqdm&lt;br /&gt;
import sympy as sp&lt;br /&gt;
import math&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
e=0&lt;br /&gt;
n=5&lt;br /&gt;
l=0&lt;br /&gt;
&lt;br /&gt;
for i in tqdm(range(1,n)): &lt;br /&gt;
    # Definir la variable x&lt;br /&gt;
    x = sp.symbols('x')&lt;br /&gt;
&lt;br /&gt;
    # Definir la función a integrar&lt;br /&gt;
    integrand =(math.sqrt(2)/math.sqrt(5))* x * sp.exp(-x)*sp.cos(i * ((2*sp.pi*x-sp.pi)/5))&lt;br /&gt;
&lt;br /&gt;
    # Calcular la integral de la función en el intervalo [-2, 3]&lt;br /&gt;
    integral_result = sp.integrate(integrand, (x, -2, 3))&lt;br /&gt;
    integrand2 = (math.sqrt(2)/math.sqrt(5))* x * sp.exp(-x)*sp.sin(i * ((2*sp.pi*x-sp.pi)/5))&lt;br /&gt;
&lt;br /&gt;
    # Calcular la integral de la función en el intervalo [-2, 3]&lt;br /&gt;
    integral_result2 = sp.integrate(integrand2, (x, -2, 3))&lt;br /&gt;
    e=e+integral_result*(math.sqrt(2)/math.sqrt(5))*sp.cos(i * ((2*sp.pi*x-sp.pi)/5))&lt;br /&gt;
    l=l+integral_result2*(math.sqrt(2)/math.sqrt(5))*sp.sin(i * ((2*sp.pi*x-sp.pi)/5))&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
d0=-(4+sp.exp(5))/(math.sqrt(5)*sp.exp(3))&lt;br /&gt;
&lt;br /&gt;
f=d0/math.sqrt(5)+e+l&lt;br /&gt;
&lt;br /&gt;
f_numeric = sp.lambdify(x, f, &amp;quot;numpy&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Definir la función f(x) = x * exp(-x)&lt;br /&gt;
def f(x):&lt;br /&gt;
    return x * np.exp(-x)&lt;br /&gt;
&lt;br /&gt;
# Generar valores de x en el rango [-2, 3]&lt;br /&gt;
x_vals = np.linspace(-2, 3, 1000)&lt;br /&gt;
y_vals = f(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Aproximación de Fourier (f_numeric debe estar definida previamente)&lt;br /&gt;
y_fourier = f_numeric(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Calcular el error&lt;br /&gt;
error_vals = np.abs(y_vals - y_fourier)&lt;br /&gt;
&lt;br /&gt;
# Crear el gráfico de la función y su aproximación&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, y_vals, label=r'$f(x) = x e^{-x}$',linestyle='dashed', color='b')&lt;br /&gt;
plt.plot(x_vals, y_fourier, label=f&amp;quot;Aproximación n={n}&amp;quot;, color='r')&lt;br /&gt;
plt.axhline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.axvline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;f(x)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Comparación entre f(x) y su Aproximación de Fourier&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Gráfico del error&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, error_vals, label=&amp;quot;Error Absoluto&amp;quot;, color='g')&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error entre f(x) y su aproximación de Fourier&amp;quot;)&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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=83782</id>
		<title>Series de Fourier (Grupo PPAD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=83782"/>
				<updated>2025-02-12T17:58:34Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo PPAD). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Pablo Vidal Nacle, Pablo Maestro Fernández, Alex Heredero Santamaría, Diego Moñino Vizmanos}}&lt;br /&gt;
&lt;br /&gt;
=. Introducción=&lt;br /&gt;
Se define el espacio de Hilbert &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; como:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; L^2(a,b) = \left\{ f(x)| \int_{a}^{b} |f(x)|^{2} dx \lt \infty  \right\}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; a,b \in \mathbb{R} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; a \lt b &amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; es un espacio vecotrial con producto escalar asociado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left\langle f,g \right\rangle_{L^{2}}=\int_{a}^{b} f(x)g(x) dx, \forall f,g \in L^{2}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
Esta construcción del espacio &amp;lt;math&amp;gt; L^{2} &amp;lt;/math&amp;gt; motiva plantear la posibilidad de definir una base numerable que permita expresar todos los elementos del espacio en función de los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
=. Base trigonométrica=&lt;br /&gt;
Tal y como se ha definido en la introducción, consideramos el espacio &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;. En éste se define la base numerable &amp;lt;math&amp;gt; \beta &amp;lt;/math&amp;gt; dada por los siguientes elementos:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(n x), \frac{1}{\sqrt{\pi}}sen(n x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
que se conoce como referencia de Fourier trigonométrica.&lt;br /&gt;
&lt;br /&gt;
=. Aproximación de una función por la base trigonométrica=&lt;br /&gt;
Sea &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(x) = xe^{-x}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
definida en el intervalo [-2,3], se busca aproximar f mediante la base trigonométrica del espacio &amp;lt;math&amp;gt;L^2(-2,3)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Consideramos el espacio de Hilbert \( L^2(- \pi, \pi) \) con el producto interno \( \langle \cdot, \cdot \rangle_{L^2} \). En este espacio tomamos la base de Fourier trigonométrica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(nx), \frac{1}{\sqrt{\pi}}sen(nx) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si consideramos ahora el espacio \( L^2(a, b) \), buscamos una base ortonormal (referencia de Fourier) en este espacio. Para ello, hacemos el cambio de variable:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; h(x) = \frac{2\pi}{b-a} (x - a) - \pi, \quad x \in [a, b] &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta manera, \( h(x) \in [-\pi, \pi] \), lo que permite trasladar la base ortonormal del espacio \( L^2(- \pi, \pi) \) al nuevo intervalo \( [a, b] \).&lt;br /&gt;
&lt;br /&gt;
Bajo este cambio de variable, una función \( f(x) \) en \( L^2(a,b) \) se puede expresar como:&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=0}^{\infty} d_n \cos(n R(x)) + \sum_{n=0}^{\infty} c_n \sin(n R(x))&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde el coeficiente \( d_0 \) es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \frac{1}{\sqrt{b-a}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para que su norma sea 1, pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\left\langle \frac{1}{\sqrt{b-a}}, \frac{1}{\sqrt{b-a}} \right\rangle = \int_a^b \frac{1}{b-a} \, dx = 1.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, obtenemos la base de Fourier de \( L^2(a,b) \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{5}}, \frac{\sqrt{2}}{\sqrt{5}} \cos\left( n \left( \frac{2\pi (x+2)}{5} - \pi \right) \right), \frac{\sqrt{2}}{\sqrt{5}} \sin\left( n \left( \frac{2\pi (x+2)}{5} - \pi \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para preservar la ortonormalidad en \( L^2(a,b) \), los senos y cosenos han sido normalizados con el factor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{\sqrt{2}}{\sqrt{b-a}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para los términos trigonométricos.&lt;br /&gt;
&lt;br /&gt;
Esto se puede reescribir como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{5}}, \frac{\sqrt{2}}{\sqrt{5}} \cos\left( n \left( \frac{2\pi x - \pi}{5} \right) \right), \frac{\sqrt{2}}{\sqrt{5}} \sin\left( n \left( \frac{2\pi x - \pi}{5} \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sea la función \( f(x) = x e^{-x} \). Se verifica que \( f(x) \in L^2(-2,3) \), pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\int_{-2}^{3} x^2 e^{-2x} \, dx = \frac{5(e^{10}-5)}{4 e^6}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que \( f(x) \) es continua y satisface la condición de Dirichlet, su desarrollo en serie de Fourier converge a la función en los puntos de continuidad y en los extremos. Así, se tiene:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f \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} d_m \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;
Calculemos ahora los coeficientes de la serie de Fourier&lt;br /&gt;
&lt;br /&gt;
El coeficiente \( d_0 \) se obtiene como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \left\langle f,\frac{1}{\sqrt{5}} \right\rangle_{L^{2}} = \int_{-2}^{3} x e^{-x} \, dx = \frac{-4 + e^5}{\sqrt{5} e^3}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_n \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_n = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \cos\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}}= \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \cos\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_m \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_m = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \sin\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}} = \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \sin\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, se puede aproximar la función f mediante los primeros 5, 10 y 20 términos de su desarrollo en serie de Fourier, empleando el siguiente código de python:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Fourier.gif|600px|thumb|Aproximación de Fourier de la función extendida &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt;]]&lt;br /&gt;
[[Archivo:Error_fourier.gif|600px|thumb|Error absoluto entre la función &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt; y su aproximación de Fourier]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
from tqdm import tqdm&lt;br /&gt;
import sympy as sp&lt;br /&gt;
import math&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
e=0&lt;br /&gt;
n=5&lt;br /&gt;
l=0&lt;br /&gt;
&lt;br /&gt;
for i in tqdm(range(1,n)): &lt;br /&gt;
    # Definir la variable x&lt;br /&gt;
    x = sp.symbols('x')&lt;br /&gt;
&lt;br /&gt;
    # Definir la función a integrar&lt;br /&gt;
    integrand =(math.sqrt(2)/math.sqrt(5))* x * sp.exp(-x)*sp.cos(i * ((2*sp.pi*x-sp.pi)/5))&lt;br /&gt;
&lt;br /&gt;
    # Calcular la integral de la función en el intervalo [-2, 3]&lt;br /&gt;
    integral_result = sp.integrate(integrand, (x, -2, 3))&lt;br /&gt;
    integrand2 = (math.sqrt(2)/math.sqrt(5))* x * sp.exp(-x)*sp.sin(i * ((2*sp.pi*x-sp.pi)/5))&lt;br /&gt;
&lt;br /&gt;
    # Calcular la integral de la función en el intervalo [-2, 3]&lt;br /&gt;
    integral_result2 = sp.integrate(integrand2, (x, -2, 3))&lt;br /&gt;
    e=e+integral_result*(math.sqrt(2)/math.sqrt(5))*sp.cos(i * ((2*sp.pi*x-sp.pi)/5))&lt;br /&gt;
    l=l+integral_result2*(math.sqrt(2)/math.sqrt(5))*sp.sin(i * ((2*sp.pi*x-sp.pi)/5))&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
d0=-(4+sp.exp(5))/(math.sqrt(5)*sp.exp(3))&lt;br /&gt;
&lt;br /&gt;
f=d0/math.sqrt(5)+e+l&lt;br /&gt;
&lt;br /&gt;
f_numeric = sp.lambdify(x, f, &amp;quot;numpy&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Definir la función f(x) = x * exp(-x)&lt;br /&gt;
def f(x):&lt;br /&gt;
    return x * np.exp(-x)&lt;br /&gt;
&lt;br /&gt;
# Generar valores de x en el rango [-2, 3]&lt;br /&gt;
x_vals = np.linspace(-2, 3, 1000)&lt;br /&gt;
y_vals = f(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Aproximación de Fourier (f_numeric debe estar definida previamente)&lt;br /&gt;
y_fourier = f_numeric(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Calcular el error&lt;br /&gt;
error_vals = np.abs(y_vals - y_fourier)&lt;br /&gt;
&lt;br /&gt;
# Crear el gráfico de la función y su aproximación&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, y_vals, label=r'$f(x) = x e^{-x}$',linestyle='dashed', color='b')&lt;br /&gt;
plt.plot(x_vals, y_fourier, label=f&amp;quot;Aproximación n={n}&amp;quot;, color='r')&lt;br /&gt;
plt.axhline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.axvline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;f(x)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Comparación entre f(x) y su Aproximación de Fourier&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Gráfico del error&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, error_vals, label=&amp;quot;Error Absoluto&amp;quot;, color='g')&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error entre f(x) y su aproximación de Fourier&amp;quot;)&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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=83781</id>
		<title>Series de Fourier (Grupo PPAD)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_PPAD)&amp;diff=83781"/>
				<updated>2025-02-12T17:57:33Z</updated>
		
		<summary type="html">&lt;p&gt;Alex Heredero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo PPAD). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Pablo Vidal Nacle, Pablo Maestro Fernández, Alex Heredero Santamaría, Diego Moñino Vizmanos}}&lt;br /&gt;
&lt;br /&gt;
=. Introducción=&lt;br /&gt;
Se define el espacio de Hilbert &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; como:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; L^2(a,b) = \left\{ f(x)| \int_{a}^{b} |f(x)|^{2} dx \lt \infty  \right\}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; a,b \in \mathbb{R} &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; a \lt b &amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;L^2(a,b)&amp;lt;/math&amp;gt; es un espacio vecotrial con producto escalar asociado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left\langle f,g \right\rangle_{L^{2}}=\int_{a}^{b} f(x)g(x) dx, \forall f,g \in L^{2}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
Esta construcción del espacio &amp;lt;math&amp;gt; L^{2} &amp;lt;/math&amp;gt; motiva plantear la posibilidad de definir una base numerable que permita expresar todos los elementos del espacio en función de los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
=. Base trigonométrica=&lt;br /&gt;
Tal y como se ha definido en la introducción, consideramos el espacio &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;. En éste se define la base numerable &amp;lt;math&amp;gt; \beta &amp;lt;/math&amp;gt; dada por los siguientes elementos:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(n x), \frac{1}{\sqrt{\pi}}sen(n x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
que se conoce como referencia de Fourier trigonométrica.&lt;br /&gt;
&lt;br /&gt;
=. Aproximación de una función por la base trigonométrica=&lt;br /&gt;
Sea &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(x) = xe^{-x}  &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
definida en el intervalo [-2,3], se busca aproximar f mediante la base trigonométrica del espacio &amp;lt;math&amp;gt;L^2(-2,3)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Consideramos el espacio de Hilbert \( L^2(- \pi, \pi) \) con el producto interno \( \langle \cdot, \cdot \rangle_{L^2} \). En este espacio tomamos la referencia de Fourier trigonométrica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \beta = \left\{ \frac{1}{\sqrt{2\pi}}, \frac{1}{\sqrt{\pi}}cos(nx), \frac{1}{\sqrt{\pi}}sen(nx) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si consideramos ahora el espacio \( L^2(a, b) \), buscamos una base ortonormal (referencia de Fourier) en este espacio. Para ello, hacemos el cambio de variable:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; h(x) = \frac{2\pi}{b-a} (x - a) - \pi, \quad x \in [a, b] &amp;lt;/math&amp;gt;,&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De esta manera, \( h(x) \in [-\pi, \pi] \), lo que permite trasladar la base ortonormal del espacio \( L^2(- \pi, \pi) \) al nuevo intervalo \( [a, b] \).&lt;br /&gt;
&lt;br /&gt;
Bajo este cambio de variable, una función \( f(x) \) en \( L^2(a,b) \) se puede expresar como:&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=0}^{\infty} d_n \cos(n R(x)) + \sum_{n=0}^{\infty} c_n \sin(n R(x))&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde el coeficiente \( d_0 \) es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \frac{1}{\sqrt{b-a}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para que su norma sea 1, pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\left\langle \frac{1}{\sqrt{b-a}}, \frac{1}{\sqrt{b-a}} \right\rangle = \int_a^b \frac{1}{b-a} \, dx = 1.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, obtenemos la base de Fourier de \( L^2(a,b) \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{5}}, \frac{\sqrt{2}}{\sqrt{5}} \cos\left( n \left( \frac{2\pi (x+2)}{5} - \pi \right) \right), \frac{\sqrt{2}}{\sqrt{5}} \sin\left( n \left( \frac{2\pi (x+2)}{5} - \pi \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para preservar la ortonormalidad en \( L^2(a,b) \), los senos y cosenos han sido normalizados con el factor:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{\sqrt{2}}{\sqrt{b-a}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
para los términos trigonométricos.&lt;br /&gt;
&lt;br /&gt;
Esto se puede reescribir como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{F} = \left\{ \frac{1}{\sqrt{5}}, \frac{\sqrt{2}}{\sqrt{5}} \cos\left( n \left( \frac{2\pi x - \pi}{5} \right) \right), \frac{\sqrt{2}}{\sqrt{5}} \sin\left( n \left( \frac{2\pi x - \pi}{5} \right) \right) \right\}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sea la función \( f(x) = x e^{-x} \). Se verifica que \( f(x) \in L^2(-2,3) \), pues:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\int_{-2}^{3} x^2 e^{-2x} \, dx = \frac{5(e^{10}-5)}{4 e^6}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que \( f(x) \) es continua y satisface la condición de Dirichlet, su desarrollo en serie de Fourier converge a la función en los puntos de continuidad y en los extremos. Así, se tiene:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f \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} d_m \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;
Calculemos ahora los coeficientes de la serie de Fourier&lt;br /&gt;
&lt;br /&gt;
El coeficiente \( d_0 \) se obtiene como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_0 = \left\langle f,\frac{1}{\sqrt{5}} \right\rangle_{L^{2}} = \int_{-2}^{3} x e^{-x} \, dx = \frac{-4 + e^5}{\sqrt{5} e^3}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_n \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_n = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \cos\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}}= \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \cos\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para los coeficientes \( d_m \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
d_m = \left\langle f, \frac{\sqrt{2}}{\sqrt{5}} \sin\left(n \frac{2\pi x - \pi}{5} \right) \right\rangle _{L^{2}} = \int_{-2}^{3} \frac{\sqrt{2}}{\sqrt{5}} x e^{-x} \sin\left(n \frac{2\pi x - \pi}{5} \right) \, dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, se puede aproximar la función f mediante los primeros 5, 10 y 20 términos de su desarrollo en serie de Fourier, empleando el siguiente código de python:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Fourier.gif|600px|thumb|Aproximación de Fourier de la función extendida &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt;]]&lt;br /&gt;
[[Archivo:Error_fourier.gif|600px|thumb|Error absoluto entre la función &amp;lt;math&amp;gt; xe^{-x} &amp;lt;/math&amp;gt; y su aproximación de Fourier]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
from tqdm import tqdm&lt;br /&gt;
import sympy as sp&lt;br /&gt;
import math&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
e=0&lt;br /&gt;
n=5&lt;br /&gt;
l=0&lt;br /&gt;
&lt;br /&gt;
for i in tqdm(range(1,n)): &lt;br /&gt;
    # Definir la variable x&lt;br /&gt;
    x = sp.symbols('x')&lt;br /&gt;
&lt;br /&gt;
    # Definir la función a integrar&lt;br /&gt;
    integrand =(math.sqrt(2)/math.sqrt(5))* x * sp.exp(-x)*sp.cos(i * ((2*sp.pi*x-sp.pi)/5))&lt;br /&gt;
&lt;br /&gt;
    # Calcular la integral de la función en el intervalo [-2, 3]&lt;br /&gt;
    integral_result = sp.integrate(integrand, (x, -2, 3))&lt;br /&gt;
    integrand2 = (math.sqrt(2)/math.sqrt(5))* x * sp.exp(-x)*sp.sin(i * ((2*sp.pi*x-sp.pi)/5))&lt;br /&gt;
&lt;br /&gt;
    # Calcular la integral de la función en el intervalo [-2, 3]&lt;br /&gt;
    integral_result2 = sp.integrate(integrand2, (x, -2, 3))&lt;br /&gt;
    e=e+integral_result*(math.sqrt(2)/math.sqrt(5))*sp.cos(i * ((2*sp.pi*x-sp.pi)/5))&lt;br /&gt;
    l=l+integral_result2*(math.sqrt(2)/math.sqrt(5))*sp.sin(i * ((2*sp.pi*x-sp.pi)/5))&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
d0=-(4+sp.exp(5))/(math.sqrt(5)*sp.exp(3))&lt;br /&gt;
&lt;br /&gt;
f=d0/math.sqrt(5)+e+l&lt;br /&gt;
&lt;br /&gt;
f_numeric = sp.lambdify(x, f, &amp;quot;numpy&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Definir la función f(x) = x * exp(-x)&lt;br /&gt;
def f(x):&lt;br /&gt;
    return x * np.exp(-x)&lt;br /&gt;
&lt;br /&gt;
# Generar valores de x en el rango [-2, 3]&lt;br /&gt;
x_vals = np.linspace(-2, 3, 1000)&lt;br /&gt;
y_vals = f(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Aproximación de Fourier (f_numeric debe estar definida previamente)&lt;br /&gt;
y_fourier = f_numeric(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Calcular el error&lt;br /&gt;
error_vals = np.abs(y_vals - y_fourier)&lt;br /&gt;
&lt;br /&gt;
# Crear el gráfico de la función y su aproximación&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, y_vals, label=r'$f(x) = x e^{-x}$',linestyle='dashed', color='b')&lt;br /&gt;
plt.plot(x_vals, y_fourier, label=f&amp;quot;Aproximación n={n}&amp;quot;, color='r')&lt;br /&gt;
plt.axhline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.axvline(0, color='black', linewidth=0.5)&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;f(x)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Comparación entre f(x) y su Aproximación de Fourier&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Gráfico del error&lt;br /&gt;
plt.figure(figsize=(6,4))&lt;br /&gt;
plt.plot(x_vals, error_vals, label=&amp;quot;Error Absoluto&amp;quot;, color='g')&lt;br /&gt;
plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
plt.ylabel(&amp;quot;Error&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Error entre f(x) y su aproximación de Fourier&amp;quot;)&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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alex Heredero</name></author>	</entry>

	</feed>