<?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=Alicia.ruiz</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=Alicia.ruiz"/>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/wiki/Especial:Contribuciones/Alicia.ruiz"/>
		<updated>2026-04-28T22:30:33Z</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_de_Laplace_y_de_Poisson_(ILA)&amp;diff=85189</id>
		<title>Ecuación de Laplace y de Poisson (ILA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(ILA)&amp;diff=85189"/>
				<updated>2025-04-27T19:59:13Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación de Laplace y de Poisson (Grupo ILA). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | &lt;br /&gt;
*Ignacio Martínez&lt;br /&gt;
*Luis Ramos&lt;br /&gt;
*Alicia Ruiz}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Poster200.png|900px|thumb|left|Trabajo de la ecuación de Laplace y Poisson (en formato póster) realizado por el grupo ILA.]]&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>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(ILA)&amp;diff=85181</id>
		<title>Ecuación de Laplace y de Poisson (ILA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(ILA)&amp;diff=85181"/>
				<updated>2025-04-27T19:46:20Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación de Laplace y de Poisson (Grupo ILA). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | &lt;br /&gt;
*Ignacio Martínez&lt;br /&gt;
*Luis Ramos&lt;br /&gt;
*Alicia Ruiz&lt;br /&gt;
.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Poster200.png|900px|thumb|left|Trabajo de la ecuación de Laplace y Poisson (en formato póster) realizado por el grupo ILA.]]&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>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Poster200.png&amp;diff=85180</id>
		<title>Archivo:Poster200.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Poster200.png&amp;diff=85180"/>
				<updated>2025-04-27T19:45:18Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(ILA)&amp;diff=85179</id>
		<title>Ecuación de Laplace y de Poisson (ILA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(ILA)&amp;diff=85179"/>
				<updated>2025-04-27T19:44:49Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación de Laplace y de Poisson (Grupo ILA). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | &lt;br /&gt;
*Ignacio Martínez&lt;br /&gt;
*Luis Ramos&lt;br /&gt;
*Alicia Ruiz&lt;br /&gt;
.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Poster300.png|900px|thumb|left|Trabajo de la ecuación de Laplace y Poisson (en formato póster) realizado por el grupo ILA.]]&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>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Poster300.png&amp;diff=85178</id>
		<title>Archivo:Poster300.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Poster300.png&amp;diff=85178"/>
				<updated>2025-04-27T19:43:08Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:LaplaceILA.png&amp;diff=85144</id>
		<title>Archivo:LaplaceILA.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:LaplaceILA.png&amp;diff=85144"/>
				<updated>2025-04-20T20:17:58Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(ILA)&amp;diff=85143</id>
		<title>Ecuación de Laplace y de Poisson (ILA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(ILA)&amp;diff=85143"/>
				<updated>2025-04-20T20:00:47Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación de Laplace y de Poisson (Grupo ILA). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | &lt;br /&gt;
*Ignacio Martínez&lt;br /&gt;
*Luis Ramos&lt;br /&gt;
*Alicia Ruiz&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>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(ILA)&amp;diff=85142</id>
		<title>Ecuación de Laplace y de Poisson (ILA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(ILA)&amp;diff=85142"/>
				<updated>2025-04-20T20:00:34Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación de Laplace y de Poisson (Grupo ILA). | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | &lt;br /&gt;
*Ignacio Martínez,&lt;br /&gt;
*Luis Ramos,&lt;br /&gt;
*Alicia Ruiz&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>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_ILIA)&amp;diff=84976</id>
		<title>Ecuación del calor (Grupo ILIA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_ILIA)&amp;diff=84976"/>
				<updated>2025-03-19T10:23:33Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo ILIA | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Ignacio Campos Paños, Ignacio Martínez Cerezo, Alicia Ruiz Dominguez, Luis Ramos Ortiz }}&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
La ecuación del calor es una de las ecuaciones en derivadas parciales más fundamentales en la física y las matemáticas aplicadas, modelando la difusión de la temperatura en distintos medios. Su estudio es esencial en múltiples disciplinas, desde la ingeniería térmica hasta la biomedicina, donde se analiza la propagación del calor en tejidos biológicos. En este trabajo, estudiaremos el comportamiento de esta ecuación en una barra unidimensional aislada en el intervalo [0,1], imponiendo condiciones de frontera con temperatura constante. &lt;br /&gt;
&lt;br /&gt;
En la vida real, las fuentes de calor no necesariamente tienen por qué estar en los extremos, por lo que también buscamos un enfoque más aplicado y realista. Nos enfocaremos en la propagación del calor cuando existe una fuente térmica localizada, es decir, introduciremos una fuente de calor puntual en algún punto en el interior de la barra (0,1) y veremos cómo se comporta la ecuación del calor. En la práctica, muchas aplicaciones incluyen fuentes térmicas, como calefactores, reacciones químicas o dispositivos electrónicos que generan calor; y esto tiene aplicaciones en procesos industriales, generación de energía y modelización de sistemas térmicos. &lt;br /&gt;
&lt;br /&gt;
En resumen, exploraremos cómo la presencia de una fuente de calor afecta a la distribución de la temperatura en el tiempo, resolviendo el problema tanto analíticamente como numéricamente. A través de esta aproximación, podremos comprender mejor la influencia de fuentes térmicas en sistemas difusivos y validar métodos numéricos para resolver ecuaciones en derivadas parciales. Estudiaremos varios aspectos:&lt;br /&gt;
&lt;br /&gt;
*'''Ecuación del calor sin fuente térmica:''' resolvemos el problema con condiciones iniciales y de frontera, y obtenemos la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
*'''Ecuación del calor con fuente:''' en este caso, la ecuación incluye un término &amp;lt;math&amp;gt; f(x,t) &amp;lt;/math&amp;gt; que representa una generación de calor interna. Esto hace que la temperatura no solo se difunda, sino que también aumente o disminuya dependiendo de la fuente.&lt;br /&gt;
&lt;br /&gt;
*'''Comparación entre ambas:''' veremos cómo la solución cambia al introducir un calentamiento localizado, observando si se alcanza un estado estacionario diferente o si la temperatura sigue variando en el tiempo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ecuación del calor=&lt;br /&gt;
La ecuación de difusión del calor original sin fuentes de calor externas viene dada por:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
u_t=u_{xx}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
donde la función u(x,t) es la función temperatura en cada posición e instante de tiempo, &amp;lt;math&amp;gt;u_t&amp;lt;/math&amp;gt; la derivada temporal y &amp;lt;math&amp;gt;u_{xx}&amp;lt;/math&amp;gt; la segunda derivada espacial, que modela la difusión del calor.&lt;br /&gt;
&lt;br /&gt;
Si consideramos que la condición inicial en &amp;lt;math&amp;gt;t=0&amp;lt;/math&amp;gt; es &amp;lt;math&amp;gt;u(x,0)=\operatorname{sen}(x)&amp;lt;/math&amp;gt;, podemos obtener el siguiente problema de ecuación del calor con condiciones frontera:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}  &lt;br /&gt;
u_t - u_{xx} = 0, &amp;amp; x \in [0,1], \quad t &amp;gt; 0 \\    &lt;br /&gt;
u(0,t) = 0, &amp;amp; t &amp;gt; 0 \\  &lt;br /&gt;
u(1,t) = 0, &amp;amp; t &amp;gt; 0 \\&lt;br /&gt;
u(x,0) = \operatorname{sen}(2\pi x), &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases}  &lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Resolviendo este problema obtenemos que la solución estacionaria es:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_s(x)=0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
y la solución general:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\operatorname{sen}(2\pi x)e^{-4\pi^{2}t}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vamos a graficar la solución.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:soluil.png|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from mpl_toolkits.mplot3d import Axes3D&lt;br /&gt;
&lt;br /&gt;
# puntos de la malla&lt;br /&gt;
x = np.linspace(0, 1, 50)  &lt;br /&gt;
t = np.linspace(0, 0.5, 50)  &lt;br /&gt;
&lt;br /&gt;
X, T = np.meshgrid(x, t)  # malla&lt;br /&gt;
U = np.sin(2 * np.pi * X) * np.exp(-4 * np.pi**2 * T)  # sol general&lt;br /&gt;
&lt;br /&gt;
# figura&lt;br /&gt;
fig = plt.figure(figsize=(10, 6))&lt;br /&gt;
ax = fig.add_subplot(111, projection='3d')&lt;br /&gt;
&lt;br /&gt;
# grafica&lt;br /&gt;
ax.plot_surface(X, T, U, cmap='viridis')&lt;br /&gt;
ax.set_xlabel('Posición x')&lt;br /&gt;
ax.set_ylabel('Tiempo t')&lt;br /&gt;
ax.set_zlabel('Temperatura u(x,t)')&lt;br /&gt;
ax.set_title('Solución de la ecuación del calor')&lt;br /&gt;
&lt;br /&gt;
plt.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como podemos ver la solución tiende rápidamente a la solución estacionaria en el que toda la barra está a 0 grados, que es lógico si tenemos en cuenta que los extremos tienen temperatura constante de 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ecuación del calor con fuente térmica puntual=&lt;br /&gt;
En los casos sencillos de la ecuación del calor, como los vistos en clase, no existe aporte de calor a nuestro sistema o, si existe, es regular a lo largo del espacio y el tiempo. Sin embargo, en muchas situaciones prácticas, el calor puede ser generado en puntos específicos del dominio. Para modelar este efecto, introducimos una función &amp;lt;math&amp;gt;f(x,t)&amp;lt;/math&amp;gt; que representa un nuevo foco de calor en un punto concreto &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; de la barra de manera localizada. Así, la ecuación del calor modificada queda como sigue:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t = u_{xx}+f(x,t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;f(x,t)&amp;lt;/math&amp;gt; es una fuente térmica localizada, que modelamos como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;f(x,t)=q(t)\delta(x-x_0)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí, &amp;lt;math&amp;gt;q(t)&amp;lt;/math&amp;gt; representa la cantidad de calor que se añade en función del tiempo y &amp;lt;math&amp;gt;\delta(x-x_0)&amp;lt;/math&amp;gt; es la delta de Dirac, que hace que el calor se añada únicamente en el punto &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt;. Al emplear la distribución &amp;lt;math&amp;gt;\delta&amp;lt;/math&amp;gt; de Dirac, estamos imponiendo que esta adición energética (calorífica) se encuentre extremadamente localizada, como la acción de un láser sobre una barra que simplificamos como unidimensional.&lt;br /&gt;
&lt;br /&gt;
Para ilustrar este fenómeno, consideramos el mismo problema de la sección 2 pero con la fuente térmica puntual en &amp;lt;math&amp;gt;x_0=0.5&amp;lt;/math&amp;gt;, con una intensidad constante &amp;lt;math&amp;gt;q(t)=2&amp;lt;/math&amp;gt;. Obtenemos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}  &lt;br /&gt;
u_t - u_{xx} = f(x,t), &amp;amp; x \in [0,1], \quad t &amp;gt; 0 \\    &lt;br /&gt;
u(0,t) = 0, &amp;amp; t &amp;gt; 0 \\  &lt;br /&gt;
u(1,t) = 0, &amp;amp; t &amp;gt; 0 \\&lt;br /&gt;
u(x,0) = \operatorname{sen}(2\pi x), &amp;amp; x \in [0,1] \\&lt;br /&gt;
f(x,t)=2\delta(x-0.5)&lt;br /&gt;
\end{cases}  &lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si intentamos resolver este problema suponiendo la existencia de una solución estacionaria, llegaríamos a una solución &amp;lt;math&amp;gt;u(x)&amp;lt;/math&amp;gt; que no sería continua en &amp;lt;math&amp;gt; x_0 &amp;lt;/math&amp;gt;. Es por ello que otros métodos algo más sofisticados son necesarios para resolver esta ecuación, y en lugar de buscar una solución analítica completa, aplicamos un método numérico basado en diferencias finitas explícitas para aproximar la solución.&lt;br /&gt;
&lt;br /&gt;
La idea general, sin embargo, se encuentra en hallar las soluciones generales para nuestro problema homogéneo y, tras esto, describir &amp;lt;math&amp;gt;f(x,t)&amp;lt;/math&amp;gt; como suma de elementos de la base de Fourier que hayamos hallado. Debido a la facilidad con la que se integra &amp;lt;math&amp;gt;\delta(x)&amp;lt;/math&amp;gt;, esto no supondría un problema.&lt;br /&gt;
&lt;br /&gt;
Por la forma de nuestra ecuación cabría esperar una solución que, además de las condiciones iniciales, tenga (y a simple vista se aprecie) una zona de temperatura máxima en &amp;lt;math&amp;gt; x_0 = 0.5 &amp;lt;/math&amp;gt;, donde a ambos lados la temperatura descendería hasta llegar a los extremos, donde la temperatura es constantemente nula.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:EvolucionILIA.jpeg|400px|thumb|right|Evolución temporal de la ecuación del calor con fuente térmica]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from mpl_toolkits.mplot3d import Axes3D&lt;br /&gt;
import numba&lt;br /&gt;
&lt;br /&gt;
# Parámetros del problema&lt;br /&gt;
L = 1.0  # Longitud del dominio espacial&lt;br /&gt;
t0 = 0 #Tiempo inicial&lt;br /&gt;
T = 0.1  # Tiempo final&lt;br /&gt;
nx = 100  # Número de puntos en la dirección x&lt;br /&gt;
nt = 10000  # Número de pasos de tiempo&lt;br /&gt;
dx = L / (nx - 1) # diferencia en espacio &lt;br /&gt;
dt = (T-t0) / nt # diferencia en tiempo&lt;br /&gt;
alpha = 1.0  # Coeficiente de difusión (para la ecuación del calor)&lt;br /&gt;
r = alpha * dt / (dx**2) #Coeficiente de estabilidad&lt;br /&gt;
&lt;br /&gt;
# Verificamos que se cumple la cond. de estabilidad para el esquema&lt;br /&gt;
if r &amp;gt; 0.5:&lt;br /&gt;
    raise ValueError(f&amp;quot;La condición de estabilidad no se cumple, 0.5 &amp;lt; {r=}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
#Inicializamos el intervalo discretizado en x&lt;br /&gt;
x = np.linspace(0, L, nx)&lt;br /&gt;
&lt;br /&gt;
#Inicializamos el intervalo en t que vamos a emplear&lt;br /&gt;
t = np.linspace(t0, T, nt + 1)&lt;br /&gt;
&lt;br /&gt;
#Creamos el mallado en x y t:&lt;br /&gt;
X,T_mesh = np.meshgrid(x,t)&lt;br /&gt;
&lt;br /&gt;
# Inicializar la solución u(x, t) con ceros&lt;br /&gt;
u = np.zeros((nt + 1, nx))&lt;br /&gt;
&lt;br /&gt;
# Aplicamos las condiciones de frontera e inicial&lt;br /&gt;
u[:, 0] = 0&lt;br /&gt;
u[:, -1] = 0&lt;br /&gt;
u[0, :] = np.sin(2*np.pi*x)&lt;br /&gt;
&lt;br /&gt;
# Calculamos el índice del punto más cercano a x = 0.5&lt;br /&gt;
index_source = int(0.5 / dx)&lt;br /&gt;
&lt;br /&gt;
# Evolución temporal&lt;br /&gt;
for n in range(nt):&lt;br /&gt;
    u[n + 1, :] = u[n, :]  # Inicializar la siguiente iteración con los valores actuales&lt;br /&gt;
    for i in range(1, nx - 1):&lt;br /&gt;
        u[n + 1, i] = u[n, i] + r * (u[n, i + 1] - 2 * u[n, i] + u[n, i - 1])&lt;br /&gt;
    # Aproximación de la delta de Dirac&lt;br /&gt;
    u[n + 1, index_source] += 2 * dt / dx&lt;br /&gt;
&lt;br /&gt;
# Crear la figura y el subplot 3D&lt;br /&gt;
fig = plt.figure(figsize=(12, 8))&lt;br /&gt;
ax = fig.add_subplot(111, projection='3d')&lt;br /&gt;
&lt;br /&gt;
# Graficar la superficie, y añadimos etiquetas, barra de color, etc.&lt;br /&gt;
surf = ax.plot_surface(X, T_mesh, u, cmap='viridis')&lt;br /&gt;
ax.set_xlabel('x')&lt;br /&gt;
ax.set_ylabel('t')&lt;br /&gt;
ax.set_zlabel('u(x, t)')&lt;br /&gt;
ax.set_title('Evolución temporal de la ecuación de calor con fuente (aproximación numérica)')&lt;br /&gt;
fig.colorbar(surf, ax=ax, label='u(x, t)')&lt;br /&gt;
&lt;br /&gt;
plt.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Interpretación de la solución numérica y comparación con el caso sin fuente===&lt;br /&gt;
Los resultados numéricos muestran que efectivamente la fuente térmica localizada en &amp;lt;math&amp;gt; x_0 = 0.5 &amp;lt;/math&amp;gt; genera una acumulación de calor en su entorno inmediato. A medida que avanza el tiempo, se observa la disipación progresiva del calor debido a la difusión, que suaviza la temperatura alrededor de este punto, extendiéndola hacia el resto del dominio.&lt;br /&gt;
&lt;br /&gt;
En comparación con el caso sin fuente, donde la temperatura inicial se disipa homogéneamente y tiende a cero en todo el dominio, en este caso se observa un comportamiento diferente: la región en torno a &amp;lt;math&amp;gt; x_0 = 0.5 &amp;lt;/math&amp;gt; se mantiene significativamente más caliente durante más tiempo. Esto refleja el efecto de la fuente térmica puntual, que introduce energía de manera continua en el sistema, impidiendo que la temperatura disminuya de forma uniforme.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_ILIA)&amp;diff=84975</id>
		<title>Ecuación del calor (Grupo ILIA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_ILIA)&amp;diff=84975"/>
				<updated>2025-03-19T10:22:36Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo ILIA | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Ignacio Campos Paños, Ignacio Martínez Cerezo, Alicia Ruiz Dominguez, Luis Ramos Ortiz }}&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
La ecuación del calor es una de las ecuaciones en derivadas parciales más fundamentales en la física y las matemáticas aplicadas, modelando la difusión de la temperatura en distintos medios. Su estudio es esencial en múltiples disciplinas, desde la ingeniería térmica hasta la biomedicina, donde se analiza la propagación del calor en tejidos biológicos. En este trabajo, estudiaremos el comportamiento de esta ecuación en una barra unidimensional aislada en el intervalo [0,1], imponiendo condiciones de frontera con temperatura constante. &lt;br /&gt;
&lt;br /&gt;
En la vida real, las fuentes de calor no necesariamente tienen por qué estar en los extremos, por lo que también buscamos un enfoque más aplicado y realista. Nos enfocaremos en la propagación del calor cuando existe una fuente térmica localizada, es decir, introduciremos una fuente de calor puntual en algún punto en el interior de la barra (0,1) y veremos cómo se comporta la ecuación del calor. En la práctica, muchas aplicaciones incluyen fuentes térmicas, como calefactores, reacciones químicas o dispositivos electrónicos que generan calor; y esto tiene aplicaciones en procesos industriales, generación de energía y modelización de sistemas térmicos. &lt;br /&gt;
&lt;br /&gt;
En resumen, exploraremos cómo la presencia de una fuente de calor afecta a la distribución de la temperatura en el tiempo, resolviendo el problema tanto analíticamente como numéricamente. A través de esta aproximación, podremos comprender mejor la influencia de fuentes térmicas en sistemas difusivos y validar métodos numéricos para resolver ecuaciones en derivadas parciales. Estudiaremos varios aspectos:&lt;br /&gt;
&lt;br /&gt;
*'''Ecuación del calor sin fuente térmica:''' resolvemos el problema con condiciones iniciales y de frontera, y obtenemos la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
*'''Ecuación del calor con fuente:''' en este caso, la ecuación incluye un término &amp;lt;math&amp;gt; f(x,t) &amp;lt;/math&amp;gt; que representa una generación de calor interna. Esto hace que la temperatura no solo se difunda, sino que también aumente o disminuya dependiendo de la fuente.&lt;br /&gt;
&lt;br /&gt;
*'''Comparación entre ambas:''' veremos cómo la solución cambia al introducir un calentamiento localizado, observando si se alcanza un estado estacionario diferente o si la temperatura sigue variando en el tiempo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ecuación del calor=&lt;br /&gt;
La ecuación de difusión del calor original sin fuentes de calor externas viene dada por:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
u_t=u_{xx}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
donde la función u(x,t) es la función temperatura en cada posición e instante de tiempo, &amp;lt;math&amp;gt;u_t&amp;lt;/math&amp;gt; la derivada temporal y &amp;lt;math&amp;gt;u_{xx}&amp;lt;/math&amp;gt; la segunda derivada espacial, que modela la difusión del calor.&lt;br /&gt;
&lt;br /&gt;
Si consideramos que la condición inicial en &amp;lt;math&amp;gt;t=0&amp;lt;/math&amp;gt; es &amp;lt;math&amp;gt;u(x,0)=\operatorname{sen}(x)&amp;lt;/math&amp;gt;, podemos obtener el siguiente problema de ecuación del calor con condiciones frontera:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}  &lt;br /&gt;
u_t - u_{xx} = 0, &amp;amp; x \in [0,1], \quad t &amp;gt; 0 \\    &lt;br /&gt;
u(0,t) = 0, &amp;amp; t &amp;gt; 0 \\  &lt;br /&gt;
u(1,t) = 0, &amp;amp; t &amp;gt; 0 \\&lt;br /&gt;
u(x,0) = \operatorname{sen}(2\pi x), &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases}  &lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Resolviendo este problema obtenemos que la solución estacionaria es:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_s(x)=0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
y la solución general:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\operatorname{sen}(2\pi x)e^{-4\pi^{2}t}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vamos a graficar la solución.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:soluil.png|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from mpl_toolkits.mplot3d import Axes3D&lt;br /&gt;
&lt;br /&gt;
# puntos de la malla&lt;br /&gt;
x = np.linspace(0, 1, 50)  &lt;br /&gt;
t = np.linspace(0, 0.5, 50)  &lt;br /&gt;
&lt;br /&gt;
X, T = np.meshgrid(x, t)  # malla&lt;br /&gt;
U = np.sin(2 * np.pi * X) * np.exp(-4 * np.pi**2 * T)  # sol general&lt;br /&gt;
&lt;br /&gt;
# figura&lt;br /&gt;
fig = plt.figure(figsize=(10, 6))&lt;br /&gt;
ax = fig.add_subplot(111, projection='3d')&lt;br /&gt;
&lt;br /&gt;
# grafica&lt;br /&gt;
ax.plot_surface(X, T, U, cmap='viridis')&lt;br /&gt;
ax.set_xlabel('Posición x')&lt;br /&gt;
ax.set_ylabel('Tiempo t')&lt;br /&gt;
ax.set_zlabel('Temperatura u(x,t)')&lt;br /&gt;
ax.set_title('Solución de la ecuación del calor')&lt;br /&gt;
&lt;br /&gt;
plt.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como podemos ver la solución tiende rápidamente a la solución estacionaria en el que toda la barra está a 0 grados, que es lógico si tenemos en cuenta que los extremos tienen temperatura constante de 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ecuación del calor con fuente térmica puntual=&lt;br /&gt;
En los casos sencillos de la ecuación del calor, como los vistos en clase, no existe aporte de calor a nuestro sistema o, si existe, es regular a lo largo del espacio y el tiempo. Sin embargo, en muchas situaciones prácticas, el calor puede ser generado en puntos específicos del dominio. Para modelar este efecto, introducimos una función &amp;lt;math&amp;gt;f(x,t)&amp;lt;/math&amp;gt; que representa un nuevo foco de calor en un punto concreto &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; de la barra de manera localizada. Así, la ecuación del calor modificada queda como sigue:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t = u_{xx}+f(x,t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;f(x,t)&amp;lt;/math&amp;gt; es una fuente térmica localizada, que modelamos como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f(x,t)=q(t)\delta(x-x_0)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí, &amp;lt;math&amp;gt;q(t)&amp;lt;/math&amp;gt; representa la cantidad de calor que se añade en función del tiempo y &amp;lt;math&amp;gt;\delta(x-x_0)&amp;lt;/math&amp;gt; es la delta de Dirac, que hace que el calor se añada únicamente en el punto &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt;. Al emplear la distribución &amp;lt;math&amp;gt;\delta&amp;lt;/math&amp;gt; de Dirac, estamos imponiendo que esta adición energética (calorífica) se encuentre extremadamente localizada, como la acción de un láser sobre una barra que simplificamos como unidimensional.&lt;br /&gt;
&lt;br /&gt;
Para ilustrar este fenómeno, consideramos el mismo problema de la sección 2 pero con la fuente térmica puntual en &amp;lt;math&amp;gt;x_0=0.5&amp;lt;/math&amp;gt;, con una intensidad constante &amp;lt;math&amp;gt;q(t)=2&amp;lt;/math&amp;gt;. Obtenemos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}  &lt;br /&gt;
u_t - u_{xx} = f(x,t), &amp;amp; x \in [0,1], \quad t &amp;gt; 0 \\    &lt;br /&gt;
u(0,t) = 0, &amp;amp; t &amp;gt; 0 \\  &lt;br /&gt;
u(1,t) = 0, &amp;amp; t &amp;gt; 0 \\&lt;br /&gt;
u(x,0) = \operatorname{sen}(2\pi x), &amp;amp; x \in [0,1] \\&lt;br /&gt;
f(x,t)=2\delta(x-0.5)&lt;br /&gt;
\end{cases}  &lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si intentamos resolver este problema suponiendo la existencia de una solución estacionaria, llegaríamos a una solución &amp;lt;math&amp;gt;u(x)&amp;lt;/math&amp;gt; que no sería continua en &amp;lt;math&amp;gt; x_0 &amp;lt;/math&amp;gt;. Es por ello que otros métodos algo más sofisticados son necesarios para resolver esta ecuación, y en lugar de buscar una solución analítica completa, aplicamos un método numérico basado en diferencias finitas explícitas para aproximar la solución.&lt;br /&gt;
&lt;br /&gt;
La idea general, sin embargo, se encuentra en hallar las soluciones generales para nuestro problema homogéneo y, tras esto, describir &amp;lt;math&amp;gt;f(x,t)&amp;lt;/math&amp;gt; como suma de elementos de la base de Fourier que hayamos hallado. Debido a la facilidad con la que se integra &amp;lt;math&amp;gt;\delta(x)&amp;lt;/math&amp;gt;, esto no supondría un problema.&lt;br /&gt;
&lt;br /&gt;
Por la forma de nuestra ecuación cabría esperar una solución que, además de las condiciones iniciales, tenga (y a simple vista se aprecie) una zona de temperatura máxima en &amp;lt;math&amp;gt; x_0 = 0.5 &amp;lt;/math&amp;gt;, donde a ambos lados la temperatura descendería hasta llegar a los extremos, donde la temperatura es constantemente nula.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:EvolucionILIA.jpeg|400px|thumb|right|Evolución temporal de la ecuación del calor con fuente térmica]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from mpl_toolkits.mplot3d import Axes3D&lt;br /&gt;
import numba&lt;br /&gt;
&lt;br /&gt;
# Parámetros del problema&lt;br /&gt;
L = 1.0  # Longitud del dominio espacial&lt;br /&gt;
t0 = 0 #Tiempo inicial&lt;br /&gt;
T = 0.1  # Tiempo final&lt;br /&gt;
nx = 100  # Número de puntos en la dirección x&lt;br /&gt;
nt = 10000  # Número de pasos de tiempo&lt;br /&gt;
dx = L / (nx - 1) # diferencia en espacio &lt;br /&gt;
dt = (T-t0) / nt # diferencia en tiempo&lt;br /&gt;
alpha = 1.0  # Coeficiente de difusión (para la ecuación del calor)&lt;br /&gt;
r = alpha * dt / (dx**2) #Coeficiente de estabilidad&lt;br /&gt;
&lt;br /&gt;
# Verificamos que se cumple la cond. de estabilidad para el esquema&lt;br /&gt;
if r &amp;gt; 0.5:&lt;br /&gt;
    raise ValueError(f&amp;quot;La condición de estabilidad no se cumple, 0.5 &amp;lt; {r=}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
#Inicializamos el intervalo discretizado en x&lt;br /&gt;
x = np.linspace(0, L, nx)&lt;br /&gt;
&lt;br /&gt;
#Inicializamos el intervalo en t que vamos a emplear&lt;br /&gt;
t = np.linspace(t0, T, nt + 1)&lt;br /&gt;
&lt;br /&gt;
#Creamos el mallado en x y t:&lt;br /&gt;
X,T_mesh = np.meshgrid(x,t)&lt;br /&gt;
&lt;br /&gt;
# Inicializar la solución u(x, t) con ceros&lt;br /&gt;
u = np.zeros((nt + 1, nx))&lt;br /&gt;
&lt;br /&gt;
# Aplicamos las condiciones de frontera e inicial&lt;br /&gt;
u[:, 0] = 0&lt;br /&gt;
u[:, -1] = 0&lt;br /&gt;
u[0, :] = np.sin(2*np.pi*x)&lt;br /&gt;
&lt;br /&gt;
# Calculamos el índice del punto más cercano a x = 0.5&lt;br /&gt;
index_source = int(0.5 / dx)&lt;br /&gt;
&lt;br /&gt;
# Evolución temporal&lt;br /&gt;
for n in range(nt):&lt;br /&gt;
    u[n + 1, :] = u[n, :]  # Inicializar la siguiente iteración con los valores actuales&lt;br /&gt;
    for i in range(1, nx - 1):&lt;br /&gt;
        u[n + 1, i] = u[n, i] + r * (u[n, i + 1] - 2 * u[n, i] + u[n, i - 1])&lt;br /&gt;
    # Aproximación de la delta de Dirac&lt;br /&gt;
    u[n + 1, index_source] += 2 * dt / dx&lt;br /&gt;
&lt;br /&gt;
# Crear la figura y el subplot 3D&lt;br /&gt;
fig = plt.figure(figsize=(12, 8))&lt;br /&gt;
ax = fig.add_subplot(111, projection='3d')&lt;br /&gt;
&lt;br /&gt;
# Graficar la superficie, y añadimos etiquetas, barra de color, etc.&lt;br /&gt;
surf = ax.plot_surface(X, T_mesh, u, cmap='viridis')&lt;br /&gt;
ax.set_xlabel('x')&lt;br /&gt;
ax.set_ylabel('t')&lt;br /&gt;
ax.set_zlabel('u(x, t)')&lt;br /&gt;
ax.set_title('Evolución temporal de la ecuación de calor con fuente (aproximación numérica)')&lt;br /&gt;
fig.colorbar(surf, ax=ax, label='u(x, t)')&lt;br /&gt;
&lt;br /&gt;
plt.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Interpretación de la solución numérica y comparación con el caso sin fuente===&lt;br /&gt;
Los resultados numéricos muestran que efectivamente la fuente térmica localizada en &amp;lt;math&amp;gt; x_0 = 0.5 &amp;lt;/math&amp;gt; genera una acumulación de calor en su entorno inmediato. A medida que avanza el tiempo, se observa la disipación progresiva del calor debido a la difusión, que suaviza la temperatura alrededor de este punto, extendiéndola hacia el resto del dominio.&lt;br /&gt;
&lt;br /&gt;
En comparación con el caso sin fuente, donde la temperatura inicial se disipa homogéneamente y tiende a cero en todo el dominio, en este caso se observa un comportamiento diferente: la región en torno a &amp;lt;math&amp;gt; x_0 = 0.5 &amp;lt;/math&amp;gt; se mantiene significativamente más caliente durante más tiempo. Esto refleja el efecto de la fuente térmica puntual, que introduce energía de manera continua en el sistema, impidiendo que la temperatura disminuya de forma uniforme.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_ILIA)&amp;diff=84974</id>
		<title>Ecuación del calor (Grupo ILIA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_ILIA)&amp;diff=84974"/>
				<updated>2025-03-19T10:15:44Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo ILIA | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Ignacio Campos Paños, Ignacio Martínez Cerezo, Alicia Ruiz Dominguez, Luis Ramos Ortiz }}&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
