<?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=Andrea+Navarro</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=Andrea+Navarro"/>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/wiki/Especial:Contribuciones/Andrea_Navarro"/>
		<updated>2026-04-28T23:22:07Z</updated>
		<subtitle>Contribuciones del usuario</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Solucion_fundamental_3.png&amp;diff=72801</id>
		<title>Archivo:Solucion fundamental 3.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Solucion_fundamental_3.png&amp;diff=72801"/>
				<updated>2024-05-26T17:36:46Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Solucion_fundamental_2.png&amp;diff=72800</id>
		<title>Archivo:Solucion fundamental 2.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Solucion_fundamental_2.png&amp;diff=72800"/>
				<updated>2024-05-26T17:36:35Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Solucion_fundamental_1.png&amp;diff=72799</id>
		<title>Archivo:Solucion fundamental 1.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Solucion_fundamental_1.png&amp;diff=72799"/>
				<updated>2024-05-26T17:36:19Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas&amp;diff=72798</id>
		<title>Ecuación de ondas</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas&amp;diff=72798"/>
				<updated>2024-05-26T17:35:48Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: /* Ejemplo en dimesión 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación de Ondas. Grupo ALA | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Lucía Amores, Aitana Guill y Andrea Navarro}}&lt;br /&gt;
&lt;br /&gt;
== Introducción ==&lt;br /&gt;
Este trabajo analiza la ecuación de ondas en una cuerda fija en los extremos del intervalo [0,1], con velocidad de propagación 𝑐=1. Incluiremos el sistema que describe el movimiento, así como su solución por separación de variables. Además, consideraremos ejemplos específicos de simulaciones para observar fenómenos como la periodicidad y ondas viajeras. Finalmente, compararemos resultados cambiando las condiciones de frontera a Neumann. &lt;br /&gt;
&lt;br /&gt;
A parte de esto, estudiaremos la solución fundamental de la ecuación de ondas en dimensiones 1, 2 y 3, aplicando un impulso inicial en 𝑥=0 y dibujando estas soluciones en la variable radial para comprender el principio de Huygens.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Contexto Histórico ==&lt;br /&gt;
La ecuación de ondas, fundamental en física y matemáticas, se formuló en el siglo XVIII por Jean le Rond d'Alembert y Leonhard Euler, quienes investigaron la vibración de cuerdas. En el siglo XIX, Joseph Fourier revolucionó su análisis al desarrollar la teoría de series de Fourier, facilitando la solución de ecuaciones diferenciales parciales mediante la separación de variables. &lt;br /&gt;
&lt;br /&gt;
El principio de Huygens, propuesto por Christiaan Huygens en el siglo XVII, establece que cada punto de un frente de onda actúa como una fuente de ondas secundarias. Este principio es esencial para comprender la propagación de ondas y las soluciones de la ecuación en diversas dimensiones. &lt;br /&gt;
&lt;br /&gt;
En el siglo XX y XXI, la teoría de la ecuación de ondas se ha ampliado a campos como la acústica, óptica y telecomunicaciones. Los métodos numéricos modernos permiten simular la propagación de ondas en medios complejos, mejorando nuestra comprensión y aplicación en problemas prácticos. &lt;br /&gt;
&lt;br /&gt;
Hoy, la ecuación de ondas es clave para modelar fenómenos desde vibraciones de cuerdas hasta ondas sísmicas y electromagnéticas, siendo esencial en física teórica, ingeniería y tecnologías modernas. Este trabajo se centra en su estudio y soluciones, aplicando estos principios a situaciones prácticas y avanzadas.&lt;br /&gt;
&lt;br /&gt;
==Modelización de los desplazamientos transversales== &lt;br /&gt;
Para modelar el comportamiento de los desplazamientos transversales de la cuerda vibrante, utilizamos la ecuación de ondas en una dimensión. Dado que la cuerda está fija en los extremos y tiene una densidad &amp;lt;math&amp;gt; d &amp;lt;/math&amp;gt; y tensión constante &amp;lt;math&amp;gt; \tau_0 &amp;lt;/math&amp;gt; de manera que la velocidad de propagación es &amp;lt;math&amp;gt; c = \tau_0/d = 1 &amp;lt;/math&amp;gt;, la ecuación de ondas se simplifica.&lt;br /&gt;
&lt;br /&gt;
La ecuación de ondas en una dimensión para los desplazamientos transversales &amp;lt;math&amp;gt; u(x,t) &amp;lt;/math&amp;gt; de la cuerda es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{\partial^2 u}{\partial t^2} = c^2 \frac{\partial^2 u}{\partial x^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que &amp;lt;math&amp;gt; c = 1 &amp;lt;/math&amp;gt;, la ecuación se reduce a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta ecuación diferencial parcial (EDP) debe acompañarse de las condiciones de contorno y las condiciones iniciales para estar completamente especificada.&lt;br /&gt;
&lt;br /&gt;
===Condiciones de contorno===&lt;br /&gt;
Dado que la cuerda está fija en los extremos, las condiciones de contorno son:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(0, t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(1, t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Condiciones iniciales===&lt;br /&gt;
Las condiciones iniciales especifican la posición inicial de la cuerda &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; y su velocidad inicial o impulso &amp;lt;math&amp;gt; u_1(x) &amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;u(x, 0) = u_0(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; \frac{\partial u}{\partial t}(x, 0) = u_1(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
===Sistema de EDP===&lt;br /&gt;
Juntando la ecuación de ondas con las condiciones de contorno e iniciales, el sistema completo que modela el comportamiento de los desplazamientos transversales de la cuerda es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}&lt;br /&gt;
&lt;br /&gt;
\frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2}, &amp;amp; 0 &amp;lt; x &amp;lt; 1, \ t &amp;gt; 0 \\&lt;br /&gt;
u(0, t) = 0, &amp;amp; t \geq 0 \\&lt;br /&gt;
u(1, t) = 0, &amp;amp; t \geq 0 \\&lt;br /&gt;
u(x, 0) = u_0(x), &amp;amp; 0 \leq x \leq 1 \\&lt;br /&gt;
\frac{\partial u}{\partial t}(x, 0) = u_1(x), &amp;amp; 0 \leq x \leq 1&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este sistema describe completamente la evolución temporal de los desplazamientos transversales de una cuerda vibrante con los extremos fijos, dada su posición e impulso iniciales.&lt;br /&gt;
&lt;br /&gt;
===Resolución del sistema por separación de variables en términos de los coeficientes de Fourier de los datos iniciales===&lt;br /&gt;
Primero, planteamos la solución de la ecuación de onda mediante separación de variables. Asumimos que la solución \( u(x,t) \) se puede escribir como un producto de dos funciones independientes, una que depende solo de \( x \) y otra que depende solo de \( t \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x, t) = X(x) T(t) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituimos esta forma en la ecuación de onda:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{\partial^2 (X(x) T(t))}{\partial t^2} = \frac{\partial^2 (X(x) T(t))}{\partial x^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto se simplifica a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;X(x) \frac{d^2 T(t)}{dt^2} = T(t) \frac{d^2 X(x)}{dx^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dividimos ambos lados por &amp;lt;math&amp;gt;X(x) T(t) &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{1}{T(t)} \frac{d^2 T(t)}{dt^2} = \frac{1}{X(x)} \frac{d^2 X(x)}{dx^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dado que el lado izquierdo depende solo de \( t \) y el lado derecho solo de \( x \), ambos deben ser iguales a una constante que llamaremos \(-\lambda\). Esto nos lleva a dos ecuaciones ordinarias:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{d^2 T(t)}{dt^2} + \lambda T(t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{d^2 X(x)}{dx^2} + \lambda X(x) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para satisfacer las condiciones de contorno \( u(0, t) = 0 \) y \( u(1, t) = 0 \), tenemos:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;X(0) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;X(1) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La ecuación para \( X(x) \) tiene la solución general:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;X(x) = A \sin(\sqrt{\lambda} x) + B \cos(\sqrt{\lambda} x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando las condiciones de contorno, obtenemos que \( B = 0 \) y que \( \sqrt{\lambda} \) debe ser un múltiplo de \( \pi \):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \sqrt{\lambda} = n \pi \quad \text{para} \quad n = 1, 2, 3, \ldots &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por lo tanto, \( \lambda = (n \pi)^2 \) y las funciones propias son:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; X_n(x) = \sin(n \pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La ecuación para \( T(t) \) se convierte en:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{d^2 T_n(t)}{dt^2} + (n \pi)^2 T_n(t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con la solución general:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; T_n(t) = C_n \cos(n \pi t) + D_n \sin(n \pi t) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Combinando \( X(x) \) y \( T(t) \), la solución general para \( u(x,t) \) es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x, t) = \sum_{n=1}^{\infty} \left( A_n \cos(n \pi t) + B_n \sin(n \pi t) \right) \sin(n \pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde \( A_n \) y \( B_n \) son coeficientes a determinar a partir de las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
### Determinación de los coeficientes \( A_n \) y \( B_n \)&lt;br /&gt;
&lt;br /&gt;
Las condiciones iniciales son:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x, 0) = u_0(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial u}{\partial t}(x, 0) = u_1(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para \( t = 0 \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x, 0) = \sum_{n=1}^{\infty} A_n \sin(n \pi x) = u_0(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Usamos la ortogonalidad de las funciones seno para determinar \( A_n \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; A_n = 2 \int_0^1 u_0(x) \sin(n \pi x) \, dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la derivada temporal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial u}{\partial t}(x, 0) = \sum_{n=1}^{\infty} B_n n \pi \cos(n \pi \cdot 0) \sin(n \pi x) = u_1(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B_n n \pi = 2 \int_0^1 u_1(x) \sin(n \pi x) \, dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por lo tanto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B_n = \frac{2}{n \pi} \int_0^1 u_1(x) \sin(n \pi x) \, dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finalmente, la solución de la ecuación de onda en términos de los coeficientes de Fourier de los datos iniciales es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x, t) = \sum_{n=1}^{\infty} \left( \left(2 \int_0^1 u_0(x) \sin(n \pi x) \, dx \right) \cos(n \pi t) + \left(\frac{2}{n \pi} \int_0^1 u_1(x) \sin(n \pi x) \, dx \right) \sin(n \pi t) \right) \sin(n \pi x) &lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Esta expresión proporciona la solución completa de la ecuación de onda en función de las condiciones iniciales \( u_0(x) \) y \( u_1(x) \).&lt;br /&gt;
&lt;br /&gt;
===== Ejemplo de solución periódica en tiempo =====&lt;br /&gt;
&lt;br /&gt;
En esta parte del documento para comprender lo anteriormente explicado de manera óptima se va a proceder a analizar una serie de ejemplo. El primero de ellos se trata de la representación gráfica de una solución periódica en tiempo. Esta viene dada suponiendo que los datos iniciales son &amp;lt;math&amp;gt;u_0(x)=e^{-100(x-\frac{1}{2})^2}&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;u_1(x)=0&amp;lt;/math&amp;gt;. Es por ello que la representación de la solución en el intervalo t ∈ [0, 2] es la siguiente:&lt;br /&gt;
[[Archivo:ondaperiodicaALA.png|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para la obtención de esta representación se ha creado el siguiente código en Matlab:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=% &lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestros datos iniciales:&lt;br /&gt;
u_0=@(x) (exp(-100.*(x-1/2).^2));&lt;br /&gt;
u_1=@(x) (0);&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestro intervalo de tiempo t:&lt;br /&gt;
t=0:0.001:2;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestro intervalo x:&lt;br /&gt;
x=0:0.001:1;&lt;br /&gt;
&lt;br /&gt;
% Definimos el número de términos de la serie a dibujar:&lt;br /&gt;
n=50;&lt;br /&gt;
&lt;br /&gt;
% Calculamos los términos de fourier asociados a u_0:&lt;br /&gt;
ak_0=zeros(n,1);&lt;br /&gt;
bk_0=zeros(n,1);&lt;br /&gt;
ck_0=zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
f_sen_0=@(x,k) u_0(x).*sin(k*pi*x);&lt;br /&gt;
f_cos_0=@(x,k) u_0(x).*cos(k*pi*x);&lt;br /&gt;
f_medio_0=@(x,k) u_0(x).*1/2;&lt;br /&gt;
&lt;br /&gt;
for k=1:n&lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_sen_0=f_sen_0(x,k);&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_cos:&lt;br /&gt;
    y_cos_0=f_cos_0(x,k);&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_medio_0=f_medio_0(x);&lt;br /&gt;
&lt;br /&gt;
    ak_0(k)=trapz(x,y_sen_0);&lt;br /&gt;
    bk_0(k)=trapz(x,y_cos_0);&lt;br /&gt;
    ck_0(k)=trapz(x,y_medio_0);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos los términos de fourier asociados a u_1:&lt;br /&gt;
ak_1=zeros(n,1);&lt;br /&gt;
bk_1=zeros(n,1);&lt;br /&gt;
ck_1=zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
f_sen_1=@(x,k) u_1(x).*sin(k*pi*x);&lt;br /&gt;
f_cos_1=@(x,k) u_1(x).*cos(k*pi*x);&lt;br /&gt;
f_medio_1=@(x,k) u_1(x).*1/2;&lt;br /&gt;
&lt;br /&gt;
for k=1:n&lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_sen_1=f_sen_1(x,k);&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_cos:&lt;br /&gt;
    y_cos_1=f_cos_1(x,k);&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_medio_1=f_medio_1(x);&lt;br /&gt;
&lt;br /&gt;
    ak_1(k)=trapz(x,y_sen_1);&lt;br /&gt;
    bk_1(k)=trapz(x,y_cos_1);&lt;br /&gt;
    %ck_1(k)=trapz(x,y_medio_1);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Sustituimos en la solución calculada por separación de variables:&lt;br /&gt;
u=@(xx,tt) 0;&lt;br /&gt;
for i=1:n&lt;br /&gt;
    u=@(xx,tt) u(xx,tt) + (ak_0(i).*cos(i*pi*tt)+bk_1(i).*sin(i*pi*tt)).*sin(i*pi*xx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficamos la solución:&lt;br /&gt;
[X,T]=meshgrid(x,t);&lt;br /&gt;
surf(X,T,u(X,T),'EdgeColor','flat')&lt;br /&gt;
title('Solución ecuación de ondas')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
   &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como se observa en la imagen anterior la función muestra un comportamiento que se repite regularmente con el tiempo. A este tipo de funciones se les denomina periódicas en tiempo. Esto se puede observar de manera óptima para su comprensión en la siguiente gráfica, en la cual se observa el comportamiento explicado a anteriormente cuyo periodo es 2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:onda_ejercicio_3.gif|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para la obtención de esta animación se ha hecho uso del siguiente cógido:&lt;br /&gt;
{{matlab|codigo=% &lt;br /&gt;
%% Ejercicio 3 animación&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestros datos iniciales:&lt;br /&gt;
u_0=@(x) (exp(-100.*(x-1/2).^2));&lt;br /&gt;
u_1=@(x) (0);&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestro intervalo de tiempo t:&lt;br /&gt;
t=0:0.001:2;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestro intervalo x:&lt;br /&gt;
x=0:0.001:1;&lt;br /&gt;
&lt;br /&gt;
% Definimos el número de términos de la serie a dibujar:&lt;br /&gt;
n=50;&lt;br /&gt;
&lt;br /&gt;
% Calculamos los términos de fourier asociados a u_0:&lt;br /&gt;
ak_0=zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
f_sen_0=@(x,k) u_0(x).*sin(k*pi*x);&lt;br /&gt;
&lt;br /&gt;
for k=1:n&lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_sen_0=f_sen_0(x,k);&lt;br /&gt;
&lt;br /&gt;
    ak_0(k)=2.*trapz(x,y_sen_0);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos los términos de fourier asociados a u_1:&lt;br /&gt;
bk_1=zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
f_cos_1=@(x,k) u_1(x).*cos(k*pi*x);&lt;br /&gt;
&lt;br /&gt;
for k=1:n&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_cos:&lt;br /&gt;
    y_cos_1=f_cos_1(x,k);&lt;br /&gt;
            &lt;br /&gt;
    bk_1(k)=2/(k*pi)*trapz(x,y_cos_1);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Sustituimos en la solución calculada por separación de variables:&lt;br /&gt;
u=@(xx,tt) 0;&lt;br /&gt;
for i=1:n&lt;br /&gt;
    u=@(xx,tt) u(xx,tt) + (ak_0(i).*cos(i*pi*tt)+bk_1(i).*sin(i*pi*tt)).*sin(i*pi*xx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficamos la solución:&lt;br /&gt;
% Crear un objeto de VideoWriter para el video&lt;br /&gt;
video = VideoWriter('onda_ejercicio_3.avi');&lt;br /&gt;
video.FrameRate = 100;&lt;br /&gt;
open(video);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
&lt;br /&gt;
    plot(x,u(x,t(i)))&lt;br /&gt;
    xlim([0,1])&lt;br /&gt;
    ylim([-1.5,1.5])&lt;br /&gt;
    xlabel('x')&lt;br /&gt;
    ylabel('u(x,t)')&lt;br /&gt;
    title(['Solución de la ecuación de onda en t=', num2str(t(i))])&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    % Capturar el frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
    &lt;br /&gt;
    % Limpiar la figura para la siguiente iteración, excepto los ejes&lt;br /&gt;
    clf; % Clear current figure&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Cerrar el objeto de video&lt;br /&gt;
close(video);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de la onda viajera ====&lt;br /&gt;
&lt;br /&gt;
===== Condiciones Dirichlet  =====&lt;br /&gt;
En este caso se va a tratar el ejemplo de una onda viajera en un solo sentido denotada por &amp;lt;math&amp;gt; u(x,t)=f(x-t)&amp;lt;/math&amp;gt;. Es por ello que se toman como datos iniciales &amp;lt;math&amp;gt;u_0(x)=f(x)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;u_1(x)=f'(x)&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt; f(x)=e^{-100(x-\frac{1}{2})^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se ha creado un código en MATLAB para obtener la siguiente respresentación en el mismo intervalo:&lt;br /&gt;
[[Archivo:ondaejercicio43d.png|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se observa que el tiempo de llegada de la onda de un extremo al otro es una unidad de tiempo. A su vez puesto que la cuerda mide una unidad de espacio se concluye que la velocidad de propagación es 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para la obtención de esta representación se ha creado el siguiente código en Matlab:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=% &lt;br /&gt;
&lt;br /&gt;
   %% Ejercicio 4&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Se definen las condiciones iniciales&lt;br /&gt;
u_0 = @(x) exp(-100*(x-1/2).^2);&lt;br /&gt;
u_1 = @(x) 200*(x-1/2).* exp(-100.* (x-1/2).^2);&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos de tiempo y espacio&lt;br /&gt;
t = linspace(0,2,1000);&lt;br /&gt;
x = linspace(0,1,1000);&lt;br /&gt;
&lt;br /&gt;
% Número de términos de la serie a dibuja&lt;br /&gt;
n = 50;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Cálculo de coeficientes de Fourier asociados a u_0&lt;br /&gt;
ak_0 = zeros(n,1);&lt;br /&gt;
for k = 1:n&lt;br /&gt;
    f_sen_0 = @(x) u_0(x).*sin(k*pi*x);&lt;br /&gt;
&lt;br /&gt;
    ak_0(k) = 2*trapz(x, f_sen_0(x));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Cálculo de coeficientes de Fourier asociados a u_1&lt;br /&gt;
bk_1 = zeros(n,1);&lt;br /&gt;
for k = 1:n&lt;br /&gt;
    f_sen_1 = @(x) u_1(x).*sin(k*pi*x);&lt;br /&gt;
&lt;br /&gt;
    bk_1(k) =(2/(k*pi))*trapz(x, f_sen_1(x));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Sustituimos en la solución calculada por separación de variables&lt;br /&gt;
u = @(xx,tt) 0;&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    u = @(xx,tt) u(xx,tt) + (ak_0(i)*cos(i*pi*tt) + bk_1(i)*sin(i*pi*tt)).*sin(i*pi*xx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficamos la solución&lt;br /&gt;
[X, T] = meshgrid(x, t);&lt;br /&gt;
surf(X, T, u(X, T), 'EdgeColor', 'flat')&lt;br /&gt;
title('Solución ecuación de ondas')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación, al igual que en el apartado anterior, se dispone una representación del comportamiento de la onda en función del tiempo.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:onda_ejercicio_4.gif|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como se observa, cuando la onda alcanza la frontera la solución se anula la solución para todo tiempo.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=% &lt;br /&gt;
%% Ejercicio 4 animación&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Se definen las condiciones iniciales&lt;br /&gt;
u_0 = @(x) exp(-100*(x-1/2).^2);&lt;br /&gt;
u_1 = @(x) 200*(x-1/2).* exp(-100.* (x-1/2).^2);&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos de tiempo y espacio&lt;br /&gt;
t = linspace(0,2,1000);&lt;br /&gt;
x = linspace(0,1,1000);&lt;br /&gt;
&lt;br /&gt;
% Número de términos de la serie a dibuja&lt;br /&gt;
n = 50;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Cálculo de coeficientes de Fourier asociados a u_0&lt;br /&gt;
ak_0 = zeros(n,1);&lt;br /&gt;
for k = 1:n&lt;br /&gt;
    f_sen_0 = @(x) u_0(x).*sin(k*pi*x);&lt;br /&gt;
&lt;br /&gt;
    ak_0(k) = 2*trapz(x, f_sen_0(x));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Cálculo de coeficientes de Fourier asociados a u_1&lt;br /&gt;
bk_1 = zeros(n,1);&lt;br /&gt;
for k = 1:n&lt;br /&gt;
    f_sen_1 = @(x) u_1(x).*sin(k*pi*x);&lt;br /&gt;
&lt;br /&gt;
    bk_1(k) =(2/(k*pi))*trapz(x, f_sen_1(x));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Sustituimos en la solución calculada por separación de variables&lt;br /&gt;
u = @(xx,tt) 0;&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    u = @(xx,tt) u(xx,tt) + (ak_0(i)*cos(i*pi*tt) + bk_1(i)*sin(i*pi*tt)).*sin(i*pi*xx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Crear un objeto de VideoWriter para el video&lt;br /&gt;
video = VideoWriter('onda_ejercicio_4.avi');&lt;br /&gt;
video.FrameRate = 100;&lt;br /&gt;
open(video);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
&lt;br /&gt;
    plot(x,u(x,t(i)))&lt;br /&gt;
    xlim([0,1])&lt;br /&gt;
    ylim([-1.5,1.5])&lt;br /&gt;
    xlabel('x')&lt;br /&gt;
    ylabel('u(x,t)')&lt;br /&gt;
    title(['Solución de la ecuación de onda en t=', num2str(t(i))])&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    % Capturar el frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
    &lt;br /&gt;
    % Limpiar la figura para la siguiente iteración, excepto los ejes&lt;br /&gt;
    clf; % Clear current figure&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Cerrar el objeto de video&lt;br /&gt;
close(video);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== Condiciones Neumann =====&lt;br /&gt;
&lt;br /&gt;
A continuación, para comprender mejor la diferencia respecto a las condiciones fronteras, se va a resolver el mismo problema cambiando las condiciones Dirichlet a condiciones Neumann, es decir &amp;lt;math&amp;gt;u_0(0,t)=u_1(1,t)=0&amp;lt;/math&amp;gt;. De esta manera se pretende resolver el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
\begin{cases}&lt;br /&gt;
u_{tt} - u_{xx} = 0 \\&lt;br /&gt;
u_x(0, t) = u_x(1, t) = 0 \\&lt;br /&gt;
u(x, 0) = e^{-100(x - \frac{1}{2})^2} \\&lt;br /&gt;
u_t(x, 0) = 200(x - \frac{1}{2})e^{-100(x - \frac{1}{2})^2}&lt;br /&gt;
\end{cases}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este caso, aplicando separación de variables, obtenemos que la solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x, t) = \sum_{k=1}^{\infty} \left[ a_k \cos(k\pi x) \cos(k\pi t) + b_k \cos(k\pi x) \sin(k\pi t) \right] &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
siendo&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;a_k = \frac{\int_{0}^{1} \cos(k\pi x) u_0(x) \, dx}{\int_{0}^{1} \cos^2(k\pi x) \, dx} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
y&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;b_k = \frac{\int_{0}^{1} \cos(k\pi x) u_1(x) \, dx}{\int_{0}^{1} \cos^2(k\pi x) \, dx} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La representación obtenida mediante el código que se presenta posteriormente es la siguiente:&lt;br /&gt;
[[Archivo:ondaejercicio5ALA.png|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=%&lt;br /&gt;
%% Ejercicio 5&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Definimos f(x)&lt;br /&gt;
f = @(x) exp(-100 * (x - 1/2).^2);&lt;br /&gt;
&lt;br /&gt;
% -Derivada de f(x)&lt;br /&gt;
df = @(x) 200 * (x - 0.5) .* exp(-100 * (x - 0.5).^2);&lt;br /&gt;
&lt;br /&gt;
% Definimos el número de terminos de la serie&lt;br /&gt;
n=50;&lt;br /&gt;
&lt;br /&gt;
% Definimos el intervalo de tiempo y espacio&lt;br /&gt;
x = linspace(0, 1, 200);&lt;br /&gt;
t_values = linspace(0, 2, 200); % Evaluamos desde t=0 hasta t=2&lt;br /&gt;
&lt;br /&gt;
% Calculamos los coeficientes de Fourier para Neumann&lt;br /&gt;
a_k =zeros(n,1);&lt;br /&gt;
b_k =zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
for i=1:n&lt;br /&gt;
    a_k(i) =2 * trapz(x, f(x) .* cos(i * pi * x));&lt;br /&gt;
    b_k(i) =2 / (i * pi) * trapz(x, df(x) .* cos(i * pi * x));&lt;br /&gt;
end&lt;br /&gt;
% Calculamos la solución de la ecuación de onda&lt;br /&gt;
u=@(xx,tt) 0;&lt;br /&gt;
for i=1:n&lt;br /&gt;
    u=@(xx,tt) u(xx,tt) + (a_k(i).*cos(i*pi*tt)+b_k(i).*sin(i*pi*tt)).*cos(i*pi*xx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos u(X, T) para todos los puntos de la malla&lt;br /&gt;
[X, T] = meshgrid(x, t_values);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
surf(X, T, u(X,T), 'EdgeColor', 'flat')&lt;br /&gt;
title('Solución de la ecuación de onda con condiciones Neumann')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u(x, t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este caso, para su correcta visualización, se ha vuelto a crear la siguiente representación:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:onda_condiciones_newman_ejercicio_5_buena.gif|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
Como se observa el periodo en este caso vuelve a ser 2 y puesto que los extremos no son fijos porque tenemos de datos las derivadas la onda varía en la frontera.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=%&lt;br /&gt;
%% Ejercicio 5 animación&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Definimos f(x)&lt;br /&gt;
f = @(x) exp(-100 * (x - 1/2).^2);&lt;br /&gt;
&lt;br /&gt;
% -Derivada de f(x)&lt;br /&gt;
df = @(x) 200 * (x - 0.5) .* exp(-100 * (x - 0.5).^2);&lt;br /&gt;
&lt;br /&gt;
% Definimos el número de terminos de la serie&lt;br /&gt;
n=50;&lt;br /&gt;
&lt;br /&gt;
% Definimos el intervalo de tiempo y espacio&lt;br /&gt;
x = linspace(0, 1, 200);&lt;br /&gt;
t_values = linspace(0, 2, 200); % Evaluamos desde t=0 hasta t=2&lt;br /&gt;
&lt;br /&gt;
% Calculamos los coeficientes de Fourier para Neumann&lt;br /&gt;
a_k =zeros(n,1);&lt;br /&gt;
b_k =zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
for i=1:n&lt;br /&gt;
    a_k(i) =2 * trapz(x, f(x) .* cos(i * pi * x));&lt;br /&gt;
    b_k(i) =2 / (i * pi) * trapz(x, df(x) .* cos(i * pi * x));&lt;br /&gt;
end&lt;br /&gt;
% Calculamos la solución de la ecuación de onda&lt;br /&gt;
u=@(xx,tt) 0;&lt;br /&gt;
for i=1:n&lt;br /&gt;
    u=@(xx,tt) u(xx,tt) + (a_k(i).*cos(i*pi*tt)+b_k(i).*sin(i*pi*tt)).*cos(i*pi*xx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Crear un objeto de VideoWriter para el video&lt;br /&gt;
video = VideoWriter('onda_condiciones_newman_ejercicio_5_buena.avi');&lt;br /&gt;
video.FrameRate = 100;&lt;br /&gt;
open(video);&lt;br /&gt;
% Graficamos la solución en diferentes tiempos&lt;br /&gt;
figure&lt;br /&gt;
&lt;br /&gt;
for t = t_values&lt;br /&gt;
    u_values = u(x, t);&lt;br /&gt;
    plot(x, u_values)&lt;br /&gt;
    xlim([0, 1])&lt;br /&gt;
    ylim([-0.5, 2])&lt;br /&gt;
    title(['Solución de la ecuación de onda con condiciones Neumann en t=', num2str(t)])&lt;br /&gt;
    xlabel('x')&lt;br /&gt;
    ylabel('u(x, t)')&lt;br /&gt;
    % Capturar el frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
    clf&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Cerrar el objeto de video&lt;br /&gt;
close(video);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Soluciones fundamentales en dimensiones 1, 2 y 3 ==&lt;br /&gt;
La solución fundamental resuelve el sistema,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\left \{ \begin{array}{ll}  &lt;br /&gt;
u_{tt}-c^2\Delta u=0, \quad x \in \mathbb{R}^n, t&amp;gt;0, \\&lt;br /&gt;
u(x,0)=0, u_t(x,0)=\delta (x), \quad x \in \mathbb{R}^n,&lt;br /&gt;
\end{array} \right.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En esta parte del trabajo vamos a dibujar la solución fundamental de la ecuación de ondas en dimensiones 1, 2 y 3. Cuyas expresiones son las siguientes.&lt;br /&gt;
&lt;br /&gt;
Dimensión &amp;lt;math&amp;gt;n=1&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; K_1(x,t) =\frac{1}{2c}\textbf{1}_{[-ct,ct]}(x)=\frac{1}{2c}\textbf{1}_{[0,ct]}(|x|). &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dimensión &amp;lt;math&amp;gt;n=2&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; K_2(x,t)=\frac{1}{2\pi c \sqrt{c^2t^2-|x|^2}} \chi_{B(0,ct)}(x)=\frac{1}{2\pi c \sqrt{c^2t^2-|x|^2}} \textbf{1}_{[0,ct]}(|x|). &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dimensión &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; K_3(x,t)=\frac{\delta (|x|-ct)}{4\pi c|x|}, t&amp;gt;0. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para dibujarlas, es primero necesario hacer unos cambios en los casos de dimensiones 2 y 3.  &lt;br /&gt;
&lt;br /&gt;
* En el caso de la dimensión 2, encontramos una singularidad en el denominador de la función de la solución fundamental. Esta ocurre cuando ∣x∣=ct, lo que resulta en una división por cero. Para evitar esta singularidad, se agrega un término de regularización ϵ en el denominador. Esto asegura que la función sea suave y bien comportada en todas partes, incluidos los puntos cercanos a ∣x∣=ct. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  K^{ε}_{2} (x,t) = \frac{1}{ε + 2\pi c \sqrt(c^2 t^2 - ∣x∣^2)} ⲭ_{B(0,ct)}(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Para la representación del caso de dimensión 3 se ha sustituido la delta de Didac por su aproximación,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \delta (s) ≈ \phi_k (s) = \sqrt(\frac{k}{\pi})e^{(-ks^2)}  &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con estos cambios, representamos las 3 soluciones fundamentales observando que estas son radiales. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:solucion_fundamental_1.png|miniaturadeimagen|centro]]&lt;br /&gt;
[[Archivo:solucion_fundamental_2.png|miniaturadeimagen|centro]]&lt;br /&gt;
[[Archivo:solucion_fundamental_3.png|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
Que las soluciones fundamentales sean &amp;quot;radiales&amp;quot; significa que son simétricas respecto al origen en coordenadas radiales. Dicha periodicidad es clara en las gráficas anteriores. Esto implica que el valor de la solución en un punto depende únicamente de la distancia radial desde el origen, y no de la dirección en la que se mida esa distancia. &lt;br /&gt;
&lt;br /&gt;
El código empleado para esta representación ha sido el siguiente.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=  &lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Dimensión 1&lt;br /&gt;
% Definimos los intervalos x,t:&lt;br /&gt;
x=-1:0.001:1;&lt;br /&gt;
t=0:0.001:1;&lt;br /&gt;
&lt;br /&gt;
% Creación de la rejilla&lt;br /&gt;
[X,T] = meshgrid(x,t);&lt;br /&gt;
&lt;br /&gt;
% Velocidad de propagación&lt;br /&gt;
c = 1;&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución fundamental&lt;br /&gt;
K = (X &amp;lt;= c*T) .* (X &amp;gt;= -c*T) / (2*c);&lt;br /&gt;
&lt;br /&gt;
% Visualización de la solución fundamental&lt;br /&gt;
figure(&amp;quot;Name&amp;quot;,'Solución fundamental dimensión 1')&lt;br /&gt;
surf(X, T, K,'EdgeColor','interp');&lt;br /&gt;
title(&amp;quot;Solución fundamental en dimensión 1&amp;quot;);&lt;br /&gt;
xlabel(&amp;quot;x&amp;quot;);&lt;br /&gt;
ylabel(&amp;quot;t&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
% Dimensión 2&lt;br /&gt;
% Definimos nuestros intervalos&lt;br /&gt;
r=0:0.001:1;&lt;br /&gt;
t=0:0.001:1;&lt;br /&gt;
&lt;br /&gt;
% Creamos la malla&lt;br /&gt;
[R,T]=meshgrid(r,t);&lt;br /&gt;
&lt;br /&gt;
% Velocidad de propagación&lt;br /&gt;
c=1;&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución fundamental&lt;br /&gt;
K=(R&amp;lt;=c*T)./(eps + 2*pi*c.*sqrt(c^2*T.^2-R.^2));&lt;br /&gt;
&lt;br /&gt;
figure(&amp;quot;Name&amp;quot;,'Solución fundamental dimensión 2')&lt;br /&gt;
surf(R,T,K,'EdgeColor','flat')&lt;br /&gt;
title(&amp;quot;Solución fundamental de dimensión 2&amp;quot;)&lt;br /&gt;
xlabel(&amp;quot;r&amp;quot;)&lt;br /&gt;
ylabel(&amp;quot;t&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestros intervalos&lt;br /&gt;
r=0:0.001:1;&lt;br /&gt;
t=0:0.001:1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[R,T]=meshgrid(r,t);&lt;br /&gt;
&lt;br /&gt;
c=1;                     % Velocidad de propagación &lt;br /&gt;
k=1000;                  &lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución fundamental&lt;br /&gt;
K=sqrt(k/pi).*exp(-k * (R-c*T).^2)./(4*pi*c*R);&lt;br /&gt;
&lt;br /&gt;
figure(&amp;quot;Name&amp;quot;,'Solución fundamental dimensión 3')&lt;br /&gt;
surf(R,T,K,'EdgeColor','flat')&lt;br /&gt;
title(&amp;quot;Solución fundamental de dimensión 3&amp;quot;)&lt;br /&gt;
xlabel(&amp;quot;r&amp;quot;)&lt;br /&gt;
ylabel(&amp;quot;t&amp;quot;)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== Ejemplo en dimesión 2 =====&lt;br /&gt;
Veamos a continuación el sistema que resuelve la solución fundamental en dimensión 2 en una bola de radio &amp;lt;math&amp;gt; \frac{1}{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left \{ \begin{array}{ll}  &lt;br /&gt;
u_{tt}-c^2\Delta u=0, \quad x \in \mathbb{R}^2, t&amp;gt;0, \\&lt;br /&gt;
u(x,0)=0, u_t(x,0)=h (x) = \chi _{B(0,\frac{1}{2})}(x), \quad x \in \mathbb{R}^2&lt;br /&gt;
\end{array} \right.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso, la solución fundamental viene dada por la convolución,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x,t)=\int_{\mathbb{R}^2}K_2 (x-y, t)h(y) dy &amp;lt;/math&amp;gt;. &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujamos las soluciones para t = 0, 0.5, 1, 2.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:ondasII2t0.png|miniaturadeimagen|centro]]&lt;br /&gt;
[[Archivo:ondasII2t05.png|miniaturadeimagen|centro]]&lt;br /&gt;
[[Archivo:ondasII2t1.png|miniaturadeimagen|centro]]&lt;br /&gt;
[[Archivo:ondasII2t2.png|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A diferencia de lo visto en el caso general, aquí no podemos apreciar periodicidad. Sin embargo, el sistema se puede expresar en función de radio únicamente, es decir, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left \{ \begin{array}{ll}  &lt;br /&gt;
u_{tt}-c^2(\frac{1}{r}u_r+u_{rr})=0, \quad r \geq 0, t&amp;gt;0, \\&lt;br /&gt;
u(r,0)=0, \\&lt;br /&gt;
u_t(r,0)=h (r) = \textbf{1}_{[0,\frac{1}{2}]}(r), \quad x \in \mathbb{R}^2&lt;br /&gt;
\end{array} \right.  &lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas&amp;diff=72797</id>
		<title>Ecuación de ondas</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas&amp;diff=72797"/>
				<updated>2024-05-26T17:35:03Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: /* Soluciones fundamentales en dimensiones 1, 2 y 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación de Ondas. Grupo ALA | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Lucía Amores, Aitana Guill y Andrea Navarro}}&lt;br /&gt;
&lt;br /&gt;
== Introducción ==&lt;br /&gt;
Este trabajo analiza la ecuación de ondas en una cuerda fija en los extremos del intervalo [0,1], con velocidad de propagación 𝑐=1. Incluiremos el sistema que describe el movimiento, así como su solución por separación de variables. Además, consideraremos ejemplos específicos de simulaciones para observar fenómenos como la periodicidad y ondas viajeras. Finalmente, compararemos resultados cambiando las condiciones de frontera a Neumann. &lt;br /&gt;
&lt;br /&gt;
A parte de esto, estudiaremos la solución fundamental de la ecuación de ondas en dimensiones 1, 2 y 3, aplicando un impulso inicial en 𝑥=0 y dibujando estas soluciones en la variable radial para comprender el principio de Huygens.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Contexto Histórico ==&lt;br /&gt;
La ecuación de ondas, fundamental en física y matemáticas, se formuló en el siglo XVIII por Jean le Rond d'Alembert y Leonhard Euler, quienes investigaron la vibración de cuerdas. En el siglo XIX, Joseph Fourier revolucionó su análisis al desarrollar la teoría de series de Fourier, facilitando la solución de ecuaciones diferenciales parciales mediante la separación de variables. &lt;br /&gt;
&lt;br /&gt;
El principio de Huygens, propuesto por Christiaan Huygens en el siglo XVII, establece que cada punto de un frente de onda actúa como una fuente de ondas secundarias. Este principio es esencial para comprender la propagación de ondas y las soluciones de la ecuación en diversas dimensiones. &lt;br /&gt;
&lt;br /&gt;
En el siglo XX y XXI, la teoría de la ecuación de ondas se ha ampliado a campos como la acústica, óptica y telecomunicaciones. Los métodos numéricos modernos permiten simular la propagación de ondas en medios complejos, mejorando nuestra comprensión y aplicación en problemas prácticos. &lt;br /&gt;
&lt;br /&gt;
Hoy, la ecuación de ondas es clave para modelar fenómenos desde vibraciones de cuerdas hasta ondas sísmicas y electromagnéticas, siendo esencial en física teórica, ingeniería y tecnologías modernas. Este trabajo se centra en su estudio y soluciones, aplicando estos principios a situaciones prácticas y avanzadas.&lt;br /&gt;
&lt;br /&gt;
==Modelización de los desplazamientos transversales== &lt;br /&gt;
Para modelar el comportamiento de los desplazamientos transversales de la cuerda vibrante, utilizamos la ecuación de ondas en una dimensión. Dado que la cuerda está fija en los extremos y tiene una densidad &amp;lt;math&amp;gt; d &amp;lt;/math&amp;gt; y tensión constante &amp;lt;math&amp;gt; \tau_0 &amp;lt;/math&amp;gt; de manera que la velocidad de propagación es &amp;lt;math&amp;gt; c = \tau_0/d = 1 &amp;lt;/math&amp;gt;, la ecuación de ondas se simplifica.&lt;br /&gt;
&lt;br /&gt;
La ecuación de ondas en una dimensión para los desplazamientos transversales &amp;lt;math&amp;gt; u(x,t) &amp;lt;/math&amp;gt; de la cuerda es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{\partial^2 u}{\partial t^2} = c^2 \frac{\partial^2 u}{\partial x^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que &amp;lt;math&amp;gt; c = 1 &amp;lt;/math&amp;gt;, la ecuación se reduce a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta ecuación diferencial parcial (EDP) debe acompañarse de las condiciones de contorno y las condiciones iniciales para estar completamente especificada.&lt;br /&gt;
&lt;br /&gt;
===Condiciones de contorno===&lt;br /&gt;
Dado que la cuerda está fija en los extremos, las condiciones de contorno son:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(0, t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(1, t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Condiciones iniciales===&lt;br /&gt;
Las condiciones iniciales especifican la posición inicial de la cuerda &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; y su velocidad inicial o impulso &amp;lt;math&amp;gt; u_1(x) &amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;u(x, 0) = u_0(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; \frac{\partial u}{\partial t}(x, 0) = u_1(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
===Sistema de EDP===&lt;br /&gt;
Juntando la ecuación de ondas con las condiciones de contorno e iniciales, el sistema completo que modela el comportamiento de los desplazamientos transversales de la cuerda es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}&lt;br /&gt;
&lt;br /&gt;
\frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2}, &amp;amp; 0 &amp;lt; x &amp;lt; 1, \ t &amp;gt; 0 \\&lt;br /&gt;
u(0, t) = 0, &amp;amp; t \geq 0 \\&lt;br /&gt;
u(1, t) = 0, &amp;amp; t \geq 0 \\&lt;br /&gt;
u(x, 0) = u_0(x), &amp;amp; 0 \leq x \leq 1 \\&lt;br /&gt;
\frac{\partial u}{\partial t}(x, 0) = u_1(x), &amp;amp; 0 \leq x \leq 1&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este sistema describe completamente la evolución temporal de los desplazamientos transversales de una cuerda vibrante con los extremos fijos, dada su posición e impulso iniciales.&lt;br /&gt;
&lt;br /&gt;
===Resolución del sistema por separación de variables en términos de los coeficientes de Fourier de los datos iniciales===&lt;br /&gt;
Primero, planteamos la solución de la ecuación de onda mediante separación de variables. Asumimos que la solución \( u(x,t) \) se puede escribir como un producto de dos funciones independientes, una que depende solo de \( x \) y otra que depende solo de \( t \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x, t) = X(x) T(t) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituimos esta forma en la ecuación de onda:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{\partial^2 (X(x) T(t))}{\partial t^2} = \frac{\partial^2 (X(x) T(t))}{\partial x^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto se simplifica a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;X(x) \frac{d^2 T(t)}{dt^2} = T(t) \frac{d^2 X(x)}{dx^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dividimos ambos lados por &amp;lt;math&amp;gt;X(x) T(t) &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{1}{T(t)} \frac{d^2 T(t)}{dt^2} = \frac{1}{X(x)} \frac{d^2 X(x)}{dx^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dado que el lado izquierdo depende solo de \( t \) y el lado derecho solo de \( x \), ambos deben ser iguales a una constante que llamaremos \(-\lambda\). Esto nos lleva a dos ecuaciones ordinarias:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{d^2 T(t)}{dt^2} + \lambda T(t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{d^2 X(x)}{dx^2} + \lambda X(x) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para satisfacer las condiciones de contorno \( u(0, t) = 0 \) y \( u(1, t) = 0 \), tenemos:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;X(0) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;X(1) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La ecuación para \( X(x) \) tiene la solución general:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;X(x) = A \sin(\sqrt{\lambda} x) + B \cos(\sqrt{\lambda} x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando las condiciones de contorno, obtenemos que \( B = 0 \) y que \( \sqrt{\lambda} \) debe ser un múltiplo de \( \pi \):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \sqrt{\lambda} = n \pi \quad \text{para} \quad n = 1, 2, 3, \ldots &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por lo tanto, \( \lambda = (n \pi)^2 \) y las funciones propias son:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; X_n(x) = \sin(n \pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La ecuación para \( T(t) \) se convierte en:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{d^2 T_n(t)}{dt^2} + (n \pi)^2 T_n(t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con la solución general:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; T_n(t) = C_n \cos(n \pi t) + D_n \sin(n \pi t) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Combinando \( X(x) \) y \( T(t) \), la solución general para \( u(x,t) \) es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x, t) = \sum_{n=1}^{\infty} \left( A_n \cos(n \pi t) + B_n \sin(n \pi t) \right) \sin(n \pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde \( A_n \) y \( B_n \) son coeficientes a determinar a partir de las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
### Determinación de los coeficientes \( A_n \) y \( B_n \)&lt;br /&gt;
&lt;br /&gt;
Las condiciones iniciales son:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x, 0) = u_0(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial u}{\partial t}(x, 0) = u_1(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para \( t = 0 \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x, 0) = \sum_{n=1}^{\infty} A_n \sin(n \pi x) = u_0(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Usamos la ortogonalidad de las funciones seno para determinar \( A_n \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; A_n = 2 \int_0^1 u_0(x) \sin(n \pi x) \, dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la derivada temporal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial u}{\partial t}(x, 0) = \sum_{n=1}^{\infty} B_n n \pi \cos(n \pi \cdot 0) \sin(n \pi x) = u_1(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B_n n \pi = 2 \int_0^1 u_1(x) \sin(n \pi x) \, dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por lo tanto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B_n = \frac{2}{n \pi} \int_0^1 u_1(x) \sin(n \pi x) \, dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finalmente, la solución de la ecuación de onda en términos de los coeficientes de Fourier de los datos iniciales es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x, t) = \sum_{n=1}^{\infty} \left( \left(2 \int_0^1 u_0(x) \sin(n \pi x) \, dx \right) \cos(n \pi t) + \left(\frac{2}{n \pi} \int_0^1 u_1(x) \sin(n \pi x) \, dx \right) \sin(n \pi t) \right) \sin(n \pi x) &lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Esta expresión proporciona la solución completa de la ecuación de onda en función de las condiciones iniciales \( u_0(x) \) y \( u_1(x) \).&lt;br /&gt;
&lt;br /&gt;
===== Ejemplo de solución periódica en tiempo =====&lt;br /&gt;
&lt;br /&gt;
En esta parte del documento para comprender lo anteriormente explicado de manera óptima se va a proceder a analizar una serie de ejemplo. El primero de ellos se trata de la representación gráfica de una solución periódica en tiempo. Esta viene dada suponiendo que los datos iniciales son &amp;lt;math&amp;gt;u_0(x)=e^{-100(x-\frac{1}{2})^2}&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;u_1(x)=0&amp;lt;/math&amp;gt;. Es por ello que la representación de la solución en el intervalo t ∈ [0, 2] es la siguiente:&lt;br /&gt;
[[Archivo:ondaperiodicaALA.png|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para la obtención de esta representación se ha creado el siguiente código en Matlab:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=% &lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestros datos iniciales:&lt;br /&gt;
u_0=@(x) (exp(-100.*(x-1/2).^2));&lt;br /&gt;
u_1=@(x) (0);&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestro intervalo de tiempo t:&lt;br /&gt;
t=0:0.001:2;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestro intervalo x:&lt;br /&gt;
x=0:0.001:1;&lt;br /&gt;
&lt;br /&gt;
% Definimos el número de términos de la serie a dibujar:&lt;br /&gt;
n=50;&lt;br /&gt;
&lt;br /&gt;
% Calculamos los términos de fourier asociados a u_0:&lt;br /&gt;
ak_0=zeros(n,1);&lt;br /&gt;
bk_0=zeros(n,1);&lt;br /&gt;
ck_0=zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
f_sen_0=@(x,k) u_0(x).*sin(k*pi*x);&lt;br /&gt;
f_cos_0=@(x,k) u_0(x).*cos(k*pi*x);&lt;br /&gt;
f_medio_0=@(x,k) u_0(x).*1/2;&lt;br /&gt;
&lt;br /&gt;
for k=1:n&lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_sen_0=f_sen_0(x,k);&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_cos:&lt;br /&gt;
    y_cos_0=f_cos_0(x,k);&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_medio_0=f_medio_0(x);&lt;br /&gt;
&lt;br /&gt;
    ak_0(k)=trapz(x,y_sen_0);&lt;br /&gt;
    bk_0(k)=trapz(x,y_cos_0);&lt;br /&gt;
    ck_0(k)=trapz(x,y_medio_0);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos los términos de fourier asociados a u_1:&lt;br /&gt;
ak_1=zeros(n,1);&lt;br /&gt;
bk_1=zeros(n,1);&lt;br /&gt;
ck_1=zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
f_sen_1=@(x,k) u_1(x).*sin(k*pi*x);&lt;br /&gt;
f_cos_1=@(x,k) u_1(x).*cos(k*pi*x);&lt;br /&gt;
f_medio_1=@(x,k) u_1(x).*1/2;&lt;br /&gt;
&lt;br /&gt;
for k=1:n&lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_sen_1=f_sen_1(x,k);&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_cos:&lt;br /&gt;
    y_cos_1=f_cos_1(x,k);&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_medio_1=f_medio_1(x);&lt;br /&gt;
&lt;br /&gt;
    ak_1(k)=trapz(x,y_sen_1);&lt;br /&gt;
    bk_1(k)=trapz(x,y_cos_1);&lt;br /&gt;
    %ck_1(k)=trapz(x,y_medio_1);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Sustituimos en la solución calculada por separación de variables:&lt;br /&gt;
u=@(xx,tt) 0;&lt;br /&gt;
for i=1:n&lt;br /&gt;
    u=@(xx,tt) u(xx,tt) + (ak_0(i).*cos(i*pi*tt)+bk_1(i).*sin(i*pi*tt)).*sin(i*pi*xx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficamos la solución:&lt;br /&gt;
[X,T]=meshgrid(x,t);&lt;br /&gt;
surf(X,T,u(X,T),'EdgeColor','flat')&lt;br /&gt;
title('Solución ecuación de ondas')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
   &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como se observa en la imagen anterior la función muestra un comportamiento que se repite regularmente con el tiempo. A este tipo de funciones se les denomina periódicas en tiempo. Esto se puede observar de manera óptima para su comprensión en la siguiente gráfica, en la cual se observa el comportamiento explicado a anteriormente cuyo periodo es 2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:onda_ejercicio_3.gif|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para la obtención de esta animación se ha hecho uso del siguiente cógido:&lt;br /&gt;
{{matlab|codigo=% &lt;br /&gt;
%% Ejercicio 3 animación&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestros datos iniciales:&lt;br /&gt;
u_0=@(x) (exp(-100.*(x-1/2).^2));&lt;br /&gt;
u_1=@(x) (0);&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestro intervalo de tiempo t:&lt;br /&gt;
t=0:0.001:2;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestro intervalo x:&lt;br /&gt;
x=0:0.001:1;&lt;br /&gt;
&lt;br /&gt;
% Definimos el número de términos de la serie a dibujar:&lt;br /&gt;
n=50;&lt;br /&gt;
&lt;br /&gt;
% Calculamos los términos de fourier asociados a u_0:&lt;br /&gt;
ak_0=zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
f_sen_0=@(x,k) u_0(x).*sin(k*pi*x);&lt;br /&gt;
&lt;br /&gt;
for k=1:n&lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_sen_0=f_sen_0(x,k);&lt;br /&gt;
&lt;br /&gt;
    ak_0(k)=2.*trapz(x,y_sen_0);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos los términos de fourier asociados a u_1:&lt;br /&gt;
bk_1=zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
f_cos_1=@(x,k) u_1(x).*cos(k*pi*x);&lt;br /&gt;
&lt;br /&gt;
for k=1:n&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_cos:&lt;br /&gt;
    y_cos_1=f_cos_1(x,k);&lt;br /&gt;
            &lt;br /&gt;
    bk_1(k)=2/(k*pi)*trapz(x,y_cos_1);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Sustituimos en la solución calculada por separación de variables:&lt;br /&gt;
u=@(xx,tt) 0;&lt;br /&gt;
for i=1:n&lt;br /&gt;
    u=@(xx,tt) u(xx,tt) + (ak_0(i).*cos(i*pi*tt)+bk_1(i).*sin(i*pi*tt)).*sin(i*pi*xx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficamos la solución:&lt;br /&gt;
% Crear un objeto de VideoWriter para el video&lt;br /&gt;
video = VideoWriter('onda_ejercicio_3.avi');&lt;br /&gt;
video.FrameRate = 100;&lt;br /&gt;
open(video);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
&lt;br /&gt;
    plot(x,u(x,t(i)))&lt;br /&gt;
    xlim([0,1])&lt;br /&gt;
    ylim([-1.5,1.5])&lt;br /&gt;
    xlabel('x')&lt;br /&gt;
    ylabel('u(x,t)')&lt;br /&gt;
    title(['Solución de la ecuación de onda en t=', num2str(t(i))])&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    % Capturar el frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
    &lt;br /&gt;
    % Limpiar la figura para la siguiente iteración, excepto los ejes&lt;br /&gt;
    clf; % Clear current figure&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Cerrar el objeto de video&lt;br /&gt;
close(video);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de la onda viajera ====&lt;br /&gt;
&lt;br /&gt;
===== Condiciones Dirichlet  =====&lt;br /&gt;
En este caso se va a tratar el ejemplo de una onda viajera en un solo sentido denotada por &amp;lt;math&amp;gt; u(x,t)=f(x-t)&amp;lt;/math&amp;gt;. Es por ello que se toman como datos iniciales &amp;lt;math&amp;gt;u_0(x)=f(x)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;u_1(x)=f'(x)&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt; f(x)=e^{-100(x-\frac{1}{2})^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se ha creado un código en MATLAB para obtener la siguiente respresentación en el mismo intervalo:&lt;br /&gt;
[[Archivo:ondaejercicio43d.png|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se observa que el tiempo de llegada de la onda de un extremo al otro es una unidad de tiempo. A su vez puesto que la cuerda mide una unidad de espacio se concluye que la velocidad de propagación es 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para la obtención de esta representación se ha creado el siguiente código en Matlab:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=% &lt;br /&gt;
&lt;br /&gt;
   %% Ejercicio 4&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Se definen las condiciones iniciales&lt;br /&gt;
u_0 = @(x) exp(-100*(x-1/2).^2);&lt;br /&gt;
u_1 = @(x) 200*(x-1/2).* exp(-100.* (x-1/2).^2);&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos de tiempo y espacio&lt;br /&gt;
t = linspace(0,2,1000);&lt;br /&gt;
x = linspace(0,1,1000);&lt;br /&gt;
&lt;br /&gt;
% Número de términos de la serie a dibuja&lt;br /&gt;
n = 50;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Cálculo de coeficientes de Fourier asociados a u_0&lt;br /&gt;
ak_0 = zeros(n,1);&lt;br /&gt;
for k = 1:n&lt;br /&gt;
    f_sen_0 = @(x) u_0(x).*sin(k*pi*x);&lt;br /&gt;
&lt;br /&gt;
    ak_0(k) = 2*trapz(x, f_sen_0(x));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Cálculo de coeficientes de Fourier asociados a u_1&lt;br /&gt;
bk_1 = zeros(n,1);&lt;br /&gt;
for k = 1:n&lt;br /&gt;
    f_sen_1 = @(x) u_1(x).*sin(k*pi*x);&lt;br /&gt;
&lt;br /&gt;
    bk_1(k) =(2/(k*pi))*trapz(x, f_sen_1(x));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Sustituimos en la solución calculada por separación de variables&lt;br /&gt;
u = @(xx,tt) 0;&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    u = @(xx,tt) u(xx,tt) + (ak_0(i)*cos(i*pi*tt) + bk_1(i)*sin(i*pi*tt)).*sin(i*pi*xx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficamos la solución&lt;br /&gt;
[X, T] = meshgrid(x, t);&lt;br /&gt;
surf(X, T, u(X, T), 'EdgeColor', 'flat')&lt;br /&gt;
title('Solución ecuación de ondas')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación, al igual que en el apartado anterior, se dispone una representación del comportamiento de la onda en función del tiempo.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:onda_ejercicio_4.gif|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como se observa, cuando la onda alcanza la frontera la solución se anula la solución para todo tiempo.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=% &lt;br /&gt;
%% Ejercicio 4 animación&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Se definen las condiciones iniciales&lt;br /&gt;
u_0 = @(x) exp(-100*(x-1/2).^2);&lt;br /&gt;
u_1 = @(x) 200*(x-1/2).* exp(-100.* (x-1/2).^2);&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos de tiempo y espacio&lt;br /&gt;
t = linspace(0,2,1000);&lt;br /&gt;
x = linspace(0,1,1000);&lt;br /&gt;
&lt;br /&gt;
% Número de términos de la serie a dibuja&lt;br /&gt;
n = 50;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Cálculo de coeficientes de Fourier asociados a u_0&lt;br /&gt;
ak_0 = zeros(n,1);&lt;br /&gt;
for k = 1:n&lt;br /&gt;
    f_sen_0 = @(x) u_0(x).*sin(k*pi*x);&lt;br /&gt;
&lt;br /&gt;
    ak_0(k) = 2*trapz(x, f_sen_0(x));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Cálculo de coeficientes de Fourier asociados a u_1&lt;br /&gt;
bk_1 = zeros(n,1);&lt;br /&gt;
for k = 1:n&lt;br /&gt;
    f_sen_1 = @(x) u_1(x).*sin(k*pi*x);&lt;br /&gt;
&lt;br /&gt;
    bk_1(k) =(2/(k*pi))*trapz(x, f_sen_1(x));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Sustituimos en la solución calculada por separación de variables&lt;br /&gt;
u = @(xx,tt) 0;&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    u = @(xx,tt) u(xx,tt) + (ak_0(i)*cos(i*pi*tt) + bk_1(i)*sin(i*pi*tt)).*sin(i*pi*xx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Crear un objeto de VideoWriter para el video&lt;br /&gt;
video = VideoWriter('onda_ejercicio_4.avi');&lt;br /&gt;
video.FrameRate = 100;&lt;br /&gt;
open(video);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
&lt;br /&gt;
    plot(x,u(x,t(i)))&lt;br /&gt;
    xlim([0,1])&lt;br /&gt;
    ylim([-1.5,1.5])&lt;br /&gt;
    xlabel('x')&lt;br /&gt;
    ylabel('u(x,t)')&lt;br /&gt;
    title(['Solución de la ecuación de onda en t=', num2str(t(i))])&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    % Capturar el frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
    &lt;br /&gt;
    % Limpiar la figura para la siguiente iteración, excepto los ejes&lt;br /&gt;
    clf; % Clear current figure&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Cerrar el objeto de video&lt;br /&gt;
close(video);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== Condiciones Neumann =====&lt;br /&gt;
&lt;br /&gt;
A continuación, para comprender mejor la diferencia respecto a las condiciones fronteras, se va a resolver el mismo problema cambiando las condiciones Dirichlet a condiciones Neumann, es decir &amp;lt;math&amp;gt;u_0(0,t)=u_1(1,t)=0&amp;lt;/math&amp;gt;. De esta manera se pretende resolver el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
\begin{cases}&lt;br /&gt;
u_{tt} - u_{xx} = 0 \\&lt;br /&gt;
u_x(0, t) = u_x(1, t) = 0 \\&lt;br /&gt;
u(x, 0) = e^{-100(x - \frac{1}{2})^2} \\&lt;br /&gt;
u_t(x, 0) = 200(x - \frac{1}{2})e^{-100(x - \frac{1}{2})^2}&lt;br /&gt;
\end{cases}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este caso, aplicando separación de variables, obtenemos que la solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x, t) = \sum_{k=1}^{\infty} \left[ a_k \cos(k\pi x) \cos(k\pi t) + b_k \cos(k\pi x) \sin(k\pi t) \right] &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
siendo&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;a_k = \frac{\int_{0}^{1} \cos(k\pi x) u_0(x) \, dx}{\int_{0}^{1} \cos^2(k\pi x) \, dx} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
y&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;b_k = \frac{\int_{0}^{1} \cos(k\pi x) u_1(x) \, dx}{\int_{0}^{1} \cos^2(k\pi x) \, dx} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La representación obtenida mediante el código que se presenta posteriormente es la siguiente:&lt;br /&gt;
[[Archivo:ondaejercicio5ALA.png|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=%&lt;br /&gt;
%% Ejercicio 5&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Definimos f(x)&lt;br /&gt;
f = @(x) exp(-100 * (x - 1/2).^2);&lt;br /&gt;
&lt;br /&gt;
% -Derivada de f(x)&lt;br /&gt;
df = @(x) 200 * (x - 0.5) .* exp(-100 * (x - 0.5).^2);&lt;br /&gt;
&lt;br /&gt;
% Definimos el número de terminos de la serie&lt;br /&gt;
n=50;&lt;br /&gt;
&lt;br /&gt;
% Definimos el intervalo de tiempo y espacio&lt;br /&gt;
x = linspace(0, 1, 200);&lt;br /&gt;
t_values = linspace(0, 2, 200); % Evaluamos desde t=0 hasta t=2&lt;br /&gt;
&lt;br /&gt;
% Calculamos los coeficientes de Fourier para Neumann&lt;br /&gt;
a_k =zeros(n,1);&lt;br /&gt;
b_k =zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
for i=1:n&lt;br /&gt;
    a_k(i) =2 * trapz(x, f(x) .* cos(i * pi * x));&lt;br /&gt;
    b_k(i) =2 / (i * pi) * trapz(x, df(x) .* cos(i * pi * x));&lt;br /&gt;
end&lt;br /&gt;
% Calculamos la solución de la ecuación de onda&lt;br /&gt;
u=@(xx,tt) 0;&lt;br /&gt;
for i=1:n&lt;br /&gt;
    u=@(xx,tt) u(xx,tt) + (a_k(i).*cos(i*pi*tt)+b_k(i).*sin(i*pi*tt)).*cos(i*pi*xx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos u(X, T) para todos los puntos de la malla&lt;br /&gt;
[X, T] = meshgrid(x, t_values);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
surf(X, T, u(X,T), 'EdgeColor', 'flat')&lt;br /&gt;
title('Solución de la ecuación de onda con condiciones Neumann')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u(x, t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este caso, para su correcta visualización, se ha vuelto a crear la siguiente representación:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:onda_condiciones_newman_ejercicio_5_buena.gif|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
Como se observa el periodo en este caso vuelve a ser 2 y puesto que los extremos no son fijos porque tenemos de datos las derivadas la onda varía en la frontera.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=%&lt;br /&gt;
%% Ejercicio 5 animación&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Definimos f(x)&lt;br /&gt;
f = @(x) exp(-100 * (x - 1/2).^2);&lt;br /&gt;
&lt;br /&gt;
% -Derivada de f(x)&lt;br /&gt;
df = @(x) 200 * (x - 0.5) .* exp(-100 * (x - 0.5).^2);&lt;br /&gt;
&lt;br /&gt;
% Definimos el número de terminos de la serie&lt;br /&gt;
n=50;&lt;br /&gt;
&lt;br /&gt;
% Definimos el intervalo de tiempo y espacio&lt;br /&gt;
x = linspace(0, 1, 200);&lt;br /&gt;
t_values = linspace(0, 2, 200); % Evaluamos desde t=0 hasta t=2&lt;br /&gt;
&lt;br /&gt;
% Calculamos los coeficientes de Fourier para Neumann&lt;br /&gt;
a_k =zeros(n,1);&lt;br /&gt;
b_k =zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
for i=1:n&lt;br /&gt;
    a_k(i) =2 * trapz(x, f(x) .* cos(i * pi * x));&lt;br /&gt;
    b_k(i) =2 / (i * pi) * trapz(x, df(x) .* cos(i * pi * x));&lt;br /&gt;
end&lt;br /&gt;
% Calculamos la solución de la ecuación de onda&lt;br /&gt;
u=@(xx,tt) 0;&lt;br /&gt;
for i=1:n&lt;br /&gt;
    u=@(xx,tt) u(xx,tt) + (a_k(i).*cos(i*pi*tt)+b_k(i).*sin(i*pi*tt)).*cos(i*pi*xx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Crear un objeto de VideoWriter para el video&lt;br /&gt;
video = VideoWriter('onda_condiciones_newman_ejercicio_5_buena.avi');&lt;br /&gt;
video.FrameRate = 100;&lt;br /&gt;
open(video);&lt;br /&gt;
% Graficamos la solución en diferentes tiempos&lt;br /&gt;
figure&lt;br /&gt;
&lt;br /&gt;
for t = t_values&lt;br /&gt;
    u_values = u(x, t);&lt;br /&gt;
    plot(x, u_values)&lt;br /&gt;
    xlim([0, 1])&lt;br /&gt;
    ylim([-0.5, 2])&lt;br /&gt;
    title(['Solución de la ecuación de onda con condiciones Neumann en t=', num2str(t)])&lt;br /&gt;
    xlabel('x')&lt;br /&gt;
    ylabel('u(x, t)')&lt;br /&gt;
    % Capturar el frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
    clf&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Cerrar el objeto de video&lt;br /&gt;
close(video);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Soluciones fundamentales en dimensiones 1, 2 y 3 ==&lt;br /&gt;
La solución fundamental resuelve el sistema,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\left \{ \begin{array}{ll}  &lt;br /&gt;
u_{tt}-c^2\Delta u=0, \quad x \in \mathbb{R}^n, t&amp;gt;0, \\&lt;br /&gt;
u(x,0)=0, u_t(x,0)=\delta (x), \quad x \in \mathbb{R}^n,&lt;br /&gt;
\end{array} \right.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En esta parte del trabajo vamos a dibujar la solución fundamental de la ecuación de ondas en dimensiones 1, 2 y 3. Cuyas expresiones son las siguientes.&lt;br /&gt;
&lt;br /&gt;
Dimensión &amp;lt;math&amp;gt;n=1&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; K_1(x,t) =\frac{1}{2c}\textbf{1}_{[-ct,ct]}(x)=\frac{1}{2c}\textbf{1}_{[0,ct]}(|x|). &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dimensión &amp;lt;math&amp;gt;n=2&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; K_2(x,t)=\frac{1}{2\pi c \sqrt{c^2t^2-|x|^2}} \chi_{B(0,ct)}(x)=\frac{1}{2\pi c \sqrt{c^2t^2-|x|^2}} \textbf{1}_{[0,ct]}(|x|). &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dimensión &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; K_3(x,t)=\frac{\delta (|x|-ct)}{4\pi c|x|}, t&amp;gt;0. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para dibujarlas, es primero necesario hacer unos cambios en los casos de dimensiones 2 y 3.  &lt;br /&gt;
&lt;br /&gt;
* En el caso de la dimensión 2, encontramos una singularidad en el denominador de la función de la solución fundamental. Esta ocurre cuando ∣x∣=ct, lo que resulta en una división por cero. Para evitar esta singularidad, se agrega un término de regularización ϵ en el denominador. Esto asegura que la función sea suave y bien comportada en todas partes, incluidos los puntos cercanos a ∣x∣=ct. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  K^{ε}_{2} (x,t) = \frac{1}{ε + 2\pi c \sqrt(c^2 t^2 - ∣x∣^2)} ⲭ_{B(0,ct)}(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Para la representación del caso de dimensión 3 se ha sustituido la delta de Didac por su aproximación,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \delta (s) ≈ \phi_k (s) = \sqrt(\frac{k}{\pi})e^{(-ks^2)}  &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con estos cambios, representamos las 3 soluciones fundamentales observando que estas son radiales. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:solucion_fundamental_1.png|miniaturadeimagen|centro]]&lt;br /&gt;
[[Archivo:solucion_fundamental_2.png|miniaturadeimagen|centro]]&lt;br /&gt;
[[Archivo:solucion_fundamental_3.png|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
Que las soluciones fundamentales sean &amp;quot;radiales&amp;quot; significa que son simétricas respecto al origen en coordenadas radiales. Dicha periodicidad es clara en las gráficas anteriores. Esto implica que el valor de la solución en un punto depende únicamente de la distancia radial desde el origen, y no de la dirección en la que se mida esa distancia. &lt;br /&gt;
&lt;br /&gt;
El código empleado para esta representación ha sido el siguiente.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=  &lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Dimensión 1&lt;br /&gt;
% Definimos los intervalos x,t:&lt;br /&gt;
x=-1:0.001:1;&lt;br /&gt;
t=0:0.001:1;&lt;br /&gt;
&lt;br /&gt;
% Creación de la rejilla&lt;br /&gt;
[X,T] = meshgrid(x,t);&lt;br /&gt;
&lt;br /&gt;
% Velocidad de propagación&lt;br /&gt;
c = 1;&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución fundamental&lt;br /&gt;
K = (X &amp;lt;= c*T) .* (X &amp;gt;= -c*T) / (2*c);&lt;br /&gt;
&lt;br /&gt;
% Visualización de la solución fundamental&lt;br /&gt;
figure(&amp;quot;Name&amp;quot;,'Solución fundamental dimensión 1')&lt;br /&gt;
surf(X, T, K,'EdgeColor','interp');&lt;br /&gt;
title(&amp;quot;Solución fundamental en dimensión 1&amp;quot;);&lt;br /&gt;
xlabel(&amp;quot;x&amp;quot;);&lt;br /&gt;
ylabel(&amp;quot;t&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
% Dimensión 2&lt;br /&gt;
% Definimos nuestros intervalos&lt;br /&gt;
r=0:0.001:1;&lt;br /&gt;
t=0:0.001:1;&lt;br /&gt;
&lt;br /&gt;
% Creamos la malla&lt;br /&gt;
[R,T]=meshgrid(r,t);&lt;br /&gt;
&lt;br /&gt;
% Velocidad de propagación&lt;br /&gt;
c=1;&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución fundamental&lt;br /&gt;
K=(R&amp;lt;=c*T)./(eps + 2*pi*c.*sqrt(c^2*T.^2-R.^2));&lt;br /&gt;
&lt;br /&gt;
figure(&amp;quot;Name&amp;quot;,'Solución fundamental dimensión 2')&lt;br /&gt;
surf(R,T,K,'EdgeColor','flat')&lt;br /&gt;
title(&amp;quot;Solución fundamental de dimensión 2&amp;quot;)&lt;br /&gt;
xlabel(&amp;quot;r&amp;quot;)&lt;br /&gt;
ylabel(&amp;quot;t&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestros intervalos&lt;br /&gt;
r=0:0.001:1;&lt;br /&gt;
t=0:0.001:1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[R,T]=meshgrid(r,t);&lt;br /&gt;
&lt;br /&gt;
c=1;                     % Velocidad de propagación &lt;br /&gt;
k=1000;                  &lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución fundamental&lt;br /&gt;
K=sqrt(k/pi).*exp(-k * (R-c*T).^2)./(4*pi*c*R);&lt;br /&gt;
&lt;br /&gt;
figure(&amp;quot;Name&amp;quot;,'Solución fundamental dimensión 3')&lt;br /&gt;
surf(R,T,K,'EdgeColor','flat')&lt;br /&gt;
title(&amp;quot;Solución fundamental de dimensión 3&amp;quot;)&lt;br /&gt;
xlabel(&amp;quot;r&amp;quot;)&lt;br /&gt;
ylabel(&amp;quot;t&amp;quot;)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== Ejemplo en dimesión 2 =====&lt;br /&gt;
Veamos a continuación el sistema que resuelve la solución fundamental en dimensión 2 en una bola de radio &amp;lt;math&amp;gt; \frac{1}{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left \{ \begin{array}{ll}  &lt;br /&gt;
u_{tt}-c^2\Delta u=0, \quad x \in \mathbb{R}^2, t&amp;gt;0, \\&lt;br /&gt;
u(x,0)=0, u_t(x,0)=h (x) = \chi _{B(0,\frac{1}{2})}(x), \quad x \in \mathbb{R}^2&lt;br /&gt;
\end{array} \right.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso, la solución fundamental viene dada por la convolución,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x,t)=\int_{\mathbb{R}^2}K_2 (x-y, t)h(y) dy &amp;lt;/math&amp;gt;. &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujamos las soluciones para t = 0, 0.5, 1, 2.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:ondasIIt0.png|miniaturadeimagen|centro]]&lt;br /&gt;
[[Archivo:ondasIIt05.png|miniaturadeimagen|centro]]&lt;br /&gt;
[[Archivo:ondasIIt1.png|miniaturadeimagen|centro]]&lt;br /&gt;
[[Archivo:ondasIIt2.png|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A diferencia de lo visto en el caso general, aquí no podemos apreciar periodicidad. Sin embargo, el sistema se puede expresar en función de radio únicamente, es decir, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left \{ \begin{array}{ll}  &lt;br /&gt;
u_{tt}-c^2(\frac{1}{r}u_r+u_{rr})=0, \quad r \geq 0, t&amp;gt;0, \\&lt;br /&gt;
u(r,0)=0, \\&lt;br /&gt;
u_t(r,0)=h (r) = \textbf{1}_{[0,\frac{1}{2}]}(r), \quad x \in \mathbb{R}^2&lt;br /&gt;
\end{array} \right.  &lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:OndasII2t2.png&amp;diff=72794</id>
		<title>Archivo:OndasII2t2.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:OndasII2t2.png&amp;diff=72794"/>
				<updated>2024-05-26T17:29:51Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:OndasII2t1.png&amp;diff=72793</id>
		<title>Archivo:OndasII2t1.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:OndasII2t1.png&amp;diff=72793"/>
				<updated>2024-05-26T17:29:38Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:OndasII2t05.png&amp;diff=72792</id>
		<title>Archivo:OndasII2t05.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:OndasII2t05.png&amp;diff=72792"/>
				<updated>2024-05-26T17:29:26Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:OndasII2t0.png&amp;diff=72791</id>
		<title>Archivo:OndasII2t0.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:OndasII2t0.png&amp;diff=72791"/>
				<updated>2024-05-26T17:29:09Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Ondaejercicio43d.png&amp;diff=72789</id>
		<title>Archivo:Ondaejercicio43d.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Ondaejercicio43d.png&amp;diff=72789"/>
				<updated>2024-05-26T17:28:45Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Ondaejercicio5ALA.png&amp;diff=72788</id>
		<title>Archivo:Ondaejercicio5ALA.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Ondaejercicio5ALA.png&amp;diff=72788"/>
				<updated>2024-05-26T17:28:31Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Onda_ejercicio_4.gif&amp;diff=72787</id>
		<title>Archivo:Onda ejercicio 4.gif</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Onda_ejercicio_4.gif&amp;diff=72787"/>
				<updated>2024-05-26T17:27:56Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Onda_condiciones_newman_ejercicio_5_buena.gif&amp;diff=72786</id>
		<title>Archivo:Onda condiciones newman ejercicio 5 buena.gif</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Onda_condiciones_newman_ejercicio_5_buena.gif&amp;diff=72786"/>
				<updated>2024-05-26T17:27:39Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Onda_ejercicio_3.gif&amp;diff=72785</id>
		<title>Archivo:Onda ejercicio 3.gif</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Onda_ejercicio_3.gif&amp;diff=72785"/>
				<updated>2024-05-26T17:27:26Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas&amp;diff=72784</id>
		<title>Ecuación de ondas</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas&amp;diff=72784"/>
				<updated>2024-05-26T17:26:12Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: /* Condiciones Neumann */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación de Ondas. Grupo ALA | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Lucía Amores, Aitana Guill y Andrea Navarro}}&lt;br /&gt;
&lt;br /&gt;
== Introducción ==&lt;br /&gt;
Este trabajo analiza la ecuación de ondas en una cuerda fija en los extremos del intervalo [0,1], con velocidad de propagación 𝑐=1. Incluiremos el sistema que describe el movimiento, así como su solución por separación de variables. Además, consideraremos ejemplos específicos de simulaciones para observar fenómenos como la periodicidad y ondas viajeras. Finalmente, compararemos resultados cambiando las condiciones de frontera a Neumann. &lt;br /&gt;
&lt;br /&gt;
A parte de esto, estudiaremos la solución fundamental de la ecuación de ondas en dimensiones 1, 2 y 3, aplicando un impulso inicial en 𝑥=0 y dibujando estas soluciones en la variable radial para comprender el principio de Huygens.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Contexto Histórico ==&lt;br /&gt;
La ecuación de ondas, fundamental en física y matemáticas, se formuló en el siglo XVIII por Jean le Rond d'Alembert y Leonhard Euler, quienes investigaron la vibración de cuerdas. En el siglo XIX, Joseph Fourier revolucionó su análisis al desarrollar la teoría de series de Fourier, facilitando la solución de ecuaciones diferenciales parciales mediante la separación de variables. &lt;br /&gt;
&lt;br /&gt;
El principio de Huygens, propuesto por Christiaan Huygens en el siglo XVII, establece que cada punto de un frente de onda actúa como una fuente de ondas secundarias. Este principio es esencial para comprender la propagación de ondas y las soluciones de la ecuación en diversas dimensiones. &lt;br /&gt;
&lt;br /&gt;
En el siglo XX y XXI, la teoría de la ecuación de ondas se ha ampliado a campos como la acústica, óptica y telecomunicaciones. Los métodos numéricos modernos permiten simular la propagación de ondas en medios complejos, mejorando nuestra comprensión y aplicación en problemas prácticos. &lt;br /&gt;
&lt;br /&gt;
Hoy, la ecuación de ondas es clave para modelar fenómenos desde vibraciones de cuerdas hasta ondas sísmicas y electromagnéticas, siendo esencial en física teórica, ingeniería y tecnologías modernas. Este trabajo se centra en su estudio y soluciones, aplicando estos principios a situaciones prácticas y avanzadas.&lt;br /&gt;
&lt;br /&gt;
==Modelización de los desplazamientos transversales== &lt;br /&gt;
Para modelar el comportamiento de los desplazamientos transversales de la cuerda vibrante, utilizamos la ecuación de ondas en una dimensión. Dado que la cuerda está fija en los extremos y tiene una densidad &amp;lt;math&amp;gt; d &amp;lt;/math&amp;gt; y tensión constante &amp;lt;math&amp;gt; \tau_0 &amp;lt;/math&amp;gt; de manera que la velocidad de propagación es &amp;lt;math&amp;gt; c = \tau_0/d = 1 &amp;lt;/math&amp;gt;, la ecuación de ondas se simplifica.&lt;br /&gt;
&lt;br /&gt;
La ecuación de ondas en una dimensión para los desplazamientos transversales &amp;lt;math&amp;gt; u(x,t) &amp;lt;/math&amp;gt; de la cuerda es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{\partial^2 u}{\partial t^2} = c^2 \frac{\partial^2 u}{\partial x^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que &amp;lt;math&amp;gt; c = 1 &amp;lt;/math&amp;gt;, la ecuación se reduce a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta ecuación diferencial parcial (EDP) debe acompañarse de las condiciones de contorno y las condiciones iniciales para estar completamente especificada.&lt;br /&gt;
&lt;br /&gt;
===Condiciones de contorno===&lt;br /&gt;
Dado que la cuerda está fija en los extremos, las condiciones de contorno son:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(0, t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(1, t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Condiciones iniciales===&lt;br /&gt;
Las condiciones iniciales especifican la posición inicial de la cuerda &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; y su velocidad inicial o impulso &amp;lt;math&amp;gt; u_1(x) &amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;u(x, 0) = u_0(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; \frac{\partial u}{\partial t}(x, 0) = u_1(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
===Sistema de EDP===&lt;br /&gt;
Juntando la ecuación de ondas con las condiciones de contorno e iniciales, el sistema completo que modela el comportamiento de los desplazamientos transversales de la cuerda es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}&lt;br /&gt;
&lt;br /&gt;
\frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2}, &amp;amp; 0 &amp;lt; x &amp;lt; 1, \ t &amp;gt; 0 \\&lt;br /&gt;
u(0, t) = 0, &amp;amp; t \geq 0 \\&lt;br /&gt;
u(1, t) = 0, &amp;amp; t \geq 0 \\&lt;br /&gt;
u(x, 0) = u_0(x), &amp;amp; 0 \leq x \leq 1 \\&lt;br /&gt;
\frac{\partial u}{\partial t}(x, 0) = u_1(x), &amp;amp; 0 \leq x \leq 1&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este sistema describe completamente la evolución temporal de los desplazamientos transversales de una cuerda vibrante con los extremos fijos, dada su posición e impulso iniciales.&lt;br /&gt;
&lt;br /&gt;
===Resolución del sistema por separación de variables en términos de los coeficientes de Fourier de los datos iniciales===&lt;br /&gt;
Primero, planteamos la solución de la ecuación de onda mediante separación de variables. Asumimos que la solución \( u(x,t) \) se puede escribir como un producto de dos funciones independientes, una que depende solo de \( x \) y otra que depende solo de \( t \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x, t) = X(x) T(t) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituimos esta forma en la ecuación de onda:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{\partial^2 (X(x) T(t))}{\partial t^2} = \frac{\partial^2 (X(x) T(t))}{\partial x^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto se simplifica a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;X(x) \frac{d^2 T(t)}{dt^2} = T(t) \frac{d^2 X(x)}{dx^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dividimos ambos lados por &amp;lt;math&amp;gt;X(x) T(t) &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{1}{T(t)} \frac{d^2 T(t)}{dt^2} = \frac{1}{X(x)} \frac{d^2 X(x)}{dx^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dado que el lado izquierdo depende solo de \( t \) y el lado derecho solo de \( x \), ambos deben ser iguales a una constante que llamaremos \(-\lambda\). Esto nos lleva a dos ecuaciones ordinarias:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{d^2 T(t)}{dt^2} + \lambda T(t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{d^2 X(x)}{dx^2} + \lambda X(x) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para satisfacer las condiciones de contorno \( u(0, t) = 0 \) y \( u(1, t) = 0 \), tenemos:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;X(0) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;X(1) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La ecuación para \( X(x) \) tiene la solución general:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;X(x) = A \sin(\sqrt{\lambda} x) + B \cos(\sqrt{\lambda} x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando las condiciones de contorno, obtenemos que \( B = 0 \) y que \( \sqrt{\lambda} \) debe ser un múltiplo de \( \pi \):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \sqrt{\lambda} = n \pi \quad \text{para} \quad n = 1, 2, 3, \ldots &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por lo tanto, \( \lambda = (n \pi)^2 \) y las funciones propias son:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; X_n(x) = \sin(n \pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La ecuación para \( T(t) \) se convierte en:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{d^2 T_n(t)}{dt^2} + (n \pi)^2 T_n(t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con la solución general:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; T_n(t) = C_n \cos(n \pi t) + D_n \sin(n \pi t) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Combinando \( X(x) \) y \( T(t) \), la solución general para \( u(x,t) \) es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x, t) = \sum_{n=1}^{\infty} \left( A_n \cos(n \pi t) + B_n \sin(n \pi t) \right) \sin(n \pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde \( A_n \) y \( B_n \) son coeficientes a determinar a partir de las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
### Determinación de los coeficientes \( A_n \) y \( B_n \)&lt;br /&gt;
&lt;br /&gt;
Las condiciones iniciales son:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x, 0) = u_0(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial u}{\partial t}(x, 0) = u_1(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para \( t = 0 \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x, 0) = \sum_{n=1}^{\infty} A_n \sin(n \pi x) = u_0(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Usamos la ortogonalidad de las funciones seno para determinar \( A_n \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; A_n = 2 \int_0^1 u_0(x) \sin(n \pi x) \, dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la derivada temporal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial u}{\partial t}(x, 0) = \sum_{n=1}^{\infty} B_n n \pi \cos(n \pi \cdot 0) \sin(n \pi x) = u_1(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B_n n \pi = 2 \int_0^1 u_1(x) \sin(n \pi x) \, dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por lo tanto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B_n = \frac{2}{n \pi} \int_0^1 u_1(x) \sin(n \pi x) \, dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finalmente, la solución de la ecuación de onda en términos de los coeficientes de Fourier de los datos iniciales es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x, t) = \sum_{n=1}^{\infty} \left( \left(2 \int_0^1 u_0(x) \sin(n \pi x) \, dx \right) \cos(n \pi t) + \left(\frac{2}{n \pi} \int_0^1 u_1(x) \sin(n \pi x) \, dx \right) \sin(n \pi t) \right) \sin(n \pi x) &lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Esta expresión proporciona la solución completa de la ecuación de onda en función de las condiciones iniciales \( u_0(x) \) y \( u_1(x) \).&lt;br /&gt;
&lt;br /&gt;
===== Ejemplo de solución periódica en tiempo =====&lt;br /&gt;
&lt;br /&gt;
En esta parte del documento para comprender lo anteriormente explicado de manera óptima se va a proceder a analizar una serie de ejemplo. El primero de ellos se trata de la representación gráfica de una solución periódica en tiempo. Esta viene dada suponiendo que los datos iniciales son &amp;lt;math&amp;gt;u_0(x)=e^{-100(x-\frac{1}{2})^2}&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;u_1(x)=0&amp;lt;/math&amp;gt;. Es por ello que la representación de la solución en el intervalo t ∈ [0, 2] es la siguiente:&lt;br /&gt;
[[Archivo:ondaperiodicaALA.png|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para la obtención de esta representación se ha creado el siguiente código en Matlab:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=% &lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestros datos iniciales:&lt;br /&gt;
u_0=@(x) (exp(-100.*(x-1/2).^2));&lt;br /&gt;
u_1=@(x) (0);&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestro intervalo de tiempo t:&lt;br /&gt;
t=0:0.001:2;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestro intervalo x:&lt;br /&gt;
x=0:0.001:1;&lt;br /&gt;
&lt;br /&gt;
% Definimos el número de términos de la serie a dibujar:&lt;br /&gt;
n=50;&lt;br /&gt;
&lt;br /&gt;
% Calculamos los términos de fourier asociados a u_0:&lt;br /&gt;
ak_0=zeros(n,1);&lt;br /&gt;
bk_0=zeros(n,1);&lt;br /&gt;
ck_0=zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
f_sen_0=@(x,k) u_0(x).*sin(k*pi*x);&lt;br /&gt;
f_cos_0=@(x,k) u_0(x).*cos(k*pi*x);&lt;br /&gt;
f_medio_0=@(x,k) u_0(x).*1/2;&lt;br /&gt;
&lt;br /&gt;
for k=1:n&lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_sen_0=f_sen_0(x,k);&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_cos:&lt;br /&gt;
    y_cos_0=f_cos_0(x,k);&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_medio_0=f_medio_0(x);&lt;br /&gt;
&lt;br /&gt;
    ak_0(k)=trapz(x,y_sen_0);&lt;br /&gt;
    bk_0(k)=trapz(x,y_cos_0);&lt;br /&gt;
    ck_0(k)=trapz(x,y_medio_0);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos los términos de fourier asociados a u_1:&lt;br /&gt;
ak_1=zeros(n,1);&lt;br /&gt;
bk_1=zeros(n,1);&lt;br /&gt;
ck_1=zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
f_sen_1=@(x,k) u_1(x).*sin(k*pi*x);&lt;br /&gt;
f_cos_1=@(x,k) u_1(x).*cos(k*pi*x);&lt;br /&gt;
f_medio_1=@(x,k) u_1(x).*1/2;&lt;br /&gt;
&lt;br /&gt;
for k=1:n&lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_sen_1=f_sen_1(x,k);&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_cos:&lt;br /&gt;
    y_cos_1=f_cos_1(x,k);&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_medio_1=f_medio_1(x);&lt;br /&gt;
&lt;br /&gt;
    ak_1(k)=trapz(x,y_sen_1);&lt;br /&gt;
    bk_1(k)=trapz(x,y_cos_1);&lt;br /&gt;
    %ck_1(k)=trapz(x,y_medio_1);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Sustituimos en la solución calculada por separación de variables:&lt;br /&gt;
u=@(xx,tt) 0;&lt;br /&gt;
for i=1:n&lt;br /&gt;
    u=@(xx,tt) u(xx,tt) + (ak_0(i).*cos(i*pi*tt)+bk_1(i).*sin(i*pi*tt)).*sin(i*pi*xx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficamos la solución:&lt;br /&gt;
[X,T]=meshgrid(x,t);&lt;br /&gt;
surf(X,T,u(X,T),'EdgeColor','flat')&lt;br /&gt;
title('Solución ecuación de ondas')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
   &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como se observa en la imagen anterior la función muestra un comportamiento que se repite regularmente con el tiempo. A este tipo de funciones se les denomina periódicas en tiempo. Esto se puede observar de manera óptima para su comprensión en la siguiente gráfica, en la cual se observa el comportamiento explicado a anteriormente cuyo periodo es 2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:onda_ejercicio_3.gif|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para la obtención de esta animación se ha hecho uso del siguiente cógido:&lt;br /&gt;
{{matlab|codigo=% &lt;br /&gt;
%% Ejercicio 3 animación&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestros datos iniciales:&lt;br /&gt;
u_0=@(x) (exp(-100.*(x-1/2).^2));&lt;br /&gt;
u_1=@(x) (0);&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestro intervalo de tiempo t:&lt;br /&gt;
t=0:0.001:2;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestro intervalo x:&lt;br /&gt;
x=0:0.001:1;&lt;br /&gt;
&lt;br /&gt;
% Definimos el número de términos de la serie a dibujar:&lt;br /&gt;
n=50;&lt;br /&gt;
&lt;br /&gt;
% Calculamos los términos de fourier asociados a u_0:&lt;br /&gt;
ak_0=zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
f_sen_0=@(x,k) u_0(x).*sin(k*pi*x);&lt;br /&gt;
&lt;br /&gt;
for k=1:n&lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_sen_0=f_sen_0(x,k);&lt;br /&gt;
&lt;br /&gt;
    ak_0(k)=2.*trapz(x,y_sen_0);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos los términos de fourier asociados a u_1:&lt;br /&gt;
bk_1=zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
f_cos_1=@(x,k) u_1(x).*cos(k*pi*x);&lt;br /&gt;
&lt;br /&gt;
for k=1:n&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_cos:&lt;br /&gt;
    y_cos_1=f_cos_1(x,k);&lt;br /&gt;
            &lt;br /&gt;
    bk_1(k)=2/(k*pi)*trapz(x,y_cos_1);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Sustituimos en la solución calculada por separación de variables:&lt;br /&gt;
u=@(xx,tt) 0;&lt;br /&gt;
for i=1:n&lt;br /&gt;
    u=@(xx,tt) u(xx,tt) + (ak_0(i).*cos(i*pi*tt)+bk_1(i).*sin(i*pi*tt)).*sin(i*pi*xx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficamos la solución:&lt;br /&gt;
% Crear un objeto de VideoWriter para el video&lt;br /&gt;
video = VideoWriter('onda_ejercicio_3.avi');&lt;br /&gt;
video.FrameRate = 100;&lt;br /&gt;
open(video);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
&lt;br /&gt;
    plot(x,u(x,t(i)))&lt;br /&gt;
    xlim([0,1])&lt;br /&gt;
    ylim([-1.5,1.5])&lt;br /&gt;
    xlabel('x')&lt;br /&gt;
    ylabel('u(x,t)')&lt;br /&gt;
    title(['Solución de la ecuación de onda en t=', num2str(t(i))])&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    % Capturar el frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
    &lt;br /&gt;
    % Limpiar la figura para la siguiente iteración, excepto los ejes&lt;br /&gt;
    clf; % Clear current figure&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Cerrar el objeto de video&lt;br /&gt;
close(video);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de la onda viajera ====&lt;br /&gt;
&lt;br /&gt;
===== Condiciones Dirichlet  =====&lt;br /&gt;
En este caso se va a tratar el ejemplo de una onda viajera en un solo sentido denotada por &amp;lt;math&amp;gt; u(x,t)=f(x-t)&amp;lt;/math&amp;gt;. Es por ello que se toman como datos iniciales &amp;lt;math&amp;gt;u_0(x)=f(x)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;u_1(x)=f'(x)&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt; f(x)=e^{-100(x-\frac{1}{2})^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se ha creado un código en MATLAB para obtener la siguiente respresentación en el mismo intervalo:&lt;br /&gt;
[[Archivo:ondaejercicio43d.png|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se observa que el tiempo de llegada de la onda de un extremo al otro es una unidad de tiempo. A su vez puesto que la cuerda mide una unidad de espacio se concluye que la velocidad de propagación es 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para la obtención de esta representación se ha creado el siguiente código en Matlab:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=% &lt;br /&gt;
&lt;br /&gt;
   %% Ejercicio 4&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Se definen las condiciones iniciales&lt;br /&gt;
u_0 = @(x) exp(-100*(x-1/2).^2);&lt;br /&gt;
u_1 = @(x) 200*(x-1/2).* exp(-100.* (x-1/2).^2);&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos de tiempo y espacio&lt;br /&gt;
t = linspace(0,2,1000);&lt;br /&gt;
x = linspace(0,1,1000);&lt;br /&gt;
&lt;br /&gt;
% Número de términos de la serie a dibuja&lt;br /&gt;
n = 50;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Cálculo de coeficientes de Fourier asociados a u_0&lt;br /&gt;
ak_0 = zeros(n,1);&lt;br /&gt;
for k = 1:n&lt;br /&gt;
    f_sen_0 = @(x) u_0(x).*sin(k*pi*x);&lt;br /&gt;
&lt;br /&gt;
    ak_0(k) = 2*trapz(x, f_sen_0(x));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Cálculo de coeficientes de Fourier asociados a u_1&lt;br /&gt;
bk_1 = zeros(n,1);&lt;br /&gt;
for k = 1:n&lt;br /&gt;
    f_sen_1 = @(x) u_1(x).*sin(k*pi*x);&lt;br /&gt;
&lt;br /&gt;
    bk_1(k) =(2/(k*pi))*trapz(x, f_sen_1(x));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Sustituimos en la solución calculada por separación de variables&lt;br /&gt;
u = @(xx,tt) 0;&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    u = @(xx,tt) u(xx,tt) + (ak_0(i)*cos(i*pi*tt) + bk_1(i)*sin(i*pi*tt)).*sin(i*pi*xx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficamos la solución&lt;br /&gt;
[X, T] = meshgrid(x, t);&lt;br /&gt;
surf(X, T, u(X, T), 'EdgeColor', 'flat')&lt;br /&gt;
title('Solución ecuación de ondas')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación, al igual que en el apartado anterior, se dispone una representación del comportamiento de la onda en función del tiempo.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:onda_ejercicio_4.gif|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como se observa, cuando la onda alcanza la frontera la solución se anula la solución para todo tiempo.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=% &lt;br /&gt;
%% Ejercicio 4 animación&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Se definen las condiciones iniciales&lt;br /&gt;
u_0 = @(x) exp(-100*(x-1/2).^2);&lt;br /&gt;
u_1 = @(x) 200*(x-1/2).* exp(-100.* (x-1/2).^2);&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos de tiempo y espacio&lt;br /&gt;
t = linspace(0,2,1000);&lt;br /&gt;
x = linspace(0,1,1000);&lt;br /&gt;
&lt;br /&gt;
% Número de términos de la serie a dibuja&lt;br /&gt;
n = 50;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Cálculo de coeficientes de Fourier asociados a u_0&lt;br /&gt;
ak_0 = zeros(n,1);&lt;br /&gt;
for k = 1:n&lt;br /&gt;
    f_sen_0 = @(x) u_0(x).*sin(k*pi*x);&lt;br /&gt;
&lt;br /&gt;
    ak_0(k) = 2*trapz(x, f_sen_0(x));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Cálculo de coeficientes de Fourier asociados a u_1&lt;br /&gt;
bk_1 = zeros(n,1);&lt;br /&gt;
for k = 1:n&lt;br /&gt;
    f_sen_1 = @(x) u_1(x).*sin(k*pi*x);&lt;br /&gt;
&lt;br /&gt;
    bk_1(k) =(2/(k*pi))*trapz(x, f_sen_1(x));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Sustituimos en la solución calculada por separación de variables&lt;br /&gt;
u = @(xx,tt) 0;&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    u = @(xx,tt) u(xx,tt) + (ak_0(i)*cos(i*pi*tt) + bk_1(i)*sin(i*pi*tt)).*sin(i*pi*xx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Crear un objeto de VideoWriter para el video&lt;br /&gt;
video = VideoWriter('onda_ejercicio_4.avi');&lt;br /&gt;
video.FrameRate = 100;&lt;br /&gt;
open(video);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
&lt;br /&gt;
    plot(x,u(x,t(i)))&lt;br /&gt;
    xlim([0,1])&lt;br /&gt;
    ylim([-1.5,1.5])&lt;br /&gt;
    xlabel('x')&lt;br /&gt;
    ylabel('u(x,t)')&lt;br /&gt;
    title(['Solución de la ecuación de onda en t=', num2str(t(i))])&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    % Capturar el frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
    &lt;br /&gt;
    % Limpiar la figura para la siguiente iteración, excepto los ejes&lt;br /&gt;
    clf; % Clear current figure&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Cerrar el objeto de video&lt;br /&gt;
close(video);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== Condiciones Neumann =====&lt;br /&gt;
&lt;br /&gt;
A continuación, para comprender mejor la diferencia respecto a las condiciones fronteras, se va a resolver el mismo problema cambiando las condiciones Dirichlet a condiciones Neumann, es decir &amp;lt;math&amp;gt;u_0(0,t)=u_1(1,t)=0&amp;lt;/math&amp;gt;. De esta manera se pretende resolver el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
\begin{cases}&lt;br /&gt;
u_{tt} - u_{xx} = 0 \\&lt;br /&gt;
u_x(0, t) = u_x(1, t) = 0 \\&lt;br /&gt;
u(x, 0) = e^{-100(x - \frac{1}{2})^2} \\&lt;br /&gt;
u_t(x, 0) = 200(x - \frac{1}{2})e^{-100(x - \frac{1}{2})^2}&lt;br /&gt;
\end{cases}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este caso, aplicando separación de variables, obtenemos que la solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x, t) = \sum_{k=1}^{\infty} \left[ a_k \cos(k\pi x) \cos(k\pi t) + b_k \cos(k\pi x) \sin(k\pi t) \right] &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
siendo&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;a_k = \frac{\int_{0}^{1} \cos(k\pi x) u_0(x) \, dx}{\int_{0}^{1} \cos^2(k\pi x) \, dx} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
y&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;b_k = \frac{\int_{0}^{1} \cos(k\pi x) u_1(x) \, dx}{\int_{0}^{1} \cos^2(k\pi x) \, dx} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La representación obtenida mediante el código que se presenta posteriormente es la siguiente:&lt;br /&gt;
[[Archivo:ondaejercicio5ALA.png|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=%&lt;br /&gt;
%% Ejercicio 5&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Definimos f(x)&lt;br /&gt;
f = @(x) exp(-100 * (x - 1/2).^2);&lt;br /&gt;
&lt;br /&gt;
% -Derivada de f(x)&lt;br /&gt;
df = @(x) 200 * (x - 0.5) .* exp(-100 * (x - 0.5).^2);&lt;br /&gt;
&lt;br /&gt;
% Definimos el número de terminos de la serie&lt;br /&gt;
n=50;&lt;br /&gt;
&lt;br /&gt;
% Definimos el intervalo de tiempo y espacio&lt;br /&gt;
x = linspace(0, 1, 200);&lt;br /&gt;
t_values = linspace(0, 2, 200); % Evaluamos desde t=0 hasta t=2&lt;br /&gt;
&lt;br /&gt;
% Calculamos los coeficientes de Fourier para Neumann&lt;br /&gt;
a_k =zeros(n,1);&lt;br /&gt;
b_k =zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
for i=1:n&lt;br /&gt;
    a_k(i) =2 * trapz(x, f(x) .* cos(i * pi * x));&lt;br /&gt;
    b_k(i) =2 / (i * pi) * trapz(x, df(x) .* cos(i * pi * x));&lt;br /&gt;
end&lt;br /&gt;
% Calculamos la solución de la ecuación de onda&lt;br /&gt;
u=@(xx,tt) 0;&lt;br /&gt;
for i=1:n&lt;br /&gt;
    u=@(xx,tt) u(xx,tt) + (a_k(i).*cos(i*pi*tt)+b_k(i).*sin(i*pi*tt)).*cos(i*pi*xx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos u(X, T) para todos los puntos de la malla&lt;br /&gt;
[X, T] = meshgrid(x, t_values);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
surf(X, T, u(X,T), 'EdgeColor', 'flat')&lt;br /&gt;
title('Solución de la ecuación de onda con condiciones Neumann')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u(x, t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este caso, para su correcta visualización, se ha vuelto a crear la siguiente representación:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:onda_condiciones_newman_ejercicio_5_buena.gif|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
Como se observa el periodo en este caso vuelve a ser 2 y puesto que los extremos no son fijos porque tenemos de datos las derivadas la onda varía en la frontera.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=%&lt;br /&gt;
%% Ejercicio 5 animación&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Definimos f(x)&lt;br /&gt;
f = @(x) exp(-100 * (x - 1/2).^2);&lt;br /&gt;
&lt;br /&gt;
% -Derivada de f(x)&lt;br /&gt;
df = @(x) 200 * (x - 0.5) .* exp(-100 * (x - 0.5).^2);&lt;br /&gt;
&lt;br /&gt;
% Definimos el número de terminos de la serie&lt;br /&gt;
n=50;&lt;br /&gt;
&lt;br /&gt;
% Definimos el intervalo de tiempo y espacio&lt;br /&gt;
x = linspace(0, 1, 200);&lt;br /&gt;
t_values = linspace(0, 2, 200); % Evaluamos desde t=0 hasta t=2&lt;br /&gt;
&lt;br /&gt;
% Calculamos los coeficientes de Fourier para Neumann&lt;br /&gt;
a_k =zeros(n,1);&lt;br /&gt;
b_k =zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
for i=1:n&lt;br /&gt;
    a_k(i) =2 * trapz(x, f(x) .* cos(i * pi * x));&lt;br /&gt;
    b_k(i) =2 / (i * pi) * trapz(x, df(x) .* cos(i * pi * x));&lt;br /&gt;
end&lt;br /&gt;
% Calculamos la solución de la ecuación de onda&lt;br /&gt;
u=@(xx,tt) 0;&lt;br /&gt;
for i=1:n&lt;br /&gt;
    u=@(xx,tt) u(xx,tt) + (a_k(i).*cos(i*pi*tt)+b_k(i).*sin(i*pi*tt)).*cos(i*pi*xx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Crear un objeto de VideoWriter para el video&lt;br /&gt;
video = VideoWriter('onda_condiciones_newman_ejercicio_5_buena.avi');&lt;br /&gt;
video.FrameRate = 100;&lt;br /&gt;
open(video);&lt;br /&gt;
% Graficamos la solución en diferentes tiempos&lt;br /&gt;
figure&lt;br /&gt;
&lt;br /&gt;
for t = t_values&lt;br /&gt;
    u_values = u(x, t);&lt;br /&gt;
    plot(x, u_values)&lt;br /&gt;
    xlim([0, 1])&lt;br /&gt;
    ylim([-0.5, 2])&lt;br /&gt;
    title(['Solución de la ecuación de onda con condiciones Neumann en t=', num2str(t)])&lt;br /&gt;
    xlabel('x')&lt;br /&gt;
    ylabel('u(x, t)')&lt;br /&gt;
    % Capturar el frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
    clf&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Cerrar el objeto de video&lt;br /&gt;
close(video);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Soluciones fundamentales en dimensiones 1, 2 y 3 ==&lt;br /&gt;
La solución fundamental resuelve el sistema,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\left \{ \begin{array}{ll}  &lt;br /&gt;
u_{tt}-c^2\Delta u=0, \quad x \in \mathbb{R}^n, t&amp;gt;0, \\&lt;br /&gt;
u(x,0)=0, u_t(x,0)=\delta (x), \quad x \in \mathbb{R}^n,&lt;br /&gt;
\end{array} \right.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En esta parte del trabajo vamos a dibujar la solución fundamental de la ecuación de ondas en dimensiones 1, 2 y 3. Cuyas expresiones son las siguientes.&lt;br /&gt;
&lt;br /&gt;
Dimensión &amp;lt;math&amp;gt;n=1&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; K_1(x,t) =\frac{1}{2c}\textbf{1}_{[-ct,ct]}(x)=\frac{1}{2c}\textbf{1}_{[0,ct]}(|x|). &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dimensión &amp;lt;math&amp;gt;n=2&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; K_2(x,t)=\frac{1}{2\pi c \sqrt{c^2t^2-|x|^2}} \chi_{B(0,ct)}(x)=\frac{1}{2\pi c \sqrt{c^2t^2-|x|^2}} \textbf{1}_{[0,ct]}(|x|). &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dimensión &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; K_3(x,t)=\frac{\delta (|x|-ct)}{4\pi c|x|}, t&amp;gt;0. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para dibujarlas, es primero necesario hacer unos cambios en los casos de dimensiones 2 y 3.  &lt;br /&gt;
&lt;br /&gt;
* En el caso de la dimensión 2, encontramos una singularidad en el denominador de la función de la solución fundamental. Esta ocurre cuando ∣x∣=ct, lo que resulta en una división por cero. Para evitar esta singularidad, se agrega un término de regularización ϵ en el denominador. Esto asegura que la función sea suave y bien comportada en todas partes, incluidos los puntos cercanos a ∣x∣=ct. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  K^{ε}_{2} (x,t) = \frac{1}{ε + 2\pi c \sqrt(c^2 t^2 - ∣x∣^2)} ⲭ_{B(0,ct)}(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Para la representación del caso de dimensión 3 se ha sustituido la delta de Didac por su aproximación,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \delta (s) ≈ \phi_k (s) = \sqrt(\frac{k}{\pi})e^{(-ks^2)}  &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con estos cambios, representamos las 3 soluciones fundamentales observando que estas son radiales. &lt;br /&gt;
&lt;br /&gt;
GRÁFICAS &lt;br /&gt;
&lt;br /&gt;
Que las soluciones fundamentales sean &amp;quot;radiales&amp;quot; significa que son simétricas respecto al origen en coordenadas radiales. Dicha periodicidad es clara en las gráficas anteriores. Esto implica que el valor de la solución en un punto depende únicamente de la distancia radial desde el origen, y no de la dirección en la que se mida esa distancia. &lt;br /&gt;
&lt;br /&gt;
El código empleado para esta representación ha sido el siguiente.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=  &lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Dimensión 1&lt;br /&gt;
% Definimos los intervalos x,t:&lt;br /&gt;
x=-1:0.001:1;&lt;br /&gt;
t=0:0.001:1;&lt;br /&gt;
&lt;br /&gt;
% Creación de la rejilla&lt;br /&gt;
[X,T] = meshgrid(x,t);&lt;br /&gt;
&lt;br /&gt;
% Velocidad de propagación&lt;br /&gt;
c = 1;&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución fundamental&lt;br /&gt;
K = (X &amp;lt;= c*T) .* (X &amp;gt;= -c*T) / (2*c);&lt;br /&gt;
&lt;br /&gt;
% Visualización de la solución fundamental&lt;br /&gt;
figure(&amp;quot;Name&amp;quot;,'Solución fundamental dimensión 1')&lt;br /&gt;
surf(X, T, K,'EdgeColor','interp');&lt;br /&gt;
title(&amp;quot;Solución fundamental en dimensión 1&amp;quot;);&lt;br /&gt;
xlabel(&amp;quot;x&amp;quot;);&lt;br /&gt;
ylabel(&amp;quot;t&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
% Dimensión 2&lt;br /&gt;
% Definimos nuestros intervalos&lt;br /&gt;
r=0:0.001:1;&lt;br /&gt;
t=0:0.001:1;&lt;br /&gt;
&lt;br /&gt;
% Creamos la malla&lt;br /&gt;
[R,T]=meshgrid(r,t);&lt;br /&gt;
&lt;br /&gt;
% Velocidad de propagación&lt;br /&gt;
c=1;&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución fundamental&lt;br /&gt;
K=(R&amp;lt;=c*T)./(eps + 2*pi*c.*sqrt(c^2*T.^2-R.^2));&lt;br /&gt;
&lt;br /&gt;
figure(&amp;quot;Name&amp;quot;,'Solución fundamental dimensión 2')&lt;br /&gt;
surf(R,T,K,'EdgeColor','flat')&lt;br /&gt;
title(&amp;quot;Solución fundamental de dimensión 2&amp;quot;)&lt;br /&gt;
xlabel(&amp;quot;r&amp;quot;)&lt;br /&gt;
ylabel(&amp;quot;t&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestros intervalos&lt;br /&gt;
r=0:0.001:1;&lt;br /&gt;
t=0:0.001:1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[R,T]=meshgrid(r,t);&lt;br /&gt;
&lt;br /&gt;
c=1;                     % Velocidad de propagación &lt;br /&gt;
k=1000;                  &lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución fundamental&lt;br /&gt;
K=sqrt(k/pi).*exp(-k * (R-c*T).^2)./(4*pi*c*R);&lt;br /&gt;
&lt;br /&gt;
figure(&amp;quot;Name&amp;quot;,'Solución fundamental dimensión 3')&lt;br /&gt;
surf(R,T,K,'EdgeColor','flat')&lt;br /&gt;
title(&amp;quot;Solución fundamental de dimensión 3&amp;quot;)&lt;br /&gt;
xlabel(&amp;quot;r&amp;quot;)&lt;br /&gt;
ylabel(&amp;quot;t&amp;quot;)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== Ejemplo en dimesión 2 =====&lt;br /&gt;
Veamos a continuación el sistema que resuelve la solución fundamental en dimensión 2 en una bola de radio &amp;lt;math&amp;gt; \frac{1}{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left \{ \begin{array}{ll}  &lt;br /&gt;
u_{tt}-c^2\Delta u=0, \quad x \in \mathbb{R}^2, t&amp;gt;0, \\&lt;br /&gt;
u(x,0)=0, u_t(x,0)=h (x) = \chi _{B(0,\frac{1}{2})}(x), \quad x \in \mathbb{R}^2&lt;br /&gt;
\end{array} \right.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso, la solución fundamental viene dada por la convolución,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x,t)=\int_{\mathbb{R}^2}K_2 (x-y, t)h(y) dy &amp;lt;/math&amp;gt;. &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujamos las soluciones para t = 0, 0.5, 1, 2.&lt;br /&gt;
&lt;br /&gt;
GRÁFICAS&lt;br /&gt;
&lt;br /&gt;
A diferencia de lo visto en el caso general, aquí no podemos apreciar periodicidad. Sin embargo, el sistema se puede expresar en función de radio únicamente, es decir, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left \{ \begin{array}{ll}  &lt;br /&gt;
u_{tt}-c^2(\frac{1}{r}u_r+u_{rr})=0, \quad r \geq 0, t&amp;gt;0, \\&lt;br /&gt;
u(r,0)=0, \\&lt;br /&gt;
u_t(r,0)=h (r) = \textbf{1}_{[0,\frac{1}{2}]}(r), \quad x \in \mathbb{R}^2&lt;br /&gt;
\end{array} \right.  &lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas&amp;diff=72783</id>
		<title>Ecuación de ondas</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas&amp;diff=72783"/>
				<updated>2024-05-26T17:24:42Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: /* Ejemplo de solución periódica en tiempo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación de Ondas. Grupo ALA | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Lucía Amores, Aitana Guill y Andrea Navarro}}&lt;br /&gt;
&lt;br /&gt;
== Introducción ==&lt;br /&gt;
Este trabajo analiza la ecuación de ondas en una cuerda fija en los extremos del intervalo [0,1], con velocidad de propagación 𝑐=1. Incluiremos el sistema que describe el movimiento, así como su solución por separación de variables. Además, consideraremos ejemplos específicos de simulaciones para observar fenómenos como la periodicidad y ondas viajeras. Finalmente, compararemos resultados cambiando las condiciones de frontera a Neumann. &lt;br /&gt;
&lt;br /&gt;
A parte de esto, estudiaremos la solución fundamental de la ecuación de ondas en dimensiones 1, 2 y 3, aplicando un impulso inicial en 𝑥=0 y dibujando estas soluciones en la variable radial para comprender el principio de Huygens.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Contexto Histórico ==&lt;br /&gt;
La ecuación de ondas, fundamental en física y matemáticas, se formuló en el siglo XVIII por Jean le Rond d'Alembert y Leonhard Euler, quienes investigaron la vibración de cuerdas. En el siglo XIX, Joseph Fourier revolucionó su análisis al desarrollar la teoría de series de Fourier, facilitando la solución de ecuaciones diferenciales parciales mediante la separación de variables. &lt;br /&gt;
&lt;br /&gt;
El principio de Huygens, propuesto por Christiaan Huygens en el siglo XVII, establece que cada punto de un frente de onda actúa como una fuente de ondas secundarias. Este principio es esencial para comprender la propagación de ondas y las soluciones de la ecuación en diversas dimensiones. &lt;br /&gt;
&lt;br /&gt;
En el siglo XX y XXI, la teoría de la ecuación de ondas se ha ampliado a campos como la acústica, óptica y telecomunicaciones. Los métodos numéricos modernos permiten simular la propagación de ondas en medios complejos, mejorando nuestra comprensión y aplicación en problemas prácticos. &lt;br /&gt;
&lt;br /&gt;
Hoy, la ecuación de ondas es clave para modelar fenómenos desde vibraciones de cuerdas hasta ondas sísmicas y electromagnéticas, siendo esencial en física teórica, ingeniería y tecnologías modernas. Este trabajo se centra en su estudio y soluciones, aplicando estos principios a situaciones prácticas y avanzadas.&lt;br /&gt;
&lt;br /&gt;
==Modelización de los desplazamientos transversales== &lt;br /&gt;
Para modelar el comportamiento de los desplazamientos transversales de la cuerda vibrante, utilizamos la ecuación de ondas en una dimensión. Dado que la cuerda está fija en los extremos y tiene una densidad &amp;lt;math&amp;gt; d &amp;lt;/math&amp;gt; y tensión constante &amp;lt;math&amp;gt; \tau_0 &amp;lt;/math&amp;gt; de manera que la velocidad de propagación es &amp;lt;math&amp;gt; c = \tau_0/d = 1 &amp;lt;/math&amp;gt;, la ecuación de ondas se simplifica.&lt;br /&gt;
&lt;br /&gt;
La ecuación de ondas en una dimensión para los desplazamientos transversales &amp;lt;math&amp;gt; u(x,t) &amp;lt;/math&amp;gt; de la cuerda es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{\partial^2 u}{\partial t^2} = c^2 \frac{\partial^2 u}{\partial x^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que &amp;lt;math&amp;gt; c = 1 &amp;lt;/math&amp;gt;, la ecuación se reduce a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta ecuación diferencial parcial (EDP) debe acompañarse de las condiciones de contorno y las condiciones iniciales para estar completamente especificada.&lt;br /&gt;
&lt;br /&gt;
===Condiciones de contorno===&lt;br /&gt;
Dado que la cuerda está fija en los extremos, las condiciones de contorno son:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(0, t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(1, t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Condiciones iniciales===&lt;br /&gt;
Las condiciones iniciales especifican la posición inicial de la cuerda &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; y su velocidad inicial o impulso &amp;lt;math&amp;gt; u_1(x) &amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;u(x, 0) = u_0(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; \frac{\partial u}{\partial t}(x, 0) = u_1(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
===Sistema de EDP===&lt;br /&gt;
Juntando la ecuación de ondas con las condiciones de contorno e iniciales, el sistema completo que modela el comportamiento de los desplazamientos transversales de la cuerda es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}&lt;br /&gt;
&lt;br /&gt;
\frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2}, &amp;amp; 0 &amp;lt; x &amp;lt; 1, \ t &amp;gt; 0 \\&lt;br /&gt;
u(0, t) = 0, &amp;amp; t \geq 0 \\&lt;br /&gt;
u(1, t) = 0, &amp;amp; t \geq 0 \\&lt;br /&gt;
u(x, 0) = u_0(x), &amp;amp; 0 \leq x \leq 1 \\&lt;br /&gt;
\frac{\partial u}{\partial t}(x, 0) = u_1(x), &amp;amp; 0 \leq x \leq 1&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este sistema describe completamente la evolución temporal de los desplazamientos transversales de una cuerda vibrante con los extremos fijos, dada su posición e impulso iniciales.&lt;br /&gt;
&lt;br /&gt;
===Resolución del sistema por separación de variables en términos de los coeficientes de Fourier de los datos iniciales===&lt;br /&gt;
Primero, planteamos la solución de la ecuación de onda mediante separación de variables. Asumimos que la solución \( u(x,t) \) se puede escribir como un producto de dos funciones independientes, una que depende solo de \( x \) y otra que depende solo de \( t \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x, t) = X(x) T(t) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituimos esta forma en la ecuación de onda:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{\partial^2 (X(x) T(t))}{\partial t^2} = \frac{\partial^2 (X(x) T(t))}{\partial x^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto se simplifica a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;X(x) \frac{d^2 T(t)}{dt^2} = T(t) \frac{d^2 X(x)}{dx^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dividimos ambos lados por &amp;lt;math&amp;gt;X(x) T(t) &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{1}{T(t)} \frac{d^2 T(t)}{dt^2} = \frac{1}{X(x)} \frac{d^2 X(x)}{dx^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dado que el lado izquierdo depende solo de \( t \) y el lado derecho solo de \( x \), ambos deben ser iguales a una constante que llamaremos \(-\lambda\). Esto nos lleva a dos ecuaciones ordinarias:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{d^2 T(t)}{dt^2} + \lambda T(t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{d^2 X(x)}{dx^2} + \lambda X(x) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para satisfacer las condiciones de contorno \( u(0, t) = 0 \) y \( u(1, t) = 0 \), tenemos:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;X(0) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;X(1) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La ecuación para \( X(x) \) tiene la solución general:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;X(x) = A \sin(\sqrt{\lambda} x) + B \cos(\sqrt{\lambda} x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando las condiciones de contorno, obtenemos que \( B = 0 \) y que \( \sqrt{\lambda} \) debe ser un múltiplo de \( \pi \):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \sqrt{\lambda} = n \pi \quad \text{para} \quad n = 1, 2, 3, \ldots &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por lo tanto, \( \lambda = (n \pi)^2 \) y las funciones propias son:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; X_n(x) = \sin(n \pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La ecuación para \( T(t) \) se convierte en:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{d^2 T_n(t)}{dt^2} + (n \pi)^2 T_n(t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con la solución general:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; T_n(t) = C_n \cos(n \pi t) + D_n \sin(n \pi t) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Combinando \( X(x) \) y \( T(t) \), la solución general para \( u(x,t) \) es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x, t) = \sum_{n=1}^{\infty} \left( A_n \cos(n \pi t) + B_n \sin(n \pi t) \right) \sin(n \pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde \( A_n \) y \( B_n \) son coeficientes a determinar a partir de las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
### Determinación de los coeficientes \( A_n \) y \( B_n \)&lt;br /&gt;
&lt;br /&gt;
Las condiciones iniciales son:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x, 0) = u_0(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial u}{\partial t}(x, 0) = u_1(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para \( t = 0 \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x, 0) = \sum_{n=1}^{\infty} A_n \sin(n \pi x) = u_0(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Usamos la ortogonalidad de las funciones seno para determinar \( A_n \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; A_n = 2 \int_0^1 u_0(x) \sin(n \pi x) \, dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la derivada temporal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial u}{\partial t}(x, 0) = \sum_{n=1}^{\infty} B_n n \pi \cos(n \pi \cdot 0) \sin(n \pi x) = u_1(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B_n n \pi = 2 \int_0^1 u_1(x) \sin(n \pi x) \, dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por lo tanto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B_n = \frac{2}{n \pi} \int_0^1 u_1(x) \sin(n \pi x) \, dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finalmente, la solución de la ecuación de onda en términos de los coeficientes de Fourier de los datos iniciales es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x, t) = \sum_{n=1}^{\infty} \left( \left(2 \int_0^1 u_0(x) \sin(n \pi x) \, dx \right) \cos(n \pi t) + \left(\frac{2}{n \pi} \int_0^1 u_1(x) \sin(n \pi x) \, dx \right) \sin(n \pi t) \right) \sin(n \pi x) &lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Esta expresión proporciona la solución completa de la ecuación de onda en función de las condiciones iniciales \( u_0(x) \) y \( u_1(x) \).&lt;br /&gt;
&lt;br /&gt;
===== Ejemplo de solución periódica en tiempo =====&lt;br /&gt;
&lt;br /&gt;
En esta parte del documento para comprender lo anteriormente explicado de manera óptima se va a proceder a analizar una serie de ejemplo. El primero de ellos se trata de la representación gráfica de una solución periódica en tiempo. Esta viene dada suponiendo que los datos iniciales son &amp;lt;math&amp;gt;u_0(x)=e^{-100(x-\frac{1}{2})^2}&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;u_1(x)=0&amp;lt;/math&amp;gt;. Es por ello que la representación de la solución en el intervalo t ∈ [0, 2] es la siguiente:&lt;br /&gt;
[[Archivo:ondaperiodicaALA.png|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para la obtención de esta representación se ha creado el siguiente código en Matlab:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=% &lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestros datos iniciales:&lt;br /&gt;
u_0=@(x) (exp(-100.*(x-1/2).^2));&lt;br /&gt;
u_1=@(x) (0);&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestro intervalo de tiempo t:&lt;br /&gt;
t=0:0.001:2;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestro intervalo x:&lt;br /&gt;
x=0:0.001:1;&lt;br /&gt;
&lt;br /&gt;
% Definimos el número de términos de la serie a dibujar:&lt;br /&gt;
n=50;&lt;br /&gt;
&lt;br /&gt;
% Calculamos los términos de fourier asociados a u_0:&lt;br /&gt;
ak_0=zeros(n,1);&lt;br /&gt;
bk_0=zeros(n,1);&lt;br /&gt;
ck_0=zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
f_sen_0=@(x,k) u_0(x).*sin(k*pi*x);&lt;br /&gt;
f_cos_0=@(x,k) u_0(x).*cos(k*pi*x);&lt;br /&gt;
f_medio_0=@(x,k) u_0(x).*1/2;&lt;br /&gt;
&lt;br /&gt;
for k=1:n&lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_sen_0=f_sen_0(x,k);&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_cos:&lt;br /&gt;
    y_cos_0=f_cos_0(x,k);&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_medio_0=f_medio_0(x);&lt;br /&gt;
&lt;br /&gt;
    ak_0(k)=trapz(x,y_sen_0);&lt;br /&gt;
    bk_0(k)=trapz(x,y_cos_0);&lt;br /&gt;
    ck_0(k)=trapz(x,y_medio_0);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos los términos de fourier asociados a u_1:&lt;br /&gt;
ak_1=zeros(n,1);&lt;br /&gt;
bk_1=zeros(n,1);&lt;br /&gt;
ck_1=zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
f_sen_1=@(x,k) u_1(x).*sin(k*pi*x);&lt;br /&gt;
f_cos_1=@(x,k) u_1(x).*cos(k*pi*x);&lt;br /&gt;
f_medio_1=@(x,k) u_1(x).*1/2;&lt;br /&gt;
&lt;br /&gt;
for k=1:n&lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_sen_1=f_sen_1(x,k);&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_cos:&lt;br /&gt;
    y_cos_1=f_cos_1(x,k);&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_medio_1=f_medio_1(x);&lt;br /&gt;
&lt;br /&gt;
    ak_1(k)=trapz(x,y_sen_1);&lt;br /&gt;
    bk_1(k)=trapz(x,y_cos_1);&lt;br /&gt;
    %ck_1(k)=trapz(x,y_medio_1);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Sustituimos en la solución calculada por separación de variables:&lt;br /&gt;
u=@(xx,tt) 0;&lt;br /&gt;
for i=1:n&lt;br /&gt;
    u=@(xx,tt) u(xx,tt) + (ak_0(i).*cos(i*pi*tt)+bk_1(i).*sin(i*pi*tt)).*sin(i*pi*xx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficamos la solución:&lt;br /&gt;
[X,T]=meshgrid(x,t);&lt;br /&gt;
surf(X,T,u(X,T),'EdgeColor','flat')&lt;br /&gt;
title('Solución ecuación de ondas')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
   &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como se observa en la imagen anterior la función muestra un comportamiento que se repite regularmente con el tiempo. A este tipo de funciones se les denomina periódicas en tiempo. Esto se puede observar de manera óptima para su comprensión en la siguiente gráfica, en la cual se observa el comportamiento explicado a anteriormente cuyo periodo es 2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:onda_ejercicio_3.gif|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para la obtención de esta animación se ha hecho uso del siguiente cógido:&lt;br /&gt;
{{matlab|codigo=% &lt;br /&gt;
%% Ejercicio 3 animación&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestros datos iniciales:&lt;br /&gt;
u_0=@(x) (exp(-100.*(x-1/2).^2));&lt;br /&gt;
u_1=@(x) (0);&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestro intervalo de tiempo t:&lt;br /&gt;
t=0:0.001:2;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestro intervalo x:&lt;br /&gt;
x=0:0.001:1;&lt;br /&gt;
&lt;br /&gt;
% Definimos el número de términos de la serie a dibujar:&lt;br /&gt;
n=50;&lt;br /&gt;
&lt;br /&gt;
% Calculamos los términos de fourier asociados a u_0:&lt;br /&gt;
ak_0=zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
f_sen_0=@(x,k) u_0(x).*sin(k*pi*x);&lt;br /&gt;
&lt;br /&gt;
for k=1:n&lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_sen_0=f_sen_0(x,k);&lt;br /&gt;
&lt;br /&gt;
    ak_0(k)=2.*trapz(x,y_sen_0);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos los términos de fourier asociados a u_1:&lt;br /&gt;
bk_1=zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
f_cos_1=@(x,k) u_1(x).*cos(k*pi*x);&lt;br /&gt;
&lt;br /&gt;
for k=1:n&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_cos:&lt;br /&gt;
    y_cos_1=f_cos_1(x,k);&lt;br /&gt;
            &lt;br /&gt;
    bk_1(k)=2/(k*pi)*trapz(x,y_cos_1);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Sustituimos en la solución calculada por separación de variables:&lt;br /&gt;
u=@(xx,tt) 0;&lt;br /&gt;
for i=1:n&lt;br /&gt;
    u=@(xx,tt) u(xx,tt) + (ak_0(i).*cos(i*pi*tt)+bk_1(i).*sin(i*pi*tt)).*sin(i*pi*xx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficamos la solución:&lt;br /&gt;
% Crear un objeto de VideoWriter para el video&lt;br /&gt;
video = VideoWriter('onda_ejercicio_3.avi');&lt;br /&gt;
video.FrameRate = 100;&lt;br /&gt;
open(video);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
&lt;br /&gt;
    plot(x,u(x,t(i)))&lt;br /&gt;
    xlim([0,1])&lt;br /&gt;
    ylim([-1.5,1.5])&lt;br /&gt;
    xlabel('x')&lt;br /&gt;
    ylabel('u(x,t)')&lt;br /&gt;
    title(['Solución de la ecuación de onda en t=', num2str(t(i))])&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    % Capturar el frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
    &lt;br /&gt;
    % Limpiar la figura para la siguiente iteración, excepto los ejes&lt;br /&gt;
    clf; % Clear current figure&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Cerrar el objeto de video&lt;br /&gt;
close(video);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de la onda viajera ====&lt;br /&gt;
&lt;br /&gt;
===== Condiciones Dirichlet  =====&lt;br /&gt;
En este caso se va a tratar el ejemplo de una onda viajera en un solo sentido denotada por &amp;lt;math&amp;gt; u(x,t)=f(x-t)&amp;lt;/math&amp;gt;. Es por ello que se toman como datos iniciales &amp;lt;math&amp;gt;u_0(x)=f(x)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;u_1(x)=f'(x)&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt; f(x)=e^{-100(x-\frac{1}{2})^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se ha creado un código en MATLAB para obtener la siguiente respresentación en el mismo intervalo:&lt;br /&gt;
[[Archivo:ondaejercicio43d.png|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se observa que el tiempo de llegada de la onda de un extremo al otro es una unidad de tiempo. A su vez puesto que la cuerda mide una unidad de espacio se concluye que la velocidad de propagación es 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para la obtención de esta representación se ha creado el siguiente código en Matlab:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=% &lt;br /&gt;
&lt;br /&gt;
   %% Ejercicio 4&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Se definen las condiciones iniciales&lt;br /&gt;
u_0 = @(x) exp(-100*(x-1/2).^2);&lt;br /&gt;
u_1 = @(x) 200*(x-1/2).* exp(-100.* (x-1/2).^2);&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos de tiempo y espacio&lt;br /&gt;
t = linspace(0,2,1000);&lt;br /&gt;
x = linspace(0,1,1000);&lt;br /&gt;
&lt;br /&gt;
% Número de términos de la serie a dibuja&lt;br /&gt;
n = 50;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Cálculo de coeficientes de Fourier asociados a u_0&lt;br /&gt;
ak_0 = zeros(n,1);&lt;br /&gt;
for k = 1:n&lt;br /&gt;
    f_sen_0 = @(x) u_0(x).*sin(k*pi*x);&lt;br /&gt;
&lt;br /&gt;
    ak_0(k) = 2*trapz(x, f_sen_0(x));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Cálculo de coeficientes de Fourier asociados a u_1&lt;br /&gt;
bk_1 = zeros(n,1);&lt;br /&gt;
for k = 1:n&lt;br /&gt;
    f_sen_1 = @(x) u_1(x).*sin(k*pi*x);&lt;br /&gt;
&lt;br /&gt;
    bk_1(k) =(2/(k*pi))*trapz(x, f_sen_1(x));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Sustituimos en la solución calculada por separación de variables&lt;br /&gt;
u = @(xx,tt) 0;&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    u = @(xx,tt) u(xx,tt) + (ak_0(i)*cos(i*pi*tt) + bk_1(i)*sin(i*pi*tt)).*sin(i*pi*xx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficamos la solución&lt;br /&gt;
[X, T] = meshgrid(x, t);&lt;br /&gt;
surf(X, T, u(X, T), 'EdgeColor', 'flat')&lt;br /&gt;
title('Solución ecuación de ondas')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación, al igual que en el apartado anterior, se dispone una representación del comportamiento de la onda en función del tiempo.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:onda_ejercicio_4.gif|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como se observa, cuando la onda alcanza la frontera la solución se anula la solución para todo tiempo.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=% &lt;br /&gt;
%% Ejercicio 4 animación&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Se definen las condiciones iniciales&lt;br /&gt;
u_0 = @(x) exp(-100*(x-1/2).^2);&lt;br /&gt;
u_1 = @(x) 200*(x-1/2).* exp(-100.* (x-1/2).^2);&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos de tiempo y espacio&lt;br /&gt;
t = linspace(0,2,1000);&lt;br /&gt;
x = linspace(0,1,1000);&lt;br /&gt;
&lt;br /&gt;
% Número de términos de la serie a dibuja&lt;br /&gt;
n = 50;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Cálculo de coeficientes de Fourier asociados a u_0&lt;br /&gt;
ak_0 = zeros(n,1);&lt;br /&gt;
for k = 1:n&lt;br /&gt;
    f_sen_0 = @(x) u_0(x).*sin(k*pi*x);&lt;br /&gt;
&lt;br /&gt;
    ak_0(k) = 2*trapz(x, f_sen_0(x));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Cálculo de coeficientes de Fourier asociados a u_1&lt;br /&gt;
bk_1 = zeros(n,1);&lt;br /&gt;
for k = 1:n&lt;br /&gt;
    f_sen_1 = @(x) u_1(x).*sin(k*pi*x);&lt;br /&gt;
&lt;br /&gt;
    bk_1(k) =(2/(k*pi))*trapz(x, f_sen_1(x));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Sustituimos en la solución calculada por separación de variables&lt;br /&gt;
u = @(xx,tt) 0;&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    u = @(xx,tt) u(xx,tt) + (ak_0(i)*cos(i*pi*tt) + bk_1(i)*sin(i*pi*tt)).*sin(i*pi*xx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Crear un objeto de VideoWriter para el video&lt;br /&gt;
video = VideoWriter('onda_ejercicio_4.avi');&lt;br /&gt;
video.FrameRate = 100;&lt;br /&gt;
open(video);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
&lt;br /&gt;
    plot(x,u(x,t(i)))&lt;br /&gt;
    xlim([0,1])&lt;br /&gt;
    ylim([-1.5,1.5])&lt;br /&gt;
    xlabel('x')&lt;br /&gt;
    ylabel('u(x,t)')&lt;br /&gt;
    title(['Solución de la ecuación de onda en t=', num2str(t(i))])&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    % Capturar el frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
    &lt;br /&gt;
    % Limpiar la figura para la siguiente iteración, excepto los ejes&lt;br /&gt;
    clf; % Clear current figure&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Cerrar el objeto de video&lt;br /&gt;
close(video);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== Condiciones Neumann =====&lt;br /&gt;
&lt;br /&gt;
A continuación, para comprender mejor la diferencia respecto a las condiciones fronteras, se va a resolver el mismo problema cambiando las condiciones Dirichlet a condiciones Neumann, es decir &amp;lt;math&amp;gt;u_0(0,t)=u_1(1,t)=0&amp;lt;/math&amp;gt;. De esta manera se pretende resolver el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
\begin{cases}&lt;br /&gt;
u_{tt} - u_{xx} = 0 \\&lt;br /&gt;
u_x(0, t) = u_x(1, t) = 0 \\&lt;br /&gt;
u(x, 0) = e^{-100(x - \frac{1}{2})^2} \\&lt;br /&gt;
u_t(x, 0) = 200(x - \frac{1}{2})e^{-100(x - \frac{1}{2})^2}&lt;br /&gt;
\end{cases}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este caso, aplicando separación de variables, obtenemos que la solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x, t) = \sum_{k=1}^{\infty} \left[ a_k \cos(k\pi x) \cos(k\pi t) + b_k \cos(k\pi x) \sin(k\pi t) \right] &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
siendo&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;a_k = \frac{\int_{0}^{1} \cos(k\pi x) u_0(x) \, dx}{\int_{0}^{1} \cos^2(k\pi x) \, dx} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
y&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;b_k = \frac{\int_{0}^{1} \cos(k\pi x) u_1(x) \, dx}{\int_{0}^{1} \cos^2(k\pi x) \, dx} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La representación obtenida mediante el código que se presenta posteriormente es la siguiente:&lt;br /&gt;
[[Archivo:.png|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=%&lt;br /&gt;
%% Ejercicio 5&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Definimos f(x)&lt;br /&gt;
f = @(x) exp(-100 * (x - 1/2).^2);&lt;br /&gt;
&lt;br /&gt;
% -Derivada de f(x)&lt;br /&gt;
df = @(x) 200 * (x - 0.5) .* exp(-100 * (x - 0.5).^2);&lt;br /&gt;
&lt;br /&gt;
% Definimos el número de terminos de la serie&lt;br /&gt;
n=50;&lt;br /&gt;
&lt;br /&gt;
% Definimos el intervalo de tiempo y espacio&lt;br /&gt;
x = linspace(0, 1, 200);&lt;br /&gt;
t_values = linspace(0, 2, 200); % Evaluamos desde t=0 hasta t=2&lt;br /&gt;
&lt;br /&gt;
% Calculamos los coeficientes de Fourier para Neumann&lt;br /&gt;
a_k =zeros(n,1);&lt;br /&gt;
b_k =zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
for i=1:n&lt;br /&gt;
    a_k(i) =2 * trapz(x, f(x) .* cos(i * pi * x));&lt;br /&gt;
    b_k(i) =2 / (i * pi) * trapz(x, df(x) .* cos(i * pi * x));&lt;br /&gt;
end&lt;br /&gt;
% Calculamos la solución de la ecuación de onda&lt;br /&gt;
u=@(xx,tt) 0;&lt;br /&gt;
for i=1:n&lt;br /&gt;
    u=@(xx,tt) u(xx,tt) + (a_k(i).*cos(i*pi*tt)+b_k(i).*sin(i*pi*tt)).*cos(i*pi*xx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos u(X, T) para todos los puntos de la malla&lt;br /&gt;
[X, T] = meshgrid(x, t_values);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
surf(X, T, u(X,T), 'EdgeColor', 'flat')&lt;br /&gt;
title('Solución de la ecuación de onda con condiciones Neumann')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u(x, t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este caso, para su correcta visualización, se ha vuelto a crear la siguiente representación:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:.png|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
Como se observa el periodo en este caso vuelve a ser 2 y puesto que los extremos no son fijos porque tenemos de datos las derivadas la onda varía en la frontera.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=%&lt;br /&gt;
%% Ejercicio 5 animación&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Definimos f(x)&lt;br /&gt;
f = @(x) exp(-100 * (x - 1/2).^2);&lt;br /&gt;
&lt;br /&gt;
% -Derivada de f(x)&lt;br /&gt;
df = @(x) 200 * (x - 0.5) .* exp(-100 * (x - 0.5).^2);&lt;br /&gt;
&lt;br /&gt;
% Definimos el número de terminos de la serie&lt;br /&gt;
n=50;&lt;br /&gt;
&lt;br /&gt;
% Definimos el intervalo de tiempo y espacio&lt;br /&gt;
x = linspace(0, 1, 200);&lt;br /&gt;
t_values = linspace(0, 2, 200); % Evaluamos desde t=0 hasta t=2&lt;br /&gt;
&lt;br /&gt;
% Calculamos los coeficientes de Fourier para Neumann&lt;br /&gt;
a_k =zeros(n,1);&lt;br /&gt;
b_k =zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
for i=1:n&lt;br /&gt;
    a_k(i) =2 * trapz(x, f(x) .* cos(i * pi * x));&lt;br /&gt;
    b_k(i) =2 / (i * pi) * trapz(x, df(x) .* cos(i * pi * x));&lt;br /&gt;
end&lt;br /&gt;
% Calculamos la solución de la ecuación de onda&lt;br /&gt;
u=@(xx,tt) 0;&lt;br /&gt;
for i=1:n&lt;br /&gt;
    u=@(xx,tt) u(xx,tt) + (a_k(i).*cos(i*pi*tt)+b_k(i).*sin(i*pi*tt)).*cos(i*pi*xx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Crear un objeto de VideoWriter para el video&lt;br /&gt;
video = VideoWriter('onda_condiciones_newman_ejercicio_5_buena.avi');&lt;br /&gt;
video.FrameRate = 100;&lt;br /&gt;
open(video);&lt;br /&gt;
% Graficamos la solución en diferentes tiempos&lt;br /&gt;
figure&lt;br /&gt;
&lt;br /&gt;
for t = t_values&lt;br /&gt;
    u_values = u(x, t);&lt;br /&gt;
    plot(x, u_values)&lt;br /&gt;
    xlim([0, 1])&lt;br /&gt;
    ylim([-0.5, 2])&lt;br /&gt;
    title(['Solución de la ecuación de onda con condiciones Neumann en t=', num2str(t)])&lt;br /&gt;
    xlabel('x')&lt;br /&gt;
    ylabel('u(x, t)')&lt;br /&gt;
    % Capturar el frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
    clf&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Cerrar el objeto de video&lt;br /&gt;
close(video);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Soluciones fundamentales en dimensiones 1, 2 y 3 ==&lt;br /&gt;
La solución fundamental resuelve el sistema,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\left \{ \begin{array}{ll}  &lt;br /&gt;
u_{tt}-c^2\Delta u=0, \quad x \in \mathbb{R}^n, t&amp;gt;0, \\&lt;br /&gt;
u(x,0)=0, u_t(x,0)=\delta (x), \quad x \in \mathbb{R}^n,&lt;br /&gt;
\end{array} \right.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En esta parte del trabajo vamos a dibujar la solución fundamental de la ecuación de ondas en dimensiones 1, 2 y 3. Cuyas expresiones son las siguientes.&lt;br /&gt;
&lt;br /&gt;
Dimensión &amp;lt;math&amp;gt;n=1&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; K_1(x,t) =\frac{1}{2c}\textbf{1}_{[-ct,ct]}(x)=\frac{1}{2c}\textbf{1}_{[0,ct]}(|x|). &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dimensión &amp;lt;math&amp;gt;n=2&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; K_2(x,t)=\frac{1}{2\pi c \sqrt{c^2t^2-|x|^2}} \chi_{B(0,ct)}(x)=\frac{1}{2\pi c \sqrt{c^2t^2-|x|^2}} \textbf{1}_{[0,ct]}(|x|). &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dimensión &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; K_3(x,t)=\frac{\delta (|x|-ct)}{4\pi c|x|}, t&amp;gt;0. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para dibujarlas, es primero necesario hacer unos cambios en los casos de dimensiones 2 y 3.  &lt;br /&gt;
&lt;br /&gt;
* En el caso de la dimensión 2, encontramos una singularidad en el denominador de la función de la solución fundamental. Esta ocurre cuando ∣x∣=ct, lo que resulta en una división por cero. Para evitar esta singularidad, se agrega un término de regularización ϵ en el denominador. Esto asegura que la función sea suave y bien comportada en todas partes, incluidos los puntos cercanos a ∣x∣=ct. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  K^{ε}_{2} (x,t) = \frac{1}{ε + 2\pi c \sqrt(c^2 t^2 - ∣x∣^2)} ⲭ_{B(0,ct)}(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Para la representación del caso de dimensión 3 se ha sustituido la delta de Didac por su aproximación,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \delta (s) ≈ \phi_k (s) = \sqrt(\frac{k}{\pi})e^{(-ks^2)}  &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con estos cambios, representamos las 3 soluciones fundamentales observando que estas son radiales. &lt;br /&gt;
&lt;br /&gt;
GRÁFICAS &lt;br /&gt;
&lt;br /&gt;
Que las soluciones fundamentales sean &amp;quot;radiales&amp;quot; significa que son simétricas respecto al origen en coordenadas radiales. Dicha periodicidad es clara en las gráficas anteriores. Esto implica que el valor de la solución en un punto depende únicamente de la distancia radial desde el origen, y no de la dirección en la que se mida esa distancia. &lt;br /&gt;
&lt;br /&gt;
El código empleado para esta representación ha sido el siguiente.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=  &lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Dimensión 1&lt;br /&gt;
% Definimos los intervalos x,t:&lt;br /&gt;
x=-1:0.001:1;&lt;br /&gt;
t=0:0.001:1;&lt;br /&gt;
&lt;br /&gt;
% Creación de la rejilla&lt;br /&gt;
[X,T] = meshgrid(x,t);&lt;br /&gt;
&lt;br /&gt;
% Velocidad de propagación&lt;br /&gt;
c = 1;&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución fundamental&lt;br /&gt;
K = (X &amp;lt;= c*T) .* (X &amp;gt;= -c*T) / (2*c);&lt;br /&gt;
&lt;br /&gt;
% Visualización de la solución fundamental&lt;br /&gt;
figure(&amp;quot;Name&amp;quot;,'Solución fundamental dimensión 1')&lt;br /&gt;
surf(X, T, K,'EdgeColor','interp');&lt;br /&gt;
title(&amp;quot;Solución fundamental en dimensión 1&amp;quot;);&lt;br /&gt;
xlabel(&amp;quot;x&amp;quot;);&lt;br /&gt;
ylabel(&amp;quot;t&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
% Dimensión 2&lt;br /&gt;
% Definimos nuestros intervalos&lt;br /&gt;
r=0:0.001:1;&lt;br /&gt;
t=0:0.001:1;&lt;br /&gt;
&lt;br /&gt;
% Creamos la malla&lt;br /&gt;
[R,T]=meshgrid(r,t);&lt;br /&gt;
&lt;br /&gt;
% Velocidad de propagación&lt;br /&gt;
c=1;&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución fundamental&lt;br /&gt;
K=(R&amp;lt;=c*T)./(eps + 2*pi*c.*sqrt(c^2*T.^2-R.^2));&lt;br /&gt;
&lt;br /&gt;
figure(&amp;quot;Name&amp;quot;,'Solución fundamental dimensión 2')&lt;br /&gt;
surf(R,T,K,'EdgeColor','flat')&lt;br /&gt;
title(&amp;quot;Solución fundamental de dimensión 2&amp;quot;)&lt;br /&gt;
xlabel(&amp;quot;r&amp;quot;)&lt;br /&gt;
ylabel(&amp;quot;t&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestros intervalos&lt;br /&gt;
r=0:0.001:1;&lt;br /&gt;
t=0:0.001:1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[R,T]=meshgrid(r,t);&lt;br /&gt;
&lt;br /&gt;
c=1;                     % Velocidad de propagación &lt;br /&gt;
k=1000;                  &lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución fundamental&lt;br /&gt;
K=sqrt(k/pi).*exp(-k * (R-c*T).^2)./(4*pi*c*R);&lt;br /&gt;
&lt;br /&gt;
figure(&amp;quot;Name&amp;quot;,'Solución fundamental dimensión 3')&lt;br /&gt;
surf(R,T,K,'EdgeColor','flat')&lt;br /&gt;
title(&amp;quot;Solución fundamental de dimensión 3&amp;quot;)&lt;br /&gt;
xlabel(&amp;quot;r&amp;quot;)&lt;br /&gt;
ylabel(&amp;quot;t&amp;quot;)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== Ejemplo en dimesión 2 =====&lt;br /&gt;
Veamos a continuación el sistema que resuelve la solución fundamental en dimensión 2 en una bola de radio &amp;lt;math&amp;gt; \frac{1}{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left \{ \begin{array}{ll}  &lt;br /&gt;
u_{tt}-c^2\Delta u=0, \quad x \in \mathbb{R}^2, t&amp;gt;0, \\&lt;br /&gt;
u(x,0)=0, u_t(x,0)=h (x) = \chi _{B(0,\frac{1}{2})}(x), \quad x \in \mathbb{R}^2&lt;br /&gt;
\end{array} \right.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso, la solución fundamental viene dada por la convolución,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x,t)=\int_{\mathbb{R}^2}K_2 (x-y, t)h(y) dy &amp;lt;/math&amp;gt;. &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujamos las soluciones para t = 0, 0.5, 1, 2.&lt;br /&gt;
&lt;br /&gt;
GRÁFICAS&lt;br /&gt;
&lt;br /&gt;
A diferencia de lo visto en el caso general, aquí no podemos apreciar periodicidad. Sin embargo, el sistema se puede expresar en función de radio únicamente, es decir, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left \{ \begin{array}{ll}  &lt;br /&gt;
u_{tt}-c^2(\frac{1}{r}u_r+u_{rr})=0, \quad r \geq 0, t&amp;gt;0, \\&lt;br /&gt;
u(r,0)=0, \\&lt;br /&gt;
u_t(r,0)=h (r) = \textbf{1}_{[0,\frac{1}{2}]}(r), \quad x \in \mathbb{R}^2&lt;br /&gt;
\end{array} \right.  &lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas&amp;diff=72782</id>
		<title>Ecuación de ondas</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas&amp;diff=72782"/>
				<updated>2024-05-26T17:23:56Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: /* Condiciones Dirichlet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación de Ondas. Grupo ALA | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Lucía Amores, Aitana Guill y Andrea Navarro}}&lt;br /&gt;
&lt;br /&gt;
== Introducción ==&lt;br /&gt;
Este trabajo analiza la ecuación de ondas en una cuerda fija en los extremos del intervalo [0,1], con velocidad de propagación 𝑐=1. Incluiremos el sistema que describe el movimiento, así como su solución por separación de variables. Además, consideraremos ejemplos específicos de simulaciones para observar fenómenos como la periodicidad y ondas viajeras. Finalmente, compararemos resultados cambiando las condiciones de frontera a Neumann. &lt;br /&gt;
&lt;br /&gt;
A parte de esto, estudiaremos la solución fundamental de la ecuación de ondas en dimensiones 1, 2 y 3, aplicando un impulso inicial en 𝑥=0 y dibujando estas soluciones en la variable radial para comprender el principio de Huygens.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Contexto Histórico ==&lt;br /&gt;
La ecuación de ondas, fundamental en física y matemáticas, se formuló en el siglo XVIII por Jean le Rond d'Alembert y Leonhard Euler, quienes investigaron la vibración de cuerdas. En el siglo XIX, Joseph Fourier revolucionó su análisis al desarrollar la teoría de series de Fourier, facilitando la solución de ecuaciones diferenciales parciales mediante la separación de variables. &lt;br /&gt;
&lt;br /&gt;
El principio de Huygens, propuesto por Christiaan Huygens en el siglo XVII, establece que cada punto de un frente de onda actúa como una fuente de ondas secundarias. Este principio es esencial para comprender la propagación de ondas y las soluciones de la ecuación en diversas dimensiones. &lt;br /&gt;
&lt;br /&gt;
En el siglo XX y XXI, la teoría de la ecuación de ondas se ha ampliado a campos como la acústica, óptica y telecomunicaciones. Los métodos numéricos modernos permiten simular la propagación de ondas en medios complejos, mejorando nuestra comprensión y aplicación en problemas prácticos. &lt;br /&gt;
&lt;br /&gt;
Hoy, la ecuación de ondas es clave para modelar fenómenos desde vibraciones de cuerdas hasta ondas sísmicas y electromagnéticas, siendo esencial en física teórica, ingeniería y tecnologías modernas. Este trabajo se centra en su estudio y soluciones, aplicando estos principios a situaciones prácticas y avanzadas.&lt;br /&gt;
&lt;br /&gt;
==Modelización de los desplazamientos transversales== &lt;br /&gt;
Para modelar el comportamiento de los desplazamientos transversales de la cuerda vibrante, utilizamos la ecuación de ondas en una dimensión. Dado que la cuerda está fija en los extremos y tiene una densidad &amp;lt;math&amp;gt; d &amp;lt;/math&amp;gt; y tensión constante &amp;lt;math&amp;gt; \tau_0 &amp;lt;/math&amp;gt; de manera que la velocidad de propagación es &amp;lt;math&amp;gt; c = \tau_0/d = 1 &amp;lt;/math&amp;gt;, la ecuación de ondas se simplifica.&lt;br /&gt;
&lt;br /&gt;
La ecuación de ondas en una dimensión para los desplazamientos transversales &amp;lt;math&amp;gt; u(x,t) &amp;lt;/math&amp;gt; de la cuerda es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{\partial^2 u}{\partial t^2} = c^2 \frac{\partial^2 u}{\partial x^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que &amp;lt;math&amp;gt; c = 1 &amp;lt;/math&amp;gt;, la ecuación se reduce a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta ecuación diferencial parcial (EDP) debe acompañarse de las condiciones de contorno y las condiciones iniciales para estar completamente especificada.&lt;br /&gt;
&lt;br /&gt;
===Condiciones de contorno===&lt;br /&gt;
Dado que la cuerda está fija en los extremos, las condiciones de contorno son:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(0, t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(1, t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Condiciones iniciales===&lt;br /&gt;
Las condiciones iniciales especifican la posición inicial de la cuerda &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; y su velocidad inicial o impulso &amp;lt;math&amp;gt; u_1(x) &amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;u(x, 0) = u_0(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; \frac{\partial u}{\partial t}(x, 0) = u_1(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
===Sistema de EDP===&lt;br /&gt;
Juntando la ecuación de ondas con las condiciones de contorno e iniciales, el sistema completo que modela el comportamiento de los desplazamientos transversales de la cuerda es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}&lt;br /&gt;
&lt;br /&gt;
\frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2}, &amp;amp; 0 &amp;lt; x &amp;lt; 1, \ t &amp;gt; 0 \\&lt;br /&gt;
u(0, t) = 0, &amp;amp; t \geq 0 \\&lt;br /&gt;
u(1, t) = 0, &amp;amp; t \geq 0 \\&lt;br /&gt;
u(x, 0) = u_0(x), &amp;amp; 0 \leq x \leq 1 \\&lt;br /&gt;
\frac{\partial u}{\partial t}(x, 0) = u_1(x), &amp;amp; 0 \leq x \leq 1&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este sistema describe completamente la evolución temporal de los desplazamientos transversales de una cuerda vibrante con los extremos fijos, dada su posición e impulso iniciales.&lt;br /&gt;
&lt;br /&gt;
===Resolución del sistema por separación de variables en términos de los coeficientes de Fourier de los datos iniciales===&lt;br /&gt;
Primero, planteamos la solución de la ecuación de onda mediante separación de variables. Asumimos que la solución \( u(x,t) \) se puede escribir como un producto de dos funciones independientes, una que depende solo de \( x \) y otra que depende solo de \( t \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x, t) = X(x) T(t) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituimos esta forma en la ecuación de onda:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{\partial^2 (X(x) T(t))}{\partial t^2} = \frac{\partial^2 (X(x) T(t))}{\partial x^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto se simplifica a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;X(x) \frac{d^2 T(t)}{dt^2} = T(t) \frac{d^2 X(x)}{dx^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dividimos ambos lados por &amp;lt;math&amp;gt;X(x) T(t) &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{1}{T(t)} \frac{d^2 T(t)}{dt^2} = \frac{1}{X(x)} \frac{d^2 X(x)}{dx^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dado que el lado izquierdo depende solo de \( t \) y el lado derecho solo de \( x \), ambos deben ser iguales a una constante que llamaremos \(-\lambda\). Esto nos lleva a dos ecuaciones ordinarias:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{d^2 T(t)}{dt^2} + \lambda T(t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{d^2 X(x)}{dx^2} + \lambda X(x) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para satisfacer las condiciones de contorno \( u(0, t) = 0 \) y \( u(1, t) = 0 \), tenemos:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;X(0) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;X(1) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La ecuación para \( X(x) \) tiene la solución general:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;X(x) = A \sin(\sqrt{\lambda} x) + B \cos(\sqrt{\lambda} x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando las condiciones de contorno, obtenemos que \( B = 0 \) y que \( \sqrt{\lambda} \) debe ser un múltiplo de \( \pi \):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \sqrt{\lambda} = n \pi \quad \text{para} \quad n = 1, 2, 3, \ldots &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por lo tanto, \( \lambda = (n \pi)^2 \) y las funciones propias son:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; X_n(x) = \sin(n \pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La ecuación para \( T(t) \) se convierte en:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{d^2 T_n(t)}{dt^2} + (n \pi)^2 T_n(t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con la solución general:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; T_n(t) = C_n \cos(n \pi t) + D_n \sin(n \pi t) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Combinando \( X(x) \) y \( T(t) \), la solución general para \( u(x,t) \) es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x, t) = \sum_{n=1}^{\infty} \left( A_n \cos(n \pi t) + B_n \sin(n \pi t) \right) \sin(n \pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde \( A_n \) y \( B_n \) son coeficientes a determinar a partir de las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
### Determinación de los coeficientes \( A_n \) y \( B_n \)&lt;br /&gt;
&lt;br /&gt;
Las condiciones iniciales son:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x, 0) = u_0(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial u}{\partial t}(x, 0) = u_1(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para \( t = 0 \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x, 0) = \sum_{n=1}^{\infty} A_n \sin(n \pi x) = u_0(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Usamos la ortogonalidad de las funciones seno para determinar \( A_n \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; A_n = 2 \int_0^1 u_0(x) \sin(n \pi x) \, dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la derivada temporal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial u}{\partial t}(x, 0) = \sum_{n=1}^{\infty} B_n n \pi \cos(n \pi \cdot 0) \sin(n \pi x) = u_1(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B_n n \pi = 2 \int_0^1 u_1(x) \sin(n \pi x) \, dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por lo tanto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B_n = \frac{2}{n \pi} \int_0^1 u_1(x) \sin(n \pi x) \, dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finalmente, la solución de la ecuación de onda en términos de los coeficientes de Fourier de los datos iniciales es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x, t) = \sum_{n=1}^{\infty} \left( \left(2 \int_0^1 u_0(x) \sin(n \pi x) \, dx \right) \cos(n \pi t) + \left(\frac{2}{n \pi} \int_0^1 u_1(x) \sin(n \pi x) \, dx \right) \sin(n \pi t) \right) \sin(n \pi x) &lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Esta expresión proporciona la solución completa de la ecuación de onda en función de las condiciones iniciales \( u_0(x) \) y \( u_1(x) \).&lt;br /&gt;
&lt;br /&gt;
===== Ejemplo de solución periódica en tiempo =====&lt;br /&gt;
&lt;br /&gt;
En esta parte del documento para comprender lo anteriormente explicado de manera óptima se va a proceder a analizar una serie de ejemplo. El primero de ellos se trata de la representación gráfica de una solución periódica en tiempo. Esta viene dada suponiendo que los datos iniciales son &amp;lt;math&amp;gt;u_0(x)=e^{-100(x-\frac{1}{2})^2}&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;u_1(x)=0&amp;lt;/math&amp;gt;. Es por ello que la representación de la solución en el intervalo t ∈ [0, 2] es la siguiente:&lt;br /&gt;
[[Archivo:ondaperiodicaALA.png|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para la obtención de esta representación se ha creado el siguiente código en Matlab:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=% &lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestros datos iniciales:&lt;br /&gt;
u_0=@(x) (exp(-100.*(x-1/2).^2));&lt;br /&gt;
u_1=@(x) (0);&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestro intervalo de tiempo t:&lt;br /&gt;
t=0:0.001:2;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestro intervalo x:&lt;br /&gt;
x=0:0.001:1;&lt;br /&gt;
&lt;br /&gt;
% Definimos el número de términos de la serie a dibujar:&lt;br /&gt;
n=50;&lt;br /&gt;
&lt;br /&gt;
% Calculamos los términos de fourier asociados a u_0:&lt;br /&gt;
ak_0=zeros(n,1);&lt;br /&gt;
bk_0=zeros(n,1);&lt;br /&gt;
ck_0=zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
f_sen_0=@(x,k) u_0(x).*sin(k*pi*x);&lt;br /&gt;
f_cos_0=@(x,k) u_0(x).*cos(k*pi*x);&lt;br /&gt;
f_medio_0=@(x,k) u_0(x).*1/2;&lt;br /&gt;
&lt;br /&gt;
for k=1:n&lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_sen_0=f_sen_0(x,k);&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_cos:&lt;br /&gt;
    y_cos_0=f_cos_0(x,k);&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_medio_0=f_medio_0(x);&lt;br /&gt;
&lt;br /&gt;
    ak_0(k)=trapz(x,y_sen_0);&lt;br /&gt;
    bk_0(k)=trapz(x,y_cos_0);&lt;br /&gt;
    ck_0(k)=trapz(x,y_medio_0);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos los términos de fourier asociados a u_1:&lt;br /&gt;
ak_1=zeros(n,1);&lt;br /&gt;
bk_1=zeros(n,1);&lt;br /&gt;
ck_1=zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
f_sen_1=@(x,k) u_1(x).*sin(k*pi*x);&lt;br /&gt;
f_cos_1=@(x,k) u_1(x).*cos(k*pi*x);&lt;br /&gt;
f_medio_1=@(x,k) u_1(x).*1/2;&lt;br /&gt;
&lt;br /&gt;
for k=1:n&lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_sen_1=f_sen_1(x,k);&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_cos:&lt;br /&gt;
    y_cos_1=f_cos_1(x,k);&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_medio_1=f_medio_1(x);&lt;br /&gt;
&lt;br /&gt;
    ak_1(k)=trapz(x,y_sen_1);&lt;br /&gt;
    bk_1(k)=trapz(x,y_cos_1);&lt;br /&gt;
    %ck_1(k)=trapz(x,y_medio_1);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Sustituimos en la solución calculada por separación de variables:&lt;br /&gt;
u=@(xx,tt) 0;&lt;br /&gt;
for i=1:n&lt;br /&gt;
    u=@(xx,tt) u(xx,tt) + (ak_0(i).*cos(i*pi*tt)+bk_1(i).*sin(i*pi*tt)).*sin(i*pi*xx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficamos la solución:&lt;br /&gt;
[X,T]=meshgrid(x,t);&lt;br /&gt;
surf(X,T,u(X,T),'EdgeColor','flat')&lt;br /&gt;
title('Solución ecuación de ondas')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
   &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como se observa en la imagen anterior la función muestra un comportamiento que se repite regularmente con el tiempo. A este tipo de funciones se les denomina periódicas en tiempo. Esto se puede observar de manera óptima para su comprensión en la siguiente gráfica, en la cual se observa el comportamiento explicado a anteriormente cuyo periodo es 2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:ondaperiodicalateralALA.png|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para la obtención de esta animación se ha hecho uso del siguiente cógido:&lt;br /&gt;
{{matlab|codigo=% &lt;br /&gt;
%% Ejercicio 3 animación&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestros datos iniciales:&lt;br /&gt;
u_0=@(x) (exp(-100.*(x-1/2).^2));&lt;br /&gt;
u_1=@(x) (0);&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestro intervalo de tiempo t:&lt;br /&gt;
t=0:0.001:2;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestro intervalo x:&lt;br /&gt;
x=0:0.001:1;&lt;br /&gt;
&lt;br /&gt;
% Definimos el número de términos de la serie a dibujar:&lt;br /&gt;
n=50;&lt;br /&gt;
&lt;br /&gt;
% Calculamos los términos de fourier asociados a u_0:&lt;br /&gt;
ak_0=zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
f_sen_0=@(x,k) u_0(x).*sin(k*pi*x);&lt;br /&gt;
&lt;br /&gt;
for k=1:n&lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_sen_0=f_sen_0(x,k);&lt;br /&gt;
&lt;br /&gt;
    ak_0(k)=2.*trapz(x,y_sen_0);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos los términos de fourier asociados a u_1:&lt;br /&gt;
bk_1=zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
f_cos_1=@(x,k) u_1(x).*cos(k*pi*x);&lt;br /&gt;
&lt;br /&gt;
for k=1:n&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_cos:&lt;br /&gt;
    y_cos_1=f_cos_1(x,k);&lt;br /&gt;
            &lt;br /&gt;
    bk_1(k)=2/(k*pi)*trapz(x,y_cos_1);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Sustituimos en la solución calculada por separación de variables:&lt;br /&gt;
u=@(xx,tt) 0;&lt;br /&gt;
for i=1:n&lt;br /&gt;
    u=@(xx,tt) u(xx,tt) + (ak_0(i).*cos(i*pi*tt)+bk_1(i).*sin(i*pi*tt)).*sin(i*pi*xx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficamos la solución:&lt;br /&gt;
% Crear un objeto de VideoWriter para el video&lt;br /&gt;
video = VideoWriter('onda_ejercicio_3.avi');&lt;br /&gt;
video.FrameRate = 100;&lt;br /&gt;
open(video);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
&lt;br /&gt;
    plot(x,u(x,t(i)))&lt;br /&gt;
    xlim([0,1])&lt;br /&gt;
    ylim([-1.5,1.5])&lt;br /&gt;
    xlabel('x')&lt;br /&gt;
    ylabel('u(x,t)')&lt;br /&gt;
    title(['Solución de la ecuación de onda en t=', num2str(t(i))])&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    % Capturar el frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
    &lt;br /&gt;
    % Limpiar la figura para la siguiente iteración, excepto los ejes&lt;br /&gt;
    clf; % Clear current figure&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Cerrar el objeto de video&lt;br /&gt;
close(video);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de la onda viajera ====&lt;br /&gt;
&lt;br /&gt;
===== Condiciones Dirichlet  =====&lt;br /&gt;
En este caso se va a tratar el ejemplo de una onda viajera en un solo sentido denotada por &amp;lt;math&amp;gt; u(x,t)=f(x-t)&amp;lt;/math&amp;gt;. Es por ello que se toman como datos iniciales &amp;lt;math&amp;gt;u_0(x)=f(x)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;u_1(x)=f'(x)&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt; f(x)=e^{-100(x-\frac{1}{2})^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se ha creado un código en MATLAB para obtener la siguiente respresentación en el mismo intervalo:&lt;br /&gt;
[[Archivo:ondaejercicio43d.png|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se observa que el tiempo de llegada de la onda de un extremo al otro es una unidad de tiempo. A su vez puesto que la cuerda mide una unidad de espacio se concluye que la velocidad de propagación es 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para la obtención de esta representación se ha creado el siguiente código en Matlab:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=% &lt;br /&gt;
&lt;br /&gt;
   %% Ejercicio 4&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Se definen las condiciones iniciales&lt;br /&gt;
u_0 = @(x) exp(-100*(x-1/2).^2);&lt;br /&gt;
u_1 = @(x) 200*(x-1/2).* exp(-100.* (x-1/2).^2);&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos de tiempo y espacio&lt;br /&gt;
t = linspace(0,2,1000);&lt;br /&gt;
x = linspace(0,1,1000);&lt;br /&gt;
&lt;br /&gt;
% Número de términos de la serie a dibuja&lt;br /&gt;
n = 50;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Cálculo de coeficientes de Fourier asociados a u_0&lt;br /&gt;
ak_0 = zeros(n,1);&lt;br /&gt;
for k = 1:n&lt;br /&gt;
    f_sen_0 = @(x) u_0(x).*sin(k*pi*x);&lt;br /&gt;
&lt;br /&gt;
    ak_0(k) = 2*trapz(x, f_sen_0(x));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Cálculo de coeficientes de Fourier asociados a u_1&lt;br /&gt;
bk_1 = zeros(n,1);&lt;br /&gt;
for k = 1:n&lt;br /&gt;
    f_sen_1 = @(x) u_1(x).*sin(k*pi*x);&lt;br /&gt;
&lt;br /&gt;
    bk_1(k) =(2/(k*pi))*trapz(x, f_sen_1(x));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Sustituimos en la solución calculada por separación de variables&lt;br /&gt;
u = @(xx,tt) 0;&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    u = @(xx,tt) u(xx,tt) + (ak_0(i)*cos(i*pi*tt) + bk_1(i)*sin(i*pi*tt)).*sin(i*pi*xx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficamos la solución&lt;br /&gt;
[X, T] = meshgrid(x, t);&lt;br /&gt;
surf(X, T, u(X, T), 'EdgeColor', 'flat')&lt;br /&gt;
title('Solución ecuación de ondas')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación, al igual que en el apartado anterior, se dispone una representación del comportamiento de la onda en función del tiempo.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:onda_ejercicio_4.gif|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como se observa, cuando la onda alcanza la frontera la solución se anula la solución para todo tiempo.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=% &lt;br /&gt;
%% Ejercicio 4 animación&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Se definen las condiciones iniciales&lt;br /&gt;
u_0 = @(x) exp(-100*(x-1/2).^2);&lt;br /&gt;
u_1 = @(x) 200*(x-1/2).* exp(-100.* (x-1/2).^2);&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos de tiempo y espacio&lt;br /&gt;
t = linspace(0,2,1000);&lt;br /&gt;
x = linspace(0,1,1000);&lt;br /&gt;
&lt;br /&gt;
% Número de términos de la serie a dibuja&lt;br /&gt;
n = 50;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Cálculo de coeficientes de Fourier asociados a u_0&lt;br /&gt;
ak_0 = zeros(n,1);&lt;br /&gt;
for k = 1:n&lt;br /&gt;
    f_sen_0 = @(x) u_0(x).*sin(k*pi*x);&lt;br /&gt;
&lt;br /&gt;
    ak_0(k) = 2*trapz(x, f_sen_0(x));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Cálculo de coeficientes de Fourier asociados a u_1&lt;br /&gt;
bk_1 = zeros(n,1);&lt;br /&gt;
for k = 1:n&lt;br /&gt;
    f_sen_1 = @(x) u_1(x).*sin(k*pi*x);&lt;br /&gt;
&lt;br /&gt;
    bk_1(k) =(2/(k*pi))*trapz(x, f_sen_1(x));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Sustituimos en la solución calculada por separación de variables&lt;br /&gt;
u = @(xx,tt) 0;&lt;br /&gt;
for i = 1:n&lt;br /&gt;
    u = @(xx,tt) u(xx,tt) + (ak_0(i)*cos(i*pi*tt) + bk_1(i)*sin(i*pi*tt)).*sin(i*pi*xx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Crear un objeto de VideoWriter para el video&lt;br /&gt;
video = VideoWriter('onda_ejercicio_4.avi');&lt;br /&gt;
video.FrameRate = 100;&lt;br /&gt;
open(video);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure&lt;br /&gt;
&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
&lt;br /&gt;
    plot(x,u(x,t(i)))&lt;br /&gt;
    xlim([0,1])&lt;br /&gt;
    ylim([-1.5,1.5])&lt;br /&gt;
    xlabel('x')&lt;br /&gt;
    ylabel('u(x,t)')&lt;br /&gt;
    title(['Solución de la ecuación de onda en t=', num2str(t(i))])&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    % Capturar el frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
    &lt;br /&gt;
    % Limpiar la figura para la siguiente iteración, excepto los ejes&lt;br /&gt;
    clf; % Clear current figure&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Cerrar el objeto de video&lt;br /&gt;
close(video);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== Condiciones Neumann =====&lt;br /&gt;
&lt;br /&gt;
A continuación, para comprender mejor la diferencia respecto a las condiciones fronteras, se va a resolver el mismo problema cambiando las condiciones Dirichlet a condiciones Neumann, es decir &amp;lt;math&amp;gt;u_0(0,t)=u_1(1,t)=0&amp;lt;/math&amp;gt;. De esta manera se pretende resolver el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
\begin{cases}&lt;br /&gt;
u_{tt} - u_{xx} = 0 \\&lt;br /&gt;
u_x(0, t) = u_x(1, t) = 0 \\&lt;br /&gt;
u(x, 0) = e^{-100(x - \frac{1}{2})^2} \\&lt;br /&gt;
u_t(x, 0) = 200(x - \frac{1}{2})e^{-100(x - \frac{1}{2})^2}&lt;br /&gt;
\end{cases}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este caso, aplicando separación de variables, obtenemos que la solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x, t) = \sum_{k=1}^{\infty} \left[ a_k \cos(k\pi x) \cos(k\pi t) + b_k \cos(k\pi x) \sin(k\pi t) \right] &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
siendo&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;a_k = \frac{\int_{0}^{1} \cos(k\pi x) u_0(x) \, dx}{\int_{0}^{1} \cos^2(k\pi x) \, dx} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
y&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;b_k = \frac{\int_{0}^{1} \cos(k\pi x) u_1(x) \, dx}{\int_{0}^{1} \cos^2(k\pi x) \, dx} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La representación obtenida mediante el código que se presenta posteriormente es la siguiente:&lt;br /&gt;
[[Archivo:.png|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=%&lt;br /&gt;
%% Ejercicio 5&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Definimos f(x)&lt;br /&gt;
f = @(x) exp(-100 * (x - 1/2).^2);&lt;br /&gt;
&lt;br /&gt;
% -Derivada de f(x)&lt;br /&gt;
df = @(x) 200 * (x - 0.5) .* exp(-100 * (x - 0.5).^2);&lt;br /&gt;
&lt;br /&gt;
% Definimos el número de terminos de la serie&lt;br /&gt;
n=50;&lt;br /&gt;
&lt;br /&gt;
% Definimos el intervalo de tiempo y espacio&lt;br /&gt;
x = linspace(0, 1, 200);&lt;br /&gt;
t_values = linspace(0, 2, 200); % Evaluamos desde t=0 hasta t=2&lt;br /&gt;
&lt;br /&gt;
% Calculamos los coeficientes de Fourier para Neumann&lt;br /&gt;
a_k =zeros(n,1);&lt;br /&gt;
b_k =zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
for i=1:n&lt;br /&gt;
    a_k(i) =2 * trapz(x, f(x) .* cos(i * pi * x));&lt;br /&gt;
    b_k(i) =2 / (i * pi) * trapz(x, df(x) .* cos(i * pi * x));&lt;br /&gt;
end&lt;br /&gt;
% Calculamos la solución de la ecuación de onda&lt;br /&gt;
u=@(xx,tt) 0;&lt;br /&gt;
for i=1:n&lt;br /&gt;
    u=@(xx,tt) u(xx,tt) + (a_k(i).*cos(i*pi*tt)+b_k(i).*sin(i*pi*tt)).*cos(i*pi*xx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos u(X, T) para todos los puntos de la malla&lt;br /&gt;
[X, T] = meshgrid(x, t_values);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
surf(X, T, u(X,T), 'EdgeColor', 'flat')&lt;br /&gt;
title('Solución de la ecuación de onda con condiciones Neumann')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u(x, t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este caso, para su correcta visualización, se ha vuelto a crear la siguiente representación:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:.png|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
Como se observa el periodo en este caso vuelve a ser 2 y puesto que los extremos no son fijos porque tenemos de datos las derivadas la onda varía en la frontera.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=%&lt;br /&gt;
%% Ejercicio 5 animación&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Definimos f(x)&lt;br /&gt;
f = @(x) exp(-100 * (x - 1/2).^2);&lt;br /&gt;
&lt;br /&gt;
% -Derivada de f(x)&lt;br /&gt;
df = @(x) 200 * (x - 0.5) .* exp(-100 * (x - 0.5).^2);&lt;br /&gt;
&lt;br /&gt;
% Definimos el número de terminos de la serie&lt;br /&gt;
n=50;&lt;br /&gt;
&lt;br /&gt;
% Definimos el intervalo de tiempo y espacio&lt;br /&gt;
x = linspace(0, 1, 200);&lt;br /&gt;
t_values = linspace(0, 2, 200); % Evaluamos desde t=0 hasta t=2&lt;br /&gt;
&lt;br /&gt;
% Calculamos los coeficientes de Fourier para Neumann&lt;br /&gt;
a_k =zeros(n,1);&lt;br /&gt;
b_k =zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
for i=1:n&lt;br /&gt;
    a_k(i) =2 * trapz(x, f(x) .* cos(i * pi * x));&lt;br /&gt;
    b_k(i) =2 / (i * pi) * trapz(x, df(x) .* cos(i * pi * x));&lt;br /&gt;
end&lt;br /&gt;
% Calculamos la solución de la ecuación de onda&lt;br /&gt;
u=@(xx,tt) 0;&lt;br /&gt;
for i=1:n&lt;br /&gt;
    u=@(xx,tt) u(xx,tt) + (a_k(i).*cos(i*pi*tt)+b_k(i).*sin(i*pi*tt)).*cos(i*pi*xx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Crear un objeto de VideoWriter para el video&lt;br /&gt;
video = VideoWriter('onda_condiciones_newman_ejercicio_5_buena.avi');&lt;br /&gt;
video.FrameRate = 100;&lt;br /&gt;
open(video);&lt;br /&gt;
% Graficamos la solución en diferentes tiempos&lt;br /&gt;
figure&lt;br /&gt;
&lt;br /&gt;
for t = t_values&lt;br /&gt;
    u_values = u(x, t);&lt;br /&gt;
    plot(x, u_values)&lt;br /&gt;
    xlim([0, 1])&lt;br /&gt;
    ylim([-0.5, 2])&lt;br /&gt;
    title(['Solución de la ecuación de onda con condiciones Neumann en t=', num2str(t)])&lt;br /&gt;
    xlabel('x')&lt;br /&gt;
    ylabel('u(x, t)')&lt;br /&gt;
    % Capturar el frame para el video&lt;br /&gt;
    frame = getframe(gcf);&lt;br /&gt;
    writeVideo(video, frame);&lt;br /&gt;
    clf&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Cerrar el objeto de video&lt;br /&gt;
close(video);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Soluciones fundamentales en dimensiones 1, 2 y 3 ==&lt;br /&gt;
La solución fundamental resuelve el sistema,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\left \{ \begin{array}{ll}  &lt;br /&gt;
u_{tt}-c^2\Delta u=0, \quad x \in \mathbb{R}^n, t&amp;gt;0, \\&lt;br /&gt;
u(x,0)=0, u_t(x,0)=\delta (x), \quad x \in \mathbb{R}^n,&lt;br /&gt;
\end{array} \right.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En esta parte del trabajo vamos a dibujar la solución fundamental de la ecuación de ondas en dimensiones 1, 2 y 3. Cuyas expresiones son las siguientes.&lt;br /&gt;
&lt;br /&gt;
Dimensión &amp;lt;math&amp;gt;n=1&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; K_1(x,t) =\frac{1}{2c}\textbf{1}_{[-ct,ct]}(x)=\frac{1}{2c}\textbf{1}_{[0,ct]}(|x|). &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dimensión &amp;lt;math&amp;gt;n=2&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; K_2(x,t)=\frac{1}{2\pi c \sqrt{c^2t^2-|x|^2}} \chi_{B(0,ct)}(x)=\frac{1}{2\pi c \sqrt{c^2t^2-|x|^2}} \textbf{1}_{[0,ct]}(|x|). &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dimensión &amp;lt;math&amp;gt;n=3&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt; K_3(x,t)=\frac{\delta (|x|-ct)}{4\pi c|x|}, t&amp;gt;0. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para dibujarlas, es primero necesario hacer unos cambios en los casos de dimensiones 2 y 3.  &lt;br /&gt;
&lt;br /&gt;
* En el caso de la dimensión 2, encontramos una singularidad en el denominador de la función de la solución fundamental. Esta ocurre cuando ∣x∣=ct, lo que resulta en una división por cero. Para evitar esta singularidad, se agrega un término de regularización ϵ en el denominador. Esto asegura que la función sea suave y bien comportada en todas partes, incluidos los puntos cercanos a ∣x∣=ct. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  K^{ε}_{2} (x,t) = \frac{1}{ε + 2\pi c \sqrt(c^2 t^2 - ∣x∣^2)} ⲭ_{B(0,ct)}(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Para la representación del caso de dimensión 3 se ha sustituido la delta de Didac por su aproximación,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \delta (s) ≈ \phi_k (s) = \sqrt(\frac{k}{\pi})e^{(-ks^2)}  &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con estos cambios, representamos las 3 soluciones fundamentales observando que estas son radiales. &lt;br /&gt;
&lt;br /&gt;
GRÁFICAS &lt;br /&gt;
&lt;br /&gt;
Que las soluciones fundamentales sean &amp;quot;radiales&amp;quot; significa que son simétricas respecto al origen en coordenadas radiales. Dicha periodicidad es clara en las gráficas anteriores. Esto implica que el valor de la solución en un punto depende únicamente de la distancia radial desde el origen, y no de la dirección en la que se mida esa distancia. &lt;br /&gt;
&lt;br /&gt;
El código empleado para esta representación ha sido el siguiente.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=  &lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Dimensión 1&lt;br /&gt;
% Definimos los intervalos x,t:&lt;br /&gt;
x=-1:0.001:1;&lt;br /&gt;
t=0:0.001:1;&lt;br /&gt;
&lt;br /&gt;
% Creación de la rejilla&lt;br /&gt;
[X,T] = meshgrid(x,t);&lt;br /&gt;
&lt;br /&gt;
% Velocidad de propagación&lt;br /&gt;
c = 1;&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución fundamental&lt;br /&gt;
K = (X &amp;lt;= c*T) .* (X &amp;gt;= -c*T) / (2*c);&lt;br /&gt;
&lt;br /&gt;
% Visualización de la solución fundamental&lt;br /&gt;
figure(&amp;quot;Name&amp;quot;,'Solución fundamental dimensión 1')&lt;br /&gt;
surf(X, T, K,'EdgeColor','interp');&lt;br /&gt;
title(&amp;quot;Solución fundamental en dimensión 1&amp;quot;);&lt;br /&gt;
xlabel(&amp;quot;x&amp;quot;);&lt;br /&gt;
ylabel(&amp;quot;t&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
% Dimensión 2&lt;br /&gt;
% Definimos nuestros intervalos&lt;br /&gt;
r=0:0.001:1;&lt;br /&gt;
t=0:0.001:1;&lt;br /&gt;
&lt;br /&gt;
% Creamos la malla&lt;br /&gt;
[R,T]=meshgrid(r,t);&lt;br /&gt;
&lt;br /&gt;
% Velocidad de propagación&lt;br /&gt;
c=1;&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución fundamental&lt;br /&gt;
K=(R&amp;lt;=c*T)./(eps + 2*pi*c.*sqrt(c^2*T.^2-R.^2));&lt;br /&gt;
&lt;br /&gt;
figure(&amp;quot;Name&amp;quot;,'Solución fundamental dimensión 2')&lt;br /&gt;
surf(R,T,K,'EdgeColor','flat')&lt;br /&gt;
title(&amp;quot;Solución fundamental de dimensión 2&amp;quot;)&lt;br /&gt;
xlabel(&amp;quot;r&amp;quot;)&lt;br /&gt;
ylabel(&amp;quot;t&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestros intervalos&lt;br /&gt;
r=0:0.001:1;&lt;br /&gt;
t=0:0.001:1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[R,T]=meshgrid(r,t);&lt;br /&gt;
&lt;br /&gt;
c=1;                     % Velocidad de propagación &lt;br /&gt;
k=1000;                  &lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución fundamental&lt;br /&gt;
K=sqrt(k/pi).*exp(-k * (R-c*T).^2)./(4*pi*c*R);&lt;br /&gt;
&lt;br /&gt;
figure(&amp;quot;Name&amp;quot;,'Solución fundamental dimensión 3')&lt;br /&gt;
surf(R,T,K,'EdgeColor','flat')&lt;br /&gt;
title(&amp;quot;Solución fundamental de dimensión 3&amp;quot;)&lt;br /&gt;
xlabel(&amp;quot;r&amp;quot;)&lt;br /&gt;
ylabel(&amp;quot;t&amp;quot;)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== Ejemplo en dimesión 2 =====&lt;br /&gt;
Veamos a continuación el sistema que resuelve la solución fundamental en dimensión 2 en una bola de radio &amp;lt;math&amp;gt; \frac{1}{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left \{ \begin{array}{ll}  &lt;br /&gt;
u_{tt}-c^2\Delta u=0, \quad x \in \mathbb{R}^2, t&amp;gt;0, \\&lt;br /&gt;
u(x,0)=0, u_t(x,0)=h (x) = \chi _{B(0,\frac{1}{2})}(x), \quad x \in \mathbb{R}^2&lt;br /&gt;
\end{array} \right.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso, la solución fundamental viene dada por la convolución,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x,t)=\int_{\mathbb{R}^2}K_2 (x-y, t)h(y) dy &amp;lt;/math&amp;gt;. &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibujamos las soluciones para t = 0, 0.5, 1, 2.&lt;br /&gt;
&lt;br /&gt;
GRÁFICAS&lt;br /&gt;
&lt;br /&gt;
A diferencia de lo visto en el caso general, aquí no podemos apreciar periodicidad. Sin embargo, el sistema se puede expresar en función de radio únicamente, es decir, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \left \{ \begin{array}{ll}  &lt;br /&gt;
u_{tt}-c^2(\frac{1}{r}u_r+u_{rr})=0, \quad r \geq 0, t&amp;gt;0, \\&lt;br /&gt;
u(r,0)=0, \\&lt;br /&gt;
u_t(r,0)=h (r) = \textbf{1}_{[0,\frac{1}{2}]}(r), \quad x \in \mathbb{R}^2&lt;br /&gt;
\end{array} \right.  &lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:OndaperiodicalateralALA.png&amp;diff=72294</id>
		<title>Archivo:OndaperiodicalateralALA.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:OndaperiodicalateralALA.png&amp;diff=72294"/>
				<updated>2024-05-23T15:48:18Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas&amp;diff=72293</id>
		<title>Ecuación de ondas</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas&amp;diff=72293"/>
				<updated>2024-05-23T15:47:11Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: /* Ejemplo de solución periódica en tiempo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación de Ondas. Grupo ALA | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Lucía Amores, Aitana Guill y Andrea Navarro}}&lt;br /&gt;
&lt;br /&gt;
==Introducción==&lt;br /&gt;
==Modelización de los desplazamientos transversales== &lt;br /&gt;
Para modelar el comportamiento de los desplazamientos transversales de la cuerda vibrante, utilizamos la ecuación de ondas en una dimensión. Dado que la cuerda está fija en los extremos y tiene una densidad &amp;lt;math&amp;gt; d &amp;lt;/math&amp;gt; y tensión constante &amp;lt;math&amp;gt; \tau_0 &amp;lt;/math&amp;gt; de manera que la velocidad de propagación es &amp;lt;math&amp;gt; c = \tau_0/d = 1 &amp;lt;/math&amp;gt;, la ecuación de ondas se simplifica.&lt;br /&gt;
&lt;br /&gt;
La ecuación de ondas en una dimensión para los desplazamientos transversales &amp;lt;math&amp;gt; u(x,t) &amp;lt;/math&amp;gt; de la cuerda es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{\partial^2 u}{\partial t^2} = c^2 \frac{\partial^2 u}{\partial x^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que &amp;lt;math&amp;gt; c = 1 &amp;lt;/math&amp;gt;, la ecuación se reduce a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta ecuación diferencial parcial (EDP) debe acompañarse de las condiciones de contorno y las condiciones iniciales para estar completamente especificada.&lt;br /&gt;
&lt;br /&gt;
===Condiciones de contorno===&lt;br /&gt;
Dado que la cuerda está fija en los extremos, las condiciones de contorno son:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(0, t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(1, t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Condiciones iniciales===&lt;br /&gt;
Las condiciones iniciales especifican la posición inicial de la cuerda &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; y su velocidad inicial o impulso &amp;lt;math&amp;gt; u_1(x) &amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;u(x, 0) = u_0(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; \frac{\partial u}{\partial t}(x, 0) = u_1(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
===Sistema de EDP===&lt;br /&gt;
Juntando la ecuación de ondas con las condiciones de contorno e iniciales, el sistema completo que modela el comportamiento de los desplazamientos transversales de la cuerda es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}&lt;br /&gt;
&lt;br /&gt;
\frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2}, &amp;amp; 0 &amp;lt; x &amp;lt; 1, \ t &amp;gt; 0 \\&lt;br /&gt;
u(0, t) = 0, &amp;amp; t \geq 0 \\&lt;br /&gt;
u(1, t) = 0, &amp;amp; t \geq 0 \\&lt;br /&gt;
u(x, 0) = u_0(x), &amp;amp; 0 \leq x \leq 1 \\&lt;br /&gt;
\frac{\partial u}{\partial t}(x, 0) = u_1(x), &amp;amp; 0 \leq x \leq 1&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este sistema describe completamente la evolución temporal de los desplazamientos transversales de una cuerda vibrante con los extremos fijos, dada su posición e impulso iniciales.&lt;br /&gt;
&lt;br /&gt;
===Resolución del sistema por separación de variables en términos de los coeficientes de Fourier de los datos iniciales===&lt;br /&gt;
Primero, planteamos la solución de la ecuación de onda mediante separación de variables. Asumimos que la solución \( u(x,t) \) se puede escribir como un producto de dos funciones independientes, una que depende solo de \( x \) y otra que depende solo de \( t \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x, t) = X(x) T(t) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituimos esta forma en la ecuación de onda:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{\partial^2 (X(x) T(t))}{\partial t^2} = \frac{\partial^2 (X(x) T(t))}{\partial x^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto se simplifica a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;X(x) \frac{d^2 T(t)}{dt^2} = T(t) \frac{d^2 X(x)}{dx^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dividimos ambos lados por &amp;lt;math&amp;gt;X(x) T(t) &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{1}{T(t)} \frac{d^2 T(t)}{dt^2} = \frac{1}{X(x)} \frac{d^2 X(x)}{dx^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dado que el lado izquierdo depende solo de \( t \) y el lado derecho solo de \( x \), ambos deben ser iguales a una constante que llamaremos \(-\lambda\). Esto nos lleva a dos ecuaciones ordinarias:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{d^2 T(t)}{dt^2} + \lambda T(t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{d^2 X(x)}{dx^2} + \lambda X(x) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para satisfacer las condiciones de contorno \( u(0, t) = 0 \) y \( u(1, t) = 0 \), tenemos:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;X(0) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;X(1) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La ecuación para \( X(x) \) tiene la solución general:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;X(x) = A \sin(\sqrt{\lambda} x) + B \cos(\sqrt{\lambda} x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando las condiciones de contorno, obtenemos que \( B = 0 \) y que \( \sqrt{\lambda} \) debe ser un múltiplo de \( \pi \):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \sqrt{\lambda} = n \pi \quad \text{para} \quad n = 1, 2, 3, \ldots &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por lo tanto, \( \lambda = (n \pi)^2 \) y las funciones propias son:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; X_n(x) = \sin(n \pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La ecuación para \( T(t) \) se convierte en:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{d^2 T_n(t)}{dt^2} + (n \pi)^2 T_n(t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con la solución general:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; T_n(t) = C_n \cos(n \pi t) + D_n \sin(n \pi t) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Combinando \( X(x) \) y \( T(t) \), la solución general para \( u(x,t) \) es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x, t) = \sum_{n=1}^{\infty} \left( A_n \cos(n \pi t) + B_n \sin(n \pi t) \right) \sin(n \pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde \( A_n \) y \( B_n \) son coeficientes a determinar a partir de las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
### Determinación de los coeficientes \( A_n \) y \( B_n \)&lt;br /&gt;
&lt;br /&gt;
Las condiciones iniciales son:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x, 0) = u_0(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial u}{\partial t}(x, 0) = u_1(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para \( t = 0 \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x, 0) = \sum_{n=1}^{\infty} A_n \sin(n \pi x) = u_0(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Usamos la ortogonalidad de las funciones seno para determinar \( A_n \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; A_n = 2 \int_0^1 u_0(x) \sin(n \pi x) \, dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la derivada temporal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial u}{\partial t}(x, 0) = \sum_{n=1}^{\infty} B_n n \pi \cos(n \pi \cdot 0) \sin(n \pi x) = u_1(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B_n n \pi = 2 \int_0^1 u_1(x) \sin(n \pi x) \, dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por lo tanto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B_n = \frac{2}{n \pi} \int_0^1 u_1(x) \sin(n \pi x) \, dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finalmente, la solución de la ecuación de onda en términos de los coeficientes de Fourier de los datos iniciales es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x, t) = \sum_{n=1}^{\infty} \left( \left(2 \int_0^1 u_0(x) \sin(n \pi x) \, dx \right) \cos(n \pi t) + \left(\frac{2}{n \pi} \int_0^1 u_1(x) \sin(n \pi x) \, dx \right) \sin(n \pi t) \right) \sin(n \pi x) &lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Esta expresión proporciona la solución completa de la ecuación de onda en función de las condiciones iniciales \( u_0(x) \) y \( u_1(x) \).&lt;br /&gt;
&lt;br /&gt;
===== Ejemplo de solución periódica en tiempo =====&lt;br /&gt;
&lt;br /&gt;
En esta parte del documento para comprender lo anteriormente explicado de manera óptima se va a proceder a analizar una serie de ejemplo. El primero de ellos se trata de la representación gráfica de una solución periódica en tiempo. Esta viene dada suponiendo que los datos iniciales son &amp;lt;math&amp;gt;u_0(x)=e^{-100(x-\frac{1}{2})^2}&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;u_1(x)=0&amp;lt;/math&amp;gt;. Es por ello que la representación de la solución en el intervalo t ∈ [0, 2] es la siguiente:&lt;br /&gt;
[[Archivo:ondaperiodicaALA.png|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para la obtención de esta representación se ha creado el siguiente código en Matlab:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=% &lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestros datos iniciales:&lt;br /&gt;
u_0=@(x) (exp(-100.*(x-1/2).^2));&lt;br /&gt;
u_1=@(x) (0);&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestro intervalo de tiempo t:&lt;br /&gt;
t=0:0.001:2;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestro intervalo x:&lt;br /&gt;
x=0:0.001:1;&lt;br /&gt;
&lt;br /&gt;
% Definimos el número de términos de la serie a dibujar:&lt;br /&gt;
n=50;&lt;br /&gt;
&lt;br /&gt;
% Calculamos los términos de fourier asociados a u_0:&lt;br /&gt;
ak_0=zeros(n,1);&lt;br /&gt;
bk_0=zeros(n,1);&lt;br /&gt;
ck_0=zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
f_sen_0=@(x,k) u_0(x).*sin(k*pi*x);&lt;br /&gt;
f_cos_0=@(x,k) u_0(x).*cos(k*pi*x);&lt;br /&gt;
f_medio_0=@(x,k) u_0(x).*1/2;&lt;br /&gt;
&lt;br /&gt;
for k=1:n&lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_sen_0=f_sen_0(x,k);&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_cos:&lt;br /&gt;
    y_cos_0=f_cos_0(x,k);&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_medio_0=f_medio_0(x);&lt;br /&gt;
&lt;br /&gt;
    ak_0(k)=trapz(x,y_sen_0);&lt;br /&gt;
    bk_0(k)=trapz(x,y_cos_0);&lt;br /&gt;
    ck_0(k)=trapz(x,y_medio_0);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos los términos de fourier asociados a u_1:&lt;br /&gt;
ak_1=zeros(n,1);&lt;br /&gt;
bk_1=zeros(n,1);&lt;br /&gt;
ck_1=zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
f_sen_1=@(x,k) u_1(x).*sin(k*pi*x);&lt;br /&gt;
f_cos_1=@(x,k) u_1(x).*cos(k*pi*x);&lt;br /&gt;
f_medio_1=@(x,k) u_1(x).*1/2;&lt;br /&gt;
&lt;br /&gt;
for k=1:n&lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_sen_1=f_sen_1(x,k);&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_cos:&lt;br /&gt;
    y_cos_1=f_cos_1(x,k);&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_medio_1=f_medio_1(x);&lt;br /&gt;
&lt;br /&gt;
    ak_1(k)=trapz(x,y_sen_1);&lt;br /&gt;
    bk_1(k)=trapz(x,y_cos_1);&lt;br /&gt;
    %ck_1(k)=trapz(x,y_medio_1);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Sustituimos en la solución calculada por separación de variables:&lt;br /&gt;
u=@(xx,tt) 0;&lt;br /&gt;
for i=1:n&lt;br /&gt;
    u=@(xx,tt) u(xx,tt) + (ak_0(i).*cos(i*pi*tt)+bk_1(i).*sin(i*pi*tt)).*sin(i*pi*xx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficamos la solución:&lt;br /&gt;
[X,T]=meshgrid(x,t);&lt;br /&gt;
surf(X,T,u(X,T),'EdgeColor','flat')&lt;br /&gt;
title('Solución ecuación de ondas')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
   &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como se observa en la imagen anterior la función muestra un comportamiento que se repite regularmente con el tiempo. A este tipo de funciones se les denomina periódicas en tiempo. Esto se puede observar de manera óptima para su comprensión en la siguiente gráfica, en la cual se observa el comportamiento explicado a anteriormente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:ondaperiodicalateralALA.png|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de la onda viajera ====&lt;br /&gt;
En este caso se va&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:OndaperiodicaALA.png&amp;diff=72292</id>
		<title>Archivo:OndaperiodicaALA.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:OndaperiodicaALA.png&amp;diff=72292"/>
				<updated>2024-05-23T15:46:03Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas&amp;diff=72291</id>
		<title>Ecuación de ondas</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas&amp;diff=72291"/>
				<updated>2024-05-23T15:44:52Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: /* Ejemplo de solución periódica en tiempo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación de Ondas. Grupo ALA | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Lucía Amores, Aitana Guill y Andrea Navarro}}&lt;br /&gt;
&lt;br /&gt;
==Introducción==&lt;br /&gt;
==Modelización de los desplazamientos transversales== &lt;br /&gt;
Para modelar el comportamiento de los desplazamientos transversales de la cuerda vibrante, utilizamos la ecuación de ondas en una dimensión. Dado que la cuerda está fija en los extremos y tiene una densidad &amp;lt;math&amp;gt; d &amp;lt;/math&amp;gt; y tensión constante &amp;lt;math&amp;gt; \tau_0 &amp;lt;/math&amp;gt; de manera que la velocidad de propagación es &amp;lt;math&amp;gt; c = \tau_0/d = 1 &amp;lt;/math&amp;gt;, la ecuación de ondas se simplifica.&lt;br /&gt;
&lt;br /&gt;
La ecuación de ondas en una dimensión para los desplazamientos transversales &amp;lt;math&amp;gt; u(x,t) &amp;lt;/math&amp;gt; de la cuerda es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{\partial^2 u}{\partial t^2} = c^2 \frac{\partial^2 u}{\partial x^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que &amp;lt;math&amp;gt; c = 1 &amp;lt;/math&amp;gt;, la ecuación se reduce a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta ecuación diferencial parcial (EDP) debe acompañarse de las condiciones de contorno y las condiciones iniciales para estar completamente especificada.&lt;br /&gt;
&lt;br /&gt;
===Condiciones de contorno===&lt;br /&gt;
Dado que la cuerda está fija en los extremos, las condiciones de contorno son:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(0, t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(1, t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Condiciones iniciales===&lt;br /&gt;
Las condiciones iniciales especifican la posición inicial de la cuerda &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; y su velocidad inicial o impulso &amp;lt;math&amp;gt; u_1(x) &amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;u(x, 0) = u_0(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; \frac{\partial u}{\partial t}(x, 0) = u_1(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
===Sistema de EDP===&lt;br /&gt;
Juntando la ecuación de ondas con las condiciones de contorno e iniciales, el sistema completo que modela el comportamiento de los desplazamientos transversales de la cuerda es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}&lt;br /&gt;
&lt;br /&gt;
\frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2}, &amp;amp; 0 &amp;lt; x &amp;lt; 1, \ t &amp;gt; 0 \\&lt;br /&gt;
u(0, t) = 0, &amp;amp; t \geq 0 \\&lt;br /&gt;
u(1, t) = 0, &amp;amp; t \geq 0 \\&lt;br /&gt;
u(x, 0) = u_0(x), &amp;amp; 0 \leq x \leq 1 \\&lt;br /&gt;
\frac{\partial u}{\partial t}(x, 0) = u_1(x), &amp;amp; 0 \leq x \leq 1&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este sistema describe completamente la evolución temporal de los desplazamientos transversales de una cuerda vibrante con los extremos fijos, dada su posición e impulso iniciales.&lt;br /&gt;
&lt;br /&gt;
===Resolución del sistema por separación de variables en términos de los coeficientes de Fourier de los datos iniciales===&lt;br /&gt;
Primero, planteamos la solución de la ecuación de onda mediante separación de variables. Asumimos que la solución \( u(x,t) \) se puede escribir como un producto de dos funciones independientes, una que depende solo de \( x \) y otra que depende solo de \( t \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x, t) = X(x) T(t) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituimos esta forma en la ecuación de onda:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{\partial^2 (X(x) T(t))}{\partial t^2} = \frac{\partial^2 (X(x) T(t))}{\partial x^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esto se simplifica a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;X(x) \frac{d^2 T(t)}{dt^2} = T(t) \frac{d^2 X(x)}{dx^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dividimos ambos lados por &amp;lt;math&amp;gt;X(x) T(t) &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{1}{T(t)} \frac{d^2 T(t)}{dt^2} = \frac{1}{X(x)} \frac{d^2 X(x)}{dx^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dado que el lado izquierdo depende solo de \( t \) y el lado derecho solo de \( x \), ambos deben ser iguales a una constante que llamaremos \(-\lambda\). Esto nos lleva a dos ecuaciones ordinarias:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{d^2 T(t)}{dt^2} + \lambda T(t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{d^2 X(x)}{dx^2} + \lambda X(x) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para satisfacer las condiciones de contorno \( u(0, t) = 0 \) y \( u(1, t) = 0 \), tenemos:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;X(0) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;X(1) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La ecuación para \( X(x) \) tiene la solución general:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;X(x) = A \sin(\sqrt{\lambda} x) + B \cos(\sqrt{\lambda} x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando las condiciones de contorno, obtenemos que \( B = 0 \) y que \( \sqrt{\lambda} \) debe ser un múltiplo de \( \pi \):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \sqrt{\lambda} = n \pi \quad \text{para} \quad n = 1, 2, 3, \ldots &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por lo tanto, \( \lambda = (n \pi)^2 \) y las funciones propias son:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; X_n(x) = \sin(n \pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La ecuación para \( T(t) \) se convierte en:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{d^2 T_n(t)}{dt^2} + (n \pi)^2 T_n(t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con la solución general:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; T_n(t) = C_n \cos(n \pi t) + D_n \sin(n \pi t) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Combinando \( X(x) \) y \( T(t) \), la solución general para \( u(x,t) \) es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x, t) = \sum_{n=1}^{\infty} \left( A_n \cos(n \pi t) + B_n \sin(n \pi t) \right) \sin(n \pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde \( A_n \) y \( B_n \) son coeficientes a determinar a partir de las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
### Determinación de los coeficientes \( A_n \) y \( B_n \)&lt;br /&gt;
&lt;br /&gt;
Las condiciones iniciales son:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x, 0) = u_0(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial u}{\partial t}(x, 0) = u_1(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para \( t = 0 \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x, 0) = \sum_{n=1}^{\infty} A_n \sin(n \pi x) = u_0(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Usamos la ortogonalidad de las funciones seno para determinar \( A_n \):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; A_n = 2 \int_0^1 u_0(x) \sin(n \pi x) \, dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la derivada temporal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial u}{\partial t}(x, 0) = \sum_{n=1}^{\infty} B_n n \pi \cos(n \pi \cdot 0) \sin(n \pi x) = u_1(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B_n n \pi = 2 \int_0^1 u_1(x) \sin(n \pi x) \, dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por lo tanto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; B_n = \frac{2}{n \pi} \int_0^1 u_1(x) \sin(n \pi x) \, dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finalmente, la solución de la ecuación de onda en términos de los coeficientes de Fourier de los datos iniciales es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x, t) = \sum_{n=1}^{\infty} \left( \left(2 \int_0^1 u_0(x) \sin(n \pi x) \, dx \right) \cos(n \pi t) + \left(\frac{2}{n \pi} \int_0^1 u_1(x) \sin(n \pi x) \, dx \right) \sin(n \pi t) \right) \sin(n \pi x) &lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Esta expresión proporciona la solución completa de la ecuación de onda en función de las condiciones iniciales \( u_0(x) \) y \( u_1(x) \).&lt;br /&gt;
&lt;br /&gt;
===== Ejemplo de solución periódica en tiempo =====&lt;br /&gt;
&lt;br /&gt;
En esta parte del documento para comprender lo anteriormente explicado de manera óptima se va a proceder a analizar una serie de ejemplo. El primero de ellos se trata de la representación gráfica de una solución periódica en tiempo. Esta viene dada suponiendo que los datos iniciales son &amp;lt;math&amp;gt;u_0(x)=e^{-100(x-\frac{1}{2})^2}&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;u_1(x)=0&amp;lt;/math&amp;gt;. Es por ello que la representación de la solución en el intervalo t ∈ [0, 2] es la siguiente:&lt;br /&gt;
[[Archivo:.jpg|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para la obtención de esta representación se ha creado el siguiente código en Matlab:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=% &lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestros datos iniciales:&lt;br /&gt;
u_0=@(x) (exp(-100.*(x-1/2).^2));&lt;br /&gt;
u_1=@(x) (0);&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestro intervalo de tiempo t:&lt;br /&gt;
t=0:0.001:2;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestro intervalo x:&lt;br /&gt;
x=0:0.001:1;&lt;br /&gt;
&lt;br /&gt;
% Definimos el número de términos de la serie a dibujar:&lt;br /&gt;
n=50;&lt;br /&gt;
&lt;br /&gt;
% Calculamos los términos de fourier asociados a u_0:&lt;br /&gt;
ak_0=zeros(n,1);&lt;br /&gt;
bk_0=zeros(n,1);&lt;br /&gt;
ck_0=zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
f_sen_0=@(x,k) u_0(x).*sin(k*pi*x);&lt;br /&gt;
f_cos_0=@(x,k) u_0(x).*cos(k*pi*x);&lt;br /&gt;
f_medio_0=@(x,k) u_0(x).*1/2;&lt;br /&gt;
&lt;br /&gt;
for k=1:n&lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_sen_0=f_sen_0(x,k);&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_cos:&lt;br /&gt;
    y_cos_0=f_cos_0(x,k);&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_medio_0=f_medio_0(x);&lt;br /&gt;
&lt;br /&gt;
    ak_0(k)=trapz(x,y_sen_0);&lt;br /&gt;
    bk_0(k)=trapz(x,y_cos_0);&lt;br /&gt;
    ck_0(k)=trapz(x,y_medio_0);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calculamos los términos de fourier asociados a u_1:&lt;br /&gt;
ak_1=zeros(n,1);&lt;br /&gt;
bk_1=zeros(n,1);&lt;br /&gt;
ck_1=zeros(n,1);&lt;br /&gt;
&lt;br /&gt;
f_sen_1=@(x,k) u_1(x).*sin(k*pi*x);&lt;br /&gt;
f_cos_1=@(x,k) u_1(x).*cos(k*pi*x);&lt;br /&gt;
f_medio_1=@(x,k) u_1(x).*1/2;&lt;br /&gt;
&lt;br /&gt;
for k=1:n&lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_sen_1=f_sen_1(x,k);&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_cos:&lt;br /&gt;
    y_cos_1=f_cos_1(x,k);&lt;br /&gt;
            &lt;br /&gt;
    % Vector con los valores de f_sin:&lt;br /&gt;
    y_medio_1=f_medio_1(x);&lt;br /&gt;
&lt;br /&gt;
    ak_1(k)=trapz(x,y_sen_1);&lt;br /&gt;
    bk_1(k)=trapz(x,y_cos_1);&lt;br /&gt;
    %ck_1(k)=trapz(x,y_medio_1);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Sustituimos en la solución calculada por separación de variables:&lt;br /&gt;
u=@(xx,tt) 0;&lt;br /&gt;
for i=1:n&lt;br /&gt;
    u=@(xx,tt) u(xx,tt) + (ak_0(i).*cos(i*pi*tt)+bk_1(i).*sin(i*pi*tt)).*sin(i*pi*xx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Graficamos la solución:&lt;br /&gt;
[X,T]=meshgrid(x,t);&lt;br /&gt;
surf(X,T,u(X,T),'EdgeColor','flat')&lt;br /&gt;
title('Solución ecuación de ondas')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
   &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como se observa en la imagen anterior la función muestra un comportamiento que se repite regularmente con el tiempo. A este tipo de funciones se les denomina periódicas en tiempo. Esto se puede observar de manera óptima para su comprensión en la siguiente gráfica, en la cual se observa el comportamiento explicado a anteriormente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:ondaperiodicaALA.png|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de la onda viajera ====&lt;br /&gt;
En este caso se va&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas&amp;diff=72269</id>
		<title>Ecuación de ondas</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas&amp;diff=72269"/>
				<updated>2024-05-23T14:16:09Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación de Ondas. Grupo ALA | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Lucía Amores, Aitana Guill y Andrea Navarro}}&lt;br /&gt;
&lt;br /&gt;
==Introducción==&lt;br /&gt;
==Modelización de los desplazamientos transversales== &lt;br /&gt;
Para modelar el comportamiento de los desplazamientos transversales de la cuerda vibrante, utilizamos la ecuación de ondas en una dimensión. Dado que la cuerda está fija en los extremos y tiene una densidad &amp;lt;math&amp;gt; d &amp;lt;/math&amp;gt; y tensión constante &amp;lt;math&amp;gt; \tau_0 &amp;lt;/math&amp;gt; de manera que la velocidad de propagación es &amp;lt;math&amp;gt; c = \tau_0/d = 1 &amp;lt;/math&amp;gt;, la ecuación de ondas se simplifica.&lt;br /&gt;
&lt;br /&gt;
La ecuación de ondas en una dimensión para los desplazamientos transversales &amp;lt;math&amp;gt; u(x,t) &amp;lt;/math&amp;gt; de la cuerda es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{\partial^2 u}{\partial t^2} = c^2 \frac{\partial^2 u}{\partial x^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que &amp;lt;math&amp;gt; c = 1 &amp;lt;/math&amp;gt;, la ecuación se reduce a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta ecuación diferencial parcial (EDP) debe acompañarse de las condiciones de contorno y las condiciones iniciales para estar completamente especificada.&lt;br /&gt;
&lt;br /&gt;
===Condiciones de contorno===&lt;br /&gt;
Dado que la cuerda está fija en los extremos, las condiciones de contorno son:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(0, t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(1, t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Condiciones iniciales===&lt;br /&gt;
Las condiciones iniciales especifican la posición inicial de la cuerda &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; y su velocidad inicial o impulso &amp;lt;math&amp;gt; u_1(x) &amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;u(x, 0) = u_0(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; \frac{\partial u}{\partial t}(x, 0) = u_1(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
===Sistema de EDP===&lt;br /&gt;
Juntando la ecuación de ondas con las condiciones de contorno e iniciales, el sistema completo que modela el comportamiento de los desplazamientos transversales de la cuerda es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}&lt;br /&gt;
&lt;br /&gt;
\frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2}, &amp;amp; 0 &amp;lt; x &amp;lt; 1, \ t &amp;gt; 0 \\&lt;br /&gt;
u(0, t) = 0, &amp;amp; t \geq 0 \\&lt;br /&gt;
u(1, t) = 0, &amp;amp; t \geq 0 \\&lt;br /&gt;
u(x, 0) = u_0(x), &amp;amp; 0 \leq x \leq 1 \\&lt;br /&gt;
\frac{\partial u}{\partial t}(x, 0) = u_1(x), &amp;amp; 0 \leq x \leq 1&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este sistema describe completamente la evolución temporal de los desplazamientos transversales de una cuerda vibrante con los extremos fijos, dada su posición e impulso iniciales.&lt;br /&gt;
&lt;br /&gt;
===Resolución del sistema por separación de variables en términos de los coeficientes de Fourier de los datos iniciales===&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas&amp;diff=72268</id>
		<title>Ecuación de ondas</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas&amp;diff=72268"/>
				<updated>2024-05-23T14:05:44Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: /* Modelización de los desplazamientos transversales */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación de Ondas. Grupo ALA | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Lucía Amores, Aitana Guill y Andrea Navarro}}&lt;br /&gt;
&lt;br /&gt;
==Introducción==&lt;br /&gt;
==Modelización de los desplazamientos transversales== &lt;br /&gt;
Para modelar el comportamiento de los desplazamientos transversales de la cuerda vibrante, utilizamos la ecuación de ondas en una dimensión. Dado que la cuerda está fija en los extremos y tiene una densidad &amp;lt;math&amp;gt; d &amp;lt;/math&amp;gt; y tensión constante &amp;lt;math&amp;gt; \tau_0 &amp;lt;/math&amp;gt; de manera que la velocidad de propagación es &amp;lt;math&amp;gt; c = \tau_0/d = 1 &amp;lt;/math&amp;gt;, la ecuación de ondas se simplifica.&lt;br /&gt;
&lt;br /&gt;
La ecuación de ondas en una dimensión para los desplazamientos transversales &amp;lt;math&amp;gt; u(x,t) &amp;lt;/math&amp;gt; de la cuerda es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{\partial^2 u}{\partial t^2} = c^2 \frac{\partial^2 u}{\partial x^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que &amp;lt;math&amp;gt; c = 1 &amp;lt;/math&amp;gt;, la ecuación se reduce a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta ecuación diferencial parcial (EDP) debe acompañarse de las condiciones de contorno y las condiciones iniciales para estar completamente especificada.&lt;br /&gt;
&lt;br /&gt;
===Condiciones de contorno===&lt;br /&gt;
Dado que la cuerda está fija en los extremos, las condiciones de contorno son:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(0, t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(1, t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Condiciones iniciales===&lt;br /&gt;
Las condiciones iniciales especifican la posición inicial de la cuerda &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; y su velocidad inicial o impulso &amp;lt;math&amp;gt; u_1(x) &amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;u(x, 0) = u_0(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; \frac{\partial u}{\partial t}(x, 0) = u_1(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
===Sistema de EDP===&lt;br /&gt;
Juntando la ecuación de ondas con las condiciones de contorno e iniciales, el sistema completo que modela el comportamiento de los desplazamientos transversales de la cuerda es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}&lt;br /&gt;
&lt;br /&gt;
\frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2}, &amp;amp; 0 &amp;lt; x &amp;lt; 1, \ t &amp;gt; 0 \\&lt;br /&gt;
u(0, t) = 0, &amp;amp; t \geq 0 \\&lt;br /&gt;
u(1, t) = 0, &amp;amp; t \geq 0 \\&lt;br /&gt;
u(x, 0) = u_0(x), &amp;amp; 0 \leq x \leq 1 \\&lt;br /&gt;
\frac{\partial u}{\partial t}(x, 0) = u_1(x), &amp;amp; 0 \leq x \leq 1&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este sistema describe completamente la evolución temporal de los desplazamientos transversales de una cuerda vibrante con los extremos fijos, dada su posición e impulso iniciales.&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas&amp;diff=71918</id>
		<title>Ecuación de ondas</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas&amp;diff=71918"/>
				<updated>2024-05-16T07:48:37Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: /* Modelización de los desplazamientos transversales */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación de Ondas. Grupo ALA | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Lucía Amores, Aitana Guill y Andrea Navarro}}&lt;br /&gt;
&lt;br /&gt;
==Introducción==&lt;br /&gt;
==Modelización de los desplazamientos transversales== &lt;br /&gt;
Para modelar el comportamiento de los desplazamientos transversales de la cuerda vibrante, utilizamos la ecuación de ondas en una dimensión. Dado que la cuerda está fija en los extremos y tiene una densidad &amp;lt;math&amp;gt; d &amp;lt;/math&amp;gt; y tensión constante &amp;lt;math&amp;gt; \tau_0 &amp;lt;/math&amp;gt; de manera que la velocidad de propagación es &amp;lt;math&amp;gt; c = \sqrt{\tau_0/d} = 1 &amp;lt;/math&amp;gt;, la ecuación de ondas se simplifica.&lt;br /&gt;
&lt;br /&gt;
La ecuación de ondas en una dimensión para los desplazamientos transversales &amp;lt;math&amp;gt; u(x,t) &amp;lt;/math&amp;gt; de la cuerda es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{\partial^2 u}{\partial t^2} = c^2 \frac{\partial^2 u}{\partial x^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que &amp;lt;math&amp;gt; c = 1 &amp;lt;/math&amp;gt;, la ecuación se reduce a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta ecuación diferencial parcial (EDP) debe acompañarse de las condiciones de contorno y las condiciones iniciales para estar completamente especificada.&lt;br /&gt;
&lt;br /&gt;
===Condiciones de contorno===&lt;br /&gt;
Dado que la cuerda está fija en los extremos, las condiciones de contorno son:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(0, t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(1, t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Condiciones iniciales===&lt;br /&gt;
Las condiciones iniciales especifican la posición inicial de la cuerda &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; y su velocidad inicial o impulso &amp;lt;math&amp;gt; u_1(x) &amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;u(x, 0) = u_0(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; \frac{\partial u}{\partial t}(x, 0) = u_1(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
===Sistema de EDP===&lt;br /&gt;
Juntando la ecuación de ondas con las condiciones de contorno e iniciales, el sistema completo que modela el comportamiento de los desplazamientos transversales de la cuerda es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}&lt;br /&gt;
&lt;br /&gt;
\frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2}, &amp;amp; 0 &amp;lt; x &amp;lt; 1, \ t &amp;gt; 0 \\&lt;br /&gt;
u(0, t) = 0, &amp;amp; t \geq 0 \\&lt;br /&gt;
u(1, t) = 0, &amp;amp; t \geq 0 \\&lt;br /&gt;
u(x, 0) = u_0(x), &amp;amp; 0 \leq x \leq 1 \\&lt;br /&gt;
\frac{\partial u}{\partial t}(x, 0) = u_1(x), &amp;amp; 0 \leq x \leq 1&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este sistema describe completamente la evolución temporal de los desplazamientos transversales de una cuerda vibrante con los extremos fijos, dada su posición e impulso iniciales.&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas&amp;diff=71917</id>
		<title>Ecuación de ondas</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas&amp;diff=71917"/>
				<updated>2024-05-16T07:47:57Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: /* Modelización de los desplazamientos transversales */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación de Ondas. Grupo ALA | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Lucía Amores, Aitana Guill y Andrea Navarro}}&lt;br /&gt;
&lt;br /&gt;
==Introducción==&lt;br /&gt;
==Modelización de los desplazamientos transversales== &lt;br /&gt;
Para modelar el comportamiento de los desplazamientos transversales de la cuerda vibrante, utilizamos la ecuación de ondas en una dimensión. Dado que la cuerda está fija en los extremos y tiene una densidad &amp;lt;math&amp;gt; d &amp;lt;/math&amp;gt; y tensión constante &amp;lt;math&amp;gt; \tau_0 &amp;lt;/math&amp;gt; de manera que la velocidad de propagación es &amp;lt;math&amp;gt; c = \sqrt{\tau_0/d} = 1 &amp;lt;/math&amp;gt;, la ecuación de ondas se simplifica.&lt;br /&gt;
&lt;br /&gt;
La ecuación de ondas en una dimensión para los desplazamientos transversales &amp;lt;math&amp;gt; u(x,t) &amp;lt;/math&amp;gt; de la cuerda es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\frac{\partial^2 u}{\partial t^2} = c^2 \frac{\partial^2 u}{\partial x^2} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que &amp;lt;math&amp;gt; c = 1 &amp;lt;/math&amp;gt;, la ecuación se reduce a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta ecuación diferencial parcial (EDP) debe acompañarse de las condiciones de contorno y las condiciones iniciales para estar completamente especificada.&lt;br /&gt;
&lt;br /&gt;
===Condiciones de contorno===&lt;br /&gt;
Dado que la cuerda está fija en los extremos, las condiciones de contorno son:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(0, t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(1, t) = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Condiciones iniciales===&lt;br /&gt;
Las condiciones iniciales especifican la posición inicial de la cuerda &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; y su velocidad inicial o impulso &amp;lt;math&amp;gt; u_1(x) &amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;u(x, 0) = u_0(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; \frac{\partial u}{\partial t}(x, 0) = u_1(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
===Sistema de EDP===&lt;br /&gt;
Juntando la ecuación de ondas con las condiciones de contorno e iniciales, el sistema completo que modela el comportamiento de los desplazamientos transversales de la cuerda es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}&lt;br /&gt;
&lt;br /&gt;
\frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2}, &amp;amp; 0 &amp;lt; x &amp;lt; 1, \ t &amp;gt; 0 \\&lt;br /&gt;
u(0, t) = 0, &amp;amp; t \geq 0 \\&lt;br /&gt;
u(1, t) = 0, &amp;amp; t \geq 0 \\&lt;br /&gt;
u(x, 0) = u_0(x), &amp;amp; 0 \leq x \leq 1 \\&lt;br /&gt;
\frac{\partial u}{\partial t}(x, 0) = u_1(x), &amp;amp; 0 \leq x \leq 1&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este sistema describe completamente la evolución temporal de los desplazamientos transversales de una cuerda vibrante con los extremos fijos, dada su posición e impulso iniciales.&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas&amp;diff=71916</id>
		<title>Ecuación de ondas</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas&amp;diff=71916"/>
				<updated>2024-05-16T07:46:39Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: /* Sistema de EDP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación de Ondas. Grupo ALA | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Lucía Amores, Aitana Guill y Andrea Navarro}}&lt;br /&gt;
&lt;br /&gt;
==Introducción==&lt;br /&gt;
==Modelización de los desplazamientos transversales== &lt;br /&gt;
Para modelar el comportamiento de los desplazamientos transversales de la cuerda vibrante, utilizamos la ecuación de ondas en una dimensión. Dado que la cuerda está fija en los extremos y tiene una densidad &amp;lt;math&amp;gt; d &amp;lt;/math&amp;gt; y tensión constante &amp;lt;math&amp;gt; \tau_0 &amp;lt;/math&amp;gt; de manera que la velocidad de propagación es &amp;lt;math&amp;gt; c = \sqrt{\tau_0/d} = 1 &amp;lt;/math&amp;gt;, la ecuación de ondas se simplifica.&lt;br /&gt;
&lt;br /&gt;
La ecuación de ondas en una dimensión para los desplazamientos transversales &amp;lt;math&amp;gt; u(x,t) &amp;lt;/math&amp;gt; de la cuerda es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{\partial^2 u}{\partial t^2} = c^2 \frac{\partial^2 u}{\partial x^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que &amp;lt;math&amp;gt; c = 1 &amp;lt;/math&amp;gt;, la ecuación se reduce a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta ecuación diferencial parcial (EDP) debe acompañarse de las condiciones de contorno y las condiciones iniciales para estar completamente especificada.&lt;br /&gt;
&lt;br /&gt;
===Condiciones de contorno===&lt;br /&gt;
Dado que la cuerda está fija en los extremos, las condiciones de contorno son:&lt;br /&gt;
&amp;lt;math&amp;gt; u(0, t) = 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; u(1, t) = 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Condiciones iniciales===&lt;br /&gt;
Las condiciones iniciales especifican la posición inicial de la cuerda &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; y su velocidad inicial o impulso &amp;lt;math&amp;gt; u_1(x) &amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;u(x, 0) = u_0(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; \frac{\partial u}{\partial t}(x, 0) = u_1(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sistema de EDP===&lt;br /&gt;
Juntando la ecuación de ondas con las condiciones de contorno e iniciales, el sistema completo que modela el comportamiento de los desplazamientos transversales de la cuerda es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}&lt;br /&gt;
&lt;br /&gt;
\frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2}, &amp;amp; 0 &amp;lt; x &amp;lt; 1, \ t &amp;gt; 0 \\&lt;br /&gt;
u(0, t) = 0, &amp;amp; t \geq 0 \\&lt;br /&gt;
u(1, t) = 0, &amp;amp; t \geq 0 \\&lt;br /&gt;
u(x, 0) = u_0(x), &amp;amp; 0 \leq x \leq 1 \\&lt;br /&gt;
\frac{\partial u}{\partial t}(x, 0) = u_1(x), &amp;amp; 0 \leq x \leq 1&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este sistema describe completamente la evolución temporal de los desplazamientos transversales de una cuerda vibrante con los extremos fijos, dada su posición e impulso iniciales.&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas&amp;diff=71915</id>
		<title>Ecuación de ondas</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas&amp;diff=71915"/>
				<updated>2024-05-16T07:46:14Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: /* Sistema de EDP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación de Ondas. Grupo ALA | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Lucía Amores, Aitana Guill y Andrea Navarro}}&lt;br /&gt;
&lt;br /&gt;
==Introducción==&lt;br /&gt;
==Modelización de los desplazamientos transversales== &lt;br /&gt;
Para modelar el comportamiento de los desplazamientos transversales de la cuerda vibrante, utilizamos la ecuación de ondas en una dimensión. Dado que la cuerda está fija en los extremos y tiene una densidad &amp;lt;math&amp;gt; d &amp;lt;/math&amp;gt; y tensión constante &amp;lt;math&amp;gt; \tau_0 &amp;lt;/math&amp;gt; de manera que la velocidad de propagación es &amp;lt;math&amp;gt; c = \sqrt{\tau_0/d} = 1 &amp;lt;/math&amp;gt;, la ecuación de ondas se simplifica.&lt;br /&gt;
&lt;br /&gt;
La ecuación de ondas en una dimensión para los desplazamientos transversales &amp;lt;math&amp;gt; u(x,t) &amp;lt;/math&amp;gt; de la cuerda es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{\partial^2 u}{\partial t^2} = c^2 \frac{\partial^2 u}{\partial x^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que &amp;lt;math&amp;gt; c = 1 &amp;lt;/math&amp;gt;, la ecuación se reduce a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta ecuación diferencial parcial (EDP) debe acompañarse de las condiciones de contorno y las condiciones iniciales para estar completamente especificada.&lt;br /&gt;
&lt;br /&gt;
===Condiciones de contorno===&lt;br /&gt;
Dado que la cuerda está fija en los extremos, las condiciones de contorno son:&lt;br /&gt;
&amp;lt;math&amp;gt; u(0, t) = 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; u(1, t) = 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Condiciones iniciales===&lt;br /&gt;
Las condiciones iniciales especifican la posición inicial de la cuerda &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; y su velocidad inicial o impulso &amp;lt;math&amp;gt; u_1(x) &amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;u(x, 0) = u_0(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; \frac{\partial u}{\partial t}(x, 0) = u_1(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sistema de EDP===&lt;br /&gt;
Juntando la ecuación de ondas con las condiciones de contorno e iniciales, el sistema completo que modela el comportamiento de los desplazamientos transversales de la cuerda es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}&lt;br /&gt;
\centering&lt;br /&gt;
\frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2}, &amp;amp; 0 &amp;lt; x &amp;lt; 1, \ t &amp;gt; 0 \\&lt;br /&gt;
u(0, t) = 0, &amp;amp; t \geq 0 \\&lt;br /&gt;
u(1, t) = 0, &amp;amp; t \geq 0 \\&lt;br /&gt;
u(x, 0) = u_0(x), &amp;amp; 0 \leq x \leq 1 \\&lt;br /&gt;
\frac{\partial u}{\partial t}(x, 0) = u_1(x), &amp;amp; 0 \leq x \leq 1&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este sistema describe completamente la evolución temporal de los desplazamientos transversales de una cuerda vibrante con los extremos fijos, dada su posición e impulso iniciales.&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas&amp;diff=71914</id>
		<title>Ecuación de ondas</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas&amp;diff=71914"/>
				<updated>2024-05-16T07:45:54Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: /* Sistema de EDP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación de Ondas. Grupo ALA | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Lucía Amores, Aitana Guill y Andrea Navarro}}&lt;br /&gt;
&lt;br /&gt;
==Introducción==&lt;br /&gt;
==Modelización de los desplazamientos transversales== &lt;br /&gt;
Para modelar el comportamiento de los desplazamientos transversales de la cuerda vibrante, utilizamos la ecuación de ondas en una dimensión. Dado que la cuerda está fija en los extremos y tiene una densidad &amp;lt;math&amp;gt; d &amp;lt;/math&amp;gt; y tensión constante &amp;lt;math&amp;gt; \tau_0 &amp;lt;/math&amp;gt; de manera que la velocidad de propagación es &amp;lt;math&amp;gt; c = \sqrt{\tau_0/d} = 1 &amp;lt;/math&amp;gt;, la ecuación de ondas se simplifica.&lt;br /&gt;
&lt;br /&gt;
La ecuación de ondas en una dimensión para los desplazamientos transversales &amp;lt;math&amp;gt; u(x,t) &amp;lt;/math&amp;gt; de la cuerda es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{\partial^2 u}{\partial t^2} = c^2 \frac{\partial^2 u}{\partial x^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que &amp;lt;math&amp;gt; c = 1 &amp;lt;/math&amp;gt;, la ecuación se reduce a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta ecuación diferencial parcial (EDP) debe acompañarse de las condiciones de contorno y las condiciones iniciales para estar completamente especificada.&lt;br /&gt;
&lt;br /&gt;
===Condiciones de contorno===&lt;br /&gt;
Dado que la cuerda está fija en los extremos, las condiciones de contorno son:&lt;br /&gt;
&amp;lt;math&amp;gt; u(0, t) = 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; u(1, t) = 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Condiciones iniciales===&lt;br /&gt;
Las condiciones iniciales especifican la posición inicial de la cuerda &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; y su velocidad inicial o impulso &amp;lt;math&amp;gt; u_1(x) &amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;u(x, 0) = u_0(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; \frac{\partial u}{\partial t}(x, 0) = u_1(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sistema de EDP===&lt;br /&gt;
Juntando la ecuación de ondas con las condiciones de contorno e iniciales, el sistema completo que modela el comportamiento de los desplazamientos transversales de la cuerda es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{center}&lt;br /&gt;
\begin{cases}&lt;br /&gt;
\frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2}, &amp;amp; 0 &amp;lt; x &amp;lt; 1, \ t &amp;gt; 0 \\&lt;br /&gt;
u(0, t) = 0, &amp;amp; t \geq 0 \\&lt;br /&gt;
u(1, t) = 0, &amp;amp; t \geq 0 \\&lt;br /&gt;
u(x, 0) = u_0(x), &amp;amp; 0 \leq x \leq 1 \\&lt;br /&gt;
\frac{\partial u}{\partial t}(x, 0) = u_1(x), &amp;amp; 0 \leq x \leq 1&lt;br /&gt;
\end{cases}&lt;br /&gt;
\end{center}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este sistema describe completamente la evolución temporal de los desplazamientos transversales de una cuerda vibrante con los extremos fijos, dada su posición e impulso iniciales.&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas&amp;diff=71913</id>
		<title>Ecuación de ondas</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas&amp;diff=71913"/>
				<updated>2024-05-16T07:45:28Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: /* Resumen del sistema de EDP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación de Ondas. Grupo ALA | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Lucía Amores, Aitana Guill y Andrea Navarro}}&lt;br /&gt;
&lt;br /&gt;
==Introducción==&lt;br /&gt;
==Modelización de los desplazamientos transversales== &lt;br /&gt;
Para modelar el comportamiento de los desplazamientos transversales de la cuerda vibrante, utilizamos la ecuación de ondas en una dimensión. Dado que la cuerda está fija en los extremos y tiene una densidad &amp;lt;math&amp;gt; d &amp;lt;/math&amp;gt; y tensión constante &amp;lt;math&amp;gt; \tau_0 &amp;lt;/math&amp;gt; de manera que la velocidad de propagación es &amp;lt;math&amp;gt; c = \sqrt{\tau_0/d} = 1 &amp;lt;/math&amp;gt;, la ecuación de ondas se simplifica.&lt;br /&gt;
&lt;br /&gt;
La ecuación de ondas en una dimensión para los desplazamientos transversales &amp;lt;math&amp;gt; u(x,t) &amp;lt;/math&amp;gt; de la cuerda es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{\partial^2 u}{\partial t^2} = c^2 \frac{\partial^2 u}{\partial x^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que &amp;lt;math&amp;gt; c = 1 &amp;lt;/math&amp;gt;, la ecuación se reduce a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta ecuación diferencial parcial (EDP) debe acompañarse de las condiciones de contorno y las condiciones iniciales para estar completamente especificada.&lt;br /&gt;
&lt;br /&gt;
===Condiciones de contorno===&lt;br /&gt;
Dado que la cuerda está fija en los extremos, las condiciones de contorno son:&lt;br /&gt;
&amp;lt;math&amp;gt; u(0, t) = 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; u(1, t) = 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Condiciones iniciales===&lt;br /&gt;
Las condiciones iniciales especifican la posición inicial de la cuerda &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; y su velocidad inicial o impulso &amp;lt;math&amp;gt; u_1(x) &amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;u(x, 0) = u_0(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; \frac{\partial u}{\partial t}(x, 0) = u_1(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sistema de EDP===&lt;br /&gt;
Juntando la ecuación de ondas con las condiciones de contorno e iniciales, el sistema completo que modela el comportamiento de los desplazamientos transversales de la cuerda es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}&lt;br /&gt;
\frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2}, &amp;amp; 0 &amp;lt; x &amp;lt; 1, \ t &amp;gt; 0 \\&lt;br /&gt;
u(0, t) = 0, &amp;amp; t \geq 0 \\&lt;br /&gt;
u(1, t) = 0, &amp;amp; t \geq 0 \\&lt;br /&gt;
u(x, 0) = u_0(x), &amp;amp; 0 \leq x \leq 1 \\&lt;br /&gt;
\frac{\partial u}{\partial t}(x, 0) = u_1(x), &amp;amp; 0 \leq x \leq 1&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este sistema describe completamente la evolución temporal de los desplazamientos transversales de una cuerda vibrante con los extremos fijos, dada su posición e impulso iniciales.&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas&amp;diff=71912</id>
		<title>Ecuación de ondas</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_ondas&amp;diff=71912"/>
				<updated>2024-05-16T07:41:55Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: Página creada con «{{ TrabajoED | Ecuación de Ondas. Grupo ALA | EDP|2023-24 | Lucía Amores, Aitana Guill y Andrea Navarro}}  ==Introducción==...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación de Ondas. Grupo ALA | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Lucía Amores, Aitana Guill y Andrea Navarro}}&lt;br /&gt;
&lt;br /&gt;
==Introducción==&lt;br /&gt;
==Modelización de los desplazamientos transversales== &lt;br /&gt;
Para modelar el comportamiento de los desplazamientos transversales de la cuerda vibrante, utilizamos la ecuación de ondas en una dimensión. Dado que la cuerda está fija en los extremos y tiene una densidad &amp;lt;math&amp;gt; d &amp;lt;/math&amp;gt; y tensión constante &amp;lt;math&amp;gt; \tau_0 &amp;lt;/math&amp;gt; de manera que la velocidad de propagación es &amp;lt;math&amp;gt; c = \sqrt{\tau_0/d} = 1 &amp;lt;/math&amp;gt;, la ecuación de ondas se simplifica.&lt;br /&gt;
&lt;br /&gt;
La ecuación de ondas en una dimensión para los desplazamientos transversales &amp;lt;math&amp;gt; u(x,t) &amp;lt;/math&amp;gt; de la cuerda es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{\partial^2 u}{\partial t^2} = c^2 \frac{\partial^2 u}{\partial x^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que &amp;lt;math&amp;gt; c = 1 &amp;lt;/math&amp;gt;, la ecuación se reduce a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta ecuación diferencial parcial (EDP) debe acompañarse de las condiciones de contorno y las condiciones iniciales para estar completamente especificada.&lt;br /&gt;
&lt;br /&gt;
===Condiciones de contorno===&lt;br /&gt;
Dado que la cuerda está fija en los extremos, las condiciones de contorno son:&lt;br /&gt;
&amp;lt;math&amp;gt; u(0, t) = 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; u(1, t) = 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Condiciones iniciales===&lt;br /&gt;
Las condiciones iniciales especifican la posición inicial de la cuerda &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; y su velocidad inicial o impulso &amp;lt;math&amp;gt; u_1(x) &amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;u(x, 0) = u_0(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; \frac{\partial u}{\partial t}(x, 0) = u_1(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Resumen del sistema de EDP===&lt;br /&gt;
Juntando la ecuación de ondas con las condiciones de contorno e iniciales, el sistema completo que modela el comportamiento de los desplazamientos transversales de la cuerda es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}&lt;br /&gt;
\frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2}, &amp;amp; 0 &amp;lt; x &amp;lt; 1, \ t &amp;gt; 0 \\&lt;br /&gt;
u(0, t) = 0, &amp;amp; t \geq 0 \\&lt;br /&gt;
u(1, t) = 0, &amp;amp; t \geq 0 \\&lt;br /&gt;
u(x, 0) = u_0(x), &amp;amp; 0 \leq x \leq 1 \\&lt;br /&gt;
\frac{\partial u}{\partial t}(x, 0) = u_1(x), &amp;amp; 0 \leq x \leq 1&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este sistema describe completamente la evolución temporal de los desplazamientos transversales de una cuerda vibrante con los extremos fijos, dada su posición e impulso iniciales.&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Equipo_ALA)&amp;diff=71824</id>
		<title>Series de Fourier (Equipo ALA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Equipo_ALA)&amp;diff=71824"/>
				<updated>2024-05-07T17:20:26Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: /* Aproximación de funciones discontinuas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introducción ==&lt;br /&gt;
&lt;br /&gt;
{{ TrabajoED | Series de Fourier. Equipo ALA | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Andrea Navarro Aitana Guill Lucía Amores }}&lt;br /&gt;
&lt;br /&gt;
Fue entre 1807 y 1811, mientras llevaba a cabo un estudio sobre la ecuación del calor, cuando el matemático francés Jean-Baptiste Joseph Fourier publicó el primer estudio sobre la serie que recibe su nombre, la serie de Fourier.  &lt;br /&gt;
&lt;br /&gt;
Una serie de Fourier consiste en una serie infinita y convergente puntualmente a una función continua y periódica. La gran importancia de esta radica en su increíble eficacia para aproximar funciones, pues fue el matemático quien llegó a la conclusión de que cualquier función periódica e integrable de Riemann en el intervalo [-T,T] puede escribirse como suma infinita de funciones trigonométricas. De esta manera, se da lugar a la siguiente expresión que representa la serie, donde &amp;lt;math&amp;gt; a_0,a_n, b_n \in \mathbb{R} &amp;lt;/math&amp;gt; se conocen como coeficientes de Fourier:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(x) = \frac{a_0}{2}+ \sum_{n=1}^\infty[ a_n \cos(\frac{n \pi x}{T}) +b_n\sin(\frac{n \pi x}{T})]  &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Además, los coeficientes de Fourier se obtienen de la siguiente manera.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;a_0 =\frac{1}{T}\int_{-T}^{T} f(x) dx, \hspace{30px} a_n =\frac{1}{T}\int_{-T}^{T} f(x) \cos(\frac{n \pi x}{T}) dx, \hspace{30px} b_n =\frac{1}{T}\int_{-T}^{T} f(x) \sin(\frac{n \pi x}{T}) dx  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bases trigonométricas ==&lt;br /&gt;
&lt;br /&gt;
Tal y como se ha observado con anterioridad cualquier función periódica e integrable de Riemann en el intervalo [-T,T] puede escribirse como suma infinita de funciones trigonométricas. El primer paso para comprender este concepto es definir la base ortogonal que permite mediante combinaciones lineales de los coeficientes de Fourier aproximar cualquier función. Esta base se encuentra en el espacio de Hilbert &amp;lt;math&amp;gt;L^2([-T,T])&amp;lt;/math&amp;gt; y viene dada por &amp;lt;math&amp;gt;\{ \frac{1}{2},\cos(\frac{n \pi x}{T}),\sin(\frac{n \pi x}{T})\}_{n \in \mathbb{N}}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para comprender de manera óptima este concepto se presenta a continuación gráficamente los diez primeros términos de dicha base en el intervalo [-1,1]. Para obtener dicha representación, se ha utilizado el código que aparece posteriormente. Analíticamente, simplemente se debe sustituir la expresión de la base anterior para T=1.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Cosenobase.jpeg|350px|miniaturadeimagen|derecha|Elemento de la base:coseno]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
n=10;&lt;br /&gt;
x=-1:0.001:1;  %Intervalo de x [-1,1]&lt;br /&gt;
f=@(x,n)cos(n*pi*x);&lt;br /&gt;
g=@(x,n)sin(n*pi*x);&lt;br /&gt;
y=1/2*ones(size(x));&lt;br /&gt;
&lt;br /&gt;
% Representación del coseno&lt;br /&gt;
figure(1)&lt;br /&gt;
for i=1:n&lt;br /&gt;
    subplot(2,5,i)&lt;br /&gt;
    plot(x,f(x,i))&lt;br /&gt;
    axis square&lt;br /&gt;
    title(['n = ' num2str(i)])&lt;br /&gt;
end}}&lt;br /&gt;
[[Archivo:Seno.jpeg|350px|miniaturadeimagen|derecha|Elementos de la base:seno]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Representación del seno&lt;br /&gt;
figure(2)&lt;br /&gt;
for i=1:n&lt;br /&gt;
    subplot(2,5,i)&lt;br /&gt;
    plot(x,g(x,i))&lt;br /&gt;
    axis square&lt;br /&gt;
    title(['n = ' num2str(i)])&lt;br /&gt;
end}}&lt;br /&gt;
[[Archivo:Unmediobase.jpeg|350px|miniaturadeimagen|derecha|Elementos de la base:1/2]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Representación de 1/2&lt;br /&gt;
figure(3)&lt;br /&gt;
axis square&lt;br /&gt;
plot(x,y)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como se puede observar en las últimas dos, el valor de n es inversamente proporcional al periodo. Esto permite aproximarnos a la conclusión que posteriormente se enunciará de que cuanto mayor sea el valor de la n mejor aproximación de la función se obtendrá.&lt;br /&gt;
&lt;br /&gt;
== Aproximación de funciones continuas ==&lt;br /&gt;
Tal y como se ha enunciado anteriormente, la gran importancia de las series de Fourier radica en su increíble eficacia para aproximar funciones periódicas. A su vez, se va a realizar un análisis de como extender funciones continuas en el intervalo [0, T] al intervalo [-T, T] y que estas sigan siendo continuas. De esta manera solo se utilizaría para su aproximación las funciones pares o impares de las bases.&lt;br /&gt;
&lt;br /&gt;
En primer lugar se debe diferenciar que ocurre cuando la extensión es impar o par. En el primer caso, la aproximación simplemente se realiza utilizando los elementos de la base del seno, con sus respectivos coeficientes de Fourier, pues los del coseno y &amp;lt;math&amp;gt;\ \frac{1}{2}&amp;lt;/math&amp;gt; se anulan.&lt;br /&gt;
&lt;br /&gt;
A continuación, veremos un ejemplo sobre ello. Consideremos la función a aproximar &amp;lt;math&amp;gt; f(x) = x(1-x) &amp;lt;/math&amp;gt; en el intervalo [0,1]. Esta función se aproxima por extensión impar, en efecto, ejecutando las siguientes líneas de código vemos como los coeficientes pares son nulos. Cabe mencionar que los coeficientes de Fourier no se han calculado por integración, sino que se han aproximado utilizando la fórmula del trapecio. &lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear&lt;br /&gt;
close all&lt;br /&gt;
format long&lt;br /&gt;
% Límites de integración:&lt;br /&gt;
a=0;&lt;br /&gt;
b=1;&lt;br /&gt;
c=-1;&lt;br /&gt;
% División de los puntos del intervalo:&lt;br /&gt;
tolerancia= 1e-3;&lt;br /&gt;
% Intervalo&lt;br /&gt;
x=a:0.001:b;&lt;br /&gt;
xx=c:0.001:a;&lt;br /&gt;
% Valores de n almacenados en una lista:&lt;br /&gt;
n_valores=1:1:100;&lt;br /&gt;
&lt;br /&gt;
% Funciones a integrar:&lt;br /&gt;
    % f:&lt;br /&gt;
f_cos_1=@(x,k)x.*(1-x).*cos(k*pi*x);&lt;br /&gt;
f_sin_1=@(x,k)x.*(1-x).*sin(k*pi*x);&lt;br /&gt;
f_medio_1=@(x,k)x.*(1-x).*1/2;&lt;br /&gt;
    % Extensión de f:&lt;br /&gt;
f_cos_2=@(x,k)x.*(1+x).*cos(k*pi*x);&lt;br /&gt;
f_sin_2=@(x,k)x.*(1+x).*sin(k*pi*x);&lt;br /&gt;
f_medio_2=@(x,k)x.*(1+x).*1/2;&lt;br /&gt;
% Función a aproximar:&lt;br /&gt;
g=@(x)x.*(1-x);&lt;br /&gt;
g_impar=@(x)x.*(1+x);&lt;br /&gt;
% Inicializamos una matriz de 0 para almacenar los valores de ak&lt;br /&gt;
% (coeficientes asociados al seno): &lt;br /&gt;
ak=zeros(n_valores(end),length(n_valores));&lt;br /&gt;
aak=zeros(n_valores(end),length(n_valores));&lt;br /&gt;
% Inicializamos una matriz de 0 para almacenar los valores de bk&lt;br /&gt;
% (coeficientes asociados al coseno): &lt;br /&gt;
bk=zeros(n_valores(end), length(n_valores));&lt;br /&gt;
% Inicializamos una matriz de 0 para almacenar los valores de ck&lt;br /&gt;
% (coeficientes asociados a 1/2): &lt;br /&gt;
ck=zeros(n_valores(end), length(n_valores));&lt;br /&gt;
&lt;br /&gt;
for n=1:length(n_valores)&lt;br /&gt;
    %Calculamos ak, bk y ck para cada uno de los valores de n:&lt;br /&gt;
    for k=1:n_valores(n)&lt;br /&gt;
            % Vector con los valores de f_sin:&lt;br /&gt;
            y_sin_1=f_sin_1(x,k);&lt;br /&gt;
            y_sin_2=f_sin_2(xx,k);&lt;br /&gt;
            &lt;br /&gt;
            % Vector con los valores de f_cos:&lt;br /&gt;
            y_cos_1=f_cos_1(x,k);&lt;br /&gt;
            y_cos_2=f_cos_2(xx,k);&lt;br /&gt;
            &lt;br /&gt;
            % Vector con los valores de f_sin:&lt;br /&gt;
            y_medio_1=f_medio_1(x);&lt;br /&gt;
            y_medio_2=f_medio_2(xx);&lt;br /&gt;
&lt;br /&gt;
        ak(k,n)=trapz(x,y_sin_1)+trapz(xx,y_sin_2);&lt;br /&gt;
        aak(k,n)=2*trapz(x,y_sin_1);&lt;br /&gt;
        bk(k,n)=trapz(x,y_cos_1)+trapz(xx,y_cos_2);&lt;br /&gt;
        ck(k,n)=trapz(x,y_medio_1)+trapz(xx,y_medio_2);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Visualización de resultados: &lt;br /&gt;
    % (Nota: las columnas guardan los valores para n= 1, 5, 10&lt;br /&gt;
    % respectivamente y las filas los coeficientes ak, bk, ck siendo k la&lt;br /&gt;
    % fila.)&lt;br /&gt;
% disp('ak (coeficientes asociados al seno)')&lt;br /&gt;
% disp(ak)&lt;br /&gt;
% disp('aak (coeficientes asociados al seno (simetría))')&lt;br /&gt;
% disp(aak)&lt;br /&gt;
% disp('bk (coeficientes asociados al coseno)')&lt;br /&gt;
% disp(bk)&lt;br /&gt;
% disp('ck (coeficientes asociados a 1/2)')&lt;br /&gt;
% disp(ck)&lt;br /&gt;
}}&lt;br /&gt;
Luego, la función que aproximará f(x) tiene la forma,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(x) = \sum_{k=1}^n b_k \sin(k \pi x)&amp;lt;/math&amp;gt;   donde   &amp;lt;math&amp;gt; b_k = 2 \int_{0}^{1} f(x)sin(k \pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En las siguientes gráficas apreciamos como según crece n, &amp;lt;math&amp;gt; f_n(x)&amp;lt;/math&amp;gt; se va acercando más a la función original f(x). En concreto se muestran los casos para n = 1, 5 y 10. &lt;br /&gt;
[[Archivo:Apartado21.jpg|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
En el caso de que la extensión sea par la función se aproxima utilizando los elementos del coseno y el &amp;lt;math&amp;gt;\ \frac{1}{2}&amp;lt;/math&amp;gt; con sus respectivos coeficientes de Fourier, pues los del seno se anulan.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=% Definimos la función fn &lt;br /&gt;
&lt;br /&gt;
for i = 1:length(n_valores)&lt;br /&gt;
    % Definir función anónima con el nombre adecuado&lt;br /&gt;
    suma=@(x) 0;&lt;br /&gt;
    for j=1:i&lt;br /&gt;
        suma=@(x) suma(x) + ak(j,i)*sin(j*pi*x);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['fn_' num2str(i) '=@(x) suma(x);']);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Representación gráfica de fn:&lt;br /&gt;
figure&lt;br /&gt;
subplot(3,1,1)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,g(x),'b')&lt;br /&gt;
plot(x,fn_1(x),'r--')&lt;br /&gt;
plot(xx,g_impar(xx),'b')&lt;br /&gt;
plot(xx,fn_1(xx),'r--')&lt;br /&gt;
legend('f(x)','fn(x)')&lt;br /&gt;
title('n = 1')&lt;br /&gt;
hold off&lt;br /&gt;
% Para n=5:&lt;br /&gt;
ak_5=zeros(5,1);&lt;br /&gt;
for i=1:5&lt;br /&gt;
    ak_5(i)=aak(i,2);&lt;br /&gt;
end&lt;br /&gt;
subplot(3,1,2)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,g(x),'b')&lt;br /&gt;
plot(x,fn_5(x),'r--')&lt;br /&gt;
plot(xx,g_impar(xx),'b')&lt;br /&gt;
plot(xx,fn_5(xx),'r--')&lt;br /&gt;
legend('f(x)','fn(x)')&lt;br /&gt;
title('n = 5')&lt;br /&gt;
hold off&lt;br /&gt;
% Para n=10:&lt;br /&gt;
subplot(3,1,3)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,g(x),'b')&lt;br /&gt;
plot(x,fn_10(x),'r--')&lt;br /&gt;
plot(xx,g_impar(xx),'b')&lt;br /&gt;
plot(xx,fn_10(xx),'r--')&lt;br /&gt;
legend('f(x)','fn(x)')&lt;br /&gt;
title('n = 10')&lt;br /&gt;
hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Esto también se puede ver claramente si calculamos el error que se comete entre f(x) y &amp;lt;math&amp;gt; f_n(x)&amp;lt;/math&amp;gt; para cada n. Se muestran dos gráficas donde se representan los errores para n = 1, 5 y 10 con las normas  L^2 y uniforme. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:Apartado22.jpg|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= % Cálculo de Errores:&lt;br /&gt;
    % Error en la norma L2 &lt;br /&gt;
     error_L2=zeros(1,length(n_valores));&lt;br /&gt;
&lt;br /&gt;
    for n=1:length(n_valores)&lt;br /&gt;
        % Crear la función de diferencia f_n(x)&lt;br /&gt;
        eval(['f_dif_' num2str(n) ' = @(x) abs(g(x) - fn_' num2str(n) '(x));']);&lt;br /&gt;
        &lt;br /&gt;
        % Calcular y_dif_n&lt;br /&gt;
        eval(['y_dif_' num2str(n) ' = sqrt(f_dif_' num2str(n) '(x));']);&lt;br /&gt;
        &lt;br /&gt;
        % Calcular el error L2 y almacenarlo en el arreglo error_L2&lt;br /&gt;
        eval(['error_L2(' num2str(n) ') = sqrt(trapz(x, y_dif_' num2str(n) '));']);&lt;br /&gt;
    end&lt;br /&gt;
    % Error en la norma uniforme&lt;br /&gt;
    error_uniforme=zeros(1,length(n_valores));&lt;br /&gt;
     for i=1:length(n_valores)&lt;br /&gt;
        eval(['yy_dif_' num2str(i) ' = f_dif_' num2str(i) '(x);']);&lt;br /&gt;
        eval(['error_uniforme(' num2str(i) ')= max( yy_dif_' num2str(i) ');']);&lt;br /&gt;
     end&lt;br /&gt;
        &lt;br /&gt;
% Graficamos los errores:&lt;br /&gt;
figure&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(n_valores,error_L2,'b-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('Error')&lt;br /&gt;
title('Error en la norma L^2')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(n_valores,error_uniforme,'r-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('Error')&lt;br /&gt;
title('Error en la norma uniforme')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Aproximación de funciones discontinuas ==&lt;br /&gt;
Como se ha mencionado anteriormente las series de Fourier convergen a una función continua. Sin embargo, ¿cómo hacemos para aproximar funciones no estrictamente continuas?. Esta cuestión se resuelve teniendo en cuenta la condición de Dirichlet. Esta indica el intervalo  &amp;lt;math&amp;gt;[-\pi,\pi]&amp;lt;/math&amp;gt; se puede dividir en un conjunto de subintervalos finitos en los cuales la función es monótona, si la función es continua salvo en un número finito de puntos con discontinuidad de salto finito.&lt;br /&gt;
&lt;br /&gt;
Nos apoyaremos entonces en el siguiente teorema.&lt;br /&gt;
&lt;br /&gt;
==== Teorema ==== &lt;br /&gt;
Si &amp;lt;math&amp;gt; f \in L^2 ([-\pi,\pi]) &amp;lt;/math&amp;gt;  y verifica la condición de Dirichlet entonces la serie de Fourier converge puntualmente en los puntos de continuidad. Es decir:  &lt;br /&gt;
* Si &amp;lt;math&amp;gt; x_0 &amp;lt;/math&amp;gt; es un punto de continuidad entonces, &amp;lt;math&amp;gt; f(x_0)=lim_{n\to\infty}\{\frac{a_0}{2}+ \sum_{n=1}^\infty[ a_n \sin(n \pi x) +b_n \cos(n\pi x)]\} &amp;lt;/math&amp;gt; .&lt;br /&gt;
* Si &amp;lt;math&amp;gt; x_0 &amp;lt;/math&amp;gt; es un punto de discontinuidad entonces la serie converge en &amp;lt;math&amp;gt; x_0 &amp;lt;/math&amp;gt; a &amp;lt;math&amp;gt; \frac{f(x_0^-) + f(x_0^+)}{2} &amp;lt;/math&amp;gt;&lt;br /&gt;
En &amp;lt;math&amp;gt;-\pi&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;\pi&amp;lt;/math&amp;gt; la serie converge a &amp;lt;math&amp;gt; \frac{f(\pi) + f(-\pi)}{2} &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Consideremos la función discontinua &amp;lt;math&amp;gt;f(x) = 1_{x\leq \frac{1}{2}}(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Figu1.jpg|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
hagamos su extensión al intervalo &amp;lt;math&amp;gt; [-1,1]&amp;lt;/math&amp;gt;. Primero observamos ejecutando las siguientes líneas de código que esta función se extiende de forma par. &lt;br /&gt;
 &lt;br /&gt;
{{matlab|codigo=clear &lt;br /&gt;
close all&lt;br /&gt;
format long&lt;br /&gt;
% Límites de integración:&lt;br /&gt;
a=0;&lt;br /&gt;
b=1;&lt;br /&gt;
c=-1;&lt;br /&gt;
% División de los puntos del intervalo:&lt;br /&gt;
tolerancia= 1e-3;&lt;br /&gt;
% Intervalo&lt;br /&gt;
x=a:0.001:b;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función f:&lt;br /&gt;
f1=zeros(length(x),1);&lt;br /&gt;
for i=1:length(x)&lt;br /&gt;
    if x(i)&amp;lt;=1/2&lt;br /&gt;
        f1(i)=1;&lt;br /&gt;
    else&lt;br /&gt;
        f1(i)=0;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
% Extensión 'par':&lt;br /&gt;
xx=c:0.001:a; % Intervalo de extensión&lt;br /&gt;
f2=zeros(length(xx),1);&lt;br /&gt;
for i=1:length(xx)&lt;br /&gt;
    if xx(i)&amp;gt;=-1/2&lt;br /&gt;
        f2(i)=1;&lt;br /&gt;
    else&lt;br /&gt;
        f2(i)=0;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Otra forma de definir la función característica, usando funciones de&lt;br /&gt;
% matlab:&lt;br /&gt;
&lt;br /&gt;
% Definir la función discontinua original&lt;br /&gt;
f = @(x) double(x &amp;gt;= 0 &amp;amp; x &amp;lt;= 1/2);&lt;br /&gt;
&lt;br /&gt;
% Definir la extensión par de la función a [-1, 1]&lt;br /&gt;
    %%%f_par = @(x) double(abs(mod(-x, 2)) &amp;lt;= 1/2);&lt;br /&gt;
f_par=@(x)double(x &amp;lt;= 0 &amp;amp; x &amp;gt;= -1/2);&lt;br /&gt;
&lt;br /&gt;
%%% Representación gráfica de la función característica:&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,f1,'b.')&lt;br /&gt;
plot(xx,f2,'b.')&lt;br /&gt;
hold off&lt;br /&gt;
legend('f(x)')&lt;br /&gt;
xlim([-1,1])&lt;br /&gt;
ylim([-0.5,1.5])&lt;br /&gt;
axis square&lt;br /&gt;
&lt;br /&gt;
% Valores de n almacenados en una lista:&lt;br /&gt;
n_valores=1:1:100;&lt;br /&gt;
&lt;br /&gt;
% Funciones a integrar (coeficientes de Fourier):&lt;br /&gt;
f_sin_1=@(x,k) double(x &amp;gt;= 0 &amp;amp; x &amp;lt;= 1/2).*sin(k*pi*x);&lt;br /&gt;
f_sin_2=@(x,k) double(x &amp;lt;= 0 &amp;amp; x &amp;gt;= -1/2).*sin(k*pi*x);&lt;br /&gt;
f_cos_1=@(x,k) double(x &amp;gt;= 0 &amp;amp; x &amp;lt;= 1/2).*cos(k*pi*x);&lt;br /&gt;
f_cos_2=@(x,k) double(x &amp;lt;= 0 &amp;amp; x &amp;gt;= -1/2).*cos(k*pi*x);&lt;br /&gt;
f_medio_1=@(x,k) double(x &amp;gt;= 0 &amp;amp; x &amp;lt;= 1/2).*1/2;&lt;br /&gt;
f_medio_2=@(x,k) double(x &amp;lt;= 0 &amp;amp; x &amp;gt;= -1/2).*1/2;&lt;br /&gt;
&lt;br /&gt;
% Cálculo de los coeficientes de Fourier:&lt;br /&gt;
% Inicializamos una matriz de 0 para almacenar los valores de ak&lt;br /&gt;
% (coeficientes asociados al seno): &lt;br /&gt;
ak=zeros(n_valores(end),length(n_valores));&lt;br /&gt;
% Inicializamos una matriz de 0 para almacenar los valores de bk&lt;br /&gt;
% (coeficientes asociados al coseno): &lt;br /&gt;
bk=zeros(n_valores(end), length(n_valores));&lt;br /&gt;
% Inicializamos una matriz de 0 para almacenar los valores de ck&lt;br /&gt;
% (coeficientes asociados a 1/2): &lt;br /&gt;
ck=zeros(n_valores(end), length(n_valores));&lt;br /&gt;
&lt;br /&gt;
for n=1:length(n_valores)&lt;br /&gt;
    %Calculamos ak, bk y ck para cada uno de los valores de n:&lt;br /&gt;
    for k=1:n_valores(n)&lt;br /&gt;
            % Vector con los valores de f_sin:&lt;br /&gt;
            y_sin_1=f_sin_1(x,k);&lt;br /&gt;
            y_sin_2=f_sin_2(xx,k);&lt;br /&gt;
            &lt;br /&gt;
            % Vector con los valores de f_cos:&lt;br /&gt;
            y_cos_1=f_cos_1(x,k);&lt;br /&gt;
            y_cos_2=f_cos_2(xx,k);&lt;br /&gt;
            &lt;br /&gt;
            % Vector con los valores de f_sin:&lt;br /&gt;
            y_medio_1=f_medio_1(x,k);&lt;br /&gt;
            y_medio_2=f_medio_2(xx,k);&lt;br /&gt;
&lt;br /&gt;
        ak(k,n)=trapz(x,y_sin_1)+trapz(xx,y_sin_2);&lt;br /&gt;
        bk(k,n)=trapz(x,y_cos_1)+trapz(xx,y_cos_2);&lt;br /&gt;
        ck(k,n)=trapz(x,y_medio_1)+trapz(xx,y_medio_2);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Visualización de resultados: &lt;br /&gt;
    % (Nota: las columnas guardan los valores para n= 1, 5, 10&lt;br /&gt;
    % respectivamente y las filas los coeficientes ak, bk, ck siendo k la&lt;br /&gt;
    % fila.)&lt;br /&gt;
% disp('ak (coeficientes asociados al seno)')&lt;br /&gt;
% disp(ak)&lt;br /&gt;
% disp('bk (coeficientes asociados al coseno)')&lt;br /&gt;
% disp(bk)&lt;br /&gt;
% disp('ck (coeficientes asociados a 1/2)')&lt;br /&gt;
% disp(ck)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Entonces la función &amp;lt;math&amp;gt;f_n&amp;lt;/math&amp;gt; que aproximará a &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; tiene la forma&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f_n(x) = \frac{a_0}{2}+ \sum_{k=1}^n a_k \cos(k \pi x)) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si dibujamos &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f_n&amp;lt;/math&amp;gt; aparecen en las discontinuidades de salto oscilaciones las cuales se conocen como el fenómeno de Gibbs. &lt;br /&gt;
[[Archivo:Figu2.jpg|miniaturadeimagen|derecha]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Definimos nuestra función fn de manera recursiva&lt;br /&gt;
for i = 1:length(n_valores)&lt;br /&gt;
    % Definir función anónima con el nombre adecuado&lt;br /&gt;
    suma=@(x) 0;&lt;br /&gt;
    for j=1: n_valores(i)&lt;br /&gt;
        suma=@(x) suma(x) + bk(j,i)*cos(j*pi*x);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['fn_' num2str(i) '=@(x) ck(1,1)+suma(x);']);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Representación gráfica de nuestras funciones para n = 1, 5, 10:&lt;br /&gt;
% n=1:&lt;br /&gt;
figure&lt;br /&gt;
subplot(1,3,1)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,f1,'b.')&lt;br /&gt;
plot(x,fn_1(x),'r--',LineWidth=2)&lt;br /&gt;
plot(xx,f2,'b.')&lt;br /&gt;
plot(xx,fn_1(xx),'r--',LineWidth=2)&lt;br /&gt;
legend('f(x)','fn(x)')&lt;br /&gt;
title('n = 1')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
% n=5:&lt;br /&gt;
subplot(1,3,2)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,f1,'b.')&lt;br /&gt;
plot(x,fn_5(x),'r--',LineWidth=2)&lt;br /&gt;
plot(xx,f2,'b.')&lt;br /&gt;
plot(xx,fn_5(xx),'r--',LineWidth=2)&lt;br /&gt;
legend('f(x)','fn(x)')&lt;br /&gt;
title('n = 5')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
% n=10: &lt;br /&gt;
subplot(1,3,3)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,f1,'b.')&lt;br /&gt;
plot(x,fn_10(x),'r--',LineWidth=2)&lt;br /&gt;
plot(xx,f2,'b.')&lt;br /&gt;
plot(xx,fn_10(xx),'r--',LineWidth=2)&lt;br /&gt;
legend('f(x)','fn(x)')&lt;br /&gt;
title('n = 10')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Aún que se aumente mucho el valor de n estas oscilaciones no desaparecen y pueden producir errores significativos a la hora de aproximar la función original. Para mitigar este efecto se pueden introducir las sumas de Cesàro,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; S_N(x) = \frac{1}{N+1} + \sum_{n=1}^N f_n(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Veamos que, en efecto, el error disminuye según aumenta la N.&lt;br /&gt;
[[Archivo:Figu3.jpg|miniaturadeimagen|derecha]]&lt;br /&gt;
{{matlab|codigo=% Cálculo de Errores:&lt;br /&gt;
    % Error en la norma L2 &lt;br /&gt;
     error_L2=zeros(1,length(n_valores));&lt;br /&gt;
&lt;br /&gt;
    for n=1:length(n_valores)&lt;br /&gt;
        % Crear la función de diferencia f_n(x)&lt;br /&gt;
        eval(['f_dif_' num2str(n) ' = @(x) abs(f(x) - fn_' num2str(n) '(x));']);&lt;br /&gt;
        &lt;br /&gt;
        % Calcular y_dif_n&lt;br /&gt;
        eval(['y_dif_' num2str(n) ' = sqrt(f_dif_' num2str(n) '(x));']);&lt;br /&gt;
        &lt;br /&gt;
        % Calcular el error L2 y almacenarlo en el arreglo error_L2&lt;br /&gt;
        eval(['error_L2(' num2str(n) ') = sqrt(trapz(x, y_dif_' num2str(n) '));']);&lt;br /&gt;
    end&lt;br /&gt;
    % Error en la norma uniforme&lt;br /&gt;
    error_uniforme=zeros(1,length(n_valores));&lt;br /&gt;
     for i=1:length(n_valores)&lt;br /&gt;
        eval(['yy_dif_' num2str(i) ' = f_dif_' num2str(i) '(x);']);&lt;br /&gt;
        eval(['error_uniforme(' num2str(i) ')= max( yy_dif_' num2str(i) ');']);&lt;br /&gt;
     end&lt;br /&gt;
        &lt;br /&gt;
% Graficamos los errores:&lt;br /&gt;
figure&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(n_valores,error_L2,'b-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('Error')&lt;br /&gt;
title('Error en la norma L^2')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(n_valores,error_uniforme,'r-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('Error')&lt;br /&gt;
title('Error en la norma uniforme')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Gráficamente, vemos como según aumenta N, la serie de Fourier ayudada por la sumas de Cesàro se aproximan cada vez mejor a &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; &lt;br /&gt;
[[Archivo:SUMASCESAROALA.png|400px|miniaturadeimagen|derecha]]&lt;br /&gt;
{{matlab|codigo=% Estudio de las sumas de Cesàro:&lt;br /&gt;
% Definimos las Sumas de Cesàro:&lt;br /&gt;
N_valores=[1,5,10,20,50,100];&lt;br /&gt;
for i=1:length(N_valores)&lt;br /&gt;
    N=N_valores(i);&lt;br /&gt;
    suma=@(x)0;&lt;br /&gt;
    for j=1:N&lt;br /&gt;
        eval(['suma = @(x) suma(x) + fn_' num2str(j) '(x);']);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['SN_' num2str(N) '=@(x) 1/(N+1).*suma(x);'])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
figure&lt;br /&gt;
% N=1:&lt;br /&gt;
subplot(2,3,1)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,f1,'b.')&lt;br /&gt;
plot(x,SN_1(x),'r--')&lt;br /&gt;
plot(xx,f2,'b.')&lt;br /&gt;
plot(xx,SN_1(xx),'r--')&lt;br /&gt;
ylim([-0.5,1.5])&lt;br /&gt;
title('N=1')&lt;br /&gt;
legend('f(x)','SN(x)')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
% N=5:&lt;br /&gt;
subplot(2,3,2)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,f1,'b.')&lt;br /&gt;
plot(x,SN_5(x),'r--')&lt;br /&gt;
plot(xx,f2,'b.')&lt;br /&gt;
plot(xx,SN_5(xx),'r--')&lt;br /&gt;
ylim([-0.5,1.5])&lt;br /&gt;
title('N=5')&lt;br /&gt;
legend('f(x)','SN(x)')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
% N=10:&lt;br /&gt;
subplot(2,3,3)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,f1,'b.')&lt;br /&gt;
plot(x,SN_10(x),'r--')&lt;br /&gt;
plot(xx,f2,'b.')&lt;br /&gt;
plot(xx,SN_10(xx),'r--')&lt;br /&gt;
ylim([-0.5,1.5])&lt;br /&gt;
title('N=10')&lt;br /&gt;
legend('f(x)','SN(x)')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
% N=20:&lt;br /&gt;
subplot(2,3,4)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,f1,'b.')&lt;br /&gt;
plot(x,SN_20(x),'r--')&lt;br /&gt;
plot(xx,f2,'b.')&lt;br /&gt;
plot(xx,SN_20(xx),'r--')&lt;br /&gt;
ylim([-0.5,1.5])&lt;br /&gt;
title('N=20')&lt;br /&gt;
legend('f(x)','SN(x)')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
% N=50:&lt;br /&gt;
subplot(2,3,5)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,f1,'b.')&lt;br /&gt;
plot(x,SN_50(x),'r--')&lt;br /&gt;
plot(xx,f2,'b.')&lt;br /&gt;
plot(xx,SN_50(xx),'r--')&lt;br /&gt;
ylim([-0.5,1.5])&lt;br /&gt;
title('N=50')&lt;br /&gt;
legend('f(x)','SN(x)')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
% N=100:&lt;br /&gt;
subplot(2,3,6)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,f1,'b.')&lt;br /&gt;
plot(x,SN_100(x),'r--')&lt;br /&gt;
plot(xx,f2,'b.')&lt;br /&gt;
plot(xx,SN_100(xx),'r--')&lt;br /&gt;
ylim([-0.5,1.5])&lt;br /&gt;
title('N=100')&lt;br /&gt;
legend('f(x)','SN(x)')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Cambio de intervalo ==&lt;br /&gt;
Tal y como se ha expresado a lo largo del documento, podemos aproximar funciones en el intervalo compacto &amp;lt;math&amp;gt;[-T,T]&amp;lt;/math&amp;gt; pero, ¿qué ocurre con aquellos intervalos de la forma &amp;lt;math&amp;gt;[a,b]&amp;lt;/math&amp;gt;?. Debido a la periodicidad de las funciones que queremos aproximar, la serie de Fourier también se puede aproximar para intervalos de la forma [a, b] con la base &amp;lt;math&amp;gt;\{ \frac{1}{2},\cos(\frac{n \pi x}{T}),\sin(\frac{n \pi x}{T})\}_{n \in \mathbb{N}}&amp;lt;/math&amp;gt;, donde tomamos como &amp;lt;math&amp;gt; T = b - \frac{a}{2}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Para comprender mejor dicho concepto, se propone aproximar la funicon &amp;lt;math&amp;gt;f(x)=x e^{-x}&amp;lt;/math&amp;gt; en el intervalo  compacto &amp;lt;math&amp;gt;[1,3]&amp;lt;/math&amp;gt;. De esta manera obtenemos &amp;lt;math&amp;gt;T = 1&amp;lt;/math&amp;gt; y sustituimos en la base anterior generando la siguiente. A continuación se presentan tres bases con &amp;lt;math&amp;gt; n = 5, 10 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;20&amp;lt;/math&amp;gt; que aproximen dicha función. Como se observa, de nuevo se tiene que, cuanto mayor sea la &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; mejor es la aproximación.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Figu7.jpg|miniaturadeimagen|derecha]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear&lt;br /&gt;
close all&lt;br /&gt;
% DATOS:&lt;br /&gt;
a=0; b=1; c=-1; %Limites del intervalo de nuestra base trigonométrica (por periodicidad)&lt;br /&gt;
x=c:0.001:b; %Intervalo a trabajar&lt;br /&gt;
xx=1:0.001:3; %Intervalo dado por el ejercicio&lt;br /&gt;
&lt;br /&gt;
ff=@(x)x.*exp(-x); %Función dada por el ejercicio&lt;br /&gt;
f=@(x)(x+2).*exp(-x-2); %Función modificada por periodicidad&lt;br /&gt;
&lt;br /&gt;
n_valores=[5,10,20];&lt;br /&gt;
&lt;br /&gt;
% Nuestra base trigonométrica: {1/2 , cos(n*k*pi) , sen(n*k*pi)}&lt;br /&gt;
&lt;br /&gt;
% Calculamos los coeficientes de Fourier para aproximar f:&lt;br /&gt;
ak=zeros(n_valores(end),length(n_valores));&lt;br /&gt;
bk=zeros(n_valores(end),length(n_valores));&lt;br /&gt;
ck=zeros(n_valores(end),length(n_valores));&lt;br /&gt;
&lt;br /&gt;
f_sen=@(x,k) (x+2).*exp(-x-2).*sin(k*pi*x);&lt;br /&gt;
f_cos=@(x,k) (x+2).*exp(-x-2).*cos(k*pi*x);&lt;br /&gt;
f_medio=@(x,k) (x+2).*exp(-x-2).*1/2;&lt;br /&gt;
&lt;br /&gt;
for n=1:length(n_valores)&lt;br /&gt;
    %Calculamos ak, bk y ck para cada uno de los valores de n:&lt;br /&gt;
    for k=1:n_valores(n)&lt;br /&gt;
            % Vector con los valores de f_sin:&lt;br /&gt;
            y_sen=f_sen(x,k);&lt;br /&gt;
            &lt;br /&gt;
            % Vector con los valores de f_cos:&lt;br /&gt;
            y_cos=f_cos(x,k);&lt;br /&gt;
            &lt;br /&gt;
            % Vector con los valores de f_sin:&lt;br /&gt;
            y_medio=f_medio(x);&lt;br /&gt;
&lt;br /&gt;
        ak(k,n)=trapz(x,y_sen);&lt;br /&gt;
        bk(k,n)=trapz(x,y_cos);&lt;br /&gt;
        ck(k,n)=trapz(x,y_medio);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
% % disp('ak')&lt;br /&gt;
% % disp(ak)&lt;br /&gt;
% % disp('bk')&lt;br /&gt;
% % disp(bk)&lt;br /&gt;
% % disp('ck')&lt;br /&gt;
% % disp(ck)&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestras fn:&lt;br /&gt;
for i = 1:length(n_valores)&lt;br /&gt;
    % Definir función anónima con el nombre adecuado&lt;br /&gt;
    suma=@(x) 0;&lt;br /&gt;
    for j=1:i&lt;br /&gt;
        suma=@(x) suma(x) + ak(j,i)*sin(j*pi.*x)+bk(j,i)*cos(j*pi*x);&lt;br /&gt;
    end&lt;br /&gt;
    n=n_valores(i);&lt;br /&gt;
    eval(['fn_' num2str(n) '=@(x) ck(1,1)+suma(x);']);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Representación gráfica:&lt;br /&gt;
&lt;br /&gt;
figure&lt;br /&gt;
% n=5:&lt;br /&gt;
subplot(1,3,1)&lt;br /&gt;
hold on&lt;br /&gt;
plot(xx,ff(xx),'b-')&lt;br /&gt;
plot(xx,fn_5(x),'r--')&lt;br /&gt;
title('n=5')&lt;br /&gt;
legend('f(x)','fn(x)')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
% n=10:&lt;br /&gt;
subplot(1,3,2)&lt;br /&gt;
hold on&lt;br /&gt;
plot(xx,ff(xx),'b-')&lt;br /&gt;
plot(xx,fn_10(x),'r--')&lt;br /&gt;
title('n=10')&lt;br /&gt;
legend('f(x)','fn(x)')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
% n=20:&lt;br /&gt;
subplot(1,3,3)&lt;br /&gt;
hold on&lt;br /&gt;
plot(xx,ff(xx),'b-')&lt;br /&gt;
plot(xx,fn_20(x),'r--')&lt;br /&gt;
title('n=20')&lt;br /&gt;
legend('f(x)','fn(x)')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Base trigonométrica compleja ==&lt;br /&gt;
En los apartados anteriores se ha trabajado en todo momento con bases reales. Sin embargo, también se puede trabajar con bases trigonométricas complejas. De esta manera, se puede aproximar las funciones con combinaciones lineales de esta base. En concreto, la base es de la siguiente forma en el intervalo &amp;lt;math&amp;gt;[-\pi,\pi]&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\lbrace e^{inx}\rbrace_{n\in\mathbb{Z}}&amp;lt;/math&amp;gt;.&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A su vez, es necesario conocer la manera en la que se construyen los coeficientes de Fourier. En este caso, vamos a centrarnos en el espacio  L^{2}(-\pi,\pi) &amp;lt;/math&amp;gt;. De esta manera, los coeficientes son de la forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;a_n=\frac{\langle f(x),e^{inx}\rangle_{L^{2}(-\pi,\pi)}}{\lVert e^{inx}\rVert_{L^{2}(-\pi,\pi)}^{2}}=\frac{1}{2\pi}\int_{-\pi}^{\pi} f(x)\cdot e^{-inx} dx&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para comprender esto de manera óptima, se ha creado un código para calcular la base trigonométrica adaptada al intervalo [0,1] y aproximar la función con los primeros 5, 10 y 20 términos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para ello, basta, se realizará la aproximación en la base &amp;lt;math&amp;gt; L^{2}(-\frac{1}{2},\frac{1}{2}) &amp;lt;/math&amp;gt;.De esta manera, se realiza el cambio de variable que genera la base &amp;lt;math&amp;gt;\lbrace e^{i2\pi nx}\rbrace_{n\in\mathbb{Z}}&amp;lt;/math&amp;gt;. De esta manera, la base que se genera es ortonormal. A continuación se presenta el código utilizado con los resultados obtenidos.&lt;br /&gt;
[[Archivo:Fotoej5.jpg|miniaturadeimagen|derecha]]&lt;br /&gt;
{{matlab|codigo= close all&lt;br /&gt;
clear&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
f_exp = @(z, n) (exp(1i *2* pi * n * z)).*(4*(z+1/2).*(1/2-(z+1/2)).^2);&lt;br /&gt;
f=@(z) (4*(z+1/2).*(1/2-(z+1/2)).^2);&lt;br /&gt;
ff=@(z) (4*(z).*((+1/2-z).^2));&lt;br /&gt;
&lt;br /&gt;
% Intervalo a trabajar&lt;br /&gt;
xx=-0.5:0.001:0.5;&lt;br /&gt;
&lt;br /&gt;
% n=5&lt;br /&gt;
i=5;&lt;br /&gt;
&lt;br /&gt;
% Inicializar un vector para almacenar los resultados&lt;br /&gt;
ak5 = zeros(i, 1);&lt;br /&gt;
bk5 = zeros(i, 1);&lt;br /&gt;
&lt;br /&gt;
% Integrales&lt;br /&gt;
for n = 1:i&lt;br /&gt;
    ak5(n) = trapz(xx,f_exp(xx, n));&lt;br /&gt;
    bk5(n) = conj(ak5(n));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calcular a0&lt;br /&gt;
a05 = trapz(xx,f(xx));&lt;br /&gt;
&lt;br /&gt;
%Serie de fourier para n=i&lt;br /&gt;
fn_5 = @(z) a05;&lt;br /&gt;
for n=1:i&lt;br /&gt;
    fn_5= @(z) fn_5(z) + bk5(n).*exp(1i.*2*n.*pi.*z) + ak5(n).*exp(1i.*2*(-n).*pi.*z);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Mostrar los resultados&lt;br /&gt;
disp('Resultados para cada a:');&lt;br /&gt;
disp(ak5);&lt;br /&gt;
disp('Resultados para cada b:');&lt;br /&gt;
disp(bk5);&lt;br /&gt;
&lt;br /&gt;
% Gráfica&lt;br /&gt;
x = linspace(0, 1, 1000);&lt;br /&gt;
subplot(1,3,1)&lt;br /&gt;
plot(x,ff(x),'b-',LineWidth=1.5)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,fn_5(x+1/2),'r--',LineWidth=1.1)&lt;br /&gt;
legend( 'f(x)','fn(x)')&lt;br /&gt;
title('n=5')&lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
% n=10&lt;br /&gt;
i=10;&lt;br /&gt;
&lt;br /&gt;
% Inicializar un vector para almacenar los resultados&lt;br /&gt;
ak10 = zeros(i, 1);&lt;br /&gt;
bk10 = zeros(i, 1);&lt;br /&gt;
&lt;br /&gt;
% Integrales&lt;br /&gt;
for n = 1:i&lt;br /&gt;
    ak10(n) = trapz(xx,f_exp(xx, n));&lt;br /&gt;
    bk10(n) = conj(ak10(n));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calcular a0&lt;br /&gt;
a010 = trapz(xx,f(xx));&lt;br /&gt;
&lt;br /&gt;
%Serie de fourier para n=i&lt;br /&gt;
fn_10 = @(z) a010;&lt;br /&gt;
for n=1:i&lt;br /&gt;
    fn_10= @(z) fn_10(z) + bk10(n).*exp(1i.*2*n.*pi.*z) + ak10(n).*exp(1i.*2*(-n).*pi.*z);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Mostrar los resultados&lt;br /&gt;
disp('Resultados para cada a:');&lt;br /&gt;
disp(ak10);&lt;br /&gt;
disp('Resultados para cada b:');&lt;br /&gt;
disp(bk10);&lt;br /&gt;
&lt;br /&gt;
% Gráfica&lt;br /&gt;
x = linspace(0, 1, 1000);&lt;br /&gt;
subplot(1,3,2)&lt;br /&gt;
plot(x,ff(x),'b-',LineWidth=1.5)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,fn_10(x+1/2),'r--',LineWidth=1.1)&lt;br /&gt;
legend( 'f(x)','fn(x)')&lt;br /&gt;
title('n=10')&lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
% n=20&lt;br /&gt;
i=20;&lt;br /&gt;
&lt;br /&gt;
% Inicializar un vector para almacenar los resultados&lt;br /&gt;
ak20 = zeros(i, 1);&lt;br /&gt;
bk20 = zeros(i, 1);&lt;br /&gt;
&lt;br /&gt;
% Integrales&lt;br /&gt;
for n = 1:i&lt;br /&gt;
    ak20(n) = trapz(xx,f_exp(xx, n));&lt;br /&gt;
    bk20(n) = conj(ak20(n));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calcular a0&lt;br /&gt;
a020 = trapz(xx,f(xx));&lt;br /&gt;
&lt;br /&gt;
%Serie de fourier para n=i&lt;br /&gt;
fn_20 = @(z) a020;&lt;br /&gt;
for n=1:i&lt;br /&gt;
    fn_20= @(z) fn_20(z) + bk20(n).*exp(1i.*2*n.*pi.*z) + ak20(n).*exp(1i.*2*(-n).*pi.*z);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Mostrar los resultados&lt;br /&gt;
disp('Resultados para cada a:');&lt;br /&gt;
disp(ak20);&lt;br /&gt;
disp('Resultados para cada b:');&lt;br /&gt;
disp(bk20);&lt;br /&gt;
&lt;br /&gt;
% Gráfica&lt;br /&gt;
x = linspace(0, 1, 1000);&lt;br /&gt;
subplot(1,3,3)&lt;br /&gt;
plot(x,ff(x),'b-',LineWidth=1.5)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,fn_20(x+1/2),'r--',LineWidth=1.1)&lt;br /&gt;
legend( 'f(x)','fn(x)')&lt;br /&gt;
title('n=20')&lt;br /&gt;
hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Referencias ==&lt;br /&gt;
* [https://upcommons.upc.edu/bitstream/handle/2117/186594/tema_4_series_de_fourier-4725.pdf?sequence=1]&lt;br /&gt;
* [Libro de Sandro Salsa. Partial Differential Equations in Action: From Modelling to Theory]&lt;br /&gt;
* [Notas de Juan Francisco Padial Molina. Análisis Real (Grado en matemáticas - Universidad Politéctica de Madrid)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP23/24]]&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Equipo_ALA)&amp;diff=71823</id>
		<title>Series de Fourier (Equipo ALA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Equipo_ALA)&amp;diff=71823"/>
				<updated>2024-05-07T17:19:32Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: /* Aproximación de funciones discontinuas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introducción ==&lt;br /&gt;
&lt;br /&gt;
{{ TrabajoED | Series de Fourier. Equipo ALA | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Andrea Navarro Aitana Guill Lucía Amores }}&lt;br /&gt;
&lt;br /&gt;
Fue entre 1807 y 1811, mientras llevaba a cabo un estudio sobre la ecuación del calor, cuando el matemático francés Jean-Baptiste Joseph Fourier publicó el primer estudio sobre la serie que recibe su nombre, la serie de Fourier.  &lt;br /&gt;
&lt;br /&gt;
Una serie de Fourier consiste en una serie infinita y convergente puntualmente a una función continua y periódica. La gran importancia de esta radica en su increíble eficacia para aproximar funciones, pues fue el matemático quien llegó a la conclusión de que cualquier función periódica e integrable de Riemann en el intervalo [-T,T] puede escribirse como suma infinita de funciones trigonométricas. De esta manera, se da lugar a la siguiente expresión que representa la serie, donde &amp;lt;math&amp;gt; a_0,a_n, b_n \in \mathbb{R} &amp;lt;/math&amp;gt; se conocen como coeficientes de Fourier:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(x) = \frac{a_0}{2}+ \sum_{n=1}^\infty[ a_n \cos(\frac{n \pi x}{T}) +b_n\sin(\frac{n \pi x}{T})]  &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Además, los coeficientes de Fourier se obtienen de la siguiente manera.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;a_0 =\frac{1}{T}\int_{-T}^{T} f(x) dx, \hspace{30px} a_n =\frac{1}{T}\int_{-T}^{T} f(x) \cos(\frac{n \pi x}{T}) dx, \hspace{30px} b_n =\frac{1}{T}\int_{-T}^{T} f(x) \sin(\frac{n \pi x}{T}) dx  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bases trigonométricas ==&lt;br /&gt;
&lt;br /&gt;
Tal y como se ha observado con anterioridad cualquier función periódica e integrable de Riemann en el intervalo [-T,T] puede escribirse como suma infinita de funciones trigonométricas. El primer paso para comprender este concepto es definir la base ortogonal que permite mediante combinaciones lineales de los coeficientes de Fourier aproximar cualquier función. Esta base se encuentra en el espacio de Hilbert &amp;lt;math&amp;gt;L^2([-T,T])&amp;lt;/math&amp;gt; y viene dada por &amp;lt;math&amp;gt;\{ \frac{1}{2},\cos(\frac{n \pi x}{T}),\sin(\frac{n \pi x}{T})\}_{n \in \mathbb{N}}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para comprender de manera óptima este concepto se presenta a continuación gráficamente los diez primeros términos de dicha base en el intervalo [-1,1]. Para obtener dicha representación, se ha utilizado el código que aparece posteriormente. Analíticamente, simplemente se debe sustituir la expresión de la base anterior para T=1.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Cosenobase.jpeg|350px|miniaturadeimagen|derecha|Elemento de la base:coseno]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
n=10;&lt;br /&gt;
x=-1:0.001:1;  %Intervalo de x [-1,1]&lt;br /&gt;
f=@(x,n)cos(n*pi*x);&lt;br /&gt;
g=@(x,n)sin(n*pi*x);&lt;br /&gt;
y=1/2*ones(size(x));&lt;br /&gt;
&lt;br /&gt;
% Representación del coseno&lt;br /&gt;
figure(1)&lt;br /&gt;
for i=1:n&lt;br /&gt;
    subplot(2,5,i)&lt;br /&gt;
    plot(x,f(x,i))&lt;br /&gt;
    axis square&lt;br /&gt;
    title(['n = ' num2str(i)])&lt;br /&gt;
end}}&lt;br /&gt;
[[Archivo:Seno.jpeg|350px|miniaturadeimagen|derecha|Elementos de la base:seno]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Representación del seno&lt;br /&gt;
figure(2)&lt;br /&gt;
for i=1:n&lt;br /&gt;
    subplot(2,5,i)&lt;br /&gt;
    plot(x,g(x,i))&lt;br /&gt;
    axis square&lt;br /&gt;
    title(['n = ' num2str(i)])&lt;br /&gt;
end}}&lt;br /&gt;
[[Archivo:Unmediobase.jpeg|350px|miniaturadeimagen|derecha|Elementos de la base:1/2]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Representación de 1/2&lt;br /&gt;
figure(3)&lt;br /&gt;
axis square&lt;br /&gt;
plot(x,y)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como se puede observar en las últimas dos, el valor de n es inversamente proporcional al periodo. Esto permite aproximarnos a la conclusión que posteriormente se enunciará de que cuanto mayor sea el valor de la n mejor aproximación de la función se obtendrá.&lt;br /&gt;
&lt;br /&gt;
== Aproximación de funciones continuas ==&lt;br /&gt;
Tal y como se ha enunciado anteriormente, la gran importancia de las series de Fourier radica en su increíble eficacia para aproximar funciones periódicas. A su vez, se va a realizar un análisis de como extender funciones continuas en el intervalo [0, T] al intervalo [-T, T] y que estas sigan siendo continuas. De esta manera solo se utilizaría para su aproximación las funciones pares o impares de las bases.&lt;br /&gt;
&lt;br /&gt;
En primer lugar se debe diferenciar que ocurre cuando la extensión es impar o par. En el primer caso, la aproximación simplemente se realiza utilizando los elementos de la base del seno, con sus respectivos coeficientes de Fourier, pues los del coseno y &amp;lt;math&amp;gt;\ \frac{1}{2}&amp;lt;/math&amp;gt; se anulan.&lt;br /&gt;
&lt;br /&gt;
A continuación, veremos un ejemplo sobre ello. Consideremos la función a aproximar &amp;lt;math&amp;gt; f(x) = x(1-x) &amp;lt;/math&amp;gt; en el intervalo [0,1]. Esta función se aproxima por extensión impar, en efecto, ejecutando las siguientes líneas de código vemos como los coeficientes pares son nulos. Cabe mencionar que los coeficientes de Fourier no se han calculado por integración, sino que se han aproximado utilizando la fórmula del trapecio. &lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear&lt;br /&gt;
close all&lt;br /&gt;
format long&lt;br /&gt;
% Límites de integración:&lt;br /&gt;
a=0;&lt;br /&gt;
b=1;&lt;br /&gt;
c=-1;&lt;br /&gt;
% División de los puntos del intervalo:&lt;br /&gt;
tolerancia= 1e-3;&lt;br /&gt;
% Intervalo&lt;br /&gt;
x=a:0.001:b;&lt;br /&gt;
xx=c:0.001:a;&lt;br /&gt;
% Valores de n almacenados en una lista:&lt;br /&gt;
n_valores=1:1:100;&lt;br /&gt;
&lt;br /&gt;
% Funciones a integrar:&lt;br /&gt;
    % f:&lt;br /&gt;
f_cos_1=@(x,k)x.*(1-x).*cos(k*pi*x);&lt;br /&gt;
f_sin_1=@(x,k)x.*(1-x).*sin(k*pi*x);&lt;br /&gt;
f_medio_1=@(x,k)x.*(1-x).*1/2;&lt;br /&gt;
    % Extensión de f:&lt;br /&gt;
f_cos_2=@(x,k)x.*(1+x).*cos(k*pi*x);&lt;br /&gt;
f_sin_2=@(x,k)x.*(1+x).*sin(k*pi*x);&lt;br /&gt;
f_medio_2=@(x,k)x.*(1+x).*1/2;&lt;br /&gt;
% Función a aproximar:&lt;br /&gt;
g=@(x)x.*(1-x);&lt;br /&gt;
g_impar=@(x)x.*(1+x);&lt;br /&gt;
% Inicializamos una matriz de 0 para almacenar los valores de ak&lt;br /&gt;
% (coeficientes asociados al seno): &lt;br /&gt;
ak=zeros(n_valores(end),length(n_valores));&lt;br /&gt;
aak=zeros(n_valores(end),length(n_valores));&lt;br /&gt;
% Inicializamos una matriz de 0 para almacenar los valores de bk&lt;br /&gt;
% (coeficientes asociados al coseno): &lt;br /&gt;
bk=zeros(n_valores(end), length(n_valores));&lt;br /&gt;
% Inicializamos una matriz de 0 para almacenar los valores de ck&lt;br /&gt;
% (coeficientes asociados a 1/2): &lt;br /&gt;
ck=zeros(n_valores(end), length(n_valores));&lt;br /&gt;
&lt;br /&gt;
for n=1:length(n_valores)&lt;br /&gt;
    %Calculamos ak, bk y ck para cada uno de los valores de n:&lt;br /&gt;
    for k=1:n_valores(n)&lt;br /&gt;
            % Vector con los valores de f_sin:&lt;br /&gt;
            y_sin_1=f_sin_1(x,k);&lt;br /&gt;
            y_sin_2=f_sin_2(xx,k);&lt;br /&gt;
            &lt;br /&gt;
            % Vector con los valores de f_cos:&lt;br /&gt;
            y_cos_1=f_cos_1(x,k);&lt;br /&gt;
            y_cos_2=f_cos_2(xx,k);&lt;br /&gt;
            &lt;br /&gt;
            % Vector con los valores de f_sin:&lt;br /&gt;
            y_medio_1=f_medio_1(x);&lt;br /&gt;
            y_medio_2=f_medio_2(xx);&lt;br /&gt;
&lt;br /&gt;
        ak(k,n)=trapz(x,y_sin_1)+trapz(xx,y_sin_2);&lt;br /&gt;
        aak(k,n)=2*trapz(x,y_sin_1);&lt;br /&gt;
        bk(k,n)=trapz(x,y_cos_1)+trapz(xx,y_cos_2);&lt;br /&gt;
        ck(k,n)=trapz(x,y_medio_1)+trapz(xx,y_medio_2);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Visualización de resultados: &lt;br /&gt;
    % (Nota: las columnas guardan los valores para n= 1, 5, 10&lt;br /&gt;
    % respectivamente y las filas los coeficientes ak, bk, ck siendo k la&lt;br /&gt;
    % fila.)&lt;br /&gt;
% disp('ak (coeficientes asociados al seno)')&lt;br /&gt;
% disp(ak)&lt;br /&gt;
% disp('aak (coeficientes asociados al seno (simetría))')&lt;br /&gt;
% disp(aak)&lt;br /&gt;
% disp('bk (coeficientes asociados al coseno)')&lt;br /&gt;
% disp(bk)&lt;br /&gt;
% disp('ck (coeficientes asociados a 1/2)')&lt;br /&gt;
% disp(ck)&lt;br /&gt;
}}&lt;br /&gt;
Luego, la función que aproximará f(x) tiene la forma,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(x) = \sum_{k=1}^n b_k \sin(k \pi x)&amp;lt;/math&amp;gt;   donde   &amp;lt;math&amp;gt; b_k = 2 \int_{0}^{1} f(x)sin(k \pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En las siguientes gráficas apreciamos como según crece n, &amp;lt;math&amp;gt; f_n(x)&amp;lt;/math&amp;gt; se va acercando más a la función original f(x). En concreto se muestran los casos para n = 1, 5 y 10. &lt;br /&gt;
[[Archivo:Apartado21.jpg|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
En el caso de que la extensión sea par la función se aproxima utilizando los elementos del coseno y el &amp;lt;math&amp;gt;\ \frac{1}{2}&amp;lt;/math&amp;gt; con sus respectivos coeficientes de Fourier, pues los del seno se anulan.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=% Definimos la función fn &lt;br /&gt;
&lt;br /&gt;
for i = 1:length(n_valores)&lt;br /&gt;
    % Definir función anónima con el nombre adecuado&lt;br /&gt;
    suma=@(x) 0;&lt;br /&gt;
    for j=1:i&lt;br /&gt;
        suma=@(x) suma(x) + ak(j,i)*sin(j*pi*x);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['fn_' num2str(i) '=@(x) suma(x);']);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Representación gráfica de fn:&lt;br /&gt;
figure&lt;br /&gt;
subplot(3,1,1)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,g(x),'b')&lt;br /&gt;
plot(x,fn_1(x),'r--')&lt;br /&gt;
plot(xx,g_impar(xx),'b')&lt;br /&gt;
plot(xx,fn_1(xx),'r--')&lt;br /&gt;
legend('f(x)','fn(x)')&lt;br /&gt;
title('n = 1')&lt;br /&gt;
hold off&lt;br /&gt;
% Para n=5:&lt;br /&gt;
ak_5=zeros(5,1);&lt;br /&gt;
for i=1:5&lt;br /&gt;
    ak_5(i)=aak(i,2);&lt;br /&gt;
end&lt;br /&gt;
subplot(3,1,2)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,g(x),'b')&lt;br /&gt;
plot(x,fn_5(x),'r--')&lt;br /&gt;
plot(xx,g_impar(xx),'b')&lt;br /&gt;
plot(xx,fn_5(xx),'r--')&lt;br /&gt;
legend('f(x)','fn(x)')&lt;br /&gt;
title('n = 5')&lt;br /&gt;
hold off&lt;br /&gt;
% Para n=10:&lt;br /&gt;
subplot(3,1,3)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,g(x),'b')&lt;br /&gt;
plot(x,fn_10(x),'r--')&lt;br /&gt;
plot(xx,g_impar(xx),'b')&lt;br /&gt;
plot(xx,fn_10(xx),'r--')&lt;br /&gt;
legend('f(x)','fn(x)')&lt;br /&gt;
title('n = 10')&lt;br /&gt;
hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Esto también se puede ver claramente si calculamos el error que se comete entre f(x) y &amp;lt;math&amp;gt; f_n(x)&amp;lt;/math&amp;gt; para cada n. Se muestran dos gráficas donde se representan los errores para n = 1, 5 y 10 con las normas  L^2 y uniforme. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:Apartado22.jpg|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= % Cálculo de Errores:&lt;br /&gt;
    % Error en la norma L2 &lt;br /&gt;
     error_L2=zeros(1,length(n_valores));&lt;br /&gt;
&lt;br /&gt;
    for n=1:length(n_valores)&lt;br /&gt;
        % Crear la función de diferencia f_n(x)&lt;br /&gt;
        eval(['f_dif_' num2str(n) ' = @(x) abs(g(x) - fn_' num2str(n) '(x));']);&lt;br /&gt;
        &lt;br /&gt;
        % Calcular y_dif_n&lt;br /&gt;
        eval(['y_dif_' num2str(n) ' = sqrt(f_dif_' num2str(n) '(x));']);&lt;br /&gt;
        &lt;br /&gt;
        % Calcular el error L2 y almacenarlo en el arreglo error_L2&lt;br /&gt;
        eval(['error_L2(' num2str(n) ') = sqrt(trapz(x, y_dif_' num2str(n) '));']);&lt;br /&gt;
    end&lt;br /&gt;
    % Error en la norma uniforme&lt;br /&gt;
    error_uniforme=zeros(1,length(n_valores));&lt;br /&gt;
     for i=1:length(n_valores)&lt;br /&gt;
        eval(['yy_dif_' num2str(i) ' = f_dif_' num2str(i) '(x);']);&lt;br /&gt;
        eval(['error_uniforme(' num2str(i) ')= max( yy_dif_' num2str(i) ');']);&lt;br /&gt;
     end&lt;br /&gt;
        &lt;br /&gt;
% Graficamos los errores:&lt;br /&gt;
figure&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(n_valores,error_L2,'b-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('Error')&lt;br /&gt;
title('Error en la norma L^2')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(n_valores,error_uniforme,'r-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('Error')&lt;br /&gt;
title('Error en la norma uniforme')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Aproximación de funciones discontinuas ==&lt;br /&gt;
Como se ha mencionado anteriormente las series de Fourier convergen a una función continua. Sin embargo, ¿cómo hacemos para aproximar funciones no estrictamente continuas?. Esta cuestión se resuelve teniendo en cuenta la condición de Dirichlet. Esta indica el intervalo  &amp;lt;math&amp;gt;[-\pi,\pi]&amp;lt;/math&amp;gt; se puede dividir en un conjunto de subintervalos finitos en los cuales la función es monótona, si la función es continua salvo en un número finito de puntos con discontinuidad de salto finito.&lt;br /&gt;
&lt;br /&gt;
Nos apoyaremos entonces en el siguiente teorema.&lt;br /&gt;
&lt;br /&gt;
==== Teorema ==== &lt;br /&gt;
Si &amp;lt;math&amp;gt; f \in L^2 ([-\pi,\pi]) &amp;lt;/math&amp;gt;  y verifica la condición de Dirichlet entonces la serie de Fourier converge puntualmente en los puntos de continuidad. Es decir:  &lt;br /&gt;
* Si &amp;lt;math&amp;gt; x_0 &amp;lt;/math&amp;gt; es un punto de continuidad entonces, &amp;lt;math&amp;gt; f(x_0)=lim_{n\to\infty}\{\frac{a_0}{2}+ \sum_{n=1}^\infty[ a_n \sin(n \pi x) +b_n \cos(n\pi x)]\} &amp;lt;/math&amp;gt; .&lt;br /&gt;
* Si &amp;lt;math&amp;gt; x_0 &amp;lt;/math&amp;gt; es un punto de discontinuidad entonces la serie converge en &amp;lt;math&amp;gt; x_0 &amp;lt;/math&amp;gt; a &amp;lt;math&amp;gt; \frac{f(x_0^-) + f(x_0^+)}{2} &amp;lt;/math&amp;gt;&lt;br /&gt;
En &amp;lt;math&amp;gt;-\pi&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;\pi&amp;lt;/math&amp;gt; la serie converge a &amp;lt;math&amp;gt; \frac{f(\pi) + f(-\pi)}{2} &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Consideremos la función discontinua &amp;lt;math&amp;gt;f(x) = 1_{x\leq \frac{1}{2}}(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Figu1.jpg|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
hagamos su extensión al intervalo &amp;lt;math&amp;gt; [-1,1]&amp;lt;/math&amp;gt;. Primero observamos ejecutando las siguientes líneas de código que esta función se extiende de forma par. &lt;br /&gt;
 &lt;br /&gt;
{{matlab|codigo=clear &lt;br /&gt;
close all&lt;br /&gt;
format long&lt;br /&gt;
% Límites de integración:&lt;br /&gt;
a=0;&lt;br /&gt;
b=1;&lt;br /&gt;
c=-1;&lt;br /&gt;
% División de los puntos del intervalo:&lt;br /&gt;
tolerancia= 1e-3;&lt;br /&gt;
% Intervalo&lt;br /&gt;
x=a:0.001:b;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función f:&lt;br /&gt;
f1=zeros(length(x),1);&lt;br /&gt;
for i=1:length(x)&lt;br /&gt;
    if x(i)&amp;lt;=1/2&lt;br /&gt;
        f1(i)=1;&lt;br /&gt;
    else&lt;br /&gt;
        f1(i)=0;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
% Extensión 'par':&lt;br /&gt;
xx=c:0.001:a; % Intervalo de extensión&lt;br /&gt;
f2=zeros(length(xx),1);&lt;br /&gt;
for i=1:length(xx)&lt;br /&gt;
    if xx(i)&amp;gt;=-1/2&lt;br /&gt;
        f2(i)=1;&lt;br /&gt;
    else&lt;br /&gt;
        f2(i)=0;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Otra forma de definir la función característica, usando funciones de&lt;br /&gt;
% matlab:&lt;br /&gt;
&lt;br /&gt;
% Definir la función discontinua original&lt;br /&gt;
f = @(x) double(x &amp;gt;= 0 &amp;amp; x &amp;lt;= 1/2);&lt;br /&gt;
&lt;br /&gt;
% Definir la extensión par de la función a [-1, 1]&lt;br /&gt;
    %%%f_par = @(x) double(abs(mod(-x, 2)) &amp;lt;= 1/2);&lt;br /&gt;
f_par=@(x)double(x &amp;lt;= 0 &amp;amp; x &amp;gt;= -1/2);&lt;br /&gt;
&lt;br /&gt;
%%% Representación gráfica de la función característica:&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,f1,'b.')&lt;br /&gt;
plot(xx,f2,'b.')&lt;br /&gt;
hold off&lt;br /&gt;
legend('f(x)')&lt;br /&gt;
xlim([-1,1])&lt;br /&gt;
ylim([-0.5,1.5])&lt;br /&gt;
axis square&lt;br /&gt;
&lt;br /&gt;
% Valores de n almacenados en una lista:&lt;br /&gt;
n_valores=1:1:100;&lt;br /&gt;
&lt;br /&gt;
% Funciones a integrar (coeficientes de Fourier):&lt;br /&gt;
f_sin_1=@(x,k) double(x &amp;gt;= 0 &amp;amp; x &amp;lt;= 1/2).*sin(k*pi*x);&lt;br /&gt;
f_sin_2=@(x,k) double(x &amp;lt;= 0 &amp;amp; x &amp;gt;= -1/2).*sin(k*pi*x);&lt;br /&gt;
f_cos_1=@(x,k) double(x &amp;gt;= 0 &amp;amp; x &amp;lt;= 1/2).*cos(k*pi*x);&lt;br /&gt;
f_cos_2=@(x,k) double(x &amp;lt;= 0 &amp;amp; x &amp;gt;= -1/2).*cos(k*pi*x);&lt;br /&gt;
f_medio_1=@(x,k) double(x &amp;gt;= 0 &amp;amp; x &amp;lt;= 1/2).*1/2;&lt;br /&gt;
f_medio_2=@(x,k) double(x &amp;lt;= 0 &amp;amp; x &amp;gt;= -1/2).*1/2;&lt;br /&gt;
&lt;br /&gt;
% Cálculo de los coeficientes de Fourier:&lt;br /&gt;
% Inicializamos una matriz de 0 para almacenar los valores de ak&lt;br /&gt;
% (coeficientes asociados al seno): &lt;br /&gt;
ak=zeros(n_valores(end),length(n_valores));&lt;br /&gt;
% Inicializamos una matriz de 0 para almacenar los valores de bk&lt;br /&gt;
% (coeficientes asociados al coseno): &lt;br /&gt;
bk=zeros(n_valores(end), length(n_valores));&lt;br /&gt;
% Inicializamos una matriz de 0 para almacenar los valores de ck&lt;br /&gt;
% (coeficientes asociados a 1/2): &lt;br /&gt;
ck=zeros(n_valores(end), length(n_valores));&lt;br /&gt;
&lt;br /&gt;
for n=1:length(n_valores)&lt;br /&gt;
    %Calculamos ak, bk y ck para cada uno de los valores de n:&lt;br /&gt;
    for k=1:n_valores(n)&lt;br /&gt;
            % Vector con los valores de f_sin:&lt;br /&gt;
            y_sin_1=f_sin_1(x,k);&lt;br /&gt;
            y_sin_2=f_sin_2(xx,k);&lt;br /&gt;
            &lt;br /&gt;
            % Vector con los valores de f_cos:&lt;br /&gt;
            y_cos_1=f_cos_1(x,k);&lt;br /&gt;
            y_cos_2=f_cos_2(xx,k);&lt;br /&gt;
            &lt;br /&gt;
            % Vector con los valores de f_sin:&lt;br /&gt;
            y_medio_1=f_medio_1(x,k);&lt;br /&gt;
            y_medio_2=f_medio_2(xx,k);&lt;br /&gt;
&lt;br /&gt;
        ak(k,n)=trapz(x,y_sin_1)+trapz(xx,y_sin_2);&lt;br /&gt;
        bk(k,n)=trapz(x,y_cos_1)+trapz(xx,y_cos_2);&lt;br /&gt;
        ck(k,n)=trapz(x,y_medio_1)+trapz(xx,y_medio_2);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Visualización de resultados: &lt;br /&gt;
    % (Nota: las columnas guardan los valores para n= 1, 5, 10&lt;br /&gt;
    % respectivamente y las filas los coeficientes ak, bk, ck siendo k la&lt;br /&gt;
    % fila.)&lt;br /&gt;
% disp('ak (coeficientes asociados al seno)')&lt;br /&gt;
% disp(ak)&lt;br /&gt;
% disp('bk (coeficientes asociados al coseno)')&lt;br /&gt;
% disp(bk)&lt;br /&gt;
% disp('ck (coeficientes asociados a 1/2)')&lt;br /&gt;
% disp(ck)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Entonces la función &amp;lt;math&amp;gt;f_n&amp;lt;/math&amp;gt; que aproximará a &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; tiene la forma&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f_n(x) = \frac{a_0}{2}+ \sum_{k=1}^n a_k \cos(k \pi x)) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si dibujamos &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f_n&amp;lt;/math&amp;gt; aparecen en las discontinuidades de salto oscilaciones las cuales se conocen como el fenómeno de Gibbs. &lt;br /&gt;
[[Archivo:Figu2.jpg|miniaturadeimagen|derecha]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Definimos nuestra función fn de manera recursiva&lt;br /&gt;
for i = 1:length(n_valores)&lt;br /&gt;
    % Definir función anónima con el nombre adecuado&lt;br /&gt;
    suma=@(x) 0;&lt;br /&gt;
    for j=1: n_valores(i)&lt;br /&gt;
        suma=@(x) suma(x) + bk(j,i)*cos(j*pi*x);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['fn_' num2str(i) '=@(x) ck(1,1)+suma(x);']);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Representación gráfica de nuestras funciones para n = 1, 5, 10:&lt;br /&gt;
% n=1:&lt;br /&gt;
figure&lt;br /&gt;
subplot(1,3,1)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,f1,'b.')&lt;br /&gt;
plot(x,fn_1(x),'r--',LineWidth=2)&lt;br /&gt;
plot(xx,f2,'b.')&lt;br /&gt;
plot(xx,fn_1(xx),'r--',LineWidth=2)&lt;br /&gt;
legend('f(x)','fn(x)')&lt;br /&gt;
title('n = 1')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
% n=5:&lt;br /&gt;
subplot(1,3,2)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,f1,'b.')&lt;br /&gt;
plot(x,fn_5(x),'r--',LineWidth=2)&lt;br /&gt;
plot(xx,f2,'b.')&lt;br /&gt;
plot(xx,fn_5(xx),'r--',LineWidth=2)&lt;br /&gt;
legend('f(x)','fn(x)')&lt;br /&gt;
title('n = 5')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
% n=10: &lt;br /&gt;
subplot(1,3,3)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,f1,'b.')&lt;br /&gt;
plot(x,fn_10(x),'r--',LineWidth=2)&lt;br /&gt;
plot(xx,f2,'b.')&lt;br /&gt;
plot(xx,fn_10(xx),'r--',LineWidth=2)&lt;br /&gt;
legend('f(x)','fn(x)')&lt;br /&gt;
title('n = 10')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Aún que se aumente mucho el valor de n estas oscilaciones no desaparecen y pueden producir errores significativos a la hora de aproximar la función original. Para mitigar este efecto se pueden introducir las sumas de Cesàro,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; S_N(x) = \frac{1}{N+1} + \sum_{n=1}^N f_n(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Veamos que, en efecto, el error disminuye según aumenta la N.&lt;br /&gt;
[[Archivo:Figu3.jpg|miniaturadeimagen|derecha]]&lt;br /&gt;
{{matlab|codigo=% Cálculo de Errores:&lt;br /&gt;
    % Error en la norma L2 &lt;br /&gt;
     error_L2=zeros(1,length(n_valores));&lt;br /&gt;
&lt;br /&gt;
    for n=1:length(n_valores)&lt;br /&gt;
        % Crear la función de diferencia f_n(x)&lt;br /&gt;
        eval(['f_dif_' num2str(n) ' = @(x) abs(f(x) - fn_' num2str(n) '(x));']);&lt;br /&gt;
        &lt;br /&gt;
        % Calcular y_dif_n&lt;br /&gt;
        eval(['y_dif_' num2str(n) ' = sqrt(f_dif_' num2str(n) '(x));']);&lt;br /&gt;
        &lt;br /&gt;
        % Calcular el error L2 y almacenarlo en el arreglo error_L2&lt;br /&gt;
        eval(['error_L2(' num2str(n) ') = sqrt(trapz(x, y_dif_' num2str(n) '));']);&lt;br /&gt;
    end&lt;br /&gt;
    % Error en la norma uniforme&lt;br /&gt;
    error_uniforme=zeros(1,length(n_valores));&lt;br /&gt;
     for i=1:length(n_valores)&lt;br /&gt;
        eval(['yy_dif_' num2str(i) ' = f_dif_' num2str(i) '(x);']);&lt;br /&gt;
        eval(['error_uniforme(' num2str(i) ')= max( yy_dif_' num2str(i) ');']);&lt;br /&gt;
     end&lt;br /&gt;
        &lt;br /&gt;
% Graficamos los errores:&lt;br /&gt;
figure&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(n_valores,error_L2,'b-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('Error')&lt;br /&gt;
title('Error en la norma L^2')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(n_valores,error_uniforme,'r-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('Error')&lt;br /&gt;
title('Error en la norma uniforme')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Gráficamente, vemos como según aumenta N, la serie de Fourier ayudada por la sumas de Cesàro se aproximan cada vez mejor a &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; &lt;br /&gt;
[[Archivo:SUMASCESAROALA.png|miniaturadeimagen|derecha]]&lt;br /&gt;
{{matlab|codigo=% Estudio de las sumas de Cesàro:&lt;br /&gt;
% Definimos las Sumas de Cesàro:&lt;br /&gt;
N_valores=[1,5,10,20,50,100];&lt;br /&gt;
for i=1:length(N_valores)&lt;br /&gt;
    N=N_valores(i);&lt;br /&gt;
    suma=@(x)0;&lt;br /&gt;
    for j=1:N&lt;br /&gt;
        eval(['suma = @(x) suma(x) + fn_' num2str(j) '(x);']);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['SN_' num2str(N) '=@(x) 1/(N+1).*suma(x);'])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
figure&lt;br /&gt;
% N=1:&lt;br /&gt;
subplot(2,3,1)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,f1,'b.')&lt;br /&gt;
plot(x,SN_1(x),'r--')&lt;br /&gt;
plot(xx,f2,'b.')&lt;br /&gt;
plot(xx,SN_1(xx),'r--')&lt;br /&gt;
ylim([-0.5,1.5])&lt;br /&gt;
title('N=1')&lt;br /&gt;
legend('f(x)','SN(x)')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
% N=5:&lt;br /&gt;
subplot(2,3,2)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,f1,'b.')&lt;br /&gt;
plot(x,SN_5(x),'r--')&lt;br /&gt;
plot(xx,f2,'b.')&lt;br /&gt;
plot(xx,SN_5(xx),'r--')&lt;br /&gt;
ylim([-0.5,1.5])&lt;br /&gt;
title('N=5')&lt;br /&gt;
legend('f(x)','SN(x)')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
% N=10:&lt;br /&gt;
subplot(2,3,3)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,f1,'b.')&lt;br /&gt;
plot(x,SN_10(x),'r--')&lt;br /&gt;
plot(xx,f2,'b.')&lt;br /&gt;
plot(xx,SN_10(xx),'r--')&lt;br /&gt;
ylim([-0.5,1.5])&lt;br /&gt;
title('N=10')&lt;br /&gt;
legend('f(x)','SN(x)')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
% N=20:&lt;br /&gt;
subplot(2,3,4)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,f1,'b.')&lt;br /&gt;
plot(x,SN_20(x),'r--')&lt;br /&gt;
plot(xx,f2,'b.')&lt;br /&gt;
plot(xx,SN_20(xx),'r--')&lt;br /&gt;
ylim([-0.5,1.5])&lt;br /&gt;
title('N=20')&lt;br /&gt;
legend('f(x)','SN(x)')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
% N=50:&lt;br /&gt;
subplot(2,3,5)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,f1,'b.')&lt;br /&gt;
plot(x,SN_50(x),'r--')&lt;br /&gt;
plot(xx,f2,'b.')&lt;br /&gt;
plot(xx,SN_50(xx),'r--')&lt;br /&gt;
ylim([-0.5,1.5])&lt;br /&gt;
title('N=50')&lt;br /&gt;
legend('f(x)','SN(x)')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
% N=100:&lt;br /&gt;
subplot(2,3,6)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,f1,'b.')&lt;br /&gt;
plot(x,SN_100(x),'r--')&lt;br /&gt;
plot(xx,f2,'b.')&lt;br /&gt;
plot(xx,SN_100(xx),'r--')&lt;br /&gt;
ylim([-0.5,1.5])&lt;br /&gt;
title('N=100')&lt;br /&gt;
legend('f(x)','SN(x)')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Cambio de intervalo ==&lt;br /&gt;
Tal y como se ha expresado a lo largo del documento, podemos aproximar funciones en el intervalo compacto &amp;lt;math&amp;gt;[-T,T]&amp;lt;/math&amp;gt; pero, ¿qué ocurre con aquellos intervalos de la forma &amp;lt;math&amp;gt;[a,b]&amp;lt;/math&amp;gt;?. Debido a la periodicidad de las funciones que queremos aproximar, la serie de Fourier también se puede aproximar para intervalos de la forma [a, b] con la base &amp;lt;math&amp;gt;\{ \frac{1}{2},\cos(\frac{n \pi x}{T}),\sin(\frac{n \pi x}{T})\}_{n \in \mathbb{N}}&amp;lt;/math&amp;gt;, donde tomamos como &amp;lt;math&amp;gt; T = b - \frac{a}{2}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Para comprender mejor dicho concepto, se propone aproximar la funicon &amp;lt;math&amp;gt;f(x)=x e^{-x}&amp;lt;/math&amp;gt; en el intervalo  compacto &amp;lt;math&amp;gt;[1,3]&amp;lt;/math&amp;gt;. De esta manera obtenemos &amp;lt;math&amp;gt;T = 1&amp;lt;/math&amp;gt; y sustituimos en la base anterior generando la siguiente. A continuación se presentan tres bases con &amp;lt;math&amp;gt; n = 5, 10 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;20&amp;lt;/math&amp;gt; que aproximen dicha función. Como se observa, de nuevo se tiene que, cuanto mayor sea la &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; mejor es la aproximación.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Figu7.jpg|miniaturadeimagen|derecha]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear&lt;br /&gt;
close all&lt;br /&gt;
% DATOS:&lt;br /&gt;
a=0; b=1; c=-1; %Limites del intervalo de nuestra base trigonométrica (por periodicidad)&lt;br /&gt;
x=c:0.001:b; %Intervalo a trabajar&lt;br /&gt;
xx=1:0.001:3; %Intervalo dado por el ejercicio&lt;br /&gt;
&lt;br /&gt;
ff=@(x)x.*exp(-x); %Función dada por el ejercicio&lt;br /&gt;
f=@(x)(x+2).*exp(-x-2); %Función modificada por periodicidad&lt;br /&gt;
&lt;br /&gt;
n_valores=[5,10,20];&lt;br /&gt;
&lt;br /&gt;
% Nuestra base trigonométrica: {1/2 , cos(n*k*pi) , sen(n*k*pi)}&lt;br /&gt;
&lt;br /&gt;
% Calculamos los coeficientes de Fourier para aproximar f:&lt;br /&gt;
ak=zeros(n_valores(end),length(n_valores));&lt;br /&gt;
bk=zeros(n_valores(end),length(n_valores));&lt;br /&gt;
ck=zeros(n_valores(end),length(n_valores));&lt;br /&gt;
&lt;br /&gt;
f_sen=@(x,k) (x+2).*exp(-x-2).*sin(k*pi*x);&lt;br /&gt;
f_cos=@(x,k) (x+2).*exp(-x-2).*cos(k*pi*x);&lt;br /&gt;
f_medio=@(x,k) (x+2).*exp(-x-2).*1/2;&lt;br /&gt;
&lt;br /&gt;
for n=1:length(n_valores)&lt;br /&gt;
    %Calculamos ak, bk y ck para cada uno de los valores de n:&lt;br /&gt;
    for k=1:n_valores(n)&lt;br /&gt;
            % Vector con los valores de f_sin:&lt;br /&gt;
            y_sen=f_sen(x,k);&lt;br /&gt;
            &lt;br /&gt;
            % Vector con los valores de f_cos:&lt;br /&gt;
            y_cos=f_cos(x,k);&lt;br /&gt;
            &lt;br /&gt;
            % Vector con los valores de f_sin:&lt;br /&gt;
            y_medio=f_medio(x);&lt;br /&gt;
&lt;br /&gt;
        ak(k,n)=trapz(x,y_sen);&lt;br /&gt;
        bk(k,n)=trapz(x,y_cos);&lt;br /&gt;
        ck(k,n)=trapz(x,y_medio);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
% % disp('ak')&lt;br /&gt;
% % disp(ak)&lt;br /&gt;
% % disp('bk')&lt;br /&gt;
% % disp(bk)&lt;br /&gt;
% % disp('ck')&lt;br /&gt;
% % disp(ck)&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestras fn:&lt;br /&gt;
for i = 1:length(n_valores)&lt;br /&gt;
    % Definir función anónima con el nombre adecuado&lt;br /&gt;
    suma=@(x) 0;&lt;br /&gt;
    for j=1:i&lt;br /&gt;
        suma=@(x) suma(x) + ak(j,i)*sin(j*pi.*x)+bk(j,i)*cos(j*pi*x);&lt;br /&gt;
    end&lt;br /&gt;
    n=n_valores(i);&lt;br /&gt;
    eval(['fn_' num2str(n) '=@(x) ck(1,1)+suma(x);']);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Representación gráfica:&lt;br /&gt;
&lt;br /&gt;
figure&lt;br /&gt;
% n=5:&lt;br /&gt;
subplot(1,3,1)&lt;br /&gt;
hold on&lt;br /&gt;
plot(xx,ff(xx),'b-')&lt;br /&gt;
plot(xx,fn_5(x),'r--')&lt;br /&gt;
title('n=5')&lt;br /&gt;
legend('f(x)','fn(x)')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
% n=10:&lt;br /&gt;
subplot(1,3,2)&lt;br /&gt;
hold on&lt;br /&gt;
plot(xx,ff(xx),'b-')&lt;br /&gt;
plot(xx,fn_10(x),'r--')&lt;br /&gt;
title('n=10')&lt;br /&gt;
legend('f(x)','fn(x)')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
% n=20:&lt;br /&gt;
subplot(1,3,3)&lt;br /&gt;
hold on&lt;br /&gt;
plot(xx,ff(xx),'b-')&lt;br /&gt;
plot(xx,fn_20(x),'r--')&lt;br /&gt;
title('n=20')&lt;br /&gt;
legend('f(x)','fn(x)')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Base trigonométrica compleja ==&lt;br /&gt;
En los apartados anteriores se ha trabajado en todo momento con bases reales. Sin embargo, también se puede trabajar con bases trigonométricas complejas. De esta manera, se puede aproximar las funciones con combinaciones lineales de esta base. En concreto, la base es de la siguiente forma en el intervalo &amp;lt;math&amp;gt;[-\pi,\pi]&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\lbrace e^{inx}\rbrace_{n\in\mathbb{Z}}&amp;lt;/math&amp;gt;.&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A su vez, es necesario conocer la manera en la que se construyen los coeficientes de Fourier. En este caso, vamos a centrarnos en el espacio  L^{2}(-\pi,\pi) &amp;lt;/math&amp;gt;. De esta manera, los coeficientes son de la forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;a_n=\frac{\langle f(x),e^{inx}\rangle_{L^{2}(-\pi,\pi)}}{\lVert e^{inx}\rVert_{L^{2}(-\pi,\pi)}^{2}}=\frac{1}{2\pi}\int_{-\pi}^{\pi} f(x)\cdot e^{-inx} dx&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para comprender esto de manera óptima, se ha creado un código para calcular la base trigonométrica adaptada al intervalo [0,1] y aproximar la función con los primeros 5, 10 y 20 términos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para ello, basta, se realizará la aproximación en la base &amp;lt;math&amp;gt; L^{2}(-\frac{1}{2},\frac{1}{2}) &amp;lt;/math&amp;gt;.De esta manera, se realiza el cambio de variable que genera la base &amp;lt;math&amp;gt;\lbrace e^{i2\pi nx}\rbrace_{n\in\mathbb{Z}}&amp;lt;/math&amp;gt;. De esta manera, la base que se genera es ortonormal. A continuación se presenta el código utilizado con los resultados obtenidos.&lt;br /&gt;
[[Archivo:Fotoej5.jpg|miniaturadeimagen|derecha]]&lt;br /&gt;
{{matlab|codigo= close all&lt;br /&gt;
clear&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
f_exp = @(z, n) (exp(1i *2* pi * n * z)).*(4*(z+1/2).*(1/2-(z+1/2)).^2);&lt;br /&gt;
f=@(z) (4*(z+1/2).*(1/2-(z+1/2)).^2);&lt;br /&gt;
ff=@(z) (4*(z).*((+1/2-z).^2));&lt;br /&gt;
&lt;br /&gt;
% Intervalo a trabajar&lt;br /&gt;
xx=-0.5:0.001:0.5;&lt;br /&gt;
&lt;br /&gt;
% n=5&lt;br /&gt;
i=5;&lt;br /&gt;
&lt;br /&gt;
% Inicializar un vector para almacenar los resultados&lt;br /&gt;
ak5 = zeros(i, 1);&lt;br /&gt;
bk5 = zeros(i, 1);&lt;br /&gt;
&lt;br /&gt;
% Integrales&lt;br /&gt;
for n = 1:i&lt;br /&gt;
    ak5(n) = trapz(xx,f_exp(xx, n));&lt;br /&gt;
    bk5(n) = conj(ak5(n));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calcular a0&lt;br /&gt;
a05 = trapz(xx,f(xx));&lt;br /&gt;
&lt;br /&gt;
%Serie de fourier para n=i&lt;br /&gt;
fn_5 = @(z) a05;&lt;br /&gt;
for n=1:i&lt;br /&gt;
    fn_5= @(z) fn_5(z) + bk5(n).*exp(1i.*2*n.*pi.*z) + ak5(n).*exp(1i.*2*(-n).*pi.*z);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Mostrar los resultados&lt;br /&gt;
disp('Resultados para cada a:');&lt;br /&gt;
disp(ak5);&lt;br /&gt;
disp('Resultados para cada b:');&lt;br /&gt;
disp(bk5);&lt;br /&gt;
&lt;br /&gt;
% Gráfica&lt;br /&gt;
x = linspace(0, 1, 1000);&lt;br /&gt;
subplot(1,3,1)&lt;br /&gt;
plot(x,ff(x),'b-',LineWidth=1.5)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,fn_5(x+1/2),'r--',LineWidth=1.1)&lt;br /&gt;
legend( 'f(x)','fn(x)')&lt;br /&gt;
title('n=5')&lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
% n=10&lt;br /&gt;
i=10;&lt;br /&gt;
&lt;br /&gt;
% Inicializar un vector para almacenar los resultados&lt;br /&gt;
ak10 = zeros(i, 1);&lt;br /&gt;
bk10 = zeros(i, 1);&lt;br /&gt;
&lt;br /&gt;
% Integrales&lt;br /&gt;
for n = 1:i&lt;br /&gt;
    ak10(n) = trapz(xx,f_exp(xx, n));&lt;br /&gt;
    bk10(n) = conj(ak10(n));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calcular a0&lt;br /&gt;
a010 = trapz(xx,f(xx));&lt;br /&gt;
&lt;br /&gt;
%Serie de fourier para n=i&lt;br /&gt;
fn_10 = @(z) a010;&lt;br /&gt;
for n=1:i&lt;br /&gt;
    fn_10= @(z) fn_10(z) + bk10(n).*exp(1i.*2*n.*pi.*z) + ak10(n).*exp(1i.*2*(-n).*pi.*z);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Mostrar los resultados&lt;br /&gt;
disp('Resultados para cada a:');&lt;br /&gt;
disp(ak10);&lt;br /&gt;
disp('Resultados para cada b:');&lt;br /&gt;
disp(bk10);&lt;br /&gt;
&lt;br /&gt;
% Gráfica&lt;br /&gt;
x = linspace(0, 1, 1000);&lt;br /&gt;
subplot(1,3,2)&lt;br /&gt;
plot(x,ff(x),'b-',LineWidth=1.5)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,fn_10(x+1/2),'r--',LineWidth=1.1)&lt;br /&gt;
legend( 'f(x)','fn(x)')&lt;br /&gt;
title('n=10')&lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
% n=20&lt;br /&gt;
i=20;&lt;br /&gt;
&lt;br /&gt;
% Inicializar un vector para almacenar los resultados&lt;br /&gt;
ak20 = zeros(i, 1);&lt;br /&gt;
bk20 = zeros(i, 1);&lt;br /&gt;
&lt;br /&gt;
% Integrales&lt;br /&gt;
for n = 1:i&lt;br /&gt;
    ak20(n) = trapz(xx,f_exp(xx, n));&lt;br /&gt;
    bk20(n) = conj(ak20(n));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calcular a0&lt;br /&gt;
a020 = trapz(xx,f(xx));&lt;br /&gt;
&lt;br /&gt;
%Serie de fourier para n=i&lt;br /&gt;
fn_20 = @(z) a020;&lt;br /&gt;
for n=1:i&lt;br /&gt;
    fn_20= @(z) fn_20(z) + bk20(n).*exp(1i.*2*n.*pi.*z) + ak20(n).*exp(1i.*2*(-n).*pi.*z);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Mostrar los resultados&lt;br /&gt;
disp('Resultados para cada a:');&lt;br /&gt;
disp(ak20);&lt;br /&gt;
disp('Resultados para cada b:');&lt;br /&gt;
disp(bk20);&lt;br /&gt;
&lt;br /&gt;
% Gráfica&lt;br /&gt;
x = linspace(0, 1, 1000);&lt;br /&gt;
subplot(1,3,3)&lt;br /&gt;
plot(x,ff(x),'b-',LineWidth=1.5)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,fn_20(x+1/2),'r--',LineWidth=1.1)&lt;br /&gt;
legend( 'f(x)','fn(x)')&lt;br /&gt;
title('n=20')&lt;br /&gt;
hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Referencias ==&lt;br /&gt;
* [https://upcommons.upc.edu/bitstream/handle/2117/186594/tema_4_series_de_fourier-4725.pdf?sequence=1]&lt;br /&gt;
* [Libro de Sandro Salsa. Partial Differential Equations in Action: From Modelling to Theory]&lt;br /&gt;
* [Notas de Juan Francisco Padial Molina. Análisis Real (Grado en matemáticas - Universidad Politéctica de Madrid)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP23/24]]&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Equipo_ALA)&amp;diff=71822</id>
		<title>Series de Fourier (Equipo ALA)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Series_de_Fourier_(Equipo_ALA)&amp;diff=71822"/>
				<updated>2024-05-07T17:18:53Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: /* Aproximación de funciones discontinuas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introducción ==&lt;br /&gt;
&lt;br /&gt;
{{ TrabajoED | Series de Fourier. Equipo ALA | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Andrea Navarro Aitana Guill Lucía Amores }}&lt;br /&gt;
&lt;br /&gt;
Fue entre 1807 y 1811, mientras llevaba a cabo un estudio sobre la ecuación del calor, cuando el matemático francés Jean-Baptiste Joseph Fourier publicó el primer estudio sobre la serie que recibe su nombre, la serie de Fourier.  &lt;br /&gt;
&lt;br /&gt;
Una serie de Fourier consiste en una serie infinita y convergente puntualmente a una función continua y periódica. La gran importancia de esta radica en su increíble eficacia para aproximar funciones, pues fue el matemático quien llegó a la conclusión de que cualquier función periódica e integrable de Riemann en el intervalo [-T,T] puede escribirse como suma infinita de funciones trigonométricas. De esta manera, se da lugar a la siguiente expresión que representa la serie, donde &amp;lt;math&amp;gt; a_0,a_n, b_n \in \mathbb{R} &amp;lt;/math&amp;gt; se conocen como coeficientes de Fourier:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(x) = \frac{a_0}{2}+ \sum_{n=1}^\infty[ a_n \cos(\frac{n \pi x}{T}) +b_n\sin(\frac{n \pi x}{T})]  &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Además, los coeficientes de Fourier se obtienen de la siguiente manera.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;a_0 =\frac{1}{T}\int_{-T}^{T} f(x) dx, \hspace{30px} a_n =\frac{1}{T}\int_{-T}^{T} f(x) \cos(\frac{n \pi x}{T}) dx, \hspace{30px} b_n =\frac{1}{T}\int_{-T}^{T} f(x) \sin(\frac{n \pi x}{T}) dx  &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bases trigonométricas ==&lt;br /&gt;
&lt;br /&gt;
Tal y como se ha observado con anterioridad cualquier función periódica e integrable de Riemann en el intervalo [-T,T] puede escribirse como suma infinita de funciones trigonométricas. El primer paso para comprender este concepto es definir la base ortogonal que permite mediante combinaciones lineales de los coeficientes de Fourier aproximar cualquier función. Esta base se encuentra en el espacio de Hilbert &amp;lt;math&amp;gt;L^2([-T,T])&amp;lt;/math&amp;gt; y viene dada por &amp;lt;math&amp;gt;\{ \frac{1}{2},\cos(\frac{n \pi x}{T}),\sin(\frac{n \pi x}{T})\}_{n \in \mathbb{N}}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para comprender de manera óptima este concepto se presenta a continuación gráficamente los diez primeros términos de dicha base en el intervalo [-1,1]. Para obtener dicha representación, se ha utilizado el código que aparece posteriormente. Analíticamente, simplemente se debe sustituir la expresión de la base anterior para T=1.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Cosenobase.jpeg|350px|miniaturadeimagen|derecha|Elemento de la base:coseno]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
n=10;&lt;br /&gt;
x=-1:0.001:1;  %Intervalo de x [-1,1]&lt;br /&gt;
f=@(x,n)cos(n*pi*x);&lt;br /&gt;
g=@(x,n)sin(n*pi*x);&lt;br /&gt;
y=1/2*ones(size(x));&lt;br /&gt;
&lt;br /&gt;
% Representación del coseno&lt;br /&gt;
figure(1)&lt;br /&gt;
for i=1:n&lt;br /&gt;
    subplot(2,5,i)&lt;br /&gt;
    plot(x,f(x,i))&lt;br /&gt;
    axis square&lt;br /&gt;
    title(['n = ' num2str(i)])&lt;br /&gt;
end}}&lt;br /&gt;
[[Archivo:Seno.jpeg|350px|miniaturadeimagen|derecha|Elementos de la base:seno]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
% Representación del seno&lt;br /&gt;
figure(2)&lt;br /&gt;
for i=1:n&lt;br /&gt;
    subplot(2,5,i)&lt;br /&gt;
    plot(x,g(x,i))&lt;br /&gt;
    axis square&lt;br /&gt;
    title(['n = ' num2str(i)])&lt;br /&gt;
end}}&lt;br /&gt;
[[Archivo:Unmediobase.jpeg|350px|miniaturadeimagen|derecha|Elementos de la base:1/2]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Representación de 1/2&lt;br /&gt;
figure(3)&lt;br /&gt;
axis square&lt;br /&gt;
plot(x,y)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como se puede observar en las últimas dos, el valor de n es inversamente proporcional al periodo. Esto permite aproximarnos a la conclusión que posteriormente se enunciará de que cuanto mayor sea el valor de la n mejor aproximación de la función se obtendrá.&lt;br /&gt;
&lt;br /&gt;
== Aproximación de funciones continuas ==&lt;br /&gt;
Tal y como se ha enunciado anteriormente, la gran importancia de las series de Fourier radica en su increíble eficacia para aproximar funciones periódicas. A su vez, se va a realizar un análisis de como extender funciones continuas en el intervalo [0, T] al intervalo [-T, T] y que estas sigan siendo continuas. De esta manera solo se utilizaría para su aproximación las funciones pares o impares de las bases.&lt;br /&gt;
&lt;br /&gt;
En primer lugar se debe diferenciar que ocurre cuando la extensión es impar o par. En el primer caso, la aproximación simplemente se realiza utilizando los elementos de la base del seno, con sus respectivos coeficientes de Fourier, pues los del coseno y &amp;lt;math&amp;gt;\ \frac{1}{2}&amp;lt;/math&amp;gt; se anulan.&lt;br /&gt;
&lt;br /&gt;
A continuación, veremos un ejemplo sobre ello. Consideremos la función a aproximar &amp;lt;math&amp;gt; f(x) = x(1-x) &amp;lt;/math&amp;gt; en el intervalo [0,1]. Esta función se aproxima por extensión impar, en efecto, ejecutando las siguientes líneas de código vemos como los coeficientes pares son nulos. Cabe mencionar que los coeficientes de Fourier no se han calculado por integración, sino que se han aproximado utilizando la fórmula del trapecio. &lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear&lt;br /&gt;
close all&lt;br /&gt;
format long&lt;br /&gt;
% Límites de integración:&lt;br /&gt;
a=0;&lt;br /&gt;
b=1;&lt;br /&gt;
c=-1;&lt;br /&gt;
% División de los puntos del intervalo:&lt;br /&gt;
tolerancia= 1e-3;&lt;br /&gt;
% Intervalo&lt;br /&gt;
x=a:0.001:b;&lt;br /&gt;
xx=c:0.001:a;&lt;br /&gt;
% Valores de n almacenados en una lista:&lt;br /&gt;
n_valores=1:1:100;&lt;br /&gt;
&lt;br /&gt;
% Funciones a integrar:&lt;br /&gt;
    % f:&lt;br /&gt;
f_cos_1=@(x,k)x.*(1-x).*cos(k*pi*x);&lt;br /&gt;
f_sin_1=@(x,k)x.*(1-x).*sin(k*pi*x);&lt;br /&gt;
f_medio_1=@(x,k)x.*(1-x).*1/2;&lt;br /&gt;
    % Extensión de f:&lt;br /&gt;
f_cos_2=@(x,k)x.*(1+x).*cos(k*pi*x);&lt;br /&gt;
f_sin_2=@(x,k)x.*(1+x).*sin(k*pi*x);&lt;br /&gt;
f_medio_2=@(x,k)x.*(1+x).*1/2;&lt;br /&gt;
% Función a aproximar:&lt;br /&gt;
g=@(x)x.*(1-x);&lt;br /&gt;
g_impar=@(x)x.*(1+x);&lt;br /&gt;
% Inicializamos una matriz de 0 para almacenar los valores de ak&lt;br /&gt;
% (coeficientes asociados al seno): &lt;br /&gt;
ak=zeros(n_valores(end),length(n_valores));&lt;br /&gt;
aak=zeros(n_valores(end),length(n_valores));&lt;br /&gt;
% Inicializamos una matriz de 0 para almacenar los valores de bk&lt;br /&gt;
% (coeficientes asociados al coseno): &lt;br /&gt;
bk=zeros(n_valores(end), length(n_valores));&lt;br /&gt;
% Inicializamos una matriz de 0 para almacenar los valores de ck&lt;br /&gt;
% (coeficientes asociados a 1/2): &lt;br /&gt;
ck=zeros(n_valores(end), length(n_valores));&lt;br /&gt;
&lt;br /&gt;
for n=1:length(n_valores)&lt;br /&gt;
    %Calculamos ak, bk y ck para cada uno de los valores de n:&lt;br /&gt;
    for k=1:n_valores(n)&lt;br /&gt;
            % Vector con los valores de f_sin:&lt;br /&gt;
            y_sin_1=f_sin_1(x,k);&lt;br /&gt;
            y_sin_2=f_sin_2(xx,k);&lt;br /&gt;
            &lt;br /&gt;
            % Vector con los valores de f_cos:&lt;br /&gt;
            y_cos_1=f_cos_1(x,k);&lt;br /&gt;
            y_cos_2=f_cos_2(xx,k);&lt;br /&gt;
            &lt;br /&gt;
            % Vector con los valores de f_sin:&lt;br /&gt;
            y_medio_1=f_medio_1(x);&lt;br /&gt;
            y_medio_2=f_medio_2(xx);&lt;br /&gt;
&lt;br /&gt;
        ak(k,n)=trapz(x,y_sin_1)+trapz(xx,y_sin_2);&lt;br /&gt;
        aak(k,n)=2*trapz(x,y_sin_1);&lt;br /&gt;
        bk(k,n)=trapz(x,y_cos_1)+trapz(xx,y_cos_2);&lt;br /&gt;
        ck(k,n)=trapz(x,y_medio_1)+trapz(xx,y_medio_2);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Visualización de resultados: &lt;br /&gt;
    % (Nota: las columnas guardan los valores para n= 1, 5, 10&lt;br /&gt;
    % respectivamente y las filas los coeficientes ak, bk, ck siendo k la&lt;br /&gt;
    % fila.)&lt;br /&gt;
% disp('ak (coeficientes asociados al seno)')&lt;br /&gt;
% disp(ak)&lt;br /&gt;
% disp('aak (coeficientes asociados al seno (simetría))')&lt;br /&gt;
% disp(aak)&lt;br /&gt;
% disp('bk (coeficientes asociados al coseno)')&lt;br /&gt;
% disp(bk)&lt;br /&gt;
% disp('ck (coeficientes asociados a 1/2)')&lt;br /&gt;
% disp(ck)&lt;br /&gt;
}}&lt;br /&gt;
Luego, la función que aproximará f(x) tiene la forma,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f(x) = \sum_{k=1}^n b_k \sin(k \pi x)&amp;lt;/math&amp;gt;   donde   &amp;lt;math&amp;gt; b_k = 2 \int_{0}^{1} f(x)sin(k \pi x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En las siguientes gráficas apreciamos como según crece n, &amp;lt;math&amp;gt; f_n(x)&amp;lt;/math&amp;gt; se va acercando más a la función original f(x). En concreto se muestran los casos para n = 1, 5 y 10. &lt;br /&gt;
[[Archivo:Apartado21.jpg|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
En el caso de que la extensión sea par la función se aproxima utilizando los elementos del coseno y el &amp;lt;math&amp;gt;\ \frac{1}{2}&amp;lt;/math&amp;gt; con sus respectivos coeficientes de Fourier, pues los del seno se anulan.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=% Definimos la función fn &lt;br /&gt;
&lt;br /&gt;
for i = 1:length(n_valores)&lt;br /&gt;
    % Definir función anónima con el nombre adecuado&lt;br /&gt;
    suma=@(x) 0;&lt;br /&gt;
    for j=1:i&lt;br /&gt;
        suma=@(x) suma(x) + ak(j,i)*sin(j*pi*x);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['fn_' num2str(i) '=@(x) suma(x);']);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Representación gráfica de fn:&lt;br /&gt;
figure&lt;br /&gt;
subplot(3,1,1)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,g(x),'b')&lt;br /&gt;
plot(x,fn_1(x),'r--')&lt;br /&gt;
plot(xx,g_impar(xx),'b')&lt;br /&gt;
plot(xx,fn_1(xx),'r--')&lt;br /&gt;
legend('f(x)','fn(x)')&lt;br /&gt;
title('n = 1')&lt;br /&gt;
hold off&lt;br /&gt;
% Para n=5:&lt;br /&gt;
ak_5=zeros(5,1);&lt;br /&gt;
for i=1:5&lt;br /&gt;
    ak_5(i)=aak(i,2);&lt;br /&gt;
end&lt;br /&gt;
subplot(3,1,2)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,g(x),'b')&lt;br /&gt;
plot(x,fn_5(x),'r--')&lt;br /&gt;
plot(xx,g_impar(xx),'b')&lt;br /&gt;
plot(xx,fn_5(xx),'r--')&lt;br /&gt;
legend('f(x)','fn(x)')&lt;br /&gt;
title('n = 5')&lt;br /&gt;
hold off&lt;br /&gt;
% Para n=10:&lt;br /&gt;
subplot(3,1,3)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,g(x),'b')&lt;br /&gt;
plot(x,fn_10(x),'r--')&lt;br /&gt;
plot(xx,g_impar(xx),'b')&lt;br /&gt;
plot(xx,fn_10(xx),'r--')&lt;br /&gt;
legend('f(x)','fn(x)')&lt;br /&gt;
title('n = 10')&lt;br /&gt;
hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Esto también se puede ver claramente si calculamos el error que se comete entre f(x) y &amp;lt;math&amp;gt; f_n(x)&amp;lt;/math&amp;gt; para cada n. Se muestran dos gráficas donde se representan los errores para n = 1, 5 y 10 con las normas  L^2 y uniforme. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:Apartado22.jpg|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= % Cálculo de Errores:&lt;br /&gt;
    % Error en la norma L2 &lt;br /&gt;
     error_L2=zeros(1,length(n_valores));&lt;br /&gt;
&lt;br /&gt;
    for n=1:length(n_valores)&lt;br /&gt;
        % Crear la función de diferencia f_n(x)&lt;br /&gt;
        eval(['f_dif_' num2str(n) ' = @(x) abs(g(x) - fn_' num2str(n) '(x));']);&lt;br /&gt;
        &lt;br /&gt;
        % Calcular y_dif_n&lt;br /&gt;
        eval(['y_dif_' num2str(n) ' = sqrt(f_dif_' num2str(n) '(x));']);&lt;br /&gt;
        &lt;br /&gt;
        % Calcular el error L2 y almacenarlo en el arreglo error_L2&lt;br /&gt;
        eval(['error_L2(' num2str(n) ') = sqrt(trapz(x, y_dif_' num2str(n) '));']);&lt;br /&gt;
    end&lt;br /&gt;
    % Error en la norma uniforme&lt;br /&gt;
    error_uniforme=zeros(1,length(n_valores));&lt;br /&gt;
     for i=1:length(n_valores)&lt;br /&gt;
        eval(['yy_dif_' num2str(i) ' = f_dif_' num2str(i) '(x);']);&lt;br /&gt;
        eval(['error_uniforme(' num2str(i) ')= max( yy_dif_' num2str(i) ');']);&lt;br /&gt;
     end&lt;br /&gt;
        &lt;br /&gt;
% Graficamos los errores:&lt;br /&gt;
figure&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(n_valores,error_L2,'b-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('Error')&lt;br /&gt;
title('Error en la norma L^2')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(n_valores,error_uniforme,'r-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('Error')&lt;br /&gt;
title('Error en la norma uniforme')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Aproximación de funciones discontinuas ==&lt;br /&gt;
Como se ha mencionado anteriormente las series de Fourier convergen a una función continua. Sin embargo, ¿cómo hacemos para aproximar funciones no estrictamente continuas?. Esta cuestión se resuelve teniendo en cuenta la condición de Dirichlet. Esta indica el intervalo  &amp;lt;math&amp;gt;[-\pi,\pi]&amp;lt;/math&amp;gt; se puede dividir en un conjunto de subintervalos finitos en los cuales la función es monótona, si la función es continua salvo en un número finito de puntos con discontinuidad de salto finito.&lt;br /&gt;
&lt;br /&gt;
Nos apoyaremos entonces en el siguiente teorema.&lt;br /&gt;
&lt;br /&gt;
==== Teorema ==== &lt;br /&gt;
Si &amp;lt;math&amp;gt; f \in L^2 ([-\pi,\pi]) &amp;lt;/math&amp;gt;  y verifica la condición de Dirichlet entonces la serie de Fourier converge puntualmente en los puntos de continuidad. Es decir:  &lt;br /&gt;
* Si &amp;lt;math&amp;gt; x_0 &amp;lt;/math&amp;gt; es un punto de continuidad entonces, &amp;lt;math&amp;gt; f(x_0)=lim_{n\to\infty}\{\frac{a_0}{2}+ \sum_{n=1}^\infty[ a_n \sin(n \pi x) +b_n \cos(n\pi x)]\} &amp;lt;/math&amp;gt; .&lt;br /&gt;
* Si &amp;lt;math&amp;gt; x_0 &amp;lt;/math&amp;gt; es un punto de discontinuidad entonces la serie converge en &amp;lt;math&amp;gt; x_0 &amp;lt;/math&amp;gt; a &amp;lt;math&amp;gt; \frac{f(x_0^-) + f(x_0^+)}{2} &amp;lt;/math&amp;gt;&lt;br /&gt;
En &amp;lt;math&amp;gt;-\pi&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;\pi&amp;lt;/math&amp;gt; la serie converge a &amp;lt;math&amp;gt; \frac{f(\pi) + f(-\pi)}{2} &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Consideremos la función discontinua &amp;lt;math&amp;gt;f(x) = 1_{x\leq \frac{1}{2}}(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Figu1.jpg|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
hagamos su extensión al intervalo &amp;lt;math&amp;gt; [-1,1]&amp;lt;/math&amp;gt;. Primero observamos ejecutando las siguientes líneas de código que esta función se extiende de forma par. &lt;br /&gt;
 &lt;br /&gt;
{{matlab|codigo=clear &lt;br /&gt;
close all&lt;br /&gt;
format long&lt;br /&gt;
% Límites de integración:&lt;br /&gt;
a=0;&lt;br /&gt;
b=1;&lt;br /&gt;
c=-1;&lt;br /&gt;
% División de los puntos del intervalo:&lt;br /&gt;
tolerancia= 1e-3;&lt;br /&gt;
% Intervalo&lt;br /&gt;
x=a:0.001:b;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función f:&lt;br /&gt;
f1=zeros(length(x),1);&lt;br /&gt;
for i=1:length(x)&lt;br /&gt;
    if x(i)&amp;lt;=1/2&lt;br /&gt;
        f1(i)=1;&lt;br /&gt;
    else&lt;br /&gt;
        f1(i)=0;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
% Extensión 'par':&lt;br /&gt;
xx=c:0.001:a; % Intervalo de extensión&lt;br /&gt;
f2=zeros(length(xx),1);&lt;br /&gt;
for i=1:length(xx)&lt;br /&gt;
    if xx(i)&amp;gt;=-1/2&lt;br /&gt;
        f2(i)=1;&lt;br /&gt;
    else&lt;br /&gt;
        f2(i)=0;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Otra forma de definir la función característica, usando funciones de&lt;br /&gt;
% matlab:&lt;br /&gt;
&lt;br /&gt;
% Definir la función discontinua original&lt;br /&gt;
f = @(x) double(x &amp;gt;= 0 &amp;amp; x &amp;lt;= 1/2);&lt;br /&gt;
&lt;br /&gt;
% Definir la extensión par de la función a [-1, 1]&lt;br /&gt;
    %%%f_par = @(x) double(abs(mod(-x, 2)) &amp;lt;= 1/2);&lt;br /&gt;
f_par=@(x)double(x &amp;lt;= 0 &amp;amp; x &amp;gt;= -1/2);&lt;br /&gt;
&lt;br /&gt;
%%% Representación gráfica de la función característica:&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,f1,'b.')&lt;br /&gt;
plot(xx,f2,'b.')&lt;br /&gt;
hold off&lt;br /&gt;
legend('f(x)')&lt;br /&gt;
xlim([-1,1])&lt;br /&gt;
ylim([-0.5,1.5])&lt;br /&gt;
axis square&lt;br /&gt;
&lt;br /&gt;
% Valores de n almacenados en una lista:&lt;br /&gt;
n_valores=1:1:100;&lt;br /&gt;
&lt;br /&gt;
% Funciones a integrar (coeficientes de Fourier):&lt;br /&gt;
f_sin_1=@(x,k) double(x &amp;gt;= 0 &amp;amp; x &amp;lt;= 1/2).*sin(k*pi*x);&lt;br /&gt;
f_sin_2=@(x,k) double(x &amp;lt;= 0 &amp;amp; x &amp;gt;= -1/2).*sin(k*pi*x);&lt;br /&gt;
f_cos_1=@(x,k) double(x &amp;gt;= 0 &amp;amp; x &amp;lt;= 1/2).*cos(k*pi*x);&lt;br /&gt;
f_cos_2=@(x,k) double(x &amp;lt;= 0 &amp;amp; x &amp;gt;= -1/2).*cos(k*pi*x);&lt;br /&gt;
f_medio_1=@(x,k) double(x &amp;gt;= 0 &amp;amp; x &amp;lt;= 1/2).*1/2;&lt;br /&gt;
f_medio_2=@(x,k) double(x &amp;lt;= 0 &amp;amp; x &amp;gt;= -1/2).*1/2;&lt;br /&gt;
&lt;br /&gt;
% Cálculo de los coeficientes de Fourier:&lt;br /&gt;
% Inicializamos una matriz de 0 para almacenar los valores de ak&lt;br /&gt;
% (coeficientes asociados al seno): &lt;br /&gt;
ak=zeros(n_valores(end),length(n_valores));&lt;br /&gt;
% Inicializamos una matriz de 0 para almacenar los valores de bk&lt;br /&gt;
% (coeficientes asociados al coseno): &lt;br /&gt;
bk=zeros(n_valores(end), length(n_valores));&lt;br /&gt;
% Inicializamos una matriz de 0 para almacenar los valores de ck&lt;br /&gt;
% (coeficientes asociados a 1/2): &lt;br /&gt;
ck=zeros(n_valores(end), length(n_valores));&lt;br /&gt;
&lt;br /&gt;
for n=1:length(n_valores)&lt;br /&gt;
    %Calculamos ak, bk y ck para cada uno de los valores de n:&lt;br /&gt;
    for k=1:n_valores(n)&lt;br /&gt;
            % Vector con los valores de f_sin:&lt;br /&gt;
            y_sin_1=f_sin_1(x,k);&lt;br /&gt;
            y_sin_2=f_sin_2(xx,k);&lt;br /&gt;
            &lt;br /&gt;
            % Vector con los valores de f_cos:&lt;br /&gt;
            y_cos_1=f_cos_1(x,k);&lt;br /&gt;
            y_cos_2=f_cos_2(xx,k);&lt;br /&gt;
            &lt;br /&gt;
            % Vector con los valores de f_sin:&lt;br /&gt;
            y_medio_1=f_medio_1(x,k);&lt;br /&gt;
            y_medio_2=f_medio_2(xx,k);&lt;br /&gt;
&lt;br /&gt;
        ak(k,n)=trapz(x,y_sin_1)+trapz(xx,y_sin_2);&lt;br /&gt;
        bk(k,n)=trapz(x,y_cos_1)+trapz(xx,y_cos_2);&lt;br /&gt;
        ck(k,n)=trapz(x,y_medio_1)+trapz(xx,y_medio_2);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Visualización de resultados: &lt;br /&gt;
    % (Nota: las columnas guardan los valores para n= 1, 5, 10&lt;br /&gt;
    % respectivamente y las filas los coeficientes ak, bk, ck siendo k la&lt;br /&gt;
    % fila.)&lt;br /&gt;
% disp('ak (coeficientes asociados al seno)')&lt;br /&gt;
% disp(ak)&lt;br /&gt;
% disp('bk (coeficientes asociados al coseno)')&lt;br /&gt;
% disp(bk)&lt;br /&gt;
% disp('ck (coeficientes asociados a 1/2)')&lt;br /&gt;
% disp(ck)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Entonces la función &amp;lt;math&amp;gt;f_n&amp;lt;/math&amp;gt; que aproximará a &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; tiene la forma&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; f_n(x) = \frac{a_0}{2}+ \sum_{k=1}^n a_k \cos(k \pi x)) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si dibujamos &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f_n&amp;lt;/math&amp;gt; aparecen en las discontinuidades de salto oscilaciones las cuales se conocen como el fenómeno de Gibbs. &lt;br /&gt;
[[Archivo:Figu2.jpg|miniaturadeimagen|derecha]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Definimos nuestra función fn de manera recursiva&lt;br /&gt;
for i = 1:length(n_valores)&lt;br /&gt;
    % Definir función anónima con el nombre adecuado&lt;br /&gt;
    suma=@(x) 0;&lt;br /&gt;
    for j=1: n_valores(i)&lt;br /&gt;
        suma=@(x) suma(x) + bk(j,i)*cos(j*pi*x);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['fn_' num2str(i) '=@(x) ck(1,1)+suma(x);']);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Representación gráfica de nuestras funciones para n = 1, 5, 10:&lt;br /&gt;
% n=1:&lt;br /&gt;
figure&lt;br /&gt;
subplot(1,3,1)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,f1,'b.')&lt;br /&gt;
plot(x,fn_1(x),'r--',LineWidth=2)&lt;br /&gt;
plot(xx,f2,'b.')&lt;br /&gt;
plot(xx,fn_1(xx),'r--',LineWidth=2)&lt;br /&gt;
legend('f(x)','fn(x)')&lt;br /&gt;
title('n = 1')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
% n=5:&lt;br /&gt;
subplot(1,3,2)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,f1,'b.')&lt;br /&gt;
plot(x,fn_5(x),'r--',LineWidth=2)&lt;br /&gt;
plot(xx,f2,'b.')&lt;br /&gt;
plot(xx,fn_5(xx),'r--',LineWidth=2)&lt;br /&gt;
legend('f(x)','fn(x)')&lt;br /&gt;
title('n = 5')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
% n=10: &lt;br /&gt;
subplot(1,3,3)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,f1,'b.')&lt;br /&gt;
plot(x,fn_10(x),'r--',LineWidth=2)&lt;br /&gt;
plot(xx,f2,'b.')&lt;br /&gt;
plot(xx,fn_10(xx),'r--',LineWidth=2)&lt;br /&gt;
legend('f(x)','fn(x)')&lt;br /&gt;
title('n = 10')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Aún que se aumente mucho el valor de n estas oscilaciones no desaparecen y pueden producir errores significativos a la hora de aproximar la función original. Para mitigar este efecto se pueden introducir las sumas de Cesàro,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; S_N(x) = \frac{1}{N+1} + \sum_{n=1}^N f_n(x) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Veamos que, en efecto, el error disminuye según aumenta la N.&lt;br /&gt;
[[Archivo:Figu3.jpg|miniaturadeimagen|derecha]]&lt;br /&gt;
{{matlab|codigo=% Cálculo de Errores:&lt;br /&gt;
    % Error en la norma L2 &lt;br /&gt;
     error_L2=zeros(1,length(n_valores));&lt;br /&gt;
&lt;br /&gt;
    for n=1:length(n_valores)&lt;br /&gt;
        % Crear la función de diferencia f_n(x)&lt;br /&gt;
        eval(['f_dif_' num2str(n) ' = @(x) abs(f(x) - fn_' num2str(n) '(x));']);&lt;br /&gt;
        &lt;br /&gt;
        % Calcular y_dif_n&lt;br /&gt;
        eval(['y_dif_' num2str(n) ' = sqrt(f_dif_' num2str(n) '(x));']);&lt;br /&gt;
        &lt;br /&gt;
        % Calcular el error L2 y almacenarlo en el arreglo error_L2&lt;br /&gt;
        eval(['error_L2(' num2str(n) ') = sqrt(trapz(x, y_dif_' num2str(n) '));']);&lt;br /&gt;
    end&lt;br /&gt;
    % Error en la norma uniforme&lt;br /&gt;
    error_uniforme=zeros(1,length(n_valores));&lt;br /&gt;
     for i=1:length(n_valores)&lt;br /&gt;
        eval(['yy_dif_' num2str(i) ' = f_dif_' num2str(i) '(x);']);&lt;br /&gt;
        eval(['error_uniforme(' num2str(i) ')= max( yy_dif_' num2str(i) ');']);&lt;br /&gt;
     end&lt;br /&gt;
        &lt;br /&gt;
% Graficamos los errores:&lt;br /&gt;
figure&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(n_valores,error_L2,'b-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('Error')&lt;br /&gt;
title('Error en la norma L^2')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(n_valores,error_uniforme,'r-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('Error')&lt;br /&gt;
title('Error en la norma uniforme')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Gráficamente, vemos como según aumenta N, la serie de Fourier ayudada por la sumas de Cesàro se aproximan cada vez mejor a &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; &lt;br /&gt;
[[Archivo:SUMASCESAROALA.jpg|miniaturadeimagen|derecha]]&lt;br /&gt;
{{matlab|codigo=% Estudio de las sumas de Cesàro:&lt;br /&gt;
% Definimos las Sumas de Cesàro:&lt;br /&gt;
N_valores=[1,5,10,20,50,100];&lt;br /&gt;
for i=1:length(N_valores)&lt;br /&gt;
    N=N_valores(i);&lt;br /&gt;
    suma=@(x)0;&lt;br /&gt;
    for j=1:N&lt;br /&gt;
        eval(['suma = @(x) suma(x) + fn_' num2str(j) '(x);']);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['SN_' num2str(N) '=@(x) 1/(N+1).*suma(x);'])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
figure&lt;br /&gt;
% N=1:&lt;br /&gt;
subplot(2,3,1)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,f1,'b.')&lt;br /&gt;
plot(x,SN_1(x),'r--')&lt;br /&gt;
plot(xx,f2,'b.')&lt;br /&gt;
plot(xx,SN_1(xx),'r--')&lt;br /&gt;
ylim([-0.5,1.5])&lt;br /&gt;
title('N=1')&lt;br /&gt;
legend('f(x)','SN(x)')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
% N=5:&lt;br /&gt;
subplot(2,3,2)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,f1,'b.')&lt;br /&gt;
plot(x,SN_5(x),'r--')&lt;br /&gt;
plot(xx,f2,'b.')&lt;br /&gt;
plot(xx,SN_5(xx),'r--')&lt;br /&gt;
ylim([-0.5,1.5])&lt;br /&gt;
title('N=5')&lt;br /&gt;
legend('f(x)','SN(x)')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
% N=10:&lt;br /&gt;
subplot(2,3,3)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,f1,'b.')&lt;br /&gt;
plot(x,SN_10(x),'r--')&lt;br /&gt;
plot(xx,f2,'b.')&lt;br /&gt;
plot(xx,SN_10(xx),'r--')&lt;br /&gt;
ylim([-0.5,1.5])&lt;br /&gt;
title('N=10')&lt;br /&gt;
legend('f(x)','SN(x)')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
% N=20:&lt;br /&gt;
subplot(2,3,4)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,f1,'b.')&lt;br /&gt;
plot(x,SN_20(x),'r--')&lt;br /&gt;
plot(xx,f2,'b.')&lt;br /&gt;
plot(xx,SN_20(xx),'r--')&lt;br /&gt;
ylim([-0.5,1.5])&lt;br /&gt;
title('N=20')&lt;br /&gt;
legend('f(x)','SN(x)')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
% N=50:&lt;br /&gt;
subplot(2,3,5)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,f1,'b.')&lt;br /&gt;
plot(x,SN_50(x),'r--')&lt;br /&gt;
plot(xx,f2,'b.')&lt;br /&gt;
plot(xx,SN_50(xx),'r--')&lt;br /&gt;
ylim([-0.5,1.5])&lt;br /&gt;
title('N=50')&lt;br /&gt;
legend('f(x)','SN(x)')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
% N=100:&lt;br /&gt;
subplot(2,3,6)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,f1,'b.')&lt;br /&gt;
plot(x,SN_100(x),'r--')&lt;br /&gt;
plot(xx,f2,'b.')&lt;br /&gt;
plot(xx,SN_100(xx),'r--')&lt;br /&gt;
ylim([-0.5,1.5])&lt;br /&gt;
title('N=100')&lt;br /&gt;
legend('f(x)','SN(x)')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Cambio de intervalo ==&lt;br /&gt;
Tal y como se ha expresado a lo largo del documento, podemos aproximar funciones en el intervalo compacto &amp;lt;math&amp;gt;[-T,T]&amp;lt;/math&amp;gt; pero, ¿qué ocurre con aquellos intervalos de la forma &amp;lt;math&amp;gt;[a,b]&amp;lt;/math&amp;gt;?. Debido a la periodicidad de las funciones que queremos aproximar, la serie de Fourier también se puede aproximar para intervalos de la forma [a, b] con la base &amp;lt;math&amp;gt;\{ \frac{1}{2},\cos(\frac{n \pi x}{T}),\sin(\frac{n \pi x}{T})\}_{n \in \mathbb{N}}&amp;lt;/math&amp;gt;, donde tomamos como &amp;lt;math&amp;gt; T = b - \frac{a}{2}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Para comprender mejor dicho concepto, se propone aproximar la funicon &amp;lt;math&amp;gt;f(x)=x e^{-x}&amp;lt;/math&amp;gt; en el intervalo  compacto &amp;lt;math&amp;gt;[1,3]&amp;lt;/math&amp;gt;. De esta manera obtenemos &amp;lt;math&amp;gt;T = 1&amp;lt;/math&amp;gt; y sustituimos en la base anterior generando la siguiente. A continuación se presentan tres bases con &amp;lt;math&amp;gt; n = 5, 10 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;20&amp;lt;/math&amp;gt; que aproximen dicha función. Como se observa, de nuevo se tiene que, cuanto mayor sea la &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; mejor es la aproximación.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Figu7.jpg|miniaturadeimagen|derecha]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear&lt;br /&gt;
close all&lt;br /&gt;
% DATOS:&lt;br /&gt;
a=0; b=1; c=-1; %Limites del intervalo de nuestra base trigonométrica (por periodicidad)&lt;br /&gt;
x=c:0.001:b; %Intervalo a trabajar&lt;br /&gt;
xx=1:0.001:3; %Intervalo dado por el ejercicio&lt;br /&gt;
&lt;br /&gt;
ff=@(x)x.*exp(-x); %Función dada por el ejercicio&lt;br /&gt;
f=@(x)(x+2).*exp(-x-2); %Función modificada por periodicidad&lt;br /&gt;
&lt;br /&gt;
n_valores=[5,10,20];&lt;br /&gt;
&lt;br /&gt;
% Nuestra base trigonométrica: {1/2 , cos(n*k*pi) , sen(n*k*pi)}&lt;br /&gt;
&lt;br /&gt;
% Calculamos los coeficientes de Fourier para aproximar f:&lt;br /&gt;
ak=zeros(n_valores(end),length(n_valores));&lt;br /&gt;
bk=zeros(n_valores(end),length(n_valores));&lt;br /&gt;
ck=zeros(n_valores(end),length(n_valores));&lt;br /&gt;
&lt;br /&gt;
f_sen=@(x,k) (x+2).*exp(-x-2).*sin(k*pi*x);&lt;br /&gt;
f_cos=@(x,k) (x+2).*exp(-x-2).*cos(k*pi*x);&lt;br /&gt;
f_medio=@(x,k) (x+2).*exp(-x-2).*1/2;&lt;br /&gt;
&lt;br /&gt;
for n=1:length(n_valores)&lt;br /&gt;
    %Calculamos ak, bk y ck para cada uno de los valores de n:&lt;br /&gt;
    for k=1:n_valores(n)&lt;br /&gt;
            % Vector con los valores de f_sin:&lt;br /&gt;
            y_sen=f_sen(x,k);&lt;br /&gt;
            &lt;br /&gt;
            % Vector con los valores de f_cos:&lt;br /&gt;
            y_cos=f_cos(x,k);&lt;br /&gt;
            &lt;br /&gt;
            % Vector con los valores de f_sin:&lt;br /&gt;
            y_medio=f_medio(x);&lt;br /&gt;
&lt;br /&gt;
        ak(k,n)=trapz(x,y_sen);&lt;br /&gt;
        bk(k,n)=trapz(x,y_cos);&lt;br /&gt;
        ck(k,n)=trapz(x,y_medio);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
% % disp('ak')&lt;br /&gt;
% % disp(ak)&lt;br /&gt;
% % disp('bk')&lt;br /&gt;
% % disp(bk)&lt;br /&gt;
% % disp('ck')&lt;br /&gt;
% % disp(ck)&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestras fn:&lt;br /&gt;
for i = 1:length(n_valores)&lt;br /&gt;
    % Definir función anónima con el nombre adecuado&lt;br /&gt;
    suma=@(x) 0;&lt;br /&gt;
    for j=1:i&lt;br /&gt;
        suma=@(x) suma(x) + ak(j,i)*sin(j*pi.*x)+bk(j,i)*cos(j*pi*x);&lt;br /&gt;
    end&lt;br /&gt;
    n=n_valores(i);&lt;br /&gt;
    eval(['fn_' num2str(n) '=@(x) ck(1,1)+suma(x);']);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Representación gráfica:&lt;br /&gt;
&lt;br /&gt;
figure&lt;br /&gt;
% n=5:&lt;br /&gt;
subplot(1,3,1)&lt;br /&gt;
hold on&lt;br /&gt;
plot(xx,ff(xx),'b-')&lt;br /&gt;
plot(xx,fn_5(x),'r--')&lt;br /&gt;
title('n=5')&lt;br /&gt;
legend('f(x)','fn(x)')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
% n=10:&lt;br /&gt;
subplot(1,3,2)&lt;br /&gt;
hold on&lt;br /&gt;
plot(xx,ff(xx),'b-')&lt;br /&gt;
plot(xx,fn_10(x),'r--')&lt;br /&gt;
title('n=10')&lt;br /&gt;
legend('f(x)','fn(x)')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
% n=20:&lt;br /&gt;
subplot(1,3,3)&lt;br /&gt;
hold on&lt;br /&gt;
plot(xx,ff(xx),'b-')&lt;br /&gt;
plot(xx,fn_20(x),'r--')&lt;br /&gt;
title('n=20')&lt;br /&gt;
legend('f(x)','fn(x)')&lt;br /&gt;
axis square&lt;br /&gt;
hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Base trigonométrica compleja ==&lt;br /&gt;
En los apartados anteriores se ha trabajado en todo momento con bases reales. Sin embargo, también se puede trabajar con bases trigonométricas complejas. De esta manera, se puede aproximar las funciones con combinaciones lineales de esta base. En concreto, la base es de la siguiente forma en el intervalo &amp;lt;math&amp;gt;[-\pi,\pi]&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\lbrace e^{inx}\rbrace_{n\in\mathbb{Z}}&amp;lt;/math&amp;gt;.&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A su vez, es necesario conocer la manera en la que se construyen los coeficientes de Fourier. En este caso, vamos a centrarnos en el espacio  L^{2}(-\pi,\pi) &amp;lt;/math&amp;gt;. De esta manera, los coeficientes son de la forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;a_n=\frac{\langle f(x),e^{inx}\rangle_{L^{2}(-\pi,\pi)}}{\lVert e^{inx}\rVert_{L^{2}(-\pi,\pi)}^{2}}=\frac{1}{2\pi}\int_{-\pi}^{\pi} f(x)\cdot e^{-inx} dx&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para comprender esto de manera óptima, se ha creado un código para calcular la base trigonométrica adaptada al intervalo [0,1] y aproximar la función con los primeros 5, 10 y 20 términos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para ello, basta, se realizará la aproximación en la base &amp;lt;math&amp;gt; L^{2}(-\frac{1}{2},\frac{1}{2}) &amp;lt;/math&amp;gt;.De esta manera, se realiza el cambio de variable que genera la base &amp;lt;math&amp;gt;\lbrace e^{i2\pi nx}\rbrace_{n\in\mathbb{Z}}&amp;lt;/math&amp;gt;. De esta manera, la base que se genera es ortonormal. A continuación se presenta el código utilizado con los resultados obtenidos.&lt;br /&gt;
[[Archivo:Fotoej5.jpg|miniaturadeimagen|derecha]]&lt;br /&gt;
{{matlab|codigo= close all&lt;br /&gt;
clear&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
f_exp = @(z, n) (exp(1i *2* pi * n * z)).*(4*(z+1/2).*(1/2-(z+1/2)).^2);&lt;br /&gt;
f=@(z) (4*(z+1/2).*(1/2-(z+1/2)).^2);&lt;br /&gt;
ff=@(z) (4*(z).*((+1/2-z).^2));&lt;br /&gt;
&lt;br /&gt;
% Intervalo a trabajar&lt;br /&gt;
xx=-0.5:0.001:0.5;&lt;br /&gt;
&lt;br /&gt;
% n=5&lt;br /&gt;
i=5;&lt;br /&gt;
&lt;br /&gt;
% Inicializar un vector para almacenar los resultados&lt;br /&gt;
ak5 = zeros(i, 1);&lt;br /&gt;
bk5 = zeros(i, 1);&lt;br /&gt;
&lt;br /&gt;
% Integrales&lt;br /&gt;
for n = 1:i&lt;br /&gt;
    ak5(n) = trapz(xx,f_exp(xx, n));&lt;br /&gt;
    bk5(n) = conj(ak5(n));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calcular a0&lt;br /&gt;
a05 = trapz(xx,f(xx));&lt;br /&gt;
&lt;br /&gt;
%Serie de fourier para n=i&lt;br /&gt;
fn_5 = @(z) a05;&lt;br /&gt;
for n=1:i&lt;br /&gt;
    fn_5= @(z) fn_5(z) + bk5(n).*exp(1i.*2*n.*pi.*z) + ak5(n).*exp(1i.*2*(-n).*pi.*z);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Mostrar los resultados&lt;br /&gt;
disp('Resultados para cada a:');&lt;br /&gt;
disp(ak5);&lt;br /&gt;
disp('Resultados para cada b:');&lt;br /&gt;
disp(bk5);&lt;br /&gt;
&lt;br /&gt;
% Gráfica&lt;br /&gt;
x = linspace(0, 1, 1000);&lt;br /&gt;
subplot(1,3,1)&lt;br /&gt;
plot(x,ff(x),'b-',LineWidth=1.5)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,fn_5(x+1/2),'r--',LineWidth=1.1)&lt;br /&gt;
legend( 'f(x)','fn(x)')&lt;br /&gt;
title('n=5')&lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
% n=10&lt;br /&gt;
i=10;&lt;br /&gt;
&lt;br /&gt;
% Inicializar un vector para almacenar los resultados&lt;br /&gt;
ak10 = zeros(i, 1);&lt;br /&gt;
bk10 = zeros(i, 1);&lt;br /&gt;
&lt;br /&gt;
% Integrales&lt;br /&gt;
for n = 1:i&lt;br /&gt;
    ak10(n) = trapz(xx,f_exp(xx, n));&lt;br /&gt;
    bk10(n) = conj(ak10(n));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calcular a0&lt;br /&gt;
a010 = trapz(xx,f(xx));&lt;br /&gt;
&lt;br /&gt;
%Serie de fourier para n=i&lt;br /&gt;
fn_10 = @(z) a010;&lt;br /&gt;
for n=1:i&lt;br /&gt;
    fn_10= @(z) fn_10(z) + bk10(n).*exp(1i.*2*n.*pi.*z) + ak10(n).*exp(1i.*2*(-n).*pi.*z);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Mostrar los resultados&lt;br /&gt;
disp('Resultados para cada a:');&lt;br /&gt;
disp(ak10);&lt;br /&gt;
disp('Resultados para cada b:');&lt;br /&gt;
disp(bk10);&lt;br /&gt;
&lt;br /&gt;
% Gráfica&lt;br /&gt;
x = linspace(0, 1, 1000);&lt;br /&gt;
subplot(1,3,2)&lt;br /&gt;
plot(x,ff(x),'b-',LineWidth=1.5)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,fn_10(x+1/2),'r--',LineWidth=1.1)&lt;br /&gt;
legend( 'f(x)','fn(x)')&lt;br /&gt;
title('n=10')&lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
% n=20&lt;br /&gt;
i=20;&lt;br /&gt;
&lt;br /&gt;
% Inicializar un vector para almacenar los resultados&lt;br /&gt;
ak20 = zeros(i, 1);&lt;br /&gt;
bk20 = zeros(i, 1);&lt;br /&gt;
&lt;br /&gt;
% Integrales&lt;br /&gt;
for n = 1:i&lt;br /&gt;
    ak20(n) = trapz(xx,f_exp(xx, n));&lt;br /&gt;
    bk20(n) = conj(ak20(n));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Calcular a0&lt;br /&gt;
a020 = trapz(xx,f(xx));&lt;br /&gt;
&lt;br /&gt;
%Serie de fourier para n=i&lt;br /&gt;
fn_20 = @(z) a020;&lt;br /&gt;
for n=1:i&lt;br /&gt;
    fn_20= @(z) fn_20(z) + bk20(n).*exp(1i.*2*n.*pi.*z) + ak20(n).*exp(1i.*2*(-n).*pi.*z);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Mostrar los resultados&lt;br /&gt;
disp('Resultados para cada a:');&lt;br /&gt;
disp(ak20);&lt;br /&gt;
disp('Resultados para cada b:');&lt;br /&gt;
disp(bk20);&lt;br /&gt;
&lt;br /&gt;
% Gráfica&lt;br /&gt;
x = linspace(0, 1, 1000);&lt;br /&gt;
subplot(1,3,3)&lt;br /&gt;
plot(x,ff(x),'b-',LineWidth=1.5)&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,fn_20(x+1/2),'r--',LineWidth=1.1)&lt;br /&gt;
legend( 'f(x)','fn(x)')&lt;br /&gt;
title('n=20')&lt;br /&gt;
hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Referencias ==&lt;br /&gt;
* [https://upcommons.upc.edu/bitstream/handle/2117/186594/tema_4_series_de_fourier-4725.pdf?sequence=1]&lt;br /&gt;
* [Libro de Sandro Salsa. Partial Differential Equations in Action: From Modelling to Theory]&lt;br /&gt;
* [Notas de Juan Francisco Padial Molina. Análisis Real (Grado en matemáticas - Universidad Politéctica de Madrid)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP23/24]]&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:SUMASCESAROALA.png&amp;diff=71821</id>
		<title>Archivo:SUMASCESAROALA.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:SUMASCESAROALA.png&amp;diff=71821"/>
				<updated>2024-05-07T17:17:51Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaciones_de_Laplace_y_de_Poisson&amp;diff=71712</id>
		<title>Ecuaciones de Laplace y de Poisson</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaciones_de_Laplace_y_de_Poisson&amp;diff=71712"/>
				<updated>2024-04-19T19:15:13Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación de Laplace y de Poisson. Grupo ALA | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Lucía Amores, Aitana Guill y Andrea Navarro}}&lt;br /&gt;
== Introducción ==&lt;br /&gt;
En este documento, nos centraremos en dos ecuaciones que tienen un amplio uso en diversos ámbitos como electrostática, mecánica de fluidos, física teórica y magnetostática: la ecuación de Laplace y la ecuación de Poisson. &lt;br /&gt;
Ambas ecuaciones las estudiaremos en el plano y las veremos aplicadas en problemas concretos. Veremos las limitaciones que presenta la fórumla de Poisson así como diferentes métodos analíticos para aproximar soluciones, y raíz de esto, analizaremos errores de aproximación. Por último, estudiaremos el comportamiento de soluciones tanto en un dominio dado, utilizando la desigualdad de Harnack, como asintóticamente en infinito.&lt;br /&gt;
&lt;br /&gt;
== Ecuación de Laplace ==&lt;br /&gt;
La ecuación de Laplace, cuyo nombre nombre honra al distinguido físico-matemático Pierre-Simon Laplace, es una ecuación en derivadas parciales de tipo elíptico. REFERENCIA?&lt;br /&gt;
Construyamos un problema de derivadas parciales a partir de la ecuación de Laplace. La ecuación es,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \Delta u = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
con &amp;lt;math&amp;gt;u:\mathbb{R}^3 \rightarrow \mathbb{R}&amp;lt;/math&amp;gt; como incógnita. Esta ecuación se define en un dominio &amp;lt;math&amp;gt; \Omega &amp;lt;/math&amp;gt;, y en su frontera &amp;lt;math&amp;gt; \partial \Omega &amp;lt;/math&amp;gt; se pueden añadir condiciones de contorno Dirichlet, Neuman o mixtas. En este trabajo nos centraremos en las condiciones de contorno de tipo Dirichlet, las cuales igualan &amp;lt;math&amp;gt; u &amp;lt;/math&amp;gt; a una función específica &amp;lt;math&amp;gt; g &amp;lt;/math&amp;gt;. Con todo esto, llegamos al siguiente problema de derivadas parciales.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  \Omega \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial \Omega &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A fin de comprender mejor este problema, podemos examinar el siguiente ejemplo en concreto. &lt;br /&gt;
&lt;br /&gt;
===== Ejemplo bola unidad =====&lt;br /&gt;
Sea &amp;lt;math&amp;gt; B_1 ⊂ R^2 &amp;lt;/math&amp;gt; la bola unidad centrada en el origen. Planteamos el problema, &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_1 \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
A lo largo de este documento, en lo que tiene que ver con la ecuación de Laplace, visitaremos este ejemplo varias veces.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dentro de la resolución del problema planteado existen varios métodos por los que proceder. En este trabajo estudiaremos dos: la fórmula de Poisson y la serie de Fourier.&lt;br /&gt;
=== Solución por la fórmula de Poisson ===&lt;br /&gt;
Encontrar la solución del problema mediante la fórmula de Poisson viene determinado por el siguiente teorema.&lt;br /&gt;
&lt;br /&gt;
===== Teorema =====&lt;br /&gt;
La solución &amp;lt;math&amp;gt; u \in C^2(B_R \cup C(\overline{B_R}) &amp;lt;/math&amp;gt;del problema &amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_R \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial B_R &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt; donde &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; es una función continua viene dado por la fórmula de Poisson &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\vec{x})=\frac{R^2-|\vec{x}|^2}{w_n R}\int_{\partial B_R}\frac{g(\sigma)}{|\vec{x}-\sigma|^2} d\sigma. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es importante destacar que el denominador &amp;lt;math&amp;gt;|\vec{x}-\sigma|^2 &amp;lt;/math&amp;gt; se anula en la frontera de la bola llevándonos a una indeterminación y haciendo que la integral diverja. Esto también pasa si expresamos la fórmula en coordenadas polares &amp;lt;math&amp;gt;(r, \theta)&amp;lt;/math&amp;gt;. Tomando, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\vec{x} = (x_1, x_2) = (rcos(\theta), rsen(\theta)) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; g(rcos(\theta), rsen(\theta)) = G(\theta)&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
llegamos a la fórmula de Poisson, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; U(r,\theta)=\frac{R^2-r^2}{2\pi R}\int_{0}^{2\pi}\frac{g(s)}{R^2+r^2-2Rrcos(\theta-s)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso, el denominador de la integral también se anula para puntos cercanos a la frontera, concretamente cuando el coseno se hace 1. &lt;br /&gt;
&lt;br /&gt;
Veamos todo esto aplicado a la bola unidad pasado a coordenadas polares,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    U_{rr} + \frac{1}{r} U_r + \frac{1}{r^2} U_{\theta\theta} = 0, &amp;amp; (r, \theta) \in  B_1 \\&lt;br /&gt;
    U(1, \theta) = G(\theta), &amp;amp;   (r, \theta) \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la resolución de este problema vamos a tomar &amp;lt;math&amp;gt;G(\theta) = máx\{0, 1-\frac{2}{\pi} |\theta - \pi|\}&amp;lt;/math&amp;gt; y utilizaremos la fórmula de Poisson en polares tomando &amp;lt;math&amp;gt;R = 1&amp;lt;/math&amp;gt; y calculando la integral de manera aproximada con la fórmula del trapecio. Como hemos visto antes, la fórmula da problemas para puntos cercanos al borde. Esto lleva a una representación irregular de la frontera si dibujamos la solución sin tener en cuenta este problema.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: sol_sin_frontera_ejercicio1.png|400px|miniaturadeimagen|center|Solución del problema de Poisson sin aplicar la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
Es por esto por lo que la condición frontera no es prescindible en el problema. Para estimar &amp;lt;math&amp;gt; U(r,\theta)&amp;lt;/math&amp;gt;, utilizaremos la fórmula de Poisson para puntos ligeramente alejados del borde, y en el propio borde utilizaremos la condición frontera &amp;lt;math&amp;gt;U(R, \theta) = G(\theta)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: sol_ejercicio1.png|400px|miniaturadeimagen|center|Solución del problema de Poisson aplicando la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
En esta nueva gráfica podemos apreciar como la frontera no presenta las irregularidades anteriores. &lt;br /&gt;
Para conseguir estas gráficas hemos implementado el siguiente código en MatLab.&lt;br /&gt;
&lt;br /&gt;
====== Códigos ======&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Este código resuelve el problema planteado con la fórmula de Poisson sin aplicar condición frontera:&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g:&lt;br /&gt;
g=@(theta)max(0, 1-2/pi*abs(theta-pi));&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos r y theta sobre los que vamos a trabajar:&lt;br /&gt;
N=200; % Número de divisiones del intervalo&lt;br /&gt;
r=linspace(0,R,N); % No podemos llegar hasta la frontera&lt;br /&gt;
theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución de u con la fórmula de Poisson:&lt;br /&gt;
NN=100; % División del intervalo de integración.&lt;br /&gt;
s=linspace(0,2*pi,NN); % Intervalo de integración, para el método del trapecio.&lt;br /&gt;
u=zeros(N,N); % Inicializamos la matriz que almacena los valores de la solución.&lt;br /&gt;
for i=1:length(theta)&lt;br /&gt;
    for j=1:length(r) % Calculamos solución a través de la fórmula del trapecio:&lt;br /&gt;
        u(i,j)=1/(2*pi).*trapz(s,g(s).*(R^2-r(j).^2)./(R^2+r(j).^2-2.*r(j).*cos(s-theta(i))));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
% Creamos la malla:&lt;br /&gt;
[RR,THETA]=meshgrid(r,theta);&lt;br /&gt;
figure&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u,'EdgeColor','flat') % Representación gráfica&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('y')&lt;br /&gt;
zlabel('u(x,y)')&lt;br /&gt;
title('Solución de la ecuación de Laplace')&lt;br /&gt;
}}&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Este código resuelve el problema planteado con la fórmula de Poisson aplicando la condición frontera:&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g:&lt;br /&gt;
g=@(theta)max(0, 1-2/pi*abs(theta-pi));&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos r y theta sobre los que vamos a trabajar:&lt;br /&gt;
N=200; % Número de divisiones del intervalo&lt;br /&gt;
r=linspace(0,R-N^(-1),N-1); % No podemos llegar hasta la frontera&lt;br /&gt;
theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución de u con la fórmula de Poisson:&lt;br /&gt;
NN=1000; % División del intervalo de integración.&lt;br /&gt;
s=linspace(0,2*pi,NN); % Intervalo de integración, para el método del trapecio.&lt;br /&gt;
u=zeros(N,N); % Inicializamos la matriz que almacena los valores de la solución.&lt;br /&gt;
for i=1:length(theta)&lt;br /&gt;
    for j=1:length(r) % Calculamos solución a través de la fórmula del trapecio:&lt;br /&gt;
        u(i,j)=1/(2*pi).*trapz(s,g(s).*(R^2-r(j).^2)./(R^2+r(j).^2-2.*r(j).*cos(s-theta(i))));&lt;br /&gt;
    end&lt;br /&gt;
    % Establecemos condiciones frontera (por presentar problemas en esta):&lt;br /&gt;
    u(i,N)=g(theta(i));&lt;br /&gt;
end&lt;br /&gt;
r(N)=1;&lt;br /&gt;
% Creamos la malla:&lt;br /&gt;
[RR,THETA]=meshgrid(r,theta);&lt;br /&gt;
figure&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u,'EdgeColor','flat') % Representación gráfica&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('y')&lt;br /&gt;
zlabel('u(x,y)')&lt;br /&gt;
title('Solución de la ecuación de Laplace')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== Errores de la fórmula de Poisson =====&lt;br /&gt;
Como hemos observado anteriormente, la fórmula de Poisson presenta ciertas dificultades a la hora de aproximar la solución en la frontera, debido a la singularidad inherente de la integral. En este apartado examinaremos estas irregularidades calculando el error de la aproximación frente a la solución exacta.&lt;br /&gt;
&lt;br /&gt;
Volviendo al ejemplo de la bola unidad, esta vez vamos a suponer el problema,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_1 \\&lt;br /&gt;
    u = g(x,y) = xy, &amp;amp;   \text{x} \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que tiene como solución exacta la función armónica &amp;lt;math&amp;gt;u(x,y) = xy&amp;lt;/math&amp;gt;. Tal y como hemos hecho en el apartado anterior, calculamos la solución aproximada utilizando la fórmula de Poisson, la fórmula del trapecio y pasando a coordenadas polares.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    U_{rr} + \frac{1}{r} U_r + \frac{1}{r^2} U_{\theta\theta} = 0, &amp;amp; (r, \theta) \in  B_1 \\&lt;br /&gt;
    U(1,\theta)=G(\theta)=\cos(\theta)\sin(\theta), &amp;amp;   (r, \theta) \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vamos a distinguir entre dos tipos de puntos, aquellos que estén &amp;quot;alejados&amp;quot; de la frontera y aquellos sean inmediatos a esta. &lt;br /&gt;
Primero estudiaremos el error en puntos &amp;quot;alejados&amp;quot; de la frontera. Esto lo hacemos empleando distintas discretizaciones con &amp;lt;math&amp;gt; 10^n &amp;lt;/math&amp;gt; puntos en la fórmula del trapecio. Después, calculamos el error para cada discretización en un punto alejado, en este caso lo hacemos evaluando en &amp;lt;math&amp;gt;x = (r,\theta)=(0.9,\pi/4)&amp;lt;/math&amp;gt;. Posteriormente graficamos el error aplicando la fórmula,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;f(n):=\log_{10}(Error(10^n)), &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Obteniendo así la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: error_puntoalejado_ejercicio2.png|400px|miniaturadeimagen|center|Error de un punto alejado a la frontera]]&lt;br /&gt;
&lt;br /&gt;
Los resultados de esta gráfica cuadran con nuestra intuición, a mayor número de puntos menor es el error que se comete. Además podemos apreciar que el error se acaba estabilizando al rededor de &amp;lt;math&amp;gt;10^{-15}&amp;lt;/math&amp;gt;. Luego podemos concluir que la fórmula de Poisson proporciona una buena aproximación para puntos relativamente alejados de la frontera. &lt;br /&gt;
&lt;br /&gt;
A continuación, atendiendo a la fórmula del error &amp;quot;teórica&amp;quot; dada por el método del trapecio, la cual sigue la siguiente expresión:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;Error:=\left|-\cfrac{f''(\xi)(b-a)^3}{12n^2}\right|, &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
siendo &amp;lt;math&amp;gt;\xi&amp;lt;/math&amp;gt; un valor dentro del intervalo &amp;lt;math&amp;gt;[a,b]&amp;lt;/math&amp;gt;, y n el valor que genera la discretización para la aplicación del método del trapecio. En nuestro caso, &amp;lt;math&amp;gt;[a,b]=[0,2\pi]&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; la función a integrar en la fórmula de Poisson.&lt;br /&gt;
Ahora bien, el código de MatLab presentado al final de la sección implementa un cálculo del error máximo, tomando para cada n el error máximo en la discretización y acumulándolo en la lista &amp;lt;math&amp;gt;error\_max&amp;lt;/math&amp;gt; de tal forma que en la gráfica se presenta una representación del error máximo teórico de la fórmula del trapecio.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: comparacion_errores_ejercicio2.png|400px|miniaturadeimagen|center|Comparación errores con su máximo]]&lt;br /&gt;
&lt;br /&gt;
Como se puede apreciar de manera bastante clara en la gráfica, a medida que aumentan los puntos de la discretización, la cota va disminuyendo. Aún así, se puede apreciar que el error calculado para un punto alejado de la frontera se sigue manteniendo por debajo de dicha cota.&lt;br /&gt;
&lt;br /&gt;
Estudiemos ahora el error cometido en puntos &amp;quot;cercanos&amp;quot; a la frontera. En este caso vamos utilizar una única discretización de 100 puntos de la fórmula del trapecio y puntos que cada vez se acercan más a la frontera. Partiendo del punto &amp;lt;math&amp;gt;x = (r,\theta)=(0.9,\pi/4)&amp;lt;/math&amp;gt; vamos a ir avanzando hacia la frontera con puntos de la forma &amp;lt;math&amp;gt;(r,\theta)=(1-10^{-n}, \pi/4)&amp;lt;/math&amp;gt;. La gráfica entonces resulta ser:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: error_puntoscercanosfrontera_ejercicio2.png|400px|miniaturadeimagen|center|Error de puntos cercanos a la frontera]]&lt;br /&gt;
&lt;br /&gt;
En este caso el error incrementa según los puntos se acercan a la frontera y se acaba estabilizando en &amp;lt;math&amp;gt;-0,3&amp;lt;/math&amp;gt;.&lt;br /&gt;
El código utilizado para dibujar estas gráficas es el siguiente.&lt;br /&gt;
&lt;br /&gt;
{{matlab||codigo=&lt;br /&gt;
% El siguiente código ejecuta todas las gráficas planteadas a lo largo de esta sección&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Definimos el radio de la bola;&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos la función g:&lt;br /&gt;
g =@(theta) (R.^2.*cos(theta).*sin(theta));&lt;br /&gt;
&lt;br /&gt;
% Definimos la solución exacta:&lt;br /&gt;
u_exacta =@(r,theta) (r.^2.*cos(theta).*sin(theta));&lt;br /&gt;
&lt;br /&gt;
% Tomamos el punto r=0.9 y theta=pi/4:&lt;br /&gt;
r_valor=0.9;&lt;br /&gt;
theta_valor=pi/4;&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución u en el punto anterior:&lt;br /&gt;
n=1:1:8;&lt;br /&gt;
error=zeros(1,length(n)); % Inicializamos la matriz que almacena el error&lt;br /&gt;
error_log=zeros(1,length(n)); % Inicializamos la matriz que almacena el error logarítmico&lt;br /&gt;
u_valor=zeros(1,length(n)); % Inicializamos la matriz que almacena la solución de u para distintas discretizaciones del método del trapecio&lt;br /&gt;
for i=1:length(n)&lt;br /&gt;
    s=linspace(0,2*pi,10^(n(i))); % Intervalo de integración&lt;br /&gt;
    u_valor(i)=1/(2*pi).*trapz(s,g(s).*(R^2-r_valor.^2)./(R^2+r_valor.^2-2.*r_valor.*cos(s-theta_valor))); % Solución a través de la fórmula de Poisson&lt;br /&gt;
    &lt;br /&gt;
    % Calculamos el error:&lt;br /&gt;
    error(i)=abs(u_exacta(r_valor,theta_valor)-u_valor(i));&lt;br /&gt;
    % Calculamos el error logarítmico:&lt;br /&gt;
    error_log(i)=log10(error(i));&lt;br /&gt;
end&lt;br /&gt;
% Representamos gráficamente el error logarítmico para el punto r=0.9 y theta=pi/4:&lt;br /&gt;
plot(n,error_log,'o-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(10^n))')&lt;br /&gt;
grid on &lt;br /&gt;
grid minor&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Gráfica del error logarítmico')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Observamos la existencia de un error máximo que nos permita confirmar&lt;br /&gt;
% que los errores calculados anteriormente se encuentran por debajo siempre:&lt;br /&gt;
&lt;br /&gt;
% Calculamos la segunda derivada (requerida por la fórmula):&lt;br /&gt;
syms rr ss thetatheta&lt;br /&gt;
% Definimos de forma simbólica la función a derivar:&lt;br /&gt;
f=rr^2*cos(ss)*sin(ss)/(1+rr^2-2*rr*cos(thetatheta-ss));&lt;br /&gt;
derivada1=diff(f,ss); % Derivamos la función f en función de la variable s&lt;br /&gt;
derivada2=diff(derivada1,ss); % Derivamos la primera derivada en función de la variable s&lt;br /&gt;
% Calculamos el error máximo del método del trapecio:&lt;br /&gt;
nn=1:1:3; % Conforme el número sea más elevado aquí más aumentará el tiempo de compilación del programa.&lt;br /&gt;
error_max=zeros(length(nn),1); % Inicializamos a ceros el vector que almacenará los datos del error máximo del trapecio&lt;br /&gt;
for i=1:length(nn)&lt;br /&gt;
    N=10^i;&lt;br /&gt;
    s=linspace(0,2*pi,N);&lt;br /&gt;
    error_trapz=zeros(N,1); % Inicializamos a ceros el vector que almacenará los datos del error del trapecio para cada n&lt;br /&gt;
    for j=1:N&lt;br /&gt;
        s_valor=s(j);&lt;br /&gt;
        error_trapz(j)=log10(abs(-(2*pi).^3.*subs(derivada2, [rr,ss,thetatheta] ,[r_valor,s_valor,theta_valor])./(12.*(N.^2))));&lt;br /&gt;
    end&lt;br /&gt;
    error_max(i)=max(error_trapz);&lt;br /&gt;
end&lt;br /&gt;
% Representamos gráficamente el error máximo junto con el error calculado&lt;br /&gt;
% anteriormente:&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
plot(nn,error_log(1:length(nn)),'Color','blue')&lt;br /&gt;
plot(nn,error_max,'Color','red')&lt;br /&gt;
hold off&lt;br /&gt;
legend('Error','Error máximo')&lt;br /&gt;
title('Comparación de errores')&lt;br /&gt;
grid on&lt;br /&gt;
grid minor&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('Error')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Fijamos ahora para N=100 (puntos en la fórmula del trapecio).&lt;br /&gt;
% Vamos a calcular el error en los puntos de la forma r=1-10^(-n) y theta=pi/4 y veremos qué ocurre:&lt;br /&gt;
N=100;&lt;br /&gt;
r_valores=zeros(1,N); % Inicializamos vector que almacena los valores de r.&lt;br /&gt;
u_valores_r=zeros(1,N); % Inicializamos el vector que almacena los valores de la solución u para distintos valores de r.&lt;br /&gt;
u_exacta_r=zeros(1,N); % Inicializamos el vector que almacena los valores de la solución u exacta para distintos valores de r.&lt;br /&gt;
error_r=zeros(1,N); % Inicializamos el vector que almacena los errores.&lt;br /&gt;
error_log_r=zeros(1,N); % Inicializamos el vector que almacena los errores logarítmicos.&lt;br /&gt;
% theta_valor=pi/4 es el mismo que hemos usado antes, por lo que no lo volvemos a inicializar.&lt;br /&gt;
% Definimos el vector de integración de la fórmula del trapecio:&lt;br /&gt;
s=linspace(0,2*pi,N);&lt;br /&gt;
for j=1:N&lt;br /&gt;
    r_valores(j)=1-10^(-j);&lt;br /&gt;
    u_valores_r(j)=1/(2*pi).*trapz(s,g(s).*(R^2-r_valores(j).^2)./(R^2+r_valores(j).^2-2.*r_valores(j).*cos(s-theta_valor)));&lt;br /&gt;
    u_exacta_r(j)=u_exacta(r_valores(j),theta_valor);&lt;br /&gt;
    error_r(j)=abs(u_exacta_r(j)-u_valores_r(j));&lt;br /&gt;
    error_log_r(j)=log10(error_r(j));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
plot(1:1:N,error_log_r,'.-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(100))')&lt;br /&gt;
grid on &lt;br /&gt;
grid minor&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Errores en los puntos cercanos a la frontera')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Solución por la serie de Fourier ===&lt;br /&gt;
Una vez estudiada la solución por la fórmula de Poisson, en este apartado calcularemos la solución por serie de Fourier. La obtención de esta solución se basa en una cambio de variable a polares del problema, como el visto previamente, y resolución por separación de variables.  Hacemos esto aplicado al problema anterior en una bola de radio &amp;lt;math&amp;gt; R &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta U=U_{rr}+\frac{1}{r}U_r+\frac{1}{r^2}U_{\theta\theta}=0, r\in(0,R),\theta\in(0,2\pi)\\&lt;br /&gt;
U(R,\theta)=G(\theta)=R^2 sin(\theta)cos(\theta), \theta\in[0,2\pi).&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo cual nos conduce a, &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
U(r, \theta) = \frac{\alpha_{0}}{2}  +   \sum_{k=1}^{n} \left( \alpha_{k} \left(\frac{r}{R} \right)^k cos(k\theta) + \beta_{k} \left(\frac{r}{R} \right)^k sin(k\theta)\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que tiene coeficientes,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\alpha_{0} =\frac{1}{\pi}\int_{-\pi}^{\pi} \cos\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\alpha_{k} =\frac{1}{\pi}\int_{-\pi}^{\pi} cos(\theta) \sin(\theta) \cos\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\beta_{k} =\frac{1}{\pi}\int_{-\pi}^{\pi} cos(\theta) \sin(\theta) \sin\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Sin embargo, todos los coeficientes de Fourier son nulos, salvo por &amp;lt;math&amp;gt; \beta_2=\frac{R^2}{2}&amp;lt;/math&amp;gt;, luego la solución por series de Fourier final es, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}\sin(2\theta)=r^2\cos(\theta)\sin(\theta), r\in [0,R], \theta\in[0,2\pi)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Veamos ahora la gráfica que dibuja esta solución tomando &amp;lt;math&amp;gt; R = 1 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Tresaitana1.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Ecuación de Laplace&lt;br /&gt;
%% Apartado 3&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Definimos el radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% k términos de la serie:&lt;br /&gt;
K=[5 10 100];&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g y la función u exacta:&lt;br /&gt;
g=@(theta) R.^2.*cos(theta).*sin(theta);&lt;br /&gt;
u_exacta=@(r,theta) r.^2.*cos(theta).*sin(theta);&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos de theta y r:&lt;br /&gt;
N=300; % Número de divisiones de los intervalos theta y r.&lt;br /&gt;
Theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
r=linspace(0,R,N); % Intervalo r.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Calculamos los coeficientes de Fourier para distintos k-términos:&lt;br /&gt;
for i=1:length(K)&lt;br /&gt;
    k=K(i); % k-términos de la serie.&lt;br /&gt;
    int=linspace(-pi,pi,k); % Intervalo de integración para los coef de Fourier.&lt;br /&gt;
    a0=1/pi.*integral(g,-pi,pi); % Coeficiente de Fourier a_0 (asociado a 1/2).&lt;br /&gt;
    a=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al coseno.&lt;br /&gt;
    b=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al seno.&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        f_cos=@(theta) g(theta).*cos(j.*theta); % Definimos la función a integrar asociada al coseno.&lt;br /&gt;
        f_sin=@(theta) g(theta).*sin(j.*theta); % Definimos la función a integrar asociada al seno.&lt;br /&gt;
        a(j)=1/pi.*integral(f_cos,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fourier del coseno.&lt;br /&gt;
        b(j)=1/pi.*integral(f_sin,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fouries del seno.&lt;br /&gt;
    end&lt;br /&gt;
    % Calculamos la solución u_k asociada al número de términos de la serie:&lt;br /&gt;
    suma=@(r,theta)0;&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        suma=@(r,theta) suma(r,theta) + a(j).*(r/R).^j.*cos(j.*theta)+b(j).*(r/R).^j.*sin(j.*theta);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['u_' num2str(k) '=@(r,theta) 1/2*a0 + suma(r,theta);']);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
[RR,THETA]=meshgrid(r,Theta);&lt;br /&gt;
figure&lt;br /&gt;
for i=1:length(K)&lt;br /&gt;
    k=K(i);&lt;br /&gt;
    subplot(2,2,i)&lt;br /&gt;
    eval(['surf(RR.*cos(THETA),RR.*sin(THETA),u_' num2str(k) '(RR,THETA),&amp;quot;EdgeColor&amp;quot;,&amp;quot;flat&amp;quot;)'])&lt;br /&gt;
    title(&amp;quot;Solución de u para k=&amp;quot;, num2str(k))&lt;br /&gt;
end&lt;br /&gt;
subplot(2,2,4)&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u_exacta(RR,THETA),&amp;quot;EdgeColor&amp;quot;,&amp;quot;flat&amp;quot;)&lt;br /&gt;
title('Solución exacta')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Errores de la solución por serie de Fourier ====&lt;br /&gt;
Al igual que con la solución dada por la fórmula de Poisson, vamos a comparar la solución calculada con la solución exacta &amp;lt;math&amp;gt;u(x,y)=xy&amp;lt;/math&amp;gt; en la bola de radio 1. Vamos a contrastar las soluciones con 5, 10 y 100 términos con la exacta. Calcularemos el error resultante al aproximar la serie de Fourier y lo representamos gráficamente, mostrando el máximo error en función del número de términos utilizados en una escala logarítmica, es decir, pintaremos la función, &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \log_{10}(error(n)) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; error(n) &amp;lt;/math&amp;gt; es ahora el supremo del error con &amp;lt;math&amp;gt;n &amp;lt;/math&amp;gt;términos. Obetenemos así la siguente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Tresaitana2.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
Podemos apreciar en esta gráfica errores de orden muy pequeño, por lo general, los podemos considerar pequeño. Luego, nos damos cuenta de que, a diferencia de solución por la fórmula de Poisson, esta no nos da problemas en la frontera. Veamos el código utilizado para hacer la gráfica.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% A continuación se calcularán los errores de la aproximación de Fourier en función de los términos:&lt;br /&gt;
KK=0:1:100;&lt;br /&gt;
error_log=zeros(length(KK),1); % Inicializamos el vector donde se almacenarán los errores logarítmicos.&lt;br /&gt;
for i=1:length(KK)&lt;br /&gt;
    k=KK(i);&lt;br /&gt;
    int=linspace(-pi,pi,k); % Intervalo de integración para los coef de Fourier.&lt;br /&gt;
    a0=1/pi.*integral(g,-pi,pi); % Coeficiente de Fourier a_0 (asociado a 1/2).&lt;br /&gt;
    a=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al coseno.&lt;br /&gt;
    b=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al seno.&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        f_cos=@(theta) g(theta).*cos(j.*theta); % Definimos la función a integrar asociada al coseno.&lt;br /&gt;
        f_sin=@(theta) g(theta).*sin(j.*theta); % Definimos la función a integrar asociada al seno.&lt;br /&gt;
        a(j)=1/pi.*integral(f_cos,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fourier del coseno.&lt;br /&gt;
        b(j)=1/pi.*integral(f_sin,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fouries del seno.&lt;br /&gt;
    end&lt;br /&gt;
    % Calculamos la solución u_k asociada al número de términos de la serie:&lt;br /&gt;
    suma=@(r,theta)0;&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        suma=@(r,theta) suma(r,theta) + a(j).*(r/R).^j.*cos(j.*theta)+b(j).*(r/R).^j.*sin(j.*theta);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['u_' num2str(i) '=@(r,theta) 1/2*a0 + suma(r,theta);']);&lt;br /&gt;
    eval(['u=@(r,theta)u_' num2str(i) '(r,theta) ;']);&lt;br /&gt;
    U_exacta=u_exacta(RR,THETA);&lt;br /&gt;
    U_fourier=u(RR,THETA);&lt;br /&gt;
    valores_max=max(U_exacta-U_fourier);&lt;br /&gt;
    sup=max(valores_max,[],'all');&lt;br /&gt;
    error_log(i)=log10(sup);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
plot(KK,error_log)&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Errores supremos frente al número de términos')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(10^n))')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Comportamiento de la solución ===&lt;br /&gt;
En esta sección, y atendiendo al comportamiento de la solución estudiaremos en qué región se han de encontrar las soluciones armónicas dentro  de la bola &amp;lt;math&amp;gt;B_R&amp;lt;/math&amp;gt;, siendo &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; el radio de la bola, que tengan el mismo valor que nuestra solución en el (0,0).&lt;br /&gt;
&lt;br /&gt;
La '''desigualdad de Harnack''' establece: Sea &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; armónica y &amp;lt;math&amp;gt;0\leq u&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;\Omega \in \mathbb{R}^n&amp;lt;/math&amp;gt;. Supongamos &amp;lt;math&amp;gt;\overline{B_{R}(z)}\subset \Omega&amp;lt;/math&amp;gt;. Entonces:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{R^{n-2} (R-r)}{(R+r)^{n-1}} u(z)\leq u(x) \leq \frac{R^{n-2}  (R+r)}{(R-r)^{n-1}}u(z), \forall x \in B_{R}(z).&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para proceder al estudio planteado, comenzamos calculando el mínimo de la función &amp;lt;math&amp;gt;g(x,y)=xy&amp;lt;/math&amp;gt; en la frontera de la bola &amp;lt;math&amp;gt;B_R&amp;lt;/math&amp;gt; al que llamaremos &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;. Para facilitar los cálculos de aquí en adelante trabajaremos en coordenadas polares, por lo que nuestra función &amp;lt;math&amp;gt;g(x,y)=xy&amp;lt;/math&amp;gt; pasa a ser &amp;lt;math&amp;gt;g(\theta)=R^2cos(\theta)sin(\theta)&amp;lt;/math&amp;gt;, siendo &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; el radio de la bola. Para el cálculo del mínimo se ha empleado un código de Matlab presentado al final de esta sección.&lt;br /&gt;
&lt;br /&gt;
A continuación, definimos la función &amp;lt;math&amp;gt;v:=u-M &amp;lt;/math&amp;gt; , siendo u nuestra solución del problema. Esta función &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; es positiva y armónica, por lo que podemos aplicar la desigualdad de Harnack para &amp;lt;math&amp;gt;\mathbb{R}&amp;lt;/math&amp;gt;, es decir, &amp;lt;math&amp;gt;n=2&amp;lt;/math&amp;gt;. Obteniendo lo siguiente:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{(R-r)}{(R+r)} v(0,0) \leq v(x,y) \leq \frac{(R+r)}{(R-r)}v(0,0), \forall (x,y) \in B_{R}. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Representando gráficamente las cotas planteadas, obtenemos las siguientes gráficas:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: harnack_ejercicio4_n2.png|600px|thumb|center|Desigualdad de Harnack en &amp;lt;math&amp;gt;R^2&amp;lt;/math&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Las desigualdades de Harnack establecen límites uniformes para todas las soluciones armónicas dentro de una bola, independientemente de su radio. Sin embargo, el valor específico de estas soluciones en un punto dado, como &amp;lt;math&amp;gt;v(0,0)&amp;lt;/math&amp;gt;, varía con el tamaño de la bola, lo que sugiere una especie de traslación en la región donde las soluciones armónicas son iguales a &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; en el punto &amp;lt;math&amp;gt;(0,0)&amp;lt;/math&amp;gt;. A medida que aumenta el radio de la bola, tanto las cotas superior e inferior aumentan en amplitud, pero la región cubierta por estas cotas se estrecha. Este fenómeno indica que, aunque la estructura de las cotas permanece constante, el rango de valores en el que pueden variar las soluciones armónicas se reduce a medida que la bola crece en tamaño.&lt;br /&gt;
&lt;br /&gt;
Procediendo a un estudio de la desigualdad en &amp;lt;math&amp;gt;\mathbb{R}^3&amp;lt;/math&amp;gt; obtenemos las siguientes desigualdades:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{R^3(R-r)}{2(R+r)^{2}} \leq v(x,y,z) \leq \frac{R^3(R+r)}{2(R-r)^2} , \forall (x,y,z) \in B_{R}, &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Llevando a cabo un procedimiento análogo al anterior obtenemos las siguientes gráficas:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: harnack_ejercicio4_n3.png|600px|thumb|center|Desigualdad de Harnack en &amp;lt;math&amp;gt;R^3&amp;lt;/math&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Se puede concluir de manera análoga al caso de &amp;lt;math&amp;gt;R^2&amp;lt;/math&amp;gt;, pero con una región mayor.&lt;br /&gt;
&lt;br /&gt;
El código de Matlab empleado para la representación de las gráficas y el cálculo de las cotas en &amp;lt;math&amp;gt;R^2&amp;lt;/math&amp;gt; es el siguiente:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format short&lt;br /&gt;
&lt;br /&gt;
% Definimos los radios de las bolas:&lt;br /&gt;
RR=[1 2 10];&lt;br /&gt;
for i=1:length(RR)&lt;br /&gt;
    R=RR(i);&lt;br /&gt;
    % Definimos la dimensión del espacio:&lt;br /&gt;
    n=2;&lt;br /&gt;
    &lt;br /&gt;
    % Definimos la función g definida en la frontera:&lt;br /&gt;
    g=@(theta) R.^2.*cos(theta).*sin(theta);&lt;br /&gt;
    &lt;br /&gt;
    % Definimos la solución exacta u:&lt;br /&gt;
    u_exacta=@(r,theta) r.^2.*cos(theta).*sin(theta);&lt;br /&gt;
    &lt;br /&gt;
    % Calculamos el mínimo de esta función:&lt;br /&gt;
    N=100;&lt;br /&gt;
    theta=linspace(0,2*pi,N);&lt;br /&gt;
    r_con_frontera=linspace(0,R,N+1);&lt;br /&gt;
    r=r_con_frontera(1:N);&lt;br /&gt;
    M=min(g(theta));&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    % Consideramos la función armónica v=u-M:&lt;br /&gt;
    v=@(r,theta) u_exacta(r,theta)-M;&lt;br /&gt;
    &lt;br /&gt;
    % Definimos las cotas de la desigualdad de Harnack:&lt;br /&gt;
    cota_inferior=@(r)(R.^(n-2).*(R-r)./((R+r).^(n-1))).*v(0,0);&lt;br /&gt;
    cota_superior=@(r)(R.^(n-2).*(R+r)./((R-r).^(n-1))).*v(0,0);&lt;br /&gt;
    &lt;br /&gt;
    % Dibujamos las cotas para encontrar la región en la que deben estar las&lt;br /&gt;
    % soluciones armónicas de la B_1, que valen lo mismo que u en el (0,0):&lt;br /&gt;
    subplot(1,3,i)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(r,log10(cota_inferior(r)),&amp;quot;Color&amp;quot;,'red')&lt;br /&gt;
    plot(r,log10(cota_superior(r)),&amp;quot;Color&amp;quot;,'blue')&lt;br /&gt;
    xlabel('r')&lt;br /&gt;
    legend('Cota inferior','Cota superior','Location','southwest')&lt;br /&gt;
    title('Región de soluciones en la Bola de radio',num2str(R))&lt;br /&gt;
    grid on&lt;br /&gt;
    grid minor&lt;br /&gt;
    hold off&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
El código de Matlab empleado para la representación de las gráficas y el cálculo de las cotas en &amp;lt;math&amp;gt;R^3&amp;lt;/math&amp;gt; es el siguiente:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Definimos los radios de las bolas:&lt;br /&gt;
RR=[1 2 10];&lt;br /&gt;
for i=1:length(RR)&lt;br /&gt;
    R=RR(i);&lt;br /&gt;
    % Definimos la dimensión del espacio:&lt;br /&gt;
    n=3;&lt;br /&gt;
    &lt;br /&gt;
    % Definimos la función g definida en la frontera:&lt;br /&gt;
    g=@(theta) R.^2.*cos(theta).*sin(theta);&lt;br /&gt;
    &lt;br /&gt;
    % Definimos la solución exacta u:&lt;br /&gt;
    u_exacta=@(r,theta) r.^2.*cos(theta).*sin(theta);&lt;br /&gt;
    &lt;br /&gt;
    % Calculamos el mínimo de esta función:&lt;br /&gt;
    N=300;&lt;br /&gt;
    theta=linspace(0,2*pi,N);&lt;br /&gt;
    r_con_frontera=linspace(0,R,N+1);&lt;br /&gt;
    r=r_con_frontera(1:N);&lt;br /&gt;
    M=min(g(theta));&lt;br /&gt;
    &lt;br /&gt;
    % Consideramos la función armónica v=u-M:&lt;br /&gt;
    v=@(r,theta) u_exacta(r,theta)-M;&lt;br /&gt;
    &lt;br /&gt;
    % Definimos las cotas de la desigualdad de Harnack:&lt;br /&gt;
    cota_inferior=@(r)R.^(n-2).*(R-r)./(R+r).^(n-1).*v(0,0);&lt;br /&gt;
    cota_superior=@(r)R.^(n-2).*(R+r)./(R-r).^(n-1).*v(0,0);&lt;br /&gt;
    &lt;br /&gt;
    % Dibujamos las cotas para encontrar la región en la que deben estar las&lt;br /&gt;
    % soluciones armónicas de la B_1, que valen lo mismo que u en el (0,0):&lt;br /&gt;
    subplot(1,3,i)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(r,log10(cota_inferior(r)),&amp;quot;Color&amp;quot;,'red')&lt;br /&gt;
    plot(r,log10(cota_superior(r)),&amp;quot;Color&amp;quot;,'blue')&lt;br /&gt;
    xlabel('r')&lt;br /&gt;
    legend('Cota inferior','Cota superior','Location','southwest')&lt;br /&gt;
    title('Región de soluciones en la Bola de radio',num2str(R))&lt;br /&gt;
    grid on&lt;br /&gt;
    grid minor&lt;br /&gt;
    hold off&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Ecuación de Poisson ==&lt;br /&gt;
&lt;br /&gt;
En esta parte del documento se va a proceder a resolver la ecuación de Poisson mediante un nuevo método. En primer lugar, esta ecuación viene dada por  &amp;lt;math&amp;gt; \Delta u = f &amp;lt;/math&amp;gt; siendo &amp;lt;math&amp;gt;u:\mathbb{R}^n \rightarrow \mathbb{R}&amp;lt;/math&amp;gt;y &amp;lt;math&amp;gt; f \in C^2(\mathbb{R})&amp;lt;/math&amp;gt;. Para este estudio se particularizará para n=2 y n=3.&lt;br /&gt;
&lt;br /&gt;
Se comenzará definiendo la solución fundamental de esta ecuación, pues se utilizará posteriormente para calcular el potencial newtoniano o logarítimico. Esta viene dada por &amp;lt;math&amp;gt;  \phi(x) = -\frac{1}{2\pi} log(|x|) &amp;lt;/math&amp;gt; si n=2 y &amp;lt;math&amp;gt;  \phi(x) = \frac{1}{4\pi |x| } &amp;lt;/math&amp;gt; si n=3.&lt;br /&gt;
=== Potencial newtoniano para &amp;lt;math&amp;gt; \mathbb{R}^3&amp;lt;/math&amp;gt; ===&lt;br /&gt;
Supongamos que &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
representa la densidad de una carga contenida en un conjunto compacto dentro del espacio tridimensional &amp;lt;math&amp;gt; \mathbb{R}^3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Entonces, la expresión &amp;lt;math&amp;gt; \phi(x-y)f(y)dy&amp;lt;/math&amp;gt; denota el potencial en el punto x. De esta manera el potencial total viene dado por la siguiente expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\mathbf{x}) = \int_{\mathbb{R}^n} f(\mathbf{y}) \phi(\mathbf{x} - \mathbf{y}) d\mathbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta fórmula se conoce como potencial Newtoniano de f y se aplica sobre funciones que en el infinito tienden de manera rápida a cero.&lt;br /&gt;
&lt;br /&gt;
A su vez, sea &amp;lt;math&amp;gt;f \in C^2(\mathbb{R}^3)&amp;lt;/math&amp;gt; con soporte compacto. Sea &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; el potencial newtoniano de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, definido por el potencial Newtoniano. Entonces, &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; es la única solución en &amp;lt;math&amp;gt;\mathbb{R}^3&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;\Delta u = -f&amp;lt;/math&amp;gt;  que pertenece a &amp;lt;math&amp;gt;C^2(\mathbb{R}^3)&amp;lt;/math&amp;gt; y se anula en el infinito. Es decir, dado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \begin{cases}&lt;br /&gt;
     \Delta u = -f \\&lt;br /&gt;
   u(x) \rightarrow 0  &amp;amp; \text{si } |x| \rightarrow \infty&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
su solución viene dada por el potencial newtoniano que se presenta anteriormente.&lt;br /&gt;
&lt;br /&gt;
=== Potencial logarítmico para &amp;lt;math&amp;gt; \mathbb{R}^2&amp;lt;/math&amp;gt; ===&lt;br /&gt;
Si el problema se presenta en &amp;lt;math&amp;gt; \mathbb{R}^2&amp;lt;/math&amp;gt; el potencial newtoniano se sustituye por el potencial logarítimico:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\mathbf{x}) = -\frac{1}{2\pi}\int_{\mathbb{R}^2}  log|\mathbf{x} - \mathbf{y}|f(\mathbf{y}) d\mathbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta manera, Sea &amp;lt;math&amp;gt;f \in C^2(\mathbb{R}^2)&amp;lt;/math&amp;gt; con soporte compacto, &amp;lt;math&amp;gt;u(\mathbf{x})&amp;lt;/math&amp;gt; es la única solución en &amp;lt;math&amp;gt;\mathbb{R}^2&amp;lt;/math&amp;gt; de:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \begin{cases}&lt;br /&gt;
     \Delta u = -f \\&lt;br /&gt;
   u(x)=-\frac{M}{2\pi} log |x| + O\left(\frac{1}{|x|} \right)  &amp;amp; \text{si } |x| \rightarrow \infty&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M= \int _{\mathbb{R}^2} f(\mathbf y) d\mathbf y&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
A continuación, veremos un ejemplo de lo explicado anteriormente para una correcta comprensión de ello. De esta manera, mediante el potencial logarítmico se aproximará la ecuación de Poisson cuando f sea la función característica de la bola de radio 1 y se estudiará su comportamiento en el infinito.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Para resolver este ejemplo se ha realizado un código en Matlab. La integral se ha simplificado de la siguiente manera:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; -\frac{1}{2\pi}\int_{\partial B_1 0} log|\mathbf{x} - \mathbf{y}| d\mathbf{y} = -\frac{\pi}{4}\frac{1}{2\pi}\int_{-1} ^1 \int_{-1} ^1 log|\mathbf{x} - \mathbf{y}| dx dy &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%aSe divide el dominio de cada variable en 200 puntos. Para y1 e y2 se coge&lt;br /&gt;
%el intervalo [-1,1] pues cuando este fuera de este intervalo la función vale 0 y por tanto la integral se anulará y para x1 y x2 se coge un intervalo muy grande pues la función tiene dominio todo R2.&lt;br /&gt;
i1 = linspace(-1,1,200);&lt;br /&gt;
i2 = linspace(-1,1,200);&lt;br /&gt;
i3 = linspace(-10^4,10^4,200);&lt;br /&gt;
i4 = linspace(-10^4,10^4,200);&lt;br /&gt;
&lt;br /&gt;
% Se define la función f anteriormente obtenida&lt;br /&gt;
f = @(y1, y2, x1, x2) -(pi/4)*(1/(2*pi))*log(sqrt((y1-x1).^2 + (y2-x2).^2));&lt;br /&gt;
&lt;br /&gt;
% Generamos una malla de puntos&lt;br /&gt;
[A, B] = meshgrid(i1, i2);&lt;br /&gt;
[C, D] = meshgrid(i3,i4);&lt;br /&gt;
&lt;br /&gt;
%Creamos una matriz cero donde se irán metiendo los valores que&lt;br /&gt;
%próximamente evaluaremos&lt;br /&gt;
values = zeros(size(A)); &lt;br /&gt;
&lt;br /&gt;
% Se crea el siguiente bucle para obtener los valores que necesitamos para&lt;br /&gt;
% la representación gráfica&lt;br /&gt;
for i = 1:length(i1)&lt;br /&gt;
    for j = 1:length(i2)&lt;br /&gt;
        fnum = @(x, y) f(x, y, i3(i), i4(j)); % Se crea este bucle para ir evaluando f en los distintos puntos (x1,x2)&lt;br /&gt;
        values(i, j) = trapz(i2, trapz(i1, fnum(A, B), 2)); % Evaluar fnum en la malla (A, B) y calcular la integral por el método del trapecio&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Se dibujan todos los puntos obtenidos&lt;br /&gt;
surf(C,D,values)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La representación obtenida es la siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Unoaitana.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación se va a comprobar si la solución se comporta de la manera esperada en el infinito. Tal y como se ha especificado anteriormente el comportamiento asintótico sigue la siguiente función:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x)=-\frac{M}{2\pi} log |x| + O(\frac{1}{|x|})&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
siendo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M= \int _{\mathbb{R}^2} f(\mathbf y) d\mathbf y&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación, se compara esta función con la solución obtenida anteriormente con el fin de observar si se comporta adecuadamente. Se ha creado el siguiente código:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
graf=zeros(length(i1));&lt;br /&gt;
xgraf=zeros(length(i1));&lt;br /&gt;
for i = 1:length(i1)&lt;br /&gt;
        fnum = @(x, y) f(x, y, i3(i), i4(i));&lt;br /&gt;
        &lt;br /&gt;
        graf(i) = trapz(i2, trapz(i1, fnum(A,B), 2));&lt;br /&gt;
        xgraf(i)=sqrt(2*(i3(i)^2));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
hold on&lt;br /&gt;
hol= @(x) -1/2*log(x);&lt;br /&gt;
valy = hol(xgraf);&lt;br /&gt;
% Crear el gráfico de las líneas y los puntos&lt;br /&gt;
hold on&lt;br /&gt;
plot(xgraf, valy, '-','DisplayName','Función asintótica'); &lt;br /&gt;
plot(xgraf, graf, '*','DisplayName','Función obtenida');&lt;br /&gt;
xlabel('Eje x')&lt;br /&gt;
ylabel('Eje y')&lt;br /&gt;
title('Gráfico función asintótica y función obtenida')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Se ha obtenido la siguiente gráfica, siendo la verde la función obtenida y la azul la función asintótica:&lt;br /&gt;
[[Archivo: Dosaitana.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
Tal y como se ve, se observa que el comportamiento es el esperado.&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Grado en Matemáticas]]&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP23/24]]&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaciones_de_Laplace_y_de_Poisson&amp;diff=71708</id>
		<title>Ecuaciones de Laplace y de Poisson</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaciones_de_Laplace_y_de_Poisson&amp;diff=71708"/>
				<updated>2024-04-19T19:11:43Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: /* Comportamiento de la solución */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introducción ==&lt;br /&gt;
En este documento, nos centraremos en dos ecuaciones que tienen un amplio uso en diversos ámbitos como electrostática, mecánica de fluidos, física teórica y magnetostática: la ecuación de Laplace y la ecuación de Poisson. &lt;br /&gt;
Ambas ecuaciones las estudiaremos en el plano y las veremos aplicadas en problemas concretos. Veremos las limitaciones que presenta la fórumla de Poisson así como diferentes métodos analíticos para aproximar soluciones, y raíz de esto, analizaremos errores de aproximación. Por último, estudiaremos el comportamiento de soluciones tanto en un dominio dado, utilizando la desigualdad de Harnack, como asintóticamente en infinito.&lt;br /&gt;
 &lt;br /&gt;
 CREO QUE AQUÍ ME FALTAN PUNTOS Y COMAS&lt;br /&gt;
&lt;br /&gt;
== Ecuación de Laplace ==&lt;br /&gt;
La ecuación de Laplace, cuyo nombre nombre honra al distinguido físico-matemático Pierre-Simon Laplace, es una ecuación en derivadas parciales de tipo elíptico. REFERENCIA?&lt;br /&gt;
Construyamos un problema de derivadas parciales a partir de la ecuación de Laplace. La ecuación es,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \Delta u = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
con &amp;lt;math&amp;gt;u:\mathbb{R}^3 \rightarrow \mathbb{R}&amp;lt;/math&amp;gt; como incógnita. Esta ecuación se define en un dominio &amp;lt;math&amp;gt; \Omega &amp;lt;/math&amp;gt;, y en su frontera &amp;lt;math&amp;gt; \partial \Omega &amp;lt;/math&amp;gt; se pueden añadir condiciones de contorno Dirichlet, Neuman o mixtas. En este trabajo nos centraremos en las condiciones de contorno de tipo Dirichlet, las cuales igualan &amp;lt;math&amp;gt; u &amp;lt;/math&amp;gt; a una función específica &amp;lt;math&amp;gt; g &amp;lt;/math&amp;gt;. Con todo esto, llegamos al siguiente problema de derivadas parciales.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  \Omega \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial \Omega &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A fin de comprender mejor este problema, podemos examinar el siguiente ejemplo en concreto. &lt;br /&gt;
&lt;br /&gt;
===== Ejemplo bola unidad =====&lt;br /&gt;
Sea &amp;lt;math&amp;gt; B_1 ⊂ R^2 &amp;lt;/math&amp;gt; la bola unidad centrada en el origen. Planteamos el problema, &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_1 \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
A lo largo de este documento, en lo que tiene que ver con la ecuación de Laplace, visitaremos este ejemplo varias veces.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dentro de la resolución del problema planteado existen varios métodos por los que proceder. En este trabajo estudiaremos dos: la fórmula de Poisson y la serie de Fourier.&lt;br /&gt;
=== Solución por la fórmula de Poisson ===&lt;br /&gt;
Encontrar la solución del problema mediante la fórmula de Poisson viene determinado por el siguiente teorema.&lt;br /&gt;
&lt;br /&gt;
===== Teorema =====&lt;br /&gt;
La solución &amp;lt;math&amp;gt; u \in C^2(B_R \cup C(\overline{B_R}) &amp;lt;/math&amp;gt;del problema &amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_R \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial B_R &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt; donde &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; es una función continua viene dado por la fórmula de Poisson &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\vec{x})=\frac{R^2-|\vec{x}|^2}{w_n R}\int_{\partial B_R}\frac{g(\sigma)}{|\vec{x}-\sigma|^2} d\sigma. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es importante destacar que el denominador &amp;lt;math&amp;gt;|\vec{x}-\sigma|^2 &amp;lt;/math&amp;gt; se anula en la frontera de la bola llevándonos a una indeterminación y haciendo que la integral diverja. Esto también pasa si expresamos la fórmula en coordenadas polares &amp;lt;math&amp;gt;(r, \theta)&amp;lt;/math&amp;gt;. Tomando, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\vec{x} = (x_1, x_2) = (rcos(\theta), rsen(\theta)) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; g(rcos(\theta), rsen(\theta)) = G(\theta)&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
llegamos a la fórmula de Poisson, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; U(r,\theta)=\frac{R^2-r^2}{2\pi R}\int_{0}^{2\pi}\frac{g(s)}{R^2+r^2-2Rrcos(\theta-s)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso, el denominador de la integral también se anula para puntos cercanos a la frontera, concretamente cuando el coseno se hace 1. &lt;br /&gt;
&lt;br /&gt;
Veamos todo esto aplicado a la bola unidad pasado a coordenadas polares,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    U_{rr} + \frac{1}{r} U_r + \frac{1}{r^2} U_{\theta\theta} = 0, &amp;amp; (r, \theta) \in  B_1 \\&lt;br /&gt;
    U(1, \theta) = G(\theta), &amp;amp;   (r, \theta) \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la resolución de este problema vamos a tomar &amp;lt;math&amp;gt;G(\theta) = máx\{0, 1-\frac{2}{\pi} |\theta - \pi|\}&amp;lt;/math&amp;gt; y utilizaremos la fórmula de Poisson en polares tomando &amp;lt;math&amp;gt;R = 1&amp;lt;/math&amp;gt; y calculando la integral de manera aproximada con la fórmula del trapecio. Como hemos visto antes, la fórmula da problemas para puntos cercanos al borde. Esto lleva a una representación irregular de la frontera si dibujamos la solución sin tener en cuenta este problema.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: sol_sin_frontera_ejercicio1.png|400px|miniaturadeimagen|center|Solución del problema de Poisson sin aplicar la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
Es por esto por lo que la condición frontera no es prescindible en el problema. Para estimar &amp;lt;math&amp;gt; U(r,\theta)&amp;lt;/math&amp;gt;, utilizaremos la fórmula de Poisson para puntos ligeramente alejados del borde, y en el propio borde utilizaremos la condición frontera &amp;lt;math&amp;gt;U(R, \theta) = G(\theta)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: sol_ejercicio1.png|400px|miniaturadeimagen|center|Solución del problema de Poisson aplicando la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
En esta nueva gráfica podemos apreciar como la frontera no presenta las irregularidades anteriores. &lt;br /&gt;
Para conseguir estas gráficas hemos implementado el siguiente código en MatLab.&lt;br /&gt;
&lt;br /&gt;
====== Códigos ======&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Este código resuelve el problema planteado con la fórmula de Poisson sin aplicar condición frontera:&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g:&lt;br /&gt;
g=@(theta)max(0, 1-2/pi*abs(theta-pi));&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos r y theta sobre los que vamos a trabajar:&lt;br /&gt;
N=200; % Número de divisiones del intervalo&lt;br /&gt;
r=linspace(0,R,N); % No podemos llegar hasta la frontera&lt;br /&gt;
theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución de u con la fórmula de Poisson:&lt;br /&gt;
NN=100; % División del intervalo de integración.&lt;br /&gt;
s=linspace(0,2*pi,NN); % Intervalo de integración, para el método del trapecio.&lt;br /&gt;
u=zeros(N,N); % Inicializamos la matriz que almacena los valores de la solución.&lt;br /&gt;
for i=1:length(theta)&lt;br /&gt;
    for j=1:length(r) % Calculamos solución a través de la fórmula del trapecio:&lt;br /&gt;
        u(i,j)=1/(2*pi).*trapz(s,g(s).*(R^2-r(j).^2)./(R^2+r(j).^2-2.*r(j).*cos(s-theta(i))));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
% Creamos la malla:&lt;br /&gt;
[RR,THETA]=meshgrid(r,theta);&lt;br /&gt;
figure&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u,'EdgeColor','flat') % Representación gráfica&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('y')&lt;br /&gt;
zlabel('u(x,y)')&lt;br /&gt;
title('Solución de la ecuación de Laplace')&lt;br /&gt;
}}&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Este código resuelve el problema planteado con la fórmula de Poisson aplicando la condición frontera:&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g:&lt;br /&gt;
g=@(theta)max(0, 1-2/pi*abs(theta-pi));&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos r y theta sobre los que vamos a trabajar:&lt;br /&gt;
N=200; % Número de divisiones del intervalo&lt;br /&gt;
r=linspace(0,R-N^(-1),N-1); % No podemos llegar hasta la frontera&lt;br /&gt;
theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución de u con la fórmula de Poisson:&lt;br /&gt;
NN=1000; % División del intervalo de integración.&lt;br /&gt;
s=linspace(0,2*pi,NN); % Intervalo de integración, para el método del trapecio.&lt;br /&gt;
u=zeros(N,N); % Inicializamos la matriz que almacena los valores de la solución.&lt;br /&gt;
for i=1:length(theta)&lt;br /&gt;
    for j=1:length(r) % Calculamos solución a través de la fórmula del trapecio:&lt;br /&gt;
        u(i,j)=1/(2*pi).*trapz(s,g(s).*(R^2-r(j).^2)./(R^2+r(j).^2-2.*r(j).*cos(s-theta(i))));&lt;br /&gt;
    end&lt;br /&gt;
    % Establecemos condiciones frontera (por presentar problemas en esta):&lt;br /&gt;
    u(i,N)=g(theta(i));&lt;br /&gt;
end&lt;br /&gt;
r(N)=1;&lt;br /&gt;
% Creamos la malla:&lt;br /&gt;
[RR,THETA]=meshgrid(r,theta);&lt;br /&gt;
figure&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u,'EdgeColor','flat') % Representación gráfica&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('y')&lt;br /&gt;
zlabel('u(x,y)')&lt;br /&gt;
title('Solución de la ecuación de Laplace')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== Errores de la fórmula de Poisson =====&lt;br /&gt;
Como hemos observado anteriormente, la fórmula de Poisson presenta ciertas dificultades a la hora de aproximar la solución en la frontera, debido a la singularidad inherente de la integral. En este apartado examinaremos estas irregularidades calculando el error de la aproximación frente a la solución exacta.&lt;br /&gt;
&lt;br /&gt;
Volviendo al ejemplo de la bola unidad, esta vez vamos a suponer el problema,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_1 \\&lt;br /&gt;
    u = g(x,y) = xy, &amp;amp;   \text{x} \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que tiene como solución exacta la función armónica &amp;lt;math&amp;gt;u(x,y) = xy&amp;lt;/math&amp;gt;. Tal y como hemos hecho en el apartado anterior, calculamos la solución aproximada utilizando la fórmula de Poisson, la fórmula del trapecio y pasando a coordenadas polares.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    U_{rr} + \frac{1}{r} U_r + \frac{1}{r^2} U_{\theta\theta} = 0, &amp;amp; (r, \theta) \in  B_1 \\&lt;br /&gt;
    U(1,\theta)=G(\theta)=\cos(\theta)\sin(\theta), &amp;amp;   (r, \theta) \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vamos a distinguir entre dos tipos de puntos, aquellos que estén &amp;quot;alejados&amp;quot; de la frontera y aquellos sean inmediatos a esta. &lt;br /&gt;
Primero estudiaremos el error en puntos &amp;quot;alejados&amp;quot; de la frontera. Esto lo hacemos empleando distintas discretizaciones con &amp;lt;math&amp;gt; 10^n &amp;lt;/math&amp;gt; puntos en la fórmula del trapecio. Después, calculamos el error para cada discretización en un punto alejado, en este caso lo hacemos evaluando en &amp;lt;math&amp;gt;x = (r,\theta)=(0.9,\pi/4)&amp;lt;/math&amp;gt;. Posteriormente graficamos el error aplicando la fórmula,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;f(n):=\log_{10}(Error(10^n)), &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Obteniendo así la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: error_puntoalejado_ejercicio2.png|400px|miniaturadeimagen|center|Error de un punto alejado a la frontera]]&lt;br /&gt;
&lt;br /&gt;
Los resultados de esta gráfica cuadran con nuestra intuición, a mayor número de puntos menor es el error que se comete. Además podemos apreciar que el error se acaba estabilizando al rededor de &amp;lt;math&amp;gt;10^{-15}&amp;lt;/math&amp;gt;. Luego podemos concluir que la fórmula de Poisson proporciona una buena aproximación para puntos relativamente alejados de la frontera. &lt;br /&gt;
&lt;br /&gt;
A continuación, atendiendo a la fórmula del error &amp;quot;teórica&amp;quot; dada por el método del trapecio, la cual sigue la siguiente expresión:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;Error:=\left|-\cfrac{f''(\xi)(b-a)^3}{12n^2}\right|, &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
siendo &amp;lt;math&amp;gt;\xi&amp;lt;/math&amp;gt; un valor dentro del intervalo &amp;lt;math&amp;gt;[a,b]&amp;lt;/math&amp;gt;, y n el valor que genera la discretización para la aplicación del método del trapecio. En nuestro caso, &amp;lt;math&amp;gt;[a,b]=[0,2\pi]&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; la función a integrar en la fórmula de Poisson.&lt;br /&gt;
Ahora bien, el código de MatLab presentado al final de la sección implementa un cálculo del error máximo, tomando para cada n el error máximo en la discretización y acumulándolo en la lista &amp;lt;math&amp;gt;error\_max&amp;lt;/math&amp;gt; de tal forma que en la gráfica se presenta una representación del error máximo teórico de la fórmula del trapecio.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: comparacion_errores_ejercicio2.png|400px|miniaturadeimagen|center|Comparación errores con su máximo]]&lt;br /&gt;
&lt;br /&gt;
Como se puede apreciar de manera bastante clara en la gráfica, a medida que aumentan los puntos de la discretización, la cota va disminuyendo. Aún así, se puede apreciar que el error calculado para un punto alejado de la frontera se sigue manteniendo por debajo de dicha cota.&lt;br /&gt;
&lt;br /&gt;
Estudiemos ahora el error cometido en puntos &amp;quot;cercanos&amp;quot; a la frontera. En este caso vamos utilizar una única discretización de 100 puntos de la fórmula del trapecio y puntos que cada vez se acercan más a la frontera. Partiendo del punto &amp;lt;math&amp;gt;x = (r,\theta)=(0.9,\pi/4)&amp;lt;/math&amp;gt; vamos a ir avanzando hacia la frontera con puntos de la forma &amp;lt;math&amp;gt;(r,\theta)=(1-10^{-n}, \pi/4)&amp;lt;/math&amp;gt;. La gráfica entonces resulta ser:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: error_puntoscercanosfrontera_ejercicio2.png|400px|miniaturadeimagen|center|Error de puntos cercanos a la frontera]]&lt;br /&gt;
&lt;br /&gt;
En este caso el error incrementa según los puntos se acercan a la frontera y se acaba estabilizando en &amp;lt;math&amp;gt;-0,3&amp;lt;/math&amp;gt;.&lt;br /&gt;
El código utilizado para dibujar estas gráficas es el siguiente.&lt;br /&gt;
&lt;br /&gt;
{{matlab||codigo=&lt;br /&gt;
% El siguiente código ejecuta todas las gráficas planteadas a lo largo de esta sección&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Definimos el radio de la bola;&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos la función g:&lt;br /&gt;
g =@(theta) (R.^2.*cos(theta).*sin(theta));&lt;br /&gt;
&lt;br /&gt;
% Definimos la solución exacta:&lt;br /&gt;
u_exacta =@(r,theta) (r.^2.*cos(theta).*sin(theta));&lt;br /&gt;
&lt;br /&gt;
% Tomamos el punto r=0.9 y theta=pi/4:&lt;br /&gt;
r_valor=0.9;&lt;br /&gt;
theta_valor=pi/4;&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución u en el punto anterior:&lt;br /&gt;
n=1:1:8;&lt;br /&gt;
error=zeros(1,length(n)); % Inicializamos la matriz que almacena el error&lt;br /&gt;
error_log=zeros(1,length(n)); % Inicializamos la matriz que almacena el error logarítmico&lt;br /&gt;
u_valor=zeros(1,length(n)); % Inicializamos la matriz que almacena la solución de u para distintas discretizaciones del método del trapecio&lt;br /&gt;
for i=1:length(n)&lt;br /&gt;
    s=linspace(0,2*pi,10^(n(i))); % Intervalo de integración&lt;br /&gt;
    u_valor(i)=1/(2*pi).*trapz(s,g(s).*(R^2-r_valor.^2)./(R^2+r_valor.^2-2.*r_valor.*cos(s-theta_valor))); % Solución a través de la fórmula de Poisson&lt;br /&gt;
    &lt;br /&gt;
    % Calculamos el error:&lt;br /&gt;
    error(i)=abs(u_exacta(r_valor,theta_valor)-u_valor(i));&lt;br /&gt;
    % Calculamos el error logarítmico:&lt;br /&gt;
    error_log(i)=log10(error(i));&lt;br /&gt;
end&lt;br /&gt;
% Representamos gráficamente el error logarítmico para el punto r=0.9 y theta=pi/4:&lt;br /&gt;
plot(n,error_log,'o-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(10^n))')&lt;br /&gt;
grid on &lt;br /&gt;
grid minor&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Gráfica del error logarítmico')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Observamos la existencia de un error máximo que nos permita confirmar&lt;br /&gt;
% que los errores calculados anteriormente se encuentran por debajo siempre:&lt;br /&gt;
&lt;br /&gt;
% Calculamos la segunda derivada (requerida por la fórmula):&lt;br /&gt;
syms rr ss thetatheta&lt;br /&gt;
% Definimos de forma simbólica la función a derivar:&lt;br /&gt;
f=rr^2*cos(ss)*sin(ss)/(1+rr^2-2*rr*cos(thetatheta-ss));&lt;br /&gt;
derivada1=diff(f,ss); % Derivamos la función f en función de la variable s&lt;br /&gt;
derivada2=diff(derivada1,ss); % Derivamos la primera derivada en función de la variable s&lt;br /&gt;
% Calculamos el error máximo del método del trapecio:&lt;br /&gt;
nn=1:1:3; % Conforme el número sea más elevado aquí más aumentará el tiempo de compilación del programa.&lt;br /&gt;
error_max=zeros(length(nn),1); % Inicializamos a ceros el vector que almacenará los datos del error máximo del trapecio&lt;br /&gt;
for i=1:length(nn)&lt;br /&gt;
    N=10^i;&lt;br /&gt;
    s=linspace(0,2*pi,N);&lt;br /&gt;
    error_trapz=zeros(N,1); % Inicializamos a ceros el vector que almacenará los datos del error del trapecio para cada n&lt;br /&gt;
    for j=1:N&lt;br /&gt;
        s_valor=s(j);&lt;br /&gt;
        error_trapz(j)=log10(abs(-(2*pi).^3.*subs(derivada2, [rr,ss,thetatheta] ,[r_valor,s_valor,theta_valor])./(12.*(N.^2))));&lt;br /&gt;
    end&lt;br /&gt;
    error_max(i)=max(error_trapz);&lt;br /&gt;
end&lt;br /&gt;
% Representamos gráficamente el error máximo junto con el error calculado&lt;br /&gt;
% anteriormente:&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
plot(nn,error_log(1:length(nn)),'Color','blue')&lt;br /&gt;
plot(nn,error_max,'Color','red')&lt;br /&gt;
hold off&lt;br /&gt;
legend('Error','Error máximo')&lt;br /&gt;
title('Comparación de errores')&lt;br /&gt;
grid on&lt;br /&gt;
grid minor&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('Error')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Fijamos ahora para N=100 (puntos en la fórmula del trapecio).&lt;br /&gt;
% Vamos a calcular el error en los puntos de la forma r=1-10^(-n) y theta=pi/4 y veremos qué ocurre:&lt;br /&gt;
N=100;&lt;br /&gt;
r_valores=zeros(1,N); % Inicializamos vector que almacena los valores de r.&lt;br /&gt;
u_valores_r=zeros(1,N); % Inicializamos el vector que almacena los valores de la solución u para distintos valores de r.&lt;br /&gt;
u_exacta_r=zeros(1,N); % Inicializamos el vector que almacena los valores de la solución u exacta para distintos valores de r.&lt;br /&gt;
error_r=zeros(1,N); % Inicializamos el vector que almacena los errores.&lt;br /&gt;
error_log_r=zeros(1,N); % Inicializamos el vector que almacena los errores logarítmicos.&lt;br /&gt;
% theta_valor=pi/4 es el mismo que hemos usado antes, por lo que no lo volvemos a inicializar.&lt;br /&gt;
% Definimos el vector de integración de la fórmula del trapecio:&lt;br /&gt;
s=linspace(0,2*pi,N);&lt;br /&gt;
for j=1:N&lt;br /&gt;
    r_valores(j)=1-10^(-j);&lt;br /&gt;
    u_valores_r(j)=1/(2*pi).*trapz(s,g(s).*(R^2-r_valores(j).^2)./(R^2+r_valores(j).^2-2.*r_valores(j).*cos(s-theta_valor)));&lt;br /&gt;
    u_exacta_r(j)=u_exacta(r_valores(j),theta_valor);&lt;br /&gt;
    error_r(j)=abs(u_exacta_r(j)-u_valores_r(j));&lt;br /&gt;
    error_log_r(j)=log10(error_r(j));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
plot(1:1:N,error_log_r,'.-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(100))')&lt;br /&gt;
grid on &lt;br /&gt;
grid minor&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Errores en los puntos cercanos a la frontera')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Solución por la serie de Fourier ===&lt;br /&gt;
Una vez estudiada la solución por la fórmula de Poisson, en este apartado calcularemos la solución por serie de Fourier. La obtención de esta solución se basa en una cambio de variable a polares del problema, como el visto previamente, y resolución por separación de variables.  Hacemos esto aplicado al problema anterior en una bola de radio &amp;lt;math&amp;gt; R &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta U=U_{rr}+\frac{1}{r}U_r+\frac{1}{r^2}U_{\theta\theta}=0, r\in(0,R),\theta\in(0,2\pi)\\&lt;br /&gt;
U(R,\theta)=G(\theta)=R^2 sin(\theta)cos(\theta), \theta\in[0,2\pi).&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo cual nos conduce a, &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
U(r, \theta) = \frac{\alpha_{0}}{2}  +   \sum_{k=1}^{n} \left( \alpha_{k} \left(\frac{r}{R} \right)^k cos(k\theta) + \beta_{k} \left(\frac{r}{R} \right)^k sin(k\theta)\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que tiene coeficientes,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\alpha_{0} =\frac{1}{\pi}\int_{-\pi}^{\pi} \cos\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\alpha_{k} =\frac{1}{\pi}\int_{-\pi}^{\pi} cos(\theta) \sin(\theta) \cos\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\beta_{k} =\frac{1}{\pi}\int_{-\pi}^{\pi} cos(\theta) \sin(\theta) \sin\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Sin embargo, todos los coeficientes de Fourier son nulos, salvo por &amp;lt;math&amp;gt; \beta_2=\frac{R^2}{2}&amp;lt;/math&amp;gt;, luego la solución por series de Fourier final es, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}\sin(2\theta)=r^2\cos(\theta)\sin(\theta), r\in [0,R], \theta\in[0,2\pi)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Veamos ahora la gráfica que dibuja esta solución tomando &amp;lt;math&amp;gt; R = 1 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Tresaitana1.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Ecuación de Laplace&lt;br /&gt;
%% Apartado 3&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Definimos el radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% k términos de la serie:&lt;br /&gt;
K=[5 10 100];&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g y la función u exacta:&lt;br /&gt;
g=@(theta) R.^2.*cos(theta).*sin(theta);&lt;br /&gt;
u_exacta=@(r,theta) r.^2.*cos(theta).*sin(theta);&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos de theta y r:&lt;br /&gt;
N=300; % Número de divisiones de los intervalos theta y r.&lt;br /&gt;
Theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
r=linspace(0,R,N); % Intervalo r.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Calculamos los coeficientes de Fourier para distintos k-términos:&lt;br /&gt;
for i=1:length(K)&lt;br /&gt;
    k=K(i); % k-términos de la serie.&lt;br /&gt;
    int=linspace(-pi,pi,k); % Intervalo de integración para los coef de Fourier.&lt;br /&gt;
    a0=1/pi.*integral(g,-pi,pi); % Coeficiente de Fourier a_0 (asociado a 1/2).&lt;br /&gt;
    a=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al coseno.&lt;br /&gt;
    b=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al seno.&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        f_cos=@(theta) g(theta).*cos(j.*theta); % Definimos la función a integrar asociada al coseno.&lt;br /&gt;
        f_sin=@(theta) g(theta).*sin(j.*theta); % Definimos la función a integrar asociada al seno.&lt;br /&gt;
        a(j)=1/pi.*integral(f_cos,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fourier del coseno.&lt;br /&gt;
        b(j)=1/pi.*integral(f_sin,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fouries del seno.&lt;br /&gt;
    end&lt;br /&gt;
    % Calculamos la solución u_k asociada al número de términos de la serie:&lt;br /&gt;
    suma=@(r,theta)0;&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        suma=@(r,theta) suma(r,theta) + a(j).*(r/R).^j.*cos(j.*theta)+b(j).*(r/R).^j.*sin(j.*theta);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['u_' num2str(k) '=@(r,theta) 1/2*a0 + suma(r,theta);']);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
[RR,THETA]=meshgrid(r,Theta);&lt;br /&gt;
figure&lt;br /&gt;
for i=1:length(K)&lt;br /&gt;
    k=K(i);&lt;br /&gt;
    subplot(2,2,i)&lt;br /&gt;
    eval(['surf(RR.*cos(THETA),RR.*sin(THETA),u_' num2str(k) '(RR,THETA),&amp;quot;EdgeColor&amp;quot;,&amp;quot;flat&amp;quot;)'])&lt;br /&gt;
    title(&amp;quot;Solución de u para k=&amp;quot;, num2str(k))&lt;br /&gt;
end&lt;br /&gt;
subplot(2,2,4)&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u_exacta(RR,THETA),&amp;quot;EdgeColor&amp;quot;,&amp;quot;flat&amp;quot;)&lt;br /&gt;
title('Solución exacta')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Errores de la solución por serie de Fourier ====&lt;br /&gt;
Al igual que con la solución dada por la fórmula de Poisson, vamos a comparar la solución calculada con la solución exacta &amp;lt;math&amp;gt;u(x,y)=xy&amp;lt;/math&amp;gt; en la bola de radio 1. Vamos a contrastar las soluciones con 5, 10 y 100 términos con la exacta. Calcularemos el error resultante al aproximar la serie de Fourier y lo representamos gráficamente, mostrando el máximo error en función del número de términos utilizados en una escala logarítmica, es decir, pintaremos la función, &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \log_{10}(error(n)) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; error(n) &amp;lt;/math&amp;gt; es ahora el supremo del error con &amp;lt;math&amp;gt;n &amp;lt;/math&amp;gt;términos. Obetenemos así la siguente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Tresaitana2.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
Podemos apreciar en esta gráfica errores de orden muy pequeño, por lo general, los podemos considerar pequeño. Luego, nos damos cuenta de que, a diferencia de solución por la fórmula de Poisson, esta no nos da problemas en la frontera. Veamos el código utilizado para hacer la gráfica.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% A continuación se calcularán los errores de la aproximación de Fourier en función de los términos:&lt;br /&gt;
KK=0:1:100;&lt;br /&gt;
error_log=zeros(length(KK),1); % Inicializamos el vector donde se almacenarán los errores logarítmicos.&lt;br /&gt;
for i=1:length(KK)&lt;br /&gt;
    k=KK(i);&lt;br /&gt;
    int=linspace(-pi,pi,k); % Intervalo de integración para los coef de Fourier.&lt;br /&gt;
    a0=1/pi.*integral(g,-pi,pi); % Coeficiente de Fourier a_0 (asociado a 1/2).&lt;br /&gt;
    a=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al coseno.&lt;br /&gt;
    b=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al seno.&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        f_cos=@(theta) g(theta).*cos(j.*theta); % Definimos la función a integrar asociada al coseno.&lt;br /&gt;
        f_sin=@(theta) g(theta).*sin(j.*theta); % Definimos la función a integrar asociada al seno.&lt;br /&gt;
        a(j)=1/pi.*integral(f_cos,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fourier del coseno.&lt;br /&gt;
        b(j)=1/pi.*integral(f_sin,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fouries del seno.&lt;br /&gt;
    end&lt;br /&gt;
    % Calculamos la solución u_k asociada al número de términos de la serie:&lt;br /&gt;
    suma=@(r,theta)0;&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        suma=@(r,theta) suma(r,theta) + a(j).*(r/R).^j.*cos(j.*theta)+b(j).*(r/R).^j.*sin(j.*theta);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['u_' num2str(i) '=@(r,theta) 1/2*a0 + suma(r,theta);']);&lt;br /&gt;
    eval(['u=@(r,theta)u_' num2str(i) '(r,theta) ;']);&lt;br /&gt;
    U_exacta=u_exacta(RR,THETA);&lt;br /&gt;
    U_fourier=u(RR,THETA);&lt;br /&gt;
    valores_max=max(U_exacta-U_fourier);&lt;br /&gt;
    sup=max(valores_max,[],'all');&lt;br /&gt;
    error_log(i)=log10(sup);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
plot(KK,error_log)&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Errores supremos frente al número de términos')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(10^n))')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Comportamiento de la solución ===&lt;br /&gt;
En esta sección, y atendiendo al comportamiento de la solución estudiaremos en qué región se han de encontrar las soluciones armónicas dentro  de la bola &amp;lt;math&amp;gt;B_R&amp;lt;/math&amp;gt;, siendo &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; el radio de la bola, que tengan el mismo valor que nuestra solución en el (0,0).&lt;br /&gt;
&lt;br /&gt;
La '''desigualdad de Harnack''' establece: Sea &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; armónica y &amp;lt;math&amp;gt;0\leq u&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;\Omega \in \mathbb{R}^n&amp;lt;/math&amp;gt;. Supongamos &amp;lt;math&amp;gt;\overline{B_{R}(z)}\subset \Omega&amp;lt;/math&amp;gt;. Entonces:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{R^{n-2} (R-r)}{(R+r)^{n-1}} u(z)\leq u(x) \leq \frac{R^{n-2}  (R+r)}{(R-r)^{n-1}}u(z), \forall x \in B_{R}(z).&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para proceder al estudio planteado, comenzamos calculando el mínimo de la función &amp;lt;math&amp;gt;g(x,y)=xy&amp;lt;/math&amp;gt; en la frontera de la bola &amp;lt;math&amp;gt;B_R&amp;lt;/math&amp;gt; al que llamaremos &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;. Para facilitar los cálculos de aquí en adelante trabajaremos en coordenadas polares, por lo que nuestra función &amp;lt;math&amp;gt;g(x,y)=xy&amp;lt;/math&amp;gt; pasa a ser &amp;lt;math&amp;gt;g(\theta)=R^2cos(\theta)sin(\theta)&amp;lt;/math&amp;gt;, siendo &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; el radio de la bola. Para el cálculo del mínimo se ha empleado un código de Matlab presentado al final de esta sección.&lt;br /&gt;
&lt;br /&gt;
A continuación, definimos la función &amp;lt;math&amp;gt;v:=u-M &amp;lt;/math&amp;gt; , siendo u nuestra solución del problema. Esta función &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; es positiva y armónica, por lo que podemos aplicar la desigualdad de Harnack para &amp;lt;math&amp;gt;\mathbb{R}&amp;lt;/math&amp;gt;, es decir, &amp;lt;math&amp;gt;n=2&amp;lt;/math&amp;gt;. Obteniendo lo siguiente:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{(R-r)}{(R+r)} v(0,0) \leq v(x,y) \leq \frac{(R+r)}{(R-r)}v(0,0), \forall (x,y) \in B_{R}. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Representando gráficamente las cotas planteadas, obtenemos las siguientes gráficas:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: harnack_ejercicio4_n2.png|600px|thumb|center|Desigualdad de Harnack en &amp;lt;math&amp;gt;R^2&amp;lt;/math&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Las desigualdades de Harnack establecen límites uniformes para todas las soluciones armónicas dentro de una bola, independientemente de su radio. Sin embargo, el valor específico de estas soluciones en un punto dado, como &amp;lt;math&amp;gt;v(0,0)&amp;lt;/math&amp;gt;, varía con el tamaño de la bola, lo que sugiere una especie de traslación en la región donde las soluciones armónicas son iguales a &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; en el punto &amp;lt;math&amp;gt;(0,0)&amp;lt;/math&amp;gt;. A medida que aumenta el radio de la bola, tanto las cotas superior e inferior aumentan en amplitud, pero la región cubierta por estas cotas se estrecha. Este fenómeno indica que, aunque la estructura de las cotas permanece constante, el rango de valores en el que pueden variar las soluciones armónicas se reduce a medida que la bola crece en tamaño.&lt;br /&gt;
&lt;br /&gt;
Procediendo a un estudio de la desigualdad en &amp;lt;math&amp;gt;\mathbb{R}^3&amp;lt;/math&amp;gt; obtenemos las siguientes desigualdades:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{R^3(R-r)}{2(R+r)^{2}} \leq v(x,y,z) \leq \frac{R^3(R+r)}{2(R-r)^2} , \forall (x,y,z) \in B_{R}, &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Llevando a cabo un procedimiento análogo al anterior obtenemos las siguientes gráficas:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: harnack_ejercicio4_n3.png|600px|thumb|center|Desigualdad de Harnack en &amp;lt;math&amp;gt;R^3&amp;lt;/math&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Se puede concluir de manera análoga al caso de &amp;lt;math&amp;gt;R^2&amp;lt;/math&amp;gt;, pero con una región mayor.&lt;br /&gt;
&lt;br /&gt;
El código de Matlab empleado para la representación de las gráficas y el cálculo de las cotas en &amp;lt;math&amp;gt;R^2&amp;lt;/math&amp;gt; es el siguiente:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format short&lt;br /&gt;
&lt;br /&gt;
% Definimos los radios de las bolas:&lt;br /&gt;
RR=[1 2 10];&lt;br /&gt;
for i=1:length(RR)&lt;br /&gt;
    R=RR(i);&lt;br /&gt;
    % Definimos la dimensión del espacio:&lt;br /&gt;
    n=2;&lt;br /&gt;
    &lt;br /&gt;
    % Definimos la función g definida en la frontera:&lt;br /&gt;
    g=@(theta) R.^2.*cos(theta).*sin(theta);&lt;br /&gt;
    &lt;br /&gt;
    % Definimos la solución exacta u:&lt;br /&gt;
    u_exacta=@(r,theta) r.^2.*cos(theta).*sin(theta);&lt;br /&gt;
    &lt;br /&gt;
    % Calculamos el mínimo de esta función:&lt;br /&gt;
    N=100;&lt;br /&gt;
    theta=linspace(0,2*pi,N);&lt;br /&gt;
    r_con_frontera=linspace(0,R,N+1);&lt;br /&gt;
    r=r_con_frontera(1:N);&lt;br /&gt;
    M=min(g(theta));&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    % Consideramos la función armónica v=u-M:&lt;br /&gt;
    v=@(r,theta) u_exacta(r,theta)-M;&lt;br /&gt;
    &lt;br /&gt;
    % Definimos las cotas de la desigualdad de Harnack:&lt;br /&gt;
    cota_inferior=@(r)(R.^(n-2).*(R-r)./((R+r).^(n-1))).*v(0,0);&lt;br /&gt;
    cota_superior=@(r)(R.^(n-2).*(R+r)./((R-r).^(n-1))).*v(0,0);&lt;br /&gt;
    &lt;br /&gt;
    % Dibujamos las cotas para encontrar la región en la que deben estar las&lt;br /&gt;
    % soluciones armónicas de la B_1, que valen lo mismo que u en el (0,0):&lt;br /&gt;
    subplot(1,3,i)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(r,log10(cota_inferior(r)),&amp;quot;Color&amp;quot;,'red')&lt;br /&gt;
    plot(r,log10(cota_superior(r)),&amp;quot;Color&amp;quot;,'blue')&lt;br /&gt;
    xlabel('r')&lt;br /&gt;
    legend('Cota inferior','Cota superior','Location','southwest')&lt;br /&gt;
    title('Región de soluciones en la Bola de radio',num2str(R))&lt;br /&gt;
    grid on&lt;br /&gt;
    grid minor&lt;br /&gt;
    hold off&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
El código de Matlab empleado para la representación de las gráficas y el cálculo de las cotas en &amp;lt;math&amp;gt;R^3&amp;lt;/math&amp;gt; es el siguiente:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Definimos los radios de las bolas:&lt;br /&gt;
RR=[1 2 10];&lt;br /&gt;
for i=1:length(RR)&lt;br /&gt;
    R=RR(i);&lt;br /&gt;
    % Definimos la dimensión del espacio:&lt;br /&gt;
    n=3;&lt;br /&gt;
    &lt;br /&gt;
    % Definimos la función g definida en la frontera:&lt;br /&gt;
    g=@(theta) R.^2.*cos(theta).*sin(theta);&lt;br /&gt;
    &lt;br /&gt;
    % Definimos la solución exacta u:&lt;br /&gt;
    u_exacta=@(r,theta) r.^2.*cos(theta).*sin(theta);&lt;br /&gt;
    &lt;br /&gt;
    % Calculamos el mínimo de esta función:&lt;br /&gt;
    N=300;&lt;br /&gt;
    theta=linspace(0,2*pi,N);&lt;br /&gt;
    r_con_frontera=linspace(0,R,N+1);&lt;br /&gt;
    r=r_con_frontera(1:N);&lt;br /&gt;
    M=min(g(theta));&lt;br /&gt;
    &lt;br /&gt;
    % Consideramos la función armónica v=u-M:&lt;br /&gt;
    v=@(r,theta) u_exacta(r,theta)-M;&lt;br /&gt;
    &lt;br /&gt;
    % Definimos las cotas de la desigualdad de Harnack:&lt;br /&gt;
    cota_inferior=@(r)R.^(n-2).*(R-r)./(R+r).^(n-1).*v(0,0);&lt;br /&gt;
    cota_superior=@(r)R.^(n-2).*(R+r)./(R-r).^(n-1).*v(0,0);&lt;br /&gt;
    &lt;br /&gt;
    % Dibujamos las cotas para encontrar la región en la que deben estar las&lt;br /&gt;
    % soluciones armónicas de la B_1, que valen lo mismo que u en el (0,0):&lt;br /&gt;
    subplot(1,3,i)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(r,log10(cota_inferior(r)),&amp;quot;Color&amp;quot;,'red')&lt;br /&gt;
    plot(r,log10(cota_superior(r)),&amp;quot;Color&amp;quot;,'blue')&lt;br /&gt;
    xlabel('r')&lt;br /&gt;
    legend('Cota inferior','Cota superior','Location','southwest')&lt;br /&gt;
    title('Región de soluciones en la Bola de radio',num2str(R))&lt;br /&gt;
    grid on&lt;br /&gt;
    grid minor&lt;br /&gt;
    hold off&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Ecuación de Poisson ==&lt;br /&gt;
&lt;br /&gt;
En esta parte del documento se va a proceder a resolver la ecuación de Poisson mediante un nuevo método. En primer lugar, esta ecuación viene dada por  &amp;lt;math&amp;gt; \Delta u = f &amp;lt;/math&amp;gt; siendo &amp;lt;math&amp;gt;u:\mathbb{R}^n \rightarrow \mathbb{R}&amp;lt;/math&amp;gt;y &amp;lt;math&amp;gt; f \in C^2(\mathbb{R})&amp;lt;/math&amp;gt;. Para este estudio se particularizará para n=2 y n=3.&lt;br /&gt;
&lt;br /&gt;
Se comenzará definiendo la solución fundamental de esta ecuación, pues se utilizará posteriormente para calcular el potencial newtoniano o logarítimico. Esta viene dada por &amp;lt;math&amp;gt;  \phi(x) = -\frac{1}{2\pi} log(|x|) &amp;lt;/math&amp;gt; si n=2 y &amp;lt;math&amp;gt;  \phi(x) = \frac{1}{4\pi |x| } &amp;lt;/math&amp;gt; si n=3.&lt;br /&gt;
=== Potencial newtoniano para &amp;lt;math&amp;gt; \mathbb{R}^3&amp;lt;/math&amp;gt; ===&lt;br /&gt;
Supongamos que &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
representa la densidad de una carga contenida en un conjunto compacto dentro del espacio tridimensional &amp;lt;math&amp;gt; \mathbb{R}^3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Entonces, la expresión &amp;lt;math&amp;gt; \phi(x-y)f(y)dy&amp;lt;/math&amp;gt; denota el potencial en el punto x. De esta manera el potencial total viene dado por la siguiente expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\mathbf{x}) = \int_{\mathbb{R}^n} f(\mathbf{y}) \phi(\mathbf{x} - \mathbf{y}) d\mathbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta fórmula se conoce como potencial Newtoniano de f y se aplica sobre funciones que en el infinito tienden de manera rápida a cero.&lt;br /&gt;
&lt;br /&gt;
A su vez, sea &amp;lt;math&amp;gt;f \in C^2(\mathbb{R}^3)&amp;lt;/math&amp;gt; con soporte compacto. Sea &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; el potencial newtoniano de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, definido por el potencial Newtoniano. Entonces, &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; es la única solución en &amp;lt;math&amp;gt;\mathbb{R}^3&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;\Delta u = -f&amp;lt;/math&amp;gt;  que pertenece a &amp;lt;math&amp;gt;C^2(\mathbb{R}^3)&amp;lt;/math&amp;gt; y se anula en el infinito. Es decir, dado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \begin{cases}&lt;br /&gt;
     \Delta u = -f \\&lt;br /&gt;
   u(x) \rightarrow 0  &amp;amp; \text{si } |x| \rightarrow \infty&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
su solución viene dada por el potencial newtoniano que se presenta anteriormente.&lt;br /&gt;
&lt;br /&gt;
=== Potencial logarítmico para &amp;lt;math&amp;gt; \mathbb{R}^2&amp;lt;/math&amp;gt; ===&lt;br /&gt;
Si el problema se presenta en &amp;lt;math&amp;gt; \mathbb{R}^2&amp;lt;/math&amp;gt; el potencial newtoniano se sustituye por el potencial logarítimico:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\mathbf{x}) = -\frac{1}{2\pi}\int_{\mathbb{R}^2}  log|\mathbf{x} - \mathbf{y}|f(\mathbf{y}) d\mathbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta manera, Sea &amp;lt;math&amp;gt;f \in C^2(\mathbb{R}^2)&amp;lt;/math&amp;gt; con soporte compacto, &amp;lt;math&amp;gt;u(\mathbf{x})&amp;lt;/math&amp;gt; es la única solución en &amp;lt;math&amp;gt;\mathbb{R}^2&amp;lt;/math&amp;gt; de:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \begin{cases}&lt;br /&gt;
     \Delta u = -f \\&lt;br /&gt;
   u(x)=-\frac{M}{2\pi} log |x| + O\left(\frac{1}{|x|} \right)  &amp;amp; \text{si } |x| \rightarrow \infty&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M= \int _{\mathbb{R}^2} f(\mathbf y) d\mathbf y&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
A continuación, veremos un ejemplo de lo explicado anteriormente para una correcta comprensión de ello. De esta manera, mediante el potencial logarítmico se aproximará la ecuación de Poisson cuando f sea la función característica de la bola de radio 1 y se estudiará su comportamiento en el infinito.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Para resolver este ejemplo se ha realizado un código en Matlab. La integral se ha simplificado de la siguiente manera:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; -\frac{1}{2\pi}\int_{\partial B_1 0} log|\mathbf{x} - \mathbf{y}| d\mathbf{y} = -\frac{\pi}{4}\frac{1}{2\pi}\int_{-1} ^1 \int_{-1} ^1 log|\mathbf{x} - \mathbf{y}| dx dy &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%aSe divide el dominio de cada variable en 200 puntos. Para y1 e y2 se coge&lt;br /&gt;
%el intervalo [-1,1] pues cuando este fuera de este intervalo la función vale 0 y por tanto la integral se anulará y para x1 y x2 se coge un intervalo muy grande pues la función tiene dominio todo R2.&lt;br /&gt;
i1 = linspace(-1,1,200);&lt;br /&gt;
i2 = linspace(-1,1,200);&lt;br /&gt;
i3 = linspace(-10^4,10^4,200);&lt;br /&gt;
i4 = linspace(-10^4,10^4,200);&lt;br /&gt;
&lt;br /&gt;
% Se define la función f anteriormente obtenida&lt;br /&gt;
f = @(y1, y2, x1, x2) -(pi/4)*(1/(2*pi))*log(sqrt((y1-x1).^2 + (y2-x2).^2));&lt;br /&gt;
&lt;br /&gt;
% Generamos una malla de puntos&lt;br /&gt;
[A, B] = meshgrid(i1, i2);&lt;br /&gt;
[C, D] = meshgrid(i3,i4);&lt;br /&gt;
&lt;br /&gt;
%Creamos una matriz cero donde se irán metiendo los valores que&lt;br /&gt;
%próximamente evaluaremos&lt;br /&gt;
values = zeros(size(A)); &lt;br /&gt;
&lt;br /&gt;
% Se crea el siguiente bucle para obtener los valores que necesitamos para&lt;br /&gt;
% la representación gráfica&lt;br /&gt;
for i = 1:length(i1)&lt;br /&gt;
    for j = 1:length(i2)&lt;br /&gt;
        fnum = @(x, y) f(x, y, i3(i), i4(j)); % Se crea este bucle para ir evaluando f en los distintos puntos (x1,x2)&lt;br /&gt;
        values(i, j) = trapz(i2, trapz(i1, fnum(A, B), 2)); % Evaluar fnum en la malla (A, B) y calcular la integral por el método del trapecio&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Se dibujan todos los puntos obtenidos&lt;br /&gt;
surf(C,D,values)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La representación obtenida es la siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Unoaitana.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación se va a comprobar si la solución se comporta de la manera esperada en el infinito. Tal y como se ha especificado anteriormente el comportamiento asintótico sigue la siguiente función:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x)=-\frac{M}{2\pi} log |x| + O(\frac{1}{|x|})&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
siendo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M= \int _{\mathbb{R}^2} f(\mathbf y) d\mathbf y&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación, se compara esta función con la solución obtenida anteriormente con el fin de observar si se comporta adecuadamente. Se ha creado el siguiente código:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
graf=zeros(length(i1));&lt;br /&gt;
xgraf=zeros(length(i1));&lt;br /&gt;
for i = 1:length(i1)&lt;br /&gt;
        fnum = @(x, y) f(x, y, i3(i), i4(i));&lt;br /&gt;
        &lt;br /&gt;
        graf(i) = trapz(i2, trapz(i1, fnum(A,B), 2));&lt;br /&gt;
        xgraf(i)=sqrt(2*(i3(i)^2));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
hold on&lt;br /&gt;
hol= @(x) -1/2*log(x);&lt;br /&gt;
valy = hol(xgraf);&lt;br /&gt;
% Crear el gráfico de las líneas y los puntos&lt;br /&gt;
hold on&lt;br /&gt;
plot(xgraf, valy, '-','DisplayName','Función asintótica'); &lt;br /&gt;
plot(xgraf, graf, '*','DisplayName','Función obtenida');&lt;br /&gt;
xlabel('Eje x')&lt;br /&gt;
ylabel('Eje y')&lt;br /&gt;
title('Gráfico función asintótica y función obtenida')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Se ha obtenido la siguiente gráfica, siendo la verde la función obtenida y la azul la función asintótica:&lt;br /&gt;
[[Archivo: Dosaitana.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
Tal y como se ve, se observa que el comportamiento es el esperado.&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaciones_de_Laplace_y_de_Poisson&amp;diff=71684</id>
		<title>Ecuaciones de Laplace y de Poisson</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaciones_de_Laplace_y_de_Poisson&amp;diff=71684"/>
				<updated>2024-04-19T19:00:13Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: /* Comportamiento de la solución */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introducción ==&lt;br /&gt;
En este documento, nos centraremos en dos ecuaciones que tienen un amplio uso en diversos ámbitos como electrostática, mecánica de fluidos, física teórica y magnetostática: la ecuación de Laplace y la ecuación de Poisson. &lt;br /&gt;
Ambas ecuaciones las estudiaremos en el plano y las veremos aplicadas en problemas concretos. Veremos las limitaciones que presenta la fórumla de Poisson así como diferentes métodos analíticos para aproximar soluciones, y raíz de esto, analizaremos errores de aproximación. Por último, estudiaremos el comportamiento de soluciones tanto en un dominio dado, utilizando la desigualdad de Harnack, como asintóticamente en infinito.&lt;br /&gt;
 &lt;br /&gt;
 CREO QUE AQUÍ ME FALTAN PUNTOS Y COMAS&lt;br /&gt;
&lt;br /&gt;
== Ecuación de Laplace ==&lt;br /&gt;
La ecuación de Laplace, cuyo nombre nombre honra al distinguido físico-matemático Pierre-Simon Laplace, es una ecuación en derivadas parciales de tipo elíptico. REFERENCIA?&lt;br /&gt;
Construyamos un problema de derivadas parciales a partir de la ecuación de Laplace. La ecuación es,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \Delta u = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
con &amp;lt;math&amp;gt;u:\mathbb{R}^3 \rightarrow \mathbb{R}&amp;lt;/math&amp;gt; como incógnita. Esta ecuación se define en un dominio &amp;lt;math&amp;gt; \Omega &amp;lt;/math&amp;gt;, y en su frontera &amp;lt;math&amp;gt; \partial \Omega &amp;lt;/math&amp;gt; se pueden añadir condiciones de contorno Dirichlet, Neuman o mixtas. En este trabajo nos centraremos en las condiciones de contorno de tipo Dirichlet, las cuales igualan &amp;lt;math&amp;gt; u &amp;lt;/math&amp;gt; a una función específica &amp;lt;math&amp;gt; g &amp;lt;/math&amp;gt;. Con todo esto, llegamos al siguiente problema de derivadas parciales.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  \Omega \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial \Omega &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A fin de comprender mejor este problema, podemos examinar el siguiente ejemplo en concreto. &lt;br /&gt;
&lt;br /&gt;
===== Ejemplo bola unidad =====&lt;br /&gt;
Sea &amp;lt;math&amp;gt; B_1 ⊂ R^2 &amp;lt;/math&amp;gt; la bola unidad centrada en el origen. Planteamos el problema, &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_1 \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
A lo largo de este documento, en lo que tiene que ver con la ecuación de Laplace, visitaremos este ejemplo varias veces.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dentro de la resolución del problema planteado existen varios métodos por los que proceder. En este trabajo estudiaremos dos: la fórmula de Poisson y la serie de Fourier.&lt;br /&gt;
=== Solución por la fórmula de Poisson ===&lt;br /&gt;
Encontrar la solución del problema mediante la fórmula de Poisson viene determinado por el siguiente teorema.&lt;br /&gt;
&lt;br /&gt;
===== Teorema =====&lt;br /&gt;
La solución &amp;lt;math&amp;gt; u \in C^2(B_R \cup C(\overline{B_R}) &amp;lt;/math&amp;gt;del problema &amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_R \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial B_R &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt; donde &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; es una función continua viene dado por la fórmula de Poisson &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\vec{x})=\frac{R^2-|\vec{x}|^2}{w_n R}\int_{\partial B_R}\frac{g(\sigma)}{|\vec{x}-\sigma|^2} d\sigma. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es importante destacar que el denominador &amp;lt;math&amp;gt;|\vec{x}-\sigma|^2 &amp;lt;/math&amp;gt; se anula en la frontera de la bola llevándonos a una indeterminación y haciendo que la integral diverja. Esto también pasa si expresamos la fórmula en coordenadas polares &amp;lt;math&amp;gt;(r, \theta)&amp;lt;/math&amp;gt;. Tomando, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\vec{x} = (x_1, x_2) = (rcos(\theta), rsen(\theta)) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; g(rcos(\theta), rsen(\theta)) = G(\theta)&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
llegamos a la fórmula de Poisson, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; U(r,\theta)=\frac{R^2-r^2}{2\pi R}\int_{0}^{2\pi}\frac{g(s)}{R^2+r^2-2Rrcos(\theta-s)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso, el denominador de la integral también se anula para puntos cercanos a la frontera, concretamente cuando el coseno se hace 1. &lt;br /&gt;
&lt;br /&gt;
Veamos todo esto aplicado a la bola unidad pasado a coordenadas polares,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    U_{rr} + \frac{1}{r} U_r + \frac{1}{r^2} U_{\theta\theta} = 0, &amp;amp; (r, \theta) \in  B_1 \\&lt;br /&gt;
    U(1, \theta) = G(\theta), &amp;amp;   (r, \theta) \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la resolución de este problema vamos a tomar &amp;lt;math&amp;gt;G(\theta) = máx\{0, 1-\frac{2}{\pi} |\theta - \pi|\}&amp;lt;/math&amp;gt; y utilizaremos la fórmula de Poisson en polares tomando &amp;lt;math&amp;gt;R = 1&amp;lt;/math&amp;gt; y calculando la integral de manera aproximada con la fórmula del trapecio. Como hemos visto antes, la fórmula da problemas para puntos cercanos al borde. Esto lleva a una representación irregular de la frontera si dibujamos la solución sin tener en cuenta este problema.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: sol_sin_frontera_ejercicio1.png|400px|miniaturadeimagen|center|Solución del problema de Poisson sin aplicar la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
Es por esto por lo que la condición frontera no es prescindible en el problema. Para estimar &amp;lt;math&amp;gt; U(r,\theta)&amp;lt;/math&amp;gt;, utilizaremos la fórmula de Poisson para puntos ligeramente alejados del borde, y en el propio borde utilizaremos la condición frontera &amp;lt;math&amp;gt;U(R, \theta) = G(\theta)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: sol_ejercicio1.png|400px|miniaturadeimagen|center|Solución del problema de Poisson aplicando la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
En esta nueva gráfica podemos apreciar como la frontera no presenta las irregularidades anteriores. &lt;br /&gt;
Para conseguir estas gráficas hemos implementado el siguiente código en MatLab.&lt;br /&gt;
&lt;br /&gt;
====== Códigos ======&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Este código resuelve el problema planteado con la fórmula de Poisson sin aplicar condición frontera:&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g:&lt;br /&gt;
g=@(theta)max(0, 1-2/pi*abs(theta-pi));&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos r y theta sobre los que vamos a trabajar:&lt;br /&gt;
N=200; % Número de divisiones del intervalo&lt;br /&gt;
r=linspace(0,R,N); % No podemos llegar hasta la frontera&lt;br /&gt;
theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución de u con la fórmula de Poisson:&lt;br /&gt;
NN=100; % División del intervalo de integración.&lt;br /&gt;
s=linspace(0,2*pi,NN); % Intervalo de integración, para el método del trapecio.&lt;br /&gt;
u=zeros(N,N); % Inicializamos la matriz que almacena los valores de la solución.&lt;br /&gt;
for i=1:length(theta)&lt;br /&gt;
    for j=1:length(r) % Calculamos solución a través de la fórmula del trapecio:&lt;br /&gt;
        u(i,j)=1/(2*pi).*trapz(s,g(s).*(R^2-r(j).^2)./(R^2+r(j).^2-2.*r(j).*cos(s-theta(i))));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
% Creamos la malla:&lt;br /&gt;
[RR,THETA]=meshgrid(r,theta);&lt;br /&gt;
figure&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u,'EdgeColor','flat') % Representación gráfica&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('y')&lt;br /&gt;
zlabel('u(x,y)')&lt;br /&gt;
title('Solución de la ecuación de Laplace')&lt;br /&gt;
}}&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Este código resuelve el problema planteado con la fórmula de Poisson aplicando la condición frontera:&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g:&lt;br /&gt;
g=@(theta)max(0, 1-2/pi*abs(theta-pi));&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos r y theta sobre los que vamos a trabajar:&lt;br /&gt;
N=200; % Número de divisiones del intervalo&lt;br /&gt;
r=linspace(0,R-N^(-1),N-1); % No podemos llegar hasta la frontera&lt;br /&gt;
theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución de u con la fórmula de Poisson:&lt;br /&gt;
NN=1000; % División del intervalo de integración.&lt;br /&gt;
s=linspace(0,2*pi,NN); % Intervalo de integración, para el método del trapecio.&lt;br /&gt;
u=zeros(N,N); % Inicializamos la matriz que almacena los valores de la solución.&lt;br /&gt;
for i=1:length(theta)&lt;br /&gt;
    for j=1:length(r) % Calculamos solución a través de la fórmula del trapecio:&lt;br /&gt;
        u(i,j)=1/(2*pi).*trapz(s,g(s).*(R^2-r(j).^2)./(R^2+r(j).^2-2.*r(j).*cos(s-theta(i))));&lt;br /&gt;
    end&lt;br /&gt;
    % Establecemos condiciones frontera (por presentar problemas en esta):&lt;br /&gt;
    u(i,N)=g(theta(i));&lt;br /&gt;
end&lt;br /&gt;
r(N)=1;&lt;br /&gt;
% Creamos la malla:&lt;br /&gt;
[RR,THETA]=meshgrid(r,theta);&lt;br /&gt;
figure&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u,'EdgeColor','flat') % Representación gráfica&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('y')&lt;br /&gt;
zlabel('u(x,y)')&lt;br /&gt;
title('Solución de la ecuación de Laplace')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== Errores de la fórmula de Poisson =====&lt;br /&gt;
Como hemos observado anteriormente, la fórmula de Poisson presenta ciertas dificultades a la hora de aproximar la solución en la frontera, debido a la singularidad inherente de la integral. En este apartado examinaremos estas irregularidades calculando el error de la aproximación frente a la solución exacta.&lt;br /&gt;
&lt;br /&gt;
Volviendo al ejemplo de la bola unidad, esta vez vamos a suponer el problema,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_1 \\&lt;br /&gt;
    u = g(x,y) = xy, &amp;amp;   \text{x} \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que tiene como solución exacta la función armónica &amp;lt;math&amp;gt;u(x,y) = xy&amp;lt;/math&amp;gt;. Tal y como hemos hecho en el apartado anterior, calculamos la solución aproximada utilizando la fórmula de Poisson, la fórmula del trapecio y pasando a coordenadas polares.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    U_{rr} + \frac{1}{r} U_r + \frac{1}{r^2} U_{\theta\theta} = 0, &amp;amp; (r, \theta) \in  B_1 \\&lt;br /&gt;
    U(1,\theta)=G(\theta)=\cos(\theta)\sin(\theta), &amp;amp;   (r, \theta) \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vamos a distinguir entre dos tipos de puntos, aquellos que estén &amp;quot;alejados&amp;quot; de la frontera y aquellos sean inmediatos a esta. &lt;br /&gt;
Primero estudiaremos el error en puntos &amp;quot;alejados&amp;quot; de la frontera. Esto lo hacemos empleando distintas discretizaciones con &amp;lt;math&amp;gt; 10^n &amp;lt;/math&amp;gt; puntos en la fórmula del trapecio. Después, calculamos el error para cada discretización en un punto alejado, en este caso lo hacemos evaluando en &amp;lt;math&amp;gt;x = (r,\theta)=(0.9,\pi/4)&amp;lt;/math&amp;gt;. Posteriormente graficamos el error aplicando la fórmula,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;f(n):=\log_{10}(Error(10^n)), &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Obteniendo así la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: error_puntoalejado_ejercicio2.png|400px|miniaturadeimagen|center|Error de un punto alejado a la frontera]]&lt;br /&gt;
&lt;br /&gt;
Los resultados de esta gráfica cuadran con nuestra intuición, a mayor número de puntos menor es el error que se comete. Además podemos apreciar que el error se acaba estabilizando al rededor de &amp;lt;math&amp;gt;10^{-15}&amp;lt;/math&amp;gt;. Luego podemos concluir que la fórmula de Poisson proporciona una buena aproximación para puntos relativamente alejados de la frontera. &lt;br /&gt;
&lt;br /&gt;
A continuación, atendiendo a la fórmula del error &amp;quot;teórica&amp;quot; dada por el método del trapecio, la cual sigue la siguiente expresión:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;Error:=\left|-\cfrac{f''(\xi)(b-a)^3}{12n^2}\right|, &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
siendo &amp;lt;math&amp;gt;\xi&amp;lt;/math&amp;gt; un valor dentro del intervalo &amp;lt;math&amp;gt;[a,b]&amp;lt;/math&amp;gt;, y n el valor que genera la discretización para la aplicación del método del trapecio. En nuestro caso, &amp;lt;math&amp;gt;[a,b]=[0,2\pi]&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; la función a integrar en la fórmula de Poisson.&lt;br /&gt;
Ahora bien, el código de MatLab presentado al final de la sección implementa un cálculo del error máximo, tomando para cada n el error máximo en la discretización y acumulándolo en la lista &amp;lt;math&amp;gt;error\_max&amp;lt;/math&amp;gt; de tal forma que en la gráfica se presenta una representación del error máximo teórico de la fórmula del trapecio.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: comparacion_errores_ejercicio2.png|400px|miniaturadeimagen|center|Comparación errores con su máximo]]&lt;br /&gt;
&lt;br /&gt;
Como se puede apreciar de manera bastante clara en la gráfica, a medida que aumentan los puntos de la discretización, la cota va disminuyendo. Aún así, se puede apreciar que el error calculado para un punto alejado de la frontera se sigue manteniendo por debajo de dicha cota.&lt;br /&gt;
&lt;br /&gt;
Estudiemos ahora el error cometido en puntos &amp;quot;cercanos&amp;quot; a la frontera. En este caso vamos utilizar una única discretización de 100 puntos de la fórmula del trapecio y puntos que cada vez se acercan más a la frontera. Partiendo del punto &amp;lt;math&amp;gt;x = (r,\theta)=(0.9,\pi/4)&amp;lt;/math&amp;gt; vamos a ir avanzando hacia la frontera con puntos de la forma &amp;lt;math&amp;gt;(r,\theta)=(1-10^{-n}, \pi/4)&amp;lt;/math&amp;gt;. La gráfica entonces resulta ser:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: error_puntoscercanosfrontera_ejercicio2.png|400px|miniaturadeimagen|center|Error de puntos cercanos a la frontera]]&lt;br /&gt;
&lt;br /&gt;
En este caso el error incrementa según los puntos se acercan a la frontera y se acaba estabilizando en &amp;lt;math&amp;gt;-0,3&amp;lt;/math&amp;gt;.&lt;br /&gt;
El código utilizado para dibujar estas gráficas es el siguiente.&lt;br /&gt;
&lt;br /&gt;
{{matlab||codigo=&lt;br /&gt;
% El siguiente código ejecuta todas las gráficas planteadas a lo largo de esta sección&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Definimos el radio de la bola;&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos la función g:&lt;br /&gt;
g =@(theta) (R.^2.*cos(theta).*sin(theta));&lt;br /&gt;
&lt;br /&gt;
% Definimos la solución exacta:&lt;br /&gt;
u_exacta =@(r,theta) (r.^2.*cos(theta).*sin(theta));&lt;br /&gt;
&lt;br /&gt;
% Tomamos el punto r=0.9 y theta=pi/4:&lt;br /&gt;
r_valor=0.9;&lt;br /&gt;
theta_valor=pi/4;&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución u en el punto anterior:&lt;br /&gt;
n=1:1:8;&lt;br /&gt;
error=zeros(1,length(n)); % Inicializamos la matriz que almacena el error&lt;br /&gt;
error_log=zeros(1,length(n)); % Inicializamos la matriz que almacena el error logarítmico&lt;br /&gt;
u_valor=zeros(1,length(n)); % Inicializamos la matriz que almacena la solución de u para distintas discretizaciones del método del trapecio&lt;br /&gt;
for i=1:length(n)&lt;br /&gt;
    s=linspace(0,2*pi,10^(n(i))); % Intervalo de integración&lt;br /&gt;
    u_valor(i)=1/(2*pi).*trapz(s,g(s).*(R^2-r_valor.^2)./(R^2+r_valor.^2-2.*r_valor.*cos(s-theta_valor))); % Solución a través de la fórmula de Poisson&lt;br /&gt;
    &lt;br /&gt;
    % Calculamos el error:&lt;br /&gt;
    error(i)=abs(u_exacta(r_valor,theta_valor)-u_valor(i));&lt;br /&gt;
    % Calculamos el error logarítmico:&lt;br /&gt;
    error_log(i)=log10(error(i));&lt;br /&gt;
end&lt;br /&gt;
% Representamos gráficamente el error logarítmico para el punto r=0.9 y theta=pi/4:&lt;br /&gt;
plot(n,error_log,'o-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(10^n))')&lt;br /&gt;
grid on &lt;br /&gt;
grid minor&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Gráfica del error logarítmico')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Observamos la existencia de un error máximo que nos permita confirmar&lt;br /&gt;
% que los errores calculados anteriormente se encuentran por debajo siempre:&lt;br /&gt;
&lt;br /&gt;
% Calculamos la segunda derivada (requerida por la fórmula):&lt;br /&gt;
syms rr ss thetatheta&lt;br /&gt;
% Definimos de forma simbólica la función a derivar:&lt;br /&gt;
f=rr^2*cos(ss)*sin(ss)/(1+rr^2-2*rr*cos(thetatheta-ss));&lt;br /&gt;
derivada1=diff(f,ss); % Derivamos la función f en función de la variable s&lt;br /&gt;
derivada2=diff(derivada1,ss); % Derivamos la primera derivada en función de la variable s&lt;br /&gt;
% Calculamos el error máximo del método del trapecio:&lt;br /&gt;
nn=1:1:3; % Conforme el número sea más elevado aquí más aumentará el tiempo de compilación del programa.&lt;br /&gt;
error_max=zeros(length(nn),1); % Inicializamos a ceros el vector que almacenará los datos del error máximo del trapecio&lt;br /&gt;
for i=1:length(nn)&lt;br /&gt;
    N=10^i;&lt;br /&gt;
    s=linspace(0,2*pi,N);&lt;br /&gt;
    error_trapz=zeros(N,1); % Inicializamos a ceros el vector que almacenará los datos del error del trapecio para cada n&lt;br /&gt;
    for j=1:N&lt;br /&gt;
        s_valor=s(j);&lt;br /&gt;
        error_trapz(j)=log10(abs(-(2*pi).^3.*subs(derivada2, [rr,ss,thetatheta] ,[r_valor,s_valor,theta_valor])./(12.*(N.^2))));&lt;br /&gt;
    end&lt;br /&gt;
    error_max(i)=max(error_trapz);&lt;br /&gt;
end&lt;br /&gt;
% Representamos gráficamente el error máximo junto con el error calculado&lt;br /&gt;
% anteriormente:&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
plot(nn,error_log(1:length(nn)),'Color','blue')&lt;br /&gt;
plot(nn,error_max,'Color','red')&lt;br /&gt;
hold off&lt;br /&gt;
legend('Error','Error máximo')&lt;br /&gt;
title('Comparación de errores')&lt;br /&gt;
grid on&lt;br /&gt;
grid minor&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('Error')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Fijamos ahora para N=100 (puntos en la fórmula del trapecio).&lt;br /&gt;
% Vamos a calcular el error en los puntos de la forma r=1-10^(-n) y theta=pi/4 y veremos qué ocurre:&lt;br /&gt;
N=100;&lt;br /&gt;
r_valores=zeros(1,N); % Inicializamos vector que almacena los valores de r.&lt;br /&gt;
u_valores_r=zeros(1,N); % Inicializamos el vector que almacena los valores de la solución u para distintos valores de r.&lt;br /&gt;
u_exacta_r=zeros(1,N); % Inicializamos el vector que almacena los valores de la solución u exacta para distintos valores de r.&lt;br /&gt;
error_r=zeros(1,N); % Inicializamos el vector que almacena los errores.&lt;br /&gt;
error_log_r=zeros(1,N); % Inicializamos el vector que almacena los errores logarítmicos.&lt;br /&gt;
% theta_valor=pi/4 es el mismo que hemos usado antes, por lo que no lo volvemos a inicializar.&lt;br /&gt;
% Definimos el vector de integración de la fórmula del trapecio:&lt;br /&gt;
s=linspace(0,2*pi,N);&lt;br /&gt;
for j=1:N&lt;br /&gt;
    r_valores(j)=1-10^(-j);&lt;br /&gt;
    u_valores_r(j)=1/(2*pi).*trapz(s,g(s).*(R^2-r_valores(j).^2)./(R^2+r_valores(j).^2-2.*r_valores(j).*cos(s-theta_valor)));&lt;br /&gt;
    u_exacta_r(j)=u_exacta(r_valores(j),theta_valor);&lt;br /&gt;
    error_r(j)=abs(u_exacta_r(j)-u_valores_r(j));&lt;br /&gt;
    error_log_r(j)=log10(error_r(j));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
plot(1:1:N,error_log_r,'.-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(100))')&lt;br /&gt;
grid on &lt;br /&gt;
grid minor&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Errores en los puntos cercanos a la frontera')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Solución por la serie de Fourier ===&lt;br /&gt;
Una vez estudiada la solución por la fórmula de Poisson, en este apartado calcularemos la solución por serie de Fourier. La obtención de esta solución se basa en una cambio de variable a polares del problema, como el visto previamente, y resolución por separación de variables.  Hacemos esto aplicado al problema anterior en una bola de radio &amp;lt;math&amp;gt; R &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta U=U_{rr}+\frac{1}{r}U_r+\frac{1}{r^2}U_{\theta\theta}=0, r\in(0,R),\theta\in(0,2\pi)\\&lt;br /&gt;
U(R,\theta)=G(\theta)=R^2 sin(\theta)cos(\theta), \theta\in[0,2\pi).&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo cual nos conduce a, &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
U(r, \theta) = \frac{\alpha_{0}}{2}  +   \sum_{k=1}^{n} \left( \alpha_{k} \left(\frac{r}{R} \right)^k cos(k\theta) + \beta_{k} \left(\frac{r}{R} \right)^k sin(k\theta)\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que tiene coeficientes,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\alpha_{0} =\frac{1}{\pi}\int_{-\pi}^{\pi} \cos\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\alpha_{k} =\frac{1}{\pi}\int_{-\pi}^{\pi} cos(\theta) \sin(\theta) \cos\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\beta_{k} =\frac{1}{\pi}\int_{-\pi}^{\pi} cos(\theta) \sin(\theta) \sin\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Sin embargo, todos los coeficientes de Fourier son nulos, salvo por &amp;lt;math&amp;gt; \beta_2=\frac{R^2}{2}&amp;lt;/math&amp;gt;, luego la solución por series de Fourier final es, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}\sin(2\theta)=r^2\cos(\theta)\sin(\theta), r\in [0,R], \theta\in[0,2\pi)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Veamos ahora la gráfica que dibuja esta solución tomando &amp;lt;math&amp;gt; R = 1 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Tresaitana1.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Ecuación de Laplace&lt;br /&gt;
%% Apartado 3&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Definimos el radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% k términos de la serie:&lt;br /&gt;
K=[5 10 100];&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g y la función u exacta:&lt;br /&gt;
g=@(theta) R.^2.*cos(theta).*sin(theta);&lt;br /&gt;
u_exacta=@(r,theta) r.^2.*cos(theta).*sin(theta);&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos de theta y r:&lt;br /&gt;
N=300; % Número de divisiones de los intervalos theta y r.&lt;br /&gt;
Theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
r=linspace(0,R,N); % Intervalo r.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Calculamos los coeficientes de Fourier para distintos k-términos:&lt;br /&gt;
for i=1:length(K)&lt;br /&gt;
    k=K(i); % k-términos de la serie.&lt;br /&gt;
    int=linspace(-pi,pi,k); % Intervalo de integración para los coef de Fourier.&lt;br /&gt;
    a0=1/pi.*integral(g,-pi,pi); % Coeficiente de Fourier a_0 (asociado a 1/2).&lt;br /&gt;
    a=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al coseno.&lt;br /&gt;
    b=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al seno.&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        f_cos=@(theta) g(theta).*cos(j.*theta); % Definimos la función a integrar asociada al coseno.&lt;br /&gt;
        f_sin=@(theta) g(theta).*sin(j.*theta); % Definimos la función a integrar asociada al seno.&lt;br /&gt;
        a(j)=1/pi.*integral(f_cos,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fourier del coseno.&lt;br /&gt;
        b(j)=1/pi.*integral(f_sin,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fouries del seno.&lt;br /&gt;
    end&lt;br /&gt;
    % Calculamos la solución u_k asociada al número de términos de la serie:&lt;br /&gt;
    suma=@(r,theta)0;&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        suma=@(r,theta) suma(r,theta) + a(j).*(r/R).^j.*cos(j.*theta)+b(j).*(r/R).^j.*sin(j.*theta);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['u_' num2str(k) '=@(r,theta) 1/2*a0 + suma(r,theta);']);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
[RR,THETA]=meshgrid(r,Theta);&lt;br /&gt;
figure&lt;br /&gt;
for i=1:length(K)&lt;br /&gt;
    k=K(i);&lt;br /&gt;
    subplot(2,2,i)&lt;br /&gt;
    eval(['surf(RR.*cos(THETA),RR.*sin(THETA),u_' num2str(k) '(RR,THETA),&amp;quot;EdgeColor&amp;quot;,&amp;quot;flat&amp;quot;)'])&lt;br /&gt;
    title(&amp;quot;Solución de u para k=&amp;quot;, num2str(k))&lt;br /&gt;
end&lt;br /&gt;
subplot(2,2,4)&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u_exacta(RR,THETA),&amp;quot;EdgeColor&amp;quot;,&amp;quot;flat&amp;quot;)&lt;br /&gt;
title('Solución exacta')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Errores de la solución por serie de Fourier ====&lt;br /&gt;
Al igual que con la solución dada por la fórmula de Poisson, vamos a comparar la solución calculada con la solución exacta &amp;lt;math&amp;gt;u(x,y)=xy&amp;lt;/math&amp;gt; en la bola de radio 1. Vamos a contrastar las soluciones con 5, 10 y 100 términos con la exacta. Calcularemos el error resultante al aproximar la serie de Fourier y lo representamos gráficamente, mostrando el máximo error en función del número de términos utilizados en una escala logarítmica, es decir, pintaremos la función, &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \log_{10}(error(n)) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; error(n) &amp;lt;/math&amp;gt; es ahora el supremo del error con &amp;lt;math&amp;gt;n &amp;lt;/math&amp;gt;términos. Obetenemos así la siguente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Tresaitana2.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
Podemos apreciar en esta gráfica errores de orden muy pequeño, por lo general, los podemos considerar pequeño. Luego, nos damos cuenta de que, a diferencia de solución por la fórmula de Poisson, esta no nos da problemas en la frontera. Veamos el código utilizado para hacer la gráfica.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% A continuación se calcularán los errores de la aproximación de Fourier en función de los términos:&lt;br /&gt;
KK=0:1:100;&lt;br /&gt;
error_log=zeros(length(KK),1); % Inicializamos el vector donde se almacenarán los errores logarítmicos.&lt;br /&gt;
for i=1:length(KK)&lt;br /&gt;
    k=KK(i);&lt;br /&gt;
    int=linspace(-pi,pi,k); % Intervalo de integración para los coef de Fourier.&lt;br /&gt;
    a0=1/pi.*integral(g,-pi,pi); % Coeficiente de Fourier a_0 (asociado a 1/2).&lt;br /&gt;
    a=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al coseno.&lt;br /&gt;
    b=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al seno.&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        f_cos=@(theta) g(theta).*cos(j.*theta); % Definimos la función a integrar asociada al coseno.&lt;br /&gt;
        f_sin=@(theta) g(theta).*sin(j.*theta); % Definimos la función a integrar asociada al seno.&lt;br /&gt;
        a(j)=1/pi.*integral(f_cos,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fourier del coseno.&lt;br /&gt;
        b(j)=1/pi.*integral(f_sin,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fouries del seno.&lt;br /&gt;
    end&lt;br /&gt;
    % Calculamos la solución u_k asociada al número de términos de la serie:&lt;br /&gt;
    suma=@(r,theta)0;&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        suma=@(r,theta) suma(r,theta) + a(j).*(r/R).^j.*cos(j.*theta)+b(j).*(r/R).^j.*sin(j.*theta);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['u_' num2str(i) '=@(r,theta) 1/2*a0 + suma(r,theta);']);&lt;br /&gt;
    eval(['u=@(r,theta)u_' num2str(i) '(r,theta) ;']);&lt;br /&gt;
    U_exacta=u_exacta(RR,THETA);&lt;br /&gt;
    U_fourier=u(RR,THETA);&lt;br /&gt;
    valores_max=max(U_exacta-U_fourier);&lt;br /&gt;
    sup=max(valores_max,[],'all');&lt;br /&gt;
    error_log(i)=log10(sup);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
plot(KK,error_log)&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Errores supremos frente al número de términos')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(10^n))')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Comportamiento de la solución ===&lt;br /&gt;
En esta sección, y atendiendo al comportamiento de la solución estudiaremos en qué región se han de encontrar las soluciones armónicas dentro  de la bola &amp;lt;math&amp;gt;B_R&amp;lt;/math&amp;gt;, siendo &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; el radio de la bola, que tengan el mismo valor que nuestra solución en el (0,0).&lt;br /&gt;
&lt;br /&gt;
La '''desigualdad de Harnack''' establece: Sea &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; armónica y &amp;lt;math&amp;gt;0\leq u&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;\Omega \in \mathbb{R}^n&amp;lt;/math&amp;gt;. Supongamos &amp;lt;math&amp;gt;\overline{B_{R}(z)}\subset \Omega&amp;lt;/math&amp;gt;. Entonces:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{R^{n-2} (R-r)}{(R+r)^{n-1}} u(z)\leq u(x) \leq \frac{R^{n-2}  (R+r)}{(R-r)^{n-1}}u(z), \forall x \in B_{R}(z), r=||z-x||.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para proceder al estudio planteado, comenzamos calculando el mínimo de la función &amp;lt;math&amp;gt;g(x,y)=xy&amp;lt;/math&amp;gt; en la frontera de la bola &amp;lt;math&amp;gt;B_R&amp;lt;/math&amp;gt; al que llamaremos &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;. Para facilitar los cálculos de aquí en adelante trabajaremos en coordenadas polares, por lo que nuestra función &amp;lt;math&amp;gt;g(x,y)=xy&amp;lt;/math&amp;gt; pasa a ser &amp;lt;math&amp;gt;g(\theta)=R^2cos(\theta)sin(\theta)&amp;lt;/math&amp;gt;, siendo &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; el radio de la bola. Para el cálculo del mínimo se ha empleado un código de Matlab presentado al final de esta sección.&lt;br /&gt;
&lt;br /&gt;
A continuación, definimos la función &amp;lt;math&amp;gt;v:=u-M &amp;lt;/math&amp;gt; , siendo u nuestra solución del problema. Esta función &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; es positiva y armónica, por lo que podemos aplicar la desigualdad de Harnack para &amp;lt;math&amp;gt;\mathbb{R}&amp;lt;/math&amp;gt;, es decir, &amp;lt;math&amp;gt;n=2&amp;lt;/math&amp;gt;. Obteniendo lo siguiente:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{(R-r)}{(R+r)} v(0,0) \leq v(x,y) \leq \frac{(R+r)}{(R-r)}v(0,0), \forall (x,y) \in B_{R}. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Representando gráficamente las cotas planteadas, obtenemos las siguientes gráficas:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: harnack_ejercicio4_n2.png|600px|thumb|center|Desigualdad de Harnack en &amp;lt;math&amp;gt;R^2&amp;lt;/math&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Las desigualdades de Harnack establecen límites uniformes para todas las soluciones armónicas dentro de una bola, independientemente de su radio. Sin embargo, el valor específico de estas soluciones en un punto dado, como &amp;lt;math&amp;gt;v(0,0)&amp;lt;/math&amp;gt;, varía con el tamaño de la bola, lo que sugiere una especie de traslación en la región donde las soluciones armónicas son iguales a &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; en el punto &amp;lt;math&amp;gt;(0,0)&amp;lt;/math&amp;gt;. A medida que aumenta el radio de la bola, tanto las cotas superior e inferior aumentan en amplitud, pero la región cubierta por estas cotas se estrecha. Este fenómeno indica que, aunque la estructura de las cotas permanece constante, el rango de valores en el que pueden variar las soluciones armónicas se reduce a medida que la bola crece en tamaño.&lt;br /&gt;
&lt;br /&gt;
== Ecuación de Poisson ==&lt;br /&gt;
&lt;br /&gt;
En esta parte del documento se va a proceder a resolver la ecuación de Poisson mediante un nuevo método. En primer lugar, esta ecuación viene dada por  &amp;lt;math&amp;gt; \Delta u = f &amp;lt;/math&amp;gt; siendo &amp;lt;math&amp;gt;u:\mathbb{R}^n \rightarrow \mathbb{R}&amp;lt;/math&amp;gt;y &amp;lt;math&amp;gt; f \in C^2(\mathbb{R})&amp;lt;/math&amp;gt;. Para este estudio se particularizará para n=2 y n=3.&lt;br /&gt;
&lt;br /&gt;
Se comenzará definiendo la solución fundamental de esta ecuación, pues se utilizará posteriormente para calcular el potencial newtoniano o logarítimico. Esta viene dada por &amp;lt;math&amp;gt;  \phi(x) = -\frac{1}{2\pi} log(|x|) &amp;lt;/math&amp;gt; si n=2 y &amp;lt;math&amp;gt;  \phi(x) = \frac{1}{4\pi |x| } &amp;lt;/math&amp;gt; si n=3.&lt;br /&gt;
=== Potencial newtoniano para &amp;lt;math&amp;gt; \mathbb{R}^3&amp;lt;/math&amp;gt; ===&lt;br /&gt;
Supongamos que &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
representa la densidad de una carga contenida en un conjunto compacto dentro del espacio tridimensional &amp;lt;math&amp;gt; \mathbb{R}^3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Entonces, la expresión &amp;lt;math&amp;gt; \phi(x-y)f(y)dy&amp;lt;/math&amp;gt; denota el potencial en el punto x. De esta manera el potencial total viene dado por la siguiente expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\mathbf{x}) = \int_{\mathbb{R}^n} f(\mathbf{y}) \phi(\mathbf{x} - \mathbf{y}) d\mathbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta fórmula se conoce como potencial Newtoniano de f y se aplica sobre funciones que en el infinito tienden de manera rápida a cero.&lt;br /&gt;
&lt;br /&gt;
A su vez, sea &amp;lt;math&amp;gt;f \in C^2(\mathbb{R}^3)&amp;lt;/math&amp;gt; con soporte compacto. Sea &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; el potencial newtoniano de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, definido por el potencial Newtoniano. Entonces, &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; es la única solución en &amp;lt;math&amp;gt;\mathbb{R}^3&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;\Delta u = -f&amp;lt;/math&amp;gt;  que pertenece a &amp;lt;math&amp;gt;C^2(\mathbb{R}^3)&amp;lt;/math&amp;gt; y se anula en el infinito. Es decir, dado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \begin{cases}&lt;br /&gt;
     \Delta u = -f \\&lt;br /&gt;
   u(x) \rightarrow 0  &amp;amp; \text{si } |x| \rightarrow \infty&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
su solución viene dada por el potencial newtoniano que se presenta anteriormente.&lt;br /&gt;
&lt;br /&gt;
=== Potencial logarítmico para &amp;lt;math&amp;gt; \mathbb{R}^2&amp;lt;/math&amp;gt; ===&lt;br /&gt;
Si el problema se presenta en &amp;lt;math&amp;gt; \mathbb{R}^2&amp;lt;/math&amp;gt; el potencial newtoniano se sustituye por el potencial logarítimico:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\mathbf{x}) = -\frac{1}{2\pi}\int_{\mathbb{R}^2}  log|\mathbf{x} - \mathbf{y}|f(\mathbf{y}) d\mathbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta manera, Sea &amp;lt;math&amp;gt;f \in C^2(\mathbb{R}^2)&amp;lt;/math&amp;gt; con soporte compacto, &amp;lt;math&amp;gt;u(\mathbf{x})&amp;lt;/math&amp;gt; es la única solución en &amp;lt;math&amp;gt;\mathbb{R}^2&amp;lt;/math&amp;gt; de:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \begin{cases}&lt;br /&gt;
     \Delta u = -f \\&lt;br /&gt;
   u(x)=-\frac{M}{2\pi} log |x| + O\left(\frac{1}{|x|} \right)  &amp;amp; \text{si } |x| \rightarrow \infty&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M= \int _{\mathbb{R}^2} f(\mathbf y) d\mathbf y&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
A continuación, veremos un ejemplo de lo explicado anteriormente para una correcta comprensión de ello. De esta manera, mediante el potencial logarítmico se aproximará la ecuación de Poisson cuando f sea la función característica de la bola de radio 1 y se estudiará su comportamiento en el infinito.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Para resolver este ejemplo se ha realizado un código en Matlab. La integral se ha simplificado de la siguiente manera:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; -\frac{1}{2\pi}\int_{\partial B_1 0} log|\mathbf{x} - \mathbf{y}| d\mathbf{y} = -\frac{\pi}{4}\frac{1}{2\pi}\int_{-1} ^1 \int_{-1} ^1 log|\mathbf{x} - \mathbf{y}| dx dy &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%aSe divide el dominio de cada variable en 200 puntos. Para y1 e y2 se coge&lt;br /&gt;
%el intervalo [-1,1] pues cuando este fuera de este intervalo la función vale 0 y por tanto la integral se anulará y para x1 y x2 se coge un intervalo muy grande pues la función tiene dominio todo R2.&lt;br /&gt;
i1 = linspace(-1,1,200);&lt;br /&gt;
i2 = linspace(-1,1,200);&lt;br /&gt;
i3 = linspace(-10^4,10^4,200);&lt;br /&gt;
i4 = linspace(-10^4,10^4,200);&lt;br /&gt;
&lt;br /&gt;
% Se define la función f anteriormente obtenida&lt;br /&gt;
f = @(y1, y2, x1, x2) -(pi/4)*(1/(2*pi))*log(sqrt((y1-x1).^2 + (y2-x2).^2));&lt;br /&gt;
&lt;br /&gt;
% Generamos una malla de puntos&lt;br /&gt;
[A, B] = meshgrid(i1, i2);&lt;br /&gt;
[C, D] = meshgrid(i3,i4);&lt;br /&gt;
&lt;br /&gt;
%Creamos una matriz cero donde se irán metiendo los valores que&lt;br /&gt;
%próximamente evaluaremos&lt;br /&gt;
values = zeros(size(A)); &lt;br /&gt;
&lt;br /&gt;
% Se crea el siguiente bucle para obtener los valores que necesitamos para&lt;br /&gt;
% la representación gráfica&lt;br /&gt;
for i = 1:length(i1)&lt;br /&gt;
    for j = 1:length(i2)&lt;br /&gt;
        fnum = @(x, y) f(x, y, i3(i), i4(j)); % Se crea este bucle para ir evaluando f en los distintos puntos (x1,x2)&lt;br /&gt;
        values(i, j) = trapz(i2, trapz(i1, fnum(A, B), 2)); % Evaluar fnum en la malla (A, B) y calcular la integral por el método del trapecio&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Se dibujan todos los puntos obtenidos&lt;br /&gt;
surf(C,D,values)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La representación obtenida es la siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Unoaitana.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación se va a comprobar si la solución se comporta de la manera esperada en el infinito. Tal y como se ha especificado anteriormente el comportamiento asintótico sigue la siguiente función:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x)=-\frac{M}{2\pi} log |x| + O(\frac{1}{|x|})&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
siendo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M= \int _{\mathbb{R}^2} f(\mathbf y) d\mathbf y&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación, se compara esta función con la solución obtenida anteriormente con el fin de observar si se comporta adecuadamente. Se ha creado el siguiente código:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
graf=zeros(length(i1));&lt;br /&gt;
xgraf=zeros(length(i1));&lt;br /&gt;
for i = 1:length(i1)&lt;br /&gt;
        fnum = @(x, y) f(x, y, i3(i), i4(i));&lt;br /&gt;
        &lt;br /&gt;
        graf(i) = trapz(i2, trapz(i1, fnum(A,B), 2));&lt;br /&gt;
        xgraf(i)=sqrt(2*(i3(i)^2));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
hold on&lt;br /&gt;
hol= @(x) -1/2*log(x);&lt;br /&gt;
valy = hol(xgraf);&lt;br /&gt;
% Crear el gráfico de las líneas y los puntos&lt;br /&gt;
hold on&lt;br /&gt;
plot(xgraf, valy, '-','DisplayName','Función asintótica'); &lt;br /&gt;
plot(xgraf, graf, '*','DisplayName','Función obtenida');&lt;br /&gt;
xlabel('Eje x')&lt;br /&gt;
ylabel('Eje y')&lt;br /&gt;
title('Gráfico función asintótica y función obtenida')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Se ha obtenido la siguiente gráfica, siendo la verde la función obtenida y la azul la función asintótica:&lt;br /&gt;
[[Archivo: Dosaitana.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
Tal y como se ve, se observa que el comportamiento es el esperado.&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaciones_de_Laplace_y_de_Poisson&amp;diff=71676</id>
		<title>Ecuaciones de Laplace y de Poisson</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaciones_de_Laplace_y_de_Poisson&amp;diff=71676"/>
				<updated>2024-04-19T18:54:23Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: /* Comportamiento de la solución */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introducción ==&lt;br /&gt;
En este documento, nos centraremos en dos ecuaciones que tienen un amplio uso en diversos ámbitos como electrostática, mecánica de fluidos, física teórica y magnetostática: la ecuación de Laplace y la ecuación de Poisson. &lt;br /&gt;
Ambas ecuaciones las estudiaremos en el plano y las veremos aplicadas en problemas concretos. Veremos las limitaciones que presenta la fórumla de Poisson así como diferentes métodos analíticos para aproximar soluciones, y raíz de esto, analizaremos errores de aproximación. Por último, estudiaremos el comportamiento de soluciones tanto en un dominio dado, utilizando la desigualdad de Harnack, como asintóticamente en infinito.&lt;br /&gt;
 &lt;br /&gt;
 CREO QUE AQUÍ ME FALTAN PUNTOS Y COMAS&lt;br /&gt;
&lt;br /&gt;
== Ecuación de Laplace ==&lt;br /&gt;
La ecuación de Laplace, cuyo nombre nombre honra al distinguido físico-matemático Pierre-Simon Laplace, es una ecuación en derivadas parciales de tipo elíptico. REFERENCIA?&lt;br /&gt;
Construyamos un problema de derivadas parciales a partir de la ecuación de Laplace. La ecuación es,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \Delta u = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
con &amp;lt;math&amp;gt;u:\mathbb{R}^3 \rightarrow \mathbb{R}&amp;lt;/math&amp;gt; como incógnita. Esta ecuación se define en un dominio &amp;lt;math&amp;gt; \Omega &amp;lt;/math&amp;gt;, y en su frontera &amp;lt;math&amp;gt; \partial \Omega &amp;lt;/math&amp;gt; se pueden añadir condiciones de contorno Dirichlet, Neuman o mixtas. En este trabajo nos centraremos en las condiciones de contorno de tipo Dirichlet, las cuales igualan &amp;lt;math&amp;gt; u &amp;lt;/math&amp;gt; a una función específica &amp;lt;math&amp;gt; g &amp;lt;/math&amp;gt;. Con todo esto, llegamos al siguiente problema de derivadas parciales.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  \Omega \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial \Omega &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A fin de comprender mejor este problema, podemos examinar el siguiente ejemplo en concreto. &lt;br /&gt;
&lt;br /&gt;
===== Ejemplo bola unidad =====&lt;br /&gt;
Sea &amp;lt;math&amp;gt; B_1 ⊂ R^2 &amp;lt;/math&amp;gt; la bola unidad centrada en el origen. Planteamos el problema, &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_1 \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
A lo largo de este documento, en lo que tiene que ver con la ecuación de Laplace, visitaremos este ejemplo varias veces.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dentro de la resolución del problema planteado existen varios métodos por los que proceder. En este trabajo estudiaremos dos: la fórmula de Poisson y la serie de Fourier.&lt;br /&gt;
=== Solución por la fórmula de Poisson ===&lt;br /&gt;
Encontrar la solución del problema mediante la fórmula de Poisson viene determinado por el siguiente teorema.&lt;br /&gt;
&lt;br /&gt;
===== Teorema =====&lt;br /&gt;
La solución &amp;lt;math&amp;gt; u \in C^2(B_R \cup C(\overline{B_R}) &amp;lt;/math&amp;gt;del problema &amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_R \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial B_R &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt; donde &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; es una función continua viene dado por la fórmula de Poisson &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\vec{x})=\frac{R^2-|\vec{x}|^2}{w_n R}\int_{\partial B_R}\frac{g(\sigma)}{|\vec{x}-\sigma|^2} d\sigma. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es importante destacar que el denominador &amp;lt;math&amp;gt;|\vec{x}-\sigma|^2 &amp;lt;/math&amp;gt; se anula en la frontera de la bola llevándonos a una indeterminación y haciendo que la integral diverja. Esto también pasa si expresamos la fórmula en coordenadas polares &amp;lt;math&amp;gt;(r, \theta)&amp;lt;/math&amp;gt;. Tomando, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\vec{x} = (x_1, x_2) = (rcos(\theta), rsen(\theta)) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; g(rcos(\theta), rsen(\theta)) = G(\theta)&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
llegamos a la fórmula de Poisson, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; U(r,\theta)=\frac{R^2-r^2}{2\pi R}\int_{0}^{2\pi}\frac{g(s)}{R^2+r^2-2Rrcos(\theta-s)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso, el denominador de la integral también se anula para puntos cercanos a la frontera, concretamente cuando el coseno se hace 1. &lt;br /&gt;
&lt;br /&gt;
Veamos todo esto aplicado a la bola unidad pasado a coordenadas polares,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    U_{rr} + \frac{1}{r} U_r + \frac{1}{r^2} U_{\theta\theta} = 0, &amp;amp; (r, \theta) \in  B_1 \\&lt;br /&gt;
    U(1, \theta) = G(\theta), &amp;amp;   (r, \theta) \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la resolución de este problema vamos a tomar &amp;lt;math&amp;gt;G(\theta) = máx\{0, 1-\frac{2}{\pi} |\theta - \pi|\}&amp;lt;/math&amp;gt; y utilizaremos la fórmula de Poisson en polares tomando &amp;lt;math&amp;gt;R = 1&amp;lt;/math&amp;gt; y calculando la integral de manera aproximada con la fórmula del trapecio. Como hemos visto antes, la fórmula da problemas para puntos cercanos al borde. Esto lleva a una representación irregular de la frontera si dibujamos la solución sin tener en cuenta este problema.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: sol_sin_frontera_ejercicio1.png|400px|miniaturadeimagen|center|Solución del problema de Poisson sin aplicar la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
Es por esto por lo que la condición frontera no es prescindible en el problema. Para estimar &amp;lt;math&amp;gt; U(r,\theta)&amp;lt;/math&amp;gt;, utilizaremos la fórmula de Poisson para puntos ligeramente alejados del borde, y en el propio borde utilizaremos la condición frontera &amp;lt;math&amp;gt;U(R, \theta) = G(\theta)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: sol_ejercicio1.png|400px|miniaturadeimagen|center|Solución del problema de Poisson aplicando la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
En esta nueva gráfica podemos apreciar como la frontera no presenta las irregularidades anteriores. &lt;br /&gt;
Para conseguir estas gráficas hemos implementado el siguiente código en MatLab.&lt;br /&gt;
&lt;br /&gt;
====== Códigos ======&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Este código resuelve el problema planteado con la fórmula de Poisson sin aplicar condición frontera:&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g:&lt;br /&gt;
g=@(theta)max(0, 1-2/pi*abs(theta-pi));&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos r y theta sobre los que vamos a trabajar:&lt;br /&gt;
N=200; % Número de divisiones del intervalo&lt;br /&gt;
r=linspace(0,R,N); % No podemos llegar hasta la frontera&lt;br /&gt;
theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución de u con la fórmula de Poisson:&lt;br /&gt;
NN=100; % División del intervalo de integración.&lt;br /&gt;
s=linspace(0,2*pi,NN); % Intervalo de integración, para el método del trapecio.&lt;br /&gt;
u=zeros(N,N); % Inicializamos la matriz que almacena los valores de la solución.&lt;br /&gt;
for i=1:length(theta)&lt;br /&gt;
    for j=1:length(r) % Calculamos solución a través de la fórmula del trapecio:&lt;br /&gt;
        u(i,j)=1/(2*pi).*trapz(s,g(s).*(R^2-r(j).^2)./(R^2+r(j).^2-2.*r(j).*cos(s-theta(i))));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
% Creamos la malla:&lt;br /&gt;
[RR,THETA]=meshgrid(r,theta);&lt;br /&gt;
figure&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u,'EdgeColor','flat') % Representación gráfica&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('y')&lt;br /&gt;
zlabel('u(x,y)')&lt;br /&gt;
title('Solución de la ecuación de Laplace')&lt;br /&gt;
}}&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Este código resuelve el problema planteado con la fórmula de Poisson aplicando la condición frontera:&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g:&lt;br /&gt;
g=@(theta)max(0, 1-2/pi*abs(theta-pi));&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos r y theta sobre los que vamos a trabajar:&lt;br /&gt;
N=200; % Número de divisiones del intervalo&lt;br /&gt;
r=linspace(0,R-N^(-1),N-1); % No podemos llegar hasta la frontera&lt;br /&gt;
theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución de u con la fórmula de Poisson:&lt;br /&gt;
NN=1000; % División del intervalo de integración.&lt;br /&gt;
s=linspace(0,2*pi,NN); % Intervalo de integración, para el método del trapecio.&lt;br /&gt;
u=zeros(N,N); % Inicializamos la matriz que almacena los valores de la solución.&lt;br /&gt;
for i=1:length(theta)&lt;br /&gt;
    for j=1:length(r) % Calculamos solución a través de la fórmula del trapecio:&lt;br /&gt;
        u(i,j)=1/(2*pi).*trapz(s,g(s).*(R^2-r(j).^2)./(R^2+r(j).^2-2.*r(j).*cos(s-theta(i))));&lt;br /&gt;
    end&lt;br /&gt;
    % Establecemos condiciones frontera (por presentar problemas en esta):&lt;br /&gt;
    u(i,N)=g(theta(i));&lt;br /&gt;
end&lt;br /&gt;
r(N)=1;&lt;br /&gt;
% Creamos la malla:&lt;br /&gt;
[RR,THETA]=meshgrid(r,theta);&lt;br /&gt;
figure&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u,'EdgeColor','flat') % Representación gráfica&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('y')&lt;br /&gt;
zlabel('u(x,y)')&lt;br /&gt;
title('Solución de la ecuación de Laplace')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== Errores de la fórmula de Poisson =====&lt;br /&gt;
Como hemos observado anteriormente, la fórmula de Poisson presenta ciertas dificultades a la hora de aproximar la solución en la frontera, debido a la singularidad inherente de la integral. En este apartado examinaremos estas irregularidades calculando el error de la aproximación frente a la solución exacta.&lt;br /&gt;
&lt;br /&gt;
Volviendo al ejemplo de la bola unidad, esta vez vamos a suponer el problema,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_1 \\&lt;br /&gt;
    u = g(x,y) = xy, &amp;amp;   \text{x} \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que tiene como solución exacta la función armónica &amp;lt;math&amp;gt;u(x,y) = xy&amp;lt;/math&amp;gt;. Tal y como hemos hecho en el apartado anterior, calculamos la solución aproximada utilizando la fórmula de Poisson, la fórmula del trapecio y pasando a coordenadas polares.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    U_{rr} + \frac{1}{r} U_r + \frac{1}{r^2} U_{\theta\theta} = 0, &amp;amp; (r, \theta) \in  B_1 \\&lt;br /&gt;
    U(1,\theta)=G(\theta)=\cos(\theta)\sin(\theta), &amp;amp;   (r, \theta) \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vamos a distinguir entre dos tipos de puntos, aquellos que estén &amp;quot;alejados&amp;quot; de la frontera y aquellos sean inmediatos a esta. &lt;br /&gt;
Primero estudiaremos el error en puntos &amp;quot;alejados&amp;quot; de la frontera. Esto lo hacemos empleando distintas discretizaciones con &amp;lt;math&amp;gt; 10^n &amp;lt;/math&amp;gt; puntos en la fórmula del trapecio. Después, calculamos el error para cada discretización en un punto alejado, en este caso lo hacemos evaluando en &amp;lt;math&amp;gt;x = (r,\theta)=(0.9,\pi/4)&amp;lt;/math&amp;gt;. Posteriormente graficamos el error aplicando la fórmula,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;f(n):=\log_{10}(Error(10^n)), &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Obteniendo así la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: error_puntoalejado_ejercicio2.png|400px|miniaturadeimagen|center|Error de un punto alejado a la frontera]]&lt;br /&gt;
&lt;br /&gt;
Los resultados de esta gráfica cuadran con nuestra intuición, a mayor número de puntos menor es el error que se comete. Además podemos apreciar que el error se acaba estabilizando al rededor de &amp;lt;math&amp;gt;10^{-15}&amp;lt;/math&amp;gt;. Luego podemos concluir que la fórmula de Poisson proporciona una buena aproximación para puntos relativamente alejados de la frontera. &lt;br /&gt;
&lt;br /&gt;
A continuación, atendiendo a la fórmula del error &amp;quot;teórica&amp;quot; dada por el método del trapecio, la cual sigue la siguiente expresión:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;Error:=\left|-\cfrac{f''(\xi)(b-a)^3}{12n^2}\right|, &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
siendo &amp;lt;math&amp;gt;\xi&amp;lt;/math&amp;gt; un valor dentro del intervalo &amp;lt;math&amp;gt;[a,b]&amp;lt;/math&amp;gt;, y n el valor que genera la discretización para la aplicación del método del trapecio. En nuestro caso, &amp;lt;math&amp;gt;[a,b]=[0,2\pi]&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; la función a integrar en la fórmula de Poisson.&lt;br /&gt;
Ahora bien, el código de MatLab presentado al final de la sección implementa un cálculo del error máximo, tomando para cada n el error máximo en la discretización y acumulándolo en la lista &amp;lt;math&amp;gt;error\_max&amp;lt;/math&amp;gt; de tal forma que en la gráfica se presenta una representación del error máximo teórico de la fórmula del trapecio.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: comparacion_errores_ejercicio2.png|400px|miniaturadeimagen|center|Comparación errores con su máximo]]&lt;br /&gt;
&lt;br /&gt;
Como se puede apreciar de manera bastante clara en la gráfica, a medida que aumentan los puntos de la discretización, la cota va disminuyendo. Aún así, se puede apreciar que el error calculado para un punto alejado de la frontera se sigue manteniendo por debajo de dicha cota.&lt;br /&gt;
&lt;br /&gt;
Estudiemos ahora el error cometido en puntos &amp;quot;cercanos&amp;quot; a la frontera. En este caso vamos utilizar una única discretización de 100 puntos de la fórmula del trapecio y puntos que cada vez se acercan más a la frontera. Partiendo del punto &amp;lt;math&amp;gt;x = (r,\theta)=(0.9,\pi/4)&amp;lt;/math&amp;gt; vamos a ir avanzando hacia la frontera con puntos de la forma &amp;lt;math&amp;gt;(r,\theta)=(1-10^{-n}, \pi/4)&amp;lt;/math&amp;gt;. La gráfica entonces resulta ser:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: error_puntoscercanosfrontera_ejercicio2.png|400px|miniaturadeimagen|center|Error de puntos cercanos a la frontera]]&lt;br /&gt;
&lt;br /&gt;
En este caso el error incrementa según los puntos se acercan a la frontera y se acaba estabilizando en &amp;lt;math&amp;gt;-0,3&amp;lt;/math&amp;gt;.&lt;br /&gt;
El código utilizado para dibujar estas gráficas es el siguiente.&lt;br /&gt;
&lt;br /&gt;
{{matlab||codigo=&lt;br /&gt;
% El siguiente código ejecuta todas las gráficas planteadas a lo largo de esta sección&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Definimos el radio de la bola;&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos la función g:&lt;br /&gt;
g =@(theta) (R.^2.*cos(theta).*sin(theta));&lt;br /&gt;
&lt;br /&gt;
% Definimos la solución exacta:&lt;br /&gt;
u_exacta =@(r,theta) (r.^2.*cos(theta).*sin(theta));&lt;br /&gt;
&lt;br /&gt;
% Tomamos el punto r=0.9 y theta=pi/4:&lt;br /&gt;
r_valor=0.9;&lt;br /&gt;
theta_valor=pi/4;&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución u en el punto anterior:&lt;br /&gt;
n=1:1:8;&lt;br /&gt;
error=zeros(1,length(n)); % Inicializamos la matriz que almacena el error&lt;br /&gt;
error_log=zeros(1,length(n)); % Inicializamos la matriz que almacena el error logarítmico&lt;br /&gt;
u_valor=zeros(1,length(n)); % Inicializamos la matriz que almacena la solución de u para distintas discretizaciones del método del trapecio&lt;br /&gt;
for i=1:length(n)&lt;br /&gt;
    s=linspace(0,2*pi,10^(n(i))); % Intervalo de integración&lt;br /&gt;
    u_valor(i)=1/(2*pi).*trapz(s,g(s).*(R^2-r_valor.^2)./(R^2+r_valor.^2-2.*r_valor.*cos(s-theta_valor))); % Solución a través de la fórmula de Poisson&lt;br /&gt;
    &lt;br /&gt;
    % Calculamos el error:&lt;br /&gt;
    error(i)=abs(u_exacta(r_valor,theta_valor)-u_valor(i));&lt;br /&gt;
    % Calculamos el error logarítmico:&lt;br /&gt;
    error_log(i)=log10(error(i));&lt;br /&gt;
end&lt;br /&gt;
% Representamos gráficamente el error logarítmico para el punto r=0.9 y theta=pi/4:&lt;br /&gt;
plot(n,error_log,'o-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(10^n))')&lt;br /&gt;
grid on &lt;br /&gt;
grid minor&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Gráfica del error logarítmico')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Observamos la existencia de un error máximo que nos permita confirmar&lt;br /&gt;
% que los errores calculados anteriormente se encuentran por debajo siempre:&lt;br /&gt;
&lt;br /&gt;
% Calculamos la segunda derivada (requerida por la fórmula):&lt;br /&gt;
syms rr ss thetatheta&lt;br /&gt;
% Definimos de forma simbólica la función a derivar:&lt;br /&gt;
f=rr^2*cos(ss)*sin(ss)/(1+rr^2-2*rr*cos(thetatheta-ss));&lt;br /&gt;
derivada1=diff(f,ss); % Derivamos la función f en función de la variable s&lt;br /&gt;
derivada2=diff(derivada1,ss); % Derivamos la primera derivada en función de la variable s&lt;br /&gt;
% Calculamos el error máximo del método del trapecio:&lt;br /&gt;
nn=1:1:3; % Conforme el número sea más elevado aquí más aumentará el tiempo de compilación del programa.&lt;br /&gt;
error_max=zeros(length(nn),1); % Inicializamos a ceros el vector que almacenará los datos del error máximo del trapecio&lt;br /&gt;
for i=1:length(nn)&lt;br /&gt;
    N=10^i;&lt;br /&gt;
    s=linspace(0,2*pi,N);&lt;br /&gt;
    error_trapz=zeros(N,1); % Inicializamos a ceros el vector que almacenará los datos del error del trapecio para cada n&lt;br /&gt;
    for j=1:N&lt;br /&gt;
        s_valor=s(j);&lt;br /&gt;
        error_trapz(j)=log10(abs(-(2*pi).^3.*subs(derivada2, [rr,ss,thetatheta] ,[r_valor,s_valor,theta_valor])./(12.*(N.^2))));&lt;br /&gt;
    end&lt;br /&gt;
    error_max(i)=max(error_trapz);&lt;br /&gt;
end&lt;br /&gt;
% Representamos gráficamente el error máximo junto con el error calculado&lt;br /&gt;
% anteriormente:&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
plot(nn,error_log(1:length(nn)),'Color','blue')&lt;br /&gt;
plot(nn,error_max,'Color','red')&lt;br /&gt;
hold off&lt;br /&gt;
legend('Error','Error máximo')&lt;br /&gt;
title('Comparación de errores')&lt;br /&gt;
grid on&lt;br /&gt;
grid minor&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('Error')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Fijamos ahora para N=100 (puntos en la fórmula del trapecio).&lt;br /&gt;
% Vamos a calcular el error en los puntos de la forma r=1-10^(-n) y theta=pi/4 y veremos qué ocurre:&lt;br /&gt;
N=100;&lt;br /&gt;
r_valores=zeros(1,N); % Inicializamos vector que almacena los valores de r.&lt;br /&gt;
u_valores_r=zeros(1,N); % Inicializamos el vector que almacena los valores de la solución u para distintos valores de r.&lt;br /&gt;
u_exacta_r=zeros(1,N); % Inicializamos el vector que almacena los valores de la solución u exacta para distintos valores de r.&lt;br /&gt;
error_r=zeros(1,N); % Inicializamos el vector que almacena los errores.&lt;br /&gt;
error_log_r=zeros(1,N); % Inicializamos el vector que almacena los errores logarítmicos.&lt;br /&gt;
% theta_valor=pi/4 es el mismo que hemos usado antes, por lo que no lo volvemos a inicializar.&lt;br /&gt;
% Definimos el vector de integración de la fórmula del trapecio:&lt;br /&gt;
s=linspace(0,2*pi,N);&lt;br /&gt;
for j=1:N&lt;br /&gt;
    r_valores(j)=1-10^(-j);&lt;br /&gt;
    u_valores_r(j)=1/(2*pi).*trapz(s,g(s).*(R^2-r_valores(j).^2)./(R^2+r_valores(j).^2-2.*r_valores(j).*cos(s-theta_valor)));&lt;br /&gt;
    u_exacta_r(j)=u_exacta(r_valores(j),theta_valor);&lt;br /&gt;
    error_r(j)=abs(u_exacta_r(j)-u_valores_r(j));&lt;br /&gt;
    error_log_r(j)=log10(error_r(j));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
plot(1:1:N,error_log_r,'.-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(100))')&lt;br /&gt;
grid on &lt;br /&gt;
grid minor&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Errores en los puntos cercanos a la frontera')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Solución por la serie de Fourier ===&lt;br /&gt;
Una vez estudiada la solución por la fórmula de Poisson, en este apartado calcularemos la solución por serie de Fourier. La obtención de esta solución se basa en una cambio de variable a polares del problema, como el visto previamente, y resolución por separación de variables.  Hacemos esto aplicado al problema anterior en una bola de radio &amp;lt;math&amp;gt; R &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta U=U_{rr}+\frac{1}{r}U_r+\frac{1}{r^2}U_{\theta\theta}=0, r\in(0,R),\theta\in(0,2\pi)\\&lt;br /&gt;
U(R,\theta)=G(\theta)=R^2 sin(\theta)cos(\theta), \theta\in[0,2\pi).&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo cual nos conduce a, &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
U(r, \theta) = \frac{\alpha_{0}}{2}  +   \sum_{k=1}^{n} \left( \alpha_{k} \left(\frac{r}{R} \right)^k cos(k\theta) + \beta_{k} \left(\frac{r}{R} \right)^k sin(k\theta)\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que tiene coeficientes,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\alpha_{0} =\frac{1}{\pi}\int_{-\pi}^{\pi} \cos\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\alpha_{k} =\frac{1}{\pi}\int_{-\pi}^{\pi} cos(\theta) \sin(\theta) \cos\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\beta_{k} =\frac{1}{\pi}\int_{-\pi}^{\pi} cos(\theta) \sin(\theta) \sin\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Sin embargo, todos los coeficientes de Fourier son nulos, salvo por &amp;lt;math&amp;gt; \beta_2=\frac{R^2}{2}&amp;lt;/math&amp;gt;, luego la solución por series de Fourier final es, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}\sin(2\theta)=r^2\cos(\theta)\sin(\theta), r\in [0,R], \theta\in[0,2\pi)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Veamos ahora la gráfica que dibuja esta solución tomando &amp;lt;math&amp;gt; R = 1 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Tresaitana1.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Ecuación de Laplace&lt;br /&gt;
%% Apartado 3&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Definimos el radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% k términos de la serie:&lt;br /&gt;
K=[5 10 100];&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g y la función u exacta:&lt;br /&gt;
g=@(theta) R.^2.*cos(theta).*sin(theta);&lt;br /&gt;
u_exacta=@(r,theta) r.^2.*cos(theta).*sin(theta);&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos de theta y r:&lt;br /&gt;
N=300; % Número de divisiones de los intervalos theta y r.&lt;br /&gt;
Theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
r=linspace(0,R,N); % Intervalo r.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Calculamos los coeficientes de Fourier para distintos k-términos:&lt;br /&gt;
for i=1:length(K)&lt;br /&gt;
    k=K(i); % k-términos de la serie.&lt;br /&gt;
    int=linspace(-pi,pi,k); % Intervalo de integración para los coef de Fourier.&lt;br /&gt;
    a0=1/pi.*integral(g,-pi,pi); % Coeficiente de Fourier a_0 (asociado a 1/2).&lt;br /&gt;
    a=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al coseno.&lt;br /&gt;
    b=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al seno.&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        f_cos=@(theta) g(theta).*cos(j.*theta); % Definimos la función a integrar asociada al coseno.&lt;br /&gt;
        f_sin=@(theta) g(theta).*sin(j.*theta); % Definimos la función a integrar asociada al seno.&lt;br /&gt;
        a(j)=1/pi.*integral(f_cos,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fourier del coseno.&lt;br /&gt;
        b(j)=1/pi.*integral(f_sin,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fouries del seno.&lt;br /&gt;
    end&lt;br /&gt;
    % Calculamos la solución u_k asociada al número de términos de la serie:&lt;br /&gt;
    suma=@(r,theta)0;&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        suma=@(r,theta) suma(r,theta) + a(j).*(r/R).^j.*cos(j.*theta)+b(j).*(r/R).^j.*sin(j.*theta);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['u_' num2str(k) '=@(r,theta) 1/2*a0 + suma(r,theta);']);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
[RR,THETA]=meshgrid(r,Theta);&lt;br /&gt;
figure&lt;br /&gt;
for i=1:length(K)&lt;br /&gt;
    k=K(i);&lt;br /&gt;
    subplot(2,2,i)&lt;br /&gt;
    eval(['surf(RR.*cos(THETA),RR.*sin(THETA),u_' num2str(k) '(RR,THETA),&amp;quot;EdgeColor&amp;quot;,&amp;quot;flat&amp;quot;)'])&lt;br /&gt;
    title(&amp;quot;Solución de u para k=&amp;quot;, num2str(k))&lt;br /&gt;
end&lt;br /&gt;
subplot(2,2,4)&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u_exacta(RR,THETA),&amp;quot;EdgeColor&amp;quot;,&amp;quot;flat&amp;quot;)&lt;br /&gt;
title('Solución exacta')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Errores de la solución por serie de Fourier ====&lt;br /&gt;
Al igual que con la solución dada por la fórmula de Poisson, vamos a comparar la solución calculada con la solución exacta &amp;lt;math&amp;gt;u(x,y)=xy&amp;lt;/math&amp;gt; en la bola de radio 1. Vamos a contrastar las soluciones con 5, 10 y 100 términos con la exacta. Calcularemos el error resultante al aproximar la serie de Fourier y lo representamos gráficamente, mostrando el máximo error en función del número de términos utilizados en una escala logarítmica, es decir, pintaremos la función, &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \log_{10}(error(n)) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; error(n) &amp;lt;/math&amp;gt; es ahora el supremo del error con &amp;lt;math&amp;gt;n &amp;lt;/math&amp;gt;términos. Obetenemos así la siguente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Tresaitana2.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
Podemos apreciar en esta gráfica errores de orden muy pequeño, por lo general, los podemos considerar pequeño. Luego, nos damos cuenta de que, a diferencia de solución por la fórmula de Poisson, esta no nos da problemas en la frontera. Veamos el código utilizado para hacer la gráfica.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% A continuación se calcularán los errores de la aproximación de Fourier en función de los términos:&lt;br /&gt;
KK=0:1:100;&lt;br /&gt;
error_log=zeros(length(KK),1); % Inicializamos el vector donde se almacenarán los errores logarítmicos.&lt;br /&gt;
for i=1:length(KK)&lt;br /&gt;
    k=KK(i);&lt;br /&gt;
    int=linspace(-pi,pi,k); % Intervalo de integración para los coef de Fourier.&lt;br /&gt;
    a0=1/pi.*integral(g,-pi,pi); % Coeficiente de Fourier a_0 (asociado a 1/2).&lt;br /&gt;
    a=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al coseno.&lt;br /&gt;
    b=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al seno.&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        f_cos=@(theta) g(theta).*cos(j.*theta); % Definimos la función a integrar asociada al coseno.&lt;br /&gt;
        f_sin=@(theta) g(theta).*sin(j.*theta); % Definimos la función a integrar asociada al seno.&lt;br /&gt;
        a(j)=1/pi.*integral(f_cos,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fourier del coseno.&lt;br /&gt;
        b(j)=1/pi.*integral(f_sin,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fouries del seno.&lt;br /&gt;
    end&lt;br /&gt;
    % Calculamos la solución u_k asociada al número de términos de la serie:&lt;br /&gt;
    suma=@(r,theta)0;&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        suma=@(r,theta) suma(r,theta) + a(j).*(r/R).^j.*cos(j.*theta)+b(j).*(r/R).^j.*sin(j.*theta);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['u_' num2str(i) '=@(r,theta) 1/2*a0 + suma(r,theta);']);&lt;br /&gt;
    eval(['u=@(r,theta)u_' num2str(i) '(r,theta) ;']);&lt;br /&gt;
    U_exacta=u_exacta(RR,THETA);&lt;br /&gt;
    U_fourier=u(RR,THETA);&lt;br /&gt;
    valores_max=max(U_exacta-U_fourier);&lt;br /&gt;
    sup=max(valores_max,[],'all');&lt;br /&gt;
    error_log(i)=log10(sup);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
plot(KK,error_log)&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Errores supremos frente al número de términos')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(10^n))')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Comportamiento de la solución ===&lt;br /&gt;
En esta sección, y atendiendo al comportamiento de la solución estudiaremos en qué región se han de encontrar las soluciones armónicas dentro  de la bola &amp;lt;math&amp;gt;B_R&amp;lt;/math&amp;gt;, siendo &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; el radio de la bola, que tengan el mismo valor que nuestra solución en el (0,0).&lt;br /&gt;
&lt;br /&gt;
La '''desigualdad de Harnack''' establece: Sea &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; armónica y &amp;lt;math&amp;gt;0\leq u&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;\Omega \in \mathbb{R}^n&amp;lt;/math&amp;gt;. Supongamos &amp;lt;math&amp;gt;\overline{B_{R}(z)}\subset \Omega&amp;lt;/math&amp;gt;. Entonces:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{R^{n-2} (R-r)}{(R+r)^{n-1}} u(z)\leq u(x) \leq \frac{R^{n-2}  (R+r)}{(R-r)^{n-1}}u(z), \forall x \in B_{R}(z), r=||z-x||.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para proceder al estudio planteado, comenzamos calculando el mínimo de la función &amp;lt;math&amp;gt;g(x,y)=xy&amp;lt;/math&amp;gt; en la frontera de la bola &amp;lt;math&amp;gt;B_R&amp;lt;/math&amp;gt; al que llamaremos &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;. Para facilitar los cálculos de aquí en adelante trabajaremos en coordenadas polares, por lo que nuestra función &amp;lt;math&amp;gt;g(x,y)=xy&amp;lt;/math&amp;gt; pasa a ser &amp;lt;math&amp;gt;g(\theta)=R^2cos(\theta)sin(\theta)&amp;lt;/math&amp;gt;, siendo &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; el radio de la bola. Para el cálculo del mínimo se ha empleado un código de Matlab presentado al final de esta sección.&lt;br /&gt;
&lt;br /&gt;
A continuación, definimos la función &amp;lt;math&amp;gt;v:=u-M &amp;lt;/math&amp;gt; , siendo u nuestra solución del problema. Esta función &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; es positiva y armónica, por lo que podemos aplicar la desigualdad de Harnack para &amp;lt;math&amp;gt;\mathbb{R}&amp;lt;/math&amp;gt;, es decir, &amp;lt;math&amp;gt;n=2&amp;lt;/math&amp;gt;. Obteniendo lo siguiente:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{(R-r)}{(R+r)} v(0,0) \leq v(x,y) \leq \frac{(R+r)}{(R-r)}v(0,0), \forall (x,y) \in B_{R}. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Representando gráficamente las cotas planteadas, obtenemos las siguientes gráficas:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: harnack_ejercicio4_n2.png|600px|thumb|center|Desigualdad de Harnack en &amp;lt;math&amp;gt;R^2&amp;lt;/math&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== Ecuación de Poisson ==&lt;br /&gt;
&lt;br /&gt;
En esta parte del documento se va a proceder a resolver la ecuación de Poisson mediante un nuevo método. En primer lugar, esta ecuación viene dada por  &amp;lt;math&amp;gt; \Delta u = f &amp;lt;/math&amp;gt; siendo &amp;lt;math&amp;gt;u:\mathbb{R}^n \rightarrow \mathbb{R}&amp;lt;/math&amp;gt;y &amp;lt;math&amp;gt; f \in C^2(\mathbb{R})&amp;lt;/math&amp;gt;. Para este estudio se particularizará para n=2 y n=3.&lt;br /&gt;
&lt;br /&gt;
Se comenzará definiendo la solución fundamental de esta ecuación, pues se utilizará posteriormente para calcular el potencial newtoniano o logarítimico. Esta viene dada por &amp;lt;math&amp;gt;  \phi(x) = -\frac{1}{2\pi} log(|x|) &amp;lt;/math&amp;gt; si n=2 y &amp;lt;math&amp;gt;  \phi(x) = \frac{1}{4\pi |x| } &amp;lt;/math&amp;gt; si n=3.&lt;br /&gt;
=== Potencial newtoniano para &amp;lt;math&amp;gt; \mathbb{R}^3&amp;lt;/math&amp;gt; ===&lt;br /&gt;
Supongamos que &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
representa la densidad de una carga contenida en un conjunto compacto dentro del espacio tridimensional &amp;lt;math&amp;gt; \mathbb{R}^3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Entonces, la expresión &amp;lt;math&amp;gt; \phi(x-y)f(y)dy&amp;lt;/math&amp;gt; denota el potencial en el punto x. De esta manera el potencial total viene dado por la siguiente expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\mathbf{x}) = \int_{\mathbb{R}^n} f(\mathbf{y}) \phi(\mathbf{x} - \mathbf{y}) d\mathbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta fórmula se conoce como potencial Newtoniano de f y se aplica sobre funciones que en el infinito tienden de manera rápida a cero.&lt;br /&gt;
&lt;br /&gt;
A su vez, sea &amp;lt;math&amp;gt;f \in C^2(\mathbb{R}^3)&amp;lt;/math&amp;gt; con soporte compacto. Sea &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; el potencial newtoniano de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, definido por el potencial Newtoniano. Entonces, &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; es la única solución en &amp;lt;math&amp;gt;\mathbb{R}^3&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;\Delta u = -f&amp;lt;/math&amp;gt;  que pertenece a &amp;lt;math&amp;gt;C^2(\mathbb{R}^3)&amp;lt;/math&amp;gt; y se anula en el infinito. Es decir, dado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \begin{cases}&lt;br /&gt;
     \Delta u = -f \\&lt;br /&gt;
   u(x) \rightarrow 0  &amp;amp; \text{si } |x| \rightarrow \infty&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
su solución viene dada por el potencial newtoniano que se presenta anteriormente.&lt;br /&gt;
&lt;br /&gt;
=== Potencial logarítmico para &amp;lt;math&amp;gt; \mathbb{R}^2&amp;lt;/math&amp;gt; ===&lt;br /&gt;
Si el problema se presenta en &amp;lt;math&amp;gt; \mathbb{R}^2&amp;lt;/math&amp;gt; el potencial newtoniano se sustituye por el potencial logarítimico:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\mathbf{x}) = -\frac{1}{2\pi}\int_{\mathbb{R}^2}  log|\mathbf{x} - \mathbf{y}|f(\mathbf{y}) d\mathbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta manera, Sea &amp;lt;math&amp;gt;f \in C^2(\mathbb{R}^2)&amp;lt;/math&amp;gt; con soporte compacto, &amp;lt;math&amp;gt;u(\mathbf{x})&amp;lt;/math&amp;gt; es la única solución en &amp;lt;math&amp;gt;\mathbb{R}^2&amp;lt;/math&amp;gt; de:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \begin{cases}&lt;br /&gt;
     \Delta u = -f \\&lt;br /&gt;
   u(x)=-\frac{M}{2\pi} log |x| + O\left(\frac{1}{|x|} \right)  &amp;amp; \text{si } |x| \rightarrow \infty&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M= \int _{\mathbb{R}^2} f(\mathbf y) d\mathbf y&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
A continuación, veremos un ejemplo de lo explicado anteriormente para una correcta comprensión de ello. De esta manera, mediante el potencial logarítmico se aproximará la ecuación de Poisson cuando f sea la función característica de la bola de radio 1 y se estudiará su comportamiento en el infinito.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Para resolver este ejemplo se ha realizado un código en Matlab. La integral se ha simplificado de la siguiente manera:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; -\frac{1}{2\pi}\int_{\partial B_1 0} log|\mathbf{x} - \mathbf{y}| d\mathbf{y} = -\frac{\pi}{4}\frac{1}{2\pi}\int_{-1} ^1 \int_{-1} ^1 log|\mathbf{x} - \mathbf{y}| dx dy &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%aSe divide el dominio de cada variable en 200 puntos. Para y1 e y2 se coge&lt;br /&gt;
%el intervalo [-1,1] pues cuando este fuera de este intervalo la función vale 0 y por tanto la integral se anulará y para x1 y x2 se coge un intervalo muy grande pues la función tiene dominio todo R2.&lt;br /&gt;
i1 = linspace(-1,1,200);&lt;br /&gt;
i2 = linspace(-1,1,200);&lt;br /&gt;
i3 = linspace(-10^4,10^4,200);&lt;br /&gt;
i4 = linspace(-10^4,10^4,200);&lt;br /&gt;
&lt;br /&gt;
% Se define la función f anteriormente obtenida&lt;br /&gt;
f = @(y1, y2, x1, x2) -(pi/4)*(1/(2*pi))*log(sqrt((y1-x1).^2 + (y2-x2).^2));&lt;br /&gt;
&lt;br /&gt;
% Generamos una malla de puntos&lt;br /&gt;
[A, B] = meshgrid(i1, i2);&lt;br /&gt;
[C, D] = meshgrid(i3,i4);&lt;br /&gt;
&lt;br /&gt;
%Creamos una matriz cero donde se irán metiendo los valores que&lt;br /&gt;
%próximamente evaluaremos&lt;br /&gt;
values = zeros(size(A)); &lt;br /&gt;
&lt;br /&gt;
% Se crea el siguiente bucle para obtener los valores que necesitamos para&lt;br /&gt;
% la representación gráfica&lt;br /&gt;
for i = 1:length(i1)&lt;br /&gt;
    for j = 1:length(i2)&lt;br /&gt;
        fnum = @(x, y) f(x, y, i3(i), i4(j)); % Se crea este bucle para ir evaluando f en los distintos puntos (x1,x2)&lt;br /&gt;
        values(i, j) = trapz(i2, trapz(i1, fnum(A, B), 2)); % Evaluar fnum en la malla (A, B) y calcular la integral por el método del trapecio&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Se dibujan todos los puntos obtenidos&lt;br /&gt;
surf(C,D,values)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La representación obtenida es la siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Unoaitana.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación se va a comprobar si la solución se comporta de la manera esperada en el infinito. Tal y como se ha especificado anteriormente el comportamiento asintótico sigue la siguiente función:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x)=-\frac{M}{2\pi} log |x| + O(\frac{1}{|x|})&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
siendo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M= \int _{\mathbb{R}^2} f(\mathbf y) d\mathbf y&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación, se compara esta función con la solución obtenida anteriormente con el fin de observar si se comporta adecuadamente. Se ha creado el siguiente código:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
graf=zeros(length(i1));&lt;br /&gt;
xgraf=zeros(length(i1));&lt;br /&gt;
for i = 1:length(i1)&lt;br /&gt;
        fnum = @(x, y) f(x, y, i3(i), i4(i));&lt;br /&gt;
        &lt;br /&gt;
        graf(i) = trapz(i2, trapz(i1, fnum(A,B), 2));&lt;br /&gt;
        xgraf(i)=sqrt(2*(i3(i)^2));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
hold on&lt;br /&gt;
hol= @(x) -1/2*log(x);&lt;br /&gt;
valy = hol(xgraf);&lt;br /&gt;
% Crear el gráfico de las líneas y los puntos&lt;br /&gt;
hold on&lt;br /&gt;
plot(xgraf, valy, '-','DisplayName','Función asintótica'); &lt;br /&gt;
plot(xgraf, graf, '*','DisplayName','Función obtenida');&lt;br /&gt;
xlabel('Eje x')&lt;br /&gt;
ylabel('Eje y')&lt;br /&gt;
title('Gráfico función asintótica y función obtenida')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Se ha obtenido la siguiente gráfica, siendo la verde la función obtenida y la azul la función asintótica:&lt;br /&gt;
[[Archivo: Dosaitana.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
Tal y como se ve, se observa que el comportamiento es el esperado.&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Harnack_ejercicio4_n3.png&amp;diff=71674</id>
		<title>Archivo:Harnack ejercicio4 n3.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Harnack_ejercicio4_n3.png&amp;diff=71674"/>
				<updated>2024-04-19T18:53:52Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Harnack_ejercicio4_n2.png&amp;diff=71673</id>
		<title>Archivo:Harnack ejercicio4 n2.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Harnack_ejercicio4_n2.png&amp;diff=71673"/>
				<updated>2024-04-19T18:53:35Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaciones_de_Laplace_y_de_Poisson&amp;diff=71672</id>
		<title>Ecuaciones de Laplace y de Poisson</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaciones_de_Laplace_y_de_Poisson&amp;diff=71672"/>
				<updated>2024-04-19T18:53:14Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: /* Comportamiento de la solución */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introducción ==&lt;br /&gt;
En este documento, nos centraremos en dos ecuaciones que tienen un amplio uso en diversos ámbitos como electrostática, mecánica de fluidos, física teórica y magnetostática: la ecuación de Laplace y la ecuación de Poisson. &lt;br /&gt;
Ambas ecuaciones las estudiaremos en el plano y las veremos aplicadas en problemas concretos. Veremos las limitaciones que presenta la fórumla de Poisson así como diferentes métodos analíticos para aproximar soluciones, y raíz de esto, analizaremos errores de aproximación. Por último, estudiaremos el comportamiento de soluciones tanto en un dominio dado, utilizando la desigualdad de Harnack, como asintóticamente en infinito.&lt;br /&gt;
 &lt;br /&gt;
 CREO QUE AQUÍ ME FALTAN PUNTOS Y COMAS&lt;br /&gt;
&lt;br /&gt;
== Ecuación de Laplace ==&lt;br /&gt;
La ecuación de Laplace, cuyo nombre nombre honra al distinguido físico-matemático Pierre-Simon Laplace, es una ecuación en derivadas parciales de tipo elíptico. REFERENCIA?&lt;br /&gt;
Construyamos un problema de derivadas parciales a partir de la ecuación de Laplace. La ecuación es,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \Delta u = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
con &amp;lt;math&amp;gt;u:\mathbb{R}^3 \rightarrow \mathbb{R}&amp;lt;/math&amp;gt; como incógnita. Esta ecuación se define en un dominio &amp;lt;math&amp;gt; \Omega &amp;lt;/math&amp;gt;, y en su frontera &amp;lt;math&amp;gt; \partial \Omega &amp;lt;/math&amp;gt; se pueden añadir condiciones de contorno Dirichlet, Neuman o mixtas. En este trabajo nos centraremos en las condiciones de contorno de tipo Dirichlet, las cuales igualan &amp;lt;math&amp;gt; u &amp;lt;/math&amp;gt; a una función específica &amp;lt;math&amp;gt; g &amp;lt;/math&amp;gt;. Con todo esto, llegamos al siguiente problema de derivadas parciales.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  \Omega \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial \Omega &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A fin de comprender mejor este problema, podemos examinar el siguiente ejemplo en concreto. &lt;br /&gt;
&lt;br /&gt;
===== Ejemplo bola unidad =====&lt;br /&gt;
Sea &amp;lt;math&amp;gt; B_1 ⊂ R^2 &amp;lt;/math&amp;gt; la bola unidad centrada en el origen. Planteamos el problema, &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_1 \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
A lo largo de este documento, en lo que tiene que ver con la ecuación de Laplace, visitaremos este ejemplo varias veces.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dentro de la resolución del problema planteado existen varios métodos por los que proceder. En este trabajo estudiaremos dos: la fórmula de Poisson y la serie de Fourier.&lt;br /&gt;
=== Solución por la fórmula de Poisson ===&lt;br /&gt;
Encontrar la solución del problema mediante la fórmula de Poisson viene determinado por el siguiente teorema.&lt;br /&gt;
&lt;br /&gt;
===== Teorema =====&lt;br /&gt;
La solución &amp;lt;math&amp;gt; u \in C^2(B_R \cup C(\overline{B_R}) &amp;lt;/math&amp;gt;del problema &amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_R \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial B_R &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt; donde &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; es una función continua viene dado por la fórmula de Poisson &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\vec{x})=\frac{R^2-|\vec{x}|^2}{w_n R}\int_{\partial B_R}\frac{g(\sigma)}{|\vec{x}-\sigma|^2} d\sigma. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es importante destacar que el denominador &amp;lt;math&amp;gt;|\vec{x}-\sigma|^2 &amp;lt;/math&amp;gt; se anula en la frontera de la bola llevándonos a una indeterminación y haciendo que la integral diverja. Esto también pasa si expresamos la fórmula en coordenadas polares &amp;lt;math&amp;gt;(r, \theta)&amp;lt;/math&amp;gt;. Tomando, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\vec{x} = (x_1, x_2) = (rcos(\theta), rsen(\theta)) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; g(rcos(\theta), rsen(\theta)) = G(\theta)&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
llegamos a la fórmula de Poisson, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; U(r,\theta)=\frac{R^2-r^2}{2\pi R}\int_{0}^{2\pi}\frac{g(s)}{R^2+r^2-2Rrcos(\theta-s)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso, el denominador de la integral también se anula para puntos cercanos a la frontera, concretamente cuando el coseno se hace 1. &lt;br /&gt;
&lt;br /&gt;
Veamos todo esto aplicado a la bola unidad pasado a coordenadas polares,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    U_{rr} + \frac{1}{r} U_r + \frac{1}{r^2} U_{\theta\theta} = 0, &amp;amp; (r, \theta) \in  B_1 \\&lt;br /&gt;
    U(1, \theta) = G(\theta), &amp;amp;   (r, \theta) \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la resolución de este problema vamos a tomar &amp;lt;math&amp;gt;G(\theta) = máx\{0, 1-\frac{2}{\pi} |\theta - \pi|\}&amp;lt;/math&amp;gt; y utilizaremos la fórmula de Poisson en polares tomando &amp;lt;math&amp;gt;R = 1&amp;lt;/math&amp;gt; y calculando la integral de manera aproximada con la fórmula del trapecio. Como hemos visto antes, la fórmula da problemas para puntos cercanos al borde. Esto lleva a una representación irregular de la frontera si dibujamos la solución sin tener en cuenta este problema.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: sol_sin_frontera_ejercicio1.png|400px|miniaturadeimagen|center|Solución del problema de Poisson sin aplicar la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
Es por esto por lo que la condición frontera no es prescindible en el problema. Para estimar &amp;lt;math&amp;gt; U(r,\theta)&amp;lt;/math&amp;gt;, utilizaremos la fórmula de Poisson para puntos ligeramente alejados del borde, y en el propio borde utilizaremos la condición frontera &amp;lt;math&amp;gt;U(R, \theta) = G(\theta)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: sol_ejercicio1.png|400px|miniaturadeimagen|center|Solución del problema de Poisson aplicando la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
En esta nueva gráfica podemos apreciar como la frontera no presenta las irregularidades anteriores. &lt;br /&gt;
Para conseguir estas gráficas hemos implementado el siguiente código en MatLab.&lt;br /&gt;
&lt;br /&gt;
====== Códigos ======&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Este código resuelve el problema planteado con la fórmula de Poisson sin aplicar condición frontera:&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g:&lt;br /&gt;
g=@(theta)max(0, 1-2/pi*abs(theta-pi));&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos r y theta sobre los que vamos a trabajar:&lt;br /&gt;
N=200; % Número de divisiones del intervalo&lt;br /&gt;
r=linspace(0,R,N); % No podemos llegar hasta la frontera&lt;br /&gt;
theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución de u con la fórmula de Poisson:&lt;br /&gt;
NN=100; % División del intervalo de integración.&lt;br /&gt;
s=linspace(0,2*pi,NN); % Intervalo de integración, para el método del trapecio.&lt;br /&gt;
u=zeros(N,N); % Inicializamos la matriz que almacena los valores de la solución.&lt;br /&gt;
for i=1:length(theta)&lt;br /&gt;
    for j=1:length(r) % Calculamos solución a través de la fórmula del trapecio:&lt;br /&gt;
        u(i,j)=1/(2*pi).*trapz(s,g(s).*(R^2-r(j).^2)./(R^2+r(j).^2-2.*r(j).*cos(s-theta(i))));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
% Creamos la malla:&lt;br /&gt;
[RR,THETA]=meshgrid(r,theta);&lt;br /&gt;
figure&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u,'EdgeColor','flat') % Representación gráfica&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('y')&lt;br /&gt;
zlabel('u(x,y)')&lt;br /&gt;
title('Solución de la ecuación de Laplace')&lt;br /&gt;
}}&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Este código resuelve el problema planteado con la fórmula de Poisson aplicando la condición frontera:&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g:&lt;br /&gt;
g=@(theta)max(0, 1-2/pi*abs(theta-pi));&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos r y theta sobre los que vamos a trabajar:&lt;br /&gt;
N=200; % Número de divisiones del intervalo&lt;br /&gt;
r=linspace(0,R-N^(-1),N-1); % No podemos llegar hasta la frontera&lt;br /&gt;
theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución de u con la fórmula de Poisson:&lt;br /&gt;
NN=1000; % División del intervalo de integración.&lt;br /&gt;
s=linspace(0,2*pi,NN); % Intervalo de integración, para el método del trapecio.&lt;br /&gt;
u=zeros(N,N); % Inicializamos la matriz que almacena los valores de la solución.&lt;br /&gt;
for i=1:length(theta)&lt;br /&gt;
    for j=1:length(r) % Calculamos solución a través de la fórmula del trapecio:&lt;br /&gt;
        u(i,j)=1/(2*pi).*trapz(s,g(s).*(R^2-r(j).^2)./(R^2+r(j).^2-2.*r(j).*cos(s-theta(i))));&lt;br /&gt;
    end&lt;br /&gt;
    % Establecemos condiciones frontera (por presentar problemas en esta):&lt;br /&gt;
    u(i,N)=g(theta(i));&lt;br /&gt;
end&lt;br /&gt;
r(N)=1;&lt;br /&gt;
% Creamos la malla:&lt;br /&gt;
[RR,THETA]=meshgrid(r,theta);&lt;br /&gt;
figure&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u,'EdgeColor','flat') % Representación gráfica&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('y')&lt;br /&gt;
zlabel('u(x,y)')&lt;br /&gt;
title('Solución de la ecuación de Laplace')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== Errores de la fórmula de Poisson =====&lt;br /&gt;
Como hemos observado anteriormente, la fórmula de Poisson presenta ciertas dificultades a la hora de aproximar la solución en la frontera, debido a la singularidad inherente de la integral. En este apartado examinaremos estas irregularidades calculando el error de la aproximación frente a la solución exacta.&lt;br /&gt;
&lt;br /&gt;
Volviendo al ejemplo de la bola unidad, esta vez vamos a suponer el problema,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_1 \\&lt;br /&gt;
    u = g(x,y) = xy, &amp;amp;   \text{x} \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que tiene como solución exacta la función armónica &amp;lt;math&amp;gt;u(x,y) = xy&amp;lt;/math&amp;gt;. Tal y como hemos hecho en el apartado anterior, calculamos la solución aproximada utilizando la fórmula de Poisson, la fórmula del trapecio y pasando a coordenadas polares.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    U_{rr} + \frac{1}{r} U_r + \frac{1}{r^2} U_{\theta\theta} = 0, &amp;amp; (r, \theta) \in  B_1 \\&lt;br /&gt;
    U(1,\theta)=G(\theta)=\cos(\theta)\sin(\theta), &amp;amp;   (r, \theta) \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vamos a distinguir entre dos tipos de puntos, aquellos que estén &amp;quot;alejados&amp;quot; de la frontera y aquellos sean inmediatos a esta. &lt;br /&gt;
Primero estudiaremos el error en puntos &amp;quot;alejados&amp;quot; de la frontera. Esto lo hacemos empleando distintas discretizaciones con &amp;lt;math&amp;gt; 10^n &amp;lt;/math&amp;gt; puntos en la fórmula del trapecio. Después, calculamos el error para cada discretización en un punto alejado, en este caso lo hacemos evaluando en &amp;lt;math&amp;gt;x = (r,\theta)=(0.9,\pi/4)&amp;lt;/math&amp;gt;. Posteriormente graficamos el error aplicando la fórmula,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;f(n):=\log_{10}(Error(10^n)), &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Obteniendo así la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: error_puntoalejado_ejercicio2.png|400px|miniaturadeimagen|center|Error de un punto alejado a la frontera]]&lt;br /&gt;
&lt;br /&gt;
Los resultados de esta gráfica cuadran con nuestra intuición, a mayor número de puntos menor es el error que se comete. Además podemos apreciar que el error se acaba estabilizando al rededor de &amp;lt;math&amp;gt;10^{-15}&amp;lt;/math&amp;gt;. Luego podemos concluir que la fórmula de Poisson proporciona una buena aproximación para puntos relativamente alejados de la frontera. &lt;br /&gt;
&lt;br /&gt;
A continuación, atendiendo a la fórmula del error &amp;quot;teórica&amp;quot; dada por el método del trapecio, la cual sigue la siguiente expresión:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;Error:=\left|-\cfrac{f''(\xi)(b-a)^3}{12n^2}\right|, &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
siendo &amp;lt;math&amp;gt;\xi&amp;lt;/math&amp;gt; un valor dentro del intervalo &amp;lt;math&amp;gt;[a,b]&amp;lt;/math&amp;gt;, y n el valor que genera la discretización para la aplicación del método del trapecio. En nuestro caso, &amp;lt;math&amp;gt;[a,b]=[0,2\pi]&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; la función a integrar en la fórmula de Poisson.&lt;br /&gt;
Ahora bien, el código de MatLab presentado al final de la sección implementa un cálculo del error máximo, tomando para cada n el error máximo en la discretización y acumulándolo en la lista &amp;lt;math&amp;gt;error\_max&amp;lt;/math&amp;gt; de tal forma que en la gráfica se presenta una representación del error máximo teórico de la fórmula del trapecio.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: comparacion_errores_ejercicio2.png|400px|miniaturadeimagen|center|Comparación errores con su máximo]]&lt;br /&gt;
&lt;br /&gt;
Como se puede apreciar de manera bastante clara en la gráfica, a medida que aumentan los puntos de la discretización, la cota va disminuyendo. Aún así, se puede apreciar que el error calculado para un punto alejado de la frontera se sigue manteniendo por debajo de dicha cota.&lt;br /&gt;
&lt;br /&gt;
Estudiemos ahora el error cometido en puntos &amp;quot;cercanos&amp;quot; a la frontera. En este caso vamos utilizar una única discretización de 100 puntos de la fórmula del trapecio y puntos que cada vez se acercan más a la frontera. Partiendo del punto &amp;lt;math&amp;gt;x = (r,\theta)=(0.9,\pi/4)&amp;lt;/math&amp;gt; vamos a ir avanzando hacia la frontera con puntos de la forma &amp;lt;math&amp;gt;(r,\theta)=(1-10^{-n}, \pi/4)&amp;lt;/math&amp;gt;. La gráfica entonces resulta ser:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: error_puntoscercanosfrontera_ejercicio2.png|400px|miniaturadeimagen|center|Error de puntos cercanos a la frontera]]&lt;br /&gt;
&lt;br /&gt;
En este caso el error incrementa según los puntos se acercan a la frontera y se acaba estabilizando en &amp;lt;math&amp;gt;-0,3&amp;lt;/math&amp;gt;.&lt;br /&gt;
El código utilizado para dibujar estas gráficas es el siguiente.&lt;br /&gt;
&lt;br /&gt;
{{matlab||codigo=&lt;br /&gt;
% El siguiente código ejecuta todas las gráficas planteadas a lo largo de esta sección&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Definimos el radio de la bola;&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos la función g:&lt;br /&gt;
g =@(theta) (R.^2.*cos(theta).*sin(theta));&lt;br /&gt;
&lt;br /&gt;
% Definimos la solución exacta:&lt;br /&gt;
u_exacta =@(r,theta) (r.^2.*cos(theta).*sin(theta));&lt;br /&gt;
&lt;br /&gt;
% Tomamos el punto r=0.9 y theta=pi/4:&lt;br /&gt;
r_valor=0.9;&lt;br /&gt;
theta_valor=pi/4;&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución u en el punto anterior:&lt;br /&gt;
n=1:1:8;&lt;br /&gt;
error=zeros(1,length(n)); % Inicializamos la matriz que almacena el error&lt;br /&gt;
error_log=zeros(1,length(n)); % Inicializamos la matriz que almacena el error logarítmico&lt;br /&gt;
u_valor=zeros(1,length(n)); % Inicializamos la matriz que almacena la solución de u para distintas discretizaciones del método del trapecio&lt;br /&gt;
for i=1:length(n)&lt;br /&gt;
    s=linspace(0,2*pi,10^(n(i))); % Intervalo de integración&lt;br /&gt;
    u_valor(i)=1/(2*pi).*trapz(s,g(s).*(R^2-r_valor.^2)./(R^2+r_valor.^2-2.*r_valor.*cos(s-theta_valor))); % Solución a través de la fórmula de Poisson&lt;br /&gt;
    &lt;br /&gt;
    % Calculamos el error:&lt;br /&gt;
    error(i)=abs(u_exacta(r_valor,theta_valor)-u_valor(i));&lt;br /&gt;
    % Calculamos el error logarítmico:&lt;br /&gt;
    error_log(i)=log10(error(i));&lt;br /&gt;
end&lt;br /&gt;
% Representamos gráficamente el error logarítmico para el punto r=0.9 y theta=pi/4:&lt;br /&gt;
plot(n,error_log,'o-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(10^n))')&lt;br /&gt;
grid on &lt;br /&gt;
grid minor&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Gráfica del error logarítmico')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Observamos la existencia de un error máximo que nos permita confirmar&lt;br /&gt;
% que los errores calculados anteriormente se encuentran por debajo siempre:&lt;br /&gt;
&lt;br /&gt;
% Calculamos la segunda derivada (requerida por la fórmula):&lt;br /&gt;
syms rr ss thetatheta&lt;br /&gt;
% Definimos de forma simbólica la función a derivar:&lt;br /&gt;
f=rr^2*cos(ss)*sin(ss)/(1+rr^2-2*rr*cos(thetatheta-ss));&lt;br /&gt;
derivada1=diff(f,ss); % Derivamos la función f en función de la variable s&lt;br /&gt;
derivada2=diff(derivada1,ss); % Derivamos la primera derivada en función de la variable s&lt;br /&gt;
% Calculamos el error máximo del método del trapecio:&lt;br /&gt;
nn=1:1:3; % Conforme el número sea más elevado aquí más aumentará el tiempo de compilación del programa.&lt;br /&gt;
error_max=zeros(length(nn),1); % Inicializamos a ceros el vector que almacenará los datos del error máximo del trapecio&lt;br /&gt;
for i=1:length(nn)&lt;br /&gt;
    N=10^i;&lt;br /&gt;
    s=linspace(0,2*pi,N);&lt;br /&gt;
    error_trapz=zeros(N,1); % Inicializamos a ceros el vector que almacenará los datos del error del trapecio para cada n&lt;br /&gt;
    for j=1:N&lt;br /&gt;
        s_valor=s(j);&lt;br /&gt;
        error_trapz(j)=log10(abs(-(2*pi).^3.*subs(derivada2, [rr,ss,thetatheta] ,[r_valor,s_valor,theta_valor])./(12.*(N.^2))));&lt;br /&gt;
    end&lt;br /&gt;
    error_max(i)=max(error_trapz);&lt;br /&gt;
end&lt;br /&gt;
% Representamos gráficamente el error máximo junto con el error calculado&lt;br /&gt;
% anteriormente:&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
plot(nn,error_log(1:length(nn)),'Color','blue')&lt;br /&gt;
plot(nn,error_max,'Color','red')&lt;br /&gt;
hold off&lt;br /&gt;
legend('Error','Error máximo')&lt;br /&gt;
title('Comparación de errores')&lt;br /&gt;
grid on&lt;br /&gt;
grid minor&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('Error')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Fijamos ahora para N=100 (puntos en la fórmula del trapecio).&lt;br /&gt;
% Vamos a calcular el error en los puntos de la forma r=1-10^(-n) y theta=pi/4 y veremos qué ocurre:&lt;br /&gt;
N=100;&lt;br /&gt;
r_valores=zeros(1,N); % Inicializamos vector que almacena los valores de r.&lt;br /&gt;
u_valores_r=zeros(1,N); % Inicializamos el vector que almacena los valores de la solución u para distintos valores de r.&lt;br /&gt;
u_exacta_r=zeros(1,N); % Inicializamos el vector que almacena los valores de la solución u exacta para distintos valores de r.&lt;br /&gt;
error_r=zeros(1,N); % Inicializamos el vector que almacena los errores.&lt;br /&gt;
error_log_r=zeros(1,N); % Inicializamos el vector que almacena los errores logarítmicos.&lt;br /&gt;
% theta_valor=pi/4 es el mismo que hemos usado antes, por lo que no lo volvemos a inicializar.&lt;br /&gt;
% Definimos el vector de integración de la fórmula del trapecio:&lt;br /&gt;
s=linspace(0,2*pi,N);&lt;br /&gt;
for j=1:N&lt;br /&gt;
    r_valores(j)=1-10^(-j);&lt;br /&gt;
    u_valores_r(j)=1/(2*pi).*trapz(s,g(s).*(R^2-r_valores(j).^2)./(R^2+r_valores(j).^2-2.*r_valores(j).*cos(s-theta_valor)));&lt;br /&gt;
    u_exacta_r(j)=u_exacta(r_valores(j),theta_valor);&lt;br /&gt;
    error_r(j)=abs(u_exacta_r(j)-u_valores_r(j));&lt;br /&gt;
    error_log_r(j)=log10(error_r(j));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
plot(1:1:N,error_log_r,'.-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(100))')&lt;br /&gt;
grid on &lt;br /&gt;
grid minor&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Errores en los puntos cercanos a la frontera')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Solución por la serie de Fourier ===&lt;br /&gt;
Una vez estudiada la solución por la fórmula de Poisson, en este apartado calcularemos la solución por serie de Fourier. La obtención de esta solución se basa en una cambio de variable a polares del problema, como el visto previamente, y resolución por separación de variables.  Hacemos esto aplicado al problema anterior en una bola de radio &amp;lt;math&amp;gt; R &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta U=U_{rr}+\frac{1}{r}U_r+\frac{1}{r^2}U_{\theta\theta}=0, r\in(0,R),\theta\in(0,2\pi)\\&lt;br /&gt;
U(R,\theta)=G(\theta)=R^2 sin(\theta)cos(\theta), \theta\in[0,2\pi).&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo cual nos conduce a, &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
U(r, \theta) = \frac{\alpha_{0}}{2}  +   \sum_{k=1}^{n} \left( \alpha_{k} \left(\frac{r}{R} \right)^k cos(k\theta) + \beta_{k} \left(\frac{r}{R} \right)^k sin(k\theta)\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que tiene coeficientes,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\alpha_{0} =\frac{1}{\pi}\int_{-\pi}^{\pi} \cos\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\alpha_{k} =\frac{1}{\pi}\int_{-\pi}^{\pi} cos(\theta) \sin(\theta) \cos\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\beta_{k} =\frac{1}{\pi}\int_{-\pi}^{\pi} cos(\theta) \sin(\theta) \sin\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Sin embargo, todos los coeficientes de Fourier son nulos, salvo por &amp;lt;math&amp;gt; \beta_2=\frac{R^2}{2}&amp;lt;/math&amp;gt;, luego la solución por series de Fourier final es, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}\sin(2\theta)=r^2\cos(\theta)\sin(\theta), r\in [0,R], \theta\in[0,2\pi)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Veamos ahora la gráfica que dibuja esta solución tomando &amp;lt;math&amp;gt; R = 1 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Tresaitana1.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Ecuación de Laplace&lt;br /&gt;
%% Apartado 3&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Definimos el radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% k términos de la serie:&lt;br /&gt;
K=[5 10 100];&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g y la función u exacta:&lt;br /&gt;
g=@(theta) R.^2.*cos(theta).*sin(theta);&lt;br /&gt;
u_exacta=@(r,theta) r.^2.*cos(theta).*sin(theta);&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos de theta y r:&lt;br /&gt;
N=300; % Número de divisiones de los intervalos theta y r.&lt;br /&gt;
Theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
r=linspace(0,R,N); % Intervalo r.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Calculamos los coeficientes de Fourier para distintos k-términos:&lt;br /&gt;
for i=1:length(K)&lt;br /&gt;
    k=K(i); % k-términos de la serie.&lt;br /&gt;
    int=linspace(-pi,pi,k); % Intervalo de integración para los coef de Fourier.&lt;br /&gt;
    a0=1/pi.*integral(g,-pi,pi); % Coeficiente de Fourier a_0 (asociado a 1/2).&lt;br /&gt;
    a=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al coseno.&lt;br /&gt;
    b=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al seno.&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        f_cos=@(theta) g(theta).*cos(j.*theta); % Definimos la función a integrar asociada al coseno.&lt;br /&gt;
        f_sin=@(theta) g(theta).*sin(j.*theta); % Definimos la función a integrar asociada al seno.&lt;br /&gt;
        a(j)=1/pi.*integral(f_cos,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fourier del coseno.&lt;br /&gt;
        b(j)=1/pi.*integral(f_sin,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fouries del seno.&lt;br /&gt;
    end&lt;br /&gt;
    % Calculamos la solución u_k asociada al número de términos de la serie:&lt;br /&gt;
    suma=@(r,theta)0;&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        suma=@(r,theta) suma(r,theta) + a(j).*(r/R).^j.*cos(j.*theta)+b(j).*(r/R).^j.*sin(j.*theta);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['u_' num2str(k) '=@(r,theta) 1/2*a0 + suma(r,theta);']);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
[RR,THETA]=meshgrid(r,Theta);&lt;br /&gt;
figure&lt;br /&gt;
for i=1:length(K)&lt;br /&gt;
    k=K(i);&lt;br /&gt;
    subplot(2,2,i)&lt;br /&gt;
    eval(['surf(RR.*cos(THETA),RR.*sin(THETA),u_' num2str(k) '(RR,THETA),&amp;quot;EdgeColor&amp;quot;,&amp;quot;flat&amp;quot;)'])&lt;br /&gt;
    title(&amp;quot;Solución de u para k=&amp;quot;, num2str(k))&lt;br /&gt;
end&lt;br /&gt;
subplot(2,2,4)&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u_exacta(RR,THETA),&amp;quot;EdgeColor&amp;quot;,&amp;quot;flat&amp;quot;)&lt;br /&gt;
title('Solución exacta')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Errores de la solución por serie de Fourier ====&lt;br /&gt;
Al igual que con la solución dada por la fórmula de Poisson, vamos a comparar la solución calculada con la solución exacta &amp;lt;math&amp;gt;u(x,y)=xy&amp;lt;/math&amp;gt; en la bola de radio 1. Vamos a contrastar las soluciones con 5, 10 y 100 términos con la exacta. Calcularemos el error resultante al aproximar la serie de Fourier y lo representamos gráficamente, mostrando el máximo error en función del número de términos utilizados en una escala logarítmica, es decir, pintaremos la función, &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \log_{10}(error(n)) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; error(n) &amp;lt;/math&amp;gt; es ahora el supremo del error con &amp;lt;math&amp;gt;n &amp;lt;/math&amp;gt;términos. Obetenemos así la siguente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Tresaitana2.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
Podemos apreciar en esta gráfica errores de orden muy pequeño, por lo general, los podemos considerar pequeño. Luego, nos damos cuenta de que, a diferencia de solución por la fórmula de Poisson, esta no nos da problemas en la frontera. Veamos el código utilizado para hacer la gráfica.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% A continuación se calcularán los errores de la aproximación de Fourier en función de los términos:&lt;br /&gt;
KK=0:1:100;&lt;br /&gt;
error_log=zeros(length(KK),1); % Inicializamos el vector donde se almacenarán los errores logarítmicos.&lt;br /&gt;
for i=1:length(KK)&lt;br /&gt;
    k=KK(i);&lt;br /&gt;
    int=linspace(-pi,pi,k); % Intervalo de integración para los coef de Fourier.&lt;br /&gt;
    a0=1/pi.*integral(g,-pi,pi); % Coeficiente de Fourier a_0 (asociado a 1/2).&lt;br /&gt;
    a=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al coseno.&lt;br /&gt;
    b=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al seno.&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        f_cos=@(theta) g(theta).*cos(j.*theta); % Definimos la función a integrar asociada al coseno.&lt;br /&gt;
        f_sin=@(theta) g(theta).*sin(j.*theta); % Definimos la función a integrar asociada al seno.&lt;br /&gt;
        a(j)=1/pi.*integral(f_cos,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fourier del coseno.&lt;br /&gt;
        b(j)=1/pi.*integral(f_sin,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fouries del seno.&lt;br /&gt;
    end&lt;br /&gt;
    % Calculamos la solución u_k asociada al número de términos de la serie:&lt;br /&gt;
    suma=@(r,theta)0;&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        suma=@(r,theta) suma(r,theta) + a(j).*(r/R).^j.*cos(j.*theta)+b(j).*(r/R).^j.*sin(j.*theta);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['u_' num2str(i) '=@(r,theta) 1/2*a0 + suma(r,theta);']);&lt;br /&gt;
    eval(['u=@(r,theta)u_' num2str(i) '(r,theta) ;']);&lt;br /&gt;
    U_exacta=u_exacta(RR,THETA);&lt;br /&gt;
    U_fourier=u(RR,THETA);&lt;br /&gt;
    valores_max=max(U_exacta-U_fourier);&lt;br /&gt;
    sup=max(valores_max,[],'all');&lt;br /&gt;
    error_log(i)=log10(sup);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
plot(KK,error_log)&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Errores supremos frente al número de términos')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(10^n))')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Comportamiento de la solución ===&lt;br /&gt;
En esta sección, y atendiendo al comportamiento de la solución estudiaremos en qué región se han de encontrar las soluciones armónicas dentro  de la bola &amp;lt;math&amp;gt;B_R&amp;lt;/math&amp;gt;, siendo &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; el radio de la bola, que tengan el mismo valor que nuestra solución en el (0,0).&lt;br /&gt;
&lt;br /&gt;
La '''desigualdad de Harnack''' establece: Sea &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; armónica y &amp;lt;math&amp;gt;0\leq u&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;\Omega \in \mathbb{R}^n&amp;lt;/math&amp;gt;. Supongamos &amp;lt;math&amp;gt;\overline{B_{R}(z)}\subset \Omega&amp;lt;/math&amp;gt;. Entonces:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{R^{n-2} (R-r)}{(R+r)^{n-1}} u(z)\leq u(x) \leq \frac{R^{n-2}  (R+r)}{(R-r)^{n-1}}u(z), \forall x \in B_{R}(z), r=||z-x||.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para proceder al estudio planteado, comenzamos calculando el mínimo de la función &amp;lt;math&amp;gt;g(x,y)=xy&amp;lt;/math&amp;gt; en la frontera de la bola &amp;lt;math&amp;gt;B_R&amp;lt;/math&amp;gt; al que llamaremos &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;. Para facilitar los cálculos de aquí en adelante trabajaremos en coordenadas polares, por lo que nuestra función &amp;lt;math&amp;gt;g(x,y)=xy&amp;lt;/math&amp;gt; pasa a ser &amp;lt;math&amp;gt;g(\theta)=R^2cos(\theta)sin(\theta)&amp;lt;/math&amp;gt;, siendo &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; el radio de la bola. Para el cálculo del mínimo se ha empleado un código de Matlab presentado al final de esta sección.&lt;br /&gt;
&lt;br /&gt;
A continuación, definimos la función &amp;lt;math&amp;gt;v:=u-M &amp;lt;/math&amp;gt; , siendo u nuestra solución del problema. Esta función &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; es positiva y armónica, por lo que podemos aplicar la desigualdad de Harnack para &amp;lt;math&amp;gt;\mathbb{R}&amp;lt;/math&amp;gt;, es decir, &amp;lt;math&amp;gt;n=2&amp;lt;/math&amp;gt;. Obteniendo lo siguiente:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{(R-r)}{(R+r)} v(0,0) \leq v(x,y) \leq \frac{(R+r)}{(R-r)}v(0,0), \forall (x,y) \in B_{R}. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Representando gráficamente las cotas planteadas, obtenemos las siguientes gráficas:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: harnack_ejercicio4_n2.png|400px|thumb|center|Desigualdad de Harnack en &amp;lt;math&amp;gt;R^2&amp;lt;/math&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== Ecuación de Poisson ==&lt;br /&gt;
&lt;br /&gt;
En esta parte del documento se va a proceder a resolver la ecuación de Poisson mediante un nuevo método. En primer lugar, esta ecuación viene dada por  &amp;lt;math&amp;gt; \Delta u = f &amp;lt;/math&amp;gt; siendo &amp;lt;math&amp;gt;u:\mathbb{R}^n \rightarrow \mathbb{R}&amp;lt;/math&amp;gt;y &amp;lt;math&amp;gt; f \in C^2(\mathbb{R})&amp;lt;/math&amp;gt;. Para este estudio se particularizará para n=2 y n=3.&lt;br /&gt;
&lt;br /&gt;
Se comenzará definiendo la solución fundamental de esta ecuación, pues se utilizará posteriormente para calcular el potencial newtoniano o logarítimico. Esta viene dada por &amp;lt;math&amp;gt;  \phi(x) = -\frac{1}{2\pi} log(|x|) &amp;lt;/math&amp;gt; si n=2 y &amp;lt;math&amp;gt;  \phi(x) = \frac{1}{4\pi |x| } &amp;lt;/math&amp;gt; si n=3.&lt;br /&gt;
=== Potencial newtoniano para &amp;lt;math&amp;gt; \mathbb{R}^3&amp;lt;/math&amp;gt; ===&lt;br /&gt;
Supongamos que &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
representa la densidad de una carga contenida en un conjunto compacto dentro del espacio tridimensional &amp;lt;math&amp;gt; \mathbb{R}^3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Entonces, la expresión &amp;lt;math&amp;gt; \phi(x-y)f(y)dy&amp;lt;/math&amp;gt; denota el potencial en el punto x. De esta manera el potencial total viene dado por la siguiente expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\mathbf{x}) = \int_{\mathbb{R}^n} f(\mathbf{y}) \phi(\mathbf{x} - \mathbf{y}) d\mathbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta fórmula se conoce como potencial Newtoniano de f y se aplica sobre funciones que en el infinito tienden de manera rápida a cero.&lt;br /&gt;
&lt;br /&gt;
A su vez, sea &amp;lt;math&amp;gt;f \in C^2(\mathbb{R}^3)&amp;lt;/math&amp;gt; con soporte compacto. Sea &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; el potencial newtoniano de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, definido por el potencial Newtoniano. Entonces, &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; es la única solución en &amp;lt;math&amp;gt;\mathbb{R}^3&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;\Delta u = -f&amp;lt;/math&amp;gt;  que pertenece a &amp;lt;math&amp;gt;C^2(\mathbb{R}^3)&amp;lt;/math&amp;gt; y se anula en el infinito. Es decir, dado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \begin{cases}&lt;br /&gt;
     \Delta u = -f \\&lt;br /&gt;
   u(x) \rightarrow 0  &amp;amp; \text{si } |x| \rightarrow \infty&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
su solución viene dada por el potencial newtoniano que se presenta anteriormente.&lt;br /&gt;
&lt;br /&gt;
=== Potencial logarítmico para &amp;lt;math&amp;gt; \mathbb{R}^2&amp;lt;/math&amp;gt; ===&lt;br /&gt;
Si el problema se presenta en &amp;lt;math&amp;gt; \mathbb{R}^2&amp;lt;/math&amp;gt; el potencial newtoniano se sustituye por el potencial logarítimico:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\mathbf{x}) = -\frac{1}{2\pi}\int_{\mathbb{R}^2}  log|\mathbf{x} - \mathbf{y}|f(\mathbf{y}) d\mathbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta manera, Sea &amp;lt;math&amp;gt;f \in C^2(\mathbb{R}^2)&amp;lt;/math&amp;gt; con soporte compacto, &amp;lt;math&amp;gt;u(\mathbf{x})&amp;lt;/math&amp;gt; es la única solución en &amp;lt;math&amp;gt;\mathbb{R}^2&amp;lt;/math&amp;gt; de:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \begin{cases}&lt;br /&gt;
     \Delta u = -f \\&lt;br /&gt;
   u(x)=-\frac{M}{2\pi} log |x| + O\left(\frac{1}{|x|} \right)  &amp;amp; \text{si } |x| \rightarrow \infty&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M= \int _{\mathbb{R}^2} f(\mathbf y) d\mathbf y&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
A continuación, veremos un ejemplo de lo explicado anteriormente para una correcta comprensión de ello. De esta manera, mediante el potencial logarítmico se aproximará la ecuación de Poisson cuando f sea la función característica de la bola de radio 1 y se estudiará su comportamiento en el infinito.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Para resolver este ejemplo se ha realizado un código en Matlab. La integral se ha simplificado de la siguiente manera:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; -\frac{1}{2\pi}\int_{\partial B_1 0} log|\mathbf{x} - \mathbf{y}| d\mathbf{y} = -\frac{\pi}{4}\frac{1}{2\pi}\int_{-1} ^1 \int_{-1} ^1 log|\mathbf{x} - \mathbf{y}| dx dy &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%aSe divide el dominio de cada variable en 200 puntos. Para y1 e y2 se coge&lt;br /&gt;
%el intervalo [-1,1] pues cuando este fuera de este intervalo la función vale 0 y por tanto la integral se anulará y para x1 y x2 se coge un intervalo muy grande pues la función tiene dominio todo R2.&lt;br /&gt;
i1 = linspace(-1,1,200);&lt;br /&gt;
i2 = linspace(-1,1,200);&lt;br /&gt;
i3 = linspace(-10^4,10^4,200);&lt;br /&gt;
i4 = linspace(-10^4,10^4,200);&lt;br /&gt;
&lt;br /&gt;
% Se define la función f anteriormente obtenida&lt;br /&gt;
f = @(y1, y2, x1, x2) -(pi/4)*(1/(2*pi))*log(sqrt((y1-x1).^2 + (y2-x2).^2));&lt;br /&gt;
&lt;br /&gt;
% Generamos una malla de puntos&lt;br /&gt;
[A, B] = meshgrid(i1, i2);&lt;br /&gt;
[C, D] = meshgrid(i3,i4);&lt;br /&gt;
&lt;br /&gt;
%Creamos una matriz cero donde se irán metiendo los valores que&lt;br /&gt;
%próximamente evaluaremos&lt;br /&gt;
values = zeros(size(A)); &lt;br /&gt;
&lt;br /&gt;
% Se crea el siguiente bucle para obtener los valores que necesitamos para&lt;br /&gt;
% la representación gráfica&lt;br /&gt;
for i = 1:length(i1)&lt;br /&gt;
    for j = 1:length(i2)&lt;br /&gt;
        fnum = @(x, y) f(x, y, i3(i), i4(j)); % Se crea este bucle para ir evaluando f en los distintos puntos (x1,x2)&lt;br /&gt;
        values(i, j) = trapz(i2, trapz(i1, fnum(A, B), 2)); % Evaluar fnum en la malla (A, B) y calcular la integral por el método del trapecio&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Se dibujan todos los puntos obtenidos&lt;br /&gt;
surf(C,D,values)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La representación obtenida es la siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Unoaitana.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación se va a comprobar si la solución se comporta de la manera esperada en el infinito. Tal y como se ha especificado anteriormente el comportamiento asintótico sigue la siguiente función:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x)=-\frac{M}{2\pi} log |x| + O(\frac{1}{|x|})&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
siendo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M= \int _{\mathbb{R}^2} f(\mathbf y) d\mathbf y&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación, se compara esta función con la solución obtenida anteriormente con el fin de observar si se comporta adecuadamente. Se ha creado el siguiente código:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
graf=zeros(length(i1));&lt;br /&gt;
xgraf=zeros(length(i1));&lt;br /&gt;
for i = 1:length(i1)&lt;br /&gt;
        fnum = @(x, y) f(x, y, i3(i), i4(i));&lt;br /&gt;
        &lt;br /&gt;
        graf(i) = trapz(i2, trapz(i1, fnum(A,B), 2));&lt;br /&gt;
        xgraf(i)=sqrt(2*(i3(i)^2));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
hold on&lt;br /&gt;
hol= @(x) -1/2*log(x);&lt;br /&gt;
valy = hol(xgraf);&lt;br /&gt;
% Crear el gráfico de las líneas y los puntos&lt;br /&gt;
hold on&lt;br /&gt;
plot(xgraf, valy, '-','DisplayName','Función asintótica'); &lt;br /&gt;
plot(xgraf, graf, '*','DisplayName','Función obtenida');&lt;br /&gt;
xlabel('Eje x')&lt;br /&gt;
ylabel('Eje y')&lt;br /&gt;
title('Gráfico función asintótica y función obtenida')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Se ha obtenido la siguiente gráfica, siendo la verde la función obtenida y la azul la función asintótica:&lt;br /&gt;
[[Archivo: Dosaitana.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
Tal y como se ve, se observa que el comportamiento es el esperado.&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaciones_de_Laplace_y_de_Poisson&amp;diff=71658</id>
		<title>Ecuaciones de Laplace y de Poisson</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaciones_de_Laplace_y_de_Poisson&amp;diff=71658"/>
				<updated>2024-04-19T18:45:03Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: /* Comportamiento de la solución */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introducción ==&lt;br /&gt;
En este documento, nos centraremos en dos ecuaciones que tienen un amplio uso en diversos ámbitos como electrostática, mecánica de fluidos, física teórica y magnetostática: la ecuación de Laplace y la ecuación de Poisson. &lt;br /&gt;
Ambas ecuaciones las estudiaremos en el plano y las veremos aplicadas en problemas concretos. Veremos las limitaciones que presenta la fórumla de Poisson así como diferentes métodos analíticos para aproximar soluciones, y raíz de esto, analizaremos errores de aproximación. Por último, estudiaremos el comportamiento de soluciones tanto en un dominio dado, utilizando la desigualdad de Harnack, como asintóticamente en infinito.&lt;br /&gt;
 &lt;br /&gt;
 CREO QUE AQUÍ ME FALTAN PUNTOS Y COMAS&lt;br /&gt;
&lt;br /&gt;
== Ecuación de Laplace ==&lt;br /&gt;
La ecuación de Laplace, cuyo nombre nombre honra al distinguido físico-matemático Pierre-Simon Laplace, es una ecuación en derivadas parciales de tipo elíptico. REFERENCIA?&lt;br /&gt;
Construyamos un problema de derivadas parciales a partir de la ecuación de Laplace. La ecuación es,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \Delta u = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
con &amp;lt;math&amp;gt;u:\mathbb{R}^3 \rightarrow \mathbb{R}&amp;lt;/math&amp;gt; como incógnita. Esta ecuación se define en un dominio &amp;lt;math&amp;gt; \Omega &amp;lt;/math&amp;gt;, y en su frontera &amp;lt;math&amp;gt; \partial \Omega &amp;lt;/math&amp;gt; se pueden añadir condiciones de contorno Dirichlet, Neuman o mixtas. En este trabajo nos centraremos en las condiciones de contorno de tipo Dirichlet, las cuales igualan &amp;lt;math&amp;gt; u &amp;lt;/math&amp;gt; a una función específica &amp;lt;math&amp;gt; g &amp;lt;/math&amp;gt;. Con todo esto, llegamos al siguiente problema de derivadas parciales.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  \Omega \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial \Omega &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A fin de comprender mejor este problema, podemos examinar el siguiente ejemplo en concreto. &lt;br /&gt;
&lt;br /&gt;
===== Ejemplo bola unidad =====&lt;br /&gt;
Sea &amp;lt;math&amp;gt; B_1 ⊂ R^2 &amp;lt;/math&amp;gt; la bola unidad centrada en el origen. Planteamos el problema, &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_1 \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
A lo largo de este documento, en lo que tiene que ver con la ecuación de Laplace, visitaremos este ejemplo varias veces.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dentro de la resolución del problema planteado existen varios métodos por los que proceder. En este trabajo estudiaremos dos: la fórmula de Poisson y la serie de Fourier.&lt;br /&gt;
=== Solución por la fórmula de Poisson ===&lt;br /&gt;
Encontrar la solución del problema mediante la fórmula de Poisson viene determinado por el siguiente teorema.&lt;br /&gt;
&lt;br /&gt;
===== Teorema =====&lt;br /&gt;
La solución &amp;lt;math&amp;gt; u \in C^2(B_R \cup C(\overline{B_R}) &amp;lt;/math&amp;gt;del problema &amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_R \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial B_R &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt; donde &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; es una función continua viene dado por la fórmula de Poisson &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\vec{x})=\frac{R^2-|\vec{x}|^2}{w_n R}\int_{\partial B_R}\frac{g(\sigma)}{|\vec{x}-\sigma|^2} d\sigma. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es importante destacar que el denominador &amp;lt;math&amp;gt;|\vec{x}-\sigma|^2 &amp;lt;/math&amp;gt; se anula en la frontera de la bola llevándonos a una indeterminación y haciendo que la integral diverja. Esto también pasa si expresamos la fórmula en coordenadas polares &amp;lt;math&amp;gt;(r, \theta)&amp;lt;/math&amp;gt;. Tomando, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\vec{x} = (x_1, x_2) = (rcos(\theta), rsen(\theta)) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; g(rcos(\theta), rsen(\theta)) = G(\theta)&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
llegamos a la fórmula de Poisson, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; U(r,\theta)=\frac{R^2-r^2}{2\pi R}\int_{0}^{2\pi}\frac{g(s)}{R^2+r^2-2Rrcos(\theta-s)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso, el denominador de la integral también se anula para puntos cercanos a la frontera, concretamente cuando el coseno se hace 1. &lt;br /&gt;
&lt;br /&gt;
Veamos todo esto aplicado a la bola unidad pasado a coordenadas polares,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    U_{rr} + \frac{1}{r} U_r + \frac{1}{r^2} U_{\theta\theta} = 0, &amp;amp; (r, \theta) \in  B_1 \\&lt;br /&gt;
    U(1, \theta) = G(\theta), &amp;amp;   (r, \theta) \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la resolución de este problema vamos a tomar &amp;lt;math&amp;gt;G(\theta) = máx\{0, 1-\frac{2}{\pi} |\theta - \pi|\}&amp;lt;/math&amp;gt; y utilizaremos la fórmula de Poisson en polares tomando &amp;lt;math&amp;gt;R = 1&amp;lt;/math&amp;gt; y calculando la integral de manera aproximada con la fórmula del trapecio. Como hemos visto antes, la fórmula da problemas para puntos cercanos al borde. Esto lleva a una representación irregular de la frontera si dibujamos la solución sin tener en cuenta este problema.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: sol_sin_frontera_ejercicio1.png|400px|miniaturadeimagen|center|Solución del problema de Poisson sin aplicar la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
Es por esto por lo que la condición frontera no es prescindible en el problema. Para estimar &amp;lt;math&amp;gt; U(r,\theta)&amp;lt;/math&amp;gt;, utilizaremos la fórmula de Poisson para puntos ligeramente alejados del borde, y en el propio borde utilizaremos la condición frontera &amp;lt;math&amp;gt;U(R, \theta) = G(\theta)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: sol_ejercicio1.png|400px|miniaturadeimagen|center|Solución del problema de Poisson aplicando la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
En esta nueva gráfica podemos apreciar como la frontera no presenta las irregularidades anteriores. &lt;br /&gt;
Para conseguir estas gráficas hemos implementado el siguiente código en MatLab.&lt;br /&gt;
&lt;br /&gt;
====== Códigos ======&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Este código resuelve el problema planteado con la fórmula de Poisson sin aplicar condición frontera:&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g:&lt;br /&gt;
g=@(theta)max(0, 1-2/pi*abs(theta-pi));&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos r y theta sobre los que vamos a trabajar:&lt;br /&gt;
N=200; % Número de divisiones del intervalo&lt;br /&gt;
r=linspace(0,R,N); % No podemos llegar hasta la frontera&lt;br /&gt;
theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución de u con la fórmula de Poisson:&lt;br /&gt;
NN=100; % División del intervalo de integración.&lt;br /&gt;
s=linspace(0,2*pi,NN); % Intervalo de integración, para el método del trapecio.&lt;br /&gt;
u=zeros(N,N); % Inicializamos la matriz que almacena los valores de la solución.&lt;br /&gt;
for i=1:length(theta)&lt;br /&gt;
    for j=1:length(r) % Calculamos solución a través de la fórmula del trapecio:&lt;br /&gt;
        u(i,j)=1/(2*pi).*trapz(s,g(s).*(R^2-r(j).^2)./(R^2+r(j).^2-2.*r(j).*cos(s-theta(i))));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
% Creamos la malla:&lt;br /&gt;
[RR,THETA]=meshgrid(r,theta);&lt;br /&gt;
figure&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u,'EdgeColor','flat') % Representación gráfica&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('y')&lt;br /&gt;
zlabel('u(x,y)')&lt;br /&gt;
title('Solución de la ecuación de Laplace')&lt;br /&gt;
}}&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Este código resuelve el problema planteado con la fórmula de Poisson aplicando la condición frontera:&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g:&lt;br /&gt;
g=@(theta)max(0, 1-2/pi*abs(theta-pi));&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos r y theta sobre los que vamos a trabajar:&lt;br /&gt;
N=200; % Número de divisiones del intervalo&lt;br /&gt;
r=linspace(0,R-N^(-1),N-1); % No podemos llegar hasta la frontera&lt;br /&gt;
theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución de u con la fórmula de Poisson:&lt;br /&gt;
NN=1000; % División del intervalo de integración.&lt;br /&gt;
s=linspace(0,2*pi,NN); % Intervalo de integración, para el método del trapecio.&lt;br /&gt;
u=zeros(N,N); % Inicializamos la matriz que almacena los valores de la solución.&lt;br /&gt;
for i=1:length(theta)&lt;br /&gt;
    for j=1:length(r) % Calculamos solución a través de la fórmula del trapecio:&lt;br /&gt;
        u(i,j)=1/(2*pi).*trapz(s,g(s).*(R^2-r(j).^2)./(R^2+r(j).^2-2.*r(j).*cos(s-theta(i))));&lt;br /&gt;
    end&lt;br /&gt;
    % Establecemos condiciones frontera (por presentar problemas en esta):&lt;br /&gt;
    u(i,N)=g(theta(i));&lt;br /&gt;
end&lt;br /&gt;
r(N)=1;&lt;br /&gt;
% Creamos la malla:&lt;br /&gt;
[RR,THETA]=meshgrid(r,theta);&lt;br /&gt;
figure&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u,'EdgeColor','flat') % Representación gráfica&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('y')&lt;br /&gt;
zlabel('u(x,y)')&lt;br /&gt;
title('Solución de la ecuación de Laplace')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== Errores de la fórmula de Poisson =====&lt;br /&gt;
Como hemos observado anteriormente, la fórmula de Poisson presenta ciertas dificultades a la hora de aproximar la solución en la frontera, debido a la singularidad inherente de la integral. En este apartado examinaremos estas irregularidades calculando el error de la aproximación frente a la solución exacta.&lt;br /&gt;
&lt;br /&gt;
Volviendo al ejemplo de la bola unidad, esta vez vamos a suponer el problema,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_1 \\&lt;br /&gt;
    u = g(x,y) = xy, &amp;amp;   \text{x} \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que tiene como solución exacta la función armónica &amp;lt;math&amp;gt;u(x,y) = xy&amp;lt;/math&amp;gt;. Tal y como hemos hecho en el apartado anterior, calculamos la solución aproximada utilizando la fórmula de Poisson, la fórmula del trapecio y pasando a coordenadas polares.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    U_{rr} + \frac{1}{r} U_r + \frac{1}{r^2} U_{\theta\theta} = 0, &amp;amp; (r, \theta) \in  B_1 \\&lt;br /&gt;
    U(1,\theta)=G(\theta)=\cos(\theta)\sin(\theta), &amp;amp;   (r, \theta) \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vamos a distinguir entre dos tipos de puntos, aquellos que estén &amp;quot;alejados&amp;quot; de la frontera y aquellos sean inmediatos a esta. &lt;br /&gt;
Primero estudiaremos el error en puntos &amp;quot;alejados&amp;quot; de la frontera. Esto lo hacemos empleando distintas discretizaciones con &amp;lt;math&amp;gt; 10^n &amp;lt;/math&amp;gt; puntos en la fórmula del trapecio. Después, calculamos el error para cada discretización en un punto alejado, en este caso lo hacemos evaluando en &amp;lt;math&amp;gt;x = (r,\theta)=(0.9,\pi/4)&amp;lt;/math&amp;gt;. Posteriormente graficamos el error aplicando la fórmula,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;f(n):=\log_{10}(Error(10^n)), &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Obteniendo así la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: error_puntoalejado_ejercicio2.png|400px|miniaturadeimagen|center|Error de un punto alejado a la frontera]]&lt;br /&gt;
&lt;br /&gt;
Los resultados de esta gráfica cuadran con nuestra intuición, a mayor número de puntos menor es el error que se comete. Además podemos apreciar que el error se acaba estabilizando al rededor de &amp;lt;math&amp;gt;10^{-15}&amp;lt;/math&amp;gt;. Luego podemos concluir que la fórmula de Poisson proporciona una buena aproximación para puntos relativamente alejados de la frontera. &lt;br /&gt;
&lt;br /&gt;
A continuación, atendiendo a la fórmula del error &amp;quot;teórica&amp;quot; dada por el método del trapecio, la cual sigue la siguiente expresión:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;Error:=\left|-\cfrac{f''(\xi)(b-a)^3}{12n^2}\right|, &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
siendo &amp;lt;math&amp;gt;\xi&amp;lt;/math&amp;gt; un valor dentro del intervalo &amp;lt;math&amp;gt;[a,b]&amp;lt;/math&amp;gt;, y n el valor que genera la discretización para la aplicación del método del trapecio. En nuestro caso, &amp;lt;math&amp;gt;[a,b]=[0,2\pi]&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; la función a integrar en la fórmula de Poisson.&lt;br /&gt;
Ahora bien, el código de MatLab presentado al final de la sección implementa un cálculo del error máximo, tomando para cada n el error máximo en la discretización y acumulándolo en la lista &amp;lt;math&amp;gt;error\_max&amp;lt;/math&amp;gt; de tal forma que en la gráfica se presenta una representación del error máximo teórico de la fórmula del trapecio.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: comparacion_errores_ejercicio2.png|400px|miniaturadeimagen|center|Comparación errores con su máximo]]&lt;br /&gt;
&lt;br /&gt;
Como se puede apreciar de manera bastante clara en la gráfica, a medida que aumentan los puntos de la discretización, la cota va disminuyendo. Aún así, se puede apreciar que el error calculado para un punto alejado de la frontera se sigue manteniendo por debajo de dicha cota.&lt;br /&gt;
&lt;br /&gt;
Estudiemos ahora el error cometido en puntos &amp;quot;cercanos&amp;quot; a la frontera. En este caso vamos utilizar una única discretización de 100 puntos de la fórmula del trapecio y puntos que cada vez se acercan más a la frontera. Partiendo del punto &amp;lt;math&amp;gt;x = (r,\theta)=(0.9,\pi/4)&amp;lt;/math&amp;gt; vamos a ir avanzando hacia la frontera con puntos de la forma &amp;lt;math&amp;gt;(r,\theta)=(1-10^{-n}, \pi/4)&amp;lt;/math&amp;gt;. La gráfica entonces resulta ser:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: error_puntoscercanosfrontera_ejercicio2.png|400px|miniaturadeimagen|center|Error de puntos cercanos a la frontera]]&lt;br /&gt;
&lt;br /&gt;
En este caso el error incrementa según los puntos se acercan a la frontera y se acaba estabilizando en &amp;lt;math&amp;gt;-0,3&amp;lt;/math&amp;gt;.&lt;br /&gt;
El código utilizado para dibujar estas gráficas es el siguiente.&lt;br /&gt;
&lt;br /&gt;
{{matlab||codigo=&lt;br /&gt;
% El siguiente código ejecuta todas las gráficas planteadas a lo largo de esta sección&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Definimos el radio de la bola;&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos la función g:&lt;br /&gt;
g =@(theta) (R.^2.*cos(theta).*sin(theta));&lt;br /&gt;
&lt;br /&gt;
% Definimos la solución exacta:&lt;br /&gt;
u_exacta =@(r,theta) (r.^2.*cos(theta).*sin(theta));&lt;br /&gt;
&lt;br /&gt;
% Tomamos el punto r=0.9 y theta=pi/4:&lt;br /&gt;
r_valor=0.9;&lt;br /&gt;
theta_valor=pi/4;&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución u en el punto anterior:&lt;br /&gt;
n=1:1:8;&lt;br /&gt;
error=zeros(1,length(n)); % Inicializamos la matriz que almacena el error&lt;br /&gt;
error_log=zeros(1,length(n)); % Inicializamos la matriz que almacena el error logarítmico&lt;br /&gt;
u_valor=zeros(1,length(n)); % Inicializamos la matriz que almacena la solución de u para distintas discretizaciones del método del trapecio&lt;br /&gt;
for i=1:length(n)&lt;br /&gt;
    s=linspace(0,2*pi,10^(n(i))); % Intervalo de integración&lt;br /&gt;
    u_valor(i)=1/(2*pi).*trapz(s,g(s).*(R^2-r_valor.^2)./(R^2+r_valor.^2-2.*r_valor.*cos(s-theta_valor))); % Solución a través de la fórmula de Poisson&lt;br /&gt;
    &lt;br /&gt;
    % Calculamos el error:&lt;br /&gt;
    error(i)=abs(u_exacta(r_valor,theta_valor)-u_valor(i));&lt;br /&gt;
    % Calculamos el error logarítmico:&lt;br /&gt;
    error_log(i)=log10(error(i));&lt;br /&gt;
end&lt;br /&gt;
% Representamos gráficamente el error logarítmico para el punto r=0.9 y theta=pi/4:&lt;br /&gt;
plot(n,error_log,'o-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(10^n))')&lt;br /&gt;
grid on &lt;br /&gt;
grid minor&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Gráfica del error logarítmico')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Observamos la existencia de un error máximo que nos permita confirmar&lt;br /&gt;
% que los errores calculados anteriormente se encuentran por debajo siempre:&lt;br /&gt;
&lt;br /&gt;
% Calculamos la segunda derivada (requerida por la fórmula):&lt;br /&gt;
syms rr ss thetatheta&lt;br /&gt;
% Definimos de forma simbólica la función a derivar:&lt;br /&gt;
f=rr^2*cos(ss)*sin(ss)/(1+rr^2-2*rr*cos(thetatheta-ss));&lt;br /&gt;
derivada1=diff(f,ss); % Derivamos la función f en función de la variable s&lt;br /&gt;
derivada2=diff(derivada1,ss); % Derivamos la primera derivada en función de la variable s&lt;br /&gt;
% Calculamos el error máximo del método del trapecio:&lt;br /&gt;
nn=1:1:3; % Conforme el número sea más elevado aquí más aumentará el tiempo de compilación del programa.&lt;br /&gt;
error_max=zeros(length(nn),1); % Inicializamos a ceros el vector que almacenará los datos del error máximo del trapecio&lt;br /&gt;
for i=1:length(nn)&lt;br /&gt;
    N=10^i;&lt;br /&gt;
    s=linspace(0,2*pi,N);&lt;br /&gt;
    error_trapz=zeros(N,1); % Inicializamos a ceros el vector que almacenará los datos del error del trapecio para cada n&lt;br /&gt;
    for j=1:N&lt;br /&gt;
        s_valor=s(j);&lt;br /&gt;
        error_trapz(j)=log10(abs(-(2*pi).^3.*subs(derivada2, [rr,ss,thetatheta] ,[r_valor,s_valor,theta_valor])./(12.*(N.^2))));&lt;br /&gt;
    end&lt;br /&gt;
    error_max(i)=max(error_trapz);&lt;br /&gt;
end&lt;br /&gt;
% Representamos gráficamente el error máximo junto con el error calculado&lt;br /&gt;
% anteriormente:&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
plot(nn,error_log(1:length(nn)),'Color','blue')&lt;br /&gt;
plot(nn,error_max,'Color','red')&lt;br /&gt;
hold off&lt;br /&gt;
legend('Error','Error máximo')&lt;br /&gt;
title('Comparación de errores')&lt;br /&gt;
grid on&lt;br /&gt;
grid minor&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('Error')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Fijamos ahora para N=100 (puntos en la fórmula del trapecio).&lt;br /&gt;
% Vamos a calcular el error en los puntos de la forma r=1-10^(-n) y theta=pi/4 y veremos qué ocurre:&lt;br /&gt;
N=100;&lt;br /&gt;
r_valores=zeros(1,N); % Inicializamos vector que almacena los valores de r.&lt;br /&gt;
u_valores_r=zeros(1,N); % Inicializamos el vector que almacena los valores de la solución u para distintos valores de r.&lt;br /&gt;
u_exacta_r=zeros(1,N); % Inicializamos el vector que almacena los valores de la solución u exacta para distintos valores de r.&lt;br /&gt;
error_r=zeros(1,N); % Inicializamos el vector que almacena los errores.&lt;br /&gt;
error_log_r=zeros(1,N); % Inicializamos el vector que almacena los errores logarítmicos.&lt;br /&gt;
% theta_valor=pi/4 es el mismo que hemos usado antes, por lo que no lo volvemos a inicializar.&lt;br /&gt;
% Definimos el vector de integración de la fórmula del trapecio:&lt;br /&gt;
s=linspace(0,2*pi,N);&lt;br /&gt;
for j=1:N&lt;br /&gt;
    r_valores(j)=1-10^(-j);&lt;br /&gt;
    u_valores_r(j)=1/(2*pi).*trapz(s,g(s).*(R^2-r_valores(j).^2)./(R^2+r_valores(j).^2-2.*r_valores(j).*cos(s-theta_valor)));&lt;br /&gt;
    u_exacta_r(j)=u_exacta(r_valores(j),theta_valor);&lt;br /&gt;
    error_r(j)=abs(u_exacta_r(j)-u_valores_r(j));&lt;br /&gt;
    error_log_r(j)=log10(error_r(j));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
plot(1:1:N,error_log_r,'.-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(100))')&lt;br /&gt;
grid on &lt;br /&gt;
grid minor&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Errores en los puntos cercanos a la frontera')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Solución por la serie de Fourier ===&lt;br /&gt;
Una vez estudiada la solución por la fórmula de Poisson, en este apartado calcularemos la solución por serie de Fourier. La obtención de esta solución se basa en una cambio de variable a polares del problema, como el visto previamente, y resolución por separación de variables.  Hacemos esto aplicado al problema anterior en una bola de radio &amp;lt;math&amp;gt; R &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta U=U_{rr}+\frac{1}{r}U_r+\frac{1}{r^2}U_{\theta\theta}=0, r\in(0,R),\theta\in(0,2\pi)\\&lt;br /&gt;
U(R,\theta)=G(\theta)=R^2 sin(\theta)cos(\theta), \theta\in[0,2\pi).&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo cual nos conduce a, &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
U(r, \theta) = \frac{\alpha_{0}}{2}  +   \sum_{k=1}^{n} \left( \alpha_{k} \left(\frac{r}{R} \right)^k cos(k\theta) + \beta_{k} \left(\frac{r}{R} \right)^k sin(k\theta)\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que tiene coeficientes,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\alpha_{0} =\frac{1}{\pi}\int_{-\pi}^{\pi} \cos\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\alpha_{k} =\frac{1}{\pi}\int_{-\pi}^{\pi} cos(\theta) \sin(\theta) \cos\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\beta_{k} =\frac{1}{\pi}\int_{-\pi}^{\pi} cos(\theta) \sin(\theta) \sin\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Sin embargo, todos los coeficientes de Fourier son nulos, salvo por &amp;lt;math&amp;gt; \beta_2=\frac{R^2}{2}&amp;lt;/math&amp;gt;, luego la solución por series de Fourier final es, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}\sin(2\theta)=r^2\cos(\theta)\sin(\theta), r\in [0,R], \theta\in[0,2\pi)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Veamos ahora la gráfica que dibuja esta solución tomando &amp;lt;math&amp;gt; R = 1 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Tresaitana1.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Ecuación de Laplace&lt;br /&gt;
%% Apartado 3&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Definimos el radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% k términos de la serie:&lt;br /&gt;
K=[5 10 100];&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g y la función u exacta:&lt;br /&gt;
g=@(theta) R.^2.*cos(theta).*sin(theta);&lt;br /&gt;
u_exacta=@(r,theta) r.^2.*cos(theta).*sin(theta);&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos de theta y r:&lt;br /&gt;
N=300; % Número de divisiones de los intervalos theta y r.&lt;br /&gt;
Theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
r=linspace(0,R,N); % Intervalo r.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Calculamos los coeficientes de Fourier para distintos k-términos:&lt;br /&gt;
for i=1:length(K)&lt;br /&gt;
    k=K(i); % k-términos de la serie.&lt;br /&gt;
    int=linspace(-pi,pi,k); % Intervalo de integración para los coef de Fourier.&lt;br /&gt;
    a0=1/pi.*integral(g,-pi,pi); % Coeficiente de Fourier a_0 (asociado a 1/2).&lt;br /&gt;
    a=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al coseno.&lt;br /&gt;
    b=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al seno.&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        f_cos=@(theta) g(theta).*cos(j.*theta); % Definimos la función a integrar asociada al coseno.&lt;br /&gt;
        f_sin=@(theta) g(theta).*sin(j.*theta); % Definimos la función a integrar asociada al seno.&lt;br /&gt;
        a(j)=1/pi.*integral(f_cos,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fourier del coseno.&lt;br /&gt;
        b(j)=1/pi.*integral(f_sin,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fouries del seno.&lt;br /&gt;
    end&lt;br /&gt;
    % Calculamos la solución u_k asociada al número de términos de la serie:&lt;br /&gt;
    suma=@(r,theta)0;&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        suma=@(r,theta) suma(r,theta) + a(j).*(r/R).^j.*cos(j.*theta)+b(j).*(r/R).^j.*sin(j.*theta);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['u_' num2str(k) '=@(r,theta) 1/2*a0 + suma(r,theta);']);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
[RR,THETA]=meshgrid(r,Theta);&lt;br /&gt;
figure&lt;br /&gt;
for i=1:length(K)&lt;br /&gt;
    k=K(i);&lt;br /&gt;
    subplot(2,2,i)&lt;br /&gt;
    eval(['surf(RR.*cos(THETA),RR.*sin(THETA),u_' num2str(k) '(RR,THETA),&amp;quot;EdgeColor&amp;quot;,&amp;quot;flat&amp;quot;)'])&lt;br /&gt;
    title(&amp;quot;Solución de u para k=&amp;quot;, num2str(k))&lt;br /&gt;
end&lt;br /&gt;
subplot(2,2,4)&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u_exacta(RR,THETA),&amp;quot;EdgeColor&amp;quot;,&amp;quot;flat&amp;quot;)&lt;br /&gt;
title('Solución exacta')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Errores de la solución por serie de Fourier ====&lt;br /&gt;
Al igual que con la solución dada por la fórmula de Poisson, vamos a comparar la solución calculada con la solución exacta &amp;lt;math&amp;gt;u(x,y)=xy&amp;lt;/math&amp;gt; en la bola de radio 1. Vamos a contrastar las soluciones con 5, 10 y 100 términos con la exacta. Calcularemos el error resultante al aproximar la serie de Fourier y lo representamos gráficamente, mostrando el máximo error en función del número de términos utilizados en una escala logarítmica, es decir, pintaremos la función, &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \log_{10}(error(n)) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; error(n) &amp;lt;/math&amp;gt; es ahora el supremo del error con &amp;lt;math&amp;gt;n &amp;lt;/math&amp;gt;términos. Obetenemos así la siguente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Tresaitana2.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
Podemos apreciar en esta gráfica errores de orden muy pequeño, por lo general, los podemos considerar pequeño. Luego, nos damos cuenta de que, a diferencia de solución por la fórmula de Poisson, esta no nos da problemas en la frontera. Veamos el código utilizado para hacer la gráfica.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% A continuación se calcularán los errores de la aproximación de Fourier en función de los términos:&lt;br /&gt;
KK=0:1:100;&lt;br /&gt;
error_log=zeros(length(KK),1); % Inicializamos el vector donde se almacenarán los errores logarítmicos.&lt;br /&gt;
for i=1:length(KK)&lt;br /&gt;
    k=KK(i);&lt;br /&gt;
    int=linspace(-pi,pi,k); % Intervalo de integración para los coef de Fourier.&lt;br /&gt;
    a0=1/pi.*integral(g,-pi,pi); % Coeficiente de Fourier a_0 (asociado a 1/2).&lt;br /&gt;
    a=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al coseno.&lt;br /&gt;
    b=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al seno.&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        f_cos=@(theta) g(theta).*cos(j.*theta); % Definimos la función a integrar asociada al coseno.&lt;br /&gt;
        f_sin=@(theta) g(theta).*sin(j.*theta); % Definimos la función a integrar asociada al seno.&lt;br /&gt;
        a(j)=1/pi.*integral(f_cos,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fourier del coseno.&lt;br /&gt;
        b(j)=1/pi.*integral(f_sin,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fouries del seno.&lt;br /&gt;
    end&lt;br /&gt;
    % Calculamos la solución u_k asociada al número de términos de la serie:&lt;br /&gt;
    suma=@(r,theta)0;&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        suma=@(r,theta) suma(r,theta) + a(j).*(r/R).^j.*cos(j.*theta)+b(j).*(r/R).^j.*sin(j.*theta);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['u_' num2str(i) '=@(r,theta) 1/2*a0 + suma(r,theta);']);&lt;br /&gt;
    eval(['u=@(r,theta)u_' num2str(i) '(r,theta) ;']);&lt;br /&gt;
    U_exacta=u_exacta(RR,THETA);&lt;br /&gt;
    U_fourier=u(RR,THETA);&lt;br /&gt;
    valores_max=max(U_exacta-U_fourier);&lt;br /&gt;
    sup=max(valores_max,[],'all');&lt;br /&gt;
    error_log(i)=log10(sup);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
plot(KK,error_log)&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Errores supremos frente al número de términos')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(10^n))')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Comportamiento de la solución ===&lt;br /&gt;
En esta sección, y atendiendo al comportamiento de la solución estudiaremos en qué región se han de encontrar las soluciones armónicas dentro  de la bola &amp;lt;math&amp;gt;B_R&amp;lt;/math&amp;gt;, siendo &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; el radio de la bola, que tengan el mismo valor que nuestra solución en el (0,0).&lt;br /&gt;
&lt;br /&gt;
La '''desigualdad de Harnack''' establece: Sea &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; armónica y &amp;lt;math&amp;gt;0\leq u&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;\Omega \in \mathbb{R}^n&amp;lt;/math&amp;gt;. Supongamos &amp;lt;math&amp;gt;\overline{B_{R}(z)}\subset \Omega&amp;lt;/math&amp;gt;. Entonces:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{R^{n-2} (R-r)}{(R+r)^{n-1}} u(z)\leq u(x) \leq \frac{R^{n-2}  (R+r)}{(R-r)^{n-1}}u(z), \forall x \in B_{R}(z), r=||z-x||.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para proceder al estudio planteado, comenzamos calculando el mínimo de la función &amp;lt;math&amp;gt;g(x,y)=xy&amp;lt;/math&amp;gt; en la frontera de la bola &amp;lt;math&amp;gt;B_R&amp;lt;/math&amp;gt; al que llamaremos &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;. Para facilitar los cálculos de aquí en adelante trabajaremos en coordenadas polares, por lo que nuestra función &amp;lt;math&amp;gt;g(x,y)=xy&amp;lt;/math&amp;gt; pasa a ser &amp;lt;math&amp;gt;g(\theta)=R^2cos(\theta)sin(\theta)&amp;lt;/math&amp;gt;, siendo &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; el radio de la bola. Para el cálculo del mínimo se ha empleado un código de Matlab presentado al final de esta sección.&lt;br /&gt;
&lt;br /&gt;
A continuación, definimos la función &amp;lt;math&amp;gt;v:=u-M &amp;lt;/math&amp;gt; , siendo u nuestra solución del problema. Esta función &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; es positiva y armónica, por lo que podemos aplicar la desigualdad de Harnack para &amp;lt;math&amp;gt;\mathbb{R}&amp;lt;/math&amp;gt;, es decir, &amp;lt;math&amp;gt;n=2&amp;lt;/math&amp;gt;. Obteniendo lo siguiente:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{(R-r)}{(R+r)} v(0,0) \leq v(x,y) \leq \frac{(R+r)}{(R-r)}v(0,0), \forall (x,y) \in B_{R}, &amp;lt;/math&amp;gt;.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ecuación de Poisson ==&lt;br /&gt;
&lt;br /&gt;
En esta parte del documento se va a proceder a resolver la ecuación de Poisson mediante un nuevo método. En primer lugar, esta ecuación viene dada por  &amp;lt;math&amp;gt; \Delta u = f &amp;lt;/math&amp;gt; siendo &amp;lt;math&amp;gt;u:\mathbb{R}^n \rightarrow \mathbb{R}&amp;lt;/math&amp;gt;y &amp;lt;math&amp;gt; f \in C^2(\mathbb{R})&amp;lt;/math&amp;gt;. Para este estudio se particularizará para n=2 y n=3.&lt;br /&gt;
&lt;br /&gt;
Se comenzará definiendo la solución fundamental de esta ecuación, pues se utilizará posteriormente para calcular el potencial newtoniano o logarítimico. Esta viene dada por &amp;lt;math&amp;gt;  \phi(x) = -\frac{1}{2\pi} log(|x|) &amp;lt;/math&amp;gt; si n=2 y &amp;lt;math&amp;gt;  \phi(x) = \frac{1}{4\pi |x| } &amp;lt;/math&amp;gt; si n=3.&lt;br /&gt;
=== Potencial newtoniano para &amp;lt;math&amp;gt; \mathbb{R}^3&amp;lt;/math&amp;gt; ===&lt;br /&gt;
Supongamos que &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
representa la densidad de una carga contenida en un conjunto compacto dentro del espacio tridimensional &amp;lt;math&amp;gt; \mathbb{R}^3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Entonces, la expresión &amp;lt;math&amp;gt; \phi(x-y)f(y)dy&amp;lt;/math&amp;gt; denota el potencial en el punto x. De esta manera el potencial total viene dado por la siguiente expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\mathbf{x}) = \int_{\mathbb{R}^n} f(\mathbf{y}) \phi(\mathbf{x} - \mathbf{y}) d\mathbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta fórmula se conoce como potencial Newtoniano de f y se aplica sobre funciones que en el infinito tienden de manera rápida a cero.&lt;br /&gt;
&lt;br /&gt;
A su vez, sea &amp;lt;math&amp;gt;f \in C^2(\mathbb{R}^3)&amp;lt;/math&amp;gt; con soporte compacto. Sea &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; el potencial newtoniano de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, definido por el potencial Newtoniano. Entonces, &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; es la única solución en &amp;lt;math&amp;gt;\mathbb{R}^3&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;\Delta u = -f&amp;lt;/math&amp;gt;  que pertenece a &amp;lt;math&amp;gt;C^2(\mathbb{R}^3)&amp;lt;/math&amp;gt; y se anula en el infinito. Es decir, dado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \begin{cases}&lt;br /&gt;
     \Delta u = -f \\&lt;br /&gt;
   u(x) \rightarrow 0  &amp;amp; \text{si } |x| \rightarrow \infty&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
su solución viene dada por el potencial newtoniano que se presenta anteriormente.&lt;br /&gt;
&lt;br /&gt;
=== Potencial logarítmico para &amp;lt;math&amp;gt; \mathbb{R}^2&amp;lt;/math&amp;gt; ===&lt;br /&gt;
Si el problema se presenta en &amp;lt;math&amp;gt; \mathbb{R}^2&amp;lt;/math&amp;gt; el potencial newtoniano se sustituye por el potencial logarítimico:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\mathbf{x}) = -\frac{1}{2\pi}\int_{\mathbb{R}^2}  log|\mathbf{x} - \mathbf{y}|f(\mathbf{y}) d\mathbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta manera, Sea &amp;lt;math&amp;gt;f \in C^2(\mathbb{R}^2)&amp;lt;/math&amp;gt; con soporte compacto, &amp;lt;math&amp;gt;u(\mathbf{x})&amp;lt;/math&amp;gt; es la única solución en &amp;lt;math&amp;gt;\mathbb{R}^2&amp;lt;/math&amp;gt; de:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \begin{cases}&lt;br /&gt;
     \Delta u = -f \\&lt;br /&gt;
   u(x)=-\frac{M}{2\pi} log |x| + O\left(\frac{1}{|x|} \right)  &amp;amp; \text{si } |x| \rightarrow \infty&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M= \int _{\mathbb{R}^2} f(\mathbf y) d\mathbf y&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
A continuación, veremos un ejemplo de lo explicado anteriormente para una correcta comprensión de ello. De esta manera, mediante el potencial logarítmico se aproximará la ecuación de Poisson cuando f sea la función característica de la bola de radio 1 y se estudiará su comportamiento en el infinito.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Para resolver este ejemplo se ha realizado un código en Matlab. La integral se ha simplificado de la siguiente manera:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; -\frac{1}{2\pi}\int_{\partial B_1 0} log|\mathbf{x} - \mathbf{y}| d\mathbf{y} = -\frac{\pi}{4}\frac{1}{2\pi}\int_{-1} ^1 \int_{-1} ^1 log|\mathbf{x} - \mathbf{y}| dx dy &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%aSe divide el dominio de cada variable en 200 puntos. Para y1 e y2 se coge&lt;br /&gt;
%el intervalo [-1,1] pues cuando este fuera de este intervalo la función vale 0 y por tanto la integral se anulará y para x1 y x2 se coge un intervalo muy grande pues la función tiene dominio todo R2.&lt;br /&gt;
i1 = linspace(-1,1,200);&lt;br /&gt;
i2 = linspace(-1,1,200);&lt;br /&gt;
i3 = linspace(-10^4,10^4,200);&lt;br /&gt;
i4 = linspace(-10^4,10^4,200);&lt;br /&gt;
&lt;br /&gt;
% Se define la función f anteriormente obtenida&lt;br /&gt;
f = @(y1, y2, x1, x2) -(pi/4)*(1/(2*pi))*log(sqrt((y1-x1).^2 + (y2-x2).^2));&lt;br /&gt;
&lt;br /&gt;
% Generamos una malla de puntos&lt;br /&gt;
[A, B] = meshgrid(i1, i2);&lt;br /&gt;
[C, D] = meshgrid(i3,i4);&lt;br /&gt;
&lt;br /&gt;
%Creamos una matriz cero donde se irán metiendo los valores que&lt;br /&gt;
%próximamente evaluaremos&lt;br /&gt;
values = zeros(size(A)); &lt;br /&gt;
&lt;br /&gt;
% Se crea el siguiente bucle para obtener los valores que necesitamos para&lt;br /&gt;
% la representación gráfica&lt;br /&gt;
for i = 1:length(i1)&lt;br /&gt;
    for j = 1:length(i2)&lt;br /&gt;
        fnum = @(x, y) f(x, y, i3(i), i4(j)); % Se crea este bucle para ir evaluando f en los distintos puntos (x1,x2)&lt;br /&gt;
        values(i, j) = trapz(i2, trapz(i1, fnum(A, B), 2)); % Evaluar fnum en la malla (A, B) y calcular la integral por el método del trapecio&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Se dibujan todos los puntos obtenidos&lt;br /&gt;
surf(C,D,values)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La representación obtenida es la siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Unoaitana.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación se va a comprobar si la solución se comporta de la manera esperada en el infinito. Tal y como se ha especificado anteriormente el comportamiento asintótico sigue la siguiente función:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x)=-\frac{M}{2\pi} log |x| + O(\frac{1}{|x|})&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
siendo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M= \int _{\mathbb{R}^2} f(\mathbf y) d\mathbf y&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación, se compara esta función con la solución obtenida anteriormente con el fin de observar si se comporta adecuadamente. Se ha creado el siguiente código:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
graf=zeros(length(i1));&lt;br /&gt;
xgraf=zeros(length(i1));&lt;br /&gt;
for i = 1:length(i1)&lt;br /&gt;
        fnum = @(x, y) f(x, y, i3(i), i4(i));&lt;br /&gt;
        &lt;br /&gt;
        graf(i) = trapz(i2, trapz(i1, fnum(A,B), 2));&lt;br /&gt;
        xgraf(i)=sqrt(2*(i3(i)^2));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
hold on&lt;br /&gt;
hol= @(x) -1/2*log(x);&lt;br /&gt;
valy = hol(xgraf);&lt;br /&gt;
% Crear el gráfico de las líneas y los puntos&lt;br /&gt;
hold on&lt;br /&gt;
plot(xgraf, valy, '-','DisplayName','Función asintótica'); &lt;br /&gt;
plot(xgraf, graf, '*','DisplayName','Función obtenida');&lt;br /&gt;
xlabel('Eje x')&lt;br /&gt;
ylabel('Eje y')&lt;br /&gt;
title('Gráfico función asintótica y función obtenida')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Se ha obtenido la siguiente gráfica, siendo la verde la función obtenida y la azul la función asintótica:&lt;br /&gt;
[[Archivo: Dosaitana.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
Tal y como se ve, se observa que el comportamiento es el esperado.&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaciones_de_Laplace_y_de_Poisson&amp;diff=71640</id>
		<title>Ecuaciones de Laplace y de Poisson</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaciones_de_Laplace_y_de_Poisson&amp;diff=71640"/>
				<updated>2024-04-19T18:30:52Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: /* Comportamiento de la solución */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introducción ==&lt;br /&gt;
En este documento, nos centraremos en dos ecuaciones que tienen un amplio uso en diversos ámbitos como electrostática, mecánica de fluidos, física teórica y magnetostática: la ecuación de Laplace y la ecuación de Poisson. &lt;br /&gt;
Ambas ecuaciones las estudiaremos en el plano y las veremos aplicadas en problemas concretos. Veremos las limitaciones que presenta la fórumla de Poisson así como diferentes métodos analíticos para aproximar soluciones, y raíz de esto, analizaremos errores de aproximación. Por último, estudiaremos el comportamiento de soluciones tanto en un dominio dado, utilizando la desigualdad de Harnack, como asintóticamente en infinito.&lt;br /&gt;
 &lt;br /&gt;
 CREO QUE AQUÍ ME FALTAN PUNTOS Y COMAS&lt;br /&gt;
&lt;br /&gt;
== Ecuación de Laplace ==&lt;br /&gt;
La ecuación de Laplace, cuyo nombre nombre honra al distinguido físico-matemático Pierre-Simon Laplace, es una ecuación en derivadas parciales de tipo elíptico. REFERENCIA?&lt;br /&gt;
Construyamos un problema de derivadas parciales a partir de la ecuación de Laplace. La ecuación es,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \Delta u = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
con &amp;lt;math&amp;gt;u:\mathbb{R}^3 \rightarrow \mathbb{R}&amp;lt;/math&amp;gt; como incógnita. Esta ecuación se define en un dominio &amp;lt;math&amp;gt; \Omega &amp;lt;/math&amp;gt;, y en su frontera &amp;lt;math&amp;gt; \partial \Omega &amp;lt;/math&amp;gt; se pueden añadir condiciones de contorno Dirichlet, Neuman o mixtas. En este trabajo nos centraremos en las condiciones de contorno de tipo Dirichlet, las cuales igualan &amp;lt;math&amp;gt; u &amp;lt;/math&amp;gt; a una función específica &amp;lt;math&amp;gt; g &amp;lt;/math&amp;gt;. Con todo esto, llegamos al siguiente problema de derivadas parciales.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  \Omega \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial \Omega &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A fin de comprender mejor este problema, podemos examinar el siguiente ejemplo en concreto. &lt;br /&gt;
&lt;br /&gt;
===== Ejemplo bola unidad =====&lt;br /&gt;
Sea &amp;lt;math&amp;gt; B_1 ⊂ R^2 &amp;lt;/math&amp;gt; la bola unidad centrada en el origen. Planteamos el problema, &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_1 \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
A lo largo de este documento, en lo que tiene que ver con la ecuación de Laplace, visitaremos este ejemplo varias veces.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dentro de la resolución del problema planteado existen varios métodos por los que proceder. En este trabajo estudiaremos dos: la fórmula de Poisson y la serie de Fourier.&lt;br /&gt;
=== Solución por la fórmula de Poisson ===&lt;br /&gt;
Encontrar la solución del problema mediante la fórmula de Poisson viene determinado por el siguiente teorema.&lt;br /&gt;
&lt;br /&gt;
===== Teorema =====&lt;br /&gt;
La solución &amp;lt;math&amp;gt; u \in C^2(B_R \cup C(\overline{B_R}) &amp;lt;/math&amp;gt;del problema &amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_R \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial B_R &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt; donde &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; es una función continua viene dado por la fórmula de Poisson &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\vec{x})=\frac{R^2-|\vec{x}|^2}{w_n R}\int_{\partial B_R}\frac{g(\sigma)}{|\vec{x}-\sigma|^2} d\sigma. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es importante destacar que el denominador &amp;lt;math&amp;gt;|\vec{x}-\sigma|^2 &amp;lt;/math&amp;gt; se anula en la frontera de la bola llevándonos a una indeterminación y haciendo que la integral diverja. Esto también pasa si expresamos la fórmula en coordenadas polares &amp;lt;math&amp;gt;(r, \theta)&amp;lt;/math&amp;gt;. Tomando, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\vec{x} = (x_1, x_2) = (rcos(\theta), rsen(\theta)) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; g(rcos(\theta), rsen(\theta)) = G(\theta)&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
llegamos a la fórmula de Poisson, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; U(r,\theta)=\frac{R^2-r^2}{2\pi R}\int_{0}^{2\pi}\frac{g(s)}{R^2+r^2-2Rrcos(\theta-s)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso, el denominador de la integral también se anula para puntos cercanos a la frontera, concretamente cuando el coseno se hace 1. &lt;br /&gt;
&lt;br /&gt;
Veamos todo esto aplicado a la bola unidad pasado a coordenadas polares,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    U_{rr} + \frac{1}{r} U_r + \frac{1}{r^2} U_{\theta\theta} = 0, &amp;amp; (r, \theta) \in  B_1 \\&lt;br /&gt;
    U(1, \theta) = G(\theta), &amp;amp;   (r, \theta) \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la resolución de este problema vamos a tomar &amp;lt;math&amp;gt;G(\theta) = máx\{0, 1-\frac{2}{\pi} |\theta - \pi|\}&amp;lt;/math&amp;gt; y utilizaremos la fórmula de Poisson en polares tomando &amp;lt;math&amp;gt;R = 1&amp;lt;/math&amp;gt; y calculando la integral de manera aproximada con la fórmula del trapecio. Como hemos visto antes, la fórmula da problemas para puntos cercanos al borde. Esto lleva a una representación irregular de la frontera si dibujamos la solución sin tener en cuenta este problema.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: sol_sin_frontera_ejercicio1.png|400px|miniaturadeimagen|center|Solución del problema de Poisson sin aplicar la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
Es por esto por lo que la condición frontera no es prescindible en el problema. Para estimar &amp;lt;math&amp;gt; U(r,\theta)&amp;lt;/math&amp;gt;, utilizaremos la fórmula de Poisson para puntos ligeramente alejados del borde, y en el propio borde utilizaremos la condición frontera &amp;lt;math&amp;gt;U(R, \theta) = G(\theta)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: sol_ejercicio1.png|400px|miniaturadeimagen|center|Solución del problema de Poisson aplicando la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
En esta nueva gráfica podemos apreciar como la frontera no presenta las irregularidades anteriores. &lt;br /&gt;
Para conseguir estas gráficas hemos implementado el siguiente código en MatLab.&lt;br /&gt;
&lt;br /&gt;
====== Códigos ======&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Este código resuelve el problema planteado con la fórmula de Poisson sin aplicar condición frontera:&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g:&lt;br /&gt;
g=@(theta)max(0, 1-2/pi*abs(theta-pi));&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos r y theta sobre los que vamos a trabajar:&lt;br /&gt;
N=200; % Número de divisiones del intervalo&lt;br /&gt;
r=linspace(0,R,N); % No podemos llegar hasta la frontera&lt;br /&gt;
theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución de u con la fórmula de Poisson:&lt;br /&gt;
NN=100; % División del intervalo de integración.&lt;br /&gt;
s=linspace(0,2*pi,NN); % Intervalo de integración, para el método del trapecio.&lt;br /&gt;
u=zeros(N,N); % Inicializamos la matriz que almacena los valores de la solución.&lt;br /&gt;
for i=1:length(theta)&lt;br /&gt;
    for j=1:length(r) % Calculamos solución a través de la fórmula del trapecio:&lt;br /&gt;
        u(i,j)=1/(2*pi).*trapz(s,g(s).*(R^2-r(j).^2)./(R^2+r(j).^2-2.*r(j).*cos(s-theta(i))));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
% Creamos la malla:&lt;br /&gt;
[RR,THETA]=meshgrid(r,theta);&lt;br /&gt;
figure&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u,'EdgeColor','flat') % Representación gráfica&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('y')&lt;br /&gt;
zlabel('u(x,y)')&lt;br /&gt;
title('Solución de la ecuación de Laplace')&lt;br /&gt;
}}&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Este código resuelve el problema planteado con la fórmula de Poisson aplicando la condición frontera:&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g:&lt;br /&gt;
g=@(theta)max(0, 1-2/pi*abs(theta-pi));&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos r y theta sobre los que vamos a trabajar:&lt;br /&gt;
N=200; % Número de divisiones del intervalo&lt;br /&gt;
r=linspace(0,R-N^(-1),N-1); % No podemos llegar hasta la frontera&lt;br /&gt;
theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución de u con la fórmula de Poisson:&lt;br /&gt;
NN=1000; % División del intervalo de integración.&lt;br /&gt;
s=linspace(0,2*pi,NN); % Intervalo de integración, para el método del trapecio.&lt;br /&gt;
u=zeros(N,N); % Inicializamos la matriz que almacena los valores de la solución.&lt;br /&gt;
for i=1:length(theta)&lt;br /&gt;
    for j=1:length(r) % Calculamos solución a través de la fórmula del trapecio:&lt;br /&gt;
        u(i,j)=1/(2*pi).*trapz(s,g(s).*(R^2-r(j).^2)./(R^2+r(j).^2-2.*r(j).*cos(s-theta(i))));&lt;br /&gt;
    end&lt;br /&gt;
    % Establecemos condiciones frontera (por presentar problemas en esta):&lt;br /&gt;
    u(i,N)=g(theta(i));&lt;br /&gt;
end&lt;br /&gt;
r(N)=1;&lt;br /&gt;
% Creamos la malla:&lt;br /&gt;
[RR,THETA]=meshgrid(r,theta);&lt;br /&gt;
figure&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u,'EdgeColor','flat') % Representación gráfica&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('y')&lt;br /&gt;
zlabel('u(x,y)')&lt;br /&gt;
title('Solución de la ecuación de Laplace')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== Errores de la fórmula de Poisson =====&lt;br /&gt;
Como hemos observado anteriormente, la fórmula de Poisson presenta ciertas dificultades a la hora de aproximar la solución en la frontera, debido a la singularidad inherente de la integral. En este apartado examinaremos estas irregularidades calculando el error de la aproximación frente a la solución exacta.&lt;br /&gt;
&lt;br /&gt;
Volviendo al ejemplo de la bola unidad, esta vez vamos a suponer el problema,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_1 \\&lt;br /&gt;
    u = g(x,y) = xy, &amp;amp;   \text{x} \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que tiene como solución exacta la función armónica &amp;lt;math&amp;gt;u(x,y) = xy&amp;lt;/math&amp;gt;. Tal y como hemos hecho en el apartado anterior, calculamos la solución aproximada utilizando la fórmula de Poisson, la fórmula del trapecio y pasando a coordenadas polares.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    U_{rr} + \frac{1}{r} U_r + \frac{1}{r^2} U_{\theta\theta} = 0, &amp;amp; (r, \theta) \in  B_1 \\&lt;br /&gt;
    U(1,\theta)=G(\theta)=\cos(\theta)\sin(\theta), &amp;amp;   (r, \theta) \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vamos a distinguir entre dos tipos de puntos, aquellos que estén &amp;quot;alejados&amp;quot; de la frontera y aquellos sean inmediatos a esta. &lt;br /&gt;
Primero estudiaremos el error en puntos &amp;quot;alejados&amp;quot; de la frontera. Esto lo hacemos empleando distintas discretizaciones con &amp;lt;math&amp;gt; 10^n &amp;lt;/math&amp;gt; puntos en la fórmula del trapecio. Después, calculamos el error para cada discretización en un punto alejado, en este caso lo hacemos evaluando en &amp;lt;math&amp;gt;x = (r,\theta)=(0.9,\pi/4)&amp;lt;/math&amp;gt;. Posteriormente graficamos el error aplicando la fórmula,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;f(n):=\log_{10}(Error(10^n)), &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Obteniendo así la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: error_puntoalejado_ejercicio2.png|400px|miniaturadeimagen|center|Error de un punto alejado a la frontera]]&lt;br /&gt;
&lt;br /&gt;
Los resultados de esta gráfica cuadran con nuestra intuición, a mayor número de puntos menor es el error que se comete. Además podemos apreciar que el error se acaba estabilizando al rededor de &amp;lt;math&amp;gt;10^{-15}&amp;lt;/math&amp;gt;. Luego podemos concluir que la fórmula de Poisson proporciona una buena aproximación para puntos relativamente alejados de la frontera. &lt;br /&gt;
&lt;br /&gt;
A continuación, atendiendo a la fórmula del error &amp;quot;teórica&amp;quot; dada por el método del trapecio, la cual sigue la siguiente expresión:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;Error:=\left|-\cfrac{f''(\xi)(b-a)^3}{12n^2}\right|, &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
siendo &amp;lt;math&amp;gt;\xi&amp;lt;/math&amp;gt; un valor dentro del intervalo &amp;lt;math&amp;gt;[a,b]&amp;lt;/math&amp;gt;, y n el valor que genera la discretización para la aplicación del método del trapecio. En nuestro caso, &amp;lt;math&amp;gt;[a,b]=[0,2\pi]&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; la función a integrar en la fórmula de Poisson.&lt;br /&gt;
Ahora bien, el código de MatLab presentado al final de la sección implementa un cálculo del error máximo, tomando para cada n el error máximo en la discretización y acumulándolo en la lista &amp;lt;math&amp;gt;error\_max&amp;lt;/math&amp;gt; de tal forma que en la gráfica se presenta una representación del error máximo teórico de la fórmula del trapecio.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: comparacion_errores_ejercicio2.png|400px|miniaturadeimagen|center|Comparación errores con su máximo]]&lt;br /&gt;
&lt;br /&gt;
Como se puede apreciar de manera bastante clara en la gráfica, a medida que aumentan los puntos de la discretización, la cota va disminuyendo. Aún así, se puede apreciar que el error calculado para un punto alejado de la frontera se sigue manteniendo por debajo de dicha cota.&lt;br /&gt;
&lt;br /&gt;
Estudiemos ahora el error cometido en puntos &amp;quot;cercanos&amp;quot; a la frontera. En este caso vamos utilizar una única discretización de 100 puntos de la fórmula del trapecio y puntos que cada vez se acercan más a la frontera. Partiendo del punto &amp;lt;math&amp;gt;x = (r,\theta)=(0.9,\pi/4)&amp;lt;/math&amp;gt; vamos a ir avanzando hacia la frontera con puntos de la forma &amp;lt;math&amp;gt;(r,\theta)=(1-10^{-n}, \pi/4)&amp;lt;/math&amp;gt;. La gráfica entonces resulta ser:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: error_puntoscercanosfrontera_ejercicio2.png|400px|miniaturadeimagen|center|Error de puntos cercanos a la frontera]]&lt;br /&gt;
&lt;br /&gt;
En este caso el error incrementa según los puntos se acercan a la frontera y se acaba estabilizando en &amp;lt;math&amp;gt;-0,3&amp;lt;/math&amp;gt;.&lt;br /&gt;
El código utilizado para dibujar estas gráficas es el siguiente.&lt;br /&gt;
&lt;br /&gt;
{{matlab||codigo=&lt;br /&gt;
% El siguiente código ejecuta todas las gráficas planteadas a lo largo de esta sección&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Definimos el radio de la bola;&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos la función g:&lt;br /&gt;
g =@(theta) (R.^2.*cos(theta).*sin(theta));&lt;br /&gt;
&lt;br /&gt;
% Definimos la solución exacta:&lt;br /&gt;
u_exacta =@(r,theta) (r.^2.*cos(theta).*sin(theta));&lt;br /&gt;
&lt;br /&gt;
% Tomamos el punto r=0.9 y theta=pi/4:&lt;br /&gt;
r_valor=0.9;&lt;br /&gt;
theta_valor=pi/4;&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución u en el punto anterior:&lt;br /&gt;
n=1:1:8;&lt;br /&gt;
error=zeros(1,length(n)); % Inicializamos la matriz que almacena el error&lt;br /&gt;
error_log=zeros(1,length(n)); % Inicializamos la matriz que almacena el error logarítmico&lt;br /&gt;
u_valor=zeros(1,length(n)); % Inicializamos la matriz que almacena la solución de u para distintas discretizaciones del método del trapecio&lt;br /&gt;
for i=1:length(n)&lt;br /&gt;
    s=linspace(0,2*pi,10^(n(i))); % Intervalo de integración&lt;br /&gt;
    u_valor(i)=1/(2*pi).*trapz(s,g(s).*(R^2-r_valor.^2)./(R^2+r_valor.^2-2.*r_valor.*cos(s-theta_valor))); % Solución a través de la fórmula de Poisson&lt;br /&gt;
    &lt;br /&gt;
    % Calculamos el error:&lt;br /&gt;
    error(i)=abs(u_exacta(r_valor,theta_valor)-u_valor(i));&lt;br /&gt;
    % Calculamos el error logarítmico:&lt;br /&gt;
    error_log(i)=log10(error(i));&lt;br /&gt;
end&lt;br /&gt;
% Representamos gráficamente el error logarítmico para el punto r=0.9 y theta=pi/4:&lt;br /&gt;
plot(n,error_log,'o-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(10^n))')&lt;br /&gt;
grid on &lt;br /&gt;
grid minor&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Gráfica del error logarítmico')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Observamos la existencia de un error máximo que nos permita confirmar&lt;br /&gt;
% que los errores calculados anteriormente se encuentran por debajo siempre:&lt;br /&gt;
&lt;br /&gt;
% Calculamos la segunda derivada (requerida por la fórmula):&lt;br /&gt;
syms rr ss thetatheta&lt;br /&gt;
% Definimos de forma simbólica la función a derivar:&lt;br /&gt;
f=rr^2*cos(ss)*sin(ss)/(1+rr^2-2*rr*cos(thetatheta-ss));&lt;br /&gt;
derivada1=diff(f,ss); % Derivamos la función f en función de la variable s&lt;br /&gt;
derivada2=diff(derivada1,ss); % Derivamos la primera derivada en función de la variable s&lt;br /&gt;
% Calculamos el error máximo del método del trapecio:&lt;br /&gt;
nn=1:1:3; % Conforme el número sea más elevado aquí más aumentará el tiempo de compilación del programa.&lt;br /&gt;
error_max=zeros(length(nn),1); % Inicializamos a ceros el vector que almacenará los datos del error máximo del trapecio&lt;br /&gt;
for i=1:length(nn)&lt;br /&gt;
    N=10^i;&lt;br /&gt;
    s=linspace(0,2*pi,N);&lt;br /&gt;
    error_trapz=zeros(N,1); % Inicializamos a ceros el vector que almacenará los datos del error del trapecio para cada n&lt;br /&gt;
    for j=1:N&lt;br /&gt;
        s_valor=s(j);&lt;br /&gt;
        error_trapz(j)=log10(abs(-(2*pi).^3.*subs(derivada2, [rr,ss,thetatheta] ,[r_valor,s_valor,theta_valor])./(12.*(N.^2))));&lt;br /&gt;
    end&lt;br /&gt;
    error_max(i)=max(error_trapz);&lt;br /&gt;
end&lt;br /&gt;
% Representamos gráficamente el error máximo junto con el error calculado&lt;br /&gt;
% anteriormente:&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
plot(nn,error_log(1:length(nn)),'Color','blue')&lt;br /&gt;
plot(nn,error_max,'Color','red')&lt;br /&gt;
hold off&lt;br /&gt;
legend('Error','Error máximo')&lt;br /&gt;
title('Comparación de errores')&lt;br /&gt;
grid on&lt;br /&gt;
grid minor&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('Error')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Fijamos ahora para N=100 (puntos en la fórmula del trapecio).&lt;br /&gt;
% Vamos a calcular el error en los puntos de la forma r=1-10^(-n) y theta=pi/4 y veremos qué ocurre:&lt;br /&gt;
N=100;&lt;br /&gt;
r_valores=zeros(1,N); % Inicializamos vector que almacena los valores de r.&lt;br /&gt;
u_valores_r=zeros(1,N); % Inicializamos el vector que almacena los valores de la solución u para distintos valores de r.&lt;br /&gt;
u_exacta_r=zeros(1,N); % Inicializamos el vector que almacena los valores de la solución u exacta para distintos valores de r.&lt;br /&gt;
error_r=zeros(1,N); % Inicializamos el vector que almacena los errores.&lt;br /&gt;
error_log_r=zeros(1,N); % Inicializamos el vector que almacena los errores logarítmicos.&lt;br /&gt;
% theta_valor=pi/4 es el mismo que hemos usado antes, por lo que no lo volvemos a inicializar.&lt;br /&gt;
% Definimos el vector de integración de la fórmula del trapecio:&lt;br /&gt;
s=linspace(0,2*pi,N);&lt;br /&gt;
for j=1:N&lt;br /&gt;
    r_valores(j)=1-10^(-j);&lt;br /&gt;
    u_valores_r(j)=1/(2*pi).*trapz(s,g(s).*(R^2-r_valores(j).^2)./(R^2+r_valores(j).^2-2.*r_valores(j).*cos(s-theta_valor)));&lt;br /&gt;
    u_exacta_r(j)=u_exacta(r_valores(j),theta_valor);&lt;br /&gt;
    error_r(j)=abs(u_exacta_r(j)-u_valores_r(j));&lt;br /&gt;
    error_log_r(j)=log10(error_r(j));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
plot(1:1:N,error_log_r,'.-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(100))')&lt;br /&gt;
grid on &lt;br /&gt;
grid minor&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Errores en los puntos cercanos a la frontera')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Solución por la serie de Fourier ===&lt;br /&gt;
Una vez estudiada la solución por la fórmula de Poisson, en este apartado calcularemos la solución por serie de Fourier. La obtención de esta solución se basa en una cambio de variable a polares del problema, como el visto previamente, y resolución por separación de variables.  Hacemos esto aplicado al problema anterior en una bola de radio &amp;lt;math&amp;gt; R &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta U=U_{rr}+\frac{1}{r}U_r+\frac{1}{r^2}U_{\theta\theta}=0, r\in(0,R),\theta\in(0,2\pi)\\&lt;br /&gt;
U(R,\theta)=G(\theta)=R^2 sin(\theta)cos(\theta), \theta\in[0,2\pi).&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo cual nos conduce a, &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
U(r, \theta) = \frac{\alpha_{0}}{2}  +   \sum_{k=1}^{n} \left( \alpha_{k} \left(\frac{r}{R} \right)^k cos(k\theta) + \beta_{k} \left(\frac{r}{R} \right)^k sin(k\theta)\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que tiene coeficientes,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\alpha_{0} =\frac{1}{\pi}\int_{-\pi}^{\pi} \cos\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\alpha_{k} =\frac{1}{\pi}\int_{-\pi}^{\pi} cos(\theta) \sin(\theta) \cos\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\beta_{k} =\frac{1}{\pi}\int_{-\pi}^{\pi} cos(\theta) \sin(\theta) \sin\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Sin embargo, todos los coeficientes de Fourier son nulos, salvo por &amp;lt;math&amp;gt; \beta_2=\frac{R^2}{2}&amp;lt;/math&amp;gt;, luego la solución por series de Fourier final es, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}\sin(2\theta)=r^2\cos(\theta)\sin(\theta), r\in [0,R], \theta\in[0,2\pi)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Veamos ahora la gráfica que dibuja esta solución tomando &amp;lt;math&amp;gt; R = 1 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Tresaitana1.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Ecuación de Laplace&lt;br /&gt;
%% Apartado 3&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Definimos el radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% k términos de la serie:&lt;br /&gt;
K=[5 10 100];&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g y la función u exacta:&lt;br /&gt;
g=@(theta) R.^2.*cos(theta).*sin(theta);&lt;br /&gt;
u_exacta=@(r,theta) r.^2.*cos(theta).*sin(theta);&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos de theta y r:&lt;br /&gt;
N=300; % Número de divisiones de los intervalos theta y r.&lt;br /&gt;
Theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
r=linspace(0,R,N); % Intervalo r.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Calculamos los coeficientes de Fourier para distintos k-términos:&lt;br /&gt;
for i=1:length(K)&lt;br /&gt;
    k=K(i); % k-términos de la serie.&lt;br /&gt;
    int=linspace(-pi,pi,k); % Intervalo de integración para los coef de Fourier.&lt;br /&gt;
    a0=1/pi.*integral(g,-pi,pi); % Coeficiente de Fourier a_0 (asociado a 1/2).&lt;br /&gt;
    a=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al coseno.&lt;br /&gt;
    b=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al seno.&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        f_cos=@(theta) g(theta).*cos(j.*theta); % Definimos la función a integrar asociada al coseno.&lt;br /&gt;
        f_sin=@(theta) g(theta).*sin(j.*theta); % Definimos la función a integrar asociada al seno.&lt;br /&gt;
        a(j)=1/pi.*integral(f_cos,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fourier del coseno.&lt;br /&gt;
        b(j)=1/pi.*integral(f_sin,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fouries del seno.&lt;br /&gt;
    end&lt;br /&gt;
    % Calculamos la solución u_k asociada al número de términos de la serie:&lt;br /&gt;
    suma=@(r,theta)0;&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        suma=@(r,theta) suma(r,theta) + a(j).*(r/R).^j.*cos(j.*theta)+b(j).*(r/R).^j.*sin(j.*theta);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['u_' num2str(k) '=@(r,theta) 1/2*a0 + suma(r,theta);']);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
[RR,THETA]=meshgrid(r,Theta);&lt;br /&gt;
figure&lt;br /&gt;
for i=1:length(K)&lt;br /&gt;
    k=K(i);&lt;br /&gt;
    subplot(2,2,i)&lt;br /&gt;
    eval(['surf(RR.*cos(THETA),RR.*sin(THETA),u_' num2str(k) '(RR,THETA),&amp;quot;EdgeColor&amp;quot;,&amp;quot;flat&amp;quot;)'])&lt;br /&gt;
    title(&amp;quot;Solución de u para k=&amp;quot;, num2str(k))&lt;br /&gt;
end&lt;br /&gt;
subplot(2,2,4)&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u_exacta(RR,THETA),&amp;quot;EdgeColor&amp;quot;,&amp;quot;flat&amp;quot;)&lt;br /&gt;
title('Solución exacta')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Errores de la solución por serie de Fourier ====&lt;br /&gt;
Al igual que con la solución dada por la fórmula de Poisson, vamos a comparar la solución calculada con la solución exacta &amp;lt;math&amp;gt;u(x,y)=xy&amp;lt;/math&amp;gt; en la bola de radio 1. Vamos a contrastar las soluciones con 5, 10 y 100 términos con la exacta. Calcularemos el error resultante al aproximar la serie de Fourier y lo representamos gráficamente, mostrando el máximo error en función del número de términos utilizados en una escala logarítmica, es decir, pintaremos la función, &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \log_{10}(error(n)) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; error(n) &amp;lt;/math&amp;gt; es ahora el supremo del error con &amp;lt;math&amp;gt;n &amp;lt;/math&amp;gt;términos. Obetenemos así la siguente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Tresaitana2.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
Podemos apreciar en esta gráfica errores de orden muy pequeño, por lo general, los podemos considerar pequeño. Luego, nos damos cuenta de que, a diferencia de solución por la fórmula de Poisson, esta no nos da problemas en la frontera. Veamos el código utilizado para hacer la gráfica.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% A continuación se calcularán los errores de la aproximación de Fourier en función de los términos:&lt;br /&gt;
KK=0:1:100;&lt;br /&gt;
error_log=zeros(length(KK),1); % Inicializamos el vector donde se almacenarán los errores logarítmicos.&lt;br /&gt;
for i=1:length(KK)&lt;br /&gt;
    k=KK(i);&lt;br /&gt;
    int=linspace(-pi,pi,k); % Intervalo de integración para los coef de Fourier.&lt;br /&gt;
    a0=1/pi.*integral(g,-pi,pi); % Coeficiente de Fourier a_0 (asociado a 1/2).&lt;br /&gt;
    a=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al coseno.&lt;br /&gt;
    b=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al seno.&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        f_cos=@(theta) g(theta).*cos(j.*theta); % Definimos la función a integrar asociada al coseno.&lt;br /&gt;
        f_sin=@(theta) g(theta).*sin(j.*theta); % Definimos la función a integrar asociada al seno.&lt;br /&gt;
        a(j)=1/pi.*integral(f_cos,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fourier del coseno.&lt;br /&gt;
        b(j)=1/pi.*integral(f_sin,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fouries del seno.&lt;br /&gt;
    end&lt;br /&gt;
    % Calculamos la solución u_k asociada al número de términos de la serie:&lt;br /&gt;
    suma=@(r,theta)0;&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        suma=@(r,theta) suma(r,theta) + a(j).*(r/R).^j.*cos(j.*theta)+b(j).*(r/R).^j.*sin(j.*theta);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['u_' num2str(i) '=@(r,theta) 1/2*a0 + suma(r,theta);']);&lt;br /&gt;
    eval(['u=@(r,theta)u_' num2str(i) '(r,theta) ;']);&lt;br /&gt;
    U_exacta=u_exacta(RR,THETA);&lt;br /&gt;
    U_fourier=u(RR,THETA);&lt;br /&gt;
    valores_max=max(U_exacta-U_fourier);&lt;br /&gt;
    sup=max(valores_max,[],'all');&lt;br /&gt;
    error_log(i)=log10(sup);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
plot(KK,error_log)&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Errores supremos frente al número de términos')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(10^n))')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Comportamiento de la solución ===&lt;br /&gt;
En esta sección, y atendiendo al comportamiento de la solución estudiaremos en qué región se han de encontrar las soluciones armónicas dentro  de la bola &amp;lt;math&amp;gt;B_R&amp;lt;/math&amp;gt;, siendo &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; el radio de la bola, que tengan el mismo valor que nuestra solución en el (0,0).&lt;br /&gt;
La '''desigualdad de Harnack''' establece: Sea &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; armónica y &amp;lt;math&amp;gt;0\leq u&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;\Omega \in \mathbb{R}^n&amp;lt;/math&amp;gt;. Supongamos&lt;br /&gt;
&lt;br /&gt;
== Ecuación de Poisson ==&lt;br /&gt;
&lt;br /&gt;
En esta parte del documento se va a proceder a resolver la ecuación de Poisson mediante un nuevo método. En primer lugar, esta ecuación viene dada por  &amp;lt;math&amp;gt; \Delta u = f &amp;lt;/math&amp;gt; siendo &amp;lt;math&amp;gt;u:\mathbb{R}^n \rightarrow \mathbb{R}&amp;lt;/math&amp;gt;y &amp;lt;math&amp;gt; f \in C^2(\mathbb{R})&amp;lt;/math&amp;gt;. Para este estudio se particularizará para n=2 y n=3.&lt;br /&gt;
&lt;br /&gt;
Se comenzará definiendo la solución fundamental de esta ecuación, pues se utilizará posteriormente para calcular el potencial newtoniano o logarítimico. Esta viene dada por &amp;lt;math&amp;gt;  \phi(x) = -\frac{1}{2\pi} log(|x|) &amp;lt;/math&amp;gt; si n=2 y &amp;lt;math&amp;gt;  \phi(x) = \frac{1}{4\pi |x| } &amp;lt;/math&amp;gt; si n=3.&lt;br /&gt;
=== Potencial newtoniano para &amp;lt;math&amp;gt; \mathbb{R}^3&amp;lt;/math&amp;gt; ===&lt;br /&gt;
Supongamos que &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
representa la densidad de una carga contenida en un conjunto compacto dentro del espacio tridimensional &amp;lt;math&amp;gt; \mathbb{R}^3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Entonces, la expresión &amp;lt;math&amp;gt; \phi(x-y)f(y)dy&amp;lt;/math&amp;gt; denota el potencial en el punto x. De esta manera el potencial total viene dado por la siguiente expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\mathbf{x}) = \int_{\mathbb{R}^n} f(\mathbf{y}) \phi(\mathbf{x} - \mathbf{y}) d\mathbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta fórmula se conoce como potencial Newtoniano de f y se aplica sobre funciones que en el infinito tienden de manera rápida a cero.&lt;br /&gt;
&lt;br /&gt;
A su vez, sea &amp;lt;math&amp;gt;f \in C^2(\mathbb{R}^3)&amp;lt;/math&amp;gt; con soporte compacto. Sea &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; el potencial newtoniano de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, definido por el potencial Newtoniano. Entonces, &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; es la única solución en &amp;lt;math&amp;gt;\mathbb{R}^3&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;\Delta u = -f&amp;lt;/math&amp;gt;  que pertenece a &amp;lt;math&amp;gt;C^2(\mathbb{R}^3)&amp;lt;/math&amp;gt; y se anula en el infinito. Es decir, dado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \begin{cases}&lt;br /&gt;
     \Delta u = -f \\&lt;br /&gt;
   u(x) \rightarrow 0  &amp;amp; \text{si } |x| \rightarrow \infty&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
su solución viene dada por el potencial newtoniano que se presenta anteriormente.&lt;br /&gt;
&lt;br /&gt;
=== Potencial logarítmico para &amp;lt;math&amp;gt; \mathbb{R}^2&amp;lt;/math&amp;gt; ===&lt;br /&gt;
Si el problema se presenta en &amp;lt;math&amp;gt; \mathbb{R}^2&amp;lt;/math&amp;gt; el potencial newtoniano se sustituye por el potencial logarítimico:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\mathbf{x}) = -\frac{1}{2\pi}\int_{\mathbb{R}^2}  log|\mathbf{x} - \mathbf{y}|f(\mathbf{y}) d\mathbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta manera, Sea &amp;lt;math&amp;gt;f \in C^2(\mathbb{R}^2)&amp;lt;/math&amp;gt; con soporte compacto, &amp;lt;math&amp;gt;u(\mathbf{x})&amp;lt;/math&amp;gt; es la única solución en &amp;lt;math&amp;gt;\mathbb{R}^2&amp;lt;/math&amp;gt; de:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \begin{cases}&lt;br /&gt;
     \Delta u = -f \\&lt;br /&gt;
   u(x)=-\frac{M}{2\pi} log |x| + O\left(\frac{1}{|x|} \right)  &amp;amp; \text{si } |x| \rightarrow \infty&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M= \int _{\mathbb{R}^2} f(\mathbf y) d\mathbf y&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
A continuación, veremos un ejemplo de lo explicado anteriormente para una correcta comprensión de ello. De esta manera, mediante el potencial logarítmico se aproximará la ecuación de Poisson cuando f sea la función característica de la bola de radio 1 y se estudiará su comportamiento en el infinito.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Para resolver este ejemplo se ha realizado un código en Matlab. La integral se ha simplificado de la siguiente manera:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; -\frac{1}{2\pi}\int_{\partial B_1 0} log|\mathbf{x} - \mathbf{y}| d\mathbf{y} = -\frac{\pi}{4}\frac{1}{2\pi}\int_{-1} ^1 \int_{-1} ^1 log|\mathbf{x} - \mathbf{y}| dx dy &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%aSe divide el dominio de cada variable en 200 puntos. Para y1 e y2 se coge&lt;br /&gt;
%el intervalo [-1,1] pues cuando este fuera de este intervalo la función vale 0 y por tanto la integral se anulará y para x1 y x2 se coge un intervalo muy grande pues la función tiene dominio todo R2.&lt;br /&gt;
i1 = linspace(-1,1,200);&lt;br /&gt;
i2 = linspace(-1,1,200);&lt;br /&gt;
i3 = linspace(-10^4,10^4,200);&lt;br /&gt;
i4 = linspace(-10^4,10^4,200);&lt;br /&gt;
&lt;br /&gt;
% Se define la función f anteriormente obtenida&lt;br /&gt;
f = @(y1, y2, x1, x2) -(pi/4)*(1/(2*pi))*log(sqrt((y1-x1).^2 + (y2-x2).^2));&lt;br /&gt;
&lt;br /&gt;
% Generamos una malla de puntos&lt;br /&gt;
[A, B] = meshgrid(i1, i2);&lt;br /&gt;
[C, D] = meshgrid(i3,i4);&lt;br /&gt;
&lt;br /&gt;
%Creamos una matriz cero donde se irán metiendo los valores que&lt;br /&gt;
%próximamente evaluaremos&lt;br /&gt;
values = zeros(size(A)); &lt;br /&gt;
&lt;br /&gt;
% Se crea el siguiente bucle para obtener los valores que necesitamos para&lt;br /&gt;
% la representación gráfica&lt;br /&gt;
for i = 1:length(i1)&lt;br /&gt;
    for j = 1:length(i2)&lt;br /&gt;
        fnum = @(x, y) f(x, y, i3(i), i4(j)); % Se crea este bucle para ir evaluando f en los distintos puntos (x1,x2)&lt;br /&gt;
        values(i, j) = trapz(i2, trapz(i1, fnum(A, B), 2)); % Evaluar fnum en la malla (A, B) y calcular la integral por el método del trapecio&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Se dibujan todos los puntos obtenidos&lt;br /&gt;
surf(C,D,values)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La representación obtenida es la siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Unoaitana.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación se va a comprobar si la solución se comporta de la manera esperada en el infinito. Tal y como se ha especificado anteriormente el comportamiento asintótico sigue la siguiente función:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x)=-\frac{M}{2\pi} log |x| + O(\frac{1}{|x|})&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
siendo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M= \int _{\mathbb{R}^2} f(\mathbf y) d\mathbf y&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación, se compara esta función con la solución obtenida anteriormente con el fin de observar si se comporta adecuadamente. Se ha creado el siguiente código:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
graf=zeros(length(i1));&lt;br /&gt;
xgraf=zeros(length(i1));&lt;br /&gt;
for i = 1:length(i1)&lt;br /&gt;
        fnum = @(x, y) f(x, y, i3(i), i4(i));&lt;br /&gt;
        &lt;br /&gt;
        graf(i) = trapz(i2, trapz(i1, fnum(A,B), 2));&lt;br /&gt;
        xgraf(i)=sqrt(2*(i3(i)^2));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
hold on&lt;br /&gt;
hol= @(x) -1/2*log(x);&lt;br /&gt;
valy = hol(xgraf);&lt;br /&gt;
% Crear el gráfico de las líneas y los puntos&lt;br /&gt;
hold on&lt;br /&gt;
plot(xgraf, valy, '-','DisplayName','Función asintótica'); &lt;br /&gt;
plot(xgraf, graf, '*','DisplayName','Función obtenida');&lt;br /&gt;
xlabel('Eje x')&lt;br /&gt;
ylabel('Eje y')&lt;br /&gt;
title('Gráfico función asintótica y función obtenida')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Se ha obtenido la siguiente gráfica, siendo la verde la función obtenida y la azul la función asintótica:&lt;br /&gt;
[[Archivo: Dosaitana.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
Tal y como se ve, se observa que el comportamiento es el esperado.&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaciones_de_Laplace_y_de_Poisson&amp;diff=71629</id>
		<title>Ecuaciones de Laplace y de Poisson</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaciones_de_Laplace_y_de_Poisson&amp;diff=71629"/>
				<updated>2024-04-19T18:22:56Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: /* Errores de la fórmula de Poisson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introducción ==&lt;br /&gt;
En este documento, nos centraremos en dos ecuaciones que tienen un amplio uso en diversos ámbitos como electrostática, mecánica de fluidos, física teórica y magnetostática: la ecuación de Laplace y la ecuación de Poisson. &lt;br /&gt;
Ambas ecuaciones las estudiaremos en el plano y las veremos aplicadas en problemas concretos. Veremos las limitaciones que presenta la fórumla de Poisson así como diferentes métodos analíticos para aproximar soluciones, y raíz de esto, analizaremos errores de aproximación. Por último, estudiaremos el comportamiento de soluciones tanto en un dominio dado, utilizando la desigualdad de Harnack, como asintóticamente en infinito.&lt;br /&gt;
 &lt;br /&gt;
 CREO QUE AQUÍ ME FALTAN PUNTOS Y COMAS&lt;br /&gt;
&lt;br /&gt;
== Ecuación de Laplace ==&lt;br /&gt;
La ecuación de Laplace, cuyo nombre nombre honra al distinguido físico-matemático Pierre-Simon Laplace, es una ecuación en derivadas parciales de tipo elíptico. REFERENCIA?&lt;br /&gt;
Construyamos un problema de derivadas parciales a partir de la ecuación de Laplace. La ecuación es,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \Delta u = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
con &amp;lt;math&amp;gt;u:\mathbb{R}^3 \rightarrow \mathbb{R}&amp;lt;/math&amp;gt; como incógnita. Esta ecuación se define en un dominio &amp;lt;math&amp;gt; \Omega &amp;lt;/math&amp;gt;, y en su frontera &amp;lt;math&amp;gt; \partial \Omega &amp;lt;/math&amp;gt; se pueden añadir condiciones de contorno Dirichlet, Neuman o mixtas. En este trabajo nos centraremos en las condiciones de contorno de tipo Dirichlet, las cuales igualan &amp;lt;math&amp;gt; u &amp;lt;/math&amp;gt; a una función específica &amp;lt;math&amp;gt; g &amp;lt;/math&amp;gt;. Con todo esto, llegamos al siguiente problema de derivadas parciales.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  \Omega \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial \Omega &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A fin de comprender mejor este problema, podemos examinar el siguiente ejemplo en concreto. &lt;br /&gt;
&lt;br /&gt;
===== Ejemplo bola unidad =====&lt;br /&gt;
Sea &amp;lt;math&amp;gt; B_1 ⊂ R^2 &amp;lt;/math&amp;gt; la bola unidad centrada en el origen. Planteamos el problema, &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_1 \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
A lo largo de este documento, en lo que tiene que ver con la ecuación de Laplace, visitaremos este ejemplo varias veces.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dentro de la resolución del problema planteado existen varios métodos por los que proceder. En este trabajo estudiaremos dos: la fórmula de Poisson y la serie de Fourier.&lt;br /&gt;
=== Solución por la fórmula de Poisson ===&lt;br /&gt;
Encontrar la solución del problema mediante la fórmula de Poisson viene determinado por el siguiente teorema.&lt;br /&gt;
&lt;br /&gt;
===== Teorema =====&lt;br /&gt;
La solución &amp;lt;math&amp;gt; u \in C^2(B_R \cup C(\overline{B_R}) &amp;lt;/math&amp;gt;del problema &amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_R \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial B_R &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt; donde &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; es una función continua viene dado por la fórmula de Poisson &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\vec{x})=\frac{R^2-|\vec{x}|^2}{w_n R}\int_{\partial B_R}\frac{g(\sigma)}{|\vec{x}-\sigma|^2} d\sigma. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es importante destacar que el denominador &amp;lt;math&amp;gt;|\vec{x}-\sigma|^2 &amp;lt;/math&amp;gt; se anula en la frontera de la bola llevándonos a una indeterminación y haciendo que la integral diverja. Esto también pasa si expresamos la fórmula en coordenadas polares &amp;lt;math&amp;gt;(r, \theta)&amp;lt;/math&amp;gt;. Tomando, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\vec{x} = (x_1, x_2) = (rcos(\theta), rsen(\theta)) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; g(rcos(\theta), rsen(\theta)) = G(\theta)&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
llegamos a la fórmula de Poisson, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; U(r,\theta)=\frac{R^2-r^2}{2\pi R}\int_{0}^{2\pi}\frac{g(s)}{R^2+r^2-2Rrcos(\theta-s)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso, el denominador de la integral también se anula para puntos cercanos a la frontera, concretamente cuando el coseno se hace 1. &lt;br /&gt;
&lt;br /&gt;
Veamos todo esto aplicado a la bola unidad pasado a coordenadas polares,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    U_{rr} + \frac{1}{r} U_r + \frac{1}{r^2} U_{\theta\theta} = 0, &amp;amp; (r, \theta) \in  B_1 \\&lt;br /&gt;
    U(1, \theta) = G(\theta), &amp;amp;   (r, \theta) \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la resolución de este problema vamos a tomar &amp;lt;math&amp;gt;G(\theta) = máx\{0, 1-\frac{2}{\pi} |\theta - \pi|\}&amp;lt;/math&amp;gt; y utilizaremos la fórmula de Poisson en polares tomando &amp;lt;math&amp;gt;R = 1&amp;lt;/math&amp;gt; y calculando la integral de manera aproximada con la fórmula del trapecio. Como hemos visto antes, la fórmula da problemas para puntos cercanos al borde. Esto lleva a una representación irregular de la frontera si dibujamos la solución sin tener en cuenta este problema.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: sol_sin_frontera_ejercicio1.png|400px|miniaturadeimagen|center|Solución del problema de Poisson sin aplicar la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
Es por esto por lo que la condición frontera no es prescindible en el problema. Para estimar &amp;lt;math&amp;gt; U(r,\theta)&amp;lt;/math&amp;gt;, utilizaremos la fórmula de Poisson para puntos ligeramente alejados del borde, y en el propio borde utilizaremos la condición frontera &amp;lt;math&amp;gt;U(R, \theta) = G(\theta)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: sol_ejercicio1.png|400px|miniaturadeimagen|center|Solución del problema de Poisson aplicando la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
En esta nueva gráfica podemos apreciar como la frontera no presenta las irregularidades anteriores. &lt;br /&gt;
Para conseguir estas gráficas hemos implementado el siguiente código en MatLab.&lt;br /&gt;
&lt;br /&gt;
====== Códigos ======&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Este código resuelve el problema planteado con la fórmula de Poisson sin aplicar condición frontera:&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g:&lt;br /&gt;
g=@(theta)max(0, 1-2/pi*abs(theta-pi));&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos r y theta sobre los que vamos a trabajar:&lt;br /&gt;
N=200; % Número de divisiones del intervalo&lt;br /&gt;
r=linspace(0,R,N); % No podemos llegar hasta la frontera&lt;br /&gt;
theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución de u con la fórmula de Poisson:&lt;br /&gt;
NN=100; % División del intervalo de integración.&lt;br /&gt;
s=linspace(0,2*pi,NN); % Intervalo de integración, para el método del trapecio.&lt;br /&gt;
u=zeros(N,N); % Inicializamos la matriz que almacena los valores de la solución.&lt;br /&gt;
for i=1:length(theta)&lt;br /&gt;
    for j=1:length(r) % Calculamos solución a través de la fórmula del trapecio:&lt;br /&gt;
        u(i,j)=1/(2*pi).*trapz(s,g(s).*(R^2-r(j).^2)./(R^2+r(j).^2-2.*r(j).*cos(s-theta(i))));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
% Creamos la malla:&lt;br /&gt;
[RR,THETA]=meshgrid(r,theta);&lt;br /&gt;
figure&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u,'EdgeColor','flat') % Representación gráfica&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('y')&lt;br /&gt;
zlabel('u(x,y)')&lt;br /&gt;
title('Solución de la ecuación de Laplace')&lt;br /&gt;
}}&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Este código resuelve el problema planteado con la fórmula de Poisson aplicando la condición frontera:&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g:&lt;br /&gt;
g=@(theta)max(0, 1-2/pi*abs(theta-pi));&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos r y theta sobre los que vamos a trabajar:&lt;br /&gt;
N=200; % Número de divisiones del intervalo&lt;br /&gt;
r=linspace(0,R-N^(-1),N-1); % No podemos llegar hasta la frontera&lt;br /&gt;
theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución de u con la fórmula de Poisson:&lt;br /&gt;
NN=1000; % División del intervalo de integración.&lt;br /&gt;
s=linspace(0,2*pi,NN); % Intervalo de integración, para el método del trapecio.&lt;br /&gt;
u=zeros(N,N); % Inicializamos la matriz que almacena los valores de la solución.&lt;br /&gt;
for i=1:length(theta)&lt;br /&gt;
    for j=1:length(r) % Calculamos solución a través de la fórmula del trapecio:&lt;br /&gt;
        u(i,j)=1/(2*pi).*trapz(s,g(s).*(R^2-r(j).^2)./(R^2+r(j).^2-2.*r(j).*cos(s-theta(i))));&lt;br /&gt;
    end&lt;br /&gt;
    % Establecemos condiciones frontera (por presentar problemas en esta):&lt;br /&gt;
    u(i,N)=g(theta(i));&lt;br /&gt;
end&lt;br /&gt;
r(N)=1;&lt;br /&gt;
% Creamos la malla:&lt;br /&gt;
[RR,THETA]=meshgrid(r,theta);&lt;br /&gt;
figure&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u,'EdgeColor','flat') % Representación gráfica&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('y')&lt;br /&gt;
zlabel('u(x,y)')&lt;br /&gt;
title('Solución de la ecuación de Laplace')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== Errores de la fórmula de Poisson =====&lt;br /&gt;
Como hemos observado anteriormente, la fórmula de Poisson presenta ciertas dificultades a la hora de aproximar la solución en la frontera, debido a la singularidad inherente de la integral. En este apartado examinaremos estas irregularidades calculando el error de la aproximación frente a la solución exacta.&lt;br /&gt;
&lt;br /&gt;
Volviendo al ejemplo de la bola unidad, esta vez vamos a suponer el problema,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_1 \\&lt;br /&gt;
    u = g(x,y) = xy, &amp;amp;   \text{x} \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que tiene como solución exacta la función armónica &amp;lt;math&amp;gt;u(x,y) = xy&amp;lt;/math&amp;gt;. Tal y como hemos hecho en el apartado anterior, calculamos la solución aproximada utilizando la fórmula de Poisson, la fórmula del trapecio y pasando a coordenadas polares.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    U_{rr} + \frac{1}{r} U_r + \frac{1}{r^2} U_{\theta\theta} = 0, &amp;amp; (r, \theta) \in  B_1 \\&lt;br /&gt;
    U(1,\theta)=G(\theta)=\cos(\theta)\sin(\theta), &amp;amp;   (r, \theta) \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vamos a distinguir entre dos tipos de puntos, aquellos que estén &amp;quot;alejados&amp;quot; de la frontera y aquellos sean inmediatos a esta. &lt;br /&gt;
Primero estudiaremos el error en puntos &amp;quot;alejados&amp;quot; de la frontera. Esto lo hacemos empleando distintas discretizaciones con &amp;lt;math&amp;gt; 10^n &amp;lt;/math&amp;gt; puntos en la fórmula del trapecio. Después, calculamos el error para cada discretización en un punto alejado, en este caso lo hacemos evaluando en &amp;lt;math&amp;gt;x = (r,\theta)=(0.9,\pi/4)&amp;lt;/math&amp;gt;. Posteriormente graficamos el error aplicando la fórmula,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;f(n):=\log_{10}(Error(10^n)), &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Obteniendo así la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: error_puntoalejado_ejercicio2.png|400px|miniaturadeimagen|center|Error de un punto alejado a la frontera]]&lt;br /&gt;
&lt;br /&gt;
Los resultados de esta gráfica cuadran con nuestra intuición, a mayor número de puntos menor es el error que se comete. Además podemos apreciar que el error se acaba estabilizando al rededor de &amp;lt;math&amp;gt;10^{-15}&amp;lt;/math&amp;gt;. Luego podemos concluir que la fórmula de Poisson proporciona una buena aproximación para puntos relativamente alejados de la frontera. &lt;br /&gt;
&lt;br /&gt;
A continuación, atendiendo a la fórmula del error &amp;quot;teórica&amp;quot; dada por el método del trapecio, la cual sigue la siguiente expresión:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;Error:=\left|-\cfrac{f''(\xi)(b-a)^3}{12n^2}\right|, &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
siendo &amp;lt;math&amp;gt;\xi&amp;lt;/math&amp;gt; un valor dentro del intervalo &amp;lt;math&amp;gt;[a,b]&amp;lt;/math&amp;gt;, y n el valor que genera la discretización para la aplicación del método del trapecio. En nuestro caso, &amp;lt;math&amp;gt;[a,b]=[0,2\pi]&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; la función a integrar en la fórmula de Poisson.&lt;br /&gt;
Ahora bien, el código de MatLab presentado al final de la sección implementa un cálculo del error máximo, tomando para cada n el error máximo en la discretización y acumulándolo en la lista &amp;lt;math&amp;gt;error\_max&amp;lt;/math&amp;gt; de tal forma que en la gráfica se presenta una representación del error máximo teórico de la fórmula del trapecio.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: comparacion_errores_ejercicio2.png|400px|miniaturadeimagen|center|Comparación errores con su máximo]]&lt;br /&gt;
&lt;br /&gt;
Como se puede apreciar de manera bastante clara en la gráfica, a medida que aumentan los puntos de la discretización, la cota va disminuyendo. Aún así, se puede apreciar que el error calculado para un punto alejado de la frontera se sigue manteniendo por debajo de dicha cota.&lt;br /&gt;
&lt;br /&gt;
Estudiemos ahora el error cometido en puntos &amp;quot;cercanos&amp;quot; a la frontera. En este caso vamos utilizar una única discretización de 100 puntos de la fórmula del trapecio y puntos que cada vez se acercan más a la frontera. Partiendo del punto &amp;lt;math&amp;gt;x = (r,\theta)=(0.9,\pi/4)&amp;lt;/math&amp;gt; vamos a ir avanzando hacia la frontera con puntos de la forma &amp;lt;math&amp;gt;(r,\theta)=(1-10^{-n}, \pi/4)&amp;lt;/math&amp;gt;. La gráfica entonces resulta ser:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: error_puntoscercanosfrontera_ejercicio2.png|400px|miniaturadeimagen|center|Error de puntos cercanos a la frontera]]&lt;br /&gt;
&lt;br /&gt;
En este caso el error incrementa según los puntos se acercan a la frontera y se acaba estabilizando en &amp;lt;math&amp;gt;-0,3&amp;lt;/math&amp;gt;.&lt;br /&gt;
El código utilizado para dibujar estas gráficas es el siguiente.&lt;br /&gt;
&lt;br /&gt;
{{matlab||codigo=&lt;br /&gt;
% El siguiente código ejecuta todas las gráficas planteadas a lo largo de esta sección&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Definimos el radio de la bola;&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos la función g:&lt;br /&gt;
g =@(theta) (R.^2.*cos(theta).*sin(theta));&lt;br /&gt;
&lt;br /&gt;
% Definimos la solución exacta:&lt;br /&gt;
u_exacta =@(r,theta) (r.^2.*cos(theta).*sin(theta));&lt;br /&gt;
&lt;br /&gt;
% Tomamos el punto r=0.9 y theta=pi/4:&lt;br /&gt;
r_valor=0.9;&lt;br /&gt;
theta_valor=pi/4;&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución u en el punto anterior:&lt;br /&gt;
n=1:1:8;&lt;br /&gt;
error=zeros(1,length(n)); % Inicializamos la matriz que almacena el error&lt;br /&gt;
error_log=zeros(1,length(n)); % Inicializamos la matriz que almacena el error logarítmico&lt;br /&gt;
u_valor=zeros(1,length(n)); % Inicializamos la matriz que almacena la solución de u para distintas discretizaciones del método del trapecio&lt;br /&gt;
for i=1:length(n)&lt;br /&gt;
    s=linspace(0,2*pi,10^(n(i))); % Intervalo de integración&lt;br /&gt;
    u_valor(i)=1/(2*pi).*trapz(s,g(s).*(R^2-r_valor.^2)./(R^2+r_valor.^2-2.*r_valor.*cos(s-theta_valor))); % Solución a través de la fórmula de Poisson&lt;br /&gt;
    &lt;br /&gt;
    % Calculamos el error:&lt;br /&gt;
    error(i)=abs(u_exacta(r_valor,theta_valor)-u_valor(i));&lt;br /&gt;
    % Calculamos el error logarítmico:&lt;br /&gt;
    error_log(i)=log10(error(i));&lt;br /&gt;
end&lt;br /&gt;
% Representamos gráficamente el error logarítmico para el punto r=0.9 y theta=pi/4:&lt;br /&gt;
plot(n,error_log,'o-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(10^n))')&lt;br /&gt;
grid on &lt;br /&gt;
grid minor&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Gráfica del error logarítmico')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Observamos la existencia de un error máximo que nos permita confirmar&lt;br /&gt;
% que los errores calculados anteriormente se encuentran por debajo siempre:&lt;br /&gt;
&lt;br /&gt;
% Calculamos la segunda derivada (requerida por la fórmula):&lt;br /&gt;
syms rr ss thetatheta&lt;br /&gt;
% Definimos de forma simbólica la función a derivar:&lt;br /&gt;
f=rr^2*cos(ss)*sin(ss)/(1+rr^2-2*rr*cos(thetatheta-ss));&lt;br /&gt;
derivada1=diff(f,ss); % Derivamos la función f en función de la variable s&lt;br /&gt;
derivada2=diff(derivada1,ss); % Derivamos la primera derivada en función de la variable s&lt;br /&gt;
% Calculamos el error máximo del método del trapecio:&lt;br /&gt;
nn=1:1:3; % Conforme el número sea más elevado aquí más aumentará el tiempo de compilación del programa.&lt;br /&gt;
error_max=zeros(length(nn),1); % Inicializamos a ceros el vector que almacenará los datos del error máximo del trapecio&lt;br /&gt;
for i=1:length(nn)&lt;br /&gt;
    N=10^i;&lt;br /&gt;
    s=linspace(0,2*pi,N);&lt;br /&gt;
    error_trapz=zeros(N,1); % Inicializamos a ceros el vector que almacenará los datos del error del trapecio para cada n&lt;br /&gt;
    for j=1:N&lt;br /&gt;
        s_valor=s(j);&lt;br /&gt;
        error_trapz(j)=log10(abs(-(2*pi).^3.*subs(derivada2, [rr,ss,thetatheta] ,[r_valor,s_valor,theta_valor])./(12.*(N.^2))));&lt;br /&gt;
    end&lt;br /&gt;
    error_max(i)=max(error_trapz);&lt;br /&gt;
end&lt;br /&gt;
% Representamos gráficamente el error máximo junto con el error calculado&lt;br /&gt;
% anteriormente:&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
plot(nn,error_log(1:length(nn)),'Color','blue')&lt;br /&gt;
plot(nn,error_max,'Color','red')&lt;br /&gt;
hold off&lt;br /&gt;
legend('Error','Error máximo')&lt;br /&gt;
title('Comparación de errores')&lt;br /&gt;
grid on&lt;br /&gt;
grid minor&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('Error')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Fijamos ahora para N=100 (puntos en la fórmula del trapecio).&lt;br /&gt;
% Vamos a calcular el error en los puntos de la forma r=1-10^(-n) y theta=pi/4 y veremos qué ocurre:&lt;br /&gt;
N=100;&lt;br /&gt;
r_valores=zeros(1,N); % Inicializamos vector que almacena los valores de r.&lt;br /&gt;
u_valores_r=zeros(1,N); % Inicializamos el vector que almacena los valores de la solución u para distintos valores de r.&lt;br /&gt;
u_exacta_r=zeros(1,N); % Inicializamos el vector que almacena los valores de la solución u exacta para distintos valores de r.&lt;br /&gt;
error_r=zeros(1,N); % Inicializamos el vector que almacena los errores.&lt;br /&gt;
error_log_r=zeros(1,N); % Inicializamos el vector que almacena los errores logarítmicos.&lt;br /&gt;
% theta_valor=pi/4 es el mismo que hemos usado antes, por lo que no lo volvemos a inicializar.&lt;br /&gt;
% Definimos el vector de integración de la fórmula del trapecio:&lt;br /&gt;
s=linspace(0,2*pi,N);&lt;br /&gt;
for j=1:N&lt;br /&gt;
    r_valores(j)=1-10^(-j);&lt;br /&gt;
    u_valores_r(j)=1/(2*pi).*trapz(s,g(s).*(R^2-r_valores(j).^2)./(R^2+r_valores(j).^2-2.*r_valores(j).*cos(s-theta_valor)));&lt;br /&gt;
    u_exacta_r(j)=u_exacta(r_valores(j),theta_valor);&lt;br /&gt;
    error_r(j)=abs(u_exacta_r(j)-u_valores_r(j));&lt;br /&gt;
    error_log_r(j)=log10(error_r(j));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
plot(1:1:N,error_log_r,'.-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(100))')&lt;br /&gt;
grid on &lt;br /&gt;
grid minor&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Errores en los puntos cercanos a la frontera')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Solución por la serie de Fourier ===&lt;br /&gt;
Una vez estudiada la solución por la fórmula de Poisson, en este apartado calcularemos la solución por serie de Fourier. La obtención de esta solución se basa en una cambio de variable a polares del problema, como el visto previamente, y resolución por separación de variables.  Hacemos esto aplicado al problema anterior en una bola de radio &amp;lt;math&amp;gt; R &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta U=U_{rr}+\frac{1}{r}U_r+\frac{1}{r^2}U_{\theta\theta}=0, r\in(0,R),\theta\in(0,2\pi)\\&lt;br /&gt;
U(R,\theta)=G(\theta)=R^2 sin(\theta)cos(\theta), \theta\in[0,2\pi).&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo cual nos conduce a, &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
U(r, \theta) = \frac{\alpha_{0}}{2}  +   \sum_{k=1}^{n} \left( \alpha_{k} \left(\frac{r}{R} \right)^k cos(k\theta) + \beta_{k} \left(\frac{r}{R} \right)^k sin(k\theta)\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que tiene coeficientes,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\alpha_{0} =\frac{1}{\pi}\int_{-\pi}^{\pi} \cos\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\alpha_{k} =\frac{1}{\pi}\int_{-\pi}^{\pi} cos(\theta) \sin(\theta) \cos\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\beta_{k} =\frac{1}{\pi}\int_{-\pi}^{\pi} cos(\theta) \sin(\theta) \sin\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Sin embargo, todos los coeficientes de Fourier son nulos, salvo por &amp;lt;math&amp;gt; \beta_2=\frac{R^2}{2}&amp;lt;/math&amp;gt;, luego la solución por series de Fourier final es, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}\sin(2\theta)=r^2\cos(\theta)\sin(\theta), r\in [0,R], \theta\in[0,2\pi)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Veamos ahora la gráfica que dibuja esta solución tomando &amp;lt;math&amp;gt; R = 1 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Tresaitana1.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Ecuación de Laplace&lt;br /&gt;
%% Apartado 3&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Definimos el radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% k términos de la serie:&lt;br /&gt;
K=[5 10 100];&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g y la función u exacta:&lt;br /&gt;
g=@(theta) R.^2.*cos(theta).*sin(theta);&lt;br /&gt;
u_exacta=@(r,theta) r.^2.*cos(theta).*sin(theta);&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos de theta y r:&lt;br /&gt;
N=300; % Número de divisiones de los intervalos theta y r.&lt;br /&gt;
Theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
r=linspace(0,R,N); % Intervalo r.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Calculamos los coeficientes de Fourier para distintos k-términos:&lt;br /&gt;
for i=1:length(K)&lt;br /&gt;
    k=K(i); % k-términos de la serie.&lt;br /&gt;
    int=linspace(-pi,pi,k); % Intervalo de integración para los coef de Fourier.&lt;br /&gt;
    a0=1/pi.*integral(g,-pi,pi); % Coeficiente de Fourier a_0 (asociado a 1/2).&lt;br /&gt;
    a=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al coseno.&lt;br /&gt;
    b=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al seno.&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        f_cos=@(theta) g(theta).*cos(j.*theta); % Definimos la función a integrar asociada al coseno.&lt;br /&gt;
        f_sin=@(theta) g(theta).*sin(j.*theta); % Definimos la función a integrar asociada al seno.&lt;br /&gt;
        a(j)=1/pi.*integral(f_cos,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fourier del coseno.&lt;br /&gt;
        b(j)=1/pi.*integral(f_sin,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fouries del seno.&lt;br /&gt;
    end&lt;br /&gt;
    % Calculamos la solución u_k asociada al número de términos de la serie:&lt;br /&gt;
    suma=@(r,theta)0;&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        suma=@(r,theta) suma(r,theta) + a(j).*(r/R).^j.*cos(j.*theta)+b(j).*(r/R).^j.*sin(j.*theta);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['u_' num2str(k) '=@(r,theta) 1/2*a0 + suma(r,theta);']);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
[RR,THETA]=meshgrid(r,Theta);&lt;br /&gt;
figure&lt;br /&gt;
for i=1:length(K)&lt;br /&gt;
    k=K(i);&lt;br /&gt;
    subplot(2,2,i)&lt;br /&gt;
    eval(['surf(RR.*cos(THETA),RR.*sin(THETA),u_' num2str(k) '(RR,THETA),&amp;quot;EdgeColor&amp;quot;,&amp;quot;flat&amp;quot;)'])&lt;br /&gt;
    title(&amp;quot;Solución de u para k=&amp;quot;, num2str(k))&lt;br /&gt;
end&lt;br /&gt;
subplot(2,2,4)&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u_exacta(RR,THETA),&amp;quot;EdgeColor&amp;quot;,&amp;quot;flat&amp;quot;)&lt;br /&gt;
title('Solución exacta')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Errores de la solución por serie de Fourier ====&lt;br /&gt;
Al igual que con la solución dada por la fórmula de Poisson, vamos a comparar la solución calculada con la solución exacta &amp;lt;math&amp;gt;u(x,y)=xy&amp;lt;/math&amp;gt; en la bola de radio 1. Vamos a contrastar las soluciones con 5, 10 y 100 términos con la exacta. Calcularemos el error resultante al aproximar la serie de Fourier y lo representamos gráficamente, mostrando el máximo error en función del número de términos utilizados en una escala logarítmica, es decir, pintaremos la función, &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \log_{10}(error(n)) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; error(n) &amp;lt;/math&amp;gt; es ahora el supremo del error con &amp;lt;math&amp;gt;n &amp;lt;/math&amp;gt;términos. Obetenemos así la siguente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Tresaitana2.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
Podemos apreciar en esta gráfica errores de orden muy pequeño, por lo general, los podemos considerar pequeño. Luego, nos damos cuenta de que, a diferencia de solución por la fórmula de Poisson, esta no nos da problemas en la frontera. Veamos el código utilizado para hacer la gráfica.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% A continuación se calcularán los errores de la aproximación de Fourier en función de los términos:&lt;br /&gt;
KK=0:1:100;&lt;br /&gt;
error_log=zeros(length(KK),1); % Inicializamos el vector donde se almacenarán los errores logarítmicos.&lt;br /&gt;
for i=1:length(KK)&lt;br /&gt;
    k=KK(i);&lt;br /&gt;
    int=linspace(-pi,pi,k); % Intervalo de integración para los coef de Fourier.&lt;br /&gt;
    a0=1/pi.*integral(g,-pi,pi); % Coeficiente de Fourier a_0 (asociado a 1/2).&lt;br /&gt;
    a=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al coseno.&lt;br /&gt;
    b=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al seno.&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        f_cos=@(theta) g(theta).*cos(j.*theta); % Definimos la función a integrar asociada al coseno.&lt;br /&gt;
        f_sin=@(theta) g(theta).*sin(j.*theta); % Definimos la función a integrar asociada al seno.&lt;br /&gt;
        a(j)=1/pi.*integral(f_cos,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fourier del coseno.&lt;br /&gt;
        b(j)=1/pi.*integral(f_sin,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fouries del seno.&lt;br /&gt;
    end&lt;br /&gt;
    % Calculamos la solución u_k asociada al número de términos de la serie:&lt;br /&gt;
    suma=@(r,theta)0;&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        suma=@(r,theta) suma(r,theta) + a(j).*(r/R).^j.*cos(j.*theta)+b(j).*(r/R).^j.*sin(j.*theta);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['u_' num2str(i) '=@(r,theta) 1/2*a0 + suma(r,theta);']);&lt;br /&gt;
    eval(['u=@(r,theta)u_' num2str(i) '(r,theta) ;']);&lt;br /&gt;
    U_exacta=u_exacta(RR,THETA);&lt;br /&gt;
    U_fourier=u(RR,THETA);&lt;br /&gt;
    valores_max=max(U_exacta-U_fourier);&lt;br /&gt;
    sup=max(valores_max,[],'all');&lt;br /&gt;
    error_log(i)=log10(sup);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
plot(KK,error_log)&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Errores supremos frente al número de términos')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(10^n))')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Comportamiento de la solución ===&lt;br /&gt;
&lt;br /&gt;
== Ecuación de Poisson ==&lt;br /&gt;
&lt;br /&gt;
En esta parte del documento se va a proceder a resolver la ecuación de Poisson mediante un nuevo método. En primer lugar, esta ecuación viene dada por  &amp;lt;math&amp;gt; \Delta u = f &amp;lt;/math&amp;gt; siendo &amp;lt;math&amp;gt;u:\mathbb{R}^n \rightarrow \mathbb{R}&amp;lt;/math&amp;gt;y &amp;lt;math&amp;gt; f \in C^2(\mathbb{R})&amp;lt;/math&amp;gt;. Para este estudio se particularizará para n=2 y n=3.&lt;br /&gt;
&lt;br /&gt;
Se comenzará definiendo la solución fundamental de esta ecuación, pues se utilizará posteriormente para calcular el potencial newtoniano o logarítimico. Esta viene dada por &amp;lt;math&amp;gt;  \phi(x) = -\frac{1}{2\pi} log(|x|) &amp;lt;/math&amp;gt; si n=2 y &amp;lt;math&amp;gt;  \phi(x) = \frac{1}{4\pi |x| } &amp;lt;/math&amp;gt; si n=3.&lt;br /&gt;
=== Potencial newtoniano para &amp;lt;math&amp;gt; \mathbb{R}^3&amp;lt;/math&amp;gt; ===&lt;br /&gt;
Supongamos que &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
representa la densidad de una carga contenida en un conjunto compacto dentro del espacio tridimensional &amp;lt;math&amp;gt; \mathbb{R}^3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Entonces, la expresión &amp;lt;math&amp;gt; \phi(x-y)f(y)dy&amp;lt;/math&amp;gt; denota el potencial en el punto x. De esta manera el potencial total viene dado por la siguiente expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\mathbf{x}) = \int_{\mathbb{R}^n} f(\mathbf{y}) \phi(\mathbf{x} - \mathbf{y}) d\mathbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta fórmula se conoce como potencial Newtoniano de f y se aplica sobre funciones que en el infinito tienden de manera rápida a cero.&lt;br /&gt;
&lt;br /&gt;
A su vez, sea &amp;lt;math&amp;gt;f \in C^2(\mathbb{R}^3)&amp;lt;/math&amp;gt; con soporte compacto. Sea &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; el potencial newtoniano de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, definido por el potencial Newtoniano. Entonces, &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; es la única solución en &amp;lt;math&amp;gt;\mathbb{R}^3&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;\Delta u = -f&amp;lt;/math&amp;gt;  que pertenece a &amp;lt;math&amp;gt;C^2(\mathbb{R}^3)&amp;lt;/math&amp;gt; y se anula en el infinito. Es decir, dado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \begin{cases}&lt;br /&gt;
     \Delta u = -f \\&lt;br /&gt;
   u(x) \rightarrow 0  &amp;amp; \text{si } |x| \rightarrow \infty&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
su solución viene dada por el potencial newtoniano que se presenta anteriormente.&lt;br /&gt;
&lt;br /&gt;
=== Potencial logarítmico para &amp;lt;math&amp;gt; \mathbb{R}^2&amp;lt;/math&amp;gt; ===&lt;br /&gt;
Si el problema se presenta en &amp;lt;math&amp;gt; \mathbb{R}^2&amp;lt;/math&amp;gt; el potencial newtoniano se sustituye por el potencial logarítimico:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\mathbf{x}) = -\frac{1}{2\pi}\int_{\mathbb{R}^2}  log|\mathbf{x} - \mathbf{y}|f(\mathbf{y}) d\mathbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta manera, Sea &amp;lt;math&amp;gt;f \in C^2(\mathbb{R}^2)&amp;lt;/math&amp;gt; con soporte compacto, &amp;lt;math&amp;gt;u(\mathbf{x})&amp;lt;/math&amp;gt; es la única solución en &amp;lt;math&amp;gt;\mathbb{R}^2&amp;lt;/math&amp;gt; de:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \begin{cases}&lt;br /&gt;
     \Delta u = -f \\&lt;br /&gt;
   u(x)=-\frac{M}{2\pi} log |x| + O\left(\frac{1}{|x|} \right)  &amp;amp; \text{si } |x| \rightarrow \infty&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M= \int _{\mathbb{R}^2} f(\mathbf y) d\mathbf y&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
A continuación, veremos un ejemplo de lo explicado anteriormente para una correcta comprensión de ello. De esta manera, mediante el potencial logarítmico se aproximará la ecuación de Poisson cuando f sea la función característica de la bola de radio 1 y se estudiará su comportamiento en el infinito.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Para resolver este ejemplo se ha realizado un código en Matlab. La integral se ha simplificado de la siguiente manera:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; -\frac{1}{2\pi}\int_{\partial B_1 0} log|\mathbf{x} - \mathbf{y}| d\mathbf{y} = -\frac{\pi}{4}\frac{1}{2\pi}\int_{-1} ^1 \int_{-1} ^1 log|\mathbf{x} - \mathbf{y}| dx dy &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%aSe divide el dominio de cada variable en 200 puntos. Para y1 e y2 se coge&lt;br /&gt;
%el intervalo [-1,1] pues cuando este fuera de este intervalo la función vale 0 y por tanto la integral se anulará y para x1 y x2 se coge un intervalo muy grande pues la función tiene dominio todo R2.&lt;br /&gt;
i1 = linspace(-1,1,200);&lt;br /&gt;
i2 = linspace(-1,1,200);&lt;br /&gt;
i3 = linspace(-10^4,10^4,200);&lt;br /&gt;
i4 = linspace(-10^4,10^4,200);&lt;br /&gt;
&lt;br /&gt;
% Se define la función f anteriormente obtenida&lt;br /&gt;
f = @(y1, y2, x1, x2) -(pi/4)*(1/(2*pi))*log(sqrt((y1-x1).^2 + (y2-x2).^2));&lt;br /&gt;
&lt;br /&gt;
% Generamos una malla de puntos&lt;br /&gt;
[A, B] = meshgrid(i1, i2);&lt;br /&gt;
[C, D] = meshgrid(i3,i4);&lt;br /&gt;
&lt;br /&gt;
%Creamos una matriz cero donde se irán metiendo los valores que&lt;br /&gt;
%próximamente evaluaremos&lt;br /&gt;
values = zeros(size(A)); &lt;br /&gt;
&lt;br /&gt;
% Se crea el siguiente bucle para obtener los valores que necesitamos para&lt;br /&gt;
% la representación gráfica&lt;br /&gt;
for i = 1:length(i1)&lt;br /&gt;
    for j = 1:length(i2)&lt;br /&gt;
        fnum = @(x, y) f(x, y, i3(i), i4(j)); % Se crea este bucle para ir evaluando f en los distintos puntos (x1,x2)&lt;br /&gt;
        values(i, j) = trapz(i2, trapz(i1, fnum(A, B), 2)); % Evaluar fnum en la malla (A, B) y calcular la integral por el método del trapecio&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Se dibujan todos los puntos obtenidos&lt;br /&gt;
surf(C,D,values)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La representación obtenida es la siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Unoaitana.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación se va a comprobar si la solución se comporta de la manera esperada en el infinito. Tal y como se ha especificado anteriormente el comportamiento asintótico sigue la siguiente función:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x)=-\frac{M}{2\pi} log |x| + O(\frac{1}{|x|})&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
siendo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M= \int _{\mathbb{R}^2} f(\mathbf y) d\mathbf y&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación, se compara esta función con la solución obtenida anteriormente con el fin de observar si se comporta adecuadamente. Se ha creado el siguiente código:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
graf=zeros(length(i1));&lt;br /&gt;
xgraf=zeros(length(i1));&lt;br /&gt;
for i = 1:length(i1)&lt;br /&gt;
        fnum = @(x, y) f(x, y, i3(i), i4(i));&lt;br /&gt;
        &lt;br /&gt;
        graf(i) = trapz(i2, trapz(i1, fnum(A,B), 2));&lt;br /&gt;
        xgraf(i)=sqrt(2*(i3(i)^2));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
hold on&lt;br /&gt;
hol= @(x) -1/2*log(x);&lt;br /&gt;
valy = hol(xgraf);&lt;br /&gt;
% Crear el gráfico de las líneas y los puntos&lt;br /&gt;
hold on&lt;br /&gt;
plot(xgraf, valy, '-','DisplayName','Función asintótica'); &lt;br /&gt;
plot(xgraf, graf, '*','DisplayName','Función obtenida');&lt;br /&gt;
xlabel('Eje x')&lt;br /&gt;
ylabel('Eje y')&lt;br /&gt;
title('Gráfico función asintótica y función obtenida')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Se ha obtenido la siguiente gráfica, siendo la verde la función obtenida y la azul la función asintótica:&lt;br /&gt;
[[Archivo: Dosaitana.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
Tal y como se ve, se observa que el comportamiento es el esperado.&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaciones_de_Laplace_y_de_Poisson&amp;diff=71625</id>
		<title>Ecuaciones de Laplace y de Poisson</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaciones_de_Laplace_y_de_Poisson&amp;diff=71625"/>
				<updated>2024-04-19T18:18:39Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: /* Errores de la fórmula de Poisson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introducción ==&lt;br /&gt;
En este documento, nos centraremos en dos ecuaciones que tienen un amplio uso en diversos ámbitos como electrostática, mecánica de fluidos, física teórica y magnetostática: la ecuación de Laplace y la ecuación de Poisson. &lt;br /&gt;
Ambas ecuaciones las estudiaremos en el plano y las veremos aplicadas en problemas concretos. Veremos las limitaciones que presenta la fórumla de Poisson así como diferentes métodos analíticos para aproximar soluciones, y raíz de esto, analizaremos errores de aproximación. Por último, estudiaremos el comportamiento de soluciones tanto en un dominio dado, utilizando la desigualdad de Harnack, como asintóticamente en infinito.&lt;br /&gt;
 &lt;br /&gt;
 CREO QUE AQUÍ ME FALTAN PUNTOS Y COMAS&lt;br /&gt;
&lt;br /&gt;
== Ecuación de Laplace ==&lt;br /&gt;
La ecuación de Laplace, cuyo nombre nombre honra al distinguido físico-matemático Pierre-Simon Laplace, es una ecuación en derivadas parciales de tipo elíptico. REFERENCIA?&lt;br /&gt;
Construyamos un problema de derivadas parciales a partir de la ecuación de Laplace. La ecuación es,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \Delta u = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
con &amp;lt;math&amp;gt;u:\mathbb{R}^3 \rightarrow \mathbb{R}&amp;lt;/math&amp;gt; como incógnita. Esta ecuación se define en un dominio &amp;lt;math&amp;gt; \Omega &amp;lt;/math&amp;gt;, y en su frontera &amp;lt;math&amp;gt; \partial \Omega &amp;lt;/math&amp;gt; se pueden añadir condiciones de contorno Dirichlet, Neuman o mixtas. En este trabajo nos centraremos en las condiciones de contorno de tipo Dirichlet, las cuales igualan &amp;lt;math&amp;gt; u &amp;lt;/math&amp;gt; a una función específica &amp;lt;math&amp;gt; g &amp;lt;/math&amp;gt;. Con todo esto, llegamos al siguiente problema de derivadas parciales.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  \Omega \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial \Omega &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A fin de comprender mejor este problema, podemos examinar el siguiente ejemplo en concreto. &lt;br /&gt;
&lt;br /&gt;
===== Ejemplo bola unidad =====&lt;br /&gt;
Sea &amp;lt;math&amp;gt; B_1 ⊂ R^2 &amp;lt;/math&amp;gt; la bola unidad centrada en el origen. Planteamos el problema, &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_1 \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
A lo largo de este documento, en lo que tiene que ver con la ecuación de Laplace, visitaremos este ejemplo varias veces.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dentro de la resolución del problema planteado existen varios métodos por los que proceder. En este trabajo estudiaremos dos: la fórmula de Poisson y la serie de Fourier.&lt;br /&gt;
=== Solución por la fórmula de Poisson ===&lt;br /&gt;
Encontrar la solución del problema mediante la fórmula de Poisson viene determinado por el siguiente teorema.&lt;br /&gt;
&lt;br /&gt;
===== Teorema =====&lt;br /&gt;
La solución &amp;lt;math&amp;gt; u \in C^2(B_R \cup C(\overline{B_R}) &amp;lt;/math&amp;gt;del problema &amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_R \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial B_R &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt; donde &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; es una función continua viene dado por la fórmula de Poisson &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\vec{x})=\frac{R^2-|\vec{x}|^2}{w_n R}\int_{\partial B_R}\frac{g(\sigma)}{|\vec{x}-\sigma|^2} d\sigma. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es importante destacar que el denominador &amp;lt;math&amp;gt;|\vec{x}-\sigma|^2 &amp;lt;/math&amp;gt; se anula en la frontera de la bola llevándonos a una indeterminación y haciendo que la integral diverja. Esto también pasa si expresamos la fórmula en coordenadas polares &amp;lt;math&amp;gt;(r, \theta)&amp;lt;/math&amp;gt;. Tomando, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\vec{x} = (x_1, x_2) = (rcos(\theta), rsen(\theta)) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; g(rcos(\theta), rsen(\theta)) = G(\theta)&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
llegamos a la fórmula de Poisson, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; U(r,\theta)=\frac{R^2-r^2}{2\pi R}\int_{0}^{2\pi}\frac{g(s)}{R^2+r^2-2Rrcos(\theta-s)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso, el denominador de la integral también se anula para puntos cercanos a la frontera, concretamente cuando el coseno se hace 1. &lt;br /&gt;
&lt;br /&gt;
Veamos todo esto aplicado a la bola unidad pasado a coordenadas polares,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    U_{rr} + \frac{1}{r} U_r + \frac{1}{r^2} U_{\theta\theta} = 0, &amp;amp; (r, \theta) \in  B_1 \\&lt;br /&gt;
    U(1, \theta) = G(\theta), &amp;amp;   (r, \theta) \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la resolución de este problema vamos a tomar &amp;lt;math&amp;gt;G(\theta) = máx\{0, 1-\frac{2}{\pi} |\theta - \pi|\}&amp;lt;/math&amp;gt; y utilizaremos la fórmula de Poisson en polares tomando &amp;lt;math&amp;gt;R = 1&amp;lt;/math&amp;gt; y calculando la integral de manera aproximada con la fórmula del trapecio. Como hemos visto antes, la fórmula da problemas para puntos cercanos al borde. Esto lleva a una representación irregular de la frontera si dibujamos la solución sin tener en cuenta este problema.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: sol_sin_frontera_ejercicio1.png|400px|miniaturadeimagen|center|Solución del problema de Poisson sin aplicar la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
Es por esto por lo que la condición frontera no es prescindible en el problema. Para estimar &amp;lt;math&amp;gt; U(r,\theta)&amp;lt;/math&amp;gt;, utilizaremos la fórmula de Poisson para puntos ligeramente alejados del borde, y en el propio borde utilizaremos la condición frontera &amp;lt;math&amp;gt;U(R, \theta) = G(\theta)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: sol_ejercicio1.png|400px|miniaturadeimagen|center|Solución del problema de Poisson aplicando la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
En esta nueva gráfica podemos apreciar como la frontera no presenta las irregularidades anteriores. &lt;br /&gt;
Para conseguir estas gráficas hemos implementado el siguiente código en MatLab.&lt;br /&gt;
&lt;br /&gt;
====== Códigos ======&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Este código resuelve el problema planteado con la fórmula de Poisson sin aplicar condición frontera:&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g:&lt;br /&gt;
g=@(theta)max(0, 1-2/pi*abs(theta-pi));&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos r y theta sobre los que vamos a trabajar:&lt;br /&gt;
N=200; % Número de divisiones del intervalo&lt;br /&gt;
r=linspace(0,R,N); % No podemos llegar hasta la frontera&lt;br /&gt;
theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución de u con la fórmula de Poisson:&lt;br /&gt;
NN=100; % División del intervalo de integración.&lt;br /&gt;
s=linspace(0,2*pi,NN); % Intervalo de integración, para el método del trapecio.&lt;br /&gt;
u=zeros(N,N); % Inicializamos la matriz que almacena los valores de la solución.&lt;br /&gt;
for i=1:length(theta)&lt;br /&gt;
    for j=1:length(r) % Calculamos solución a través de la fórmula del trapecio:&lt;br /&gt;
        u(i,j)=1/(2*pi).*trapz(s,g(s).*(R^2-r(j).^2)./(R^2+r(j).^2-2.*r(j).*cos(s-theta(i))));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
% Creamos la malla:&lt;br /&gt;
[RR,THETA]=meshgrid(r,theta);&lt;br /&gt;
figure&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u,'EdgeColor','flat') % Representación gráfica&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('y')&lt;br /&gt;
zlabel('u(x,y)')&lt;br /&gt;
title('Solución de la ecuación de Laplace')&lt;br /&gt;
}}&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Este código resuelve el problema planteado con la fórmula de Poisson aplicando la condición frontera:&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g:&lt;br /&gt;
g=@(theta)max(0, 1-2/pi*abs(theta-pi));&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos r y theta sobre los que vamos a trabajar:&lt;br /&gt;
N=200; % Número de divisiones del intervalo&lt;br /&gt;
r=linspace(0,R-N^(-1),N-1); % No podemos llegar hasta la frontera&lt;br /&gt;
theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución de u con la fórmula de Poisson:&lt;br /&gt;
NN=1000; % División del intervalo de integración.&lt;br /&gt;
s=linspace(0,2*pi,NN); % Intervalo de integración, para el método del trapecio.&lt;br /&gt;
u=zeros(N,N); % Inicializamos la matriz que almacena los valores de la solución.&lt;br /&gt;
for i=1:length(theta)&lt;br /&gt;
    for j=1:length(r) % Calculamos solución a través de la fórmula del trapecio:&lt;br /&gt;
        u(i,j)=1/(2*pi).*trapz(s,g(s).*(R^2-r(j).^2)./(R^2+r(j).^2-2.*r(j).*cos(s-theta(i))));&lt;br /&gt;
    end&lt;br /&gt;
    % Establecemos condiciones frontera (por presentar problemas en esta):&lt;br /&gt;
    u(i,N)=g(theta(i));&lt;br /&gt;
end&lt;br /&gt;
r(N)=1;&lt;br /&gt;
% Creamos la malla:&lt;br /&gt;
[RR,THETA]=meshgrid(r,theta);&lt;br /&gt;
figure&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u,'EdgeColor','flat') % Representación gráfica&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('y')&lt;br /&gt;
zlabel('u(x,y)')&lt;br /&gt;
title('Solución de la ecuación de Laplace')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== Errores de la fórmula de Poisson =====&lt;br /&gt;
Como hemos observado anteriormente, la fórmula de Poisson presenta ciertas dificultades a la hora de aproximar la solución en la frontera, debido a la singularidad inherente de la integral. En este apartado examinaremos estas irregularidades calculando el error de la aproximación frente a la solución exacta.&lt;br /&gt;
&lt;br /&gt;
Volviendo al ejemplo de la bola unidad, esta vez vamos a suponer el problema,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_1 \\&lt;br /&gt;
    u = g(x,y) = xy, &amp;amp;   \text{x} \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que tiene como solución exacta la función armónica &amp;lt;math&amp;gt;u(x,y) = xy&amp;lt;/math&amp;gt;. Tal y como hemos hecho en el apartado anterior, calculamos la solución aproximada utilizando la fórmula de Poisson, la fórmula del trapecio y pasando a coordenadas polares.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    U_{rr} + \frac{1}{r} U_r + \frac{1}{r^2} U_{\theta\theta} = 0, &amp;amp; (r, \theta) \in  B_1 \\&lt;br /&gt;
    U(1,\theta)=G(\theta)=\cos(\theta)\sin(\theta), &amp;amp;   (r, \theta) \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vamos a distinguir entre dos tipos de puntos, aquellos que estén &amp;quot;alejados&amp;quot; de la frontera y aquellos sean inmediatos a esta. &lt;br /&gt;
Primero estudiaremos el error en puntos &amp;quot;alejados&amp;quot; de la frontera. Esto lo hacemos empleando distintas discretizaciones con &amp;lt;math&amp;gt; 10^n &amp;lt;/math&amp;gt; puntos en la fórmula del trapecio. Después, calculamos el error para cada discretización en un punto alejado, en este caso lo hacemos evaluando en &amp;lt;math&amp;gt;x = (r,\theta)=(0.9,\pi/4)&amp;lt;/math&amp;gt;. Posteriormente graficamos el error aplicando la fórmula,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;f(n):=\log_{10}(Error(10^n)), &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Obteniendo así la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: error_puntoalejado_ejercicio2.png|400px|miniaturadeimagen|center|Error de un punto alejado a la frontera]]&lt;br /&gt;
&lt;br /&gt;
Los resultados de esta gráfica cuadran con nuestra intuición, a mayor número de puntos menor es el error que se comete. Además podemos apreciar que el error se acaba estabilizando al rededor de &amp;lt;math&amp;gt;10^{-15}&amp;lt;/math&amp;gt;. Luego podemos concluir que la fórmula de Poisson proporciona una buena aproximación para puntos relativamente alejados de la frontera. &lt;br /&gt;
&lt;br /&gt;
A continuación, atendiendo a la fórmula del error &amp;quot;teórica&amp;quot; dada por el método del trapecio, la cual sigue la siguiente expresión:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;Error:=\left|-\cfrac{f''(\xi)(b-a)^3}{12n^2}\right|, &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
siendo &amp;lt;math&amp;gt;\xi&amp;lt;/math&amp;gt; un valor dentro del intervalo &amp;lt;math&amp;gt;[a,b]&amp;lt;/math&amp;gt;, y n el valor que genera la discretización para la aplicación del método del trapecio. En nuestro caso, &amp;lt;math&amp;gt;[a,b]=[0,2\pi]&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; la función a integrar en la fórmula de Poisson.&lt;br /&gt;
Ahora bien, el código de MatLab presentado al final de la sección implementa un cálculo del error máximo, tomando para cada n el error máximo en la discretización y acumulándolo en la lista &amp;lt;math&amp;gt;error\_max&amp;lt;/math&amp;gt; de tal forma que en la gráfica se presenta una representación del error máximo teórico de la fórmula del trapecio.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: comparacion_errores_ejercicio2.png|400px|miniaturadeimagen|center|Comparación errores con su máximo]]&lt;br /&gt;
&lt;br /&gt;
Estudiemos ahora el error cometido en puntos &amp;quot;cercanos&amp;quot; a la frontera. En este caso vamos utilizar una única discretización de 100 puntos de la fórmula del trapecio y puntos que cada vez se acercan más a la frontera. Partiendo del punto &amp;lt;math&amp;gt;x = (r,\theta)=(0.9,\pi/4)&amp;lt;/math&amp;gt; vamos a ir avanzando hacia la frontera con puntos de la forma &amp;lt;math&amp;gt;(r,\theta)=(1-10^{-n}, \pi/4)&amp;lt;/math&amp;gt;. La gráfica entonces resulta ser:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: error_puntoscercanosfrontera_ejercicio2.png|400px|miniaturadeimagen|center|Error de puntos cercanos a la frontera]]&lt;br /&gt;
&lt;br /&gt;
En este caso el error incrementa según los puntos se acercan a la frontera y se acaba estabilizando en &amp;lt;math&amp;gt;-0,3&amp;lt;/math&amp;gt;.&lt;br /&gt;
El código utilizado para dibujar estas gráficas es el siguiente.&lt;br /&gt;
&lt;br /&gt;
{{matlab||codigo=&lt;br /&gt;
% El siguiente código ejecuta todas las gráficas planteadas a lo largo de esta sección&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Definimos el radio de la bola;&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos la función g:&lt;br /&gt;
g =@(theta) (R.^2.*cos(theta).*sin(theta));&lt;br /&gt;
&lt;br /&gt;
% Definimos la solución exacta:&lt;br /&gt;
u_exacta =@(r,theta) (r.^2.*cos(theta).*sin(theta));&lt;br /&gt;
&lt;br /&gt;
% Tomamos el punto r=0.9 y theta=pi/4:&lt;br /&gt;
r_valor=0.9;&lt;br /&gt;
theta_valor=pi/4;&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución u en el punto anterior:&lt;br /&gt;
n=1:1:8;&lt;br /&gt;
error=zeros(1,length(n)); % Inicializamos la matriz que almacena el error&lt;br /&gt;
error_log=zeros(1,length(n)); % Inicializamos la matriz que almacena el error logarítmico&lt;br /&gt;
u_valor=zeros(1,length(n)); % Inicializamos la matriz que almacena la solución de u para distintas discretizaciones del método del trapecio&lt;br /&gt;
for i=1:length(n)&lt;br /&gt;
    s=linspace(0,2*pi,10^(n(i))); % Intervalo de integración&lt;br /&gt;
    u_valor(i)=1/(2*pi).*trapz(s,g(s).*(R^2-r_valor.^2)./(R^2+r_valor.^2-2.*r_valor.*cos(s-theta_valor))); % Solución a través de la fórmula de Poisson&lt;br /&gt;
    &lt;br /&gt;
    % Calculamos el error:&lt;br /&gt;
    error(i)=abs(u_exacta(r_valor,theta_valor)-u_valor(i));&lt;br /&gt;
    % Calculamos el error logarítmico:&lt;br /&gt;
    error_log(i)=log10(error(i));&lt;br /&gt;
end&lt;br /&gt;
% Representamos gráficamente el error logarítmico para el punto r=0.9 y theta=pi/4:&lt;br /&gt;
plot(n,error_log,'o-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(10^n))')&lt;br /&gt;
grid on &lt;br /&gt;
grid minor&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Gráfica del error logarítmico')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Observamos la existencia de un error máximo que nos permita confirmar&lt;br /&gt;
% que los errores calculados anteriormente se encuentran por debajo siempre:&lt;br /&gt;
&lt;br /&gt;
% Calculamos la segunda derivada (requerida por la fórmula):&lt;br /&gt;
syms rr ss thetatheta&lt;br /&gt;
% Definimos de forma simbólica la función a derivar:&lt;br /&gt;
f=rr^2*cos(ss)*sin(ss)/(1+rr^2-2*rr*cos(thetatheta-ss));&lt;br /&gt;
derivada1=diff(f,ss); % Derivamos la función f en función de la variable s&lt;br /&gt;
derivada2=diff(derivada1,ss); % Derivamos la primera derivada en función de la variable s&lt;br /&gt;
% Calculamos el error máximo del método del trapecio:&lt;br /&gt;
nn=1:1:3; % Conforme el número sea más elevado aquí más aumentará el tiempo de compilación del programa.&lt;br /&gt;
error_max=zeros(length(nn),1); % Inicializamos a ceros el vector que almacenará los datos del error máximo del trapecio&lt;br /&gt;
for i=1:length(nn)&lt;br /&gt;
    N=10^i;&lt;br /&gt;
    s=linspace(0,2*pi,N);&lt;br /&gt;
    error_trapz=zeros(N,1); % Inicializamos a ceros el vector que almacenará los datos del error del trapecio para cada n&lt;br /&gt;
    for j=1:N&lt;br /&gt;
        s_valor=s(j);&lt;br /&gt;
        error_trapz(j)=log10(abs(-(2*pi).^3.*subs(derivada2, [rr,ss,thetatheta] ,[r_valor,s_valor,theta_valor])./(12.*(N.^2))));&lt;br /&gt;
    end&lt;br /&gt;
    error_max(i)=max(error_trapz);&lt;br /&gt;
end&lt;br /&gt;
% Representamos gráficamente el error máximo junto con el error calculado&lt;br /&gt;
% anteriormente:&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
plot(nn,error_log(1:length(nn)),'Color','blue')&lt;br /&gt;
plot(nn,error_max,'Color','red')&lt;br /&gt;
hold off&lt;br /&gt;
legend('Error','Error máximo')&lt;br /&gt;
title('Comparación de errores')&lt;br /&gt;
grid on&lt;br /&gt;
grid minor&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('Error')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Fijamos ahora para N=100 (puntos en la fórmula del trapecio).&lt;br /&gt;
% Vamos a calcular el error en los puntos de la forma r=1-10^(-n) y theta=pi/4 y veremos qué ocurre:&lt;br /&gt;
N=100;&lt;br /&gt;
r_valores=zeros(1,N); % Inicializamos vector que almacena los valores de r.&lt;br /&gt;
u_valores_r=zeros(1,N); % Inicializamos el vector que almacena los valores de la solución u para distintos valores de r.&lt;br /&gt;
u_exacta_r=zeros(1,N); % Inicializamos el vector que almacena los valores de la solución u exacta para distintos valores de r.&lt;br /&gt;
error_r=zeros(1,N); % Inicializamos el vector que almacena los errores.&lt;br /&gt;
error_log_r=zeros(1,N); % Inicializamos el vector que almacena los errores logarítmicos.&lt;br /&gt;
% theta_valor=pi/4 es el mismo que hemos usado antes, por lo que no lo volvemos a inicializar.&lt;br /&gt;
% Definimos el vector de integración de la fórmula del trapecio:&lt;br /&gt;
s=linspace(0,2*pi,N);&lt;br /&gt;
for j=1:N&lt;br /&gt;
    r_valores(j)=1-10^(-j);&lt;br /&gt;
    u_valores_r(j)=1/(2*pi).*trapz(s,g(s).*(R^2-r_valores(j).^2)./(R^2+r_valores(j).^2-2.*r_valores(j).*cos(s-theta_valor)));&lt;br /&gt;
    u_exacta_r(j)=u_exacta(r_valores(j),theta_valor);&lt;br /&gt;
    error_r(j)=abs(u_exacta_r(j)-u_valores_r(j));&lt;br /&gt;
    error_log_r(j)=log10(error_r(j));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
plot(1:1:N,error_log_r,'.-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(100))')&lt;br /&gt;
grid on &lt;br /&gt;
grid minor&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Errores en los puntos cercanos a la frontera')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Solución por la serie de Fourier ===&lt;br /&gt;
Una vez estudiada la solución por la fórmula de Poisson, en este apartado calcularemos la solución por serie de Fourier. La obtención de esta solución se basa en una cambio de variable a polares del problema, como el visto previamente, y resolución por separación de variables.  Hacemos esto aplicado al problema anterior en una bola de radio &amp;lt;math&amp;gt; R &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta U=U_{rr}+\frac{1}{r}U_r+\frac{1}{r^2}U_{\theta\theta}=0, r\in(0,R),\theta\in(0,2\pi)\\&lt;br /&gt;
U(R,\theta)=G(\theta)=R^2 sin(\theta)cos(\theta), \theta\in[0,2\pi).&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo cual nos conduce a, &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
U(r, \theta) = \frac{\alpha_{0}}{2}  +   \sum_{k=1}^{n} \left( \alpha_{k} \left(\frac{r}{R} \right)^k cos(k\theta) + \beta_{k} \left(\frac{r}{R} \right)^k sin(k\theta)\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que tiene coeficientes,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\alpha_{0} =\frac{1}{\pi}\int_{-\pi}^{\pi} \cos\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\alpha_{k} =\frac{1}{\pi}\int_{-\pi}^{\pi} cos(\theta) \sin(\theta) \cos\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\beta_{k} =\frac{1}{\pi}\int_{-\pi}^{\pi} cos(\theta) \sin(\theta) \sin\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Sin embargo, todos los coeficientes de Fourier son nulos, salvo por &amp;lt;math&amp;gt; \beta_2=\frac{R^2}{2}&amp;lt;/math&amp;gt;, luego la solución por series de Fourier final es, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}\sin(2\theta)=r^2\cos(\theta)\sin(\theta), r\in [0,R], \theta\in[0,2\pi)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Veamos ahora la gráfica que dibuja esta solución tomando &amp;lt;math&amp;gt; R = 1 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Tresaitana1.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Ecuación de Laplace&lt;br /&gt;
%% Apartado 3&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Definimos el radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% k términos de la serie:&lt;br /&gt;
K=[5 10 100];&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g y la función u exacta:&lt;br /&gt;
g=@(theta) R.^2.*cos(theta).*sin(theta);&lt;br /&gt;
u_exacta=@(r,theta) r.^2.*cos(theta).*sin(theta);&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos de theta y r:&lt;br /&gt;
N=300; % Número de divisiones de los intervalos theta y r.&lt;br /&gt;
Theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
r=linspace(0,R,N); % Intervalo r.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Calculamos los coeficientes de Fourier para distintos k-términos:&lt;br /&gt;
for i=1:length(K)&lt;br /&gt;
    k=K(i); % k-términos de la serie.&lt;br /&gt;
    int=linspace(-pi,pi,k); % Intervalo de integración para los coef de Fourier.&lt;br /&gt;
    a0=1/pi.*integral(g,-pi,pi); % Coeficiente de Fourier a_0 (asociado a 1/2).&lt;br /&gt;
    a=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al coseno.&lt;br /&gt;
    b=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al seno.&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        f_cos=@(theta) g(theta).*cos(j.*theta); % Definimos la función a integrar asociada al coseno.&lt;br /&gt;
        f_sin=@(theta) g(theta).*sin(j.*theta); % Definimos la función a integrar asociada al seno.&lt;br /&gt;
        a(j)=1/pi.*integral(f_cos,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fourier del coseno.&lt;br /&gt;
        b(j)=1/pi.*integral(f_sin,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fouries del seno.&lt;br /&gt;
    end&lt;br /&gt;
    % Calculamos la solución u_k asociada al número de términos de la serie:&lt;br /&gt;
    suma=@(r,theta)0;&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        suma=@(r,theta) suma(r,theta) + a(j).*(r/R).^j.*cos(j.*theta)+b(j).*(r/R).^j.*sin(j.*theta);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['u_' num2str(k) '=@(r,theta) 1/2*a0 + suma(r,theta);']);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
[RR,THETA]=meshgrid(r,Theta);&lt;br /&gt;
figure&lt;br /&gt;
for i=1:length(K)&lt;br /&gt;
    k=K(i);&lt;br /&gt;
    subplot(2,2,i)&lt;br /&gt;
    eval(['surf(RR.*cos(THETA),RR.*sin(THETA),u_' num2str(k) '(RR,THETA),&amp;quot;EdgeColor&amp;quot;,&amp;quot;flat&amp;quot;)'])&lt;br /&gt;
    title(&amp;quot;Solución de u para k=&amp;quot;, num2str(k))&lt;br /&gt;
end&lt;br /&gt;
subplot(2,2,4)&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u_exacta(RR,THETA),&amp;quot;EdgeColor&amp;quot;,&amp;quot;flat&amp;quot;)&lt;br /&gt;
title('Solución exacta')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Errores de la solución por serie de Fourier ====&lt;br /&gt;
Al igual que con la solución dada por la fórmula de Poisson, vamos a comparar la solución calculada con la solución exacta &amp;lt;math&amp;gt;u(x,y)=xy&amp;lt;/math&amp;gt; en la bola de radio 1. Vamos a contrastar las soluciones con 5, 10 y 100 términos con la exacta. Calcularemos el error resultante al aproximar la serie de Fourier y lo representamos gráficamente, mostrando el máximo error en función del número de términos utilizados en una escala logarítmica, es decir, pintaremos la función, &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \log_{10}(error(n)) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; error(n) &amp;lt;/math&amp;gt; es ahora el supremo del error con &amp;lt;math&amp;gt;n &amp;lt;/math&amp;gt;términos. Obetenemos así la siguente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Tresaitana2.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
Podemos apreciar en esta gráfica errores de orden muy pequeño, por lo general, los podemos considerar pequeño. Luego, nos damos cuenta de que, a diferencia de solución por la fórmula de Poisson, esta no nos da problemas en la frontera. Veamos el código utilizado para hacer la gráfica.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% A continuación se calcularán los errores de la aproximación de Fourier en función de los términos:&lt;br /&gt;
KK=0:1:100;&lt;br /&gt;
error_log=zeros(length(KK),1); % Inicializamos el vector donde se almacenarán los errores logarítmicos.&lt;br /&gt;
for i=1:length(KK)&lt;br /&gt;
    k=KK(i);&lt;br /&gt;
    int=linspace(-pi,pi,k); % Intervalo de integración para los coef de Fourier.&lt;br /&gt;
    a0=1/pi.*integral(g,-pi,pi); % Coeficiente de Fourier a_0 (asociado a 1/2).&lt;br /&gt;
    a=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al coseno.&lt;br /&gt;
    b=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al seno.&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        f_cos=@(theta) g(theta).*cos(j.*theta); % Definimos la función a integrar asociada al coseno.&lt;br /&gt;
        f_sin=@(theta) g(theta).*sin(j.*theta); % Definimos la función a integrar asociada al seno.&lt;br /&gt;
        a(j)=1/pi.*integral(f_cos,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fourier del coseno.&lt;br /&gt;
        b(j)=1/pi.*integral(f_sin,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fouries del seno.&lt;br /&gt;
    end&lt;br /&gt;
    % Calculamos la solución u_k asociada al número de términos de la serie:&lt;br /&gt;
    suma=@(r,theta)0;&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        suma=@(r,theta) suma(r,theta) + a(j).*(r/R).^j.*cos(j.*theta)+b(j).*(r/R).^j.*sin(j.*theta);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['u_' num2str(i) '=@(r,theta) 1/2*a0 + suma(r,theta);']);&lt;br /&gt;
    eval(['u=@(r,theta)u_' num2str(i) '(r,theta) ;']);&lt;br /&gt;
    U_exacta=u_exacta(RR,THETA);&lt;br /&gt;
    U_fourier=u(RR,THETA);&lt;br /&gt;
    valores_max=max(U_exacta-U_fourier);&lt;br /&gt;
    sup=max(valores_max,[],'all');&lt;br /&gt;
    error_log(i)=log10(sup);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
plot(KK,error_log)&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Errores supremos frente al número de términos')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(10^n))')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Comportamiento de la solución ===&lt;br /&gt;
&lt;br /&gt;
== Ecuación de Poisson ==&lt;br /&gt;
&lt;br /&gt;
En esta parte del documento se va a proceder a resolver la ecuación de Poisson mediante un nuevo método. En primer lugar, esta ecuación viene dada por  &amp;lt;math&amp;gt; \Delta u = f &amp;lt;/math&amp;gt; siendo &amp;lt;math&amp;gt;u:\mathbb{R}^n \rightarrow \mathbb{R}&amp;lt;/math&amp;gt;y &amp;lt;math&amp;gt; f \in C^2(\mathbb{R})&amp;lt;/math&amp;gt;. Para este estudio se particularizará para n=2 y n=3.&lt;br /&gt;
&lt;br /&gt;
Se comenzará definiendo la solución fundamental de esta ecuación, pues se utilizará posteriormente para calcular el potencial newtoniano o logarítimico. Esta viene dada por &amp;lt;math&amp;gt;  \phi(x) = -\frac{1}{2\pi} log(|x|) &amp;lt;/math&amp;gt; si n=2 y &amp;lt;math&amp;gt;  \phi(x) = \frac{1}{4\pi |x| } &amp;lt;/math&amp;gt; si n=3.&lt;br /&gt;
=== Potencial newtoniano para &amp;lt;math&amp;gt; \mathbb{R}^3&amp;lt;/math&amp;gt; ===&lt;br /&gt;
Supongamos que &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
representa la densidad de una carga contenida en un conjunto compacto dentro del espacio tridimensional &amp;lt;math&amp;gt; \mathbb{R}^3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Entonces, la expresión &amp;lt;math&amp;gt; \phi(x-y)f(y)dy&amp;lt;/math&amp;gt; denota el potencial en el punto x. De esta manera el potencial total viene dado por la siguiente expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\mathbf{x}) = \int_{\mathbb{R}^n} f(\mathbf{y}) \phi(\mathbf{x} - \mathbf{y}) d\mathbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta fórmula se conoce como potencial Newtoniano de f y se aplica sobre funciones que en el infinito tienden de manera rápida a cero.&lt;br /&gt;
&lt;br /&gt;
A su vez, sea &amp;lt;math&amp;gt;f \in C^2(\mathbb{R}^3)&amp;lt;/math&amp;gt; con soporte compacto. Sea &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; el potencial newtoniano de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, definido por el potencial Newtoniano. Entonces, &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; es la única solución en &amp;lt;math&amp;gt;\mathbb{R}^3&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;\Delta u = -f&amp;lt;/math&amp;gt;  que pertenece a &amp;lt;math&amp;gt;C^2(\mathbb{R}^3)&amp;lt;/math&amp;gt; y se anula en el infinito. Es decir, dado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \begin{cases}&lt;br /&gt;
     \Delta u = -f \\&lt;br /&gt;
   u(x) \rightarrow 0  &amp;amp; \text{si } |x| \rightarrow \infty&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
su solución viene dada por el potencial newtoniano que se presenta anteriormente.&lt;br /&gt;
&lt;br /&gt;
=== Potencial logarítmico para &amp;lt;math&amp;gt; \mathbb{R}^2&amp;lt;/math&amp;gt; ===&lt;br /&gt;
Si el problema se presenta en &amp;lt;math&amp;gt; \mathbb{R}^2&amp;lt;/math&amp;gt; el potencial newtoniano se sustituye por el potencial logarítimico:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\mathbf{x}) = -\frac{1}{2\pi}\int_{\mathbb{R}^2}  log|\mathbf{x} - \mathbf{y}|f(\mathbf{y}) d\mathbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta manera, Sea &amp;lt;math&amp;gt;f \in C^2(\mathbb{R}^2)&amp;lt;/math&amp;gt; con soporte compacto, &amp;lt;math&amp;gt;u(\mathbf{x})&amp;lt;/math&amp;gt; es la única solución en &amp;lt;math&amp;gt;\mathbb{R}^2&amp;lt;/math&amp;gt; de:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \begin{cases}&lt;br /&gt;
     \Delta u = -f \\&lt;br /&gt;
   u(x)=-\frac{M}{2\pi} log |x| + O\left(\frac{1}{|x|} \right)  &amp;amp; \text{si } |x| \rightarrow \infty&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M= \int _{\mathbb{R}^2} f(\mathbf y) d\mathbf y&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
A continuación, veremos un ejemplo de lo explicado anteriormente para una correcta comprensión de ello. De esta manera, mediante el potencial logarítmico se aproximará la ecuación de Poisson cuando f sea la función característica de la bola de radio 1 y se estudiará su comportamiento en el infinito.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Para resolver este ejemplo se ha realizado un código en Matlab. La integral se ha simplificado de la siguiente manera:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; -\frac{1}{2\pi}\int_{\partial B_1 0} log|\mathbf{x} - \mathbf{y}| d\mathbf{y} = -\frac{\pi}{4}\frac{1}{2\pi}\int_{-1} ^1 \int_{-1} ^1 log|\mathbf{x} - \mathbf{y}| dx dy &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%aSe divide el dominio de cada variable en 200 puntos. Para y1 e y2 se coge&lt;br /&gt;
%el intervalo [-1,1] pues cuando este fuera de este intervalo la función vale 0 y por tanto la integral se anulará y para x1 y x2 se coge un intervalo muy grande pues la función tiene dominio todo R2.&lt;br /&gt;
i1 = linspace(-1,1,200);&lt;br /&gt;
i2 = linspace(-1,1,200);&lt;br /&gt;
i3 = linspace(-10^4,10^4,200);&lt;br /&gt;
i4 = linspace(-10^4,10^4,200);&lt;br /&gt;
&lt;br /&gt;
% Se define la función f anteriormente obtenida&lt;br /&gt;
f = @(y1, y2, x1, x2) -(pi/4)*(1/(2*pi))*log(sqrt((y1-x1).^2 + (y2-x2).^2));&lt;br /&gt;
&lt;br /&gt;
% Generamos una malla de puntos&lt;br /&gt;
[A, B] = meshgrid(i1, i2);&lt;br /&gt;
[C, D] = meshgrid(i3,i4);&lt;br /&gt;
&lt;br /&gt;
%Creamos una matriz cero donde se irán metiendo los valores que&lt;br /&gt;
%próximamente evaluaremos&lt;br /&gt;
values = zeros(size(A)); &lt;br /&gt;
&lt;br /&gt;
% Se crea el siguiente bucle para obtener los valores que necesitamos para&lt;br /&gt;
% la representación gráfica&lt;br /&gt;
for i = 1:length(i1)&lt;br /&gt;
    for j = 1:length(i2)&lt;br /&gt;
        fnum = @(x, y) f(x, y, i3(i), i4(j)); % Se crea este bucle para ir evaluando f en los distintos puntos (x1,x2)&lt;br /&gt;
        values(i, j) = trapz(i2, trapz(i1, fnum(A, B), 2)); % Evaluar fnum en la malla (A, B) y calcular la integral por el método del trapecio&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Se dibujan todos los puntos obtenidos&lt;br /&gt;
surf(C,D,values)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La representación obtenida es la siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Unoaitana.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación se va a comprobar si la solución se comporta de la manera esperada en el infinito. Tal y como se ha especificado anteriormente el comportamiento asintótico sigue la siguiente función:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x)=-\frac{M}{2\pi} log |x| + O(\frac{1}{|x|})&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
siendo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M= \int _{\mathbb{R}^2} f(\mathbf y) d\mathbf y&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación, se compara esta función con la solución obtenida anteriormente con el fin de observar si se comporta adecuadamente. Se ha creado el siguiente código:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
graf=zeros(length(i1));&lt;br /&gt;
xgraf=zeros(length(i1));&lt;br /&gt;
for i = 1:length(i1)&lt;br /&gt;
        fnum = @(x, y) f(x, y, i3(i), i4(i));&lt;br /&gt;
        &lt;br /&gt;
        graf(i) = trapz(i2, trapz(i1, fnum(A,B), 2));&lt;br /&gt;
        xgraf(i)=sqrt(2*(i3(i)^2));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
hold on&lt;br /&gt;
hol= @(x) -1/2*log(x);&lt;br /&gt;
valy = hol(xgraf);&lt;br /&gt;
% Crear el gráfico de las líneas y los puntos&lt;br /&gt;
hold on&lt;br /&gt;
plot(xgraf, valy, '-','DisplayName','Función asintótica'); &lt;br /&gt;
plot(xgraf, graf, '*','DisplayName','Función obtenida');&lt;br /&gt;
xlabel('Eje x')&lt;br /&gt;
ylabel('Eje y')&lt;br /&gt;
title('Gráfico función asintótica y función obtenida')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Se ha obtenido la siguiente gráfica, siendo la verde la función obtenida y la azul la función asintótica:&lt;br /&gt;
[[Archivo: Dosaitana.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
Tal y como se ve, se observa que el comportamiento es el esperado.&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaciones_de_Laplace_y_de_Poisson&amp;diff=71623</id>
		<title>Ecuaciones de Laplace y de Poisson</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaciones_de_Laplace_y_de_Poisson&amp;diff=71623"/>
				<updated>2024-04-19T18:18:01Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: /* Errores de la fórmula de Poisson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introducción ==&lt;br /&gt;
En este documento, nos centraremos en dos ecuaciones que tienen un amplio uso en diversos ámbitos como electrostática, mecánica de fluidos, física teórica y magnetostática: la ecuación de Laplace y la ecuación de Poisson. &lt;br /&gt;
Ambas ecuaciones las estudiaremos en el plano y las veremos aplicadas en problemas concretos. Veremos las limitaciones que presenta la fórumla de Poisson así como diferentes métodos analíticos para aproximar soluciones, y raíz de esto, analizaremos errores de aproximación. Por último, estudiaremos el comportamiento de soluciones tanto en un dominio dado, utilizando la desigualdad de Harnack, como asintóticamente en infinito.&lt;br /&gt;
 &lt;br /&gt;
 CREO QUE AQUÍ ME FALTAN PUNTOS Y COMAS&lt;br /&gt;
&lt;br /&gt;
== Ecuación de Laplace ==&lt;br /&gt;
La ecuación de Laplace, cuyo nombre nombre honra al distinguido físico-matemático Pierre-Simon Laplace, es una ecuación en derivadas parciales de tipo elíptico. REFERENCIA?&lt;br /&gt;
Construyamos un problema de derivadas parciales a partir de la ecuación de Laplace. La ecuación es,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \Delta u = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
con &amp;lt;math&amp;gt;u:\mathbb{R}^3 \rightarrow \mathbb{R}&amp;lt;/math&amp;gt; como incógnita. Esta ecuación se define en un dominio &amp;lt;math&amp;gt; \Omega &amp;lt;/math&amp;gt;, y en su frontera &amp;lt;math&amp;gt; \partial \Omega &amp;lt;/math&amp;gt; se pueden añadir condiciones de contorno Dirichlet, Neuman o mixtas. En este trabajo nos centraremos en las condiciones de contorno de tipo Dirichlet, las cuales igualan &amp;lt;math&amp;gt; u &amp;lt;/math&amp;gt; a una función específica &amp;lt;math&amp;gt; g &amp;lt;/math&amp;gt;. Con todo esto, llegamos al siguiente problema de derivadas parciales.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  \Omega \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial \Omega &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A fin de comprender mejor este problema, podemos examinar el siguiente ejemplo en concreto. &lt;br /&gt;
&lt;br /&gt;
===== Ejemplo bola unidad =====&lt;br /&gt;
Sea &amp;lt;math&amp;gt; B_1 ⊂ R^2 &amp;lt;/math&amp;gt; la bola unidad centrada en el origen. Planteamos el problema, &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_1 \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
A lo largo de este documento, en lo que tiene que ver con la ecuación de Laplace, visitaremos este ejemplo varias veces.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dentro de la resolución del problema planteado existen varios métodos por los que proceder. En este trabajo estudiaremos dos: la fórmula de Poisson y la serie de Fourier.&lt;br /&gt;
=== Solución por la fórmula de Poisson ===&lt;br /&gt;
Encontrar la solución del problema mediante la fórmula de Poisson viene determinado por el siguiente teorema.&lt;br /&gt;
&lt;br /&gt;
===== Teorema =====&lt;br /&gt;
La solución &amp;lt;math&amp;gt; u \in C^2(B_R \cup C(\overline{B_R}) &amp;lt;/math&amp;gt;del problema &amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_R \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial B_R &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt; donde &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; es una función continua viene dado por la fórmula de Poisson &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\vec{x})=\frac{R^2-|\vec{x}|^2}{w_n R}\int_{\partial B_R}\frac{g(\sigma)}{|\vec{x}-\sigma|^2} d\sigma. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es importante destacar que el denominador &amp;lt;math&amp;gt;|\vec{x}-\sigma|^2 &amp;lt;/math&amp;gt; se anula en la frontera de la bola llevándonos a una indeterminación y haciendo que la integral diverja. Esto también pasa si expresamos la fórmula en coordenadas polares &amp;lt;math&amp;gt;(r, \theta)&amp;lt;/math&amp;gt;. Tomando, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\vec{x} = (x_1, x_2) = (rcos(\theta), rsen(\theta)) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; g(rcos(\theta), rsen(\theta)) = G(\theta)&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
llegamos a la fórmula de Poisson, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; U(r,\theta)=\frac{R^2-r^2}{2\pi R}\int_{0}^{2\pi}\frac{g(s)}{R^2+r^2-2Rrcos(\theta-s)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso, el denominador de la integral también se anula para puntos cercanos a la frontera, concretamente cuando el coseno se hace 1. &lt;br /&gt;
&lt;br /&gt;
Veamos todo esto aplicado a la bola unidad pasado a coordenadas polares,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    U_{rr} + \frac{1}{r} U_r + \frac{1}{r^2} U_{\theta\theta} = 0, &amp;amp; (r, \theta) \in  B_1 \\&lt;br /&gt;
    U(1, \theta) = G(\theta), &amp;amp;   (r, \theta) \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la resolución de este problema vamos a tomar &amp;lt;math&amp;gt;G(\theta) = máx\{0, 1-\frac{2}{\pi} |\theta - \pi|\}&amp;lt;/math&amp;gt; y utilizaremos la fórmula de Poisson en polares tomando &amp;lt;math&amp;gt;R = 1&amp;lt;/math&amp;gt; y calculando la integral de manera aproximada con la fórmula del trapecio. Como hemos visto antes, la fórmula da problemas para puntos cercanos al borde. Esto lleva a una representación irregular de la frontera si dibujamos la solución sin tener en cuenta este problema.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: sol_sin_frontera_ejercicio1.png|400px|miniaturadeimagen|center|Solución del problema de Poisson sin aplicar la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
Es por esto por lo que la condición frontera no es prescindible en el problema. Para estimar &amp;lt;math&amp;gt; U(r,\theta)&amp;lt;/math&amp;gt;, utilizaremos la fórmula de Poisson para puntos ligeramente alejados del borde, y en el propio borde utilizaremos la condición frontera &amp;lt;math&amp;gt;U(R, \theta) = G(\theta)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: sol_ejercicio1.png|400px|miniaturadeimagen|center|Solución del problema de Poisson aplicando la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
En esta nueva gráfica podemos apreciar como la frontera no presenta las irregularidades anteriores. &lt;br /&gt;
Para conseguir estas gráficas hemos implementado el siguiente código en MatLab.&lt;br /&gt;
&lt;br /&gt;
====== Códigos ======&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Este código resuelve el problema planteado con la fórmula de Poisson sin aplicar condición frontera:&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g:&lt;br /&gt;
g=@(theta)max(0, 1-2/pi*abs(theta-pi));&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos r y theta sobre los que vamos a trabajar:&lt;br /&gt;
N=200; % Número de divisiones del intervalo&lt;br /&gt;
r=linspace(0,R,N); % No podemos llegar hasta la frontera&lt;br /&gt;
theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución de u con la fórmula de Poisson:&lt;br /&gt;
NN=100; % División del intervalo de integración.&lt;br /&gt;
s=linspace(0,2*pi,NN); % Intervalo de integración, para el método del trapecio.&lt;br /&gt;
u=zeros(N,N); % Inicializamos la matriz que almacena los valores de la solución.&lt;br /&gt;
for i=1:length(theta)&lt;br /&gt;
    for j=1:length(r) % Calculamos solución a través de la fórmula del trapecio:&lt;br /&gt;
        u(i,j)=1/(2*pi).*trapz(s,g(s).*(R^2-r(j).^2)./(R^2+r(j).^2-2.*r(j).*cos(s-theta(i))));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
% Creamos la malla:&lt;br /&gt;
[RR,THETA]=meshgrid(r,theta);&lt;br /&gt;
figure&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u,'EdgeColor','flat') % Representación gráfica&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('y')&lt;br /&gt;
zlabel('u(x,y)')&lt;br /&gt;
title('Solución de la ecuación de Laplace')&lt;br /&gt;
}}&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Este código resuelve el problema planteado con la fórmula de Poisson aplicando la condición frontera:&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g:&lt;br /&gt;
g=@(theta)max(0, 1-2/pi*abs(theta-pi));&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos r y theta sobre los que vamos a trabajar:&lt;br /&gt;
N=200; % Número de divisiones del intervalo&lt;br /&gt;
r=linspace(0,R-N^(-1),N-1); % No podemos llegar hasta la frontera&lt;br /&gt;
theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución de u con la fórmula de Poisson:&lt;br /&gt;
NN=1000; % División del intervalo de integración.&lt;br /&gt;
s=linspace(0,2*pi,NN); % Intervalo de integración, para el método del trapecio.&lt;br /&gt;
u=zeros(N,N); % Inicializamos la matriz que almacena los valores de la solución.&lt;br /&gt;
for i=1:length(theta)&lt;br /&gt;
    for j=1:length(r) % Calculamos solución a través de la fórmula del trapecio:&lt;br /&gt;
        u(i,j)=1/(2*pi).*trapz(s,g(s).*(R^2-r(j).^2)./(R^2+r(j).^2-2.*r(j).*cos(s-theta(i))));&lt;br /&gt;
    end&lt;br /&gt;
    % Establecemos condiciones frontera (por presentar problemas en esta):&lt;br /&gt;
    u(i,N)=g(theta(i));&lt;br /&gt;
end&lt;br /&gt;
r(N)=1;&lt;br /&gt;
% Creamos la malla:&lt;br /&gt;
[RR,THETA]=meshgrid(r,theta);&lt;br /&gt;
figure&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u,'EdgeColor','flat') % Representación gráfica&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('y')&lt;br /&gt;
zlabel('u(x,y)')&lt;br /&gt;
title('Solución de la ecuación de Laplace')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== Errores de la fórmula de Poisson =====&lt;br /&gt;
Como hemos observado anteriormente, la fórmula de Poisson presenta ciertas dificultades a la hora de aproximar la solución en la frontera, debido a la singularidad inherente de la integral. En este apartado examinaremos estas irregularidades calculando el error de la aproximación frente a la solución exacta.&lt;br /&gt;
&lt;br /&gt;
Volviendo al ejemplo de la bola unidad, esta vez vamos a suponer el problema,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_1 \\&lt;br /&gt;
    u = g(x,y) = xy, &amp;amp;   \text{x} \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que tiene como solución exacta la función armónica &amp;lt;math&amp;gt;u(x,y) = xy&amp;lt;/math&amp;gt;. Tal y como hemos hecho en el apartado anterior, calculamos la solución aproximada utilizando la fórmula de Poisson, la fórmula del trapecio y pasando a coordenadas polares.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    U_{rr} + \frac{1}{r} U_r + \frac{1}{r^2} U_{\theta\theta} = 0, &amp;amp; (r, \theta) \in  B_1 \\&lt;br /&gt;
    U(1,\theta)=G(\theta)=\cos(\theta)\sin(\theta), &amp;amp;   (r, \theta) \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vamos a distinguir entre dos tipos de puntos, aquellos que estén &amp;quot;alejados&amp;quot; de la frontera y aquellos sean inmediatos a esta. &lt;br /&gt;
Primero estudiaremos el error en puntos &amp;quot;alejados&amp;quot; de la frontera. Esto lo hacemos empleando distintas discretizaciones con &amp;lt;math&amp;gt; 10^n &amp;lt;/math&amp;gt; puntos en la fórmula del trapecio. Después, calculamos el error para cada discretización en un punto alejado, en este caso lo hacemos evaluando en &amp;lt;math&amp;gt;x = (r,\theta)=(0.9,\pi/4)&amp;lt;/math&amp;gt;. Posteriormente graficamos el error aplicando la fórmula,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;f(n):=\log_{10}(Error(10^n)), &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Obteniendo así la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: error_puntoalejado_ejercicio2.png|400px|miniaturadeimagen|center|Error de un punto alejado a la frontera]]&lt;br /&gt;
&lt;br /&gt;
Los resultados de esta gráfica cuadran con nuestra intuición, a mayor número de puntos menor es el error que se comete. Además podemos apreciar que el error se acaba estabilizando al rededor de &amp;lt;math&amp;gt;10^{-15}&amp;lt;/math&amp;gt;. Luego podemos concluir que la fórmula de Poisson proporciona una buena aproximación para puntos relativamente alejados de la frontera. &lt;br /&gt;
&lt;br /&gt;
A continuación, atendiendo a la fórmula del error &amp;quot;teórica&amp;quot; dada por el método del trapecio, la cual sigue la siguiente expresión:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;Error:=\left|-\cfrac{f''(\xi)(b-a)^3}{12n^2}\right|, &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
siendo &amp;lt;math&amp;gt;\xi&amp;lt;/math&amp;gt; un valor dentro del intervalo &amp;lt;math&amp;gt;[a,b]&amp;lt;/math&amp;gt;, y n el valor que genera la discretización para la aplicación del método del trapecio. En nuestro caso, &amp;lt;math&amp;gt;[a,b]=[0,2\pi]&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; la función a integrar en la fórmula de Poisson.&lt;br /&gt;
Ahora bien, el código de MatLab presentado al final de la sección implementa un cálculo del error máximo, tomando para cada n el error máximo en la discretización y acumulándolo en la lista &amp;lt;math&amp;gt;error_max&amp;lt;/math&amp;gt; de tal forma que en la gráfica se presenta una representación del error máximo teórico de la fórmula del trapecio.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: comparacion_errores_ejercicio2.png|400px|miniaturadeimagen|center|Comparación errores con su máximo]]&lt;br /&gt;
&lt;br /&gt;
Estudiemos ahora el error cometido en puntos &amp;quot;cercanos&amp;quot; a la frontera. En este caso vamos utilizar una única discretización de 100 puntos de la fórmula del trapecio y puntos que cada vez se acercan más a la frontera. Partiendo del punto &amp;lt;math&amp;gt;x = (r,\theta)=(0.9,\pi/4)&amp;lt;/math&amp;gt; vamos a ir avanzando hacia la frontera con puntos de la forma &amp;lt;math&amp;gt;(r,\theta)=(1-10^{-n}, \pi/4)&amp;lt;/math&amp;gt;. La gráfica entonces resulta ser:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: error_puntoscercanosfrontera_ejercicio2.png|400px|miniaturadeimagen|center|Error de puntos cercanos a la frontera]]&lt;br /&gt;
&lt;br /&gt;
En este caso el error incrementa según los puntos se acercan a la frontera y se acaba estabilizando en &amp;lt;math&amp;gt;-0,3&amp;lt;/math&amp;gt;.&lt;br /&gt;
El código utilizado para dibujar estas gráficas es el siguiente.&lt;br /&gt;
&lt;br /&gt;
{{matlab||codigo=&lt;br /&gt;
% El siguiente código ejecuta todas las gráficas planteadas a lo largo de esta sección&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Definimos el radio de la bola;&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos la función g:&lt;br /&gt;
g =@(theta) (R.^2.*cos(theta).*sin(theta));&lt;br /&gt;
&lt;br /&gt;
% Definimos la solución exacta:&lt;br /&gt;
u_exacta =@(r,theta) (r.^2.*cos(theta).*sin(theta));&lt;br /&gt;
&lt;br /&gt;
% Tomamos el punto r=0.9 y theta=pi/4:&lt;br /&gt;
r_valor=0.9;&lt;br /&gt;
theta_valor=pi/4;&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución u en el punto anterior:&lt;br /&gt;
n=1:1:8;&lt;br /&gt;
error=zeros(1,length(n)); % Inicializamos la matriz que almacena el error&lt;br /&gt;
error_log=zeros(1,length(n)); % Inicializamos la matriz que almacena el error logarítmico&lt;br /&gt;
u_valor=zeros(1,length(n)); % Inicializamos la matriz que almacena la solución de u para distintas discretizaciones del método del trapecio&lt;br /&gt;
for i=1:length(n)&lt;br /&gt;
    s=linspace(0,2*pi,10^(n(i))); % Intervalo de integración&lt;br /&gt;
    u_valor(i)=1/(2*pi).*trapz(s,g(s).*(R^2-r_valor.^2)./(R^2+r_valor.^2-2.*r_valor.*cos(s-theta_valor))); % Solución a través de la fórmula de Poisson&lt;br /&gt;
    &lt;br /&gt;
    % Calculamos el error:&lt;br /&gt;
    error(i)=abs(u_exacta(r_valor,theta_valor)-u_valor(i));&lt;br /&gt;
    % Calculamos el error logarítmico:&lt;br /&gt;
    error_log(i)=log10(error(i));&lt;br /&gt;
end&lt;br /&gt;
% Representamos gráficamente el error logarítmico para el punto r=0.9 y theta=pi/4:&lt;br /&gt;
plot(n,error_log,'o-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(10^n))')&lt;br /&gt;
grid on &lt;br /&gt;
grid minor&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Gráfica del error logarítmico')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Observamos la existencia de un error máximo que nos permita confirmar&lt;br /&gt;
% que los errores calculados anteriormente se encuentran por debajo siempre:&lt;br /&gt;
&lt;br /&gt;
% Calculamos la segunda derivada (requerida por la fórmula):&lt;br /&gt;
syms rr ss thetatheta&lt;br /&gt;
% Definimos de forma simbólica la función a derivar:&lt;br /&gt;
f=rr^2*cos(ss)*sin(ss)/(1+rr^2-2*rr*cos(thetatheta-ss));&lt;br /&gt;
derivada1=diff(f,ss); % Derivamos la función f en función de la variable s&lt;br /&gt;
derivada2=diff(derivada1,ss); % Derivamos la primera derivada en función de la variable s&lt;br /&gt;
% Calculamos el error máximo del método del trapecio:&lt;br /&gt;
nn=1:1:3; % Conforme el número sea más elevado aquí más aumentará el tiempo de compilación del programa.&lt;br /&gt;
error_max=zeros(length(nn),1); % Inicializamos a ceros el vector que almacenará los datos del error máximo del trapecio&lt;br /&gt;
for i=1:length(nn)&lt;br /&gt;
    N=10^i;&lt;br /&gt;
    s=linspace(0,2*pi,N);&lt;br /&gt;
    error_trapz=zeros(N,1); % Inicializamos a ceros el vector que almacenará los datos del error del trapecio para cada n&lt;br /&gt;
    for j=1:N&lt;br /&gt;
        s_valor=s(j);&lt;br /&gt;
        error_trapz(j)=log10(abs(-(2*pi).^3.*subs(derivada2, [rr,ss,thetatheta] ,[r_valor,s_valor,theta_valor])./(12.*(N.^2))));&lt;br /&gt;
    end&lt;br /&gt;
    error_max(i)=max(error_trapz);&lt;br /&gt;
end&lt;br /&gt;
% Representamos gráficamente el error máximo junto con el error calculado&lt;br /&gt;
% anteriormente:&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
plot(nn,error_log(1:length(nn)),'Color','blue')&lt;br /&gt;
plot(nn,error_max,'Color','red')&lt;br /&gt;
hold off&lt;br /&gt;
legend('Error','Error máximo')&lt;br /&gt;
title('Comparación de errores')&lt;br /&gt;
grid on&lt;br /&gt;
grid minor&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('Error')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Fijamos ahora para N=100 (puntos en la fórmula del trapecio).&lt;br /&gt;
% Vamos a calcular el error en los puntos de la forma r=1-10^(-n) y theta=pi/4 y veremos qué ocurre:&lt;br /&gt;
N=100;&lt;br /&gt;
r_valores=zeros(1,N); % Inicializamos vector que almacena los valores de r.&lt;br /&gt;
u_valores_r=zeros(1,N); % Inicializamos el vector que almacena los valores de la solución u para distintos valores de r.&lt;br /&gt;
u_exacta_r=zeros(1,N); % Inicializamos el vector que almacena los valores de la solución u exacta para distintos valores de r.&lt;br /&gt;
error_r=zeros(1,N); % Inicializamos el vector que almacena los errores.&lt;br /&gt;
error_log_r=zeros(1,N); % Inicializamos el vector que almacena los errores logarítmicos.&lt;br /&gt;
% theta_valor=pi/4 es el mismo que hemos usado antes, por lo que no lo volvemos a inicializar.&lt;br /&gt;
% Definimos el vector de integración de la fórmula del trapecio:&lt;br /&gt;
s=linspace(0,2*pi,N);&lt;br /&gt;
for j=1:N&lt;br /&gt;
    r_valores(j)=1-10^(-j);&lt;br /&gt;
    u_valores_r(j)=1/(2*pi).*trapz(s,g(s).*(R^2-r_valores(j).^2)./(R^2+r_valores(j).^2-2.*r_valores(j).*cos(s-theta_valor)));&lt;br /&gt;
    u_exacta_r(j)=u_exacta(r_valores(j),theta_valor);&lt;br /&gt;
    error_r(j)=abs(u_exacta_r(j)-u_valores_r(j));&lt;br /&gt;
    error_log_r(j)=log10(error_r(j));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
plot(1:1:N,error_log_r,'.-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(100))')&lt;br /&gt;
grid on &lt;br /&gt;
grid minor&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Errores en los puntos cercanos a la frontera')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Solución por la serie de Fourier ===&lt;br /&gt;
Una vez estudiada la solución por la fórmula de Poisson, en este apartado calcularemos la solución por serie de Fourier. La obtención de esta solución se basa en una cambio de variable a polares del problema, como el visto previamente, y resolución por separación de variables.  Hacemos esto aplicado al problema anterior en una bola de radio &amp;lt;math&amp;gt; R &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta U=U_{rr}+\frac{1}{r}U_r+\frac{1}{r^2}U_{\theta\theta}=0, r\in(0,R),\theta\in(0,2\pi)\\&lt;br /&gt;
U(R,\theta)=G(\theta)=R^2 sin(\theta)cos(\theta), \theta\in[0,2\pi).&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo cual nos conduce a, &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
U(r, \theta) = \frac{\alpha_{0}}{2}  +   \sum_{k=1}^{n} \left( \alpha_{k} \left(\frac{r}{R} \right)^k cos(k\theta) + \beta_{k} \left(\frac{r}{R} \right)^k sin(k\theta)\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que tiene coeficientes,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\alpha_{0} =\frac{1}{\pi}\int_{-\pi}^{\pi} \cos\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\alpha_{k} =\frac{1}{\pi}\int_{-\pi}^{\pi} cos(\theta) \sin(\theta) \cos\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\beta_{k} =\frac{1}{\pi}\int_{-\pi}^{\pi} cos(\theta) \sin(\theta) \sin\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Sin embargo, todos los coeficientes de Fourier son nulos, salvo por &amp;lt;math&amp;gt; \beta_2=\frac{R^2}{2}&amp;lt;/math&amp;gt;, luego la solución por series de Fourier final es, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}\sin(2\theta)=r^2\cos(\theta)\sin(\theta), r\in [0,R], \theta\in[0,2\pi)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Veamos ahora la gráfica que dibuja esta solución tomando &amp;lt;math&amp;gt; R = 1 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Tresaitana1.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Ecuación de Laplace&lt;br /&gt;
%% Apartado 3&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Definimos el radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% k términos de la serie:&lt;br /&gt;
K=[5 10 100];&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g y la función u exacta:&lt;br /&gt;
g=@(theta) R.^2.*cos(theta).*sin(theta);&lt;br /&gt;
u_exacta=@(r,theta) r.^2.*cos(theta).*sin(theta);&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos de theta y r:&lt;br /&gt;
N=300; % Número de divisiones de los intervalos theta y r.&lt;br /&gt;
Theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
r=linspace(0,R,N); % Intervalo r.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Calculamos los coeficientes de Fourier para distintos k-términos:&lt;br /&gt;
for i=1:length(K)&lt;br /&gt;
    k=K(i); % k-términos de la serie.&lt;br /&gt;
    int=linspace(-pi,pi,k); % Intervalo de integración para los coef de Fourier.&lt;br /&gt;
    a0=1/pi.*integral(g,-pi,pi); % Coeficiente de Fourier a_0 (asociado a 1/2).&lt;br /&gt;
    a=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al coseno.&lt;br /&gt;
    b=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al seno.&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        f_cos=@(theta) g(theta).*cos(j.*theta); % Definimos la función a integrar asociada al coseno.&lt;br /&gt;
        f_sin=@(theta) g(theta).*sin(j.*theta); % Definimos la función a integrar asociada al seno.&lt;br /&gt;
        a(j)=1/pi.*integral(f_cos,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fourier del coseno.&lt;br /&gt;
        b(j)=1/pi.*integral(f_sin,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fouries del seno.&lt;br /&gt;
    end&lt;br /&gt;
    % Calculamos la solución u_k asociada al número de términos de la serie:&lt;br /&gt;
    suma=@(r,theta)0;&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        suma=@(r,theta) suma(r,theta) + a(j).*(r/R).^j.*cos(j.*theta)+b(j).*(r/R).^j.*sin(j.*theta);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['u_' num2str(k) '=@(r,theta) 1/2*a0 + suma(r,theta);']);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
[RR,THETA]=meshgrid(r,Theta);&lt;br /&gt;
figure&lt;br /&gt;
for i=1:length(K)&lt;br /&gt;
    k=K(i);&lt;br /&gt;
    subplot(2,2,i)&lt;br /&gt;
    eval(['surf(RR.*cos(THETA),RR.*sin(THETA),u_' num2str(k) '(RR,THETA),&amp;quot;EdgeColor&amp;quot;,&amp;quot;flat&amp;quot;)'])&lt;br /&gt;
    title(&amp;quot;Solución de u para k=&amp;quot;, num2str(k))&lt;br /&gt;
end&lt;br /&gt;
subplot(2,2,4)&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u_exacta(RR,THETA),&amp;quot;EdgeColor&amp;quot;,&amp;quot;flat&amp;quot;)&lt;br /&gt;
title('Solución exacta')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Errores de la solución por serie de Fourier ====&lt;br /&gt;
Al igual que con la solución dada por la fórmula de Poisson, vamos a comparar la solución calculada con la solución exacta &amp;lt;math&amp;gt;u(x,y)=xy&amp;lt;/math&amp;gt; en la bola de radio 1. Vamos a contrastar las soluciones con 5, 10 y 100 términos con la exacta. Calcularemos el error resultante al aproximar la serie de Fourier y lo representamos gráficamente, mostrando el máximo error en función del número de términos utilizados en una escala logarítmica, es decir, pintaremos la función, &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \log_{10}(error(n)) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; error(n) &amp;lt;/math&amp;gt; es ahora el supremo del error con &amp;lt;math&amp;gt;n &amp;lt;/math&amp;gt;términos. Obetenemos así la siguente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Tresaitana2.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
Podemos apreciar en esta gráfica errores de orden muy pequeño, por lo general, los podemos considerar pequeño. Luego, nos damos cuenta de que, a diferencia de solución por la fórmula de Poisson, esta no nos da problemas en la frontera. Veamos el código utilizado para hacer la gráfica.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% A continuación se calcularán los errores de la aproximación de Fourier en función de los términos:&lt;br /&gt;
KK=0:1:100;&lt;br /&gt;
error_log=zeros(length(KK),1); % Inicializamos el vector donde se almacenarán los errores logarítmicos.&lt;br /&gt;
for i=1:length(KK)&lt;br /&gt;
    k=KK(i);&lt;br /&gt;
    int=linspace(-pi,pi,k); % Intervalo de integración para los coef de Fourier.&lt;br /&gt;
    a0=1/pi.*integral(g,-pi,pi); % Coeficiente de Fourier a_0 (asociado a 1/2).&lt;br /&gt;
    a=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al coseno.&lt;br /&gt;
    b=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al seno.&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        f_cos=@(theta) g(theta).*cos(j.*theta); % Definimos la función a integrar asociada al coseno.&lt;br /&gt;
        f_sin=@(theta) g(theta).*sin(j.*theta); % Definimos la función a integrar asociada al seno.&lt;br /&gt;
        a(j)=1/pi.*integral(f_cos,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fourier del coseno.&lt;br /&gt;
        b(j)=1/pi.*integral(f_sin,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fouries del seno.&lt;br /&gt;
    end&lt;br /&gt;
    % Calculamos la solución u_k asociada al número de términos de la serie:&lt;br /&gt;
    suma=@(r,theta)0;&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        suma=@(r,theta) suma(r,theta) + a(j).*(r/R).^j.*cos(j.*theta)+b(j).*(r/R).^j.*sin(j.*theta);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['u_' num2str(i) '=@(r,theta) 1/2*a0 + suma(r,theta);']);&lt;br /&gt;
    eval(['u=@(r,theta)u_' num2str(i) '(r,theta) ;']);&lt;br /&gt;
    U_exacta=u_exacta(RR,THETA);&lt;br /&gt;
    U_fourier=u(RR,THETA);&lt;br /&gt;
    valores_max=max(U_exacta-U_fourier);&lt;br /&gt;
    sup=max(valores_max,[],'all');&lt;br /&gt;
    error_log(i)=log10(sup);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
plot(KK,error_log)&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Errores supremos frente al número de términos')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(10^n))')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Comportamiento de la solución ===&lt;br /&gt;
&lt;br /&gt;
== Ecuación de Poisson ==&lt;br /&gt;
&lt;br /&gt;
En esta parte del documento se va a proceder a resolver la ecuación de Poisson mediante un nuevo método. En primer lugar, esta ecuación viene dada por  &amp;lt;math&amp;gt; \Delta u = f &amp;lt;/math&amp;gt; siendo &amp;lt;math&amp;gt;u:\mathbb{R}^n \rightarrow \mathbb{R}&amp;lt;/math&amp;gt;y &amp;lt;math&amp;gt; f \in C^2(\mathbb{R})&amp;lt;/math&amp;gt;. Para este estudio se particularizará para n=2 y n=3.&lt;br /&gt;
&lt;br /&gt;
Se comenzará definiendo la solución fundamental de esta ecuación, pues se utilizará posteriormente para calcular el potencial newtoniano o logarítimico. Esta viene dada por &amp;lt;math&amp;gt;  \phi(x) = -\frac{1}{2\pi} log(|x|) &amp;lt;/math&amp;gt; si n=2 y &amp;lt;math&amp;gt;  \phi(x) = \frac{1}{4\pi |x| } &amp;lt;/math&amp;gt; si n=3.&lt;br /&gt;
=== Potencial newtoniano para &amp;lt;math&amp;gt; \mathbb{R}^3&amp;lt;/math&amp;gt; ===&lt;br /&gt;
Supongamos que &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
representa la densidad de una carga contenida en un conjunto compacto dentro del espacio tridimensional &amp;lt;math&amp;gt; \mathbb{R}^3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Entonces, la expresión &amp;lt;math&amp;gt; \phi(x-y)f(y)dy&amp;lt;/math&amp;gt; denota el potencial en el punto x. De esta manera el potencial total viene dado por la siguiente expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\mathbf{x}) = \int_{\mathbb{R}^n} f(\mathbf{y}) \phi(\mathbf{x} - \mathbf{y}) d\mathbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta fórmula se conoce como potencial Newtoniano de f y se aplica sobre funciones que en el infinito tienden de manera rápida a cero.&lt;br /&gt;
&lt;br /&gt;
A su vez, sea &amp;lt;math&amp;gt;f \in C^2(\mathbb{R}^3)&amp;lt;/math&amp;gt; con soporte compacto. Sea &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; el potencial newtoniano de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, definido por el potencial Newtoniano. Entonces, &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; es la única solución en &amp;lt;math&amp;gt;\mathbb{R}^3&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;\Delta u = -f&amp;lt;/math&amp;gt;  que pertenece a &amp;lt;math&amp;gt;C^2(\mathbb{R}^3)&amp;lt;/math&amp;gt; y se anula en el infinito. Es decir, dado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \begin{cases}&lt;br /&gt;
     \Delta u = -f \\&lt;br /&gt;
   u(x) \rightarrow 0  &amp;amp; \text{si } |x| \rightarrow \infty&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
su solución viene dada por el potencial newtoniano que se presenta anteriormente.&lt;br /&gt;
&lt;br /&gt;
=== Potencial logarítmico para &amp;lt;math&amp;gt; \mathbb{R}^2&amp;lt;/math&amp;gt; ===&lt;br /&gt;
Si el problema se presenta en &amp;lt;math&amp;gt; \mathbb{R}^2&amp;lt;/math&amp;gt; el potencial newtoniano se sustituye por el potencial logarítimico:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\mathbf{x}) = -\frac{1}{2\pi}\int_{\mathbb{R}^2}  log|\mathbf{x} - \mathbf{y}|f(\mathbf{y}) d\mathbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta manera, Sea &amp;lt;math&amp;gt;f \in C^2(\mathbb{R}^2)&amp;lt;/math&amp;gt; con soporte compacto, &amp;lt;math&amp;gt;u(\mathbf{x})&amp;lt;/math&amp;gt; es la única solución en &amp;lt;math&amp;gt;\mathbb{R}^2&amp;lt;/math&amp;gt; de:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \begin{cases}&lt;br /&gt;
     \Delta u = -f \\&lt;br /&gt;
   u(x)=-\frac{M}{2\pi} log |x| + O\left(\frac{1}{|x|} \right)  &amp;amp; \text{si } |x| \rightarrow \infty&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M= \int _{\mathbb{R}^2} f(\mathbf y) d\mathbf y&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
A continuación, veremos un ejemplo de lo explicado anteriormente para una correcta comprensión de ello. De esta manera, mediante el potencial logarítmico se aproximará la ecuación de Poisson cuando f sea la función característica de la bola de radio 1 y se estudiará su comportamiento en el infinito.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Para resolver este ejemplo se ha realizado un código en Matlab. La integral se ha simplificado de la siguiente manera:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; -\frac{1}{2\pi}\int_{\partial B_1 0} log|\mathbf{x} - \mathbf{y}| d\mathbf{y} = -\frac{\pi}{4}\frac{1}{2\pi}\int_{-1} ^1 \int_{-1} ^1 log|\mathbf{x} - \mathbf{y}| dx dy &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%aSe divide el dominio de cada variable en 200 puntos. Para y1 e y2 se coge&lt;br /&gt;
%el intervalo [-1,1] pues cuando este fuera de este intervalo la función vale 0 y por tanto la integral se anulará y para x1 y x2 se coge un intervalo muy grande pues la función tiene dominio todo R2.&lt;br /&gt;
i1 = linspace(-1,1,200);&lt;br /&gt;
i2 = linspace(-1,1,200);&lt;br /&gt;
i3 = linspace(-10^4,10^4,200);&lt;br /&gt;
i4 = linspace(-10^4,10^4,200);&lt;br /&gt;
&lt;br /&gt;
% Se define la función f anteriormente obtenida&lt;br /&gt;
f = @(y1, y2, x1, x2) -(pi/4)*(1/(2*pi))*log(sqrt((y1-x1).^2 + (y2-x2).^2));&lt;br /&gt;
&lt;br /&gt;
% Generamos una malla de puntos&lt;br /&gt;
[A, B] = meshgrid(i1, i2);&lt;br /&gt;
[C, D] = meshgrid(i3,i4);&lt;br /&gt;
&lt;br /&gt;
%Creamos una matriz cero donde se irán metiendo los valores que&lt;br /&gt;
%próximamente evaluaremos&lt;br /&gt;
values = zeros(size(A)); &lt;br /&gt;
&lt;br /&gt;
% Se crea el siguiente bucle para obtener los valores que necesitamos para&lt;br /&gt;
% la representación gráfica&lt;br /&gt;
for i = 1:length(i1)&lt;br /&gt;
    for j = 1:length(i2)&lt;br /&gt;
        fnum = @(x, y) f(x, y, i3(i), i4(j)); % Se crea este bucle para ir evaluando f en los distintos puntos (x1,x2)&lt;br /&gt;
        values(i, j) = trapz(i2, trapz(i1, fnum(A, B), 2)); % Evaluar fnum en la malla (A, B) y calcular la integral por el método del trapecio&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Se dibujan todos los puntos obtenidos&lt;br /&gt;
surf(C,D,values)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La representación obtenida es la siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Unoaitana.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación se va a comprobar si la solución se comporta de la manera esperada en el infinito. Tal y como se ha especificado anteriormente el comportamiento asintótico sigue la siguiente función:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x)=-\frac{M}{2\pi} log |x| + O(\frac{1}{|x|})&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
siendo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M= \int _{\mathbb{R}^2} f(\mathbf y) d\mathbf y&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación, se compara esta función con la solución obtenida anteriormente con el fin de observar si se comporta adecuadamente. Se ha creado el siguiente código:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
graf=zeros(length(i1));&lt;br /&gt;
xgraf=zeros(length(i1));&lt;br /&gt;
for i = 1:length(i1)&lt;br /&gt;
        fnum = @(x, y) f(x, y, i3(i), i4(i));&lt;br /&gt;
        &lt;br /&gt;
        graf(i) = trapz(i2, trapz(i1, fnum(A,B), 2));&lt;br /&gt;
        xgraf(i)=sqrt(2*(i3(i)^2));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
hold on&lt;br /&gt;
hol= @(x) -1/2*log(x);&lt;br /&gt;
valy = hol(xgraf);&lt;br /&gt;
% Crear el gráfico de las líneas y los puntos&lt;br /&gt;
hold on&lt;br /&gt;
plot(xgraf, valy, '-','DisplayName','Función asintótica'); &lt;br /&gt;
plot(xgraf, graf, '*','DisplayName','Función obtenida');&lt;br /&gt;
xlabel('Eje x')&lt;br /&gt;
ylabel('Eje y')&lt;br /&gt;
title('Gráfico función asintótica y función obtenida')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Se ha obtenido la siguiente gráfica, siendo la verde la función obtenida y la azul la función asintótica:&lt;br /&gt;
[[Archivo: Dosaitana.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
Tal y como se ve, se observa que el comportamiento es el esperado.&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaciones_de_Laplace_y_de_Poisson&amp;diff=71622</id>
		<title>Ecuaciones de Laplace y de Poisson</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaciones_de_Laplace_y_de_Poisson&amp;diff=71622"/>
				<updated>2024-04-19T18:17:36Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: /* Errores de la fórmula de Poisson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introducción ==&lt;br /&gt;
En este documento, nos centraremos en dos ecuaciones que tienen un amplio uso en diversos ámbitos como electrostática, mecánica de fluidos, física teórica y magnetostática: la ecuación de Laplace y la ecuación de Poisson. &lt;br /&gt;
Ambas ecuaciones las estudiaremos en el plano y las veremos aplicadas en problemas concretos. Veremos las limitaciones que presenta la fórumla de Poisson así como diferentes métodos analíticos para aproximar soluciones, y raíz de esto, analizaremos errores de aproximación. Por último, estudiaremos el comportamiento de soluciones tanto en un dominio dado, utilizando la desigualdad de Harnack, como asintóticamente en infinito.&lt;br /&gt;
 &lt;br /&gt;
 CREO QUE AQUÍ ME FALTAN PUNTOS Y COMAS&lt;br /&gt;
&lt;br /&gt;
== Ecuación de Laplace ==&lt;br /&gt;
La ecuación de Laplace, cuyo nombre nombre honra al distinguido físico-matemático Pierre-Simon Laplace, es una ecuación en derivadas parciales de tipo elíptico. REFERENCIA?&lt;br /&gt;
Construyamos un problema de derivadas parciales a partir de la ecuación de Laplace. La ecuación es,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \Delta u = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
con &amp;lt;math&amp;gt;u:\mathbb{R}^3 \rightarrow \mathbb{R}&amp;lt;/math&amp;gt; como incógnita. Esta ecuación se define en un dominio &amp;lt;math&amp;gt; \Omega &amp;lt;/math&amp;gt;, y en su frontera &amp;lt;math&amp;gt; \partial \Omega &amp;lt;/math&amp;gt; se pueden añadir condiciones de contorno Dirichlet, Neuman o mixtas. En este trabajo nos centraremos en las condiciones de contorno de tipo Dirichlet, las cuales igualan &amp;lt;math&amp;gt; u &amp;lt;/math&amp;gt; a una función específica &amp;lt;math&amp;gt; g &amp;lt;/math&amp;gt;. Con todo esto, llegamos al siguiente problema de derivadas parciales.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  \Omega \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial \Omega &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A fin de comprender mejor este problema, podemos examinar el siguiente ejemplo en concreto. &lt;br /&gt;
&lt;br /&gt;
===== Ejemplo bola unidad =====&lt;br /&gt;
Sea &amp;lt;math&amp;gt; B_1 ⊂ R^2 &amp;lt;/math&amp;gt; la bola unidad centrada en el origen. Planteamos el problema, &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_1 \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
A lo largo de este documento, en lo que tiene que ver con la ecuación de Laplace, visitaremos este ejemplo varias veces.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dentro de la resolución del problema planteado existen varios métodos por los que proceder. En este trabajo estudiaremos dos: la fórmula de Poisson y la serie de Fourier.&lt;br /&gt;
=== Solución por la fórmula de Poisson ===&lt;br /&gt;
Encontrar la solución del problema mediante la fórmula de Poisson viene determinado por el siguiente teorema.&lt;br /&gt;
&lt;br /&gt;
===== Teorema =====&lt;br /&gt;
La solución &amp;lt;math&amp;gt; u \in C^2(B_R \cup C(\overline{B_R}) &amp;lt;/math&amp;gt;del problema &amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_R \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial B_R &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt; donde &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; es una función continua viene dado por la fórmula de Poisson &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\vec{x})=\frac{R^2-|\vec{x}|^2}{w_n R}\int_{\partial B_R}\frac{g(\sigma)}{|\vec{x}-\sigma|^2} d\sigma. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es importante destacar que el denominador &amp;lt;math&amp;gt;|\vec{x}-\sigma|^2 &amp;lt;/math&amp;gt; se anula en la frontera de la bola llevándonos a una indeterminación y haciendo que la integral diverja. Esto también pasa si expresamos la fórmula en coordenadas polares &amp;lt;math&amp;gt;(r, \theta)&amp;lt;/math&amp;gt;. Tomando, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\vec{x} = (x_1, x_2) = (rcos(\theta), rsen(\theta)) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; g(rcos(\theta), rsen(\theta)) = G(\theta)&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
llegamos a la fórmula de Poisson, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; U(r,\theta)=\frac{R^2-r^2}{2\pi R}\int_{0}^{2\pi}\frac{g(s)}{R^2+r^2-2Rrcos(\theta-s)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso, el denominador de la integral también se anula para puntos cercanos a la frontera, concretamente cuando el coseno se hace 1. &lt;br /&gt;
&lt;br /&gt;
Veamos todo esto aplicado a la bola unidad pasado a coordenadas polares,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    U_{rr} + \frac{1}{r} U_r + \frac{1}{r^2} U_{\theta\theta} = 0, &amp;amp; (r, \theta) \in  B_1 \\&lt;br /&gt;
    U(1, \theta) = G(\theta), &amp;amp;   (r, \theta) \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la resolución de este problema vamos a tomar &amp;lt;math&amp;gt;G(\theta) = máx\{0, 1-\frac{2}{\pi} |\theta - \pi|\}&amp;lt;/math&amp;gt; y utilizaremos la fórmula de Poisson en polares tomando &amp;lt;math&amp;gt;R = 1&amp;lt;/math&amp;gt; y calculando la integral de manera aproximada con la fórmula del trapecio. Como hemos visto antes, la fórmula da problemas para puntos cercanos al borde. Esto lleva a una representación irregular de la frontera si dibujamos la solución sin tener en cuenta este problema.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: sol_sin_frontera_ejercicio1.png|400px|miniaturadeimagen|center|Solución del problema de Poisson sin aplicar la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
Es por esto por lo que la condición frontera no es prescindible en el problema. Para estimar &amp;lt;math&amp;gt; U(r,\theta)&amp;lt;/math&amp;gt;, utilizaremos la fórmula de Poisson para puntos ligeramente alejados del borde, y en el propio borde utilizaremos la condición frontera &amp;lt;math&amp;gt;U(R, \theta) = G(\theta)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: sol_ejercicio1.png|400px|miniaturadeimagen|center|Solución del problema de Poisson aplicando la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
En esta nueva gráfica podemos apreciar como la frontera no presenta las irregularidades anteriores. &lt;br /&gt;
Para conseguir estas gráficas hemos implementado el siguiente código en MatLab.&lt;br /&gt;
&lt;br /&gt;
====== Códigos ======&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Este código resuelve el problema planteado con la fórmula de Poisson sin aplicar condición frontera:&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g:&lt;br /&gt;
g=@(theta)max(0, 1-2/pi*abs(theta-pi));&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos r y theta sobre los que vamos a trabajar:&lt;br /&gt;
N=200; % Número de divisiones del intervalo&lt;br /&gt;
r=linspace(0,R,N); % No podemos llegar hasta la frontera&lt;br /&gt;
theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución de u con la fórmula de Poisson:&lt;br /&gt;
NN=100; % División del intervalo de integración.&lt;br /&gt;
s=linspace(0,2*pi,NN); % Intervalo de integración, para el método del trapecio.&lt;br /&gt;
u=zeros(N,N); % Inicializamos la matriz que almacena los valores de la solución.&lt;br /&gt;
for i=1:length(theta)&lt;br /&gt;
    for j=1:length(r) % Calculamos solución a través de la fórmula del trapecio:&lt;br /&gt;
        u(i,j)=1/(2*pi).*trapz(s,g(s).*(R^2-r(j).^2)./(R^2+r(j).^2-2.*r(j).*cos(s-theta(i))));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
% Creamos la malla:&lt;br /&gt;
[RR,THETA]=meshgrid(r,theta);&lt;br /&gt;
figure&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u,'EdgeColor','flat') % Representación gráfica&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('y')&lt;br /&gt;
zlabel('u(x,y)')&lt;br /&gt;
title('Solución de la ecuación de Laplace')&lt;br /&gt;
}}&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Este código resuelve el problema planteado con la fórmula de Poisson aplicando la condición frontera:&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g:&lt;br /&gt;
g=@(theta)max(0, 1-2/pi*abs(theta-pi));&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos r y theta sobre los que vamos a trabajar:&lt;br /&gt;
N=200; % Número de divisiones del intervalo&lt;br /&gt;
r=linspace(0,R-N^(-1),N-1); % No podemos llegar hasta la frontera&lt;br /&gt;
theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución de u con la fórmula de Poisson:&lt;br /&gt;
NN=1000; % División del intervalo de integración.&lt;br /&gt;
s=linspace(0,2*pi,NN); % Intervalo de integración, para el método del trapecio.&lt;br /&gt;
u=zeros(N,N); % Inicializamos la matriz que almacena los valores de la solución.&lt;br /&gt;
for i=1:length(theta)&lt;br /&gt;
    for j=1:length(r) % Calculamos solución a través de la fórmula del trapecio:&lt;br /&gt;
        u(i,j)=1/(2*pi).*trapz(s,g(s).*(R^2-r(j).^2)./(R^2+r(j).^2-2.*r(j).*cos(s-theta(i))));&lt;br /&gt;
    end&lt;br /&gt;
    % Establecemos condiciones frontera (por presentar problemas en esta):&lt;br /&gt;
    u(i,N)=g(theta(i));&lt;br /&gt;
end&lt;br /&gt;
r(N)=1;&lt;br /&gt;
% Creamos la malla:&lt;br /&gt;
[RR,THETA]=meshgrid(r,theta);&lt;br /&gt;
figure&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u,'EdgeColor','flat') % Representación gráfica&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('y')&lt;br /&gt;
zlabel('u(x,y)')&lt;br /&gt;
title('Solución de la ecuación de Laplace')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== Errores de la fórmula de Poisson =====&lt;br /&gt;
Como hemos observado anteriormente, la fórmula de Poisson presenta ciertas dificultades a la hora de aproximar la solución en la frontera, debido a la singularidad inherente de la integral. En este apartado examinaremos estas irregularidades calculando el error de la aproximación frente a la solución exacta.&lt;br /&gt;
&lt;br /&gt;
Volviendo al ejemplo de la bola unidad, esta vez vamos a suponer el problema,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_1 \\&lt;br /&gt;
    u = g(x,y) = xy, &amp;amp;   \text{x} \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que tiene como solución exacta la función armónica &amp;lt;math&amp;gt;u(x,y) = xy&amp;lt;/math&amp;gt;. Tal y como hemos hecho en el apartado anterior, calculamos la solución aproximada utilizando la fórmula de Poisson, la fórmula del trapecio y pasando a coordenadas polares.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    U_{rr} + \frac{1}{r} U_r + \frac{1}{r^2} U_{\theta\theta} = 0, &amp;amp; (r, \theta) \in  B_1 \\&lt;br /&gt;
    U(1,\theta)=G(\theta)=\cos(\theta)\sin(\theta), &amp;amp;   (r, \theta) \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vamos a distinguir entre dos tipos de puntos, aquellos que estén &amp;quot;alejados&amp;quot; de la frontera y aquellos sean inmediatos a esta. &lt;br /&gt;
Primero estudiaremos el error en puntos &amp;quot;alejados&amp;quot; de la frontera. Esto lo hacemos empleando distintas discretizaciones con &amp;lt;math&amp;gt; 10^n &amp;lt;/math&amp;gt; puntos en la fórmula del trapecio. Después, calculamos el error para cada discretización en un punto alejado, en este caso lo hacemos evaluando en &amp;lt;math&amp;gt;x = (r,\theta)=(0.9,\pi/4)&amp;lt;/math&amp;gt;. Posteriormente graficamos el error aplicando la fórmula,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;f(n):=\log_{10}(Error(10^n)), &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Obteniendo así la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: error_puntoalejado_ejercicio2.png|400px|miniaturadeimagen|center|Error de un punto alejado a la frontera]]&lt;br /&gt;
&lt;br /&gt;
Los resultados de esta gráfica cuadran con nuestra intuición, a mayor número de puntos menor es el error que se comete. Además podemos apreciar que el error se acaba estabilizando al rededor de &amp;lt;math&amp;gt;10^{-15}&amp;lt;/math&amp;gt;. Luego podemos concluir que la fórmula de Poisson proporciona una buena aproximación para puntos relativamente alejados de la frontera. &lt;br /&gt;
&lt;br /&gt;
A continuación, atendiendo a la fórmula del error &amp;quot;teórica&amp;quot; dada por el método del trapecio, la cual sigue la siguiente expresión:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;Error:=\left|-\cfrac{f''(\xi)(b-a)^3}{12n^2}\right|, &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
siendo &amp;lt;math&amp;gt;\xi&amp;lt;/math&amp;gt; un valor dentro del intervalo &amp;lt;math&amp;gt;[a,b]&amp;lt;/math&amp;gt;, y n el valor que genera la discretización para la aplicación del método del trapecio. En nuestro caso, &amp;lt;math&amp;gt;[a,b]=[0,2\pi]&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; la función a integrar en la fórmula de Poisson.&lt;br /&gt;
Ahora bien, el código de MatLab presentado al final de la sección implementa un cálculo del error máximo, tomando para cada n el error máximo en la discretización y acumulándolo en la lista &amp;lt;math&amp;gt;error_max&amp;lt;/math&amp;gt; de tal forma que en la gráfica se presenta una representación del error máximo teórico de la fórmula del trapecio.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: comparacionerrores_ejercicio2.png|400px|miniaturadeimagen|center|Comparación errores con su máximo]]&lt;br /&gt;
&lt;br /&gt;
Estudiemos ahora el error cometido en puntos &amp;quot;cercanos&amp;quot; a la frontera. En este caso vamos utilizar una única discretización de 100 puntos de la fórmula del trapecio y puntos que cada vez se acercan más a la frontera. Partiendo del punto &amp;lt;math&amp;gt;x = (r,\theta)=(0.9,\pi/4)&amp;lt;/math&amp;gt; vamos a ir avanzando hacia la frontera con puntos de la forma &amp;lt;math&amp;gt;(r,\theta)=(1-10^{-n}, \pi/4)&amp;lt;/math&amp;gt;. La gráfica entonces resulta ser:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: error_puntoscercanosfrontera_ejercicio2.png|400px|miniaturadeimagen|center|Error de puntos cercanos a la frontera]]&lt;br /&gt;
&lt;br /&gt;
En este caso el error incrementa según los puntos se acercan a la frontera y se acaba estabilizando en &amp;lt;math&amp;gt;-0,3&amp;lt;/math&amp;gt;.&lt;br /&gt;
El código utilizado para dibujar estas gráficas es el siguiente.&lt;br /&gt;
&lt;br /&gt;
{{matlab||codigo=&lt;br /&gt;
% El siguiente código ejecuta todas las gráficas planteadas a lo largo de esta sección&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Definimos el radio de la bola;&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos la función g:&lt;br /&gt;
g =@(theta) (R.^2.*cos(theta).*sin(theta));&lt;br /&gt;
&lt;br /&gt;
% Definimos la solución exacta:&lt;br /&gt;
u_exacta =@(r,theta) (r.^2.*cos(theta).*sin(theta));&lt;br /&gt;
&lt;br /&gt;
% Tomamos el punto r=0.9 y theta=pi/4:&lt;br /&gt;
r_valor=0.9;&lt;br /&gt;
theta_valor=pi/4;&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución u en el punto anterior:&lt;br /&gt;
n=1:1:8;&lt;br /&gt;
error=zeros(1,length(n)); % Inicializamos la matriz que almacena el error&lt;br /&gt;
error_log=zeros(1,length(n)); % Inicializamos la matriz que almacena el error logarítmico&lt;br /&gt;
u_valor=zeros(1,length(n)); % Inicializamos la matriz que almacena la solución de u para distintas discretizaciones del método del trapecio&lt;br /&gt;
for i=1:length(n)&lt;br /&gt;
    s=linspace(0,2*pi,10^(n(i))); % Intervalo de integración&lt;br /&gt;
    u_valor(i)=1/(2*pi).*trapz(s,g(s).*(R^2-r_valor.^2)./(R^2+r_valor.^2-2.*r_valor.*cos(s-theta_valor))); % Solución a través de la fórmula de Poisson&lt;br /&gt;
    &lt;br /&gt;
    % Calculamos el error:&lt;br /&gt;
    error(i)=abs(u_exacta(r_valor,theta_valor)-u_valor(i));&lt;br /&gt;
    % Calculamos el error logarítmico:&lt;br /&gt;
    error_log(i)=log10(error(i));&lt;br /&gt;
end&lt;br /&gt;
% Representamos gráficamente el error logarítmico para el punto r=0.9 y theta=pi/4:&lt;br /&gt;
plot(n,error_log,'o-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(10^n))')&lt;br /&gt;
grid on &lt;br /&gt;
grid minor&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Gráfica del error logarítmico')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Observamos la existencia de un error máximo que nos permita confirmar&lt;br /&gt;
% que los errores calculados anteriormente se encuentran por debajo siempre:&lt;br /&gt;
&lt;br /&gt;
% Calculamos la segunda derivada (requerida por la fórmula):&lt;br /&gt;
syms rr ss thetatheta&lt;br /&gt;
% Definimos de forma simbólica la función a derivar:&lt;br /&gt;
f=rr^2*cos(ss)*sin(ss)/(1+rr^2-2*rr*cos(thetatheta-ss));&lt;br /&gt;
derivada1=diff(f,ss); % Derivamos la función f en función de la variable s&lt;br /&gt;
derivada2=diff(derivada1,ss); % Derivamos la primera derivada en función de la variable s&lt;br /&gt;
% Calculamos el error máximo del método del trapecio:&lt;br /&gt;
nn=1:1:3; % Conforme el número sea más elevado aquí más aumentará el tiempo de compilación del programa.&lt;br /&gt;
error_max=zeros(length(nn),1); % Inicializamos a ceros el vector que almacenará los datos del error máximo del trapecio&lt;br /&gt;
for i=1:length(nn)&lt;br /&gt;
    N=10^i;&lt;br /&gt;
    s=linspace(0,2*pi,N);&lt;br /&gt;
    error_trapz=zeros(N,1); % Inicializamos a ceros el vector que almacenará los datos del error del trapecio para cada n&lt;br /&gt;
    for j=1:N&lt;br /&gt;
        s_valor=s(j);&lt;br /&gt;
        error_trapz(j)=log10(abs(-(2*pi).^3.*subs(derivada2, [rr,ss,thetatheta] ,[r_valor,s_valor,theta_valor])./(12.*(N.^2))));&lt;br /&gt;
    end&lt;br /&gt;
    error_max(i)=max(error_trapz);&lt;br /&gt;
end&lt;br /&gt;
% Representamos gráficamente el error máximo junto con el error calculado&lt;br /&gt;
% anteriormente:&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
plot(nn,error_log(1:length(nn)),'Color','blue')&lt;br /&gt;
plot(nn,error_max,'Color','red')&lt;br /&gt;
hold off&lt;br /&gt;
legend('Error','Error máximo')&lt;br /&gt;
title('Comparación de errores')&lt;br /&gt;
grid on&lt;br /&gt;
grid minor&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('Error')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Fijamos ahora para N=100 (puntos en la fórmula del trapecio).&lt;br /&gt;
% Vamos a calcular el error en los puntos de la forma r=1-10^(-n) y theta=pi/4 y veremos qué ocurre:&lt;br /&gt;
N=100;&lt;br /&gt;
r_valores=zeros(1,N); % Inicializamos vector que almacena los valores de r.&lt;br /&gt;
u_valores_r=zeros(1,N); % Inicializamos el vector que almacena los valores de la solución u para distintos valores de r.&lt;br /&gt;
u_exacta_r=zeros(1,N); % Inicializamos el vector que almacena los valores de la solución u exacta para distintos valores de r.&lt;br /&gt;
error_r=zeros(1,N); % Inicializamos el vector que almacena los errores.&lt;br /&gt;
error_log_r=zeros(1,N); % Inicializamos el vector que almacena los errores logarítmicos.&lt;br /&gt;
% theta_valor=pi/4 es el mismo que hemos usado antes, por lo que no lo volvemos a inicializar.&lt;br /&gt;
% Definimos el vector de integración de la fórmula del trapecio:&lt;br /&gt;
s=linspace(0,2*pi,N);&lt;br /&gt;
for j=1:N&lt;br /&gt;
    r_valores(j)=1-10^(-j);&lt;br /&gt;
    u_valores_r(j)=1/(2*pi).*trapz(s,g(s).*(R^2-r_valores(j).^2)./(R^2+r_valores(j).^2-2.*r_valores(j).*cos(s-theta_valor)));&lt;br /&gt;
    u_exacta_r(j)=u_exacta(r_valores(j),theta_valor);&lt;br /&gt;
    error_r(j)=abs(u_exacta_r(j)-u_valores_r(j));&lt;br /&gt;
    error_log_r(j)=log10(error_r(j));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
plot(1:1:N,error_log_r,'.-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(100))')&lt;br /&gt;
grid on &lt;br /&gt;
grid minor&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Errores en los puntos cercanos a la frontera')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Solución por la serie de Fourier ===&lt;br /&gt;
Una vez estudiada la solución por la fórmula de Poisson, en este apartado calcularemos la solución por serie de Fourier. La obtención de esta solución se basa en una cambio de variable a polares del problema, como el visto previamente, y resolución por separación de variables.  Hacemos esto aplicado al problema anterior en una bola de radio &amp;lt;math&amp;gt; R &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta U=U_{rr}+\frac{1}{r}U_r+\frac{1}{r^2}U_{\theta\theta}=0, r\in(0,R),\theta\in(0,2\pi)\\&lt;br /&gt;
U(R,\theta)=G(\theta)=R^2 sin(\theta)cos(\theta), \theta\in[0,2\pi).&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo cual nos conduce a, &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
U(r, \theta) = \frac{\alpha_{0}}{2}  +   \sum_{k=1}^{n} \left( \alpha_{k} \left(\frac{r}{R} \right)^k cos(k\theta) + \beta_{k} \left(\frac{r}{R} \right)^k sin(k\theta)\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que tiene coeficientes,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\alpha_{0} =\frac{1}{\pi}\int_{-\pi}^{\pi} \cos\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\alpha_{k} =\frac{1}{\pi}\int_{-\pi}^{\pi} cos(\theta) \sin(\theta) \cos\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\beta_{k} =\frac{1}{\pi}\int_{-\pi}^{\pi} cos(\theta) \sin(\theta) \sin\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Sin embargo, todos los coeficientes de Fourier son nulos, salvo por &amp;lt;math&amp;gt; \beta_2=\frac{R^2}{2}&amp;lt;/math&amp;gt;, luego la solución por series de Fourier final es, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}\sin(2\theta)=r^2\cos(\theta)\sin(\theta), r\in [0,R], \theta\in[0,2\pi)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Veamos ahora la gráfica que dibuja esta solución tomando &amp;lt;math&amp;gt; R = 1 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Tresaitana1.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Ecuación de Laplace&lt;br /&gt;
%% Apartado 3&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Definimos el radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% k términos de la serie:&lt;br /&gt;
K=[5 10 100];&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g y la función u exacta:&lt;br /&gt;
g=@(theta) R.^2.*cos(theta).*sin(theta);&lt;br /&gt;
u_exacta=@(r,theta) r.^2.*cos(theta).*sin(theta);&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos de theta y r:&lt;br /&gt;
N=300; % Número de divisiones de los intervalos theta y r.&lt;br /&gt;
Theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
r=linspace(0,R,N); % Intervalo r.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Calculamos los coeficientes de Fourier para distintos k-términos:&lt;br /&gt;
for i=1:length(K)&lt;br /&gt;
    k=K(i); % k-términos de la serie.&lt;br /&gt;
    int=linspace(-pi,pi,k); % Intervalo de integración para los coef de Fourier.&lt;br /&gt;
    a0=1/pi.*integral(g,-pi,pi); % Coeficiente de Fourier a_0 (asociado a 1/2).&lt;br /&gt;
    a=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al coseno.&lt;br /&gt;
    b=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al seno.&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        f_cos=@(theta) g(theta).*cos(j.*theta); % Definimos la función a integrar asociada al coseno.&lt;br /&gt;
        f_sin=@(theta) g(theta).*sin(j.*theta); % Definimos la función a integrar asociada al seno.&lt;br /&gt;
        a(j)=1/pi.*integral(f_cos,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fourier del coseno.&lt;br /&gt;
        b(j)=1/pi.*integral(f_sin,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fouries del seno.&lt;br /&gt;
    end&lt;br /&gt;
    % Calculamos la solución u_k asociada al número de términos de la serie:&lt;br /&gt;
    suma=@(r,theta)0;&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        suma=@(r,theta) suma(r,theta) + a(j).*(r/R).^j.*cos(j.*theta)+b(j).*(r/R).^j.*sin(j.*theta);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['u_' num2str(k) '=@(r,theta) 1/2*a0 + suma(r,theta);']);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
[RR,THETA]=meshgrid(r,Theta);&lt;br /&gt;
figure&lt;br /&gt;
for i=1:length(K)&lt;br /&gt;
    k=K(i);&lt;br /&gt;
    subplot(2,2,i)&lt;br /&gt;
    eval(['surf(RR.*cos(THETA),RR.*sin(THETA),u_' num2str(k) '(RR,THETA),&amp;quot;EdgeColor&amp;quot;,&amp;quot;flat&amp;quot;)'])&lt;br /&gt;
    title(&amp;quot;Solución de u para k=&amp;quot;, num2str(k))&lt;br /&gt;
end&lt;br /&gt;
subplot(2,2,4)&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u_exacta(RR,THETA),&amp;quot;EdgeColor&amp;quot;,&amp;quot;flat&amp;quot;)&lt;br /&gt;
title('Solución exacta')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Errores de la solución por serie de Fourier ====&lt;br /&gt;
Al igual que con la solución dada por la fórmula de Poisson, vamos a comparar la solución calculada con la solución exacta &amp;lt;math&amp;gt;u(x,y)=xy&amp;lt;/math&amp;gt; en la bola de radio 1. Vamos a contrastar las soluciones con 5, 10 y 100 términos con la exacta. Calcularemos el error resultante al aproximar la serie de Fourier y lo representamos gráficamente, mostrando el máximo error en función del número de términos utilizados en una escala logarítmica, es decir, pintaremos la función, &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \log_{10}(error(n)) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; error(n) &amp;lt;/math&amp;gt; es ahora el supremo del error con &amp;lt;math&amp;gt;n &amp;lt;/math&amp;gt;términos. Obetenemos así la siguente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Tresaitana2.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
Podemos apreciar en esta gráfica errores de orden muy pequeño, por lo general, los podemos considerar pequeño. Luego, nos damos cuenta de que, a diferencia de solución por la fórmula de Poisson, esta no nos da problemas en la frontera. Veamos el código utilizado para hacer la gráfica.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% A continuación se calcularán los errores de la aproximación de Fourier en función de los términos:&lt;br /&gt;
KK=0:1:100;&lt;br /&gt;
error_log=zeros(length(KK),1); % Inicializamos el vector donde se almacenarán los errores logarítmicos.&lt;br /&gt;
for i=1:length(KK)&lt;br /&gt;
    k=KK(i);&lt;br /&gt;
    int=linspace(-pi,pi,k); % Intervalo de integración para los coef de Fourier.&lt;br /&gt;
    a0=1/pi.*integral(g,-pi,pi); % Coeficiente de Fourier a_0 (asociado a 1/2).&lt;br /&gt;
    a=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al coseno.&lt;br /&gt;
    b=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al seno.&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        f_cos=@(theta) g(theta).*cos(j.*theta); % Definimos la función a integrar asociada al coseno.&lt;br /&gt;
        f_sin=@(theta) g(theta).*sin(j.*theta); % Definimos la función a integrar asociada al seno.&lt;br /&gt;
        a(j)=1/pi.*integral(f_cos,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fourier del coseno.&lt;br /&gt;
        b(j)=1/pi.*integral(f_sin,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fouries del seno.&lt;br /&gt;
    end&lt;br /&gt;
    % Calculamos la solución u_k asociada al número de términos de la serie:&lt;br /&gt;
    suma=@(r,theta)0;&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        suma=@(r,theta) suma(r,theta) + a(j).*(r/R).^j.*cos(j.*theta)+b(j).*(r/R).^j.*sin(j.*theta);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['u_' num2str(i) '=@(r,theta) 1/2*a0 + suma(r,theta);']);&lt;br /&gt;
    eval(['u=@(r,theta)u_' num2str(i) '(r,theta) ;']);&lt;br /&gt;
    U_exacta=u_exacta(RR,THETA);&lt;br /&gt;
    U_fourier=u(RR,THETA);&lt;br /&gt;
    valores_max=max(U_exacta-U_fourier);&lt;br /&gt;
    sup=max(valores_max,[],'all');&lt;br /&gt;
    error_log(i)=log10(sup);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
plot(KK,error_log)&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Errores supremos frente al número de términos')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(10^n))')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Comportamiento de la solución ===&lt;br /&gt;
&lt;br /&gt;
== Ecuación de Poisson ==&lt;br /&gt;
&lt;br /&gt;
En esta parte del documento se va a proceder a resolver la ecuación de Poisson mediante un nuevo método. En primer lugar, esta ecuación viene dada por  &amp;lt;math&amp;gt; \Delta u = f &amp;lt;/math&amp;gt; siendo &amp;lt;math&amp;gt;u:\mathbb{R}^n \rightarrow \mathbb{R}&amp;lt;/math&amp;gt;y &amp;lt;math&amp;gt; f \in C^2(\mathbb{R})&amp;lt;/math&amp;gt;. Para este estudio se particularizará para n=2 y n=3.&lt;br /&gt;
&lt;br /&gt;
Se comenzará definiendo la solución fundamental de esta ecuación, pues se utilizará posteriormente para calcular el potencial newtoniano o logarítimico. Esta viene dada por &amp;lt;math&amp;gt;  \phi(x) = -\frac{1}{2\pi} log(|x|) &amp;lt;/math&amp;gt; si n=2 y &amp;lt;math&amp;gt;  \phi(x) = \frac{1}{4\pi |x| } &amp;lt;/math&amp;gt; si n=3.&lt;br /&gt;
=== Potencial newtoniano para &amp;lt;math&amp;gt; \mathbb{R}^3&amp;lt;/math&amp;gt; ===&lt;br /&gt;
Supongamos que &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
representa la densidad de una carga contenida en un conjunto compacto dentro del espacio tridimensional &amp;lt;math&amp;gt; \mathbb{R}^3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Entonces, la expresión &amp;lt;math&amp;gt; \phi(x-y)f(y)dy&amp;lt;/math&amp;gt; denota el potencial en el punto x. De esta manera el potencial total viene dado por la siguiente expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\mathbf{x}) = \int_{\mathbb{R}^n} f(\mathbf{y}) \phi(\mathbf{x} - \mathbf{y}) d\mathbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta fórmula se conoce como potencial Newtoniano de f y se aplica sobre funciones que en el infinito tienden de manera rápida a cero.&lt;br /&gt;
&lt;br /&gt;
A su vez, sea &amp;lt;math&amp;gt;f \in C^2(\mathbb{R}^3)&amp;lt;/math&amp;gt; con soporte compacto. Sea &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; el potencial newtoniano de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, definido por el potencial Newtoniano. Entonces, &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; es la única solución en &amp;lt;math&amp;gt;\mathbb{R}^3&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;\Delta u = -f&amp;lt;/math&amp;gt;  que pertenece a &amp;lt;math&amp;gt;C^2(\mathbb{R}^3)&amp;lt;/math&amp;gt; y se anula en el infinito. Es decir, dado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \begin{cases}&lt;br /&gt;
     \Delta u = -f \\&lt;br /&gt;
   u(x) \rightarrow 0  &amp;amp; \text{si } |x| \rightarrow \infty&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
su solución viene dada por el potencial newtoniano que se presenta anteriormente.&lt;br /&gt;
&lt;br /&gt;
=== Potencial logarítmico para &amp;lt;math&amp;gt; \mathbb{R}^2&amp;lt;/math&amp;gt; ===&lt;br /&gt;
Si el problema se presenta en &amp;lt;math&amp;gt; \mathbb{R}^2&amp;lt;/math&amp;gt; el potencial newtoniano se sustituye por el potencial logarítimico:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\mathbf{x}) = -\frac{1}{2\pi}\int_{\mathbb{R}^2}  log|\mathbf{x} - \mathbf{y}|f(\mathbf{y}) d\mathbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta manera, Sea &amp;lt;math&amp;gt;f \in C^2(\mathbb{R}^2)&amp;lt;/math&amp;gt; con soporte compacto, &amp;lt;math&amp;gt;u(\mathbf{x})&amp;lt;/math&amp;gt; es la única solución en &amp;lt;math&amp;gt;\mathbb{R}^2&amp;lt;/math&amp;gt; de:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \begin{cases}&lt;br /&gt;
     \Delta u = -f \\&lt;br /&gt;
   u(x)=-\frac{M}{2\pi} log |x| + O\left(\frac{1}{|x|} \right)  &amp;amp; \text{si } |x| \rightarrow \infty&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M= \int _{\mathbb{R}^2} f(\mathbf y) d\mathbf y&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
A continuación, veremos un ejemplo de lo explicado anteriormente para una correcta comprensión de ello. De esta manera, mediante el potencial logarítmico se aproximará la ecuación de Poisson cuando f sea la función característica de la bola de radio 1 y se estudiará su comportamiento en el infinito.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Para resolver este ejemplo se ha realizado un código en Matlab. La integral se ha simplificado de la siguiente manera:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; -\frac{1}{2\pi}\int_{\partial B_1 0} log|\mathbf{x} - \mathbf{y}| d\mathbf{y} = -\frac{\pi}{4}\frac{1}{2\pi}\int_{-1} ^1 \int_{-1} ^1 log|\mathbf{x} - \mathbf{y}| dx dy &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%aSe divide el dominio de cada variable en 200 puntos. Para y1 e y2 se coge&lt;br /&gt;
%el intervalo [-1,1] pues cuando este fuera de este intervalo la función vale 0 y por tanto la integral se anulará y para x1 y x2 se coge un intervalo muy grande pues la función tiene dominio todo R2.&lt;br /&gt;
i1 = linspace(-1,1,200);&lt;br /&gt;
i2 = linspace(-1,1,200);&lt;br /&gt;
i3 = linspace(-10^4,10^4,200);&lt;br /&gt;
i4 = linspace(-10^4,10^4,200);&lt;br /&gt;
&lt;br /&gt;
% Se define la función f anteriormente obtenida&lt;br /&gt;
f = @(y1, y2, x1, x2) -(pi/4)*(1/(2*pi))*log(sqrt((y1-x1).^2 + (y2-x2).^2));&lt;br /&gt;
&lt;br /&gt;
% Generamos una malla de puntos&lt;br /&gt;
[A, B] = meshgrid(i1, i2);&lt;br /&gt;
[C, D] = meshgrid(i3,i4);&lt;br /&gt;
&lt;br /&gt;
%Creamos una matriz cero donde se irán metiendo los valores que&lt;br /&gt;
%próximamente evaluaremos&lt;br /&gt;
values = zeros(size(A)); &lt;br /&gt;
&lt;br /&gt;
% Se crea el siguiente bucle para obtener los valores que necesitamos para&lt;br /&gt;
% la representación gráfica&lt;br /&gt;
for i = 1:length(i1)&lt;br /&gt;
    for j = 1:length(i2)&lt;br /&gt;
        fnum = @(x, y) f(x, y, i3(i), i4(j)); % Se crea este bucle para ir evaluando f en los distintos puntos (x1,x2)&lt;br /&gt;
        values(i, j) = trapz(i2, trapz(i1, fnum(A, B), 2)); % Evaluar fnum en la malla (A, B) y calcular la integral por el método del trapecio&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Se dibujan todos los puntos obtenidos&lt;br /&gt;
surf(C,D,values)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La representación obtenida es la siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Unoaitana.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación se va a comprobar si la solución se comporta de la manera esperada en el infinito. Tal y como se ha especificado anteriormente el comportamiento asintótico sigue la siguiente función:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x)=-\frac{M}{2\pi} log |x| + O(\frac{1}{|x|})&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
siendo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M= \int _{\mathbb{R}^2} f(\mathbf y) d\mathbf y&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación, se compara esta función con la solución obtenida anteriormente con el fin de observar si se comporta adecuadamente. Se ha creado el siguiente código:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
graf=zeros(length(i1));&lt;br /&gt;
xgraf=zeros(length(i1));&lt;br /&gt;
for i = 1:length(i1)&lt;br /&gt;
        fnum = @(x, y) f(x, y, i3(i), i4(i));&lt;br /&gt;
        &lt;br /&gt;
        graf(i) = trapz(i2, trapz(i1, fnum(A,B), 2));&lt;br /&gt;
        xgraf(i)=sqrt(2*(i3(i)^2));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
hold on&lt;br /&gt;
hol= @(x) -1/2*log(x);&lt;br /&gt;
valy = hol(xgraf);&lt;br /&gt;
% Crear el gráfico de las líneas y los puntos&lt;br /&gt;
hold on&lt;br /&gt;
plot(xgraf, valy, '-','DisplayName','Función asintótica'); &lt;br /&gt;
plot(xgraf, graf, '*','DisplayName','Función obtenida');&lt;br /&gt;
xlabel('Eje x')&lt;br /&gt;
ylabel('Eje y')&lt;br /&gt;
title('Gráfico función asintótica y función obtenida')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Se ha obtenido la siguiente gráfica, siendo la verde la función obtenida y la azul la función asintótica:&lt;br /&gt;
[[Archivo: Dosaitana.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
Tal y como se ve, se observa que el comportamiento es el esperado.&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaciones_de_Laplace_y_de_Poisson&amp;diff=71601</id>
		<title>Ecuaciones de Laplace y de Poisson</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaciones_de_Laplace_y_de_Poisson&amp;diff=71601"/>
				<updated>2024-04-19T18:03:52Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: /* Errores de la fórmula de Poisson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introducción ==&lt;br /&gt;
En este documento, nos centraremos en dos ecuaciones que tienen un amplio uso en diversos ámbitos como electrostática, mecánica de fluidos, física teórica y magnetostática: la ecuación de Laplace y la ecuación de Poisson. &lt;br /&gt;
Ambas ecuaciones las estudiaremos en el plano y las veremos aplicadas en problemas concretos. Veremos las limitaciones que presenta la fórumla de Poisson así como diferentes métodos analíticos para aproximar soluciones, y raíz de esto, analizaremos errores de aproximación. Por último, estudiaremos el comportamiento de soluciones tanto en un dominio dado, utilizando la desigualdad de Harnack, como asintóticamente en infinito.&lt;br /&gt;
 &lt;br /&gt;
 CREO QUE AQUÍ ME FALTAN PUNTOS Y COMAS&lt;br /&gt;
&lt;br /&gt;
== Ecuación de Laplace ==&lt;br /&gt;
La ecuación de Laplace, cuyo nombre nombre honra al distinguido físico-matemático Pierre-Simon Laplace, es una ecuación en derivadas parciales de tipo elíptico. REFERENCIA?&lt;br /&gt;
Construyamos un problema de derivadas parciales a partir de la ecuación de Laplace. La ecuación es,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \Delta u = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
con &amp;lt;math&amp;gt;u:\mathbb{R}^3 \rightarrow \mathbb{R}&amp;lt;/math&amp;gt; como incógnita. Esta ecuación se define en un dominio &amp;lt;math&amp;gt; \Omega &amp;lt;/math&amp;gt;, y en su frontera &amp;lt;math&amp;gt; \partial \Omega &amp;lt;/math&amp;gt; se pueden añadir condiciones de contorno Dirichlet, Neuman o mixtas. En este trabajo nos centraremos en las condiciones de contorno de tipo Dirichlet, las cuales igualan &amp;lt;math&amp;gt; u &amp;lt;/math&amp;gt; a una función específica &amp;lt;math&amp;gt; g &amp;lt;/math&amp;gt;. Con todo esto, llegamos al siguiente problema de derivadas parciales.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  \Omega \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial \Omega &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A fin de comprender mejor este problema, podemos examinar el siguiente ejemplo en concreto. &lt;br /&gt;
&lt;br /&gt;
===== Ejemplo bola unidad =====&lt;br /&gt;
Sea &amp;lt;math&amp;gt; B_1 ⊂ R^2 &amp;lt;/math&amp;gt; la bola unidad centrada en el origen. Planteamos el problema, &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_1 \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
A lo largo de este documento, en lo que tiene que ver con la ecuación de Laplace, visitaremos este ejemplo varias veces.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dentro de la resolución del problema planteado existen varios métodos por los que proceder. En este trabajo estudiaremos dos: la fórmula de Poisson y la serie de Fourier.&lt;br /&gt;
=== Solución por la fórmula de Poisson ===&lt;br /&gt;
Encontrar la solución del problema mediante la fórmula de Poisson viene determinado por el siguiente teorema.&lt;br /&gt;
&lt;br /&gt;
===== Teorema =====&lt;br /&gt;
La solución &amp;lt;math&amp;gt; u \in C^2(B_R \cup C(\overline{B_R}) &amp;lt;/math&amp;gt;del problema &amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_R \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial B_R &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt; donde &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; es una función continua viene dado por la fórmula de Poisson &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\vec{x})=\frac{R^2-|\vec{x}|^2}{w_n R}\int_{\partial B_R}\frac{g(\sigma)}{|\vec{x}-\sigma|^2} d\sigma. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es importante destacar que el denominador &amp;lt;math&amp;gt;|\vec{x}-\sigma|^2 &amp;lt;/math&amp;gt; se anula en la frontera de la bola llevándonos a una indeterminación y haciendo que la integral diverja. Esto también pasa si expresamos la fórmula en coordenadas polares &amp;lt;math&amp;gt;(r, \theta)&amp;lt;/math&amp;gt;. Tomando, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\vec{x} = (x_1, x_2) = (rcos(\theta), rsen(\theta)) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; g(rcos(\theta), rsen(\theta)) = G(\theta)&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
llegamos a la fórmula de Poisson, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; U(r,\theta)=\frac{R^2-r^2}{2\pi R}\int_{0}^{2\pi}\frac{g(s)}{R^2+r^2-2Rrcos(\theta-s)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso, el denominador de la integral también se anula para puntos cercanos a la frontera, concretamente cuando el coseno se hace 1. &lt;br /&gt;
&lt;br /&gt;
Veamos todo esto aplicado a la bola unidad pasado a coordenadas polares,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    U_{rr} + \frac{1}{r} U_r + \frac{1}{r^2} U_{\theta\theta} = 0, &amp;amp; (r, \theta) \in  B_1 \\&lt;br /&gt;
    U(1, \theta) = G(\theta), &amp;amp;   (r, \theta) \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la resolución de este problema vamos a tomar &amp;lt;math&amp;gt;G(\theta) = máx\{0, 1-\frac{2}{\pi} |\theta - \pi|\}&amp;lt;/math&amp;gt; y utilizaremos la fórmula de Poisson en polares tomando &amp;lt;math&amp;gt;R = 1&amp;lt;/math&amp;gt; y calculando la integral de manera aproximada con la fórmula del trapecio. Como hemos visto antes, la fórmula da problemas para puntos cercanos al borde. Esto lleva a una representación irregular de la frontera si dibujamos la solución sin tener en cuenta este problema.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: sol_sin_frontera_ejercicio1.png|400px|miniaturadeimagen|center|Solución del problema de Poisson sin aplicar la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
Es por esto por lo que la condición frontera no es prescindible en el problema. Para estimar &amp;lt;math&amp;gt; U(r,\theta)&amp;lt;/math&amp;gt;, utilizaremos la fórmula de Poisson para puntos ligeramente alejados del borde, y en el propio borde utilizaremos la condición frontera &amp;lt;math&amp;gt;U(R, \theta) = G(\theta)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: sol_ejercicio1.png|400px|miniaturadeimagen|center|Solución del problema de Poisson aplicando la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
En esta nueva gráfica podemos apreciar como la frontera no presenta las irregularidades anteriores. &lt;br /&gt;
Para conseguir estas gráficas hemos implementado el siguiente código en MatLab.&lt;br /&gt;
&lt;br /&gt;
====== Códigos ======&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Este código resuelve el problema planteado con la fórmula de Poisson sin aplicar condición frontera:&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g:&lt;br /&gt;
g=@(theta)max(0, 1-2/pi*abs(theta-pi));&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos r y theta sobre los que vamos a trabajar:&lt;br /&gt;
N=200; % Número de divisiones del intervalo&lt;br /&gt;
r=linspace(0,R,N); % No podemos llegar hasta la frontera&lt;br /&gt;
theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución de u con la fórmula de Poisson:&lt;br /&gt;
NN=100; % División del intervalo de integración.&lt;br /&gt;
s=linspace(0,2*pi,NN); % Intervalo de integración, para el método del trapecio.&lt;br /&gt;
u=zeros(N,N); % Inicializamos la matriz que almacena los valores de la solución.&lt;br /&gt;
for i=1:length(theta)&lt;br /&gt;
    for j=1:length(r) % Calculamos solución a través de la fórmula del trapecio:&lt;br /&gt;
        u(i,j)=1/(2*pi).*trapz(s,g(s).*(R^2-r(j).^2)./(R^2+r(j).^2-2.*r(j).*cos(s-theta(i))));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
% Creamos la malla:&lt;br /&gt;
[RR,THETA]=meshgrid(r,theta);&lt;br /&gt;
figure&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u,'EdgeColor','flat') % Representación gráfica&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('y')&lt;br /&gt;
zlabel('u(x,y)')&lt;br /&gt;
title('Solución de la ecuación de Laplace')&lt;br /&gt;
}}&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Este código resuelve el problema planteado con la fórmula de Poisson aplicando la condición frontera:&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g:&lt;br /&gt;
g=@(theta)max(0, 1-2/pi*abs(theta-pi));&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos r y theta sobre los que vamos a trabajar:&lt;br /&gt;
N=200; % Número de divisiones del intervalo&lt;br /&gt;
r=linspace(0,R-N^(-1),N-1); % No podemos llegar hasta la frontera&lt;br /&gt;
theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución de u con la fórmula de Poisson:&lt;br /&gt;
NN=1000; % División del intervalo de integración.&lt;br /&gt;
s=linspace(0,2*pi,NN); % Intervalo de integración, para el método del trapecio.&lt;br /&gt;
u=zeros(N,N); % Inicializamos la matriz que almacena los valores de la solución.&lt;br /&gt;
for i=1:length(theta)&lt;br /&gt;
    for j=1:length(r) % Calculamos solución a través de la fórmula del trapecio:&lt;br /&gt;
        u(i,j)=1/(2*pi).*trapz(s,g(s).*(R^2-r(j).^2)./(R^2+r(j).^2-2.*r(j).*cos(s-theta(i))));&lt;br /&gt;
    end&lt;br /&gt;
    % Establecemos condiciones frontera (por presentar problemas en esta):&lt;br /&gt;
    u(i,N)=g(theta(i));&lt;br /&gt;
end&lt;br /&gt;
r(N)=1;&lt;br /&gt;
% Creamos la malla:&lt;br /&gt;
[RR,THETA]=meshgrid(r,theta);&lt;br /&gt;
figure&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u,'EdgeColor','flat') % Representación gráfica&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('y')&lt;br /&gt;
zlabel('u(x,y)')&lt;br /&gt;
title('Solución de la ecuación de Laplace')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== Errores de la fórmula de Poisson =====&lt;br /&gt;
Como hemos observado anteriormente, la fórmula de Poisson presenta ciertas dificultades a la hora de aproximar la solución en la frontera, debido a la singularidad inherente de la integral. En este apartado examinaremos estas irregularidades calculando el error de la aproximación frente a la solución exacta.&lt;br /&gt;
&lt;br /&gt;
Volviendo al ejemplo de la bola unidad, esta vez vamos a suponer el problema,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_1 \\&lt;br /&gt;
    u = g(x,y) = xy, &amp;amp;   \text{x} \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que tiene como solución exacta la función armónica &amp;lt;math&amp;gt;u(x,y) = xy&amp;lt;/math&amp;gt;. Tal y como hemos hecho en el apartado anterior, calculamos la solución aproximada utilizando la fórmula de Poisson, la fórmula del trapecio y pasando a coordenadas polares.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    U_{rr} + \frac{1}{r} U_r + \frac{1}{r^2} U_{\theta\theta} = 0, &amp;amp; (r, \theta) \in  B_1 \\&lt;br /&gt;
    U(1,\theta)=G(\theta)=\cos(\theta)\sin(\theta), &amp;amp;   (r, \theta) \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vamos a distinguir entre dos tipos de puntos, aquellos que estén &amp;quot;alejados&amp;quot; de la frontera y aquellos sean inmediatos a esta. &lt;br /&gt;
Primero estudiaremos el error en puntos &amp;quot;alejados&amp;quot; de la frontera. Esto lo hacemos empleando distintas discretizaciones con &amp;lt;math&amp;gt; 10^n &amp;lt;/math&amp;gt; puntos en la fórmula del trapecio. Después, calculamos el error para cada discretización en un punto alejado, en este caso lo hacemos evaluando en &amp;lt;math&amp;gt;x = (r,\theta)=(0.9,\pi/4)&amp;lt;/math&amp;gt;. Posteriormente graficamos el error aplicando la fórmula,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;f(n):=\log_{10}(Error(10^n)), &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Obteniendo así la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: error_puntoalejado_ejercicio2.png|400px|miniaturadeimagen|center|Error de un punto alejado a la frontera]]&lt;br /&gt;
&lt;br /&gt;
Los resultados de esta gráfica cuadran con nuestra intuición, a mayor número de puntos menor es el error que se comete. Además podemos apreciar que el error se acaba estabilizando al rededor de &amp;lt;math&amp;gt;10^{-15}&amp;lt;/math&amp;gt;. Luego podemos concluir que la fórmula de Poisson proporciona una buena aproximación para puntos relativamente alejados de la frontera. &lt;br /&gt;
&lt;br /&gt;
A continuación, atendiendo a la fórmula del error &amp;quot;teórica&amp;quot; dada por el método del trapecio, la cual sigue la siguiente expresión:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;Error:=\left|-\cfrac{f''(\xi)(b-a)^3}{12n^2}\right|, &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Estudiemos ahora el error cometido en puntos &amp;quot;cercanos&amp;quot; a la frontera. En este caso vamos utilizar una única discretización de 100 puntos de la fórmula del trapecio y puntos que cada vez se acercan más a la frontera. Partiendo del punto &amp;lt;math&amp;gt;x = (r,\theta)=(0.9,\pi/4)&amp;lt;/math&amp;gt; vamos a ir avanzando hacia la frontera con puntos de la forma &amp;lt;math&amp;gt;(r,\theta)=(1-10^{-n}, \pi/4)&amp;lt;/math&amp;gt;. La gráfica entonces resulta ser:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: error_puntoscercanosfrontera_ejercicio2.png|400px|miniaturadeimagen|center|Error de puntos cercanos a la frontera]]&lt;br /&gt;
&lt;br /&gt;
En este caso el error incrementa según los puntos se acercan a la frontera y se acaba estabilizando en &amp;lt;math&amp;gt;-0,3&amp;lt;/math&amp;gt;.&lt;br /&gt;
El código utilizado para dibujar estas gráficas es el siguiente.&lt;br /&gt;
&lt;br /&gt;
{{matlab||codigo=&lt;br /&gt;
% El siguiente código ejecuta todas las gráficas planteadas a lo largo de esta sección&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Definimos el radio de la bola;&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos la función g:&lt;br /&gt;
g =@(theta) (R.^2.*cos(theta).*sin(theta));&lt;br /&gt;
&lt;br /&gt;
% Definimos la solución exacta:&lt;br /&gt;
u_exacta =@(r,theta) (r.^2.*cos(theta).*sin(theta));&lt;br /&gt;
&lt;br /&gt;
% Tomamos el punto r=0.9 y theta=pi/4:&lt;br /&gt;
r_valor=0.9;&lt;br /&gt;
theta_valor=pi/4;&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución u en el punto anterior:&lt;br /&gt;
n=1:1:8;&lt;br /&gt;
error=zeros(1,length(n)); % Inicializamos la matriz que almacena el error&lt;br /&gt;
error_log=zeros(1,length(n)); % Inicializamos la matriz que almacena el error logarítmico&lt;br /&gt;
u_valor=zeros(1,length(n)); % Inicializamos la matriz que almacena la solución de u para distintas discretizaciones del método del trapecio&lt;br /&gt;
for i=1:length(n)&lt;br /&gt;
    s=linspace(0,2*pi,10^(n(i))); % Intervalo de integración&lt;br /&gt;
    u_valor(i)=1/(2*pi).*trapz(s,g(s).*(R^2-r_valor.^2)./(R^2+r_valor.^2-2.*r_valor.*cos(s-theta_valor))); % Solución a través de la fórmula de Poisson&lt;br /&gt;
    &lt;br /&gt;
    % Calculamos el error:&lt;br /&gt;
    error(i)=abs(u_exacta(r_valor,theta_valor)-u_valor(i));&lt;br /&gt;
    % Calculamos el error logarítmico:&lt;br /&gt;
    error_log(i)=log10(error(i));&lt;br /&gt;
end&lt;br /&gt;
% Representamos gráficamente el error logarítmico para el punto r=0.9 y theta=pi/4:&lt;br /&gt;
plot(n,error_log,'o-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(10^n))')&lt;br /&gt;
grid on &lt;br /&gt;
grid minor&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Gráfica del error logarítmico')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Observamos la existencia de un error máximo que nos permita confirmar&lt;br /&gt;
% que los errores calculados anteriormente se encuentran por debajo siempre:&lt;br /&gt;
&lt;br /&gt;
% Calculamos la segunda derivada (requerida por la fórmula):&lt;br /&gt;
syms rr ss thetatheta&lt;br /&gt;
% Definimos de forma simbólica la función a derivar:&lt;br /&gt;
f=rr^2*cos(ss)*sin(ss)/(1+rr^2-2*rr*cos(thetatheta-ss));&lt;br /&gt;
derivada1=diff(f,ss); % Derivamos la función f en función de la variable s&lt;br /&gt;
derivada2=diff(derivada1,ss); % Derivamos la primera derivada en función de la variable s&lt;br /&gt;
% Calculamos el error máximo del método del trapecio:&lt;br /&gt;
nn=1:1:3; % Conforme el número sea más elevado aquí más aumentará el tiempo de compilación del programa.&lt;br /&gt;
error_max=zeros(length(nn),1); % Inicializamos a ceros el vector que almacenará los datos del error máximo del trapecio&lt;br /&gt;
for i=1:length(nn)&lt;br /&gt;
    N=10^i;&lt;br /&gt;
    s=linspace(0,2*pi,N);&lt;br /&gt;
    error_trapz=zeros(N,1); % Inicializamos a ceros el vector que almacenará los datos del error del trapecio para cada n&lt;br /&gt;
    for j=1:N&lt;br /&gt;
        s_valor=s(j);&lt;br /&gt;
        error_trapz(j)=log10(abs(-(2*pi).^3.*subs(derivada2, [rr,ss,thetatheta] ,[r_valor,s_valor,theta_valor])./(12.*(N.^2))));&lt;br /&gt;
    end&lt;br /&gt;
    error_max(i)=max(error_trapz);&lt;br /&gt;
end&lt;br /&gt;
% Representamos gráficamente el error máximo junto con el error calculado&lt;br /&gt;
% anteriormente:&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
plot(nn,error_log(1:length(nn)),'Color','blue')&lt;br /&gt;
plot(nn,error_max,'Color','red')&lt;br /&gt;
hold off&lt;br /&gt;
legend('Error','Error máximo')&lt;br /&gt;
title('Comparación de errores')&lt;br /&gt;
grid on&lt;br /&gt;
grid minor&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('Error')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Fijamos ahora para N=100 (puntos en la fórmula del trapecio).&lt;br /&gt;
% Vamos a calcular el error en los puntos de la forma r=1-10^(-n) y theta=pi/4 y veremos qué ocurre:&lt;br /&gt;
N=100;&lt;br /&gt;
r_valores=zeros(1,N); % Inicializamos vector que almacena los valores de r.&lt;br /&gt;
u_valores_r=zeros(1,N); % Inicializamos el vector que almacena los valores de la solución u para distintos valores de r.&lt;br /&gt;
u_exacta_r=zeros(1,N); % Inicializamos el vector que almacena los valores de la solución u exacta para distintos valores de r.&lt;br /&gt;
error_r=zeros(1,N); % Inicializamos el vector que almacena los errores.&lt;br /&gt;
error_log_r=zeros(1,N); % Inicializamos el vector que almacena los errores logarítmicos.&lt;br /&gt;
% theta_valor=pi/4 es el mismo que hemos usado antes, por lo que no lo volvemos a inicializar.&lt;br /&gt;
% Definimos el vector de integración de la fórmula del trapecio:&lt;br /&gt;
s=linspace(0,2*pi,N);&lt;br /&gt;
for j=1:N&lt;br /&gt;
    r_valores(j)=1-10^(-j);&lt;br /&gt;
    u_valores_r(j)=1/(2*pi).*trapz(s,g(s).*(R^2-r_valores(j).^2)./(R^2+r_valores(j).^2-2.*r_valores(j).*cos(s-theta_valor)));&lt;br /&gt;
    u_exacta_r(j)=u_exacta(r_valores(j),theta_valor);&lt;br /&gt;
    error_r(j)=abs(u_exacta_r(j)-u_valores_r(j));&lt;br /&gt;
    error_log_r(j)=log10(error_r(j));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
plot(1:1:N,error_log_r,'.-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(100))')&lt;br /&gt;
grid on &lt;br /&gt;
grid minor&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Errores en los puntos cercanos a la frontera')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Solución por la serie de Fourier ===&lt;br /&gt;
Una vez estudiada la solución por la fórmula de Poisson, en este apartado calcularemos la solución por serie de Fourier. La obtención de esta solución se basa en una cambio de variable a polares del problema, como el visto previamente, y resolución por separación de variables.  Hacemos esto aplicado al problema anterior en una bola de radio &amp;lt;math&amp;gt; R &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta U=U_{rr}+\frac{1}{r}U_r+\frac{1}{r^2}U_{\theta\theta}=0, r\in(0,R),\theta\in(0,2\pi)\\&lt;br /&gt;
U(R,\theta)=G(\theta)=R^2 sin(\theta)cos(\theta), \theta\in[0,2\pi).&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo cual nos conduce a, &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
U(r, \theta) = \frac{\alpha_{0}}{2}  +   \sum_{k=1}^{n} \left( \alpha_{k} \left(\frac{r}{R} \right)^k cos(k\theta) + \beta_{k} \left(\frac{r}{R} \right)^k sin(k\theta)\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que tiene coeficientes,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\alpha_{0} =\frac{1}{\pi}\int_{-\pi}^{\pi} \cos\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\alpha_{k} =\frac{1}{\pi}\int_{-\pi}^{\pi} cos(\theta) \sin(\theta) \cos\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\beta_{k} =\frac{1}{\pi}\int_{-\pi}^{\pi} cos(\theta) \sin(\theta) \sin\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Sin embargo, todos los coeficientes de Fourier son nulos, salvo por &amp;lt;math&amp;gt; \beta_2=\frac{R^2}{2}&amp;lt;/math&amp;gt;, luego la solución por series de Fourier final es, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}\sin(2\theta)=r^2\cos(\theta)\sin(\theta), r\in [0,R], \theta\in[0,2\pi)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Veamos ahora la gráfica que dibuja esta solución tomando &amp;lt;math&amp;gt; R = 1 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Tresaitana1.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Ecuación de Laplace&lt;br /&gt;
%% Apartado 3&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Definimos el radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% k términos de la serie:&lt;br /&gt;
K=[5 10 100];&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g y la función u exacta:&lt;br /&gt;
g=@(theta) R.^2.*cos(theta).*sin(theta);&lt;br /&gt;
u_exacta=@(r,theta) r.^2.*cos(theta).*sin(theta);&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos de theta y r:&lt;br /&gt;
N=300; % Número de divisiones de los intervalos theta y r.&lt;br /&gt;
Theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
r=linspace(0,R,N); % Intervalo r.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Calculamos los coeficientes de Fourier para distintos k-términos:&lt;br /&gt;
for i=1:length(K)&lt;br /&gt;
    k=K(i); % k-términos de la serie.&lt;br /&gt;
    int=linspace(-pi,pi,k); % Intervalo de integración para los coef de Fourier.&lt;br /&gt;
    a0=1/pi.*integral(g,-pi,pi); % Coeficiente de Fourier a_0 (asociado a 1/2).&lt;br /&gt;
    a=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al coseno.&lt;br /&gt;
    b=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al seno.&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        f_cos=@(theta) g(theta).*cos(j.*theta); % Definimos la función a integrar asociada al coseno.&lt;br /&gt;
        f_sin=@(theta) g(theta).*sin(j.*theta); % Definimos la función a integrar asociada al seno.&lt;br /&gt;
        a(j)=1/pi.*integral(f_cos,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fourier del coseno.&lt;br /&gt;
        b(j)=1/pi.*integral(f_sin,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fouries del seno.&lt;br /&gt;
    end&lt;br /&gt;
    % Calculamos la solución u_k asociada al número de términos de la serie:&lt;br /&gt;
    suma=@(r,theta)0;&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        suma=@(r,theta) suma(r,theta) + a(j).*(r/R).^j.*cos(j.*theta)+b(j).*(r/R).^j.*sin(j.*theta);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['u_' num2str(k) '=@(r,theta) 1/2*a0 + suma(r,theta);']);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
[RR,THETA]=meshgrid(r,Theta);&lt;br /&gt;
figure&lt;br /&gt;
for i=1:length(K)&lt;br /&gt;
    k=K(i);&lt;br /&gt;
    subplot(2,2,i)&lt;br /&gt;
    eval(['surf(RR.*cos(THETA),RR.*sin(THETA),u_' num2str(k) '(RR,THETA),&amp;quot;EdgeColor&amp;quot;,&amp;quot;flat&amp;quot;)'])&lt;br /&gt;
    title(&amp;quot;Solución de u para k=&amp;quot;, num2str(k))&lt;br /&gt;
end&lt;br /&gt;
subplot(2,2,4)&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u_exacta(RR,THETA),&amp;quot;EdgeColor&amp;quot;,&amp;quot;flat&amp;quot;)&lt;br /&gt;
title('Solución exacta')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Errores de la solución por serie de Fourier ====&lt;br /&gt;
Al igual que con la solución dada por la fórmula de Poisson, vamos a comparar la solución calculada con la solución exacta &amp;lt;math&amp;gt;u(x,y)=xy&amp;lt;/math&amp;gt; en la bola de radio 1. Vamos a contrastar las soluciones con 5, 10 y 100 términos con la exacta. Calcularemos el error resultante al aproximar la serie de Fourier y lo representamos gráficamente, mostrando el máximo error en función del número de términos utilizados en una escala logarítmica, es decir, pintaremos la función, &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \log_{10}(error(n)) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; error(n) &amp;lt;/math&amp;gt; es ahora el supremo del error con &amp;lt;math&amp;gt;n &amp;lt;/math&amp;gt;términos. Obetenemos así la siguente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Tresaitana2.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
Podemos apreciar en esta gráfica errores de orden muy pequeño, por lo general, los podemos considerar pequeño. Luego, nos damos cuenta de que, a diferencia de solución por la fórmula de Poisson, esta no nos da problemas en la frontera. Veamos el código utilizado para hacer la gráfica.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% A continuación se calcularán los errores de la aproximación de Fourier en función de los términos:&lt;br /&gt;
KK=0:1:100;&lt;br /&gt;
error_log=zeros(length(KK),1); % Inicializamos el vector donde se almacenarán los errores logarítmicos.&lt;br /&gt;
for i=1:length(KK)&lt;br /&gt;
    k=KK(i);&lt;br /&gt;
    int=linspace(-pi,pi,k); % Intervalo de integración para los coef de Fourier.&lt;br /&gt;
    a0=1/pi.*integral(g,-pi,pi); % Coeficiente de Fourier a_0 (asociado a 1/2).&lt;br /&gt;
    a=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al coseno.&lt;br /&gt;
    b=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al seno.&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        f_cos=@(theta) g(theta).*cos(j.*theta); % Definimos la función a integrar asociada al coseno.&lt;br /&gt;
        f_sin=@(theta) g(theta).*sin(j.*theta); % Definimos la función a integrar asociada al seno.&lt;br /&gt;
        a(j)=1/pi.*integral(f_cos,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fourier del coseno.&lt;br /&gt;
        b(j)=1/pi.*integral(f_sin,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fouries del seno.&lt;br /&gt;
    end&lt;br /&gt;
    % Calculamos la solución u_k asociada al número de términos de la serie:&lt;br /&gt;
    suma=@(r,theta)0;&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        suma=@(r,theta) suma(r,theta) + a(j).*(r/R).^j.*cos(j.*theta)+b(j).*(r/R).^j.*sin(j.*theta);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['u_' num2str(i) '=@(r,theta) 1/2*a0 + suma(r,theta);']);&lt;br /&gt;
    eval(['u=@(r,theta)u_' num2str(i) '(r,theta) ;']);&lt;br /&gt;
    U_exacta=u_exacta(RR,THETA);&lt;br /&gt;
    U_fourier=u(RR,THETA);&lt;br /&gt;
    valores_max=max(U_exacta-U_fourier);&lt;br /&gt;
    sup=max(valores_max,[],'all');&lt;br /&gt;
    error_log(i)=log10(sup);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
plot(KK,error_log)&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Errores supremos frente al número de términos')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(10^n))')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Comportamiento de la solución ===&lt;br /&gt;
&lt;br /&gt;
== Ecuación de Poisson ==&lt;br /&gt;
&lt;br /&gt;
En esta parte del documento se va a proceder a resolver la ecuación de Poisson mediante un nuevo método. En primer lugar, esta ecuación viene dada por  &amp;lt;math&amp;gt; \Delta u = f &amp;lt;/math&amp;gt; siendo &amp;lt;math&amp;gt;u:\mathbb{R}^n \rightarrow \mathbb{R}&amp;lt;/math&amp;gt;y &amp;lt;math&amp;gt; f \in C^2(\mathbb{R})&amp;lt;/math&amp;gt;. Para este estudio se particularizará para n=2 y n=3.&lt;br /&gt;
&lt;br /&gt;
Se comenzará definiendo la solución fundamental de esta ecuación, pues se utilizará posteriormente para calcular el potencial newtoniano o logarítimico. Esta viene dada por &amp;lt;math&amp;gt;  \phi(x) = -\frac{1}{2\pi} log(|x|) &amp;lt;/math&amp;gt; si n=2 y &amp;lt;math&amp;gt;  \phi(x) = \frac{1}{4\pi |x| } &amp;lt;/math&amp;gt; si n=3.&lt;br /&gt;
=== Potencial newtoniano para &amp;lt;math&amp;gt; \mathbb{R}^3&amp;lt;/math&amp;gt; ===&lt;br /&gt;
Supongamos que &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
representa la densidad de una carga contenida en un conjunto compacto dentro del espacio tridimensional &amp;lt;math&amp;gt; \mathbb{R}^3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Entonces, la expresión &amp;lt;math&amp;gt; \phi(x-y)f(y)dy&amp;lt;/math&amp;gt; denota el potencial en el punto x. De esta manera el potencial total viene dado por la siguiente expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\mathbf{x}) = \int_{\mathbb{R}^n} f(\mathbf{y}) \phi(\mathbf{x} - \mathbf{y}) d\mathbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta fórmula se conoce como potencial Newtoniano de f y se aplica sobre funciones que en el infinito tienden de manera rápida a cero.&lt;br /&gt;
&lt;br /&gt;
A su vez, sea &amp;lt;math&amp;gt;f \in C^2(\mathbb{R}^3)&amp;lt;/math&amp;gt; con soporte compacto. Sea &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; el potencial newtoniano de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, definido por el potencial Newtoniano. Entonces, &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; es la única solución en &amp;lt;math&amp;gt;\mathbb{R}^3&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;\Delta u = -f&amp;lt;/math&amp;gt;  que pertenece a &amp;lt;math&amp;gt;C^2(\mathbb{R}^3)&amp;lt;/math&amp;gt; y se anula en el infinito. Es decir, dado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \begin{cases}&lt;br /&gt;
     \Delta u = -f \\&lt;br /&gt;
   u(x) \rightarrow 0  &amp;amp; \text{si } |x| \rightarrow \infty&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
su solución viene dada por el potencial newtoniano que se presenta anteriormente.&lt;br /&gt;
&lt;br /&gt;
=== Potencial logarítmico para &amp;lt;math&amp;gt; \mathbb{R}^2&amp;lt;/math&amp;gt; ===&lt;br /&gt;
Si el problema se presenta en &amp;lt;math&amp;gt; \mathbb{R}^2&amp;lt;/math&amp;gt; el potencial newtoniano se sustituye por el potencial logarítimico:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\mathbf{x}) = -\frac{1}{2\pi}\int_{\mathbb{R}^2}  log|\mathbf{x} - \mathbf{y}|f(\mathbf{y}) d\mathbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta manera, Sea &amp;lt;math&amp;gt;f \in C^2(\mathbb{R}^2)&amp;lt;/math&amp;gt; con soporte compacto, &amp;lt;math&amp;gt;u(\mathbf{x})&amp;lt;/math&amp;gt; es la única solución en &amp;lt;math&amp;gt;\mathbb{R}^2&amp;lt;/math&amp;gt; de:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \begin{cases}&lt;br /&gt;
     \Delta u = -f \\&lt;br /&gt;
   u(x)=-\frac{M}{2\pi} log |x| + O\left(\frac{1}{|x|} \right)  &amp;amp; \text{si } |x| \rightarrow \infty&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M= \int _{\mathbb{R}^2} f(\mathbf y) d\mathbf y&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
A continuación, veremos un ejemplo de lo explicado anteriormente para una correcta comprensión de ello. De esta manera, mediante el potencial logarítmico se aproximará la ecuación de Poisson cuando f sea la función característica de la bola de radio 1 y se estudiará su comportamiento en el infinito.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Para resolver este ejemplo se ha realizado un código en Matlab. La integral se ha simplificado de la siguiente manera:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; -\frac{1}{2\pi}\int_{\partial B_1 0} log|\mathbf{x} - \mathbf{y}| d\mathbf{y} = -\frac{\pi}{4}\frac{1}{2\pi}\int_{-1} ^1 \int_{-1} ^1 log|\mathbf{x} - \mathbf{y}| dx dy &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%aSe divide el dominio de cada variable en 200 puntos. Para y1 e y2 se coge&lt;br /&gt;
%el intervalo [-1,1] pues cuando este fuera de este intervalo la función vale 0 y por tanto la integral se anulará y para x1 y x2 se coge un intervalo muy grande pues la función tiene dominio todo R2.&lt;br /&gt;
i1 = linspace(-1,1,200);&lt;br /&gt;
i2 = linspace(-1,1,200);&lt;br /&gt;
i3 = linspace(-10^4,10^4,200);&lt;br /&gt;
i4 = linspace(-10^4,10^4,200);&lt;br /&gt;
&lt;br /&gt;
% Se define la función f anteriormente obtenida&lt;br /&gt;
f = @(y1, y2, x1, x2) -(pi/4)*(1/(2*pi))*log(sqrt((y1-x1).^2 + (y2-x2).^2));&lt;br /&gt;
&lt;br /&gt;
% Generamos una malla de puntos&lt;br /&gt;
[A, B] = meshgrid(i1, i2);&lt;br /&gt;
[C, D] = meshgrid(i3,i4);&lt;br /&gt;
&lt;br /&gt;
%Creamos una matriz cero donde se irán metiendo los valores que&lt;br /&gt;
%próximamente evaluaremos&lt;br /&gt;
values = zeros(size(A)); &lt;br /&gt;
&lt;br /&gt;
% Se crea el siguiente bucle para obtener los valores que necesitamos para&lt;br /&gt;
% la representación gráfica&lt;br /&gt;
for i = 1:length(i1)&lt;br /&gt;
    for j = 1:length(i2)&lt;br /&gt;
        fnum = @(x, y) f(x, y, i3(i), i4(j)); % Se crea este bucle para ir evaluando f en los distintos puntos (x1,x2)&lt;br /&gt;
        values(i, j) = trapz(i2, trapz(i1, fnum(A, B), 2)); % Evaluar fnum en la malla (A, B) y calcular la integral por el método del trapecio&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Se dibujan todos los puntos obtenidos&lt;br /&gt;
surf(C,D,values)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La representación obtenida es la siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Unoaitana.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación se va a comprobar si la solución se comporta de la manera esperada en el infinito. Tal y como se ha especificado anteriormente el comportamiento asintótico sigue la siguiente función:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x)=-\frac{M}{2\pi} log |x| + O(\frac{1}{|x|})&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
siendo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M= \int _{\mathbb{R}^2} f(\mathbf y) d\mathbf y&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación, se compara esta función con la solución obtenida anteriormente con el fin de observar si se comporta adecuadamente. Se ha creado el siguiente código:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
graf=zeros(length(i1));&lt;br /&gt;
xgraf=zeros(length(i1));&lt;br /&gt;
for i = 1:length(i1)&lt;br /&gt;
        fnum = @(x, y) f(x, y, i3(i), i4(i));&lt;br /&gt;
        &lt;br /&gt;
        graf(i) = trapz(i2, trapz(i1, fnum(A,B), 2));&lt;br /&gt;
        xgraf(i)=sqrt(2*(i3(i)^2));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
hold on&lt;br /&gt;
hol= @(x) -1/2*log(x);&lt;br /&gt;
valy = hol(xgraf);&lt;br /&gt;
% Crear el gráfico de las líneas y los puntos&lt;br /&gt;
hold on&lt;br /&gt;
plot(xgraf, valy, '-','DisplayName','Función asintótica'); &lt;br /&gt;
plot(xgraf, graf, '*','DisplayName','Función obtenida');&lt;br /&gt;
xlabel('Eje x')&lt;br /&gt;
ylabel('Eje y')&lt;br /&gt;
title('Gráfico función asintótica y función obtenida')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Se ha obtenido la siguiente gráfica, siendo la verde la función obtenida y la azul la función asintótica:&lt;br /&gt;
[[Archivo: Dosaitana.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
Tal y como se ve, se observa que el comportamiento es el esperado.&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaciones_de_Laplace_y_de_Poisson&amp;diff=71600</id>
		<title>Ecuaciones de Laplace y de Poisson</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaciones_de_Laplace_y_de_Poisson&amp;diff=71600"/>
				<updated>2024-04-19T18:03:23Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: /* Errores de la fórmula de Poisson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introducción ==&lt;br /&gt;
En este documento, nos centraremos en dos ecuaciones que tienen un amplio uso en diversos ámbitos como electrostática, mecánica de fluidos, física teórica y magnetostática: la ecuación de Laplace y la ecuación de Poisson. &lt;br /&gt;
Ambas ecuaciones las estudiaremos en el plano y las veremos aplicadas en problemas concretos. Veremos las limitaciones que presenta la fórumla de Poisson así como diferentes métodos analíticos para aproximar soluciones, y raíz de esto, analizaremos errores de aproximación. Por último, estudiaremos el comportamiento de soluciones tanto en un dominio dado, utilizando la desigualdad de Harnack, como asintóticamente en infinito.&lt;br /&gt;
 &lt;br /&gt;
 CREO QUE AQUÍ ME FALTAN PUNTOS Y COMAS&lt;br /&gt;
&lt;br /&gt;
== Ecuación de Laplace ==&lt;br /&gt;
La ecuación de Laplace, cuyo nombre nombre honra al distinguido físico-matemático Pierre-Simon Laplace, es una ecuación en derivadas parciales de tipo elíptico. REFERENCIA?&lt;br /&gt;
Construyamos un problema de derivadas parciales a partir de la ecuación de Laplace. La ecuación es,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \Delta u = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
con &amp;lt;math&amp;gt;u:\mathbb{R}^3 \rightarrow \mathbb{R}&amp;lt;/math&amp;gt; como incógnita. Esta ecuación se define en un dominio &amp;lt;math&amp;gt; \Omega &amp;lt;/math&amp;gt;, y en su frontera &amp;lt;math&amp;gt; \partial \Omega &amp;lt;/math&amp;gt; se pueden añadir condiciones de contorno Dirichlet, Neuman o mixtas. En este trabajo nos centraremos en las condiciones de contorno de tipo Dirichlet, las cuales igualan &amp;lt;math&amp;gt; u &amp;lt;/math&amp;gt; a una función específica &amp;lt;math&amp;gt; g &amp;lt;/math&amp;gt;. Con todo esto, llegamos al siguiente problema de derivadas parciales.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  \Omega \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial \Omega &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A fin de comprender mejor este problema, podemos examinar el siguiente ejemplo en concreto. &lt;br /&gt;
&lt;br /&gt;
===== Ejemplo bola unidad =====&lt;br /&gt;
Sea &amp;lt;math&amp;gt; B_1 ⊂ R^2 &amp;lt;/math&amp;gt; la bola unidad centrada en el origen. Planteamos el problema, &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_1 \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
A lo largo de este documento, en lo que tiene que ver con la ecuación de Laplace, visitaremos este ejemplo varias veces.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dentro de la resolución del problema planteado existen varios métodos por los que proceder. En este trabajo estudiaremos dos: la fórmula de Poisson y la serie de Fourier.&lt;br /&gt;
=== Solución por la fórmula de Poisson ===&lt;br /&gt;
Encontrar la solución del problema mediante la fórmula de Poisson viene determinado por el siguiente teorema.&lt;br /&gt;
&lt;br /&gt;
===== Teorema =====&lt;br /&gt;
La solución &amp;lt;math&amp;gt; u \in C^2(B_R \cup C(\overline{B_R}) &amp;lt;/math&amp;gt;del problema &amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_R \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial B_R &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt; donde &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; es una función continua viene dado por la fórmula de Poisson &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\vec{x})=\frac{R^2-|\vec{x}|^2}{w_n R}\int_{\partial B_R}\frac{g(\sigma)}{|\vec{x}-\sigma|^2} d\sigma. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es importante destacar que el denominador &amp;lt;math&amp;gt;|\vec{x}-\sigma|^2 &amp;lt;/math&amp;gt; se anula en la frontera de la bola llevándonos a una indeterminación y haciendo que la integral diverja. Esto también pasa si expresamos la fórmula en coordenadas polares &amp;lt;math&amp;gt;(r, \theta)&amp;lt;/math&amp;gt;. Tomando, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\vec{x} = (x_1, x_2) = (rcos(\theta), rsen(\theta)) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; g(rcos(\theta), rsen(\theta)) = G(\theta)&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
llegamos a la fórmula de Poisson, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; U(r,\theta)=\frac{R^2-r^2}{2\pi R}\int_{0}^{2\pi}\frac{g(s)}{R^2+r^2-2Rrcos(\theta-s)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso, el denominador de la integral también se anula para puntos cercanos a la frontera, concretamente cuando el coseno se hace 1. &lt;br /&gt;
&lt;br /&gt;
Veamos todo esto aplicado a la bola unidad pasado a coordenadas polares,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    U_{rr} + \frac{1}{r} U_r + \frac{1}{r^2} U_{\theta\theta} = 0, &amp;amp; (r, \theta) \in  B_1 \\&lt;br /&gt;
    U(1, \theta) = G(\theta), &amp;amp;   (r, \theta) \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la resolución de este problema vamos a tomar &amp;lt;math&amp;gt;G(\theta) = máx\{0, 1-\frac{2}{\pi} |\theta - \pi|\}&amp;lt;/math&amp;gt; y utilizaremos la fórmula de Poisson en polares tomando &amp;lt;math&amp;gt;R = 1&amp;lt;/math&amp;gt; y calculando la integral de manera aproximada con la fórmula del trapecio. Como hemos visto antes, la fórmula da problemas para puntos cercanos al borde. Esto lleva a una representación irregular de la frontera si dibujamos la solución sin tener en cuenta este problema.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: sol_sin_frontera_ejercicio1.png|400px|miniaturadeimagen|center|Solución del problema de Poisson sin aplicar la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
Es por esto por lo que la condición frontera no es prescindible en el problema. Para estimar &amp;lt;math&amp;gt; U(r,\theta)&amp;lt;/math&amp;gt;, utilizaremos la fórmula de Poisson para puntos ligeramente alejados del borde, y en el propio borde utilizaremos la condición frontera &amp;lt;math&amp;gt;U(R, \theta) = G(\theta)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: sol_ejercicio1.png|400px|miniaturadeimagen|center|Solución del problema de Poisson aplicando la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
En esta nueva gráfica podemos apreciar como la frontera no presenta las irregularidades anteriores. &lt;br /&gt;
Para conseguir estas gráficas hemos implementado el siguiente código en MatLab.&lt;br /&gt;
&lt;br /&gt;
====== Códigos ======&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Este código resuelve el problema planteado con la fórmula de Poisson sin aplicar condición frontera:&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g:&lt;br /&gt;
g=@(theta)max(0, 1-2/pi*abs(theta-pi));&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos r y theta sobre los que vamos a trabajar:&lt;br /&gt;
N=200; % Número de divisiones del intervalo&lt;br /&gt;
r=linspace(0,R,N); % No podemos llegar hasta la frontera&lt;br /&gt;
theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución de u con la fórmula de Poisson:&lt;br /&gt;
NN=100; % División del intervalo de integración.&lt;br /&gt;
s=linspace(0,2*pi,NN); % Intervalo de integración, para el método del trapecio.&lt;br /&gt;
u=zeros(N,N); % Inicializamos la matriz que almacena los valores de la solución.&lt;br /&gt;
for i=1:length(theta)&lt;br /&gt;
    for j=1:length(r) % Calculamos solución a través de la fórmula del trapecio:&lt;br /&gt;
        u(i,j)=1/(2*pi).*trapz(s,g(s).*(R^2-r(j).^2)./(R^2+r(j).^2-2.*r(j).*cos(s-theta(i))));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
% Creamos la malla:&lt;br /&gt;
[RR,THETA]=meshgrid(r,theta);&lt;br /&gt;
figure&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u,'EdgeColor','flat') % Representación gráfica&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('y')&lt;br /&gt;
zlabel('u(x,y)')&lt;br /&gt;
title('Solución de la ecuación de Laplace')&lt;br /&gt;
}}&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Este código resuelve el problema planteado con la fórmula de Poisson aplicando la condición frontera:&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g:&lt;br /&gt;
g=@(theta)max(0, 1-2/pi*abs(theta-pi));&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos r y theta sobre los que vamos a trabajar:&lt;br /&gt;
N=200; % Número de divisiones del intervalo&lt;br /&gt;
r=linspace(0,R-N^(-1),N-1); % No podemos llegar hasta la frontera&lt;br /&gt;
theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución de u con la fórmula de Poisson:&lt;br /&gt;
NN=1000; % División del intervalo de integración.&lt;br /&gt;
s=linspace(0,2*pi,NN); % Intervalo de integración, para el método del trapecio.&lt;br /&gt;
u=zeros(N,N); % Inicializamos la matriz que almacena los valores de la solución.&lt;br /&gt;
for i=1:length(theta)&lt;br /&gt;
    for j=1:length(r) % Calculamos solución a través de la fórmula del trapecio:&lt;br /&gt;
        u(i,j)=1/(2*pi).*trapz(s,g(s).*(R^2-r(j).^2)./(R^2+r(j).^2-2.*r(j).*cos(s-theta(i))));&lt;br /&gt;
    end&lt;br /&gt;
    % Establecemos condiciones frontera (por presentar problemas en esta):&lt;br /&gt;
    u(i,N)=g(theta(i));&lt;br /&gt;
end&lt;br /&gt;
r(N)=1;&lt;br /&gt;
% Creamos la malla:&lt;br /&gt;
[RR,THETA]=meshgrid(r,theta);&lt;br /&gt;
figure&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u,'EdgeColor','flat') % Representación gráfica&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('y')&lt;br /&gt;
zlabel('u(x,y)')&lt;br /&gt;
title('Solución de la ecuación de Laplace')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== Errores de la fórmula de Poisson =====&lt;br /&gt;
Como hemos observado anteriormente, la fórmula de Poisson presenta ciertas dificultades a la hora de aproximar la solución en la frontera, debido a la singularidad inherente de la integral. En este apartado examinaremos estas irregularidades calculando el error de la aproximación frente a la solución exacta.&lt;br /&gt;
&lt;br /&gt;
Volviendo al ejemplo de la bola unidad, esta vez vamos a suponer el problema,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_1 \\&lt;br /&gt;
    u = g(x,y) = xy, &amp;amp;   \text{x} \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que tiene como solución exacta la función armónica &amp;lt;math&amp;gt;u(x,y) = xy&amp;lt;/math&amp;gt;. Tal y como hemos hecho en el apartado anterior, calculamos la solución aproximada utilizando la fórmula de Poisson, la fórmula del trapecio y pasando a coordenadas polares.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    U_{rr} + \frac{1}{r} U_r + \frac{1}{r^2} U_{\theta\theta} = 0, &amp;amp; (r, \theta) \in  B_1 \\&lt;br /&gt;
    U(1,\theta)=G(\theta)=\cos(\theta)\sin(\theta), &amp;amp;   (r, \theta) \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vamos a distinguir entre dos tipos de puntos, aquellos que estén &amp;quot;alejados&amp;quot; de la frontera y aquellos sean inmediatos a esta. &lt;br /&gt;
Primero estudiaremos el error en puntos &amp;quot;alejados&amp;quot; de la frontera. Esto lo hacemos empleando distintas discretizaciones con &amp;lt;math&amp;gt; 10^n &amp;lt;/math&amp;gt; puntos en la fórmula del trapecio. Después, calculamos el error para cada discretización en un punto alejado, en este caso lo hacemos evaluando en &amp;lt;math&amp;gt;x = (r,\theta)=(0.9,\pi/4)&amp;lt;/math&amp;gt;. Posteriormente graficamos el error aplicando la fórmula,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;f(n):=\log_{10}(Error(10^n)), &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Obteniendo así la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: error_puntoalejado_ejercicio2.png|400px|miniaturadeimagen|center|Error de un punto alejado a la frontera]]&lt;br /&gt;
&lt;br /&gt;
Los resultados de esta gráfica cuadran con nuestra intuición, a mayor número de puntos menor es el error que se comete. Además podemos apreciar que el error se acaba estabilizando al rededor de &amp;lt;math&amp;gt;10^{-15}&amp;lt;/math&amp;gt;. Luego podemos concluir que la fórmula de Poisson proporciona una buena aproximación para puntos relativamente alejados de la frontera. &lt;br /&gt;
&lt;br /&gt;
A continuación, atendiendo a la fórmula del error &amp;quot;teórica&amp;quot; dada por el método del trapecio, la cual sigue la siguiente expresión:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;Error:=\left|-\cfrac{f''(\xi)(b-a)^3}{12n^2}\left|, &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Estudiemos ahora el error cometido en puntos &amp;quot;cercanos&amp;quot; a la frontera. En este caso vamos utilizar una única discretización de 100 puntos de la fórmula del trapecio y puntos que cada vez se acercan más a la frontera. Partiendo del punto &amp;lt;math&amp;gt;x = (r,\theta)=(0.9,\pi/4)&amp;lt;/math&amp;gt; vamos a ir avanzando hacia la frontera con puntos de la forma &amp;lt;math&amp;gt;(r,\theta)=(1-10^{-n}, \pi/4)&amp;lt;/math&amp;gt;. La gráfica entonces resulta ser:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: error_puntoscercanosfrontera_ejercicio2.png|400px|miniaturadeimagen|center|Error de puntos cercanos a la frontera]]&lt;br /&gt;
&lt;br /&gt;
En este caso el error incrementa según los puntos se acercan a la frontera y se acaba estabilizando en &amp;lt;math&amp;gt;-0,3&amp;lt;/math&amp;gt;.&lt;br /&gt;
El código utilizado para dibujar estas gráficas es el siguiente.&lt;br /&gt;
&lt;br /&gt;
{{matlab||codigo=&lt;br /&gt;
% El siguiente código ejecuta todas las gráficas planteadas a lo largo de esta sección&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Definimos el radio de la bola;&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos la función g:&lt;br /&gt;
g =@(theta) (R.^2.*cos(theta).*sin(theta));&lt;br /&gt;
&lt;br /&gt;
% Definimos la solución exacta:&lt;br /&gt;
u_exacta =@(r,theta) (r.^2.*cos(theta).*sin(theta));&lt;br /&gt;
&lt;br /&gt;
% Tomamos el punto r=0.9 y theta=pi/4:&lt;br /&gt;
r_valor=0.9;&lt;br /&gt;
theta_valor=pi/4;&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución u en el punto anterior:&lt;br /&gt;
n=1:1:8;&lt;br /&gt;
error=zeros(1,length(n)); % Inicializamos la matriz que almacena el error&lt;br /&gt;
error_log=zeros(1,length(n)); % Inicializamos la matriz que almacena el error logarítmico&lt;br /&gt;
u_valor=zeros(1,length(n)); % Inicializamos la matriz que almacena la solución de u para distintas discretizaciones del método del trapecio&lt;br /&gt;
for i=1:length(n)&lt;br /&gt;
    s=linspace(0,2*pi,10^(n(i))); % Intervalo de integración&lt;br /&gt;
    u_valor(i)=1/(2*pi).*trapz(s,g(s).*(R^2-r_valor.^2)./(R^2+r_valor.^2-2.*r_valor.*cos(s-theta_valor))); % Solución a través de la fórmula de Poisson&lt;br /&gt;
    &lt;br /&gt;
    % Calculamos el error:&lt;br /&gt;
    error(i)=abs(u_exacta(r_valor,theta_valor)-u_valor(i));&lt;br /&gt;
    % Calculamos el error logarítmico:&lt;br /&gt;
    error_log(i)=log10(error(i));&lt;br /&gt;
end&lt;br /&gt;
% Representamos gráficamente el error logarítmico para el punto r=0.9 y theta=pi/4:&lt;br /&gt;
plot(n,error_log,'o-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(10^n))')&lt;br /&gt;
grid on &lt;br /&gt;
grid minor&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Gráfica del error logarítmico')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Observamos la existencia de un error máximo que nos permita confirmar&lt;br /&gt;
% que los errores calculados anteriormente se encuentran por debajo siempre:&lt;br /&gt;
&lt;br /&gt;
% Calculamos la segunda derivada (requerida por la fórmula):&lt;br /&gt;
syms rr ss thetatheta&lt;br /&gt;
% Definimos de forma simbólica la función a derivar:&lt;br /&gt;
f=rr^2*cos(ss)*sin(ss)/(1+rr^2-2*rr*cos(thetatheta-ss));&lt;br /&gt;
derivada1=diff(f,ss); % Derivamos la función f en función de la variable s&lt;br /&gt;
derivada2=diff(derivada1,ss); % Derivamos la primera derivada en función de la variable s&lt;br /&gt;
% Calculamos el error máximo del método del trapecio:&lt;br /&gt;
nn=1:1:3; % Conforme el número sea más elevado aquí más aumentará el tiempo de compilación del programa.&lt;br /&gt;
error_max=zeros(length(nn),1); % Inicializamos a ceros el vector que almacenará los datos del error máximo del trapecio&lt;br /&gt;
for i=1:length(nn)&lt;br /&gt;
    N=10^i;&lt;br /&gt;
    s=linspace(0,2*pi,N);&lt;br /&gt;
    error_trapz=zeros(N,1); % Inicializamos a ceros el vector que almacenará los datos del error del trapecio para cada n&lt;br /&gt;
    for j=1:N&lt;br /&gt;
        s_valor=s(j);&lt;br /&gt;
        error_trapz(j)=log10(abs(-(2*pi).^3.*subs(derivada2, [rr,ss,thetatheta] ,[r_valor,s_valor,theta_valor])./(12.*(N.^2))));&lt;br /&gt;
    end&lt;br /&gt;
    error_max(i)=max(error_trapz);&lt;br /&gt;
end&lt;br /&gt;
% Representamos gráficamente el error máximo junto con el error calculado&lt;br /&gt;
% anteriormente:&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
plot(nn,error_log(1:length(nn)),'Color','blue')&lt;br /&gt;
plot(nn,error_max,'Color','red')&lt;br /&gt;
hold off&lt;br /&gt;
legend('Error','Error máximo')&lt;br /&gt;
title('Comparación de errores')&lt;br /&gt;
grid on&lt;br /&gt;
grid minor&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('Error')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Fijamos ahora para N=100 (puntos en la fórmula del trapecio).&lt;br /&gt;
% Vamos a calcular el error en los puntos de la forma r=1-10^(-n) y theta=pi/4 y veremos qué ocurre:&lt;br /&gt;
N=100;&lt;br /&gt;
r_valores=zeros(1,N); % Inicializamos vector que almacena los valores de r.&lt;br /&gt;
u_valores_r=zeros(1,N); % Inicializamos el vector que almacena los valores de la solución u para distintos valores de r.&lt;br /&gt;
u_exacta_r=zeros(1,N); % Inicializamos el vector que almacena los valores de la solución u exacta para distintos valores de r.&lt;br /&gt;
error_r=zeros(1,N); % Inicializamos el vector que almacena los errores.&lt;br /&gt;
error_log_r=zeros(1,N); % Inicializamos el vector que almacena los errores logarítmicos.&lt;br /&gt;
% theta_valor=pi/4 es el mismo que hemos usado antes, por lo que no lo volvemos a inicializar.&lt;br /&gt;
% Definimos el vector de integración de la fórmula del trapecio:&lt;br /&gt;
s=linspace(0,2*pi,N);&lt;br /&gt;
for j=1:N&lt;br /&gt;
    r_valores(j)=1-10^(-j);&lt;br /&gt;
    u_valores_r(j)=1/(2*pi).*trapz(s,g(s).*(R^2-r_valores(j).^2)./(R^2+r_valores(j).^2-2.*r_valores(j).*cos(s-theta_valor)));&lt;br /&gt;
    u_exacta_r(j)=u_exacta(r_valores(j),theta_valor);&lt;br /&gt;
    error_r(j)=abs(u_exacta_r(j)-u_valores_r(j));&lt;br /&gt;
    error_log_r(j)=log10(error_r(j));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
plot(1:1:N,error_log_r,'.-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(100))')&lt;br /&gt;
grid on &lt;br /&gt;
grid minor&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Errores en los puntos cercanos a la frontera')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Solución por la serie de Fourier ===&lt;br /&gt;
Una vez estudiada la solución por la fórmula de Poisson, en este apartado calcularemos la solución por serie de Fourier. La obtención de esta solución se basa en una cambio de variable a polares del problema, como el visto previamente, y resolución por separación de variables.  Hacemos esto aplicado al problema anterior en una bola de radio &amp;lt;math&amp;gt; R &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta U=U_{rr}+\frac{1}{r}U_r+\frac{1}{r^2}U_{\theta\theta}=0, r\in(0,R),\theta\in(0,2\pi)\\&lt;br /&gt;
U(R,\theta)=G(\theta)=R^2 sin(\theta)cos(\theta), \theta\in[0,2\pi).&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo cual nos conduce a, &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
U(r, \theta) = \frac{\alpha_{0}}{2}  +   \sum_{k=1}^{n} \left( \alpha_{k} \left(\frac{r}{R} \right)^k cos(k\theta) + \beta_{k} \left(\frac{r}{R} \right)^k sin(k\theta)\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que tiene coeficientes,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\alpha_{0} =\frac{1}{\pi}\int_{-\pi}^{\pi} \cos\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\alpha_{k} =\frac{1}{\pi}\int_{-\pi}^{\pi} cos(\theta) \sin(\theta) \cos\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\beta_{k} =\frac{1}{\pi}\int_{-\pi}^{\pi} cos(\theta) \sin(\theta) \sin\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Sin embargo, todos los coeficientes de Fourier son nulos, salvo por &amp;lt;math&amp;gt; \beta_2=\frac{R^2}{2}&amp;lt;/math&amp;gt;, luego la solución por series de Fourier final es, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}\sin(2\theta)=r^2\cos(\theta)\sin(\theta), r\in [0,R], \theta\in[0,2\pi)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Veamos ahora la gráfica que dibuja esta solución tomando &amp;lt;math&amp;gt; R = 1 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Tresaitana1.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Ecuación de Laplace&lt;br /&gt;
%% Apartado 3&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Definimos el radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% k términos de la serie:&lt;br /&gt;
K=[5 10 100];&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g y la función u exacta:&lt;br /&gt;
g=@(theta) R.^2.*cos(theta).*sin(theta);&lt;br /&gt;
u_exacta=@(r,theta) r.^2.*cos(theta).*sin(theta);&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos de theta y r:&lt;br /&gt;
N=300; % Número de divisiones de los intervalos theta y r.&lt;br /&gt;
Theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
r=linspace(0,R,N); % Intervalo r.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Calculamos los coeficientes de Fourier para distintos k-términos:&lt;br /&gt;
for i=1:length(K)&lt;br /&gt;
    k=K(i); % k-términos de la serie.&lt;br /&gt;
    int=linspace(-pi,pi,k); % Intervalo de integración para los coef de Fourier.&lt;br /&gt;
    a0=1/pi.*integral(g,-pi,pi); % Coeficiente de Fourier a_0 (asociado a 1/2).&lt;br /&gt;
    a=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al coseno.&lt;br /&gt;
    b=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al seno.&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        f_cos=@(theta) g(theta).*cos(j.*theta); % Definimos la función a integrar asociada al coseno.&lt;br /&gt;
        f_sin=@(theta) g(theta).*sin(j.*theta); % Definimos la función a integrar asociada al seno.&lt;br /&gt;
        a(j)=1/pi.*integral(f_cos,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fourier del coseno.&lt;br /&gt;
        b(j)=1/pi.*integral(f_sin,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fouries del seno.&lt;br /&gt;
    end&lt;br /&gt;
    % Calculamos la solución u_k asociada al número de términos de la serie:&lt;br /&gt;
    suma=@(r,theta)0;&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        suma=@(r,theta) suma(r,theta) + a(j).*(r/R).^j.*cos(j.*theta)+b(j).*(r/R).^j.*sin(j.*theta);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['u_' num2str(k) '=@(r,theta) 1/2*a0 + suma(r,theta);']);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
[RR,THETA]=meshgrid(r,Theta);&lt;br /&gt;
figure&lt;br /&gt;
for i=1:length(K)&lt;br /&gt;
    k=K(i);&lt;br /&gt;
    subplot(2,2,i)&lt;br /&gt;
    eval(['surf(RR.*cos(THETA),RR.*sin(THETA),u_' num2str(k) '(RR,THETA),&amp;quot;EdgeColor&amp;quot;,&amp;quot;flat&amp;quot;)'])&lt;br /&gt;
    title(&amp;quot;Solución de u para k=&amp;quot;, num2str(k))&lt;br /&gt;
end&lt;br /&gt;
subplot(2,2,4)&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u_exacta(RR,THETA),&amp;quot;EdgeColor&amp;quot;,&amp;quot;flat&amp;quot;)&lt;br /&gt;
title('Solución exacta')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Errores de la solución por serie de Fourier ====&lt;br /&gt;
Al igual que con la solución dada por la fórmula de Poisson, vamos a comparar la solución calculada con la solución exacta &amp;lt;math&amp;gt;u(x,y)=xy&amp;lt;/math&amp;gt; en la bola de radio 1. Vamos a contrastar las soluciones con 5, 10 y 100 términos con la exacta. Calcularemos el error resultante al aproximar la serie de Fourier y lo representamos gráficamente, mostrando el máximo error en función del número de términos utilizados en una escala logarítmica, es decir, pintaremos la función, &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \log_{10}(error(n)) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; error(n) &amp;lt;/math&amp;gt; es ahora el supremo del error con &amp;lt;math&amp;gt;n &amp;lt;/math&amp;gt;términos. Obetenemos así la siguente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Tresaitana2.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
Podemos apreciar en esta gráfica errores de orden muy pequeño, por lo general, los podemos considerar pequeño. Luego, nos damos cuenta de que, a diferencia de solución por la fórmula de Poisson, esta no nos da problemas en la frontera. Veamos el código utilizado para hacer la gráfica.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% A continuación se calcularán los errores de la aproximación de Fourier en función de los términos:&lt;br /&gt;
KK=0:1:100;&lt;br /&gt;
error_log=zeros(length(KK),1); % Inicializamos el vector donde se almacenarán los errores logarítmicos.&lt;br /&gt;
for i=1:length(KK)&lt;br /&gt;
    k=KK(i);&lt;br /&gt;
    int=linspace(-pi,pi,k); % Intervalo de integración para los coef de Fourier.&lt;br /&gt;
    a0=1/pi.*integral(g,-pi,pi); % Coeficiente de Fourier a_0 (asociado a 1/2).&lt;br /&gt;
    a=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al coseno.&lt;br /&gt;
    b=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al seno.&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        f_cos=@(theta) g(theta).*cos(j.*theta); % Definimos la función a integrar asociada al coseno.&lt;br /&gt;
        f_sin=@(theta) g(theta).*sin(j.*theta); % Definimos la función a integrar asociada al seno.&lt;br /&gt;
        a(j)=1/pi.*integral(f_cos,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fourier del coseno.&lt;br /&gt;
        b(j)=1/pi.*integral(f_sin,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fouries del seno.&lt;br /&gt;
    end&lt;br /&gt;
    % Calculamos la solución u_k asociada al número de términos de la serie:&lt;br /&gt;
    suma=@(r,theta)0;&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        suma=@(r,theta) suma(r,theta) + a(j).*(r/R).^j.*cos(j.*theta)+b(j).*(r/R).^j.*sin(j.*theta);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['u_' num2str(i) '=@(r,theta) 1/2*a0 + suma(r,theta);']);&lt;br /&gt;
    eval(['u=@(r,theta)u_' num2str(i) '(r,theta) ;']);&lt;br /&gt;
    U_exacta=u_exacta(RR,THETA);&lt;br /&gt;
    U_fourier=u(RR,THETA);&lt;br /&gt;
    valores_max=max(U_exacta-U_fourier);&lt;br /&gt;
    sup=max(valores_max,[],'all');&lt;br /&gt;
    error_log(i)=log10(sup);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
plot(KK,error_log)&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Errores supremos frente al número de términos')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(10^n))')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Comportamiento de la solución ===&lt;br /&gt;
&lt;br /&gt;
== Ecuación de Poisson ==&lt;br /&gt;
&lt;br /&gt;
En esta parte del documento se va a proceder a resolver la ecuación de Poisson mediante un nuevo método. En primer lugar, esta ecuación viene dada por  &amp;lt;math&amp;gt; \Delta u = f &amp;lt;/math&amp;gt; siendo &amp;lt;math&amp;gt;u:\mathbb{R}^n \rightarrow \mathbb{R}&amp;lt;/math&amp;gt;y &amp;lt;math&amp;gt; f \in C^2(\mathbb{R})&amp;lt;/math&amp;gt;. Para este estudio se particularizará para n=2 y n=3.&lt;br /&gt;
&lt;br /&gt;
Se comenzará definiendo la solución fundamental de esta ecuación, pues se utilizará posteriormente para calcular el potencial newtoniano o logarítimico. Esta viene dada por &amp;lt;math&amp;gt;  \phi(x) = -\frac{1}{2\pi} log(|x|) &amp;lt;/math&amp;gt; si n=2 y &amp;lt;math&amp;gt;  \phi(x) = \frac{1}{4\pi |x| } &amp;lt;/math&amp;gt; si n=3.&lt;br /&gt;
=== Potencial newtoniano para &amp;lt;math&amp;gt; \mathbb{R}^3&amp;lt;/math&amp;gt; ===&lt;br /&gt;
Supongamos que &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
representa la densidad de una carga contenida en un conjunto compacto dentro del espacio tridimensional &amp;lt;math&amp;gt; \mathbb{R}^3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Entonces, la expresión &amp;lt;math&amp;gt; \phi(x-y)f(y)dy&amp;lt;/math&amp;gt; denota el potencial en el punto x. De esta manera el potencial total viene dado por la siguiente expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\mathbf{x}) = \int_{\mathbb{R}^n} f(\mathbf{y}) \phi(\mathbf{x} - \mathbf{y}) d\mathbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta fórmula se conoce como potencial Newtoniano de f y se aplica sobre funciones que en el infinito tienden de manera rápida a cero.&lt;br /&gt;
&lt;br /&gt;
A su vez, sea &amp;lt;math&amp;gt;f \in C^2(\mathbb{R}^3)&amp;lt;/math&amp;gt; con soporte compacto. Sea &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; el potencial newtoniano de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, definido por el potencial Newtoniano. Entonces, &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; es la única solución en &amp;lt;math&amp;gt;\mathbb{R}^3&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;\Delta u = -f&amp;lt;/math&amp;gt;  que pertenece a &amp;lt;math&amp;gt;C^2(\mathbb{R}^3)&amp;lt;/math&amp;gt; y se anula en el infinito. Es decir, dado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \begin{cases}&lt;br /&gt;
     \Delta u = -f \\&lt;br /&gt;
   u(x) \rightarrow 0  &amp;amp; \text{si } |x| \rightarrow \infty&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
su solución viene dada por el potencial newtoniano que se presenta anteriormente.&lt;br /&gt;
&lt;br /&gt;
=== Potencial logarítmico para &amp;lt;math&amp;gt; \mathbb{R}^2&amp;lt;/math&amp;gt; ===&lt;br /&gt;
Si el problema se presenta en &amp;lt;math&amp;gt; \mathbb{R}^2&amp;lt;/math&amp;gt; el potencial newtoniano se sustituye por el potencial logarítimico:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\mathbf{x}) = -\frac{1}{2\pi}\int_{\mathbb{R}^2}  log|\mathbf{x} - \mathbf{y}|f(\mathbf{y}) d\mathbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta manera, Sea &amp;lt;math&amp;gt;f \in C^2(\mathbb{R}^2)&amp;lt;/math&amp;gt; con soporte compacto, &amp;lt;math&amp;gt;u(\mathbf{x})&amp;lt;/math&amp;gt; es la única solución en &amp;lt;math&amp;gt;\mathbb{R}^2&amp;lt;/math&amp;gt; de:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \begin{cases}&lt;br /&gt;
     \Delta u = -f \\&lt;br /&gt;
   u(x)=-\frac{M}{2\pi} log |x| + O\left(\frac{1}{|x|} \right)  &amp;amp; \text{si } |x| \rightarrow \infty&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M= \int _{\mathbb{R}^2} f(\mathbf y) d\mathbf y&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
A continuación, veremos un ejemplo de lo explicado anteriormente para una correcta comprensión de ello. De esta manera, mediante el potencial logarítmico se aproximará la ecuación de Poisson cuando f sea la función característica de la bola de radio 1 y se estudiará su comportamiento en el infinito.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Para resolver este ejemplo se ha realizado un código en Matlab. La integral se ha simplificado de la siguiente manera:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; -\frac{1}{2\pi}\int_{\partial B_1 0} log|\mathbf{x} - \mathbf{y}| d\mathbf{y} = -\frac{\pi}{4}\frac{1}{2\pi}\int_{-1} ^1 \int_{-1} ^1 log|\mathbf{x} - \mathbf{y}| dx dy &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%aSe divide el dominio de cada variable en 200 puntos. Para y1 e y2 se coge&lt;br /&gt;
%el intervalo [-1,1] pues cuando este fuera de este intervalo la función vale 0 y por tanto la integral se anulará y para x1 y x2 se coge un intervalo muy grande pues la función tiene dominio todo R2.&lt;br /&gt;
i1 = linspace(-1,1,200);&lt;br /&gt;
i2 = linspace(-1,1,200);&lt;br /&gt;
i3 = linspace(-10^4,10^4,200);&lt;br /&gt;
i4 = linspace(-10^4,10^4,200);&lt;br /&gt;
&lt;br /&gt;
% Se define la función f anteriormente obtenida&lt;br /&gt;
f = @(y1, y2, x1, x2) -(pi/4)*(1/(2*pi))*log(sqrt((y1-x1).^2 + (y2-x2).^2));&lt;br /&gt;
&lt;br /&gt;
% Generamos una malla de puntos&lt;br /&gt;
[A, B] = meshgrid(i1, i2);&lt;br /&gt;
[C, D] = meshgrid(i3,i4);&lt;br /&gt;
&lt;br /&gt;
%Creamos una matriz cero donde se irán metiendo los valores que&lt;br /&gt;
%próximamente evaluaremos&lt;br /&gt;
values = zeros(size(A)); &lt;br /&gt;
&lt;br /&gt;
% Se crea el siguiente bucle para obtener los valores que necesitamos para&lt;br /&gt;
% la representación gráfica&lt;br /&gt;
for i = 1:length(i1)&lt;br /&gt;
    for j = 1:length(i2)&lt;br /&gt;
        fnum = @(x, y) f(x, y, i3(i), i4(j)); % Se crea este bucle para ir evaluando f en los distintos puntos (x1,x2)&lt;br /&gt;
        values(i, j) = trapz(i2, trapz(i1, fnum(A, B), 2)); % Evaluar fnum en la malla (A, B) y calcular la integral por el método del trapecio&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Se dibujan todos los puntos obtenidos&lt;br /&gt;
surf(C,D,values)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La representación obtenida es la siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Unoaitana.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación se va a comprobar si la solución se comporta de la manera esperada en el infinito. Tal y como se ha especificado anteriormente el comportamiento asintótico sigue la siguiente función:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x)=-\frac{M}{2\pi} log |x| + O(\frac{1}{|x|})&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
siendo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M= \int _{\mathbb{R}^2} f(\mathbf y) d\mathbf y&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación, se compara esta función con la solución obtenida anteriormente con el fin de observar si se comporta adecuadamente. Se ha creado el siguiente código:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
graf=zeros(length(i1));&lt;br /&gt;
xgraf=zeros(length(i1));&lt;br /&gt;
for i = 1:length(i1)&lt;br /&gt;
        fnum = @(x, y) f(x, y, i3(i), i4(i));&lt;br /&gt;
        &lt;br /&gt;
        graf(i) = trapz(i2, trapz(i1, fnum(A,B), 2));&lt;br /&gt;
        xgraf(i)=sqrt(2*(i3(i)^2));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
hold on&lt;br /&gt;
hol= @(x) -1/2*log(x);&lt;br /&gt;
valy = hol(xgraf);&lt;br /&gt;
% Crear el gráfico de las líneas y los puntos&lt;br /&gt;
hold on&lt;br /&gt;
plot(xgraf, valy, '-','DisplayName','Función asintótica'); &lt;br /&gt;
plot(xgraf, graf, '*','DisplayName','Función obtenida');&lt;br /&gt;
xlabel('Eje x')&lt;br /&gt;
ylabel('Eje y')&lt;br /&gt;
title('Gráfico función asintótica y función obtenida')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Se ha obtenido la siguiente gráfica, siendo la verde la función obtenida y la azul la función asintótica:&lt;br /&gt;
[[Archivo: Dosaitana.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
Tal y como se ve, se observa que el comportamiento es el esperado.&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaciones_de_Laplace_y_de_Poisson&amp;diff=71576</id>
		<title>Ecuaciones de Laplace y de Poisson</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaciones_de_Laplace_y_de_Poisson&amp;diff=71576"/>
				<updated>2024-04-19T17:49:10Z</updated>
		
		<summary type="html">&lt;p&gt;Andrea Navarro: /* Errores de la fórmula de Poisson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introducción ==&lt;br /&gt;
En este documento, nos centraremos en dos ecuaciones que tienen un amplio uso en diversos ámbitos como electrostática, mecánica de fluidos, física teórica y magnetostática: la ecuación de Laplace y la ecuación de Poisson. &lt;br /&gt;
Ambas ecuaciones las estudiaremos en el plano y las veremos aplicadas en problemas concretos. Veremos las limitaciones que presenta la fórumla de Poisson así como diferentes métodos analíticos para aproximar soluciones, y raíz de esto, analizaremos errores de aproximación. Por último, estudiaremos el comportamiento de soluciones tanto en un dominio dado, utilizando la desigualdad de Harnack, como asintóticamente en infinito.&lt;br /&gt;
 &lt;br /&gt;
 CREO QUE AQUÍ ME FALTAN PUNTOS Y COMAS&lt;br /&gt;
&lt;br /&gt;
== Ecuación de Laplace ==&lt;br /&gt;
La ecuación de Laplace, cuyo nombre nombre honra al distinguido físico-matemático Pierre-Simon Laplace, es una ecuación en derivadas parciales de tipo elíptico. REFERENCIA?&lt;br /&gt;
Construyamos un problema de derivadas parciales a partir de la ecuación de Laplace. La ecuación es,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \Delta u = 0 &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
con &amp;lt;math&amp;gt;u:\mathbb{R}^3 \rightarrow \mathbb{R}&amp;lt;/math&amp;gt; como incógnita. Esta ecuación se define en un dominio &amp;lt;math&amp;gt; \Omega &amp;lt;/math&amp;gt;, y en su frontera &amp;lt;math&amp;gt; \partial \Omega &amp;lt;/math&amp;gt; se pueden añadir condiciones de contorno Dirichlet, Neuman o mixtas. En este trabajo nos centraremos en las condiciones de contorno de tipo Dirichlet, las cuales igualan &amp;lt;math&amp;gt; u &amp;lt;/math&amp;gt; a una función específica &amp;lt;math&amp;gt; g &amp;lt;/math&amp;gt;. Con todo esto, llegamos al siguiente problema de derivadas parciales.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  \Omega \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial \Omega &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A fin de comprender mejor este problema, podemos examinar el siguiente ejemplo en concreto. &lt;br /&gt;
&lt;br /&gt;
===== Ejemplo bola unidad =====&lt;br /&gt;
Sea &amp;lt;math&amp;gt; B_1 ⊂ R^2 &amp;lt;/math&amp;gt; la bola unidad centrada en el origen. Planteamos el problema, &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_1 \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
A lo largo de este documento, en lo que tiene que ver con la ecuación de Laplace, visitaremos este ejemplo varias veces.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dentro de la resolución del problema planteado existen varios métodos por los que proceder. En este trabajo estudiaremos dos: la fórmula de Poisson y la serie de Fourier.&lt;br /&gt;
=== Solución por la fórmula de Poisson ===&lt;br /&gt;
Encontrar la solución del problema mediante la fórmula de Poisson viene determinado por el siguiente teorema.&lt;br /&gt;
&lt;br /&gt;
===== Teorema =====&lt;br /&gt;
La solución &amp;lt;math&amp;gt; u \in C^2(B_R \cup C(\overline{B_R}) &amp;lt;/math&amp;gt;del problema &amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_R \\&lt;br /&gt;
    u = g, &amp;amp;   \text{x} \in \partial B_R &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt; donde &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; es una función continua viene dado por la fórmula de Poisson &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\vec{x})=\frac{R^2-|\vec{x}|^2}{w_n R}\int_{\partial B_R}\frac{g(\sigma)}{|\vec{x}-\sigma|^2} d\sigma. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es importante destacar que el denominador &amp;lt;math&amp;gt;|\vec{x}-\sigma|^2 &amp;lt;/math&amp;gt; se anula en la frontera de la bola llevándonos a una indeterminación y haciendo que la integral diverja. Esto también pasa si expresamos la fórmula en coordenadas polares &amp;lt;math&amp;gt;(r, \theta)&amp;lt;/math&amp;gt;. Tomando, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\vec{x} = (x_1, x_2) = (rcos(\theta), rsen(\theta)) &amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt; &lt;br /&gt;
 &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; g(rcos(\theta), rsen(\theta)) = G(\theta)&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
llegamos a la fórmula de Poisson, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; U(r,\theta)=\frac{R^2-r^2}{2\pi R}\int_{0}^{2\pi}\frac{g(s)}{R^2+r^2-2Rrcos(\theta-s)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso, el denominador de la integral también se anula para puntos cercanos a la frontera, concretamente cuando el coseno se hace 1. &lt;br /&gt;
&lt;br /&gt;
Veamos todo esto aplicado a la bola unidad pasado a coordenadas polares,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    U_{rr} + \frac{1}{r} U_r + \frac{1}{r^2} U_{\theta\theta} = 0, &amp;amp; (r, \theta) \in  B_1 \\&lt;br /&gt;
    U(1, \theta) = G(\theta), &amp;amp;   (r, \theta) \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para la resolución de este problema vamos a tomar &amp;lt;math&amp;gt;G(\theta) = máx\{0, 1-\frac{2}{\pi} |\theta - \pi|\}&amp;lt;/math&amp;gt; y utilizaremos la fórmula de Poisson en polares tomando &amp;lt;math&amp;gt;R = 1&amp;lt;/math&amp;gt; y calculando la integral de manera aproximada con la fórmula del trapecio. Como hemos visto antes, la fórmula da problemas para puntos cercanos al borde. Esto lleva a una representación irregular de la frontera si dibujamos la solución sin tener en cuenta este problema.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: sol_sin_frontera_ejercicio1.png|400px|miniaturadeimagen|center|Solución del problema de Poisson sin aplicar la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
Es por esto por lo que la condición frontera no es prescindible en el problema. Para estimar &amp;lt;math&amp;gt; U(r,\theta)&amp;lt;/math&amp;gt;, utilizaremos la fórmula de Poisson para puntos ligeramente alejados del borde, y en el propio borde utilizaremos la condición frontera &amp;lt;math&amp;gt;U(R, \theta) = G(\theta)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: sol_ejercicio1.png|400px|miniaturadeimagen|center|Solución del problema de Poisson aplicando la condición frontera]]&lt;br /&gt;
&lt;br /&gt;
En esta nueva gráfica podemos apreciar como la frontera no presenta las irregularidades anteriores. &lt;br /&gt;
Para conseguir estas gráficas hemos implementado el siguiente código en MatLab.&lt;br /&gt;
&lt;br /&gt;
====== Códigos ======&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Este código resuelve el problema planteado con la fórmula de Poisson sin aplicar condición frontera:&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g:&lt;br /&gt;
g=@(theta)max(0, 1-2/pi*abs(theta-pi));&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos r y theta sobre los que vamos a trabajar:&lt;br /&gt;
N=200; % Número de divisiones del intervalo&lt;br /&gt;
r=linspace(0,R,N); % No podemos llegar hasta la frontera&lt;br /&gt;
theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución de u con la fórmula de Poisson:&lt;br /&gt;
NN=100; % División del intervalo de integración.&lt;br /&gt;
s=linspace(0,2*pi,NN); % Intervalo de integración, para el método del trapecio.&lt;br /&gt;
u=zeros(N,N); % Inicializamos la matriz que almacena los valores de la solución.&lt;br /&gt;
for i=1:length(theta)&lt;br /&gt;
    for j=1:length(r) % Calculamos solución a través de la fórmula del trapecio:&lt;br /&gt;
        u(i,j)=1/(2*pi).*trapz(s,g(s).*(R^2-r(j).^2)./(R^2+r(j).^2-2.*r(j).*cos(s-theta(i))));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
% Creamos la malla:&lt;br /&gt;
[RR,THETA]=meshgrid(r,theta);&lt;br /&gt;
figure&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u,'EdgeColor','flat') % Representación gráfica&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('y')&lt;br /&gt;
zlabel('u(x,y)')&lt;br /&gt;
title('Solución de la ecuación de Laplace')&lt;br /&gt;
}}&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Este código resuelve el problema planteado con la fórmula de Poisson aplicando la condición frontera:&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g:&lt;br /&gt;
g=@(theta)max(0, 1-2/pi*abs(theta-pi));&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos r y theta sobre los que vamos a trabajar:&lt;br /&gt;
N=200; % Número de divisiones del intervalo&lt;br /&gt;
r=linspace(0,R-N^(-1),N-1); % No podemos llegar hasta la frontera&lt;br /&gt;
theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución de u con la fórmula de Poisson:&lt;br /&gt;
NN=1000; % División del intervalo de integración.&lt;br /&gt;
s=linspace(0,2*pi,NN); % Intervalo de integración, para el método del trapecio.&lt;br /&gt;
u=zeros(N,N); % Inicializamos la matriz que almacena los valores de la solución.&lt;br /&gt;
for i=1:length(theta)&lt;br /&gt;
    for j=1:length(r) % Calculamos solución a través de la fórmula del trapecio:&lt;br /&gt;
        u(i,j)=1/(2*pi).*trapz(s,g(s).*(R^2-r(j).^2)./(R^2+r(j).^2-2.*r(j).*cos(s-theta(i))));&lt;br /&gt;
    end&lt;br /&gt;
    % Establecemos condiciones frontera (por presentar problemas en esta):&lt;br /&gt;
    u(i,N)=g(theta(i));&lt;br /&gt;
end&lt;br /&gt;
r(N)=1;&lt;br /&gt;
% Creamos la malla:&lt;br /&gt;
[RR,THETA]=meshgrid(r,theta);&lt;br /&gt;
figure&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u,'EdgeColor','flat') % Representación gráfica&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('y')&lt;br /&gt;
zlabel('u(x,y)')&lt;br /&gt;
title('Solución de la ecuación de Laplace')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== Errores de la fórmula de Poisson =====&lt;br /&gt;
Como hemos observado anteriormente, la fórmula de Poisson presenta ciertas dificultades a la hora de aproximar la solución en la frontera, debido a la singularidad inherente de la integral. En este apartado examinaremos estas irregularidades calculando el error de la aproximación frente a la solución exacta.&lt;br /&gt;
&lt;br /&gt;
Volviendo al ejemplo de la bola unidad, esta vez vamos a suponer el problema,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    \Delta u = 0, &amp;amp; \text{x} \in  B_1 \\&lt;br /&gt;
    u = g(x,y) = xy, &amp;amp;   \text{x} \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que tiene como solución exacta la función armónica &amp;lt;math&amp;gt;u(x,y) = xy&amp;lt;/math&amp;gt;. Tal y como hemos hecho en el apartado anterior, calculamos la solución aproximada utilizando la fórmula de Poisson, la fórmula del trapecio y pasando a coordenadas polares.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
    U_{rr} + \frac{1}{r} U_r + \frac{1}{r^2} U_{\theta\theta} = 0, &amp;amp; (r, \theta) \in  B_1 \\&lt;br /&gt;
    U(1,\theta)=G(\theta)=\cos(\theta)\sin(\theta), &amp;amp;   (r, \theta) \in \partial B_1 &lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vamos a distinguir entre dos tipos de puntos, aquellos que estén &amp;quot;alejados&amp;quot; de la frontera y aquellos sean inmediatos a esta. &lt;br /&gt;
Primero estudiaremos el error en puntos &amp;quot;alejados&amp;quot; de la frontera. Esto lo hacemos empleando distintas discretizaciones con &amp;lt;math&amp;gt; 10^n &amp;lt;/math&amp;gt; puntos en la fórmula del trapecio. Después, calculamos el error para cada discretización en un punto alejado, en este caso lo hacemos evaluando en &amp;lt;math&amp;gt;x = (r,\theta)=(0.9,\pi/4)&amp;lt;/math&amp;gt;. Posteriormente graficamos el error aplicando la fórmula,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;f(n):=\log_{10}(Error(10^n)), &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Obteniendo así la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: error_puntoalejado_ejercicio2.png|400px|miniaturadeimagen|center|Error de un punto alejado a la frontera]]&lt;br /&gt;
&lt;br /&gt;
Los resultados de esta gráfica cuadran con nuestra intuición, a mayor número de puntos menor es el error que se comete. Además podemos apreciar que el error se acaba estabilizando al rededor de &amp;lt;math&amp;gt;10^{-15}&amp;lt;/math&amp;gt;. Luego podemos concluir que la fórmula de Poisson proporciona una buena aproximación para puntos relativamente alejados de la frontera. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Estudiemos ahora el error cometido en puntos &amp;quot;cercanos&amp;quot; a la frontera. En este caso vamos utilizar una única discretización de 100 puntos de la fórmula del trapecio y puntos que cada vez se acercan más a la frontera. Partiendo del punto &amp;lt;math&amp;gt;x = (r,\theta)=(0.9,\pi/4)&amp;lt;/math&amp;gt; vamos a ir avanzando hacia la frontera con puntos de la forma &amp;lt;math&amp;gt;(r,\theta)=(1-10^{-n}, \pi/4)&amp;lt;/math&amp;gt;. La gráfica entonces resulta ser:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: error_puntoscercanosfrontera_ejercicio2.png|400px|miniaturadeimagen|center|Error de puntos cercanos a la frontera]]&lt;br /&gt;
&lt;br /&gt;
En este caso el error incrementa según los puntos se acercan a la frontera y se acaba estabilizando en &amp;lt;math&amp;gt;-0,3&amp;lt;/math&amp;gt;.&lt;br /&gt;
El código utilizado para dibujar estas gráficas es el siguiente.&lt;br /&gt;
&lt;br /&gt;
{{matlab||codigo=&lt;br /&gt;
% El siguiente código ejecuta todas las gráficas planteadas a lo largo de esta sección&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Definimos el radio de la bola;&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% Definimos la función g:&lt;br /&gt;
g =@(theta) (R.^2.*cos(theta).*sin(theta));&lt;br /&gt;
&lt;br /&gt;
% Definimos la solución exacta:&lt;br /&gt;
u_exacta =@(r,theta) (r.^2.*cos(theta).*sin(theta));&lt;br /&gt;
&lt;br /&gt;
% Tomamos el punto r=0.9 y theta=pi/4:&lt;br /&gt;
r_valor=0.9;&lt;br /&gt;
theta_valor=pi/4;&lt;br /&gt;
&lt;br /&gt;
% Calculamos la solución u en el punto anterior:&lt;br /&gt;
n=1:1:8;&lt;br /&gt;
error=zeros(1,length(n)); % Inicializamos la matriz que almacena el error&lt;br /&gt;
error_log=zeros(1,length(n)); % Inicializamos la matriz que almacena el error logarítmico&lt;br /&gt;
u_valor=zeros(1,length(n)); % Inicializamos la matriz que almacena la solución de u para distintas discretizaciones del método del trapecio&lt;br /&gt;
for i=1:length(n)&lt;br /&gt;
    s=linspace(0,2*pi,10^(n(i))); % Intervalo de integración&lt;br /&gt;
    u_valor(i)=1/(2*pi).*trapz(s,g(s).*(R^2-r_valor.^2)./(R^2+r_valor.^2-2.*r_valor.*cos(s-theta_valor))); % Solución a través de la fórmula de Poisson&lt;br /&gt;
    &lt;br /&gt;
    % Calculamos el error:&lt;br /&gt;
    error(i)=abs(u_exacta(r_valor,theta_valor)-u_valor(i));&lt;br /&gt;
    % Calculamos el error logarítmico:&lt;br /&gt;
    error_log(i)=log10(error(i));&lt;br /&gt;
end&lt;br /&gt;
% Representamos gráficamente el error logarítmico para el punto r=0.9 y theta=pi/4:&lt;br /&gt;
plot(n,error_log,'o-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(10^n))')&lt;br /&gt;
grid on &lt;br /&gt;
grid minor&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Gráfica del error logarítmico')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Observamos la existencia de un error máximo que nos permita confirmar&lt;br /&gt;
% que los errores calculados anteriormente se encuentran por debajo siempre:&lt;br /&gt;
&lt;br /&gt;
% Calculamos la segunda derivada (requerida por la fórmula):&lt;br /&gt;
syms rr ss thetatheta&lt;br /&gt;
% Definimos de forma simbólica la función a derivar:&lt;br /&gt;
f=rr^2*cos(ss)*sin(ss)/(1+rr^2-2*rr*cos(thetatheta-ss));&lt;br /&gt;
derivada1=diff(f,ss); % Derivamos la función f en función de la variable s&lt;br /&gt;
derivada2=diff(derivada1,ss); % Derivamos la primera derivada en función de la variable s&lt;br /&gt;
% Calculamos el error máximo del método del trapecio:&lt;br /&gt;
nn=1:1:3; % Conforme el número sea más elevado aquí más aumentará el tiempo de compilación del programa.&lt;br /&gt;
error_max=zeros(length(nn),1); % Inicializamos a ceros el vector que almacenará los datos del error máximo del trapecio&lt;br /&gt;
for i=1:length(nn)&lt;br /&gt;
    N=10^i;&lt;br /&gt;
    s=linspace(0,2*pi,N);&lt;br /&gt;
    error_trapz=zeros(N,1); % Inicializamos a ceros el vector que almacenará los datos del error del trapecio para cada n&lt;br /&gt;
    for j=1:N&lt;br /&gt;
        s_valor=s(j);&lt;br /&gt;
        error_trapz(j)=log10(abs(-(2*pi).^3.*subs(derivada2, [rr,ss,thetatheta] ,[r_valor,s_valor,theta_valor])./(12.*(N.^2))));&lt;br /&gt;
    end&lt;br /&gt;
    error_max(i)=max(error_trapz);&lt;br /&gt;
end&lt;br /&gt;
% Representamos gráficamente el error máximo junto con el error calculado&lt;br /&gt;
% anteriormente:&lt;br /&gt;
figure&lt;br /&gt;
hold on&lt;br /&gt;
plot(nn,error_log(1:length(nn)),'Color','blue')&lt;br /&gt;
plot(nn,error_max,'Color','red')&lt;br /&gt;
hold off&lt;br /&gt;
legend('Error','Error máximo')&lt;br /&gt;
title('Comparación de errores')&lt;br /&gt;
grid on&lt;br /&gt;
grid minor&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('Error')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Fijamos ahora para N=100 (puntos en la fórmula del trapecio).&lt;br /&gt;
% Vamos a calcular el error en los puntos de la forma r=1-10^(-n) y theta=pi/4 y veremos qué ocurre:&lt;br /&gt;
N=100;&lt;br /&gt;
r_valores=zeros(1,N); % Inicializamos vector que almacena los valores de r.&lt;br /&gt;
u_valores_r=zeros(1,N); % Inicializamos el vector que almacena los valores de la solución u para distintos valores de r.&lt;br /&gt;
u_exacta_r=zeros(1,N); % Inicializamos el vector que almacena los valores de la solución u exacta para distintos valores de r.&lt;br /&gt;
error_r=zeros(1,N); % Inicializamos el vector que almacena los errores.&lt;br /&gt;
error_log_r=zeros(1,N); % Inicializamos el vector que almacena los errores logarítmicos.&lt;br /&gt;
% theta_valor=pi/4 es el mismo que hemos usado antes, por lo que no lo volvemos a inicializar.&lt;br /&gt;
% Definimos el vector de integración de la fórmula del trapecio:&lt;br /&gt;
s=linspace(0,2*pi,N);&lt;br /&gt;
for j=1:N&lt;br /&gt;
    r_valores(j)=1-10^(-j);&lt;br /&gt;
    u_valores_r(j)=1/(2*pi).*trapz(s,g(s).*(R^2-r_valores(j).^2)./(R^2+r_valores(j).^2-2.*r_valores(j).*cos(s-theta_valor)));&lt;br /&gt;
    u_exacta_r(j)=u_exacta(r_valores(j),theta_valor);&lt;br /&gt;
    error_r(j)=abs(u_exacta_r(j)-u_valores_r(j));&lt;br /&gt;
    error_log_r(j)=log10(error_r(j));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
plot(1:1:N,error_log_r,'.-')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(100))')&lt;br /&gt;
grid on &lt;br /&gt;
grid minor&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Errores en los puntos cercanos a la frontera')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Solución por la serie de Fourier ===&lt;br /&gt;
Una vez estudiada la solución por la fórmula de Poisson, en este apartado calcularemos la solución por serie de Fourier. La obtención de esta solución se basa en una cambio de variable a polares del problema, como el visto previamente, y resolución por separación de variables.  Hacemos esto aplicado al problema anterior en una bola de radio &amp;lt;math&amp;gt; R &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta U=U_{rr}+\frac{1}{r}U_r+\frac{1}{r^2}U_{\theta\theta}=0, r\in(0,R),\theta\in(0,2\pi)\\&lt;br /&gt;
U(R,\theta)=G(\theta)=R^2 sin(\theta)cos(\theta), \theta\in[0,2\pi).&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo cual nos conduce a, &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;&lt;br /&gt;
U(r, \theta) = \frac{\alpha_{0}}{2}  +   \sum_{k=1}^{n} \left( \alpha_{k} \left(\frac{r}{R} \right)^k cos(k\theta) + \beta_{k} \left(\frac{r}{R} \right)^k sin(k\theta)\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que tiene coeficientes,&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\alpha_{0} =\frac{1}{\pi}\int_{-\pi}^{\pi} \cos\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\alpha_{k} =\frac{1}{\pi}\int_{-\pi}^{\pi} cos(\theta) \sin(\theta) \cos\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;\beta_{k} =\frac{1}{\pi}\int_{-\pi}^{\pi} cos(\theta) \sin(\theta) \sin\Bigl(k \theta \Bigl) dx &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Sin embargo, todos los coeficientes de Fourier son nulos, salvo por &amp;lt;math&amp;gt; \beta_2=\frac{R^2}{2}&amp;lt;/math&amp;gt;, luego la solución por series de Fourier final es, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}\sin(2\theta)=r^2\cos(\theta)\sin(\theta), r\in [0,R], \theta\in[0,2\pi)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Veamos ahora la gráfica que dibuja esta solución tomando &amp;lt;math&amp;gt; R = 1 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Tresaitana1.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Ecuación de Laplace&lt;br /&gt;
%% Apartado 3&lt;br /&gt;
clear&lt;br /&gt;
close all&lt;br /&gt;
clc&lt;br /&gt;
format long&lt;br /&gt;
&lt;br /&gt;
% Definimos el radio de la bola:&lt;br /&gt;
R=1;&lt;br /&gt;
&lt;br /&gt;
% k términos de la serie:&lt;br /&gt;
K=[5 10 100];&lt;br /&gt;
&lt;br /&gt;
% Definimos nuestra función g y la función u exacta:&lt;br /&gt;
g=@(theta) R.^2.*cos(theta).*sin(theta);&lt;br /&gt;
u_exacta=@(r,theta) r.^2.*cos(theta).*sin(theta);&lt;br /&gt;
&lt;br /&gt;
% Definimos los intervalos de theta y r:&lt;br /&gt;
N=300; % Número de divisiones de los intervalos theta y r.&lt;br /&gt;
Theta=linspace(0,2*pi,N); % Intervalo theta.&lt;br /&gt;
r=linspace(0,R,N); % Intervalo r.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Calculamos los coeficientes de Fourier para distintos k-términos:&lt;br /&gt;
for i=1:length(K)&lt;br /&gt;
    k=K(i); % k-términos de la serie.&lt;br /&gt;
    int=linspace(-pi,pi,k); % Intervalo de integración para los coef de Fourier.&lt;br /&gt;
    a0=1/pi.*integral(g,-pi,pi); % Coeficiente de Fourier a_0 (asociado a 1/2).&lt;br /&gt;
    a=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al coseno.&lt;br /&gt;
    b=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al seno.&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        f_cos=@(theta) g(theta).*cos(j.*theta); % Definimos la función a integrar asociada al coseno.&lt;br /&gt;
        f_sin=@(theta) g(theta).*sin(j.*theta); % Definimos la función a integrar asociada al seno.&lt;br /&gt;
        a(j)=1/pi.*integral(f_cos,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fourier del coseno.&lt;br /&gt;
        b(j)=1/pi.*integral(f_sin,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fouries del seno.&lt;br /&gt;
    end&lt;br /&gt;
    % Calculamos la solución u_k asociada al número de términos de la serie:&lt;br /&gt;
    suma=@(r,theta)0;&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        suma=@(r,theta) suma(r,theta) + a(j).*(r/R).^j.*cos(j.*theta)+b(j).*(r/R).^j.*sin(j.*theta);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['u_' num2str(k) '=@(r,theta) 1/2*a0 + suma(r,theta);']);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
[RR,THETA]=meshgrid(r,Theta);&lt;br /&gt;
figure&lt;br /&gt;
for i=1:length(K)&lt;br /&gt;
    k=K(i);&lt;br /&gt;
    subplot(2,2,i)&lt;br /&gt;
    eval(['surf(RR.*cos(THETA),RR.*sin(THETA),u_' num2str(k) '(RR,THETA),&amp;quot;EdgeColor&amp;quot;,&amp;quot;flat&amp;quot;)'])&lt;br /&gt;
    title(&amp;quot;Solución de u para k=&amp;quot;, num2str(k))&lt;br /&gt;
end&lt;br /&gt;
subplot(2,2,4)&lt;br /&gt;
surf(RR.*cos(THETA),RR.*sin(THETA),u_exacta(RR,THETA),&amp;quot;EdgeColor&amp;quot;,&amp;quot;flat&amp;quot;)&lt;br /&gt;
title('Solución exacta')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Errores de la solución por serie de Fourier ====&lt;br /&gt;
Al igual que con la solución dada por la fórmula de Poisson, vamos a comparar la solución calculada con la solución exacta &amp;lt;math&amp;gt;u(x,y)=xy&amp;lt;/math&amp;gt; en la bola de radio 1. Vamos a contrastar las soluciones con 5, 10 y 100 términos con la exacta. Calcularemos el error resultante al aproximar la serie de Fourier y lo representamos gráficamente, mostrando el máximo error en función del número de términos utilizados en una escala logarítmica, es decir, pintaremos la función, &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \log_{10}(error(n)) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;math&amp;gt; error(n) &amp;lt;/math&amp;gt; es ahora el supremo del error con &amp;lt;math&amp;gt;n &amp;lt;/math&amp;gt;términos. Obetenemos así la siguente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Tresaitana2.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
Podemos apreciar en esta gráfica errores de orden muy pequeño, por lo general, los podemos considerar pequeño. Luego, nos damos cuenta de que, a diferencia de solución por la fórmula de Poisson, esta no nos da problemas en la frontera. Veamos el código utilizado para hacer la gráfica.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% A continuación se calcularán los errores de la aproximación de Fourier en función de los términos:&lt;br /&gt;
KK=0:1:100;&lt;br /&gt;
error_log=zeros(length(KK),1); % Inicializamos el vector donde se almacenarán los errores logarítmicos.&lt;br /&gt;
for i=1:length(KK)&lt;br /&gt;
    k=KK(i);&lt;br /&gt;
    int=linspace(-pi,pi,k); % Intervalo de integración para los coef de Fourier.&lt;br /&gt;
    a0=1/pi.*integral(g,-pi,pi); % Coeficiente de Fourier a_0 (asociado a 1/2).&lt;br /&gt;
    a=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al coseno.&lt;br /&gt;
    b=zeros(k,1); % Inicializamos la matriz de los coeficientes de Fourier asociados al seno.&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        f_cos=@(theta) g(theta).*cos(j.*theta); % Definimos la función a integrar asociada al coseno.&lt;br /&gt;
        f_sin=@(theta) g(theta).*sin(j.*theta); % Definimos la función a integrar asociada al seno.&lt;br /&gt;
        a(j)=1/pi.*integral(f_cos,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fourier del coseno.&lt;br /&gt;
        b(j)=1/pi.*integral(f_sin,-pi,pi); % Integramos de manera exacta obteniendo los coeficientes de Fouries del seno.&lt;br /&gt;
    end&lt;br /&gt;
    % Calculamos la solución u_k asociada al número de términos de la serie:&lt;br /&gt;
    suma=@(r,theta)0;&lt;br /&gt;
    for j=1:k&lt;br /&gt;
        suma=@(r,theta) suma(r,theta) + a(j).*(r/R).^j.*cos(j.*theta)+b(j).*(r/R).^j.*sin(j.*theta);&lt;br /&gt;
    end&lt;br /&gt;
    eval(['u_' num2str(i) '=@(r,theta) 1/2*a0 + suma(r,theta);']);&lt;br /&gt;
    eval(['u=@(r,theta)u_' num2str(i) '(r,theta) ;']);&lt;br /&gt;
    U_exacta=u_exacta(RR,THETA);&lt;br /&gt;
    U_fourier=u(RR,THETA);&lt;br /&gt;
    valores_max=max(U_exacta-U_fourier);&lt;br /&gt;
    sup=max(valores_max,[],'all');&lt;br /&gt;
    error_log(i)=log10(sup);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Representamos gráficamente&lt;br /&gt;
figure&lt;br /&gt;
plot(KK,error_log)&lt;br /&gt;
legend('Errores')&lt;br /&gt;
title('Errores supremos frente al número de términos')&lt;br /&gt;
xlabel('n')&lt;br /&gt;
ylabel('log_{10}(error(10^n))')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Comportamiento de la solución ===&lt;br /&gt;
&lt;br /&gt;
== Ecuación de Poisson ==&lt;br /&gt;
&lt;br /&gt;
En esta parte del documento se va a proceder a resolver la ecuación de Poisson mediante un nuevo método. En primer lugar, esta ecuación viene dada por  &amp;lt;math&amp;gt; \Delta u = f &amp;lt;/math&amp;gt; siendo &amp;lt;math&amp;gt;u:\mathbb{R}^n \rightarrow \mathbb{R}&amp;lt;/math&amp;gt;y &amp;lt;math&amp;gt; f \in C^2(\mathbb{R})&amp;lt;/math&amp;gt;. Para este estudio se particularizará para n=2 y n=3.&lt;br /&gt;
&lt;br /&gt;
Se comenzará definiendo la solución fundamental de esta ecuación, pues se utilizará posteriormente para calcular el potencial newtoniano o logarítimico. Esta viene dada por &amp;lt;math&amp;gt;  \phi(x) = -\frac{1}{2\pi} log(|x|) &amp;lt;/math&amp;gt; si n=2 y &amp;lt;math&amp;gt;  \phi(x) = \frac{1}{4\pi |x| } &amp;lt;/math&amp;gt; si n=3.&lt;br /&gt;
=== Potencial newtoniano para &amp;lt;math&amp;gt; \mathbb{R}^3&amp;lt;/math&amp;gt; ===&lt;br /&gt;
Supongamos que &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
representa la densidad de una carga contenida en un conjunto compacto dentro del espacio tridimensional &amp;lt;math&amp;gt; \mathbb{R}^3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Entonces, la expresión &amp;lt;math&amp;gt; \phi(x-y)f(y)dy&amp;lt;/math&amp;gt; denota el potencial en el punto x. De esta manera el potencial total viene dado por la siguiente expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\mathbf{x}) = \int_{\mathbb{R}^n} f(\mathbf{y}) \phi(\mathbf{x} - \mathbf{y}) d\mathbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta fórmula se conoce como potencial Newtoniano de f y se aplica sobre funciones que en el infinito tienden de manera rápida a cero.&lt;br /&gt;
&lt;br /&gt;
A su vez, sea &amp;lt;math&amp;gt;f \in C^2(\mathbb{R}^3)&amp;lt;/math&amp;gt; con soporte compacto. Sea &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; el potencial newtoniano de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, definido por el potencial Newtoniano. Entonces, &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; es la única solución en &amp;lt;math&amp;gt;\mathbb{R}^3&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;\Delta u = -f&amp;lt;/math&amp;gt;  que pertenece a &amp;lt;math&amp;gt;C^2(\mathbb{R}^3)&amp;lt;/math&amp;gt; y se anula en el infinito. Es decir, dado:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \begin{cases}&lt;br /&gt;
     \Delta u = -f \\&lt;br /&gt;
   u(x) \rightarrow 0  &amp;amp; \text{si } |x| \rightarrow \infty&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
su solución viene dada por el potencial newtoniano que se presenta anteriormente.&lt;br /&gt;
&lt;br /&gt;
=== Potencial logarítmico para &amp;lt;math&amp;gt; \mathbb{R}^2&amp;lt;/math&amp;gt; ===&lt;br /&gt;
Si el problema se presenta en &amp;lt;math&amp;gt; \mathbb{R}^2&amp;lt;/math&amp;gt; el potencial newtoniano se sustituye por el potencial logarítimico:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(\mathbf{x}) = -\frac{1}{2\pi}\int_{\mathbb{R}^2}  log|\mathbf{x} - \mathbf{y}|f(\mathbf{y}) d\mathbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De esta manera, Sea &amp;lt;math&amp;gt;f \in C^2(\mathbb{R}^2)&amp;lt;/math&amp;gt; con soporte compacto, &amp;lt;math&amp;gt;u(\mathbf{x})&amp;lt;/math&amp;gt; es la única solución en &amp;lt;math&amp;gt;\mathbb{R}^2&amp;lt;/math&amp;gt; de:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;  \begin{cases}&lt;br /&gt;
     \Delta u = -f \\&lt;br /&gt;
   u(x)=-\frac{M}{2\pi} log |x| + O\left(\frac{1}{|x|} \right)  &amp;amp; \text{si } |x| \rightarrow \infty&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
donde &amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M= \int _{\mathbb{R}^2} f(\mathbf y) d\mathbf y&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;.&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
A continuación, veremos un ejemplo de lo explicado anteriormente para una correcta comprensión de ello. De esta manera, mediante el potencial logarítmico se aproximará la ecuación de Poisson cuando f sea la función característica de la bola de radio 1 y se estudiará su comportamiento en el infinito.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Para resolver este ejemplo se ha realizado un código en Matlab. La integral se ha simplificado de la siguiente manera:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; -\frac{1}{2\pi}\int_{\partial B_1 0} log|\mathbf{x} - \mathbf{y}| d\mathbf{y} = -\frac{\pi}{4}\frac{1}{2\pi}\int_{-1} ^1 \int_{-1} ^1 log|\mathbf{x} - \mathbf{y}| dx dy &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%aSe divide el dominio de cada variable en 200 puntos. Para y1 e y2 se coge&lt;br /&gt;
%el intervalo [-1,1] pues cuando este fuera de este intervalo la función vale 0 y por tanto la integral se anulará y para x1 y x2 se coge un intervalo muy grande pues la función tiene dominio todo R2.&lt;br /&gt;
i1 = linspace(-1,1,200);&lt;br /&gt;
i2 = linspace(-1,1,200);&lt;br /&gt;
i3 = linspace(-10^4,10^4,200);&lt;br /&gt;
i4 = linspace(-10^4,10^4,200);&lt;br /&gt;
&lt;br /&gt;
% Se define la función f anteriormente obtenida&lt;br /&gt;
f = @(y1, y2, x1, x2) -(pi/4)*(1/(2*pi))*log(sqrt((y1-x1).^2 + (y2-x2).^2));&lt;br /&gt;
&lt;br /&gt;
% Generamos una malla de puntos&lt;br /&gt;
[A, B] = meshgrid(i1, i2);&lt;br /&gt;
[C, D] = meshgrid(i3,i4);&lt;br /&gt;
&lt;br /&gt;
%Creamos una matriz cero donde se irán metiendo los valores que&lt;br /&gt;
%próximamente evaluaremos&lt;br /&gt;
values = zeros(size(A)); &lt;br /&gt;
&lt;br /&gt;
% Se crea el siguiente bucle para obtener los valores que necesitamos para&lt;br /&gt;
% la representación gráfica&lt;br /&gt;
for i = 1:length(i1)&lt;br /&gt;
    for j = 1:length(i2)&lt;br /&gt;
        fnum = @(x, y) f(x, y, i3(i), i4(j)); % Se crea este bucle para ir evaluando f en los distintos puntos (x1,x2)&lt;br /&gt;
        values(i, j) = trapz(i2, trapz(i1, fnum(A, B), 2)); % Evaluar fnum en la malla (A, B) y calcular la integral por el método del trapecio&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Se dibujan todos los puntos obtenidos&lt;br /&gt;
surf(C,D,values)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La representación obtenida es la siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo: Unoaitana.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación se va a comprobar si la solución se comporta de la manera esperada en el infinito. Tal y como se ha especificado anteriormente el comportamiento asintótico sigue la siguiente función:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x)=-\frac{M}{2\pi} log |x| + O(\frac{1}{|x|})&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
siendo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M= \int _{\mathbb{R}^2} f(\mathbf y) d\mathbf y&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación, se compara esta función con la solución obtenida anteriormente con el fin de observar si se comporta adecuadamente. Se ha creado el siguiente código:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
graf=zeros(length(i1));&lt;br /&gt;
xgraf=zeros(length(i1));&lt;br /&gt;
for i = 1:length(i1)&lt;br /&gt;
        fnum = @(x, y) f(x, y, i3(i), i4(i));&lt;br /&gt;
        &lt;br /&gt;
        graf(i) = trapz(i2, trapz(i1, fnum(A,B), 2));&lt;br /&gt;
        xgraf(i)=sqrt(2*(i3(i)^2));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
hold on&lt;br /&gt;
hol= @(x) -1/2*log(x);&lt;br /&gt;
valy = hol(xgraf);&lt;br /&gt;
% Crear el gráfico de las líneas y los puntos&lt;br /&gt;
hold on&lt;br /&gt;
plot(xgraf, valy, '-','DisplayName','Función asintótica'); &lt;br /&gt;
plot(xgraf, graf, '*','DisplayName','Función obtenida');&lt;br /&gt;
xlabel('Eje x')&lt;br /&gt;
ylabel('Eje y')&lt;br /&gt;
title('Gráfico función asintótica y función obtenida')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Se ha obtenido la siguiente gráfica, siendo la verde la función obtenida y la azul la función asintótica:&lt;br /&gt;
[[Archivo: Dosaitana.jpg|400px|thumb|center|Representación de la solución ]]&lt;br /&gt;
&lt;br /&gt;
Tal y como se ve, se observa que el comportamiento es el esperado.&lt;/div&gt;</summary>
		<author><name>Andrea Navarro</name></author>	</entry>

	</feed>