La ecuación del calor es una de las ecuaciones en derivadas parciales más fundamentales en la física y las matemáticas aplicadas, modelando la difusión de la temperatura en distintos medios. Su estudio es esencial en múltiples disciplinas, desde la ingeniería térmica hasta la biomedicina, donde se analiza la propagación del calor en tejidos biológicos. En este trabajo, estudiaremos el comportamiento de esta ecuación en una barra unidimensional aislada en el intervalo [0,1], imponiendo condiciones de frontera con temperatura constante. &lt;br /&gt;
&lt;br /&gt;
En la vida real, las fuentes de calor no necesariamente tienen por qué estar en los extremos, por lo que también buscamos un enfoque más aplicado y realista. Nos enfocaremos en la propagación del calor cuando existe una fuente térmica localizada, es decir, introduciremos una fuente de calor puntual en algún punto en el interior de la barra (0,1) y veremos cómo se comporta la ecuación del calor. En la práctica, muchas aplicaciones incluyen fuentes térmicas, como calefactores, reacciones químicas o dispositivos electrónicos que generan calor; y esto tiene aplicaciones en procesos industriales, generación de energía y modelización de sistemas térmicos. &lt;br /&gt;
&lt;br /&gt;
En resumen, exploraremos cómo la presencia de una fuente de calor afecta a la distribución de la temperatura en el tiempo, resolviendo el problema tanto analíticamente como numéricamente. A través de esta aproximación, podremos comprender mejor la influencia de fuentes térmicas en sistemas difusivos y validar métodos numéricos para resolver ecuaciones en derivadas parciales. Estudiaremos varios aspectos:&lt;br /&gt;
&lt;br /&gt;
'''Ecuación del calor con fuente:''' en este caso, la ecuación incluye un término &amp;lt;math&amp;gt; f(x,t) &amp;lt;/math&amp;gt; que representa una generación de calor interna. Esto hace que la temperatura no solo se difunda, sino que también aumente o disminuya dependiendo de la fuente.&lt;br /&gt;
&lt;br /&gt;
'''Comparación con el caso sin fuente:''' veremos cómo la solución cambia al introducir un calentamiento localizado, observando si se alcanza un estado estacionario diferente o si la temperatura sigue variando en el tiempo.&lt;br /&gt;
&lt;br /&gt;
'''Influencia de la intensidad y duración de la fuente:''' podemos analizar distintos valores de &amp;lt;math&amp;gt; A &amp;lt;/math&amp;gt; y ver cómo afectan a la propagación térmica.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ecuación del calor=&lt;br /&gt;
La ecuación de difusión del calor original sin fuentes de calor externas viene dada por:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
u_t=u_{xx}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
donde la función u(x,t) es la función temperatura en cada posición e instante de tiempo, &amp;lt;math&amp;gt;u_t&amp;lt;/math&amp;gt; la derivada temporal y &amp;lt;math&amp;gt;u_{xx}&amp;lt;/math&amp;gt; la segunda derivada espacial, que modela la difusión del calor.&lt;br /&gt;
&lt;br /&gt;
Si consideramos que la condición inicial en &amp;lt;math&amp;gt;t=0&amp;lt;/math&amp;gt; es &amp;lt;math&amp;gt;u(x,0)=\operatorname{sen}(x)&amp;lt;/math&amp;gt;, podemos obtener el siguiente problema de ecuación del calor con condiciones frontera:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}  &lt;br /&gt;
u_t - u_{xx} = 0, &amp;amp; x \in [0,1], \quad t &amp;gt; 0 \\    &lt;br /&gt;
u(0,t) = 0, &amp;amp; t &amp;gt; 0 \\  &lt;br /&gt;
u(1,t) = 0, &amp;amp; t &amp;gt; 0 \\&lt;br /&gt;
u(x,0) = \operatorname{sen}(2\pi x), &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases}  &lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Resolviendo este problema obtenemos que la solución estacionaria es:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_s(x)=0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
y la solución general:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\operatorname{sen}(2\pi x)e^{-4\pi^{2}t}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vamos a graficar la solución.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:soluil.png|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from mpl_toolkits.mplot3d import Axes3D&lt;br /&gt;
&lt;br /&gt;
# puntos de la malla&lt;br /&gt;
x = np.linspace(0, 1, 50)  &lt;br /&gt;
t = np.linspace(0, 0.5, 50)  &lt;br /&gt;
&lt;br /&gt;
X, T = np.meshgrid(x, t)  # malla&lt;br /&gt;
U = np.sin(2 * np.pi * X) * np.exp(-4 * np.pi**2 * T)  # sol general&lt;br /&gt;
&lt;br /&gt;
# figura&lt;br /&gt;
fig = plt.figure(figsize=(10, 6))&lt;br /&gt;
ax = fig.add_subplot(111, projection='3d')&lt;br /&gt;
&lt;br /&gt;
# grafica&lt;br /&gt;
ax.plot_surface(X, T, U, cmap='viridis')&lt;br /&gt;
ax.set_xlabel('Posición x')&lt;br /&gt;
ax.set_ylabel('Tiempo t')&lt;br /&gt;
ax.set_zlabel('Temperatura u(x,t)')&lt;br /&gt;
ax.set_title('Solución de la ecuación del calor')&lt;br /&gt;
&lt;br /&gt;
plt.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como podemos ver la solución tiende rápidamente a la solución estacionaria en el que toda la barra está a 0 grados, que es lógico si tenemos en cuenta que los extremos tienen temperatura constante de 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ecuación del calor con fuente térmica puntual=&lt;br /&gt;
En los casos sencillos de la ecuación del calor, como los vistos en clase, no existe aporte de calor a nuestro sistema o, si existe, es regular a lo largo del espacio y el tiempo. Sin embargo, en muchas situaciones prácticas, el calor puede ser generado en puntos específicos del dominio. Para modelar este efecto, introducimos una función &amp;lt;math&amp;gt;f(x,t)&amp;lt;/math&amp;gt; que representa un nuevo foco de calor en un punto concreto &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; de la barra de manera localizada. Así, la ecuación del calor modificada queda como sigue:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t = u_{xx}+f(x,t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;f(x,t)&amp;lt;/math&amp;gt; es una fuente térmica localizada, que modelamos como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f(x,t)=q(t)\delta(x-x_0)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí, &amp;lt;math&amp;gt;q(t)&amp;lt;/math&amp;gt; representa la cantidad de calor que se añade en función del tiempo y &amp;lt;math&amp;gt;\delta(x-x_0)&amp;lt;/math&amp;gt; es la delta de Dirac, que hace que el calor se añada únicamente en el punto &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt;. Al emplear la distribución &amp;lt;math&amp;gt;\delta&amp;lt;/math&amp;gt; de Dirac, estamos imponiendo que esta adición energética (calorífica) se encuentre extremadamente localizada, como la acción de un láser sobre una barra que simplificamos como unidimensional.&lt;br /&gt;
&lt;br /&gt;
Para ilustrar este fenómeno, consideramos el mismo problema de la sección 2 pero con la fuente térmica puntual en &amp;lt;math&amp;gt;x_0=0.5&amp;lt;/math&amp;gt;, con una intensidad constante &amp;lt;math&amp;gt;q(t)=2&amp;lt;/math&amp;gt;. Obtenemos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}  &lt;br /&gt;
u_t - u_{xx} = f(x,t), &amp;amp; x \in [0,1], \quad t &amp;gt; 0 \\    &lt;br /&gt;
u(0,t) = 0, &amp;amp; t &amp;gt; 0 \\  &lt;br /&gt;
u(1,t) = 0, &amp;amp; t &amp;gt; 0 \\&lt;br /&gt;
u(x,0) = \operatorname{sen}(2\pi x), &amp;amp; x \in [0,1] \\&lt;br /&gt;
f(x,t)=2\delta(x-0.5)&lt;br /&gt;
\end{cases}  &lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si intentamos resolver este problema suponiendo la existencia de una solución estacionaria, llegaríamos a una solución &amp;lt;math&amp;gt;u(x)&amp;lt;/math&amp;gt; que no sería continua en &amp;lt;math&amp;gt; x_0 &amp;lt;/math&amp;gt;. Es por ello que otros métodos algo más sofisticados son necesarios para resolver esta ecuación, y en lugar de buscar una solución analítica completa, aplicamos un método numérico basado en diferencias finitas explícitas para aproximar la solución.&lt;br /&gt;
&lt;br /&gt;
La idea general, sin embargo, se encuentra en hallar las soluciones generales para nuestro problema homogéneo y, tras esto, describir &amp;lt;math&amp;gt;f(x,t)&amp;lt;/math&amp;gt; como suma de elementos de la base de Fourier que hayamos hallado. Debido a la facilidad con la que se integra &amp;lt;math&amp;gt;\delta(x)&amp;lt;/math&amp;gt;, esto no supondría un problema.&lt;br /&gt;
&lt;br /&gt;
Por la forma de nuestra ecuación cabría esperar una solución que, además de las condiciones iniciales, tenga (y a simple vista se aprecie) una zona de temperatura máxima en &amp;lt;math&amp;gt; x_0 = 0.5 &amp;lt;/math&amp;gt;, donde a ambos lados la temperatura descendería hasta llegar a los extremos, donde la temperatura es constantemente nula.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:EvolucionILIA.jpeg|400px|thumb|right|Evolución temporal de la ecuación del calor con fuente térmica]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from mpl_toolkits.mplot3d import Axes3D&lt;br /&gt;
import numba&lt;br /&gt;
&lt;br /&gt;
# Parámetros del problema&lt;br /&gt;
L = 1.0  # Longitud del dominio espacial&lt;br /&gt;
t0 = 0 #Tiempo inicial&lt;br /&gt;
T = 0.1  # Tiempo final&lt;br /&gt;
nx = 100  # Número de puntos en la dirección x&lt;br /&gt;
nt = 10000  # Número de pasos de tiempo&lt;br /&gt;
dx = L / (nx - 1) # diferencia en espacio &lt;br /&gt;
dt = (T-t0) / nt # diferencia en tiempo&lt;br /&gt;
alpha = 1.0  # Coeficiente de difusión (para la ecuación del calor)&lt;br /&gt;
r = alpha * dt / (dx**2) #Coeficiente de estabilidad&lt;br /&gt;
&lt;br /&gt;
# Verificamos que se cumple la cond. de estabilidad para el esquema&lt;br /&gt;
if r &amp;gt; 0.5:&lt;br /&gt;
    raise ValueError(f&amp;quot;La condición de estabilidad no se cumple, 0.5 &amp;lt; {r=}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
#Inicializamos el intervalo discretizado en x&lt;br /&gt;
x = np.linspace(0, L, nx)&lt;br /&gt;
&lt;br /&gt;
#Inicializamos el intervalo en t que vamos a emplear&lt;br /&gt;
t = np.linspace(t0, T, nt + 1)&lt;br /&gt;
&lt;br /&gt;
#Creamos el mallado en x y t:&lt;br /&gt;
X,T_mesh = np.meshgrid(x,t)&lt;br /&gt;
&lt;br /&gt;
# Inicializar la solución u(x, t) con ceros&lt;br /&gt;
u = np.zeros((nt + 1, nx))&lt;br /&gt;
&lt;br /&gt;
# Aplicamos las condiciones de frontera e inicial&lt;br /&gt;
u[:, 0] = 0&lt;br /&gt;
u[:, -1] = 0&lt;br /&gt;
u[0, :] = np.sin(2*np.pi*x)&lt;br /&gt;
&lt;br /&gt;
# Calculamos el índice del punto más cercano a x = 0.5&lt;br /&gt;
index_source = int(0.5 / dx)&lt;br /&gt;
&lt;br /&gt;
# Evolución temporal&lt;br /&gt;
for n in range(nt):&lt;br /&gt;
    u[n + 1, :] = u[n, :]  # Inicializar la siguiente iteración con los valores actuales&lt;br /&gt;
    for i in range(1, nx - 1):&lt;br /&gt;
        u[n + 1, i] = u[n, i] + r * (u[n, i + 1] - 2 * u[n, i] + u[n, i - 1])&lt;br /&gt;
    # Aproximación de la delta de Dirac&lt;br /&gt;
    u[n + 1, index_source] += 2 * dt / dx&lt;br /&gt;
&lt;br /&gt;
# Crear la figura y el subplot 3D&lt;br /&gt;
fig = plt.figure(figsize=(12, 8))&lt;br /&gt;
ax = fig.add_subplot(111, projection='3d')&lt;br /&gt;
&lt;br /&gt;
# Graficar la superficie, y añadimos etiquetas, barra de color, etc.&lt;br /&gt;
surf = ax.plot_surface(X, T_mesh, u, cmap='viridis')&lt;br /&gt;
ax.set_xlabel('x')&lt;br /&gt;
ax.set_ylabel('t')&lt;br /&gt;
ax.set_zlabel('u(x, t)')&lt;br /&gt;
ax.set_title('Evolución temporal de la ecuación de calor con fuente (aproximación numérica)')&lt;br /&gt;
fig.colorbar(surf, ax=ax, label='u(x, t)')&lt;br /&gt;
&lt;br /&gt;
plt.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Interpretación de la solución numérica===&lt;br /&gt;
Los resultados numéricos muestran que efectivamente la fuente térmica localizada en &amp;lt;math&amp;gt; x_0 = 0.5 &amp;lt;/math&amp;gt; genera una acumulación de calor en su entorno inmediato. A medida que avanza el tiempo, se observa la disipación progresiva del calor debido a la difusión, que suaviza la temperatura alrededor de este punto, extendiéndola hacia el resto del dominio.&lt;br /&gt;
&lt;br /&gt;
En comparación con el caso sin fuente, donde la temperatura inicial se disipa homogéneamente y tiende a cero en todo el dominio, en este caso se observa un comportamiento diferente: la región en torno a &amp;lt;math&amp;gt; x_0 = 0.5 &amp;lt;/math&amp;gt; se mantiene significativamente más caliente durante más tiempo. Esto refleja el efecto de la fuente térmica puntual, que introduce energía de manera continua en el sistema, impidiendo que la temperatura disminuya de forma uniforme.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_ILIA)&amp;diff=84971</id>
		<title>Ecuación del calor (Grupo ILIA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_ILIA)&amp;diff=84971"/>
				<updated>2025-03-19T10:01:33Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo ILIA | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Ignacio Campos Paños, Ignacio Martínez Cerezo, Alicia Ruiz Dominguez, Luis Ramos Ortiz }}&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
La ecuación del calor es una de las ecuaciones en derivadas parciales más fundamentales en la física y las matemáticas aplicadas, modelando la difusión de la temperatura en distintos medios. Su estudio es esencial en múltiples disciplinas, desde la ingeniería térmica hasta la biomedicina, donde se analiza la propagación del calor en tejidos biológicos. En este trabajo, estudiaremos el comportamiento de esta ecuación en una barra unidimensional aislada en el intervalo [0,1], imponiendo condiciones de frontera con temperatura constante. &lt;br /&gt;
&lt;br /&gt;
En la vida real, las fuentes de calor no necesariamente tienen por qué estar en los extremos, por lo que también buscamos un enfoque más aplicado y realista. Nos enfocaremos en la propagación del calor cuando existe una fuente térmica localizada, es decir, introduciremos una fuente de calor puntual en algún punto en el interior de la barra (0,1) y veremos cómo se comporta la ecuación del calor. En la práctica, muchas aplicaciones incluyen fuentes térmicas, como calefactores, reacciones químicas o dispositivos electrónicos que generan calor; y esto tiene aplicaciones en procesos industriales, generación de energía y modelización de sistemas térmicos. &lt;br /&gt;
&lt;br /&gt;
En resumen, exploraremos cómo la presencia de una fuente de calor afecta a la distribución de la temperatura en el tiempo, resolviendo el problema tanto analíticamente como numéricamente. A través de esta aproximación, podremos comprender mejor la influencia de fuentes térmicas en sistemas difusivos y validar métodos numéricos para resolver ecuaciones en derivadas parciales. Estudiaremos varios aspectos:&lt;br /&gt;
&lt;br /&gt;
'''Ecuación del calor con fuente:''' en este caso, la ecuación incluye un término &amp;lt;math&amp;gt; f(x,t) &amp;lt;/math&amp;gt; que representa una generación de calor interna. Esto hace que la temperatura no solo se difunda, sino que también aumente o disminuya dependiendo de la fuente.&lt;br /&gt;
&lt;br /&gt;
'''Comparación con el caso sin fuente:''' veremos cómo la solución cambia al introducir un calentamiento localizado, observando si se alcanza un estado estacionario diferente o si la temperatura sigue variando en el tiempo.&lt;br /&gt;
&lt;br /&gt;
'''Influencia de la intensidad y duración de la fuente:''' podemos analizar distintos valores de &amp;lt;math&amp;gt; A &amp;lt;/math&amp;gt; y ver cómo afectan a la propagación térmica.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ecuación del calor=&lt;br /&gt;
La ecuación de difusión del calor original sin fuentes de calor externas viene dada por:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
u_t=u_{xx}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
donde la función u(x,t) es la función temperatura en cada posición e instante de tiempo, &amp;lt;math&amp;gt;u_t&amp;lt;/math&amp;gt; la derivada temporal y &amp;lt;math&amp;gt;u_{xx}&amp;lt;/math&amp;gt; la segunda derivada espacial, que modela la difusión del calor.&lt;br /&gt;
&lt;br /&gt;
Si consideramos que la condición inicial en &amp;lt;math&amp;gt;t=0&amp;lt;/math&amp;gt; es &amp;lt;math&amp;gt;u(x,0)=\operatorname{sen}(x)&amp;lt;/math&amp;gt;, podemos obtener el siguiente problema de ecuación del calor con condiciones frontera:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}  &lt;br /&gt;
u_t - u_{xx} = 0, &amp;amp; x \in [0,1], \quad t &amp;gt; 0 \\    &lt;br /&gt;
u(0,t) = 0, &amp;amp; t &amp;gt; 0 \\  &lt;br /&gt;
u(1,t) = 0, &amp;amp; t &amp;gt; 0 \\&lt;br /&gt;
u(x,0) = \operatorname{sen}(2\pi x), &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases}  &lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Resolviendo este problema obtenemos que la solución estacionaria es:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_s(x)=0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
y la solución general:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\operatorname{sen}(2\pi x)e^{-4\pi^{2}t}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vamos a graficar la solución.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:soluil.png|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from mpl_toolkits.mplot3d import Axes3D&lt;br /&gt;
&lt;br /&gt;
# puntos de la malla&lt;br /&gt;
x = np.linspace(0, 1, 50)  &lt;br /&gt;
t = np.linspace(0, 0.5, 50)  &lt;br /&gt;
&lt;br /&gt;
X, T = np.meshgrid(x, t)  # malla&lt;br /&gt;
U = np.sin(2 * np.pi * X) * np.exp(-4 * np.pi**2 * T)  # sol general&lt;br /&gt;
&lt;br /&gt;
# figura&lt;br /&gt;
fig = plt.figure(figsize=(10, 6))&lt;br /&gt;
ax = fig.add_subplot(111, projection='3d')&lt;br /&gt;
&lt;br /&gt;
# grafica&lt;br /&gt;
ax.plot_surface(X, T, U, cmap='viridis')&lt;br /&gt;
ax.set_xlabel('Posición x')&lt;br /&gt;
ax.set_ylabel('Tiempo t')&lt;br /&gt;
ax.set_zlabel('Temperatura u(x,t)')&lt;br /&gt;
ax.set_title('Solución de la ecuación del calor')&lt;br /&gt;
&lt;br /&gt;
plt.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como podemos ver la solución tiende rápidamente a la solución estacionaria en el que toda la barra está a 0 grados, que es lógico si tenemos en cuenta que los extremos tienen temperatura constante de 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ecuación del calor con fuente térmica puntual=&lt;br /&gt;
En los casos sencillos de la ecuación del calor, como los vistos en clase, no existe aporte de calor a nuestro sistema o, si existe, es regular a lo largo del espacio y el tiempo. Sin embargo, en muchas situaciones prácticas, el calor puede ser generado en puntos específicos del dominio. Para modelar este efecto, introducimos una función &amp;lt;math&amp;gt;f(x,t)&amp;lt;/math&amp;gt; que representa un nuevo foco de calor en un punto concreto &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; de la barra de manera localizada. Así, la ecuación del calor modificada queda como sigue:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t = u_{xx}+f(x,t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;f(x,t)&amp;lt;/math&amp;gt; es una fuente térmica localizada, que modelamos como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f(x,t)=q(t)\delta(x-x_0)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí, &amp;lt;math&amp;gt;q(t)&amp;lt;/math&amp;gt; representa la cantidad de calor que se añade en función del tiempo y &amp;lt;math&amp;gt;\delta(x-x_0)&amp;lt;/math&amp;gt; es la delta de Dirac, que hace que el calor se añada únicamente en el punto &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt;. Al emplear la distribución &amp;lt;math&amp;gt;\delta&amp;lt;/math&amp;gt; de Dirac, estamos imponiendo que esta adición energética (calorífica) se encuentre extremadamente localizada, como la acción de un láser sobre una barra que simplificamos como unidimensional.&lt;br /&gt;
&lt;br /&gt;
Para ilustrar este fenómeno, consideramos el mismo problema de la sección 2 pero con la fuente térmica puntual en &amp;lt;math&amp;gt;x_0=0.5&amp;lt;/math&amp;gt;, con una intensidad constante &amp;lt;math&amp;gt;q(t)=2&amp;lt;/math&amp;gt;. Obtenemos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}  &lt;br /&gt;
u_t - u_{xx} = f(x,t), &amp;amp; x \in [0,1], \quad t &amp;gt; 0 \\    &lt;br /&gt;
u(0,t) = 0, &amp;amp; t &amp;gt; 0 \\  &lt;br /&gt;
u(1,t) = 0, &amp;amp; t &amp;gt; 0 \\&lt;br /&gt;
u(x,0) = \operatorname{sen}(2\pi x), &amp;amp; x \in [0,1] \\&lt;br /&gt;
f(x,t)=2\delta(x-0.5)&lt;br /&gt;
\end{cases}  &lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si intentamos resolver este problema suponiendo la existencia de una solución estacionaria, llegaríamos a una solución &amp;lt;math&amp;gt;u(x)&amp;lt;/math&amp;gt; que no sería continua en &amp;lt;math&amp;gt; x_0 &amp;lt;/math&amp;gt;. Es por ello que otros métodos algo más sofisticados son necesarios para resolver esta ecuación, y en lugar de buscar una solución analítica completa, aplicamos un método numérico basado en diferencias finitas explícitas para aproximar la solución.&lt;br /&gt;
&lt;br /&gt;
La idea general, sin embargo, se encuentra en hallar las soluciones generales para nuestro problema homogéneo y, tras esto, describir &amp;lt;math&amp;gt;f(x,t)&amp;lt;/math&amp;gt; como suma de elementos de la base de Fourier que hayamos hallado. Debido a la facilidad con la que se integra &amp;lt;math&amp;gt;\delta(x)&amp;lt;/math&amp;gt;, esto no supondría un problema.&lt;br /&gt;
&lt;br /&gt;
Por la forma de nuestra ecuación cabría esperar una solución que, además de las condiciones iniciales, tenga (y a simple vista se aprecie) una zona de temperatura máxima en &amp;lt;math&amp;gt; x_0 = 0 &amp;lt;/math&amp;gt;, donde a ambos lados la temperatura descendería hasta llegar a los extremos, donde la temperatura es constantemente nula.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:EvolucionILIA.jpeg|400px|thumb|right|Evolución temporal de la ecuación del calor con fuente térmica]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from mpl_toolkits.mplot3d import Axes3D&lt;br /&gt;
import numba&lt;br /&gt;
&lt;br /&gt;
# Parámetros del problema&lt;br /&gt;
L = 1.0  # Longitud del dominio espacial&lt;br /&gt;
t0 = 0 #Tiempo inicial&lt;br /&gt;
T = 0.1  # Tiempo final&lt;br /&gt;
nx = 100  # Número de puntos en la dirección x&lt;br /&gt;
nt = 10000  # Número de pasos de tiempo&lt;br /&gt;
dx = L / (nx - 1) # diferencia en espacio &lt;br /&gt;
dt = (T-t0) / nt # diferencia en tiempo&lt;br /&gt;
alpha = 1.0  # Coeficiente de difusión (para la ecuación del calor)&lt;br /&gt;
r = alpha * dt / (dx**2) #Coeficiente de estabilidad&lt;br /&gt;
&lt;br /&gt;
# Verificamos que se cumple la cond. de estabilidad para el esquema&lt;br /&gt;
if r &amp;gt; 0.5:&lt;br /&gt;
    raise ValueError(f&amp;quot;La condición de estabilidad no se cumple, 0.5 &amp;lt; {r=}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
#Inicializamos el intervalo discretizado en x&lt;br /&gt;
x = np.linspace(0, L, nx)&lt;br /&gt;
&lt;br /&gt;
#Inicializamos el intervalo en t que vamos a emplear&lt;br /&gt;
t = np.linspace(t0, T, nt + 1)&lt;br /&gt;
&lt;br /&gt;
#Creamos el mallado en x y t:&lt;br /&gt;
X,T_mesh = np.meshgrid(x,t)&lt;br /&gt;
&lt;br /&gt;
# Inicializar la solución u(x, t) con ceros&lt;br /&gt;
u = np.zeros((nt + 1, nx))&lt;br /&gt;
&lt;br /&gt;
# Aplicamos las condiciones de frontera e inicial&lt;br /&gt;
u[:, 0] = 0&lt;br /&gt;
u[:, -1] = 0&lt;br /&gt;
u[0, :] = np.sin(2*np.pi*x)&lt;br /&gt;
&lt;br /&gt;
# Calculamos el índice del punto más cercano a x = 0.5&lt;br /&gt;
index_source = int(0.5 / dx)&lt;br /&gt;
&lt;br /&gt;
# Evolución temporal&lt;br /&gt;
for n in range(nt):&lt;br /&gt;
    u[n + 1, :] = u[n, :]  # Inicializar la siguiente iteración con los valores actuales&lt;br /&gt;
    for i in range(1, nx - 1):&lt;br /&gt;
        u[n + 1, i] = u[n, i] + r * (u[n, i + 1] - 2 * u[n, i] + u[n, i - 1])&lt;br /&gt;
    # Aproximación de la delta de Dirac&lt;br /&gt;
    u[n + 1, index_source] += 2 * dt / dx&lt;br /&gt;
&lt;br /&gt;
# Crear la figura y el subplot 3D&lt;br /&gt;
fig = plt.figure(figsize=(12, 8))&lt;br /&gt;
ax = fig.add_subplot(111, projection='3d')&lt;br /&gt;
&lt;br /&gt;
# Graficar la superficie, y añadimos etiquetas, barra de color, etc.&lt;br /&gt;
surf = ax.plot_surface(X, T_mesh, u, cmap='viridis')&lt;br /&gt;
ax.set_xlabel('x')&lt;br /&gt;
ax.set_ylabel('t')&lt;br /&gt;
ax.set_zlabel('u(x, t)')&lt;br /&gt;
ax.set_title('Evolución temporal de la ecuación de calor con fuente (aproximación numérica)')&lt;br /&gt;
fig.colorbar(surf, ax=ax, label='u(x, t)')&lt;br /&gt;
&lt;br /&gt;
plt.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Interpretación de la solución numérica===&lt;br /&gt;
Los resultados numéricos muestran que efectivamente la fuente térmica genera una acumulación de calor alrededor de &amp;lt;math&amp;gt; x_0 = 0.5 &amp;lt;/math&amp;gt;, que se difunde progresivamente a lo largo de la barra. En las primeras etapas, se observa un pico de temperatura en la vecindad de la fuente, que disminuye conforme el calor se propaga hacia los extremos.&lt;br /&gt;
&lt;br /&gt;
En comparación con el caso sin fuente, donde la temperatura simplemente decae hacia cero debido a la disipación térmica, en este caso la temperatura no disminuye de manera uniforme. La región en torno a &amp;lt;math&amp;gt; x_0 = 0.5 &amp;lt;/math&amp;gt; permanece más caliente durante más tiempo, lo que refleja el efecto de la fuente térmica puntual.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_ILIA)&amp;diff=84942</id>
		<title>Ecuación del calor (Grupo ILIA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_ILIA)&amp;diff=84942"/>
				<updated>2025-03-18T22:51:21Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo ILIA | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Ignacio Campos Paños, Ignacio Martínez Cerezo, Alicia Ruiz Dominguez, Luis Ramos Ortiz }}&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
La ecuación del calor es una de las ecuaciones en derivadas parciales más fundamentales en la física y las matemáticas aplicadas, modelando la difusión de la temperatura en distintos medios. Su estudio es esencial en múltiples disciplinas, desde la ingeniería térmica hasta la biomedicina, donde se analiza la propagación del calor en tejidos biológicos. En este trabajo, estudiaremos el comportamiento de esta ecuación en una barra unidimensional aislada en el intervalo [0,1], imponiendo condiciones de frontera con temperatura constante. &lt;br /&gt;
&lt;br /&gt;
En la vida real, las fuentes de calor no necesariamente tienen por qué estar en los extremos, por lo que también buscamos un enfoque más aplicado y realista. Nos enfocaremos en la propagación del calor cuando existe una fuente térmica localizada, es decir, introduciremos una fuente de calor puntual en algún punto en el interior de la barra (0,1) y veremos cómo se comporta la ecuación del calor. En la práctica, muchas aplicaciones incluyen fuentes térmicas, como calefactores, reacciones químicas o dispositivos electrónicos que generan calor; y esto tiene aplicaciones en procesos industriales, generación de energía y modelización de sistemas térmicos. &lt;br /&gt;
&lt;br /&gt;
En resumen, exploraremos cómo la presencia de una fuente de calor afecta a la distribución de la temperatura en el tiempo, resolviendo el problema tanto analíticamente como numéricamente. A través de esta aproximación, podremos comprender mejor la influencia de fuentes térmicas en sistemas difusivos y validar métodos numéricos para resolver ecuaciones en derivadas parciales. Estudiaremos varios aspectos:&lt;br /&gt;
&lt;br /&gt;
'''Ecuación del calor con fuente:''' en este caso, la ecuación incluye un término &amp;lt;math&amp;gt; f(x,t) &amp;lt;/math&amp;gt; que representa una generación de calor interna. Esto hace que la temperatura no solo se difunda, sino que también aumente o disminuya dependiendo de la fuente.&lt;br /&gt;
&lt;br /&gt;
'''Comparación con el caso sin fuente:''' veremos cómo la solución cambia al introducir un calentamiento localizado, observando si se alcanza un estado estacionario diferente o si la temperatura sigue variando en el tiempo.&lt;br /&gt;
&lt;br /&gt;
'''Influencia de la intensidad y duración de la fuente:''' podemos analizar distintos valores de &amp;lt;math&amp;gt; A &amp;lt;/math&amp;gt; y ver cómo afectan a la propagación térmica.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ecuación del calor=&lt;br /&gt;
La ecuación de difusión del calor original sin fuentes de calor externas viene dada por:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
u_t=u_{xx}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
donde la función u(x,t) es la función temperatura en cada posición e instante de tiempo, &amp;lt;math&amp;gt;u_t&amp;lt;/math&amp;gt; la derivada temporal y &amp;lt;math&amp;gt;u_{xx}&amp;lt;/math&amp;gt; la segunda derivada espacial, que modela la difusión del calor.&lt;br /&gt;
&lt;br /&gt;
Si consideramos que la condición inicial en &amp;lt;math&amp;gt;t=0&amp;lt;/math&amp;gt; es &amp;lt;math&amp;gt;u(x,0)=\operatorname{sen}(x)&amp;lt;/math&amp;gt;, podemos obtener el siguiente problema de ecuación del calor con condiciones frontera:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}  &lt;br /&gt;
u_t - u_{xx} = 0, &amp;amp; x \in [0,1], \quad t &amp;gt; 0 \\    &lt;br /&gt;
u(0,t) = 0, &amp;amp; t &amp;gt; 0 \\  &lt;br /&gt;
u(1,t) = 0, &amp;amp; t &amp;gt; 0 \\&lt;br /&gt;
u(x,0) = \operatorname{sen}(2\pi x), &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases}  &lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Resolviendo este problema obtenemos que la solución estacionaria es:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_s(x)=0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
y la solución general:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\operatorname{sen}(2\pi x)e^{-4\pi^{2}t}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vamos a graficar la solución.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:soluil.png|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from mpl_toolkits.mplot3d import Axes3D&lt;br /&gt;
&lt;br /&gt;
# puntos de la malla&lt;br /&gt;
x = np.linspace(0, 1, 50)  &lt;br /&gt;
t = np.linspace(0, 0.5, 50)  &lt;br /&gt;
&lt;br /&gt;
X, T = np.meshgrid(x, t)  # malla&lt;br /&gt;
U = np.sin(2 * np.pi * X) * np.exp(-4 * np.pi**2 * T)  # sol general&lt;br /&gt;
&lt;br /&gt;
# figura&lt;br /&gt;
fig = plt.figure(figsize=(10, 6))&lt;br /&gt;
ax = fig.add_subplot(111, projection='3d')&lt;br /&gt;
&lt;br /&gt;
# grafica&lt;br /&gt;
ax.plot_surface(X, T, U, cmap='viridis')&lt;br /&gt;
ax.set_xlabel('Posición x')&lt;br /&gt;
ax.set_ylabel('Tiempo t')&lt;br /&gt;
ax.set_zlabel('Temperatura u(x,t)')&lt;br /&gt;
ax.set_title('Solución de la ecuación del calor')&lt;br /&gt;
&lt;br /&gt;
plt.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como podemos ver la solución tiende rápidamente a la solución estacionaria en el que toda la barra está a 0 grados, que es lógico si tenemos en cuenta que los extremos tienen temperatura constante de 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ecuación del calor con fuente térmica puntual=&lt;br /&gt;
En los casos sencillos de la ecuación del calor, como los vistos en clase, no existe aporte de calor a nuestro sistema o, si existe, es regular a lo largo del espacio y el tiempo. Podemos, sin embargo, tratar de estudiar el caso en el que se introduce una función &amp;lt;math&amp;gt;f(x,t)&amp;lt;/math&amp;gt; que representa un nuevo foco de calor en un punto concreto &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; de la barra de manera localizada, de manera que la ecuación del calor queda como sigue:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t = u_{xx}+f(x,t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Donde &amp;lt;math&amp;gt;f(x,t)&amp;lt;/math&amp;gt; es de la forma &amp;lt;math&amp;gt;f(x,t)=q(t)\delta(x-x_0)&amp;lt;/math&amp;gt;, donde &amp;lt;math&amp;gt;q(t)&amp;lt;/math&amp;gt; representa la cantidad de calor que se añade en función del tiempo y &amp;lt;math&amp;gt;\delta(x-x_0)&amp;lt;/math&amp;gt; es la delta de Dirac, que hace que el calor se añada únicamente en el punto &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt;. Al emplear la distribución &amp;lt;math&amp;gt;\delta&amp;lt;/math&amp;gt; de Dirac, estamos imponiendo que esta adición energética (calorífica) se encuentre extremadamente localizada, como la acción de un láser sobre una barra que simplificamos como unidimensional.&lt;br /&gt;
&lt;br /&gt;
Si consideramos &amp;lt;math&amp;gt;q(t)=2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;x_0=0.5&amp;lt;/math&amp;gt; y tomamos el mismo problema de la sección 2 con esta modificación, obtenemos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}  &lt;br /&gt;
u_t - u_{xx} = f(x,t), &amp;amp; x \in [0,1], \quad t &amp;gt; 0 \\    &lt;br /&gt;
u(0,t) = 0, &amp;amp; t &amp;gt; 0 \\  &lt;br /&gt;
u(1,t) = 0, &amp;amp; t &amp;gt; 0 \\&lt;br /&gt;
u(x,0) = \operatorname{sen}(2\pi x), &amp;amp; x \in [0,1] \\&lt;br /&gt;
f(x,t)=2\delta(x-0.5)&lt;br /&gt;
\end{cases}  &lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tratando de hallar una solución realizando la suposición de existencia de solución estacionaria, llegaríamos a una solución &amp;lt;math&amp;gt;u(x)&amp;lt;/math&amp;gt; que no sería continua. Es por ello que otros métodos algo más sofisticados son necesarios para resolver esta ecuación. La idea general, sin embargo, se encuentra en hallar las soluciones generales para nuestro problema homogéneo y, tras esto, describir &amp;lt;math&amp;gt;f(x,t)&amp;lt;/math&amp;gt; como suma de elementos de la base de Fourier que hayamos hallado. Debido a la facilidad con la que se integra &amp;lt;math&amp;gt;\delta(x)&amp;lt;/math&amp;gt;, esto no supondría un problema.&lt;br /&gt;
&lt;br /&gt;
Por la forma de nuestra ecuación cabría esperar una solución que, además de las condiciones iniciales, tenga (y a simple vista se aprecie) una zona de temperatura máxima en &amp;lt;math&amp;gt; x_0 = 0 &amp;lt;/math&amp;gt;, donde a ambos lados la temperatura descendería hasta llegar a los extremos, donde la temperatura es constantemente nula.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:EvolucionILIA.jpeg|400px|thumb|right|Evolución temporal de la ecuación del calor con fuente térmica]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from mpl_toolkits.mplot3d import Axes3D&lt;br /&gt;
import numba&lt;br /&gt;
&lt;br /&gt;
# Parámetros del problema&lt;br /&gt;
L = 1.0  # Longitud del dominio espacial&lt;br /&gt;
t0 = 0 #Tiempo inicial&lt;br /&gt;
T = 0.1  # Tiempo final&lt;br /&gt;
nx = 100  # Número de puntos en la dirección x&lt;br /&gt;
nt = 10000  # Número de pasos de tiempo&lt;br /&gt;
dx = L / (nx - 1) # diferencia en espacio &lt;br /&gt;
dt = (T-t0) / nt # diferencia en tiempo&lt;br /&gt;
alpha = 1.0  # Coeficiente de difusión (para la ecuación del calor)&lt;br /&gt;
r = alpha * dt / (dx**2) #Coeficiente de estabilidad&lt;br /&gt;
&lt;br /&gt;
# Verificamos que se cumple la cond. de estabilidad para el esquema&lt;br /&gt;
if r &amp;gt; 0.5:&lt;br /&gt;
    raise ValueError(f&amp;quot;La condición de estabilidad no se cumple, 0.5 &amp;lt; {r=}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
#Inicializamos el intervalo discretizado en x&lt;br /&gt;
x = np.linspace(0, L, nx)&lt;br /&gt;
&lt;br /&gt;
#Inicializamos el intervalo en t que vamos a emplear&lt;br /&gt;
t = np.linspace(t0, T, nt + 1)&lt;br /&gt;
&lt;br /&gt;
#Creamos el mallado en x y t:&lt;br /&gt;
X,T_mesh = np.meshgrid(x,t)&lt;br /&gt;
&lt;br /&gt;
# Inicializar la solución u(x, t) con ceros&lt;br /&gt;
u = np.zeros((nt + 1, nx))&lt;br /&gt;
&lt;br /&gt;
# Aplicamos las condiciones de frontera e inicial&lt;br /&gt;
u[:, 0] = 0&lt;br /&gt;
u[:, -1] = 0&lt;br /&gt;
u[0, :] = np.sin(2*np.pi*x)&lt;br /&gt;
&lt;br /&gt;
# Calculamos el índice del punto más cercano a x = 0.5&lt;br /&gt;
index_source = int(0.5 / dx)&lt;br /&gt;
&lt;br /&gt;
# Evolución temporal&lt;br /&gt;
for n in range(nt):&lt;br /&gt;
    u[n + 1, :] = u[n, :]  # Inicializar la siguiente iteración con los valores actuales&lt;br /&gt;
    for i in range(1, nx - 1):&lt;br /&gt;
        u[n + 1, i] = u[n, i] + r * (u[n, i + 1] - 2 * u[n, i] + u[n, i - 1])&lt;br /&gt;
    # Aproximación de la delta de Dirac&lt;br /&gt;
    u[n + 1, index_source] += 2 * dt / dx&lt;br /&gt;
&lt;br /&gt;
# Crear la figura y el subplot 3D&lt;br /&gt;
fig = plt.figure(figsize=(12, 8))&lt;br /&gt;
ax = fig.add_subplot(111, projection='3d')&lt;br /&gt;
&lt;br /&gt;
# Graficar la superficie, y añadimos etiquetas, barra de color, etc.&lt;br /&gt;
surf = ax.plot_surface(X, T_mesh, u, cmap='viridis')&lt;br /&gt;
ax.set_xlabel('x')&lt;br /&gt;
ax.set_ylabel('t')&lt;br /&gt;
ax.set_zlabel('u(x, t)')&lt;br /&gt;
ax.set_title('Evolución temporal de la ecuación de calor con fuente (aproximación numérica)')&lt;br /&gt;
fig.colorbar(surf, ax=ax, label='u(x, t)')&lt;br /&gt;
&lt;br /&gt;
plt.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y efectivamente así queda.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:EvolucionILIA.jpeg&amp;diff=84941</id>
		<title>Archivo:EvolucionILIA.jpeg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:EvolucionILIA.jpeg&amp;diff=84941"/>
				<updated>2025-03-18T22:47:49Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_ILIA)&amp;diff=84940</id>
		<title>Ecuación del calor (Grupo ILIA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_ILIA)&amp;diff=84940"/>
				<updated>2025-03-18T22:47:11Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Ignacio Campos Paños, Ignacio Martínez Cerezo, Alicia Ruiz Dominguez, Luis Ramos Ortiz }}&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
La ecuación del calor es una de las ecuaciones en derivadas parciales más fundamentales en la física y las matemáticas aplicadas, modelando la difusión de la temperatura en distintos medios. Su estudio es esencial en múltiples disciplinas, desde la ingeniería térmica hasta la biomedicina, donde se analiza la propagación del calor en tejidos biológicos. En este trabajo, estudiaremos el comportamiento de esta ecuación en una barra unidimensional aislada en el intervalo [0,1], imponiendo condiciones de frontera con temperatura constante. &lt;br /&gt;
&lt;br /&gt;
En la vida real, las fuentes de calor no necesariamente tienen por qué estar en los extremos, por lo que también buscamos un enfoque más aplicado y realista. Nos enfocaremos en la propagación del calor cuando existe una fuente térmica localizada, es decir, introduciremos una fuente de calor puntual en algún punto en el interior de la barra (0,1) y veremos cómo se comporta la ecuación del calor. En la práctica, muchas aplicaciones incluyen fuentes térmicas, como calefactores, reacciones químicas o dispositivos electrónicos que generan calor; y esto tiene aplicaciones en procesos industriales, generación de energía y modelización de sistemas térmicos. &lt;br /&gt;
&lt;br /&gt;
En resumen, exploraremos cómo la presencia de una fuente de calor afecta a la distribución de la temperatura en el tiempo, resolviendo el problema tanto analíticamente como numéricamente. A través de esta aproximación, podremos comprender mejor la influencia de fuentes térmicas en sistemas difusivos y validar métodos numéricos para resolver ecuaciones en derivadas parciales. Estudiaremos varios aspectos:&lt;br /&gt;
&lt;br /&gt;
'''Ecuación del calor con fuente:''' en este caso, la ecuación incluye un término &amp;lt;math&amp;gt; f(x,t) &amp;lt;/math&amp;gt; que representa una generación de calor interna. Esto hace que la temperatura no solo se difunda, sino que también aumente o disminuya dependiendo de la fuente.&lt;br /&gt;
&lt;br /&gt;
'''Comparación con el caso sin fuente:''' veremos cómo la solución cambia al introducir un calentamiento localizado, observando si se alcanza un estado estacionario diferente o si la temperatura sigue variando en el tiempo.&lt;br /&gt;
&lt;br /&gt;
'''Influencia de la intensidad y duración de la fuente:''' podemos analizar distintos valores de &amp;lt;math&amp;gt; A &amp;lt;/math&amp;gt; y ver cómo afectan la propagación térmica.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ecuación del calor=&lt;br /&gt;
La ecuación de difusión del calor original sin fuentes de calor externas viene dada por:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
u_t=u_{xx}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
donde la función u(x,t) es la función temperatura en cada posición e instante de tiempo, &amp;lt;math&amp;gt;u_t&amp;lt;/math&amp;gt; la derivada temporal y &amp;lt;math&amp;gt;u_{xx}&amp;lt;/math&amp;gt; la segunda derivada espacial, que modela la difusión del calor.&lt;br /&gt;
&lt;br /&gt;
Si consideramos que la condición inicial en &amp;lt;math&amp;gt;t=0&amp;lt;/math&amp;gt; es &amp;lt;math&amp;gt;u(x,0)=\operatorname{sen}(x)&amp;lt;/math&amp;gt;, podemos obtener el siguiente problema de ecuación del calor con condiciones frontera:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}  &lt;br /&gt;
u_t - u_{xx} = 0, &amp;amp; x \in [0,1], \quad t &amp;gt; 0 \\    &lt;br /&gt;
u(0,t) = 0, &amp;amp; t &amp;gt; 0 \\  &lt;br /&gt;
u(1,t) = 0, &amp;amp; t &amp;gt; 0 \\&lt;br /&gt;
u(x,0) = \operatorname{sen}(2\pi x), &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases}  &lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Resolviendo este problema obtenemos que la solución estacionaria es:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_s(x)=0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
y la solución general:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=\operatorname{sen}(2\pi x)e^{-4\pi^{2}t}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vamos a graficar la solución.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:soluil.png|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from mpl_toolkits.mplot3d import Axes3D&lt;br /&gt;
&lt;br /&gt;
# puntos de la malla&lt;br /&gt;
x = np.linspace(0, 1, 50)  &lt;br /&gt;
t = np.linspace(0, 0.5, 50)  &lt;br /&gt;
&lt;br /&gt;
X, T = np.meshgrid(x, t)  # malla&lt;br /&gt;
U = np.sin(2 * np.pi * X) * np.exp(-4 * np.pi**2 * T)  # sol general&lt;br /&gt;
&lt;br /&gt;
# figura&lt;br /&gt;
fig = plt.figure(figsize=(10, 6))&lt;br /&gt;
ax = fig.add_subplot(111, projection='3d')&lt;br /&gt;
&lt;br /&gt;
# grafica&lt;br /&gt;
ax.plot_surface(X, T, U, cmap='viridis')&lt;br /&gt;
ax.set_xlabel('Posición x')&lt;br /&gt;
ax.set_ylabel('Tiempo t')&lt;br /&gt;
ax.set_zlabel('Temperatura u(x,t)')&lt;br /&gt;
ax.set_title('Solución de la ecuación del calor')&lt;br /&gt;
&lt;br /&gt;
plt.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como podemos ver la solución tiende rápidamente a la solución estacionaria en el que toda la barra está a 0 grados, que es lógico si tenemos en cuenta que los extremos tienen temperatura constante de 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ecuación del calor con fuente térmica puntual=&lt;br /&gt;
En los casos sencillos de la ecuación del calor, como los vistos en clase, no existe aporte de calor a nuestro sistema o, si existe, es regular a lo largo del espacio y el tiempo. Podemos, sin embargo, tratar de estudiar el caso en el que se introduce una función &amp;lt;math&amp;gt;f(x,t)&amp;lt;/math&amp;gt; que representa un nuevo foco de calor en un punto concreto &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; de la barra de manera localizada, de manera que la ecuación del calor queda como sigue:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t = u_{xx}+f(x,t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Donde &amp;lt;math&amp;gt;f(x,t)&amp;lt;/math&amp;gt; es de la forma &amp;lt;math&amp;gt;f(x,t)=q(t)\delta(x-x_0)&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;q(t)&amp;lt;/math&amp;gt; representa la cantidad de calor que se añade en función del tiempo y &amp;lt;math&amp;gt;\delta(x-x_0)&amp;lt;/math&amp;gt; es la delta de Dirac, que hace que el calor se añada únicamente en el punto &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt;. Al emplear la distribución &amp;lt;math&amp;gt;\delta&amp;lt;/math&amp;gt; de Dirac, estamos imponiendo que esta adición energética (calorífica) se encuentre extremadamente localizada, como la acción de un láser sobre una barra que simplificamos como unidimensional.&lt;br /&gt;
&lt;br /&gt;
Si consideramos &amp;lt;math&amp;gt;q(t)=2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;x_0=0.5&amp;lt;/math&amp;gt; y tomamos el mismo problema de la sección 2 con esta modificación, obtenemos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}  &lt;br /&gt;
u_t - u_{xx} = f(x,t), &amp;amp; x \in [0,1], \quad t &amp;gt; 0 \\    &lt;br /&gt;
u(0,t) = 0, &amp;amp; t &amp;gt; 0 \\  &lt;br /&gt;
u(1,t) = 0, &amp;amp; t &amp;gt; 0 \\&lt;br /&gt;
u(x,0) = \operatorname{sen}(2\pi x), &amp;amp; x \in [0,1] \\&lt;br /&gt;
f(x,t)=2\delta(x-0.5)&lt;br /&gt;
\end{cases}  &lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tratando de hallar una solución realizando la suposición de existencia de solución estacionaria, llegaríamos a una solución &amp;lt;math&amp;gt;u(x)&amp;lt;/math&amp;gt; que no sería continua. Es por ello que otros métodos algo más sofisticados son necesarios para resolver esta ecuación. La idea general, sin embargo, se encuentra en hallar las soluciones generales para nuestro problema homogéneo y, tras esto, describir &amp;lt;math&amp;gt;f(x,t)&amp;lt;/math&amp;gt; como suma de elementos de la base de Fourier que hayamos hallado. Debido a la facilidad con la que se integra &amp;lt;math&amp;gt;\delta(x)&amp;lt;/math&amp;gt;, esto no supondría un problema.&lt;br /&gt;
&lt;br /&gt;
Por la forma de nuestra ecuación cabría esperar una solución que, además de las condiciones iniciales, tenga (y a simple vista se aprecie) una zona de temperatura máxima en &amp;lt;math&amp;gt; x_0 = 0 &amp;lt;/math&amp;gt;, donde a ambos lados la temperatura descendería hasta llegar a los extremos, donde la temperatura es constantemente nula.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from mpl_toolkits.mplot3d import Axes3D&lt;br /&gt;
import numba&lt;br /&gt;
&lt;br /&gt;
# Parámetros del problema&lt;br /&gt;
L = 1.0  # Longitud del dominio espacial&lt;br /&gt;
t0 = 0 #Tiempo inicial&lt;br /&gt;
T = 0.1  # Tiempo final&lt;br /&gt;
nx = 100  # Número de puntos en la dirección x&lt;br /&gt;
nt = 10000  # Número de pasos de tiempo&lt;br /&gt;
dx = L / (nx - 1) # diferencia en espacio &lt;br /&gt;
dt = (T-t0) / nt # diferencia en tiempo&lt;br /&gt;
alpha = 1.0  # Coeficiente de difusión (para la ecuación del calor)&lt;br /&gt;
r = alpha * dt / (dx**2) #Coeficiente de estabilidad&lt;br /&gt;
&lt;br /&gt;
# Verificamos que se cumple la cond. de estabilidad para el esquema&lt;br /&gt;
if r &amp;gt; 0.5:&lt;br /&gt;
    raise ValueError(f&amp;quot;La condición de estabilidad no se cumple, 0.5 &amp;lt; {r=}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
#Inicializamos el intervalo discretizado en x&lt;br /&gt;
x = np.linspace(0, L, nx)&lt;br /&gt;
&lt;br /&gt;
#Inicializamos el intervalo en t que vamos a emplear&lt;br /&gt;
t = np.linspace(t0, T, nt + 1)&lt;br /&gt;
&lt;br /&gt;
#Creamos el mallado en x y t:&lt;br /&gt;
X,T_mesh = np.meshgrid(x,t)&lt;br /&gt;
&lt;br /&gt;
# Inicializar la solución u(x, t) con ceros&lt;br /&gt;
u = np.zeros((nt + 1, nx))&lt;br /&gt;
&lt;br /&gt;
# Aplicamos las condiciones de frontera e inicial&lt;br /&gt;
u[:, 0] = 0&lt;br /&gt;
u[:, -1] = 0&lt;br /&gt;
u[0, :] = np.sin(2*np.pi*x)&lt;br /&gt;
&lt;br /&gt;
# Calculamos el índice del punto más cercano a x = 0.5&lt;br /&gt;
index_source = int(0.5 / dx)&lt;br /&gt;
&lt;br /&gt;
# Evolución temporal&lt;br /&gt;
for n in range(nt):&lt;br /&gt;
    u[n + 1, :] = u[n, :]  # Inicializar la siguiente iteración con los valores actuales&lt;br /&gt;
    for i in range(1, nx - 1):&lt;br /&gt;
        u[n + 1, i] = u[n, i] + r * (u[n, i + 1] - 2 * u[n, i] + u[n, i - 1])&lt;br /&gt;
    # Aproximación de la delta de Dirac&lt;br /&gt;
    u[n + 1, index_source] += 2 * dt / dx&lt;br /&gt;
&lt;br /&gt;
# Crear la figura y el subplot 3D&lt;br /&gt;
fig = plt.figure(figsize=(12, 8))&lt;br /&gt;
ax = fig.add_subplot(111, projection='3d')&lt;br /&gt;
&lt;br /&gt;
# Graficar la superficie, y añadimos etiquetas, barra de color, etc.&lt;br /&gt;
surf = ax.plot_surface(X, T_mesh, u, cmap='viridis')&lt;br /&gt;
ax.set_xlabel('x')&lt;br /&gt;
ax.set_ylabel('t')&lt;br /&gt;
ax.set_zlabel('u(x, t)')&lt;br /&gt;
ax.set_title('Evolución temporal de la ecuación de calor con fuente (aproximación numérica)')&lt;br /&gt;
fig.colorbar(surf, ax=ax, label='u(x, t)')&lt;br /&gt;
&lt;br /&gt;
plt.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y efectivamente así queda.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_ILIA)&amp;diff=84900</id>
		<title>Ecuación del calor (Grupo ILIA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Grupo_ILIA)&amp;diff=84900"/>
				<updated>2025-03-18T20:54:26Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor. Grupo MAMBD | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Ignacio Campos Paños, Ignacio Martínez Cerezo, Alicia Ruiz Dominguez, Luis Ramos Ortiz }}&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
La ecuación del calor es una de las ecuaciones en derivadas parciales más fundamentales en la física y las matemáticas aplicadas, modelando la difusión de la temperatura en distintos medios. Su estudio es esencial en múltiples disciplinas, desde la ingeniería térmica hasta la biomedicina, donde se analiza la propagación del calor en tejidos biológicos. En este trabajo, estudiaremos el comportamiento de esta ecuación en una barra unidimensional aislada en el intervalo [0,1], imponiendo condiciones de frontera con temperatura constante. &lt;br /&gt;
&lt;br /&gt;
En la vida real, las fuentes de calor no necesariamente tienen por qué estar en los extremos, por lo que también buscamos un enfoque más aplicado y realista. Nos enfocaremos en la propagación del calor cuando existe una fuente térmica localizada, es decir, introduciremos una fuente de calor puntual en algún punto en el interior de la barra (0,1) y veremos cómo se comporta la ecuación del calor. En la práctica, muchas aplicaciones incluyen fuentes térmicas, como calefactores, reacciones químicas o dispositivos electrónicos que generan calor; y esto tiene aplicaciones en procesos industriales, generación de energía y modelización de sistemas térmicos. &lt;br /&gt;
&lt;br /&gt;
En resumen, exploraremos cómo la presencia de una fuente de calor afecta a la distribución de la temperatura en el tiempo, resolviendo el problema tanto analíticamente como numéricamente. A través de esta aproximación, podremos comprender mejor la influencia de fuentes térmicas en sistemas difusivos y validar métodos numéricos para resolver ecuaciones en derivadas parciales. Estudiaremos varios aspectos:&lt;br /&gt;
&lt;br /&gt;
'''Ecuación del calor con fuente:''' en este caso, la ecuación incluye un término &amp;lt;math&amp;gt; f(x,t) &amp;lt;/math&amp;gt; que representa una generación de calor interna. Esto hace que la temperatura no solo se difunda, sino que también aumente o disminuya dependiendo de la fuente.&lt;br /&gt;
&lt;br /&gt;
'''Comparación con el caso sin fuente:''' veremos cómo la solución cambia al introducir un calentamiento localizado, observando si se alcanza un estado estacionario diferente o si la temperatura sigue variando en el tiempo.&lt;br /&gt;
&lt;br /&gt;
'''Influencia de la intensidad y duración de la fuente:''' podemos analizar distintos valores de &amp;lt;math&amp;gt; A &amp;lt;/math&amp;gt; y ver cómo afectan la propagación térmica.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ecuación del calor=&lt;br /&gt;
La ecuación de difusión del calor original sin fuentes de calor externas viene dada por:&lt;br /&gt;
&amp;lt;math&amp;gt;  &lt;br /&gt;
u_t=u_{xx}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
donde la función u(x,t) es la función temperatura en cada posición e instante de tiempo, &amp;lt;math&amp;gt;u_t&amp;lt;/math&amp;gt; la derivada temporal y &amp;lt;math&amp;gt;u_{xx}&amp;lt;/math&amp;gt; la segunda derivada espacial, que modela la difusión del calor.&lt;br /&gt;
&lt;br /&gt;
Si consideramos que la condición inicial en &amp;lt;math&amp;gt;t=0&amp;lt;/math&amp;gt; es &amp;lt;math&amp;gt;u(x,0)=sen(x)&amp;lt;/math&amp;gt;, podemos obtener el siguiente problema de ecuación del calor con condiciones frontera:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}  &lt;br /&gt;
u_t - u_{xx} = 0, &amp;amp; x \in [0,1], \quad t &amp;gt; 0 \\    &lt;br /&gt;
u(0,t) = 0, &amp;amp; t &amp;gt; 0 \\  &lt;br /&gt;
u(1,t) = 0, &amp;amp; t &amp;gt; 0 \\&lt;br /&gt;
u(x,0) = sen(2\pi x), &amp;amp; x \in [0,1]&lt;br /&gt;
\end{cases}  &lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Resolviendo este problema obtenemos que la solución estacionaria es:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_s(x)=0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
y la solución general:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=sen(2\pi x)e^{-4\pi^{2}t}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vamos a graficar la solución.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:soluil.png|400px|thumb|right|Solución de la ecuación del calor]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from mpl_toolkits.mplot3d import Axes3D&lt;br /&gt;
&lt;br /&gt;
# puntos de la malla&lt;br /&gt;
x = np.linspace(0, 1, 50)  &lt;br /&gt;
t = np.linspace(0, 0.5, 50)  &lt;br /&gt;
&lt;br /&gt;
X, T = np.meshgrid(x, t)  # malla&lt;br /&gt;
U = np.sin(2 * np.pi * X) * np.exp(-4 * np.pi**2 * T)  # sol general&lt;br /&gt;
&lt;br /&gt;
# figura&lt;br /&gt;
fig = plt.figure(figsize=(10, 6))&lt;br /&gt;
ax = fig.add_subplot(111, projection='3d')&lt;br /&gt;
&lt;br /&gt;
# grafica&lt;br /&gt;
ax.plot_surface(X, T, U, cmap='viridis')&lt;br /&gt;
ax.set_xlabel('Posición x')&lt;br /&gt;
ax.set_ylabel('Tiempo t')&lt;br /&gt;
ax.set_zlabel('Temperatura u(x,t)')&lt;br /&gt;
ax.set_title('Solución de la ecuación del calor')&lt;br /&gt;
&lt;br /&gt;
plt.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como podemos ver la solución tiende rápidamente a la solución estacionaria en el que toda la barra está a 0 grados, que es lógico si tenemos en cuenta que los extremos tienen temperatura constante de 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ecuación del calor con fuente térmica puntual=&lt;br /&gt;
Hemos visto uno de los casos más sencillos de la difusión de calor, pero ahora se introduce una función &amp;lt;math&amp;gt;f(x,t)&amp;lt;/math&amp;gt; que representa un nuevo foco de calor en un punto &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; de la barra, de manera que la ecuación del calor queda como sigue:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t = u_{xx}+f(x,t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Donde &amp;lt;math&amp;gt;f(x,t)&amp;lt;/math&amp;gt; es de la forma &amp;lt;math&amp;gt;f(x,t)=q(t)\delta(x-x_0)&amp;lt;/math&amp;gt;, donde &amp;lt;math&amp;gt;q(t)&amp;lt;/math&amp;gt; representa la cantidad de calor que se añade en función del tiempo y &amp;lt;math&amp;gt;\delta(x-x_0)&amp;lt;/math&amp;gt; es la delta de Dirac hacer que el calor se añada únicamente en el punto &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Si consideramos &amp;lt;math&amp;gt;q(t)=2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;x_0=0.5&amp;lt;/math&amp;gt; y tomamos el mismo problema de la sección 2 con esta modificación, obtenemos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}  &lt;br /&gt;
u_t - u_{xx} = f(x,t), &amp;amp; x \in [0,1], \quad t &amp;gt; 0 \\    &lt;br /&gt;
u(0,t) = 0, &amp;amp; t &amp;gt; 0 \\  &lt;br /&gt;
u(1,t) = 0, &amp;amp; t &amp;gt; 0 \\&lt;br /&gt;
u(x,0) = sen(2\pi x), &amp;amp; x \in [0,1] \\&lt;br /&gt;
f(x,t)=2\delta(x-0.5)&lt;br /&gt;
\end{cases}  &lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=84135</id>
		<title>Series de Fourier (Grupo ILIA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=84135"/>
				<updated>2025-02-15T10:07:35Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Series de Fourier (Grupo ILIA) | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Ignacio Campos Paños, Ignacio Martínez Cerezo, Luis Ramos Ortiz, Alicia Ruiz Dominguez }}&lt;br /&gt;
=Introducción=&lt;br /&gt;
&lt;br /&gt;
En una amplia gama de problemas de ingeniería y matemáticas aparecen funciones periódicas que se necesitan aproximar mediante sumas de funciones trigonométricas, lo que conduce a las '''series de Fourier'''.&lt;br /&gt;
[[Archivo:Fouriercolor.jpg|300px|thumb|right| Jean-Baptiste Joseph Fourier]]&lt;br /&gt;
&lt;br /&gt;
Estas series constituyen una herramienta fundamental en la resolución de ecuaciones en derivadas parciales y otros muchos ámbitos de la ciencia. La idea principal es que una función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;, definida en un espacio de Hilbert &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;, puede expresarse como una combinación infinita de funciones trigonométricas de la forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \frac{d_0}{2\pi} + \sum_{n=1}^{\infty}  d_n \frac{1}{\sqrt{\pi}} \cos(nx) + \sum_{n=1}^{\infty}c_n \frac{1}{\sqrt{\pi}} \sin(nx)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los coeficientes &amp;lt;math&amp;gt;d_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;d_n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;c_n&amp;lt;/math&amp;gt; son los '''coeficientes de Fourier''' y se definen de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_0 = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}} dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}cos(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
c_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}sen(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este método permite descomponer funciones periódicas en sus componentes fundamentales, lo que es de gran utilidad en física, ingeniería y matemáticas aplicadas. A continuación, se presentan las primeras funciones base utilizadas en la expansión en series de Fourier.&lt;br /&gt;
&lt;br /&gt;
=Base trigonométrica=&lt;br /&gt;
Para comprender mejor la construcción de las series de Fourier y poder visualizar las funciones base mencionadas, representamos gráficamente los primeros términos de la base trigonométrica &amp;lt;math&amp;gt; \mathcal{B} := \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt; en el intervalo &amp;lt;math&amp;gt; [ -1, 1 ] &amp;lt;/math&amp;gt; mediante un código en Python. Esto nos permitirá observar cómo estas funciones elementales forman una '''base ortonormal''' en el espacio &amp;lt;math&amp;gt; L^2( [-1,1]) &amp;lt;/math&amp;gt; y cómo, mediante combinaciones lineales de estas, podemos aproximar funciones arbitrarias.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:fourier3ILIA.png|450px|thumb|right|Primeros términos de la Base 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;
&lt;br /&gt;
def base_fourier_cos(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de cosenos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.cos(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def base_fourier_sen(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de senos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.sin(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Parámetros&lt;br /&gt;
X = np.linspace(-1, 1, 1000)&lt;br /&gt;
# número de elementos de la base (1, cos(n pi x), sen(n pi x))&lt;br /&gt;
n = 10&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
colors = [ &amp;quot;#0000FF&amp;quot;, &amp;quot;#0033CC&amp;quot;, &amp;quot;#0066CC&amp;quot;, &amp;quot;#0099FF&amp;quot;, &amp;quot;#33CCFF&amp;quot;,&lt;br /&gt;
    &amp;quot;#66CCCC&amp;quot;, &amp;quot;#CC9966&amp;quot;, &amp;quot;#FF6633&amp;quot;, &amp;quot;#FF3300&amp;quot;, &amp;quot;#FF0000&amp;quot;,]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Obtener funciones base&lt;br /&gt;
base = [lambda x: 1] + base_fourier_cos(n) + base_fourier_sen(n)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Graficar&lt;br /&gt;
plt.subplots(3, 1, figsize=(15, 15), dpi=300)&lt;br /&gt;
&lt;br /&gt;
# Término constante&lt;br /&gt;
plt.subplot(3, 1, 1)&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Término constante&amp;quot;)&lt;br /&gt;
plt.plot([-1, 1], [1 / 2, 1 / 2], color=colors[-1], label=&amp;quot;Término constante&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Términos en coseno&lt;br /&gt;
plt.subplot(3, 1, 2)&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Términos en coseno&amp;quot;)&lt;br /&gt;
for i in range(1, n + 1):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - 1], label=f&amp;quot;cos({str(i)*(i&amp;gt;1)}πx)&amp;quot;)&lt;br /&gt;
plt.legend(loc=&amp;quot;right&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Términos en seno&lt;br /&gt;
plt.subplot(3, 1, 3)&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Términos en seno&amp;quot;)&lt;br /&gt;
for i in range(n + 1, len(base)):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - n - 1], label=f&amp;quot;sen({str(i-n) * ((i-n) &amp;gt; 1)}πx)&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GifILIA.gif|400px|thumb|left|Fourier según aumenta n]]&lt;br /&gt;
&lt;br /&gt;
Al graficar estos términos, podemos apreciar cómo la combinación de estos elementos nos permite aproximar funciones periódicas arbitrarias, tal y como buscábamos.&lt;br /&gt;
La relevancia de esta base radica en la aproximación de funciones mediante series trigonométricas. En particular, la expansión de Fourier de una función \( f(x) \) en esta base se expresa como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \sum_{n=1}^{\infty} c_n e_n \quad \text{con} \quad c_n = \langle f, e_n \rangle&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Donde \( e_n \) es cada uno de los términos de la base &amp;lt;math&amp;gt; \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; c_n &amp;lt;/math&amp;gt; son los coeficientes que se calculan mediante el producto interno de &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; con los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
Como se puede observar, a medida que el parámetro &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; aumenta, los términos oscilan con un periodo cada vez menor, concretamente &amp;lt;math&amp;gt; T = \frac{2}{n} &amp;lt;/math&amp;gt;, lo que refleja una mayor &amp;quot;frecuencia&amp;quot; en las oscilaciones. Esta característica es esencial en la aproximación de funciones suaves por medio de las series de Fourier, donde las funciones periódicas se aproximan cada vez con mayor precisión mediante una combinación lineal de estos términos básicos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Cambio de intervalo=&lt;br /&gt;
Una vez se ha trabajado en la base trigonométrica &amp;lt;math&amp;gt; [-1,1] &amp;lt;/math&amp;gt;, es importante señalar que en la práctica es común encontrar funciones definidas en otros dominios. En este apartado, se construirá la base trigonométrica en un nuevo intervalo, &amp;lt;math&amp;gt; [-2,3] &amp;lt;/math&amp;gt;, y se usará esta base para aproximar la función&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x)=xe^{-x}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mediante series de Fourier, considerando los primeros &amp;lt;math&amp;gt; 5, 10 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; 20 &amp;lt;/math&amp;gt; términos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Construcción de la base trigonométrica en &amp;lt;math&amp;gt; [-2,3] &amp;lt;/math&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
En un intervalo general &amp;lt;math&amp;gt; [a,b] &amp;lt;/math&amp;gt;, la base trigonométrica asociada está dada por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
  \left\{ \frac{1}{\sqrt{b-a}}, \cos\left(\frac{n\pi (x-a)}{b-a} \right), \sin\left(\frac{n\pi (x-a)}{b-a} \right) \right\}_{n \in \mathbb{N}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde se ha normalizado el término constante para que la base sea ortonormal en &amp;lt;math&amp;gt; L^2 ([a,b]) &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
En nuestro caso, con &amp;lt;math&amp;gt; a=-2 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; b=3 &amp;lt;/math&amp;gt;, la base trigonométrica resulta:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
  \left\{ \frac{1}{\sqrt{5}}, \cos\left(\frac{n\pi (x+2)}{5} \right), \sin\left(\frac{n\pi (x+2)}{5} \right) \right\}_{n \in \mathbb{N}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Cálculo de los coeficientes de Fourier===&lt;br /&gt;
Para expandir la función &amp;lt;math&amp;gt; f(x)=xe^{-x} &amp;lt;/math&amp;gt; en esta nueva base, es necesario calcular los coeficientes de Fourier:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
c_n = \int_{-2}^{3} f(x)e_n(x) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; e_n &amp;lt;/math&amp;gt; son los términos de la base calculada anteriormente.&lt;br /&gt;
&lt;br /&gt;
El cálculo de estos coeficientes implica integrar productos de &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; con funciones trigonométricas, lo que puede llegar a ser muy laborioso para &amp;lt;math&amp;gt; 5, 10 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; 20 &amp;lt;/math&amp;gt; términos, y es por esto que estos cálculos se hacen mediante herramientas computacionales como Python. A continuación, se incluye el código que nos proporciona la aproximación que buscábamos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:UltimaILIA.png|500px|thumb|right|Aproximación de f(x) mediante series de Fourier]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from scipy.integrate import quad&lt;br /&gt;
&lt;br /&gt;
# Intervalo&lt;br /&gt;
a, b = -2, 3&lt;br /&gt;
L = (b - a) / 2  # Semi-longitud del intervalo&lt;br /&gt;
&lt;br /&gt;
# Función a aproximar&lt;br /&gt;
def f(x):&lt;br /&gt;
    return x * np.exp(-x)&lt;br /&gt;
&lt;br /&gt;
# Coeficiente a_0&lt;br /&gt;
def a_0():&lt;br /&gt;
    return (1 / L) * quad(lambda x: f(x), a, b)[0]&lt;br /&gt;
&lt;br /&gt;
# Coeficientes a_n y b_n&lt;br /&gt;
def a_n(n):&lt;br /&gt;
    return (1 / L) * quad(lambda x: f(x) * np.cos(n * np.pi * (x - a) / L), a, b)[0]&lt;br /&gt;
&lt;br /&gt;
def b_n(n):&lt;br /&gt;
    return (1 / L) * quad(lambda x: f(x) * np.sin(n * np.pi * (x - a) / L), a, b)[0]&lt;br /&gt;
&lt;br /&gt;
# Aproximación de Fourier con N términos&lt;br /&gt;
def fourier_aprox(x, N):&lt;br /&gt;
    suma = a_0() / 2&lt;br /&gt;
    for n in range(1, N + 1):&lt;br /&gt;
        suma += a_n(n) * np.cos(n * np.pi * (x - a) / L) + b_n(n) * np.sin(n * np.pi * (x - a) / L)&lt;br /&gt;
    return suma&lt;br /&gt;
&lt;br /&gt;
# Valores de N a considerar&lt;br /&gt;
N_vals = [5, 10, 20]&lt;br /&gt;
&lt;br /&gt;
# Puntos para graficar&lt;br /&gt;
x_vals = np.linspace(a, b, 500)&lt;br /&gt;
f_vals = f(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Graficar&lt;br /&gt;
plt.figure(figsize=(10, 6))&lt;br /&gt;
plt.plot(x_vals, f_vals, 'k', label=&amp;quot;Función original f(x)&amp;quot;, linewidth=2)&lt;br /&gt;
&lt;br /&gt;
colores = ['b', 'dodgerblue', &amp;quot;#66CCCC&amp;quot;]&lt;br /&gt;
for i, N in enumerate(N_vals):&lt;br /&gt;
    f_aprox_vals = np.array([fourier_aprox(x, N) for x in x_vals])&lt;br /&gt;
    plt.plot(x_vals, f_aprox_vals, color=colores[i], label=f&amp;quot;Aprox. con {N} términos&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Aproximación de Fourier de f(x) = x e^(-x)&amp;quot;)&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.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta forma, observamos que según aumentamos el número de términos &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt;, la serie de Fourier se aproxima mejor a la función &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;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>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:UltimaILIA.png&amp;diff=84132</id>
		<title>Archivo:UltimaILIA.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:UltimaILIA.png&amp;diff=84132"/>
				<updated>2025-02-15T10:01:32Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=84129</id>
		<title>Series de Fourier (Grupo ILIA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=84129"/>
				<updated>2025-02-15T10:00:53Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Series de Fourier (Grupo ILIA) | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Ignacio Campos Paños, Ignacio Martínez Cerezo, Luis Ramos Ortiz, Alicia Ruiz Dominguez }}&lt;br /&gt;
=Introducción=&lt;br /&gt;
&lt;br /&gt;
En una amplia gama de problemas de ingeniería y matemáticas aparecen funciones periódicas que se necesitan aproximar mediante sumas de funciones trigonométricas, lo que conduce a las '''series de Fourier'''.&lt;br /&gt;
[[Archivo:Fouriercolor.jpg|300px|thumb|right| Jean-Baptiste Joseph Fourier]]&lt;br /&gt;
&lt;br /&gt;
Estas series constituyen una herramienta fundamental en la resolución de ecuaciones en derivadas parciales y otros muchos ámbitos de la ciencia. La idea principal es que una función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;, definida en un espacio de Hilbert &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;, puede expresarse como una combinación infinita de funciones trigonométricas de la forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \frac{d_0}{2\pi} + \sum_{n=1}^{\infty}  d_n \frac{1}{\sqrt{\pi}} \cos(nx) + \sum_{n=1}^{\infty}c_n \frac{1}{\sqrt{\pi}} \sin(nx)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los coeficientes &amp;lt;math&amp;gt;d_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;d_n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;c_n&amp;lt;/math&amp;gt; son los '''coeficientes de Fourier''' y se definen de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_0 = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}} dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}cos(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
c_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}sen(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este método permite descomponer funciones periódicas en sus componentes fundamentales, lo que es de gran utilidad en física, ingeniería y matemáticas aplicadas. A continuación, se presentan las primeras funciones base utilizadas en la expansión en series de Fourier.&lt;br /&gt;
&lt;br /&gt;
=Base trigonométrica=&lt;br /&gt;
Para comprender mejor la construcción de las series de Fourier y poder visualizar las funciones base mencionadas, representamos gráficamente los primeros términos de la base trigonométrica &amp;lt;math&amp;gt; \mathcal{B} := \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt; en el intervalo &amp;lt;math&amp;gt; [ -1, 1 ] &amp;lt;/math&amp;gt; mediante un código en Python. Esto nos permitirá observar cómo estas funciones elementales forman una '''base ortonormal''' en el espacio &amp;lt;math&amp;gt; L^2( [-1,1]) &amp;lt;/math&amp;gt; y cómo, mediante combinaciones lineales de estas, podemos aproximar funciones arbitrarias.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:fourier3ILIA.png|450px|thumb|right|Primeros términos de la Base 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;
&lt;br /&gt;
def base_fourier_cos(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de cosenos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.cos(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def base_fourier_sen(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de senos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.sin(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Parámetros&lt;br /&gt;
X = np.linspace(-1, 1, 1000)&lt;br /&gt;
# número de elementos de la base (1, cos(n pi x), sen(n pi x))&lt;br /&gt;
n = 10&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
colors = [ &amp;quot;#0000FF&amp;quot;, &amp;quot;#0033CC&amp;quot;, &amp;quot;#0066CC&amp;quot;, &amp;quot;#0099FF&amp;quot;, &amp;quot;#33CCFF&amp;quot;,&lt;br /&gt;
    &amp;quot;#66CCCC&amp;quot;, &amp;quot;#CC9966&amp;quot;, &amp;quot;#FF6633&amp;quot;, &amp;quot;#FF3300&amp;quot;, &amp;quot;#FF0000&amp;quot;,]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Obtener funciones base&lt;br /&gt;
base = [lambda x: 1] + base_fourier_cos(n) + base_fourier_sen(n)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Graficar&lt;br /&gt;
plt.subplots(3, 1, figsize=(15, 15), dpi=300)&lt;br /&gt;
&lt;br /&gt;
# Término constante&lt;br /&gt;
plt.subplot(3, 1, 1)&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Término constante&amp;quot;)&lt;br /&gt;
plt.plot([-1, 1], [1 / 2, 1 / 2], color=colors[-1], label=&amp;quot;Término constante&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Términos en coseno&lt;br /&gt;
plt.subplot(3, 1, 2)&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Términos en coseno&amp;quot;)&lt;br /&gt;
for i in range(1, n + 1):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - 1], label=f&amp;quot;cos({str(i)*(i&amp;gt;1)}πx)&amp;quot;)&lt;br /&gt;
plt.legend(loc=&amp;quot;right&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Términos en seno&lt;br /&gt;
plt.subplot(3, 1, 3)&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Términos en seno&amp;quot;)&lt;br /&gt;
for i in range(n + 1, len(base)):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - n - 1], label=f&amp;quot;sen({str(i-n) * ((i-n) &amp;gt; 1)}πx)&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GifILIA.gif|400px|thumb|left|Fourier según aumenta n]]&lt;br /&gt;
&lt;br /&gt;
Al graficar estos términos, podemos apreciar cómo la combinación de estos elementos nos permite aproximar funciones periódicas arbitrarias, tal y como buscábamos.&lt;br /&gt;
La relevancia de esta base radica en la aproximación de funciones mediante series trigonométricas. En particular, la expansión de Fourier de una función \( f(x) \) en esta base se expresa como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \sum_{n=1}^{\infty} c_n e_n \quad \text{con} \quad c_n = \langle f, e_n \rangle&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Donde \( e_n \) es cada uno de los términos de la base &amp;lt;math&amp;gt; \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; c_n &amp;lt;/math&amp;gt; son los coeficientes que se calculan mediante el producto interno de &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; con los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
Como se puede observar, a medida que el parámetro &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; aumenta, los términos oscilan con un periodo cada vez menor, concretamente &amp;lt;math&amp;gt; T = \frac{2}{n} &amp;lt;/math&amp;gt;, lo que refleja una mayor &amp;quot;frecuencia&amp;quot; en las oscilaciones. Esta característica es esencial en la aproximación de funciones suaves por medio de las series de Fourier, donde las funciones periódicas se aproximan cada vez con mayor precisión mediante una combinación lineal de estos términos básicos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Cambio de intervalo=&lt;br /&gt;
Una vez se ha trabajado en la base trigonométrica &amp;lt;math&amp;gt; [-1,1] &amp;lt;/math&amp;gt;, es importante señalar que en la práctica es común encontrar funciones definidas en otros dominios. En este apartado, se construirá la base trigonométrica en un nuevo intervalo, &amp;lt;math&amp;gt; [-2,3] &amp;lt;/math&amp;gt;, y se usará esta base para aproximar la función&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x)=xe^{-x}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mediante series de Fourier, considerando los primeros &amp;lt;math&amp;gt; 5, 10 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; 20 &amp;lt;/math&amp;gt; términos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Construcción de la base trigonométrica en &amp;lt;math&amp;gt; [-2,3] &amp;lt;/math&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
En un intervalo general &amp;lt;math&amp;gt; [a,b] &amp;lt;/math&amp;gt;, la base trigonométrica asociada está dada por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
  \left\{ \frac{1}{\sqrt{b-a}}, \cos\left(\frac{n\pi (x-a)}{b-a} \right), \sin\left(\frac{n\pi (x-a)}{b-a} \right) \right\}_{n \in \mathbb{N}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde se ha normalizado el término constante para que la base sea ortonormal en &amp;lt;math&amp;gt; L^2 ([a,b]) &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
En nuestro caso, con &amp;lt;math&amp;gt; a=-2 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; b=3 &amp;lt;/math&amp;gt;, la base trigonométrica resulta:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
  \left\{ \frac{1}{\sqrt{5}}, \cos\left(\frac{n\pi (x+2)}{5} \right), \sin\left(\frac{n\pi (x+2)}{5} \right) \right\}_{n \in \mathbb{N}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Cálculo de los coeficientes de Fourier===&lt;br /&gt;
Para expandir la función &amp;lt;math&amp;gt; f(x)=xe^{-x} &amp;lt;/math&amp;gt; en esta nueva base, es necesario calcular los coeficientes de Fourier:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
c_n = \int_{-2}^{3} f(x)e_n(x) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; e_n &amp;lt;/math&amp;gt; son los términos de la base calculada anteriormente.&lt;br /&gt;
&lt;br /&gt;
El cálculo de estos coeficientes implica integrar productos de &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; con funciones trigonométricas, lo que puede llegar a ser muy laborioso para &amp;lt;math&amp;gt; 5, 10 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; 20 &amp;lt;/math&amp;gt; términos, y es por esto que estos cálculos se hacen mediante herramientas computacionales como Python. A continuación, se incluye el código que nos proporciona la aproximación que buscábamos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Ilia.png|450px|thumb|right|Aproximación de f(x) mediante series de Fourier]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from scipy.integrate import quad&lt;br /&gt;
&lt;br /&gt;
# Intervalo&lt;br /&gt;
a, b = -2, 3&lt;br /&gt;
L = (b - a) / 2  # Semi-longitud del intervalo&lt;br /&gt;
&lt;br /&gt;
# Función a aproximar&lt;br /&gt;
def f(x):&lt;br /&gt;
    return x * np.exp(-x)&lt;br /&gt;
&lt;br /&gt;
# Coeficiente a_0&lt;br /&gt;
def a_0():&lt;br /&gt;
    return (1 / L) * quad(lambda x: f(x), a, b)[0]&lt;br /&gt;
&lt;br /&gt;
# Coeficientes a_n y b_n&lt;br /&gt;
def a_n(n):&lt;br /&gt;
    return (1 / L) * quad(lambda x: f(x) * np.cos(n * np.pi * (x - a) / L), a, b)[0]&lt;br /&gt;
&lt;br /&gt;
def b_n(n):&lt;br /&gt;
    return (1 / L) * quad(lambda x: f(x) * np.sin(n * np.pi * (x - a) / L), a, b)[0]&lt;br /&gt;
&lt;br /&gt;
# Aproximación de Fourier con N términos&lt;br /&gt;
def fourier_aprox(x, N):&lt;br /&gt;
    suma = a_0() / 2&lt;br /&gt;
    for n in range(1, N + 1):&lt;br /&gt;
        suma += a_n(n) * np.cos(n * np.pi * (x - a) / L) + b_n(n) * np.sin(n * np.pi * (x - a) / L)&lt;br /&gt;
    return suma&lt;br /&gt;
&lt;br /&gt;
# Valores de N a considerar&lt;br /&gt;
N_vals = [5, 10, 20]&lt;br /&gt;
&lt;br /&gt;
# Puntos para graficar&lt;br /&gt;
x_vals = np.linspace(a, b, 500)&lt;br /&gt;
f_vals = f(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Graficar&lt;br /&gt;
plt.figure(figsize=(10, 6))&lt;br /&gt;
plt.plot(x_vals, f_vals, 'k', label=&amp;quot;Función original f(x)&amp;quot;, linewidth=2)&lt;br /&gt;
&lt;br /&gt;
colores = ['b', 'dodgerblue', &amp;quot;#66CCCC&amp;quot;]&lt;br /&gt;
for i, N in enumerate(N_vals):&lt;br /&gt;
    f_aprox_vals = np.array([fourier_aprox(x, N) for x in x_vals])&lt;br /&gt;
    plt.plot(x_vals, f_aprox_vals, color=colores[i], label=f&amp;quot;Aprox. con {N} términos&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Aproximación de Fourier de f(x) = x e^(-x)&amp;quot;)&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.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;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>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Ilia.png&amp;diff=84128</id>
		<title>Archivo:Ilia.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Ilia.png&amp;diff=84128"/>
				<updated>2025-02-15T09:58:37Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=84127</id>
		<title>Series de Fourier (Grupo ILIA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=84127"/>
				<updated>2025-02-15T09:58:16Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Series de Fourier (Grupo ILIA) | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Ignacio Campos Paños, Ignacio Martínez Cerezo, Luis Ramos Ortiz, Alicia Ruiz Dominguez }}&lt;br /&gt;
=Introducción=&lt;br /&gt;
&lt;br /&gt;
En una amplia gama de problemas de ingeniería y matemáticas aparecen funciones periódicas que se necesitan aproximar mediante sumas de funciones trigonométricas, lo que conduce a las '''series de Fourier'''.&lt;br /&gt;
[[Archivo:Fouriercolor.jpg|300px|thumb|right| Jean-Baptiste Joseph Fourier]]&lt;br /&gt;
&lt;br /&gt;
Estas series constituyen una herramienta fundamental en la resolución de ecuaciones en derivadas parciales y otros muchos ámbitos de la ciencia. La idea principal es que una función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;, definida en un espacio de Hilbert &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;, puede expresarse como una combinación infinita de funciones trigonométricas de la forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \frac{d_0}{2\pi} + \sum_{n=1}^{\infty}  d_n \frac{1}{\sqrt{\pi}} \cos(nx) + \sum_{n=1}^{\infty}c_n \frac{1}{\sqrt{\pi}} \sin(nx)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los coeficientes &amp;lt;math&amp;gt;d_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;d_n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;c_n&amp;lt;/math&amp;gt; son los '''coeficientes de Fourier''' y se definen de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_0 = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}} dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}cos(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
c_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}sen(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este método permite descomponer funciones periódicas en sus componentes fundamentales, lo que es de gran utilidad en física, ingeniería y matemáticas aplicadas. A continuación, se presentan las primeras funciones base utilizadas en la expansión en series de Fourier.&lt;br /&gt;
&lt;br /&gt;
=Base trigonométrica=&lt;br /&gt;
Para comprender mejor la construcción de las series de Fourier y poder visualizar las funciones base mencionadas, representamos gráficamente los primeros términos de la base trigonométrica &amp;lt;math&amp;gt; \mathcal{B} := \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt; en el intervalo &amp;lt;math&amp;gt; [ -1, 1 ] &amp;lt;/math&amp;gt; mediante un código en Python. Esto nos permitirá observar cómo estas funciones elementales forman una '''base ortonormal''' en el espacio &amp;lt;math&amp;gt; L^2( [-1,1]) &amp;lt;/math&amp;gt; y cómo, mediante combinaciones lineales de estas, podemos aproximar funciones arbitrarias.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:fourier3ILIA.png|450px|thumb|right|Primeros términos de la Base 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;
&lt;br /&gt;
def base_fourier_cos(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de cosenos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.cos(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def base_fourier_sen(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de senos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.sin(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Parámetros&lt;br /&gt;
X = np.linspace(-1, 1, 1000)&lt;br /&gt;
# número de elementos de la base (1, cos(n pi x), sen(n pi x))&lt;br /&gt;
n = 10&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
colors = [ &amp;quot;#0000FF&amp;quot;, &amp;quot;#0033CC&amp;quot;, &amp;quot;#0066CC&amp;quot;, &amp;quot;#0099FF&amp;quot;, &amp;quot;#33CCFF&amp;quot;,&lt;br /&gt;
    &amp;quot;#66CCCC&amp;quot;, &amp;quot;#CC9966&amp;quot;, &amp;quot;#FF6633&amp;quot;, &amp;quot;#FF3300&amp;quot;, &amp;quot;#FF0000&amp;quot;,]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Obtener funciones base&lt;br /&gt;
base = [lambda x: 1] + base_fourier_cos(n) + base_fourier_sen(n)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Graficar&lt;br /&gt;
plt.subplots(3, 1, figsize=(15, 15), dpi=300)&lt;br /&gt;
&lt;br /&gt;
# Término constante&lt;br /&gt;
plt.subplot(3, 1, 1)&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Término constante&amp;quot;)&lt;br /&gt;
plt.plot([-1, 1], [1 / 2, 1 / 2], color=colors[-1], label=&amp;quot;Término constante&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Términos en coseno&lt;br /&gt;
plt.subplot(3, 1, 2)&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Términos en coseno&amp;quot;)&lt;br /&gt;
for i in range(1, n + 1):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - 1], label=f&amp;quot;cos({str(i)*(i&amp;gt;1)}πx)&amp;quot;)&lt;br /&gt;
plt.legend(loc=&amp;quot;right&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Términos en seno&lt;br /&gt;
plt.subplot(3, 1, 3)&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Términos en seno&amp;quot;)&lt;br /&gt;
for i in range(n + 1, len(base)):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - n - 1], label=f&amp;quot;sen({str(i-n) * ((i-n) &amp;gt; 1)}πx)&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GifILIA.gif|400px|thumb|left|Fourier según aumenta n]]&lt;br /&gt;
&lt;br /&gt;
Al graficar estos términos, podemos apreciar cómo la combinación de estos elementos nos permite aproximar funciones periódicas arbitrarias, tal y como buscábamos.&lt;br /&gt;
La relevancia de esta base radica en la aproximación de funciones mediante series trigonométricas. En particular, la expansión de Fourier de una función \( f(x) \) en esta base se expresa como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \sum_{n=1}^{\infty} c_n e_n \quad \text{con} \quad c_n = \langle f, e_n \rangle&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Donde \( e_n \) es cada uno de los términos de la base &amp;lt;math&amp;gt; \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; c_n &amp;lt;/math&amp;gt; son los coeficientes que se calculan mediante el producto interno de &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; con los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
Como se puede observar, a medida que el parámetro &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; aumenta, los términos oscilan con un periodo cada vez menor, concretamente &amp;lt;math&amp;gt; T = \frac{2}{n} &amp;lt;/math&amp;gt;, lo que refleja una mayor &amp;quot;frecuencia&amp;quot; en las oscilaciones. Esta característica es esencial en la aproximación de funciones suaves por medio de las series de Fourier, donde las funciones periódicas se aproximan cada vez con mayor precisión mediante una combinación lineal de estos términos básicos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Cambio de intervalo=&lt;br /&gt;
Una vez se ha trabajado en la base trigonométrica &amp;lt;math&amp;gt; [-1,1] &amp;lt;/math&amp;gt;, es importante señalar que en la práctica es común encontrar funciones definidas en otros dominios. En este apartado, se construirá la base trigonométrica en un nuevo intervalo, &amp;lt;math&amp;gt; [-2,3] &amp;lt;/math&amp;gt;, y se usará esta base para aproximar la función&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x)=xe^{-x}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mediante series de Fourier, considerando los primeros &amp;lt;math&amp;gt; 5, 10 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; 20 &amp;lt;/math&amp;gt; términos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Construcción de la base trigonométrica en &amp;lt;math&amp;gt; [-2,3] &amp;lt;/math&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
En un intervalo general &amp;lt;math&amp;gt; [a,b] &amp;lt;/math&amp;gt;, la base trigonométrica asociada está dada por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
  \left\{ \frac{1}{\sqrt{b-a}}, \cos\left(\frac{n\pi (x-a)}{b-a} \right), \sin\left(\frac{n\pi (x-a)}{b-a} \right) \right\}_{n \in \mathbb{N}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde se ha normalizado el término constante para que la base sea ortonormal en &amp;lt;math&amp;gt; L^2 ([a,b]) &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
En nuestro caso, con &amp;lt;math&amp;gt; a=-2 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; b=3 &amp;lt;/math&amp;gt;, la base trigonométrica resulta:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
  \left\{ \frac{1}{\sqrt{5}}, \cos\left(\frac{n\pi (x+2)}{5} \right), \sin\left(\frac{n\pi (x+2)}{5} \right) \right\}_{n \in \mathbb{N}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Cálculo de los coeficientes de Fourier===&lt;br /&gt;
Para expandir la función &amp;lt;math&amp;gt; f(x)=xe^{-x} &amp;lt;/math&amp;gt; en esta nueva base, es necesario calcular los coeficientes de Fourier:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
c_n = \int_{-2}^{3} f(x)e_n(x) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; e_n &amp;lt;/math&amp;gt; son los términos de la base calculada anteriormente.&lt;br /&gt;
&lt;br /&gt;
El cálculo de estos coeficientes implica integrar productos de &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; con funciones trigonométricas, lo que puede llegar a ser muy laborioso para &amp;lt;math&amp;gt; 5, 10 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; 20 &amp;lt;/math&amp;gt; términos, y es por esto que estos cálculos se hacen mediante herramientas computacionales como Python. A continuación, se incluye el código que nos proporciona la aproximación que buscábamos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:AproxfILIA.png|450px|thumb|right|Aproximación de f(x) mediante series de Fourier]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from scipy.integrate import quad&lt;br /&gt;
&lt;br /&gt;
# Intervalo&lt;br /&gt;
a, b = -2, 3&lt;br /&gt;
L = (b - a) / 2  # Semi-longitud del intervalo&lt;br /&gt;
&lt;br /&gt;
# Función a aproximar&lt;br /&gt;
def f(x):&lt;br /&gt;
    return x * np.exp(-x)&lt;br /&gt;
&lt;br /&gt;
# Coeficiente a_0&lt;br /&gt;
def a_0():&lt;br /&gt;
    return (1 / L) * quad(lambda x: f(x), a, b)[0]&lt;br /&gt;
&lt;br /&gt;
# Coeficientes a_n y b_n&lt;br /&gt;
def a_n(n):&lt;br /&gt;
    return (1 / L) * quad(lambda x: f(x) * np.cos(n * np.pi * (x - a) / L), a, b)[0]&lt;br /&gt;
&lt;br /&gt;
def b_n(n):&lt;br /&gt;
    return (1 / L) * quad(lambda x: f(x) * np.sin(n * np.pi * (x - a) / L), a, b)[0]&lt;br /&gt;
&lt;br /&gt;
# Aproximación de Fourier con N términos&lt;br /&gt;
def fourier_aprox(x, N):&lt;br /&gt;
    suma = a_0() / 2&lt;br /&gt;
    for n in range(1, N + 1):&lt;br /&gt;
        suma += a_n(n) * np.cos(n * np.pi * (x - a) / L) + b_n(n) * np.sin(n * np.pi * (x - a) / L)&lt;br /&gt;
    return suma&lt;br /&gt;
&lt;br /&gt;
# Valores de N a considerar&lt;br /&gt;
N_vals = [5, 10, 20]&lt;br /&gt;
&lt;br /&gt;
# Puntos para graficar&lt;br /&gt;
x_vals = np.linspace(a, b, 500)&lt;br /&gt;
f_vals = f(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Graficar&lt;br /&gt;
plt.figure(figsize=(10, 6))&lt;br /&gt;
plt.plot(x_vals, f_vals, 'k', label=&amp;quot;Función original f(x)&amp;quot;, linewidth=2)&lt;br /&gt;
&lt;br /&gt;
colores = ['b', 'dodgerblue', &amp;quot;#66CCCC&amp;quot;]&lt;br /&gt;
for i, N in enumerate(N_vals):&lt;br /&gt;
    f_aprox_vals = np.array([fourier_aprox(x, N) for x in x_vals])&lt;br /&gt;
    plt.plot(x_vals, f_aprox_vals, color=colores[i], label=f&amp;quot;Aprox. con {N} términos&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Aproximación de Fourier de f(x) = x e^(-x)&amp;quot;)&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.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En las aproximaciones con un mayor número de n aparecen oscilaciones más pronunciadas, y la aproximación es peor en ciertos puntos. Esto es el llamado fenómeno de Gibbs.&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>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:AproxfILIA.png&amp;diff=84125</id>
		<title>Archivo:AproxfILIA.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:AproxfILIA.png&amp;diff=84125"/>
				<updated>2025-02-15T09:57:03Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=84124</id>
		<title>Series de Fourier (Grupo ILIA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=84124"/>
				<updated>2025-02-15T09:56:22Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Series de Fourier (Grupo ILIA) | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Ignacio Campos Paños, Ignacio Martínez Cerezo, Luis Ramos Ortiz, Alicia Ruiz Dominguez }}&lt;br /&gt;
=Introducción=&lt;br /&gt;
&lt;br /&gt;
En una amplia gama de problemas de ingeniería y matemáticas aparecen funciones periódicas que se necesitan aproximar mediante sumas de funciones trigonométricas, lo que conduce a las '''series de Fourier'''.&lt;br /&gt;
[[Archivo:Fouriercolor.jpg|300px|thumb|right| Jean-Baptiste Joseph Fourier]]&lt;br /&gt;
&lt;br /&gt;
Estas series constituyen una herramienta fundamental en la resolución de ecuaciones en derivadas parciales y otros muchos ámbitos de la ciencia. La idea principal es que una función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;, definida en un espacio de Hilbert &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;, puede expresarse como una combinación infinita de funciones trigonométricas de la forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \frac{d_0}{2\pi} + \sum_{n=1}^{\infty}  d_n \frac{1}{\sqrt{\pi}} \cos(nx) + \sum_{n=1}^{\infty}c_n \frac{1}{\sqrt{\pi}} \sin(nx)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los coeficientes &amp;lt;math&amp;gt;d_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;d_n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;c_n&amp;lt;/math&amp;gt; son los '''coeficientes de Fourier''' y se definen de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_0 = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}} dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}cos(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
c_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}sen(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este método permite descomponer funciones periódicas en sus componentes fundamentales, lo que es de gran utilidad en física, ingeniería y matemáticas aplicadas. A continuación, se presentan las primeras funciones base utilizadas en la expansión en series de Fourier.&lt;br /&gt;
&lt;br /&gt;
=Base trigonométrica=&lt;br /&gt;
Para comprender mejor la construcción de las series de Fourier y poder visualizar las funciones base mencionadas, representamos gráficamente los primeros términos de la base trigonométrica &amp;lt;math&amp;gt; \mathcal{B} := \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt; en el intervalo &amp;lt;math&amp;gt; [ -1, 1 ] &amp;lt;/math&amp;gt; mediante un código en Python. Esto nos permitirá observar cómo estas funciones elementales forman una '''base ortonormal''' en el espacio &amp;lt;math&amp;gt; L^2( [-1,1]) &amp;lt;/math&amp;gt; y cómo, mediante combinaciones lineales de estas, podemos aproximar funciones arbitrarias.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:fourier3ILIA.png|450px|thumb|right|Primeros términos de la Base 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;
&lt;br /&gt;
def base_fourier_cos(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de cosenos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.cos(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def base_fourier_sen(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de senos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.sin(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Parámetros&lt;br /&gt;
X = np.linspace(-1, 1, 1000)&lt;br /&gt;
# número de elementos de la base (1, cos(n pi x), sen(n pi x))&lt;br /&gt;
n = 10&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
colors = [ &amp;quot;#0000FF&amp;quot;, &amp;quot;#0033CC&amp;quot;, &amp;quot;#0066CC&amp;quot;, &amp;quot;#0099FF&amp;quot;, &amp;quot;#33CCFF&amp;quot;,&lt;br /&gt;
    &amp;quot;#66CCCC&amp;quot;, &amp;quot;#CC9966&amp;quot;, &amp;quot;#FF6633&amp;quot;, &amp;quot;#FF3300&amp;quot;, &amp;quot;#FF0000&amp;quot;,]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Obtener funciones base&lt;br /&gt;
base = [lambda x: 1] + base_fourier_cos(n) + base_fourier_sen(n)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Graficar&lt;br /&gt;
plt.subplots(3, 1, figsize=(15, 15), dpi=300)&lt;br /&gt;
&lt;br /&gt;
# Término constante&lt;br /&gt;
plt.subplot(3, 1, 1)&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Término constante&amp;quot;)&lt;br /&gt;
plt.plot([-1, 1], [1 / 2, 1 / 2], color=colors[-1], label=&amp;quot;Término constante&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Términos en coseno&lt;br /&gt;
plt.subplot(3, 1, 2)&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Términos en coseno&amp;quot;)&lt;br /&gt;
for i in range(1, n + 1):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - 1], label=f&amp;quot;cos({str(i)*(i&amp;gt;1)}πx)&amp;quot;)&lt;br /&gt;
plt.legend(loc=&amp;quot;right&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Términos en seno&lt;br /&gt;
plt.subplot(3, 1, 3)&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Términos en seno&amp;quot;)&lt;br /&gt;
for i in range(n + 1, len(base)):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - n - 1], label=f&amp;quot;sen({str(i-n) * ((i-n) &amp;gt; 1)}πx)&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GifILIA.gif|400px|thumb|left|Fourier según aumenta n]]&lt;br /&gt;
&lt;br /&gt;
Al graficar estos términos, podemos apreciar cómo la combinación de estos elementos nos permite aproximar funciones periódicas arbitrarias, tal y como buscábamos.&lt;br /&gt;
La relevancia de esta base radica en la aproximación de funciones mediante series trigonométricas. En particular, la expansión de Fourier de una función \( f(x) \) en esta base se expresa como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \sum_{n=1}^{\infty} c_n e_n \quad \text{con} \quad c_n = \langle f, e_n \rangle&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Donde \( e_n \) es cada uno de los términos de la base &amp;lt;math&amp;gt; \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; c_n &amp;lt;/math&amp;gt; son los coeficientes que se calculan mediante el producto interno de &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; con los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
Como se puede observar, a medida que el parámetro &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; aumenta, los términos oscilan con un periodo cada vez menor, concretamente &amp;lt;math&amp;gt; T = \frac{2}{n} &amp;lt;/math&amp;gt;, lo que refleja una mayor &amp;quot;frecuencia&amp;quot; en las oscilaciones. Esta característica es esencial en la aproximación de funciones suaves por medio de las series de Fourier, donde las funciones periódicas se aproximan cada vez con mayor precisión mediante una combinación lineal de estos términos básicos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Cambio de intervalo=&lt;br /&gt;
Una vez se ha trabajado en la base trigonométrica &amp;lt;math&amp;gt; [-1,1] &amp;lt;/math&amp;gt;, es importante señalar que en la práctica es común encontrar funciones definidas en otros dominios. En este apartado, se construirá la base trigonométrica en un nuevo intervalo, &amp;lt;math&amp;gt; [-2,3] &amp;lt;/math&amp;gt;, y se usará esta base para aproximar la función&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x)=xe^{-x}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mediante series de Fourier, considerando los primeros &amp;lt;math&amp;gt; 5, 10 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; 20 &amp;lt;/math&amp;gt; términos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Construcción de la base trigonométrica en &amp;lt;math&amp;gt; [-2,3] &amp;lt;/math&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
En un intervalo general &amp;lt;math&amp;gt; [a,b] &amp;lt;/math&amp;gt;, la base trigonométrica asociada está dada por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
  \left\{ \frac{1}{\sqrt{b-a}}, \cos\left(\frac{n\pi (x-a)}{b-a} \right), \sin\left(\frac{n\pi (x-a)}{b-a} \right) \right\}_{n \in \mathbb{N}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde se ha normalizado el término constante para que la base sea ortonormal en &amp;lt;math&amp;gt; L^2 ([a,b]) &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
En nuestro caso, con &amp;lt;math&amp;gt; a=-2 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; b=3 &amp;lt;/math&amp;gt;, la base trigonométrica resulta:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
  \left\{ \frac{1}{\sqrt{5}}, \cos\left(\frac{n\pi (x+2)}{5} \right), \sin\left(\frac{n\pi (x+2)}{5} \right) \right\}_{n \in \mathbb{N}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Cálculo de los coeficientes de Fourier===&lt;br /&gt;
Para expandir la función &amp;lt;math&amp;gt; f(x)=xe^{-x} &amp;lt;/math&amp;gt; en esta nueva base, es necesario calcular los coeficientes de Fourier:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
c_n = \int_{-2}^{3} f(x)e_n(x) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; e_n &amp;lt;/math&amp;gt; son los términos de la base calculada anteriormente.&lt;br /&gt;
&lt;br /&gt;
El cálculo de estos coeficientes implica integrar productos de &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; con funciones trigonométricas, lo que puede llegar a ser muy laborioso para &amp;lt;math&amp;gt; 5, 10 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; 20 &amp;lt;/math&amp;gt; términos, y es por esto que estos cálculos se hacen mediante herramientas computacionales como Python. A continuación, se incluye el código que nos proporciona la aproximación que buscábamos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:aproxILIA.png|450px|thumb|right|Aproximación de f(x) mediante series de Fourier]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from scipy.integrate import quad&lt;br /&gt;
&lt;br /&gt;
# Intervalo&lt;br /&gt;
a, b = -2, 3&lt;br /&gt;
L = (b - a) / 2  # Semi-longitud del intervalo&lt;br /&gt;
&lt;br /&gt;
# Función a aproximar&lt;br /&gt;
def f(x):&lt;br /&gt;
    return x * np.exp(-x)&lt;br /&gt;
&lt;br /&gt;
# Coeficiente a_0&lt;br /&gt;
def a_0():&lt;br /&gt;
    return (1 / L) * quad(lambda x: f(x), a, b)[0]&lt;br /&gt;
&lt;br /&gt;
# Coeficientes a_n y b_n&lt;br /&gt;
def a_n(n):&lt;br /&gt;
    return (1 / L) * quad(lambda x: f(x) * np.cos(n * np.pi * (x - a) / L), a, b)[0]&lt;br /&gt;
&lt;br /&gt;
def b_n(n):&lt;br /&gt;
    return (1 / L) * quad(lambda x: f(x) * np.sin(n * np.pi * (x - a) / L), a, b)[0]&lt;br /&gt;
&lt;br /&gt;
# Aproximación de Fourier con N términos&lt;br /&gt;
def fourier_aprox(x, N):&lt;br /&gt;
    suma = a_0() / 2&lt;br /&gt;
    for n in range(1, N + 1):&lt;br /&gt;
        suma += a_n(n) * np.cos(n * np.pi * (x - a) / L) + b_n(n) * np.sin(n * np.pi * (x - a) / L)&lt;br /&gt;
    return suma&lt;br /&gt;
&lt;br /&gt;
# Valores de N a considerar&lt;br /&gt;
N_vals = [5, 10, 20]&lt;br /&gt;
&lt;br /&gt;
# Puntos para graficar&lt;br /&gt;
x_vals = np.linspace(a, b, 500)&lt;br /&gt;
f_vals = f(x_vals)&lt;br /&gt;
&lt;br /&gt;
# Graficar&lt;br /&gt;
plt.figure(figsize=(10, 6))&lt;br /&gt;
plt.plot(x_vals, f_vals, 'k', label=&amp;quot;Función original f(x)&amp;quot;, linewidth=2)&lt;br /&gt;
&lt;br /&gt;
colores = ['b', 'dodgerblue', &amp;quot;#66CCCC&amp;quot;]&lt;br /&gt;
for i, N in enumerate(N_vals):&lt;br /&gt;
    f_aprox_vals = np.array([fourier_aprox(x, N) for x in x_vals])&lt;br /&gt;
    plt.plot(x_vals, f_aprox_vals, color=colores[i], label=f&amp;quot;Aprox. con {N} términos&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Aproximación de Fourier de f(x) = x e^(-x)&amp;quot;)&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.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En las aproximaciones con un mayor número de n aparecen oscilaciones más pronunciadas, y la aproximación es peor en ciertos puntos. Esto es el llamado fenómeno de Gibbs.&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>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=84122</id>
		<title>Series de Fourier (Grupo ILIA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=84122"/>
				<updated>2025-02-15T09:39:55Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoED | Series de Fourier (Grupo ILIA) | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Ignacio Campos Paños, Ignacio Martínez Cerezo, Luis Ramos Ortiz, Alicia Ruiz Dominguez }}&lt;br /&gt;
=Introducción=&lt;br /&gt;
&lt;br /&gt;
En una amplia gama de problemas de ingeniería y matemáticas aparecen funciones periódicas que se necesitan aproximar mediante sumas de funciones trigonométricas, lo que conduce a las '''series de Fourier'''.&lt;br /&gt;
[[Archivo:Fouriercolor.jpg|300px|thumb|right| Jean-Baptiste Joseph Fourier]]&lt;br /&gt;
&lt;br /&gt;
Estas series constituyen una herramienta fundamental en la resolución de ecuaciones en derivadas parciales y otros muchos ámbitos de la ciencia. La idea principal es que una función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;, definida en un espacio de Hilbert &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;, puede expresarse como una combinación infinita de funciones trigonométricas de la forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \frac{d_0}{2\pi} + \sum_{n=1}^{\infty}  d_n \frac{1}{\sqrt{\pi}} \cos(nx) + \sum_{n=1}^{\infty}c_n \frac{1}{\sqrt{\pi}} \sin(nx)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los coeficientes &amp;lt;math&amp;gt;d_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;d_n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;c_n&amp;lt;/math&amp;gt; son los '''coeficientes de Fourier''' y se definen de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_0 = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}} dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}cos(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
c_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}sen(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este método permite descomponer funciones periódicas en sus componentes fundamentales, lo que es de gran utilidad en física, ingeniería y matemáticas aplicadas. A continuación, se presentan las primeras funciones base utilizadas en la expansión en series de Fourier.&lt;br /&gt;
&lt;br /&gt;
=Base trigonométrica=&lt;br /&gt;
Para comprender mejor la construcción de las series de Fourier y poder visualizar las funciones base mencionadas, representamos gráficamente los primeros términos de la base trigonométrica &amp;lt;math&amp;gt; \mathcal{B} := \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt; en el intervalo &amp;lt;math&amp;gt; [ -1, 1 ] &amp;lt;/math&amp;gt; mediante un código en Python. Esto nos permitirá observar cómo estas funciones elementales forman una '''base ortonormal''' en el espacio &amp;lt;math&amp;gt; L^2( [-1,1]) &amp;lt;/math&amp;gt; y cómo, mediante combinaciones lineales de estas, podemos aproximar funciones arbitrarias.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:fourier3ILIA.png|450px|thumb|right|Primeros términos de la Base 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;
&lt;br /&gt;
def base_fourier_cos(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de cosenos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.cos(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def base_fourier_sen(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de senos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.sin(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Parámetros&lt;br /&gt;
X = np.linspace(-1, 1, 1000)&lt;br /&gt;
# número de elementos de la base (1, cos(n pi x), sen(n pi x))&lt;br /&gt;
n = 10&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
colors = [ &amp;quot;#0000FF&amp;quot;, &amp;quot;#0033CC&amp;quot;, &amp;quot;#0066CC&amp;quot;, &amp;quot;#0099FF&amp;quot;, &amp;quot;#33CCFF&amp;quot;,&lt;br /&gt;
    &amp;quot;#66CCCC&amp;quot;, &amp;quot;#CC9966&amp;quot;, &amp;quot;#FF6633&amp;quot;, &amp;quot;#FF3300&amp;quot;, &amp;quot;#FF0000&amp;quot;,]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Obtener funciones base&lt;br /&gt;
base = [lambda x: 1] + base_fourier_cos(n) + base_fourier_sen(n)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Graficar&lt;br /&gt;
plt.subplots(3, 1, figsize=(15, 15), dpi=300)&lt;br /&gt;
&lt;br /&gt;
# Término constante&lt;br /&gt;
plt.subplot(3, 1, 1)&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Término constante&amp;quot;)&lt;br /&gt;
plt.plot([-1, 1], [1 / 2, 1 / 2], color=colors[-1], label=&amp;quot;Término constante&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Términos en coseno&lt;br /&gt;
plt.subplot(3, 1, 2)&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Términos en coseno&amp;quot;)&lt;br /&gt;
for i in range(1, n + 1):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - 1], label=f&amp;quot;cos({str(i)*(i&amp;gt;1)}πx)&amp;quot;)&lt;br /&gt;
plt.legend(loc=&amp;quot;right&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Términos en seno&lt;br /&gt;
plt.subplot(3, 1, 3)&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Términos en seno&amp;quot;)&lt;br /&gt;
for i in range(n + 1, len(base)):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - n - 1], label=f&amp;quot;sen({str(i-n) * ((i-n) &amp;gt; 1)}πx)&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GifILIA.gif|400px|thumb|left|Fourier según aumenta n]]&lt;br /&gt;
&lt;br /&gt;
Al graficar estos términos, podemos apreciar cómo la combinación de estos elementos nos permite aproximar funciones periódicas arbitrarias, tal y como buscábamos.&lt;br /&gt;
La relevancia de esta base radica en la aproximación de funciones mediante series trigonométricas. En particular, la expansión de Fourier de una función \( f(x) \) en esta base se expresa como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \sum_{n=1}^{\infty} c_n e_n \quad \text{con} \quad c_n = \langle f, e_n \rangle&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Donde \( e_n \) es cada uno de los términos de la base &amp;lt;math&amp;gt; \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; c_n &amp;lt;/math&amp;gt; son los coeficientes que se calculan mediante el producto interno de &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; con los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
Como se puede observar, a medida que el parámetro &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; aumenta, los términos oscilan con un periodo cada vez menor, concretamente &amp;lt;math&amp;gt; T = \frac{2}{n} &amp;lt;/math&amp;gt;, lo que refleja una mayor &amp;quot;frecuencia&amp;quot; en las oscilaciones. Esta característica es esencial en la aproximación de funciones suaves por medio de las series de Fourier, donde las funciones periódicas se aproximan cada vez con mayor precisión mediante una combinación lineal de estos términos básicos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Cambio de intervalo=&lt;br /&gt;
Una vez se ha trabajado en la base trigonométrica &amp;lt;math&amp;gt; [-1,1] &amp;lt;/math&amp;gt;, es importante señalar que en la práctica es común encontrar funciones definidas en otros dominios. En este apartado, se construirá la base trigonométrica en un nuevo intervalo, &amp;lt;math&amp;gt; [-2,3] &amp;lt;/math&amp;gt;, y se usará esta base para aproximar la función&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x)=xe^{-x}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mediante series de Fourier, considerando los primeros &amp;lt;math&amp;gt; 5, 10 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; 20 &amp;lt;/math&amp;gt; términos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Construcción de la base trigonométrica en &amp;lt;math&amp;gt; [-2,3] &amp;lt;/math&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
En un intervalo general &amp;lt;math&amp;gt; [a,b] &amp;lt;/math&amp;gt;, la base trigonométrica asociada está dada por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
  \left\{ \frac{1}{\sqrt{b-a}}, \cos\left(\frac{n\pi (x-a)}{b-a} \right), \sin\left(\frac{n\pi (x-a)}{b-a} \right) \right\}_{n \in \mathbb{N}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde se ha normalizado el término constante para que la base sea ortonormal en &amp;lt;math&amp;gt; L^2 ([a,b]) &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
En nuestro caso, con &amp;lt;math&amp;gt; a=-2 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; b=3 &amp;lt;/math&amp;gt;, la base trigonométrica resulta:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
  \left\{ \frac{1}{\sqrt{5}}, \cos\left(\frac{n\pi (x+2)}{5} \right), \sin\left(\frac{n\pi (x+2)}{5} \right) \right\}_{n \in \mathbb{N}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Cálculo de los coeficientes de Fourier===&lt;br /&gt;
Para expandir la función &amp;lt;math&amp;gt; f(x)=xe^{-x} &amp;lt;/math&amp;gt; en esta nueva base, es necesario calcular los coeficientes de Fourier:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
c_n = \int_{-2}^{3} f(x)e_n(x) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; e_n &amp;lt;/math&amp;gt; son los términos de la base calculada anteriormente.&lt;br /&gt;
&lt;br /&gt;
El cálculo de estos coeficientes implica integrar productos de &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; con funciones trigonométricas, lo que puede llegar a ser muy laborioso para &amp;lt;math&amp;gt; 5, 10 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; 20 &amp;lt;/math&amp;gt; términos, y es por esto que estos cálculos se hacen mediante herramientas computacionales como Python. A continuación, se incluye el código que nos proporciona la aproximación que buscábamos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:aproxILIA.png|450px|thumb|right|Aproximación de f(x) mediante series de Fourier]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from scipy.integrate import quad&lt;br /&gt;
&lt;br /&gt;
# Definir la función f(x)&lt;br /&gt;
def f(x):&lt;br /&gt;
    return x * np.exp(-x)&lt;br /&gt;
&lt;br /&gt;
# Definir los límites del intervalo&lt;br /&gt;
a, b = -2, 3&lt;br /&gt;
L = (b - a) / 2  # Semilongitud del intervalo&lt;br /&gt;
&lt;br /&gt;
# Base trigonométrica en [-2,3]&lt;br /&gt;
def phi_0(x):&lt;br /&gt;
    return 1 / np.sqrt(b - a)&lt;br /&gt;
&lt;br /&gt;
def phi_cos(n, x):&lt;br /&gt;
    return np.cos(n * np.pi * (x - a) / (b - a))&lt;br /&gt;
&lt;br /&gt;
def phi_sin(n, x):&lt;br /&gt;
    return np.sin(n * np.pi * (x - a) / (b - a))&lt;br /&gt;
&lt;br /&gt;
# Cálculo de coeficientes de Fourier&lt;br /&gt;
def coeficiente_an(n):&lt;br /&gt;
    result, _ = quad(lambda x: f(x) * phi_cos(n, x), a, b)&lt;br /&gt;
    return result / np.sqrt(b - a)&lt;br /&gt;
&lt;br /&gt;
def coeficiente_bn(n):&lt;br /&gt;
    result, _ = quad(lambda x: f(x) * phi_sin(n, x), a, b)&lt;br /&gt;
    return result / np.sqrt(b - a)&lt;br /&gt;
&lt;br /&gt;
def coeficiente_a0():&lt;br /&gt;
    result, _ = quad(lambda x: f(x) * phi_0(x), a, b)&lt;br /&gt;
    return result / np.sqrt(b - a)&lt;br /&gt;
&lt;br /&gt;
# Aproximación de la serie de Fourier&lt;br /&gt;
def aproximacion_fourier(x, N):&lt;br /&gt;
    suma = coeficiente_a0() * phi_0(x)&lt;br /&gt;
    for n in range(1, N + 1):&lt;br /&gt;
        suma += coeficiente_an(n) * phi_cos(n, x) + coeficiente_bn(n) * phi_sin(n, x)&lt;br /&gt;
    return suma&lt;br /&gt;
&lt;br /&gt;
# Valores de x para graficar&lt;br /&gt;
X = np.linspace(a, b, 400)&lt;br /&gt;
&lt;br /&gt;
# Lista de colores para cada aproximación&lt;br /&gt;
colores = [ &amp;quot;#0000FF&amp;quot;,&amp;quot;#0066CC&amp;quot;, &amp;quot;#33CCFF&amp;quot;,]&lt;br /&gt;
&lt;br /&gt;
# Graficar aproximaciones con 5, 10 y 20 términos&lt;br /&gt;
plt.figure(figsize=(10, 6), dpi=200)&lt;br /&gt;
plt.plot(X, f(X), label=&amp;quot;Función original f(x)&amp;quot;, linewidth=2, color=&amp;quot;black&amp;quot;)  # Función original en negro&lt;br /&gt;
&lt;br /&gt;
for i, N in enumerate([5, 10, 20]):&lt;br /&gt;
    plt.plot(X, [aproximacion_fourier(x, N) for x in X], label=f&amp;quot;Aprox. con {N} términos&amp;quot;, color=colores[i])&lt;br /&gt;
&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Aproximación de f(x) mediante series de Fourier en [-2,3]&amp;quot;)&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.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En las aproximaciones con un mayor número de n aparecen oscilaciones más pronunciadas, y la aproximación es peor en ciertos puntos. Esto es el llamado fenómeno de Gibbs.&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>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:GifILIA.gif&amp;diff=84121</id>
		<title>Archivo:GifILIA.gif</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:GifILIA.gif&amp;diff=84121"/>
				<updated>2025-02-15T09:36:34Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=83940</id>
		<title>Series de Fourier (Grupo ILIA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=83940"/>
				<updated>2025-02-13T16:35:53Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo ILIA) | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Ignacio Campos Paños, Ignacio Martínez Cerezo, Luis Ramos Ortiz, Alicia Ruiz Dominguez }}&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
&lt;br /&gt;
En una amplia gama de problemas de ingeniería y matemáticas aparecen funciones periódicas que se necesitan aproximar mediante sumas de funciones trigonométricas, lo que conduce a las '''series de Fourier'''.&lt;br /&gt;
&lt;br /&gt;
Estas series constituyen una herramienta fundamental en la resolución de ecuaciones en derivadas parciales y otros muchos ámbitos de la ciencia. La idea principal es que una función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;, definida en un espacio de Hilbert &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;, puede expresarse como una combinación infinita de funciones trigonométricas de la forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \frac{d_0}{2\pi} + \sum_{n=1}^{\infty}  d_n \frac{1}{\sqrt{\pi}} \cos(nx) + \sum_{n=1}^{\infty}c_n \frac{1}{\sqrt{\pi}} \sin(nx)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los coeficientes &amp;lt;math&amp;gt;d_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;d_n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;c_n&amp;lt;/math&amp;gt; son los '''coeficientes de Fourier''' y se definen de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_0 = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}} dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}cos(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
c_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}sen(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este método permite descomponer funciones periódicas en sus componentes fundamentales, lo que es de gran utilidad en física, ingeniería y matemáticas aplicadas. A continuación, se presentan las primeras funciones base utilizadas en la expansión en series de Fourier.&lt;br /&gt;
&lt;br /&gt;
=Base trigonométrica=&lt;br /&gt;
Para comprender mejor la construcción de las series de Fourier y poder visualizar las funciones base mencionadas, representamos gráficamente los primeros términos de la base trigonométrica &amp;lt;math&amp;gt; \mathcal{B} := \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt; en el intervalo &amp;lt;math&amp;gt; [ -1, 1 ] &amp;lt;/math&amp;gt; mediante un código en Python. Esto nos permitirá observar cómo estas funciones elementales forman una '''base ortonormal''' en el espacio &amp;lt;math&amp;gt; L^2( [-1,1]) &amp;lt;/math&amp;gt; y cómo, mediante combinaciones lineales de estas, podemos aproximar funciones arbitrarias.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:fourier3ILIA.png|450px|thumb|right|Primeros términos de la Base 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;
&lt;br /&gt;
def base_fourier_cos(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de cosenos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.cos(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def base_fourier_sen(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de senos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.sin(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Parámetros&lt;br /&gt;
X = np.linspace(-1, 1, 1000)&lt;br /&gt;
# número de elementos de la base (1, cos(n pi x), sen(n pi x))&lt;br /&gt;
n = 10&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
colors = [ &amp;quot;#0000FF&amp;quot;, &amp;quot;#0033CC&amp;quot;, &amp;quot;#0066CC&amp;quot;, &amp;quot;#0099FF&amp;quot;, &amp;quot;#33CCFF&amp;quot;,&lt;br /&gt;
    &amp;quot;#66CCCC&amp;quot;, &amp;quot;#CC9966&amp;quot;, &amp;quot;#FF6633&amp;quot;, &amp;quot;#FF3300&amp;quot;, &amp;quot;#FF0000&amp;quot;,]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Obtener funciones base&lt;br /&gt;
base = [lambda x: 1] + base_fourier_cos(n) + base_fourier_sen(n)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Graficar&lt;br /&gt;
plt.subplots(3, 1, figsize=(15, 15), dpi=300)&lt;br /&gt;
&lt;br /&gt;
# Término constante&lt;br /&gt;
plt.subplot(3, 1, 1)&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Término constante&amp;quot;)&lt;br /&gt;
plt.plot([-1, 1], [1 / 2, 1 / 2], color=colors[-1], label=&amp;quot;Término constante&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Términos en coseno&lt;br /&gt;
plt.subplot(3, 1, 2)&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Términos en coseno&amp;quot;)&lt;br /&gt;
for i in range(1, n + 1):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - 1], label=f&amp;quot;cos({str(i)*(i&amp;gt;1)}πx)&amp;quot;)&lt;br /&gt;
plt.legend(loc=&amp;quot;right&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Términos en seno&lt;br /&gt;
plt.subplot(3, 1, 3)&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Términos en seno&amp;quot;)&lt;br /&gt;
for i in range(n + 1, len(base)):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - n - 1], label=f&amp;quot;sen({str(i-n) * ((i-n) &amp;gt; 1)}πx)&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Al graficar estos términos, podemos apreciar cómo la combinación de estos elementos nos permite aproximar funciones periódicas arbitrarias, tal y como buscábamos.&lt;br /&gt;
La relevancia de esta base radica en su aplicación en la aproximación de funciones mediante series trigonométricas. En particular, la expansión de Fourier de una función \( f(x) \) en esta base se expresa como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \sum_{n=1}^{\infty} c_n e_n \quad \text{con} \quad c_n = \langle f, e_n \rangle&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Donde \( e_n \) es cada uno de los términos de la base &amp;lt;math&amp;gt; \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; c_n &amp;lt;/math&amp;gt; son los coeficientes que se calculan mediante el producto interno de &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; con los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como se puede observar, a medida que el parámetro &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; aumenta, los términos oscilan con un periodo cada vez menor, concretamente &amp;lt;math&amp;gt; T = \frac{2}{n} &amp;lt;/math&amp;gt;, lo que refleja una mayor &amp;quot;frecuencia&amp;quot; en las oscilaciones. Esta característica es esencial en la aproximación de funciones suaves por medio de las series de Fourier, donde las funciones periódicas se aproximan cada vez con mayor precisión mediante una combinación lineal de estos términos básicos.&lt;br /&gt;
&lt;br /&gt;
=Cambio de intervalo=&lt;br /&gt;
Una vez se ha trabajado en la base trigonométrica &amp;lt;math&amp;gt; [-1,1] &amp;lt;/math&amp;gt;, es importante señalar que en la práctica es común encontrar funciones definidas en otros dominios. En este apartado, se construirá la base trigonométrica en un nuevo intervalo, &amp;lt;math&amp;gt; [-2,3] &amp;lt;/math&amp;gt;, y se usará esta base para aproximar la función&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x)=xe^{-x}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mediante series de Fourier, considerando los primeros &amp;lt;math&amp;gt; 5, 10 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; 20 &amp;lt;/math&amp;gt; términos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Construcción de la base trigonométrica en &amp;lt;math&amp;gt; [-2,3] &amp;lt;/math&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
En un intervalo general &amp;lt;math&amp;gt; [a,b] &amp;lt;/math&amp;gt;, la base trigonométrica asociada está dada por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
  \left\{ \frac{1}{\sqrt{b-a}}, \cos\left(\frac{n\pi (x-a)}{b-a} \right), \sin\left(\frac{n\pi (x-a)}{b-a} \right) \right\}_{n \in \mathbb{N}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde se ha normalizado el término constante para que la base sea ortonormal en &amp;lt;math&amp;gt; L^2 ([a,b]) &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
En nuestro caso, con &amp;lt;math&amp;gt; a=-2 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; b=3 &amp;lt;/math&amp;gt;, la base trigonométrica resulta:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
  \left\{ \frac{1}{\sqrt{5}}, \cos\left(\frac{n\pi (x+2)}{5} \right), \sin\left(\frac{n\pi (x+2)}{5} \right) \right\}_{n \in \mathbb{N}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Cálculo de los coeficientes de Fourier===&lt;br /&gt;
Para expandir la función &amp;lt;math&amp;gt; f(x)=xe^{-x} &amp;lt;/math&amp;gt; en esta nueva base, es necesario calcular los coeficientes de Fourier:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
c_n = \int_{-2}^{3} f(x)e_n(x) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; e_n &amp;lt;/math&amp;gt; son los términos de la base calculada anteriormente.&lt;br /&gt;
&lt;br /&gt;
El cálculo de estos coeficientes implica integrar productos de &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; con funciones trigonométricas, lo que puede llegar a ser muy laborioso para &amp;lt;math&amp;gt; 5, 10 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; 20 &amp;lt;/math&amp;gt; términos, y es por esto que estos cálculos se hacen mediante herramientas computacionales como Python. A continuación, se incluye el código que nos proporciona la aproximación que buscábamos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:aproxILIA.png|450px|thumb|right|Aproximación de f(x) mediante series de Fourier]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from scipy.integrate import quad&lt;br /&gt;
&lt;br /&gt;
# Definir la función f(x)&lt;br /&gt;
def f(x):&lt;br /&gt;
    return x * np.exp(-x)&lt;br /&gt;
&lt;br /&gt;
# Definir los límites del intervalo&lt;br /&gt;
a, b = -2, 3&lt;br /&gt;
L = (b - a) / 2  # Semilongitud del intervalo&lt;br /&gt;
&lt;br /&gt;
# Base trigonométrica en [-2,3]&lt;br /&gt;
def phi_0(x):&lt;br /&gt;
    return 1 / np.sqrt(b - a)&lt;br /&gt;
&lt;br /&gt;
def phi_cos(n, x):&lt;br /&gt;
    return np.cos(n * np.pi * (x - a) / (b - a))&lt;br /&gt;
&lt;br /&gt;
def phi_sin(n, x):&lt;br /&gt;
    return np.sin(n * np.pi * (x - a) / (b - a))&lt;br /&gt;
&lt;br /&gt;
# Cálculo de coeficientes de Fourier&lt;br /&gt;
def coeficiente_an(n):&lt;br /&gt;
    result, _ = quad(lambda x: f(x) * phi_cos(n, x), a, b)&lt;br /&gt;
    return result / np.sqrt(b - a)&lt;br /&gt;
&lt;br /&gt;
def coeficiente_bn(n):&lt;br /&gt;
    result, _ = quad(lambda x: f(x) * phi_sin(n, x), a, b)&lt;br /&gt;
    return result / np.sqrt(b - a)&lt;br /&gt;
&lt;br /&gt;
def coeficiente_a0():&lt;br /&gt;
    result, _ = quad(lambda x: f(x) * phi_0(x), a, b)&lt;br /&gt;
    return result / np.sqrt(b - a)&lt;br /&gt;
&lt;br /&gt;
# Aproximación de la serie de Fourier&lt;br /&gt;
def aproximacion_fourier(x, N):&lt;br /&gt;
    suma = coeficiente_a0() * phi_0(x)&lt;br /&gt;
    for n in range(1, N + 1):&lt;br /&gt;
        suma += coeficiente_an(n) * phi_cos(n, x) + coeficiente_bn(n) * phi_sin(n, x)&lt;br /&gt;
    return suma&lt;br /&gt;
&lt;br /&gt;
# Valores de x para graficar&lt;br /&gt;
X = np.linspace(a, b, 400)&lt;br /&gt;
&lt;br /&gt;
# Lista de colores para cada aproximación&lt;br /&gt;
colores = [ &amp;quot;#0000FF&amp;quot;,&amp;quot;#0066CC&amp;quot;, &amp;quot;#33CCFF&amp;quot;,]&lt;br /&gt;
&lt;br /&gt;
# Graficar aproximaciones con 5, 10 y 20 términos&lt;br /&gt;
plt.figure(figsize=(10, 6), dpi=200)&lt;br /&gt;
plt.plot(X, f(X), label=&amp;quot;Función original f(x)&amp;quot;, linewidth=2, color=&amp;quot;black&amp;quot;)  # Función original en negro&lt;br /&gt;
&lt;br /&gt;
for i, N in enumerate([5, 10, 20]):&lt;br /&gt;
    plt.plot(X, [aproximacion_fourier(x, N) for x in X], label=f&amp;quot;Aprox. con {N} términos&amp;quot;, color=colores[i])&lt;br /&gt;
&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Aproximación de f(x) mediante series de Fourier en [-2,3]&amp;quot;)&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.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;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>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:AproxILIA.png&amp;diff=83939</id>
		<title>Archivo:AproxILIA.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:AproxILIA.png&amp;diff=83939"/>
				<updated>2025-02-13T16:32:10Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=83937</id>
		<title>Series de Fourier (Grupo ILIA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=83937"/>
				<updated>2025-02-13T16:28:38Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo ILIA) | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Ignacio Campos Paños, Ignacio Martínez Cerezo, Luis Ramos Ortiz, Alicia Ruiz Dominguez }}&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
&lt;br /&gt;
En una amplia gama de problemas de ingeniería y matemáticas aparecen funciones periódicas que se necesitan aproximar mediante sumas de funciones trigonométricas, lo que conduce a las '''series de Fourier'''.&lt;br /&gt;
&lt;br /&gt;
Estas series constituyen una herramienta fundamental en la resolución de ecuaciones en derivadas parciales y otros muchos ámbitos de la ciencia. La idea principal es que una función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;, definida en un espacio de Hilbert &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;, puede expresarse como una combinación infinita de funciones trigonométricas de la forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \frac{d_0}{2\pi} + \sum_{n=1}^{\infty}  d_n \frac{1}{\sqrt{\pi}} \cos(nx) + \sum_{n=1}^{\infty}c_n \frac{1}{\sqrt{\pi}} \sin(nx)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los coeficientes &amp;lt;math&amp;gt;d_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;d_n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;c_n&amp;lt;/math&amp;gt; son los '''coeficientes de Fourier''' y se definen de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_0 = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}} dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}cos(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
c_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}sen(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este método permite descomponer funciones periódicas en sus componentes fundamentales, lo que es de gran utilidad en física, ingeniería y matemáticas aplicadas. A continuación, se presentan las primeras funciones base utilizadas en la expansión en series de Fourier.&lt;br /&gt;
&lt;br /&gt;
=Base trigonométrica=&lt;br /&gt;
Para comprender mejor la construcción de las series de Fourier y poder visualizar las funciones base mencionadas, representamos gráficamente los primeros términos de la base trigonométrica &amp;lt;math&amp;gt; \mathcal{B} := \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt; en el intervalo &amp;lt;math&amp;gt; [ -1, 1 ] &amp;lt;/math&amp;gt; mediante un código en Python. Esto nos permitirá observar cómo estas funciones elementales forman una '''base ortonormal''' en el espacio &amp;lt;math&amp;gt; L^2( [-1,1]) &amp;lt;/math&amp;gt; y cómo, mediante combinaciones lineales de estas, podemos aproximar funciones arbitrarias.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:fourier3ILIA.png|450px|thumb|right|Primeros términos de la Base 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;
&lt;br /&gt;
def base_fourier_cos(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de cosenos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.cos(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def base_fourier_sen(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de senos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.sin(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Parámetros&lt;br /&gt;
X = np.linspace(-1, 1, 1000)&lt;br /&gt;
# número de elementos de la base (1, cos(n pi x), sen(n pi x))&lt;br /&gt;
n = 10&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
colors = [ &amp;quot;#0000FF&amp;quot;, &amp;quot;#0033CC&amp;quot;, &amp;quot;#0066CC&amp;quot;, &amp;quot;#0099FF&amp;quot;, &amp;quot;#33CCFF&amp;quot;,&lt;br /&gt;
    &amp;quot;#66CCCC&amp;quot;, &amp;quot;#CC9966&amp;quot;, &amp;quot;#FF6633&amp;quot;, &amp;quot;#FF3300&amp;quot;, &amp;quot;#FF0000&amp;quot;,]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Obtener funciones base&lt;br /&gt;
base = [lambda x: 1] + base_fourier_cos(n) + base_fourier_sen(n)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Graficar&lt;br /&gt;
plt.subplots(3, 1, figsize=(15, 15), dpi=300)&lt;br /&gt;
&lt;br /&gt;
# Término constante&lt;br /&gt;
plt.subplot(3, 1, 1)&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Término constante&amp;quot;)&lt;br /&gt;
plt.plot([-1, 1], [1 / 2, 1 / 2], color=colors[-1], label=&amp;quot;Término constante&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Términos en coseno&lt;br /&gt;
plt.subplot(3, 1, 2)&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Términos en coseno&amp;quot;)&lt;br /&gt;
for i in range(1, n + 1):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - 1], label=f&amp;quot;cos({str(i)*(i&amp;gt;1)}πx)&amp;quot;)&lt;br /&gt;
plt.legend(loc=&amp;quot;right&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Términos en seno&lt;br /&gt;
plt.subplot(3, 1, 3)&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Términos en seno&amp;quot;)&lt;br /&gt;
for i in range(n + 1, len(base)):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - n - 1], label=f&amp;quot;sen({str(i-n) * ((i-n) &amp;gt; 1)}πx)&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Al graficar estos términos, podemos apreciar cómo la combinación de estos elementos nos permite aproximar funciones periódicas arbitrarias, tal y como buscábamos.&lt;br /&gt;
La relevancia de esta base radica en su aplicación en la aproximación de funciones mediante series trigonométricas. En particular, la expansión de Fourier de una función \( f(x) \) en esta base se expresa como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \sum_{n=1}^{\infty} c_n e_n \quad \text{con} \quad c_n = \langle f, e_n \rangle&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Donde \( e_n \) es cada uno de los términos de la base &amp;lt;math&amp;gt; \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; c_n &amp;lt;/math&amp;gt; son los coeficientes que se calculan mediante el producto interno de &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; con los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como se puede observar, a medida que el parámetro &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; aumenta, los términos oscilan con un periodo cada vez menor, concretamente &amp;lt;math&amp;gt; T = \frac{2}{n} &amp;lt;/math&amp;gt;, lo que refleja una mayor &amp;quot;frecuencia&amp;quot; en las oscilaciones. Esta característica es esencial en la aproximación de funciones suaves por medio de las series de Fourier, donde las funciones periódicas se aproximan cada vez con mayor precisión mediante una combinación lineal de estos términos básicos.&lt;br /&gt;
&lt;br /&gt;
=Cambio de intervalo=&lt;br /&gt;
Una vez se ha trabajado en la base trigonométrica &amp;lt;math&amp;gt; [-1,1] &amp;lt;/math&amp;gt;, es importante señalar que en la práctica es común encontrar funciones definidas en otros dominios. En este apartado, se construirá la base trigonométrica en un nuevo intervalo, &amp;lt;math&amp;gt; [-2,3] &amp;lt;/math&amp;gt;, y se usará esta base para aproximar la función&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x)=xe^{-x}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mediante series de Fourier, considerando los primeros &amp;lt;math&amp;gt; 5, 10 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; 20 &amp;lt;/math&amp;gt; términos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Construcción de la base trigonométrica en &amp;lt;math&amp;gt; [-2,3] &amp;lt;/math&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
En un intervalo general &amp;lt;math&amp;gt; [a,b] &amp;lt;/math&amp;gt;, la base trigonométrica asociada está dada por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
  \left\{ \frac{1}{\sqrt{b-a}}, \cos\left(\frac{n\pi (x-a)}{b-a} \right), \sin\left(\frac{n\pi (x-a)}{b-a} \right) \right\}_{n \in \mathbb{N}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde se ha normalizado el término constante para que la base sea ortonormal en &amp;lt;math&amp;gt; L^2 ([a,b]) &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
En nuestro caso, con &amp;lt;math&amp;gt; a=-2 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; b=3 &amp;lt;/math&amp;gt;, la base trigonométrica resulta:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
  \left\{ \frac{1}{\sqrt{5}}, \cos\left(\frac{n\pi (x+2)}{5} \right), \sin\left(\frac{n\pi (x+2)}{5} \right) \right\}_{n \in \mathbb{N}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Cálculo de los coeficientes de Fourier===&lt;br /&gt;
Para expandir la función &amp;lt;math&amp;gt; f(x)=xe^{-x} &amp;lt;/math&amp;gt; en esta nueva base, es necesario calcular los coeficientes de Fourier:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
c_n = \int_{-2}^{3} f(x)e_n(x) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; e_n &amp;lt;/math&amp;gt; son los términos de la base calculada anteriormente.&lt;br /&gt;
&lt;br /&gt;
El cálculo de estos coeficientes implica integrar productos de &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; con funciones trigonométricas, lo que puede llegar a ser muy laborioso para &amp;lt;math&amp;gt; 5, 10 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; 20 &amp;lt;/math&amp;gt; términos, y es por esto que estos cálculos se hacen mediante herramientas computacionales como Python. A continuación, se incluye el código que nos proporciona la aproximación que buscábamos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from scipy.integrate import quad&lt;br /&gt;
&lt;br /&gt;
# Definir la función f(x)&lt;br /&gt;
def f(x):&lt;br /&gt;
    return x * np.exp(-x)&lt;br /&gt;
&lt;br /&gt;
# Definir los límites del intervalo&lt;br /&gt;
a, b = -2, 3&lt;br /&gt;
L = (b - a) / 2  # Semilongitud del intervalo&lt;br /&gt;
&lt;br /&gt;
# Base trigonométrica en [-2,3]&lt;br /&gt;
def phi_0(x):&lt;br /&gt;
    return 1 / np.sqrt(b - a)&lt;br /&gt;
&lt;br /&gt;
def phi_cos(n, x):&lt;br /&gt;
    return np.cos(n * np.pi * (x - a) / (b - a))&lt;br /&gt;
&lt;br /&gt;
def phi_sin(n, x):&lt;br /&gt;
    return np.sin(n * np.pi * (x - a) / (b - a))&lt;br /&gt;
&lt;br /&gt;
# Cálculo de coeficientes de Fourier&lt;br /&gt;
def coeficiente_an(n):&lt;br /&gt;
    result, _ = quad(lambda x: f(x) * phi_cos(n, x), a, b)&lt;br /&gt;
    return result / np.sqrt(b - a)&lt;br /&gt;
&lt;br /&gt;
def coeficiente_bn(n):&lt;br /&gt;
    result, _ = quad(lambda x: f(x) * phi_sin(n, x), a, b)&lt;br /&gt;
    return result / np.sqrt(b - a)&lt;br /&gt;
&lt;br /&gt;
def coeficiente_a0():&lt;br /&gt;
    result, _ = quad(lambda x: f(x) * phi_0(x), a, b)&lt;br /&gt;
    return result / np.sqrt(b - a)&lt;br /&gt;
&lt;br /&gt;
# Aproximación de la serie de Fourier&lt;br /&gt;
def aproximacion_fourier(x, N):&lt;br /&gt;
    suma = coeficiente_a0() * phi_0(x)&lt;br /&gt;
    for n in range(1, N + 1):&lt;br /&gt;
        suma += coeficiente_an(n) * phi_cos(n, x) + coeficiente_bn(n) * phi_sin(n, x)&lt;br /&gt;
    return suma&lt;br /&gt;
&lt;br /&gt;
# Valores de x para graficar&lt;br /&gt;
X = np.linspace(a, b, 400)&lt;br /&gt;
&lt;br /&gt;
# Graficar aproximaciones con 5, 10 y 20 términos&lt;br /&gt;
plt.figure(figsize=(10, 6))&lt;br /&gt;
plt.plot(X, f(X), label=&amp;quot;Función original f(x)&amp;quot;, linewidth=2)&lt;br /&gt;
&lt;br /&gt;
for N in [5, 10, 20]:&lt;br /&gt;
    plt.plot(X, [aproximacion_fourier(x, N) for x in X], label=f&amp;quot;Aprox. con {N} términos&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Aproximación de f(x) mediante series de Fourier en [-2,3]&amp;quot;)&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.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;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>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=83934</id>
		<title>Series de Fourier (Grupo ILIA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=83934"/>
				<updated>2025-02-13T16:20:09Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo ILIA) | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Ignacio Campos Paños, Ignacio Martínez Cerezo, Luis Ramos Ortiz, Alicia Ruiz Dominguez }}&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
&lt;br /&gt;
En una amplia gama de problemas de ingeniería y matemáticas aparecen funciones periódicas que se necesitan aproximar mediante sumas de funciones trigonométricas, lo que conduce a las '''series de Fourier'''.&lt;br /&gt;
&lt;br /&gt;
Estas series constituyen una herramienta fundamental en la resolución de ecuaciones en derivadas parciales y otros muchos ámbitos de la ciencia. La idea principal es que una función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;, definida en un espacio de Hilbert &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;, puede expresarse como una combinación infinita de funciones trigonométricas de la forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \frac{d_0}{2\pi} + \sum_{n=1}^{\infty}  d_n \frac{1}{\sqrt{\pi}} \cos(nx) + \sum_{n=1}^{\infty}c_n \frac{1}{\sqrt{\pi}} \sin(nx)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los coeficientes &amp;lt;math&amp;gt;d_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;d_n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;c_n&amp;lt;/math&amp;gt; son los '''coeficientes de Fourier''' y se definen de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_0 = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}} dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}cos(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
c_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}sen(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este método permite descomponer funciones periódicas en sus componentes fundamentales, lo que es de gran utilidad en física, ingeniería y matemáticas aplicadas. A continuación, se presentan las primeras funciones base utilizadas en la expansión en series de Fourier.&lt;br /&gt;
&lt;br /&gt;
=Base trigonométrica=&lt;br /&gt;
Para comprender mejor la construcción de las series de Fourier y poder visualizar las funciones base mencionadas, representamos gráficamente los primeros términos de la base trigonométrica &amp;lt;math&amp;gt; \mathcal{B} := \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt; en el intervalo &amp;lt;math&amp;gt; [ -1, 1 ] &amp;lt;/math&amp;gt; mediante un código en Python. Esto nos permitirá observar cómo estas funciones elementales forman una '''base ortonormal''' en el espacio &amp;lt;math&amp;gt; L^2( [-1,1]) &amp;lt;/math&amp;gt; y cómo, mediante combinaciones lineales de estas, podemos aproximar funciones arbitrarias.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:fourier3ILIA.png|450px|thumb|right|Primeros términos de la Base 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;
&lt;br /&gt;
def base_fourier_cos(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de cosenos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.cos(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def base_fourier_sen(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de senos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.sin(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Parámetros&lt;br /&gt;
X = np.linspace(-1, 1, 1000)&lt;br /&gt;
# número de elementos de la base (1, cos(n pi x), sen(n pi x))&lt;br /&gt;
n = 10&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
colors = colors = [ &amp;quot;#0000FF&amp;quot;, &amp;quot;#0033CC&amp;quot;, &amp;quot;#0066CC&amp;quot;, &amp;quot;#0099FF&amp;quot;, &amp;quot;#33CCFF&amp;quot;,&lt;br /&gt;
    &amp;quot;#66CCCC&amp;quot;, &amp;quot;#CC9966&amp;quot;, &amp;quot;#FF6633&amp;quot;, &amp;quot;#FF3300&amp;quot;, &amp;quot;#FF0000&amp;quot;,]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Obtener funciones base&lt;br /&gt;
base = [lambda x: 1] + base_fourier_cos(n) + base_fourier_sen(n)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Graficar&lt;br /&gt;
plt.subplots(3, 1, figsize=(15, 15), dpi=300)&lt;br /&gt;
&lt;br /&gt;
# Término constante&lt;br /&gt;
plt.subplot(3, 1, 1)&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Término constante&amp;quot;)&lt;br /&gt;
plt.plot([-1, 1], [1 / 2, 1 / 2], color=colors[-1], label=&amp;quot;Término constante&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Términos en coseno&lt;br /&gt;
plt.subplot(3, 1, 2)&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Términos en coseno&amp;quot;)&lt;br /&gt;
for i in range(1, n + 1):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - 1], label=f&amp;quot;cos({str(i)*(i&amp;gt;1)}πx)&amp;quot;)&lt;br /&gt;
plt.legend(loc=&amp;quot;right&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Términos en seno&lt;br /&gt;
plt.subplot(3, 1, 3)&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Términos en seno&amp;quot;)&lt;br /&gt;
for i in range(n + 1, len(base)):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - n - 1], label=f&amp;quot;sen({str(i-n) * ((i-n) &amp;gt; 1)}πx)&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Al graficar estos términos, podemos apreciar cómo la combinación de estos elementos nos permite aproximar funciones periódicas arbitrarias, tal y como buscábamos.&lt;br /&gt;
La relevancia de esta base radica en su aplicación en la aproximación de funciones mediante series trigonométricas. En particular, la expansión de Fourier de una función \( f(x) \) en esta base se expresa como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \sum_{n=1}^{\infty} c_n e_n \quad \text{con} \quad c_n = \langle f, e_n \rangle&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Donde \( e_n \) es cada uno de los términos de la base &amp;lt;math&amp;gt; \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; c_n &amp;lt;/math&amp;gt; son los coeficientes que se calculan mediante el producto interno de &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; con los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como se puede observar, a medida que el parámetro &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; aumenta, los términos oscilan con un periodo cada vez menor, concretamente &amp;lt;math&amp;gt; T = \frac{2}{n} &amp;lt;/math&amp;gt;, lo que refleja una mayor &amp;quot;frecuencia&amp;quot; en las oscilaciones. Esta característica es esencial en la aproximación de funciones suaves por medio de las series de Fourier, donde las funciones periódicas se aproximan cada vez con mayor precisión mediante una combinación lineal de estos términos básicos.&lt;br /&gt;
&lt;br /&gt;
=Cambio de intervalo=&lt;br /&gt;
Una vez se ha trabajado en la base trigonométrica &amp;lt;math&amp;gt; [-1,1] &amp;lt;/math&amp;gt;, es importante señalar que en la práctica es común encontrar funciones definidas en otros dominios. En este apartado, se construirá la base trigonométrica en un nuevo intervalo, &amp;lt;math&amp;gt; [-2,3] &amp;lt;/math&amp;gt;, y se usará esta base para aproximar la función&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x)=xe^{-x}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mediante series de Fourier, considerando los primeros &amp;lt;math&amp;gt; 5, 10 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; 20 &amp;lt;/math&amp;gt; términos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Construcción de la base trigonométrica en &amp;lt;math&amp;gt; [-2,3] &amp;lt;/math&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
En un intervalo general &amp;lt;math&amp;gt; [a,b] &amp;lt;/math&amp;gt;, la base trigonométrica asociada está dada por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
  \left\{ \frac{1}{\sqrt{b-a}}, \cos\left(\frac{n\pi (x-a)}{b-a} \right), \sin\left(\frac{n\pi (x-a)}{b-a} \right) \right\}_{n \in \mathbb{N}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde se ha normalizado el término constante para que la base sea ortonormal en &amp;lt;math&amp;gt; L^2 ([a,b]) &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
En nuestro caso, con &amp;lt;math&amp;gt; a=-2 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; b=3 &amp;lt;/math&amp;gt;, la base trigonométrica resulta:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
  \left\{ \frac{1}{\sqrt{5}}, \cos\left(\frac{n\pi (x+2)}{5} \right), \sin\left(\frac{n\pi (x+2)}{5} \right) \right\}_{n \in \mathbb{N}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Cálculo de los coeficientes de Fourier===&lt;br /&gt;
Para expandir la función &amp;lt;math&amp;gt; f(x)=xe^{-x} &amp;lt;/math&amp;gt; en esta nueva base, es necesario calcular los coeficientes de Fourier:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
c_n = \int_{-2}^{3} f(x)e_n(x) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt; e_n &amp;lt;/math&amp;gt; son los términos de la base calculada anteriormente.&lt;br /&gt;
&lt;br /&gt;
El cálculo de estos coeficientes implica integrar productos de &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; con funciones trigonométricas, lo que puede llegar a ser muy laborioso para &amp;lt;math&amp;gt; 5, 10 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; 20 &amp;lt;/math&amp;gt; términos, y es por esto que estos cálculos se hacen mediante herramientas computacionales como Python. A continuación, se incluye el código que nos proporciona la aproximación que buscábamos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from scipy.integrate import quad&lt;br /&gt;
&lt;br /&gt;
# Definir la función f(x)&lt;br /&gt;
def f(x):&lt;br /&gt;
    return x * np.exp(-x)&lt;br /&gt;
&lt;br /&gt;
# Definir los límites del intervalo&lt;br /&gt;
a, b = -2, 3&lt;br /&gt;
L = (b - a) / 2  # Semilongitud del intervalo&lt;br /&gt;
&lt;br /&gt;
# Base trigonométrica en [-2,3]&lt;br /&gt;
def phi_0(x):&lt;br /&gt;
    return 1 / np.sqrt(b - a)&lt;br /&gt;
&lt;br /&gt;
def phi_cos(n, x):&lt;br /&gt;
    return np.cos(n * np.pi * (x - a) / (b - a))&lt;br /&gt;
&lt;br /&gt;
def phi_sin(n, x):&lt;br /&gt;
    return np.sin(n * np.pi * (x - a) / (b - a))&lt;br /&gt;
&lt;br /&gt;
# Cálculo de coeficientes de Fourier&lt;br /&gt;
def coeficiente_an(n):&lt;br /&gt;
    result, _ = quad(lambda x: f(x) * phi_cos(n, x), a, b)&lt;br /&gt;
    return result / np.sqrt(b - a)&lt;br /&gt;
&lt;br /&gt;
def coeficiente_bn(n):&lt;br /&gt;
    result, _ = quad(lambda x: f(x) * phi_sin(n, x), a, b)&lt;br /&gt;
    return result / np.sqrt(b - a)&lt;br /&gt;
&lt;br /&gt;
def coeficiente_a0():&lt;br /&gt;
    result, _ = quad(lambda x: f(x) * phi_0(x), a, b)&lt;br /&gt;
    return result / np.sqrt(b - a)&lt;br /&gt;
&lt;br /&gt;
# Aproximación de la serie de Fourier&lt;br /&gt;
def aproximacion_fourier(x, N):&lt;br /&gt;
    suma = coeficiente_a0() * phi_0(x)&lt;br /&gt;
    for n in range(1, N + 1):&lt;br /&gt;
        suma += coeficiente_an(n) * phi_cos(n, x) + coeficiente_bn(n) * phi_sin(n, x)&lt;br /&gt;
    return suma&lt;br /&gt;
&lt;br /&gt;
# Valores de x para graficar&lt;br /&gt;
X = np.linspace(a, b, 400)&lt;br /&gt;
&lt;br /&gt;
# Graficar aproximaciones con 5, 10 y 20 términos&lt;br /&gt;
plt.figure(figsize=(10, 6))&lt;br /&gt;
plt.plot(X, f(X), label=&amp;quot;Función original f(x)&amp;quot;, linewidth=2)&lt;br /&gt;
&lt;br /&gt;
for N in [5, 10, 20]:&lt;br /&gt;
    plt.plot(X, [aproximacion_fourier(x, N) for x in X], label=f&amp;quot;Aprox. con {N} términos&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Aproximación de f(x) mediante series de Fourier en [-2,3]&amp;quot;)&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.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;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>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=83907</id>
		<title>Series de Fourier (Grupo ILIA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=83907"/>
				<updated>2025-02-13T07:37:04Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo ILIA) | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Ignacio Campos Paños, Ignacio Martínez Cerezo, Luis Ramos Ortiz, Alicia Ruiz Dominguez }}&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
&lt;br /&gt;
En una amplia gama de problemas de ingeniería y matemáticas aparecen funciones periódicas que se necesitan aproximar mediante sumas de funciones trigonométricas, lo que conduce a las '''series de Fourier'''.&lt;br /&gt;
&lt;br /&gt;
Estas series constituyen una herramienta fundamental en la resolución de ecuaciones en derivadas parciales y otros muchos ámbitos de la ciencia. La idea principal es que una función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;, definida en un espacio de Hilbert &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;, puede expresarse como una combinación infinita de funciones trigonométricas de la forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \frac{d_0}{2\pi} + \sum_{n=1}^{\infty}  d_n \frac{1}{\sqrt{\pi}} \cos(nx) + \sum_{n=1}^{\infty}c_n \frac{1}{\sqrt{\pi}} \sin(nx)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los coeficientes &amp;lt;math&amp;gt;d_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;d_n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;c_n&amp;lt;/math&amp;gt; son los '''coeficientes de Fourier''' y se definen de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_0 = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}} dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}cos(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
c_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}sen(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este método permite descomponer funciones periódicas en sus componentes fundamentales, lo que es de gran utilidad en física, ingeniería y matemáticas aplicadas. A continuación, se presentan las primeras funciones base utilizadas en la expansión en series de Fourier.&lt;br /&gt;
&lt;br /&gt;
=Base trigonométrica=&lt;br /&gt;
Para comprender mejor la construcción de las series de Fourier y poder visualizar las funciones base mencionadas, representamos gráficamente los primeros términos de la base trigonométrica &amp;lt;math&amp;gt; \mathcal{B} := \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt; en el intervalo &amp;lt;math&amp;gt; [ -1, 1 ] &amp;lt;/math&amp;gt; mediante un código en Python. Esto nos permitirá observar cómo estas funciones elementales forman una '''base ortonormal''' en el espacio &amp;lt;math&amp;gt; L^2( [-1,1]) &amp;lt;/math&amp;gt; y cómo, mediante combinaciones lineales de estas, podemos aproximar funciones arbitrarias.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:fourier3ILIA.png|450px|thumb|right|Primeros términos de la Base 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;
&lt;br /&gt;
def base_fourier_cos(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de cosenos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.cos(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def base_fourier_sen(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de senos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.sin(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Parámetros&lt;br /&gt;
X = np.linspace(-1, 1, 1000)&lt;br /&gt;
# número de elementos de la base (1, cos(n pi x), sen(n pi x))&lt;br /&gt;
n = 10&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
colors = colors = [ &amp;quot;#0000FF&amp;quot;, &amp;quot;#0033CC&amp;quot;, &amp;quot;#0066CC&amp;quot;, &amp;quot;#0099FF&amp;quot;, &amp;quot;#33CCFF&amp;quot;,&lt;br /&gt;
    &amp;quot;#66CCCC&amp;quot;, &amp;quot;#CC9966&amp;quot;, &amp;quot;#FF6633&amp;quot;, &amp;quot;#FF3300&amp;quot;, &amp;quot;#FF0000&amp;quot;,]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Obtener funciones base&lt;br /&gt;
base = [lambda x: 1] + base_fourier_cos(n) + base_fourier_sen(n)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Graficar&lt;br /&gt;
plt.subplots(3, 1, figsize=(15, 15), dpi=300)&lt;br /&gt;
&lt;br /&gt;
#Término constante&lt;br /&gt;
plt.subplot(3, 1, 1)&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Término constante&amp;quot;)&lt;br /&gt;
plt.plot([-1, 1], [1 / 2, 1 / 2], color=colors[-1], label=&amp;quot;Término constante&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
#Términos en coseno&lt;br /&gt;
plt.subplot(3, 1, 2)&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Términos en coseno&amp;quot;)&lt;br /&gt;
for i in range(1, n + 1):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - 1], label=f&amp;quot;cos({str(i)*(i&amp;gt;1)}πx)&amp;quot;)&lt;br /&gt;
plt.legend(loc=&amp;quot;right&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
#Términos en seno&lt;br /&gt;
plt.subplot(3, 1, 3)&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Términos en seno&amp;quot;)&lt;br /&gt;
for i in range(n + 1, len(base)):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - n - 1], label=f&amp;quot;sen({str(i-n) * ((i-n) &amp;gt; 1)}πx)&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Al graficar estos términos, podemos apreciar cómo la combinación de estos elementos nos permite aproximar funciones periódicas arbitrarias, tal y como buscábamos.&lt;br /&gt;
La relevancia de esta base radica en su aplicación en la aproximación de funciones mediante series trigonométricas. En particular, la expansión de Fourier de una función \( f(x) \) en esta base se expresa como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \sum_{n=1}^{\infty} c_n e_n \quad \text{con} \quad c_n = \langle f, e_n \rangle&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Donde \( e_n \) es cada uno de los términos de la base &amp;lt;math&amp;gt; \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; c_n &amp;lt;/math&amp;gt; son los coeficientes que se calculan mediante el producto interno de &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; con los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como se puede observar, a medida que el parámetro &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; aumenta, los términos oscilan con un periodo cada vez menor, concretamente &amp;lt;math&amp;gt; T = \frac{2}{n} &amp;lt;/math&amp;gt;, lo que refleja una mayor &amp;quot;frecuencia&amp;quot; en las oscilaciones. Esta característica es esencial en la aproximación de funciones suaves por medio de las series de Fourier, donde las funciones periódicas se aproximan cada vez con mayor precisión mediante una combinación lineal de estos términos básicos.&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>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Fourier3ILIA.png&amp;diff=83906</id>
		<title>Archivo:Fourier3ILIA.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Fourier3ILIA.png&amp;diff=83906"/>
				<updated>2025-02-13T07:35:36Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=83905</id>
		<title>Series de Fourier (Grupo ILIA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=83905"/>
				<updated>2025-02-13T07:34:19Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo ILIA) | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Ignacio Campos Paños, Ignacio Martínez Cerezo, Luis Ramos Ortiz, Alicia Ruiz Dominguez }}&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
&lt;br /&gt;
En una amplia gama de problemas de ingeniería y matemáticas aparecen funciones periódicas que se necesitan aproximar mediante sumas de funciones trigonométricas, lo que conduce a las '''series de Fourier'''.&lt;br /&gt;
&lt;br /&gt;
Estas series constituyen una herramienta fundamental en la resolución de ecuaciones en derivadas parciales y otros muchos ámbitos de la ciencia. La idea principal es que una función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;, definida en un espacio de Hilbert &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;, puede expresarse como una combinación infinita de funciones trigonométricas de la forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \frac{d_0}{2\pi} + \sum_{n=1}^{\infty}  d_n \frac{1}{\sqrt{\pi}} \cos(nx) + \sum_{n=1}^{\infty}c_n \frac{1}{\sqrt{\pi}} \sin(nx)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los coeficientes &amp;lt;math&amp;gt;d_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;d_n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;c_n&amp;lt;/math&amp;gt; son los '''coeficientes de Fourier''' y se definen de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_0 = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}} dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}cos(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
c_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}sen(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este método permite descomponer funciones periódicas en sus componentes fundamentales, lo que es de gran utilidad en física, ingeniería y matemáticas aplicadas. A continuación, se presentan las primeras funciones base utilizadas en la expansión en series de Fourier.&lt;br /&gt;
&lt;br /&gt;
=Base trigonométrica=&lt;br /&gt;
Para comprender mejor la construcción de las series de Fourier y poder visualizar las funciones base mencionadas, representamos gráficamente los primeros términos de la base trigonométrica &amp;lt;math&amp;gt; \mathcal{B} := \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt; en el intervalo &amp;lt;math&amp;gt; [ -1, 1 ] &amp;lt;/math&amp;gt; mediante un código en Python. Esto nos permitirá observar cómo estas funciones elementales forman una '''base ortonormal''' en el espacio &amp;lt;math&amp;gt; L^2( [-1,1]) &amp;lt;/math&amp;gt; y cómo, mediante combinaciones lineales de estas, podemos aproximar funciones arbitrarias.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:FourierILIA.jpeg|450px|thumb|right|Primeros términos de la Base 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;
&lt;br /&gt;
def base_fourier_cos(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de cosenos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.cos(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def base_fourier_sen(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de senos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.sin(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Parámetros&lt;br /&gt;
X = np.linspace(-1, 1, 1000)&lt;br /&gt;
# número de elementos de la base (1, cos(n pi x), sen(n pi x))&lt;br /&gt;
n = 10&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
colors = colors = [ &amp;quot;#0000FF&amp;quot;, &amp;quot;#0033CC&amp;quot;, &amp;quot;#0066CC&amp;quot;, &amp;quot;#0099FF&amp;quot;, &amp;quot;#33CCFF&amp;quot;,&lt;br /&gt;
    &amp;quot;#66CCCC&amp;quot;, &amp;quot;#CC9966&amp;quot;, &amp;quot;#FF6633&amp;quot;, &amp;quot;#FF3300&amp;quot;, &amp;quot;#FF0000&amp;quot;,]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Obtener funciones base&lt;br /&gt;
base = [lambda x: 1] + base_fourier_cos(n) + base_fourier_sen(n)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Graficar&lt;br /&gt;
plt.subplots(3, 1, figsize=(15, 15), dpi=300)&lt;br /&gt;
&lt;br /&gt;
#Término constante&lt;br /&gt;
plt.subplot(3, 1, 1)&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Término constante&amp;quot;)&lt;br /&gt;
plt.plot([-1, 1], [1 / 2, 1 / 2], color=colors[-1], label=&amp;quot;Término constante&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
#Términos en coseno&lt;br /&gt;
plt.subplot(3, 1, 2)&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Términos en coseno&amp;quot;)&lt;br /&gt;
for i in range(1, n + 1):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - 1], label=f&amp;quot;cos({str(i)*(i&amp;gt;1)}πx)&amp;quot;)&lt;br /&gt;
plt.legend(loc=&amp;quot;right&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
#Términos en seno&lt;br /&gt;
plt.subplot(3, 1, 3)&lt;br /&gt;
plt.grid()&lt;br /&gt;
plt.title(&amp;quot;Términos en seno&amp;quot;)&lt;br /&gt;
for i in range(n + 1, len(base)):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - n - 1], label=f&amp;quot;sen({str(i-n) * ((i-n) &amp;gt; 1)}πx)&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Al graficar estos términos, podemos apreciar cómo la combinación de estos elementos nos permite aproximar funciones periódicas arbitrarias, tal y como buscábamos.&lt;br /&gt;
La relevancia de esta base radica en su aplicación en la aproximación de funciones mediante series trigonométricas. En particular, la expansión de Fourier de una función \( f(x) \) en esta base se expresa como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \sum_{n=1}^{\infty} c_n e_n \quad \text{con} \quad c_n = \langle f, e_n \rangle&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Donde \( e_n \) es cada uno de los términos de la base &amp;lt;math&amp;gt; \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; c_n &amp;lt;/math&amp;gt; son los coeficientes que se calculan mediante el producto interno de &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; con los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como se puede observar, a medida que el parámetro &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; aumenta, los términos oscilan con un periodo cada vez menor, concretamente &amp;lt;math&amp;gt; T = \frac{2}{n} &amp;lt;/math&amp;gt;, lo que refleja una mayor &amp;quot;frecuencia&amp;quot; en las oscilaciones. Esta característica es esencial en la aproximación de funciones suaves por medio de las series de Fourier, donde las funciones periódicas se aproximan cada vez con mayor precisión mediante una combinación lineal de estos términos básicos.&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>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:FourierILIA.jpeg&amp;diff=83903</id>
		<title>Archivo:FourierILIA.jpeg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:FourierILIA.jpeg&amp;diff=83903"/>
				<updated>2025-02-13T07:30:56Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=83901</id>
		<title>Series de Fourier (Grupo ILIA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=83901"/>
				<updated>2025-02-12T22:31:00Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo ILIA) | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Ignacio Campos Paños, Ignacio Martínez Cerezo, Luis Ramos Ortiz, Alicia Ruiz Dominguez }}&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
&lt;br /&gt;
En una amplia gama de problemas de ingeniería y matemáticas aparecen funciones periódicas que se necesitan aproximar mediante sumas de funciones trigonométricas, lo que conduce a las '''series de Fourier'''.&lt;br /&gt;
&lt;br /&gt;
Estas series constituyen una herramienta fundamental en la resolución de ecuaciones en derivadas parciales y otros muchos ámbitos de la ciencia. La idea principal es que una función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;, definida en un espacio de Hilbert &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;, puede expresarse como una combinación infinita de funciones trigonométricas de la forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \frac{d_0}{2\pi} + \sum_{n=1}^{\infty}  d_n \frac{1}{\sqrt{\pi}} \cos(nx) + \sum_{n=1}^{\infty}c_n \frac{1}{\sqrt{\pi}} \sin(nx)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los coeficientes &amp;lt;math&amp;gt;d_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;d_n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;c_n&amp;lt;/math&amp;gt; son los '''coeficientes de Fourier''' y se definen de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_0 = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}} dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}cos(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
c_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}sen(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este método permite descomponer funciones periódicas en sus componentes fundamentales, lo que es de gran utilidad en física, ingeniería y matemáticas aplicadas. A continuación, se presentan las primeras funciones base utilizadas en la expansión en series de Fourier.&lt;br /&gt;
&lt;br /&gt;
=Base trigonométrica=&lt;br /&gt;
Para comprender mejor la construcción de las series de Fourier y poder visualizar las funciones base mencionadas, representamos gráficamente los primeros términos de la base trigonométrica &amp;lt;math&amp;gt; \mathcal{B} := \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt; en el intervalo &amp;lt;math&amp;gt; [ -1, 1 ] &amp;lt;/math&amp;gt; mediante un código en Python. Esto nos permitirá observar cómo estas funciones elementales forman una '''base ortonormal''' en el espacio &amp;lt;math&amp;gt; L^2( [-1,1]) &amp;lt;/math&amp;gt; y cómo, mediante combinaciones lineales de estas, podemos aproximar funciones arbitrarias.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GraficasILIA.jpeg|450px|thumb|right|Primeros términos de la Base 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;
from matplotlib import pyplot as plt, colors as mcolors&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def base_fourier_cos(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de cosenos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.cos(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def base_fourier_sen(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de senos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.sin(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Parámetros&lt;br /&gt;
X = np.linspace(-1, 1, 400)&lt;br /&gt;
# número de elementos de la base (1, cos(n pi x), sen(n pi x))&lt;br /&gt;
n = 10&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
c1 = &amp;quot;blue&amp;quot;&lt;br /&gt;
c2 = &amp;quot;red&amp;quot;&lt;br /&gt;
&lt;br /&gt;
def colorgradient(&lt;br /&gt;
    c1: &amp;quot;str | tuple[int, int, int]&amp;quot;, c2: &amp;quot;str | tuple[int, int, int]&amp;quot;, n=256&lt;br /&gt;
) -&amp;gt; list[int]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Given two hex colors, returns a color gradient&lt;br /&gt;
    with n colors.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
colors = colors = [ &amp;quot;#0000FF&amp;quot;, &amp;quot;#0033CC&amp;quot;, &amp;quot;#0066CC&amp;quot;, &amp;quot;#0099FF&amp;quot;, &amp;quot;#33CCFF&amp;quot;, &amp;quot;#66CCCC&amp;quot;, &amp;quot;#CC9966&amp;quot;, &lt;br /&gt;
                   &amp;quot;#FF6633&amp;quot;, &amp;quot;#FF3300&amp;quot;,&amp;quot;#FF0000&amp;quot;,]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Obtener funciones base&lt;br /&gt;
base = [lambda x: 1] + base_fourier_cos(n) + base_fourier_sen(n)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Graficar&lt;br /&gt;
plt.subplots(1, figsize = (15, 15), dpi = 300)&lt;br /&gt;
&lt;br /&gt;
# Término constante&lt;br /&gt;
plt.subplot(3,1,1)&lt;br /&gt;
plt.plot([-1,1], [1/2, 1/2], color = colors[-1], label = &amp;quot;Término constante&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Término constante&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Términos en coseno&lt;br /&gt;
plt.subplot(3, 1,2)&lt;br /&gt;
for i in range(1, n + 1):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - 1], label = f&amp;quot;cos({i}πx)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Términos en coseno&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
&lt;br /&gt;
# Términos en seno&lt;br /&gt;
plt.subplot(3, 1, 3)&lt;br /&gt;
for i in range(n + 1, len(base)):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - n - 1], label = &amp;quot;sen({i-n}πx)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Términos en seno&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Al graficar estos términos, podemos apreciar cómo la combinación de estos elementos nos permite aproximar funciones periódicas arbitrarias, tal y como buscábamos.&lt;br /&gt;
La relevancia de esta base radica en su aplicación en la aproximación de funciones mediante series trigonométricas. En particular, la expansión de Fourier de una función \( f(x) \) en esta base se expresa como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \sum_{n=1}^{\infty} c_n e_n \quad \text{con} \quad c_n = \langle f, e_n \rangle&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Donde \( e_n \) es cada uno de los términos de la base &amp;lt;math&amp;gt; \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; c_n &amp;lt;/math&amp;gt; son los coeficientes que se calculan mediante el producto interno de &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; con los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como se puede observar, a medida que el parámetro &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; aumenta, los términos oscilan con un periodo cada vez menor, concretamente &amp;lt;math&amp;gt; T = \frac{2}{n} &amp;lt;/math&amp;gt;, lo que refleja una mayor &amp;quot;frecuencia&amp;quot; en las oscilaciones. Esta característica es esencial en la aproximación de funciones suaves por medio de las series de Fourier, donde las funciones periódicas se aproximan cada vez con mayor precisión mediante una combinación lineal de estos términos básicos.&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>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=83900</id>
		<title>Series de Fourier (Grupo ILIA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=83900"/>
				<updated>2025-02-12T22:28:38Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo ILIA) | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Ignacio Campos Paños, Ignacio Martínez Cerezo, Luis Ramos Ortiz, Alicia Ruiz Dominguez }}&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
&lt;br /&gt;
En una amplia gama de problemas de ingeniería y matemáticas aparecen funciones periódicas que se necesitan aproximar mediante sumas de funciones trigonométricas, lo que conduce a las '''series de Fourier'''.&lt;br /&gt;
&lt;br /&gt;
Estas series constituyen una herramienta fundamental en la resolución de ecuaciones en derivadas parciales y otros muchos ámbitos de la ciencia. La idea principal es que una función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;, definida en un espacio de Hilbert &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;, puede expresarse como una combinación infinita de funciones trigonométricas de la forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \frac{d_0}{2\pi} + \sum_{n=1}^{\infty}  d_n \frac{1}{\sqrt{\pi}} \cos(nx) + \sum_{n=1}^{\infty}c_n \frac{1}{\sqrt{\pi}} \sin(nx)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los coeficientes &amp;lt;math&amp;gt;d_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;d_n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;c_n&amp;lt;/math&amp;gt; son los '''coeficientes de Fourier''' y se definen de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_0 = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}} dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}cos(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
c_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}sen(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este método permite descomponer funciones periódicas en sus componentes fundamentales, lo que es de gran utilidad en física, ingeniería y matemáticas aplicadas. A continuación, se presentan las primeras funciones base utilizadas en la expansión en series de Fourier.&lt;br /&gt;
&lt;br /&gt;
=Base trigonométrica=&lt;br /&gt;
Para comprender mejor la construcción de las series de Fourier y poder visualizar las funciones base mencionadas, representamos gráficamente los primeros términos de la base trigonométrica &amp;lt;math&amp;gt; \mathcal{B} := \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt; en el intervalo &amp;lt;math&amp;gt; [ -1, 1 ] &amp;lt;/math&amp;gt; mediante un código en Python. Esto nos permitirá observar cómo estas funciones elementales forman una '''base ortonormal''' en el espacio &amp;lt;math&amp;gt; L^2( [-1,1]) &amp;lt;/math&amp;gt; y cómo, mediante combinaciones lineales de estas, podemos aproximar funciones arbitrarias.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GraficasILIA.jpeg|450px|thumb|right|Primeros términos de la Base 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;
from matplotlib import pyplot as plt, colors as mcolors&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def base_fourier_cos(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de cosenos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.cos(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def base_fourier_sen(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de senos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.sin(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Parámetros&lt;br /&gt;
X = np.linspace(-1, 1, 400)&lt;br /&gt;
# número de elementos de la base (1, cos(n pi x), sen(n pi x))&lt;br /&gt;
n = 10&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
c1 = &amp;quot;blue&amp;quot;&lt;br /&gt;
c2 = &amp;quot;red&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def colorgradient(&lt;br /&gt;
    c1: &amp;quot;str | tuple[int, int, int]&amp;quot;, c2: &amp;quot;str | tuple[int, int, int]&amp;quot;, n=256&lt;br /&gt;
) -&amp;gt; list[int]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Given two hex colors, returns a color gradient&lt;br /&gt;
    with n colors.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
colors = colors = [ &amp;quot;#0000FF&amp;quot;, &amp;quot;#0033CC&amp;quot;, &amp;quot;#0066CC&amp;quot;, &amp;quot;#0099FF&amp;quot;, &amp;quot;#33CCFF&amp;quot;, &amp;quot;#66CCCC&amp;quot;, &amp;quot;#CC9966&amp;quot;, &lt;br /&gt;
                   &amp;quot;#FF6633&amp;quot;, &amp;quot;#FF3300&amp;quot;,&amp;quot;#FF0000&amp;quot;,]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Obtener funciones base&lt;br /&gt;
&lt;br /&gt;
base = [lambda x: 1] + base_fourier_cos(n) + base_fourier_sen(n)&lt;br /&gt;
&lt;br /&gt;
# Graficar&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
plt.subplots(1, figsize = (15, 15), dpi = 300)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
plt.subplot(3,1,1)&lt;br /&gt;
&lt;br /&gt;
plt.plot([-1,1], [1/2, 1/2], color = colors[-1], label = &amp;quot;Término constante&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Término constante&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
plt.subplot(3, 1,2)&lt;br /&gt;
for i in range(1, n + 1):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - 1], label = f&amp;quot;cos({i}πx)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Términos en coseno&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
plt.subplot(3, 1, 3)&lt;br /&gt;
&lt;br /&gt;
for i in range(n + 1, len(base)):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - n - 1], label = &amp;quot;sen({i-n}πx)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Términos en seno&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Al graficar estos términos, podemos apreciar cómo la combinación de estos elementos nos permite aproximar funciones periódicas arbitrarias, tal y como buscábamos.&lt;br /&gt;
La relevancia de esta base radica en su aplicación en la aproximación de funciones mediante series trigonométricas. En particular, la expansión de Fourier de una función \( f(x) \) en esta base se expresa como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \sum_{n=1}^{\infty} c_n e_n \quad \text{con} \quad c_n = \langle f, e_n \rangle&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Donde \( e_n \) es cada uno de los términos de la base &amp;lt;math&amp;gt; \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; c_n &amp;lt;/math&amp;gt; son los coeficientes que se calculan mediante el producto interno de &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; con los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como se puede observar, a medida que el parámetro &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; aumenta, los términos oscilan con un periodo cada vez menor, concretamente &amp;lt;math&amp;gt; T = \frac{2}{n} &amp;lt;/math&amp;gt;, lo que refleja una mayor &amp;quot;frecuencia&amp;quot; en las oscilaciones. Esta característica es esencial en la aproximación de funciones suaves por medio de las series de Fourier, donde las funciones periódicas se aproximan cada vez con mayor precisión mediante una combinación lineal de estos términos básicos.&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>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=83899</id>
		<title>Series de Fourier (Grupo ILIA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=83899"/>
				<updated>2025-02-12T22:27:18Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo ILIA) | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Ignacio Campos Paños, Ignacio Martínez Cerezo, Luis Ramos Ortiz, Alicia Ruiz Dominguez }}&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
&lt;br /&gt;
En una amplia gama de problemas de ingeniería y matemáticas aparecen funciones periódicas que se necesitan aproximar mediante sumas de funciones trigonométricas, lo que conduce a las '''series de Fourier'''.&lt;br /&gt;
&lt;br /&gt;
Estas series constituyen una herramienta fundamental en la resolución de ecuaciones en derivadas parciales y otros muchos ámbitos de la ciencia. La idea principal es que una función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;, definida en un espacio de Hilbert &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;, puede expresarse como una combinación infinita de funciones trigonométricas de la forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \frac{d_0}{2\pi} + \sum_{n=1}^{\infty}  d_n \frac{1}{\sqrt{\pi}} \cos(nx) + \sum_{n=1}^{\infty}c_n \frac{1}{\sqrt{\pi}} \sin(nx)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los coeficientes &amp;lt;math&amp;gt;d_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;d_n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;c_n&amp;lt;/math&amp;gt; son los '''coeficientes de Fourier''' y se definen de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_0 = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}} dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}cos(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
c_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}sen(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este método permite descomponer funciones periódicas en sus componentes fundamentales, lo que es de gran utilidad en física, ingeniería y matemáticas aplicadas. A continuación, se presentan las primeras funciones base utilizadas en la expansión en series de Fourier.&lt;br /&gt;
&lt;br /&gt;
=Base trigonométrica=&lt;br /&gt;
Para comprender mejor la construcción de las series de Fourier y poder visualizar las funciones base mencionadas, representamos gráficamente los primeros términos de la base trigonométrica &amp;lt;math&amp;gt; \mathcal{B} := \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt; en el intervalo &amp;lt;math&amp;gt; [ -1, 1 ] &amp;lt;/math&amp;gt; mediante un código en Python. Esto nos permitirá observar cómo estas funciones elementales forman una '''base ortonormal''' en el espacio &amp;lt;math&amp;gt; L^2( [-1,1]) &amp;lt;/math&amp;gt; y cómo, mediante combinaciones lineales de estas, podemos aproximar funciones arbitrarias.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GraficasILIA.jpeg|450px|thumb|right|Primeros términos de la Base 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;
from matplotlib import pyplot as plt, colors as mcolors&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def base_fourier_cos(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de cosenos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.cos(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def base_fourier_sen(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de senos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.sin(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Parámetros&lt;br /&gt;
X = np.linspace(-1, 1, 400)&lt;br /&gt;
# número de elementos de la base (1, cos(n pi x), sen(n pi x))&lt;br /&gt;
n = 10&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
c1 = &amp;quot;blue&amp;quot;&lt;br /&gt;
c2 = &amp;quot;red&amp;quot;&lt;br /&gt;
&lt;br /&gt;
def colorgradient(&lt;br /&gt;
    c1: &amp;quot;str | tuple[int, int, int]&amp;quot;, c2: &amp;quot;str | tuple[int, int, int]&amp;quot;, n=256&lt;br /&gt;
) -&amp;gt; list[int]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Given two hex colors, returns a color gradient&lt;br /&gt;
    with n colors.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
colors = colors = [&lt;br /&gt;
    &amp;quot;#0000FF&amp;quot;,&lt;br /&gt;
    &amp;quot;#0033CC&amp;quot;,&lt;br /&gt;
    &amp;quot;#0066CC&amp;quot;,&lt;br /&gt;
    &amp;quot;#0099FF&amp;quot;,&lt;br /&gt;
    &amp;quot;#33CCFF&amp;quot;,&lt;br /&gt;
    &amp;quot;#66CCCC&amp;quot;,&lt;br /&gt;
    &amp;quot;#CC9966&amp;quot;,&lt;br /&gt;
    &amp;quot;#FF6633&amp;quot;,&lt;br /&gt;
    &amp;quot;#FF3300&amp;quot;,&lt;br /&gt;
    &amp;quot;#FF0000&amp;quot;,&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Obtener funciones base&lt;br /&gt;
base = [lambda x: 1] + base_fourier_cos(n) + base_fourier_sen(n)&lt;br /&gt;
&lt;br /&gt;
# Graficar&lt;br /&gt;
&lt;br /&gt;
plt.subplots(1, figsize = (15, 15), dpi = 300)&lt;br /&gt;
&lt;br /&gt;
# Término constante&lt;br /&gt;
plt.subplot(3,1,1)&lt;br /&gt;
plt.plot([-1,1], [1/2, 1/2], color = colors[-1], label = &amp;quot;Término constante&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Término constante&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Términos en coseno&lt;br /&gt;
plt.subplot(3, 1,2)&lt;br /&gt;
for i in range(1, n + 1):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - 1], label = f&amp;quot;cos({i}πx)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Términos en coseno&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
&lt;br /&gt;
# Términos en seno&lt;br /&gt;
plt.subplot(3, 1, 3)&lt;br /&gt;
for i in range(n + 1, len(base)):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - n - 1], label = &amp;quot;sen({i-n}πx)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Términos en seno&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Al graficar estos términos, podemos apreciar cómo la combinación de estos elementos nos permite aproximar funciones periódicas arbitrarias, tal y como buscábamos.&lt;br /&gt;
La relevancia de esta base radica en su aplicación en la aproximación de funciones mediante series trigonométricas. En particular, la expansión de Fourier de una función \( f(x) \) en esta base se expresa como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \sum_{n=1}^{\infty} c_n e_n \quad \text{con} \quad c_n = \langle f, e_n \rangle&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Donde \( e_n \) es cada uno de los términos de la base &amp;lt;math&amp;gt; \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; c_n &amp;lt;/math&amp;gt; son los coeficientes que se calculan mediante el producto interno de &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; con los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como se puede observar, a medida que el parámetro &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; aumenta, los términos oscilan con un periodo cada vez menor, concretamente &amp;lt;math&amp;gt; T = \frac{2}{n} &amp;lt;/math&amp;gt;, lo que refleja una mayor &amp;quot;frecuencia&amp;quot; en las oscilaciones. Esta característica es esencial en la aproximación de funciones suaves por medio de las series de Fourier, donde las funciones periódicas se aproximan cada vez con mayor precisión mediante una combinación lineal de estos términos básicos.&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>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=83898</id>
		<title>Series de Fourier (Grupo ILIA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=83898"/>
				<updated>2025-02-12T22:26:35Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo ILIA) | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Ignacio Campos Paños, Ignacio Martínez Cerezo, Luis Ramos Ortiz, Alicia Ruiz Dominguez }}&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
&lt;br /&gt;
En una amplia gama de problemas de ingeniería y matemáticas aparecen funciones periódicas que se necesitan aproximar mediante sumas de funciones trigonométricas, lo que conduce a las '''series de Fourier'''.&lt;br /&gt;
&lt;br /&gt;
Estas series constituyen una herramienta fundamental en la resolución de ecuaciones en derivadas parciales y otros muchos ámbitos de la ciencia. La idea principal es que una función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;, definida en un espacio de Hilbert &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;, puede expresarse como una combinación infinita de funciones trigonométricas de la forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \frac{d_0}{2\pi} + \sum_{n=1}^{\infty}  d_n \frac{1}{\sqrt{\pi}} \cos(nx) + \sum_{n=1}^{\infty}c_n \frac{1}{\sqrt{\pi}} \sin(nx)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los coeficientes &amp;lt;math&amp;gt;d_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;d_n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;c_n&amp;lt;/math&amp;gt; son los '''coeficientes de Fourier''' y se definen de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_0 = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}} dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}cos(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
c_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}sen(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este método permite descomponer funciones periódicas en sus componentes fundamentales, lo que es de gran utilidad en física, ingeniería y matemáticas aplicadas. A continuación, se presentan las primeras funciones base utilizadas en la expansión en series de Fourier.&lt;br /&gt;
&lt;br /&gt;
=Base trigonométrica=&lt;br /&gt;
Para comprender mejor la construcción de las series de Fourier y poder visualizar las funciones base mencionadas, representamos gráficamente los primeros términos de la base trigonométrica &amp;lt;math&amp;gt; \mathcal{B} := \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt; en el intervalo &amp;lt;math&amp;gt; [ -1, 1 ] &amp;lt;/math&amp;gt; mediante un código en Python. Esto nos permitirá observar cómo estas funciones elementales forman una base ortonormal en el espacio &amp;lt;math&amp;gt; L^2( [-1,1]) &amp;lt;/math&amp;gt; y cómo, mediante combinaciones lineales de estas, podemos aproximar funciones arbitrarias.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GraficasILIA.jpeg|450px|thumb|right|Primeros términos de la Base 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;
from matplotlib import pyplot as plt, colors as mcolors&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def base_fourier_cos(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de cosenos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.cos(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def base_fourier_sen(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de senos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.sin(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Parámetros&lt;br /&gt;
X = np.linspace(-1, 1, 400)&lt;br /&gt;
# número de elementos de la base (1, cos(n pi x), sen(n pi x))&lt;br /&gt;
n = 10&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
c1 = &amp;quot;blue&amp;quot;&lt;br /&gt;
c2 = &amp;quot;red&amp;quot;&lt;br /&gt;
&lt;br /&gt;
def colorgradient(&lt;br /&gt;
    c1: &amp;quot;str | tuple[int, int, int]&amp;quot;, c2: &amp;quot;str | tuple[int, int, int]&amp;quot;, n=256&lt;br /&gt;
) -&amp;gt; list[int]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Given two hex colors, returns a color gradient&lt;br /&gt;
    with n colors.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
colors = colors = [&lt;br /&gt;
    &amp;quot;#0000FF&amp;quot;,&lt;br /&gt;
    &amp;quot;#0033CC&amp;quot;,&lt;br /&gt;
    &amp;quot;#0066CC&amp;quot;,&lt;br /&gt;
    &amp;quot;#0099FF&amp;quot;,&lt;br /&gt;
    &amp;quot;#33CCFF&amp;quot;,&lt;br /&gt;
    &amp;quot;#66CCCC&amp;quot;,&lt;br /&gt;
    &amp;quot;#CC9966&amp;quot;,&lt;br /&gt;
    &amp;quot;#FF6633&amp;quot;,&lt;br /&gt;
    &amp;quot;#FF3300&amp;quot;,&lt;br /&gt;
    &amp;quot;#FF0000&amp;quot;,&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Obtener funciones base&lt;br /&gt;
base = [lambda x: 1] + base_fourier_cos(n) + base_fourier_sen(n)&lt;br /&gt;
&lt;br /&gt;
# Graficar&lt;br /&gt;
&lt;br /&gt;
plt.subplots(1, figsize = (15, 15), dpi = 300)&lt;br /&gt;
&lt;br /&gt;
# Término constante&lt;br /&gt;
plt.subplot(3,1,1)&lt;br /&gt;
plt.plot([-1,1], [1/2, 1/2], color = colors[-1], label = &amp;quot;Término constante&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Término constante&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Términos en coseno&lt;br /&gt;
plt.subplot(3, 1,2)&lt;br /&gt;
for i in range(1, n + 1):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - 1], label = f&amp;quot;cos({i}πx)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Términos en coseno&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
&lt;br /&gt;
# Términos en seno&lt;br /&gt;
plt.subplot(3, 1, 3)&lt;br /&gt;
for i in range(n + 1, len(base)):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - n - 1], label = &amp;quot;sen({i-n}πx)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Términos en seno&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Al graficar estos términos, podemos apreciar cómo la combinación de estos elementos nos permite aproximar funciones periódicas arbitrarias, tal y como buscábamos.&lt;br /&gt;
La relevancia de esta base radica en su aplicación en la aproximación de funciones mediante series trigonométricas. En particular, la expansión de Fourier de una función \( f(x) \) en esta base se expresa como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \sum_{n=1}^{\infty} c_n e_n \quad \text{con} \quad c_n = \langle f, e_n \rangle&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Donde \( e_n \) es cada uno de los términos de la base &amp;lt;math&amp;gt; \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; c_n &amp;lt;/math&amp;gt; son los coeficientes que se calculan mediante el producto interno de &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; con los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como se puede observar, a medida que el parámetro &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; aumenta, los términos oscilan con un periodo cada vez menor, concretamente &amp;lt;math&amp;gt; T = \frac{2}{n} &amp;lt;/math&amp;gt;, lo que refleja una mayor &amp;quot;frecuencia&amp;quot; en las oscilaciones. Esta característica es esencial en la aproximación de funciones suaves por medio de las series de Fourier, donde las funciones periódicas se aproximan cada vez con mayor precisión mediante una combinación lineal de estos términos básicos.&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>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=83892</id>
		<title>Series de Fourier (Grupo ILIA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=83892"/>
				<updated>2025-02-12T22:14:54Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo ILIA) | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Ignacio Campos Paños, Ignacio Martínez Cerezo, Luis Ramos Ortiz, Alicia Ruiz Dominguez }}&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
&lt;br /&gt;
En una amplia gama de problemas de ingeniería y matemáticas aparecen funciones periódicas que se necesitan aproximar mediante sumas de funciones trigonométricas, lo que conduce a las '''series de Fourier'''.&lt;br /&gt;
&lt;br /&gt;
Estas series constituyen una herramienta fundamental en la resolución de ecuaciones en derivadas parciales y otros muchos ámbitos de la ciencia. La idea principal es que una función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;, definida en un espacio de Hilbert &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;, puede expresarse como una combinación infinita de funciones trigonométricas de la forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \frac{d_0}{2\pi} + \sum_{n=1}^{\infty}  d_n \frac{1}{\sqrt{\pi}} \cos(nx) + \sum_{n=1}^{\infty}c_n \frac{1}{\sqrt{\pi}} \sin(nx)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los coeficientes &amp;lt;math&amp;gt;d_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;d_n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;c_n&amp;lt;/math&amp;gt; son los '''coeficientes de Fourier''' y se definen de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_0 = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}} dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}cos(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
c_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}sen(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este método permite descomponer funciones periódicas en sus componentes fundamentales, lo que es de gran utilidad en física, ingeniería y matemáticas aplicadas. A continuación, se presentan las primeras funciones base utilizadas en la expansión en series de Fourier.&lt;br /&gt;
&lt;br /&gt;
=Base trigonométrica=&lt;br /&gt;
Para comprender mejor la construcción de las series de Fourier y poder visualizar las funciones base mencionadas, representamos gráficamente los primeros términos de la base trigonométrica &amp;lt;math&amp;gt; \mathcal{B} := \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt; en el intervalo &amp;lt;math&amp;gt; [ -1, 1 ] &amp;lt;/math&amp;gt; mediante un código en Python. Esto nos permitirá observar cómo estas funciones elementales forman una base ortonormal en el espacio &amp;lt;math&amp;gt; L^2( [-1,1]) &amp;lt;/math&amp;gt; y cómo, mediante combinaciones lineales de estas, podemos aproximar funciones arbitrarias.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GraficasILIA.jpeg|450px|thumb|right|Primeros términos de la Base 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;
from matplotlib import pyplot as plt, colors as mcolors&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def base_fourier_cos(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de cosenos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.cos(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def base_fourier_sen(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de senos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.sin(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Parámetros&lt;br /&gt;
X = np.linspace(-1, 1, 400)&lt;br /&gt;
# número de elementos de la base (1, cos(n pi x), sen(n pi x))&lt;br /&gt;
n = 10&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
c1 = &amp;quot;blue&amp;quot;&lt;br /&gt;
c2 = &amp;quot;red&amp;quot;&lt;br /&gt;
&lt;br /&gt;
def colorgradient(&lt;br /&gt;
    c1: &amp;quot;str | tuple[int, int, int]&amp;quot;, c2: &amp;quot;str | tuple[int, int, int]&amp;quot;, n=256&lt;br /&gt;
) -&amp;gt; list[int]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Given two hex colors, returns a color gradient&lt;br /&gt;
    with n colors.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
colors = colors = [&lt;br /&gt;
    &amp;quot;#0000FF&amp;quot;,&lt;br /&gt;
    &amp;quot;#0033CC&amp;quot;,&lt;br /&gt;
    &amp;quot;#0066CC&amp;quot;,&lt;br /&gt;
    &amp;quot;#0099FF&amp;quot;,&lt;br /&gt;
    &amp;quot;#33CCFF&amp;quot;,&lt;br /&gt;
    &amp;quot;#66CCCC&amp;quot;,&lt;br /&gt;
    &amp;quot;#CC9966&amp;quot;,&lt;br /&gt;
    &amp;quot;#FF6633&amp;quot;,&lt;br /&gt;
    &amp;quot;#FF3300&amp;quot;,&lt;br /&gt;
    &amp;quot;#FF0000&amp;quot;,&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Obtener funciones base&lt;br /&gt;
base = [lambda x: 1] + base_fourier_cos(n) + base_fourier_sen(n)&lt;br /&gt;
&lt;br /&gt;
# Graficar&lt;br /&gt;
&lt;br /&gt;
plt.subplots(1, figsize = (15, 15), dpi = 300)&lt;br /&gt;
&lt;br /&gt;
# Término constante&lt;br /&gt;
plt.subplot(3,1,1)&lt;br /&gt;
plt.plot([-1,1], [1/2, 1/2], color = colors[-1], label = &amp;quot;Término constante&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Término constante&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Términos en coseno&lt;br /&gt;
plt.subplot(3, 1,2)&lt;br /&gt;
for i in range(1, n + 1):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - 1], label = f&amp;quot;cos({i}πx)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Términos en coseno&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
&lt;br /&gt;
# Términos en seno&lt;br /&gt;
plt.subplot(3, 1, 3)&lt;br /&gt;
for i in range(n + 1, len(base)):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - n - 1], label = &amp;quot;sen({i-n}πx)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Términos en seno&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La relevancia de esta base radica en su aplicación en la aproximación de funciones mediante series trigonométricas. En particular, la expansión de Fourier de una función \( f(x) \) en esta base se expresa como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \sum_{n=1}^{\infty} c_n e_n \quad \text{con} \quad c_n = \langle f, e_n \rangle&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Donde \( e_n \) es cada uno de los términos de la base &amp;lt;math&amp;gt; \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) &amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; c_n &amp;lt;/math&amp;gt; son los coeficientes que se calculan mediante el producto interno de &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt; con los elementos de la base.&lt;br /&gt;
&lt;br /&gt;
Como se puede observar, a medida que el parámetro &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt; aumenta, los términos oscilan con un periodo cada vez menor, concretamente &amp;lt;math&amp;gt; \frac{2}{n} &amp;lt;/math&amp;gt;, lo que refleja una mayor &amp;quot;frecuencia&amp;quot; en las oscilaciones. Esta característica es esencial en la aproximación de funciones suaves por medio de las series de Fourier, donde las funciones periódicas se aproximan cada vez con mayor precisión mediante una combinación lineal de estos términos básicos.&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>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=83889</id>
		<title>Series de Fourier (Grupo ILIA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=83889"/>
				<updated>2025-02-12T22:04:53Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo ILIA) | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Ignacio Campos Paños, Ignacio Martínez Cerezo, Luis Ramos Ortiz, Alicia Ruiz Dominguez }}&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
&lt;br /&gt;
En una amplia gama de problemas de ingeniería y matemáticas aparecen funciones periódicas que se necesitan aproximar mediante sumas de funciones trigonométricas, lo que conduce a las '''series de Fourier'''.&lt;br /&gt;
&lt;br /&gt;
Estas series constituyen una herramienta fundamental en la resolución de ecuaciones en derivadas parciales y otros muchos ámbitos de la ciencia. La idea principal es que una función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;, definida en un espacio de Hilbert &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;, puede expresarse como una combinación infinita de funciones trigonométricas de la forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \frac{d_0}{2\pi} + \sum_{n=1}^{\infty}  d_n \frac{1}{\sqrt{\pi}} \cos(nx) + \sum_{n=1}^{\infty}c_n \frac{1}{\sqrt{\pi}} \sin(nx)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los coeficientes &amp;lt;math&amp;gt;d_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;d_n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;c_n&amp;lt;/math&amp;gt; son los '''coeficientes de Fourier''' y se definen de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_0 = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}} dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}cos(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
c_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}sen(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este método permite descomponer funciones periódicas en sus componentes fundamentales, lo que es de gran utilidad en física, ingeniería y matemáticas aplicadas. A continuación, se presentan las primeras funciones base utilizadas en la expansión en series de Fourier.&lt;br /&gt;
&lt;br /&gt;
=Base trigonométrica=&lt;br /&gt;
Para comprender mejor la construcción de las series de Fourier y poder visualizar las funciones base mencionadas, representamos gráficamente los primeros términos de la base trigonométrica &amp;lt;math&amp;gt; \mathcal{B} := \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt; en el intervalo &amp;lt;math&amp;gt; [ -1, 1 ] &amp;lt;/math&amp;gt; mediante un código en Python. Esto nos permitirá observar cómo estas funciones elementales forman una base ortonormal en el espacio &amp;lt;math&amp;gt; L^2( [-1,1]) &amp;lt;/math&amp;gt; y cómo, mediante combinaciones lineales de estas, podemos aproximar funciones arbitrarias.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GraficasILIA.jpeg|450px|thumb|right|Primeros términos de la Base 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;
from matplotlib import pyplot as plt, colors as mcolors&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def base_fourier_cos(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de cosenos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.cos(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def base_fourier_sen(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de senos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.sin(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Parámetros&lt;br /&gt;
X = np.linspace(-1, 1, 400)&lt;br /&gt;
# número de elementos de la base (1, cos(n pi x), sen(n pi x))&lt;br /&gt;
n = 10&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
c1 = &amp;quot;blue&amp;quot;&lt;br /&gt;
c2 = &amp;quot;red&amp;quot;&lt;br /&gt;
&lt;br /&gt;
def colorgradient(&lt;br /&gt;
    c1: &amp;quot;str | tuple[int, int, int]&amp;quot;, c2: &amp;quot;str | tuple[int, int, int]&amp;quot;, n=256&lt;br /&gt;
) -&amp;gt; list[int]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Given two hex colors, returns a color gradient&lt;br /&gt;
    with n colors.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
colors = colors = [&lt;br /&gt;
    &amp;quot;#0000FF&amp;quot;,&lt;br /&gt;
    &amp;quot;#0033CC&amp;quot;,&lt;br /&gt;
    &amp;quot;#0066CC&amp;quot;,&lt;br /&gt;
    &amp;quot;#0099FF&amp;quot;,&lt;br /&gt;
    &amp;quot;#33CCFF&amp;quot;,&lt;br /&gt;
    &amp;quot;#66CCCC&amp;quot;,&lt;br /&gt;
    &amp;quot;#CC9966&amp;quot;,&lt;br /&gt;
    &amp;quot;#FF6633&amp;quot;,&lt;br /&gt;
    &amp;quot;#FF3300&amp;quot;,&lt;br /&gt;
    &amp;quot;#FF0000&amp;quot;,&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Obtener funciones base&lt;br /&gt;
base = [lambda x: 1] + base_fourier_cos(n) + base_fourier_sen(n)&lt;br /&gt;
&lt;br /&gt;
# Graficar&lt;br /&gt;
&lt;br /&gt;
plt.subplots(1, figsize = (15, 15), dpi = 300)&lt;br /&gt;
&lt;br /&gt;
# Término constante&lt;br /&gt;
plt.subplot(3,1,1)&lt;br /&gt;
plt.plot([-1,1], [1/2, 1/2], color = colors[-1], label = &amp;quot;Término constante&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Término constante&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Términos en coseno&lt;br /&gt;
plt.subplot(3, 1,2)&lt;br /&gt;
for i in range(1, n + 1):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - 1], label = f&amp;quot;cos({i}πx)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Términos en coseno&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
&lt;br /&gt;
# Términos en seno&lt;br /&gt;
plt.subplot(3, 1, 3)&lt;br /&gt;
for i in range(n + 1, len(base)):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - n - 1], label = &amp;quot;sen({i-n}πx)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Términos en seno&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
La relevancia de estas bases radica en su aplicación en la aproximación de funciones mediante series trigonométricas. Por ejemplo, sobre la base proporcionada, la aproximación de Fourier responderá a &lt;br /&gt;
:&amp;lt;math&amp;gt;f(t) \approx \sum_{n=1}^{\infty}c_n e_n \quad \text{con} \quad c_n=\langle f, e_n \rangle&amp;lt;/math&amp;gt;&lt;br /&gt;
Como observamos, a medida que aumenta el valor del parámetro &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt;, el periodo de oscilación de las funciones es menor, concretamente &amp;lt;math&amp;gt; \frac{2}{n} &amp;lt;/math&amp;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>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=83886</id>
		<title>Series de Fourier (Grupo ILIA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=83886"/>
				<updated>2025-02-12T22:00:50Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo ILIA) | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Ignacio Campos Paños, Ignacio Martínez Cerezo, Luis Ramos Ortiz, Alicia Ruiz Dominguez }}&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
&lt;br /&gt;
En una amplia gama de problemas de ingeniería y matemáticas aparecen funciones periódicas que se necesitan aproximar mediante sumas de funciones trigonométricas, lo que conduce a las '''series de Fourier'''.&lt;br /&gt;
&lt;br /&gt;
Estas series constituyen una herramienta fundamental en la resolución de ecuaciones en derivadas parciales y otros muchos ámbitos de la ciencia. La idea principal es que una función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;, definida en un espacio de Hilbert &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;, puede expresarse como una combinación infinita de funciones trigonométricas de la forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \frac{d_0}{2\pi} + \sum_{n=1}^{\infty}  d_n \frac{1}{\sqrt{\pi}} \cos(nx) + \sum_{n=1}^{\infty}c_n \frac{1}{\sqrt{\pi}} \sin(nx)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los coeficientes &amp;lt;math&amp;gt;d_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;d_n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;c_n&amp;lt;/math&amp;gt; son los '''coeficientes de Fourier''' y se definen de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_0 = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}} dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}cos(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
c_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}sen(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este método permite descomponer funciones periódicas en sus componentes fundamentales, lo que es de gran utilidad en física, ingeniería y matemáticas aplicadas. A continuación, se presentan las primeras funciones base utilizadas en la expansión en series de Fourier.&lt;br /&gt;
&lt;br /&gt;
=Base trigonométrica=&lt;br /&gt;
Para comprender mejor la construcción de las series de Fourier y poder visualizar las funciones base mencionadas, representamos gráficamente los primeros términos de la base trigonométrica &amp;lt;math&amp;gt; \mathcal{B} := \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt; en el intervalo &amp;lt;math&amp;gt; [ -1, 1 ] &amp;lt;/math&amp;gt; mediante un código en Python. Esto nos permitirá observar cómo estas funciones elementales forman una base ortonormal en el espacio &amp;lt;math&amp;gt; L^2( [-1,1]) &amp;lt;/math&amp;gt; y cómo, mediante combinaciones lineales de estas, podemos aproximar funciones arbitrarias.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:graficasILIA.png|450px|thumb|right|Primeros términos de la Base 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;
from matplotlib import pyplot as plt, colors as mcolors&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def base_fourier_cos(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de cosenos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.cos(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def base_fourier_sen(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de senos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.sin(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Parámetros&lt;br /&gt;
X = np.linspace(-1, 1, 400)&lt;br /&gt;
# número de elementos de la base (1, cos(n pi x), sen(n pi x))&lt;br /&gt;
n = 10&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
c1 = &amp;quot;blue&amp;quot;&lt;br /&gt;
c2 = &amp;quot;red&amp;quot;&lt;br /&gt;
&lt;br /&gt;
def colorgradient(&lt;br /&gt;
    c1: &amp;quot;str | tuple[int, int, int]&amp;quot;, c2: &amp;quot;str | tuple[int, int, int]&amp;quot;, n=256&lt;br /&gt;
) -&amp;gt; list[int]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Given two hex colors, returns a color gradient&lt;br /&gt;
    with n colors.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
colors = colors = [&lt;br /&gt;
    &amp;quot;#0000FF&amp;quot;,&lt;br /&gt;
    &amp;quot;#0033CC&amp;quot;,&lt;br /&gt;
    &amp;quot;#0066CC&amp;quot;,&lt;br /&gt;
    &amp;quot;#0099FF&amp;quot;,&lt;br /&gt;
    &amp;quot;#33CCFF&amp;quot;,&lt;br /&gt;
    &amp;quot;#66CCCC&amp;quot;,&lt;br /&gt;
    &amp;quot;#CC9966&amp;quot;,&lt;br /&gt;
    &amp;quot;#FF6633&amp;quot;,&lt;br /&gt;
    &amp;quot;#FF3300&amp;quot;,&lt;br /&gt;
    &amp;quot;#FF0000&amp;quot;,&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Obtener funciones base&lt;br /&gt;
base = [lambda x: 1] + base_fourier_cos(n) + base_fourier_sen(n)&lt;br /&gt;
&lt;br /&gt;
# Graficar&lt;br /&gt;
&lt;br /&gt;
plt.subplots(1, figsize = (15, 15), dpi = 300)&lt;br /&gt;
&lt;br /&gt;
# Término constante&lt;br /&gt;
plt.subplot(3,1,1)&lt;br /&gt;
plt.plot([-1,1], [1/2, 1/2], color = colors[-1], label = &amp;quot;Término constante&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Término constante&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Términos en coseno&lt;br /&gt;
plt.subplot(3, 1,2)&lt;br /&gt;
for i in range(1, n + 1):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - 1], label = f&amp;quot;cos({i}πx)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Términos en coseno&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
&lt;br /&gt;
# Términos en seno&lt;br /&gt;
plt.subplot(3, 1, 3)&lt;br /&gt;
for i in range(n + 1, len(base)):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - n - 1], label = &amp;quot;sen({i-n}πx)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Términos en seno&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
La relevancia de estas bases radica en su aplicación en la aproximación de funciones mediante series trigonométricas. Por ejemplo, sobre la base proporcionada, la aproximación de Fourier responderá a &lt;br /&gt;
:&amp;lt;math&amp;gt;f(t) \approx \sum_{n=1}^{\infty}c_n e_n \quad \text{con} \quad c_n=\langle f, e_n \rangle&amp;lt;/math&amp;gt;&lt;br /&gt;
Como observamos, a medida que aumenta el valor del parámetro &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt;, el periodo de oscilación de las funciones es menor, concretamente &amp;lt;math&amp;gt; \frac{2}{n} &amp;lt;/math&amp;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>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Graficas2ILIA.png&amp;diff=83884</id>
		<title>Archivo:Graficas2ILIA.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Graficas2ILIA.png&amp;diff=83884"/>
				<updated>2025-02-12T21:57:51Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:GraficasILIA.jpeg&amp;diff=83880</id>
		<title>Archivo:GraficasILIA.jpeg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:GraficasILIA.jpeg&amp;diff=83880"/>
				<updated>2025-02-12T21:50:51Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=83878</id>
		<title>Series de Fourier (Grupo ILIA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=83878"/>
				<updated>2025-02-12T21:50:03Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo ILIA) | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Ignacio Campos Paños, Ignacio Martínez Cerezo, Luis Ramos Ortiz, Alicia Ruiz Dominguez }}&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
&lt;br /&gt;
En una amplia gama de problemas de ingeniería y matemáticas aparecen funciones periódicas que se necesitan aproximar mediante sumas de funciones trigonométricas, lo que conduce a las '''series de Fourier'''.&lt;br /&gt;
&lt;br /&gt;
Estas series constituyen una herramienta fundamental en la resolución de ecuaciones en derivadas parciales y otros muchos ámbitos de la ciencia. La idea principal es que una función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;, definida en un espacio de Hilbert &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;, puede expresarse como una combinación infinita de funciones trigonométricas de la forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \frac{d_0}{2\pi} + \sum_{n=1}^{\infty}  d_n \frac{1}{\sqrt{\pi}} \cos(nx) + \sum_{n=1}^{\infty}c_n \frac{1}{\sqrt{\pi}} \sin(nx)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los coeficientes &amp;lt;math&amp;gt;d_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;d_n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;c_n&amp;lt;/math&amp;gt; son los '''coeficientes de Fourier''' y se definen de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_0 = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}} dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}cos(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
c_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}sen(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este método permite descomponer funciones periódicas en sus componentes fundamentales, lo que es de gran utilidad en física, ingeniería y matemáticas aplicadas. A continuación, se presentan las primeras funciones base utilizadas en la expansión en series de Fourier.&lt;br /&gt;
&lt;br /&gt;
=Base trigonométrica=&lt;br /&gt;
Para comprender mejor la construcción de las series de Fourier y poder visualizar las funciones base mencionadas, representamos gráficamente los primeros términos de la base trigonométrica &amp;lt;math&amp;gt; \mathcal{B} := \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt; en el intervalo &amp;lt;math&amp;gt; [ -1, 1 ] &amp;lt;/math&amp;gt; mediante un código en Python. Esto nos permitirá observar cómo estas funciones elementales forman una base ortonormal en el espacio &amp;lt;math&amp;gt; L^2( [-1,1]) &amp;lt;/math&amp;gt; y cómo, mediante combinaciones lineales de estas, podemos aproximar funciones arbitrarias.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from matplotlib import pyplot as plt, colors as mcolors&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def base_fourier_cos(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de cosenos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.cos(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def base_fourier_sen(n: int) -&amp;gt; list[callable]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los n primeros términos de senos de la base trigonométrica de fourier&lt;br /&gt;
&lt;br /&gt;
    Args:&lt;br /&gt;
        n (int): Número de términos&lt;br /&gt;
&lt;br /&gt;
    Returns:&lt;br /&gt;
        list[callable]: lista con funciones lambda, ordenada según su posición en la base.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = []&lt;br /&gt;
    for k in range(1, n + 1):&lt;br /&gt;
        basis_functions.append(lambda x, k=k: np.sin(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Parámetros&lt;br /&gt;
X = np.linspace(-1, 1, 400)&lt;br /&gt;
# número de elementos de la base (1, cos(n pi x), sen(n pi x))&lt;br /&gt;
n = 10&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
c1 = &amp;quot;blue&amp;quot;&lt;br /&gt;
c2 = &amp;quot;red&amp;quot;&lt;br /&gt;
&lt;br /&gt;
def colorgradient(&lt;br /&gt;
    c1: &amp;quot;str | tuple[int, int, int]&amp;quot;, c2: &amp;quot;str | tuple[int, int, int]&amp;quot;, n=256&lt;br /&gt;
) -&amp;gt; list[int]:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Given two hex colors, returns a color gradient&lt;br /&gt;
    with n colors.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
colors = colors = [&lt;br /&gt;
    &amp;quot;#0000FF&amp;quot;,&lt;br /&gt;
    &amp;quot;#0033CC&amp;quot;,&lt;br /&gt;
    &amp;quot;#0066CC&amp;quot;,&lt;br /&gt;
    &amp;quot;#0099FF&amp;quot;,&lt;br /&gt;
    &amp;quot;#33CCFF&amp;quot;,&lt;br /&gt;
    &amp;quot;#66CCCC&amp;quot;,&lt;br /&gt;
    &amp;quot;#CC9966&amp;quot;,&lt;br /&gt;
    &amp;quot;#FF6633&amp;quot;,&lt;br /&gt;
    &amp;quot;#FF3300&amp;quot;,&lt;br /&gt;
    &amp;quot;#FF0000&amp;quot;,&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Obtener funciones base&lt;br /&gt;
base = [lambda x: 1] + base_fourier_cos(n) + base_fourier_sen(n)&lt;br /&gt;
&lt;br /&gt;
# Graficar&lt;br /&gt;
&lt;br /&gt;
plt.subplots(1, figsize = (15, 15), dpi = 300)&lt;br /&gt;
&lt;br /&gt;
# Término constante&lt;br /&gt;
plt.subplot(3,1,1)&lt;br /&gt;
plt.plot([-1,1], [1/2, 1/2], color = colors[-1], label = &amp;quot;Término constante&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Término constante&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Términos en coseno&lt;br /&gt;
plt.subplot(3, 1,2)&lt;br /&gt;
for i in range(1, n + 1):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - 1], label = f&amp;quot;cos({i}πx)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Términos en coseno&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
&lt;br /&gt;
# Términos en seno&lt;br /&gt;
plt.subplot(3, 1, 3)&lt;br /&gt;
for i in range(n + 1, len(base)):&lt;br /&gt;
    plt.plot(X, base[i](X), color=colors[i - n - 1], label = &amp;quot;sen({i-n}πx)&amp;quot;)&lt;br /&gt;
plt.title(&amp;quot;Términos en seno&amp;quot;)&lt;br /&gt;
plt.legend()&lt;br /&gt;
plt.show()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
La relevancia de estas bases radica en su aplicación en la aproximación de funciones mediante series trigonométricas. Por ejemplo, sobre la base proporcionada, la aproximación de Fourier responderá a &lt;br /&gt;
:&amp;lt;math&amp;gt;f(t) \approx \sum_{n=1}^{\infty}c_n e_n \quad \text{con} \quad c_n=\langle f, e_n \rangle&amp;lt;/math&amp;gt;&lt;br /&gt;
Como observamos, a medida que aumenta el valor del parámetro &amp;lt;math&amp;gt; n &amp;lt;/math&amp;gt;, el periodo de oscilación de las funciones es menor, concretamente &amp;lt;math&amp;gt; \frac{2}{n} &amp;lt;/math&amp;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>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=83833</id>
		<title>Series de Fourier (Grupo ILIA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=83833"/>
				<updated>2025-02-12T19:32:20Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo ILIA) | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Ignacio Campos Paños, Ignacio Martínez Cerezo, Luis Ramos Ortiz, Alicia Ruiz Dominguez }}&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
&lt;br /&gt;
En una amplia gama de problemas de ingeniería y matemáticas aparecen funciones periódicas que se necesitan aproximar mediante sumas de funciones trigonométricas, lo que conduce a las '''series de Fourier'''.&lt;br /&gt;
&lt;br /&gt;
Estas series constituyen una herramienta fundamental en la resolución de ecuaciones en derivadas parciales y otros muchos ámbitos de la ciencia. La idea principal es que una función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;, definida en un espacio de Hilbert &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;, puede expresarse como una combinación infinita de funciones trigonométricas de la forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \frac{d_0}{2\pi} + \sum_{n=1}^{\infty}  d_n \frac{1}{\sqrt{\pi}} \cos(nx) + \sum_{n=1}^{\infty}c_n \frac{1}{\sqrt{\pi}} \sin(nx)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los coeficientes &amp;lt;math&amp;gt;d_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;d_n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;c_n&amp;lt;/math&amp;gt; son los '''coeficientes de Fourier''' y se definen de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_0 = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}} dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}cos(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
c_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}sen(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este método permite descomponer funciones periódicas en sus componentes fundamentales, lo que es de gran utilidad en física, ingeniería y matemáticas aplicadas. A continuación, se presentan las primeras funciones base utilizadas en la expansión en series de Fourier.&lt;br /&gt;
&lt;br /&gt;
=Base trigonométrica=&lt;br /&gt;
Para comprender mejor la construcción de las series de Fourier y poder visualizar las funciones base mencionadas, representamos gráficamente los primeros términos de la base trigonométrica  &amp;lt;math&amp;gt; \left\{ \frac{1}{2}, \cos(n\pi x), \sin(n\pi x) \right\}_{n \in \mathbb{N}} &amp;lt;/math&amp;gt; en el intervalo &amp;lt;math&amp;gt; [ -1, 1 ] &amp;lt;/math&amp;gt; mediante un código en Python. Esto nos permitirá observar cómo estas funciones elementales forman una base ortonormal en el espacio &amp;lt;math&amp;gt; L^2( [-1,1]) &amp;lt;/math&amp;gt; y cómo, mediante combinaciones lineales de estas, podemos aproximar funciones arbitrarias.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
&lt;br /&gt;
def fourier_basis(n, x):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Genera los primeros n términos de la base de Fourier trigonométrica en [-1,1].&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    basis_functions = [np.ones_like(x)]  # Función constante 1&lt;br /&gt;
    for k in range(1, n // 2 + 1):&lt;br /&gt;
        basis_functions.append(np.cos(np.pi * k * x))&lt;br /&gt;
        if len(basis_functions) &amp;lt; n:&lt;br /&gt;
            basis_functions.append(np.sin(np.pi * k * x))&lt;br /&gt;
    return basis_functions&lt;br /&gt;
&lt;br /&gt;
# Parámetros&lt;br /&gt;
x = np.linspace(-1, 1, 400)&lt;br /&gt;
n_terms = 10&lt;br /&gt;
&lt;br /&gt;
# Obtener funciones base&lt;br /&gt;
basis = fourier_basis(n_terms, x)&lt;br /&gt;
&lt;br /&gt;
# Gráficas&lt;br /&gt;
for i, f in enumerate(basis):&lt;br /&gt;
    plt.figure(figsize=(10, 6))&lt;br /&gt;
    plt.plot(x, f, label=f&amp;quot;Base {i+1}&amp;quot;)&lt;br /&gt;
    plt.xlabel(&amp;quot;x&amp;quot;)&lt;br /&gt;
    plt.ylabel(&amp;quot;Valor&amp;quot;)&lt;br /&gt;
    plt.title(&amp;quot;Primeros 10 elementos de la base de Fourier trigonométrica en [-1,1]&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;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=83815</id>
		<title>Series de Fourier (Grupo ILIA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Grupo_ILIA)&amp;diff=83815"/>
				<updated>2025-02-12T19:02:19Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier (Grupo ILIA) | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Ignacio Campos Paños, Ignacio Martínez Cerezo, Luis Ramos Ortiz, Alicia Ruiz Dominguez }}&lt;br /&gt;
&lt;br /&gt;
=Introducción=&lt;br /&gt;
&lt;br /&gt;
En una amplia gama de problemas de ingeniería y matemáticas aparecen funciones periódicas que se necesitan aproximar mediante sumas de funciones trigonométricas, lo que conduce a las '''series de Fourier'''.&lt;br /&gt;
&lt;br /&gt;
Estas series constituyen una herramienta fundamental en la resolución de ecuaciones en derivadas parciales y otros muchos ámbitos de la ciencia. La idea principal es que una función &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;, definida en un espacio de Hilbert &amp;lt;math&amp;gt;L^2(-\pi,\pi)&amp;lt;/math&amp;gt;, puede expresarse como una combinación infinita de funciones trigonométricas de la forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
f(x) \approx \frac{d_0}{2\pi} + \sum_{n=1}^{\infty}  d_n \frac{1}{\sqrt{\pi}} \cos(nx) + \sum_{n=1}^{\infty}c_n \frac{1}{\sqrt{\pi}} \sin(nx)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los coeficientes &amp;lt;math&amp;gt;d_0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;d_n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;c_n&amp;lt;/math&amp;gt; son los '''coeficientes de Fourier''' y se definen de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_0 = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}} dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
d_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}cos(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \quad&lt;br /&gt;
c_n = \int_{-\pi}^{\pi} f(x) \frac{1}{\sqrt{\pi}}sen(nx) dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este método permite descomponer funciones periódicas en sus componentes fundamentales, lo que es de gran utilidad en física, ingeniería y matemáticas aplicadas. A continuación, se presentan las primeras funciones base utilizadas en la expansión en series de Fourier.&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>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Categor%C3%ADa:EDP24/25&amp;diff=83726</id>
		<title>Categoría:EDP24/25</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Categor%C3%ADa:EDP24/25&amp;diff=83726"/>
				<updated>2025-02-12T11:12:44Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: Se ha deshecho la revisión 83725 de Alicia.ruiz (disc.)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Ecuaciones Diferenciales Parciales''' es una asignatura del quinto semestre del [[:Categoría:Grado en Matemáticas|Grado en Matemáticas]]. En este espacio se presentarán los trabajos de la asignatura. Se puede usar cualquier software de cálculo científico para hacer los programas. En caso de usar MatLab/Octave se recomienda el material correspondiente a gráficos del curso de introducción a la programación &amp;lt;ref&amp;gt;[//mat.caminos.upm.es/wiki/Curso_de_Introducción_a_la_Programación  Curso de introducción a la programación]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Se ruega seguir las siguientes recomendaciones:&lt;br /&gt;
&lt;br /&gt;
# Cada artículo debe iniciarse con una etiqueta que contenga la información del grupo. Se ruega editar esta página y copiar la plantilla que aparece a continuación, cambiando el título del trabajo e incluyendo nuestros nombres (el resto debe dejarse tal y como está):&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;{{ TrabajoED | Series de Fourier. Grupo 6-A | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Nuestros nombres }}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Los artículos sobre los trabajos de la asignatura no deben ser una sucesión de preguntas y respuestas. Más bien hay que hacer una exposición en la que se planteen y resuelvan las cuestiones del trabajo. Dicho de otro modo, debe ser más un documental que una entrevista.&lt;br /&gt;
# Los artículos deben ser autocontenidos y explicar bien el problema planteado. Es recomendable usar secciones para estructurar el trabajo y hacerlo más atractivo. La presentación será muy valorada.&lt;br /&gt;
# El nombre elegido por cada artículo debe describir brevemente el problema. Por ejemplo, un título adecuado es: 'Series de Fourier (Grupo 7A)'. Un título poco adecuado es: 'Trabajo del grupo 7A'&lt;br /&gt;
# Los artículos están orientados a visualización e interpretación. Por tanto, debe haber gráficas y todas ellas deben estar adecuadamente interpretadas. &lt;br /&gt;
# Se deben incluir los programas con los que se han obtenido las gráficas.&lt;br /&gt;
# Mirar los artículos escritos como ayuda. Se puede cortar y pegar de ellos para facilitar el trabajo.&lt;br /&gt;
# Mirar la ayuda sobre cómo crear artículos que se encuentra en la página principal de MateWiki.  &lt;br /&gt;
# Los artículos no pueden superar las '''500 palabras''', sin contar fórmulas y gráficas.&lt;br /&gt;
# Para que el artículo aparezca publicado en esta categoría (Teoría de Campos) es necesario que al final del artículo se incluya la siguiente línea: &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;[[Categoría:EDP]]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;[[Categoría:EDP24/25]]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Editar alguno de los artículos de esta categoría para ver cómo hay que ponerlo.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{ referencias }}&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Matemáticas]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;/div&gt;</summary>
		<author><name>Alicia.ruiz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Categor%C3%ADa:EDP24/25&amp;diff=83725</id>
		<title>Categoría:EDP24/25</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Categor%C3%ADa:EDP24/25&amp;diff=83725"/>
				<updated>2025-02-12T11:11:23Z</updated>
		
		<summary type="html">&lt;p&gt;Alicia.ruiz: Página reemplazada por «{{ TrabajoED | Series de Fourier. Grupo ILIA | EDP|2024-25 | Ignacio Campos, Ignacio Martínez, Luis Ramos, Alicia Ruiz }}...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Series de Fourier. Grupo ILIA | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP24/25|2024-25]] | Ignacio Campos, Ignacio Martínez, Luis Ramos, Alicia Ruiz }}&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Matemáticas]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP24/25]]&lt;/div&gt;</summary>
		<author><name>Alicia.ruiz</name></author>	</entry>

	</feed>