<?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=Ra%C3%BAl.Ortega</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=Ra%C3%BAl.Ortega"/>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/wiki/Especial:Contribuciones/Ra%C3%BAl.Ortega"/>
		<updated>2026-04-26T10:58:18Z</updated>
		<subtitle>Contribuciones del usuario</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71642</id>
		<title>Ecuación de Laplace y de Poisson (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71642"/>
				<updated>2024-04-19T18:32:53Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar  la ecuación de Laplace y la ecuación de Poisson. Para ello vamos a calcular soluciones de distintas formas usando cosas como la fórmula de Poisson o el potencial logarítmico, graficándolas y modificando algunos de los parámetros.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Laplace=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la exactitud que tienen dos formas diferentes de resolver la ecuación de Laplace. Para hacer esto tomamos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta u=0,&amp;amp; x\in B_1\\&lt;br /&gt;
u=g,&amp;amp; x\in\partial B_1&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt; B_1\subset\mathbb{R}^2 &amp;lt;/math&amp;gt; la bola de radio 1 centrada en el (0,0).&lt;br /&gt;
&lt;br /&gt;
==Fórmula de Poisson==&lt;br /&gt;
&lt;br /&gt;
Una de las formas de resolver este tipo de problemas es mediante la fórmula de Poisson, que es: &amp;lt;math&amp;gt; u=\frac{R^2-|x|^2}{2\pi R}\int_{\partial B_R}\frac{g(\sigma)}{|x-\sigma|^2} d\sigma, &amp;lt;/math&amp;gt; donde R es el radio de la bola y &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; la distancia al centro de la bola.&lt;br /&gt;
&lt;br /&gt;
Para ver cómo funciona esta fórmula vamos a resolver el problema tomando &amp;lt;math&amp;gt; g(\theta)=max \{0,1-\frac{2}{\pi}|\theta-\pi|\}&amp;lt;/math&amp;gt;. Como esta función, que es la que representa las condiciones frontera, está en coordenadas polares vamos a expresar la fórmula de Poisson en polares.&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}\int_{0}^{2\pi}g(s)\frac{R^2-r^2}{R^2+r^2-2rRcos(s-\theta)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la fórmula expresada de esta manera, podemos aplicarla a nuestro problema tomando R=1 y sustituyendo g por nuestra función. Teniendo esto en cuenta vamos a resolver el problema realizando la integral mediante la [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals regla del trapecio] y a representar la solución.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF41.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calcular la solución de la ecuación de Laplace  en la bola de radio&lt;br /&gt;
% unidad usando la fórmula de Poisson. Con condición frontera la función g&lt;br /&gt;
&lt;br /&gt;
g = @(theta) max(0,1-2/pi*abs(theta-pi)); %Definimos la función g(theta)&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):0.9; %Partición en r (no llegamos hasta el borde de la bola)&lt;br /&gt;
&lt;br /&gt;
w = ones(N+1,1);                 &lt;br /&gt;
w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
u = zeros(length(r)+1,length(theta));&lt;br /&gt;
for j = 1:length(theta)&lt;br /&gt;
    for i = 1:length(r)&lt;br /&gt;
        f = g(theta)*(1-r(i).^2)./(1+r(i).^2-2*r(i)*cos(theta-theta(j))); %Función a integrar&lt;br /&gt;
        u(i,j) = h*w'*f'/(2*pi); %Fórmula de Poison usando la fórmula del trapecio para integrar.&lt;br /&gt;
    end&lt;br /&gt;
    u(length(r)+1,j) = g(theta(j)); %Añadimos la condicón frontera directamente&lt;br /&gt;
end&lt;br /&gt;
r(length(r)+1) = 1;&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, u, 'EdgeColor', 'none');&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;
En la imagen podemos observar que la fórmula de Poisson nos da problemas en la frontera, esto se debe al carácter singular de la integral cerca del borde. Para solucionar esto vamos a tomar directamente el valor de g en el borde de la bola. Al hacer esto obtenemos la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF411.jpg|400px|thumb|center| Sustituyendo g en el borde de la bola]]&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas podemos observar que efectivamente sustituir g en el borde hace que evitemos la singularidad de la integral en la frontera.&lt;br /&gt;
&lt;br /&gt;
Como hemos visto con este ejemplo la fórmula de Poisson tiene problemas para aproximar la solución cerca de la frontera. Por lo que para estudiar esto, vamos a tomar &amp;lt;math&amp;gt; g(x,y)=xy &amp;lt;/math&amp;gt; como condición frontera y &amp;lt;math&amp;gt; u(x,y)=xy &amp;lt;/math&amp;gt; como solución del problema para calcular los diferentes errores que genera la fórmula de Poisson. &lt;br /&gt;
&lt;br /&gt;
Para hacerlo vamos a tomar tanto u como g en coordenadas polares, ya que al estudiar el problema en una bola esto nos permite hacernos una mejor idea de lo que ocurre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
U(r,\theta)=r^2cos(\theta)sin(\theta)\\&lt;br /&gt;
U(1,\theta)=G(\theta)=cos(\theta)sin(\theta)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Primero vamos a tomar un punto &amp;quot;lejos&amp;quot; de la frontera &amp;lt;math&amp;gt; (r,\theta)=(0.9,\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo evoluciona el error, es decir, la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson en ese punto, en función de n. Siendo n el número que determina el número de intervalos en &amp;lt;math&amp;gt; 10^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por el ejemplo anterior, cabe esperar que la fórmula en este punto aproxime bien a la función ya que no es un punto cercano a la frontera, y por lo tanto el error vaya disminuyendo según aumenta el número de intervalos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF42.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral mediante&lt;br /&gt;
% el método del trapecio en función del tamaño de la discretización&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 8; %Discretización máxima: 10^N_max&lt;br /&gt;
err = zeros(N_max,1);&lt;br /&gt;
for m = 1:N_max&lt;br /&gt;
    N = 10^m; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f = g(theta)*(1-0.9.^2)./(1+0.9.^2-2*0.9*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u = h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (0.9,pi/4)&lt;br /&gt;
    &lt;br /&gt;
    % Valor de la solución exacta (x*y=R^2*cos(theta)*sin(theta))&lt;br /&gt;
    % en el punto (0.9, pi/4)&lt;br /&gt;
    exacta = 0.9^2*cos(pi/4)*sin(pi/4); &lt;br /&gt;
&lt;br /&gt;
    % Calculamos el error como la diferencia en valor absoluto entre&lt;br /&gt;
    % la solución exacta y la calculada con la fórmula de Poisson&lt;br /&gt;
    err(m) = abs(exacta-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,log10(err),color='b',LineWidth=1.5) %Dibujamos la gráfica del error en escala logarítmica&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('log_{10}(error(10^n))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado antes, al observar la gráfica vemos que el error va disminuyendo según aumenta n. Esto tiene sentido ya que cuantos más intervalos hay en la discretización más exacta va a ser la aproximación. También podemos observar que se estabiliza cuando llega aproximadamente a &amp;lt;math&amp;gt; n=3 &amp;lt;/math&amp;gt;, esto se debe a que con &amp;lt;math&amp;gt; 10^3 &amp;lt;/math&amp;gt; intervalos el método del trapecio ya aproxima lo suficientemente bien a la función original, lo que hace que aunque aumente el número de intervalos la aproximación no tenga mucho margen de mejor. Con esto hemos visto que en un punto que no esté cerca del borde la fórmula de Poisson va a funcionar bien. &lt;br /&gt;
&lt;br /&gt;
También podemos usar la fórmula del error máximo del método del trapecio para obtener una cota para el error y ver que los errores calculados numéricamente se encuentran por debajo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(n) \leq \left|-\frac{f’’(\xi)(b-a)^3}{12n^2} \right| &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt; es el intervalo de integración, &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; la función a integrar, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; el número de particiones de la discretización y &amp;lt;math&amp;gt; \xi &amp;lt;/math&amp;gt; un cierto valor entre &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt;. Para nuetro problema, &amp;lt;math&amp;gt;[a,b]=[0,2\pi]&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f(\theta)=\frac{(1-r^2) sen(\theta)cos(\theta)}{2\pi(1+r^2-2rcos(\alpha - \theta))}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Derivando &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; dos veces y maximizando su valor en &amp;lt;math&amp;gt;[0,2\pi]&amp;lt;/math&amp;gt;, obtenemos la siguiente cota:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;error(n) \leq \left|- \frac{\pi^2(r^6 - r^5 + 6 r^3 + r^2 -r +2) }{3 n^2(1-r)^5} \right|&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La dibujamos en función de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; junto con el error calculado numéricamente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Cota error.png|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Usando el vector err calculado en el anterior código, representamos la misma gráfica junto&lt;br /&gt;
% con la gráfica de la cota estimada del error&lt;br /&gt;
&lt;br /&gt;
%Definimos la cota del error estimada mediante la fórmula del trapecio&lt;br /&gt;
cota = @(n) abs(-pi^2*(r^6-r^5+6*r^3+r^2-r+2)./(3*(10.^(2*n))*(1-r)^5)); &lt;br /&gt;
&lt;br /&gt;
%Dibujamos las gráficas del error en escala logarítmica&lt;br /&gt;
hold on&lt;br /&gt;
plot(1:N_max,log10(err(:,1)),color='b',LineWidth=1.5)&lt;br /&gt;
plot(1:N_max,log10(cota(1:N_max)),color='r',LineWidth=1.5)&lt;br /&gt;
legend('Error absoluto', 'Cota del error'); % Leyenda&lt;br /&gt;
hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Comprobamos que el error de la aproximación queda por debajo de esta cota (que no es muy ajustada).&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo se comporta el error según nos acercamos a la frontera. Para hacer esto vamos a tomar el punto &amp;lt;math&amp;gt; (r,\theta)=(1-10^{-n},\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo varía el error (la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson) cuando aumentamos la n, es decir, cuando nos vamos acercando a la frontera. Como hemos comentado anteriormente cabe esperar que al aumentar la n el error va a aumentar, ya que como hemos visto en el primer ejemplo cerca de la frontera la fórmula de Poisson da problemas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF421.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral según nos acercamos al&lt;br /&gt;
% borde de la región.&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 20;&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for n = 1:N_max&lt;br /&gt;
    N = 10^2; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f=g(theta)*(1-(1-10^(-n)).^2)./(1+(1-10^(-n)).^2-2*(1-10^(-n))*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u=h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (1-10^-n,pi/4)&lt;br /&gt;
    err(n)=abs((1-10^(-n))^2*cos(pi/4)*sin(pi/4)-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,err,color='b',LineWidth=1.5) %Dibujamos la gráfica del error&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('Error');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En la gráfica podemos ver cómo efectivamente el error para valores de n pequeños, es decir, puntos que están relativamente lejos de la frontera, el error es pequeño al igual que en el caso anterior. Por el contrario, según aumenta la n, es decir, según nos acercamos a la frontera el error aumenta, lo cual tiene sentido ya que como hemos comentado antes la fórmula de Poisson da problemas en la frontera.&lt;br /&gt;
&lt;br /&gt;
Además, podemos observar que el error se estabiliza aproximadamente en  &amp;lt;math&amp;gt; n=4 &amp;lt;/math&amp;gt;, esto se debe a que para este valor de n el punto ya esta suficientemente cerca de la frontera como para representar todo el error que se da en esta y por ello aunque nos acerquemos más a la frontera (aumente n) el error se mantiene estable en  &amp;lt;math&amp;gt; 0.5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Serie de Fourier==&lt;br /&gt;
La otra forma que vamos a ver para resolver la ecuación de Laplace es mediante [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) series de Fourier]. Para hacer esto vamos a tomar nuestro problema en coordenadas polares:&lt;br /&gt;
&lt;br /&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,&amp;amp; r\in(0,1),\theta\in[0,2\pi]\\&lt;br /&gt;
U(1,\theta)=G(\theta)=sin(\theta)cos(\theta),&amp;amp; \theta\in[0,2\pi]&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y a aplicar el método de separación de variables. Al hacer esto obtenemos que: &amp;lt;math&amp;gt; U(r,\theta)=\frac{a_0}{2}+\sum_{k=1}^\infty a_kr^kcos(k\theta)+b_kr^ksin(k\theta).&amp;lt;/math&amp;gt;. Para que esto sea solución falta hacer que cumpla la condición frontera, para ello vamos a tomar la serie de Fourier de &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; L^2([-\pi,\pi]) &amp;lt;/math&amp;gt;, que es &amp;lt;math&amp;gt; G(\theta)=\frac{\alpha_0}{2}+\sum_{k=1}^\infty \alpha_kcos(k\theta)+\beta_ksin(k\theta)&amp;lt;/math&amp;gt; y a igualar ambas series cuando r=1. Al hacer esto vemos que para que ambas series sean iguale los coeficientes tienen que ser iguales, por lo que vamos a calcular los coeficientes de  &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; y a ver su equivalencia con los de  &amp;lt;math&amp;gt; U &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; a_0=\alpha_0=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)d\theta \quad \quad \quad a_k=\alpha_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)cos(k\theta)d\theta \quad \quad \quad b_k=\beta_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)sin(k\theta)d\theta. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al realizar estas integrales obtenemos que &amp;lt;math&amp;gt; a_0=0,a_k=0\forall k &amp;lt;/math&amp;gt; y todos los &amp;lt;math&amp;gt; b_k &amp;lt;/math&amp;gt; son 0 excepto &amp;lt;math&amp;gt; b_2=\frac{1}{2} &amp;lt;/math&amp;gt;. Por lo que la solución nos queda de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}sin(2\theta) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a dibujar la solución, cuya gráfica va a ser exacta ya que la serie tiene un único término.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF43.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Dibujamos la solución calculada por serie de Fourier&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^(2).*sin(2.*theta)/2; %Solución de la ecuación&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):1; %Partición en r&lt;br /&gt;
for j = 1:N+1&lt;br /&gt;
    for i = 1:N+1&lt;br /&gt;
        U(i,j) = u(r(i),theta(j));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, U, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('y');&lt;br /&gt;
zlabel('u(x, y)');&lt;br /&gt;
title('Solución exacta calculada por serie de Fourier');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al haber resuelto el problema por ambos métodos, observamos que este último nos da la solución de forma exacta, por lo que en este caso va a ser más efectivo que el anterior. Esto no tendría porque ser así en todos los casos ya que la serie de Fourier para otra función G distinta puede tener infinitos términos, lo que haría que la aproximación no sea exacta, pero aun así sería más exacta que con el método anterior en los puntos cercanos a la forntera.&lt;br /&gt;
&lt;br /&gt;
==Desigualdad de Harnack==&lt;br /&gt;
&lt;br /&gt;
En esta sección vamos a usar la desigualdad de Harnack para obtener la región que contiene a todas las soluciones armónicas de la ecuación de Laplace que valen lo mismo en el origen que la solución que hemos calculado.&lt;br /&gt;
&lt;br /&gt;
La desigualdad de Harnack establece que dada una función &amp;lt;math&amp;gt; u\geq 0 &amp;lt;/math&amp;gt; armónica en &amp;lt;math&amp;gt; \Omega \subset \mathbb{R}^n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B_R(z) \subset \Omega &amp;lt;/math&amp;gt; con  &amp;lt;math&amp;gt; z \in \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)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para poder aplicarla a nuestro problema, vamos a tomar v=U+M, siendo &amp;lt;math&amp;gt; U(r,\theta)=\frac{r^2}{2R^2}sin(2\theta) &amp;lt;/math&amp;gt; la solución al problema en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;, y M el mínimo de &amp;lt;math&amp;gt; G(\theta)=R^2sin(\theta)cos(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;. Al hacer esto v va a ser una función armónica positiva a la que le podemos aplicar la desigualdad de Harnack.&lt;br /&gt;
&lt;br /&gt;
Primero vamos a aplicar la desigualdad variando el radio de la bola y a observar como varia la región que determina en función de esto. Para ello vamos a representar las cotas en escala logarítmica, lo cual nos permite observar mejor su comportamiento.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Representamos las cotas que nos da la desigualdad de Harnack&lt;br /&gt;
% para nuestro ejemplo.&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^2*sin(theta).*cos(theta); %Definimos la función u(r,theta)&lt;br /&gt;
g=@(theta,r) r^2*sin(theta).*cos(theta); %Definimos la función g&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
R = [1,2,10]; %Radios de las bolas&lt;br /&gt;
n = 2; %Dimensión del espacio&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
C=[&amp;quot;#0000FF&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#00FF00&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
for i=1:3&lt;br /&gt;
    r = 0:N^(-1):R(i); %Partición en r&lt;br /&gt;
    gR=g(theta,R(i));&lt;br /&gt;
    M1=min(gR); %Calculamos el mínimo de g en la frontera de la bola de radio R&lt;br /&gt;
    v1=@(r,theta) u(r,theta)-M1;&lt;br /&gt;
    A=@(r)R(i).^(n-2).*(R(i)-r)./(R(i)+r).^(n-1)*v1(0,0);&lt;br /&gt;
    B=@(r)R(i).^(n-2).*(R(i)+r)./(R(i)-r).^(n-1)*v1(0,0);&lt;br /&gt;
&lt;br /&gt;
    %Graficamos las cotas para los diferentes radios&lt;br /&gt;
    subplot(1,3,i)&lt;br /&gt;
    plot(r,log10(A(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(r,log10(B(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    axis([0 10,-3 6])&lt;br /&gt;
    xlabel('r');&lt;br /&gt;
    ylabel('log(Cotas)');&lt;br /&gt;
    title(['Cotas para r= ' num2str(R(i))]);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF44_1.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Lo más destacable en las 3 gráficas es que en todas ellas ambas restricciones se van al infinito cunado llegan al radio correspondiente a la bola en la que están calculadas. Esto tiene sentido ya que podemos observar que el denominador de la cota superior se anula cuando r=R y por lo tanto se va a infinito y su logaritmo también, y la cota inferior es 0 cuando r=R y por tanto su logaritmo se va a menos infinito. También podemos observar, que debido a esto, el pico que forman ambas restricciones es más estrecho cuando aumentamos el radio de la bola.&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo varían las restricciones si variamos la dimensión.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF442.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Al observar estas gráficas podemos observar que independientemente del radio cuando aumentamos la dimensión aumenta la región que definen ambas restricciones. Además, en n=3 el comportamiento sigue siendo el mismo que el comentado para n=2.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Poisson=&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a buscar una solución de la ecuación de Poisson en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u=f,\quad x\in\mathbb{R}^2. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ello vamos a utilizar la solución fundamental del laplaciano, que en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt; se define como &amp;lt;math&amp;gt; \Phi(x)=-\frac{1}{2\pi}log|x| &amp;lt;/math&amp;gt; y cumple que &amp;lt;math&amp;gt; \Delta \Phi(x)=-\delta_2(x) &amp;lt;/math&amp;gt;. Donde &amp;lt;math&amp;gt;\delta_2(x) &amp;lt;/math&amp;gt; es la delta de Dirac en dimensión 2.&lt;br /&gt;
&lt;br /&gt;
Si ahora consideramos el potencial logarítmico de la función f, que es la la convolución de la solución fundamental con f, entonces podríamos expresar la solución como: &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2}\Phi(x-y)f(y)dy &amp;lt;/math&amp;gt; y formalmente tenemos que: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u(x)=\int_{\mathbb{R}^2}\Delta_x\Phi(x-y)f(y)dy=- \int_{\mathbb{R}^2}\delta_2f(y)dy=-f(x),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pero esto no es correcto ya que el laplaciano de la solución fundamental no es integrable. A pesar de no ser correcto nos da la intuición de que el potencial logarítmico podría ser una posible  solución del problema.&lt;br /&gt;
&lt;br /&gt;
Ahora para solucionar esto vamos a tomar f como la función característica de la bola de radio 1 ya que de esta manera obtenemos el siguiente teorema: (Remark 3.35 pag 150)&lt;br /&gt;
&lt;br /&gt;
Por tanto, la solución vendrá dada por la siguiente expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  u(\textbf{x}) = - \frac{1}{2 \pi} \int _{B_1} log( | \textbf{x}- \textbf{y}|) d \textbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Haciendo el cambio de variable &amp;lt;math&amp;gt;  \textbf{y}= ( r cos (\theta), r sin( \theta)) &amp;lt;/math&amp;gt; obtenemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  u(x_1,x_2) = - \frac{1}{4 \pi} \int _{0}^{2 \pi} \int_{0}^{1} r log((x_1-r cos(\theta))^2 + (x_2-r sin(\theta))^2) d r d \theta &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Representamos la solución integrando mediante el método del trapecio.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Potencial logaritmico.png|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
N1=300; N2=300; %Número de puntos&lt;br /&gt;
a=0; b=1; c=0; d=2*pi; %Extremos de los intervalos&lt;br /&gt;
h1=(b-a)/N1; h2=(d-c)/N2;&lt;br /&gt;
r=a:h1:b; theta=c:h2:d; %Particiones de r y theta&lt;br /&gt;
[rr,tt]=meshgrid(r,theta); &lt;br /&gt;
w1=ones(N1+1,1);                &lt;br /&gt;
w1(1)=1/2; w1(N1+1)=1/2;&lt;br /&gt;
w2=ones(N2+1,1);                 &lt;br /&gt;
w2(1)=1/2; w2(N2+1)=1/2;&lt;br /&gt;
x11=-1:2/100:1; % Partición de x_1&lt;br /&gt;
x21=-1:2/100:1; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        f=-log(sqrt((x11(j)-rr.*cos(tt)).^2+(x21(i)-rr.*sin(tt)).^2)).*rr; %Potencial logaritmico               &lt;br /&gt;
        u1(i,j)=h1*h2*w2'*f*w1/(2*pi); %Solución del método del trapecio en 2 variable&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos la solución&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11,x21, u1, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución con el potencial logarítmico');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El comportamiento asintótico del potencial logarítmico es:&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\left(\frac{1}{|x|}\right) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde se define M como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M := \int_{\mathbb{R}^2} f(y) \, dy  &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En nuestro problema, donde &amp;lt;math&amp;gt; f &amp;lt;/math&amp;gt; es la función característica de la bola unidad, tenemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x) = -\frac{1}{2} \log|x|  &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF5_1.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Representación de la solución asintótica&lt;br /&gt;
&lt;br /&gt;
M=pi; %Area del circulo de radio 1&lt;br /&gt;
f=@(x1,x2) -M/(2*pi).*log(sqrt(x1.^2+x2.^2)); % Función que describe el comportamiento asintótico&lt;br /&gt;
&lt;br /&gt;
N=200; % Tamaño de la partición&lt;br /&gt;
a=-100; b=100;                     &lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
x11=a:h:b; %Partición de x_1&lt;br /&gt;
x21=a:h:b; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
u=zeros(length(x11),length(x21));&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        u(i,j)=f(x11(i),x21(j)); %Evaluamos f en la malla de puntos&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos el resultado&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11, x21, u, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución cuando x tienda a \infty');&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Si lo comparamos con el comportamiento asintótico de la solución calculada observamos que ambas gráficas se asemejan bastante.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Potencial logaritmico asintoticamente.png|400px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:EDP]]&lt;br /&gt;
[[Categoría:EDP23/24]]&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71641</id>
		<title>Ecuación de Laplace y de Poisson (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71641"/>
				<updated>2024-04-19T18:31:38Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Ecuación de Poisson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar  la ecuación de Laplace y la ecuación de Poisson. Para ello vamos a calcular soluciones de distintas formas usando cosas como la fórmula de Poisson o el potencial logarítmico, graficándolas y modificando algunos de los parámetros.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Laplace=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la exactitud que tienen dos formas diferentes de resolver la ecuación de Laplace. Para hacer esto tomamos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta u=0,&amp;amp; x\in B_1\\&lt;br /&gt;
u=g,&amp;amp; x\in\partial B_1&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt; B_1\subset\mathbb{R}^2 &amp;lt;/math&amp;gt; la bola de radio 1 centrada en el (0,0).&lt;br /&gt;
&lt;br /&gt;
==Fórmula de Poisson==&lt;br /&gt;
&lt;br /&gt;
Una de las formas de resolver este tipo de problemas es mediante la fórmula de Poisson, que es: &amp;lt;math&amp;gt; u=\frac{R^2-|x|^2}{2\pi R}\int_{\partial B_R}\frac{g(\sigma)}{|x-\sigma|^2} d\sigma, &amp;lt;/math&amp;gt; donde R es el radio de la bola y &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; la distancia al centro de la bola.&lt;br /&gt;
&lt;br /&gt;
Para ver cómo funciona esta fórmula vamos a resolver el problema tomando &amp;lt;math&amp;gt; g(\theta)=max \{0,1-\frac{2}{\pi}|\theta-\pi|\}&amp;lt;/math&amp;gt;. Como esta función, que es la que representa las condiciones frontera, está en coordenadas polares vamos a expresar la fórmula de Poisson en polares.&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}\int_{0}^{2\pi}g(s)\frac{R^2-r^2}{R^2+r^2-2rRcos(s-\theta)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la fórmula expresada de esta manera, podemos aplicarla a nuestro problema tomando R=1 y sustituyendo g por nuestra función. Teniendo esto en cuenta vamos a resolver el problema realizando la integral mediante la [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals regla del trapecio] y a representar la solución.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF41.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calcular la solución de la ecuación de Laplace  en la bola de radio&lt;br /&gt;
% unidad usando la fórmula de Poisson. Con condición frontera la función g&lt;br /&gt;
&lt;br /&gt;
g = @(theta) max(0,1-2/pi*abs(theta-pi)); %Definimos la función g(theta)&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):0.9; %Partición en r (no llegamos hasta el borde de la bola)&lt;br /&gt;
&lt;br /&gt;
w = ones(N+1,1);                 &lt;br /&gt;
w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
u = zeros(length(r)+1,length(theta));&lt;br /&gt;
for j = 1:length(theta)&lt;br /&gt;
    for i = 1:length(r)&lt;br /&gt;
        f = g(theta)*(1-r(i).^2)./(1+r(i).^2-2*r(i)*cos(theta-theta(j))); %Función a integrar&lt;br /&gt;
        u(i,j) = h*w'*f'/(2*pi); %Fórmula de Poison usando la fórmula del trapecio para integrar.&lt;br /&gt;
    end&lt;br /&gt;
    u(length(r)+1,j) = g(theta(j)); %Añadimos la condicón frontera directamente&lt;br /&gt;
end&lt;br /&gt;
r(length(r)+1) = 1;&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, u, 'EdgeColor', 'none');&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;
En la imagen podemos observar que la fórmula de Poisson nos da problemas en la frontera, esto se debe al carácter singular de la integral cerca del borde. Para solucionar esto vamos a tomar directamente el valor de g en el borde de la bola. Al hacer esto obtenemos la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF411.jpg|400px|thumb|center| Sustituyendo g en el borde de la bola]]&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas podemos observar que efectivamente sustituir g en el borde hace que evitemos la singularidad de la integral en la frontera.&lt;br /&gt;
&lt;br /&gt;
Como hemos visto con este ejemplo la fórmula de Poisson tiene problemas para aproximar la solución cerca de la frontera. Por lo que para estudiar esto, vamos a tomar &amp;lt;math&amp;gt; g(x,y)=xy &amp;lt;/math&amp;gt; como condición frontera y &amp;lt;math&amp;gt; u(x,y)=xy &amp;lt;/math&amp;gt; como solución del problema para calcular los diferentes errores que genera la fórmula de Poisson. &lt;br /&gt;
&lt;br /&gt;
Para hacerlo vamos a tomar tanto u como g en coordenadas polares, ya que al estudiar el problema en una bola esto nos permite hacernos una mejor idea de lo que ocurre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
U(r,\theta)=r^2cos(\theta)sin(\theta)\\&lt;br /&gt;
U(1,\theta)=G(\theta)=cos(\theta)sin(\theta)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Primero vamos a tomar un punto &amp;quot;lejos&amp;quot; de la frontera &amp;lt;math&amp;gt; (r,\theta)=(0.9,\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo evoluciona el error, es decir, la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson en ese punto, en función de n. Siendo n el número que determina el número de intervalos en &amp;lt;math&amp;gt; 10^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por el ejemplo anterior, cabe esperar que la fórmula en este punto aproxime bien a la función ya que no es un punto cercano a la frontera, y por lo tanto el error vaya disminuyendo según aumenta el número de intervalos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF42.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral mediante&lt;br /&gt;
% el método del trapecio en función del tamaño de la discretización&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 8; %Discretización máxima: 10^N_max&lt;br /&gt;
err = zeros(N_max,1);&lt;br /&gt;
for m = 1:N_max&lt;br /&gt;
    N = 10^m; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f = g(theta)*(1-0.9.^2)./(1+0.9.^2-2*0.9*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u = h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (0.9,pi/4)&lt;br /&gt;
    &lt;br /&gt;
    % Valor de la solución exacta (x*y=R^2*cos(theta)*sin(theta))&lt;br /&gt;
    % en el punto (0.9, pi/4)&lt;br /&gt;
    exacta = 0.9^2*cos(pi/4)*sin(pi/4); &lt;br /&gt;
&lt;br /&gt;
    % Calculamos el error como la diferencia en valor absoluto entre&lt;br /&gt;
    % la solución exacta y la calculada con la fórmula de Poisson&lt;br /&gt;
    err(m) = abs(exacta-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,log10(err),color='b',LineWidth=1.5) %Dibujamos la gráfica del error en escala logarítmica&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('log_{10}(error(10^n))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado antes, al observar la gráfica vemos que el error va disminuyendo según aumenta n. Esto tiene sentido ya que cuantos más intervalos hay en la discretización más exacta va a ser la aproximación. También podemos observar que se estabiliza cuando llega aproximadamente a &amp;lt;math&amp;gt; n=3 &amp;lt;/math&amp;gt;, esto se debe a que con &amp;lt;math&amp;gt; 10^3 &amp;lt;/math&amp;gt; intervalos el método del trapecio ya aproxima lo suficientemente bien a la función original, lo que hace que aunque aumente el número de intervalos la aproximación no tenga mucho margen de mejor. Con esto hemos visto que en un punto que no esté cerca del borde la fórmula de Poisson va a funcionar bien. &lt;br /&gt;
&lt;br /&gt;
También podemos usar la fórmula del error máximo del método del trapecio para obtener una cota para el error y ver que los errores calculados numéricamente se encuentran por debajo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(n) \leq \left|-\frac{f’’(\xi)(b-a)^3}{12n^2} \right| &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt; es el intervalo de integración, &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; la función a integrar, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; el número de particiones de la discretización y &amp;lt;math&amp;gt; \xi &amp;lt;/math&amp;gt; un cierto valor entre &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt;. Para nuetro problema, &amp;lt;math&amp;gt;[a,b]=[0,2\pi]&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f(\theta)=\frac{(1-r^2) sen(\theta)cos(\theta)}{2\pi(1+r^2-2rcos(\alpha - \theta))}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Derivando &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; dos veces y maximizando su valor en &amp;lt;math&amp;gt;[0,2\pi]&amp;lt;/math&amp;gt;, obtenemos la siguiente cota:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;error(n) \leq \left|- \frac{\pi^2(r^6 - r^5 + 6 r^3 + r^2 -r +2) }{3 n^2(1-r)^5} \right|&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La dibujamos en función de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; junto con el error calculado numéricamente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Cota error.png|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Usando el vector err calculado en el anterior código, representamos la misma gráfica junto&lt;br /&gt;
% con la gráfica de la cota estimada del error&lt;br /&gt;
&lt;br /&gt;
%Definimos la cota del error estimada mediante la fórmula del trapecio&lt;br /&gt;
cota = @(n) abs(-pi^2*(r^6-r^5+6*r^3+r^2-r+2)./(3*(10.^(2*n))*(1-r)^5)); &lt;br /&gt;
&lt;br /&gt;
%Dibujamos las gráficas del error en escala logarítmica&lt;br /&gt;
hold on&lt;br /&gt;
plot(1:N_max,log10(err(:,1)),color='b',LineWidth=1.5)&lt;br /&gt;
plot(1:N_max,log10(cota(1:N_max)),color='r',LineWidth=1.5)&lt;br /&gt;
legend('Error absoluto', 'Cota del error'); % Leyenda&lt;br /&gt;
hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Comprobamos que el error de la aproximación queda por debajo de esta cota (que no es muy ajustada).&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo se comporta el error según nos acercamos a la frontera. Para hacer esto vamos a tomar el punto &amp;lt;math&amp;gt; (r,\theta)=(1-10^{-n},\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo varía el error (la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson) cuando aumentamos la n, es decir, cuando nos vamos acercando a la frontera. Como hemos comentado anteriormente cabe esperar que al aumentar la n el error va a aumentar, ya que como hemos visto en el primer ejemplo cerca de la frontera la fórmula de Poisson da problemas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF421.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral según nos acercamos al&lt;br /&gt;
% borde de la región.&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 20;&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for n = 1:N_max&lt;br /&gt;
    N = 10^2; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f=g(theta)*(1-(1-10^(-n)).^2)./(1+(1-10^(-n)).^2-2*(1-10^(-n))*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u=h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (1-10^-n,pi/4)&lt;br /&gt;
    err(n)=abs((1-10^(-n))^2*cos(pi/4)*sin(pi/4)-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,err,color='b',LineWidth=1.5) %Dibujamos la gráfica del error&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('Error');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En la gráfica podemos ver cómo efectivamente el error para valores de n pequeños, es decir, puntos que están relativamente lejos de la frontera, el error es pequeño al igual que en el caso anterior. Por el contrario, según aumenta la n, es decir, según nos acercamos a la frontera el error aumenta, lo cual tiene sentido ya que como hemos comentado antes la fórmula de Poisson da problemas en la frontera.&lt;br /&gt;
&lt;br /&gt;
Además, podemos observar que el error se estabiliza aproximadamente en  &amp;lt;math&amp;gt; n=4 &amp;lt;/math&amp;gt;, esto se debe a que para este valor de n el punto ya esta suficientemente cerca de la frontera como para representar todo el error que se da en esta y por ello aunque nos acerquemos más a la frontera (aumente n) el error se mantiene estable en  &amp;lt;math&amp;gt; 0.5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Serie de Fourier==&lt;br /&gt;
La otra forma que vamos a ver para resolver la ecuación de Laplace es mediante [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) series de Fourier]. Para hacer esto vamos a tomar nuestro problema en coordenadas polares:&lt;br /&gt;
&lt;br /&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,&amp;amp; r\in(0,1),\theta\in[0,2\pi]\\&lt;br /&gt;
U(1,\theta)=G(\theta)=sin(\theta)cos(\theta),&amp;amp; \theta\in[0,2\pi]&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y a aplicar el método de separación de variables. Al hacer esto obtenemos que: &amp;lt;math&amp;gt; U(r,\theta)=\frac{a_0}{2}+\sum_{k=1}^\infty a_kr^kcos(k\theta)+b_kr^ksin(k\theta).&amp;lt;/math&amp;gt;. Para que esto sea solución falta hacer que cumpla la condición frontera, para ello vamos a tomar la serie de Fourier de &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; L^2([-\pi,\pi]) &amp;lt;/math&amp;gt;, que es &amp;lt;math&amp;gt; G(\theta)=\frac{\alpha_0}{2}+\sum_{k=1}^\infty \alpha_kcos(k\theta)+\beta_ksin(k\theta)&amp;lt;/math&amp;gt; y a igualar ambas series cuando r=1. Al hacer esto vemos que para que ambas series sean iguale los coeficientes tienen que ser iguales, por lo que vamos a calcular los coeficientes de  &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; y a ver su equivalencia con los de  &amp;lt;math&amp;gt; U &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; a_0=\alpha_0=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)d\theta \quad \quad \quad a_k=\alpha_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)cos(k\theta)d\theta \quad \quad \quad b_k=\beta_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)sin(k\theta)d\theta. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al realizar estas integrales obtenemos que &amp;lt;math&amp;gt; a_0=0,a_k=0\forall k &amp;lt;/math&amp;gt; y todos los &amp;lt;math&amp;gt; b_k &amp;lt;/math&amp;gt; son 0 excepto &amp;lt;math&amp;gt; b_2=\frac{1}{2} &amp;lt;/math&amp;gt;. Por lo que la solución nos queda de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}sin(2\theta) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a dibujar la solución, cuya gráfica va a ser exacta ya que la serie tiene un único término.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF43.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Dibujamos la solución calculada por serie de Fourier&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^(2).*sin(2.*theta)/2; %Solución de la ecuación&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):1; %Partición en r&lt;br /&gt;
for j = 1:N+1&lt;br /&gt;
    for i = 1:N+1&lt;br /&gt;
        U(i,j) = u(r(i),theta(j));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, U, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('y');&lt;br /&gt;
zlabel('u(x, y)');&lt;br /&gt;
title('Solución exacta calculada por serie de Fourier');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al haber resuelto el problema por ambos métodos, observamos que este último nos da la solución de forma exacta, por lo que en este caso va a ser más efectivo que el anterior. Esto no tendría porque ser así en todos los casos ya que la serie de Fourier para otra función G distinta puede tener infinitos términos, lo que haría que la aproximación no sea exacta, pero aun así sería más exacta que con el método anterior en los puntos cercanos a la forntera.&lt;br /&gt;
&lt;br /&gt;
==Desigualdad de Harnack==&lt;br /&gt;
&lt;br /&gt;
En esta sección vamos a usar la desigualdad de Harnack para obtener la región que contiene a todas las soluciones armónicas de la ecuación de Laplace que valen lo mismo en el origen que la solución que hemos calculado.&lt;br /&gt;
&lt;br /&gt;
La desigualdad de Harnack establece que dada una función &amp;lt;math&amp;gt; u\geq 0 &amp;lt;/math&amp;gt; armónica en &amp;lt;math&amp;gt; \Omega \subset \mathbb{R}^n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B_R(z) \subset \Omega &amp;lt;/math&amp;gt; con  &amp;lt;math&amp;gt; z \in \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)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para poder aplicarla a nuestro problema, vamos a tomar v=U+M, siendo &amp;lt;math&amp;gt; U(r,\theta)=\frac{r^2}{2R^2}sin(2\theta) &amp;lt;/math&amp;gt; la solución al problema en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;, y M el mínimo de &amp;lt;math&amp;gt; G(\theta)=R^2sin(\theta)cos(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;. Al hacer esto v va a ser una función armónica positiva a la que le podemos aplicar la desigualdad de Harnack.&lt;br /&gt;
&lt;br /&gt;
Primero vamos a aplicar la desigualdad variando el radio de la bola y a observar como varia la región que determina en función de esto. Para ello vamos a representar las cotas en escala logarítmica, lo cual nos permite observar mejor su comportamiento.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Representamos las cotas que nos da la desigualdad de Harnack&lt;br /&gt;
% para nuestro ejemplo.&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^2*sin(theta).*cos(theta); %Definimos la función u(r,theta)&lt;br /&gt;
g=@(theta,r) r^2*sin(theta).*cos(theta); %Definimos la función g&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
R = [1,2,10]; %Radios de las bolas&lt;br /&gt;
n = 2; %Dimensión del espacio&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
C=[&amp;quot;#0000FF&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#00FF00&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
for i=1:3&lt;br /&gt;
    r = 0:N^(-1):R(i); %Partición en r&lt;br /&gt;
    gR=g(theta,R(i));&lt;br /&gt;
    M1=min(gR); %Calculamos el mínimo de g en la frontera de la bola de radio R&lt;br /&gt;
    v1=@(r,theta) u(r,theta)-M1;&lt;br /&gt;
    A=@(r)R(i).^(n-2).*(R(i)-r)./(R(i)+r).^(n-1)*v1(0,0);&lt;br /&gt;
    B=@(r)R(i).^(n-2).*(R(i)+r)./(R(i)-r).^(n-1)*v1(0,0);&lt;br /&gt;
&lt;br /&gt;
    %Graficamos las cotas para los diferentes radios&lt;br /&gt;
    subplot(1,3,i)&lt;br /&gt;
    plot(r,log10(A(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(r,log10(B(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    axis([0 10,-3 6])&lt;br /&gt;
    xlabel('r');&lt;br /&gt;
    ylabel('log(Cotas)');&lt;br /&gt;
    title(['Cotas para r= ' num2str(R(i))]);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF44_1.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Lo más destacable en las 3 gráficas es que en todas ellas ambas restricciones se van al infinito cunado llegan al radio correspondiente a la bola en la que están calculadas. Esto tiene sentido ya que podemos observar que el denominador de la cota superior se anula cuando r=R y por lo tanto se va a infinito y su logaritmo también, y la cota inferior es 0 cuando r=R y por tanto su logaritmo se va a menos infinito. También podemos observar, que debido a esto, el pico que forman ambas restricciones es más estrecho cuando aumentamos el radio de la bola.&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo varían las restricciones si variamos la dimensión.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF442.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Al observar estas gráficas podemos observar que independientemente del radio cuando aumentamos la dimensión aumenta la región que definen ambas restricciones. Además, en n=3 el comportamiento sigue siendo el mismo que el comentado para n=2.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Poisson=&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a buscar una solución de la ecuación de Poisson en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u=f,\quad x\in\mathbb{R}^2. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ello vamos a utilizar la solución fundamental del laplaciano, que en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt; se define como &amp;lt;math&amp;gt; \Phi(x)=-\frac{1}{2\pi}log|x| &amp;lt;/math&amp;gt; y cumple que &amp;lt;math&amp;gt; \Delta \Phi(x)=-\delta_2(x) &amp;lt;/math&amp;gt;. Donde &amp;lt;math&amp;gt;\delta_2(x) &amp;lt;/math&amp;gt; es la delta de Dirac en dimensión 2.&lt;br /&gt;
&lt;br /&gt;
Si ahora consideramos el potencial logarítmico de la función f, que es la la convolución de la solución fundamental con f, entonces podríamos expresar la solución como: &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2}\Phi(x-y)f(y)dy &amp;lt;/math&amp;gt; y formalmente tenemos que: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u(x)=\int_{\mathbb{R}^2}\Delta_x\Phi(x-y)f(y)dy=- \int_{\mathbb{R}^2}\delta_2f(y)dy=-f(x),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pero esto no es correcto ya que el laplaciano de la solución fundamental no es integrable. A pesar de no ser correcto nos da la intuición de que el potencial logarítmico podría ser una posible  solución del problema.&lt;br /&gt;
&lt;br /&gt;
Ahora para solucionar esto vamos a tomar f como la función característica de la bola de radio 1 ya que de esta manera obtenemos el siguiente teorema: (Remark 3.35 pag 150)&lt;br /&gt;
&lt;br /&gt;
Por tanto, la solución vendrá dada por la siguiente expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  u(\textbf{x}) = - \frac{1}{2 \pi} \int _{B_1} log( | \textbf{x}- \textbf{y}|) d \textbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Haciendo el cambio de variable &amp;lt;math&amp;gt;  \textbf{y}= ( r cos (\theta), r sin( \theta)) &amp;lt;/math&amp;gt; obtenemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  u(x_1,x_2) = - \frac{1}{4 \pi} \int _{0}^{2 \pi} \int_{0}^{1} r log((x_1-r cos(\theta))^2 + (x_2-r sin(\theta))^2) d r d \theta &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Representamos la solución integrando mediante el método del trapecio.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Potencial logaritmico.png|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
N1=300; N2=300; %Número de puntos&lt;br /&gt;
a=0; b=1; c=0; d=2*pi; %Extremos de los intervalos&lt;br /&gt;
h1=(b-a)/N1; h2=(d-c)/N2;&lt;br /&gt;
r=a:h1:b; theta=c:h2:d; %Particiones de r y theta&lt;br /&gt;
[rr,tt]=meshgrid(r,theta); &lt;br /&gt;
w1=ones(N1+1,1);                &lt;br /&gt;
w1(1)=1/2; w1(N1+1)=1/2;&lt;br /&gt;
w2=ones(N2+1,1);                 &lt;br /&gt;
w2(1)=1/2; w2(N2+1)=1/2;&lt;br /&gt;
x11=-1:2/100:1; % Partición de x_1&lt;br /&gt;
x21=-1:2/100:1; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        f=-log(sqrt((x11(j)-rr.*cos(tt)).^2+(x21(i)-rr.*sin(tt)).^2)).*rr; %Potencial logaritmico               &lt;br /&gt;
        u1(i,j)=h1*h2*w2'*f*w1/(2*pi); %Solución del método del trapecio en 2 variable&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos la solución&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11,x21, u1, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución con el potencial logarítmico');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El comportamiento asintótico del potencial logarítmico es:&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\left(\frac{1}{|x|}\right) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde se define M como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M := \int_{\mathbb{R}^2} f(y) \, dy  &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En nuestro problema, donde &amp;lt;math&amp;gt; f &amp;lt;/math&amp;gt; es la función característica de la bola unidad, tenemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x) = -\frac{1}{2} \log|x|  &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF5_1.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Representación de la solución asintótica&lt;br /&gt;
&lt;br /&gt;
M=pi; %Area del circulo de radio 1&lt;br /&gt;
f=@(x1,x2) -M/(2*pi).*log(sqrt(x1.^2+x2.^2)); % Función que describe el comportamiento asintótico&lt;br /&gt;
&lt;br /&gt;
N=200; % Tamaño de la partición&lt;br /&gt;
a=-100; b=100;                     &lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
x11=a:h:b; %Partición de x_1&lt;br /&gt;
x21=a:h:b; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
u=zeros(length(x11),length(x21));&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        u(i,j)=f(x11(i),x21(j)); %Evaluamos f en la malla de puntos&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos el resultado&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11, x21, u, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución cuando x tienda a \infty');&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Si lo comparamos con el comportamiento asintótico de la solución calculada observamos que ambas gráficas se asemejan bastante.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Potencial logaritmico asintoticamente.png|400px|thumb|left]]&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71637</id>
		<title>Ecuación de Laplace y de Poisson (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71637"/>
				<updated>2024-04-19T18:30:02Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Ecuación de Poisson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar  la ecuación de Laplace y la ecuación de Poisson. Para ello vamos a calcular soluciones de distintas formas usando cosas como la fórmula de Poisson o el potencial logarítmico, graficándolas y modificando algunos de los parámetros.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Laplace=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la exactitud que tienen dos formas diferentes de resolver la ecuación de Laplace. Para hacer esto tomamos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta u=0,&amp;amp; x\in B_1\\&lt;br /&gt;
u=g,&amp;amp; x\in\partial B_1&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt; B_1\subset\mathbb{R}^2 &amp;lt;/math&amp;gt; la bola de radio 1 centrada en el (0,0).&lt;br /&gt;
&lt;br /&gt;
==Fórmula de Poisson==&lt;br /&gt;
&lt;br /&gt;
Una de las formas de resolver este tipo de problemas es mediante la fórmula de Poisson, que es: &amp;lt;math&amp;gt; u=\frac{R^2-|x|^2}{2\pi R}\int_{\partial B_R}\frac{g(\sigma)}{|x-\sigma|^2} d\sigma, &amp;lt;/math&amp;gt; donde R es el radio de la bola y &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; la distancia al centro de la bola.&lt;br /&gt;
&lt;br /&gt;
Para ver cómo funciona esta fórmula vamos a resolver el problema tomando &amp;lt;math&amp;gt; g(\theta)=max \{0,1-\frac{2}{\pi}|\theta-\pi|\}&amp;lt;/math&amp;gt;. Como esta función, que es la que representa las condiciones frontera, está en coordenadas polares vamos a expresar la fórmula de Poisson en polares.&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}\int_{0}^{2\pi}g(s)\frac{R^2-r^2}{R^2+r^2-2rRcos(s-\theta)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la fórmula expresada de esta manera, podemos aplicarla a nuestro problema tomando R=1 y sustituyendo g por nuestra función. Teniendo esto en cuenta vamos a resolver el problema realizando la integral mediante la [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals regla del trapecio] y a representar la solución.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF41.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calcular la solución de la ecuación de Laplace  en la bola de radio&lt;br /&gt;
% unidad usando la fórmula de Poisson. Con condición frontera la función g&lt;br /&gt;
&lt;br /&gt;
g = @(theta) max(0,1-2/pi*abs(theta-pi)); %Definimos la función g(theta)&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):0.9; %Partición en r (no llegamos hasta el borde de la bola)&lt;br /&gt;
&lt;br /&gt;
w = ones(N+1,1);                 &lt;br /&gt;
w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
u = zeros(length(r)+1,length(theta));&lt;br /&gt;
for j = 1:length(theta)&lt;br /&gt;
    for i = 1:length(r)&lt;br /&gt;
        f = g(theta)*(1-r(i).^2)./(1+r(i).^2-2*r(i)*cos(theta-theta(j))); %Función a integrar&lt;br /&gt;
        u(i,j) = h*w'*f'/(2*pi); %Fórmula de Poison usando la fórmula del trapecio para integrar.&lt;br /&gt;
    end&lt;br /&gt;
    u(length(r)+1,j) = g(theta(j)); %Añadimos la condicón frontera directamente&lt;br /&gt;
end&lt;br /&gt;
r(length(r)+1) = 1;&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, u, 'EdgeColor', 'none');&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;
En la imagen podemos observar que la fórmula de Poisson nos da problemas en la frontera, esto se debe al carácter singular de la integral cerca del borde. Para solucionar esto vamos a tomar directamente el valor de g en el borde de la bola. Al hacer esto obtenemos la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF411.jpg|400px|thumb|center| Sustituyendo g en el borde de la bola]]&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas podemos observar que efectivamente sustituir g en el borde hace que evitemos la singularidad de la integral en la frontera.&lt;br /&gt;
&lt;br /&gt;
Como hemos visto con este ejemplo la fórmula de Poisson tiene problemas para aproximar la solución cerca de la frontera. Por lo que para estudiar esto, vamos a tomar &amp;lt;math&amp;gt; g(x,y)=xy &amp;lt;/math&amp;gt; como condición frontera y &amp;lt;math&amp;gt; u(x,y)=xy &amp;lt;/math&amp;gt; como solución del problema para calcular los diferentes errores que genera la fórmula de Poisson. &lt;br /&gt;
&lt;br /&gt;
Para hacerlo vamos a tomar tanto u como g en coordenadas polares, ya que al estudiar el problema en una bola esto nos permite hacernos una mejor idea de lo que ocurre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
U(r,\theta)=r^2cos(\theta)sin(\theta)\\&lt;br /&gt;
U(1,\theta)=G(\theta)=cos(\theta)sin(\theta)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Primero vamos a tomar un punto &amp;quot;lejos&amp;quot; de la frontera &amp;lt;math&amp;gt; (r,\theta)=(0.9,\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo evoluciona el error, es decir, la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson en ese punto, en función de n. Siendo n el número que determina el número de intervalos en &amp;lt;math&amp;gt; 10^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por el ejemplo anterior, cabe esperar que la fórmula en este punto aproxime bien a la función ya que no es un punto cercano a la frontera, y por lo tanto el error vaya disminuyendo según aumenta el número de intervalos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF42.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral mediante&lt;br /&gt;
% el método del trapecio en función del tamaño de la discretización&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 8; %Discretización máxima: 10^N_max&lt;br /&gt;
err = zeros(N_max,1);&lt;br /&gt;
for m = 1:N_max&lt;br /&gt;
    N = 10^m; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f = g(theta)*(1-0.9.^2)./(1+0.9.^2-2*0.9*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u = h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (0.9,pi/4)&lt;br /&gt;
    &lt;br /&gt;
    % Valor de la solución exacta (x*y=R^2*cos(theta)*sin(theta))&lt;br /&gt;
    % en el punto (0.9, pi/4)&lt;br /&gt;
    exacta = 0.9^2*cos(pi/4)*sin(pi/4); &lt;br /&gt;
&lt;br /&gt;
    % Calculamos el error como la diferencia en valor absoluto entre&lt;br /&gt;
    % la solución exacta y la calculada con la fórmula de Poisson&lt;br /&gt;
    err(m) = abs(exacta-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,log10(err),color='b',LineWidth=1.5) %Dibujamos la gráfica del error en escala logarítmica&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('log_{10}(error(10^n))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado antes, al observar la gráfica vemos que el error va disminuyendo según aumenta n. Esto tiene sentido ya que cuantos más intervalos hay en la discretización más exacta va a ser la aproximación. También podemos observar que se estabiliza cuando llega aproximadamente a &amp;lt;math&amp;gt; n=3 &amp;lt;/math&amp;gt;, esto se debe a que con &amp;lt;math&amp;gt; 10^3 &amp;lt;/math&amp;gt; intervalos el método del trapecio ya aproxima lo suficientemente bien a la función original, lo que hace que aunque aumente el número de intervalos la aproximación no tenga mucho margen de mejor. Con esto hemos visto que en un punto que no esté cerca del borde la fórmula de Poisson va a funcionar bien. &lt;br /&gt;
&lt;br /&gt;
También podemos usar la fórmula del error máximo del método del trapecio para obtener una cota para el error y ver que los errores calculados numéricamente se encuentran por debajo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(n) \leq \left|-\frac{f’’(\xi)(b-a)^3}{12n^2} \right| &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt; es el intervalo de integración, &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; la función a integrar, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; el número de particiones de la discretización y &amp;lt;math&amp;gt; \xi &amp;lt;/math&amp;gt; un cierto valor entre &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt;. Para nuetro problema, &amp;lt;math&amp;gt;[a,b]=[0,2\pi]&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f(\theta)=\frac{(1-r^2) sen(\theta)cos(\theta)}{2\pi(1+r^2-2rcos(\alpha - \theta))}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Derivando &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; dos veces y maximizando su valor en &amp;lt;math&amp;gt;[0,2\pi]&amp;lt;/math&amp;gt;, obtenemos la siguiente cota:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;error(n) \leq \left|- \frac{\pi^2(r^6 - r^5 + 6 r^3 + r^2 -r +2) }{3 n^2(1-r)^5} \right|&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La dibujamos en función de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; junto con el error calculado numéricamente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Cota error.png|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Usando el vector err calculado en el anterior código, representamos la misma gráfica junto&lt;br /&gt;
% con la gráfica de la cota estimada del error&lt;br /&gt;
&lt;br /&gt;
%Definimos la cota del error estimada mediante la fórmula del trapecio&lt;br /&gt;
cota = @(n) abs(-pi^2*(r^6-r^5+6*r^3+r^2-r+2)./(3*(10.^(2*n))*(1-r)^5)); &lt;br /&gt;
&lt;br /&gt;
%Dibujamos las gráficas del error en escala logarítmica&lt;br /&gt;
hold on&lt;br /&gt;
plot(1:N_max,log10(err(:,1)),color='b',LineWidth=1.5)&lt;br /&gt;
plot(1:N_max,log10(cota(1:N_max)),color='r',LineWidth=1.5)&lt;br /&gt;
legend('Error absoluto', 'Cota del error'); % Leyenda&lt;br /&gt;
hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Comprobamos que el error de la aproximación queda por debajo de esta cota (que no es muy ajustada).&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo se comporta el error según nos acercamos a la frontera. Para hacer esto vamos a tomar el punto &amp;lt;math&amp;gt; (r,\theta)=(1-10^{-n},\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo varía el error (la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson) cuando aumentamos la n, es decir, cuando nos vamos acercando a la frontera. Como hemos comentado anteriormente cabe esperar que al aumentar la n el error va a aumentar, ya que como hemos visto en el primer ejemplo cerca de la frontera la fórmula de Poisson da problemas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF421.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral según nos acercamos al&lt;br /&gt;
% borde de la región.&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 20;&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for n = 1:N_max&lt;br /&gt;
    N = 10^2; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f=g(theta)*(1-(1-10^(-n)).^2)./(1+(1-10^(-n)).^2-2*(1-10^(-n))*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u=h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (1-10^-n,pi/4)&lt;br /&gt;
    err(n)=abs((1-10^(-n))^2*cos(pi/4)*sin(pi/4)-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,err,color='b',LineWidth=1.5) %Dibujamos la gráfica del error&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('Error');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En la gráfica podemos ver cómo efectivamente el error para valores de n pequeños, es decir, puntos que están relativamente lejos de la frontera, el error es pequeño al igual que en el caso anterior. Por el contrario, según aumenta la n, es decir, según nos acercamos a la frontera el error aumenta, lo cual tiene sentido ya que como hemos comentado antes la fórmula de Poisson da problemas en la frontera.&lt;br /&gt;
&lt;br /&gt;
Además, podemos observar que el error se estabiliza aproximadamente en  &amp;lt;math&amp;gt; n=4 &amp;lt;/math&amp;gt;, esto se debe a que para este valor de n el punto ya esta suficientemente cerca de la frontera como para representar todo el error que se da en esta y por ello aunque nos acerquemos más a la frontera (aumente n) el error se mantiene estable en  &amp;lt;math&amp;gt; 0.5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Serie de Fourier==&lt;br /&gt;
La otra forma que vamos a ver para resolver la ecuación de Laplace es mediante [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) series de Fourier]. Para hacer esto vamos a tomar nuestro problema en coordenadas polares:&lt;br /&gt;
&lt;br /&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,&amp;amp; r\in(0,1),\theta\in[0,2\pi]\\&lt;br /&gt;
U(1,\theta)=G(\theta)=sin(\theta)cos(\theta),&amp;amp; \theta\in[0,2\pi]&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y a aplicar el método de separación de variables. Al hacer esto obtenemos que: &amp;lt;math&amp;gt; U(r,\theta)=\frac{a_0}{2}+\sum_{k=1}^\infty a_kr^kcos(k\theta)+b_kr^ksin(k\theta).&amp;lt;/math&amp;gt;. Para que esto sea solución falta hacer que cumpla la condición frontera, para ello vamos a tomar la serie de Fourier de &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; L^2([-\pi,\pi]) &amp;lt;/math&amp;gt;, que es &amp;lt;math&amp;gt; G(\theta)=\frac{\alpha_0}{2}+\sum_{k=1}^\infty \alpha_kcos(k\theta)+\beta_ksin(k\theta)&amp;lt;/math&amp;gt; y a igualar ambas series cuando r=1. Al hacer esto vemos que para que ambas series sean iguale los coeficientes tienen que ser iguales, por lo que vamos a calcular los coeficientes de  &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; y a ver su equivalencia con los de  &amp;lt;math&amp;gt; U &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; a_0=\alpha_0=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)d\theta \quad \quad \quad a_k=\alpha_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)cos(k\theta)d\theta \quad \quad \quad b_k=\beta_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)sin(k\theta)d\theta. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al realizar estas integrales obtenemos que &amp;lt;math&amp;gt; a_0=0,a_k=0\forall k &amp;lt;/math&amp;gt; y todos los &amp;lt;math&amp;gt; b_k &amp;lt;/math&amp;gt; son 0 excepto &amp;lt;math&amp;gt; b_2=\frac{1}{2} &amp;lt;/math&amp;gt;. Por lo que la solución nos queda de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}sin(2\theta) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a dibujar la solución, cuya gráfica va a ser exacta ya que la serie tiene un único término.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF43.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Dibujamos la solución calculada por serie de Fourier&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^(2).*sin(2.*theta)/2; %Solución de la ecuación&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):1; %Partición en r&lt;br /&gt;
for j = 1:N+1&lt;br /&gt;
    for i = 1:N+1&lt;br /&gt;
        U(i,j) = u(r(i),theta(j));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, U, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('y');&lt;br /&gt;
zlabel('u(x, y)');&lt;br /&gt;
title('Solución exacta calculada por serie de Fourier');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al haber resuelto el problema por ambos métodos, observamos que este último nos da la solución de forma exacta, por lo que en este caso va a ser más efectivo que el anterior. Esto no tendría porque ser así en todos los casos ya que la serie de Fourier para otra función G distinta puede tener infinitos términos, lo que haría que la aproximación no sea exacta, pero aun así sería más exacta que con el método anterior en los puntos cercanos a la forntera.&lt;br /&gt;
&lt;br /&gt;
==Desigualdad de Harnack==&lt;br /&gt;
&lt;br /&gt;
En esta sección vamos a usar la desigualdad de Harnack para obtener la región que contiene a todas las soluciones armónicas de la ecuación de Laplace que valen lo mismo en el origen que la solución que hemos calculado.&lt;br /&gt;
&lt;br /&gt;
La desigualdad de Harnack establece que dada una función &amp;lt;math&amp;gt; u\geq 0 &amp;lt;/math&amp;gt; armónica en &amp;lt;math&amp;gt; \Omega \subset \mathbb{R}^n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B_R(z) \subset \Omega &amp;lt;/math&amp;gt; con  &amp;lt;math&amp;gt; z \in \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)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para poder aplicarla a nuestro problema, vamos a tomar v=U+M, siendo &amp;lt;math&amp;gt; U(r,\theta)=\frac{r^2}{2R^2}sin(2\theta) &amp;lt;/math&amp;gt; la solución al problema en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;, y M el mínimo de &amp;lt;math&amp;gt; G(\theta)=R^2sin(\theta)cos(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;. Al hacer esto v va a ser una función armónica positiva a la que le podemos aplicar la desigualdad de Harnack.&lt;br /&gt;
&lt;br /&gt;
Primero vamos a aplicar la desigualdad variando el radio de la bola y a observar como varia la región que determina en función de esto. Para ello vamos a representar las cotas en escala logarítmica, lo cual nos permite observar mejor su comportamiento.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Representamos las cotas que nos da la desigualdad de Harnack&lt;br /&gt;
% para nuestro ejemplo.&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^2*sin(theta).*cos(theta); %Definimos la función u(r,theta)&lt;br /&gt;
g=@(theta,r) r^2*sin(theta).*cos(theta); %Definimos la función g&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
R = [1,2,10]; %Radios de las bolas&lt;br /&gt;
n = 2; %Dimensión del espacio&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
C=[&amp;quot;#0000FF&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#00FF00&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
for i=1:3&lt;br /&gt;
    r = 0:N^(-1):R(i); %Partición en r&lt;br /&gt;
    gR=g(theta,R(i));&lt;br /&gt;
    M1=min(gR); %Calculamos el mínimo de g en la frontera de la bola de radio R&lt;br /&gt;
    v1=@(r,theta) u(r,theta)-M1;&lt;br /&gt;
    A=@(r)R(i).^(n-2).*(R(i)-r)./(R(i)+r).^(n-1)*v1(0,0);&lt;br /&gt;
    B=@(r)R(i).^(n-2).*(R(i)+r)./(R(i)-r).^(n-1)*v1(0,0);&lt;br /&gt;
&lt;br /&gt;
    %Graficamos las cotas para los diferentes radios&lt;br /&gt;
    subplot(1,3,i)&lt;br /&gt;
    plot(r,log10(A(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(r,log10(B(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    axis([0 10,-3 6])&lt;br /&gt;
    xlabel('r');&lt;br /&gt;
    ylabel('log(Cotas)');&lt;br /&gt;
    title(['Cotas para r= ' num2str(R(i))]);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF44_1.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Lo más destacable en las 3 gráficas es que en todas ellas ambas restricciones se van al infinito cunado llegan al radio correspondiente a la bola en la que están calculadas. Esto tiene sentido ya que podemos observar que el denominador de la cota superior se anula cuando r=R y por lo tanto se va a infinito y su logaritmo también, y la cota inferior es 0 cuando r=R y por tanto su logaritmo se va a menos infinito. También podemos observar, que debido a esto, el pico que forman ambas restricciones es más estrecho cuando aumentamos el radio de la bola.&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo varían las restricciones si variamos la dimensión.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF442.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Al observar estas gráficas podemos observar que independientemente del radio cuando aumentamos la dimensión aumenta la región que definen ambas restricciones. Además, en n=3 el comportamiento sigue siendo el mismo que el comentado para n=2.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Poisson=&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a buscar una solución de la ecuación de Poisson en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u=f,\quad x\in\mathbb{R}^2. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ello vamos a utilizar la solución fundamental del laplaciano, que en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt; se define como &amp;lt;math&amp;gt; \Phi(x)=-\frac{1}{2\pi}log|x| &amp;lt;/math&amp;gt; y cumple que &amp;lt;math&amp;gt; \Delta \Phi(x)=-\delta_2(x) &amp;lt;/math&amp;gt;. Donde &amp;lt;math&amp;gt;\delta_2(x) &amp;lt;/math&amp;gt; es la delta de Dirac en dimensión 2.&lt;br /&gt;
&lt;br /&gt;
Si ahora consideramos el potencial logarítmico de la función f, que es la la convolución de la solución fundamental con f, entonces podríamos expresar la solución como: &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2}\Phi(x-y)f(y)dy &amp;lt;/math&amp;gt; y formalmente tenemos que: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u(x)=\int_{\mathbb{R}^2}\Delta_x\Phi(x-y)f(y)dy=- \int_{\mathbb{R}^2}\delta_2f(y)dy=-f(x),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pero esto no es correcto ya que el laplaciano de la solución fundamental no es integrable. A pesar de no ser correcto nos da la intuición de que el potencial logarítmico podría ser una posible  solución del problema.&lt;br /&gt;
&lt;br /&gt;
Ahora para solucionar esto vamos a tomar f como la función característica de la bola de radio 1 ya que de esta manera obtenemos el siguiente teorema: (Remark 3.35 pag 150)&lt;br /&gt;
&lt;br /&gt;
Por tanto, la solución vendrá dada por la siguiente expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  u(\textbf{x}) = - \frac{1}{2 \pi} \int _{B_1} log( | \textbf{x}- \textbf{y}|) d \textbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Haciendo el cambio de variable &amp;lt;math&amp;gt;  \textbf{y}= ( r cos (\theta), r sin( \theta)) &amp;lt;/math&amp;gt; obtenemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  u(x_1,x_2) = - \frac{1}{4 \pi} \int _{0}^{2 \pi} \int_{0}^{1} r log((x_1-r cos(\theta))^2 + (x_2-r sin(\theta))^2) d r d \theta &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Representamos la solución integrando mediante el método del trapecio.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Potencial logaritmico.png|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
N1=300; N2=300; %Número de puntos&lt;br /&gt;
a=0; b=1; c=0; d=2*pi; %Extremos de los intervalos&lt;br /&gt;
h1=(b-a)/N1; h2=(d-c)/N2;&lt;br /&gt;
r=a:h1:b; theta=c:h2:d; %Particiones de r y theta&lt;br /&gt;
[rr,tt]=meshgrid(r,theta); &lt;br /&gt;
w1=ones(N1+1,1);                &lt;br /&gt;
w1(1)=1/2; w1(N1+1)=1/2;&lt;br /&gt;
w2=ones(N2+1,1);                 &lt;br /&gt;
w2(1)=1/2; w2(N2+1)=1/2;&lt;br /&gt;
x11=-1:2/100:1; % Partición de x_1&lt;br /&gt;
x21=-1:2/100:1; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        f=-log(sqrt((x11(j)-rr.*cos(tt)).^2+(x21(i)-rr.*sin(tt)).^2)).*rr; %Potencial logaritmico               &lt;br /&gt;
        u1(i,j)=h1*h2*w2'*f*w1/(2*pi); %Solución del método del trapecio en 2 variable&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos la solución&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11,x21, u1, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución con el potencial logarítmico');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El comportamiento asintótico del potencial logarítmico es:&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\left(\frac{1}{|x|}\right) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde se define M como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M := \int_{\mathbb{R}^2} f(y) \, dy  &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En nuestro problema, donde &amp;lt;math&amp;gt; f &amp;lt;/math&amp;gt; es la función característica de la bola unidad, tenemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x) = -\frac{1}{2} \log|x|  &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF5_1.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Representación de la solución asintótica&lt;br /&gt;
&lt;br /&gt;
M=pi; %Area del circulo de radio 1&lt;br /&gt;
f=@(x1,x2) -M/(2*pi).*log(sqrt(x1.^2+x2.^2)); % Función que describe el comportamiento asintótico&lt;br /&gt;
&lt;br /&gt;
N=200; %Número de intervalos&lt;br /&gt;
a=-1; b=1;                     &lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
x11=a:h:b; %Partición de x_1&lt;br /&gt;
x21=a:h:b; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
u=zeros(length(x11),length(x21));&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        u(i,j)=f(x11(i),x21(j)); %Evaluamos f en la malla de puntos&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos el resultado&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11, x21, u, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución cuando x tienda a \infty');&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Si lo comparamos con el comportamiento asintótico de la solución calculada observamos que ambas gráficas se asemejan bastante.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Potencial logaritmico asintoticamente.png|400px|thumb|left]]&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71636</id>
		<title>Ecuación de Laplace y de Poisson (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71636"/>
				<updated>2024-04-19T18:29:40Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Ecuación de Poisson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar  la ecuación de Laplace y la ecuación de Poisson. Para ello vamos a calcular soluciones de distintas formas usando cosas como la fórmula de Poisson o el potencial logarítmico, graficándolas y modificando algunos de los parámetros.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Laplace=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la exactitud que tienen dos formas diferentes de resolver la ecuación de Laplace. Para hacer esto tomamos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta u=0,&amp;amp; x\in B_1\\&lt;br /&gt;
u=g,&amp;amp; x\in\partial B_1&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt; B_1\subset\mathbb{R}^2 &amp;lt;/math&amp;gt; la bola de radio 1 centrada en el (0,0).&lt;br /&gt;
&lt;br /&gt;
==Fórmula de Poisson==&lt;br /&gt;
&lt;br /&gt;
Una de las formas de resolver este tipo de problemas es mediante la fórmula de Poisson, que es: &amp;lt;math&amp;gt; u=\frac{R^2-|x|^2}{2\pi R}\int_{\partial B_R}\frac{g(\sigma)}{|x-\sigma|^2} d\sigma, &amp;lt;/math&amp;gt; donde R es el radio de la bola y &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; la distancia al centro de la bola.&lt;br /&gt;
&lt;br /&gt;
Para ver cómo funciona esta fórmula vamos a resolver el problema tomando &amp;lt;math&amp;gt; g(\theta)=max \{0,1-\frac{2}{\pi}|\theta-\pi|\}&amp;lt;/math&amp;gt;. Como esta función, que es la que representa las condiciones frontera, está en coordenadas polares vamos a expresar la fórmula de Poisson en polares.&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}\int_{0}^{2\pi}g(s)\frac{R^2-r^2}{R^2+r^2-2rRcos(s-\theta)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la fórmula expresada de esta manera, podemos aplicarla a nuestro problema tomando R=1 y sustituyendo g por nuestra función. Teniendo esto en cuenta vamos a resolver el problema realizando la integral mediante la [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals regla del trapecio] y a representar la solución.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF41.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calcular la solución de la ecuación de Laplace  en la bola de radio&lt;br /&gt;
% unidad usando la fórmula de Poisson. Con condición frontera la función g&lt;br /&gt;
&lt;br /&gt;
g = @(theta) max(0,1-2/pi*abs(theta-pi)); %Definimos la función g(theta)&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):0.9; %Partición en r (no llegamos hasta el borde de la bola)&lt;br /&gt;
&lt;br /&gt;
w = ones(N+1,1);                 &lt;br /&gt;
w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
u = zeros(length(r)+1,length(theta));&lt;br /&gt;
for j = 1:length(theta)&lt;br /&gt;
    for i = 1:length(r)&lt;br /&gt;
        f = g(theta)*(1-r(i).^2)./(1+r(i).^2-2*r(i)*cos(theta-theta(j))); %Función a integrar&lt;br /&gt;
        u(i,j) = h*w'*f'/(2*pi); %Fórmula de Poison usando la fórmula del trapecio para integrar.&lt;br /&gt;
    end&lt;br /&gt;
    u(length(r)+1,j) = g(theta(j)); %Añadimos la condicón frontera directamente&lt;br /&gt;
end&lt;br /&gt;
r(length(r)+1) = 1;&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, u, 'EdgeColor', 'none');&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;
En la imagen podemos observar que la fórmula de Poisson nos da problemas en la frontera, esto se debe al carácter singular de la integral cerca del borde. Para solucionar esto vamos a tomar directamente el valor de g en el borde de la bola. Al hacer esto obtenemos la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF411.jpg|400px|thumb|center| Sustituyendo g en el borde de la bola]]&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas podemos observar que efectivamente sustituir g en el borde hace que evitemos la singularidad de la integral en la frontera.&lt;br /&gt;
&lt;br /&gt;
Como hemos visto con este ejemplo la fórmula de Poisson tiene problemas para aproximar la solución cerca de la frontera. Por lo que para estudiar esto, vamos a tomar &amp;lt;math&amp;gt; g(x,y)=xy &amp;lt;/math&amp;gt; como condición frontera y &amp;lt;math&amp;gt; u(x,y)=xy &amp;lt;/math&amp;gt; como solución del problema para calcular los diferentes errores que genera la fórmula de Poisson. &lt;br /&gt;
&lt;br /&gt;
Para hacerlo vamos a tomar tanto u como g en coordenadas polares, ya que al estudiar el problema en una bola esto nos permite hacernos una mejor idea de lo que ocurre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
U(r,\theta)=r^2cos(\theta)sin(\theta)\\&lt;br /&gt;
U(1,\theta)=G(\theta)=cos(\theta)sin(\theta)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Primero vamos a tomar un punto &amp;quot;lejos&amp;quot; de la frontera &amp;lt;math&amp;gt; (r,\theta)=(0.9,\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo evoluciona el error, es decir, la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson en ese punto, en función de n. Siendo n el número que determina el número de intervalos en &amp;lt;math&amp;gt; 10^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por el ejemplo anterior, cabe esperar que la fórmula en este punto aproxime bien a la función ya que no es un punto cercano a la frontera, y por lo tanto el error vaya disminuyendo según aumenta el número de intervalos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF42.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral mediante&lt;br /&gt;
% el método del trapecio en función del tamaño de la discretización&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 8; %Discretización máxima: 10^N_max&lt;br /&gt;
err = zeros(N_max,1);&lt;br /&gt;
for m = 1:N_max&lt;br /&gt;
    N = 10^m; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f = g(theta)*(1-0.9.^2)./(1+0.9.^2-2*0.9*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u = h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (0.9,pi/4)&lt;br /&gt;
    &lt;br /&gt;
    % Valor de la solución exacta (x*y=R^2*cos(theta)*sin(theta))&lt;br /&gt;
    % en el punto (0.9, pi/4)&lt;br /&gt;
    exacta = 0.9^2*cos(pi/4)*sin(pi/4); &lt;br /&gt;
&lt;br /&gt;
    % Calculamos el error como la diferencia en valor absoluto entre&lt;br /&gt;
    % la solución exacta y la calculada con la fórmula de Poisson&lt;br /&gt;
    err(m) = abs(exacta-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,log10(err),color='b',LineWidth=1.5) %Dibujamos la gráfica del error en escala logarítmica&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('log_{10}(error(10^n))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado antes, al observar la gráfica vemos que el error va disminuyendo según aumenta n. Esto tiene sentido ya que cuantos más intervalos hay en la discretización más exacta va a ser la aproximación. También podemos observar que se estabiliza cuando llega aproximadamente a &amp;lt;math&amp;gt; n=3 &amp;lt;/math&amp;gt;, esto se debe a que con &amp;lt;math&amp;gt; 10^3 &amp;lt;/math&amp;gt; intervalos el método del trapecio ya aproxima lo suficientemente bien a la función original, lo que hace que aunque aumente el número de intervalos la aproximación no tenga mucho margen de mejor. Con esto hemos visto que en un punto que no esté cerca del borde la fórmula de Poisson va a funcionar bien. &lt;br /&gt;
&lt;br /&gt;
También podemos usar la fórmula del error máximo del método del trapecio para obtener una cota para el error y ver que los errores calculados numéricamente se encuentran por debajo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(n) \leq \left|-\frac{f’’(\xi)(b-a)^3}{12n^2} \right| &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt; es el intervalo de integración, &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; la función a integrar, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; el número de particiones de la discretización y &amp;lt;math&amp;gt; \xi &amp;lt;/math&amp;gt; un cierto valor entre &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt;. Para nuetro problema, &amp;lt;math&amp;gt;[a,b]=[0,2\pi]&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f(\theta)=\frac{(1-r^2) sen(\theta)cos(\theta)}{2\pi(1+r^2-2rcos(\alpha - \theta))}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Derivando &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; dos veces y maximizando su valor en &amp;lt;math&amp;gt;[0,2\pi]&amp;lt;/math&amp;gt;, obtenemos la siguiente cota:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;error(n) \leq \left|- \frac{\pi^2(r^6 - r^5 + 6 r^3 + r^2 -r +2) }{3 n^2(1-r)^5} \right|&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La dibujamos en función de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; junto con el error calculado numéricamente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Cota error.png|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Usando el vector err calculado en el anterior código, representamos la misma gráfica junto&lt;br /&gt;
% con la gráfica de la cota estimada del error&lt;br /&gt;
&lt;br /&gt;
%Definimos la cota del error estimada mediante la fórmula del trapecio&lt;br /&gt;
cota = @(n) abs(-pi^2*(r^6-r^5+6*r^3+r^2-r+2)./(3*(10.^(2*n))*(1-r)^5)); &lt;br /&gt;
&lt;br /&gt;
%Dibujamos las gráficas del error en escala logarítmica&lt;br /&gt;
hold on&lt;br /&gt;
plot(1:N_max,log10(err(:,1)),color='b',LineWidth=1.5)&lt;br /&gt;
plot(1:N_max,log10(cota(1:N_max)),color='r',LineWidth=1.5)&lt;br /&gt;
legend('Error absoluto', 'Cota del error'); % Leyenda&lt;br /&gt;
hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Comprobamos que el error de la aproximación queda por debajo de esta cota (que no es muy ajustada).&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo se comporta el error según nos acercamos a la frontera. Para hacer esto vamos a tomar el punto &amp;lt;math&amp;gt; (r,\theta)=(1-10^{-n},\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo varía el error (la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson) cuando aumentamos la n, es decir, cuando nos vamos acercando a la frontera. Como hemos comentado anteriormente cabe esperar que al aumentar la n el error va a aumentar, ya que como hemos visto en el primer ejemplo cerca de la frontera la fórmula de Poisson da problemas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF421.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral según nos acercamos al&lt;br /&gt;
% borde de la región.&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 20;&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for n = 1:N_max&lt;br /&gt;
    N = 10^2; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f=g(theta)*(1-(1-10^(-n)).^2)./(1+(1-10^(-n)).^2-2*(1-10^(-n))*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u=h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (1-10^-n,pi/4)&lt;br /&gt;
    err(n)=abs((1-10^(-n))^2*cos(pi/4)*sin(pi/4)-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,err,color='b',LineWidth=1.5) %Dibujamos la gráfica del error&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('Error');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En la gráfica podemos ver cómo efectivamente el error para valores de n pequeños, es decir, puntos que están relativamente lejos de la frontera, el error es pequeño al igual que en el caso anterior. Por el contrario, según aumenta la n, es decir, según nos acercamos a la frontera el error aumenta, lo cual tiene sentido ya que como hemos comentado antes la fórmula de Poisson da problemas en la frontera.&lt;br /&gt;
&lt;br /&gt;
Además, podemos observar que el error se estabiliza aproximadamente en  &amp;lt;math&amp;gt; n=4 &amp;lt;/math&amp;gt;, esto se debe a que para este valor de n el punto ya esta suficientemente cerca de la frontera como para representar todo el error que se da en esta y por ello aunque nos acerquemos más a la frontera (aumente n) el error se mantiene estable en  &amp;lt;math&amp;gt; 0.5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Serie de Fourier==&lt;br /&gt;
La otra forma que vamos a ver para resolver la ecuación de Laplace es mediante [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) series de Fourier]. Para hacer esto vamos a tomar nuestro problema en coordenadas polares:&lt;br /&gt;
&lt;br /&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,&amp;amp; r\in(0,1),\theta\in[0,2\pi]\\&lt;br /&gt;
U(1,\theta)=G(\theta)=sin(\theta)cos(\theta),&amp;amp; \theta\in[0,2\pi]&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y a aplicar el método de separación de variables. Al hacer esto obtenemos que: &amp;lt;math&amp;gt; U(r,\theta)=\frac{a_0}{2}+\sum_{k=1}^\infty a_kr^kcos(k\theta)+b_kr^ksin(k\theta).&amp;lt;/math&amp;gt;. Para que esto sea solución falta hacer que cumpla la condición frontera, para ello vamos a tomar la serie de Fourier de &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; L^2([-\pi,\pi]) &amp;lt;/math&amp;gt;, que es &amp;lt;math&amp;gt; G(\theta)=\frac{\alpha_0}{2}+\sum_{k=1}^\infty \alpha_kcos(k\theta)+\beta_ksin(k\theta)&amp;lt;/math&amp;gt; y a igualar ambas series cuando r=1. Al hacer esto vemos que para que ambas series sean iguale los coeficientes tienen que ser iguales, por lo que vamos a calcular los coeficientes de  &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; y a ver su equivalencia con los de  &amp;lt;math&amp;gt; U &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; a_0=\alpha_0=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)d\theta \quad \quad \quad a_k=\alpha_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)cos(k\theta)d\theta \quad \quad \quad b_k=\beta_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)sin(k\theta)d\theta. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al realizar estas integrales obtenemos que &amp;lt;math&amp;gt; a_0=0,a_k=0\forall k &amp;lt;/math&amp;gt; y todos los &amp;lt;math&amp;gt; b_k &amp;lt;/math&amp;gt; son 0 excepto &amp;lt;math&amp;gt; b_2=\frac{1}{2} &amp;lt;/math&amp;gt;. Por lo que la solución nos queda de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}sin(2\theta) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a dibujar la solución, cuya gráfica va a ser exacta ya que la serie tiene un único término.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF43.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Dibujamos la solución calculada por serie de Fourier&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^(2).*sin(2.*theta)/2; %Solución de la ecuación&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):1; %Partición en r&lt;br /&gt;
for j = 1:N+1&lt;br /&gt;
    for i = 1:N+1&lt;br /&gt;
        U(i,j) = u(r(i),theta(j));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, U, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('y');&lt;br /&gt;
zlabel('u(x, y)');&lt;br /&gt;
title('Solución exacta calculada por serie de Fourier');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al haber resuelto el problema por ambos métodos, observamos que este último nos da la solución de forma exacta, por lo que en este caso va a ser más efectivo que el anterior. Esto no tendría porque ser así en todos los casos ya que la serie de Fourier para otra función G distinta puede tener infinitos términos, lo que haría que la aproximación no sea exacta, pero aun así sería más exacta que con el método anterior en los puntos cercanos a la forntera.&lt;br /&gt;
&lt;br /&gt;
==Desigualdad de Harnack==&lt;br /&gt;
&lt;br /&gt;
En esta sección vamos a usar la desigualdad de Harnack para obtener la región que contiene a todas las soluciones armónicas de la ecuación de Laplace que valen lo mismo en el origen que la solución que hemos calculado.&lt;br /&gt;
&lt;br /&gt;
La desigualdad de Harnack establece que dada una función &amp;lt;math&amp;gt; u\geq 0 &amp;lt;/math&amp;gt; armónica en &amp;lt;math&amp;gt; \Omega \subset \mathbb{R}^n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B_R(z) \subset \Omega &amp;lt;/math&amp;gt; con  &amp;lt;math&amp;gt; z \in \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)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para poder aplicarla a nuestro problema, vamos a tomar v=U+M, siendo &amp;lt;math&amp;gt; U(r,\theta)=\frac{r^2}{2R^2}sin(2\theta) &amp;lt;/math&amp;gt; la solución al problema en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;, y M el mínimo de &amp;lt;math&amp;gt; G(\theta)=R^2sin(\theta)cos(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;. Al hacer esto v va a ser una función armónica positiva a la que le podemos aplicar la desigualdad de Harnack.&lt;br /&gt;
&lt;br /&gt;
Primero vamos a aplicar la desigualdad variando el radio de la bola y a observar como varia la región que determina en función de esto. Para ello vamos a representar las cotas en escala logarítmica, lo cual nos permite observar mejor su comportamiento.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Representamos las cotas que nos da la desigualdad de Harnack&lt;br /&gt;
% para nuestro ejemplo.&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^2*sin(theta).*cos(theta); %Definimos la función u(r,theta)&lt;br /&gt;
g=@(theta,r) r^2*sin(theta).*cos(theta); %Definimos la función g&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
R = [1,2,10]; %Radios de las bolas&lt;br /&gt;
n = 2; %Dimensión del espacio&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
C=[&amp;quot;#0000FF&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#00FF00&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
for i=1:3&lt;br /&gt;
    r = 0:N^(-1):R(i); %Partición en r&lt;br /&gt;
    gR=g(theta,R(i));&lt;br /&gt;
    M1=min(gR); %Calculamos el mínimo de g en la frontera de la bola de radio R&lt;br /&gt;
    v1=@(r,theta) u(r,theta)-M1;&lt;br /&gt;
    A=@(r)R(i).^(n-2).*(R(i)-r)./(R(i)+r).^(n-1)*v1(0,0);&lt;br /&gt;
    B=@(r)R(i).^(n-2).*(R(i)+r)./(R(i)-r).^(n-1)*v1(0,0);&lt;br /&gt;
&lt;br /&gt;
    %Graficamos las cotas para los diferentes radios&lt;br /&gt;
    subplot(1,3,i)&lt;br /&gt;
    plot(r,log10(A(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(r,log10(B(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    axis([0 10,-3 6])&lt;br /&gt;
    xlabel('r');&lt;br /&gt;
    ylabel('log(Cotas)');&lt;br /&gt;
    title(['Cotas para r= ' num2str(R(i))]);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF44_1.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Lo más destacable en las 3 gráficas es que en todas ellas ambas restricciones se van al infinito cunado llegan al radio correspondiente a la bola en la que están calculadas. Esto tiene sentido ya que podemos observar que el denominador de la cota superior se anula cuando r=R y por lo tanto se va a infinito y su logaritmo también, y la cota inferior es 0 cuando r=R y por tanto su logaritmo se va a menos infinito. También podemos observar, que debido a esto, el pico que forman ambas restricciones es más estrecho cuando aumentamos el radio de la bola.&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo varían las restricciones si variamos la dimensión.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF442.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Al observar estas gráficas podemos observar que independientemente del radio cuando aumentamos la dimensión aumenta la región que definen ambas restricciones. Además, en n=3 el comportamiento sigue siendo el mismo que el comentado para n=2.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Poisson=&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a buscar una solución de la ecuación de Poisson en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u=f,\quad x\in\mathbb{R}^2. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ello vamos a utilizar la solución fundamental del laplaciano, que en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt; se define como &amp;lt;math&amp;gt; \Phi(x)=-\frac{1}{2\pi}log|x| &amp;lt;/math&amp;gt; y cumple que &amp;lt;math&amp;gt; \Delta \Phi(x)=-\delta_2(x) &amp;lt;/math&amp;gt;. Donde &amp;lt;math&amp;gt;\delta_2(x) &amp;lt;/math&amp;gt; es la delta de Dirac en dimensión 2.&lt;br /&gt;
&lt;br /&gt;
Si ahora consideramos el potencial logarítmico de la función f, que es la la convolución de la solución fundamental con f, entonces podríamos expresar la solución como: &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2}\Phi(x-y)f(y)dy &amp;lt;/math&amp;gt; y formalmente tenemos que: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u(x)=\int_{\mathbb{R}^2}\Delta_x\Phi(x-y)f(y)dy=- \int_{\mathbb{R}^2}\delta_2f(y)dy=-f(x),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pero esto no es correcto ya que el laplaciano de la solución fundamental no es integrable. A pesar de no ser correcto nos da la intuición de que el potencial logarítmico podría ser una posible  solución del problema.&lt;br /&gt;
&lt;br /&gt;
Ahora para solucionar esto vamos a tomar f como la función característica de la bola de radio 1 ya que de esta manera obtenemos el siguiente teorema: (Remark 3.35 pag 150)&lt;br /&gt;
&lt;br /&gt;
Por tanto, la solución vendrá dada por la siguiente expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  u(\textbf{x}) = - \frac{1}{2 \pi} \int _{B_1} log( | \textbf{x}- \textbf{y}|) d \textbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Haciendo el cambio de variable &amp;lt;math&amp;gt;  \textbf{y}= ( r cos (\theta), r sin( \theta)) &amp;lt;/math&amp;gt; obtenemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  u(x_1,x_2) = - \frac{1}{4 \pi} \int _{0}^{2 \pi} \int_{0}^{1} r log((x_1-r cos(\theta))^2 + (x_2-r sin(\theta))^2) d r d \theta &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Representamos la solución integrando mediante el método del trapecio.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Potencial logaritmico.png|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
N1=300; N2=300; %Número de puntos&lt;br /&gt;
a=0; b=1; c=0; d=2*pi; %Extremos de los intervalos&lt;br /&gt;
h1=(b-a)/N1; h2=(d-c)/N2;&lt;br /&gt;
r=a:h1:b; theta=c:h2:d; %Particiones de r y theta&lt;br /&gt;
[rr,tt]=meshgrid(r,theta); &lt;br /&gt;
w1=ones(N1+1,1);                &lt;br /&gt;
w1(1)=1/2; w1(N1+1)=1/2;&lt;br /&gt;
w2=ones(N2+1,1);                 &lt;br /&gt;
w2(1)=1/2; w2(N2+1)=1/2;&lt;br /&gt;
x11=-1:2/100:1; % Partición de x_1&lt;br /&gt;
x21=-1:2/100:1; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        f=-log(sqrt((x11(j)-rr.*cos(tt)).^2+(x21(i)-rr.*sin(tt)).^2)).*rr; %Potencial logaritmico               &lt;br /&gt;
        u1(i,j)=h1*h2*w2'*f*w1/(2*pi); %Solución del método del trapecio en 2 variable&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos la solución&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11,x21, u1, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución con el potencial logarítmico');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El comportamiento asintótico del potencial logarítmico es:&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\left(\frac{1}{|x|}\right) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde se define M como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M := \int_{\mathbb{R}^2} f(y) \, dy  &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En nuestro problema, donde &amp;lt;math&amp;gt; f &amp;lt;/math&amp;gt; es la función característica de la bola unidad, tenemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x) = -\frac{1}{2} \log|x|  &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF5_1.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Representación de la solución asintótica&lt;br /&gt;
&lt;br /&gt;
M=pi; %Area del circulo de radio 1&lt;br /&gt;
f=@(x1,x2) -M/(2*pi).*log(sqrt(x1.^2+x2.^2)); % Función que describe el comportamiento asintótico&lt;br /&gt;
&lt;br /&gt;
N=200; %Número de intervalos&lt;br /&gt;
a=-1; b=1;                     &lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
x11=a:h:b; %Partición de x_1&lt;br /&gt;
x21=a:h:b; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
u=zeros(length(x11),length(x21));&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        u(i,j)=f(x11(i),x21(j)); %Evaluamos f en la malla de puntos&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos el resultado&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11, x21, u, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución cuando x tienda a \infty');&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Si lo comparamos con el comportamiento asintótico de la solución calculada observamos que ambas gráficas se asemejan bastante.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Potencial logaritmico asintoticamente.png|400px|thumb|right]]&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Potencial_logaritmico_asintoticamente.png&amp;diff=71634</id>
		<title>Archivo:Potencial logaritmico asintoticamente.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Potencial_logaritmico_asintoticamente.png&amp;diff=71634"/>
				<updated>2024-04-19T18:28:24Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71633</id>
		<title>Ecuación de Laplace y de Poisson (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71633"/>
				<updated>2024-04-19T18:27:54Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Ecuación de Poisson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar  la ecuación de Laplace y la ecuación de Poisson. Para ello vamos a calcular soluciones de distintas formas usando cosas como la fórmula de Poisson o el potencial logarítmico, graficándolas y modificando algunos de los parámetros.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Laplace=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la exactitud que tienen dos formas diferentes de resolver la ecuación de Laplace. Para hacer esto tomamos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta u=0,&amp;amp; x\in B_1\\&lt;br /&gt;
u=g,&amp;amp; x\in\partial B_1&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt; B_1\subset\mathbb{R}^2 &amp;lt;/math&amp;gt; la bola de radio 1 centrada en el (0,0).&lt;br /&gt;
&lt;br /&gt;
==Fórmula de Poisson==&lt;br /&gt;
&lt;br /&gt;
Una de las formas de resolver este tipo de problemas es mediante la fórmula de Poisson, que es: &amp;lt;math&amp;gt; u=\frac{R^2-|x|^2}{2\pi R}\int_{\partial B_R}\frac{g(\sigma)}{|x-\sigma|^2} d\sigma, &amp;lt;/math&amp;gt; donde R es el radio de la bola y &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; la distancia al centro de la bola.&lt;br /&gt;
&lt;br /&gt;
Para ver cómo funciona esta fórmula vamos a resolver el problema tomando &amp;lt;math&amp;gt; g(\theta)=max \{0,1-\frac{2}{\pi}|\theta-\pi|\}&amp;lt;/math&amp;gt;. Como esta función, que es la que representa las condiciones frontera, está en coordenadas polares vamos a expresar la fórmula de Poisson en polares.&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}\int_{0}^{2\pi}g(s)\frac{R^2-r^2}{R^2+r^2-2rRcos(s-\theta)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la fórmula expresada de esta manera, podemos aplicarla a nuestro problema tomando R=1 y sustituyendo g por nuestra función. Teniendo esto en cuenta vamos a resolver el problema realizando la integral mediante la [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals regla del trapecio] y a representar la solución.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF41.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calcular la solución de la ecuación de Laplace  en la bola de radio&lt;br /&gt;
% unidad usando la fórmula de Poisson. Con condición frontera la función g&lt;br /&gt;
&lt;br /&gt;
g = @(theta) max(0,1-2/pi*abs(theta-pi)); %Definimos la función g(theta)&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):0.9; %Partición en r (no llegamos hasta el borde de la bola)&lt;br /&gt;
&lt;br /&gt;
w = ones(N+1,1);                 &lt;br /&gt;
w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
u = zeros(length(r)+1,length(theta));&lt;br /&gt;
for j = 1:length(theta)&lt;br /&gt;
    for i = 1:length(r)&lt;br /&gt;
        f = g(theta)*(1-r(i).^2)./(1+r(i).^2-2*r(i)*cos(theta-theta(j))); %Función a integrar&lt;br /&gt;
        u(i,j) = h*w'*f'/(2*pi); %Fórmula de Poison usando la fórmula del trapecio para integrar.&lt;br /&gt;
    end&lt;br /&gt;
    u(length(r)+1,j) = g(theta(j)); %Añadimos la condicón frontera directamente&lt;br /&gt;
end&lt;br /&gt;
r(length(r)+1) = 1;&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, u, 'EdgeColor', 'none');&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;
En la imagen podemos observar que la fórmula de Poisson nos da problemas en la frontera, esto se debe al carácter singular de la integral cerca del borde. Para solucionar esto vamos a tomar directamente el valor de g en el borde de la bola. Al hacer esto obtenemos la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF411.jpg|400px|thumb|center| Sustituyendo g en el borde de la bola]]&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas podemos observar que efectivamente sustituir g en el borde hace que evitemos la singularidad de la integral en la frontera.&lt;br /&gt;
&lt;br /&gt;
Como hemos visto con este ejemplo la fórmula de Poisson tiene problemas para aproximar la solución cerca de la frontera. Por lo que para estudiar esto, vamos a tomar &amp;lt;math&amp;gt; g(x,y)=xy &amp;lt;/math&amp;gt; como condición frontera y &amp;lt;math&amp;gt; u(x,y)=xy &amp;lt;/math&amp;gt; como solución del problema para calcular los diferentes errores que genera la fórmula de Poisson. &lt;br /&gt;
&lt;br /&gt;
Para hacerlo vamos a tomar tanto u como g en coordenadas polares, ya que al estudiar el problema en una bola esto nos permite hacernos una mejor idea de lo que ocurre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
U(r,\theta)=r^2cos(\theta)sin(\theta)\\&lt;br /&gt;
U(1,\theta)=G(\theta)=cos(\theta)sin(\theta)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Primero vamos a tomar un punto &amp;quot;lejos&amp;quot; de la frontera &amp;lt;math&amp;gt; (r,\theta)=(0.9,\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo evoluciona el error, es decir, la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson en ese punto, en función de n. Siendo n el número que determina el número de intervalos en &amp;lt;math&amp;gt; 10^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por el ejemplo anterior, cabe esperar que la fórmula en este punto aproxime bien a la función ya que no es un punto cercano a la frontera, y por lo tanto el error vaya disminuyendo según aumenta el número de intervalos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF42.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral mediante&lt;br /&gt;
% el método del trapecio en función del tamaño de la discretización&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 8; %Discretización máxima: 10^N_max&lt;br /&gt;
err = zeros(N_max,1);&lt;br /&gt;
for m = 1:N_max&lt;br /&gt;
    N = 10^m; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f = g(theta)*(1-0.9.^2)./(1+0.9.^2-2*0.9*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u = h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (0.9,pi/4)&lt;br /&gt;
    &lt;br /&gt;
    % Valor de la solución exacta (x*y=R^2*cos(theta)*sin(theta))&lt;br /&gt;
    % en el punto (0.9, pi/4)&lt;br /&gt;
    exacta = 0.9^2*cos(pi/4)*sin(pi/4); &lt;br /&gt;
&lt;br /&gt;
    % Calculamos el error como la diferencia en valor absoluto entre&lt;br /&gt;
    % la solución exacta y la calculada con la fórmula de Poisson&lt;br /&gt;
    err(m) = abs(exacta-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,log10(err),color='b',LineWidth=1.5) %Dibujamos la gráfica del error en escala logarítmica&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('log_{10}(error(10^n))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado antes, al observar la gráfica vemos que el error va disminuyendo según aumenta n. Esto tiene sentido ya que cuantos más intervalos hay en la discretización más exacta va a ser la aproximación. También podemos observar que se estabiliza cuando llega aproximadamente a &amp;lt;math&amp;gt; n=3 &amp;lt;/math&amp;gt;, esto se debe a que con &amp;lt;math&amp;gt; 10^3 &amp;lt;/math&amp;gt; intervalos el método del trapecio ya aproxima lo suficientemente bien a la función original, lo que hace que aunque aumente el número de intervalos la aproximación no tenga mucho margen de mejor. Con esto hemos visto que en un punto que no esté cerca del borde la fórmula de Poisson va a funcionar bien. &lt;br /&gt;
&lt;br /&gt;
También podemos usar la fórmula del error máximo del método del trapecio para obtener una cota para el error y ver que los errores calculados numéricamente se encuentran por debajo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(n) \leq \left|-\frac{f’’(\xi)(b-a)^3}{12n^2} \right| &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt; es el intervalo de integración, &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; la función a integrar, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; el número de particiones de la discretización y &amp;lt;math&amp;gt; \xi &amp;lt;/math&amp;gt; un cierto valor entre &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt;. Para nuetro problema, &amp;lt;math&amp;gt;[a,b]=[0,2\pi]&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f(\theta)=\frac{(1-r^2) sen(\theta)cos(\theta)}{2\pi(1+r^2-2rcos(\alpha - \theta))}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Derivando &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; dos veces y maximizando su valor en &amp;lt;math&amp;gt;[0,2\pi]&amp;lt;/math&amp;gt;, obtenemos la siguiente cota:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;error(n) \leq \left|- \frac{\pi^2(r^6 - r^5 + 6 r^3 + r^2 -r +2) }{3 n^2(1-r)^5} \right|&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La dibujamos en función de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; junto con el error calculado numéricamente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Cota error.png|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Usando el vector err calculado en el anterior código, representamos la misma gráfica junto&lt;br /&gt;
% con la gráfica de la cota estimada del error&lt;br /&gt;
&lt;br /&gt;
%Definimos la cota del error estimada mediante la fórmula del trapecio&lt;br /&gt;
cota = @(n) abs(-pi^2*(r^6-r^5+6*r^3+r^2-r+2)./(3*(10.^(2*n))*(1-r)^5)); &lt;br /&gt;
&lt;br /&gt;
%Dibujamos las gráficas del error en escala logarítmica&lt;br /&gt;
hold on&lt;br /&gt;
plot(1:N_max,log10(err(:,1)),color='b',LineWidth=1.5)&lt;br /&gt;
plot(1:N_max,log10(cota(1:N_max)),color='r',LineWidth=1.5)&lt;br /&gt;
legend('Error absoluto', 'Cota del error'); % Leyenda&lt;br /&gt;
hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Comprobamos que el error de la aproximación queda por debajo de esta cota (que no es muy ajustada).&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo se comporta el error según nos acercamos a la frontera. Para hacer esto vamos a tomar el punto &amp;lt;math&amp;gt; (r,\theta)=(1-10^{-n},\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo varía el error (la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson) cuando aumentamos la n, es decir, cuando nos vamos acercando a la frontera. Como hemos comentado anteriormente cabe esperar que al aumentar la n el error va a aumentar, ya que como hemos visto en el primer ejemplo cerca de la frontera la fórmula de Poisson da problemas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF421.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral según nos acercamos al&lt;br /&gt;
% borde de la región.&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 20;&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for n = 1:N_max&lt;br /&gt;
    N = 10^2; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f=g(theta)*(1-(1-10^(-n)).^2)./(1+(1-10^(-n)).^2-2*(1-10^(-n))*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u=h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (1-10^-n,pi/4)&lt;br /&gt;
    err(n)=abs((1-10^(-n))^2*cos(pi/4)*sin(pi/4)-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,err,color='b',LineWidth=1.5) %Dibujamos la gráfica del error&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('Error');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En la gráfica podemos ver cómo efectivamente el error para valores de n pequeños, es decir, puntos que están relativamente lejos de la frontera, el error es pequeño al igual que en el caso anterior. Por el contrario, según aumenta la n, es decir, según nos acercamos a la frontera el error aumenta, lo cual tiene sentido ya que como hemos comentado antes la fórmula de Poisson da problemas en la frontera.&lt;br /&gt;
&lt;br /&gt;
Además, podemos observar que el error se estabiliza aproximadamente en  &amp;lt;math&amp;gt; n=4 &amp;lt;/math&amp;gt;, esto se debe a que para este valor de n el punto ya esta suficientemente cerca de la frontera como para representar todo el error que se da en esta y por ello aunque nos acerquemos más a la frontera (aumente n) el error se mantiene estable en  &amp;lt;math&amp;gt; 0.5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Serie de Fourier==&lt;br /&gt;
La otra forma que vamos a ver para resolver la ecuación de Laplace es mediante [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) series de Fourier]. Para hacer esto vamos a tomar nuestro problema en coordenadas polares:&lt;br /&gt;
&lt;br /&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,&amp;amp; r\in(0,1),\theta\in[0,2\pi]\\&lt;br /&gt;
U(1,\theta)=G(\theta)=sin(\theta)cos(\theta),&amp;amp; \theta\in[0,2\pi]&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y a aplicar el método de separación de variables. Al hacer esto obtenemos que: &amp;lt;math&amp;gt; U(r,\theta)=\frac{a_0}{2}+\sum_{k=1}^\infty a_kr^kcos(k\theta)+b_kr^ksin(k\theta).&amp;lt;/math&amp;gt;. Para que esto sea solución falta hacer que cumpla la condición frontera, para ello vamos a tomar la serie de Fourier de &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; L^2([-\pi,\pi]) &amp;lt;/math&amp;gt;, que es &amp;lt;math&amp;gt; G(\theta)=\frac{\alpha_0}{2}+\sum_{k=1}^\infty \alpha_kcos(k\theta)+\beta_ksin(k\theta)&amp;lt;/math&amp;gt; y a igualar ambas series cuando r=1. Al hacer esto vemos que para que ambas series sean iguale los coeficientes tienen que ser iguales, por lo que vamos a calcular los coeficientes de  &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; y a ver su equivalencia con los de  &amp;lt;math&amp;gt; U &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; a_0=\alpha_0=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)d\theta \quad \quad \quad a_k=\alpha_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)cos(k\theta)d\theta \quad \quad \quad b_k=\beta_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)sin(k\theta)d\theta. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al realizar estas integrales obtenemos que &amp;lt;math&amp;gt; a_0=0,a_k=0\forall k &amp;lt;/math&amp;gt; y todos los &amp;lt;math&amp;gt; b_k &amp;lt;/math&amp;gt; son 0 excepto &amp;lt;math&amp;gt; b_2=\frac{1}{2} &amp;lt;/math&amp;gt;. Por lo que la solución nos queda de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}sin(2\theta) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a dibujar la solución, cuya gráfica va a ser exacta ya que la serie tiene un único término.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF43.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Dibujamos la solución calculada por serie de Fourier&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^(2).*sin(2.*theta)/2; %Solución de la ecuación&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):1; %Partición en r&lt;br /&gt;
for j = 1:N+1&lt;br /&gt;
    for i = 1:N+1&lt;br /&gt;
        U(i,j) = u(r(i),theta(j));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, U, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('y');&lt;br /&gt;
zlabel('u(x, y)');&lt;br /&gt;
title('Solución exacta calculada por serie de Fourier');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al haber resuelto el problema por ambos métodos, observamos que este último nos da la solución de forma exacta, por lo que en este caso va a ser más efectivo que el anterior. Esto no tendría porque ser así en todos los casos ya que la serie de Fourier para otra función G distinta puede tener infinitos términos, lo que haría que la aproximación no sea exacta, pero aun así sería más exacta que con el método anterior en los puntos cercanos a la forntera.&lt;br /&gt;
&lt;br /&gt;
==Desigualdad de Harnack==&lt;br /&gt;
&lt;br /&gt;
En esta sección vamos a usar la desigualdad de Harnack para obtener la región que contiene a todas las soluciones armónicas de la ecuación de Laplace que valen lo mismo en el origen que la solución que hemos calculado.&lt;br /&gt;
&lt;br /&gt;
La desigualdad de Harnack establece que dada una función &amp;lt;math&amp;gt; u\geq 0 &amp;lt;/math&amp;gt; armónica en &amp;lt;math&amp;gt; \Omega \subset \mathbb{R}^n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B_R(z) \subset \Omega &amp;lt;/math&amp;gt; con  &amp;lt;math&amp;gt; z \in \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)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para poder aplicarla a nuestro problema, vamos a tomar v=U+M, siendo &amp;lt;math&amp;gt; U(r,\theta)=\frac{r^2}{2R^2}sin(2\theta) &amp;lt;/math&amp;gt; la solución al problema en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;, y M el mínimo de &amp;lt;math&amp;gt; G(\theta)=R^2sin(\theta)cos(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;. Al hacer esto v va a ser una función armónica positiva a la que le podemos aplicar la desigualdad de Harnack.&lt;br /&gt;
&lt;br /&gt;
Primero vamos a aplicar la desigualdad variando el radio de la bola y a observar como varia la región que determina en función de esto. Para ello vamos a representar las cotas en escala logarítmica, lo cual nos permite observar mejor su comportamiento.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Representamos las cotas que nos da la desigualdad de Harnack&lt;br /&gt;
% para nuestro ejemplo.&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^2*sin(theta).*cos(theta); %Definimos la función u(r,theta)&lt;br /&gt;
g=@(theta,r) r^2*sin(theta).*cos(theta); %Definimos la función g&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
R = [1,2,10]; %Radios de las bolas&lt;br /&gt;
n = 2; %Dimensión del espacio&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
C=[&amp;quot;#0000FF&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#00FF00&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
for i=1:3&lt;br /&gt;
    r = 0:N^(-1):R(i); %Partición en r&lt;br /&gt;
    gR=g(theta,R(i));&lt;br /&gt;
    M1=min(gR); %Calculamos el mínimo de g en la frontera de la bola de radio R&lt;br /&gt;
    v1=@(r,theta) u(r,theta)-M1;&lt;br /&gt;
    A=@(r)R(i).^(n-2).*(R(i)-r)./(R(i)+r).^(n-1)*v1(0,0);&lt;br /&gt;
    B=@(r)R(i).^(n-2).*(R(i)+r)./(R(i)-r).^(n-1)*v1(0,0);&lt;br /&gt;
&lt;br /&gt;
    %Graficamos las cotas para los diferentes radios&lt;br /&gt;
    subplot(1,3,i)&lt;br /&gt;
    plot(r,log10(A(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(r,log10(B(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    axis([0 10,-3 6])&lt;br /&gt;
    xlabel('r');&lt;br /&gt;
    ylabel('log(Cotas)');&lt;br /&gt;
    title(['Cotas para r= ' num2str(R(i))]);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF44_1.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Lo más destacable en las 3 gráficas es que en todas ellas ambas restricciones se van al infinito cunado llegan al radio correspondiente a la bola en la que están calculadas. Esto tiene sentido ya que podemos observar que el denominador de la cota superior se anula cuando r=R y por lo tanto se va a infinito y su logaritmo también, y la cota inferior es 0 cuando r=R y por tanto su logaritmo se va a menos infinito. También podemos observar, que debido a esto, el pico que forman ambas restricciones es más estrecho cuando aumentamos el radio de la bola.&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo varían las restricciones si variamos la dimensión.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF442.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Al observar estas gráficas podemos observar que independientemente del radio cuando aumentamos la dimensión aumenta la región que definen ambas restricciones. Además, en n=3 el comportamiento sigue siendo el mismo que el comentado para n=2.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Poisson=&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a buscar una solución de la ecuación de Poisson en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u=f,\quad x\in\mathbb{R}^2. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ello vamos a utilizar la solución fundamental del laplaciano, que en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt; se define como &amp;lt;math&amp;gt; \Phi(x)=-\frac{1}{2\pi}log|x| &amp;lt;/math&amp;gt; y cumple que &amp;lt;math&amp;gt; \Delta \Phi(x)=-\delta_2(x) &amp;lt;/math&amp;gt;. Donde &amp;lt;math&amp;gt;\delta_2(x) &amp;lt;/math&amp;gt; es la delta de Dirac en dimensión 2.&lt;br /&gt;
&lt;br /&gt;
Si ahora consideramos el potencial logarítmico de la función f, que es la la convolución de la solución fundamental con f, entonces podríamos expresar la solución como: &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2}\Phi(x-y)f(y)dy &amp;lt;/math&amp;gt; y formalmente tenemos que: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u(x)=\int_{\mathbb{R}^2}\Delta_x\Phi(x-y)f(y)dy=- \int_{\mathbb{R}^2}\delta_2f(y)dy=-f(x),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pero esto no es correcto ya que el laplaciano de la solución fundamental no es integrable. A pesar de no ser correcto nos da la intuición de que el potencial logarítmico podría ser una posible  solución del problema.&lt;br /&gt;
&lt;br /&gt;
Ahora para solucionar esto vamos a tomar f como la función característica de la bola de radio 1 ya que de esta manera obtenemos el siguiente teorema: (Remark 3.35 pag 150)&lt;br /&gt;
&lt;br /&gt;
Por tanto, la solución vendrá dada por la siguiente expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  u(\textbf{x}) = - \frac{1}{2 \pi} \int _{B_1} log( | \textbf{x}- \textbf{y}|) d \textbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Haciendo el cambio de variable &amp;lt;math&amp;gt;  \textbf{y}= ( r cos (\theta), r sin( \theta)) &amp;lt;/math&amp;gt; obtenemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  u(x_1,x_2) = - \frac{1}{4 \pi} \int _{0}^{2 \pi} \int_{0}^{1} r log((x_1-r cos(\theta))^2 + (x_2-r sin(\theta))^2) d r d \theta &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Representamos la solución integrando mediante el método del trapecio.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Potencial logaritmico.png|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
N1=300; N2=300; %Número de puntos&lt;br /&gt;
a=0; b=1; c=0; d=2*pi; %Extremos de los intervalos&lt;br /&gt;
h1=(b-a)/N1; h2=(d-c)/N2;&lt;br /&gt;
r=a:h1:b; theta=c:h2:d; %Particiones de r y theta&lt;br /&gt;
[rr,tt]=meshgrid(r,theta); &lt;br /&gt;
w1=ones(N1+1,1);                &lt;br /&gt;
w1(1)=1/2; w1(N1+1)=1/2;&lt;br /&gt;
w2=ones(N2+1,1);                 &lt;br /&gt;
w2(1)=1/2; w2(N2+1)=1/2;&lt;br /&gt;
x11=-1:2/100:1; % Partición de x_1&lt;br /&gt;
x21=-1:2/100:1; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        f=-log(sqrt((x11(j)-rr.*cos(tt)).^2+(x21(i)-rr.*sin(tt)).^2)).*rr; %Potencial logaritmico               &lt;br /&gt;
        u1(i,j)=h1*h2*w2'*f*w1/(2*pi); %Solución del método del trapecio en 2 variable&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos la solución&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11,x21, u1, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución con el potencial logarítmico');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El comportamiento asintótico del potencial logarítmico es:&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\left(\frac{1}{|x|}\right) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde se define M como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M := \int_{\mathbb{R}^2} f(y) \, dy  &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En nuestro problema, donde &amp;lt;math&amp;gt; f &amp;lt;/math&amp;gt; es la función característica de la bola unidad, tenemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x) = -\frac{1}{2} \log|x|  &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF5_1.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Representación de la solución asintótica&lt;br /&gt;
&lt;br /&gt;
M=pi; %Area del circulo de radio 1&lt;br /&gt;
f=@(x1,x2) -M/(2*pi).*log(sqrt(x1.^2+x2.^2)); % Función que describe el comportamiento asintótico&lt;br /&gt;
&lt;br /&gt;
N=200; %Número de intervalos&lt;br /&gt;
a=-1; b=1;                     &lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
x11=a:h:b; %Partición de x_1&lt;br /&gt;
x21=a:h:b; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
u=zeros(length(x11),length(x21));&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        u(i,j)=f(x11(i),x21(j)); %Evaluamos f en la malla de puntos&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos el resultado&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11, x21, u, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución cuando x tienda a \infty');&lt;br /&gt;
&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71621</id>
		<title>Ecuación de Laplace y de Poisson (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71621"/>
				<updated>2024-04-19T18:16:41Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Ecuación de Poisson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar  la ecuación de Laplace y la ecuación de Poisson. Para ello vamos a calcular soluciones de distintas formas usando cosas como la fórmula de Poisson o el potencial logarítmico, graficándolas y modificando algunos de los parámetros.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Laplace=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la exactitud que tienen dos formas diferentes de resolver la ecuación de Laplace. Para hacer esto tomamos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta u=0,&amp;amp; x\in B_1\\&lt;br /&gt;
u=g,&amp;amp; x\in\partial B_1&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt; B_1\subset\mathbb{R}^2 &amp;lt;/math&amp;gt; la bola de radio 1 centrada en el (0,0).&lt;br /&gt;
&lt;br /&gt;
==Fórmula de Poisson==&lt;br /&gt;
&lt;br /&gt;
Una de las formas de resolver este tipo de problemas es mediante la fórmula de Poisson, que es: &amp;lt;math&amp;gt; u=\frac{R^2-|x|^2}{2\pi R}\int_{\partial B_R}\frac{g(\sigma)}{|x-\sigma|^2} d\sigma, &amp;lt;/math&amp;gt; donde R es el radio de la bola y &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; la distancia al centro de la bola.&lt;br /&gt;
&lt;br /&gt;
Para ver cómo funciona esta fórmula vamos a resolver el problema tomando &amp;lt;math&amp;gt; g(\theta)=max \{0,1-\frac{2}{\pi}|\theta-\pi|\}&amp;lt;/math&amp;gt;. Como esta función, que es la que representa las condiciones frontera, está en coordenadas polares vamos a expresar la fórmula de Poisson en polares.&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}\int_{0}^{2\pi}g(s)\frac{R^2-r^2}{R^2+r^2-2rRcos(s-\theta)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la fórmula expresada de esta manera, podemos aplicarla a nuestro problema tomando R=1 y sustituyendo g por nuestra función. Teniendo esto en cuenta vamos a resolver el problema realizando la integral mediante la [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals regla del trapecio] y a representar la solución.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF41.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calcular la solución de la ecuación de Laplace  en la bola de radio&lt;br /&gt;
% unidad usando la fórmula de Poisson. Con condición frontera la función g&lt;br /&gt;
&lt;br /&gt;
g = @(theta) max(0,1-2/pi*abs(theta-pi)); %Definimos la función g(theta)&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):0.9; %Partición en r (no llegamos hasta el borde de la bola)&lt;br /&gt;
&lt;br /&gt;
w = ones(N+1,1);                 &lt;br /&gt;
w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
u = zeros(length(r)+1,length(theta));&lt;br /&gt;
for j = 1:length(theta)&lt;br /&gt;
    for i = 1:length(r)&lt;br /&gt;
        f = g(theta)*(1-r(i).^2)./(1+r(i).^2-2*r(i)*cos(theta-theta(j))); %Función a integrar&lt;br /&gt;
        u(i,j) = h*w'*f'/(2*pi); %Fórmula de Poison usando la fórmula del trapecio para integrar.&lt;br /&gt;
    end&lt;br /&gt;
    u(length(r)+1,j) = g(theta(j)); %Añadimos la condicón frontera directamente&lt;br /&gt;
end&lt;br /&gt;
r(length(r)+1) = 1;&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, u, 'EdgeColor', 'none');&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;
En la imagen podemos observar que la fórmula de Poisson nos da problemas en la frontera, esto se debe al carácter singular de la integral cerca del borde. Para solucionar esto vamos a tomar directamente el valor de g en el borde de la bola. Al hacer esto obtenemos la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF411.jpg|400px|thumb|center| Sustituyendo g en el borde de la bola]]&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas podemos observar que efectivamente sustituir g en el borde hace que evitemos la singularidad de la integral en la frontera.&lt;br /&gt;
&lt;br /&gt;
Como hemos visto con este ejemplo la fórmula de Poisson tiene problemas para aproximar la solución cerca de la frontera. Por lo que para estudiar esto, vamos a tomar &amp;lt;math&amp;gt; g(x,y)=xy &amp;lt;/math&amp;gt; como condición frontera y &amp;lt;math&amp;gt; u(x,y)=xy &amp;lt;/math&amp;gt; como solución del problema para calcular los diferentes errores que genera la fórmula de Poisson. &lt;br /&gt;
&lt;br /&gt;
Para hacerlo vamos a tomar tanto u como g en coordenadas polares, ya que al estudiar el problema en una bola esto nos permite hacernos una mejor idea de lo que ocurre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
U(r,\theta)=r^2cos(\theta)sin(\theta)\\&lt;br /&gt;
U(1,\theta)=G(\theta)=cos(\theta)sin(\theta)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Primero vamos a tomar un punto &amp;quot;lejos&amp;quot; de la frontera &amp;lt;math&amp;gt; (r,\theta)=(0.9,\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo evoluciona el error, es decir, la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson en ese punto, en función de n. Siendo n el número que determina el número de intervalos en &amp;lt;math&amp;gt; 10^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por el ejemplo anterior, cabe esperar que la fórmula en este punto aproxime bien a la función ya que no es un punto cercano a la frontera, y por lo tanto el error vaya disminuyendo según aumenta el número de intervalos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF42.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral mediante&lt;br /&gt;
% el método del trapecio en función del tamaño de la discretización&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 8; %Discretización máxima: 10^N_max&lt;br /&gt;
err = zeros(N_max,1);&lt;br /&gt;
for m = 1:N_max&lt;br /&gt;
    N = 10^m; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f = g(theta)*(1-0.9.^2)./(1+0.9.^2-2*0.9*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u = h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (0.9,pi/4)&lt;br /&gt;
    &lt;br /&gt;
    % Valor de la solución exacta (x*y=R^2*cos(theta)*sin(theta))&lt;br /&gt;
    % en el punto (0.9, pi/4)&lt;br /&gt;
    exacta = 0.9^2*cos(pi/4)*sin(pi/4); &lt;br /&gt;
&lt;br /&gt;
    % Calculamos el error como la diferencia en valor absoluto entre&lt;br /&gt;
    % la solución exacta y la calculada con la fórmula de Poisson&lt;br /&gt;
    err(m) = abs(exacta-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,log10(err),color='b',LineWidth=1.5) %Dibujamos la gráfica del error en escala logarítmica&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('log_{10}(error(10^n))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado antes, al observar la gráfica vemos que el error va disminuyendo según aumenta n. Esto tiene sentido ya que cuantos más intervalos hay en la discretización más exacta va a ser la aproximación. También podemos observar que se estabiliza cuando llega aproximadamente a &amp;lt;math&amp;gt; n=3 &amp;lt;/math&amp;gt;, esto se debe a que con &amp;lt;math&amp;gt; 10^3 &amp;lt;/math&amp;gt; intervalos el método del trapecio ya aproxima lo suficientemente bien a la función original, lo que hace que aunque aumente el número de intervalos la aproximación no tenga mucho margen de mejor. Con esto hemos visto que en un punto que no esté cerca del borde la fórmula de Poisson va a funcionar bien. &lt;br /&gt;
&lt;br /&gt;
También podemos usar la fórmula del error máximo del método del trapecio para obtener una cota para el error y ver que los errores calculados numéricamente se encuentran por debajo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(n) \leq \left|-\frac{f’’(\xi)(b-a)^3}{12n^2} \right| &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt; es el intervalo de integración, &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; la función a integrar, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; el número de particiones de la discretización y &amp;lt;math&amp;gt; \xi &amp;lt;/math&amp;gt; un cierto valor entre &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt;. Para nuetro problema, &amp;lt;math&amp;gt;[a,b]=[0,2\pi]&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f(\theta)=\frac{(1-r^2) sen(\theta)cos(\theta)}{2\pi(1+r^2-2rcos(\alpha - \theta))}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Derivando &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; dos veces y maximizando su valor en &amp;lt;math&amp;gt;[0,2\pi]&amp;lt;/math&amp;gt;, obtenemos la siguiente cota:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;error(n) \leq \left|- \frac{\pi^2(r^6 - r^5 + 6 r^3 + r^2 -r +2) }{3 n^2(1-r)^5} \right|&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La dibujamos en función de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; junto con el error calculado numéricamente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Cota error.png|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Usando el vector err calculado en el anterior código, representamos la misma gráfica junto&lt;br /&gt;
% con la gráfica de la cota estimada del error&lt;br /&gt;
&lt;br /&gt;
%Definimos la cota del error estimada mediante la fórmula del trapecio&lt;br /&gt;
cota = @(n) abs(-pi^2*(r^6-r^5+6*r^3+r^2-r+2)./(3*(10.^(2*n))*(1-r)^5)); &lt;br /&gt;
&lt;br /&gt;
%Dibujamos las gráficas del error en escala logarítmica&lt;br /&gt;
hold on&lt;br /&gt;
plot(1:N_max,log10(err(:,1)),color='b',LineWidth=1.5)&lt;br /&gt;
plot(1:N_max,log10(cota(1:N_max)),color='r',LineWidth=1.5)&lt;br /&gt;
legend('Error absoluto', 'Cota del error'); % Leyenda&lt;br /&gt;
hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Comprobamos que el error de la aproximación queda por debajo de esta cota (que no es muy ajustada).&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo se comporta el error según nos acercamos a la frontera. Para hacer esto vamos a tomar el punto &amp;lt;math&amp;gt; (r,\theta)=(1-10^{-n},\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo varía el error (la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson) cuando aumentamos la n, es decir, cuando nos vamos acercando a la frontera. Como hemos comentado anteriormente cabe esperar que al aumentar la n el error va a aumentar, ya que como hemos visto en el primer ejemplo cerca de la frontera la fórmula de Poisson da problemas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF421.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral según nos acercamos al&lt;br /&gt;
% borde de la región.&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 20;&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for n = 1:N_max&lt;br /&gt;
    N = 10^2; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f=g(theta)*(1-(1-10^(-n)).^2)./(1+(1-10^(-n)).^2-2*(1-10^(-n))*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u=h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (1-10^-n,pi/4)&lt;br /&gt;
    err(n)=abs((1-10^(-n))^2*cos(pi/4)*sin(pi/4)-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,err,color='b',LineWidth=1.5) %Dibujamos la gráfica del error&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('Error');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En la gráfica podemos ver cómo efectivamente el error para valores de n pequeños, es decir, puntos que están relativamente lejos de la frontera, el error es pequeño al igual que en el caso anterior. Por el contrario, según aumenta la n, es decir, según nos acercamos a la frontera el error aumenta, lo cual tiene sentido ya que como hemos comentado antes la fórmula de Poisson da problemas en la frontera.&lt;br /&gt;
&lt;br /&gt;
Además, podemos observar que el error se estabiliza aproximadamente en  &amp;lt;math&amp;gt; n=4 &amp;lt;/math&amp;gt;, esto se debe a que para este valor de n el punto ya esta suficientemente cerca de la frontera como para representar todo el error que se da en esta y por ello aunque nos acerquemos más a la frontera (aumente n) el error se mantiene estable en  &amp;lt;math&amp;gt; 0.5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Serie de Fourier==&lt;br /&gt;
La otra forma que vamos a ver para resolver la ecuación de Laplace es mediante [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) series de Fourier]. Para hacer esto vamos a tomar nuestro problema en coordenadas polares:&lt;br /&gt;
&lt;br /&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,&amp;amp; r\in(0,1),\theta\in[0,2\pi]\\&lt;br /&gt;
U(1,\theta)=G(\theta)=sin(\theta)cos(\theta),&amp;amp; \theta\in[0,2\pi]&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y a aplicar el método de separación de variables. Al hacer esto obtenemos que: &amp;lt;math&amp;gt; U(r,\theta)=\frac{a_0}{2}+\sum_{k=1}^\infty a_kr^kcos(k\theta)+b_kr^ksin(k\theta).&amp;lt;/math&amp;gt;. Para que esto sea solución falta hacer que cumpla la condición frontera, para ello vamos a tomar la serie de Fourier de &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; L^2([-\pi,\pi]) &amp;lt;/math&amp;gt;, que es &amp;lt;math&amp;gt; G(\theta)=\frac{\alpha_0}{2}+\sum_{k=1}^\infty \alpha_kcos(k\theta)+\beta_ksin(k\theta)&amp;lt;/math&amp;gt; y a igualar ambas series cuando r=1. Al hacer esto vemos que para que ambas series sean iguale los coeficientes tienen que ser iguales, por lo que vamos a calcular los coeficientes de  &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; y a ver su equivalencia con los de  &amp;lt;math&amp;gt; U &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; a_0=\alpha_0=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)d\theta \quad \quad \quad a_k=\alpha_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)cos(k\theta)d\theta \quad \quad \quad b_k=\beta_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)sin(k\theta)d\theta. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al realizar estas integrales obtenemos que &amp;lt;math&amp;gt; a_0=0,a_k=0\forall k &amp;lt;/math&amp;gt; y todos los &amp;lt;math&amp;gt; b_k &amp;lt;/math&amp;gt; son 0 excepto &amp;lt;math&amp;gt; b_2=\frac{1}{2} &amp;lt;/math&amp;gt;. Por lo que la solución nos queda de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}sin(2\theta) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a dibujar la solución, cuya gráfica va a ser exacta ya que la serie tiene un único término.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF43.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Dibujamos la solución calculada por serie de Fourier&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^(2).*sin(2.*theta)/2; %Solución de la ecuación&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):1; %Partición en r&lt;br /&gt;
for j = 1:N+1&lt;br /&gt;
    for i = 1:N+1&lt;br /&gt;
        U(i,j) = u(r(i),theta(j));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, U, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('y');&lt;br /&gt;
zlabel('u(x, y)');&lt;br /&gt;
title('Solución exacta calculada por serie de Fourier');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al haber resuelto el problema por ambos métodos, observamos que este último nos da la solución de forma exacta, por lo que en este caso va a ser más efectivo que el anterior. Esto no tendría porque ser así en todos los casos ya que la serie de Fourier para otra función G distinta puede tener infinitos términos, lo que haría que la aproximación no sea exacta, pero aun así sería más exacta que con el método anterior en los puntos cercanos a la forntera.&lt;br /&gt;
&lt;br /&gt;
==Desigualdad de Harnack==&lt;br /&gt;
&lt;br /&gt;
En esta sección vamos a usar la desigualdad de Harnack para obtener la región que contiene a todas las soluciones armónicas de la ecuación de Laplace que valen lo mismo en el origen que la solución que hemos calculado.&lt;br /&gt;
&lt;br /&gt;
La desigualdad de Harnack establece que dada una función &amp;lt;math&amp;gt; u\geq 0 &amp;lt;/math&amp;gt; armónica en &amp;lt;math&amp;gt; \Omega \subset \mathbb{R}^n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B_R(z) \subset \Omega &amp;lt;/math&amp;gt; con  &amp;lt;math&amp;gt; z \in \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)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para poder aplicarla a nuestro problema, vamos a tomar v=U+M, siendo &amp;lt;math&amp;gt; U(r,\theta)=\frac{r^2}{2R^2}sin(2\theta) &amp;lt;/math&amp;gt; la solución al problema en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;, y M el mínimo de &amp;lt;math&amp;gt; G(\theta)=R^2sin(\theta)cos(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;. Al hacer esto v va a ser una función armónica positiva a la que le podemos aplicar la desigualdad de Harnack.&lt;br /&gt;
&lt;br /&gt;
Primero vamos a aplicar la desigualdad variando el radio de la bola y a observar como varia la región que determina en función de esto. Para ello vamos a representar las cotas en escala logarítmica, lo cual nos permite observar mejor su comportamiento.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Representamos las cotas que nos da la desigualdad de Harnack&lt;br /&gt;
% para nuestro ejemplo.&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^2*sin(theta).*cos(theta); %Definimos la función u(r,theta)&lt;br /&gt;
g=@(theta,r) r^2*sin(theta).*cos(theta); %Definimos la función g&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
R = [1,2,10]; %Radios de las bolas&lt;br /&gt;
n = 2; %Dimensión del espacio&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
C=[&amp;quot;#0000FF&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#00FF00&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
for i=1:3&lt;br /&gt;
    r = 0:N^(-1):R(i); %Partición en r&lt;br /&gt;
    gR=g(theta,R(i));&lt;br /&gt;
    M1=min(gR); %Calculamos el mínimo de g en la frontera de la bola de radio R&lt;br /&gt;
    v1=@(r,theta) u(r,theta)-M1;&lt;br /&gt;
    A=@(r)R(i).^(n-2).*(R(i)-r)./(R(i)+r).^(n-1)*v1(0,0);&lt;br /&gt;
    B=@(r)R(i).^(n-2).*(R(i)+r)./(R(i)-r).^(n-1)*v1(0,0);&lt;br /&gt;
&lt;br /&gt;
    %Graficamos las cotas para los diferentes radios&lt;br /&gt;
    subplot(1,3,i)&lt;br /&gt;
    plot(r,log10(A(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(r,log10(B(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    axis([0 10,-3 6])&lt;br /&gt;
    xlabel('r');&lt;br /&gt;
    ylabel('log(Cotas)');&lt;br /&gt;
    title(['Cotas para r= ' num2str(R(i))]);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF44_1.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Lo más destacable en las 3 gráficas es que en todas ellas ambas restricciones se van al infinito cunado llegan al radio correspondiente a la bola en la que están calculadas. Esto tiene sentido ya que podemos observar que el denominador de la cota superior se anula cuando r=R y por lo tanto se va a infinito y su logaritmo también, y la cota inferior es 0 cuando r=R y por tanto su logaritmo se va a menos infinito. También podemos observar, que debido a esto, el pico que forman ambas restricciones es más estrecho cuando aumentamos el radio de la bola.&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo varían las restricciones si variamos la dimensión.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF442.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Al observar estas gráficas podemos observar que independientemente del radio cuando aumentamos la dimensión aumenta la región que definen ambas restricciones. Además, en n=3 el comportamiento sigue siendo el mismo que el comentado para n=2.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Poisson=&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a buscar una solución de la ecuación de Poisson en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u=f,\quad x\in\mathbb{R}^2. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ello vamos a utilizar la solución fundamental del laplaciano, que en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt; se define como &amp;lt;math&amp;gt; \Phi(x)=-\frac{1}{2\pi}log|x| &amp;lt;/math&amp;gt; y cumple que &amp;lt;math&amp;gt; \Delta \Phi(x)=-\delta_2(x) &amp;lt;/math&amp;gt;. Donde &amp;lt;math&amp;gt;\delta_2(x) &amp;lt;/math&amp;gt; es la delta de Dirac en dimensión 2.&lt;br /&gt;
&lt;br /&gt;
Si ahora consideramos el potencial logarítmico de la función f, que es la la convolución de la solución fundamental con f, entonces podríamos expresar la solución como: &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2}\Phi(x-y)f(y)dy &amp;lt;/math&amp;gt; y formalmente tenemos que: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u(x)=\int_{\mathbb{R}^2}\Delta_x\Phi(x-y)f(y)dy=- \int_{\mathbb{R}^2}\delta_2f(y)dy=-f(x),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pero esto no es correcto ya que el laplaciano de la solución fundamental no es integrable. A pesar de no ser correcto nos da la intuición de que el potencial logarítmico podría ser una posible  solución del problema.&lt;br /&gt;
&lt;br /&gt;
Ahora para solucionar esto vamos a tomar f como la función característica de la bola de radio 1 ya que de esta manera obtenemos el siguiente teorema: (Remark 3.35 pag 150)&lt;br /&gt;
&lt;br /&gt;
Por tanto, la solución vendrá dada por la siguiente expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  u(\textbf{x}) = - \frac{1}{2 \pi} \int _{B_1} log( | \textbf{x}- \textbf{y}|) d \textbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Haciendo el cambio de variable &amp;lt;math&amp;gt;  \textbf{y}= ( r cos (\theta), r sin( \theta)) &amp;lt;/math&amp;gt; obtenemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  u(x_1,x_2) = - \frac{1}{4 \pi} \int _{0}^{2 \pi} \int_{0}^{1} r log((x_1-r cos(\theta))^2 + (x_2-r sin(\theta))^2) d r d \theta &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Representamos la solución integrando mediante el método del trapecio.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Potencial logaritmico.png|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
N1=300; N2=300; %Número de puntos&lt;br /&gt;
a=0; b=1; c=0; d=2*pi; %Extremos de los intervalos&lt;br /&gt;
h1=(b-a)/N1; h2=(d-c)/N2;&lt;br /&gt;
r=a:h1:b; theta=c:h2:d; %Particiones de r y theta&lt;br /&gt;
[rr,tt]=meshgrid(r,theta); &lt;br /&gt;
w1=ones(N1+1,1);                &lt;br /&gt;
w1(1)=1/2; w1(N1+1)=1/2;&lt;br /&gt;
w2=ones(N2+1,1);                 &lt;br /&gt;
w2(1)=1/2; w2(N2+1)=1/2;&lt;br /&gt;
x11=-1:2/100:1; % Partición de x_1&lt;br /&gt;
x21=-1:2/100:1; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        f=-log(sqrt((x11(j)-rr.*cos(tt)).^2+(x21(i)-rr.*sin(tt)).^2)).*rr; %Potencial logaritmico               &lt;br /&gt;
        u1(i,j)=h1*h2*w2'*f*w1/(2*pi); %Solución del método del trapecio en 2 variable&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos la solución&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11,x21, u1, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución con el potencial logarítmico');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El comportamiento asintótico del potencial logarítmico es:&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\left(\frac{1}{|x|}\right) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde se define M como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M := \int_{\mathbb{R}^2} f(y) \, dy  &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En nuestro problema, donde &amp;lt;math&amp;gt; f &amp;lt;/math&amp;gt; es la función característica de la bola unidad, tenemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x) = -\frac{1}{2} \log|x|  &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF5_1.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Representación de la solución asintótica&lt;br /&gt;
&lt;br /&gt;
M=pi; %Area del circulo de radio 1&lt;br /&gt;
f=@(x1,x2) -M/(2*pi).*log(sqrt(x1.^2+x2.^2)); % Función que describe el comportamiento asintótico&lt;br /&gt;
&lt;br /&gt;
N=200; %Número de intervalos&lt;br /&gt;
a=-1; b=1;                     &lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
x11=a:h:b; %Partición de x_1&lt;br /&gt;
x21=a:h:b; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
u=zeros(length(x11),length(x21));&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        u(i,j)=f(x11(i),x21(j)); %Evaluamos f en la malla de puntos&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos el resultado&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11, x21, u, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución cuando x tienda a \infty');&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Tanto este comportamiento asintótico como la solución calculada presentan una simetría radial. Por tanto, para ver que efectivamente la solución se comporta así asintóticamente, representamos las dos funciones en el plano &amp;lt;math&amp;gt; x2=0 &amp;lt;/math&amp;gt;&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71620</id>
		<title>Ecuación de Laplace y de Poisson (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71620"/>
				<updated>2024-04-19T18:16:09Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Ecuación de Poisson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar  la ecuación de Laplace y la ecuación de Poisson. Para ello vamos a calcular soluciones de distintas formas usando cosas como la fórmula de Poisson o el potencial logarítmico, graficándolas y modificando algunos de los parámetros.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Laplace=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la exactitud que tienen dos formas diferentes de resolver la ecuación de Laplace. Para hacer esto tomamos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta u=0,&amp;amp; x\in B_1\\&lt;br /&gt;
u=g,&amp;amp; x\in\partial B_1&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt; B_1\subset\mathbb{R}^2 &amp;lt;/math&amp;gt; la bola de radio 1 centrada en el (0,0).&lt;br /&gt;
&lt;br /&gt;
==Fórmula de Poisson==&lt;br /&gt;
&lt;br /&gt;
Una de las formas de resolver este tipo de problemas es mediante la fórmula de Poisson, que es: &amp;lt;math&amp;gt; u=\frac{R^2-|x|^2}{2\pi R}\int_{\partial B_R}\frac{g(\sigma)}{|x-\sigma|^2} d\sigma, &amp;lt;/math&amp;gt; donde R es el radio de la bola y &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; la distancia al centro de la bola.&lt;br /&gt;
&lt;br /&gt;
Para ver cómo funciona esta fórmula vamos a resolver el problema tomando &amp;lt;math&amp;gt; g(\theta)=max \{0,1-\frac{2}{\pi}|\theta-\pi|\}&amp;lt;/math&amp;gt;. Como esta función, que es la que representa las condiciones frontera, está en coordenadas polares vamos a expresar la fórmula de Poisson en polares.&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}\int_{0}^{2\pi}g(s)\frac{R^2-r^2}{R^2+r^2-2rRcos(s-\theta)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la fórmula expresada de esta manera, podemos aplicarla a nuestro problema tomando R=1 y sustituyendo g por nuestra función. Teniendo esto en cuenta vamos a resolver el problema realizando la integral mediante la [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals regla del trapecio] y a representar la solución.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF41.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calcular la solución de la ecuación de Laplace  en la bola de radio&lt;br /&gt;
% unidad usando la fórmula de Poisson. Con condición frontera la función g&lt;br /&gt;
&lt;br /&gt;
g = @(theta) max(0,1-2/pi*abs(theta-pi)); %Definimos la función g(theta)&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):0.9; %Partición en r (no llegamos hasta el borde de la bola)&lt;br /&gt;
&lt;br /&gt;
w = ones(N+1,1);                 &lt;br /&gt;
w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
u = zeros(length(r)+1,length(theta));&lt;br /&gt;
for j = 1:length(theta)&lt;br /&gt;
    for i = 1:length(r)&lt;br /&gt;
        f = g(theta)*(1-r(i).^2)./(1+r(i).^2-2*r(i)*cos(theta-theta(j))); %Función a integrar&lt;br /&gt;
        u(i,j) = h*w'*f'/(2*pi); %Fórmula de Poison usando la fórmula del trapecio para integrar.&lt;br /&gt;
    end&lt;br /&gt;
    u(length(r)+1,j) = g(theta(j)); %Añadimos la condicón frontera directamente&lt;br /&gt;
end&lt;br /&gt;
r(length(r)+1) = 1;&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, u, 'EdgeColor', 'none');&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;
En la imagen podemos observar que la fórmula de Poisson nos da problemas en la frontera, esto se debe al carácter singular de la integral cerca del borde. Para solucionar esto vamos a tomar directamente el valor de g en el borde de la bola. Al hacer esto obtenemos la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF411.jpg|400px|thumb|center| Sustituyendo g en el borde de la bola]]&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas podemos observar que efectivamente sustituir g en el borde hace que evitemos la singularidad de la integral en la frontera.&lt;br /&gt;
&lt;br /&gt;
Como hemos visto con este ejemplo la fórmula de Poisson tiene problemas para aproximar la solución cerca de la frontera. Por lo que para estudiar esto, vamos a tomar &amp;lt;math&amp;gt; g(x,y)=xy &amp;lt;/math&amp;gt; como condición frontera y &amp;lt;math&amp;gt; u(x,y)=xy &amp;lt;/math&amp;gt; como solución del problema para calcular los diferentes errores que genera la fórmula de Poisson. &lt;br /&gt;
&lt;br /&gt;
Para hacerlo vamos a tomar tanto u como g en coordenadas polares, ya que al estudiar el problema en una bola esto nos permite hacernos una mejor idea de lo que ocurre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
U(r,\theta)=r^2cos(\theta)sin(\theta)\\&lt;br /&gt;
U(1,\theta)=G(\theta)=cos(\theta)sin(\theta)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Primero vamos a tomar un punto &amp;quot;lejos&amp;quot; de la frontera &amp;lt;math&amp;gt; (r,\theta)=(0.9,\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo evoluciona el error, es decir, la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson en ese punto, en función de n. Siendo n el número que determina el número de intervalos en &amp;lt;math&amp;gt; 10^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por el ejemplo anterior, cabe esperar que la fórmula en este punto aproxime bien a la función ya que no es un punto cercano a la frontera, y por lo tanto el error vaya disminuyendo según aumenta el número de intervalos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF42.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral mediante&lt;br /&gt;
% el método del trapecio en función del tamaño de la discretización&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 8; %Discretización máxima: 10^N_max&lt;br /&gt;
err = zeros(N_max,1);&lt;br /&gt;
for m = 1:N_max&lt;br /&gt;
    N = 10^m; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f = g(theta)*(1-0.9.^2)./(1+0.9.^2-2*0.9*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u = h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (0.9,pi/4)&lt;br /&gt;
    &lt;br /&gt;
    % Valor de la solución exacta (x*y=R^2*cos(theta)*sin(theta))&lt;br /&gt;
    % en el punto (0.9, pi/4)&lt;br /&gt;
    exacta = 0.9^2*cos(pi/4)*sin(pi/4); &lt;br /&gt;
&lt;br /&gt;
    % Calculamos el error como la diferencia en valor absoluto entre&lt;br /&gt;
    % la solución exacta y la calculada con la fórmula de Poisson&lt;br /&gt;
    err(m) = abs(exacta-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,log10(err),color='b',LineWidth=1.5) %Dibujamos la gráfica del error en escala logarítmica&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('log_{10}(error(10^n))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado antes, al observar la gráfica vemos que el error va disminuyendo según aumenta n. Esto tiene sentido ya que cuantos más intervalos hay en la discretización más exacta va a ser la aproximación. También podemos observar que se estabiliza cuando llega aproximadamente a &amp;lt;math&amp;gt; n=3 &amp;lt;/math&amp;gt;, esto se debe a que con &amp;lt;math&amp;gt; 10^3 &amp;lt;/math&amp;gt; intervalos el método del trapecio ya aproxima lo suficientemente bien a la función original, lo que hace que aunque aumente el número de intervalos la aproximación no tenga mucho margen de mejor. Con esto hemos visto que en un punto que no esté cerca del borde la fórmula de Poisson va a funcionar bien. &lt;br /&gt;
&lt;br /&gt;
También podemos usar la fórmula del error máximo del método del trapecio para obtener una cota para el error y ver que los errores calculados numéricamente se encuentran por debajo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(n) \leq \left|-\frac{f’’(\xi)(b-a)^3}{12n^2} \right| &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt; es el intervalo de integración, &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; la función a integrar, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; el número de particiones de la discretización y &amp;lt;math&amp;gt; \xi &amp;lt;/math&amp;gt; un cierto valor entre &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt;. Para nuetro problema, &amp;lt;math&amp;gt;[a,b]=[0,2\pi]&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f(\theta)=\frac{(1-r^2) sen(\theta)cos(\theta)}{2\pi(1+r^2-2rcos(\alpha - \theta))}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Derivando &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; dos veces y maximizando su valor en &amp;lt;math&amp;gt;[0,2\pi]&amp;lt;/math&amp;gt;, obtenemos la siguiente cota:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;error(n) \leq \left|- \frac{\pi^2(r^6 - r^5 + 6 r^3 + r^2 -r +2) }{3 n^2(1-r)^5} \right|&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La dibujamos en función de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; junto con el error calculado numéricamente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Cota error.png|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Usando el vector err calculado en el anterior código, representamos la misma gráfica junto&lt;br /&gt;
% con la gráfica de la cota estimada del error&lt;br /&gt;
&lt;br /&gt;
%Definimos la cota del error estimada mediante la fórmula del trapecio&lt;br /&gt;
cota = @(n) abs(-pi^2*(r^6-r^5+6*r^3+r^2-r+2)./(3*(10.^(2*n))*(1-r)^5)); &lt;br /&gt;
&lt;br /&gt;
%Dibujamos las gráficas del error en escala logarítmica&lt;br /&gt;
hold on&lt;br /&gt;
plot(1:N_max,log10(err(:,1)),color='b',LineWidth=1.5)&lt;br /&gt;
plot(1:N_max,log10(cota(1:N_max)),color='r',LineWidth=1.5)&lt;br /&gt;
legend('Error absoluto', 'Cota del error'); % Leyenda&lt;br /&gt;
hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Comprobamos que el error de la aproximación queda por debajo de esta cota (que no es muy ajustada).&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo se comporta el error según nos acercamos a la frontera. Para hacer esto vamos a tomar el punto &amp;lt;math&amp;gt; (r,\theta)=(1-10^{-n},\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo varía el error (la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson) cuando aumentamos la n, es decir, cuando nos vamos acercando a la frontera. Como hemos comentado anteriormente cabe esperar que al aumentar la n el error va a aumentar, ya que como hemos visto en el primer ejemplo cerca de la frontera la fórmula de Poisson da problemas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF421.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral según nos acercamos al&lt;br /&gt;
% borde de la región.&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 20;&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for n = 1:N_max&lt;br /&gt;
    N = 10^2; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f=g(theta)*(1-(1-10^(-n)).^2)./(1+(1-10^(-n)).^2-2*(1-10^(-n))*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u=h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (1-10^-n,pi/4)&lt;br /&gt;
    err(n)=abs((1-10^(-n))^2*cos(pi/4)*sin(pi/4)-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,err,color='b',LineWidth=1.5) %Dibujamos la gráfica del error&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('Error');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En la gráfica podemos ver cómo efectivamente el error para valores de n pequeños, es decir, puntos que están relativamente lejos de la frontera, el error es pequeño al igual que en el caso anterior. Por el contrario, según aumenta la n, es decir, según nos acercamos a la frontera el error aumenta, lo cual tiene sentido ya que como hemos comentado antes la fórmula de Poisson da problemas en la frontera.&lt;br /&gt;
&lt;br /&gt;
Además, podemos observar que el error se estabiliza aproximadamente en  &amp;lt;math&amp;gt; n=4 &amp;lt;/math&amp;gt;, esto se debe a que para este valor de n el punto ya esta suficientemente cerca de la frontera como para representar todo el error que se da en esta y por ello aunque nos acerquemos más a la frontera (aumente n) el error se mantiene estable en  &amp;lt;math&amp;gt; 0.5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Serie de Fourier==&lt;br /&gt;
La otra forma que vamos a ver para resolver la ecuación de Laplace es mediante [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) series de Fourier]. Para hacer esto vamos a tomar nuestro problema en coordenadas polares:&lt;br /&gt;
&lt;br /&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,&amp;amp; r\in(0,1),\theta\in[0,2\pi]\\&lt;br /&gt;
U(1,\theta)=G(\theta)=sin(\theta)cos(\theta),&amp;amp; \theta\in[0,2\pi]&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y a aplicar el método de separación de variables. Al hacer esto obtenemos que: &amp;lt;math&amp;gt; U(r,\theta)=\frac{a_0}{2}+\sum_{k=1}^\infty a_kr^kcos(k\theta)+b_kr^ksin(k\theta).&amp;lt;/math&amp;gt;. Para que esto sea solución falta hacer que cumpla la condición frontera, para ello vamos a tomar la serie de Fourier de &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; L^2([-\pi,\pi]) &amp;lt;/math&amp;gt;, que es &amp;lt;math&amp;gt; G(\theta)=\frac{\alpha_0}{2}+\sum_{k=1}^\infty \alpha_kcos(k\theta)+\beta_ksin(k\theta)&amp;lt;/math&amp;gt; y a igualar ambas series cuando r=1. Al hacer esto vemos que para que ambas series sean iguale los coeficientes tienen que ser iguales, por lo que vamos a calcular los coeficientes de  &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; y a ver su equivalencia con los de  &amp;lt;math&amp;gt; U &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; a_0=\alpha_0=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)d\theta \quad \quad \quad a_k=\alpha_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)cos(k\theta)d\theta \quad \quad \quad b_k=\beta_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)sin(k\theta)d\theta. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al realizar estas integrales obtenemos que &amp;lt;math&amp;gt; a_0=0,a_k=0\forall k &amp;lt;/math&amp;gt; y todos los &amp;lt;math&amp;gt; b_k &amp;lt;/math&amp;gt; son 0 excepto &amp;lt;math&amp;gt; b_2=\frac{1}{2} &amp;lt;/math&amp;gt;. Por lo que la solución nos queda de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}sin(2\theta) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a dibujar la solución, cuya gráfica va a ser exacta ya que la serie tiene un único término.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF43.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Dibujamos la solución calculada por serie de Fourier&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^(2).*sin(2.*theta)/2; %Solución de la ecuación&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):1; %Partición en r&lt;br /&gt;
for j = 1:N+1&lt;br /&gt;
    for i = 1:N+1&lt;br /&gt;
        U(i,j) = u(r(i),theta(j));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, U, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('y');&lt;br /&gt;
zlabel('u(x, y)');&lt;br /&gt;
title('Solución exacta calculada por serie de Fourier');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al haber resuelto el problema por ambos métodos, observamos que este último nos da la solución de forma exacta, por lo que en este caso va a ser más efectivo que el anterior. Esto no tendría porque ser así en todos los casos ya que la serie de Fourier para otra función G distinta puede tener infinitos términos, lo que haría que la aproximación no sea exacta, pero aun así sería más exacta que con el método anterior en los puntos cercanos a la forntera.&lt;br /&gt;
&lt;br /&gt;
==Desigualdad de Harnack==&lt;br /&gt;
&lt;br /&gt;
En esta sección vamos a usar la desigualdad de Harnack para obtener la región que contiene a todas las soluciones armónicas de la ecuación de Laplace que valen lo mismo en el origen que la solución que hemos calculado.&lt;br /&gt;
&lt;br /&gt;
La desigualdad de Harnack establece que dada una función &amp;lt;math&amp;gt; u\geq 0 &amp;lt;/math&amp;gt; armónica en &amp;lt;math&amp;gt; \Omega \subset \mathbb{R}^n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B_R(z) \subset \Omega &amp;lt;/math&amp;gt; con  &amp;lt;math&amp;gt; z \in \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)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para poder aplicarla a nuestro problema, vamos a tomar v=U+M, siendo &amp;lt;math&amp;gt; U(r,\theta)=\frac{r^2}{2R^2}sin(2\theta) &amp;lt;/math&amp;gt; la solución al problema en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;, y M el mínimo de &amp;lt;math&amp;gt; G(\theta)=R^2sin(\theta)cos(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;. Al hacer esto v va a ser una función armónica positiva a la que le podemos aplicar la desigualdad de Harnack.&lt;br /&gt;
&lt;br /&gt;
Primero vamos a aplicar la desigualdad variando el radio de la bola y a observar como varia la región que determina en función de esto. Para ello vamos a representar las cotas en escala logarítmica, lo cual nos permite observar mejor su comportamiento.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Representamos las cotas que nos da la desigualdad de Harnack&lt;br /&gt;
% para nuestro ejemplo.&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^2*sin(theta).*cos(theta); %Definimos la función u(r,theta)&lt;br /&gt;
g=@(theta,r) r^2*sin(theta).*cos(theta); %Definimos la función g&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
R = [1,2,10]; %Radios de las bolas&lt;br /&gt;
n = 2; %Dimensión del espacio&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
C=[&amp;quot;#0000FF&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#00FF00&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
for i=1:3&lt;br /&gt;
    r = 0:N^(-1):R(i); %Partición en r&lt;br /&gt;
    gR=g(theta,R(i));&lt;br /&gt;
    M1=min(gR); %Calculamos el mínimo de g en la frontera de la bola de radio R&lt;br /&gt;
    v1=@(r,theta) u(r,theta)-M1;&lt;br /&gt;
    A=@(r)R(i).^(n-2).*(R(i)-r)./(R(i)+r).^(n-1)*v1(0,0);&lt;br /&gt;
    B=@(r)R(i).^(n-2).*(R(i)+r)./(R(i)-r).^(n-1)*v1(0,0);&lt;br /&gt;
&lt;br /&gt;
    %Graficamos las cotas para los diferentes radios&lt;br /&gt;
    subplot(1,3,i)&lt;br /&gt;
    plot(r,log10(A(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(r,log10(B(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    axis([0 10,-3 6])&lt;br /&gt;
    xlabel('r');&lt;br /&gt;
    ylabel('log(Cotas)');&lt;br /&gt;
    title(['Cotas para r= ' num2str(R(i))]);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF44_1.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Lo más destacable en las 3 gráficas es que en todas ellas ambas restricciones se van al infinito cunado llegan al radio correspondiente a la bola en la que están calculadas. Esto tiene sentido ya que podemos observar que el denominador de la cota superior se anula cuando r=R y por lo tanto se va a infinito y su logaritmo también, y la cota inferior es 0 cuando r=R y por tanto su logaritmo se va a menos infinito. También podemos observar, que debido a esto, el pico que forman ambas restricciones es más estrecho cuando aumentamos el radio de la bola.&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo varían las restricciones si variamos la dimensión.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF442.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Al observar estas gráficas podemos observar que independientemente del radio cuando aumentamos la dimensión aumenta la región que definen ambas restricciones. Además, en n=3 el comportamiento sigue siendo el mismo que el comentado para n=2.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Poisson=&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a buscar una solución de la ecuación de Poisson en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u=f,\quad x\in\mathbb{R}^2. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ello vamos a utilizar la solución fundamental del laplaciano, que en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt; se define como &amp;lt;math&amp;gt; \Phi(x)=-\frac{1}{2\pi}log|x| &amp;lt;/math&amp;gt; y cumple que &amp;lt;math&amp;gt; \Delta \Phi(x)=-\delta_2(x) &amp;lt;/math&amp;gt;. Donde &amp;lt;math&amp;gt;\delta_2(x) &amp;lt;/math&amp;gt; es la delta de Dirac en dimensión 2.&lt;br /&gt;
&lt;br /&gt;
Si ahora consideramos el potencial logarítmico de la función f, que es la la convolución de la solución fundamental con f, entonces podríamos expresar la solución como: &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2}\Phi(x-y)f(y)dy &amp;lt;/math&amp;gt; y formalmente tenemos que: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u(x)=\int_{\mathbb{R}^2}\Delta_x\Phi(x-y)f(y)dy=- \int_{\mathbb{R}^2}\delta_2f(y)dy=-f(x),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pero esto no es correcto ya que el laplaciano de la solución fundamental no es integrable. A pesar de no ser correcto nos da la intuición de que el potencial logarítmico podría ser una posible  solución del problema.&lt;br /&gt;
&lt;br /&gt;
Ahora para solucionar esto vamos a tomar f como la función característica de la bola de radio 1 ya que de esta manera obtenemos el siguiente teorema: (Remark 3.35 pag 150)&lt;br /&gt;
&lt;br /&gt;
Por tanto, la solución vendrá dada por la siguiente expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  u(\textbf{x}) = - \frac{1}{2 \pi} \int _{B_1} log( | \textbf{x}- \textbf{y}|) d \textbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Haciendo el cambio de variable &amp;lt;math&amp;gt;  \textbf{y}= ( r cos (\theta), r sin( \theta)) &amp;lt;/math&amp;gt; obtenemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  u(x_1,x_2) = - \frac{1}{4 \pi} \int _{0}^{2 \pi} \int_{0}^{1} r log((x_1-r cos(\theta))^2 + (x_2-r sin(\theta))^2) d r d \theta &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Representamos la solución integrando mediante el método del trapecio.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Potencial logaritmico.png|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
N1=300; N2=300; %Número de puntos&lt;br /&gt;
a=0; b=1; c=0; d=2*pi; %Extremos de los intervalos&lt;br /&gt;
h1=(b-a)/N1; h2=(d-c)/N2;&lt;br /&gt;
r=a:h1:b; theta=c:h2:d; %Particiones de r y theta&lt;br /&gt;
[rr,tt]=meshgrid(r,theta); &lt;br /&gt;
w1=ones(N1+1,1);                &lt;br /&gt;
w1(1)=1/2; w1(N1+1)=1/2;&lt;br /&gt;
w2=ones(N2+1,1);                 &lt;br /&gt;
w2(1)=1/2; w2(N2+1)=1/2;&lt;br /&gt;
x11=-1:2/100:1; % Partición de x_1&lt;br /&gt;
x21=-1:2/100:1; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        f=-log(sqrt((x11(j)-rr.*cos(tt)).^2+(x21(i)-rr.*sin(tt)).^2)).*rr; %Potencial logaritmico               &lt;br /&gt;
        u1(i,j)=h1*h2*w2'*f*w1/(2*pi); %Solución del método del trapecio en 2 variable&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos la solución&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11,x21, u1, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución con el potencial logarítmico');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El comportamiento asintótico del potencial logarítmico es:&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\left(\frac{1}{|x|}\right) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde se define M como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M := \int_{\mathbb{R}^2} f(y) \, dy  &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En nuestro problema, donde &amp;lt;math&amp;gt; f &amp;lt;/math&amp;gt; es la función característica de la bola unidad, tenemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x) = -\frac{1}{2} \log|x|  &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF5_1.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Representación de la solución asintótica&lt;br /&gt;
&lt;br /&gt;
M=pi; %Area del circulo de radio 1&lt;br /&gt;
f=@(x1,x2) -M/(2*pi).*log(sqrt(x1.^2+x2.^2)); % Función que describe el comportamiento asintótico&lt;br /&gt;
&lt;br /&gt;
N=200; %Número de intervalos&lt;br /&gt;
a=-1; b=1;                     &lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
x11=a:h:b; %Partición de x_1&lt;br /&gt;
x21=a:h:b; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
u=zeros(length(x11),length(x21));&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        u(i,j)=f(x11(i),x21(j)); %Evaluamos f en la malla de puntos&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos el resultado&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11, x21, u, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución cuando x tienda a \infty');&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GF53.jpg|400px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
Tanto este comportamiento asintótico como la solución calculada presentan una simetría radial. Por tanto, para ver que efectivamente la solución se comporta así asintóticamente, representamos las dos funciones en el plano &amp;lt;math&amp;gt; x2=0 &amp;lt;/math&amp;gt;&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71616</id>
		<title>Ecuación de Laplace y de Poisson (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71616"/>
				<updated>2024-04-19T18:14:05Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Ecuación de Poisson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar  la ecuación de Laplace y la ecuación de Poisson. Para ello vamos a calcular soluciones de distintas formas usando cosas como la fórmula de Poisson o el potencial logarítmico, graficándolas y modificando algunos de los parámetros.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Laplace=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la exactitud que tienen dos formas diferentes de resolver la ecuación de Laplace. Para hacer esto tomamos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta u=0,&amp;amp; x\in B_1\\&lt;br /&gt;
u=g,&amp;amp; x\in\partial B_1&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt; B_1\subset\mathbb{R}^2 &amp;lt;/math&amp;gt; la bola de radio 1 centrada en el (0,0).&lt;br /&gt;
&lt;br /&gt;
==Fórmula de Poisson==&lt;br /&gt;
&lt;br /&gt;
Una de las formas de resolver este tipo de problemas es mediante la fórmula de Poisson, que es: &amp;lt;math&amp;gt; u=\frac{R^2-|x|^2}{2\pi R}\int_{\partial B_R}\frac{g(\sigma)}{|x-\sigma|^2} d\sigma, &amp;lt;/math&amp;gt; donde R es el radio de la bola y &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; la distancia al centro de la bola.&lt;br /&gt;
&lt;br /&gt;
Para ver cómo funciona esta fórmula vamos a resolver el problema tomando &amp;lt;math&amp;gt; g(\theta)=max \{0,1-\frac{2}{\pi}|\theta-\pi|\}&amp;lt;/math&amp;gt;. Como esta función, que es la que representa las condiciones frontera, está en coordenadas polares vamos a expresar la fórmula de Poisson en polares.&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}\int_{0}^{2\pi}g(s)\frac{R^2-r^2}{R^2+r^2-2rRcos(s-\theta)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la fórmula expresada de esta manera, podemos aplicarla a nuestro problema tomando R=1 y sustituyendo g por nuestra función. Teniendo esto en cuenta vamos a resolver el problema realizando la integral mediante la [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals regla del trapecio] y a representar la solución.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF41.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calcular la solución de la ecuación de Laplace  en la bola de radio&lt;br /&gt;
% unidad usando la fórmula de Poisson. Con condición frontera la función g&lt;br /&gt;
&lt;br /&gt;
g = @(theta) max(0,1-2/pi*abs(theta-pi)); %Definimos la función g(theta)&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):0.9; %Partición en r (no llegamos hasta el borde de la bola)&lt;br /&gt;
&lt;br /&gt;
w = ones(N+1,1);                 &lt;br /&gt;
w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
u = zeros(length(r)+1,length(theta));&lt;br /&gt;
for j = 1:length(theta)&lt;br /&gt;
    for i = 1:length(r)&lt;br /&gt;
        f = g(theta)*(1-r(i).^2)./(1+r(i).^2-2*r(i)*cos(theta-theta(j))); %Función a integrar&lt;br /&gt;
        u(i,j) = h*w'*f'/(2*pi); %Fórmula de Poison usando la fórmula del trapecio para integrar.&lt;br /&gt;
    end&lt;br /&gt;
    u(length(r)+1,j) = g(theta(j)); %Añadimos la condicón frontera directamente&lt;br /&gt;
end&lt;br /&gt;
r(length(r)+1) = 1;&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, u, 'EdgeColor', 'none');&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;
En la imagen podemos observar que la fórmula de Poisson nos da problemas en la frontera, esto se debe al carácter singular de la integral cerca del borde. Para solucionar esto vamos a tomar directamente el valor de g en el borde de la bola. Al hacer esto obtenemos la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF411.jpg|400px|thumb|center| Sustituyendo g en el borde de la bola]]&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas podemos observar que efectivamente sustituir g en el borde hace que evitemos la singularidad de la integral en la frontera.&lt;br /&gt;
&lt;br /&gt;
Como hemos visto con este ejemplo la fórmula de Poisson tiene problemas para aproximar la solución cerca de la frontera. Por lo que para estudiar esto, vamos a tomar &amp;lt;math&amp;gt; g(x,y)=xy &amp;lt;/math&amp;gt; como condición frontera y &amp;lt;math&amp;gt; u(x,y)=xy &amp;lt;/math&amp;gt; como solución del problema para calcular los diferentes errores que genera la fórmula de Poisson. &lt;br /&gt;
&lt;br /&gt;
Para hacerlo vamos a tomar tanto u como g en coordenadas polares, ya que al estudiar el problema en una bola esto nos permite hacernos una mejor idea de lo que ocurre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
U(r,\theta)=r^2cos(\theta)sin(\theta)\\&lt;br /&gt;
U(1,\theta)=G(\theta)=cos(\theta)sin(\theta)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Primero vamos a tomar un punto &amp;quot;lejos&amp;quot; de la frontera &amp;lt;math&amp;gt; (r,\theta)=(0.9,\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo evoluciona el error, es decir, la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson en ese punto, en función de n. Siendo n el número que determina el número de intervalos en &amp;lt;math&amp;gt; 10^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por el ejemplo anterior, cabe esperar que la fórmula en este punto aproxime bien a la función ya que no es un punto cercano a la frontera, y por lo tanto el error vaya disminuyendo según aumenta el número de intervalos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF42.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral mediante&lt;br /&gt;
% el método del trapecio en función del tamaño de la discretización&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 8; %Discretización máxima: 10^N_max&lt;br /&gt;
err = zeros(N_max,1);&lt;br /&gt;
for m = 1:N_max&lt;br /&gt;
    N = 10^m; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f = g(theta)*(1-0.9.^2)./(1+0.9.^2-2*0.9*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u = h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (0.9,pi/4)&lt;br /&gt;
    &lt;br /&gt;
    % Valor de la solución exacta (x*y=R^2*cos(theta)*sin(theta))&lt;br /&gt;
    % en el punto (0.9, pi/4)&lt;br /&gt;
    exacta = 0.9^2*cos(pi/4)*sin(pi/4); &lt;br /&gt;
&lt;br /&gt;
    % Calculamos el error como la diferencia en valor absoluto entre&lt;br /&gt;
    % la solución exacta y la calculada con la fórmula de Poisson&lt;br /&gt;
    err(m) = abs(exacta-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,log10(err),color='b',LineWidth=1.5) %Dibujamos la gráfica del error en escala logarítmica&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('log_{10}(error(10^n))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado antes, al observar la gráfica vemos que el error va disminuyendo según aumenta n. Esto tiene sentido ya que cuantos más intervalos hay en la discretización más exacta va a ser la aproximación. También podemos observar que se estabiliza cuando llega aproximadamente a &amp;lt;math&amp;gt; n=3 &amp;lt;/math&amp;gt;, esto se debe a que con &amp;lt;math&amp;gt; 10^3 &amp;lt;/math&amp;gt; intervalos el método del trapecio ya aproxima lo suficientemente bien a la función original, lo que hace que aunque aumente el número de intervalos la aproximación no tenga mucho margen de mejor. Con esto hemos visto que en un punto que no esté cerca del borde la fórmula de Poisson va a funcionar bien. &lt;br /&gt;
&lt;br /&gt;
También podemos usar la fórmula del error máximo del método del trapecio para obtener una cota para el error y ver que los errores calculados numéricamente se encuentran por debajo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(n) \leq \left|-\frac{f’’(\xi)(b-a)^3}{12n^2} \right| &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt; es el intervalo de integración, &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; la función a integrar, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; el número de particiones de la discretización y &amp;lt;math&amp;gt; \xi &amp;lt;/math&amp;gt; un cierto valor entre &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt;. Para nuetro problema, &amp;lt;math&amp;gt;[a,b]=[0,2\pi]&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f(\theta)=\frac{(1-r^2) sen(\theta)cos(\theta)}{2\pi(1+r^2-2rcos(\alpha - \theta))}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Derivando &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; dos veces y maximizando su valor en &amp;lt;math&amp;gt;[0,2\pi]&amp;lt;/math&amp;gt;, obtenemos la siguiente cota:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;error(n) \leq \left|- \frac{\pi^2(r^6 - r^5 + 6 r^3 + r^2 -r +2) }{3 n^2(1-r)^5} \right|&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La dibujamos en función de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; junto con el error calculado numéricamente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Cota error.png|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Usando el vector err calculado en el anterior código, representamos la misma gráfica junto&lt;br /&gt;
% con la gráfica de la cota estimada del error&lt;br /&gt;
&lt;br /&gt;
%Definimos la cota del error estimada mediante la fórmula del trapecio&lt;br /&gt;
cota = @(n) abs(-pi^2*(r^6-r^5+6*r^3+r^2-r+2)./(3*(10.^(2*n))*(1-r)^5)); &lt;br /&gt;
&lt;br /&gt;
%Dibujamos las gráficas del error en escala logarítmica&lt;br /&gt;
hold on&lt;br /&gt;
plot(1:N_max,log10(err(:,1)),color='b',LineWidth=1.5)&lt;br /&gt;
plot(1:N_max,log10(cota(1:N_max)),color='r',LineWidth=1.5)&lt;br /&gt;
legend('Error absoluto', 'Cota del error'); % Leyenda&lt;br /&gt;
hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Comprobamos que el error de la aproximación queda por debajo de esta cota (que no es muy ajustada).&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo se comporta el error según nos acercamos a la frontera. Para hacer esto vamos a tomar el punto &amp;lt;math&amp;gt; (r,\theta)=(1-10^{-n},\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo varía el error (la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson) cuando aumentamos la n, es decir, cuando nos vamos acercando a la frontera. Como hemos comentado anteriormente cabe esperar que al aumentar la n el error va a aumentar, ya que como hemos visto en el primer ejemplo cerca de la frontera la fórmula de Poisson da problemas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF421.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral según nos acercamos al&lt;br /&gt;
% borde de la región.&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 20;&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for n = 1:N_max&lt;br /&gt;
    N = 10^2; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f=g(theta)*(1-(1-10^(-n)).^2)./(1+(1-10^(-n)).^2-2*(1-10^(-n))*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u=h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (1-10^-n,pi/4)&lt;br /&gt;
    err(n)=abs((1-10^(-n))^2*cos(pi/4)*sin(pi/4)-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,err,color='b',LineWidth=1.5) %Dibujamos la gráfica del error&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('Error');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En la gráfica podemos ver cómo efectivamente el error para valores de n pequeños, es decir, puntos que están relativamente lejos de la frontera, el error es pequeño al igual que en el caso anterior. Por el contrario, según aumenta la n, es decir, según nos acercamos a la frontera el error aumenta, lo cual tiene sentido ya que como hemos comentado antes la fórmula de Poisson da problemas en la frontera.&lt;br /&gt;
&lt;br /&gt;
Además, podemos observar que el error se estabiliza aproximadamente en  &amp;lt;math&amp;gt; n=4 &amp;lt;/math&amp;gt;, esto se debe a que para este valor de n el punto ya esta suficientemente cerca de la frontera como para representar todo el error que se da en esta y por ello aunque nos acerquemos más a la frontera (aumente n) el error se mantiene estable en  &amp;lt;math&amp;gt; 0.5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Serie de Fourier==&lt;br /&gt;
La otra forma que vamos a ver para resolver la ecuación de Laplace es mediante [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) series de Fourier]. Para hacer esto vamos a tomar nuestro problema en coordenadas polares:&lt;br /&gt;
&lt;br /&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,&amp;amp; r\in(0,1),\theta\in[0,2\pi]\\&lt;br /&gt;
U(1,\theta)=G(\theta)=sin(\theta)cos(\theta),&amp;amp; \theta\in[0,2\pi]&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y a aplicar el método de separación de variables. Al hacer esto obtenemos que: &amp;lt;math&amp;gt; U(r,\theta)=\frac{a_0}{2}+\sum_{k=1}^\infty a_kr^kcos(k\theta)+b_kr^ksin(k\theta).&amp;lt;/math&amp;gt;. Para que esto sea solución falta hacer que cumpla la condición frontera, para ello vamos a tomar la serie de Fourier de &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; L^2([-\pi,\pi]) &amp;lt;/math&amp;gt;, que es &amp;lt;math&amp;gt; G(\theta)=\frac{\alpha_0}{2}+\sum_{k=1}^\infty \alpha_kcos(k\theta)+\beta_ksin(k\theta)&amp;lt;/math&amp;gt; y a igualar ambas series cuando r=1. Al hacer esto vemos que para que ambas series sean iguale los coeficientes tienen que ser iguales, por lo que vamos a calcular los coeficientes de  &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; y a ver su equivalencia con los de  &amp;lt;math&amp;gt; U &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; a_0=\alpha_0=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)d\theta \quad \quad \quad a_k=\alpha_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)cos(k\theta)d\theta \quad \quad \quad b_k=\beta_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)sin(k\theta)d\theta. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al realizar estas integrales obtenemos que &amp;lt;math&amp;gt; a_0=0,a_k=0\forall k &amp;lt;/math&amp;gt; y todos los &amp;lt;math&amp;gt; b_k &amp;lt;/math&amp;gt; son 0 excepto &amp;lt;math&amp;gt; b_2=\frac{1}{2} &amp;lt;/math&amp;gt;. Por lo que la solución nos queda de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}sin(2\theta) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a dibujar la solución, cuya gráfica va a ser exacta ya que la serie tiene un único término.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF43.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Dibujamos la solución calculada por serie de Fourier&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^(2).*sin(2.*theta)/2; %Solución de la ecuación&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):1; %Partición en r&lt;br /&gt;
for j = 1:N+1&lt;br /&gt;
    for i = 1:N+1&lt;br /&gt;
        U(i,j) = u(r(i),theta(j));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, U, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('y');&lt;br /&gt;
zlabel('u(x, y)');&lt;br /&gt;
title('Solución exacta calculada por serie de Fourier');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al haber resuelto el problema por ambos métodos, observamos que este último nos da la solución de forma exacta, por lo que en este caso va a ser más efectivo que el anterior. Esto no tendría porque ser así en todos los casos ya que la serie de Fourier para otra función G distinta puede tener infinitos términos, lo que haría que la aproximación no sea exacta, pero aun así sería más exacta que con el método anterior en los puntos cercanos a la forntera.&lt;br /&gt;
&lt;br /&gt;
==Desigualdad de Harnack==&lt;br /&gt;
&lt;br /&gt;
En esta sección vamos a usar la desigualdad de Harnack para obtener la región que contiene a todas las soluciones armónicas de la ecuación de Laplace que valen lo mismo en el origen que la solución que hemos calculado.&lt;br /&gt;
&lt;br /&gt;
La desigualdad de Harnack establece que dada una función &amp;lt;math&amp;gt; u\geq 0 &amp;lt;/math&amp;gt; armónica en &amp;lt;math&amp;gt; \Omega \subset \mathbb{R}^n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B_R(z) \subset \Omega &amp;lt;/math&amp;gt; con  &amp;lt;math&amp;gt; z \in \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)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para poder aplicarla a nuestro problema, vamos a tomar v=U+M, siendo &amp;lt;math&amp;gt; U(r,\theta)=\frac{r^2}{2R^2}sin(2\theta) &amp;lt;/math&amp;gt; la solución al problema en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;, y M el mínimo de &amp;lt;math&amp;gt; G(\theta)=R^2sin(\theta)cos(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;. Al hacer esto v va a ser una función armónica positiva a la que le podemos aplicar la desigualdad de Harnack.&lt;br /&gt;
&lt;br /&gt;
Primero vamos a aplicar la desigualdad variando el radio de la bola y a observar como varia la región que determina en función de esto. Para ello vamos a representar las cotas en escala logarítmica, lo cual nos permite observar mejor su comportamiento.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Representamos las cotas que nos da la desigualdad de Harnack&lt;br /&gt;
% para nuestro ejemplo.&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^2*sin(theta).*cos(theta); %Definimos la función u(r,theta)&lt;br /&gt;
g=@(theta,r) r^2*sin(theta).*cos(theta); %Definimos la función g&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
R = [1,2,10]; %Radios de las bolas&lt;br /&gt;
n = 2; %Dimensión del espacio&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
C=[&amp;quot;#0000FF&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#00FF00&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
for i=1:3&lt;br /&gt;
    r = 0:N^(-1):R(i); %Partición en r&lt;br /&gt;
    gR=g(theta,R(i));&lt;br /&gt;
    M1=min(gR); %Calculamos el mínimo de g en la frontera de la bola de radio R&lt;br /&gt;
    v1=@(r,theta) u(r,theta)-M1;&lt;br /&gt;
    A=@(r)R(i).^(n-2).*(R(i)-r)./(R(i)+r).^(n-1)*v1(0,0);&lt;br /&gt;
    B=@(r)R(i).^(n-2).*(R(i)+r)./(R(i)-r).^(n-1)*v1(0,0);&lt;br /&gt;
&lt;br /&gt;
    %Graficamos las cotas para los diferentes radios&lt;br /&gt;
    subplot(1,3,i)&lt;br /&gt;
    plot(r,log10(A(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(r,log10(B(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    axis([0 10,-3 6])&lt;br /&gt;
    xlabel('r');&lt;br /&gt;
    ylabel('log(Cotas)');&lt;br /&gt;
    title(['Cotas para r= ' num2str(R(i))]);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF44_1.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Lo más destacable en las 3 gráficas es que en todas ellas ambas restricciones se van al infinito cunado llegan al radio correspondiente a la bola en la que están calculadas. Esto tiene sentido ya que podemos observar que el denominador de la cota superior se anula cuando r=R y por lo tanto se va a infinito y su logaritmo también, y la cota inferior es 0 cuando r=R y por tanto su logaritmo se va a menos infinito. También podemos observar, que debido a esto, el pico que forman ambas restricciones es más estrecho cuando aumentamos el radio de la bola.&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo varían las restricciones si variamos la dimensión.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF442.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Al observar estas gráficas podemos observar que independientemente del radio cuando aumentamos la dimensión aumenta la región que definen ambas restricciones. Además, en n=3 el comportamiento sigue siendo el mismo que el comentado para n=2.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Poisson=&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a buscar una solución de la ecuación de Poisson en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u=f,\quad x\in\mathbb{R}^2. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ello vamos a utilizar la solución fundamental del laplaciano, que en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt; se define como &amp;lt;math&amp;gt; \Phi(x)=-\frac{1}{2\pi}log|x| &amp;lt;/math&amp;gt; y cumple que &amp;lt;math&amp;gt; \Delta \Phi(x)=-\delta_2(x) &amp;lt;/math&amp;gt;. Donde &amp;lt;math&amp;gt;\delta_2(x) &amp;lt;/math&amp;gt; es la delta de Dirac en dimensión 2.&lt;br /&gt;
&lt;br /&gt;
Si ahora consideramos el potencial logarítmico de la función f, que es la la convolución de la solución fundamental con f, entonces podríamos expresar la solución como: &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2}\Phi(x-y)f(y)dy &amp;lt;/math&amp;gt; y formalmente tenemos que: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u(x)=\int_{\mathbb{R}^2}\Delta_x\Phi(x-y)f(y)dy=- \int_{\mathbb{R}^2}\delta_2f(y)dy=-f(x),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pero esto no es correcto ya que el laplaciano de la solución fundamental no es integrable. A pesar de no ser correcto nos da la intuición de que el potencial logarítmico podría ser una posible  solución del problema.&lt;br /&gt;
&lt;br /&gt;
Ahora para solucionar esto vamos a tomar f como la función característica de la bola de radio 1 ya que de esta manera obtenemos el siguiente teorema: (Remark 3.35 pag 150)&lt;br /&gt;
&lt;br /&gt;
Por tanto, la solución vendrá dada por la siguiente expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  u(\textbf{x}) = - \frac{1}{2 \pi} \int _{B_1} log( | \textbf{x}- \textbf{y}|) d \textbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Haciendo el cambio de variable &amp;lt;math&amp;gt;  \textbf{y}= ( r cos (\theta), r sin( \theta)) &amp;lt;/math&amp;gt; obtenemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  u(x_1,x_2) = - \frac{1}{4 \pi} \int _{0}^{2 \pi} \int_{0}^{1} r log((x_1-r cos(\theta))^2 + (x_2-r sin(\theta))^2) d r d \theta &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Representamos la solución integrando mediante el método del trapecio.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Potencial logaritmico.png|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
N1=300; N2=300; %Número de puntos&lt;br /&gt;
a=0; b=1; c=0; d=2*pi; %Extremos de los intervalos&lt;br /&gt;
h1=(b-a)/N1; h2=(d-c)/N2;&lt;br /&gt;
r=a:h1:b; theta=c:h2:d; %Particiones de r y theta&lt;br /&gt;
[rr,tt]=meshgrid(r,theta); &lt;br /&gt;
w1=ones(N1+1,1);                &lt;br /&gt;
w1(1)=1/2; w1(N1+1)=1/2;&lt;br /&gt;
w2=ones(N2+1,1);                 &lt;br /&gt;
w2(1)=1/2; w2(N2+1)=1/2;&lt;br /&gt;
x11=-1:2/100:1; % Partición de x_1&lt;br /&gt;
x21=-1:2/100:1; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        f=-log(sqrt((x11(j)-rr.*cos(tt)).^2+(x21(i)-rr.*sin(tt)).^2)).*rr; %Potencial logaritmico               &lt;br /&gt;
        u1(i,j)=h1*h2*w2'*f*w1/(2*pi); %Solución del método del trapecio en 2 variable&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos la solución&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11,x21, u1, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución con el potencial logarítmico');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El comportamiento asintótico del potencial logarítmico es:&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\left(\frac{1}{|x|}\right) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
con respecto a &amp;lt;math&amp;gt;\mathbb{R}^3 \setminus B_{r} &amp;lt;/math&amp;gt; a medida que &amp;lt;math&amp;gt; |x| \rightarrow +\infty &amp;lt;/math&amp;gt;.&lt;br /&gt;
Donde se define M como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M := \int_{\mathbb{R}^2} f(y) \, dy  &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En nuestro problema, donde &amp;lt;math&amp;gt; f &amp;lt;/math&amp;gt; es la función característica de la bola unidad, tenemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x) = -\frac{1}{2} \log|x|  &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tanto este comportamiento asintótico como la solución calculada presentan una simetría radial. Por tanto, para ver que efectivamente la solución se comporta así asintóticamente, representamos las dos funciones en el plano &amp;lt;math&amp;gt; x2=0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF5_1.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Representación de la solución asintótica&lt;br /&gt;
&lt;br /&gt;
M=pi; %Area del circulo de radio 1&lt;br /&gt;
f=@(x1,x2) -M/(2*pi).*log(sqrt(x1.^2+x2.^2)); % Función que describe el comportamiento asintótico&lt;br /&gt;
&lt;br /&gt;
N=200; %Número de intervalos&lt;br /&gt;
a=-1; b=1;                     &lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
x11=a:h:b; %Partición de x_1&lt;br /&gt;
x21=a:h:b; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
u=zeros(length(x11),length(x21));&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        u(i,j)=f(x11(i),x21(j)); %Evaluamos f en la malla de puntos&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos el resultado&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11, x21, u, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución cuando x tienda a \infty');&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF53.jpg|400px|thumb|right]]&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Potencial_logaritmico.png&amp;diff=71615</id>
		<title>Archivo:Potencial logaritmico.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Potencial_logaritmico.png&amp;diff=71615"/>
				<updated>2024-04-19T18:13:25Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71614</id>
		<title>Ecuación de Laplace y de Poisson (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71614"/>
				<updated>2024-04-19T18:11:21Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Ecuación de Poisson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar  la ecuación de Laplace y la ecuación de Poisson. Para ello vamos a calcular soluciones de distintas formas usando cosas como la fórmula de Poisson o el potencial logarítmico, graficándolas y modificando algunos de los parámetros.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Laplace=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la exactitud que tienen dos formas diferentes de resolver la ecuación de Laplace. Para hacer esto tomamos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta u=0,&amp;amp; x\in B_1\\&lt;br /&gt;
u=g,&amp;amp; x\in\partial B_1&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt; B_1\subset\mathbb{R}^2 &amp;lt;/math&amp;gt; la bola de radio 1 centrada en el (0,0).&lt;br /&gt;
&lt;br /&gt;
==Fórmula de Poisson==&lt;br /&gt;
&lt;br /&gt;
Una de las formas de resolver este tipo de problemas es mediante la fórmula de Poisson, que es: &amp;lt;math&amp;gt; u=\frac{R^2-|x|^2}{2\pi R}\int_{\partial B_R}\frac{g(\sigma)}{|x-\sigma|^2} d\sigma, &amp;lt;/math&amp;gt; donde R es el radio de la bola y &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; la distancia al centro de la bola.&lt;br /&gt;
&lt;br /&gt;
Para ver cómo funciona esta fórmula vamos a resolver el problema tomando &amp;lt;math&amp;gt; g(\theta)=max \{0,1-\frac{2}{\pi}|\theta-\pi|\}&amp;lt;/math&amp;gt;. Como esta función, que es la que representa las condiciones frontera, está en coordenadas polares vamos a expresar la fórmula de Poisson en polares.&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}\int_{0}^{2\pi}g(s)\frac{R^2-r^2}{R^2+r^2-2rRcos(s-\theta)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la fórmula expresada de esta manera, podemos aplicarla a nuestro problema tomando R=1 y sustituyendo g por nuestra función. Teniendo esto en cuenta vamos a resolver el problema realizando la integral mediante la [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals regla del trapecio] y a representar la solución.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF41.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calcular la solución de la ecuación de Laplace  en la bola de radio&lt;br /&gt;
% unidad usando la fórmula de Poisson. Con condición frontera la función g&lt;br /&gt;
&lt;br /&gt;
g = @(theta) max(0,1-2/pi*abs(theta-pi)); %Definimos la función g(theta)&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):0.9; %Partición en r (no llegamos hasta el borde de la bola)&lt;br /&gt;
&lt;br /&gt;
w = ones(N+1,1);                 &lt;br /&gt;
w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
u = zeros(length(r)+1,length(theta));&lt;br /&gt;
for j = 1:length(theta)&lt;br /&gt;
    for i = 1:length(r)&lt;br /&gt;
        f = g(theta)*(1-r(i).^2)./(1+r(i).^2-2*r(i)*cos(theta-theta(j))); %Función a integrar&lt;br /&gt;
        u(i,j) = h*w'*f'/(2*pi); %Fórmula de Poison usando la fórmula del trapecio para integrar.&lt;br /&gt;
    end&lt;br /&gt;
    u(length(r)+1,j) = g(theta(j)); %Añadimos la condicón frontera directamente&lt;br /&gt;
end&lt;br /&gt;
r(length(r)+1) = 1;&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, u, 'EdgeColor', 'none');&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;
En la imagen podemos observar que la fórmula de Poisson nos da problemas en la frontera, esto se debe al carácter singular de la integral cerca del borde. Para solucionar esto vamos a tomar directamente el valor de g en el borde de la bola. Al hacer esto obtenemos la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF411.jpg|400px|thumb|center| Sustituyendo g en el borde de la bola]]&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas podemos observar que efectivamente sustituir g en el borde hace que evitemos la singularidad de la integral en la frontera.&lt;br /&gt;
&lt;br /&gt;
Como hemos visto con este ejemplo la fórmula de Poisson tiene problemas para aproximar la solución cerca de la frontera. Por lo que para estudiar esto, vamos a tomar &amp;lt;math&amp;gt; g(x,y)=xy &amp;lt;/math&amp;gt; como condición frontera y &amp;lt;math&amp;gt; u(x,y)=xy &amp;lt;/math&amp;gt; como solución del problema para calcular los diferentes errores que genera la fórmula de Poisson. &lt;br /&gt;
&lt;br /&gt;
Para hacerlo vamos a tomar tanto u como g en coordenadas polares, ya que al estudiar el problema en una bola esto nos permite hacernos una mejor idea de lo que ocurre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
U(r,\theta)=r^2cos(\theta)sin(\theta)\\&lt;br /&gt;
U(1,\theta)=G(\theta)=cos(\theta)sin(\theta)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Primero vamos a tomar un punto &amp;quot;lejos&amp;quot; de la frontera &amp;lt;math&amp;gt; (r,\theta)=(0.9,\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo evoluciona el error, es decir, la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson en ese punto, en función de n. Siendo n el número que determina el número de intervalos en &amp;lt;math&amp;gt; 10^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por el ejemplo anterior, cabe esperar que la fórmula en este punto aproxime bien a la función ya que no es un punto cercano a la frontera, y por lo tanto el error vaya disminuyendo según aumenta el número de intervalos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF42.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral mediante&lt;br /&gt;
% el método del trapecio en función del tamaño de la discretización&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 8; %Discretización máxima: 10^N_max&lt;br /&gt;
err = zeros(N_max,1);&lt;br /&gt;
for m = 1:N_max&lt;br /&gt;
    N = 10^m; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f = g(theta)*(1-0.9.^2)./(1+0.9.^2-2*0.9*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u = h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (0.9,pi/4)&lt;br /&gt;
    &lt;br /&gt;
    % Valor de la solución exacta (x*y=R^2*cos(theta)*sin(theta))&lt;br /&gt;
    % en el punto (0.9, pi/4)&lt;br /&gt;
    exacta = 0.9^2*cos(pi/4)*sin(pi/4); &lt;br /&gt;
&lt;br /&gt;
    % Calculamos el error como la diferencia en valor absoluto entre&lt;br /&gt;
    % la solución exacta y la calculada con la fórmula de Poisson&lt;br /&gt;
    err(m) = abs(exacta-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,log10(err),color='b',LineWidth=1.5) %Dibujamos la gráfica del error en escala logarítmica&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('log_{10}(error(10^n))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado antes, al observar la gráfica vemos que el error va disminuyendo según aumenta n. Esto tiene sentido ya que cuantos más intervalos hay en la discretización más exacta va a ser la aproximación. También podemos observar que se estabiliza cuando llega aproximadamente a &amp;lt;math&amp;gt; n=3 &amp;lt;/math&amp;gt;, esto se debe a que con &amp;lt;math&amp;gt; 10^3 &amp;lt;/math&amp;gt; intervalos el método del trapecio ya aproxima lo suficientemente bien a la función original, lo que hace que aunque aumente el número de intervalos la aproximación no tenga mucho margen de mejor. Con esto hemos visto que en un punto que no esté cerca del borde la fórmula de Poisson va a funcionar bien. &lt;br /&gt;
&lt;br /&gt;
También podemos usar la fórmula del error máximo del método del trapecio para obtener una cota para el error y ver que los errores calculados numéricamente se encuentran por debajo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(n) \leq \left|-\frac{f’’(\xi)(b-a)^3}{12n^2} \right| &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt; es el intervalo de integración, &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; la función a integrar, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; el número de particiones de la discretización y &amp;lt;math&amp;gt; \xi &amp;lt;/math&amp;gt; un cierto valor entre &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt;. Para nuetro problema, &amp;lt;math&amp;gt;[a,b]=[0,2\pi]&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f(\theta)=\frac{(1-r^2) sen(\theta)cos(\theta)}{2\pi(1+r^2-2rcos(\alpha - \theta))}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Derivando &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; dos veces y maximizando su valor en &amp;lt;math&amp;gt;[0,2\pi]&amp;lt;/math&amp;gt;, obtenemos la siguiente cota:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;error(n) \leq \left|- \frac{\pi^2(r^6 - r^5 + 6 r^3 + r^2 -r +2) }{3 n^2(1-r)^5} \right|&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La dibujamos en función de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; junto con el error calculado numéricamente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Cota error.png|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Usando el vector err calculado en el anterior código, representamos la misma gráfica junto&lt;br /&gt;
% con la gráfica de la cota estimada del error&lt;br /&gt;
&lt;br /&gt;
%Definimos la cota del error estimada mediante la fórmula del trapecio&lt;br /&gt;
cota = @(n) abs(-pi^2*(r^6-r^5+6*r^3+r^2-r+2)./(3*(10.^(2*n))*(1-r)^5)); &lt;br /&gt;
&lt;br /&gt;
%Dibujamos las gráficas del error en escala logarítmica&lt;br /&gt;
hold on&lt;br /&gt;
plot(1:N_max,log10(err(:,1)),color='b',LineWidth=1.5)&lt;br /&gt;
plot(1:N_max,log10(cota(1:N_max)),color='r',LineWidth=1.5)&lt;br /&gt;
legend('Error absoluto', 'Cota del error'); % Leyenda&lt;br /&gt;
hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Comprobamos que el error de la aproximación queda por debajo de esta cota (que no es muy ajustada).&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo se comporta el error según nos acercamos a la frontera. Para hacer esto vamos a tomar el punto &amp;lt;math&amp;gt; (r,\theta)=(1-10^{-n},\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo varía el error (la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson) cuando aumentamos la n, es decir, cuando nos vamos acercando a la frontera. Como hemos comentado anteriormente cabe esperar que al aumentar la n el error va a aumentar, ya que como hemos visto en el primer ejemplo cerca de la frontera la fórmula de Poisson da problemas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF421.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral según nos acercamos al&lt;br /&gt;
% borde de la región.&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 20;&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for n = 1:N_max&lt;br /&gt;
    N = 10^2; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f=g(theta)*(1-(1-10^(-n)).^2)./(1+(1-10^(-n)).^2-2*(1-10^(-n))*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u=h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (1-10^-n,pi/4)&lt;br /&gt;
    err(n)=abs((1-10^(-n))^2*cos(pi/4)*sin(pi/4)-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,err,color='b',LineWidth=1.5) %Dibujamos la gráfica del error&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('Error');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En la gráfica podemos ver cómo efectivamente el error para valores de n pequeños, es decir, puntos que están relativamente lejos de la frontera, el error es pequeño al igual que en el caso anterior. Por el contrario, según aumenta la n, es decir, según nos acercamos a la frontera el error aumenta, lo cual tiene sentido ya que como hemos comentado antes la fórmula de Poisson da problemas en la frontera.&lt;br /&gt;
&lt;br /&gt;
Además, podemos observar que el error se estabiliza aproximadamente en  &amp;lt;math&amp;gt; n=4 &amp;lt;/math&amp;gt;, esto se debe a que para este valor de n el punto ya esta suficientemente cerca de la frontera como para representar todo el error que se da en esta y por ello aunque nos acerquemos más a la frontera (aumente n) el error se mantiene estable en  &amp;lt;math&amp;gt; 0.5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Serie de Fourier==&lt;br /&gt;
La otra forma que vamos a ver para resolver la ecuación de Laplace es mediante [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) series de Fourier]. Para hacer esto vamos a tomar nuestro problema en coordenadas polares:&lt;br /&gt;
&lt;br /&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,&amp;amp; r\in(0,1),\theta\in[0,2\pi]\\&lt;br /&gt;
U(1,\theta)=G(\theta)=sin(\theta)cos(\theta),&amp;amp; \theta\in[0,2\pi]&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y a aplicar el método de separación de variables. Al hacer esto obtenemos que: &amp;lt;math&amp;gt; U(r,\theta)=\frac{a_0}{2}+\sum_{k=1}^\infty a_kr^kcos(k\theta)+b_kr^ksin(k\theta).&amp;lt;/math&amp;gt;. Para que esto sea solución falta hacer que cumpla la condición frontera, para ello vamos a tomar la serie de Fourier de &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; L^2([-\pi,\pi]) &amp;lt;/math&amp;gt;, que es &amp;lt;math&amp;gt; G(\theta)=\frac{\alpha_0}{2}+\sum_{k=1}^\infty \alpha_kcos(k\theta)+\beta_ksin(k\theta)&amp;lt;/math&amp;gt; y a igualar ambas series cuando r=1. Al hacer esto vemos que para que ambas series sean iguale los coeficientes tienen que ser iguales, por lo que vamos a calcular los coeficientes de  &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; y a ver su equivalencia con los de  &amp;lt;math&amp;gt; U &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; a_0=\alpha_0=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)d\theta \quad \quad \quad a_k=\alpha_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)cos(k\theta)d\theta \quad \quad \quad b_k=\beta_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)sin(k\theta)d\theta. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al realizar estas integrales obtenemos que &amp;lt;math&amp;gt; a_0=0,a_k=0\forall k &amp;lt;/math&amp;gt; y todos los &amp;lt;math&amp;gt; b_k &amp;lt;/math&amp;gt; son 0 excepto &amp;lt;math&amp;gt; b_2=\frac{1}{2} &amp;lt;/math&amp;gt;. Por lo que la solución nos queda de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}sin(2\theta) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a dibujar la solución, cuya gráfica va a ser exacta ya que la serie tiene un único término.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF43.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Dibujamos la solución calculada por serie de Fourier&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^(2).*sin(2.*theta)/2; %Solución de la ecuación&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):1; %Partición en r&lt;br /&gt;
for j = 1:N+1&lt;br /&gt;
    for i = 1:N+1&lt;br /&gt;
        U(i,j) = u(r(i),theta(j));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, U, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('y');&lt;br /&gt;
zlabel('u(x, y)');&lt;br /&gt;
title('Solución exacta calculada por serie de Fourier');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al haber resuelto el problema por ambos métodos, observamos que este último nos da la solución de forma exacta, por lo que en este caso va a ser más efectivo que el anterior. Esto no tendría porque ser así en todos los casos ya que la serie de Fourier para otra función G distinta puede tener infinitos términos, lo que haría que la aproximación no sea exacta, pero aun así sería más exacta que con el método anterior en los puntos cercanos a la forntera.&lt;br /&gt;
&lt;br /&gt;
==Desigualdad de Harnack==&lt;br /&gt;
&lt;br /&gt;
En esta sección vamos a usar la desigualdad de Harnack para obtener la región que contiene a todas las soluciones armónicas de la ecuación de Laplace que valen lo mismo en el origen que la solución que hemos calculado.&lt;br /&gt;
&lt;br /&gt;
La desigualdad de Harnack establece que dada una función &amp;lt;math&amp;gt; u\geq 0 &amp;lt;/math&amp;gt; armónica en &amp;lt;math&amp;gt; \Omega \subset \mathbb{R}^n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B_R(z) \subset \Omega &amp;lt;/math&amp;gt; con  &amp;lt;math&amp;gt; z \in \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)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para poder aplicarla a nuestro problema, vamos a tomar v=U+M, siendo &amp;lt;math&amp;gt; U(r,\theta)=\frac{r^2}{2R^2}sin(2\theta) &amp;lt;/math&amp;gt; la solución al problema en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;, y M el mínimo de &amp;lt;math&amp;gt; G(\theta)=R^2sin(\theta)cos(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;. Al hacer esto v va a ser una función armónica positiva a la que le podemos aplicar la desigualdad de Harnack.&lt;br /&gt;
&lt;br /&gt;
Primero vamos a aplicar la desigualdad variando el radio de la bola y a observar como varia la región que determina en función de esto. Para ello vamos a representar las cotas en escala logarítmica, lo cual nos permite observar mejor su comportamiento.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Representamos las cotas que nos da la desigualdad de Harnack&lt;br /&gt;
% para nuestro ejemplo.&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^2*sin(theta).*cos(theta); %Definimos la función u(r,theta)&lt;br /&gt;
g=@(theta,r) r^2*sin(theta).*cos(theta); %Definimos la función g&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
R = [1,2,10]; %Radios de las bolas&lt;br /&gt;
n = 2; %Dimensión del espacio&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
C=[&amp;quot;#0000FF&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#00FF00&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
for i=1:3&lt;br /&gt;
    r = 0:N^(-1):R(i); %Partición en r&lt;br /&gt;
    gR=g(theta,R(i));&lt;br /&gt;
    M1=min(gR); %Calculamos el mínimo de g en la frontera de la bola de radio R&lt;br /&gt;
    v1=@(r,theta) u(r,theta)-M1;&lt;br /&gt;
    A=@(r)R(i).^(n-2).*(R(i)-r)./(R(i)+r).^(n-1)*v1(0,0);&lt;br /&gt;
    B=@(r)R(i).^(n-2).*(R(i)+r)./(R(i)-r).^(n-1)*v1(0,0);&lt;br /&gt;
&lt;br /&gt;
    %Graficamos las cotas para los diferentes radios&lt;br /&gt;
    subplot(1,3,i)&lt;br /&gt;
    plot(r,log10(A(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(r,log10(B(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    axis([0 10,-3 6])&lt;br /&gt;
    xlabel('r');&lt;br /&gt;
    ylabel('log(Cotas)');&lt;br /&gt;
    title(['Cotas para r= ' num2str(R(i))]);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF44_1.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Lo más destacable en las 3 gráficas es que en todas ellas ambas restricciones se van al infinito cunado llegan al radio correspondiente a la bola en la que están calculadas. Esto tiene sentido ya que podemos observar que el denominador de la cota superior se anula cuando r=R y por lo tanto se va a infinito y su logaritmo también, y la cota inferior es 0 cuando r=R y por tanto su logaritmo se va a menos infinito. También podemos observar, que debido a esto, el pico que forman ambas restricciones es más estrecho cuando aumentamos el radio de la bola.&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo varían las restricciones si variamos la dimensión.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF442.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Al observar estas gráficas podemos observar que independientemente del radio cuando aumentamos la dimensión aumenta la región que definen ambas restricciones. Además, en n=3 el comportamiento sigue siendo el mismo que el comentado para n=2.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Poisson=&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a buscar una solución de la ecuación de Poisson en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u=f,\quad x\in\mathbb{R}^2. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ello vamos a utilizar la solución fundamental del laplaciano, que en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt; se define como &amp;lt;math&amp;gt; \Phi(x)=-\frac{1}{2\pi}log|x| &amp;lt;/math&amp;gt; y cumple que &amp;lt;math&amp;gt; \Delta \Phi(x)=-\delta_2(x) &amp;lt;/math&amp;gt;. Donde &amp;lt;math&amp;gt;\delta_2(x) &amp;lt;/math&amp;gt; es la delta de Dirac en dimensión 2.&lt;br /&gt;
&lt;br /&gt;
Si ahora consideramos el potencial logarítmico de la función f, que es la la convolución de la solución fundamental con f, entonces podríamos expresar la solución como: &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2}\Phi(x-y)f(y)dy &amp;lt;/math&amp;gt; y formalmente tenemos que: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u(x)=\int_{\mathbb{R}^2}\Delta_x\Phi(x-y)f(y)dy=- \int_{\mathbb{R}^2}\delta_2f(y)dy=-f(x),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pero esto no es correcto ya que el laplaciano de la solución fundamental no es integrable. A pesar de no ser correcto nos da la intuición de que el potencial logarítmico podría ser una posible  solución del problema.&lt;br /&gt;
&lt;br /&gt;
Ahora para solucionar esto vamos a tomar f como la función característica de la bola de radio 1 ya que de esta manera obtenemos el siguiente teorema: (Remark 3.35 pag 150)&lt;br /&gt;
&lt;br /&gt;
Por tanto, la solución vendrá dada por la siguiente expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  u(\textbf{x}) = - \frac{1}{2 \pi} \int _{B_1} log( | \textbf{x}- \textbf{y}|) d \textbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Haciendo el cambio de variable &amp;lt;math&amp;gt;  \textbf{y}= ( r cos (\theta), r sin( \theta)) &amp;lt;/math&amp;gt; obtenemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  u(x_1,x_2) = - \frac{1}{4 \pi} \int _{0}^{2 \pi} \int_{0}^{1} r log((x_1-r cos(\theta))^2 + (x_2-r sin(\theta))^2) d r d \theta &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Representamos la solución integrando mediante el método del trapecio.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF52.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
N1=300; N2=300; %Número de puntos&lt;br /&gt;
a=0; b=1; c=0; d=2*pi; %Extremos de los intervalos&lt;br /&gt;
h1=(b-a)/N1; h2=(d-c)/N2;&lt;br /&gt;
r=a:h1:b; theta=c:h2:d; %Particiones de r y theta&lt;br /&gt;
[rr,tt]=meshgrid(r,theta); &lt;br /&gt;
w1=ones(N1+1,1);                &lt;br /&gt;
w1(1)=1/2; w1(N1+1)=1/2;&lt;br /&gt;
w2=ones(N2+1,1);                 &lt;br /&gt;
w2(1)=1/2; w2(N2+1)=1/2;&lt;br /&gt;
x11=-1:2/100:1; % Partición de x_1&lt;br /&gt;
x21=-1:2/100:1; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        f=-log(sqrt((x11(j)-rr.*cos(tt)).^2+(x21(i)-rr.*sin(tt)).^2)).*rr; %Potencial logaritmico               &lt;br /&gt;
        u1(i,j)=h1*h2*w2'*f*w1/(2*pi); %Solución del método del trapecio en 2 variable&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos la solución&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11,x21, u1, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución con el potencial logarítmico');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El comportamiento asintótico del potencial logarítmico es:&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\left(\frac{1}{|x|}\right) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
con respecto a &amp;lt;math&amp;gt;\mathbb{R}^3 \setminus B_{r} &amp;lt;/math&amp;gt; a medida que &amp;lt;math&amp;gt; |x| \rightarrow +\infty &amp;lt;/math&amp;gt;.&lt;br /&gt;
Donde se define M como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M := \int_{\mathbb{R}^2} f(y) \, dy  &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En nuestro problema, donde &amp;lt;math&amp;gt; f &amp;lt;/math&amp;gt; es la función característica de la bola unidad, tenemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x) = -\frac{1}{2} \log|x|  &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tanto este comportamiento asintótico como la solución calculada presentan una simetría radial. Por tanto, para ver que efectivamente la solución se comporta así asintóticamente, representamos las dos funciones en el plano &amp;lt;math&amp;gt; x2=0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF5_1.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Representación de la solución asintótica&lt;br /&gt;
&lt;br /&gt;
M=pi; %Area del circulo de radio 1&lt;br /&gt;
f=@(x1,x2) -M/(2*pi).*log(sqrt(x1.^2+x2.^2)); % Función que describe el comportamiento asintótico&lt;br /&gt;
&lt;br /&gt;
N=200; %Número de intervalos&lt;br /&gt;
a=-1; b=1;                     &lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
x11=a:h:b; %Partición de x_1&lt;br /&gt;
x21=a:h:b; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
u=zeros(length(x11),length(x21));&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        u(i,j)=f(x11(i),x21(j)); %Evaluamos f en la malla de puntos&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos el resultado&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11, x21, u, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución cuando x tienda a \infty');&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF53.jpg|400px|thumb|right]]&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71602</id>
		<title>Ecuación de Laplace y de Poisson (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71602"/>
				<updated>2024-04-19T18:04:04Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Ecuación de Poisson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar  la ecuación de Laplace y la ecuación de Poisson. Para ello vamos a calcular soluciones de distintas formas usando cosas como la fórmula de Poisson o el potencial logarítmico, graficándolas y modificando algunos de los parámetros.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Laplace=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la exactitud que tienen dos formas diferentes de resolver la ecuación de Laplace. Para hacer esto tomamos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta u=0,&amp;amp; x\in B_1\\&lt;br /&gt;
u=g,&amp;amp; x\in\partial B_1&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt; B_1\subset\mathbb{R}^2 &amp;lt;/math&amp;gt; la bola de radio 1 centrada en el (0,0).&lt;br /&gt;
&lt;br /&gt;
==Fórmula de Poisson==&lt;br /&gt;
&lt;br /&gt;
Una de las formas de resolver este tipo de problemas es mediante la fórmula de Poisson, que es: &amp;lt;math&amp;gt; u=\frac{R^2-|x|^2}{2\pi R}\int_{\partial B_R}\frac{g(\sigma)}{|x-\sigma|^2} d\sigma, &amp;lt;/math&amp;gt; donde R es el radio de la bola y &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; la distancia al centro de la bola.&lt;br /&gt;
&lt;br /&gt;
Para ver cómo funciona esta fórmula vamos a resolver el problema tomando &amp;lt;math&amp;gt; g(\theta)=max \{0,1-\frac{2}{\pi}|\theta-\pi|\}&amp;lt;/math&amp;gt;. Como esta función, que es la que representa las condiciones frontera, está en coordenadas polares vamos a expresar la fórmula de Poisson en polares.&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}\int_{0}^{2\pi}g(s)\frac{R^2-r^2}{R^2+r^2-2rRcos(s-\theta)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la fórmula expresada de esta manera, podemos aplicarla a nuestro problema tomando R=1 y sustituyendo g por nuestra función. Teniendo esto en cuenta vamos a resolver el problema realizando la integral mediante la [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals regla del trapecio] y a representar la solución.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF41.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calcular la solución de la ecuación de Laplace  en la bola de radio&lt;br /&gt;
% unidad usando la fórmula de Poisson. Con condición frontera la función g&lt;br /&gt;
&lt;br /&gt;
g = @(theta) max(0,1-2/pi*abs(theta-pi)); %Definimos la función g(theta)&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):0.9; %Partición en r (no llegamos hasta el borde de la bola)&lt;br /&gt;
&lt;br /&gt;
w = ones(N+1,1);                 &lt;br /&gt;
w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
u = zeros(length(r)+1,length(theta));&lt;br /&gt;
for j = 1:length(theta)&lt;br /&gt;
    for i = 1:length(r)&lt;br /&gt;
        f = g(theta)*(1-r(i).^2)./(1+r(i).^2-2*r(i)*cos(theta-theta(j))); %Función a integrar&lt;br /&gt;
        u(i,j) = h*w'*f'/(2*pi); %Fórmula de Poison usando la fórmula del trapecio para integrar.&lt;br /&gt;
    end&lt;br /&gt;
    u(length(r)+1,j) = g(theta(j)); %Añadimos la condicón frontera directamente&lt;br /&gt;
end&lt;br /&gt;
r(length(r)+1) = 1;&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, u, 'EdgeColor', 'none');&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;
En la imagen podemos observar que la fórmula de Poisson nos da problemas en la frontera, esto se debe al carácter singular de la integral cerca del borde. Para solucionar esto vamos a tomar directamente el valor de g en el borde de la bola. Al hacer esto obtenemos la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF411.jpg|400px|thumb|center| Sustituyendo g en el borde de la bola]]&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas podemos observar que efectivamente sustituir g en el borde hace que evitemos la singularidad de la integral en la frontera.&lt;br /&gt;
&lt;br /&gt;
Como hemos visto con este ejemplo la fórmula de Poisson tiene problemas para aproximar la solución cerca de la frontera. Por lo que para estudiar esto, vamos a tomar &amp;lt;math&amp;gt; g(x,y)=xy &amp;lt;/math&amp;gt; como condición frontera y &amp;lt;math&amp;gt; u(x,y)=xy &amp;lt;/math&amp;gt; como solución del problema para calcular los diferentes errores que genera la fórmula de Poisson. &lt;br /&gt;
&lt;br /&gt;
Para hacerlo vamos a tomar tanto u como g en coordenadas polares, ya que al estudiar el problema en una bola esto nos permite hacernos una mejor idea de lo que ocurre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
U(r,\theta)=r^2cos(\theta)sin(\theta)\\&lt;br /&gt;
U(1,\theta)=G(\theta)=cos(\theta)sin(\theta)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Primero vamos a tomar un punto &amp;quot;lejos&amp;quot; de la frontera &amp;lt;math&amp;gt; (r,\theta)=(0.9,\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo evoluciona el error, es decir, la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson en ese punto, en función de n. Siendo n el número que determina el número de intervalos en &amp;lt;math&amp;gt; 10^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por el ejemplo anterior, cabe esperar que la fórmula en este punto aproxime bien a la función ya que no es un punto cercano a la frontera, y por lo tanto el error vaya disminuyendo según aumenta el número de intervalos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF42.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral mediante&lt;br /&gt;
% el método del trapecio en función del tamaño de la discretización&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 8; %Discretización máxima: 10^N_max&lt;br /&gt;
err = zeros(N_max,1);&lt;br /&gt;
for m = 1:N_max&lt;br /&gt;
    N = 10^m; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f = g(theta)*(1-0.9.^2)./(1+0.9.^2-2*0.9*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u = h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (0.9,pi/4)&lt;br /&gt;
    &lt;br /&gt;
    % Valor de la solución exacta (x*y=R^2*cos(theta)*sin(theta))&lt;br /&gt;
    % en el punto (0.9, pi/4)&lt;br /&gt;
    exacta = 0.9^2*cos(pi/4)*sin(pi/4); &lt;br /&gt;
&lt;br /&gt;
    % Calculamos el error como la diferencia en valor absoluto entre&lt;br /&gt;
    % la solución exacta y la calculada con la fórmula de Poisson&lt;br /&gt;
    err(m) = abs(exacta-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,log10(err),color='b',LineWidth=1.5) %Dibujamos la gráfica del error en escala logarítmica&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('log_{10}(error(10^n))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado antes, al observar la gráfica vemos que el error va disminuyendo según aumenta n. Esto tiene sentido ya que cuantos más intervalos hay en la discretización más exacta va a ser la aproximación. También podemos observar que se estabiliza cuando llega aproximadamente a &amp;lt;math&amp;gt; n=3 &amp;lt;/math&amp;gt;, esto se debe a que con &amp;lt;math&amp;gt; 10^3 &amp;lt;/math&amp;gt; intervalos el método del trapecio ya aproxima lo suficientemente bien a la función original, lo que hace que aunque aumente el número de intervalos la aproximación no tenga mucho margen de mejor. Con esto hemos visto que en un punto que no esté cerca del borde la fórmula de Poisson va a funcionar bien. &lt;br /&gt;
&lt;br /&gt;
También podemos usar la fórmula del error máximo del método del trapecio para obtener una cota para el error y ver que los errores calculados numéricamente se encuentran por debajo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(n) \leq \left|-\frac{f’’(\xi)(b-a)^3}{12n^2} \right| &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt; es el intervalo de integración, &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; la función a integrar, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; el número de particiones de la discretización y &amp;lt;math&amp;gt; \xi &amp;lt;/math&amp;gt; un cierto valor entre &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt;. Para nuetro problema, &amp;lt;math&amp;gt;[a,b]=[0,2\pi]&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f(\theta)=\frac{(1-r^2) sen(\theta)cos(\theta)}{2\pi(1+r^2-2rcos(\alpha - \theta))}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Derivando &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; dos veces y maximizando su valor en &amp;lt;math&amp;gt;[0,2\pi]&amp;lt;/math&amp;gt;, obtenemos la siguiente cota:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;error(n) \leq \left|- \frac{\pi^2(r^6 - r^5 + 6 r^3 + r^2 -r +2) }{3 n^2(1-r)^5} \right|&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La dibujamos en función de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; junto con el error calculado numéricamente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Cota error.png|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Usando el vector err calculado en el anterior código, representamos la misma gráfica junto&lt;br /&gt;
% con la gráfica de la cota estimada del error&lt;br /&gt;
&lt;br /&gt;
%Definimos la cota del error estimada mediante la fórmula del trapecio&lt;br /&gt;
cota = @(n) abs(-pi^2*(r^6-r^5+6*r^3+r^2-r+2)./(3*(10.^(2*n))*(1-r)^5)); &lt;br /&gt;
&lt;br /&gt;
%Dibujamos las gráficas del error en escala logarítmica&lt;br /&gt;
hold on&lt;br /&gt;
plot(1:N_max,log10(err(:,1)),color='b',LineWidth=1.5)&lt;br /&gt;
plot(1:N_max,log10(cota(1:N_max)),color='r',LineWidth=1.5)&lt;br /&gt;
legend('Error absoluto', 'Cota del error'); % Leyenda&lt;br /&gt;
hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Comprobamos que el error de la aproximación queda por debajo de esta cota (que no es muy ajustada).&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo se comporta el error según nos acercamos a la frontera. Para hacer esto vamos a tomar el punto &amp;lt;math&amp;gt; (r,\theta)=(1-10^{-n},\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo varía el error (la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson) cuando aumentamos la n, es decir, cuando nos vamos acercando a la frontera. Como hemos comentado anteriormente cabe esperar que al aumentar la n el error va a aumentar, ya que como hemos visto en el primer ejemplo cerca de la frontera la fórmula de Poisson da problemas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF421.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral según nos acercamos al&lt;br /&gt;
% borde de la región.&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 20;&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for n = 1:N_max&lt;br /&gt;
    N = 10^2; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f=g(theta)*(1-(1-10^(-n)).^2)./(1+(1-10^(-n)).^2-2*(1-10^(-n))*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u=h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (1-10^-n,pi/4)&lt;br /&gt;
    err(n)=abs((1-10^(-n))^2*cos(pi/4)*sin(pi/4)-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,err,color='b',LineWidth=1.5) %Dibujamos la gráfica del error&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('Error');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En la gráfica podemos ver cómo efectivamente el error para valores de n pequeños, es decir, puntos que están relativamente lejos de la frontera, el error es pequeño al igual que en el caso anterior. Por el contrario, según aumenta la n, es decir, según nos acercamos a la frontera el error aumenta, lo cual tiene sentido ya que como hemos comentado antes la fórmula de Poisson da problemas en la frontera.&lt;br /&gt;
&lt;br /&gt;
Además, podemos observar que el error se estabiliza aproximadamente en  &amp;lt;math&amp;gt; n=4 &amp;lt;/math&amp;gt;, esto se debe a que para este valor de n el punto ya esta suficientemente cerca de la frontera como para representar todo el error que se da en esta y por ello aunque nos acerquemos más a la frontera (aumente n) el error se mantiene estable en  &amp;lt;math&amp;gt; 0.5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Serie de Fourier==&lt;br /&gt;
La otra forma que vamos a ver para resolver la ecuación de Laplace es mediante [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) series de Fourier]. Para hacer esto vamos a tomar nuestro problema en coordenadas polares:&lt;br /&gt;
&lt;br /&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,&amp;amp; r\in(0,1),\theta\in[0,2\pi]\\&lt;br /&gt;
U(1,\theta)=G(\theta)=sin(\theta)cos(\theta),&amp;amp; \theta\in[0,2\pi]&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y a aplicar el método de separación de variables. Al hacer esto obtenemos que: &amp;lt;math&amp;gt; U(r,\theta)=\frac{a_0}{2}+\sum_{k=1}^\infty a_kr^kcos(k\theta)+b_kr^ksin(k\theta).&amp;lt;/math&amp;gt;. Para que esto sea solución falta hacer que cumpla la condición frontera, para ello vamos a tomar la serie de Fourier de &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; L^2([-\pi,\pi]) &amp;lt;/math&amp;gt;, que es &amp;lt;math&amp;gt; G(\theta)=\frac{\alpha_0}{2}+\sum_{k=1}^\infty \alpha_kcos(k\theta)+\beta_ksin(k\theta)&amp;lt;/math&amp;gt; y a igualar ambas series cuando r=1. Al hacer esto vemos que para que ambas series sean iguale los coeficientes tienen que ser iguales, por lo que vamos a calcular los coeficientes de  &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; y a ver su equivalencia con los de  &amp;lt;math&amp;gt; U &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; a_0=\alpha_0=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)d\theta \quad \quad \quad a_k=\alpha_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)cos(k\theta)d\theta \quad \quad \quad b_k=\beta_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)sin(k\theta)d\theta. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al realizar estas integrales obtenemos que &amp;lt;math&amp;gt; a_0=0,a_k=0\forall k &amp;lt;/math&amp;gt; y todos los &amp;lt;math&amp;gt; b_k &amp;lt;/math&amp;gt; son 0 excepto &amp;lt;math&amp;gt; b_2=\frac{1}{2} &amp;lt;/math&amp;gt;. Por lo que la solución nos queda de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}sin(2\theta) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a dibujar la solución, cuya gráfica va a ser exacta ya que la serie tiene un único término.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF43.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Dibujamos la solución calculada por serie de Fourier&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^(2).*sin(2.*theta)/2; %Solución de la ecuación&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):1; %Partición en r&lt;br /&gt;
for j = 1:N+1&lt;br /&gt;
    for i = 1:N+1&lt;br /&gt;
        U(i,j) = u(r(i),theta(j));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, U, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('y');&lt;br /&gt;
zlabel('u(x, y)');&lt;br /&gt;
title('Solución exacta calculada por serie de Fourier');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al haber resuelto el problema por ambos métodos, observamos que este último nos da la solución de forma exacta, por lo que en este caso va a ser más efectivo que el anterior. Esto no tendría porque ser así en todos los casos ya que la serie de Fourier para otra función G distinta puede tener infinitos términos, lo que haría que la aproximación no sea exacta, pero aun así sería más exacta que con el método anterior en los puntos cercanos a la forntera.&lt;br /&gt;
&lt;br /&gt;
==Desigualdad de Harnack==&lt;br /&gt;
&lt;br /&gt;
En esta sección vamos a usar la desigualdad de Harnack para obtener la región que contiene a todas las soluciones armónicas de la ecuación de Laplace que valen lo mismo en el origen que la solución que hemos calculado.&lt;br /&gt;
&lt;br /&gt;
La desigualdad de Harnack establece que dada una función &amp;lt;math&amp;gt; u\geq 0 &amp;lt;/math&amp;gt; armónica en &amp;lt;math&amp;gt; \Omega \subset \mathbb{R}^n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B_R(z) \subset \Omega &amp;lt;/math&amp;gt; con  &amp;lt;math&amp;gt; z \in \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)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para poder aplicarla a nuestro problema, vamos a tomar v=U+M, siendo &amp;lt;math&amp;gt; U(r,\theta)=\frac{r^2}{2R^2}sin(2\theta) &amp;lt;/math&amp;gt; la solución al problema en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;, y M el mínimo de &amp;lt;math&amp;gt; G(\theta)=R^2sin(\theta)cos(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;. Al hacer esto v va a ser una función armónica positiva a la que le podemos aplicar la desigualdad de Harnack.&lt;br /&gt;
&lt;br /&gt;
Primero vamos a aplicar la desigualdad variando el radio de la bola y a observar como varia la región que determina en función de esto. Para ello vamos a representar las cotas en escala logarítmica, lo cual nos permite observar mejor su comportamiento.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Representamos las cotas que nos da la desigualdad de Harnack&lt;br /&gt;
% para nuestro ejemplo.&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^2*sin(theta).*cos(theta); %Definimos la función u(r,theta)&lt;br /&gt;
g=@(theta,r) r^2*sin(theta).*cos(theta); %Definimos la función g&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
R = [1,2,10]; %Radios de las bolas&lt;br /&gt;
n = 2; %Dimensión del espacio&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
C=[&amp;quot;#0000FF&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#00FF00&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
for i=1:3&lt;br /&gt;
    r = 0:N^(-1):R(i); %Partición en r&lt;br /&gt;
    gR=g(theta,R(i));&lt;br /&gt;
    M1=min(gR); %Calculamos el mínimo de g en la frontera de la bola de radio R&lt;br /&gt;
    v1=@(r,theta) u(r,theta)-M1;&lt;br /&gt;
    A=@(r)R(i).^(n-2).*(R(i)-r)./(R(i)+r).^(n-1)*v1(0,0);&lt;br /&gt;
    B=@(r)R(i).^(n-2).*(R(i)+r)./(R(i)-r).^(n-1)*v1(0,0);&lt;br /&gt;
&lt;br /&gt;
    %Graficamos las cotas para los diferentes radios&lt;br /&gt;
    subplot(1,3,i)&lt;br /&gt;
    plot(r,log10(A(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(r,log10(B(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    axis([0 10,-3 6])&lt;br /&gt;
    xlabel('r');&lt;br /&gt;
    ylabel('log(Cotas)');&lt;br /&gt;
    title(['Cotas para r= ' num2str(R(i))]);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF44_1.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Lo más destacable en las 3 gráficas es que en todas ellas ambas restricciones se van al infinito cunado llegan al radio correspondiente a la bola en la que están calculadas. Esto tiene sentido ya que podemos observar que el denominador de la cota superior se anula cuando r=R y por lo tanto se va a infinito y su logaritmo también, y la cota inferior es 0 cuando r=R y por tanto su logaritmo se va a menos infinito. También podemos observar, que debido a esto, el pico que forman ambas restricciones es más estrecho cuando aumentamos el radio de la bola.&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo varían las restricciones si variamos la dimensión.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF442.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Al observar estas gráficas podemos observar que independientemente del radio cuando aumentamos la dimensión aumenta la región que definen ambas restricciones. Además, en n=3 el comportamiento sigue siendo el mismo que el comentado para n=2.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Poisson=&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a buscar una solución de la ecuación de Poisson en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u=f,\quad x\in\mathbb{R}^2. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ello vamos a utilizar la solución fundamental del laplaciano, que en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt; se define como &amp;lt;math&amp;gt; \Phi(x)=-\frac{1}{2\pi}log|x| &amp;lt;/math&amp;gt; y cumple que &amp;lt;math&amp;gt; \Delta \Phi(x)=-\delta_2(x) &amp;lt;/math&amp;gt;. Donde &amp;lt;math&amp;gt;\delta_2(x) &amp;lt;/math&amp;gt; es la delta de Dirac en dimensión 2.&lt;br /&gt;
&lt;br /&gt;
Si ahora consideramos el potencial logarítmico de la función f, que es la la convolución de la solución fundamental con f, entonces podríamos expresar la solución como: &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2}\Phi(x-y)f(y)dy &amp;lt;/math&amp;gt; y formalmente tenemos que: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u(x)=\int_{\mathbb{R}^2}\Delta_x\Phi(x-y)f(y)dy=- \int_{\mathbb{R}^2}\delta_2f(y)dy=-f(x),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pero esto no es correcto ya que el laplaciano de la solución fundamental no es integrable. A pesar de no ser correcto nos da la intuición de que el potencial logarítmico podría ser una posible  solución del problema.&lt;br /&gt;
&lt;br /&gt;
Ahora para solucionar esto vamos a tomar f como la función característica de la bola de radio 1 ya que de esta manera obtenemos el siguiente teorema: (Remark 3.35 pag 150)&lt;br /&gt;
&lt;br /&gt;
Por tanto, la solución vendrá dada por la siguiente expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  u(\textbf{x}) = - \frac{1}{2 \pi} \int _{B_1} log( | \textbf{x}- \textbf{y}|) d \textbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Haciendo el cambio de variable &amp;lt;math&amp;gt;  \textbf{y}= ( r cos (\theta), r sin( \theta)) &amp;lt;/math&amp;gt; obtenemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  u(x_1,x_2) = - \frac{1}{4 \pi} \int _{0}^{2 \pi} \int_{0}^{1} r log((x_1-r cos(\theta))^2 + (x_2-r sin(\theta))^2) d r d \theta &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Representamos la solución integrando mediante el método del trapecio.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF52.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
N1=300; N2=300; %Número de puntos&lt;br /&gt;
a=0; b=1; c=0; d=2*pi; %Extremos de los intervalos&lt;br /&gt;
h1=(b-a)/N1; h2=(d-c)/N2;&lt;br /&gt;
r=a:h1:b; theta=c:h2:d; %Particiones de r y theta&lt;br /&gt;
[rr,tt]=meshgrid(r,theta); &lt;br /&gt;
w1=ones(N1+1,1);                &lt;br /&gt;
w1(1)=1/2; w1(N1+1)=1/2;&lt;br /&gt;
w2=ones(N2+1,1);                 &lt;br /&gt;
w2(1)=1/2; w2(N2+1)=1/2;&lt;br /&gt;
x11=-1:2/100:1; % Partición de x_1&lt;br /&gt;
x21=-1:2/100:1; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        f=-log(sqrt((x11(j)-rr.*cos(tt)).^2+(x21(i)-rr.*sin(tt)).^2)).*rr; %Potencial logaritmico               &lt;br /&gt;
        u1(i,j)=h1*h2*w2'*f*w1/(2*pi); %Solución del método del trapecio en 2 variable&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos la solución&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11,x21, u1, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución con el potencial logarítmico');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El potencial logarítmico no se anula en el infinito; su comportamiento asintótico es :&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\left(\frac{1}{|x|}\right) &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
con respecto a &amp;lt;math&amp;gt;\mathbb{R}^3 \setminus B_{r} &amp;lt;/math&amp;gt; a medida que &amp;lt;math&amp;gt; |x| \rightarrow +\infty &amp;lt;/math&amp;gt;.&lt;br /&gt;
Donde definimos M como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M := \int_{\mathbb{R}^2} f(y) \, dy  &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
que aplicado a nuestro problema inicialmente planteado con \( f \) la función característica de la bola de radio 1, tendríamos que:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; M := \int_{\mathbb{R}^2} f(y) \, dy = \int_{B_1} 1 \, dy = \pi &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De modo que la función solución final tiene la siguente expresión:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; u(x) = -\frac{1}{2} \log|x|  &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El término dominante en el comportamiento asintótico es el logaritmo negativo de &amp;lt;math&amp;gt;\( |x| \) &amp;lt;/math&amp;gt;, lo que indica que el potencial logarítmico disminuye lentamente a medida que &amp;lt;math&amp;gt;\( |x| \) &amp;lt;/math&amp;gt; aumenta. Esto significa que el potencial logarítmico no se anula en el  infinito, sino que tiende a menos infinito.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF5_1.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Representación de la solución asintótica&lt;br /&gt;
&lt;br /&gt;
M=pi; %Area del circulo de radio 1&lt;br /&gt;
f=@(x1,x2) -M/(2*pi).*log(sqrt(x1.^2+x2.^2)); % Función que describe el comportamiento asintótico&lt;br /&gt;
&lt;br /&gt;
N=200; %Número de intervalos&lt;br /&gt;
a=-1; b=1;                     &lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
x11=a:h:b; %Partición de x_1&lt;br /&gt;
x21=a:h:b; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
u=zeros(length(x11),length(x21));&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        u(i,j)=f(x11(i),x21(j)); %Evaluamos f en la malla de puntos&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos el resultado&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11, x21, u, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución cuando x tienda a \infty');&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF53.jpg|400px|thumb|right]]&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71599</id>
		<title>Ecuación de Laplace y de Poisson (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71599"/>
				<updated>2024-04-19T18:01:31Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Ecuación de Poisson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar  la ecuación de Laplace y la ecuación de Poisson. Para ello vamos a calcular soluciones de distintas formas usando cosas como la fórmula de Poisson o el potencial logarítmico, graficándolas y modificando algunos de los parámetros.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Laplace=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la exactitud que tienen dos formas diferentes de resolver la ecuación de Laplace. Para hacer esto tomamos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta u=0,&amp;amp; x\in B_1\\&lt;br /&gt;
u=g,&amp;amp; x\in\partial B_1&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt; B_1\subset\mathbb{R}^2 &amp;lt;/math&amp;gt; la bola de radio 1 centrada en el (0,0).&lt;br /&gt;
&lt;br /&gt;
==Fórmula de Poisson==&lt;br /&gt;
&lt;br /&gt;
Una de las formas de resolver este tipo de problemas es mediante la fórmula de Poisson, que es: &amp;lt;math&amp;gt; u=\frac{R^2-|x|^2}{2\pi R}\int_{\partial B_R}\frac{g(\sigma)}{|x-\sigma|^2} d\sigma, &amp;lt;/math&amp;gt; donde R es el radio de la bola y &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; la distancia al centro de la bola.&lt;br /&gt;
&lt;br /&gt;
Para ver cómo funciona esta fórmula vamos a resolver el problema tomando &amp;lt;math&amp;gt; g(\theta)=max \{0,1-\frac{2}{\pi}|\theta-\pi|\}&amp;lt;/math&amp;gt;. Como esta función, que es la que representa las condiciones frontera, está en coordenadas polares vamos a expresar la fórmula de Poisson en polares.&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}\int_{0}^{2\pi}g(s)\frac{R^2-r^2}{R^2+r^2-2rRcos(s-\theta)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la fórmula expresada de esta manera, podemos aplicarla a nuestro problema tomando R=1 y sustituyendo g por nuestra función. Teniendo esto en cuenta vamos a resolver el problema realizando la integral mediante la [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals regla del trapecio] y a representar la solución.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF41.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calcular la solución de la ecuación de Laplace  en la bola de radio&lt;br /&gt;
% unidad usando la fórmula de Poisson. Con condición frontera la función g&lt;br /&gt;
&lt;br /&gt;
g = @(theta) max(0,1-2/pi*abs(theta-pi)); %Definimos la función g(theta)&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):0.9; %Partición en r (no llegamos hasta el borde de la bola)&lt;br /&gt;
&lt;br /&gt;
w = ones(N+1,1);                 &lt;br /&gt;
w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
u = zeros(length(r)+1,length(theta));&lt;br /&gt;
for j = 1:length(theta)&lt;br /&gt;
    for i = 1:length(r)&lt;br /&gt;
        f = g(theta)*(1-r(i).^2)./(1+r(i).^2-2*r(i)*cos(theta-theta(j))); %Función a integrar&lt;br /&gt;
        u(i,j) = h*w'*f'/(2*pi); %Fórmula de Poison usando la fórmula del trapecio para integrar.&lt;br /&gt;
    end&lt;br /&gt;
    u(length(r)+1,j) = g(theta(j)); %Añadimos la condicón frontera directamente&lt;br /&gt;
end&lt;br /&gt;
r(length(r)+1) = 1;&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, u, 'EdgeColor', 'none');&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;
En la imagen podemos observar que la fórmula de Poisson nos da problemas en la frontera, esto se debe al carácter singular de la integral cerca del borde. Para solucionar esto vamos a tomar directamente el valor de g en el borde de la bola. Al hacer esto obtenemos la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF411.jpg|400px|thumb|center| Sustituyendo g en el borde de la bola]]&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas podemos observar que efectivamente sustituir g en el borde hace que evitemos la singularidad de la integral en la frontera.&lt;br /&gt;
&lt;br /&gt;
Como hemos visto con este ejemplo la fórmula de Poisson tiene problemas para aproximar la solución cerca de la frontera. Por lo que para estudiar esto, vamos a tomar &amp;lt;math&amp;gt; g(x,y)=xy &amp;lt;/math&amp;gt; como condición frontera y &amp;lt;math&amp;gt; u(x,y)=xy &amp;lt;/math&amp;gt; como solución del problema para calcular los diferentes errores que genera la fórmula de Poisson. &lt;br /&gt;
&lt;br /&gt;
Para hacerlo vamos a tomar tanto u como g en coordenadas polares, ya que al estudiar el problema en una bola esto nos permite hacernos una mejor idea de lo que ocurre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
U(r,\theta)=r^2cos(\theta)sin(\theta)\\&lt;br /&gt;
U(1,\theta)=G(\theta)=cos(\theta)sin(\theta)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Primero vamos a tomar un punto &amp;quot;lejos&amp;quot; de la frontera &amp;lt;math&amp;gt; (r,\theta)=(0.9,\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo evoluciona el error, es decir, la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson en ese punto, en función de n. Siendo n el número que determina el número de intervalos en &amp;lt;math&amp;gt; 10^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por el ejemplo anterior, cabe esperar que la fórmula en este punto aproxime bien a la función ya que no es un punto cercano a la frontera, y por lo tanto el error vaya disminuyendo según aumenta el número de intervalos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF42.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral mediante&lt;br /&gt;
% el método del trapecio en función del tamaño de la discretización&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 8; %Discretización máxima: 10^N_max&lt;br /&gt;
err = zeros(N_max,1);&lt;br /&gt;
for m = 1:N_max&lt;br /&gt;
    N = 10^m; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f = g(theta)*(1-0.9.^2)./(1+0.9.^2-2*0.9*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u = h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (0.9,pi/4)&lt;br /&gt;
    &lt;br /&gt;
    % Valor de la solución exacta (x*y=R^2*cos(theta)*sin(theta))&lt;br /&gt;
    % en el punto (0.9, pi/4)&lt;br /&gt;
    exacta = 0.9^2*cos(pi/4)*sin(pi/4); &lt;br /&gt;
&lt;br /&gt;
    % Calculamos el error como la diferencia en valor absoluto entre&lt;br /&gt;
    % la solución exacta y la calculada con la fórmula de Poisson&lt;br /&gt;
    err(m) = abs(exacta-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,log10(err),color='b',LineWidth=1.5) %Dibujamos la gráfica del error en escala logarítmica&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('log_{10}(error(10^n))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado antes, al observar la gráfica vemos que el error va disminuyendo según aumenta n. Esto tiene sentido ya que cuantos más intervalos hay en la discretización más exacta va a ser la aproximación. También podemos observar que se estabiliza cuando llega aproximadamente a &amp;lt;math&amp;gt; n=3 &amp;lt;/math&amp;gt;, esto se debe a que con &amp;lt;math&amp;gt; 10^3 &amp;lt;/math&amp;gt; intervalos el método del trapecio ya aproxima lo suficientemente bien a la función original, lo que hace que aunque aumente el número de intervalos la aproximación no tenga mucho margen de mejor. Con esto hemos visto que en un punto que no esté cerca del borde la fórmula de Poisson va a funcionar bien. &lt;br /&gt;
&lt;br /&gt;
También podemos usar la fórmula del error máximo del método del trapecio para obtener una cota para el error y ver que los errores calculados numéricamente se encuentran por debajo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(n) \leq \left|-\frac{f’’(\xi)(b-a)^3}{12n^2} \right| &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt; es el intervalo de integración, &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; la función a integrar, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; el número de particiones de la discretización y &amp;lt;math&amp;gt; \xi &amp;lt;/math&amp;gt; un cierto valor entre &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt;. Para nuetro problema, &amp;lt;math&amp;gt;[a,b]=[0,2\pi]&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f(\theta)=\frac{(1-r^2) sen(\theta)cos(\theta)}{2\pi(1+r^2-2rcos(\alpha - \theta))}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Derivando &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; dos veces y maximizando su valor en &amp;lt;math&amp;gt;[0,2\pi]&amp;lt;/math&amp;gt;, obtenemos la siguiente cota:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;error(n) \leq \left|- \frac{\pi^2(r^6 - r^5 + 6 r^3 + r^2 -r +2) }{3 n^2(1-r)^5} \right|&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La dibujamos en función de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; junto con el error calculado numéricamente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Cota error.png|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Usando el vector err calculado en el anterior código, representamos la misma gráfica junto&lt;br /&gt;
% con la gráfica de la cota estimada del error&lt;br /&gt;
&lt;br /&gt;
%Definimos la cota del error estimada mediante la fórmula del trapecio&lt;br /&gt;
cota = @(n) abs(-pi^2*(r^6-r^5+6*r^3+r^2-r+2)./(3*(10.^(2*n))*(1-r)^5)); &lt;br /&gt;
&lt;br /&gt;
%Dibujamos las gráficas del error en escala logarítmica&lt;br /&gt;
hold on&lt;br /&gt;
plot(1:N_max,log10(err(:,1)),color='b',LineWidth=1.5)&lt;br /&gt;
plot(1:N_max,log10(cota(1:N_max)),color='r',LineWidth=1.5)&lt;br /&gt;
legend('Error absoluto', 'Cota del error'); % Leyenda&lt;br /&gt;
hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Comprobamos que el error de la aproximación queda por debajo de esta cota (que no es muy ajustada).&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo se comporta el error según nos acercamos a la frontera. Para hacer esto vamos a tomar el punto &amp;lt;math&amp;gt; (r,\theta)=(1-10^{-n},\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo varía el error (la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson) cuando aumentamos la n, es decir, cuando nos vamos acercando a la frontera. Como hemos comentado anteriormente cabe esperar que al aumentar la n el error va a aumentar, ya que como hemos visto en el primer ejemplo cerca de la frontera la fórmula de Poisson da problemas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF421.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral según nos acercamos al&lt;br /&gt;
% borde de la región.&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 20;&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for n = 1:N_max&lt;br /&gt;
    N = 10^2; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f=g(theta)*(1-(1-10^(-n)).^2)./(1+(1-10^(-n)).^2-2*(1-10^(-n))*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u=h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (1-10^-n,pi/4)&lt;br /&gt;
    err(n)=abs((1-10^(-n))^2*cos(pi/4)*sin(pi/4)-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,err,color='b',LineWidth=1.5) %Dibujamos la gráfica del error&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('Error');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En la gráfica podemos ver cómo efectivamente el error para valores de n pequeños, es decir, puntos que están relativamente lejos de la frontera, el error es pequeño al igual que en el caso anterior. Por el contrario, según aumenta la n, es decir, según nos acercamos a la frontera el error aumenta, lo cual tiene sentido ya que como hemos comentado antes la fórmula de Poisson da problemas en la frontera.&lt;br /&gt;
&lt;br /&gt;
Además, podemos observar que el error se estabiliza aproximadamente en  &amp;lt;math&amp;gt; n=4 &amp;lt;/math&amp;gt;, esto se debe a que para este valor de n el punto ya esta suficientemente cerca de la frontera como para representar todo el error que se da en esta y por ello aunque nos acerquemos más a la frontera (aumente n) el error se mantiene estable en  &amp;lt;math&amp;gt; 0.5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Serie de Fourier==&lt;br /&gt;
La otra forma que vamos a ver para resolver la ecuación de Laplace es mediante [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) series de Fourier]. Para hacer esto vamos a tomar nuestro problema en coordenadas polares:&lt;br /&gt;
&lt;br /&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,&amp;amp; r\in(0,1),\theta\in[0,2\pi]\\&lt;br /&gt;
U(1,\theta)=G(\theta)=sin(\theta)cos(\theta),&amp;amp; \theta\in[0,2\pi]&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y a aplicar el método de separación de variables. Al hacer esto obtenemos que: &amp;lt;math&amp;gt; U(r,\theta)=\frac{a_0}{2}+\sum_{k=1}^\infty a_kr^kcos(k\theta)+b_kr^ksin(k\theta).&amp;lt;/math&amp;gt;. Para que esto sea solución falta hacer que cumpla la condición frontera, para ello vamos a tomar la serie de Fourier de &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; L^2([-\pi,\pi]) &amp;lt;/math&amp;gt;, que es &amp;lt;math&amp;gt; G(\theta)=\frac{\alpha_0}{2}+\sum_{k=1}^\infty \alpha_kcos(k\theta)+\beta_ksin(k\theta)&amp;lt;/math&amp;gt; y a igualar ambas series cuando r=1. Al hacer esto vemos que para que ambas series sean iguale los coeficientes tienen que ser iguales, por lo que vamos a calcular los coeficientes de  &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; y a ver su equivalencia con los de  &amp;lt;math&amp;gt; U &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; a_0=\alpha_0=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)d\theta \quad \quad \quad a_k=\alpha_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)cos(k\theta)d\theta \quad \quad \quad b_k=\beta_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)sin(k\theta)d\theta. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al realizar estas integrales obtenemos que &amp;lt;math&amp;gt; a_0=0,a_k=0\forall k &amp;lt;/math&amp;gt; y todos los &amp;lt;math&amp;gt; b_k &amp;lt;/math&amp;gt; son 0 excepto &amp;lt;math&amp;gt; b_2=\frac{1}{2} &amp;lt;/math&amp;gt;. Por lo que la solución nos queda de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}sin(2\theta) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a dibujar la solución, cuya gráfica va a ser exacta ya que la serie tiene un único término.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF43.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Dibujamos la solución calculada por serie de Fourier&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^(2).*sin(2.*theta)/2; %Solución de la ecuación&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):1; %Partición en r&lt;br /&gt;
for j = 1:N+1&lt;br /&gt;
    for i = 1:N+1&lt;br /&gt;
        U(i,j) = u(r(i),theta(j));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, U, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('y');&lt;br /&gt;
zlabel('u(x, y)');&lt;br /&gt;
title('Solución exacta calculada por serie de Fourier');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al haber resuelto el problema por ambos métodos, observamos que este último nos da la solución de forma exacta, por lo que en este caso va a ser más efectivo que el anterior. Esto no tendría porque ser así en todos los casos ya que la serie de Fourier para otra función G distinta puede tener infinitos términos, lo que haría que la aproximación no sea exacta, pero aun así sería más exacta que con el método anterior en los puntos cercanos a la forntera.&lt;br /&gt;
&lt;br /&gt;
==Desigualdad de Harnack==&lt;br /&gt;
&lt;br /&gt;
En esta sección vamos a usar la desigualdad de Harnack para obtener la región que contiene a todas las soluciones armónicas de la ecuación de Laplace que valen lo mismo en el origen que la solución que hemos calculado.&lt;br /&gt;
&lt;br /&gt;
La desigualdad de Harnack establece que dada una función &amp;lt;math&amp;gt; u\geq 0 &amp;lt;/math&amp;gt; armónica en &amp;lt;math&amp;gt; \Omega \subset \mathbb{R}^n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B_R(z) \subset \Omega &amp;lt;/math&amp;gt; con  &amp;lt;math&amp;gt; z \in \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)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para poder aplicarla a nuestro problema, vamos a tomar v=U+M, siendo &amp;lt;math&amp;gt; U(r,\theta)=\frac{r^2}{2R^2}sin(2\theta) &amp;lt;/math&amp;gt; la solución al problema en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;, y M el mínimo de &amp;lt;math&amp;gt; G(\theta)=R^2sin(\theta)cos(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;. Al hacer esto v va a ser una función armónica positiva a la que le podemos aplicar la desigualdad de Harnack.&lt;br /&gt;
&lt;br /&gt;
Primero vamos a aplicar la desigualdad variando el radio de la bola y a observar como varia la región que determina en función de esto. Para ello vamos a representar las cotas en escala logarítmica, lo cual nos permite observar mejor su comportamiento.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Representamos las cotas que nos da la desigualdad de Harnack&lt;br /&gt;
% para nuestro ejemplo.&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^2*sin(theta).*cos(theta); %Definimos la función u(r,theta)&lt;br /&gt;
g=@(theta,r) r^2*sin(theta).*cos(theta); %Definimos la función g&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
R = [1,2,10]; %Radios de las bolas&lt;br /&gt;
n = 2; %Dimensión del espacio&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
C=[&amp;quot;#0000FF&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#00FF00&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
for i=1:3&lt;br /&gt;
    r = 0:N^(-1):R(i); %Partición en r&lt;br /&gt;
    gR=g(theta,R(i));&lt;br /&gt;
    M1=min(gR); %Calculamos el mínimo de g en la frontera de la bola de radio R&lt;br /&gt;
    v1=@(r,theta) u(r,theta)-M1;&lt;br /&gt;
    A=@(r)R(i).^(n-2).*(R(i)-r)./(R(i)+r).^(n-1)*v1(0,0);&lt;br /&gt;
    B=@(r)R(i).^(n-2).*(R(i)+r)./(R(i)-r).^(n-1)*v1(0,0);&lt;br /&gt;
&lt;br /&gt;
    %Graficamos las cotas para los diferentes radios&lt;br /&gt;
    subplot(1,3,i)&lt;br /&gt;
    plot(r,log10(A(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(r,log10(B(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    axis([0 10,-3 6])&lt;br /&gt;
    xlabel('r');&lt;br /&gt;
    ylabel('log(Cotas)');&lt;br /&gt;
    title(['Cotas para r= ' num2str(R(i))]);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF44_1.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Lo más destacable en las 3 gráficas es que en todas ellas ambas restricciones se van al infinito cunado llegan al radio correspondiente a la bola en la que están calculadas. Esto tiene sentido ya que podemos observar que el denominador de la cota superior se anula cuando r=R y por lo tanto se va a infinito y su logaritmo también, y la cota inferior es 0 cuando r=R y por tanto su logaritmo se va a menos infinito. También podemos observar, que debido a esto, el pico que forman ambas restricciones es más estrecho cuando aumentamos el radio de la bola.&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo varían las restricciones si variamos la dimensión.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF442.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Al observar estas gráficas podemos observar que independientemente del radio cuando aumentamos la dimensión aumenta la región que definen ambas restricciones. Además, en n=3 el comportamiento sigue siendo el mismo que el comentado para n=2.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Poisson=&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a buscar una solución de la ecuación de Poisson en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u=f,\quad x\in\mathbb{R}^2. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ello vamos a utilizar la solución fundamental del laplaciano, que en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt; se define como &amp;lt;math&amp;gt; \Phi(x)=-\frac{1}{2\pi}log|x| &amp;lt;/math&amp;gt; y cumple que &amp;lt;math&amp;gt; \Delta \Phi(x)=-\delta_2(x) &amp;lt;/math&amp;gt;. Donde &amp;lt;math&amp;gt;\delta_2(x) &amp;lt;/math&amp;gt; es la delta de Dirac en dimensión 2.&lt;br /&gt;
&lt;br /&gt;
Si ahora consideramos el potencial logarítmico de la función f, que es la la convolución de la solución fundamental con f, entonces podríamos expresar la solución como: &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2}\Phi(x-y)f(y)dy &amp;lt;/math&amp;gt; y formalmente tenemos que: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u(x)=\int_{\mathbb{R}^2}\Delta_x\Phi(x-y)f(y)dy=- \int_{\mathbb{R}^2}\delta_2f(y)dy=-f(x),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pero esto no es correcto ya que el laplaciano de la solución fundamental no es integrable. A pesar de no ser correcto nos da la intuición de que el potencial logarítmico podría ser una posible  solución del problema.&lt;br /&gt;
&lt;br /&gt;
Ahora para solucionar esto vamos a tomar f como la función característica de la bola de radio 1 ya que de esta manera obtenemos el siguiente teorema: (Remark 3.35 pag 150)&lt;br /&gt;
&lt;br /&gt;
Por tanto, la solución vendrá dada por la siguiente expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  u(\textbf{x}) = - \frac{1}{2 \pi} \int _{B_1} log( | \textbf{x}- \textbf{y}|) d \textbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Haciendo el cambio de variable &amp;lt;math&amp;gt;  \textbf{y}= ( r cos (\theta), r sin( \theta)) &amp;lt;/math&amp;gt; obtenemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  u(x_1,x_2) = - \frac{1}{4 \pi} \int _{0}^{2 \pi} \int_{0}^{1} r log((x_1-r cos(\theta))^2 + (x_2-r sin(\theta))^2) d r d \theta &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Representamos la solución integrando mediante el método del trapecio.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF52.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
N1=300; N2=300; %Número de puntos&lt;br /&gt;
a=0; b=1; c=0; d=2*pi; %Extremos de los intervalos&lt;br /&gt;
h1=(b-a)/N1; h2=(d-c)/N2;&lt;br /&gt;
r=a:h1:b; theta=c:h2:d; %Particiones de r y theta&lt;br /&gt;
[rr,tt]=meshgrid(r,theta); &lt;br /&gt;
w1=ones(N1+1,1);                &lt;br /&gt;
w1(1)=1/2; w1(N1+1)=1/2;&lt;br /&gt;
w2=ones(N2+1,1);                 &lt;br /&gt;
w2(1)=1/2; w2(N2+1)=1/2;&lt;br /&gt;
x11=-1:2/100:1; % Partición de x_1&lt;br /&gt;
x21=-1:2/100:1; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        f=-log(sqrt((x11(j)-rr.*cos(tt)).^2+(x21(i)-rr.*sin(tt)).^2)).*rr; %Potencial logaritmico               &lt;br /&gt;
        u1(i,j)=h1*h2*w2'*f*w1/(2*pi); %Solución del método del trapecio en 2 variable&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos la solución&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11,x21, u1, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución con el potencial logarítmico');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF5_1.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Representación de la solución asintótica&lt;br /&gt;
&lt;br /&gt;
M=pi; %Area del circulo de radio 1&lt;br /&gt;
f=@(x1,x2) -M/(2*pi).*log(sqrt(x1.^2+x2.^2)); % Función que describe el comportamiento asintótico&lt;br /&gt;
&lt;br /&gt;
N=200; %Número de intervalos&lt;br /&gt;
a=-1; b=1;                     &lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
x11=a:h:b; %Partición de x_1&lt;br /&gt;
x21=a:h:b; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
u=zeros(length(x11),length(x21));&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        u(i,j)=f(x11(i),x21(j)); %Evaluamos f en la malla de puntos&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos el resultado&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11, x21, u, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución cuando x tienda a \infty');&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF53.jpg|400px|thumb|right]]&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71598</id>
		<title>Ecuación de Laplace y de Poisson (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71598"/>
				<updated>2024-04-19T18:00:34Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Ecuación de Poisson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar  la ecuación de Laplace y la ecuación de Poisson. Para ello vamos a calcular soluciones de distintas formas usando cosas como la fórmula de Poisson o el potencial logarítmico, graficándolas y modificando algunos de los parámetros.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Laplace=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la exactitud que tienen dos formas diferentes de resolver la ecuación de Laplace. Para hacer esto tomamos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta u=0,&amp;amp; x\in B_1\\&lt;br /&gt;
u=g,&amp;amp; x\in\partial B_1&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt; B_1\subset\mathbb{R}^2 &amp;lt;/math&amp;gt; la bola de radio 1 centrada en el (0,0).&lt;br /&gt;
&lt;br /&gt;
==Fórmula de Poisson==&lt;br /&gt;
&lt;br /&gt;
Una de las formas de resolver este tipo de problemas es mediante la fórmula de Poisson, que es: &amp;lt;math&amp;gt; u=\frac{R^2-|x|^2}{2\pi R}\int_{\partial B_R}\frac{g(\sigma)}{|x-\sigma|^2} d\sigma, &amp;lt;/math&amp;gt; donde R es el radio de la bola y &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; la distancia al centro de la bola.&lt;br /&gt;
&lt;br /&gt;
Para ver cómo funciona esta fórmula vamos a resolver el problema tomando &amp;lt;math&amp;gt; g(\theta)=max \{0,1-\frac{2}{\pi}|\theta-\pi|\}&amp;lt;/math&amp;gt;. Como esta función, que es la que representa las condiciones frontera, está en coordenadas polares vamos a expresar la fórmula de Poisson en polares.&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}\int_{0}^{2\pi}g(s)\frac{R^2-r^2}{R^2+r^2-2rRcos(s-\theta)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la fórmula expresada de esta manera, podemos aplicarla a nuestro problema tomando R=1 y sustituyendo g por nuestra función. Teniendo esto en cuenta vamos a resolver el problema realizando la integral mediante la [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals regla del trapecio] y a representar la solución.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF41.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calcular la solución de la ecuación de Laplace  en la bola de radio&lt;br /&gt;
% unidad usando la fórmula de Poisson. Con condición frontera la función g&lt;br /&gt;
&lt;br /&gt;
g = @(theta) max(0,1-2/pi*abs(theta-pi)); %Definimos la función g(theta)&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):0.9; %Partición en r (no llegamos hasta el borde de la bola)&lt;br /&gt;
&lt;br /&gt;
w = ones(N+1,1);                 &lt;br /&gt;
w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
u = zeros(length(r)+1,length(theta));&lt;br /&gt;
for j = 1:length(theta)&lt;br /&gt;
    for i = 1:length(r)&lt;br /&gt;
        f = g(theta)*(1-r(i).^2)./(1+r(i).^2-2*r(i)*cos(theta-theta(j))); %Función a integrar&lt;br /&gt;
        u(i,j) = h*w'*f'/(2*pi); %Fórmula de Poison usando la fórmula del trapecio para integrar.&lt;br /&gt;
    end&lt;br /&gt;
    u(length(r)+1,j) = g(theta(j)); %Añadimos la condicón frontera directamente&lt;br /&gt;
end&lt;br /&gt;
r(length(r)+1) = 1;&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, u, 'EdgeColor', 'none');&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;
En la imagen podemos observar que la fórmula de Poisson nos da problemas en la frontera, esto se debe al carácter singular de la integral cerca del borde. Para solucionar esto vamos a tomar directamente el valor de g en el borde de la bola. Al hacer esto obtenemos la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF411.jpg|400px|thumb|center| Sustituyendo g en el borde de la bola]]&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas podemos observar que efectivamente sustituir g en el borde hace que evitemos la singularidad de la integral en la frontera.&lt;br /&gt;
&lt;br /&gt;
Como hemos visto con este ejemplo la fórmula de Poisson tiene problemas para aproximar la solución cerca de la frontera. Por lo que para estudiar esto, vamos a tomar &amp;lt;math&amp;gt; g(x,y)=xy &amp;lt;/math&amp;gt; como condición frontera y &amp;lt;math&amp;gt; u(x,y)=xy &amp;lt;/math&amp;gt; como solución del problema para calcular los diferentes errores que genera la fórmula de Poisson. &lt;br /&gt;
&lt;br /&gt;
Para hacerlo vamos a tomar tanto u como g en coordenadas polares, ya que al estudiar el problema en una bola esto nos permite hacernos una mejor idea de lo que ocurre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
U(r,\theta)=r^2cos(\theta)sin(\theta)\\&lt;br /&gt;
U(1,\theta)=G(\theta)=cos(\theta)sin(\theta)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Primero vamos a tomar un punto &amp;quot;lejos&amp;quot; de la frontera &amp;lt;math&amp;gt; (r,\theta)=(0.9,\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo evoluciona el error, es decir, la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson en ese punto, en función de n. Siendo n el número que determina el número de intervalos en &amp;lt;math&amp;gt; 10^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por el ejemplo anterior, cabe esperar que la fórmula en este punto aproxime bien a la función ya que no es un punto cercano a la frontera, y por lo tanto el error vaya disminuyendo según aumenta el número de intervalos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF42.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral mediante&lt;br /&gt;
% el método del trapecio en función del tamaño de la discretización&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 8; %Discretización máxima: 10^N_max&lt;br /&gt;
err = zeros(N_max,1);&lt;br /&gt;
for m = 1:N_max&lt;br /&gt;
    N = 10^m; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f = g(theta)*(1-0.9.^2)./(1+0.9.^2-2*0.9*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u = h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (0.9,pi/4)&lt;br /&gt;
    &lt;br /&gt;
    % Valor de la solución exacta (x*y=R^2*cos(theta)*sin(theta))&lt;br /&gt;
    % en el punto (0.9, pi/4)&lt;br /&gt;
    exacta = 0.9^2*cos(pi/4)*sin(pi/4); &lt;br /&gt;
&lt;br /&gt;
    % Calculamos el error como la diferencia en valor absoluto entre&lt;br /&gt;
    % la solución exacta y la calculada con la fórmula de Poisson&lt;br /&gt;
    err(m) = abs(exacta-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,log10(err),color='b',LineWidth=1.5) %Dibujamos la gráfica del error en escala logarítmica&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('log_{10}(error(10^n))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado antes, al observar la gráfica vemos que el error va disminuyendo según aumenta n. Esto tiene sentido ya que cuantos más intervalos hay en la discretización más exacta va a ser la aproximación. También podemos observar que se estabiliza cuando llega aproximadamente a &amp;lt;math&amp;gt; n=3 &amp;lt;/math&amp;gt;, esto se debe a que con &amp;lt;math&amp;gt; 10^3 &amp;lt;/math&amp;gt; intervalos el método del trapecio ya aproxima lo suficientemente bien a la función original, lo que hace que aunque aumente el número de intervalos la aproximación no tenga mucho margen de mejor. Con esto hemos visto que en un punto que no esté cerca del borde la fórmula de Poisson va a funcionar bien. &lt;br /&gt;
&lt;br /&gt;
También podemos usar la fórmula del error máximo del método del trapecio para obtener una cota para el error y ver que los errores calculados numéricamente se encuentran por debajo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(n) \leq \left|-\frac{f’’(\xi)(b-a)^3}{12n^2} \right| &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt; es el intervalo de integración, &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; la función a integrar, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; el número de particiones de la discretización y &amp;lt;math&amp;gt; \xi &amp;lt;/math&amp;gt; un cierto valor entre &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt;. Para nuetro problema, &amp;lt;math&amp;gt;[a,b]=[0,2\pi]&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f(\theta)=\frac{(1-r^2) sen(\theta)cos(\theta)}{2\pi(1+r^2-2rcos(\alpha - \theta))}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Derivando &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; dos veces y maximizando su valor en &amp;lt;math&amp;gt;[0,2\pi]&amp;lt;/math&amp;gt;, obtenemos la siguiente cota:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;error(n) \leq \left|- \frac{\pi^2(r^6 - r^5 + 6 r^3 + r^2 -r +2) }{3 n^2(1-r)^5} \right|&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La dibujamos en función de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; junto con el error calculado numéricamente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Cota error.png|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Usando el vector err calculado en el anterior código, representamos la misma gráfica junto&lt;br /&gt;
% con la gráfica de la cota estimada del error&lt;br /&gt;
&lt;br /&gt;
%Definimos la cota del error estimada mediante la fórmula del trapecio&lt;br /&gt;
cota = @(n) abs(-pi^2*(r^6-r^5+6*r^3+r^2-r+2)./(3*(10.^(2*n))*(1-r)^5)); &lt;br /&gt;
&lt;br /&gt;
%Dibujamos las gráficas del error en escala logarítmica&lt;br /&gt;
hold on&lt;br /&gt;
plot(1:N_max,log10(err(:,1)),color='b',LineWidth=1.5)&lt;br /&gt;
plot(1:N_max,log10(cota(1:N_max)),color='r',LineWidth=1.5)&lt;br /&gt;
legend('Error absoluto', 'Cota del error'); % Leyenda&lt;br /&gt;
hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Comprobamos que el error de la aproximación queda por debajo de esta cota (que no es muy ajustada).&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo se comporta el error según nos acercamos a la frontera. Para hacer esto vamos a tomar el punto &amp;lt;math&amp;gt; (r,\theta)=(1-10^{-n},\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo varía el error (la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson) cuando aumentamos la n, es decir, cuando nos vamos acercando a la frontera. Como hemos comentado anteriormente cabe esperar que al aumentar la n el error va a aumentar, ya que como hemos visto en el primer ejemplo cerca de la frontera la fórmula de Poisson da problemas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF421.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral según nos acercamos al&lt;br /&gt;
% borde de la región.&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 20;&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for n = 1:N_max&lt;br /&gt;
    N = 10^2; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f=g(theta)*(1-(1-10^(-n)).^2)./(1+(1-10^(-n)).^2-2*(1-10^(-n))*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u=h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (1-10^-n,pi/4)&lt;br /&gt;
    err(n)=abs((1-10^(-n))^2*cos(pi/4)*sin(pi/4)-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,err,color='b',LineWidth=1.5) %Dibujamos la gráfica del error&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('Error');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En la gráfica podemos ver cómo efectivamente el error para valores de n pequeños, es decir, puntos que están relativamente lejos de la frontera, el error es pequeño al igual que en el caso anterior. Por el contrario, según aumenta la n, es decir, según nos acercamos a la frontera el error aumenta, lo cual tiene sentido ya que como hemos comentado antes la fórmula de Poisson da problemas en la frontera.&lt;br /&gt;
&lt;br /&gt;
Además, podemos observar que el error se estabiliza aproximadamente en  &amp;lt;math&amp;gt; n=4 &amp;lt;/math&amp;gt;, esto se debe a que para este valor de n el punto ya esta suficientemente cerca de la frontera como para representar todo el error que se da en esta y por ello aunque nos acerquemos más a la frontera (aumente n) el error se mantiene estable en  &amp;lt;math&amp;gt; 0.5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Serie de Fourier==&lt;br /&gt;
La otra forma que vamos a ver para resolver la ecuación de Laplace es mediante [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) series de Fourier]. Para hacer esto vamos a tomar nuestro problema en coordenadas polares:&lt;br /&gt;
&lt;br /&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,&amp;amp; r\in(0,1),\theta\in[0,2\pi]\\&lt;br /&gt;
U(1,\theta)=G(\theta)=sin(\theta)cos(\theta),&amp;amp; \theta\in[0,2\pi]&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y a aplicar el método de separación de variables. Al hacer esto obtenemos que: &amp;lt;math&amp;gt; U(r,\theta)=\frac{a_0}{2}+\sum_{k=1}^\infty a_kr^kcos(k\theta)+b_kr^ksin(k\theta).&amp;lt;/math&amp;gt;. Para que esto sea solución falta hacer que cumpla la condición frontera, para ello vamos a tomar la serie de Fourier de &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; L^2([-\pi,\pi]) &amp;lt;/math&amp;gt;, que es &amp;lt;math&amp;gt; G(\theta)=\frac{\alpha_0}{2}+\sum_{k=1}^\infty \alpha_kcos(k\theta)+\beta_ksin(k\theta)&amp;lt;/math&amp;gt; y a igualar ambas series cuando r=1. Al hacer esto vemos que para que ambas series sean iguale los coeficientes tienen que ser iguales, por lo que vamos a calcular los coeficientes de  &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; y a ver su equivalencia con los de  &amp;lt;math&amp;gt; U &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; a_0=\alpha_0=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)d\theta \quad \quad \quad a_k=\alpha_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)cos(k\theta)d\theta \quad \quad \quad b_k=\beta_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)sin(k\theta)d\theta. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al realizar estas integrales obtenemos que &amp;lt;math&amp;gt; a_0=0,a_k=0\forall k &amp;lt;/math&amp;gt; y todos los &amp;lt;math&amp;gt; b_k &amp;lt;/math&amp;gt; son 0 excepto &amp;lt;math&amp;gt; b_2=\frac{1}{2} &amp;lt;/math&amp;gt;. Por lo que la solución nos queda de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}sin(2\theta) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a dibujar la solución, cuya gráfica va a ser exacta ya que la serie tiene un único término.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF43.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Dibujamos la solución calculada por serie de Fourier&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^(2).*sin(2.*theta)/2; %Solución de la ecuación&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):1; %Partición en r&lt;br /&gt;
for j = 1:N+1&lt;br /&gt;
    for i = 1:N+1&lt;br /&gt;
        U(i,j) = u(r(i),theta(j));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, U, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('y');&lt;br /&gt;
zlabel('u(x, y)');&lt;br /&gt;
title('Solución exacta calculada por serie de Fourier');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al haber resuelto el problema por ambos métodos, observamos que este último nos da la solución de forma exacta, por lo que en este caso va a ser más efectivo que el anterior. Esto no tendría porque ser así en todos los casos ya que la serie de Fourier para otra función G distinta puede tener infinitos términos, lo que haría que la aproximación no sea exacta, pero aun así sería más exacta que con el método anterior en los puntos cercanos a la forntera.&lt;br /&gt;
&lt;br /&gt;
==Desigualdad de Harnack==&lt;br /&gt;
&lt;br /&gt;
En esta sección vamos a usar la desigualdad de Harnack para obtener la región que contiene a todas las soluciones armónicas de la ecuación de Laplace que valen lo mismo en el origen que la solución que hemos calculado.&lt;br /&gt;
&lt;br /&gt;
La desigualdad de Harnack establece que dada una función &amp;lt;math&amp;gt; u\geq 0 &amp;lt;/math&amp;gt; armónica en &amp;lt;math&amp;gt; \Omega \subset \mathbb{R}^n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B_R(z) \subset \Omega &amp;lt;/math&amp;gt; con  &amp;lt;math&amp;gt; z \in \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)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para poder aplicarla a nuestro problema, vamos a tomar v=U+M, siendo &amp;lt;math&amp;gt; U(r,\theta)=\frac{r^2}{2R^2}sin(2\theta) &amp;lt;/math&amp;gt; la solución al problema en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;, y M el mínimo de &amp;lt;math&amp;gt; G(\theta)=R^2sin(\theta)cos(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;. Al hacer esto v va a ser una función armónica positiva a la que le podemos aplicar la desigualdad de Harnack.&lt;br /&gt;
&lt;br /&gt;
Primero vamos a aplicar la desigualdad variando el radio de la bola y a observar como varia la región que determina en función de esto. Para ello vamos a representar las cotas en escala logarítmica, lo cual nos permite observar mejor su comportamiento.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Representamos las cotas que nos da la desigualdad de Harnack&lt;br /&gt;
% para nuestro ejemplo.&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^2*sin(theta).*cos(theta); %Definimos la función u(r,theta)&lt;br /&gt;
g=@(theta,r) r^2*sin(theta).*cos(theta); %Definimos la función g&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
R = [1,2,10]; %Radios de las bolas&lt;br /&gt;
n = 2; %Dimensión del espacio&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
C=[&amp;quot;#0000FF&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#00FF00&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
for i=1:3&lt;br /&gt;
    r = 0:N^(-1):R(i); %Partición en r&lt;br /&gt;
    gR=g(theta,R(i));&lt;br /&gt;
    M1=min(gR); %Calculamos el mínimo de g en la frontera de la bola de radio R&lt;br /&gt;
    v1=@(r,theta) u(r,theta)-M1;&lt;br /&gt;
    A=@(r)R(i).^(n-2).*(R(i)-r)./(R(i)+r).^(n-1)*v1(0,0);&lt;br /&gt;
    B=@(r)R(i).^(n-2).*(R(i)+r)./(R(i)-r).^(n-1)*v1(0,0);&lt;br /&gt;
&lt;br /&gt;
    %Graficamos las cotas para los diferentes radios&lt;br /&gt;
    subplot(1,3,i)&lt;br /&gt;
    plot(r,log10(A(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(r,log10(B(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    axis([0 10,-3 6])&lt;br /&gt;
    xlabel('r');&lt;br /&gt;
    ylabel('log(Cotas)');&lt;br /&gt;
    title(['Cotas para r= ' num2str(R(i))]);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF44_1.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Lo más destacable en las 3 gráficas es que en todas ellas ambas restricciones se van al infinito cunado llegan al radio correspondiente a la bola en la que están calculadas. Esto tiene sentido ya que podemos observar que el denominador de la cota superior se anula cuando r=R y por lo tanto se va a infinito y su logaritmo también, y la cota inferior es 0 cuando r=R y por tanto su logaritmo se va a menos infinito. También podemos observar, que debido a esto, el pico que forman ambas restricciones es más estrecho cuando aumentamos el radio de la bola.&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo varían las restricciones si variamos la dimensión.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF442.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Al observar estas gráficas podemos observar que independientemente del radio cuando aumentamos la dimensión aumenta la región que definen ambas restricciones. Además, en n=3 el comportamiento sigue siendo el mismo que el comentado para n=2.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Poisson=&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a buscar una solución de la ecuación de Poisson en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u=f,\quad x\in\mathbb{R}^2. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ello vamos a utilizar la solución fundamental del laplaciano, que en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt; se define como &amp;lt;math&amp;gt; \Phi(x)=-\frac{1}{2\pi}log|x| &amp;lt;/math&amp;gt; y cumple que &amp;lt;math&amp;gt; \Delta \Phi(x)=-\delta_2(x) &amp;lt;/math&amp;gt;. Donde &amp;lt;math&amp;gt;\delta_2(x) &amp;lt;/math&amp;gt; es la delta de Dirac en dimensión 2.&lt;br /&gt;
&lt;br /&gt;
Si ahora consideramos el potencial logarítmico de la función f, que es la la convolución de la solución fundamental con f, entonces podríamos expresar la solución como: &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2}\Phi(x-y)f(y)dy &amp;lt;/math&amp;gt; y formalmente tenemos que: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u(x)=\int_{\mathbb{R}^2}\Delta_x\Phi(x-y)f(y)dy=- \int_{\mathbb{R}^2}\delta_2f(y)dy=-f(x),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pero esto no es correcto ya que el laplaciano de la solución fundamental no es integrable. A pesar de no ser correcto nos da la intuición de que el potencial logarítmico podría ser una posible  solución del problema.&lt;br /&gt;
&lt;br /&gt;
Ahora para solucionar esto vamos a tomar f como la función característica de la bola de radio 1 ya que de esta manera obtenemos el siguiente teorema: (Remark 3.35 pag 150)&lt;br /&gt;
&lt;br /&gt;
Por tanto, la solución vendrá dada por la siguiente expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  u(\textbf{x}) = - \frac{1}{2 \pi} \int _{B_1} log( | \textbf{x}- \textbf{y}|) d \textbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Haciendo el cambio de variable &amp;lt;math&amp;gt;  \textbf{y}= ( r cos (\theta), r sin( \theta)) &amp;lt;/math&amp;gt; obtenemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  u(x_1,x_2) = - \frac{1}{4 \pi} \int _{0}^{2 \pi} \int_{0}^{1} r log((x_1-r cos(\theta))^2 + (x_2-r sin(\theta))^2) d r d \theta &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF52.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
N1=300; N2=300; %Número de puntos&lt;br /&gt;
a=0; b=1; c=0; d=2*pi; %Extremos de los intervalos&lt;br /&gt;
h1=(b-a)/N1; h2=(d-c)/N2;&lt;br /&gt;
r=a:h1:b; theta=c:h2:d; %Particiones de r y theta&lt;br /&gt;
[rr,tt]=meshgrid(r,theta); &lt;br /&gt;
w1=ones(N1+1,1);                &lt;br /&gt;
w1(1)=1/2; w1(N1+1)=1/2;&lt;br /&gt;
w2=ones(N2+1,1);                 &lt;br /&gt;
w2(1)=1/2; w2(N2+1)=1/2;&lt;br /&gt;
x11=-1:2/100:1; % Partición de x_1&lt;br /&gt;
x21=-1:2/100:1; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        f=-log(sqrt((x11(j)-rr.*cos(tt)).^2+(x21(i)-rr.*sin(tt)).^2)).*rr; %Potencial logaritmico               &lt;br /&gt;
        u1(i,j)=h1*h2*w2'*f*w1/(2*pi); %Solución del método del trapecio en 2 variable&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos la solución&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11,x21, u1, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución con el potencial logarítmico');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF5_1.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Representación de la solución asintótica&lt;br /&gt;
&lt;br /&gt;
M=pi; %Area del circulo de radio 1&lt;br /&gt;
f=@(x1,x2) -M/(2*pi).*log(sqrt(x1.^2+x2.^2)); % Función que describe el comportamiento asintótico&lt;br /&gt;
&lt;br /&gt;
N=200; %Número de intervalos&lt;br /&gt;
a=-1; b=1;                     &lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
x11=a:h:b; %Partición de x_1&lt;br /&gt;
x21=a:h:b; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
u=zeros(length(x11),length(x21));&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        u(i,j)=f(x11(i),x21(j)); %Evaluamos f en la malla de puntos&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos el resultado&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11, x21, u, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución cuando x tienda a \infty');&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF53.jpg|400px|thumb|right]]&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71596</id>
		<title>Ecuación de Laplace y de Poisson (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71596"/>
				<updated>2024-04-19T18:00:01Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Ecuación de Poisson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar  la ecuación de Laplace y la ecuación de Poisson. Para ello vamos a calcular soluciones de distintas formas usando cosas como la fórmula de Poisson o el potencial logarítmico, graficándolas y modificando algunos de los parámetros.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Laplace=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la exactitud que tienen dos formas diferentes de resolver la ecuación de Laplace. Para hacer esto tomamos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta u=0,&amp;amp; x\in B_1\\&lt;br /&gt;
u=g,&amp;amp; x\in\partial B_1&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt; B_1\subset\mathbb{R}^2 &amp;lt;/math&amp;gt; la bola de radio 1 centrada en el (0,0).&lt;br /&gt;
&lt;br /&gt;
==Fórmula de Poisson==&lt;br /&gt;
&lt;br /&gt;
Una de las formas de resolver este tipo de problemas es mediante la fórmula de Poisson, que es: &amp;lt;math&amp;gt; u=\frac{R^2-|x|^2}{2\pi R}\int_{\partial B_R}\frac{g(\sigma)}{|x-\sigma|^2} d\sigma, &amp;lt;/math&amp;gt; donde R es el radio de la bola y &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; la distancia al centro de la bola.&lt;br /&gt;
&lt;br /&gt;
Para ver cómo funciona esta fórmula vamos a resolver el problema tomando &amp;lt;math&amp;gt; g(\theta)=max \{0,1-\frac{2}{\pi}|\theta-\pi|\}&amp;lt;/math&amp;gt;. Como esta función, que es la que representa las condiciones frontera, está en coordenadas polares vamos a expresar la fórmula de Poisson en polares.&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}\int_{0}^{2\pi}g(s)\frac{R^2-r^2}{R^2+r^2-2rRcos(s-\theta)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la fórmula expresada de esta manera, podemos aplicarla a nuestro problema tomando R=1 y sustituyendo g por nuestra función. Teniendo esto en cuenta vamos a resolver el problema realizando la integral mediante la [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals regla del trapecio] y a representar la solución.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF41.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calcular la solución de la ecuación de Laplace  en la bola de radio&lt;br /&gt;
% unidad usando la fórmula de Poisson. Con condición frontera la función g&lt;br /&gt;
&lt;br /&gt;
g = @(theta) max(0,1-2/pi*abs(theta-pi)); %Definimos la función g(theta)&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):0.9; %Partición en r (no llegamos hasta el borde de la bola)&lt;br /&gt;
&lt;br /&gt;
w = ones(N+1,1);                 &lt;br /&gt;
w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
u = zeros(length(r)+1,length(theta));&lt;br /&gt;
for j = 1:length(theta)&lt;br /&gt;
    for i = 1:length(r)&lt;br /&gt;
        f = g(theta)*(1-r(i).^2)./(1+r(i).^2-2*r(i)*cos(theta-theta(j))); %Función a integrar&lt;br /&gt;
        u(i,j) = h*w'*f'/(2*pi); %Fórmula de Poison usando la fórmula del trapecio para integrar.&lt;br /&gt;
    end&lt;br /&gt;
    u(length(r)+1,j) = g(theta(j)); %Añadimos la condicón frontera directamente&lt;br /&gt;
end&lt;br /&gt;
r(length(r)+1) = 1;&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, u, 'EdgeColor', 'none');&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;
En la imagen podemos observar que la fórmula de Poisson nos da problemas en la frontera, esto se debe al carácter singular de la integral cerca del borde. Para solucionar esto vamos a tomar directamente el valor de g en el borde de la bola. Al hacer esto obtenemos la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF411.jpg|400px|thumb|center| Sustituyendo g en el borde de la bola]]&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas podemos observar que efectivamente sustituir g en el borde hace que evitemos la singularidad de la integral en la frontera.&lt;br /&gt;
&lt;br /&gt;
Como hemos visto con este ejemplo la fórmula de Poisson tiene problemas para aproximar la solución cerca de la frontera. Por lo que para estudiar esto, vamos a tomar &amp;lt;math&amp;gt; g(x,y)=xy &amp;lt;/math&amp;gt; como condición frontera y &amp;lt;math&amp;gt; u(x,y)=xy &amp;lt;/math&amp;gt; como solución del problema para calcular los diferentes errores que genera la fórmula de Poisson. &lt;br /&gt;
&lt;br /&gt;
Para hacerlo vamos a tomar tanto u como g en coordenadas polares, ya que al estudiar el problema en una bola esto nos permite hacernos una mejor idea de lo que ocurre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
U(r,\theta)=r^2cos(\theta)sin(\theta)\\&lt;br /&gt;
U(1,\theta)=G(\theta)=cos(\theta)sin(\theta)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Primero vamos a tomar un punto &amp;quot;lejos&amp;quot; de la frontera &amp;lt;math&amp;gt; (r,\theta)=(0.9,\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo evoluciona el error, es decir, la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson en ese punto, en función de n. Siendo n el número que determina el número de intervalos en &amp;lt;math&amp;gt; 10^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por el ejemplo anterior, cabe esperar que la fórmula en este punto aproxime bien a la función ya que no es un punto cercano a la frontera, y por lo tanto el error vaya disminuyendo según aumenta el número de intervalos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF42.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral mediante&lt;br /&gt;
% el método del trapecio en función del tamaño de la discretización&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 8; %Discretización máxima: 10^N_max&lt;br /&gt;
err = zeros(N_max,1);&lt;br /&gt;
for m = 1:N_max&lt;br /&gt;
    N = 10^m; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f = g(theta)*(1-0.9.^2)./(1+0.9.^2-2*0.9*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u = h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (0.9,pi/4)&lt;br /&gt;
    &lt;br /&gt;
    % Valor de la solución exacta (x*y=R^2*cos(theta)*sin(theta))&lt;br /&gt;
    % en el punto (0.9, pi/4)&lt;br /&gt;
    exacta = 0.9^2*cos(pi/4)*sin(pi/4); &lt;br /&gt;
&lt;br /&gt;
    % Calculamos el error como la diferencia en valor absoluto entre&lt;br /&gt;
    % la solución exacta y la calculada con la fórmula de Poisson&lt;br /&gt;
    err(m) = abs(exacta-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,log10(err),color='b',LineWidth=1.5) %Dibujamos la gráfica del error en escala logarítmica&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('log_{10}(error(10^n))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado antes, al observar la gráfica vemos que el error va disminuyendo según aumenta n. Esto tiene sentido ya que cuantos más intervalos hay en la discretización más exacta va a ser la aproximación. También podemos observar que se estabiliza cuando llega aproximadamente a &amp;lt;math&amp;gt; n=3 &amp;lt;/math&amp;gt;, esto se debe a que con &amp;lt;math&amp;gt; 10^3 &amp;lt;/math&amp;gt; intervalos el método del trapecio ya aproxima lo suficientemente bien a la función original, lo que hace que aunque aumente el número de intervalos la aproximación no tenga mucho margen de mejor. Con esto hemos visto que en un punto que no esté cerca del borde la fórmula de Poisson va a funcionar bien. &lt;br /&gt;
&lt;br /&gt;
También podemos usar la fórmula del error máximo del método del trapecio para obtener una cota para el error y ver que los errores calculados numéricamente se encuentran por debajo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(n) \leq \left|-\frac{f’’(\xi)(b-a)^3}{12n^2} \right| &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt; es el intervalo de integración, &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; la función a integrar, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; el número de particiones de la discretización y &amp;lt;math&amp;gt; \xi &amp;lt;/math&amp;gt; un cierto valor entre &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt;. Para nuetro problema, &amp;lt;math&amp;gt;[a,b]=[0,2\pi]&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f(\theta)=\frac{(1-r^2) sen(\theta)cos(\theta)}{2\pi(1+r^2-2rcos(\alpha - \theta))}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Derivando &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; dos veces y maximizando su valor en &amp;lt;math&amp;gt;[0,2\pi]&amp;lt;/math&amp;gt;, obtenemos la siguiente cota:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;error(n) \leq \left|- \frac{\pi^2(r^6 - r^5 + 6 r^3 + r^2 -r +2) }{3 n^2(1-r)^5} \right|&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La dibujamos en función de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; junto con el error calculado numéricamente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Cota error.png|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Usando el vector err calculado en el anterior código, representamos la misma gráfica junto&lt;br /&gt;
% con la gráfica de la cota estimada del error&lt;br /&gt;
&lt;br /&gt;
%Definimos la cota del error estimada mediante la fórmula del trapecio&lt;br /&gt;
cota = @(n) abs(-pi^2*(r^6-r^5+6*r^3+r^2-r+2)./(3*(10.^(2*n))*(1-r)^5)); &lt;br /&gt;
&lt;br /&gt;
%Dibujamos las gráficas del error en escala logarítmica&lt;br /&gt;
hold on&lt;br /&gt;
plot(1:N_max,log10(err(:,1)),color='b',LineWidth=1.5)&lt;br /&gt;
plot(1:N_max,log10(cota(1:N_max)),color='r',LineWidth=1.5)&lt;br /&gt;
legend('Error absoluto', 'Cota del error'); % Leyenda&lt;br /&gt;
hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Comprobamos que el error de la aproximación queda por debajo de esta cota (que no es muy ajustada).&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo se comporta el error según nos acercamos a la frontera. Para hacer esto vamos a tomar el punto &amp;lt;math&amp;gt; (r,\theta)=(1-10^{-n},\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo varía el error (la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson) cuando aumentamos la n, es decir, cuando nos vamos acercando a la frontera. Como hemos comentado anteriormente cabe esperar que al aumentar la n el error va a aumentar, ya que como hemos visto en el primer ejemplo cerca de la frontera la fórmula de Poisson da problemas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF421.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral según nos acercamos al&lt;br /&gt;
% borde de la región.&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 20;&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for n = 1:N_max&lt;br /&gt;
    N = 10^2; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f=g(theta)*(1-(1-10^(-n)).^2)./(1+(1-10^(-n)).^2-2*(1-10^(-n))*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u=h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (1-10^-n,pi/4)&lt;br /&gt;
    err(n)=abs((1-10^(-n))^2*cos(pi/4)*sin(pi/4)-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,err,color='b',LineWidth=1.5) %Dibujamos la gráfica del error&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('Error');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En la gráfica podemos ver cómo efectivamente el error para valores de n pequeños, es decir, puntos que están relativamente lejos de la frontera, el error es pequeño al igual que en el caso anterior. Por el contrario, según aumenta la n, es decir, según nos acercamos a la frontera el error aumenta, lo cual tiene sentido ya que como hemos comentado antes la fórmula de Poisson da problemas en la frontera.&lt;br /&gt;
&lt;br /&gt;
Además, podemos observar que el error se estabiliza aproximadamente en  &amp;lt;math&amp;gt; n=4 &amp;lt;/math&amp;gt;, esto se debe a que para este valor de n el punto ya esta suficientemente cerca de la frontera como para representar todo el error que se da en esta y por ello aunque nos acerquemos más a la frontera (aumente n) el error se mantiene estable en  &amp;lt;math&amp;gt; 0.5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Serie de Fourier==&lt;br /&gt;
La otra forma que vamos a ver para resolver la ecuación de Laplace es mediante [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) series de Fourier]. Para hacer esto vamos a tomar nuestro problema en coordenadas polares:&lt;br /&gt;
&lt;br /&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,&amp;amp; r\in(0,1),\theta\in[0,2\pi]\\&lt;br /&gt;
U(1,\theta)=G(\theta)=sin(\theta)cos(\theta),&amp;amp; \theta\in[0,2\pi]&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y a aplicar el método de separación de variables. Al hacer esto obtenemos que: &amp;lt;math&amp;gt; U(r,\theta)=\frac{a_0}{2}+\sum_{k=1}^\infty a_kr^kcos(k\theta)+b_kr^ksin(k\theta).&amp;lt;/math&amp;gt;. Para que esto sea solución falta hacer que cumpla la condición frontera, para ello vamos a tomar la serie de Fourier de &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; L^2([-\pi,\pi]) &amp;lt;/math&amp;gt;, que es &amp;lt;math&amp;gt; G(\theta)=\frac{\alpha_0}{2}+\sum_{k=1}^\infty \alpha_kcos(k\theta)+\beta_ksin(k\theta)&amp;lt;/math&amp;gt; y a igualar ambas series cuando r=1. Al hacer esto vemos que para que ambas series sean iguale los coeficientes tienen que ser iguales, por lo que vamos a calcular los coeficientes de  &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; y a ver su equivalencia con los de  &amp;lt;math&amp;gt; U &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; a_0=\alpha_0=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)d\theta \quad \quad \quad a_k=\alpha_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)cos(k\theta)d\theta \quad \quad \quad b_k=\beta_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)sin(k\theta)d\theta. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al realizar estas integrales obtenemos que &amp;lt;math&amp;gt; a_0=0,a_k=0\forall k &amp;lt;/math&amp;gt; y todos los &amp;lt;math&amp;gt; b_k &amp;lt;/math&amp;gt; son 0 excepto &amp;lt;math&amp;gt; b_2=\frac{1}{2} &amp;lt;/math&amp;gt;. Por lo que la solución nos queda de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}sin(2\theta) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a dibujar la solución, cuya gráfica va a ser exacta ya que la serie tiene un único término.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF43.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Dibujamos la solución calculada por serie de Fourier&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^(2).*sin(2.*theta)/2; %Solución de la ecuación&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):1; %Partición en r&lt;br /&gt;
for j = 1:N+1&lt;br /&gt;
    for i = 1:N+1&lt;br /&gt;
        U(i,j) = u(r(i),theta(j));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, U, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('y');&lt;br /&gt;
zlabel('u(x, y)');&lt;br /&gt;
title('Solución exacta calculada por serie de Fourier');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al haber resuelto el problema por ambos métodos, observamos que este último nos da la solución de forma exacta, por lo que en este caso va a ser más efectivo que el anterior. Esto no tendría porque ser así en todos los casos ya que la serie de Fourier para otra función G distinta puede tener infinitos términos, lo que haría que la aproximación no sea exacta, pero aun así sería más exacta que con el método anterior en los puntos cercanos a la forntera.&lt;br /&gt;
&lt;br /&gt;
==Desigualdad de Harnack==&lt;br /&gt;
&lt;br /&gt;
En esta sección vamos a usar la desigualdad de Harnack para obtener la región que contiene a todas las soluciones armónicas de la ecuación de Laplace que valen lo mismo en el origen que la solución que hemos calculado.&lt;br /&gt;
&lt;br /&gt;
La desigualdad de Harnack establece que dada una función &amp;lt;math&amp;gt; u\geq 0 &amp;lt;/math&amp;gt; armónica en &amp;lt;math&amp;gt; \Omega \subset \mathbb{R}^n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B_R(z) \subset \Omega &amp;lt;/math&amp;gt; con  &amp;lt;math&amp;gt; z \in \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)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para poder aplicarla a nuestro problema, vamos a tomar v=U+M, siendo &amp;lt;math&amp;gt; U(r,\theta)=\frac{r^2}{2R^2}sin(2\theta) &amp;lt;/math&amp;gt; la solución al problema en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;, y M el mínimo de &amp;lt;math&amp;gt; G(\theta)=R^2sin(\theta)cos(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;. Al hacer esto v va a ser una función armónica positiva a la que le podemos aplicar la desigualdad de Harnack.&lt;br /&gt;
&lt;br /&gt;
Primero vamos a aplicar la desigualdad variando el radio de la bola y a observar como varia la región que determina en función de esto. Para ello vamos a representar las cotas en escala logarítmica, lo cual nos permite observar mejor su comportamiento.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Representamos las cotas que nos da la desigualdad de Harnack&lt;br /&gt;
% para nuestro ejemplo.&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^2*sin(theta).*cos(theta); %Definimos la función u(r,theta)&lt;br /&gt;
g=@(theta,r) r^2*sin(theta).*cos(theta); %Definimos la función g&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
R = [1,2,10]; %Radios de las bolas&lt;br /&gt;
n = 2; %Dimensión del espacio&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
C=[&amp;quot;#0000FF&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#00FF00&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
for i=1:3&lt;br /&gt;
    r = 0:N^(-1):R(i); %Partición en r&lt;br /&gt;
    gR=g(theta,R(i));&lt;br /&gt;
    M1=min(gR); %Calculamos el mínimo de g en la frontera de la bola de radio R&lt;br /&gt;
    v1=@(r,theta) u(r,theta)-M1;&lt;br /&gt;
    A=@(r)R(i).^(n-2).*(R(i)-r)./(R(i)+r).^(n-1)*v1(0,0);&lt;br /&gt;
    B=@(r)R(i).^(n-2).*(R(i)+r)./(R(i)-r).^(n-1)*v1(0,0);&lt;br /&gt;
&lt;br /&gt;
    %Graficamos las cotas para los diferentes radios&lt;br /&gt;
    subplot(1,3,i)&lt;br /&gt;
    plot(r,log10(A(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(r,log10(B(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    axis([0 10,-3 6])&lt;br /&gt;
    xlabel('r');&lt;br /&gt;
    ylabel('log(Cotas)');&lt;br /&gt;
    title(['Cotas para r= ' num2str(R(i))]);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF44_1.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Lo más destacable en las 3 gráficas es que en todas ellas ambas restricciones se van al infinito cunado llegan al radio correspondiente a la bola en la que están calculadas. Esto tiene sentido ya que podemos observar que el denominador de la cota superior se anula cuando r=R y por lo tanto se va a infinito y su logaritmo también, y la cota inferior es 0 cuando r=R y por tanto su logaritmo se va a menos infinito. También podemos observar, que debido a esto, el pico que forman ambas restricciones es más estrecho cuando aumentamos el radio de la bola.&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo varían las restricciones si variamos la dimensión.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF442.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Al observar estas gráficas podemos observar que independientemente del radio cuando aumentamos la dimensión aumenta la región que definen ambas restricciones. Además, en n=3 el comportamiento sigue siendo el mismo que el comentado para n=2.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Poisson=&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a buscar una solución de la ecuación de Poisson en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u=f,\quad x\in\mathbb{R}^2. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ello vamos a utilizar la solución fundamental del laplaciano, que en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt; se define como &amp;lt;math&amp;gt; \Phi(x)=-\frac{1}{2\pi}log|x| &amp;lt;/math&amp;gt; y cumple que &amp;lt;math&amp;gt; \Delta \Phi(x)=-\delta_2(x) &amp;lt;/math&amp;gt;. Donde &amp;lt;math&amp;gt;\delta_2(x) &amp;lt;/math&amp;gt; es la delta de Dirac en dimensión 2.&lt;br /&gt;
&lt;br /&gt;
Si ahora consideramos el potencial logarítmico de la función f, que es la la convolución de la solución fundamental con f, entonces podríamos expresar la solución como: &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2}\Phi(x-y)f(y)dy &amp;lt;/math&amp;gt; y formalmente tenemos que: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u(x)=\int_{\mathbb{R}^2}\Delta_x\Phi(x-y)f(y)dy=- \int_{\mathbb{R}^2}\delta_2f(y)dy=-f(x),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pero esto no es correcto ya que el laplaciano de la solución fundamental no es integrable. A pesar de no ser correcto nos da la intuición de que el potencial logarítmico podría ser una posible  solución del problema.&lt;br /&gt;
&lt;br /&gt;
Ahora para solucionar esto vamos a tomar f como la función característica de la bola de radio 1 ya que de esta manera obtenemos el siguiente teorema: (Remark 3.35 pag 150)&lt;br /&gt;
&lt;br /&gt;
Por tanto, la solución vendrá dada por la siguiente expresión:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  u(\textbf{x}) = - \frac{1}{2 \pi} \int _{B_1} log( | \textbf{x}- \textbf{y}|) d \textbf{y} &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Haciendo el cambio de variable &amp;lt;math&amp;gt;  \textbf{y}= ( r cos (\theta), r sin( \theta)) &amp;lt;/math&amp;gt; obtenemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;  u(\textbf{x}) = - \frac{1}{4 \pi} \int _{0}^{2 \pi} \int_{0}^{1} r log((x_1-r cos(\theta))^2 + (x_2-r sin(\theta))^2) d r d \theta &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF52.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
N1=300; N2=300; %Número de puntos&lt;br /&gt;
a=0; b=1; c=0; d=2*pi; %Extremos de los intervalos&lt;br /&gt;
h1=(b-a)/N1; h2=(d-c)/N2;&lt;br /&gt;
r=a:h1:b; theta=c:h2:d; %Particiones de r y theta&lt;br /&gt;
[rr,tt]=meshgrid(r,theta); &lt;br /&gt;
w1=ones(N1+1,1);                &lt;br /&gt;
w1(1)=1/2; w1(N1+1)=1/2;&lt;br /&gt;
w2=ones(N2+1,1);                 &lt;br /&gt;
w2(1)=1/2; w2(N2+1)=1/2;&lt;br /&gt;
x11=-1:2/100:1; % Partición de x_1&lt;br /&gt;
x21=-1:2/100:1; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        f=-log(sqrt((x11(j)-rr.*cos(tt)).^2+(x21(i)-rr.*sin(tt)).^2)).*rr; %Potencial logaritmico               &lt;br /&gt;
        u1(i,j)=h1*h2*w2'*f*w1/(2*pi); %Solución del método del trapecio en 2 variable&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos la solución&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11,x21, u1, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución con el potencial logarítmico');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF5_1.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Representación de la solución asintótica&lt;br /&gt;
&lt;br /&gt;
M=pi; %Area del circulo de radio 1&lt;br /&gt;
f=@(x1,x2) -M/(2*pi).*log(sqrt(x1.^2+x2.^2)); % Función que describe el comportamiento asintótico&lt;br /&gt;
&lt;br /&gt;
N=200; %Número de intervalos&lt;br /&gt;
a=-1; b=1;                     &lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
x11=a:h:b; %Partición de x_1&lt;br /&gt;
x21=a:h:b; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
u=zeros(length(x11),length(x21));&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        u(i,j)=f(x11(i),x21(j)); %Evaluamos f en la malla de puntos&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos el resultado&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11, x21, u, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución cuando x tienda a \infty');&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF53.jpg|400px|thumb|right]]&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71573</id>
		<title>Ecuación de Laplace y de Poisson (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71573"/>
				<updated>2024-04-19T17:46:25Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Ecuación de Poisson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar  la ecuación de Laplace y la ecuación de Poisson. Para ello vamos a calcular soluciones de distintas formas usando cosas como la fórmula de Poisson o el potencial logarítmico, graficándolas y modificando algunos de los parámetros.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Laplace=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la exactitud que tienen dos formas diferentes de resolver la ecuación de Laplace. Para hacer esto tomamos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta u=0,&amp;amp; x\in B_1\\&lt;br /&gt;
u=g,&amp;amp; x\in\partial B_1&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt; B_1\subset\mathbb{R}^2 &amp;lt;/math&amp;gt; la bola de radio 1 centrada en el (0,0).&lt;br /&gt;
&lt;br /&gt;
==Fórmula de Poisson==&lt;br /&gt;
&lt;br /&gt;
Una de las formas de resolver este tipo de problemas es mediante la fórmula de Poisson, que es: &amp;lt;math&amp;gt; u=\frac{R^2-|x|^2}{2\pi R}\int_{\partial B_R}\frac{g(\sigma)}{|x-\sigma|^2} d\sigma, &amp;lt;/math&amp;gt; donde R es el radio de la bola y &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; la distancia al centro de la bola.&lt;br /&gt;
&lt;br /&gt;
Para ver cómo funciona esta fórmula vamos a resolver el problema tomando &amp;lt;math&amp;gt; g(\theta)=max \{0,1-\frac{2}{\pi}|\theta-\pi|\}&amp;lt;/math&amp;gt;. Como esta función, que es la que representa las condiciones frontera, está en coordenadas polares vamos a expresar la fórmula de Poisson en polares.&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}\int_{0}^{2\pi}g(s)\frac{R^2-r^2}{R^2+r^2-2rRcos(s-\theta)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la fórmula expresada de esta manera, podemos aplicarla a nuestro problema tomando R=1 y sustituyendo g por nuestra función. Teniendo esto en cuenta vamos a resolver el problema realizando la integral mediante la [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals regla del trapecio] y a representar la solución.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF41.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calcular la solución de la ecuación de Laplace  en la bola de radio&lt;br /&gt;
% unidad usando la fórmula de Poisson. Con condición frontera la función g&lt;br /&gt;
&lt;br /&gt;
g = @(theta) max(0,1-2/pi*abs(theta-pi)); %Definimos la función g(theta)&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):0.9; %Partición en r (no llegamos hasta el borde de la bola)&lt;br /&gt;
&lt;br /&gt;
w = ones(N+1,1);                 &lt;br /&gt;
w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
u = zeros(length(r)+1,length(theta));&lt;br /&gt;
for j = 1:length(theta)&lt;br /&gt;
    for i = 1:length(r)&lt;br /&gt;
        f = g(theta)*(1-r(i).^2)./(1+r(i).^2-2*r(i)*cos(theta-theta(j))); %Función a integrar&lt;br /&gt;
        u(i,j) = h*w'*f'/(2*pi); %Fórmula de Poison usando la fórmula del trapecio para integrar.&lt;br /&gt;
    end&lt;br /&gt;
    u(length(r)+1,j) = g(theta(j)); %Añadimos la condicón frontera directamente&lt;br /&gt;
end&lt;br /&gt;
r(length(r)+1) = 1;&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, u, 'EdgeColor', 'none');&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;
En la imagen podemos observar que la fórmula de Poisson nos da problemas en la frontera, esto se debe al carácter singular de la integral cerca del borde. Para solucionar esto vamos a tomar directamente el valor de g en el borde de la bola. Al hacer esto obtenemos la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF411.jpg|400px|thumb|center| Sustituyendo g en el borde de la bola]]&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas podemos observar que efectivamente sustituir g en el borde hace que evitemos la singularidad de la integral en la frontera.&lt;br /&gt;
&lt;br /&gt;
Como hemos visto con este ejemplo la fórmula de Poisson tiene problemas para aproximar la solución cerca de la frontera. Por lo que para estudiar esto, vamos a tomar &amp;lt;math&amp;gt; g(x,y)=xy &amp;lt;/math&amp;gt; como condición frontera y &amp;lt;math&amp;gt; u(x,y)=xy &amp;lt;/math&amp;gt; como solución del problema para calcular los diferentes errores que genera la fórmula de Poisson. &lt;br /&gt;
&lt;br /&gt;
Para hacerlo vamos a tomar tanto u como g en coordenadas polares, ya que al estudiar el problema en una bola esto nos permite hacernos una mejor idea de lo que ocurre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
U(r,\theta)=r^2cos(\theta)sin(\theta)\\&lt;br /&gt;
U(1,\theta)=G(\theta)=cos(\theta)sin(\theta)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Primero vamos a tomar un punto &amp;quot;lejos&amp;quot; de la frontera &amp;lt;math&amp;gt; (r,\theta)=(0.9,\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo evoluciona el error, es decir, la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson en ese punto, en función de n. Siendo n el número que determina el número de intervalos en &amp;lt;math&amp;gt; 10^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por el ejemplo anterior, cabe esperar que la fórmula en este punto aproxime bien a la función ya que no es un punto cercano a la frontera, y por lo tanto el error vaya disminuyendo según aumenta el número de intervalos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF42.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral mediante&lt;br /&gt;
% el método del trapecio en función del tamaño de la discretización&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 8; %Discretización máxima: 10^N_max&lt;br /&gt;
err = zeros(N_max,1);&lt;br /&gt;
for m = 1:N_max&lt;br /&gt;
    N = 10^m; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f = g(theta)*(1-0.9.^2)./(1+0.9.^2-2*0.9*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u = h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (0.9,pi/4)&lt;br /&gt;
    &lt;br /&gt;
    % Valor de la solución exacta (x*y=R^2*cos(theta)*sin(theta))&lt;br /&gt;
    % en el punto (0.9, pi/4)&lt;br /&gt;
    exacta = 0.9^2*cos(pi/4)*sin(pi/4); &lt;br /&gt;
&lt;br /&gt;
    % Calculamos el error como la diferencia en valor absoluto entre&lt;br /&gt;
    % la solución exacta y la calculada con la fórmula de Poisson&lt;br /&gt;
    err(m) = abs(exacta-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,log10(err),color='b',LineWidth=1.5) %Dibujamos la gráfica del error en escala logarítmica&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('log_{10}(error(10^n))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado antes, al observar la gráfica vemos que el error va disminuyendo según aumenta n. Esto tiene sentido ya que cuantos más intervalos hay en la discretización más exacta va a ser la aproximación. También podemos observar que se estabiliza cuando llega aproximadamente a &amp;lt;math&amp;gt; n=3 &amp;lt;/math&amp;gt;, esto se debe a que con &amp;lt;math&amp;gt; 10^3 &amp;lt;/math&amp;gt; intervalos el método del trapecio ya aproxima lo suficientemente bien a la función original, lo que hace que aunque aumente el número de intervalos la aproximación no tenga mucho margen de mejor. Con esto hemos visto que en un punto que no esté cerca del borde la fórmula de Poisson va a funcionar bien. &lt;br /&gt;
&lt;br /&gt;
También podemos usar la fórmula del error máximo del método del trapecio para obtener una cota para el error y ver que los errores calculados numéricamente se encuentran por debajo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(n) \leq \left|-\frac{f’’(\xi)(b-a)^3}{12n^2} \right| &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt; es el intervalo de integración, &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; la función a integrar, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; el número de particiones de la discretización y &amp;lt;math&amp;gt; \xi &amp;lt;/math&amp;gt; un cierto valor entre &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt;. Para nuetro problema, &amp;lt;math&amp;gt;[a,b]=[0,2\pi]&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f(\theta)=\frac{(1-r^2) sen(\theta)cos(\theta)}{2\pi(1+r^2-2rcos(\alpha - \theta))}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Derivando &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; dos veces y maximizando su valor en &amp;lt;math&amp;gt;[0,2\pi]&amp;lt;/math&amp;gt;, obtenemos la siguiente cota:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;error(n) \leq \left|- \frac{\pi^2(r^6 - r^5 + 6 r^3 + r^2 -r +2) }{3 n^2(1-r)^5} \right|&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La dibujamos en función de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; junto con el error calculado numéricamente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Cota error.png|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Usando el vector err calculado en el anterior código, representamos la misma gráfica junto&lt;br /&gt;
% con la gráfica de la cota estimada del error&lt;br /&gt;
&lt;br /&gt;
%Definimos la cota del error estimada mediante la fórmula del trapecio&lt;br /&gt;
cota = @(n) abs(-pi^2*(r^6-r^5+6*r^3+r^2-r+2)./(3*(10.^(2*n))*(1-r)^5)); &lt;br /&gt;
&lt;br /&gt;
%Dibujamos las gráficas del error en escala logarítmica&lt;br /&gt;
hold on&lt;br /&gt;
plot(1:N_max,log10(err(:,1)),color='b',LineWidth=1.5)&lt;br /&gt;
plot(1:N_max,log10(cota(1:N_max)),color='r',LineWidth=1.5)&lt;br /&gt;
legend('Error absoluto', 'Cota del error'); % Leyenda&lt;br /&gt;
hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Comprobamos que el error de la aproximación queda por debajo de esta cota (que no es muy ajustada).&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo se comporta el error según nos acercamos a la frontera. Para hacer esto vamos a tomar el punto &amp;lt;math&amp;gt; (r,\theta)=(1-10^{-n},\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo varía el error (la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson) cuando aumentamos la n, es decir, cuando nos vamos acercando a la frontera. Como hemos comentado anteriormente cabe esperar que al aumentar la n el error va a aumentar, ya que como hemos visto en el primer ejemplo cerca de la frontera la fórmula de Poisson da problemas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF421.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral según nos acercamos al&lt;br /&gt;
% borde de la región.&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 20;&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for n = 1:N_max&lt;br /&gt;
    N = 10^2; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f=g(theta)*(1-(1-10^(-n)).^2)./(1+(1-10^(-n)).^2-2*(1-10^(-n))*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u=h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (1-10^-n,pi/4)&lt;br /&gt;
    err(n)=abs((1-10^(-n))^2*cos(pi/4)*sin(pi/4)-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,err,color='b',LineWidth=1.5) %Dibujamos la gráfica del error&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('Error');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En la gráfica podemos ver cómo efectivamente el error para valores de n pequeños, es decir, puntos que están relativamente lejos de la frontera, el error es pequeño al igual que en el caso anterior. Por el contrario, según aumenta la n, es decir, según nos acercamos a la frontera el error aumenta, lo cual tiene sentido ya que como hemos comentado antes la fórmula de Poisson da problemas en la frontera.&lt;br /&gt;
&lt;br /&gt;
Además, podemos observar que el error se estabiliza aproximadamente en  &amp;lt;math&amp;gt; n=4 &amp;lt;/math&amp;gt;, esto se debe a que para este valor de n el punto ya esta suficientemente cerca de la frontera como para representar todo el error que se da en esta y por ello aunque nos acerquemos más a la frontera (aumente n) el error se mantiene estable en  &amp;lt;math&amp;gt; 0.5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Serie de Fourier==&lt;br /&gt;
La otra forma que vamos a ver para resolver la ecuación de Laplace es mediante [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) series de Fourier]. Para hacer esto vamos a tomar nuestro problema en coordenadas polares:&lt;br /&gt;
&lt;br /&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,&amp;amp; r\in(0,1),\theta\in[0,2\pi]\\&lt;br /&gt;
U(1,\theta)=G(\theta)=sin(\theta)cos(\theta),&amp;amp; \theta\in[0,2\pi]&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y a aplicar el método de separación de variables. Al hacer esto obtenemos que: &amp;lt;math&amp;gt; U(r,\theta)=\frac{a_0}{2}+\sum_{k=1}^\infty a_kr^kcos(k\theta)+b_kr^ksin(k\theta).&amp;lt;/math&amp;gt;. Para que esto sea solución falta hacer que cumpla la condición frontera, para ello vamos a tomar la serie de Fourier de &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; L^2([-\pi,\pi]) &amp;lt;/math&amp;gt;, que es &amp;lt;math&amp;gt; G(\theta)=\frac{\alpha_0}{2}+\sum_{k=1}^\infty \alpha_kcos(k\theta)+\beta_ksin(k\theta)&amp;lt;/math&amp;gt; y a igualar ambas series cuando r=1. Al hacer esto vemos que para que ambas series sean iguale los coeficientes tienen que ser iguales, por lo que vamos a calcular los coeficientes de  &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; y a ver su equivalencia con los de  &amp;lt;math&amp;gt; U &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; a_0=\alpha_0=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)d\theta \quad \quad \quad a_k=\alpha_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)cos(k\theta)d\theta \quad \quad \quad b_k=\beta_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)sin(k\theta)d\theta. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al realizar estas integrales obtenemos que &amp;lt;math&amp;gt; a_0=0,a_k=0\forall k &amp;lt;/math&amp;gt; y todos los &amp;lt;math&amp;gt; b_k &amp;lt;/math&amp;gt; son 0 excepto &amp;lt;math&amp;gt; b_2=\frac{1}{2} &amp;lt;/math&amp;gt;. Por lo que la solución nos queda de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}sin(2\theta) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a dibujar la solución, cuya gráfica va a ser exacta ya que la serie tiene un único término.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF43.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Dibujamos la solución calculada por serie de Fourier&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^(2).*sin(2.*theta)/2; %Solución de la ecuación&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):1; %Partición en r&lt;br /&gt;
for j = 1:N+1&lt;br /&gt;
    for i = 1:N+1&lt;br /&gt;
        U(i,j) = u(r(i),theta(j));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, U, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('y');&lt;br /&gt;
zlabel('u(x, y)');&lt;br /&gt;
title('Solución exacta calculada por serie de Fourier');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al haber resuelto el problema por ambos métodos, observamos que este último nos da la solución de forma exacta, por lo que en este caso va a ser más efectivo que el anterior. Esto no tendría porque ser así en todos los casos ya que la serie de Fourier para otra función G distinta puede tener infinitos términos, lo que haría que la aproximación no sea exacta, pero aun así sería más exacta que con el método anterior en los puntos cercanos a la forntera.&lt;br /&gt;
&lt;br /&gt;
==Desigualdad de Harnack==&lt;br /&gt;
&lt;br /&gt;
En esta sección vamos a usar la desigualdad de Harnack para obtener la región que contiene a todas las soluciones armónicas de la ecuación de Laplace que valen lo mismo en el origen que la solución que hemos calculado.&lt;br /&gt;
&lt;br /&gt;
La desigualdad de Harnack establece que dada una función &amp;lt;math&amp;gt; u\geq 0 &amp;lt;/math&amp;gt; armónica en &amp;lt;math&amp;gt; \Omega \subset \mathbb{R}^n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B_R(z) \subset \Omega &amp;lt;/math&amp;gt; con  &amp;lt;math&amp;gt; z \in \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)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para poder aplicarla a nuestro problema, vamos a tomar v=U+M, siendo &amp;lt;math&amp;gt; U(r,\theta)=\frac{r^2}{2R^2}sin(2\theta) &amp;lt;/math&amp;gt; la solución al problema en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;, y M el mínimo de &amp;lt;math&amp;gt; G(\theta)=R^2sin(\theta)cos(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;. Al hacer esto v va a ser una función armónica positiva a la que le podemos aplicar la desigualdad de Harnack.&lt;br /&gt;
&lt;br /&gt;
Primero vamos a aplicar la desigualdad variando el radio de la bola y a observar como varia la región que determina en función de esto. Para ello vamos a representar las cotas en escala logarítmica, lo cual nos permite observar mejor su comportamiento.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Representamos las cotas que nos da la desigualdad de Harnack&lt;br /&gt;
% para nuestro ejemplo.&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^2*sin(theta).*cos(theta); %Definimos la función u(r,theta)&lt;br /&gt;
g=@(theta,r) r^2*sin(theta).*cos(theta); %Definimos la función g&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
R = [1,2,10]; %Radios de las bolas&lt;br /&gt;
n = 2; %Dimensión del espacio&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
C=[&amp;quot;#0000FF&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#00FF00&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
for i=1:3&lt;br /&gt;
    r = 0:N^(-1):R(i); %Partición en r&lt;br /&gt;
    gR=g(theta,R(i));&lt;br /&gt;
    M1=min(gR); %Calculamos el mínimo de g en la frontera de la bola de radio R&lt;br /&gt;
    v1=@(r,theta) u(r,theta)-M1;&lt;br /&gt;
    A=@(r)R(i).^(n-2).*(R(i)-r)./(R(i)+r).^(n-1)*v1(0,0);&lt;br /&gt;
    B=@(r)R(i).^(n-2).*(R(i)+r)./(R(i)-r).^(n-1)*v1(0,0);&lt;br /&gt;
&lt;br /&gt;
    %Graficamos las cotas para los diferentes radios&lt;br /&gt;
    subplot(1,3,i)&lt;br /&gt;
    plot(r,log10(A(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(r,log10(B(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    axis([0 10,-3 6])&lt;br /&gt;
    xlabel('r');&lt;br /&gt;
    ylabel('log(Cotas)');&lt;br /&gt;
    title(['Cotas para r= ' num2str(R(i))]);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF44_1.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Lo más destacable en las 3 gráficas es que en todas ellas ambas restricciones se van al infinito cunado llegan al radio correspondiente a la bola en la que están calculadas. Esto tiene sentido ya que podemos observar que el denominador de la cota superior se anula cuando r=R y por lo tanto se va a infinito y su logaritmo también, y la cota inferior es 0 cuando r=R y por tanto su logaritmo se va a menos infinito. También podemos observar, que debido a esto, el pico que forman ambas restricciones es más estrecho cuando aumentamos el radio de la bola.&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo varían las restricciones si variamos la dimensión.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF442.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Al observar estas gráficas podemos observar que independientemente del radio cuando aumentamos la dimensión aumenta la región que definen ambas restricciones. Además, en n=3 el comportamiento sigue siendo el mismo que el comentado para n=2.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Poisson=&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a buscar una solución de la ecuación de Poisson en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u=f,\quad x\in\mathbb{R}^2. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ello vamos a utilizar la solución fundamental del laplaciano, que en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt; se define como &amp;lt;math&amp;gt; \Phi(x)=-\frac{1}{2\pi}log|x| &amp;lt;/math&amp;gt; y cumple que &amp;lt;math&amp;gt; \Delta \Phi(x)=-\delta_2(x) &amp;lt;/math&amp;gt;. Donde &amp;lt;math&amp;gt;\delta_2(x) &amp;lt;/math&amp;gt; es la delta de Dirac en dimensión 2.&lt;br /&gt;
&lt;br /&gt;
Si ahora consideramos el potencial logarítmico de la función f, que es la la convolución de la solución fundamental con f, entonces podríamos expresar la solución como: &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2}\Phi(x-y)f(y)dy &amp;lt;/math&amp;gt; y formalmente tenemos que: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u(x)=\int_{\mathbb{R}^2}\Delta_x\Phi(x-y)f(y)dy=- \int_{\mathbb{R}^2}\delta_2f(y)dy=-f(x),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pero esto no es correcto ya que el laplaciano de la solución fundamental no es integrable. A pesar de no ser correcto nos da la intuición de que el potencial logarítmico podría ser una posible  solución del problema.&lt;br /&gt;
&lt;br /&gt;
Ahora para solucionar esto vamos a tomar f como la función característica de la bola de radio 1 ya que de esta manera obtenemos el siguiente teorema: (Remark 3.35 pag 150)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver esto con el ejemplo concreto en el que la función f es la función característica en la bola de radio 1.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF52.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
N1=300; N2=300; %Número de puntos&lt;br /&gt;
a=0; b=1; c=0; d=2*pi; %Extremos de los intervalos&lt;br /&gt;
h1=(b-a)/N1; h2=(d-c)/N2;&lt;br /&gt;
r=a:h1:b; theta=c:h2:d; %Particiones de r y theta&lt;br /&gt;
[rr,tt]=meshgrid(r,theta); &lt;br /&gt;
w1=ones(N1+1,1);                &lt;br /&gt;
w1(1)=1/2; w1(N1+1)=1/2;&lt;br /&gt;
w2=ones(N2+1,1);                 &lt;br /&gt;
w2(1)=1/2; w2(N2+1)=1/2;&lt;br /&gt;
x11=-1:2/100:1; % Partición de x_1&lt;br /&gt;
x21=-1:2/100:1; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        f=-log(sqrt((x11(j)-rr.*cos(tt)).^2+(x21(i)-rr.*sin(tt)).^2)).*rr; %Potencial logaritmico               &lt;br /&gt;
        u1(i,j)=h1*h2*w2'*f*w1/(2*pi); %Solución del método del trapecio en 2 variable&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos la solución&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11,x21, u1, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución con el potencial logarítmico');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF5_1.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Representación de la solución asintótica&lt;br /&gt;
&lt;br /&gt;
M=pi; %Area del circulo de radio 1&lt;br /&gt;
f=@(x1,x2) -M/(2*pi).*log(sqrt(x1.^2+x2.^2)); % Función que describe el comportamiento asintótico&lt;br /&gt;
&lt;br /&gt;
N=200; %Número de intervalos&lt;br /&gt;
a=-1; b=1;                     &lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
x11=a:h:b; %Partición de x_1&lt;br /&gt;
x21=a:h:b; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
u=zeros(length(x11),length(x21));&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        u(i,j)=f(x11(i),x21(j)); %Evaluamos f en la malla de puntos&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos el resultado&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11, x21, u, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución cuando x tienda a \infty');&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF53.jpg|400px|thumb|right]]&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71570</id>
		<title>Ecuación de Laplace y de Poisson (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71570"/>
				<updated>2024-04-19T17:45:21Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Fórmula de Poisson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar  la ecuación de Laplace y la ecuación de Poisson. Para ello vamos a calcular soluciones de distintas formas usando cosas como la fórmula de Poisson o el potencial logarítmico, graficándolas y modificando algunos de los parámetros.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Laplace=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la exactitud que tienen dos formas diferentes de resolver la ecuación de Laplace. Para hacer esto tomamos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta u=0,&amp;amp; x\in B_1\\&lt;br /&gt;
u=g,&amp;amp; x\in\partial B_1&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt; B_1\subset\mathbb{R}^2 &amp;lt;/math&amp;gt; la bola de radio 1 centrada en el (0,0).&lt;br /&gt;
&lt;br /&gt;
==Fórmula de Poisson==&lt;br /&gt;
&lt;br /&gt;
Una de las formas de resolver este tipo de problemas es mediante la fórmula de Poisson, que es: &amp;lt;math&amp;gt; u=\frac{R^2-|x|^2}{2\pi R}\int_{\partial B_R}\frac{g(\sigma)}{|x-\sigma|^2} d\sigma, &amp;lt;/math&amp;gt; donde R es el radio de la bola y &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; la distancia al centro de la bola.&lt;br /&gt;
&lt;br /&gt;
Para ver cómo funciona esta fórmula vamos a resolver el problema tomando &amp;lt;math&amp;gt; g(\theta)=max \{0,1-\frac{2}{\pi}|\theta-\pi|\}&amp;lt;/math&amp;gt;. Como esta función, que es la que representa las condiciones frontera, está en coordenadas polares vamos a expresar la fórmula de Poisson en polares.&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}\int_{0}^{2\pi}g(s)\frac{R^2-r^2}{R^2+r^2-2rRcos(s-\theta)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la fórmula expresada de esta manera, podemos aplicarla a nuestro problema tomando R=1 y sustituyendo g por nuestra función. Teniendo esto en cuenta vamos a resolver el problema realizando la integral mediante la [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals regla del trapecio] y a representar la solución.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF41.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calcular la solución de la ecuación de Laplace  en la bola de radio&lt;br /&gt;
% unidad usando la fórmula de Poisson. Con condición frontera la función g&lt;br /&gt;
&lt;br /&gt;
g = @(theta) max(0,1-2/pi*abs(theta-pi)); %Definimos la función g(theta)&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):0.9; %Partición en r (no llegamos hasta el borde de la bola)&lt;br /&gt;
&lt;br /&gt;
w = ones(N+1,1);                 &lt;br /&gt;
w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
u = zeros(length(r)+1,length(theta));&lt;br /&gt;
for j = 1:length(theta)&lt;br /&gt;
    for i = 1:length(r)&lt;br /&gt;
        f = g(theta)*(1-r(i).^2)./(1+r(i).^2-2*r(i)*cos(theta-theta(j))); %Función a integrar&lt;br /&gt;
        u(i,j) = h*w'*f'/(2*pi); %Fórmula de Poison usando la fórmula del trapecio para integrar.&lt;br /&gt;
    end&lt;br /&gt;
    u(length(r)+1,j) = g(theta(j)); %Añadimos la condicón frontera directamente&lt;br /&gt;
end&lt;br /&gt;
r(length(r)+1) = 1;&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, u, 'EdgeColor', 'none');&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;
En la imagen podemos observar que la fórmula de Poisson nos da problemas en la frontera, esto se debe al carácter singular de la integral cerca del borde. Para solucionar esto vamos a tomar directamente el valor de g en el borde de la bola. Al hacer esto obtenemos la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF411.jpg|400px|thumb|center| Sustituyendo g en el borde de la bola]]&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas podemos observar que efectivamente sustituir g en el borde hace que evitemos la singularidad de la integral en la frontera.&lt;br /&gt;
&lt;br /&gt;
Como hemos visto con este ejemplo la fórmula de Poisson tiene problemas para aproximar la solución cerca de la frontera. Por lo que para estudiar esto, vamos a tomar &amp;lt;math&amp;gt; g(x,y)=xy &amp;lt;/math&amp;gt; como condición frontera y &amp;lt;math&amp;gt; u(x,y)=xy &amp;lt;/math&amp;gt; como solución del problema para calcular los diferentes errores que genera la fórmula de Poisson. &lt;br /&gt;
&lt;br /&gt;
Para hacerlo vamos a tomar tanto u como g en coordenadas polares, ya que al estudiar el problema en una bola esto nos permite hacernos una mejor idea de lo que ocurre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
U(r,\theta)=r^2cos(\theta)sin(\theta)\\&lt;br /&gt;
U(1,\theta)=G(\theta)=cos(\theta)sin(\theta)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Primero vamos a tomar un punto &amp;quot;lejos&amp;quot; de la frontera &amp;lt;math&amp;gt; (r,\theta)=(0.9,\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo evoluciona el error, es decir, la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson en ese punto, en función de n. Siendo n el número que determina el número de intervalos en &amp;lt;math&amp;gt; 10^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por el ejemplo anterior, cabe esperar que la fórmula en este punto aproxime bien a la función ya que no es un punto cercano a la frontera, y por lo tanto el error vaya disminuyendo según aumenta el número de intervalos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF42.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral mediante&lt;br /&gt;
% el método del trapecio en función del tamaño de la discretización&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 8; %Discretización máxima: 10^N_max&lt;br /&gt;
err = zeros(N_max,1);&lt;br /&gt;
for m = 1:N_max&lt;br /&gt;
    N = 10^m; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f = g(theta)*(1-0.9.^2)./(1+0.9.^2-2*0.9*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u = h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (0.9,pi/4)&lt;br /&gt;
    &lt;br /&gt;
    % Valor de la solución exacta (x*y=R^2*cos(theta)*sin(theta))&lt;br /&gt;
    % en el punto (0.9, pi/4)&lt;br /&gt;
    exacta = 0.9^2*cos(pi/4)*sin(pi/4); &lt;br /&gt;
&lt;br /&gt;
    % Calculamos el error como la diferencia en valor absoluto entre&lt;br /&gt;
    % la solución exacta y la calculada con la fórmula de Poisson&lt;br /&gt;
    err(m) = abs(exacta-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,log10(err),color='b',LineWidth=1.5) %Dibujamos la gráfica del error en escala logarítmica&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('log_{10}(error(10^n))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado antes, al observar la gráfica vemos que el error va disminuyendo según aumenta n. Esto tiene sentido ya que cuantos más intervalos hay en la discretización más exacta va a ser la aproximación. También podemos observar que se estabiliza cuando llega aproximadamente a &amp;lt;math&amp;gt; n=3 &amp;lt;/math&amp;gt;, esto se debe a que con &amp;lt;math&amp;gt; 10^3 &amp;lt;/math&amp;gt; intervalos el método del trapecio ya aproxima lo suficientemente bien a la función original, lo que hace que aunque aumente el número de intervalos la aproximación no tenga mucho margen de mejor. Con esto hemos visto que en un punto que no esté cerca del borde la fórmula de Poisson va a funcionar bien. &lt;br /&gt;
&lt;br /&gt;
También podemos usar la fórmula del error máximo del método del trapecio para obtener una cota para el error y ver que los errores calculados numéricamente se encuentran por debajo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(n) \leq \left|-\frac{f’’(\xi)(b-a)^3}{12n^2} \right| &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt; es el intervalo de integración, &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; la función a integrar, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; el número de particiones de la discretización y &amp;lt;math&amp;gt; \xi &amp;lt;/math&amp;gt; un cierto valor entre &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt;. Para nuetro problema, &amp;lt;math&amp;gt;[a,b]=[0,2\pi]&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f(\theta)=\frac{(1-r^2) sen(\theta)cos(\theta)}{2\pi(1+r^2-2rcos(\alpha - \theta))}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Derivando &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; dos veces y maximizando su valor en &amp;lt;math&amp;gt;[0,2\pi]&amp;lt;/math&amp;gt;, obtenemos la siguiente cota:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;error(n) \leq \left|- \frac{\pi^2(r^6 - r^5 + 6 r^3 + r^2 -r +2) }{3 n^2(1-r)^5} \right|&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La dibujamos en función de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; junto con el error calculado numéricamente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Cota error.png|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Usando el vector err calculado en el anterior código, representamos la misma gráfica junto&lt;br /&gt;
% con la gráfica de la cota estimada del error&lt;br /&gt;
&lt;br /&gt;
%Definimos la cota del error estimada mediante la fórmula del trapecio&lt;br /&gt;
cota = @(n) abs(-pi^2*(r^6-r^5+6*r^3+r^2-r+2)./(3*(10.^(2*n))*(1-r)^5)); &lt;br /&gt;
&lt;br /&gt;
%Dibujamos las gráficas del error en escala logarítmica&lt;br /&gt;
hold on&lt;br /&gt;
plot(1:N_max,log10(err(:,1)),color='b',LineWidth=1.5)&lt;br /&gt;
plot(1:N_max,log10(cota(1:N_max)),color='r',LineWidth=1.5)&lt;br /&gt;
legend('Error absoluto', 'Cota del error'); % Leyenda&lt;br /&gt;
hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Comprobamos que el error de la aproximación queda por debajo de esta cota (que no es muy ajustada).&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo se comporta el error según nos acercamos a la frontera. Para hacer esto vamos a tomar el punto &amp;lt;math&amp;gt; (r,\theta)=(1-10^{-n},\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo varía el error (la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson) cuando aumentamos la n, es decir, cuando nos vamos acercando a la frontera. Como hemos comentado anteriormente cabe esperar que al aumentar la n el error va a aumentar, ya que como hemos visto en el primer ejemplo cerca de la frontera la fórmula de Poisson da problemas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF421.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral según nos acercamos al&lt;br /&gt;
% borde de la región.&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 20;&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for n = 1:N_max&lt;br /&gt;
    N = 10^2; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f=g(theta)*(1-(1-10^(-n)).^2)./(1+(1-10^(-n)).^2-2*(1-10^(-n))*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u=h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (1-10^-n,pi/4)&lt;br /&gt;
    err(n)=abs((1-10^(-n))^2*cos(pi/4)*sin(pi/4)-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,err,color='b',LineWidth=1.5) %Dibujamos la gráfica del error&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('Error');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En la gráfica podemos ver cómo efectivamente el error para valores de n pequeños, es decir, puntos que están relativamente lejos de la frontera, el error es pequeño al igual que en el caso anterior. Por el contrario, según aumenta la n, es decir, según nos acercamos a la frontera el error aumenta, lo cual tiene sentido ya que como hemos comentado antes la fórmula de Poisson da problemas en la frontera.&lt;br /&gt;
&lt;br /&gt;
Además, podemos observar que el error se estabiliza aproximadamente en  &amp;lt;math&amp;gt; n=4 &amp;lt;/math&amp;gt;, esto se debe a que para este valor de n el punto ya esta suficientemente cerca de la frontera como para representar todo el error que se da en esta y por ello aunque nos acerquemos más a la frontera (aumente n) el error se mantiene estable en  &amp;lt;math&amp;gt; 0.5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Serie de Fourier==&lt;br /&gt;
La otra forma que vamos a ver para resolver la ecuación de Laplace es mediante [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) series de Fourier]. Para hacer esto vamos a tomar nuestro problema en coordenadas polares:&lt;br /&gt;
&lt;br /&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,&amp;amp; r\in(0,1),\theta\in[0,2\pi]\\&lt;br /&gt;
U(1,\theta)=G(\theta)=sin(\theta)cos(\theta),&amp;amp; \theta\in[0,2\pi]&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y a aplicar el método de separación de variables. Al hacer esto obtenemos que: &amp;lt;math&amp;gt; U(r,\theta)=\frac{a_0}{2}+\sum_{k=1}^\infty a_kr^kcos(k\theta)+b_kr^ksin(k\theta).&amp;lt;/math&amp;gt;. Para que esto sea solución falta hacer que cumpla la condición frontera, para ello vamos a tomar la serie de Fourier de &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; L^2([-\pi,\pi]) &amp;lt;/math&amp;gt;, que es &amp;lt;math&amp;gt; G(\theta)=\frac{\alpha_0}{2}+\sum_{k=1}^\infty \alpha_kcos(k\theta)+\beta_ksin(k\theta)&amp;lt;/math&amp;gt; y a igualar ambas series cuando r=1. Al hacer esto vemos que para que ambas series sean iguale los coeficientes tienen que ser iguales, por lo que vamos a calcular los coeficientes de  &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; y a ver su equivalencia con los de  &amp;lt;math&amp;gt; U &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; a_0=\alpha_0=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)d\theta \quad \quad \quad a_k=\alpha_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)cos(k\theta)d\theta \quad \quad \quad b_k=\beta_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)sin(k\theta)d\theta. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al realizar estas integrales obtenemos que &amp;lt;math&amp;gt; a_0=0,a_k=0\forall k &amp;lt;/math&amp;gt; y todos los &amp;lt;math&amp;gt; b_k &amp;lt;/math&amp;gt; son 0 excepto &amp;lt;math&amp;gt; b_2=\frac{1}{2} &amp;lt;/math&amp;gt;. Por lo que la solución nos queda de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}sin(2\theta) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a dibujar la solución, cuya gráfica va a ser exacta ya que la serie tiene un único término.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF43.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Dibujamos la solución calculada por serie de Fourier&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^(2).*sin(2.*theta)/2; %Solución de la ecuación&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):1; %Partición en r&lt;br /&gt;
for j = 1:N+1&lt;br /&gt;
    for i = 1:N+1&lt;br /&gt;
        U(i,j) = u(r(i),theta(j));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, U, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('y');&lt;br /&gt;
zlabel('u(x, y)');&lt;br /&gt;
title('Solución exacta calculada por serie de Fourier');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al haber resuelto el problema por ambos métodos, observamos que este último nos da la solución de forma exacta, por lo que en este caso va a ser más efectivo que el anterior. Esto no tendría porque ser así en todos los casos ya que la serie de Fourier para otra función G distinta puede tener infinitos términos, lo que haría que la aproximación no sea exacta, pero aun así sería más exacta que con el método anterior en los puntos cercanos a la forntera.&lt;br /&gt;
&lt;br /&gt;
==Desigualdad de Harnack==&lt;br /&gt;
&lt;br /&gt;
En esta sección vamos a usar la desigualdad de Harnack para obtener la región que contiene a todas las soluciones armónicas de la ecuación de Laplace que valen lo mismo en el origen que la solución que hemos calculado.&lt;br /&gt;
&lt;br /&gt;
La desigualdad de Harnack establece que dada una función &amp;lt;math&amp;gt; u\geq 0 &amp;lt;/math&amp;gt; armónica en &amp;lt;math&amp;gt; \Omega \subset \mathbb{R}^n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B_R(z) \subset \Omega &amp;lt;/math&amp;gt; con  &amp;lt;math&amp;gt; z \in \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)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para poder aplicarla a nuestro problema, vamos a tomar v=U+M, siendo &amp;lt;math&amp;gt; U(r,\theta)=\frac{r^2}{2R^2}sin(2\theta) &amp;lt;/math&amp;gt; la solución al problema en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;, y M el mínimo de &amp;lt;math&amp;gt; G(\theta)=R^2sin(\theta)cos(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;. Al hacer esto v va a ser una función armónica positiva a la que le podemos aplicar la desigualdad de Harnack.&lt;br /&gt;
&lt;br /&gt;
Primero vamos a aplicar la desigualdad variando el radio de la bola y a observar como varia la región que determina en función de esto. Para ello vamos a representar las cotas en escala logarítmica, lo cual nos permite observar mejor su comportamiento.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Representamos las cotas que nos da la desigualdad de Harnack&lt;br /&gt;
% para nuestro ejemplo.&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^2*sin(theta).*cos(theta); %Definimos la función u(r,theta)&lt;br /&gt;
g=@(theta,r) r^2*sin(theta).*cos(theta); %Definimos la función g&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
R = [1,2,10]; %Radios de las bolas&lt;br /&gt;
n = 2; %Dimensión del espacio&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
C=[&amp;quot;#0000FF&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#00FF00&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
for i=1:3&lt;br /&gt;
    r = 0:N^(-1):R(i); %Partición en r&lt;br /&gt;
    gR=g(theta,R(i));&lt;br /&gt;
    M1=min(gR); %Calculamos el mínimo de g en la frontera de la bola de radio R&lt;br /&gt;
    v1=@(r,theta) u(r,theta)-M1;&lt;br /&gt;
    A=@(r)R(i).^(n-2).*(R(i)-r)./(R(i)+r).^(n-1)*v1(0,0);&lt;br /&gt;
    B=@(r)R(i).^(n-2).*(R(i)+r)./(R(i)-r).^(n-1)*v1(0,0);&lt;br /&gt;
&lt;br /&gt;
    %Graficamos las cotas para los diferentes radios&lt;br /&gt;
    subplot(1,3,i)&lt;br /&gt;
    plot(r,log10(A(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(r,log10(B(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    axis([0 10,-3 6])&lt;br /&gt;
    xlabel('r');&lt;br /&gt;
    ylabel('log(Cotas)');&lt;br /&gt;
    title(['Cotas para r= ' num2str(R(i))]);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF44_1.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Lo más destacable en las 3 gráficas es que en todas ellas ambas restricciones se van al infinito cunado llegan al radio correspondiente a la bola en la que están calculadas. Esto tiene sentido ya que podemos observar que el denominador de la cota superior se anula cuando r=R y por lo tanto se va a infinito y su logaritmo también, y la cota inferior es 0 cuando r=R y por tanto su logaritmo se va a menos infinito. También podemos observar, que debido a esto, el pico que forman ambas restricciones es más estrecho cuando aumentamos el radio de la bola.&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo varían las restricciones si variamos la dimensión.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF442.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Al observar estas gráficas podemos observar que independientemente del radio cuando aumentamos la dimensión aumenta la región que definen ambas restricciones. Además, en n=3 el comportamiento sigue siendo el mismo que el comentado para n=2.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Poisson=&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a buscar una solución de la ecuación de Poisson en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u=f,\quad x\in\mathbb{R}^2. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ello vamos a utilizar la solución fundamental del laplaciano, que en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt; se define como &amp;lt;math&amp;gt; \Phi(x)=-\frac{1}{2\pi}log|x| &amp;lt;/math&amp;gt; y cumple que &amp;lt;math&amp;gt; \Delta \Phi(x)=-\delta_2(x) &amp;lt;/math&amp;gt;. Donde &amp;lt;math&amp;gt;\delta_2(x) &amp;lt;/math&amp;gt; es la delta de Dirac en dimensión 2.&lt;br /&gt;
&lt;br /&gt;
Si ahora consideramos el potencial logarítmico de la función f, que es la la convolución de la solución fundamental con f, entonces podríamos expresar la solución como: &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2}\Phi(x-y)f(y)dy &amp;lt;/math&amp;gt; y formalmente tenemos que: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u(x)=\int_{\mathbb{R}^2}\Delta_x\Phi(x-y)f(y)dy=- \int_{\mathbb{R}^2}\delta_2f(y)dy=-f(x),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pero esto no es correcto ya que el laplaciano de la solución fundamental no es integrable. A pesar de no ser correcto nos da la intuición de que el potencial logarítmico podría ser una posible  solución del problema.&lt;br /&gt;
&lt;br /&gt;
Ahora para solucionar esto vamos a tomar f como la función característica de la bola de radio 1 ya que de esta manera obtenemos el siguietne teorema: (Remark 3.35 pag 150)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver esto con el ejemplo concreto en el que la función f es la función característica en la bola de radio 1.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF52.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
N1=300; N2=300; %Número de puntos&lt;br /&gt;
a=0; b=1; c=0; d=2*pi; %Extremos de los intervalos&lt;br /&gt;
h1=(b-a)/N1; h2=(d-c)/N2;&lt;br /&gt;
r=a:h1:b; theta=c:h2:d; %Particiones de r y theta&lt;br /&gt;
[rr,tt]=meshgrid(r,theta); &lt;br /&gt;
w1=ones(N1+1,1);                &lt;br /&gt;
w1(1)=1/2; w1(N1+1)=1/2;&lt;br /&gt;
w2=ones(N2+1,1);                 &lt;br /&gt;
w2(1)=1/2; w2(N2+1)=1/2;&lt;br /&gt;
x11=-1:2/100:1; % Partición de x_1&lt;br /&gt;
x21=-1:2/100:1; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        f=-log(sqrt((x11(j)-rr.*cos(tt)).^2+(x21(i)-rr.*sin(tt)).^2)).*rr; %Potencial logaritmico               &lt;br /&gt;
        u1(i,j)=h1*h2*w2'*f*w1/(2*pi); %Solución del método del trapecio en 2 variable&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos la solución&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11,x21, u1, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución con el potencial logarítmico');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF5_1.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Representación de la solución asintótica&lt;br /&gt;
&lt;br /&gt;
M=pi; %Area del circulo de radio 1&lt;br /&gt;
f=@(x1,x2) -M/(2*pi).*log(sqrt(x1.^2+x2.^2)); % Función que describe el comportamiento asintótico&lt;br /&gt;
&lt;br /&gt;
N=200; %Número de intervalos&lt;br /&gt;
a=-1; b=1;                     &lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
x11=a:h:b; %Partición de x_1&lt;br /&gt;
x21=a:h:b; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
u=zeros(length(x11),length(x21));&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        u(i,j)=f(x11(i),x21(j)); %Evaluamos f en la malla de puntos&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos el resultado&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11, x21, u, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución cuando x tienda a \infty');&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF53.jpg|400px|thumb|right]]&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71565</id>
		<title>Ecuación de Laplace y de Poisson (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71565"/>
				<updated>2024-04-19T17:43:09Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Fórmula de Poisson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar  la ecuación de Laplace y la ecuación de Poisson. Para ello vamos a calcular soluciones de distintas formas usando cosas como la fórmula de Poisson o el potencial logarítmico, graficándolas y modificando algunos de los parámetros.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Laplace=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la exactitud que tienen dos formas diferentes de resolver la ecuación de Laplace. Para hacer esto tomamos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta u=0,&amp;amp; x\in B_1\\&lt;br /&gt;
u=g,&amp;amp; x\in\partial B_1&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt; B_1\subset\mathbb{R}^2 &amp;lt;/math&amp;gt; la bola de radio 1 centrada en el (0,0).&lt;br /&gt;
&lt;br /&gt;
==Fórmula de Poisson==&lt;br /&gt;
&lt;br /&gt;
Una de las formas de resolver este tipo de problemas es mediante la fórmula de Poisson, que es: &amp;lt;math&amp;gt; u=\frac{R^2-|x|^2}{2\pi R}\int_{\partial B_R}\frac{g(\sigma)}{|x-\sigma|^2} d\sigma, &amp;lt;/math&amp;gt; donde R es el radio de la bola y &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; la distancia al centro de la bola.&lt;br /&gt;
&lt;br /&gt;
Para ver cómo funciona esta fórmula vamos a resolver el problema tomando &amp;lt;math&amp;gt; g(\theta)=max \{0,1-\frac{2}{\pi}|\theta-\pi|\}&amp;lt;/math&amp;gt;. Como esta función, que es la que representa las condiciones frontera, está en coordenadas polares vamos a expresar la fórmula de Poisson en polares.&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}\int_{0}^{2\pi}g(s)\frac{R^2-r^2}{R^2+r^2-2rRcos(s-\theta)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la fórmula expresada de esta manera, podemos aplicarla a nuestro problema tomando R=1 y sustituyendo g por nuestra función. Teniendo esto en cuenta vamos a resolver el problema realizando la integral mediante la [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals regla del trapecio] y a representar la solución.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF41.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calcular la solución de la ecuación de Laplace  en la bola de radio&lt;br /&gt;
% unidad usando la fórmula de Poisson. Con condición frontera la función g&lt;br /&gt;
&lt;br /&gt;
g = @(theta) max(0,1-2/pi*abs(theta-pi)); %Definimos la función g(theta)&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):0.9; %Partición en r (no llegamos hasta el borde de la bola)&lt;br /&gt;
&lt;br /&gt;
w = ones(N+1,1);                 &lt;br /&gt;
w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
u = zeros(length(r)+1,length(theta));&lt;br /&gt;
for j = 1:length(theta)&lt;br /&gt;
    for i = 1:length(r)&lt;br /&gt;
        f = g(theta)*(1-r(i).^2)./(1+r(i).^2-2*r(i)*cos(theta-theta(j))); %Función a integrar&lt;br /&gt;
        u(i,j) = h*w'*f'/(2*pi); %Fórmula de Poison usando la fórmula del trapecio para integrar.&lt;br /&gt;
    end&lt;br /&gt;
    u(length(r)+1,j) = g(theta(j)); %Añadimos la condicón frontera directamente&lt;br /&gt;
end&lt;br /&gt;
r(length(r)+1) = 1;&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, u, 'EdgeColor', 'none');&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;
En la imagen podemos observar que la fórmula de Poisson nos da problemas en la frontera, esto se debe al carácter singular de la integral cerca del borde. Para solucionar esto vamos a tomar directamente el valor de g en el borde de la bola. Al hacer esto obtenemos la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF411.jpg|400px|thumb|center| Sustituyendo g en el borde de la bola]]&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas podemos observar que efectivamente sustituir g en el borde hace que evitemos la singularidad de la integral en la frontera.&lt;br /&gt;
&lt;br /&gt;
Como hemos visto con este ejemplo la fórmula de Poisson tiene problemas para aproximar la solución cerca de la frontera. Por lo que para estudiar esto, vamos a tomar &amp;lt;math&amp;gt; g(x,y)=xy &amp;lt;/math&amp;gt; como condición frontera y &amp;lt;math&amp;gt; u(x,y)=xy &amp;lt;/math&amp;gt; como solución del problema para calcular los diferentes errores que genera la fórmula de Poisson. &lt;br /&gt;
&lt;br /&gt;
Para hacerlo vamos a tomar tanto u como g en coordenadas polares, ya que al estudiar el problema en una bola esto nos permite hacernos una mejor idea de lo que ocurre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
U(r,\theta)=r^2cos(\theta)sin(\theta)\\&lt;br /&gt;
U(1,\theta)=G(\theta)=cos(\theta)sin(\theta)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Primero vamos a tomar un punto &amp;quot;lejos&amp;quot; de la frontera &amp;lt;math&amp;gt; (r,\theta)=(0.9,\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo evoluciona el error, es decir, la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson en ese punto, en función de n. Siendo n el número que determina el número de intervalos en &amp;lt;math&amp;gt; 10^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por el ejemplo anterior, cabe esperar que la fórmula en este punto aproxime bien a la función ya que no es un punto cercano a la frontera, y por lo tanto el error vaya disminuyendo según aumenta el número de intervalos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF42.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral mediante&lt;br /&gt;
% el método del trapecio en función del tamaño de la discretización&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 8; %Discretización máxima: 10^N_max&lt;br /&gt;
err = zeros(N_max,1);&lt;br /&gt;
for m = 1:N_max&lt;br /&gt;
    N = 10^m; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f = g(theta)*(1-0.9.^2)./(1+0.9.^2-2*0.9*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u = h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (0.9,pi/4)&lt;br /&gt;
    &lt;br /&gt;
    % Valor de la solución exacta (x*y=R^2*cos(theta)*sin(theta))&lt;br /&gt;
    % en el punto (0.9, pi/4)&lt;br /&gt;
    exacta = 0.9^2*cos(pi/4)*sin(pi/4); &lt;br /&gt;
&lt;br /&gt;
    % Calculamos el error como la diferencia en valor absoluto entre&lt;br /&gt;
    % la solución exacta y la calculada con la fórmula de Poisson&lt;br /&gt;
    err(m) = abs(exacta-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,log10(err),color='b',LineWidth=1.5) %Dibujamos la gráfica del error en escala logarítmica&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('log_{10}(error(10^n))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado antes, al observar la gráfica vemos que el error va disminuyendo según aumenta n. Esto tiene sentido ya que cuantos más intervalos hay en la discretización más exacta va a ser la aproximación. También podemos observar que se estabiliza cuando llega aproximadamente a &amp;lt;math&amp;gt; n=3 &amp;lt;/math&amp;gt;, esto se debe a que con &amp;lt;math&amp;gt; 10^3 &amp;lt;/math&amp;gt; intervalos el método del trapecio ya aproxima lo suficientemente bien a la función original, lo que hace que aunque aumente el número de intervalos la aproximación no tenga mucho margen de mejor. Con esto hemos visto que en un punto que no esté cerca del borde la fórmula de Poisson va a funcionar bien. &lt;br /&gt;
&lt;br /&gt;
También podemos usar la fórmula del error máximo del método del trapecio para obtener una cota para el error y ver que los errores calculados numéricamente se encuentran por debajo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(n) \leq \left|-\frac{f’’(\xi)(b-a)^3}{12n^2} \right| &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt; es el intervalo de integración, &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; la función a integrar, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; el número de particiones de la discretización y &amp;lt;math&amp;gt; \xi &amp;lt;/math&amp;gt; un cierto valor entre &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt;. Para nuetro problema, &amp;lt;math&amp;gt;[a,b]=[0,2\pi]&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f(\theta)=\frac{(1-r^2) sen(\theta)cos(\theta)}{2\pi(1+r^2-2rcos(\alpha - \theta))}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Derivando &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; dos veces y maximizando su valor en &amp;lt;math&amp;gt;[0,2\pi]&amp;lt;/math&amp;gt;, obtenemos la siguiente cota:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;error(n) \leq \left|- \frac{\pi^2(r^6 - r^5 + 6 r^3 + r^2 -r +2) }{3 n^2(1-r)^5} \right|&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La dibujamos en función de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; junto con el error calculado numéricamente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Cota error.png|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Usando el vector err calculado en el anterior código, representamos la misma gráfica junto&lt;br /&gt;
% con la gráfica de la cota estimada del error&lt;br /&gt;
&lt;br /&gt;
%Definimos la cota del error estimada mediante la fórmula del trapecio&lt;br /&gt;
cota = @(n) abs(-pi^2*(r^6-r^5+6*r^3+r^2-r+2)./(3*(10.^(2*n))*(1-r)^5)); &lt;br /&gt;
&lt;br /&gt;
%Dibujamos las gráficas del error en escala logarítmica&lt;br /&gt;
hold on&lt;br /&gt;
plot(1:N_max,log10(err(:,1)),color='b',LineWidth=1.5)&lt;br /&gt;
plot(1:N_max,log10(cota(1:N_max)),color='r',LineWidth=1.5)&lt;br /&gt;
legend('Error absoluto', 'Cota del error'); % Leyenda&lt;br /&gt;
hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo se comporta el error según nos acercamos a la frontera. Para hacer esto vamos a tomar el punto &amp;lt;math&amp;gt; (r,\theta)=(1-10^{-n},\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo varía el error (la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson) cuando aumentamos la n, es decir, cuando nos vamos acercando a la frontera. Como hemos comentado anteriormente cabe esperar que al aumentar la n el error va a aumentar, ya que como hemos visto en el primer ejemplo cerca de la frontera la fórmula de Poisson da problemas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF421.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral según nos acercamos al&lt;br /&gt;
% borde de la región.&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 20;&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for n = 1:N_max&lt;br /&gt;
    N = 10^2; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f=g(theta)*(1-(1-10^(-n)).^2)./(1+(1-10^(-n)).^2-2*(1-10^(-n))*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u=h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (1-10^-n,pi/4)&lt;br /&gt;
    err(n)=abs((1-10^(-n))^2*cos(pi/4)*sin(pi/4)-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,err,color='b',LineWidth=1.5) %Dibujamos la gráfica del error&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('Error');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En la gráfica podemos ver cómo efectivamente el error para valores de n pequeños, es decir, puntos que están relativamente lejos de la frontera, el error es pequeño al igual que en el caso anterior. Por el contrario, según aumenta la n, es decir, según nos acercamos a la frontera el error aumenta, lo cual tiene sentido ya que como hemos comentado antes la fórmula de Poisson da problemas en la frontera.&lt;br /&gt;
&lt;br /&gt;
Además, podemos observar que el error se estabiliza aproximadamente en  &amp;lt;math&amp;gt; n=4 &amp;lt;/math&amp;gt;, esto se debe a que para este valor de n el punto ya esta suficientemente cerca de la frontera como para representar todo el error que se da en esta y por ello aunque nos acerquemos más a la frontera (aumente n) el error se mantiene estable en  &amp;lt;math&amp;gt; 0.5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Serie de Fourier==&lt;br /&gt;
La otra forma que vamos a ver para resolver la ecuación de Laplace es mediante [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) series de Fourier]. Para hacer esto vamos a tomar nuestro problema en coordenadas polares:&lt;br /&gt;
&lt;br /&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,&amp;amp; r\in(0,1),\theta\in[0,2\pi]\\&lt;br /&gt;
U(1,\theta)=G(\theta)=sin(\theta)cos(\theta),&amp;amp; \theta\in[0,2\pi]&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y a aplicar el método de separación de variables. Al hacer esto obtenemos que: &amp;lt;math&amp;gt; U(r,\theta)=\frac{a_0}{2}+\sum_{k=1}^\infty a_kr^kcos(k\theta)+b_kr^ksin(k\theta).&amp;lt;/math&amp;gt;. Para que esto sea solución falta hacer que cumpla la condición frontera, para ello vamos a tomar la serie de Fourier de &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; L^2([-\pi,\pi]) &amp;lt;/math&amp;gt;, que es &amp;lt;math&amp;gt; G(\theta)=\frac{\alpha_0}{2}+\sum_{k=1}^\infty \alpha_kcos(k\theta)+\beta_ksin(k\theta)&amp;lt;/math&amp;gt; y a igualar ambas series cuando r=1. Al hacer esto vemos que para que ambas series sean iguale los coeficientes tienen que ser iguales, por lo que vamos a calcular los coeficientes de  &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; y a ver su equivalencia con los de  &amp;lt;math&amp;gt; U &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; a_0=\alpha_0=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)d\theta \quad \quad \quad a_k=\alpha_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)cos(k\theta)d\theta \quad \quad \quad b_k=\beta_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)sin(k\theta)d\theta. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al realizar estas integrales obtenemos que &amp;lt;math&amp;gt; a_0=0,a_k=0\forall k &amp;lt;/math&amp;gt; y todos los &amp;lt;math&amp;gt; b_k &amp;lt;/math&amp;gt; son 0 excepto &amp;lt;math&amp;gt; b_2=\frac{1}{2} &amp;lt;/math&amp;gt;. Por lo que la solución nos queda de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}sin(2\theta) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a dibujar la solución, cuya gráfica va a ser exacta ya que la serie tiene un único término.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF43.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Dibujamos la solución calculada por serie de Fourier&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^(2).*sin(2.*theta)/2; %Solución de la ecuación&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):1; %Partición en r&lt;br /&gt;
for j = 1:N+1&lt;br /&gt;
    for i = 1:N+1&lt;br /&gt;
        U(i,j) = u(r(i),theta(j));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, U, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('y');&lt;br /&gt;
zlabel('u(x, y)');&lt;br /&gt;
title('Solución exacta calculada por serie de Fourier');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al haber resuelto el problema por ambos métodos, observamos que este último nos da la solución de forma exacta, por lo que en este caso va a ser más efectivo que el anterior. Esto no tendría porque ser así en todos los casos ya que la serie de Fourier para otra función G distinta puede tener infinitos términos, lo que haría que la aproximación no sea exacta, pero aun así sería más exacta que con el método anterior en los puntos cercanos a la forntera.&lt;br /&gt;
&lt;br /&gt;
==Desigualdad de Harnack==&lt;br /&gt;
&lt;br /&gt;
En esta sección vamos a usar la desigualdad de Harnack para obtener la región que contiene a todas las soluciones armónicas de la ecuación de Laplace que valen lo mismo en el origen que la solución que hemos calculado.&lt;br /&gt;
&lt;br /&gt;
La desigualdad de Harnack establece que dada una función &amp;lt;math&amp;gt; u\geq 0 &amp;lt;/math&amp;gt; armónica en &amp;lt;math&amp;gt; \Omega \subset \mathbb{R}^n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B_R(z) \subset \Omega &amp;lt;/math&amp;gt; con  &amp;lt;math&amp;gt; z \in \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)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para poder aplicarla a nuestro problema, vamos a tomar v=U+M, siendo &amp;lt;math&amp;gt; U(r,\theta)=\frac{r^2}{2R^2}sin(2\theta) &amp;lt;/math&amp;gt; la solución al problema en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;, y M el mínimo de &amp;lt;math&amp;gt; G(\theta)=R^2sin(\theta)cos(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;. Al hacer esto v va a ser una función armónica positiva a la que le podemos aplicar la desigualdad de Harnack.&lt;br /&gt;
&lt;br /&gt;
Primero vamos a aplicar la desigualdad variando el radio de la bola y a observar como varia la región que determina en función de esto. Para ello vamos a representar las cotas en escala logarítmica, lo cual nos permite observar mejor su comportamiento.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Representamos las cotas que nos da la desigualdad de Harnack&lt;br /&gt;
% para nuestro ejemplo.&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^2*sin(theta).*cos(theta); %Definimos la función u(r,theta)&lt;br /&gt;
g=@(theta,r) r^2*sin(theta).*cos(theta); %Definimos la función g&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
R = [1,2,10]; %Radios de las bolas&lt;br /&gt;
n = 2; %Dimensión del espacio&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
C=[&amp;quot;#0000FF&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#00FF00&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
for i=1:3&lt;br /&gt;
    r = 0:N^(-1):R(i); %Partición en r&lt;br /&gt;
    gR=g(theta,R(i));&lt;br /&gt;
    M1=min(gR); %Calculamos el mínimo de g en la frontera de la bola de radio R&lt;br /&gt;
    v1=@(r,theta) u(r,theta)-M1;&lt;br /&gt;
    A=@(r)R(i).^(n-2).*(R(i)-r)./(R(i)+r).^(n-1)*v1(0,0);&lt;br /&gt;
    B=@(r)R(i).^(n-2).*(R(i)+r)./(R(i)-r).^(n-1)*v1(0,0);&lt;br /&gt;
&lt;br /&gt;
    %Graficamos las cotas para los diferentes radios&lt;br /&gt;
    subplot(1,3,i)&lt;br /&gt;
    plot(r,log10(A(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(r,log10(B(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    axis([0 10,-3 6])&lt;br /&gt;
    xlabel('r');&lt;br /&gt;
    ylabel('log(Cotas)');&lt;br /&gt;
    title(['Cotas para r= ' num2str(R(i))]);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF44_1.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Lo más destacable en las 3 gráficas es que en todas ellas ambas restricciones se van al infinito cunado llegan al radio correspondiente a la bola en la que están calculadas. Esto tiene sentido ya que podemos observar que el denominador de la cota superior se anula cuando r=R y por lo tanto se va a infinito y su logaritmo también, y la cota inferior es 0 cuando r=R y por tanto su logaritmo se va a menos infinito. También podemos observar, que debido a esto, el pico que forman ambas restricciones es más estrecho cuando aumentamos el radio de la bola.&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo varían las restricciones si variamos la dimensión.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF442.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Al observar estas gráficas podemos observar que independientemente del radio cuando aumentamos la dimensión aumenta la región que definen ambas restricciones. Además, en n=3 el comportamiento sigue siendo el mismo que el comentado para n=2.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Poisson=&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a buscar una solución de la ecuación de Poisson en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u=f,\quad x\in\mathbb{R}^2. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ello vamos a utilizar la solución fundamental del laplaciano, que en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt; se define como &amp;lt;math&amp;gt; \Phi(x)=-\frac{1}{2\pi}log|x| &amp;lt;/math&amp;gt; y cumple que &amp;lt;math&amp;gt; \Delta \Phi(x)=-\delta_2(x) &amp;lt;/math&amp;gt;. Donde &amp;lt;math&amp;gt;\delta_2(x) &amp;lt;/math&amp;gt; es la delta de Dirac en dimensión 2.&lt;br /&gt;
&lt;br /&gt;
Si ahora consideramos el potencial logarítmico de la función f, que es la la convolución de la solución fundamental con f, entonces podríamos expresar la solución como: &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2}\Phi(x-y)f(y)dy &amp;lt;/math&amp;gt; y formalmente tenemos que: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u(x)=\int_{\mathbb{R}^2}\Delta_x\Phi(x-y)f(y)dy=- \int_{\mathbb{R}^2}\delta_2f(y)dy=-f(x),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pero esto no es correcto ya que el laplaciano de la solución fundamental no es integrable. A pesar de no ser correcto nos da la intuición de que el potencial logarítmico podría ser una posible  solución del problema.&lt;br /&gt;
&lt;br /&gt;
Ahora para solucionar esto vamos a tomar f como la función característica de la bola de radio 1 ya que de esta manera obtenemos el siguietne teorema: (Remark 3.35 pag 150)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver esto con el ejemplo concreto en el que la función f es la función característica en la bola de radio 1.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF52.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
N1=300; N2=300; %Número de puntos&lt;br /&gt;
a=0; b=1; c=0; d=2*pi; %Extremos de los intervalos&lt;br /&gt;
h1=(b-a)/N1; h2=(d-c)/N2;&lt;br /&gt;
r=a:h1:b; theta=c:h2:d; %Particiones de r y theta&lt;br /&gt;
[rr,tt]=meshgrid(r,theta); &lt;br /&gt;
w1=ones(N1+1,1);                &lt;br /&gt;
w1(1)=1/2; w1(N1+1)=1/2;&lt;br /&gt;
w2=ones(N2+1,1);                 &lt;br /&gt;
w2(1)=1/2; w2(N2+1)=1/2;&lt;br /&gt;
x11=-1:2/100:1; % Partición de x_1&lt;br /&gt;
x21=-1:2/100:1; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        f=-log(sqrt((x11(j)-rr.*cos(tt)).^2+(x21(i)-rr.*sin(tt)).^2)).*rr; %Potencial logaritmico               &lt;br /&gt;
        u1(i,j)=h1*h2*w2'*f*w1/(2*pi); %Solución del método del trapecio en 2 variable&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos la solución&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11,x21, u1, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución con el potencial logarítmico');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF5_1.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Representación de la solución asintótica&lt;br /&gt;
&lt;br /&gt;
M=pi; %Area del circulo de radio 1&lt;br /&gt;
f=@(x1,x2) -M/(2*pi).*log(sqrt(x1.^2+x2.^2)); % Función que describe el comportamiento asintótico&lt;br /&gt;
&lt;br /&gt;
N=200; %Número de intervalos&lt;br /&gt;
a=-1; b=1;                     &lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
x11=a:h:b; %Partición de x_1&lt;br /&gt;
x21=a:h:b; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
u=zeros(length(x11),length(x21));&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        u(i,j)=f(x11(i),x21(j)); %Evaluamos f en la malla de puntos&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos el resultado&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11, x21, u, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución cuando x tienda a \infty');&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF53.jpg|400px|thumb|right]]&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71563</id>
		<title>Ecuación de Laplace y de Poisson (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71563"/>
				<updated>2024-04-19T17:40:17Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Fórmula de Poisson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar  la ecuación de Laplace y la ecuación de Poisson. Para ello vamos a calcular soluciones de distintas formas usando cosas como la fórmula de Poisson o el potencial logarítmico, graficándolas y modificando algunos de los parámetros.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Laplace=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la exactitud que tienen dos formas diferentes de resolver la ecuación de Laplace. Para hacer esto tomamos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta u=0,&amp;amp; x\in B_1\\&lt;br /&gt;
u=g,&amp;amp; x\in\partial B_1&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt; B_1\subset\mathbb{R}^2 &amp;lt;/math&amp;gt; la bola de radio 1 centrada en el (0,0).&lt;br /&gt;
&lt;br /&gt;
==Fórmula de Poisson==&lt;br /&gt;
&lt;br /&gt;
Una de las formas de resolver este tipo de problemas es mediante la fórmula de Poisson, que es: &amp;lt;math&amp;gt; u=\frac{R^2-|x|^2}{2\pi R}\int_{\partial B_R}\frac{g(\sigma)}{|x-\sigma|^2} d\sigma, &amp;lt;/math&amp;gt; donde R es el radio de la bola y &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; la distancia al centro de la bola.&lt;br /&gt;
&lt;br /&gt;
Para ver cómo funciona esta fórmula vamos a resolver el problema tomando &amp;lt;math&amp;gt; g(\theta)=max \{0,1-\frac{2}{\pi}|\theta-\pi|\}&amp;lt;/math&amp;gt;. Como esta función, que es la que representa las condiciones frontera, está en coordenadas polares vamos a expresar la fórmula de Poisson en polares.&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}\int_{0}^{2\pi}g(s)\frac{R^2-r^2}{R^2+r^2-2rRcos(s-\theta)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la fórmula expresada de esta manera, podemos aplicarla a nuestro problema tomando R=1 y sustituyendo g por nuestra función. Teniendo esto en cuenta vamos a resolver el problema realizando la integral mediante la [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals regla del trapecio] y a representar la solución.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF41.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calcular la solución de la ecuación de Laplace  en la bola de radio&lt;br /&gt;
% unidad usando la fórmula de Poisson. Con condición frontera la función g&lt;br /&gt;
&lt;br /&gt;
g = @(theta) max(0,1-2/pi*abs(theta-pi)); %Definimos la función g(theta)&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):0.9; %Partición en r (no llegamos hasta el borde de la bola)&lt;br /&gt;
&lt;br /&gt;
w = ones(N+1,1);                 &lt;br /&gt;
w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
u = zeros(length(r)+1,length(theta));&lt;br /&gt;
for j = 1:length(theta)&lt;br /&gt;
    for i = 1:length(r)&lt;br /&gt;
        f = g(theta)*(1-r(i).^2)./(1+r(i).^2-2*r(i)*cos(theta-theta(j))); %Función a integrar&lt;br /&gt;
        u(i,j) = h*w'*f'/(2*pi); %Fórmula de Poison usando la fórmula del trapecio para integrar.&lt;br /&gt;
    end&lt;br /&gt;
    u(length(r)+1,j) = g(theta(j)); %Añadimos la condicón frontera directamente&lt;br /&gt;
end&lt;br /&gt;
r(length(r)+1) = 1;&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, u, 'EdgeColor', 'none');&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;
En la imagen podemos observar que la fórmula de Poisson nos da problemas en la frontera, esto se debe al carácter singular de la integral cerca del borde. Para solucionar esto vamos a tomar directamente el valor de g en el borde de la bola. Al hacer esto obtenemos la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF411.jpg|400px|thumb|center| Sustituyendo g en el borde de la bola]]&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas podemos observar que efectivamente sustituir g en el borde hace que evitemos la singularidad de la integral en la frontera.&lt;br /&gt;
&lt;br /&gt;
Como hemos visto con este ejemplo la fórmula de Poisson tiene problemas para aproximar la solución cerca de la frontera. Por lo que para estudiar esto, vamos a tomar &amp;lt;math&amp;gt; g(x,y)=xy &amp;lt;/math&amp;gt; como condición frontera y &amp;lt;math&amp;gt; u(x,y)=xy &amp;lt;/math&amp;gt; como solución del problema para calcular los diferentes errores que genera la fórmula de Poisson. &lt;br /&gt;
&lt;br /&gt;
Para hacerlo vamos a tomar tanto u como g en coordenadas polares, ya que al estudiar el problema en una bola esto nos permite hacernos una mejor idea de lo que ocurre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
U(r,\theta)=r^2cos(\theta)sin(\theta)\\&lt;br /&gt;
U(1,\theta)=G(\theta)=cos(\theta)sin(\theta)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Primero vamos a tomar un punto &amp;quot;lejos&amp;quot; de la frontera &amp;lt;math&amp;gt; (r,\theta)=(0.9,\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo evoluciona el error, es decir, la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson en ese punto, en función de n. Siendo n el número que determina el número de intervalos en &amp;lt;math&amp;gt; 10^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por el ejemplo anterior, cabe esperar que la fórmula en este punto aproxime bien a la función ya que no es un punto cercano a la frontera, y por lo tanto el error vaya disminuyendo según aumenta el número de intervalos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF42.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral mediante&lt;br /&gt;
% el método del trapecio en función del tamaño de la discretización&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 8; %Discretización máxima: 10^N_max&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for m = 1:N_max&lt;br /&gt;
    N = 10^m; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f = g(theta)*(1-0.9.^2)./(1+0.9.^2-2*0.9*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u = h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (0.9,pi/4)&lt;br /&gt;
    &lt;br /&gt;
    % Valor de la solución exacta (x*y=R^2*cos(theta)*sin(theta))&lt;br /&gt;
    % en el punto (0.9, pi/4)&lt;br /&gt;
    exacta = 0.9^2*cos(pi/4)*sin(pi/4); &lt;br /&gt;
&lt;br /&gt;
    % Calculamos el error como la diferencia en valor absoluto entre&lt;br /&gt;
    % la solución exacta y la calculada con la fórmula de Poisson&lt;br /&gt;
    err(m) = abs(exacta-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,log10(err),color='b',LineWidth=1.5) %Dibujamos la gráfica del error en escala logarítmica&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('log_{10}(error(10^n))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado antes, al observar la gráfica vemos que el error va disminuyendo según aumenta n. Esto tiene sentido ya que cuantos más intervalos hay en la discretización más exacta va a ser la aproximación. También podemos observar que se estabiliza cuando llega aproximadamente a &amp;lt;math&amp;gt; n=3 &amp;lt;/math&amp;gt;, esto se debe a que con &amp;lt;math&amp;gt; 10^3 &amp;lt;/math&amp;gt; intervalos el método del trapecio ya aproxima lo suficientemente bien a la función original, lo que hace que aunque aumente el número de intervalos la aproximación no tenga mucho margen de mejor. Con esto hemos visto que en un punto que no esté cerca del borde la fórmula de Poisson va a funcionar bien. &lt;br /&gt;
&lt;br /&gt;
También podemos usar la fórmula del error máximo del método del trapecio para obtener una cota para el error y ver que los errores calculados numéricamente se encuentran por debajo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(n) \leq \left|-\frac{f’’(\xi)(b-a)^3}{12n^2} \right| &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt; es el intervalo de integración, &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; la función a integrar, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; el número de particiones de la discretización y &amp;lt;math&amp;gt; \xi &amp;lt;/math&amp;gt; un cierto valor entre &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt;. Para nuetro problema, &amp;lt;math&amp;gt;[a,b]=[0,2\pi]&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f(\theta)=\frac{(1-r^2) sen(\theta)cos(\theta)}{2\pi(1+r^2-2rcos(\alpha - \theta))}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Derivando &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; dos veces y maximizando su valor en &amp;lt;math&amp;gt;[0,2\pi]&amp;lt;/math&amp;gt;, obtenemos la siguiente cota:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;error(n) \leq \left|- \frac{\pi^2(r^6 - r^5 + 6 r^3 + r^2 -r +2) }{3 n^2(1-r)^5} \right|&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La dibujamos en función de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; junto con el error calculado numéricamente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Cota error.png|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral según nos acercamos al&lt;br /&gt;
% borde de la región.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo se comporta el error según nos acercamos a la frontera. Para hacer esto vamos a tomar el punto &amp;lt;math&amp;gt; (r,\theta)=(1-10^{-n},\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo varía el error (la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson) cuando aumentamos la n, es decir, cuando nos vamos acercando a la frontera. Como hemos comentado anteriormente cabe esperar que al aumentar la n el error va a aumentar, ya que como hemos visto en el primer ejemplo cerca de la frontera la fórmula de Poisson da problemas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF421.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral según nos acercamos al&lt;br /&gt;
% borde de la región.&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 20;&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for n = 1:N_max&lt;br /&gt;
    N = 10^2; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f=g(theta)*(1-(1-10^(-n)).^2)./(1+(1-10^(-n)).^2-2*(1-10^(-n))*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u=h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (1-10^-n,pi/4)&lt;br /&gt;
    err(n)=abs((1-10^(-n))^2*cos(pi/4)*sin(pi/4)-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,err,color='b',LineWidth=1.5) %Dibujamos la gráfica del error&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('Error');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En la gráfica podemos ver cómo efectivamente el error para valores de n pequeños, es decir, puntos que están relativamente lejos de la frontera, el error es pequeño al igual que en el caso anterior. Por el contrario, según aumenta la n, es decir, según nos acercamos a la frontera el error aumenta, lo cual tiene sentido ya que como hemos comentado antes la fórmula de Poisson da problemas en la frontera.&lt;br /&gt;
&lt;br /&gt;
Además, podemos observar que el error se estabiliza aproximadamente en  &amp;lt;math&amp;gt; n=4 &amp;lt;/math&amp;gt;, esto se debe a que para este valor de n el punto ya esta suficientemente cerca de la frontera como para representar todo el error que se da en esta y por ello aunque nos acerquemos más a la frontera (aumente n) el error se mantiene estable en  &amp;lt;math&amp;gt; 0.5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Serie de Fourier==&lt;br /&gt;
La otra forma que vamos a ver para resolver la ecuación de Laplace es mediante [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) series de Fourier]. Para hacer esto vamos a tomar nuestro problema en coordenadas polares:&lt;br /&gt;
&lt;br /&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,&amp;amp; r\in(0,1),\theta\in[0,2\pi]\\&lt;br /&gt;
U(1,\theta)=G(\theta)=sin(\theta)cos(\theta),&amp;amp; \theta\in[0,2\pi]&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y a aplicar el método de separación de variables. Al hacer esto obtenemos que: &amp;lt;math&amp;gt; U(r,\theta)=\frac{a_0}{2}+\sum_{k=1}^\infty a_kr^kcos(k\theta)+b_kr^ksin(k\theta).&amp;lt;/math&amp;gt;. Para que esto sea solución falta hacer que cumpla la condición frontera, para ello vamos a tomar la serie de Fourier de &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; L^2([-\pi,\pi]) &amp;lt;/math&amp;gt;, que es &amp;lt;math&amp;gt; G(\theta)=\frac{\alpha_0}{2}+\sum_{k=1}^\infty \alpha_kcos(k\theta)+\beta_ksin(k\theta)&amp;lt;/math&amp;gt; y a igualar ambas series cuando r=1. Al hacer esto vemos que para que ambas series sean iguale los coeficientes tienen que ser iguales, por lo que vamos a calcular los coeficientes de  &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; y a ver su equivalencia con los de  &amp;lt;math&amp;gt; U &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; a_0=\alpha_0=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)d\theta \quad \quad \quad a_k=\alpha_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)cos(k\theta)d\theta \quad \quad \quad b_k=\beta_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)sin(k\theta)d\theta. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al realizar estas integrales obtenemos que &amp;lt;math&amp;gt; a_0=0,a_k=0\forall k &amp;lt;/math&amp;gt; y todos los &amp;lt;math&amp;gt; b_k &amp;lt;/math&amp;gt; son 0 excepto &amp;lt;math&amp;gt; b_2=\frac{1}{2} &amp;lt;/math&amp;gt;. Por lo que la solución nos queda de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}sin(2\theta) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a dibujar la solución, cuya gráfica va a ser exacta ya que la serie tiene un único término.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF43.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Dibujamos la solución calculada por serie de Fourier&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^(2).*sin(2.*theta)/2; %Solución de la ecuación&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):1; %Partición en r&lt;br /&gt;
for j = 1:N+1&lt;br /&gt;
    for i = 1:N+1&lt;br /&gt;
        U(i,j) = u(r(i),theta(j));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, U, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('y');&lt;br /&gt;
zlabel('u(x, y)');&lt;br /&gt;
title('Solución exacta calculada por serie de Fourier');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al haber resuelto el problema por ambos métodos, observamos que este último nos da la solución de forma exacta, por lo que en este caso va a ser más efectivo que el anterior. Esto no tendría porque ser así en todos los casos ya que la serie de Fourier para otra función G distinta puede tener infinitos términos, lo que haría que la aproximación no sea exacta, pero aun así sería más exacta que con el método anterior en los puntos cercanos a la forntera.&lt;br /&gt;
&lt;br /&gt;
==Desigualdad de Harnack==&lt;br /&gt;
&lt;br /&gt;
En esta sección vamos a usar la desigualdad de Harnack para obtener la región que contiene a todas las soluciones armónicas de la ecuación de Laplace que valen lo mismo en el origen que la solución que hemos calculado.&lt;br /&gt;
&lt;br /&gt;
La desigualdad de Harnack establece que dada una función &amp;lt;math&amp;gt; u\geq 0 &amp;lt;/math&amp;gt; armónica en &amp;lt;math&amp;gt; \Omega \subset \mathbb{R}^n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B_R(z) \subset \Omega &amp;lt;/math&amp;gt; con  &amp;lt;math&amp;gt; z \in \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)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para poder aplicarla a nuestro problema, vamos a tomar v=U+M, siendo &amp;lt;math&amp;gt; U(r,\theta)=\frac{r^2}{2R^2}sin(2\theta) &amp;lt;/math&amp;gt; la solución al problema en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;, y M el mínimo de &amp;lt;math&amp;gt; G(\theta)=R^2sin(\theta)cos(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;. Al hacer esto v va a ser una función armónica positiva a la que le podemos aplicar la desigualdad de Harnack.&lt;br /&gt;
&lt;br /&gt;
Primero vamos a aplicar la desigualdad variando el radio de la bola y a observar como varia la región que determina en función de esto. Para ello vamos a representar las cotas en escala logarítmica, lo cual nos permite observar mejor su comportamiento.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Representamos las cotas que nos da la desigualdad de Harnack&lt;br /&gt;
% para nuestro ejemplo.&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^2*sin(theta).*cos(theta); %Definimos la función u(r,theta)&lt;br /&gt;
g=@(theta,r) r^2*sin(theta).*cos(theta); %Definimos la función g&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
R = [1,2,10]; %Radios de las bolas&lt;br /&gt;
n = 2; %Dimensión del espacio&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
C=[&amp;quot;#0000FF&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#00FF00&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
for i=1:3&lt;br /&gt;
    r = 0:N^(-1):R(i); %Partición en r&lt;br /&gt;
    gR=g(theta,R(i));&lt;br /&gt;
    M1=min(gR); %Calculamos el mínimo de g en la frontera de la bola de radio R&lt;br /&gt;
    v1=@(r,theta) u(r,theta)-M1;&lt;br /&gt;
    A=@(r)R(i).^(n-2).*(R(i)-r)./(R(i)+r).^(n-1)*v1(0,0);&lt;br /&gt;
    B=@(r)R(i).^(n-2).*(R(i)+r)./(R(i)-r).^(n-1)*v1(0,0);&lt;br /&gt;
&lt;br /&gt;
    %Graficamos las cotas para los diferentes radios&lt;br /&gt;
    subplot(1,3,i)&lt;br /&gt;
    plot(r,log10(A(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(r,log10(B(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    axis([0 10,-3 6])&lt;br /&gt;
    xlabel('r');&lt;br /&gt;
    ylabel('log(Cotas)');&lt;br /&gt;
    title(['Cotas para r= ' num2str(R(i))]);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF44_1.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Lo más destacable en las 3 gráficas es que en todas ellas ambas restricciones se van al infinito cunado llegan al radio correspondiente a la bola en la que están calculadas. Esto tiene sentido ya que podemos observar que el denominador de la cota superior se anula cuando r=R y por lo tanto se va a infinito y su logaritmo también, y la cota inferior es 0 cuando r=R y por tanto su logaritmo se va a menos infinito. También podemos observar, que debido a esto, el pico que forman ambas restricciones es más estrecho cuando aumentamos el radio de la bola.&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo varían las restricciones si variamos la dimensión.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF442.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Al observar estas gráficas podemos observar que independientemente del radio cuando aumentamos la dimensión aumenta la región que definen ambas restricciones. Además, en n=3 el comportamiento sigue siendo el mismo que el comentado para n=2.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Poisson=&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a buscar una solución de la ecuación de Poisson en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u=f,\quad x\in\mathbb{R}^2. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ello vamos a utilizar la solución fundamental del laplaciano, que en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt; se define como &amp;lt;math&amp;gt; \Phi(x)=-\frac{1}{2\pi}log|x| &amp;lt;/math&amp;gt; y cumple que &amp;lt;math&amp;gt; \Delta \Phi(x)=-\delta_2(x) &amp;lt;/math&amp;gt;. Donde &amp;lt;math&amp;gt;\delta_2(x) &amp;lt;/math&amp;gt; es la delta de Dirac en dimensión 2.&lt;br /&gt;
&lt;br /&gt;
Si ahora consideramos el potencial logarítmico de la función f, que es la la convolución de la solución fundamental con f, entonces podríamos expresar la solución como: &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2}\Phi(x-y)f(y)dy &amp;lt;/math&amp;gt; y formalmente tenemos que: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u(x)=\int_{\mathbb{R}^2}\Delta_x\Phi(x-y)f(y)dy=- \int_{\mathbb{R}^2}\delta_2f(y)dy=-f(x),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pero esto no es correcto ya que el laplaciano de la solución fundamental no es integrable. A pesar de no ser correcto nos da la intuición de que el potencial logarítmico podría ser una posible  solución del problema.&lt;br /&gt;
&lt;br /&gt;
Ahora para solucionar esto vamos a tomar f como la función característica de la bola de radio 1 ya que de esta manera obtenemos el siguietne teorema: (Remark 3.35 pag 150)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver esto con el ejemplo concreto en el que la función f es la función característica en la bola de radio 1.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF52.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
N1=300; N2=300; %Número de puntos&lt;br /&gt;
a=0; b=1; c=0; d=2*pi; %Extremos de los intervalos&lt;br /&gt;
h1=(b-a)/N1; h2=(d-c)/N2;&lt;br /&gt;
r=a:h1:b; theta=c:h2:d; %Particiones de r y theta&lt;br /&gt;
[rr,tt]=meshgrid(r,theta); &lt;br /&gt;
w1=ones(N1+1,1);                &lt;br /&gt;
w1(1)=1/2; w1(N1+1)=1/2;&lt;br /&gt;
w2=ones(N2+1,1);                 &lt;br /&gt;
w2(1)=1/2; w2(N2+1)=1/2;&lt;br /&gt;
x11=-1:2/100:1; % Partición de x_1&lt;br /&gt;
x21=-1:2/100:1; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        f=-log(sqrt((x11(j)-rr.*cos(tt)).^2+(x21(i)-rr.*sin(tt)).^2)).*rr; %Potencial logaritmico               &lt;br /&gt;
        u1(i,j)=h1*h2*w2'*f*w1/(2*pi); %Solución del método del trapecio en 2 variable&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos la solución&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11,x21, u1, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución con el potencial logarítmico');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF5_1.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Representación de la solución asintótica&lt;br /&gt;
&lt;br /&gt;
M=pi; %Area del circulo de radio 1&lt;br /&gt;
f=@(x1,x2) -M/(2*pi).*log(sqrt(x1.^2+x2.^2)); % Función que describe el comportamiento asintótico&lt;br /&gt;
&lt;br /&gt;
N=200; %Número de intervalos&lt;br /&gt;
a=-1; b=1;                     &lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
x11=a:h:b; %Partición de x_1&lt;br /&gt;
x21=a:h:b; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
u=zeros(length(x11),length(x21));&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        u(i,j)=f(x11(i),x21(j)); %Evaluamos f en la malla de puntos&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos el resultado&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11, x21, u, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución cuando x tienda a \infty');&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF53.jpg|400px|thumb|right]]&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Cota_error.png&amp;diff=71562</id>
		<title>Archivo:Cota error.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Cota_error.png&amp;diff=71562"/>
				<updated>2024-04-19T17:38:54Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71561</id>
		<title>Ecuación de Laplace y de Poisson (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71561"/>
				<updated>2024-04-19T17:38:15Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Fórmula de Poisson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar  la ecuación de Laplace y la ecuación de Poisson. Para ello vamos a calcular soluciones de distintas formas usando cosas como la fórmula de Poisson o el potencial logarítmico, graficándolas y modificando algunos de los parámetros.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Laplace=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la exactitud que tienen dos formas diferentes de resolver la ecuación de Laplace. Para hacer esto tomamos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta u=0,&amp;amp; x\in B_1\\&lt;br /&gt;
u=g,&amp;amp; x\in\partial B_1&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt; B_1\subset\mathbb{R}^2 &amp;lt;/math&amp;gt; la bola de radio 1 centrada en el (0,0).&lt;br /&gt;
&lt;br /&gt;
==Fórmula de Poisson==&lt;br /&gt;
&lt;br /&gt;
Una de las formas de resolver este tipo de problemas es mediante la fórmula de Poisson, que es: &amp;lt;math&amp;gt; u=\frac{R^2-|x|^2}{2\pi R}\int_{\partial B_R}\frac{g(\sigma)}{|x-\sigma|^2} d\sigma, &amp;lt;/math&amp;gt; donde R es el radio de la bola y &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; la distancia al centro de la bola.&lt;br /&gt;
&lt;br /&gt;
Para ver cómo funciona esta fórmula vamos a resolver el problema tomando &amp;lt;math&amp;gt; g(\theta)=max \{0,1-\frac{2}{\pi}|\theta-\pi|\}&amp;lt;/math&amp;gt;. Como esta función, que es la que representa las condiciones frontera, está en coordenadas polares vamos a expresar la fórmula de Poisson en polares.&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}\int_{0}^{2\pi}g(s)\frac{R^2-r^2}{R^2+r^2-2rRcos(s-\theta)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la fórmula expresada de esta manera, podemos aplicarla a nuestro problema tomando R=1 y sustituyendo g por nuestra función. Teniendo esto en cuenta vamos a resolver el problema realizando la integral mediante la [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals regla del trapecio] y a representar la solución.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF41.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calcular la solución de la ecuación de Laplace  en la bola de radio&lt;br /&gt;
% unidad usando la fórmula de Poisson. Con condición frontera la función g&lt;br /&gt;
&lt;br /&gt;
g = @(theta) max(0,1-2/pi*abs(theta-pi)); %Definimos la función g(theta)&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):0.9; %Partición en r (no llegamos hasta el borde de la bola)&lt;br /&gt;
&lt;br /&gt;
w = ones(N+1,1);                 &lt;br /&gt;
w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
u = zeros(length(r)+1,length(theta));&lt;br /&gt;
for j = 1:length(theta)&lt;br /&gt;
    for i = 1:length(r)&lt;br /&gt;
        f = g(theta)*(1-r(i).^2)./(1+r(i).^2-2*r(i)*cos(theta-theta(j))); %Función a integrar&lt;br /&gt;
        u(i,j) = h*w'*f'/(2*pi); %Fórmula de Poison usando la fórmula del trapecio para integrar.&lt;br /&gt;
    end&lt;br /&gt;
    u(length(r)+1,j) = g(theta(j)); %Añadimos la condicón frontera directamente&lt;br /&gt;
end&lt;br /&gt;
r(length(r)+1) = 1;&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, u, 'EdgeColor', 'none');&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;
En la imagen podemos observar que la fórmula de Poisson nos da problemas en la frontera, esto se debe al carácter singular de la integral cerca del borde. Para solucionar esto vamos a tomar directamente el valor de g en el borde de la bola. Al hacer esto obtenemos la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF411.jpg|400px|thumb|center| Sustituyendo g en el borde de la bola]]&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas podemos observar que efectivamente sustituir g en el borde hace que evitemos la singularidad de la integral en la frontera.&lt;br /&gt;
&lt;br /&gt;
Como hemos visto con este ejemplo la fórmula de Poisson tiene problemas para aproximar la solución cerca de la frontera. Por lo que para estudiar esto, vamos a tomar &amp;lt;math&amp;gt; g(x,y)=xy &amp;lt;/math&amp;gt; como condición frontera y &amp;lt;math&amp;gt; u(x,y)=xy &amp;lt;/math&amp;gt; como solución del problema para calcular los diferentes errores que genera la fórmula de Poisson. &lt;br /&gt;
&lt;br /&gt;
Para hacerlo vamos a tomar tanto u como g en coordenadas polares, ya que al estudiar el problema en una bola esto nos permite hacernos una mejor idea de lo que ocurre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
U(r,\theta)=r^2cos(\theta)sin(\theta)\\&lt;br /&gt;
U(1,\theta)=G(\theta)=cos(\theta)sin(\theta)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Primero vamos a tomar un punto &amp;quot;lejos&amp;quot; de la frontera &amp;lt;math&amp;gt; (r,\theta)=(0.9,\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo evoluciona el error, es decir, la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson en ese punto, en función de n. Siendo n el número que determina el número de intervalos en &amp;lt;math&amp;gt; 10^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por el ejemplo anterior, cabe esperar que la fórmula en este punto aproxime bien a la función ya que no es un punto cercano a la frontera, y por lo tanto el error vaya disminuyendo según aumenta el número de intervalos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF42.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral mediante&lt;br /&gt;
% el método del trapecio en función del tamaño de la discretización&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 8; %Discretización máxima: 10^N_max&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for m = 1:N_max&lt;br /&gt;
    N = 10^m; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f = g(theta)*(1-0.9.^2)./(1+0.9.^2-2*0.9*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u = h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (0.9,pi/4)&lt;br /&gt;
    &lt;br /&gt;
    % Valor de la solución exacta (x*y=R^2*cos(theta)*sin(theta))&lt;br /&gt;
    % en el punto (0.9, pi/4)&lt;br /&gt;
    exacta = 0.9^2*cos(pi/4)*sin(pi/4); &lt;br /&gt;
&lt;br /&gt;
    % Calculamos el error como la diferencia en valor absoluto entre&lt;br /&gt;
    % la solución exacta y la calculada con la fórmula de Poisson&lt;br /&gt;
    err(m) = abs(exacta-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,log10(err),color='b',LineWidth=1.5) %Dibujamos la gráfica del error en escala logarítmica&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('log_{10}(error(10^n))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado antes, al observar la gráfica vemos que el error va disminuyendo según aumenta n. Esto tiene sentido ya que cuantos más intervalos hay en la discretización más exacta va a ser la aproximación. También podemos observar que se estabiliza cuando llega aproximadamente a &amp;lt;math&amp;gt; n=3 &amp;lt;/math&amp;gt;, esto se debe a que con &amp;lt;math&amp;gt; 10^3 &amp;lt;/math&amp;gt; intervalos el método del trapecio ya aproxima lo suficientemente bien a la función original, lo que hace que aunque aumente el número de intervalos la aproximación no tenga mucho margen de mejor. Con esto hemos visto que en un punto que no esté cerca del borde la fórmula de Poisson va a funcionar bien. &lt;br /&gt;
&lt;br /&gt;
También podemos usar la fórmula del error máximo del método del trapecio para obtener una cota para el error y ver que los errores calculados numéricamente se encuentran por debajo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(n) \leq \left|-\frac{f’’(\xi)(b-a)^3}{12n^2} \right| &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt; es el intervalo de integración, &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; la función a integrar, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; el número de particiones de la discretización y &amp;lt;math&amp;gt; \xi &amp;lt;/math&amp;gt; un cierto valor entre &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt;. Para nuetro problema, &amp;lt;math&amp;gt;[a,b]=[0,2\pi]&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f(\theta)=\frac{(1-r^2) sen(\theta)cos(\theta)}{2\pi(1+r^2-2rcos(\alpha - \theta))}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Derivando &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; dos veces y maximizando su valor en &amp;lt;math&amp;gt;[0,2\pi]&amp;lt;/math&amp;gt;, obtenemos la siguiente cota:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;error(n) \leq \left|- \frac{\pi^2(r^6 - r^5 + 6 r^3 + r^2 -r +2) }{3 n^2(1-r)^5} \right|&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La dibujamos en función de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; junto con el error calculado numéricamente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF41.jpg|400px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo se comporta el error según nos acercamos a la frontera. Para hacer esto vamos a tomar el punto &amp;lt;math&amp;gt; (r,\theta)=(1-10^{-n},\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo varía el error (la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson) cuando aumentamos la n, es decir, cuando nos vamos acercando a la frontera. Como hemos comentado anteriormente cabe esperar que al aumentar la n el error va a aumentar, ya que como hemos visto en el primer ejemplo cerca de la frontera la fórmula de Poisson da problemas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF421.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral según nos acercamos al&lt;br /&gt;
% borde de la región.&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 20;&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for n = 1:N_max&lt;br /&gt;
    N = 10^2; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f=g(theta)*(1-(1-10^(-n)).^2)./(1+(1-10^(-n)).^2-2*(1-10^(-n))*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u=h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (1-10^-n,pi/4)&lt;br /&gt;
    err(n)=abs((1-10^(-n))^2*cos(pi/4)*sin(pi/4)-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,err,color='b',LineWidth=1.5) %Dibujamos la gráfica del error&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('Error');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En la gráfica podemos ver cómo efectivamente el error para valores de n pequeños, es decir, puntos que están relativamente lejos de la frontera, el error es pequeño al igual que en el caso anterior. Por el contrario, según aumenta la n, es decir, según nos acercamos a la frontera el error aumenta, lo cual tiene sentido ya que como hemos comentado antes la fórmula de Poisson da problemas en la frontera.&lt;br /&gt;
&lt;br /&gt;
Además, podemos observar que el error se estabiliza aproximadamente en  &amp;lt;math&amp;gt; n=4 &amp;lt;/math&amp;gt;, esto se debe a que para este valor de n el punto ya esta suficientemente cerca de la frontera como para representar todo el error que se da en esta y por ello aunque nos acerquemos más a la frontera (aumente n) el error se mantiene estable en  &amp;lt;math&amp;gt; 0.5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Serie de Fourier==&lt;br /&gt;
La otra forma que vamos a ver para resolver la ecuación de Laplace es mediante [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) series de Fourier]. Para hacer esto vamos a tomar nuestro problema en coordenadas polares:&lt;br /&gt;
&lt;br /&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,&amp;amp; r\in(0,1),\theta\in[0,2\pi]\\&lt;br /&gt;
U(1,\theta)=G(\theta)=sin(\theta)cos(\theta),&amp;amp; \theta\in[0,2\pi]&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y a aplicar el método de separación de variables. Al hacer esto obtenemos que: &amp;lt;math&amp;gt; U(r,\theta)=\frac{a_0}{2}+\sum_{k=1}^\infty a_kr^kcos(k\theta)+b_kr^ksin(k\theta).&amp;lt;/math&amp;gt;. Para que esto sea solución falta hacer que cumpla la condición frontera, para ello vamos a tomar la serie de Fourier de &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; L^2([-\pi,\pi]) &amp;lt;/math&amp;gt;, que es &amp;lt;math&amp;gt; G(\theta)=\frac{\alpha_0}{2}+\sum_{k=1}^\infty \alpha_kcos(k\theta)+\beta_ksin(k\theta)&amp;lt;/math&amp;gt; y a igualar ambas series cuando r=1. Al hacer esto vemos que para que ambas series sean iguale los coeficientes tienen que ser iguales, por lo que vamos a calcular los coeficientes de  &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; y a ver su equivalencia con los de  &amp;lt;math&amp;gt; U &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; a_0=\alpha_0=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)d\theta \quad \quad \quad a_k=\alpha_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)cos(k\theta)d\theta \quad \quad \quad b_k=\beta_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)sin(k\theta)d\theta. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al realizar estas integrales obtenemos que &amp;lt;math&amp;gt; a_0=0,a_k=0\forall k &amp;lt;/math&amp;gt; y todos los &amp;lt;math&amp;gt; b_k &amp;lt;/math&amp;gt; son 0 excepto &amp;lt;math&amp;gt; b_2=\frac{1}{2} &amp;lt;/math&amp;gt;. Por lo que la solución nos queda de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}sin(2\theta) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a dibujar la solución, cuya gráfica va a ser exacta ya que la serie tiene un único término.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF43.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Dibujamos la solución calculada por serie de Fourier&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^(2).*sin(2.*theta)/2; %Solución de la ecuación&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):1; %Partición en r&lt;br /&gt;
for j = 1:N+1&lt;br /&gt;
    for i = 1:N+1&lt;br /&gt;
        U(i,j) = u(r(i),theta(j));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, U, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('y');&lt;br /&gt;
zlabel('u(x, y)');&lt;br /&gt;
title('Solución exacta calculada por serie de Fourier');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al haber resuelto el problema por ambos métodos, observamos que este último nos da la solución de forma exacta, por lo que en este caso va a ser más efectivo que el anterior. Esto no tendría porque ser así en todos los casos ya que la serie de Fourier para otra función G distinta puede tener infinitos términos, lo que haría que la aproximación no sea exacta, pero aun así sería más exacta que con el método anterior en los puntos cercanos a la forntera.&lt;br /&gt;
&lt;br /&gt;
==Desigualdad de Harnack==&lt;br /&gt;
&lt;br /&gt;
En esta sección vamos a usar la desigualdad de Harnack para obtener la región que contiene a todas las soluciones armónicas de la ecuación de Laplace que valen lo mismo en el origen que la solución que hemos calculado.&lt;br /&gt;
&lt;br /&gt;
La desigualdad de Harnack establece que dada una función &amp;lt;math&amp;gt; u\geq 0 &amp;lt;/math&amp;gt; armónica en &amp;lt;math&amp;gt; \Omega \subset \mathbb{R}^n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B_R(z) \subset \Omega &amp;lt;/math&amp;gt; con  &amp;lt;math&amp;gt; z \in \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)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para poder aplicarla a nuestro problema, vamos a tomar v=U+M, siendo &amp;lt;math&amp;gt; U(r,\theta)=\frac{r^2}{2R^2}sin(2\theta) &amp;lt;/math&amp;gt; la solución al problema en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;, y M el mínimo de &amp;lt;math&amp;gt; G(\theta)=R^2sin(\theta)cos(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;. Al hacer esto v va a ser una función armónica positiva a la que le podemos aplicar la desigualdad de Harnack.&lt;br /&gt;
&lt;br /&gt;
Primero vamos a aplicar la desigualdad variando el radio de la bola y a observar como varia la región que determina en función de esto. Para ello vamos a representar las cotas en escala logarítmica, lo cual nos permite observar mejor su comportamiento.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Representamos las cotas que nos da la desigualdad de Harnack&lt;br /&gt;
% para nuestro ejemplo.&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^2*sin(theta).*cos(theta); %Definimos la función u(r,theta)&lt;br /&gt;
g=@(theta,r) r^2*sin(theta).*cos(theta); %Definimos la función g&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
R = [1,2,10]; %Radios de las bolas&lt;br /&gt;
n = 2; %Dimensión del espacio&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
C=[&amp;quot;#0000FF&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#00FF00&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
for i=1:3&lt;br /&gt;
    r = 0:N^(-1):R(i); %Partición en r&lt;br /&gt;
    gR=g(theta,R(i));&lt;br /&gt;
    M1=min(gR); %Calculamos el mínimo de g en la frontera de la bola de radio R&lt;br /&gt;
    v1=@(r,theta) u(r,theta)-M1;&lt;br /&gt;
    A=@(r)R(i).^(n-2).*(R(i)-r)./(R(i)+r).^(n-1)*v1(0,0);&lt;br /&gt;
    B=@(r)R(i).^(n-2).*(R(i)+r)./(R(i)-r).^(n-1)*v1(0,0);&lt;br /&gt;
&lt;br /&gt;
    %Graficamos las cotas para los diferentes radios&lt;br /&gt;
    subplot(1,3,i)&lt;br /&gt;
    plot(r,log10(A(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(r,log10(B(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    axis([0 10,-3 6])&lt;br /&gt;
    xlabel('r');&lt;br /&gt;
    ylabel('log(Cotas)');&lt;br /&gt;
    title(['Cotas para r= ' num2str(R(i))]);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF44_1.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Lo más destacable en las 3 gráficas es que en todas ellas ambas restricciones se van al infinito cunado llegan al radio correspondiente a la bola en la que están calculadas. Esto tiene sentido ya que podemos observar que el denominador de la cota superior se anula cuando r=R y por lo tanto se va a infinito y su logaritmo también, y la cota inferior es 0 cuando r=R y por tanto su logaritmo se va a menos infinito. También podemos observar, que debido a esto, el pico que forman ambas restricciones es más estrecho cuando aumentamos el radio de la bola.&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo varían las restricciones si variamos la dimensión.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF442.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Al observar estas gráficas podemos observar que independientemente del radio cuando aumentamos la dimensión aumenta la región que definen ambas restricciones. Además, en n=3 el comportamiento sigue siendo el mismo que el comentado para n=2.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Poisson=&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a buscar una solución de la ecuación de Poisson en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u=f,\quad x\in\mathbb{R}^2. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ello vamos a utilizar la solución fundamental del laplaciano, que en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt; se define como &amp;lt;math&amp;gt; \Phi(x)=-\frac{1}{2\pi}log|x| &amp;lt;/math&amp;gt; y cumple que &amp;lt;math&amp;gt; \Delta \Phi(x)=-\delta_2(x) &amp;lt;/math&amp;gt;. Donde &amp;lt;math&amp;gt;\delta_2(x) &amp;lt;/math&amp;gt; es la delta de Dirac en dimensión 2.&lt;br /&gt;
&lt;br /&gt;
Si ahora consideramos el potencial logarítmico de la función f, que es la la convolución de la solución fundamental con f, entonces podríamos expresar la solución como: &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2}\Phi(x-y)f(y)dy &amp;lt;/math&amp;gt; y formalmente tenemos que: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u(x)=\int_{\mathbb{R}^2}\Delta_x\Phi(x-y)f(y)dy=- \int_{\mathbb{R}^2}\delta_2f(y)dy=-f(x),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pero esto no es correcto ya que el laplaciano de la solución fundamental no es integrable. A pesar de no ser correcto nos da la intuición de que el potencial logarítmico podría ser una posible  solución del problema.&lt;br /&gt;
&lt;br /&gt;
Ahora para solucionar esto vamos a tomar f como la función característica de la bola de radio 1 ya que de esta manera obtenemos el siguietne teorema: (Remark 3.35 pag 150)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver esto con el ejemplo concreto en el que la función f es la función característica en la bola de radio 1.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF52.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
N1=300; N2=300; %Número de puntos&lt;br /&gt;
a=0; b=1; c=0; d=2*pi; %Extremos de los intervalos&lt;br /&gt;
h1=(b-a)/N1; h2=(d-c)/N2;&lt;br /&gt;
r=a:h1:b; theta=c:h2:d; %Particiones de r y theta&lt;br /&gt;
[rr,tt]=meshgrid(r,theta); &lt;br /&gt;
w1=ones(N1+1,1);                &lt;br /&gt;
w1(1)=1/2; w1(N1+1)=1/2;&lt;br /&gt;
w2=ones(N2+1,1);                 &lt;br /&gt;
w2(1)=1/2; w2(N2+1)=1/2;&lt;br /&gt;
x11=-1:2/100:1; % Partición de x_1&lt;br /&gt;
x21=-1:2/100:1; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        f=-log(sqrt((x11(j)-rr.*cos(tt)).^2+(x21(i)-rr.*sin(tt)).^2)).*rr; %Potencial logaritmico               &lt;br /&gt;
        u1(i,j)=h1*h2*w2'*f*w1/(2*pi); %Solución del método del trapecio en 2 variable&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos la solución&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11,x21, u1, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución con el potencial logarítmico');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF5_1.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Representación de la solución asintótica&lt;br /&gt;
&lt;br /&gt;
M=pi; %Area del circulo de radio 1&lt;br /&gt;
f=@(x1,x2) -M/(2*pi).*log(sqrt(x1.^2+x2.^2)); % Función que describe el comportamiento asintótico&lt;br /&gt;
&lt;br /&gt;
N=200; %Número de intervalos&lt;br /&gt;
a=-1; b=1;                     &lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
x11=a:h:b; %Partición de x_1&lt;br /&gt;
x21=a:h:b; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
u=zeros(length(x11),length(x21));&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        u(i,j)=f(x11(i),x21(j)); %Evaluamos f en la malla de puntos&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos el resultado&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11, x21, u, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución cuando x tienda a \infty');&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF53.jpg|400px|thumb|right]]&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71548</id>
		<title>Ecuación de Laplace y de Poisson (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71548"/>
				<updated>2024-04-19T17:16:15Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Fórmula de Poisson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar  la ecuación de Laplace y la ecuación de Poisson. Para ello vamos a calcular soluciones de distintas formas usando cosas como la fórmula de Poisson o el potencial logarítmico, graficándolas y modificando algunos de los parámetros.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Laplace=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la exactitud que tienen dos formas diferentes de resolver la ecuación de Laplace. Para hacer esto tomamos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta u=0,&amp;amp; x\in B_1\\&lt;br /&gt;
u=g,&amp;amp; x\in\partial B_1&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt; B_1\subset\mathbb{R}^2 &amp;lt;/math&amp;gt; la bola de radio 1 centrada en el (0,0).&lt;br /&gt;
&lt;br /&gt;
==Fórmula de Poisson==&lt;br /&gt;
&lt;br /&gt;
Una de las formas de resolver este tipo de problemas es mediante la fórmula de Poisson, que es: &amp;lt;math&amp;gt; u=\frac{R^2-|x|^2}{2\pi R}\int_{\partial B_R}\frac{g(\sigma)}{|x-\sigma|^2} d\sigma, &amp;lt;/math&amp;gt; donde R es el radio de la bola y &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; la distancia al centro de la bola.&lt;br /&gt;
&lt;br /&gt;
Para ver cómo funciona esta fórmula vamos a resolver el problema tomando &amp;lt;math&amp;gt; g(\theta)=max \{0,1-\frac{2}{\pi}|\theta-\pi|\}&amp;lt;/math&amp;gt;. Como esta función, que es la que representa las condiciones frontera, está en coordenadas polares vamos a expresar la fórmula de Poisson en polares.&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}\int_{0}^{2\pi}g(s)\frac{R^2-r^2}{R^2+r^2-2rRcos(s-\theta)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la fórmula expresada de esta manera, podemos aplicarla a nuestro problema tomando R=1 y sustituyendo g por nuestra función. Teniendo esto en cuenta vamos a resolver el problema realizando la integral mediante la [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals regla del trapecio] y a representar la solución.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF41.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calcular la solución de la ecuación de Laplace  en la bola de radio&lt;br /&gt;
% unidad usando la fórmula de Poisson. Con condición frontera la función g&lt;br /&gt;
&lt;br /&gt;
g = @(theta) max(0,1-2/pi*abs(theta-pi)); %Definimos la función g(theta)&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):0.9; %Partición en r (no llegamos hasta el borde de la bola)&lt;br /&gt;
&lt;br /&gt;
w = ones(N+1,1);                 &lt;br /&gt;
w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
u = zeros(length(r)+1,length(theta));&lt;br /&gt;
for j = 1:length(theta)&lt;br /&gt;
    for i = 1:length(r)&lt;br /&gt;
        f = g(theta)*(1-r(i).^2)./(1+r(i).^2-2*r(i)*cos(theta-theta(j))); %Función a integrar&lt;br /&gt;
        u(i,j) = h*w'*f'/(2*pi); %Fórmula de Poison usando la fórmula del trapecio para integrar.&lt;br /&gt;
    end&lt;br /&gt;
    u(length(r)+1,j) = g(theta(j)); %Añadimos la condicón frontera directamente&lt;br /&gt;
end&lt;br /&gt;
r(length(r)+1) = 1;&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, u, 'EdgeColor', 'none');&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;
En la imagen podemos observar que la fórmula de Poisson nos da problemas en la frontera, esto se debe al carácter singular de la integral cerca del borde. Para solucionar esto vamos a tomar directamente el valor de g en el borde de la bola. Al hacer esto obtenemos la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF411.jpg|400px|thumb|center| Sustituyendo g en el borde de la bola]]&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas podemos observar que efectivamente sustituir g en el borde hace que evitemos la singularidad de la integral en la frontera.&lt;br /&gt;
&lt;br /&gt;
Como hemos visto con este ejemplo la fórmula de Poisson tiene problemas para aproximar la solución cerca de la frontera. Por lo que para estudiar esto, vamos a tomar &amp;lt;math&amp;gt; g(x,y)=xy &amp;lt;/math&amp;gt; como condición frontera y &amp;lt;math&amp;gt; u(x,y)=xy &amp;lt;/math&amp;gt; como solución del problema para calcular los diferentes errores que genera la fórmula de Poisson. &lt;br /&gt;
&lt;br /&gt;
Para hacerlo vamos a tomar tanto u como g en coordenadas polares, ya que al estudiar el problema en una bola esto nos permite hacernos una mejor idea de lo que ocurre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
U(r,\theta)=r^2cos(\theta)sin(\theta)\\&lt;br /&gt;
U(1,\theta)=G(\theta)=cos(\theta)sin(\theta)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Primero vamos a tomar un punto &amp;quot;lejos&amp;quot; de la frontera &amp;lt;math&amp;gt; (r,\theta)=(0.9,\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo evoluciona el error, es decir, la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson en ese punto, en función de n. Siendo n el número que determina el número de intervalos en &amp;lt;math&amp;gt; 10^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por el ejemplo anterior, cabe esperar que la fórmula en este punto aproxime bien a la función ya que no es un punto cercano a la frontera, y por lo tanto el error vaya disminuyendo según aumenta el número de intervalos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF42.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral mediante&lt;br /&gt;
% el método del trapecio en función del tamaño de la discretización&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 8; %Discretización máxima: 10^N_max&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for m = 1:N_max&lt;br /&gt;
    N = 10^m; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f = g(theta)*(1-0.9.^2)./(1+0.9.^2-2*0.9*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u = h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (0.9,pi/4)&lt;br /&gt;
    &lt;br /&gt;
    % Valor de la solución exacta (x*y=R^2*cos(theta)*sin(theta))&lt;br /&gt;
    % en el punto (0.9, pi/4)&lt;br /&gt;
    exacta = 0.9^2*cos(pi/4)*sin(pi/4); &lt;br /&gt;
&lt;br /&gt;
    % Calculamos el error como la diferencia en valor absoluto entre&lt;br /&gt;
    % la solución exacta y la calculada con la fórmula de Poisson&lt;br /&gt;
    err(m) = abs(exacta-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,log10(err),color='b',LineWidth=1.5) %Dibujamos la gráfica del error en escala logarítmica&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('log_{10}(error(10^n))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado antes, al observar la gráfica vemos que el error va disminuyendo según aumenta n. Esto tiene sentido ya que cuantos más intervalos hay en la discretización más exacta va a ser la aproximación. También podemos observar que se estabiliza cuando llega aproximadamente a &amp;lt;math&amp;gt; n=3 &amp;lt;/math&amp;gt;, esto se debe a que con &amp;lt;math&amp;gt; 10^3 &amp;lt;/math&amp;gt; intervalos el método del trapecio ya aproxima lo suficientemente bien a la función original, lo que hace que aunque aumente el número de intervalos la aproximación no tenga mucho margen de mejor. Con esto hemos visto que en un punto que no esté cerca del borde la fórmula de Poisson va a funcionar bien. &lt;br /&gt;
&lt;br /&gt;
También podemos usar la fórmula del error máximo del método del trapecio para obtener una cota para el error y ver que los errores calculados numéricamente se encuentran por debajo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(n) \leq \left|-\frac{f’’(\xi)(b-a)^3}{12n^2} \right| &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt; es el intervalo de integración, &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; la función a integrar, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; el número de particiones de la discretización y &amp;lt;math&amp;gt; \xi &amp;lt;/math&amp;gt; un cierto valor entre &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt;. Para nuetro problema, &amp;lt;math&amp;gt;[a,b]=[0,2\pi]&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f(\theta)=\frac{(1-r^2) sen(\theta)cos(\theta)}{2\pi(1+r^2-2rcos(\alpha - \theta))}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Derivando &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; dos veces y maximizando su valor en &amp;lt;math&amp;gt;[0,2\pi]&amp;lt;/math&amp;gt;, obtenemos la siguiente cota:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;error(n) \leq \left|- \frac{\pi^2(r^6 - r^5 + 6 r^3 + r^2 -r +2) }{3 n^2(1-r)^5} \right|&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La dibujamos en función de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; junto con el error calculado numéricamente:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo se comporta el error según nos acercamos a la frontera. Para hacer esto vamos a tomar el punto &amp;lt;math&amp;gt; (r,\theta)=(1-10^{-n},\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo varía el error (la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson) cuando aumentamos la n, es decir, cuando nos vamos acercando a la frontera. Como hemos comentado anteriormente cabe esperar que al aumentar la n el error va a aumentar, ya que como hemos visto en el primer ejemplo cerca de la frontera la fórmula de Poisson da problemas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF421.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral según nos acercamos al&lt;br /&gt;
% borde de la región.&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 20;&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for n = 1:N_max&lt;br /&gt;
    N = 10^2; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f=g(theta)*(1-(1-10^(-n)).^2)./(1+(1-10^(-n)).^2-2*(1-10^(-n))*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u=h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (1-10^-n,pi/4)&lt;br /&gt;
    err(n)=abs((1-10^(-n))^2*cos(pi/4)*sin(pi/4)-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,err,color='b',LineWidth=1.5) %Dibujamos la gráfica del error&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('Error');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En la gráfica podemos ver cómo efectivamente el error para valores de n pequeños, es decir, puntos que están relativamente lejos de la frontera, el error es pequeño al igual que en el caso anterior. Por el contrario, según aumenta la n, es decir, según nos acercamos a la frontera el error aumenta, lo cual tiene sentido ya que como hemos comentado antes la fórmula de Poisson da problemas en la frontera.&lt;br /&gt;
&lt;br /&gt;
Además, podemos observar que el error se estabiliza aproximadamente en  &amp;lt;math&amp;gt; n=4 &amp;lt;/math&amp;gt;, esto se debe a que para este valor de n el punto ya esta suficientemente cerca de la frontera como para representar todo el error que se da en esta y por ello aunque nos acerquemos más a la frontera (aumente n) el error se mantiene estable en  &amp;lt;math&amp;gt; 0.5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Serie de Fourier==&lt;br /&gt;
La otra forma que vamos a ver para resolver la ecuación de Laplace es mediante [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) series de Fourier]. Para hacer esto vamos a tomar nuestro problema en coordenadas polares:&lt;br /&gt;
&lt;br /&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,&amp;amp; r\in(0,1),\theta\in[0,2\pi]\\&lt;br /&gt;
U(1,\theta)=G(\theta)=sin(\theta)cos(\theta),&amp;amp; \theta\in[0,2\pi]&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y a aplicar el método de separación de variables. Al hacer esto obtenemos que: &amp;lt;math&amp;gt; U(r,\theta)=\frac{a_0}{2}+\sum_{k=1}^\infty a_kr^kcos(k\theta)+b_kr^ksin(k\theta).&amp;lt;/math&amp;gt;. Para que esto sea solución falta hacer que cumpla la condición frontera, para ello vamos a tomar la serie de Fourier de &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; L^2([-\pi,\pi]) &amp;lt;/math&amp;gt;, que es &amp;lt;math&amp;gt; G(\theta)=\frac{\alpha_0}{2}+\sum_{k=1}^\infty \alpha_kcos(k\theta)+\beta_ksin(k\theta)&amp;lt;/math&amp;gt; y a igualar ambas series cuando r=1. Al hacer esto vemos que para que ambas series sean iguale los coeficientes tienen que ser iguales, por lo que vamos a calcular los coeficientes de  &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; y a ver su equivalencia con los de  &amp;lt;math&amp;gt; U &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; a_0=\alpha_0=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)d\theta \quad \quad \quad a_k=\alpha_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)cos(k\theta)d\theta \quad \quad \quad b_k=\beta_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)sin(k\theta)d\theta. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al realizar estas integrales obtenemos que &amp;lt;math&amp;gt; a_0=0,a_k=0\forall k &amp;lt;/math&amp;gt; y todos los &amp;lt;math&amp;gt; b_k &amp;lt;/math&amp;gt; son 0 excepto &amp;lt;math&amp;gt; b_2=\frac{1}{2} &amp;lt;/math&amp;gt;. Por lo que la solución nos queda de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}sin(2\theta) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a dibujar la solución, cuya gráfica va a ser exacta ya que la serie tiene un único término.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF43.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Dibujamos la solución calculada por serie de Fourier&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^(2).*sin(2.*theta)/2; %Solución de la ecuación&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):1; %Partición en r&lt;br /&gt;
for j = 1:N+1&lt;br /&gt;
    for i = 1:N+1&lt;br /&gt;
        U(i,j) = u(r(i),theta(j));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, U, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('y');&lt;br /&gt;
zlabel('u(x, y)');&lt;br /&gt;
title('Solución exacta calculada por serie de Fourier');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al haber resuelto el problema por ambos métodos, observamos que este último nos da la solución de forma exacta, por lo que en este caso va a ser más efectivo que el anterior. Esto no tendría porque ser así en todos los casos ya que la serie de Fourier para otra función G distinta puede tener infinitos términos, lo que haría que la aproximación no sea exacta, pero aun así sería más exacta que con el método anterior en los puntos cercanos a la forntera.&lt;br /&gt;
&lt;br /&gt;
==Desigualdad de Harnack==&lt;br /&gt;
&lt;br /&gt;
En esta sección vamos a usar la desigualdad de Harnack para obtener la región que contiene a todas las soluciones armónicas de la ecuación de Laplace que valen lo mismo en el origen que la solución que hemos calculado.&lt;br /&gt;
&lt;br /&gt;
La desigualdad de Harnack establece que dada una función &amp;lt;math&amp;gt; u\geq 0 &amp;lt;/math&amp;gt; armónica en &amp;lt;math&amp;gt; \Omega \subset \mathbb{R}^n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B_R(z) \subset \Omega &amp;lt;/math&amp;gt; con  &amp;lt;math&amp;gt; z \in \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)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para poder aplicarla a nuestro problema, vamos a tomar v=U+M, siendo &amp;lt;math&amp;gt; U(r,\theta)=\frac{r^2}{2R^2}sin(2\theta) &amp;lt;/math&amp;gt; la solución al problema en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;, y M el mínimo de &amp;lt;math&amp;gt; G(\theta)=R^2sin(\theta)cos(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;. Al hacer esto v va a ser una función armónica positiva a la que le podemos aplicar la desigualdad de Harnack.&lt;br /&gt;
&lt;br /&gt;
Primero vamos a aplicar la desigualdad variando el radio de la bola y a observar como varia la región que determina en función de esto. Para ello vamos a representar las cotas en escala logarítmica, lo cual nos permite observar mejor su comportamiento.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Representamos las cotas que nos da la desigualdad de Harnack&lt;br /&gt;
% para nuestro ejemplo.&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^2*sin(theta).*cos(theta); %Definimos la función u(r,theta)&lt;br /&gt;
g=@(theta,r) r^2*sin(theta).*cos(theta); %Definimos la función g&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
R = [1,2,10]; %Radios de las bolas&lt;br /&gt;
n = 2; %Dimensión del espacio&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
C=[&amp;quot;#0000FF&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#00FF00&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
for i=1:3&lt;br /&gt;
    r = 0:N^(-1):R(i); %Partición en r&lt;br /&gt;
    gR=g(theta,R(i));&lt;br /&gt;
    M1=min(gR); %Calculamos el mínimo de g en la frontera de la bola de radio R&lt;br /&gt;
    v1=@(r,theta) u(r,theta)-M1;&lt;br /&gt;
    A=@(r)R(i).^(n-2).*(R(i)-r)./(R(i)+r).^(n-1)*v1(0,0);&lt;br /&gt;
    B=@(r)R(i).^(n-2).*(R(i)+r)./(R(i)-r).^(n-1)*v1(0,0);&lt;br /&gt;
&lt;br /&gt;
    %Graficamos las cotas para los diferentes radios&lt;br /&gt;
    subplot(1,3,i)&lt;br /&gt;
    plot(r,log10(A(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(r,log10(B(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    axis([0 10,-3 6])&lt;br /&gt;
    xlabel('r');&lt;br /&gt;
    ylabel('log(Cotas)');&lt;br /&gt;
    title(['Cotas para r= ' num2str(R(i))]);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF44_1.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Lo más destacable en las 3 gráficas es que en todas ellas ambas restricciones se van al infinito cunado llegan al radio correspondiente a la bola en la que están calculadas. Esto tiene sentido ya que podemos observar que el denominador de la cota superior se anula cuando r=R y por lo tanto se va a infinito y su logaritmo también, y la cota inferior es 0 cuando r=R y por tanto su logaritmo se va a menos infinito. También podemos observar, que debido a esto, el pico que forman ambas restricciones es más estrecho cuando aumentamos el radio de la bola.&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo varían las restricciones si variamos la dimensión.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF442.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Al observar estas gráficas podemos observar que independientemente del radio cuando aumentamos la dimensión aumenta la región que definen ambas restricciones. Además, en n=3 el comportamiento sigue siendo el mismo que el comentado para n=2.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Poisson=&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a buscar una solución de la ecuación de Poisson en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u=f,\quad x\in\mathbb{R}^2. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ello vamos a utilizar la solución fundamental del laplaciano, que en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt; se define como &amp;lt;math&amp;gt; \Phi(x)=-\frac{1}{2\pi}log|x| &amp;lt;/math&amp;gt; y cumple que &amp;lt;math&amp;gt; \Delta \Phi(x)=-\delta_2(x) &amp;lt;/math&amp;gt;. Donde &amp;lt;math&amp;gt;\delta_2(x) &amp;lt;/math&amp;gt; es la delta de Dirac en dimensión 2.&lt;br /&gt;
&lt;br /&gt;
Si ahora consideramos el potencial logarítmico de la función f, que es la la convolución de la solución fundamental con f, entonces podríamos expresar la solución como: &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2}\Phi(x-y)f(y)dy &amp;lt;/math&amp;gt; y formalmente tenemos que: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u(x)=\int_{\mathbb{R}^2}\Delta_x\Phi(x-y)f(y)dy=- \int_{\mathbb{R}^2}\delta_2f(y)dy=-f(x),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pero esto no es correcto ya que el laplaciano de la solución fundamental no es integrable. A pesar de no ser correcto nos da la intuición de que el potencial logarítmico podría ser una posible  solución del problema.&lt;br /&gt;
&lt;br /&gt;
Ahora para solucionar esto vamos a tomar f como la función característica de la bola de radio 1 ya que de esta manera obtenemos el siguietne teorema: (Remark 3.35 pag 150)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver esto con el ejemplo concreto en el que la función f es la función característica en la bola de radio 1.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF52.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
N1=300; N2=300; %Número de puntos&lt;br /&gt;
a=0; b=1; c=0; d=2*pi; %Extremos de los intervalos&lt;br /&gt;
h1=(b-a)/N1; h2=(d-c)/N2;&lt;br /&gt;
r=a:h1:b; theta=c:h2:d; %Particiones de r y theta&lt;br /&gt;
[rr,tt]=meshgrid(r,theta); &lt;br /&gt;
w1=ones(N1+1,1);                &lt;br /&gt;
w1(1)=1/2; w1(N1+1)=1/2;&lt;br /&gt;
w2=ones(N2+1,1);                 &lt;br /&gt;
w2(1)=1/2; w2(N2+1)=1/2;&lt;br /&gt;
x11=-1:2/100:1; % Partición de x_1&lt;br /&gt;
x21=-1:2/100:1; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        f=-log(sqrt((x11(j)-rr.*cos(tt)).^2+(x21(i)-rr.*sin(tt)).^2)).*rr; %Potencial logaritmico               &lt;br /&gt;
        u1(i,j)=h1*h2*w2'*f*w1/(2*pi); %Solución del método del trapecio en 2 variable&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos la solución&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11,x21, u1, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución con el potencial logarítmico');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF5_1.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Representación de la solución asintótica&lt;br /&gt;
&lt;br /&gt;
M=pi; %Area del circulo de radio 1&lt;br /&gt;
f=@(x1,x2) -M/(2*pi).*log(sqrt(x1.^2+x2.^2)); % Función que describe el comportamiento asintótico&lt;br /&gt;
&lt;br /&gt;
N=200; %Número de intervalos&lt;br /&gt;
a=-1; b=1;                     &lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
x11=a:h:b; %Partición de x_1&lt;br /&gt;
x21=a:h:b; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
u=zeros(length(x11),length(x21));&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        u(i,j)=f(x11(i),x21(j)); %Evaluamos f en la malla de puntos&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos el resultado&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11, x21, u, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución cuando x tienda a \infty');&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF53.jpg|400px|thumb|right]]&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71545</id>
		<title>Ecuación de Laplace y de Poisson (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71545"/>
				<updated>2024-04-19T17:14:09Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Fórmula de Poisson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar  la ecuación de Laplace y la ecuación de Poisson. Para ello vamos a calcular soluciones de distintas formas usando cosas como la fórmula de Poisson o el potencial logarítmico, graficándolas y modificando algunos de los parámetros.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Laplace=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la exactitud que tienen dos formas diferentes de resolver la ecuación de Laplace. Para hacer esto tomamos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta u=0,&amp;amp; x\in B_1\\&lt;br /&gt;
u=g,&amp;amp; x\in\partial B_1&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt; B_1\subset\mathbb{R}^2 &amp;lt;/math&amp;gt; la bola de radio 1 centrada en el (0,0).&lt;br /&gt;
&lt;br /&gt;
==Fórmula de Poisson==&lt;br /&gt;
&lt;br /&gt;
Una de las formas de resolver este tipo de problemas es mediante la fórmula de Poisson, que es: &amp;lt;math&amp;gt; u=\frac{R^2-|x|^2}{2\pi R}\int_{\partial B_R}\frac{g(\sigma)}{|x-\sigma|^2} d\sigma, &amp;lt;/math&amp;gt; donde R es el radio de la bola y &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; la distancia al centro de la bola.&lt;br /&gt;
&lt;br /&gt;
Para ver cómo funciona esta fórmula vamos a resolver el problema tomando &amp;lt;math&amp;gt; g(\theta)=max \{0,1-\frac{2}{\pi}|\theta-\pi|\}&amp;lt;/math&amp;gt;. Como esta función, que es la que representa las condiciones frontera, está en coordenadas polares vamos a expresar la fórmula de Poisson en polares.&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}\int_{0}^{2\pi}g(s)\frac{R^2-r^2}{R^2+r^2-2rRcos(s-\theta)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la fórmula expresada de esta manera, podemos aplicarla a nuestro problema tomando R=1 y sustituyendo g por nuestra función. Teniendo esto en cuenta vamos a resolver el problema realizando la integral mediante la [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals regla del trapecio] y a representar la solución.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF41.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calcular la solución de la ecuación de Laplace  en la bola de radio&lt;br /&gt;
% unidad usando la fórmula de Poisson. Con condición frontera la función g&lt;br /&gt;
&lt;br /&gt;
g = @(theta) max(0,1-2/pi*abs(theta-pi)); %Definimos la función g(theta)&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):0.9; %Partición en r (no llegamos hasta el borde de la bola)&lt;br /&gt;
&lt;br /&gt;
w = ones(N+1,1);                 &lt;br /&gt;
w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
u = zeros(length(r)+1,length(theta));&lt;br /&gt;
for j = 1:length(theta)&lt;br /&gt;
    for i = 1:length(r)&lt;br /&gt;
        f = g(theta)*(1-r(i).^2)./(1+r(i).^2-2*r(i)*cos(theta-theta(j))); %Función a integrar&lt;br /&gt;
        u(i,j) = h*w'*f'/(2*pi); %Fórmula de Poison usando la fórmula del trapecio para integrar.&lt;br /&gt;
    end&lt;br /&gt;
    u(length(r)+1,j) = g(theta(j)); %Añadimos la condicón frontera directamente&lt;br /&gt;
end&lt;br /&gt;
r(length(r)+1) = 1;&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, u, 'EdgeColor', 'none');&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;
En la imagen podemos observar que la fórmula de Poisson nos da problemas en la frontera, esto se debe al carácter singular de la integral cerca del borde. Para solucionar esto vamos a tomar directamente el valor de g en el borde de la bola. Al hacer esto obtenemos la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF411.jpg|400px|thumb|center| Sustituyendo g en el borde de la bola]]&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas podemos observar que efectivamente sustituir g en el borde hace que evitemos la singularidad de la integral en la frontera.&lt;br /&gt;
&lt;br /&gt;
Como hemos visto con este ejemplo la fórmula de Poisson tiene problemas para aproximar la solución cerca de la frontera. Por lo que para estudiar esto, vamos a tomar &amp;lt;math&amp;gt; g(x,y)=xy &amp;lt;/math&amp;gt; como condición frontera y &amp;lt;math&amp;gt; u(x,y)=xy &amp;lt;/math&amp;gt; como solución del problema para calcular los diferentes errores que genera la fórmula de Poisson. &lt;br /&gt;
&lt;br /&gt;
Para hacerlo vamos a tomar tanto u como g en coordenadas polares, ya que al estudiar el problema en una bola esto nos permite hacernos una mejor idea de lo que ocurre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
U(r,\theta)=r^2cos(\theta)sin(\theta)\\&lt;br /&gt;
U(1,\theta)=G(\theta)=cos(\theta)sin(\theta)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Primero vamos a tomar un punto &amp;quot;lejos&amp;quot; de la frontera &amp;lt;math&amp;gt; (r,\theta)=(0.9,\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo evoluciona el error, es decir, la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson en ese punto, en función de n. Siendo n el número que determina el número de intervalos en &amp;lt;math&amp;gt; 10^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por el ejemplo anterior, cabe esperar que la fórmula en este punto aproxime bien a la función ya que no es un punto cercano a la frontera, y por lo tanto el error vaya disminuyendo según aumenta el número de intervalos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF42.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral mediante&lt;br /&gt;
% el método del trapecio en función del tamaño de la discretización&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 8; %Discretización máxima: 10^N_max&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for m = 1:N_max&lt;br /&gt;
    N = 10^m; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f = g(theta)*(1-0.9.^2)./(1+0.9.^2-2*0.9*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u = h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (0.9,pi/4)&lt;br /&gt;
    &lt;br /&gt;
    % Valor de la solución exacta (x*y=R^2*cos(theta)*sin(theta))&lt;br /&gt;
    % en el punto (0.9, pi/4)&lt;br /&gt;
    exacta = 0.9^2*cos(pi/4)*sin(pi/4); &lt;br /&gt;
&lt;br /&gt;
    % Calculamos el error como la diferencia en valor absoluto entre&lt;br /&gt;
    % la solución exacta y la calculada con la fórmula de Poisson&lt;br /&gt;
    err(m) = abs(exacta-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,log10(err),color='b',LineWidth=1.5) %Dibujamos la gráfica del error en escala logarítmica&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('log_{10}(error(10^n))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado antes, al observar la gráfica vemos que el error va disminuyendo según aumenta n. Esto tiene sentido ya que cuantos más intervalos hay en la discretización más exacta va a ser la aproximación. También podemos observar que se estabiliza cuando llega aproximadamente a &amp;lt;math&amp;gt; n=3 &amp;lt;/math&amp;gt;, esto se debe a que con &amp;lt;math&amp;gt; 10^3 &amp;lt;/math&amp;gt; intervalos el método del trapecio ya aproxima lo suficientemente bien a la función original, lo que hace que aunque aumente el número de intervalos la aproximación no tenga mucho margen de mejor. Con esto hemos visto que en un punto que no esté cerca del borde la fórmula de Poisson va a funcionar bien. &lt;br /&gt;
&lt;br /&gt;
También podemos usar la fórmula del error máximo del método del trapecio, para obtener una cota para el error y ver que los errores calculados numéricamente se encuentran por debajo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; error(n) \leq \left|-\frac{f’’(\xi)(b-a)^3}{12n^2} \right| &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt; es el intervalo de integración, &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; la función a integrar, &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; el número de particiones de la discretización y &amp;lt;math&amp;gt; \xi &amp;lt;/math&amp;gt; un cierto valor entre &amp;lt;math&amp;gt; [b-a] &amp;lt;/math&amp;gt;. Para nuetro problema, &amp;lt;math&amp;gt;[a,b]=[0,2\pi]&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;f(\theta)=\frac{(1-r^2) sen(\theta)cos(\theta)}{2\pi(1+r^2-2rcos(\alpha - \theta))}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Derivando &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; dos veces y maximizando su valor en &amp;lt;math&amp;gt;[0,2\pi]&amp;lt;/math&amp;gt;, obtenemos la siguiente cota:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; &amp;lt;math&amp;gt;error(n) \leq \left|- \frac{\pi^2(r^6 - r^5 + 6 r^3 + r^2 -r +2) }{3 n^2(1-r)^5} \right|&amp;lt;/math&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La dibujamos en función de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; junto con el error calculado numéricamente:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo se comporta el error según nos acercamos a la frontera. Para hacer esto vamos a tomar el punto &amp;lt;math&amp;gt; (r,\theta)=(1-10^{-n},\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo varía el error (la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson) cuando aumentamos la n, es decir, cuando nos vamos acercando a la frontera. Como hemos comentado anteriormente cabe esperar que al aumentar la n el error va a aumentar, ya que como hemos visto en el primer ejemplo cerca de la frontera la fórmula de Poisson da problemas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF421.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral según nos acercamos al&lt;br /&gt;
% borde de la región.&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 20;&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for n = 1:N_max&lt;br /&gt;
    N = 10^2; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f=g(theta)*(1-(1-10^(-n)).^2)./(1+(1-10^(-n)).^2-2*(1-10^(-n))*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u=h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (1-10^-n,pi/4)&lt;br /&gt;
    err(n)=abs((1-10^(-n))^2*cos(pi/4)*sin(pi/4)-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,err,color='b',LineWidth=1.5) %Dibujamos la gráfica del error&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('Error');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En la gráfica podemos ver cómo efectivamente el error para valores de n pequeños, es decir, puntos que están relativamente lejos de la frontera, el error es pequeño al igual que en el caso anterior. Por el contrario, según aumenta la n, es decir, según nos acercamos a la frontera el error aumenta, lo cual tiene sentido ya que como hemos comentado antes la fórmula de Poisson da problemas en la frontera.&lt;br /&gt;
&lt;br /&gt;
Además, podemos observar que el error se estabiliza aproximadamente en  &amp;lt;math&amp;gt; n=4 &amp;lt;/math&amp;gt;, esto se debe a que para este valor de n el punto ya esta suficientemente cerca de la frontera como para representar todo el error que se da en esta y por ello aunque nos acerquemos más a la frontera (aumente n) el error se mantiene estable en  &amp;lt;math&amp;gt; 0.5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Serie de Fourier==&lt;br /&gt;
La otra forma que vamos a ver para resolver la ecuación de Laplace es mediante [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) series de Fourier]. Para hacer esto vamos a tomar nuestro problema en coordenadas polares:&lt;br /&gt;
&lt;br /&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,&amp;amp; r\in(0,1),\theta\in[0,2\pi]\\&lt;br /&gt;
U(1,\theta)=G(\theta)=sin(\theta)cos(\theta),&amp;amp; \theta\in[0,2\pi]&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y a aplicar el método de separación de variables. Al hacer esto obtenemos que: &amp;lt;math&amp;gt; U(r,\theta)=\frac{a_0}{2}+\sum_{k=1}^\infty a_kr^kcos(k\theta)+b_kr^ksin(k\theta).&amp;lt;/math&amp;gt;. Para que esto sea solución falta hacer que cumpla la condición frontera, para ello vamos a tomar la serie de Fourier de &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; L^2([-\pi,\pi]) &amp;lt;/math&amp;gt;, que es &amp;lt;math&amp;gt; G(\theta)=\frac{\alpha_0}{2}+\sum_{k=1}^\infty \alpha_kcos(k\theta)+\beta_ksin(k\theta)&amp;lt;/math&amp;gt; y a igualar ambas series cuando r=1. Al hacer esto vemos que para que ambas series sean iguale los coeficientes tienen que ser iguales, por lo que vamos a calcular los coeficientes de  &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; y a ver su equivalencia con los de  &amp;lt;math&amp;gt; U &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; a_0=\alpha_0=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)d\theta \quad \quad \quad a_k=\alpha_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)cos(k\theta)d\theta \quad \quad \quad b_k=\beta_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)sin(k\theta)d\theta. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al realizar estas integrales obtenemos que &amp;lt;math&amp;gt; a_0=0,a_k=0\forall k &amp;lt;/math&amp;gt; y todos los &amp;lt;math&amp;gt; b_k &amp;lt;/math&amp;gt; son 0 excepto &amp;lt;math&amp;gt; b_2=\frac{1}{2} &amp;lt;/math&amp;gt;. Por lo que la solución nos queda de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}sin(2\theta) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a dibujar la solución, cuya gráfica va a ser exacta ya que la serie tiene un único término.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF43.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Dibujamos la solución calculada por serie de Fourier&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^(2).*sin(2.*theta)/2; %Solución de la ecuación&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):1; %Partición en r&lt;br /&gt;
for j = 1:N+1&lt;br /&gt;
    for i = 1:N+1&lt;br /&gt;
        U(i,j) = u(r(i),theta(j));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, U, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('y');&lt;br /&gt;
zlabel('u(x, y)');&lt;br /&gt;
title('Solución exacta calculada por serie de Fourier');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al haber resuelto el problema por ambos métodos, observamos que este último nos da la solución de forma exacta, por lo que en este caso va a ser más efectivo que el anterior. Esto no tendría porque ser así en todos los casos ya que la serie de Fourier para otra función G distinta puede tener infinitos términos, lo que haría que la aproximación no sea exacta, pero aun así sería más exacta que con el método anterior en los puntos cercanos a la forntera.&lt;br /&gt;
&lt;br /&gt;
==Desigualdad de Harnack==&lt;br /&gt;
&lt;br /&gt;
En esta sección vamos a usar la desigualdad de Harnack para obtener la región que contiene a todas las soluciones armónicas de la ecuación de Laplace que valen lo mismo en el origen que la solución que hemos calculado.&lt;br /&gt;
&lt;br /&gt;
La desigualdad de Harnack establece que dada una función &amp;lt;math&amp;gt; u\geq 0 &amp;lt;/math&amp;gt; armónica en &amp;lt;math&amp;gt; \Omega \subset \mathbb{R}^n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B_R(z) \subset \Omega &amp;lt;/math&amp;gt; con  &amp;lt;math&amp;gt; z \in \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)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para poder aplicarla a nuestro problema, vamos a tomar v=U+M, siendo &amp;lt;math&amp;gt; U(r,\theta)=\frac{r^2}{2R^2}sin(2\theta) &amp;lt;/math&amp;gt; la solución al problema en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;, y M el mínimo de &amp;lt;math&amp;gt; G(\theta)=R^2sin(\theta)cos(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;. Al hacer esto v va a ser una función armónica positiva a la que le podemos aplicar la desigualdad de Harnack.&lt;br /&gt;
&lt;br /&gt;
Primero vamos a aplicar la desigualdad variando el radio de la bola y a observar como varia la región que determina en función de esto. Para ello vamos a representar las cotas en escala logarítmica, lo cual nos permite observar mejor su comportamiento.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Representamos las cotas que nos da la desigualdad de Harnack&lt;br /&gt;
% para nuestro ejemplo.&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^2*sin(theta).*cos(theta); %Definimos la función u(r,theta)&lt;br /&gt;
g=@(theta,r) r^2*sin(theta).*cos(theta); %Definimos la función g&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
R = [1,2,10]; %Radios de las bolas&lt;br /&gt;
n = 2; %Dimensión del espacio&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
C=[&amp;quot;#0000FF&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#00FF00&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
for i=1:3&lt;br /&gt;
    r = 0:N^(-1):R(i); %Partición en r&lt;br /&gt;
    gR=g(theta,R(i));&lt;br /&gt;
    M1=min(gR); %Calculamos el mínimo de g en la frontera de la bola de radio R&lt;br /&gt;
    v1=@(r,theta) u(r,theta)-M1;&lt;br /&gt;
    A=@(r)R(i).^(n-2).*(R(i)-r)./(R(i)+r).^(n-1)*v1(0,0);&lt;br /&gt;
    B=@(r)R(i).^(n-2).*(R(i)+r)./(R(i)-r).^(n-1)*v1(0,0);&lt;br /&gt;
&lt;br /&gt;
    %Graficamos las cotas para los diferentes radios&lt;br /&gt;
    subplot(1,3,i)&lt;br /&gt;
    plot(r,log10(A(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(r,log10(B(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    axis([0 10,-3 6])&lt;br /&gt;
    xlabel('r');&lt;br /&gt;
    ylabel('log(Cotas)');&lt;br /&gt;
    title(['Cotas para r= ' num2str(R(i))]);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF44_1.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Lo más destacable en las 3 gráficas es que en todas ellas ambas restricciones se van al infinito cunado llegan al radio correspondiente a la bola en la que están calculadas. Esto tiene sentido ya que podemos observar que el denominador de la cota superior se anula cuando r=R y por lo tanto se va a infinito y su logaritmo también, y la cota inferior es 0 cuando r=R y por tanto su logaritmo se va a menos infinito. También podemos observar, que debido a esto, el pico que forman ambas restricciones es más estrecho cuando aumentamos el radio de la bola.&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo varían las restricciones si variamos la dimensión.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF442.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Al observar estas gráficas podemos observar que independientemente del radio cuando aumentamos la dimensión aumenta la región que definen ambas restricciones. Además, en n=3 el comportamiento sigue siendo el mismo que el comentado para n=2.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Poisson=&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a buscar una solución de la ecuación de Poisson en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u=f,\quad x\in\mathbb{R}^2. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ello vamos a utilizar la solución fundamental del laplaciano, que en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt; se define como &amp;lt;math&amp;gt; \Phi(x)=-\frac{1}{2\pi}log|x| &amp;lt;/math&amp;gt; y cumple que &amp;lt;math&amp;gt; \Delta \Phi(x)=-\delta_2(x) &amp;lt;/math&amp;gt;. Donde &amp;lt;math&amp;gt;\delta_2(x) &amp;lt;/math&amp;gt; es la delta de Dirac en dimensión 2.&lt;br /&gt;
&lt;br /&gt;
Si ahora consideramos el potencial logarítmico de la función f, que es la la convolución de la solución fundamental con f, entonces podríamos expresar la solución como: &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2}\Phi(x-y)f(y)dy &amp;lt;/math&amp;gt; y formalmente tenemos que: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u(x)=\int_{\mathbb{R}^2}\Delta_x\Phi(x-y)f(y)dy=- \int_{\mathbb{R}^2}\delta_2f(y)dy=-f(x),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pero esto no es correcto ya que el laplaciano de la solución fundamental no es integrable. A pesar de no ser correcto nos da la intuición de que el potencial logarítmico podría ser una posible  solución del problema.&lt;br /&gt;
&lt;br /&gt;
Ahora para solucionar esto vamos a tomar f como la función característica de la bola de radio 1 ya que de esta manera obtenemos el siguietne teorema: (Remark 3.35 pag 150)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver esto con el ejemplo concreto en el que la función f es la función característica en la bola de radio 1.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF52.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
N1=300; N2=300; %Número de puntos&lt;br /&gt;
a=0; b=1; c=0; d=2*pi; %Extremos de los intervalos&lt;br /&gt;
h1=(b-a)/N1; h2=(d-c)/N2;&lt;br /&gt;
r=a:h1:b; theta=c:h2:d; %Particiones de r y theta&lt;br /&gt;
[rr,tt]=meshgrid(r,theta); &lt;br /&gt;
w1=ones(N1+1,1);                &lt;br /&gt;
w1(1)=1/2; w1(N1+1)=1/2;&lt;br /&gt;
w2=ones(N2+1,1);                 &lt;br /&gt;
w2(1)=1/2; w2(N2+1)=1/2;&lt;br /&gt;
x11=-1:2/100:1; % Partición de x_1&lt;br /&gt;
x21=-1:2/100:1; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        f=-log(sqrt((x11(j)-rr.*cos(tt)).^2+(x21(i)-rr.*sin(tt)).^2)).*rr; %Potencial logaritmico               &lt;br /&gt;
        u1(i,j)=h1*h2*w2'*f*w1/(2*pi); %Solución del método del trapecio en 2 variable&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos la solución&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11,x21, u1, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución con el potencial logarítmico');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF5_1.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Representación de la solución asintótica&lt;br /&gt;
&lt;br /&gt;
M=pi; %Area del circulo de radio 1&lt;br /&gt;
f=@(x1,x2) -M/(2*pi).*log(sqrt(x1.^2+x2.^2)); % Función que describe el comportamiento asintótico&lt;br /&gt;
&lt;br /&gt;
N=200; %Número de intervalos&lt;br /&gt;
a=-1; b=1;                     &lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
x11=a:h:b; %Partición de x_1&lt;br /&gt;
x21=a:h:b; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
u=zeros(length(x11),length(x21));&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        u(i,j)=f(x11(i),x21(j)); %Evaluamos f en la malla de puntos&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos el resultado&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11, x21, u, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución cuando x tienda a \infty');&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF53.jpg|400px|thumb|right]]&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71524</id>
		<title>Ecuación de Laplace y de Poisson (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71524"/>
				<updated>2024-04-19T16:58:20Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Fórmula de Poisson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar  la ecuación de Laplace y la ecuación de Poisson. Para ello vamos a calcular soluciones de distintas formas usando cosas como la fórmula de Poisson o el potencial logarítmico, graficándolas y modificando algunos de los parámetros.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Laplace=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la exactitud que tienen dos formas diferentes de resolver la ecuación de Laplace. Para hacer esto tomamos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta u=0,&amp;amp; x\in B_1\\&lt;br /&gt;
u=g,&amp;amp; x\in\partial B_1&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt; B_1\subset\mathbb{R}^2 &amp;lt;/math&amp;gt; la bola de radio 1 centrada en el (0,0).&lt;br /&gt;
&lt;br /&gt;
==Fórmula de Poisson==&lt;br /&gt;
&lt;br /&gt;
Una de las formas de resolver este tipo de problemas es mediante la fórmula de Poisson, que es: &amp;lt;math&amp;gt; u=\frac{R^2-|x|^2}{2\pi R}\int_{\partial B_R}\frac{g(\sigma)}{|x-\sigma|^2} d\sigma, &amp;lt;/math&amp;gt; donde R es el radio de la bola y &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; la distancia al centro de la bola.&lt;br /&gt;
&lt;br /&gt;
Para ver cómo funciona esta fórmula vamos a resolver el problema tomando &amp;lt;math&amp;gt; g(\theta)=max \{0,1-\frac{2}{\pi}|\theta-\pi|\}&amp;lt;/math&amp;gt;. Como esta función, que es la que representa las condiciones frontera, está en coordenadas polares vamos a expresar la fórmula de Poisson en polares.&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}\int_{0}^{2\pi}g(s)\frac{R^2-r^2}{R^2+r^2-2rRcos(s-\theta)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la fórmula expresada de esta manera, podemos aplicarla a nuestro problema tomando R=1 y sustituyendo g por nuestra función. Teniendo esto en cuenta vamos a resolver el problema realizando la integral mediante la [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals regla del trapecio] y a representar la solución.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF41.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calcular la solución de la ecuación de Laplace  en la bola de radio&lt;br /&gt;
% unidad usando la fórmula de Poisson. Con condición frontera la función g&lt;br /&gt;
&lt;br /&gt;
g = @(theta) max(0,1-2/pi*abs(theta-pi)); %Definimos la función g(theta)&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):0.9; %Partición en r (no llegamos hasta el borde de la bola)&lt;br /&gt;
&lt;br /&gt;
w = ones(N+1,1);                 &lt;br /&gt;
w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
u = zeros(length(r)+1,length(theta));&lt;br /&gt;
for j = 1:length(theta)&lt;br /&gt;
    for i = 1:length(r)&lt;br /&gt;
        f = g(theta)*(1-r(i).^2)./(1+r(i).^2-2*r(i)*cos(theta-theta(j))); %Función a integrar&lt;br /&gt;
        u(i,j) = h*w'*f'/(2*pi); %Fórmula de Poison usando la fórmula del trapecio para integrar.&lt;br /&gt;
    end&lt;br /&gt;
    u(length(r)+1,j) = g(theta(j)); %Añadimos la condicón frontera directamente&lt;br /&gt;
end&lt;br /&gt;
r(length(r)+1) = 1;&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, u, 'EdgeColor', 'none');&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;
En la imagen podemos observar que la fórmula de Poisson nos da problemas en la frontera, esto se debe al carácter singular de la integral cerca del borde. Para solucionar esto vamos a tomar directamente el valor de g en el borde de la bola. Al hacer esto obtenemos la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF411.jpg|400px|thumb|center| Sustituyendo g en el borde de la bola]]&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas podemos observar que efectivamente sustituir g en el borde hace que evitemos la singularidad de la integral en la frontera.&lt;br /&gt;
&lt;br /&gt;
Como hemos visto con este ejemplo la fórmula de Poisson tiene problemas para aproximar la solución cerca de la frontera. Por lo que para estudiar esto, vamos a tomar &amp;lt;math&amp;gt; g(x,y)=xy &amp;lt;/math&amp;gt; como condición frontera y &amp;lt;math&amp;gt; u(x,y)=xy &amp;lt;/math&amp;gt; como solución del problema para calcular los diferentes errores que genera la fórmula de Poisson. &lt;br /&gt;
&lt;br /&gt;
Para hacerlo vamos a tomar tanto u como g en coordenadas polares, ya que al estudiar el problema en una bola esto nos permite hacernos una mejor idea de lo que ocurre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
U(r,\theta)=r^2cos(\theta)sin(\theta)\\&lt;br /&gt;
U(1,\theta)=G(\theta)=cos(\theta)sin(\theta)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Primero vamos a tomar un punto &amp;quot;lejos&amp;quot; de la frontera &amp;lt;math&amp;gt; (r,\theta)=(0.9,\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo evoluciona el error, es decir, la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson en ese punto, en función de n. Siendo n el número que determina el número de intervalos en &amp;lt;math&amp;gt; 10^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por el ejemplo anterior, cabe esperar que la fórmula en este punto aproxime bien a la función ya que no es un punto cercano a la frontera, y por lo tanto el error vaya disminuyendo según aumenta el número de intervalos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF42.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral mediante&lt;br /&gt;
% el método del trapecio en función del tamaño de la discretización&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 8; %Discretización máxima: 10^N_max&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for m = 1:N_max&lt;br /&gt;
    N = 10^m; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f = g(theta)*(1-0.9.^2)./(1+0.9.^2-2*0.9*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u = h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (0.9,pi/4)&lt;br /&gt;
    &lt;br /&gt;
    % Valor de la solución exacta (x*y=R^2*cos(theta)*sin(theta))&lt;br /&gt;
    % en el punto (0.9, pi/4)&lt;br /&gt;
    exacta = 0.9^2*cos(pi/4)*sin(pi/4); &lt;br /&gt;
&lt;br /&gt;
    % Calculamos el error como la diferencia en valor absoluto entre&lt;br /&gt;
    % la solución exacta y la calculada con la fórmula de Poisson&lt;br /&gt;
    err(m) = abs(exacta-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,log10(err),color='b',LineWidth=1.5) %Dibujamos la gráfica del error en escala logarítmica&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('log_{10}(error(10^n))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado antes, al observar la gráfica vemos que el error va disminuyendo según aumenta n. Esto tiene sentido ya que cuantos más intervalos hay en la discretización más exacta va a ser la aproximación. También podemos observar que se estabiliza cuando llega aproximadamente a &amp;lt;math&amp;gt; n=3 &amp;lt;/math&amp;gt;, esto se debe a que con &amp;lt;math&amp;gt; 10^3 &amp;lt;/math&amp;gt; intervalos el método del trapecio ya aproxima lo suficientemente bien a la función original, lo que hace que aunque aumente el número de intervalos la aproximación no tenga mucho margen de mejor. Con esto hemos visto que en un punto que no esté cerca del borde la fórmula de Poisson va a funcionar bien. &lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo se comporta el error según nos acercamos a la frontera. Para hacer esto vamos a tomar el punto &amp;lt;math&amp;gt; (r,\theta)=(1-10^{-n},\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo varía el error (la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson) cuando aumentamos la n, es decir, cuando nos vamos acercando a la frontera. Como hemos comentado anteriormente cabe esperar que al aumentar la n el error va a aumentar, ya que como hemos visto en el primer ejemplo cerca de la frontera la fórmula de Poisson da problemas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF421.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral según nos acercamos al&lt;br /&gt;
% borde de la región.&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 20;&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for n = 1:N_max&lt;br /&gt;
    N = 10^2; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f=g(theta)*(1-(1-10^(-n)).^2)./(1+(1-10^(-n)).^2-2*(1-10^(-n))*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u=h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (1-10^-n,pi/4)&lt;br /&gt;
    err(n)=abs((1-10^(-n))^2*cos(pi/4)*sin(pi/4)-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,err,color='b',LineWidth=1.5) %Dibujamos la gráfica del error&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('Error');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En la gráfica podemos ver cómo efectivamente el error para valores de n pequeños, es decir, puntos que están relativamente lejos de la frontera, el error es pequeño al igual que en el caso anterior. Por el contrario, según aumenta la n, es decir, según nos acercamos a la frontera el error aumenta, lo cual tiene sentido ya que como hemos comentado antes la fórmula de Poisson da problemas en la frontera.&lt;br /&gt;
&lt;br /&gt;
Además, podemos observar que el error se estabiliza aproximadamente en  &amp;lt;math&amp;gt; n=4 &amp;lt;/math&amp;gt;, esto se debe a que para este valor de n el punto ya esta suficientemente cerca de la frontera como para representar todo el error que se da en esta y por ello aunque nos acerquemos más a la frontera (aumente n) el error se mantiene estable en  &amp;lt;math&amp;gt; 0.5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Serie de Fourier==&lt;br /&gt;
La otra forma que vamos a ver para resolver la ecuación de Laplace es mediante [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) series de Fourier]. Para hacer esto vamos a tomar nuestro problema en coordenadas polares:&lt;br /&gt;
&lt;br /&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,&amp;amp; r\in(0,1),\theta\in[0,2\pi]\\&lt;br /&gt;
U(1,\theta)=G(\theta)=sin(\theta)cos(\theta),&amp;amp; \theta\in[0,2\pi]&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y a aplicar el método de separación de variables. Al hacer esto obtenemos que: &amp;lt;math&amp;gt; U(r,\theta)=\frac{a_0}{2}+\sum_{k=1}^\infty a_kr^kcos(k\theta)+b_kr^ksin(k\theta).&amp;lt;/math&amp;gt;. Para que esto sea solución falta hacer que cumpla la condición frontera, para ello vamos a tomar la serie de Fourier de &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; L^2([-\pi,\pi]) &amp;lt;/math&amp;gt;, que es &amp;lt;math&amp;gt; G(\theta)=\frac{\alpha_0}{2}+\sum_{k=1}^\infty \alpha_kcos(k\theta)+\beta_ksin(k\theta)&amp;lt;/math&amp;gt; y a igualar ambas series cuando r=1. Al hacer esto vemos que para que ambas series sean iguale los coeficientes tienen que ser iguales, por lo que vamos a calcular los coeficientes de  &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; y a ver su equivalencia con los de  &amp;lt;math&amp;gt; U &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; a_0=\alpha_0=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)d\theta \quad \quad \quad a_k=\alpha_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)cos(k\theta)d\theta \quad \quad \quad b_k=\beta_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)sin(k\theta)d\theta. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al realizar estas integrales obtenemos que &amp;lt;math&amp;gt; a_0=0,a_k=0\forall k &amp;lt;/math&amp;gt; y todos los &amp;lt;math&amp;gt; b_k &amp;lt;/math&amp;gt; son 0 excepto &amp;lt;math&amp;gt; b_2=\frac{1}{2} &amp;lt;/math&amp;gt;. Por lo que la solución nos queda de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}sin(2\theta) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a dibujar la solución, cuya gráfica va a ser exacta ya que la serie tiene un único término.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF43.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Dibujamos la solución calculada por serie de Fourier&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^(2).*sin(2.*theta)/2; %Solución de la ecuación&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):1; %Partición en r&lt;br /&gt;
for j = 1:N+1&lt;br /&gt;
    for i = 1:N+1&lt;br /&gt;
        U(i,j) = u(r(i),theta(j));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, U, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('y');&lt;br /&gt;
zlabel('u(x, y)');&lt;br /&gt;
title('Solución exacta calculada por serie de Fourier');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al haber resuelto el problema por ambos métodos, observamos que este último nos da la solución de forma exacta, por lo que en este caso va a ser más efectivo que el anterior. Esto no tendría porque ser así en todos los casos ya que la serie de Fourier para otra función G distinta puede tener infinitos términos, lo que haría que la aproximación no sea exacta, pero aun así sería más exacta que con el método anterior en los puntos cercanos a la forntera.&lt;br /&gt;
&lt;br /&gt;
==Desigualdad de Harnack==&lt;br /&gt;
&lt;br /&gt;
En esta sección vamos a usar la desigualdad de Harnack para obtener la región que contiene a todas las soluciones armónicas de la ecuación de Laplace que valen lo mismo en el origen que la solución que hemos calculado.&lt;br /&gt;
&lt;br /&gt;
La desigualdad de Harnack establece que dada una función &amp;lt;math&amp;gt; u\geq 0 &amp;lt;/math&amp;gt; armónica en &amp;lt;math&amp;gt; \Omega \subset \mathbb{R}^n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B_R(z) \subset \Omega &amp;lt;/math&amp;gt; con  &amp;lt;math&amp;gt; z \in \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)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para poder aplicarla a nuestro problema, vamos a tomar v=U+M, siendo &amp;lt;math&amp;gt; U(r,\theta)=\frac{r^2}{2R^2}sin(2\theta) &amp;lt;/math&amp;gt; la solución al problema en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;, y M el mínimo de &amp;lt;math&amp;gt; G(\theta)=R^2sin(\theta)cos(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;. Al hacer esto v va a ser una función armónica positiva a la que le podemos aplicar la desigualdad de Harnack.&lt;br /&gt;
&lt;br /&gt;
Primero vamos a aplicar la desigualdad variando el radio de la bola y a observar como varia la región que determina en función de esto. Para ello vamos a representar las cotas en escala logarítmica, lo cual nos permite observar mejor su comportamiento.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Representamos las cotas que nos da la desigualdad de Harnack&lt;br /&gt;
% para nuestro ejemplo.&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^2*sin(theta).*cos(theta); %Definimos la función u(r,theta)&lt;br /&gt;
g=@(theta,r) r^2*sin(theta).*cos(theta); %Definimos la función g&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
R = [1,2,10]; %Radios de las bolas&lt;br /&gt;
n = 2; %Dimensión del espacio&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
C=[&amp;quot;#0000FF&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#00FF00&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
for i=1:3&lt;br /&gt;
    r = 0:N^(-1):R(i); %Partición en r&lt;br /&gt;
    gR=g(theta,R(i));&lt;br /&gt;
    M1=min(gR); %Calculamos el mínimo de g en la frontera de la bola de radio R&lt;br /&gt;
    v1=@(r,theta) u(r,theta)-M1;&lt;br /&gt;
    A=@(r)R(i).^(n-2).*(R(i)-r)./(R(i)+r).^(n-1)*v1(0,0);&lt;br /&gt;
    B=@(r)R(i).^(n-2).*(R(i)+r)./(R(i)-r).^(n-1)*v1(0,0);&lt;br /&gt;
&lt;br /&gt;
    %Graficamos las cotas para los diferentes radios&lt;br /&gt;
    subplot(1,3,i)&lt;br /&gt;
    plot(r,log10(A(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(r,log10(B(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    axis([0 10,-3 6])&lt;br /&gt;
    xlabel('r');&lt;br /&gt;
    ylabel('log(Cotas)');&lt;br /&gt;
    title(['Cotas para r= ' num2str(R(i))]);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF44_1.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Lo más destacable en las 3 gráficas es que en todas ellas ambas restricciones se van al infinito cunado llegan al radio correspondiente a la bola en la que están calculadas. Esto tiene sentido ya que podemos observar que el denominador de la cota superior se anula cuando r=R y por lo tanto se va a infinito y su logaritmo también, y la cota inferior es 0 cuando r=R y por tanto su logaritmo se va a menos infinito. También podemos observar, que debido a esto, el pico que forman ambas restricciones es más estrecho cuando aumentamos el radio de la bola.&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo varían las restricciones si variamos la dimensión.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF442.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Al observar estas gráficas podemos observar que independientemente del radio cuando aumentamos la dimensión aumenta la región que definen ambas restricciones. Además, en n=3 el comportamiento sigue siendo el mismo que el comentado para n=2.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Poisson=&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a buscar una solución de la ecuación de Poisson en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u=f,\quad x\in\mathbb{R}^2. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ello vamos a utilizar la solución fundamental del laplaciano, que en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt; se define como &amp;lt;math&amp;gt; \Phi(x)=-\frac{1}{2\pi}log|x| &amp;lt;/math&amp;gt; y cumple que &amp;lt;math&amp;gt; \Delta \Phi(x)=-\delta_2(x) &amp;lt;/math&amp;gt;. Donde &amp;lt;math&amp;gt;\delta_2(x) &amp;lt;/math&amp;gt; es la delta de Dirac en dimensión 2.&lt;br /&gt;
&lt;br /&gt;
Si ahora consideramos el potencial logarítmico de la función f, que es la la convolución de la solución fundamental con f, entonces podríamos expresar la solución como: &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2}\Phi(x-y)f(y)dy &amp;lt;/math&amp;gt; y formalmente tenemos que: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u(x)=\int_{\mathbb{R}^2}\Delta_x\Phi(x-y)f(y)dy=- \int_{\mathbb{R}^2}\delta_2f(y)dy=-f(x),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pero esto no es correcto ya que el laplaciano de la solución fundamental no es integrable. A pesar de no ser correcto nos da la intuición de que el potencial logarítmico podría ser una posible  solución del problema.&lt;br /&gt;
&lt;br /&gt;
Ahora para solucionar esto vamos a tomar f como la función característica de la bola de radio 1 ya que de esta manera obtenemos el siguietne teorema: (Remark 3.35 pag 150)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver esto con el ejemplo concreto en el que la función f es la función característica en la bola de radio 1.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF52.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
N1=300; N2=300; %Número de puntos&lt;br /&gt;
a=0; b=1; c=0; d=2*pi; %Extremos de los intervalos&lt;br /&gt;
h1=(b-a)/N1; h2=(d-c)/N2;&lt;br /&gt;
r=a:h1:b; theta=c:h2:d; %Particiones de r y theta&lt;br /&gt;
[rr,tt]=meshgrid(r,theta); &lt;br /&gt;
w1=ones(N1+1,1);                &lt;br /&gt;
w1(1)=1/2; w1(N1+1)=1/2;&lt;br /&gt;
w2=ones(N2+1,1);                 &lt;br /&gt;
w2(1)=1/2; w2(N2+1)=1/2;&lt;br /&gt;
x11=-1:2/100:1; % Partición de x_1&lt;br /&gt;
x21=-1:2/100:1; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        f=-log(sqrt((x11(j)-rr.*cos(tt)).^2+(x21(i)-rr.*sin(tt)).^2)).*rr; %Potencial logaritmico               &lt;br /&gt;
        u1(i,j)=h1*h2*w2'*f*w1/(2*pi); %Solución del método del trapecio en 2 variable&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos la solución&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11,x21, u1, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución con el potencial logarítmico');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF5_1.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Representación de la solución asintótica&lt;br /&gt;
&lt;br /&gt;
M=pi; %Area del circulo de radio 1&lt;br /&gt;
f=@(x1,x2) -M/(2*pi).*log(sqrt(x1.^2+x2.^2)); % Función que describe el comportamiento asintótico&lt;br /&gt;
&lt;br /&gt;
N=200; %Número de intervalos&lt;br /&gt;
a=-1; b=1;                     &lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
x11=a:h:b; %Partición de x_1&lt;br /&gt;
x21=a:h:b; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
u=zeros(length(x11),length(x21));&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        u(i,j)=f(x11(i),x21(j)); %Evaluamos f en la malla de puntos&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos el resultado&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11, x21, u, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución cuando x tienda a \infty');&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF53.jpg|400px|thumb|right]]&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71522</id>
		<title>Ecuación de Laplace y de Poisson (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=71522"/>
				<updated>2024-04-19T16:57:12Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Fórmula de Poisson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar  la ecuación de Laplace y la ecuación de Poisson. Para ello vamos a calcular soluciones de distintas formas usando cosas como la fórmula de Poisson o el potencial logarítmico, graficándolas y modificando algunos de los parámetros.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Laplace=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la exactitud que tienen dos formas diferentes de resolver la ecuación de Laplace. Para hacer esto tomamos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta u=0,&amp;amp; x\in B_1\\&lt;br /&gt;
u=g,&amp;amp; x\in\partial B_1&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt; B_1\subset\mathbb{R}^2 &amp;lt;/math&amp;gt; la bola de radio 1 centrada en el (0,0).&lt;br /&gt;
&lt;br /&gt;
==Fórmula de Poisson==&lt;br /&gt;
&lt;br /&gt;
Una de las formas de resolver este tipo de problemas es mediante la fórmula de Poisson, que es: &amp;lt;math&amp;gt; u=\frac{R^2-|x|^2}{2\pi R}\int_{\partial B_R}\frac{g(\sigma)}{|x-\sigma|^2} d\sigma, &amp;lt;/math&amp;gt; donde R es el radio de la bola y &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; la distancia al centro de la bola.&lt;br /&gt;
&lt;br /&gt;
Para ver cómo funciona esta fórmula vamos a resolver el problema tomando &amp;lt;math&amp;gt; g(\theta)=max \{0,1-\frac{2}{\pi}|\theta-\pi|\}&amp;lt;/math&amp;gt;. Como esta función, que es la que representa las condiciones frontera, está en coordenadas polares vamos a expresar la fórmula de Poisson en polares.&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}\int_{0}^{2\pi}g(s)\frac{R^2-r^2}{R^2+r^2-2rRcos(s-\theta)} ds. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la fórmula expresada de esta manera, podemos aplicarla a nuestro problema tomando R=1 y sustituyendo g por nuestra función. Teniendo esto en cuenta vamos a resolver el problema realizando la integral mediante la [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals regla del trapecio] y a representar la solución.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF41.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calcular la solución de la ecuación de Laplace  en la bola de radio&lt;br /&gt;
% unidad usando la fórmula de Poisson. Con condición frontera la función g&lt;br /&gt;
&lt;br /&gt;
g = @(theta) max(0,1-2/pi*abs(theta-pi)); %Definimos la función g(theta)&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):0.9; %Partición en r (no llegamos hasta el borde de la bola)&lt;br /&gt;
&lt;br /&gt;
w = ones(N+1,1);                 &lt;br /&gt;
w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
u = zeros(length(r)+1,length(theta));&lt;br /&gt;
for j = 1:length(theta)&lt;br /&gt;
    for i = 1:length(r)&lt;br /&gt;
        f = g(theta)*(1-r(i).^2)./(1+r(i).^2-2*r(i)*cos(theta-theta(j))); %Función a integrar&lt;br /&gt;
        u(i,j) = h*w'*f'/(2*pi); %Fórmula de Poison usando la fórmula del trapecio para integrar.&lt;br /&gt;
    end&lt;br /&gt;
    u(length(r)+1,j) = g(theta(j)); %Añadimos la condicón frontera directamente&lt;br /&gt;
end&lt;br /&gt;
r(length(r)+1) = 1;&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, u, 'EdgeColor', 'none');&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;
En la imagen podemos observar que la fórmula de Poisson nos da problemas en la frontera, esto se debe al carácter singular de la integral cerca del borde. Para solucionar esto vamos a tomar directamente el valor de g en el borde de la bola. Al hacer esto obtenemos la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF411.jpg|400px|thumb|center| Sustituyendo g en el borde de la bola]]&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas podemos observar que efectivamente sustituir g en el borde hace que evitemos la singularidad de la integral en la frontera.&lt;br /&gt;
&lt;br /&gt;
Como hemos visto con este ejemplo la fórmula de Poisson tiene problemas para aproximar la solución cerca de la frontera. Por lo que para estudiar esto, vamos a tomar &amp;lt;math&amp;gt; g(x,y)=xy &amp;lt;/math&amp;gt; como condición frontera y &amp;lt;math&amp;gt; u(x,y)=xy &amp;lt;/math&amp;gt; como solución del problema para calcular los diferentes errores que genera la fórmula de Poisson. &lt;br /&gt;
&lt;br /&gt;
Para hacerlo vamos a tomar tanto u como g en coordenadas polares, ya que al estudiar el problema en una bola esto nos permite hacernos una mejor idea de lo que ocurre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
U(r,\theta)=r^2cos(\theta)sin(\theta)\\&lt;br /&gt;
U(1,\theta)=G(\theta)=cos(\theta)sin(\theta)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Primero vamos a tomar un punto &amp;quot;lejos&amp;quot; de la frontera &amp;lt;math&amp;gt; (r,\theta)=(0.9,\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo evoluciona el error, es decir, la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson en ese punto, en función de n. Siendo n el número que determina el número de intervalos en &amp;lt;math&amp;gt; 10^n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por el ejemplo anterior, cabe esperar que la fórmula en este punto aproxime bien a la función ya que no es un punto cercano a la frontera, y por lo tanto el error vaya disminuyendo según aumenta el número de intervalos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF42.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral mediante&lt;br /&gt;
% el método del trapecio en función del tamaño de la discretización&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 8; %Discretización máxima: 10^N_max&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for m = 1:N_max&lt;br /&gt;
    N = 10^m; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f = g(theta)*(1-0.9.^2)./(1+0.9.^2-2*0.9*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u = h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (0.9,pi/4)&lt;br /&gt;
    &lt;br /&gt;
    % Valor de la solución exacta (x*y=R^2*cos(theta)*sin(theta))&lt;br /&gt;
    % en el punto (0.9, pi/4)&lt;br /&gt;
    exacta = 0.9^2*cos(pi/4)*sin(pi/4); &lt;br /&gt;
&lt;br /&gt;
    % Calculamos el error como la diferencia en valor absoluto entre&lt;br /&gt;
    % la solución exacta y la calculada con la fórmula de Poisson&lt;br /&gt;
    err(m) = abs(exacta-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,log10(err),color='b',LineWidth=1.5) %Dibujamos la gráfica del error en escala logarítmica&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('log_{10}(error(10^n))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado antes, al observar la gráfica vemos que el error va disminuyendo según aumenta n. Esto tiene sentido ya que cuantos más intervalos hay en la discretización más exacta va a ser la aproximación. También podemos observar que se estabiliza cuando llega aproximadamente a &amp;lt;math&amp;gt; n=3 &amp;lt;/math&amp;gt;, esto se debe a que con &amp;lt;math&amp;gt; 10^3 &amp;lt;/math&amp;gt; intervalos el método del trapecio ya aproxima lo suficientemente bien a la función original, lo que hace que aunque aumenete el número de intervalos la aproximación no tenga mucho margen de mejor. Con esto hemos visto que en un punto que no esté cerca del borde la fórmula de Poisson va a funcionar bien. &lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo se comporta el error según nos acercamos a la frontera. Para hacer esto vamos a tomar el punto &amp;lt;math&amp;gt; (r,\theta)=(1-10^{-n},\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo varía el error (la diferencia entre el valor real de u y el valor de la aproximación por la fórmula de Poisson) cuando aumentamos la n, es decir, cuando nos vamos acercando a la frontera. Como hemos comentado anteriormente cabe esperar que al aumentar la n el error va a aumentar, ya que como hemos visto en el primer ejemplo cerca de la frontera la fórmula de Poisson da problemas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF421.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral según nos acercamos al&lt;br /&gt;
% borde de la región.&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 20;&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for n = 1:N_max&lt;br /&gt;
    N = 10^2; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f=g(theta)*(1-(1-10^(-n)).^2)./(1+(1-10^(-n)).^2-2*(1-10^(-n))*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u=h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (1-10^-n,pi/4)&lt;br /&gt;
    err(n)=abs((1-10^(-n))^2*cos(pi/4)*sin(pi/4)-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,err,color='b',LineWidth=1.5) %Dibujamos la gráfica del error&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('Error');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En la gráfica podemos ver cómo efectivamente el error para valores de n pequeños, es decir, puntos que están relativamente lejos de la frontera, el error es pequeño al igual que en el caso anterior. Por el contrario, según aumenta la n, es decir, según nos acercamos a la frontera el error aumenta, lo cual tiene sentido ya que como hemos comentado antes la fórmula de Poisson da problemas en la frontera.&lt;br /&gt;
&lt;br /&gt;
Además, podemos observar que el error se estabiliza aproximadamente en  &amp;lt;math&amp;gt; n=4 &amp;lt;/math&amp;gt;, esto se debe a que para este valor de n el punto ya esta suficientemente cerca de la frontera como para representar todo el error que se da en esta y por ello aunque nos acerquemos más a la frontera (aumente n) el error se mantiene estable en  &amp;lt;math&amp;gt; 0.5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Serie de Fourier==&lt;br /&gt;
La otra forma que vamos a ver para resolver la ecuación de Laplace es mediante [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) series de Fourier]. Para hacer esto vamos a tomar nuestro problema en coordenadas polares:&lt;br /&gt;
&lt;br /&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,&amp;amp; r\in(0,1),\theta\in[0,2\pi]\\&lt;br /&gt;
U(1,\theta)=G(\theta)=sin(\theta)cos(\theta),&amp;amp; \theta\in[0,2\pi]&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y a aplicar el método de separación de variables. Al hacer esto obtenemos que: &amp;lt;math&amp;gt; U(r,\theta)=\frac{a_0}{2}+\sum_{k=1}^\infty a_kr^kcos(k\theta)+b_kr^ksin(k\theta).&amp;lt;/math&amp;gt;. Para que esto sea solución falta hacer que cumpla la condición frontera, para ello vamos a tomar la serie de Fourier de &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; L^2([-\pi,\pi]) &amp;lt;/math&amp;gt;, que es &amp;lt;math&amp;gt; G(\theta)=\frac{\alpha_0}{2}+\sum_{k=1}^\infty \alpha_kcos(k\theta)+\beta_ksin(k\theta)&amp;lt;/math&amp;gt; y a igualar ambas series cuando r=1. Al hacer esto vemos que para que ambas series sean iguale los coeficientes tienen que ser iguales, por lo que vamos a calcular los coeficientes de  &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; y a ver su equivalencia con los de  &amp;lt;math&amp;gt; U &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; a_0=\alpha_0=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)d\theta \quad \quad \quad a_k=\alpha_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)cos(k\theta)d\theta \quad \quad \quad b_k=\beta_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)sin(k\theta)d\theta. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al realizar estas integrales obtenemos que &amp;lt;math&amp;gt; a_0=0,a_k=0\forall k &amp;lt;/math&amp;gt; y todos los &amp;lt;math&amp;gt; b_k &amp;lt;/math&amp;gt; son 0 excepto &amp;lt;math&amp;gt; b_2=\frac{1}{2} &amp;lt;/math&amp;gt;. Por lo que la solución nos queda de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}sin(2\theta) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a dibujar la solución, cuya gráfica va a ser exacta ya que la serie tiene un único término.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF43.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Dibujamos la solución calculada por serie de Fourier&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^(2).*sin(2.*theta)/2; %Solución de la ecuación&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):1; %Partición en r&lt;br /&gt;
for j = 1:N+1&lt;br /&gt;
    for i = 1:N+1&lt;br /&gt;
        U(i,j) = u(r(i),theta(j));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, U, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('y');&lt;br /&gt;
zlabel('u(x, y)');&lt;br /&gt;
title('Solución exacta calculada por serie de Fourier');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al haber resuelto el problema por ambos métodos, observamos que este último nos da la solución de forma exacta, por lo que en este caso va a ser más efectivo que el anterior. Esto no tendría porque ser así en todos los casos ya que la serie de Fourier para otra función G distinta puede tener infinitos términos, lo que haría que la aproximación no sea exacta, pero aun así sería más exacta que con el método anterior en los puntos cercanos a la forntera.&lt;br /&gt;
&lt;br /&gt;
==Desigualdad de Harnack==&lt;br /&gt;
&lt;br /&gt;
En esta sección vamos a usar la desigualdad de Harnack para obtener la región que contiene a todas las soluciones armónicas de la ecuación de Laplace que valen lo mismo en el origen que la solución que hemos calculado.&lt;br /&gt;
&lt;br /&gt;
La desigualdad de Harnack establece que dada una función &amp;lt;math&amp;gt; u\geq 0 &amp;lt;/math&amp;gt; armónica en &amp;lt;math&amp;gt; \Omega \subset \mathbb{R}^n&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B_R(z) \subset \Omega &amp;lt;/math&amp;gt; con  &amp;lt;math&amp;gt; z \in \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)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para poder aplicarla a nuestro problema, vamos a tomar v=U+M, siendo &amp;lt;math&amp;gt; U(r,\theta)=\frac{r^2}{2R^2}sin(2\theta) &amp;lt;/math&amp;gt; la solución al problema en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;, y M el mínimo de &amp;lt;math&amp;gt; G(\theta)=R^2sin(\theta)cos(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;. Al hacer esto v va a ser una función armónica positiva a la que le podemos aplicar la desigualdad de Harnack.&lt;br /&gt;
&lt;br /&gt;
Primero vamos a aplicar la desigualdad variando el radio de la bola y a observar como varia la región que determina en función de esto. Para ello vamos a representar las cotas en escala logarítmica, lo cual nos permite observar mejor su comportamiento.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Representamos las cotas que nos da la desigualdad de Harnack&lt;br /&gt;
% para nuestro ejemplo.&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^2*sin(theta).*cos(theta); %Definimos la función u(r,theta)&lt;br /&gt;
g=@(theta,r) r^2*sin(theta).*cos(theta); %Definimos la función g&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
R = [1,2,10]; %Radios de las bolas&lt;br /&gt;
n = 2; %Dimensión del espacio&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
C=[&amp;quot;#0000FF&amp;quot;,&amp;quot;#FF0000&amp;quot;,&amp;quot;#00FF00&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
for i=1:3&lt;br /&gt;
    r = 0:N^(-1):R(i); %Partición en r&lt;br /&gt;
    gR=g(theta,R(i));&lt;br /&gt;
    M1=min(gR); %Calculamos el mínimo de g en la frontera de la bola de radio R&lt;br /&gt;
    v1=@(r,theta) u(r,theta)-M1;&lt;br /&gt;
    A=@(r)R(i).^(n-2).*(R(i)-r)./(R(i)+r).^(n-1)*v1(0,0);&lt;br /&gt;
    B=@(r)R(i).^(n-2).*(R(i)+r)./(R(i)-r).^(n-1)*v1(0,0);&lt;br /&gt;
&lt;br /&gt;
    %Graficamos las cotas para los diferentes radios&lt;br /&gt;
    subplot(1,3,i)&lt;br /&gt;
    plot(r,log10(A(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(r,log10(B(r)),Color=C(i),LineWidth=1.5)&lt;br /&gt;
    axis([0 10,-3 6])&lt;br /&gt;
    xlabel('r');&lt;br /&gt;
    ylabel('log(Cotas)');&lt;br /&gt;
    title(['Cotas para r= ' num2str(R(i))]);&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF44_1.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Lo más destacable en las 3 gráficas es que en todas ellas ambas restricciones se van al infinito cunado llegan al radio correspondiente a la bola en la que están calculadas. Esto tiene sentido ya que podemos observar que el denominador de la cota superior se anula cuando r=R y por lo tanto se va a infinito y su logaritmo también, y la cota inferior es 0 cuando r=R y por tanto su logaritmo se va a menos infinito. También podemos observar, que debido a esto, el pico que forman ambas restricciones es más estrecho cuando aumentamos el radio de la bola.&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver cómo varían las restricciones si variamos la dimensión.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF442.jpg|800px|thumb|center|Desigualdad de Harnack]]&lt;br /&gt;
&lt;br /&gt;
Al observar estas gráficas podemos observar que independientemente del radio cuando aumentamos la dimensión aumenta la región que definen ambas restricciones. Además, en n=3 el comportamiento sigue siendo el mismo que el comentado para n=2.&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Poisson=&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a buscar una solución de la ecuación de Poisson en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u=f,\quad x\in\mathbb{R}^2. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ello vamos a utilizar la solución fundamental del laplaciano, que en &amp;lt;math&amp;gt; \mathbb{R}^2 &amp;lt;/math&amp;gt; se define como &amp;lt;math&amp;gt; \Phi(x)=-\frac{1}{2\pi}log|x| &amp;lt;/math&amp;gt; y cumple que &amp;lt;math&amp;gt; \Delta \Phi(x)=-\delta_2(x) &amp;lt;/math&amp;gt;. Donde &amp;lt;math&amp;gt;\delta_2(x) &amp;lt;/math&amp;gt; es la delta de Dirac en dimensión 2.&lt;br /&gt;
&lt;br /&gt;
Si ahora consideramos el potencial logarítmico de la función f, que es la la convolución de la solución fundamental con f, entonces podríamos expresar la solución como: &amp;lt;math&amp;gt; u(x)=\int_{\mathbb{R}^2}\Phi(x-y)f(y)dy &amp;lt;/math&amp;gt; y formalmente tenemos que: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \Delta u(x)=\int_{\mathbb{R}^2}\Delta_x\Phi(x-y)f(y)dy=- \int_{\mathbb{R}^2}\delta_2f(y)dy=-f(x),&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pero esto no es correcto ya que el laplaciano de la solución fundamental no es integrable. A pesar de no ser correcto nos da la intuición de que el potencial logarítmico podría ser una posible  solución del problema.&lt;br /&gt;
&lt;br /&gt;
Ahora para solucionar esto vamos a tomar f como la función característica de la bola de radio 1 ya que de esta manera obtenemos el siguietne teorema: (Remark 3.35 pag 150)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a ver esto con el ejemplo concreto en el que la función f es la función característica en la bola de radio 1.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF52.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
N1=300; N2=300; %Número de puntos&lt;br /&gt;
a=0; b=1; c=0; d=2*pi; %Extremos de los intervalos&lt;br /&gt;
h1=(b-a)/N1; h2=(d-c)/N2;&lt;br /&gt;
r=a:h1:b; theta=c:h2:d; %Particiones de r y theta&lt;br /&gt;
[rr,tt]=meshgrid(r,theta); &lt;br /&gt;
w1=ones(N1+1,1);                &lt;br /&gt;
w1(1)=1/2; w1(N1+1)=1/2;&lt;br /&gt;
w2=ones(N2+1,1);                 &lt;br /&gt;
w2(1)=1/2; w2(N2+1)=1/2;&lt;br /&gt;
x11=-1:2/100:1; % Partición de x_1&lt;br /&gt;
x21=-1:2/100:1; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        f=-log(sqrt((x11(j)-rr.*cos(tt)).^2+(x21(i)-rr.*sin(tt)).^2)).*rr; %Potencial logaritmico               &lt;br /&gt;
        u1(i,j)=h1*h2*w2'*f*w1/(2*pi); %Solución del método del trapecio en 2 variable&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos la solución&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11,x21, u1, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución con el potencial logarítmico');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF5_1.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%Representación de la solución asintótica&lt;br /&gt;
&lt;br /&gt;
M=pi; %Area del circulo de radio 1&lt;br /&gt;
f=@(x1,x2) -M/(2*pi).*log(sqrt(x1.^2+x2.^2)); % Función que describe el comportamiento asintótico&lt;br /&gt;
&lt;br /&gt;
N=200; %Número de intervalos&lt;br /&gt;
a=-1; b=1;                     &lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
x11=a:h:b; %Partición de x_1&lt;br /&gt;
x21=a:h:b; %Partición de x_2&lt;br /&gt;
&lt;br /&gt;
u=zeros(length(x11),length(x21));&lt;br /&gt;
for j=1:length(x11)&lt;br /&gt;
    for i=1:length(x21)&lt;br /&gt;
        u(i,j)=f(x11(i),x21(j)); %Evaluamos f en la malla de puntos&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Graficamos el resultado&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(x11, x21, u, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x_1');&lt;br /&gt;
ylabel('x_2');&lt;br /&gt;
zlabel('u(x_1, x_2)');&lt;br /&gt;
title('Solución cuando x tienda a \infty');&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF53.jpg|400px|thumb|right]]&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=70645</id>
		<title>Ecuación de Laplace y de Poisson (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=70645"/>
				<updated>2024-04-17T18:01:05Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Desigualdad de Harnack */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar las soluciones de la ecuación de Poisson y de Laplace &lt;br /&gt;
&lt;br /&gt;
=Preliminares=&lt;br /&gt;
&amp;lt;math&amp;gt; u &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Laplace=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la exactitud que tienen dos formas diferentes de resolver la ecuación de Laplace. Para hacer esto tomamos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta u=0, x\in B_1\\&lt;br /&gt;
u=g, x\in\partial B_1&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt; B_1\subset\mathbb{R}^2 &amp;lt;/math&amp;gt; la bola de radio 1 centrada en el (0,0).&lt;br /&gt;
&lt;br /&gt;
==Fórmula de Poisson==&lt;br /&gt;
&lt;br /&gt;
Una de las formas de resolver este tipo de problemas es mediante la fórmula de Poisson:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; u=\frac{R^2-|x|^2}{2\pi R}\int_{\partial B_R}\frac{g(\sigma)}{|x-\sigma|^2} d\sigma, &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
siendo R el radio de la bola y &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; la distancia al centro de la bola.&lt;br /&gt;
&lt;br /&gt;
Para ver cómo funciona esta fórmula vamos a resolver el problema tomando &amp;lt;math&amp;gt; g(\theta)=max \{0,1-\frac{2}{\pi}|\theta-\pi|\}&amp;lt;/math&amp;gt;. Como esta función que es la que representa las condiciones frontera del problema está en coordenadas polares, para poder resolver el problema con la fórmula de Poisson tenemos que pasar esta a polares.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; U(r,\theta)=\frac{R^2-r^2}{2\pi}\int_{0}^{2\pi}g(s)\frac{R^2-r^2}{R^2+r^2-2rRcos(s-\theta)} ds, &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la fórmula expresada de esta manera, podemos aplicarla a nuestro problema tomando R=1 y sustituyendo g por nuestra función. Teniendo todo esto en cuenta vamos a resolver el problema realizando la integral mediante la [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals regla del trapecio] y a representar la solución.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF41.jpg|400px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
En la imagen podemos observar que la fórmula de Poisson nos da problemas en la frontera, por lo que en estos puntos vamos a tomar directamente el valor de g lo que nos da lugar a la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF411.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calcular la solución de la ecuación de Laplace  en la bola de radio&lt;br /&gt;
% unidad usando la fórmula de Poisson. Con condición frontera la función g&lt;br /&gt;
&lt;br /&gt;
g = @(theta) max(0,1-2/pi*abs(theta-pi)); %Definimos la función g(theta)&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):0.9; %Partición en r (no llegamos hasta el borde de la bola)&lt;br /&gt;
&lt;br /&gt;
w = ones(N+1,1);                 &lt;br /&gt;
w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
u = zeros(length(r)+1,length(theta));&lt;br /&gt;
for j = 1:length(theta)&lt;br /&gt;
    for i = 1:length(r)&lt;br /&gt;
        f = g(theta)*(1-r(i).^2)./(1+r(i).^2-2*r(i)*cos(theta-theta(j))); %Función a integrar&lt;br /&gt;
        u(i,j) = h*w'*f'/(2*pi); %Fórmula de Poison usando la fórmula del trapecio para integrar.&lt;br /&gt;
    end&lt;br /&gt;
    u(length(r)+1,j) = g(theta(j)); %Añadimos la condicón frontera directamente&lt;br /&gt;
end&lt;br /&gt;
r(length(r)+1) = 1;&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, u, 'EdgeColor', 'none');&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;
&lt;br /&gt;
Como hemos visto con este ejemplo, la fórmula de Poisson tiene problemas para aproximar la solución cerca de la frontera debido al carácter singular de la integral. Por lo que ahora para estudiar esto, vamos a tomar &amp;lt;math&amp;gt; g(x,y)=xy &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; u(x,y)=xy &amp;lt;/math&amp;gt; para calcular los diferentes errores que genera la fórmula del trapecio. &lt;br /&gt;
!!!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
U(r,\theta)=r^2cos(\theta)sin(\theta)\\&lt;br /&gt;
U(1,\theta)=G(\theta)=cos(\theta)sin(\theta)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Primero vamos a tomar un punto &amp;quot;lejos&amp;quot; de la frontera &amp;lt;math&amp;gt; (r,\theta)=(0.9,\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo evoluciona el error en función del número de intervalos que tomamos para la fórmula del trapecio. Por el ejemplo anterior, cabe esperar que la fórmula en ese punto aproxime bien a la función y por lo tanto el error vaya disminuyendo según aumenta el número de intervalos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF42.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral mediante&lt;br /&gt;
% el método del trapecio en función del tamaño de la discretización&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 8; %Discretización máxima: 10^N_max&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for m = 1:N_max&lt;br /&gt;
    N = 10^m; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f = g(theta)*(1-0.9.^2)./(1+0.9.^2-2*0.9*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u = h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (0.9,pi/4)&lt;br /&gt;
    &lt;br /&gt;
    % Valor de la solución exacta (x*y=R^2*cos(theta)*sin(theta))&lt;br /&gt;
    % en el punto (0.9, pi/4)&lt;br /&gt;
    exacta = 0.9^2*cos(pi/4)*sin(pi/4); &lt;br /&gt;
&lt;br /&gt;
    % Calculamos el error como la diferencia en valor absoluto entre&lt;br /&gt;
    % la solución exacta y la calculada con la fórmula de Poisson&lt;br /&gt;
    err(m) = abs(exacta-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,log10(err),color='b',LineWidth=1.5) %Dibujamos la gráfica del error en escala logarítmica&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('log_{10}(error(10^n))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado antes, al observar la gráfica vemos que el error va disminuyendo hasta que se estabiliza cuando llega a &amp;lt;math&amp;gt; 10^{-14} &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Con esto hemos visto que en un punto que no esté cerca del borde la fórmula de Poisson funciona bien. Ahora vamos a ver cómo se comporta el error según acercamos el punto a la frontera. Para hacer esto vamos a tomar el punto &amp;lt;math&amp;gt; (r,\theta)=(1-10^{-n},\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo varía el error cuando aumentamos la n. Como hemos comentado anteriormente cabe esperar que al aumentar la n el error va a aumentar, ya que como hemos visto en el primer ejemplo en la frontera la fórmula de Poisson da problemas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF421.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral según nos acercamos al&lt;br /&gt;
% borde de la región.&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 20;&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for n = 1:N_max&lt;br /&gt;
    N = 10^2; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f=g(theta)*(1-(1-10^(-n)).^2)./(1+(1-10^(-n)).^2-2*(1-10^(-n))*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u=h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (1-10^-n,pi/4)&lt;br /&gt;
    err(n)=abs((1-10^(-n))^2*cos(pi/4)*sin(pi/4)-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,err,color='b',LineWidth=1.5) %Dibujamos la gráfica del error&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('Error');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En la gráfica podemos ver cómo efectivamente el error crece rápidamente al principio hasta que el punto está a una distancia de &amp;lt;math&amp;gt;10^{-4}&amp;lt;/math&amp;gt;, cuando el error se estabiliza. Esto se debe a que... :)&lt;br /&gt;
&lt;br /&gt;
==Serie de Fourier==&lt;br /&gt;
La otra forma que vamos a ver para resolver la ecuación de Laplace es mediante [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) series de Fourier]. Para hacer esto vamos a tomar nuestro problema en coordenadas polares:&lt;br /&gt;
&lt;br /&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,1),\theta\in[0,2\pi]\\&lt;br /&gt;
U(1,\theta)=G(\theta)=sin(\theta)cos(\theta), \theta\in[0,2\pi]&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y aplicar el método de separación de variables, haciendo esto obtenemos que: &amp;lt;math&amp;gt; U(r,\theta)=\frac{a_0}{2}+\sum_{k=1}^\infty a_kr^kcos(k\theta)+b_kr^ksin(k\theta).&amp;lt;/math&amp;gt; Para que esto sea solución falta hacer que cumpla la condición frontera, para ello vamos a tomar la serie de fourier de &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; L^2([-\pi,\pi]) &amp;lt;/math&amp;gt;, que es &amp;lt;math&amp;gt; G(\theta)=\frac{\alpha_0}{2}+\sum_{k=1}^\infty \alpha_kcos(k\theta)+\beta_ksin(k\theta)&amp;lt;/math&amp;gt;, y a igualar ambas series cuando r=1, lo que hace que los coeficientes tengan que ser iguales.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; a_0=\alpha_0=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)d\theta. &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; a_k=\alpha_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)cos(k\theta)d\theta. &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; b_k=\beta_k=\frac{1}{\pi}\int_{-\pi}^\pi G(\theta)sin(k\theta)d\theta. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al realizar estas integrales obtenemos que &amp;lt;math&amp;gt; a_0=0,a_k=0\forall k &amp;lt;/math&amp;gt; y todos los &amp;lt;math&amp;gt; b_k &amp;lt;/math&amp;gt; son 0 excepto &amp;lt;math&amp;gt; b_2=\frac{1}{2} &amp;lt;/math&amp;gt;. Por lo que la solución nos queda de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U(r,\theta)=\frac{r^2}{2}sin(2\theta) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora dibujamos la solución.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF43.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Dibujamos la solución calculada por serie de Fourier&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^(2).*sin(2.*theta)/2; %Solución de la ecuación&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):1; %Partición en r&lt;br /&gt;
for j = 1:N+1&lt;br /&gt;
    for i = 1:N+1&lt;br /&gt;
        U(i,j) = u(r(i),theta(j));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, U, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('y');&lt;br /&gt;
zlabel('u(x, y)');&lt;br /&gt;
title('Solución exacta calculada por serie de Fourier');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Desigualdad de Harnack==&lt;br /&gt;
&lt;br /&gt;
INTRO&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a aplicar la desigualdad de Harnack, para ello vamos a tomar v=U+M siendo &amp;lt;math&amp;gt; U(r,\theta)=\frac{r^2}{2R^2}sin(2\theta) &amp;lt;/math&amp;gt; la solución al problema en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;, y M el máximo de &amp;lt;math&amp;gt; G(\theta)=R^2sin(\theta)cos(\theta) &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; B_R &amp;lt;/math&amp;gt;. Al hacer esto v va a ser una función armónica positiva a la que le podemos aplicar la desigualdad de Harnack.&lt;br /&gt;
&lt;br /&gt;
En esta sección vamos a usar la desigualdad de Harnack para obtener la región que contiene a todas las soluciones armónicas de la ecuación de Laplace que valen lo mismo en el origen que la solución que hemos calculado.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Representamos las cotas que nos da la desigualdad de Harnack&lt;br /&gt;
% para nuestro ejemplo.&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^2*sin(theta).*cos(theta); %Definimos la función u(r,theta)&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
R = 1; %Radio de la bola&lt;br /&gt;
n = 2; %Dimensión del espacio&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):1; %Partición en r&lt;br /&gt;
&lt;br /&gt;
g=u(R,theta);&lt;br /&gt;
M=min(g); %Calculamos el mínimo de g en la frontera de la bola de radio R&lt;br /&gt;
v=@(r,theta) u(r,theta)-M;&lt;br /&gt;
%Calculamos las cotas de la desigualdad de Harnack&lt;br /&gt;
A=@(r)R.^(n-2).*(R-r)./(R+r).^(n-1)*v(0,0);&lt;br /&gt;
B=@(r)R.^(n-2).*(R+r)./(R-r).^(n-1)*v(0,0);&lt;br /&gt;
&lt;br /&gt;
%Dibujamos las cotas en función de |x| en escala logarítmica&lt;br /&gt;
plot(r,log10(A(r)))&lt;br /&gt;
hold on&lt;br /&gt;
plot(r,log10(B(r)))&lt;br /&gt;
xlabel('r');&lt;br /&gt;
ylabel('log(Cotas)');&lt;br /&gt;
title('Desigualdad de Harnack');&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=70640</id>
		<title>Ecuación de Laplace y de Poisson (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=70640"/>
				<updated>2024-04-17T17:10:52Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Serie de Fourier */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar las soluciones de la ecuación de Poisson y de Laplace &lt;br /&gt;
&lt;br /&gt;
=Preliminares=&lt;br /&gt;
&amp;lt;math&amp;gt; u &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Laplace=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la exactitud que tienen dos formas diferentes de resolver la ecuación de Laplace. Para hacer esto tomamos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta u=0, x\in B_1\\&lt;br /&gt;
u=g, x\in\partial B_1&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt; B_1\subset\mathbb{R}^2 &amp;lt;/math&amp;gt; la bola de radio 1 centrada en el (0,0).&lt;br /&gt;
&lt;br /&gt;
==Fórmula de Poisson==&lt;br /&gt;
&lt;br /&gt;
Una de las formas de resolver este tipo de problemas es mediante la fórmula de Poisson:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; u=\frac{R^2-|x|^2}{2\pi R}\int_{\partial B_R}\frac{g(\sigma)}{|x-\sigma|^2} d\sigma, &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
siendo R el radio de la bola y &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; la distancia al centro de la bola.&lt;br /&gt;
&lt;br /&gt;
Para ver cómo funciona esta fórmula vamos a resolver el problema tomando &amp;lt;math&amp;gt; g(\theta)=max \{0,1-\frac{2}{\pi}|\theta-\pi|\}&amp;lt;/math&amp;gt;. Como esta función que es la que representa las condiciones frontera del problema está en coordenadas polares, para poder resolver el problema con la fórmula de Poisson tenemos que pasar esta a polares.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; U(r,\theta)=\frac{R^2-r^2}{2\pi}\int_{0}^{2\pi}g(s)\frac{R^2-r^2}{R^2+r^2-2rRcos(s-\theta)} ds, &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la fórmula expresada de esta manera, podemos aplicarla a nuestro problema tomando R=1 y sustituyendo g por nuestra función. Teniendo todo esto en cuenta vamos a resolver el problema realizando la integral mediante la [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals regla del trapecio] y a representar la solución.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF41.jpg|400px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
En la imagen podemos observar que la fórmula de Poisson nos da problemas en la frontera, por lo que en estos puntos vamos a tomar directamente el valor de g lo que nos da lugar a la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF411.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calcular la solución de la ecuación de Laplace  en la bola de radio&lt;br /&gt;
% unidad usando la fórmula de Poisson. Con condición frontera la función g&lt;br /&gt;
&lt;br /&gt;
g = @(theta) max(0,1-2/pi*abs(theta-pi)); %Definimos la función g(theta)&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):0.9; %Partición en r (no llegamos hasta el borde de la bola)&lt;br /&gt;
&lt;br /&gt;
w = ones(N+1,1);                 &lt;br /&gt;
w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
u = zeros(length(r)+1,length(theta));&lt;br /&gt;
for j = 1:length(theta)&lt;br /&gt;
    for i = 1:length(r)&lt;br /&gt;
        f = g(theta)*(1-r(i).^2)./(1+r(i).^2-2*r(i)*cos(theta-theta(j))); %Función a integrar&lt;br /&gt;
        u(i,j) = h*w'*f'/(2*pi); %Fórmula de Poison usando la fórmula del trapecio para integrar.&lt;br /&gt;
    end&lt;br /&gt;
    u(length(r)+1,j) = g(theta(j)); %Añadimos la condicón frontera directamente&lt;br /&gt;
end&lt;br /&gt;
r(length(r)+1) = 1;&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, u, 'EdgeColor', 'none');&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;
&lt;br /&gt;
Como hemos visto con este ejemplo, la fórmula de Poisson tiene problemas para aproximar la solución cerca de la frontera debido al carácter singular de la integral. Por lo que ahora para estudiar esto, vamos a tomar &amp;lt;math&amp;gt; g(x,y)=xy &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; u(x,y)=xy &amp;lt;/math&amp;gt; para calcular los diferentes errores que genera la fórmula del trapecio. &lt;br /&gt;
!!!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
U(r,\theta)=r^2cos(\theta)sin(\theta)\\&lt;br /&gt;
U(1,\theta)=G(\theta)=cos(\theta)sin(\theta)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Primero vamos a tomar un punto &amp;quot;lejos&amp;quot; de la frontera &amp;lt;math&amp;gt; (r,\theta)=(0.9,\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo evoluciona el error en función del número de intervalos que tomamos para la fórmula del trapecio. Por el ejemplo anterior, cabe esperar que la fórmula en ese punto aproxime bien a la función y por lo tanto el error vaya disminuyendo según aumenta el número de intervalos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF42.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral mediante&lt;br /&gt;
% el método del trapecio en función del tamaño de la discretización&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 8; %Discretización máxima: 10^N_max&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for m = 1:N_max&lt;br /&gt;
    N = 10^m; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f = g(theta)*(1-0.9.^2)./(1+0.9.^2-2*0.9*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u = h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (0.9,pi/4)&lt;br /&gt;
    &lt;br /&gt;
    % Valor de la solución exacta (x*y=R^2*cos(theta)*sin(theta))&lt;br /&gt;
    % en el punto (0.9, pi/4)&lt;br /&gt;
    exacta = 0.9^2*cos(pi/4)*sin(pi/4); &lt;br /&gt;
&lt;br /&gt;
    % Calculamos el error como la diferencia en valor absoluto entre&lt;br /&gt;
    % la solución exacta y la calculada con la fórmula de Poisson&lt;br /&gt;
    err(m) = abs(exacta-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,log10(err),color='b',LineWidth=1.5) %Dibujamos la gráfica del error en escala logarítmica&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('log_{10}(error(10^n))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado antes, al observar la gráfica vemos que el error va disminuyendo hasta que se estabiliza cuando llega a &amp;lt;math&amp;gt; 10^{-14} &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Con esto hemos visto que en un punto que no esté cerca del borde la fórmula de Poisson funciona bien. Ahora vamos a ver cómo se comporta el error según acercamos el punto a la frontera. Para hacer esto vamos a tomar el punto &amp;lt;math&amp;gt; (r,\theta)=(1-10^{-n},\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo varía el error cuando aumentamos la n. Como hemos comentado anteriormente cabe esperar que al aumentar la n el error va a aumentar, ya que como hemos visto en el primer ejemplo en la frontera la fórmula de Poisson da problemas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF421.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral según nos acercamos al&lt;br /&gt;
% borde de la región.&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 20;&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for n = 1:N_max&lt;br /&gt;
    N = 10^2; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f=g(theta)*(1-(1-10^(-n)).^2)./(1+(1-10^(-n)).^2-2*(1-10^(-n))*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u=h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (1-10^-n,pi/4)&lt;br /&gt;
    err(n)=abs((1-10^(-n))^2*cos(pi/4)*sin(pi/4)-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,err,color='b',LineWidth=1.5) %Dibujamos la gráfica del error&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('Error');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En la gráfica podemos ver cómo efectivamente el error crece rápidamente al principio hasta que el punto está a una distancia de &amp;lt;math&amp;gt;10^{-4}&amp;lt;/math&amp;gt;, cuando el error se estabiliza. Esto se debe a que... :)&lt;br /&gt;
&lt;br /&gt;
==Serie de Fourier==&lt;br /&gt;
La otra forma que vamos a ver para resolver la ecuación de Laplace es mediante [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) series de Fourier]. Para hacer esto vamos a tomar nuestro problema en coordenadas polares:&lt;br /&gt;
&lt;br /&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,1),\theta\in[0,2\pi]\\&lt;br /&gt;
U(R,\theta)=U(\theta)=g, \theta\in[0,2\pi]&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y aplicar el método de separación de variables, haciendo esto obtenemos que: &amp;lt;math&amp;gt; U(r,\theta)=\frac{a_0}{2}+\sum_{k=1}^\infty a_kr^kcos(k\theta)+b_kr^ksin(k\theta).&amp;lt;/math&amp;gt; Para que esto sea solución falta hacer que cumpla la condición frontera, para ello vamos a tomar la serie de fourier de &amp;lt;math&amp;gt; G(\theta) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Dibujamos la solución calculada por serie de Fourier&lt;br /&gt;
&lt;br /&gt;
u = @(r,theta) r.^(2).*sin(2.*theta)/2; %Solución de la ecuación&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):1; %Partición en r&lt;br /&gt;
for j = 1:N+1&lt;br /&gt;
    for i = 1:N+1&lt;br /&gt;
        U(i,j) = u(r(i),theta(j));&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, U, 'EdgeColor', 'none');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('y');&lt;br /&gt;
zlabel('u(x, y)');&lt;br /&gt;
title('Solución exacta calculada por serie de Fourier');&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=70635</id>
		<title>Ecuación de Laplace y de Poisson (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=70635"/>
				<updated>2024-04-17T16:52:57Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Fórmula de Poisson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar las soluciones de la ecuación de Poisson y de Laplace &lt;br /&gt;
&lt;br /&gt;
=Preliminares=&lt;br /&gt;
&amp;lt;math&amp;gt; u &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Laplace=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la exactitud que tienen dos formas diferentes de resolver la ecuación de Laplace. Para hacer esto tomamos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta u=0, x\in B_1\\&lt;br /&gt;
u=g, x\in\partial B_1&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt; B_1\subset\mathbb{R}^2 &amp;lt;/math&amp;gt; la bola de radio 1 centrada en el (0,0).&lt;br /&gt;
&lt;br /&gt;
==Fórmula de Poisson==&lt;br /&gt;
&lt;br /&gt;
Una de las formas de resolver este tipo de problemas es mediante la fórmula de Poisson:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; u=\frac{R^2-|x|^2}{2\pi R}\int_{\partial B_R}\frac{g(\sigma)}{|x-\sigma|^2} d\sigma, &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
siendo R el radio de la bola y &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; la distancia al centro de la bola.&lt;br /&gt;
&lt;br /&gt;
Para ver cómo funciona esta fórmula vamos a resolver el problema tomando &amp;lt;math&amp;gt; g(\theta)=max \{0,1-\frac{2}{\pi}|\theta-\pi|\}&amp;lt;/math&amp;gt;. Como esta función que es la que representa las condiciones frontera del problema está en coordenadas polares, para poder resolver el problema con la fórmula de Poisson tenemos que pasar esta a polares.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; U(r,\theta)=\frac{R^2-r^2}{2\pi}\int_{0}^{2\pi}g(s)\frac{R^2-r^2}{R^2+r^2-2rRcos(s-\theta)} ds, &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la fórmula expresada de esta manera, podemos aplicarla a nuestro problema tomando R=1 y sustituyendo g por nuestra función. Teniendo todo esto en cuenta vamos a resolver el problema realizando la integral mediante la [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals regla del trapecio] y a representar la solución.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF41.jpg|400px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
En la imagen podemos observar que la fórmula de Poisson nos da problemas en la frontera, por lo que en estos puntos vamos a tomar directamente el valor de g lo que nos da lugar a la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF411.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calcular la solución de la ecuación de Laplace  en la bola de radio&lt;br /&gt;
% unidad usando la fórmula de Poisson. Con condición frontera la función g&lt;br /&gt;
&lt;br /&gt;
g = @(theta) max(0,1-2/pi*abs(theta-pi)); %Definimos la función g(theta)&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):0.9; %Partición en r (no llegamos hasta el borde de la bola)&lt;br /&gt;
&lt;br /&gt;
w = ones(N+1,1);                 &lt;br /&gt;
w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
u = zeros(length(r)+1,length(theta));&lt;br /&gt;
for j = 1:length(theta)&lt;br /&gt;
    for i = 1:length(r)&lt;br /&gt;
        f = g(theta)*(1-r(i).^2)./(1+r(i).^2-2*r(i)*cos(theta-theta(j))); %Función a integrar&lt;br /&gt;
        u(i,j) = h*w'*f'/(2*pi); %Fórmula de Poison usando la fórmula del trapecio para integrar.&lt;br /&gt;
    end&lt;br /&gt;
    u(length(r)+1,j) = g(theta(j)); %Añadimos la condicón frontera directamente&lt;br /&gt;
end&lt;br /&gt;
r(length(r)+1) = 1;&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, u, 'EdgeColor', 'none');&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;
&lt;br /&gt;
Como hemos visto con este ejemplo, la fórmula de Poisson tiene problemas para aproximar la solución cerca de la frontera debido al carácter singular de la integral. Por lo que ahora para estudiar esto, vamos a tomar &amp;lt;math&amp;gt; g(x,y)=xy &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; u(x,y)=xy &amp;lt;/math&amp;gt; para calcular los diferentes errores que genera la fórmula del trapecio. &lt;br /&gt;
!!!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
U(r,\theta)=r^2cos(\theta)sin(\theta)\\&lt;br /&gt;
U(1,\theta)=G(\theta)=cos(\theta)sin(\theta)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Primero vamos a tomar un punto &amp;quot;lejos&amp;quot; de la frontera &amp;lt;math&amp;gt; (r,\theta)=(0.9,\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo evoluciona el error en función del número de intervalos que tomamos para la fórmula del trapecio. Por el ejemplo anterior, cabe esperar que la fórmula en ese punto aproxime bien a la función y por lo tanto el error vaya disminuyendo según aumenta el número de intervalos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF42.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral mediante&lt;br /&gt;
% el método del trapecio en función del tamaño de la discretización&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 8; %Discretización máxima: 10^N_max&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for m = 1:N_max&lt;br /&gt;
    N = 10^m; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f = g(theta)*(1-0.9.^2)./(1+0.9.^2-2*0.9*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u = h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (0.9,pi/4)&lt;br /&gt;
    &lt;br /&gt;
    % Valor de la solución exacta (x*y=R^2*cos(theta)*sin(theta))&lt;br /&gt;
    % en el punto (0.9, pi/4)&lt;br /&gt;
    exacta = 0.9^2*cos(pi/4)*sin(pi/4); &lt;br /&gt;
&lt;br /&gt;
    % Calculamos el error como la diferencia en valor absoluto entre&lt;br /&gt;
    % la solución exacta y la calculada con la fórmula de Poisson&lt;br /&gt;
    err(m) = abs(exacta-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,log10(err),color='b',LineWidth=1.5) %Dibujamos la gráfica del error en escala logarítmica&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('log_{10}(error(10^n))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado antes, al observar la gráfica vemos que el error va disminuyendo hasta que se estabiliza cuando llega a &amp;lt;math&amp;gt; 10^{-14} &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Con esto hemos visto que en un punto que no esté cerca del borde la fórmula de Poisson funciona bien. Ahora vamos a ver cómo se comporta el error según acercamos el punto a la frontera. Para hacer esto vamos a tomar el punto &amp;lt;math&amp;gt; (r,\theta)=(1-10^{-n},\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo varía el error cuando aumentamos la n. Como hemos comentado anteriormente cabe esperar que al aumentar la n el error va a aumentar, ya que como hemos visto en el primer ejemplo en la frontera la fórmula de Poisson da problemas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF421.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral según nos acercamos al&lt;br /&gt;
% borde de la región.&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 20;&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for n = 1:N_max&lt;br /&gt;
    N = 10^2; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f=g(theta)*(1-(1-10^(-n)).^2)./(1+(1-10^(-n)).^2-2*(1-10^(-n))*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u=h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (1-10^-n,pi/4)&lt;br /&gt;
    err(n)=abs((1-10^(-n))^2*cos(pi/4)*sin(pi/4)-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,err) %Dibujamos la gráfica del error&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('Error');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En la gráfica podemos ver cómo efectivamente el error crece rápidamente al principio hasta que el punto está a una distancia de &amp;lt;math&amp;gt;10^{-4}&amp;lt;/math&amp;gt;, cuando el error se estabiliza. Esto se debe a que... :)&lt;br /&gt;
&lt;br /&gt;
==Serie de Fourier==&lt;br /&gt;
La otra forma que vamos a ver para resolver la ecuación de Laplace es mediante [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) series de Fourier].&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=70634</id>
		<title>Ecuación de Laplace y de Poisson (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=70634"/>
				<updated>2024-04-17T16:51:13Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Fórmula de Poisson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar las soluciones de la ecuación de Poisson y de Laplace &lt;br /&gt;
&lt;br /&gt;
=Preliminares=&lt;br /&gt;
&amp;lt;math&amp;gt; u &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Laplace=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la exactitud que tienen dos formas diferentes de resolver la ecuación de Laplace. Para hacer esto tomamos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta u=0, x\in B_1\\&lt;br /&gt;
u=g, x\in\partial B_1&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt; B_1\subset\mathbb{R}^2 &amp;lt;/math&amp;gt; la bola de radio 1 centrada en el (0,0).&lt;br /&gt;
&lt;br /&gt;
==Fórmula de Poisson==&lt;br /&gt;
&lt;br /&gt;
Una de las formas de resolver este tipo de problemas es mediante la fórmula de Poisson:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; u=\frac{R^2-|x|^2}{2\pi R}\int_{\partial B_R}\frac{g(\sigma)}{|x-\sigma|^2} d\sigma, &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
siendo R el radio de la bola y &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; la distancia al centro de la bola.&lt;br /&gt;
&lt;br /&gt;
Para ver cómo funciona esta fórmula vamos a resolver el problema tomando &amp;lt;math&amp;gt; g(\theta)=max \{0,1-\frac{2}{\pi}|\theta-\pi|\}&amp;lt;/math&amp;gt;. Como esta función que es la que representa las condiciones frontera del problema está en coordenadas polares, para poder resolver el problema con la fórmula de Poisson tenemos que pasar esta a polares.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; U(r,\theta)=\frac{R^2-r^2}{2\pi}\int_{0}^{2\pi}g(s)\frac{R^2-r^2}{R^2+r^2-2rRcos(s-\theta)} ds, &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la fórmula expresada de esta manera, podemos aplicarla a nuestro problema tomando R=1 y sustituyendo g por nuestra función. Teniendo todo esto en cuenta vamos a resolver el problema realizando la integral mediante la [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals regla del trapecio] y a representar la solución.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF41.jpg|400px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
En la imagen podemos observar que la fórmula de Poisson nos da problemas en la frontera, por lo que en estos puntos vamos a tomar directamente el valor de g lo que nos da lugar a la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF411.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calcular la solución de la ecuación de Laplace  en la bola de radio&lt;br /&gt;
% unidad usando la fórmula de Poisson. Con condición frontera la función g&lt;br /&gt;
&lt;br /&gt;
g = @(theta) max(0,1-2/pi*abs(theta-pi)); %Definimos la función g(theta)&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):0.9; %Partición en r (no llegamos hasta el borde de la bola)&lt;br /&gt;
&lt;br /&gt;
w = ones(N+1,1);                 &lt;br /&gt;
w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
u = zeros(length(r)+1,length(theta));&lt;br /&gt;
for j = 1:length(theta)&lt;br /&gt;
    for i = 1:length(r)&lt;br /&gt;
        f = g(theta)*(1-r(i).^2)./(1+r(i).^2-2*r(i)*cos(theta-theta(j))); %Función a integrar&lt;br /&gt;
        u(i,j) = h*w'*f'/(2*pi); %Fórmula de Poison usando la fórmula del trapecio para integrar.&lt;br /&gt;
    end&lt;br /&gt;
    u(length(r)+1,j) = g(theta(j)); %Añadimos la condicón frontera directamente&lt;br /&gt;
end&lt;br /&gt;
r(length(r)+1) = 1;&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, u, 'EdgeColor', 'none');&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;
&lt;br /&gt;
Como hemos visto con este ejemplo, la fórmula de Poisson tiene problemas para aproximar la solución cerca de la frontera debido al carácter singular de la integral. Por lo que ahora para estudiar esto, vamos a tomar &amp;lt;math&amp;gt; g(x,y)=xy &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; u(x,y)=xy &amp;lt;/math&amp;gt; para calcular los diferentes errores que genera la fórmula del trapecio. &lt;br /&gt;
!!!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
U(r,\theta)=r^2cos(\theta)sin(\theta)\\&lt;br /&gt;
U(1,\theta)=G(\theta)=cos(\theta)sin(\theta)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Primero vamos a tomar un punto &amp;quot;lejos&amp;quot; de la frontera &amp;lt;math&amp;gt; (r,\theta)=(0.9,\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo evoluciona el error en función del número de intervalos que tomamos para la fórmula del trapecio. Por el ejemplo anterior, cabe esperar que la fórmula en ese punto aproxime bien a la función y por lo tanto el error vaya disminuyendo según aumenta el número de intervalos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF42.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral mediante&lt;br /&gt;
% el método del trapecio en función del tamaño de la discretización&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 8; %Discretización máxima: 10^N_max&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for m = 1:N_max&lt;br /&gt;
    N = 10^m; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f = g(theta)*(1-0.9.^2)./(1+0.9.^2-2*0.9*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u = h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (0.9,pi/4)&lt;br /&gt;
    &lt;br /&gt;
    % Valor de la solución exacta (x*y=R^2*cos(theta)*sin(theta))&lt;br /&gt;
    % en el punto (0.9, pi/4)&lt;br /&gt;
    exacta = 0.9^2*cos(pi/4)*sin(pi/4); &lt;br /&gt;
&lt;br /&gt;
    % Calculamos el error como la diferencia en valor absoluto entre&lt;br /&gt;
    % la solución exacta y la calculada con la fórmula de Poisson&lt;br /&gt;
    err(m) = abs(exacta-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,log10(err),color='b',LineWidth=1.5) %Dibujamos la gráfica del error en escala logarítmica&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('log_{10}(error(10^n))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado antes, al observar la gráfica vemos que el error va disminuyendo hasta que se estabiliza cuando llega a &amp;lt;math&amp;gt; 10^{-14} &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Con esto hemos visto que en un punto que no esté cerca del borde la fórmula de Poisson funciona bien. Ahora vamos a ver cómo se comporta el error según acercamos el punto a la frontera. Para hacer esto vamos a tomar el punto &amp;lt;math&amp;gt; (r,\theta)=(1-10^{-n},\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo varía el error cuando aumentamos la n. Como hemos comentado anteriormente cabe esperar que al aumentar la n el error va a aumentar, ya que como hemos visto en el primer ejemplo en la frontera la fórmula de Poisson da problemas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF421.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral mediante&lt;br /&gt;
% el método del trapecio en función del tamaño de la discretización&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 20;&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for n = 1:N_max&lt;br /&gt;
    N = 10^2; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f=g(theta)*(1-(1-10^(-n)).^2)./(1+(1-10^(-n)).^2-2*(1-10^(-n))*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u=h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (1-10^-n,pi/4)&lt;br /&gt;
    err(n)=abs((1-10^(-n))^2*cos(pi/4)*sin(pi/4)-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,err) %Dibujamos la gráfica del error&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('Error');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En la gráfica podemos ver cómo efectivamente el error crece rápidamente al principio hasta que el punto está a una distancia de &amp;lt;math&amp;gt;10^{-4}&amp;lt;/math&amp;gt;, cuando el error se estabiliza. Esto se debe a que... :)&lt;br /&gt;
&lt;br /&gt;
==Serie de Fourier==&lt;br /&gt;
La otra forma que vamos a ver para resolver la ecuación de Laplace es mediante [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) series de Fourier].&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=70617</id>
		<title>Ecuación de Laplace y de Poisson (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=70617"/>
				<updated>2024-04-17T15:18:48Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Fórmula de Poisson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar las soluciones de la ecuación de Poisson y de Laplace &lt;br /&gt;
&lt;br /&gt;
=Preliminares=&lt;br /&gt;
&amp;lt;math&amp;gt; u &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Laplace=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la exactitud que tienen dos formas diferentes de resolver la ecuación de Laplace. Para hacer esto tomamos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta u=0, x\in B_1\\&lt;br /&gt;
u=g, x\in\partial B_1&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt; B_1\subset\mathbb{R}^2 &amp;lt;/math&amp;gt; la bola de radio 1 centrada en el (0,0).&lt;br /&gt;
&lt;br /&gt;
==Fórmula de Poisson==&lt;br /&gt;
&lt;br /&gt;
Una de las formas de resolver este tipo de problemas es mediante la fórmula de Poisson:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; u=\frac{R^2-|x|^2}{2\pi R}\int_{\partial B_R}\frac{g(\sigma)}{|x-\sigma|^2} d\sigma, &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
siendo R el radio de la bola y &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; la distancia al centro de la bola.&lt;br /&gt;
&lt;br /&gt;
Para ver cómo funciona esta fórmula vamos a resolver el problema tomando &amp;lt;math&amp;gt; g(\theta)=max \{0,1-\frac{2}{\pi}|\theta-\pi|\}&amp;lt;/math&amp;gt;. Como esta función que es la que representa las condiciones frontera del problema está en coordenadas polares, para poder resolver el problema con la fórmula de Poisson tenemos que pasar esta a polares.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; U(r,\theta)=\frac{R^2-r^2}{2\pi}\int_{0}^{2\pi}g(s)\frac{R^2-r^2}{R^2+r^2-2rRcos(s-\theta)} ds, &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la fórmula expresada de esta manera, podemos aplicarla a nuestro problema tomando R=1 y sustituyendo g por nuestra función. Teniendo todo esto en cuenta vamos a resolver el problema realizando la integral mediante la [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals regla del trapecio] y a representar la solución.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF41.jpg|400px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
En la imagen podemos observar que la fórmula de Poisson nos da problemas en la frontera, por lo que en estos puntos vamos a tomar directamente el valor de g lo que nos da lugar a la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF411.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calcular la solución de la ecuación de Laplace  en la bola de radio&lt;br /&gt;
% unidad usando la fórmula de Poisson. Con condición frontera la función g&lt;br /&gt;
&lt;br /&gt;
g = @(theta) max(0,1-2/pi*abs(theta-pi)); %Definimos la función g(theta)&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):0.9; %Partición en r (no llegamos hasta el borde de la bola)&lt;br /&gt;
&lt;br /&gt;
w = ones(N+1,1);                 &lt;br /&gt;
w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
u = zeros(length(r)+1,length(theta));&lt;br /&gt;
for j = 1:length(theta)&lt;br /&gt;
    for i = 1:length(r)&lt;br /&gt;
        f = g(theta)*(1-r(i).^2)./(1+r(i).^2-2*r(i)*cos(theta-theta(j))); %Función a integrar&lt;br /&gt;
        u(i,j) = h*w'*f'/(2*pi); %Fórmula de Poison usando la fórmula del trapecio para integrar.&lt;br /&gt;
    end&lt;br /&gt;
    u(length(r)+1,j) = g(theta(j)); %Añadimos la condicón frontera directamente&lt;br /&gt;
end&lt;br /&gt;
r(length(r)+1) = 1;&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, u, 'EdgeColor', 'none');&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;
&lt;br /&gt;
Como hemos visto con este ejemplo, la fórmula de Poisson tiene problemas para aproximar la solución cerca de la frontera debido al carácter singular de la integral. Por lo que ahora para estudiar esto, vamos a tomar &amp;lt;math&amp;gt; g(x,y)=xy &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; u(x,y)=xy &amp;lt;/math&amp;gt; para calcular los diferentes errores que genera la fórmula del trapecio. &lt;br /&gt;
!!!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
U(r,\theta)=r^2cos(\theta)sin(\theta)\\&lt;br /&gt;
U(1,\theta)=G(\theta)=cos(\theta)sin(\theta)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Primero vamos a tomar un punto &amp;quot;lejos&amp;quot; de la frontera &amp;lt;math&amp;gt; (r,\theta)=(0.9,\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo evoluciona el error en función del número de intervalos que tomamos para la fórmula del trapecio. Por el ejemplo anterior, cabe esperar que la fórmula en ese punto aproxime bien a la función y por lo tanto el error vaya disminuyendo según aumenta el número de intervalos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF42.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calculamos el error que incorpora la aproximación de la integral mediante&lt;br /&gt;
% el método del trapecio en función del tamaño de la discretización&lt;br /&gt;
&lt;br /&gt;
g = @(theta) sin(theta).*cos(theta); %Definimos la función g(theta)&lt;br /&gt;
N_max = 8; %Discretización máxima: 10^N_max&lt;br /&gt;
err = zeros(N_max);&lt;br /&gt;
for m = 1:N_max&lt;br /&gt;
    N = 10^m; %Tamaño de la discretización                     &lt;br /&gt;
    h = 2*pi/N;&lt;br /&gt;
    theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
&lt;br /&gt;
    w = ones(N+1,1);                 &lt;br /&gt;
    w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
    f = g(theta)*(1-0.9.^2)./(1+0.9.^2-2*0.9*cos(theta-pi/4)); %Función a integrar&lt;br /&gt;
    u = h*w'*f'/(2*pi); %Fórmula de Poisson usando la fórmula del trapecio en el punto (0.9,pi/4)&lt;br /&gt;
    &lt;br /&gt;
    % Valor de la solución exacta (x*y=R^2*cos(theta)*sin(theta))&lt;br /&gt;
    % en el punto (0.9, pi/4)&lt;br /&gt;
    exacta = 0.9^2*cos(pi/4)*sin(pi/4); &lt;br /&gt;
&lt;br /&gt;
    % Calculamos el error como la diferencia en valor absoluto entre&lt;br /&gt;
    % la solución exacta y la calculada con la fórmula de Poisson&lt;br /&gt;
    err(m) = abs(exacta-u);&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
plot(1:N_max,log10(err)) %Dibujamos la gráfica del error en escala logarítmica&lt;br /&gt;
xlabel('n');&lt;br /&gt;
ylabel('log_{10}(error(10^n))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como hemos comentado antes, al observar la gráfica vemos que el error va disminuyendo hasta que se estabiliza cuando llega a &amp;lt;math&amp;gt; 10^{-14} &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Con esto hemos visto que en un punto que no esté cerca del borde la fórmula de Poisson funciona bien. Ahora vamos a ver cómo se comporta el error según acercamos el punto a la frontera. Para hacer esto vamos a tomar el punto &amp;lt;math&amp;gt; (r,\theta)=(1-10^{-n},\frac{\pi}{4}) &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF421.jpg|400px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
==Serie de Fourier==&lt;br /&gt;
La otra forma que vamos a ver para resolver la ecuación de Laplace es mediante [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) series de Fourier].&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=70613</id>
		<title>Ecuación de Laplace y de Poisson (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_de_Laplace_y_de_Poisson_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=70613"/>
				<updated>2024-04-17T15:01:37Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Fórmula de Poisson */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar las soluciones de la ecuación de Poisson y de Laplace &lt;br /&gt;
&lt;br /&gt;
=Preliminares=&lt;br /&gt;
&amp;lt;math&amp;gt; u &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Ecuación de Laplace=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la exactitud que tienen dos formas diferentes de resolver la ecuación de Laplace. Para hacer esto tomamos el siguiente problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
\Delta u=0, x\in B_1\\&lt;br /&gt;
u=g, x\in\partial B_1&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt; B_1\subset\mathbb{R}^2 &amp;lt;/math&amp;gt; la bola de radio 1 centrada en el (0,0).&lt;br /&gt;
&lt;br /&gt;
==Fórmula de Poisson==&lt;br /&gt;
&lt;br /&gt;
Una de las formas de resolver este tipo de problemas es mediante la fórmula de Poisson:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; u=\frac{R^2-|x|^2}{2\pi R}\int_{\partial B_R}\frac{g(\sigma)}{|x-\sigma|^2} d\sigma, &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
siendo R el radio de la bola y &amp;lt;math&amp;gt; |x| &amp;lt;/math&amp;gt; la distancia al centro de la bola.&lt;br /&gt;
&lt;br /&gt;
Para ver cómo funciona esta fórmula vamos a resolver el problema tomando &amp;lt;math&amp;gt; g(\theta)=max \{0,1-\frac{2}{\pi}|\theta-\pi|\}&amp;lt;/math&amp;gt;. Como esta función que es la que representa las condiciones frontera del problema está en coordenadas polares, para poder resolver el problema con la fórmula de Poisson tenemos que pasar esta a polares.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; U(r,\theta)=\frac{R^2-r^2}{2\pi}\int_{0}^{2\pi}g(s)\frac{R^2-r^2}{R^2+r^2-2rRcos(s-\theta)} ds, &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la fórmula expresada de esta manera, podemos aplicarla a nuestro problema tomando R=1 y sustituyendo g por nuestra función. Teniendo todo esto en cuenta vamos a resolver el problema realizando la integral mediante la [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals regla del trapecio] y a representar la solución.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF41.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En la imagen podemos observar que la fórmula de Poisson nos da problemas en la frontera, por lo que en estos puntos vamos a tomar directamente el valor de g lo que nos da lugar a la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF411.jpg|400px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
Como hemos visto con este ejemplo, la fórmula de Poisson tiene problemas para aproximar la solución cerca de la frontera debido al carácter singular de la integral. Por lo que ahora para estudiar esto, vamos a tomar &amp;lt;math&amp;gt; g(x,y)=xy &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; u(x,y)=xy &amp;lt;/math&amp;gt; para calcular los diferentes errores que genera la fórmula del trapecio. &lt;br /&gt;
!!!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
U(r,\theta)=r^2cos(\theta)sin(\theta)\\&lt;br /&gt;
U(1,\theta)=G(\theta)=cos(\theta)sin(\theta)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Primero vamos a tomar un punto &amp;quot;lejos&amp;quot; de la frontera &amp;lt;math&amp;gt; (r,\theta)=(0.9,\frac{\pi}{4}) &amp;lt;/math&amp;gt; y a ver cómo evoluciona el error en función del número de intervalos que tomamos para la fórmula del trapecio. Por el ejemplo anterior, cabe esperar que la fórmula en ese punto aproxime bien a la función y por lo tanto el error vaya disminuyendo según aumenta el número de intervalos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:GF42.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Calcular la solución de la ecuación de Laplace  en la bola de radio&lt;br /&gt;
% unidad usando la fórmula de Poisson. Con condición frontera la función g&lt;br /&gt;
&lt;br /&gt;
g = @(theta) max(0,1-2/pi*abs(theta-pi)); %Definimos la función g(theta)&lt;br /&gt;
&lt;br /&gt;
N = 3*10^2; %Número de particiones en theta y r&lt;br /&gt;
&lt;br /&gt;
h = 2*pi/N;&lt;br /&gt;
theta = 0:h:2*pi; %Partición en theta&lt;br /&gt;
r = 0:N^(-1):0.9; %Partición en r (no llegamos hasta el borde de la bola)&lt;br /&gt;
&lt;br /&gt;
w = ones(N+1,1);                 &lt;br /&gt;
w(1) = 1/2; w(N+1) = 1/2;&lt;br /&gt;
u = zeros(length(r)+1,length(theta));&lt;br /&gt;
for j = 1:length(theta)&lt;br /&gt;
    for i = 1:length(r)&lt;br /&gt;
        f = g(theta)*(1-r(i).^2)./(1+r(i).^2-2*r(i)*cos(theta-theta(j))); %Función a integrar&lt;br /&gt;
        u(i,j) = h*w'*f'/(2*pi); %Fórmula de Poison usando la fórmula del trapecio para integrar.&lt;br /&gt;
    end&lt;br /&gt;
    u(length(r)+1,j) = g(theta(j)); %Añadimos la condicón frontera directamente&lt;br /&gt;
end&lt;br /&gt;
r(length(r)+1) = 1;&lt;br /&gt;
[Theta, R] = meshgrid(theta, r); % Crear una malla de theta y r&lt;br /&gt;
% Convertir coordenadas polares a cartesianas&lt;br /&gt;
X = R.*cos(Theta);&lt;br /&gt;
Y = R.*sin(Theta);&lt;br /&gt;
% Graficar la superficie en coordenadas cartesianas&lt;br /&gt;
colormap jet&lt;br /&gt;
surf(X, Y, u, 'EdgeColor', 'none');&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;
Como hemos comentado antes, al observar la gráfica vemos que el error va disminuyendo hasta que se estabiliza cuando llega a &amp;lt;math&amp;gt; 10^{-14} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Serie de Fourier==&lt;br /&gt;
La otra forma que vamos a ver para resolver la ecuación de Laplace es mediante [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) series de Fourier].&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=70118</id>
		<title>Ecuación del calor (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=70118"/>
				<updated>2024-03-07T19:02:26Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Soluciones autosemejantes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar la ecuación del calor en una dimensión mediante el estudio de una varilla metálica de longitud 1 y que se encuentra aislada por su superficie lateral, es decir, la conducción de calor solo se produce en la dirección longitudinal. Para ello, vamos a ver cómo varía la solución en función de la variación de distintos parámetros como las condiciones iniciales o el coeficiente de conductividad. Además, veremos qué ocurre cuando suponemos que la longitud de la varilla no está acotada.&lt;br /&gt;
&lt;br /&gt;
=Preliminares=&lt;br /&gt;
&lt;br /&gt;
Antes de empezar a desarrollar el problema necesitamos conocer algunos conceptos que nos van a permitir modelizarlo y sacar sus ecuaciones.&lt;br /&gt;
&lt;br /&gt;
*Como el calor es una forma de energía, vamos a utilizar '''el principio de conservación de energía'''. Este establece que en un volumen de control &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt; arbitrario, la variación de energía a lo largo del tiempo se debe al balance neto del flujo de calor que atraviesa la frontera  de &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;\partial V&amp;lt;/math&amp;gt;) más una producción externa.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{d}{dt}\int_Ve(x,t)dx=\int_{\partial V}\overrightarrow q\cdot d\overrightarrow s +\int_V rdx&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; e(x,t) &amp;lt;/math&amp;gt; representa la densidad de energía calorífica y por tanto la primera integral se corresponde con la energía total que hay en &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt; \overrightarrow q &amp;lt;/math&amp;gt; es el flujo de calor y como la segunda integral es una integral de superficie, representa el flujo que atraviesa la frontera de &amp;lt;math&amp;gt; V &amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; r &amp;lt;/math&amp;gt; es lo que aporta una fuente externa.&lt;br /&gt;
&lt;br /&gt;
* También vamos a necesitar expresar el flujo y la energía en función de la temperatura. Para lo primero utilizamos la '''ley de Fourier''', que establece que el flujo de transferencia de calor es proporcional y de sentido contrario al gradiente de temperatura en esa dirección.&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \overrightarrow q=-k\nabla u &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Siendo k la conductividad térmica, y u la temperatura. Y para lo segundo vamos a suponer que la energía es proporcional a la temperatura.&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; e=cu &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Siendo &amp;lt;math&amp;gt; c &amp;lt;/math&amp;gt; el calor específico.&lt;br /&gt;
&lt;br /&gt;
* Denominamos '''coeficiente de difusión''' a &amp;lt;math&amp;gt; D=\frac{k}{c}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Principio del máximo''': Sea &amp;lt;math&amp;gt; u\in C^{2,1}(Q_T)\cap C(\overline Q_T) &amp;lt;/math&amp;gt; tal que &amp;lt;math&amp;gt; u_t-\nabla u\leq 0 &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; Q_T &amp;lt;/math&amp;gt;. Entonces &amp;lt;math&amp;gt; u &amp;lt;/math&amp;gt; alcanza su máximo en la frontera parabólica:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \max_{(x,t)\in\overline Q_T}=\max_{(x,t)\in\partial_pQ_T}. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Análogamente, se cumple con el mínimo.&lt;br /&gt;
&lt;br /&gt;
=Problema original=&lt;br /&gt;
En este primer apartado, vamos a suponer que la temperatura inicial de la varilla es 0ºC y que en el extremo izquierdo la temperatura se mantiene a 0ºC mientras que en el derecho la temperatura es siempre de 1ºC. Teniendo esto en cuenta y los conceptos desarrollados en el apartado anterior, el sistema de ecuaciones que representa el problema es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_t-Du_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Siendo &amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt; función que representa la temperatura de la varilla a lo largo del tiempo. Vamos a suponer que &amp;lt;math&amp;gt;D=1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Homogeneización==&lt;br /&gt;
&lt;br /&gt;
Antes de empezar con la resolución del problema vamos a homogeneizar las condiciones de contorno. Para hacer esto vamos a restarle al problema la solución estacionaria, es decir, la que permanece invariante respecto al tiempo. Esto implica que &amp;lt;math&amp;gt; u_t\sim 0 &amp;lt;/math&amp;gt; y que &amp;lt;math&amp;gt; u(x,t)\sim v(x) &amp;lt;/math&amp;gt;. Por lo que el problema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
v_{xx}=0 &amp;amp; x\in(0,1)\\&lt;br /&gt;
v(0)=0\\&lt;br /&gt;
v(1)=1\\&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución de este sistema, y por tanto la solución estacionaria es: &amp;lt;math&amp;gt; v(x)=x &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.1.jpg|400px|thumb|right|Solución estacionaria]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
v=@(x,t) x;&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(v, [0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('v(x)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la solución estacionaria, tomamos &amp;lt;math&amp;gt; w(x,t)=u(x,t)-v(x) &amp;lt;/math&amp;gt; y vemos como queda el problema homogeneizado para &amp;lt;math&amp;gt; w(x,t)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
w_t-w_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
w(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(x,0)=-x&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Una vez homogeneizado el sistema podemos empezar a buscar la solución por el método de separación de variables, en el cual vamos a suponer que la solución es de la forma: &amp;lt;math&amp;gt; w(x,t)=X(x)T(t) &amp;lt;/math&amp;gt;. Como &amp;lt;math&amp;gt;w(x,t)&amp;lt;/math&amp;gt; es solución del problema original, obtenemos que se tiene que cumplir &amp;lt;math&amp;gt;\frac{X''(x)}{X(x)}=\frac{T'(t)}{T(t)}=\lambda_k&amp;lt;/math&amp;gt; dando lugar a la resolución de dos sistemas por separado, uno que depende de &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt; y otro que depende de &amp;lt;math&amp;gt; t&amp;lt;/math&amp;gt;. Al solucionar ambos problemas obtenemos el siguiente resultado: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para que &amp;lt;math&amp;gt; w(x,t) &amp;lt;/math&amp;gt; sea solución de nuestro problema solo falta ver que cumpla la condición incial, es decir, que &amp;lt;math&amp;gt; w(x,0)=c_k\sin(k\pi x)=-x &amp;lt;/math&amp;gt;. De esta igualdad sacamos que si extendemos la función &amp;lt;math&amp;gt; -x &amp;lt;/math&amp;gt; de forma impar los coeficientes &amp;lt;math&amp;gt; c_k&amp;lt;/math&amp;gt; van a ser los coeficiente de la [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) serie de Fourier]. Por tanto, la solución queda de la siguiente manera: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta función es la solución del problema homogeneizado, por lo que para obtener la solución del problema original tenemos que deshacer el cambio de variable. La solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}+x&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a graficar los 10 primeros términos de la serie en &amp;lt;math&amp;gt; t \in [0,1]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.2c.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t); %Solución del problema homogeneizado&lt;br /&gt;
v=@(x) x; %Solución estacionaria&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x); %Solución del problema&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
close all&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
&lt;br /&gt;
%Ejes&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;
En la gráfica podemos observar que la solución del problema alcanza en poco tiempo la solución estacionaria, lo cual tiene sentido ya que estamos utilizando un coeficiente de difusión relativamente alto&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Ahora, para entender mejor cómo funciona la solución, vamos a ver cómo es su flujo. Para ello, vamos a graficar el flujo en los extremos teniendo en cuenta que, por la ley de Fourier, &amp;lt;math&amp;gt; q=-k u_x &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.3.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos la función &lt;br /&gt;
dwi=@(x,t,k) (2*(-1)^(k+1)).*cos(k.*pi.*x).*exp(-k^2.*pi^2.*t); %Derivada de la solución del problema homogéneo&lt;br /&gt;
dv=@(x) 1; %Derivada de la solución estacionaria&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
dw0=@(t) 0;&lt;br /&gt;
dw1=@(t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    dw0=@(t) dw0(t) + dwi(0,t,n);&lt;br /&gt;
    dw1=@(t) dw1(t) + dwi(1,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
du0=@(t) dw0(t)-dv(0); %Derivada de la solución en 0&lt;br /&gt;
du1=@(t) dw1(t)-dv(1); %Derivada de la solución en 1&lt;br /&gt;
&lt;br /&gt;
%Definimos el vector de tiempo&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
&lt;br /&gt;
% Gráfica en x=0&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,du0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
&lt;br /&gt;
%Gráfica en x=1&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,du1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al observar la gráfica en el extremo izquierdo vemos que al principio no hay flujo debido a que tanto la barra como el extremo están a 0º. Una vez avanza el tiempo el flujo va siendo cada vez más negativo lo que implica que cada vez sale más flujo por el extremo izquierdo. Esto tiene sentido ya que como la barra se va calentando, como podemos ver en la gráfica de la solución, y el extremo se mantiene a 0º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor.&lt;br /&gt;
&lt;br /&gt;
Por el contrario, en la gráfica del extremo derecho podemos observar que inicialmente hay mucho flujo hacia el interior de la barra debido a que la barra está a 0º y el extremo a 1º. Una vez avanza el tiempo el flujo va siendo cada vez menos negativo lo que implica que cada vez entra menos flujo por el extremo derecho. Esto es coherente ya que como la barra se va calentando, y el extremo se mantiene a 1º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor como hemos mencionado antes.&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas, cabe destacar dos aspectos característicos:&lt;br /&gt;
* Lo primero que cabe preguntarse es por qué cuando en la gráfica hay una gran variación del flujo, en el extremo izquierdo la variación es más moderada, y por el contrario, en el extremo derecho es más drástica. Esto se debe a que en el extremo izquierdo la diferencia de temperatura entre dos puntos cercanos es menor que en el derecho, cosa que podemos observar en la gráfica de la solución.&lt;br /&gt;
* También llama la atención que ambas gráficas se acaban estabilizando en un flujo de -1, este punto coincide con el punto en el que la solución alcanza la solución estacionaria, por lo que tiene sentido que el flujo en ambos extremos se estabilice en el mismo valor.&lt;br /&gt;
&lt;br /&gt;
=Variación coeficiente de conductividad=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a ver como varia la solución cuando variamos el coeficiente de conductividad térmica de 1 a 1/2. Con este coeficiente el sistema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{1t}-\frac{1}{2}u_{1xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_1(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviéndolo de la misma forma que el anterior obtenemos que la estacionaria no varía y es &amp;lt;math&amp;gt; v_1(x)=x &amp;lt;/math&amp;gt;, y que la solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u_1(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{\frac{-k^2\pi^2 t}{2}}+x,&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gf2.4b.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2); %Solución del problema homogéneo&lt;br /&gt;
v=@(x) x; %Solución estacionaria&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x); %Solución del problema&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_1(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Aunque a primera vista pueda parecer igual que la solución del problema original, si nos fijamos bien podemos observar que esta tarda más en alcanzar la solución estacionaria ya que está curvada en un mayor intervalo, esto tiene sentido por tener un coeficiente de conductividad menor.&lt;br /&gt;
&lt;br /&gt;
Ahora para apreciar mejor la diferencia vamos a representar ambas soluciones restándoles la estacionaria en x=1/2.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.5.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi1=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t); %Solución del problema homogéneo con D=1&lt;br /&gt;
wi2=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2); %Solución del problema homogéneo con D=1/2&lt;br /&gt;
v=@(x) x; %Solución homogénea&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w1=@(x,t) 0;&lt;br /&gt;
w2=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w1=@(x,t) w1(x,t) + wi1(x,t,n);&lt;br /&gt;
    w2=@(x,t) w2(x,t) + wi2(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
u1=@(x,t) w1(x,t)+v(x); %Solución del problema con D=1&lt;br /&gt;
u2=@(x,t) w2(x,t)+v(x); %Solución del problema con D=1/2&lt;br /&gt;
&lt;br /&gt;
%Hacemos la diferencia con la solución estacionaria en x=1/2&lt;br /&gt;
dif1=@(t) u1(0.5,t)-v(0.5);&lt;br /&gt;
dif2=@(t) u2(0.5,t)-v(0.5);&lt;br /&gt;
&lt;br /&gt;
%Definimos el vector de tiempos&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
&lt;br /&gt;
% Gráfica de la solución del problema con D=1&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,dif1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1')&lt;br /&gt;
&lt;br /&gt;
% Gráfica de la solución del problema con D=1/2&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,dif2(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1/2')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En estas gráficas podemos apreciar mejor que efectivamente esta solución tarda más en alcanzar la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
=Variación de las condiciones de frontera y las iniciales=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a variar las condiciones de frontera y la inicial y a ver cómo varía la solución. Suponemos que en el extremo derecho ahora la temperatura se mantiene a 0º, y que en el momento inicial la temperatura sigue la siguiente función: &amp;lt;math&amp;gt;max\{0,1-4|x-1/2|\}.&amp;lt;/math&amp;gt; Teniendo todo esto en cuenta, el problema que vamos a estudiar ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{2t}-u_{2xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_2(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Resolviendo este problema de la misma forma que los anteriores, obtenemos que la solución estacionaria es &amp;lt;math&amp;gt; v_2(x)=0 &amp;lt;/math&amp;gt; y que la solución es: &amp;lt;math&amp;gt; u_2(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;. A diferencia de en los otros casos los &amp;lt;math&amp;gt;c_k&amp;lt;/math&amp;gt; los vamos a calcular aproximando las integrales que se utilizan para obtenerlos por el [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals método del trapecio].&lt;br /&gt;
&lt;br /&gt;
Haciendo todo esto, la gráfica de la solución queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.6.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2)); %Condición inicial&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t); %Solución del problema&lt;br /&gt;
&lt;br /&gt;
%Aplicamos la regla del trapecio&lt;br /&gt;
a=0; b=1; %Extremos del intervalo                 &lt;br /&gt;
x=linspace(a,b,100); %Vector de espacio&lt;br /&gt;
t=linspace(a,b,100); %Vector de tiempo&lt;br /&gt;
N=length(x)-1; %Número de puntos&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1); %Vector de pesos             &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
f_n=zeros(length(x),length(t));&lt;br /&gt;
&lt;br /&gt;
%Suma de los 10 primeros términos en todo el vector de tiempo&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    for k=1:10&lt;br /&gt;
        g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
        a_k=2*h*w'*g; %Resultado de la regla del trapecio (c_k)&lt;br /&gt;
        f_n(i,:)= f_n(i,:)+a_k.*uk(x,t(i),k);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Gráfica en 3D&lt;br /&gt;
colormap jet &lt;br /&gt;
surf(x,t,f_n,'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_2(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al igual que en los casos anteriores, podemos ver que la solución acaba alcanzando la solución estacionaria. Además, podemos observar que la solución siempre es positiva, lo que implica que la difusión transporta energía con velocidad infinita.&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Ahora, igual que para el problema original, vamos a ver cómo se comporta el flujo en este problema. Para ello, vamos a representar el flujo en ambos extremos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.7.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2)); %Condición inicial&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t); %Solución del problema&lt;br /&gt;
duk=@(x,t,k) -k*pi.*cos(k.*pi.*x).*exp(-k.^2*pi.^2.*t); %Derivada de la solución&lt;br /&gt;
&lt;br /&gt;
%Aplicamos el método del trapecio&lt;br /&gt;
a=0; b=1; %Extremos de los intervalos              &lt;br /&gt;
x=linspace(a,b,100); %Vector de espacio&lt;br /&gt;
t=linspace(a,b,100); %Vector de tiempo&lt;br /&gt;
N=length(x)-1; %Número de puntos&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1); %Vector de pesos           &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
q0=@(t)0; &lt;br /&gt;
q1=@(t)0;&lt;br /&gt;
for k=1:100&lt;br /&gt;
    g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
    a_k=2*h*w'*g; %Solución de la regla del trapecio (c_k)&lt;br /&gt;
    q0=@(t) q0(t)+a_k.*duk(0,t,k); %Flujo en x=0&lt;br /&gt;
    q1=@(t) q1(t)+a_k.*duk(1,t,k); %flujo en x=1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Gráfica en x=0&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,q0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
&lt;br /&gt;
%Gráfica en x=1&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,q1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En ambos extremos el flujo empieza siendo cero, cosa que tiene sentido ya que tanto los extremos como los puntos de la barra cercanos a los extremos están a 0º. Posteriormente ambos flujos aumentan hacia fuera de la barra, esto es coherente ya que el calor en el centro de la barra en el momento inicial provoca que los laterales de la barra se vayan calentando y por tanto el flujo vaya hacia los extremos que se mantienen a 0º.&lt;br /&gt;
&lt;br /&gt;
Una vez avanza el tiempo podemos observar que ambos flujo se estacionan en un valor, y esto coincide con el momento en el que la gráfica de la solución alcanza la solución estacionaria. Además, cabe resaltar que este valor es 0, lo cual tiene sentido ya que la solución estacionaria hace que toda la barra se quede a 0º.&lt;br /&gt;
&lt;br /&gt;
==Aislamiento de un extremo==&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a ver cómo se comporta la solución cuando aislamos térmicamente el extremo derecho, es decir, cuando el flujo en ese punto es cero. Teniendo esto en cuenta, el problema queda de la siguiente forma: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{3t}-u_{3xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_3(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_{3x}(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_3(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviéndolo de la misma forma que en los casos anteriores obtenemos que la solución estacionaria es &amp;lt;math&amp;gt; v_3(x,t)=0 &amp;lt;/math&amp;gt; y que la solución del problema es &amp;lt;math&amp;gt; u_3(x,t)=\sum_{k=1}^\infty c_k\sin((k-\frac{1}{2})\pi x)e^{-(k-\frac{1}{2})^2\pi^2 t} &amp;lt;/math&amp;gt;. Ahora, para calcular los coeficientes &amp;lt;math&amp;gt; c_k &amp;lt;/math&amp;gt;, vamos a exigir que esta solución cumpla la condición inicial, es decir, &amp;lt;math&amp;gt; u_3(x,t)=\sum_{k=1}^\infty c_k\sin((k-\frac{1}{2})\pi x)= max\{0,1-4|x-1/2|\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
A diferencia de los otros casos, las autofunciones no las podemos expresar en función de la base trigonométrica, pero aun así forman un conjunto completo en [0,1] y vamos a comprobar que son ortogonales entre sí:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \int_0^1 sin((n-\frac{1}{2})\pi x)sin((m-\frac{1}{2})\pi x) dx= \frac{1}{2} \int_0^1 cos((n-m)\pi x)-cos((n+m-1)\pi x)dx=0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como &amp;lt;math&amp;gt;\{ \sin((n-\frac{1}{2})\pi x) \}_{n\in\mathbb{N}}&amp;lt;/math&amp;gt; cumplen estas características, forman una base Hilbertiana y por tanto pueden aproximar cualquier función y los &amp;lt;math&amp;gt; c_k &amp;lt;/math&amp;gt; se pueden calcular igual que los coeficientes de Fourier pero utilizando esta nueva base. Para hacer esto vamos a utilizar la regla del trapecio.&lt;br /&gt;
&lt;br /&gt;
Teniendo todo esto en cuenta, vamos a representar la función para entender mejor cómo funciona este sistema.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.9.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2)); %Condición inicial&lt;br /&gt;
uk=@(x,t,k) sin((k-0.5).*pi.*x).*exp(-(k-0.5).^2*pi.^2.*t); %Solución del problema&lt;br /&gt;
&lt;br /&gt;
%Aplicamos la regla del trapecio&lt;br /&gt;
a=0; b=1; %Extremos de los intervalos                    &lt;br /&gt;
x=linspace(a,b,100); %Vector de espacio&lt;br /&gt;
t=linspace(a,b,100); %Vector de tiempo&lt;br /&gt;
N=length(x)-1; %Número de puntos&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1);  %Vector de nudos            &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
f_n=zeros(length(x),length(t));&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 100 primero términos en todo el vector t&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    for k=1:100&lt;br /&gt;
        g=u0(x)*sin((k-0.5).*pi.*x)'; &lt;br /&gt;
        a_k=2*h*w'*g; %Solución de la regla del trapecio (c_k)&lt;br /&gt;
        f_n(i,:)= f_n(i,:)+a_k.*uk(x,t(i),k);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Gráfica en 3D&lt;br /&gt;
colormap jet &lt;br /&gt;
surf(x,t,f_n,'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_3(x,t)')}}&lt;br /&gt;
&lt;br /&gt;
Podemos observar que la gráfica es igual que la del problema anterior, excepto alrededor de x=1. Esto tiene sentido ya que lo único que hemos variado es la condición frontera en ese extremo. Además, podemos observar que la gráfica en esa zona es más recta, esto es debido a que la derivada es 0.&lt;br /&gt;
&lt;br /&gt;
===Flujo en los extremos===&lt;br /&gt;
Ahora, igual que en todos los problemas anteriores, para entender mejor la solución vamos a analizar el flujo viendo cómo se comporta en los extremos mediante la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.11.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2)); %Condición inicial&lt;br /&gt;
uk=@(x,t,k) sin((k-0.5).*pi.*x).*exp(-(k-0.5).^2*pi.^2.*t); %Solución del problema&lt;br /&gt;
duk=@(x,t,k) -(k-0.5)*pi.*cos((k-0.5).*pi.*x).*exp(-(k-0.5).^2*pi.^2.*t); %Derivada de la solución&lt;br /&gt;
&lt;br /&gt;
%Aplicamos el método del trapecio&lt;br /&gt;
a=0; b=1; %Extremos de los intervalos              &lt;br /&gt;
x=linspace(a,b,100); %Vector de espacio&lt;br /&gt;
t=linspace(a,b,100); %Vector de tiempo&lt;br /&gt;
N=length(x)-1; %Número de puntos&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1); %Vector de pesos           &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
q0=@(t)0; &lt;br /&gt;
q1=@(t)0;&lt;br /&gt;
for k=1:100&lt;br /&gt;
    g=u0(x)*sin((k-0.5)*pi*x)'; &lt;br /&gt;
    a_k=2*h*w'*g; %Solución de la regla del trapecio (c_k)&lt;br /&gt;
    q0=@(t) q0(t)+a_k.*duk(0,t,k); %Flujo en x=0&lt;br /&gt;
    q1=@(t) q1(t)+a_k.*duk(1,t,k); %flujo en x=1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Gráfica en x=0&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,q0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{3x}(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
&lt;br /&gt;
%Gráfica en x=1&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,q1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{3x}(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')}}&lt;br /&gt;
&lt;br /&gt;
En la gráfica del extremo izquierdo podemos observar que es igual que la anterior, al igual que pasa con la gráfica de la solución. Esto se debe a que la condición de contorno en ese extremo no la hemos variado.&lt;br /&gt;
&lt;br /&gt;
Por el contrario, en este extremo la gráfica es distinta debido a que al aislar este extremo no va a haber flujo y por eso la gráfica es prácticamente 0 en todo momento.&lt;br /&gt;
&lt;br /&gt;
=Principio del máximo=&lt;br /&gt;
Ahora, para entender mejor cómo funciona el principio del máximo, vamos a comprobar si este se cumple en las soluciones de los problemas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gpmax.png|925px|thumb|center|Soluciones]]&lt;br /&gt;
&lt;br /&gt;
En las dos primeras gráficas, podemos observar que el mínimo está en la frontera t=0 y el máximo en x=1 y en las otras dos podemos ver que el máximo está en t=0 y el mínimo en las fronteras de x. Por lo que efectivamente, en todas las soluciones que hemos calculado en este artículo se cumple el principio del máximo.&lt;br /&gt;
&lt;br /&gt;
=Solución fundamental=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la ecuación del calor cuando la variable espacial no está acotada. Por lo que el sistema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
u_t - k u_{xx} = 0&amp;amp; (x, t) \in \mathbb{R} \times (0, \infty)\\&lt;br /&gt;
u(x,0)=\delta(x)&amp;amp;&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde ''&amp;lt;math&amp;gt;\delta&amp;lt;/math&amp;gt;'' es la función delta de Dirac, que vale 0 en todo punto menos en x, y su integral en toda la recta real es igual a 1.&lt;br /&gt;
&lt;br /&gt;
La solución a este sistema es la llamada solución fundamental de la ecuación del calor, correspondiente a la condición inicial de un punto donde se concentra todo el calor y su fórmula es:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\Phi(x,t)=\frac{1}{\sqrt{4\pi kt}}\exp\left(-\frac{x^2}{4kt}\right).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.8.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Parámetros&lt;br /&gt;
k = 1;  % Coeficiente de conductividad&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
t = linspace(10^-2, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Inicialización de la matriz de soluciones&lt;br /&gt;
u = zeros(length(x), length(t));&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución fundamental&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
    u(:, i) = 1/sqrt(4 * pi * k * t(i)) * exp(-x.^2 / (4 * k * t(i)));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
colormap jet;&lt;br /&gt;
surf(x, t, u', 'FaceColor', 'interp');&lt;br /&gt;
title('Solución Fundamental de la Ecuación del Calor');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('t');&lt;br /&gt;
zlabel('Temperatura (u(x, t))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
De manera análoga, podemos extender esta solución a dos dimensiones espaciales: &amp;lt;math&amp;gt; \Phi(x,y,t) = \frac{1}{4 \pi k t} \exp\left(-\frac{x^2 + y^2}{4 k t}\right).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gif2.1.gif|400px|thumb|right|Video de la evolución de la solución a lo largo del tiempo]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
k = 1;  % Coeficiente de conductividad&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos en x y y&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
y = linspace(-1, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear una malla 2D&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Tiempos para la animación&lt;br /&gt;
t_values = linspace(0.001, 0.1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución fundamental en 2D&lt;br /&gt;
    u = 1/(4 * pi * k * t_values(i)) * exp(-(X.^2 + Y.^2) / (4 * k * t_values(i)));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    colormap jet&lt;br /&gt;
    surf(X, Y, u, 'EdgeColor', 'none');&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución Fundamental en 2D (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('x');&lt;br /&gt;
    ylabel('y');&lt;br /&gt;
    zlabel('Temperatura u(x, y, t)');&lt;br /&gt;
&lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    zlim([0, 20]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.2);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.10.jpg|900px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Soluciones autosemejantes==&lt;br /&gt;
&lt;br /&gt;
Lo bueno que tiene la solución fundamental es que no hemos tenido que restringirla a una región acotada del espacio, sino que es solución para todo &amp;lt;math&amp;gt; x \in \mathbb{R} &amp;lt;/math&amp;gt;. No estaría de más preguntarse si existen otras soluciones con esta propiedad.&lt;br /&gt;
La solución fundamental tiene la propiedad de ser autosemejante, es decir, su gráfica al variar el tiempo mantiene siempre la misma forma (una gaussiana).&lt;br /&gt;
&lt;br /&gt;
Podemos buscar otras soluciones con esta propiedad considerando el cambio de variable &amp;lt;math&amp;gt;\xi=\frac{x}{\sqrt{t}}&amp;lt;/math&amp;gt;. Se comprueba que esta combinación de variables es invariante respecto de dilataciones parabólicas y además no tiene dimensión (Página 44 Partial Differential Equations in Action. S. Salsa, G. Verzini).&lt;br /&gt;
&lt;br /&gt;
Imponemos que la función de una variable &amp;lt;math&amp;gt; U(\xi) &amp;lt;/math&amp;gt; cumpla la EDP, y llegamos a la EDO:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U'(\xi)+\frac{1}{2}U(\xi)=B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cuya solución, deshaciendo el cambio de variable, es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U(\frac{x}{\sqrt{t}})=Ae^{-{\frac{x}{2\sqrt{t}}}}+2B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
con &amp;lt;math&amp;gt; A,B &amp;lt;/math&amp;gt; constantes a determinar. Para ello, consideraremos las siguientes restricciones, que involucran una región espacial no acotada: &amp;lt;math&amp;gt; x&amp;gt;0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
&amp;amp;u(0, t) = 1 \\&lt;br /&gt;
&amp;amp;u(x, 0) = 0\\&lt;br /&gt;
&amp;amp;lim_{x \to \infty } u(x,t)=0&lt;br /&gt;
\end{aligned}&lt;br /&gt;
\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con las que obtenemos &amp;lt;math&amp;gt; A=1 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B=0 &amp;lt;/math&amp;gt;, y por tanto la solución a este problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=e^{-{\frac{x}{2\sqrt{t}}}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:autosemejantes.gif|400px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Definir el intervalo espacial&lt;br /&gt;
x = linspace(0, 5, 100);&lt;br /&gt;
&lt;br /&gt;
% Definir el intervalo de tiempo&lt;br /&gt;
t_values = linspace(0.01, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución&lt;br /&gt;
    u = exp(-x / (2 * sqrt(t_values(i))));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución de la Ecuación del Calor (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.1);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==La convolución==&lt;br /&gt;
&lt;br /&gt;
Otra forma de obtener soluciones de la ecuación del calor es usando la solución fundamental &amp;lt;math&amp;gt; \Phi(x,t) &amp;lt;/math&amp;gt; y aplicando una [https://es.wikipedia.org/wiki/Convoluci%C3%B3n convolución].&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; u(x,t) = \int_{-\infty}^{\infty} \Phi(x-y,t) u_0(y) dy&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; es el dato inicial, es decir, &amp;lt;math&amp;gt; u(x,0) = u_0(x) &amp;lt;/math&amp;gt; para &amp;lt;math&amp;gt; x \in \mathbb{R} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hemos visto antes que la solución fundamental representaba la respuesta del sistema a un impulso unitario (delta de Dirac) en un punto y en un instante de tiempo.&lt;br /&gt;
&lt;br /&gt;
Intuitivamente, la convolución realiza una integración ponderada de las contribuciones locales del dato inicial en cada punto y momento, proporcionando así la evolución completa de la temperatura de acuerdo con la ecuación del calor.&lt;br /&gt;
&lt;br /&gt;
Para ilustrarlo, vemos qué forma tiene la solución para el dato incial: &amp;lt;math&amp;gt; u_0(x) = 1_{[-1,1]} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:convolucion.gif|400px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-5, 5, 1000);&lt;br /&gt;
t_values = linspace(0.01, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Función dato inicial&lt;br /&gt;
f = @(x) double(x &amp;gt;= -1 &amp;amp; x &amp;lt;= 1);&lt;br /&gt;
&lt;br /&gt;
% Solución fundamental&lt;br /&gt;
G = @(x, t) 1/sqrt(4 * pi * t) * exp(-x.^2 / (4 * t));&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la convolución utilizando el método del trapecio&lt;br /&gt;
    u = zeros(size(x));&lt;br /&gt;
    for j = 1:length(x)&lt;br /&gt;
        integrand = @(y) G(x(j) - y, t_values(i)) .* f(y);&lt;br /&gt;
        u(j) = trapz(x, integrand(x));&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Convolución con Trapecio (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1.1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.1);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&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>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=70114</id>
		<title>Ecuación del calor (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=70114"/>
				<updated>2024-03-07T18:58:15Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Solución fundamental */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar la ecuación del calor en una dimensión mediante el estudio de una varilla metálica de longitud 1 y que se encuentra aislada por su superficie lateral, es decir, la conducción de calor solo se produce en la dirección longitudinal. Para ello, vamos a ver cómo varía la solución en función de la variación de distintos parámetros como las condiciones iniciales o el coeficiente de conductividad. Además, veremos qué ocurre cuando suponemos que la longitud de la varilla no está acotada.&lt;br /&gt;
&lt;br /&gt;
=Preliminares=&lt;br /&gt;
&lt;br /&gt;
Antes de empezar a desarrollar el problema necesitamos conocer algunos conceptos que nos van a permitir modelizarlo y sacar sus ecuaciones.&lt;br /&gt;
&lt;br /&gt;
*Como el calor es una forma de energía, vamos a utilizar '''el principio de conservación de energía'''. Este establece que en un volumen de control &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt; arbitrario, la variación de energía a lo largo del tiempo se debe al balance neto del flujo de calor que atraviesa la frontera  de &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;\partial V&amp;lt;/math&amp;gt;) más una producción externa.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{d}{dt}\int_Ve(x,t)dx=\int_{\partial V}\overrightarrow q\cdot d\overrightarrow s +\int_V rdx&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; e(x,t) &amp;lt;/math&amp;gt; representa la densidad de energía calorífica y por tanto la primera integral se corresponde con la energía total que hay en &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt; \overrightarrow q &amp;lt;/math&amp;gt; es el flujo de calor y como la segunda integral es una integral de superficie, representa el flujo que atraviesa la frontera de &amp;lt;math&amp;gt; V &amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; r &amp;lt;/math&amp;gt; es lo que aporta una fuente externa.&lt;br /&gt;
&lt;br /&gt;
* También vamos a necesitar expresar el flujo y la energía en función de la temperatura. Para lo primero utilizamos la '''ley de Fourier''', que establece que el flujo de transferencia de calor es proporcional y de sentido contrario al gradiente de temperatura en esa dirección.&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \overrightarrow q=-k\nabla u &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Siendo k la conductividad térmica, y u la temperatura. Y para lo segundo vamos a suponer que la energía es proporcional a la temperatura.&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; e=cu &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Siendo &amp;lt;math&amp;gt; c &amp;lt;/math&amp;gt; el calor específico.&lt;br /&gt;
&lt;br /&gt;
* Denominamos '''coeficiente de difusión''' a &amp;lt;math&amp;gt; D=\frac{k}{c}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Principio del máximo''': Sea &amp;lt;math&amp;gt; u\in C^{2,1}(Q_T)\cap C(\overline Q_T) &amp;lt;/math&amp;gt; tal que &amp;lt;math&amp;gt; u_t-\nabla u\leq 0 &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; Q_T &amp;lt;/math&amp;gt;. Entonces &amp;lt;math&amp;gt; u &amp;lt;/math&amp;gt; alcanza su máximo en la frontera parabólica:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \max_{(x,t)\in\overline Q_T}=\max_{(x,t)\in\partial_pQ_T}. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Análogamente, se cumple con el mínimo.&lt;br /&gt;
&lt;br /&gt;
=Problema original=&lt;br /&gt;
En este primer apartado, vamos a suponer que la temperatura inicial de la varilla es 0ºC y que en el extremo izquierdo la temperatura se mantiene a 0ºC mientras que en el derecho la temperatura es siempre de 1ºC. Teniendo esto en cuenta y los conceptos desarrollados en el apartado anterior, el sistema de ecuaciones que representa el problema es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_t-Du_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Siendo &amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt; función que representa la temperatura de la varilla a lo largo del tiempo. Vamos a suponer que &amp;lt;math&amp;gt;D=1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Homogeneización==&lt;br /&gt;
&lt;br /&gt;
Antes de empezar con la resolución del problema vamos a homogeneizar las condiciones de contorno. Para hacer esto vamos a restarle al problema la solución estacionaria, es decir, la que permanece invariante respecto al tiempo. Esto implica que &amp;lt;math&amp;gt; u_t\sim 0 &amp;lt;/math&amp;gt; y que &amp;lt;math&amp;gt; u(x,t)\sim v(x) &amp;lt;/math&amp;gt;. Por lo que el problema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
v_{xx}=0 &amp;amp; x\in(0,1)\\&lt;br /&gt;
v(0)=0\\&lt;br /&gt;
v(1)=1\\&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución de este sistema, y por tanto la solución estacionaria es: &amp;lt;math&amp;gt; v(x)=x &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.1.jpg|400px|thumb|right|Solución estacionaria]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
v=@(x,t) x;&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(v, [0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('v(x)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la solución estacionaria, tomamos &amp;lt;math&amp;gt; w(x,t)=u(x,t)-v(x) &amp;lt;/math&amp;gt; y vemos como queda el problema homogeneizado para &amp;lt;math&amp;gt; w(x,t)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
w_t-w_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
w(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(x,0)=-x&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Una vez homogeneizado el sistema podemos empezar a buscar la solución por el método de separación de variables, en el cual vamos a suponer que la solución es de la forma: &amp;lt;math&amp;gt; w(x,t)=X(x)T(t) &amp;lt;/math&amp;gt;. Como &amp;lt;math&amp;gt;w(x,t)&amp;lt;/math&amp;gt; es solución del problema original, obtenemos que se tiene que cumplir &amp;lt;math&amp;gt;\frac{X''(x)}{X(x)}=\frac{T'(t)}{T(t)}=\lambda_k&amp;lt;/math&amp;gt; dando lugar a la resolución de dos sistemas por separado, uno que depende de &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt; y otro que depende de &amp;lt;math&amp;gt; t&amp;lt;/math&amp;gt;. Al solucionar ambos problemas obtenemos el siguiente resultado: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para que &amp;lt;math&amp;gt; w(x,t) &amp;lt;/math&amp;gt; sea solución de nuestro problema solo falta ver que cumpla la condición incial, es decir, que &amp;lt;math&amp;gt; w(x,0)=c_k\sin(k\pi x)=-x &amp;lt;/math&amp;gt;. De esta igualdad sacamos que si extendemos la función &amp;lt;math&amp;gt; -x &amp;lt;/math&amp;gt; de forma impar los coeficientes &amp;lt;math&amp;gt; c_k&amp;lt;/math&amp;gt; van a ser los coeficiente de la [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) serie de Fourier]. Por tanto, la solución queda de la siguiente manera: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta función es la solución del problema homogeneizado, por lo que para obtener la solución del problema original tenemos que deshacer el cambio de variable. La solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}+x&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a graficar los 10 primeros términos de la serie en &amp;lt;math&amp;gt; t \in [0,1]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.2c.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t); %Solución del problema homogeneizado&lt;br /&gt;
v=@(x) x; %Solución estacionaria&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x); %Solución del problema&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
close all&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
&lt;br /&gt;
%Ejes&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;
En la gráfica podemos observar que la solución del problema alcanza en poco tiempo la solución estacionaria, lo cual tiene sentido ya que estamos utilizando un coeficiente de difusión relativamente alto&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Ahora, para entender mejor cómo funciona la solución, vamos a ver cómo es su flujo. Para ello, vamos a graficar el flujo en los extremos teniendo en cuenta que, por la ley de Fourier, &amp;lt;math&amp;gt; q=-k u_x &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.3.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos la función &lt;br /&gt;
dwi=@(x,t,k) (2*(-1)^(k+1)).*cos(k.*pi.*x).*exp(-k^2.*pi^2.*t); %Derivada de la solución del problema homogéneo&lt;br /&gt;
dv=@(x) 1; %Derivada de la solución estacionaria&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
dw0=@(t) 0;&lt;br /&gt;
dw1=@(t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    dw0=@(t) dw0(t) + dwi(0,t,n);&lt;br /&gt;
    dw1=@(t) dw1(t) + dwi(1,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
du0=@(t) dw0(t)-dv(0); %Derivada de la solución en 0&lt;br /&gt;
du1=@(t) dw1(t)-dv(1); %Derivada de la solución en 1&lt;br /&gt;
&lt;br /&gt;
%Definimos el vector de tiempo&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
&lt;br /&gt;
% Gráfica en x=0&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,du0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
&lt;br /&gt;
%Gráfica en x=1&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,du1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al observar la gráfica en el extremo izquierdo vemos que al principio no hay flujo debido a que tanto la barra como el extremo están a 0º. Una vez avanza el tiempo el flujo va siendo cada vez más negativo lo que implica que cada vez sale más flujo por el extremo izquierdo. Esto tiene sentido ya que como la barra se va calentando, como podemos ver en la gráfica de la solución, y el extremo se mantiene a 0º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor.&lt;br /&gt;
&lt;br /&gt;
Por el contrario, en la gráfica del extremo derecho podemos observar que inicialmente hay mucho flujo hacia el interior de la barra debido a que la barra está a 0º y el extremo a 1º. Una vez avanza el tiempo el flujo va siendo cada vez menos negativo lo que implica que cada vez entra menos flujo por el extremo derecho. Esto es coherente ya que como la barra se va calentando, y el extremo se mantiene a 1º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor como hemos mencionado antes.&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas, cabe destacar dos aspectos característicos:&lt;br /&gt;
* Lo primero que cabe preguntarse es por qué cuando en la gráfica hay una gran variación del flujo, en el extremo izquierdo la variación es más moderada, y por el contrario, en el extremo derecho es más drástica. Esto se debe a que en el extremo izquierdo la diferencia de temperatura entre dos puntos cercanos es menor que en el derecho, cosa que podemos observar en la gráfica de la solución.&lt;br /&gt;
* También llama la atención que ambas gráficas se acaban estabilizando en un flujo de -1, este punto coincide con el punto en el que la solución alcanza la solución estacionaria, por lo que tiene sentido que el flujo en ambos extremos se estabilice en el mismo valor.&lt;br /&gt;
&lt;br /&gt;
=Variación coeficiente de conductividad=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a ver como varia la solución cuando variamos el coeficiente de conductividad térmica de 1 a 1/2. Con este coeficiente el sistema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{1t}-\frac{1}{2}u_{1xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_1(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviéndolo de la misma forma que el anterior obtenemos que la estacionaria no varía y es &amp;lt;math&amp;gt; v_1(x)=x &amp;lt;/math&amp;gt;, y que la solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u_1(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{\frac{-k^2\pi^2 t}{2}}+x,&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gf2.4b.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2); %Solución del problema homogéneo&lt;br /&gt;
v=@(x) x; %Solución estacionaria&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x); %Solución del problema&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_1(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Aunque a primera vista pueda parecer igual que la solución del problema original, si nos fijamos bien podemos observar que esta tarda más en alcanzar la solución estacionaria ya que está curvada en un mayor intervalo, esto tiene sentido por tener un coeficiente de conductividad menor.&lt;br /&gt;
&lt;br /&gt;
Ahora para apreciar mejor la diferencia vamos a representar ambas soluciones restándoles la estacionaria en x=1/2.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.5.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi1=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t); %Solución del problema homogéneo con D=1&lt;br /&gt;
wi2=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2); %Solución del problema homogéneo con D=1/2&lt;br /&gt;
v=@(x) x; %Solución homogénea&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w1=@(x,t) 0;&lt;br /&gt;
w2=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w1=@(x,t) w1(x,t) + wi1(x,t,n);&lt;br /&gt;
    w2=@(x,t) w2(x,t) + wi2(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
u1=@(x,t) w1(x,t)+v(x); %Solución del problema con D=1&lt;br /&gt;
u2=@(x,t) w2(x,t)+v(x); %Solución del problema con D=1/2&lt;br /&gt;
&lt;br /&gt;
%Hacemos la diferencia con la solución estacionaria en x=1/2&lt;br /&gt;
dif1=@(t) u1(0.5,t)-v(0.5);&lt;br /&gt;
dif2=@(t) u2(0.5,t)-v(0.5);&lt;br /&gt;
&lt;br /&gt;
%Definimos el vector de tiempos&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
&lt;br /&gt;
% Gráfica de la solución del problema con D=1&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,dif1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1')&lt;br /&gt;
&lt;br /&gt;
% Gráfica de la solución del problema con D=1/2&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,dif2(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1/2')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En estas gráficas podemos apreciar mejor que efectivamente esta solución tarda más en alcanzar la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
=Variación de las condiciones de frontera y las iniciales=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a variar las condiciones de frontera y la inicial y a ver cómo varía la solución. Suponemos que en el extremo derecho ahora la temperatura se mantiene a 0º, y que en el momento inicial la temperatura sigue la siguiente función: &amp;lt;math&amp;gt;max\{0,1-4|x-1/2|\}.&amp;lt;/math&amp;gt; Teniendo todo esto en cuenta, el problema que vamos a estudiar ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{2t}-u_{2xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_2(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Resolviendo este problema de la misma forma que los anteriores, obtenemos que la solución estacionaria es &amp;lt;math&amp;gt; v_2(x)=0 &amp;lt;/math&amp;gt; y que la solución es: &amp;lt;math&amp;gt; u_2(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;. A diferencia de en los otros casos los &amp;lt;math&amp;gt;c_k&amp;lt;/math&amp;gt; los vamos a calcular aproximando las integrales que se utilizan para obtenerlos por el [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals método del trapecio].&lt;br /&gt;
&lt;br /&gt;
Haciendo todo esto, la gráfica de la solución queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.6.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2)); %Condición inicial&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t); %Solución del problema&lt;br /&gt;
&lt;br /&gt;
%Aplicamos la regla del trapecio&lt;br /&gt;
a=0; b=1; %Extremos del intervalo                 &lt;br /&gt;
x=linspace(a,b,100); %Vector de espacio&lt;br /&gt;
t=linspace(a,b,100); %Vector de tiempo&lt;br /&gt;
N=length(x)-1; %Número de puntos&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1); %Vector de pesos             &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
f_n=zeros(length(x),length(t));&lt;br /&gt;
&lt;br /&gt;
%Suma de los 10 primeros términos en todo el vector de tiempo&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    for k=1:10&lt;br /&gt;
        g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
        a_k=2*h*w'*g; %Resultado de la regla del trapecio (c_k)&lt;br /&gt;
        f_n(i,:)= f_n(i,:)+a_k.*uk(x,t(i),k);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Gráfica en 3D&lt;br /&gt;
colormap jet &lt;br /&gt;
surf(x,t,f_n,'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_2(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al igual que en los casos anteriores, podemos ver que la solución acaba alcanzando la solución estacionaria. Además, podemos observar que la solución siempre es positiva, lo que implica que la difusión transporta energía con velocidad infinita.&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Ahora, igual que para el problema original, vamos a ver cómo se comporta el flujo en este problema. Para ello, vamos a representar el flujo en ambos extremos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.7.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2)); %Condición inicial&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t); %Solución del problema&lt;br /&gt;
duk=@(x,t,k) -k*pi.*cos(k.*pi.*x).*exp(-k.^2*pi.^2.*t); %Derivada de la solución&lt;br /&gt;
&lt;br /&gt;
%Aplicamos el método del trapecio&lt;br /&gt;
a=0; b=1; %Extremos de los intervalos              &lt;br /&gt;
x=linspace(a,b,100); %Vector de espacio&lt;br /&gt;
t=linspace(a,b,100); %Vector de tiempo&lt;br /&gt;
N=length(x)-1; %Número de puntos&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1); %Vector de pesos           &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
q0=@(t)0; &lt;br /&gt;
q1=@(t)0;&lt;br /&gt;
for k=1:100&lt;br /&gt;
    g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
    a_k=2*h*w'*g; %Solución de la regla del trapecio (c_k)&lt;br /&gt;
    q0=@(t) q0(t)+a_k.*duk(0,t,k); %Flujo en x=0&lt;br /&gt;
    q1=@(t) q1(t)+a_k.*duk(1,t,k); %flujo en x=1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Gráfica en x=0&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,q0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
&lt;br /&gt;
%Gráfica en x=1&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,q1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En ambos extremos el flujo empieza siendo cero, cosa que tiene sentido ya que tanto los extremos como los puntos de la barra cercanos a los extremos están a 0º. Posteriormente ambos flujos aumentan hacia fuera de la barra, esto es coherente ya que el calor en el centro de la barra en el momento inicial provoca que los laterales de la barra se vayan calentando y por tanto el flujo vaya hacia los extremos que se mantienen a 0º.&lt;br /&gt;
&lt;br /&gt;
Una vez avanza el tiempo podemos observar que ambos flujo se estacionan en un valor, y esto coincide con el momento en el que la gráfica de la solución alcanza la solución estacionaria. Además, cabe resaltar que este valor es 0, lo cual tiene sentido ya que la solución estacionaria hace que toda la barra se quede a 0º.&lt;br /&gt;
&lt;br /&gt;
==Aislamiento de un extremo==&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a ver cómo se comporta la solución cuando aislamos térmicamente el extremo derecho, es decir, cuando el flujo en ese punto es cero. Teniendo esto en cuenta, el problema queda de la siguiente forma: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{3t}-u_{3xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_3(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_{3x}(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_3(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviéndolo de la misma forma que en los casos anteriores obtenemos que la solución estacionaria es &amp;lt;math&amp;gt; v_3(x,t)=0 &amp;lt;/math&amp;gt; y que la solución del problema es &amp;lt;math&amp;gt; u_3(x,t)=\sum_{k=1}^\infty c_k\sin((k-\frac{1}{2})\pi x)e^{-(k-\frac{1}{2})^2\pi^2 t} &amp;lt;/math&amp;gt;. Ahora, para calcular los coeficientes &amp;lt;math&amp;gt; c_k &amp;lt;/math&amp;gt;, vamos a exigir que esta solución cumpla la condición inicial, es decir, &amp;lt;math&amp;gt; u_3(x,t)=\sum_{k=1}^\infty c_k\sin((k-\frac{1}{2})\pi x)= max\{0,1-4|x-1/2|\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
A diferencia de los otros casos, las autofunciones no las podemos expresar en función de la base trigonométrica, pero aun así forman un conjunto completo en [0,1] y vamos a comprobar que son ortogonales entre sí:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \int_0^1 sin((n-\frac{1}{2})\pi x)sin((m-\frac{1}{2})\pi x) dx= \frac{1}{2} \int_0^1 cos((n-m)\pi x)-cos((n+m-1)\pi x)dx=0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como &amp;lt;math&amp;gt;\{ \sin((n-\frac{1}{2})\pi x) \}_{n\in\mathbb{N}}&amp;lt;/math&amp;gt; cumplen estas características, forman una base Hilbertiana y por tanto pueden aproximar cualquier función y los &amp;lt;math&amp;gt; c_k &amp;lt;/math&amp;gt; se pueden calcular igual que los coeficientes de Fourier pero utilizando esta nueva base. Para hacer esto vamos a utilizar la regla del trapecio.&lt;br /&gt;
&lt;br /&gt;
Teniendo todo esto en cuenta, vamos a representar la función para entender mejor cómo funciona este sistema.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.9.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2)); %Condición inicial&lt;br /&gt;
uk=@(x,t,k) sin((k-0.5).*pi.*x).*exp(-(k-0.5).^2*pi.^2.*t); %Solución del problema&lt;br /&gt;
&lt;br /&gt;
%Aplicamos la regla del trapecio&lt;br /&gt;
a=0; b=1; %Extremos de los intervalos                    &lt;br /&gt;
x=linspace(a,b,100); %Vector de espacio&lt;br /&gt;
t=linspace(a,b,100); %Vector de tiempo&lt;br /&gt;
N=length(x)-1; %Número de puntos&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1);  %Vector de nudos            &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
f_n=zeros(length(x),length(t));&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 100 primero términos en todo el vector t&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    for k=1:100&lt;br /&gt;
        g=u0(x)*sin((k-0.5).*pi.*x)'; &lt;br /&gt;
        a_k=2*h*w'*g; %Solución de la regla del trapecio (c_k)&lt;br /&gt;
        f_n(i,:)= f_n(i,:)+a_k.*uk(x,t(i),k);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Gráfica en 3D&lt;br /&gt;
colormap jet &lt;br /&gt;
surf(x,t,f_n,'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_3(x,t)')}}&lt;br /&gt;
&lt;br /&gt;
Podemos observar que la gráfica es igual que la del problema anterior, excepto alrededor de x=1. Esto tiene sentido ya que lo único que hemos variado es la condición frontera en ese extremo. Además, podemos observar que la gráfica en esa zona es más recta, esto es debido a que la derivada es 0.&lt;br /&gt;
&lt;br /&gt;
===Flujo en los extremos===&lt;br /&gt;
Ahora, igual que en todos los problemas anteriores, para entender mejor la solución vamos a analizar el flujo viendo cómo se comporta en los extremos mediante la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.11.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2)); %Condición inicial&lt;br /&gt;
uk=@(x,t,k) sin((k-0.5).*pi.*x).*exp(-(k-0.5).^2*pi.^2.*t); %Solución del problema&lt;br /&gt;
duk=@(x,t,k) -(k-0.5)*pi.*cos((k-0.5).*pi.*x).*exp(-(k-0.5).^2*pi.^2.*t); %Derivada de la solución&lt;br /&gt;
&lt;br /&gt;
%Aplicamos el método del trapecio&lt;br /&gt;
a=0; b=1; %Extremos de los intervalos              &lt;br /&gt;
x=linspace(a,b,100); %Vector de espacio&lt;br /&gt;
t=linspace(a,b,100); %Vector de tiempo&lt;br /&gt;
N=length(x)-1; %Número de puntos&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1); %Vector de pesos           &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
q0=@(t)0; &lt;br /&gt;
q1=@(t)0;&lt;br /&gt;
for k=1:100&lt;br /&gt;
    g=u0(x)*sin((k-0.5)*pi*x)'; &lt;br /&gt;
    a_k=2*h*w'*g; %Solución de la regla del trapecio (c_k)&lt;br /&gt;
    q0=@(t) q0(t)+a_k.*duk(0,t,k); %Flujo en x=0&lt;br /&gt;
    q1=@(t) q1(t)+a_k.*duk(1,t,k); %flujo en x=1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Gráfica en x=0&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,q0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{3x}(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
&lt;br /&gt;
%Gráfica en x=1&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,q1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{3x}(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')}}&lt;br /&gt;
&lt;br /&gt;
En la gráfica del extremo izquierdo podemos observar que es igual que la anterior, al igual que pasa con la gráfica de la solución. Esto se debe a que la condición de contorno en ese extremo no la hemos variado.&lt;br /&gt;
&lt;br /&gt;
Por el contrario, en este extremo la gráfica es distinta debido a que al aislar este extremo no va a haber flujo y por eso la gráfica es prácticamente 0 en todo momento.&lt;br /&gt;
&lt;br /&gt;
=Principio del máximo=&lt;br /&gt;
Ahora, para entender mejor cómo funciona el principio del máximo, vamos a comprobar si este se cumple en las soluciones de los problemas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gpmax.png|925px|thumb|center|Soluciones]]&lt;br /&gt;
&lt;br /&gt;
En las dos primeras gráficas, podemos observar que el mínimo está en la frontera t=0 y el máximo en x=1 y en las otras dos podemos ver que el máximo está en t=0 y el mínimo en las fronteras de x. Por lo que efectivamente, en todas las soluciones que hemos calculado en este artículo se cumple el principio del máximo.&lt;br /&gt;
&lt;br /&gt;
=Solución fundamental=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la ecuación del calor cuando la variable espacial no está acotada. Por lo que el sistema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
u_t - k u_{xx} = 0&amp;amp; (x, t) \in \mathbb{R} \times (0, \infty)\\&lt;br /&gt;
u(x,0)=\delta(x)&amp;amp;&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde ''&amp;lt;math&amp;gt;\delta&amp;lt;/math&amp;gt;'' es la función delta de Dirac, que vale 0 en todo punto menos en x, y su integral en toda la recta real es igual a 1.&lt;br /&gt;
&lt;br /&gt;
La solución a este sistema es la llamada solución fundamental de la ecuación del calor, correspondiente a la condición inicial de un punto donde se concentra todo el calor y su fórmula es:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\Phi(x,t)=\frac{1}{\sqrt{4\pi kt}}\exp\left(-\frac{x^2}{4kt}\right).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.8.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Parámetros&lt;br /&gt;
k = 1;  % Coeficiente de conductividad&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
t = linspace(10^-2, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Inicialización de la matriz de soluciones&lt;br /&gt;
u = zeros(length(x), length(t));&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución fundamental&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
    u(:, i) = 1/sqrt(4 * pi * k * t(i)) * exp(-x.^2 / (4 * k * t(i)));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
colormap jet;&lt;br /&gt;
surf(x, t, u', 'FaceColor', 'interp');&lt;br /&gt;
title('Solución Fundamental de la Ecuación del Calor');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('t');&lt;br /&gt;
zlabel('Temperatura (u(x, t))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
De manera análoga, podemos extender esta solución a dos dimensiones espaciales: &amp;lt;math&amp;gt; \Phi(x,y,t) = \frac{1}{4 \pi k t} \exp\left(-\frac{x^2 + y^2}{4 k t}\right).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gif2.1.gif|400px|thumb|right|Video de la evolución de la solución a lo largo del tiempo]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
k = 1;  % Coeficiente de conductividad&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos en x y y&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
y = linspace(-1, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear una malla 2D&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Tiempos para la animación&lt;br /&gt;
t_values = linspace(0.001, 0.1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución fundamental en 2D&lt;br /&gt;
    u = 1/(4 * pi * k * t_values(i)) * exp(-(X.^2 + Y.^2) / (4 * k * t_values(i)));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    colormap jet&lt;br /&gt;
    surf(X, Y, u, 'EdgeColor', 'none');&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución Fundamental en 2D (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('x');&lt;br /&gt;
    ylabel('y');&lt;br /&gt;
    zlabel('Temperatura u(x, y, t)');&lt;br /&gt;
&lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    zlim([0, 20]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.2);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.10.jpg|900px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Soluciones autosemejantes==&lt;br /&gt;
&lt;br /&gt;
Lo bueno que tiene la solución fundamental es que no hemos tenido que restringirla a una región acotada del espacio, sino que es solución para todo &amp;lt;math&amp;gt; x \in \mathbb{R} &amp;lt;/math&amp;gt;. No estaría de más preguntarse si existen otras soluciones con esta propiedad.&lt;br /&gt;
La solución fundamental tiene la propiedad de ser autosemejante, es decir, su gráfica al variar el tiempo mantiene siempre la misma forma (una gaussiana).&lt;br /&gt;
&lt;br /&gt;
Podemos buscar otras soluciones con esta propiedad considerando el cambio de variable &amp;lt;math&amp;gt;\xi=\frac{x}{\sqrt{t}}&amp;lt;/math&amp;gt;. Se comprueba que esta combinación de variables es invariante respecto de dilataciones parabólicas y además no tiene dimensión (PÁG 44 DEL LIBRO).&lt;br /&gt;
&lt;br /&gt;
Imponemos que la función de una variable &amp;lt;math&amp;gt; U(\xi) &amp;lt;/math&amp;gt; cumpla la EDP, y llegamos a la EDO:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U'(\xi)+\frac{1}{2}U(\xi)=B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cuya solución, deshaciendo el cambio de variable, es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U(\frac{x}{\sqrt{t}})=Ae^{-{\frac{x}{2\sqrt{t}}}}+2B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
con &amp;lt;math&amp;gt; A,B &amp;lt;/math&amp;gt; constantes a determinar. Para ello, consideraremos las siguientes restricciones, que involucran una región espacial no acotada: &amp;lt;math&amp;gt; x&amp;gt;0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
&amp;amp;u(0, t) = 1 \\&lt;br /&gt;
&amp;amp;u(x, 0) = 0\\&lt;br /&gt;
&amp;amp;lim_{x \to \infty } u(x,t)=0&lt;br /&gt;
\end{aligned}&lt;br /&gt;
\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con las que obtenemos &amp;lt;math&amp;gt; A=1 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B=0 &amp;lt;/math&amp;gt;, y por tanto la solución a este problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=e^{-{\frac{x}{2\sqrt{t}}}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:autosemejantes.gif|400px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Definir el intervalo espacial&lt;br /&gt;
x = linspace(0, 5, 100);&lt;br /&gt;
&lt;br /&gt;
% Definir el intervalo de tiempo&lt;br /&gt;
t_values = linspace(0.01, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución&lt;br /&gt;
    u = exp(-x / (2 * sqrt(t_values(i))));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución de la Ecuación del Calor (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.1);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==La convolución==&lt;br /&gt;
&lt;br /&gt;
Otra forma de obtener soluciones de la ecuación del calor es usando la solución fundamental &amp;lt;math&amp;gt; \Phi(x,t) &amp;lt;/math&amp;gt; y aplicando una [https://es.wikipedia.org/wiki/Convoluci%C3%B3n convolución].&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; u(x,t) = \int_{-\infty}^{\infty} \Phi(x-y,t) u_0(y) dy&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; es el dato inicial, es decir, &amp;lt;math&amp;gt; u(x,0) = u_0(x) &amp;lt;/math&amp;gt; para &amp;lt;math&amp;gt; x \in \mathbb{R} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hemos visto antes que la solución fundamental representaba la respuesta del sistema a un impulso unitario (delta de Dirac) en un punto y en un instante de tiempo.&lt;br /&gt;
&lt;br /&gt;
Intuitivamente, la convolución realiza una integración ponderada de las contribuciones locales del dato inicial en cada punto y momento, proporcionando así la evolución completa de la temperatura de acuerdo con la ecuación del calor.&lt;br /&gt;
&lt;br /&gt;
Para ilustrarlo, vemos qué forma tiene la solución para el dato incial: &amp;lt;math&amp;gt; u_0(x) = 1_{[-1,1]} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:convolucion.gif|400px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-5, 5, 1000);&lt;br /&gt;
t_values = linspace(0.01, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Función dato inicial&lt;br /&gt;
f = @(x) double(x &amp;gt;= -1 &amp;amp; x &amp;lt;= 1);&lt;br /&gt;
&lt;br /&gt;
% Solución fundamental&lt;br /&gt;
G = @(x, t) 1/sqrt(4 * pi * t) * exp(-x.^2 / (4 * t));&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la convolución utilizando el método del trapecio&lt;br /&gt;
    u = zeros(size(x));&lt;br /&gt;
    for j = 1:length(x)&lt;br /&gt;
        integrand = @(y) G(x(j) - y, t_values(i)) .* f(y);&lt;br /&gt;
        u(j) = trapz(x, integrand(x));&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Convolución con Trapecio (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1.1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.1);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&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>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Convolucion.gif&amp;diff=70112</id>
		<title>Archivo:Convolucion.gif</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Convolucion.gif&amp;diff=70112"/>
				<updated>2024-03-07T18:57:04Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=70107</id>
		<title>Ecuación del calor (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=70107"/>
				<updated>2024-03-07T18:52:51Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* La convolución */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar la ecuación del calor en una dimensión mediante el estudio de una varilla metálica de longitud 1 y que se encuentra aislada por su superficie lateral, es decir, la conducción de calor solo se produce en la dirección longitudinal. Para ello, vamos a ver cómo varía la solución en función de la variación de distintos parámetros como las condiciones iniciales o el coeficiente de conductividad. Además, veremos qué ocurre cuando suponemos que la longitud de la varilla no está acotada.&lt;br /&gt;
&lt;br /&gt;
=Preliminares=&lt;br /&gt;
&lt;br /&gt;
Antes de empezar a desarrollar el problema necesitamos conocer algunos conceptos que nos van a permitir modelizarlo y sacar sus ecuaciones.&lt;br /&gt;
&lt;br /&gt;
*Como el calor es una forma de energía, vamos a utilizar '''el principio de conservación de energía'''. Este establece que en un volumen de control &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt; arbitrario, la variación de energía a lo largo del tiempo se debe al balance neto del flujo de calor que atraviesa la frontera  de &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;\partial V&amp;lt;/math&amp;gt;) más una producción externa.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{d}{dt}\int_Ve(x,t)dx=\int_{\partial V}\overrightarrow q\cdot d\overrightarrow s +\int_V rdx&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; e(x,t) &amp;lt;/math&amp;gt; representa la densidad de energía calorífica y por tanto la primera integral se corresponde con la energía total que hay en &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt; \overrightarrow q &amp;lt;/math&amp;gt; es el flujo de calor y como la segunda integral es una integral de superficie, representa el flujo que atraviesa la frontera de &amp;lt;math&amp;gt; V &amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; r &amp;lt;/math&amp;gt; es lo que aporta una fuente externa.&lt;br /&gt;
&lt;br /&gt;
* También vamos a necesitar expresar el flujo y la energía en función de la temperatura. Para lo primero utilizamos la '''ley de Fourier''', que establece que el flujo de transferencia de calor es proporcional y de sentido contrario al gradiente de temperatura en esa dirección.&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \overrightarrow q=-k\nabla u &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Siendo k la conductividad térmica, y u la temperatura. Y para lo segundo vamos a suponer que la energía es proporcional a la temperatura.&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; e=cu &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Siendo &amp;lt;math&amp;gt; c &amp;lt;/math&amp;gt; el calor específico.&lt;br /&gt;
&lt;br /&gt;
* Denominamos '''coeficiente de difusión''' a &amp;lt;math&amp;gt; D=\frac{k}{c}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Principio del máximo''': Sea &amp;lt;math&amp;gt; u\in C^{2,1}(Q_T)\cap C(\overline Q_T) &amp;lt;/math&amp;gt; tal que &amp;lt;math&amp;gt; u_t-\nabla u\leq 0 &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; Q_T &amp;lt;/math&amp;gt;. Entonces &amp;lt;math&amp;gt; u &amp;lt;/math&amp;gt; alcanza su máximo en la frontera parabólica:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \max_{(x,t)\in\overline Q_T}=\max_{(x,t)\in\partial_pQ_T}. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Análogamente, se cumple con el mínimo.&lt;br /&gt;
&lt;br /&gt;
=Problema original=&lt;br /&gt;
En este primer apartado, vamos a suponer que la temperatura inicial de la varilla es 0ºC y que en el extremo izquierdo la temperatura se mantiene a 0ºC mientras que en el derecho la temperatura es siempre de 1ºC. Teniendo esto en cuenta y los conceptos desarrollados en el apartado anterior, el sistema de ecuaciones que representa el problema es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_t-Du_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Siendo &amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt; función que representa la temperatura de la varilla a lo largo del tiempo. Vamos a suponer que &amp;lt;math&amp;gt;D=1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Homogeneización==&lt;br /&gt;
&lt;br /&gt;
Antes de empezar con la resolución del problema vamos a homogeneizar las condiciones de contorno. Para hacer esto vamos a restarle al problema la solución estacionaria, es decir, la que permanece invariante respecto al tiempo. Esto implica que &amp;lt;math&amp;gt; u_t\sim 0 &amp;lt;/math&amp;gt; y que &amp;lt;math&amp;gt; u(x,t)\sim v(x) &amp;lt;/math&amp;gt;. Por lo que el problema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
v_{xx}=0 &amp;amp; x\in(0,1)\\&lt;br /&gt;
v(0)=0\\&lt;br /&gt;
v(1)=1\\&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución de este sistema, y por tanto la solución estacionaria es: &amp;lt;math&amp;gt; v(x)=x &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.1.jpg|400px|thumb|right|Solución estacionaria]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
v=@(x,t) x;&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(v, [0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('v(x)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la solución estacionaria, tomamos &amp;lt;math&amp;gt; w(x,t)=u(x,t)-v(x) &amp;lt;/math&amp;gt; y vemos como queda el problema homogeneizado para &amp;lt;math&amp;gt; w(x,t)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
w_t-w_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
w(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(x,0)=-x&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Una vez homogeneizado el sistema podemos empezar a buscar la solución por el método de separación de variables, en el cual vamos a suponer que la solución es de la forma: &amp;lt;math&amp;gt; w(x,t)=X(x)T(t) &amp;lt;/math&amp;gt;. Como &amp;lt;math&amp;gt;w(x,t)&amp;lt;/math&amp;gt; es solución del problema original, obtenemos que se tiene que cumplir &amp;lt;math&amp;gt;\frac{X''(x)}{X(x)}=\frac{T'(t)}{T(t)}=\lambda_k&amp;lt;/math&amp;gt; dando lugar a la resolución de dos sistemas por separado, uno que depende de &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt; y otro que depende de &amp;lt;math&amp;gt; t&amp;lt;/math&amp;gt;. Al solucionar ambos problemas obtenemos el siguiente resultado: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para que &amp;lt;math&amp;gt; w(x,t) &amp;lt;/math&amp;gt; sea solución de nuestro problema solo falta ver que cumpla la condición incial, es decir, que &amp;lt;math&amp;gt; w(x,0)=c_k\sin(k\pi x)=-x &amp;lt;/math&amp;gt;. De esta igualdad sacamos que si extendemos la función &amp;lt;math&amp;gt; -x &amp;lt;/math&amp;gt; de forma impar los coeficientes &amp;lt;math&amp;gt; c_k&amp;lt;/math&amp;gt; van a ser los coeficiente de la [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) serie de Fourier]. Por tanto, la solución queda de la siguiente manera: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta función es la solución del problema homogeneizado, por lo que para obtener la solución del problema original tenemos que deshacer el cambio de variable. La solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}+x&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a graficar los 10 primeros términos de la serie en &amp;lt;math&amp;gt; t \in [0,1]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.2c.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t); %Solución del problema homogeneizado&lt;br /&gt;
v=@(x) x; %Solución estacionaria&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x); %Solución del problema&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
close all&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
&lt;br /&gt;
%Ejes&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;
En la gráfica podemos observar que la solución del problema alcanza en poco tiempo la solución estacionaria, lo cual tiene sentido ya que estamos utilizando un coeficiente de difusión relativamente alto&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Ahora, para entender mejor cómo funciona la solución, vamos a ver cómo es su flujo. Para ello, vamos a graficar el flujo en los extremos teniendo en cuenta que, por la ley de Fourier, &amp;lt;math&amp;gt; q=-k u_x &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.3.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos la función &lt;br /&gt;
dwi=@(x,t,k) (2*(-1)^(k+1)).*cos(k.*pi.*x).*exp(-k^2.*pi^2.*t); %Derivada de la solución del problema homogéneo&lt;br /&gt;
dv=@(x) 1; %Derivada de la solución estacionaria&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
dw0=@(t) 0;&lt;br /&gt;
dw1=@(t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    dw0=@(t) dw0(t) + dwi(0,t,n);&lt;br /&gt;
    dw1=@(t) dw1(t) + dwi(1,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
du0=@(t) dw0(t)-dv(0); %Derivada de la solución en 0&lt;br /&gt;
du1=@(t) dw1(t)-dv(1); %Derivada de la solución en 1&lt;br /&gt;
&lt;br /&gt;
%Definimos el vector de tiempo&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
&lt;br /&gt;
% Gráfica en x=0&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,du0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
&lt;br /&gt;
%Gráfica en x=1&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,du1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al observar la gráfica en el extremo izquierdo vemos que al principio no hay flujo debido a que tanto la barra como el extremo están a 0º. Una vez avanza el tiempo el flujo va siendo cada vez más negativo lo que implica que cada vez sale más flujo por el extremo izquierdo. Esto tiene sentido ya que como la barra se va calentando, como podemos ver en la gráfica de la solución, y el extremo se mantiene a 0º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor.&lt;br /&gt;
&lt;br /&gt;
Por el contrario, en la gráfica del extremo derecho podemos observar que inicialmente hay mucho flujo hacia el interior de la barra debido a que la barra está a 0º y el extremo a 1º. Una vez avanza el tiempo el flujo va siendo cada vez menos negativo lo que implica que cada vez entra menos flujo por el extremo derecho. Esto es coherente ya que como la barra se va calentando, y el extremo se mantiene a 1º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor como hemos mencionado antes.&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas, cabe destacar dos aspectos característicos:&lt;br /&gt;
* Lo primero que cabe preguntarse es por qué cuando en la gráfica hay una gran variación del flujo, en el extremo izquierdo la variación es más moderada, y por el contrario, en el extremo derecho es más drástica. Esto se debe a que en el extremo izquierdo la diferencia de temperatura entre dos puntos cercanos es menor que en el derecho, cosa que podemos observar en la gráfica de la solución.&lt;br /&gt;
* También llama la atención que ambas gráficas se acaban estabilizando en un flujo de -1, este punto coincide con el punto en el que la solución alcanza la solución estacionaria, por lo que tiene sentido que el flujo en ambos extremos se estabilice en el mismo valor.&lt;br /&gt;
&lt;br /&gt;
=Variación coeficiente de conductividad=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a ver como varia la solución cuando variamos el coeficiente de conductividad térmica de 1 a 1/2. Con este coeficiente el sistema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{1t}-\frac{1}{2}u_{1xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_1(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviéndolo de la misma forma que el anterior obtenemos que la estacionaria no varía y es &amp;lt;math&amp;gt; v_1(x)=x &amp;lt;/math&amp;gt;, y que la solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u_1(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{\frac{-k^2\pi^2 t}{2}}+x,&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gf2.4b.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2); %Solución del problema homogéneo&lt;br /&gt;
v=@(x) x; %Solución estacionaria&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x); %Solución del problema&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_1(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Aunque a primera vista pueda parecer igual que la solución del problema original, si nos fijamos bien podemos observar que esta tarda más en alcanzar la solución estacionaria ya que está curvada en un mayor intervalo, esto tiene sentido por tener un coeficiente de conductividad menor.&lt;br /&gt;
&lt;br /&gt;
Ahora para apreciar mejor la diferencia vamos a representar ambas soluciones restándoles la estacionaria en x=1/2.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.5.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi1=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t); %Solución del problema homogéneo con D=1&lt;br /&gt;
wi2=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2); %Solución del problema homogéneo con D=1/2&lt;br /&gt;
v=@(x) x; %Solución homogénea&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w1=@(x,t) 0;&lt;br /&gt;
w2=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w1=@(x,t) w1(x,t) + wi1(x,t,n);&lt;br /&gt;
    w2=@(x,t) w2(x,t) + wi2(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
u1=@(x,t) w1(x,t)+v(x); %Solución del problema con D=1&lt;br /&gt;
u2=@(x,t) w2(x,t)+v(x); %Solución del problema con D=1/2&lt;br /&gt;
&lt;br /&gt;
%Hacemos la diferencia con la solución estacionaria en x=1/2&lt;br /&gt;
dif1=@(t) u1(0.5,t)-v(0.5);&lt;br /&gt;
dif2=@(t) u2(0.5,t)-v(0.5);&lt;br /&gt;
&lt;br /&gt;
%Definimos el vector de tiempos&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
&lt;br /&gt;
% Gráfica de la solución del problema con D=1&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,dif1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1')&lt;br /&gt;
&lt;br /&gt;
% Gráfica de la solución del problema con D=1/2&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,dif2(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1/2')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En estas gráficas podemos apreciar mejor que efectivamente esta solución tarda más en alcanzar la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
=Variación de las condiciones de frontera y las iniciales=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a variar las condiciones de frontera y la inicial y a ver cómo varía la solución. Suponemos que en el extremo derecho ahora la temperatura se mantiene a 0º, y que en el momento inicial la temperatura sigue la siguiente función: &amp;lt;math&amp;gt;max\{0,1-4|x-1/2|\}.&amp;lt;/math&amp;gt; Teniendo todo esto en cuenta, el problema que vamos a estudiar ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{2t}-u_{2xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_2(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Resolviendo este problema de la misma forma que los anteriores, obtenemos que la solución estacionaria es &amp;lt;math&amp;gt; v_2(x)=0 &amp;lt;/math&amp;gt; y que la solución es: &amp;lt;math&amp;gt; u_2(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;. A diferencia de en los otros casos los &amp;lt;math&amp;gt;c_k&amp;lt;/math&amp;gt; los vamos a calcular aproximando las integrales que se utilizan para obtenerlos por el [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals método del trapecio].&lt;br /&gt;
&lt;br /&gt;
Haciendo todo esto, la gráfica de la solución queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.6.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2)); %Condición inicial&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t); %Solución del problema&lt;br /&gt;
&lt;br /&gt;
%Aplicamos la regla del trapecio&lt;br /&gt;
a=0; b=1; %Extremos del intervalo                 &lt;br /&gt;
x=linspace(a,b,100); %Vector de espacio&lt;br /&gt;
t=linspace(a,b,100); %Vector de tiempo&lt;br /&gt;
N=length(x)-1; %Número de puntos&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1); %Vector de pesos             &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
f_n=zeros(length(x),length(t));&lt;br /&gt;
&lt;br /&gt;
%Suma de los 10 primeros términos en todo el vector de tiempo&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    for k=1:10&lt;br /&gt;
        g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
        a_k=2*h*w'*g; %Resultado de la regla del trapecio (c_k)&lt;br /&gt;
        f_n(i,:)= f_n(i,:)+a_k.*uk(x,t(i),k);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Gráfica en 3D&lt;br /&gt;
colormap jet &lt;br /&gt;
surf(x,t,f_n,'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_2(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al igual que en los casos anteriores, podemos ver que la solución acaba alcanzando la solución estacionaria. Además, podemos observar que la solución siempre es positiva, lo que implica que la difusión transporta energía con velocidad infinita.&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Ahora, igual que para el problema original, vamos a ver cómo se comporta el flujo en este problema. Para ello, vamos a representar el flujo en ambos extremos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.7.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2)); %Condición inicial&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t); %Solución del problema&lt;br /&gt;
duk=@(x,t,k) -k*pi.*cos(k.*pi.*x).*exp(-k.^2*pi.^2.*t); %Derivada de la solución&lt;br /&gt;
&lt;br /&gt;
%Aplicamos el método del trapecio&lt;br /&gt;
a=0; b=1; %Extremos de los intervalos              &lt;br /&gt;
x=linspace(a,b,100); %Vector de espacio&lt;br /&gt;
t=linspace(a,b,100); %Vector de tiempo&lt;br /&gt;
N=length(x)-1; %Número de puntos&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1); %Vector de pesos           &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
q0=@(t)0; &lt;br /&gt;
q1=@(t)0;&lt;br /&gt;
for k=1:100&lt;br /&gt;
    g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
    a_k=2*h*w'*g; %Solución de la regla del trapecio (c_k)&lt;br /&gt;
    q0=@(t) q0(t)+a_k.*duk(0,t,k); %Flujo en x=0&lt;br /&gt;
    q1=@(t) q1(t)+a_k.*duk(1,t,k); %flujo en x=1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Gráfica en x=0&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,q0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
&lt;br /&gt;
%Gráfica en x=1&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,q1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En ambos extremos el flujo empieza siendo cero, cosa que tiene sentido ya que tanto los extremos como los puntos de la barra cercanos a los extremos están a 0º. Posteriormente ambos flujos aumentan hacia fuera de la barra, esto es coherente ya que el calor en el centro de la barra en el momento inicial provoca que los laterales de la barra se vayan calentando y por tanto el flujo vaya hacia los extremos que se mantienen a 0º.&lt;br /&gt;
&lt;br /&gt;
Una vez avanza el tiempo podemos observar que ambos flujo se estacionan en un valor, y esto coincide con el momento en el que la gráfica de la solución alcanza la solución estacionaria. Además, cabe resaltar que este valor es 0, lo cual tiene sentido ya que la solución estacionaria hace que toda la barra se quede a 0º.&lt;br /&gt;
&lt;br /&gt;
==Aislamiento de un extremo==&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a ver cómo se comporta la solución cuando aislamos térmicamente el extremo derecho, es decir, cuando el flujo en ese punto es cero. Teniendo esto en cuenta, el problema queda de la siguiente forma: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{3t}-u_{3xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_3(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_{3x}(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_3(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviéndolo de la misma forma que en los casos anteriores obtenemos que la solución estacionaria es &amp;lt;math&amp;gt; v_3(x,t)=0 &amp;lt;/math&amp;gt; y que la solución del problema es &amp;lt;math&amp;gt; u_3(x,t)=\sum_{k=1}^\infty c_k\sin((k-\frac{1}{2})\pi x)e^{-(k-\frac{1}{2})^2\pi^2 t} &amp;lt;/math&amp;gt;. Ahora, para calcular los coeficientes &amp;lt;math&amp;gt; c_k &amp;lt;/math&amp;gt;, vamos a exigir que esta solución cumpla la condición inicial, es decir, &amp;lt;math&amp;gt; u_3(x,t)=\sum_{k=1}^\infty c_k\sin((k-\frac{1}{2})\pi x)= max\{0,1-4|x-1/2|\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
A diferencia de los otros casos, las autofunciones no las podemos expresar en función de la base trigonométrica, pero aun así forman un conjunto completo en [0,1] y vamos a comprobar que son ortogonales entre sí:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \int_0^1 sin((n-\frac{1}{2})\pi x)sin((m-\frac{1}{2})\pi x) dx= \frac{1}{2} \int_0^1 cos((n-m)\pi x)-cos((n+m-1)\pi x)dx=0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como &amp;lt;math&amp;gt;\{ \sin((n-\frac{1}{2})\pi x) \}_{n\in\mathbb{N}}&amp;lt;/math&amp;gt; cumplen estas características, forman una base Hilbertiana y por tanto pueden aproximar cualquier función y los &amp;lt;math&amp;gt; c_k &amp;lt;/math&amp;gt; se pueden calcular igual que los coeficientes de Fourier pero utilizando esta nueva base. Para hacer esto vamos a utilizar la regla del trapecio.&lt;br /&gt;
&lt;br /&gt;
Teniendo todo esto en cuenta, vamos a representar la función para entender mejor cómo funciona este sistema.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.9.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2)); %Condición inicial&lt;br /&gt;
uk=@(x,t,k) sin((k-0.5).*pi.*x).*exp(-(k-0.5).^2*pi.^2.*t); %Solución del problema&lt;br /&gt;
&lt;br /&gt;
%Aplicamos la regla del trapecio&lt;br /&gt;
a=0; b=1; %Extremos de los intervalos                    &lt;br /&gt;
x=linspace(a,b,100); %Vector de espacio&lt;br /&gt;
t=linspace(a,b,100); %Vector de tiempo&lt;br /&gt;
N=length(x)-1; %Número de puntos&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1);  %Vector de nudos            &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
f_n=zeros(length(x),length(t));&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 100 primero términos en todo el vector t&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    for k=1:100&lt;br /&gt;
        g=u0(x)*sin((k-0.5).*pi.*x)'; &lt;br /&gt;
        a_k=2*h*w'*g; %Solución de la regla del trapecio (c_k)&lt;br /&gt;
        f_n(i,:)= f_n(i,:)+a_k.*uk(x,t(i),k);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Gráfica en 3D&lt;br /&gt;
colormap jet &lt;br /&gt;
surf(x,t,f_n,'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_3(x,t)')}}&lt;br /&gt;
&lt;br /&gt;
Podemos observar que la gráfica es igual que la del problema anterior, excepto alrededor de x=1. Esto tiene sentido ya que lo único que hemos variado es la condición frontera en ese extremo. Además, podemos observar que la gráfica en esa zona es más recta, esto es debido a que la derivada es 0.&lt;br /&gt;
&lt;br /&gt;
===Flujo en los extremos===&lt;br /&gt;
Ahora, igual que en todos los problemas anteriores, para entender mejor la solución vamos a analizar el flujo viendo cómo se comporta en los extremos mediante la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.11.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2)); %Condición inicial&lt;br /&gt;
uk=@(x,t,k) sin((k-0.5).*pi.*x).*exp(-(k-0.5).^2*pi.^2.*t); %Solución del problema&lt;br /&gt;
duk=@(x,t,k) -(k-0.5)*pi.*cos((k-0.5).*pi.*x).*exp(-(k-0.5).^2*pi.^2.*t); %Derivada de la solución&lt;br /&gt;
&lt;br /&gt;
%Aplicamos el método del trapecio&lt;br /&gt;
a=0; b=1; %Extremos de los intervalos              &lt;br /&gt;
x=linspace(a,b,100); %Vector de espacio&lt;br /&gt;
t=linspace(a,b,100); %Vector de tiempo&lt;br /&gt;
N=length(x)-1; %Número de puntos&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1); %Vector de pesos           &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
q0=@(t)0; &lt;br /&gt;
q1=@(t)0;&lt;br /&gt;
for k=1:100&lt;br /&gt;
    g=u0(x)*sin((k-0.5)*pi*x)'; &lt;br /&gt;
    a_k=2*h*w'*g; %Solución de la regla del trapecio (c_k)&lt;br /&gt;
    q0=@(t) q0(t)+a_k.*duk(0,t,k); %Flujo en x=0&lt;br /&gt;
    q1=@(t) q1(t)+a_k.*duk(1,t,k); %flujo en x=1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Gráfica en x=0&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,q0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{3x}(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
&lt;br /&gt;
%Gráfica en x=1&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,q1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{3x}(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')}}&lt;br /&gt;
&lt;br /&gt;
En la gráfica del extremo izquierdo podemos observar que es igual que la anterior, al igual que pasa con la gráfica de la solución. Esto se debe a que la condición de contorno en ese extremo no la hemos variado.&lt;br /&gt;
&lt;br /&gt;
Por el contrario, en este extremo la gráfica es distinta debido a que al aislar este extremo no va a haber flujo y por eso la gráfica es prácticamente 0 en todo momento.&lt;br /&gt;
&lt;br /&gt;
=Principio del máximo=&lt;br /&gt;
Ahora, para entender mejor cómo funciona el principio del máximo, vamos a comprobar si este se cumple en las soluciones de los problemas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gpmax.png|925px|thumb|center|Soluciones]]&lt;br /&gt;
&lt;br /&gt;
En las dos primeras gráficas, podemos observar que el mínimo está en la frontera t=0 y el máximo en x=1 y en las otras dos podemos ver que el máximo está en t=0 y el mínimo en las fronteras de x. Por lo que efectivamente, en todas las soluciones que hemos calculado en este artículo se cumple el principio del máximo.&lt;br /&gt;
&lt;br /&gt;
=Solución fundamental=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la ecuación del calor cuando la variable espacial no está acotada. Por lo que el sistema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
u_t - k u_{xx} = 0&amp;amp; (x, t) \in \mathbb{R} \times (0, \infty)\\&lt;br /&gt;
u(x,0)=\delta(x)&amp;amp;&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde ''&amp;lt;math&amp;gt;\delta&amp;lt;/math&amp;gt;'' es la función delta de Dirac, que vale 0 en todo punto menos en x, y su integral en toda la recta real es igual a 1.&lt;br /&gt;
&lt;br /&gt;
La solución a este sistema es la llamada solución fundamental de la ecuación del calor, correspondiente a la condición inicial de un punto donde se concentra todo el calor y su fórmula es:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\Phi(x,t)=\frac{1}{\sqrt{4\pi kt}}\exp\left(-\frac{x^2}{4kt}\right).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.8.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Parámetros&lt;br /&gt;
k = 1;  % Coeficiente de conductividad&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
t = linspace(10^-2, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Inicialización de la matriz de soluciones&lt;br /&gt;
u = zeros(length(x), length(t));&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución fundamental&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
    u(:, i) = 1/sqrt(4 * pi * k * t(i)) * exp(-x.^2 / (4 * k * t(i)));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
colormap jet;&lt;br /&gt;
surf(x, t, u', 'FaceColor', 'interp');&lt;br /&gt;
title('Solución Fundamental de la Ecuación del Calor');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('t');&lt;br /&gt;
zlabel('Temperatura (u(x, t))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ANIMACIÓN:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
    u = 1/sqrt(4 * pi * k * t(i)) * exp(-x.^2 / (4 * k * t(i)));&lt;br /&gt;
&lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y la etiqueta&lt;br /&gt;
    title(['Evolución de la Temperatura (t = ' num2str(t(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 3]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.08);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
De manera análoga, podemos extender esta solución a dos dimensiones espaciales: &amp;lt;math&amp;gt; \Phi(x,y,t) = \frac{1}{4 \pi k t} \exp\left(-\frac{x^2 + y^2}{4 k t}\right).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gif2.1.gif|400px|thumb|right|Video de la evolución de la solución a lo largo del tiempo]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
k = 1;  % Coeficiente de conductividad&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos en x y y&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
y = linspace(-1, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear una malla 2D&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Tiempos para la animación&lt;br /&gt;
t_values = linspace(0.001, 0.1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución fundamental en 2D&lt;br /&gt;
    u = 1/(4 * pi * k * t_values(i)) * exp(-(X.^2 + Y.^2) / (4 * k * t_values(i)));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    colormap jet&lt;br /&gt;
    surf(X, Y, u, 'EdgeColor', 'none');&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución Fundamental en 2D (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('x');&lt;br /&gt;
    ylabel('y');&lt;br /&gt;
    zlabel('Temperatura u(x, y, t)');&lt;br /&gt;
&lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    zlim([0, 20]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.2);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.10.jpg|900px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Soluciones autosemejantes==&lt;br /&gt;
&lt;br /&gt;
Lo bueno que tiene la solución fundamental es que no hemos tenido que restringirla a una región acotada del espacio, sino que es solución para todo &amp;lt;math&amp;gt; x \in \mathbb{R} &amp;lt;/math&amp;gt;. No estaría de más preguntarse si existen otras soluciones con esta propiedad.&lt;br /&gt;
La solución fundamental tiene la propiedad de ser autosemejante, es decir, su gráfica al variar el tiempo mantiene siempre la misma forma (una gaussiana).&lt;br /&gt;
&lt;br /&gt;
Podemos buscar otras soluciones con esta propiedad considerando el cambio de variable &amp;lt;math&amp;gt;\xi=\frac{x}{\sqrt{t}}&amp;lt;/math&amp;gt;. Se comprueba que esta combinación de variables es invariante respecto de dilataciones parabólicas y además no tiene dimensión (PÁG 44 DEL LIBRO).&lt;br /&gt;
&lt;br /&gt;
Imponemos que la función de una variable &amp;lt;math&amp;gt; U(\xi) &amp;lt;/math&amp;gt; cumpla la EDP, y llegamos a la EDO:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U'(\xi)+\frac{1}{2}U(\xi)=B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cuya solución, deshaciendo el cambio de variable, es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U(\frac{x}{\sqrt{t}})=Ae^{-{\frac{x}{2\sqrt{t}}}}+2B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
con &amp;lt;math&amp;gt; A,B &amp;lt;/math&amp;gt; constantes a determinar. Para ello, consideraremos las siguientes restricciones, que involucran una región espacial no acotada: &amp;lt;math&amp;gt; x&amp;gt;0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
&amp;amp;u(0, t) = 1 \\&lt;br /&gt;
&amp;amp;u(x, 0) = 0\\&lt;br /&gt;
&amp;amp;lim_{x \to \infty } u(x,t)=0&lt;br /&gt;
\end{aligned}&lt;br /&gt;
\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con las que obtenemos &amp;lt;math&amp;gt; A=1 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B=0 &amp;lt;/math&amp;gt;, y por tanto la solución a este problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=e^{-{\frac{x}{2\sqrt{t}}}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:autosemejantes.gif|400px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Definir el intervalo espacial&lt;br /&gt;
x = linspace(0, 5, 100);&lt;br /&gt;
&lt;br /&gt;
% Definir el intervalo de tiempo&lt;br /&gt;
t_values = linspace(0.01, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución&lt;br /&gt;
    u = exp(-x / (2 * sqrt(t_values(i))));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución de la Ecuación del Calor (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.1);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==La convolución==&lt;br /&gt;
&lt;br /&gt;
Otra forma de obtener soluciones de la ecuación del calor es usando la solución fundamental &amp;lt;math&amp;gt; \Phi(x,t) &amp;lt;/math&amp;gt; y aplicando una [https://es.wikipedia.org/wiki/Convoluci%C3%B3n convolución].&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; u(x,t) = \int_{-\infty}^{\infty} \Phi(x-y,t) u_0(y) dy&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; es el dato inicial, es decir, &amp;lt;math&amp;gt; u(x,0) = u_0(x) &amp;lt;/math&amp;gt; para &amp;lt;math&amp;gt; x \in \mathbb{R} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hemos visto antes que la solución fundamental representaba la respuesta del sistema a un impulso unitario (delta de Dirac) en un punto y en un instante de tiempo.&lt;br /&gt;
&lt;br /&gt;
Intuitivamente, la convolución realiza una integración ponderada de las contribuciones locales del dato inicial en cada punto y momento, proporcionando así la evolución completa de la temperatura de acuerdo con la ecuación del calor.&lt;br /&gt;
&lt;br /&gt;
Para ilustrarlo, vemos qué forma tiene la solución para el dato incial: &amp;lt;math&amp;gt; u_0(x) = 1_{[-1,1]} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-5, 5, 1000);&lt;br /&gt;
t_values = linspace(0.01, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Función dato inicial&lt;br /&gt;
f = @(x) double(x &amp;gt;= -1 &amp;amp; x &amp;lt;= 1);&lt;br /&gt;
&lt;br /&gt;
% Solución fundamental&lt;br /&gt;
G = @(x, t) 1/sqrt(4 * pi * t) * exp(-x.^2 / (4 * t));&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la convolución utilizando el método del trapecio&lt;br /&gt;
    u = zeros(size(x));&lt;br /&gt;
    for j = 1:length(x)&lt;br /&gt;
        integrand = @(y) G(x(j) - y, t_values(i)) .* f(y);&lt;br /&gt;
        u(j) = trapz(x, integrand(x));&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Convolución con Trapecio (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1.1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.1);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&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>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=70106</id>
		<title>Ecuación del calor (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=70106"/>
				<updated>2024-03-07T18:52:37Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* La convolución */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar la ecuación del calor en una dimensión mediante el estudio de una varilla metálica de longitud 1 y que se encuentra aislada por su superficie lateral, es decir, la conducción de calor solo se produce en la dirección longitudinal. Para ello, vamos a ver cómo varía la solución en función de la variación de distintos parámetros como las condiciones iniciales o el coeficiente de conductividad. Además, veremos qué ocurre cuando suponemos que la longitud de la varilla no está acotada.&lt;br /&gt;
&lt;br /&gt;
=Preliminares=&lt;br /&gt;
&lt;br /&gt;
Antes de empezar a desarrollar el problema necesitamos conocer algunos conceptos que nos van a permitir modelizarlo y sacar sus ecuaciones.&lt;br /&gt;
&lt;br /&gt;
*Como el calor es una forma de energía, vamos a utilizar '''el principio de conservación de energía'''. Este establece que en un volumen de control &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt; arbitrario, la variación de energía a lo largo del tiempo se debe al balance neto del flujo de calor que atraviesa la frontera  de &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;\partial V&amp;lt;/math&amp;gt;) más una producción externa.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{d}{dt}\int_Ve(x,t)dx=\int_{\partial V}\overrightarrow q\cdot d\overrightarrow s +\int_V rdx&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; e(x,t) &amp;lt;/math&amp;gt; representa la densidad de energía calorífica y por tanto la primera integral se corresponde con la energía total que hay en &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt; \overrightarrow q &amp;lt;/math&amp;gt; es el flujo de calor y como la segunda integral es una integral de superficie, representa el flujo que atraviesa la frontera de &amp;lt;math&amp;gt; V &amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; r &amp;lt;/math&amp;gt; es lo que aporta una fuente externa.&lt;br /&gt;
&lt;br /&gt;
* También vamos a necesitar expresar el flujo y la energía en función de la temperatura. Para lo primero utilizamos la '''ley de Fourier''', que establece que el flujo de transferencia de calor es proporcional y de sentido contrario al gradiente de temperatura en esa dirección.&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \overrightarrow q=-k\nabla u &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Siendo k la conductividad térmica, y u la temperatura. Y para lo segundo vamos a suponer que la energía es proporcional a la temperatura.&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; e=cu &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Siendo &amp;lt;math&amp;gt; c &amp;lt;/math&amp;gt; el calor específico.&lt;br /&gt;
&lt;br /&gt;
* Denominamos '''coeficiente de difusión''' a &amp;lt;math&amp;gt; D=\frac{k}{c}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Principio del máximo''': Sea &amp;lt;math&amp;gt; u\in C^{2,1}(Q_T)\cap C(\overline Q_T) &amp;lt;/math&amp;gt; tal que &amp;lt;math&amp;gt; u_t-\nabla u\leq 0 &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; Q_T &amp;lt;/math&amp;gt;. Entonces &amp;lt;math&amp;gt; u &amp;lt;/math&amp;gt; alcanza su máximo en la frontera parabólica:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \max_{(x,t)\in\overline Q_T}=\max_{(x,t)\in\partial_pQ_T}. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Análogamente, se cumple con el mínimo.&lt;br /&gt;
&lt;br /&gt;
=Problema original=&lt;br /&gt;
En este primer apartado, vamos a suponer que la temperatura inicial de la varilla es 0ºC y que en el extremo izquierdo la temperatura se mantiene a 0ºC mientras que en el derecho la temperatura es siempre de 1ºC. Teniendo esto en cuenta y los conceptos desarrollados en el apartado anterior, el sistema de ecuaciones que representa el problema es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_t-Du_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Siendo &amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt; función que representa la temperatura de la varilla a lo largo del tiempo. Vamos a suponer que &amp;lt;math&amp;gt;D=1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Homogeneización==&lt;br /&gt;
&lt;br /&gt;
Antes de empezar con la resolución del problema vamos a homogeneizar las condiciones de contorno. Para hacer esto vamos a restarle al problema la solución estacionaria, es decir, la que permanece invariante respecto al tiempo. Esto implica que &amp;lt;math&amp;gt; u_t\sim 0 &amp;lt;/math&amp;gt; y que &amp;lt;math&amp;gt; u(x,t)\sim v(x) &amp;lt;/math&amp;gt;. Por lo que el problema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
v_{xx}=0 &amp;amp; x\in(0,1)\\&lt;br /&gt;
v(0)=0\\&lt;br /&gt;
v(1)=1\\&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución de este sistema, y por tanto la solución estacionaria es: &amp;lt;math&amp;gt; v(x)=x &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.1.jpg|400px|thumb|right|Solución estacionaria]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
v=@(x,t) x;&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(v, [0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('v(x)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la solución estacionaria, tomamos &amp;lt;math&amp;gt; w(x,t)=u(x,t)-v(x) &amp;lt;/math&amp;gt; y vemos como queda el problema homogeneizado para &amp;lt;math&amp;gt; w(x,t)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
w_t-w_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
w(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(x,0)=-x&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Una vez homogeneizado el sistema podemos empezar a buscar la solución por el método de separación de variables, en el cual vamos a suponer que la solución es de la forma: &amp;lt;math&amp;gt; w(x,t)=X(x)T(t) &amp;lt;/math&amp;gt;. Como &amp;lt;math&amp;gt;w(x,t)&amp;lt;/math&amp;gt; es solución del problema original, obtenemos que se tiene que cumplir &amp;lt;math&amp;gt;\frac{X''(x)}{X(x)}=\frac{T'(t)}{T(t)}=\lambda_k&amp;lt;/math&amp;gt; dando lugar a la resolución de dos sistemas por separado, uno que depende de &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt; y otro que depende de &amp;lt;math&amp;gt; t&amp;lt;/math&amp;gt;. Al solucionar ambos problemas obtenemos el siguiente resultado: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para que &amp;lt;math&amp;gt; w(x,t) &amp;lt;/math&amp;gt; sea solución de nuestro problema solo falta ver que cumpla la condición incial, es decir, que &amp;lt;math&amp;gt; w(x,0)=c_k\sin(k\pi x)=-x &amp;lt;/math&amp;gt;. De esta igualdad sacamos que si extendemos la función &amp;lt;math&amp;gt; -x &amp;lt;/math&amp;gt; de forma impar los coeficientes &amp;lt;math&amp;gt; c_k&amp;lt;/math&amp;gt; van a ser los coeficiente de la [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) serie de Fourier]. Por tanto, la solución queda de la siguiente manera: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta función es la solución del problema homogeneizado, por lo que para obtener la solución del problema original tenemos que deshacer el cambio de variable. La solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}+x&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a graficar los 10 primeros términos de la serie en &amp;lt;math&amp;gt; t \in [0,1]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.2c.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t); %Solución del problema homogeneizado&lt;br /&gt;
v=@(x) x; %Solución estacionaria&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x); %Solución del problema&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
close all&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
&lt;br /&gt;
%Ejes&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;
En la gráfica podemos observar que la solución del problema alcanza en poco tiempo la solución estacionaria, lo cual tiene sentido ya que estamos utilizando un coeficiente de difusión relativamente alto&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Ahora, para entender mejor cómo funciona la solución, vamos a ver cómo es su flujo. Para ello, vamos a graficar el flujo en los extremos teniendo en cuenta que, por la ley de Fourier, &amp;lt;math&amp;gt; q=-k u_x &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.3.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos la función &lt;br /&gt;
dwi=@(x,t,k) (2*(-1)^(k+1)).*cos(k.*pi.*x).*exp(-k^2.*pi^2.*t); %Derivada de la solución del problema homogéneo&lt;br /&gt;
dv=@(x) 1; %Derivada de la solución estacionaria&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
dw0=@(t) 0;&lt;br /&gt;
dw1=@(t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    dw0=@(t) dw0(t) + dwi(0,t,n);&lt;br /&gt;
    dw1=@(t) dw1(t) + dwi(1,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
du0=@(t) dw0(t)-dv(0); %Derivada de la solución en 0&lt;br /&gt;
du1=@(t) dw1(t)-dv(1); %Derivada de la solución en 1&lt;br /&gt;
&lt;br /&gt;
%Definimos el vector de tiempo&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
&lt;br /&gt;
% Gráfica en x=0&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,du0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
&lt;br /&gt;
%Gráfica en x=1&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,du1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al observar la gráfica en el extremo izquierdo vemos que al principio no hay flujo debido a que tanto la barra como el extremo están a 0º. Una vez avanza el tiempo el flujo va siendo cada vez más negativo lo que implica que cada vez sale más flujo por el extremo izquierdo. Esto tiene sentido ya que como la barra se va calentando, como podemos ver en la gráfica de la solución, y el extremo se mantiene a 0º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor.&lt;br /&gt;
&lt;br /&gt;
Por el contrario, en la gráfica del extremo derecho podemos observar que inicialmente hay mucho flujo hacia el interior de la barra debido a que la barra está a 0º y el extremo a 1º. Una vez avanza el tiempo el flujo va siendo cada vez menos negativo lo que implica que cada vez entra menos flujo por el extremo derecho. Esto es coherente ya que como la barra se va calentando, y el extremo se mantiene a 1º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor como hemos mencionado antes.&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas, cabe destacar dos aspectos característicos:&lt;br /&gt;
* Lo primero que cabe preguntarse es por qué cuando en la gráfica hay una gran variación del flujo, en el extremo izquierdo la variación es más moderada, y por el contrario, en el extremo derecho es más drástica. Esto se debe a que en el extremo izquierdo la diferencia de temperatura entre dos puntos cercanos es menor que en el derecho, cosa que podemos observar en la gráfica de la solución.&lt;br /&gt;
* También llama la atención que ambas gráficas se acaban estabilizando en un flujo de -1, este punto coincide con el punto en el que la solución alcanza la solución estacionaria, por lo que tiene sentido que el flujo en ambos extremos se estabilice en el mismo valor.&lt;br /&gt;
&lt;br /&gt;
=Variación coeficiente de conductividad=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a ver como varia la solución cuando variamos el coeficiente de conductividad térmica de 1 a 1/2. Con este coeficiente el sistema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{1t}-\frac{1}{2}u_{1xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_1(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviéndolo de la misma forma que el anterior obtenemos que la estacionaria no varía y es &amp;lt;math&amp;gt; v_1(x)=x &amp;lt;/math&amp;gt;, y que la solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u_1(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{\frac{-k^2\pi^2 t}{2}}+x,&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gf2.4b.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2); %Solución del problema homogéneo&lt;br /&gt;
v=@(x) x; %Solución estacionaria&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x); %Solución del problema&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_1(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Aunque a primera vista pueda parecer igual que la solución del problema original, si nos fijamos bien podemos observar que esta tarda más en alcanzar la solución estacionaria ya que está curvada en un mayor intervalo, esto tiene sentido por tener un coeficiente de conductividad menor.&lt;br /&gt;
&lt;br /&gt;
Ahora para apreciar mejor la diferencia vamos a representar ambas soluciones restándoles la estacionaria en x=1/2.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.5.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi1=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t); %Solución del problema homogéneo con D=1&lt;br /&gt;
wi2=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2); %Solución del problema homogéneo con D=1/2&lt;br /&gt;
v=@(x) x; %Solución homogénea&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w1=@(x,t) 0;&lt;br /&gt;
w2=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w1=@(x,t) w1(x,t) + wi1(x,t,n);&lt;br /&gt;
    w2=@(x,t) w2(x,t) + wi2(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
u1=@(x,t) w1(x,t)+v(x); %Solución del problema con D=1&lt;br /&gt;
u2=@(x,t) w2(x,t)+v(x); %Solución del problema con D=1/2&lt;br /&gt;
&lt;br /&gt;
%Hacemos la diferencia con la solución estacionaria en x=1/2&lt;br /&gt;
dif1=@(t) u1(0.5,t)-v(0.5);&lt;br /&gt;
dif2=@(t) u2(0.5,t)-v(0.5);&lt;br /&gt;
&lt;br /&gt;
%Definimos el vector de tiempos&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
&lt;br /&gt;
% Gráfica de la solución del problema con D=1&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,dif1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1')&lt;br /&gt;
&lt;br /&gt;
% Gráfica de la solución del problema con D=1/2&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,dif2(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1/2')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En estas gráficas podemos apreciar mejor que efectivamente esta solución tarda más en alcanzar la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
=Variación de las condiciones de frontera y las iniciales=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a variar las condiciones de frontera y la inicial y a ver cómo varía la solución. Suponemos que en el extremo derecho ahora la temperatura se mantiene a 0º, y que en el momento inicial la temperatura sigue la siguiente función: &amp;lt;math&amp;gt;max\{0,1-4|x-1/2|\}.&amp;lt;/math&amp;gt; Teniendo todo esto en cuenta, el problema que vamos a estudiar ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{2t}-u_{2xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_2(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Resolviendo este problema de la misma forma que los anteriores, obtenemos que la solución estacionaria es &amp;lt;math&amp;gt; v_2(x)=0 &amp;lt;/math&amp;gt; y que la solución es: &amp;lt;math&amp;gt; u_2(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;. A diferencia de en los otros casos los &amp;lt;math&amp;gt;c_k&amp;lt;/math&amp;gt; los vamos a calcular aproximando las integrales que se utilizan para obtenerlos por el [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals método del trapecio].&lt;br /&gt;
&lt;br /&gt;
Haciendo todo esto, la gráfica de la solución queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.6.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2)); %Condición inicial&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t); %Solución del problema&lt;br /&gt;
&lt;br /&gt;
%Aplicamos la regla del trapecio&lt;br /&gt;
a=0; b=1; %Extremos del intervalo                 &lt;br /&gt;
x=linspace(a,b,100); %Vector de espacio&lt;br /&gt;
t=linspace(a,b,100); %Vector de tiempo&lt;br /&gt;
N=length(x)-1; %Número de puntos&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1); %Vector de pesos             &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
f_n=zeros(length(x),length(t));&lt;br /&gt;
&lt;br /&gt;
%Suma de los 10 primeros términos en todo el vector de tiempo&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    for k=1:10&lt;br /&gt;
        g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
        a_k=2*h*w'*g; %Resultado de la regla del trapecio (c_k)&lt;br /&gt;
        f_n(i,:)= f_n(i,:)+a_k.*uk(x,t(i),k);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Gráfica en 3D&lt;br /&gt;
colormap jet &lt;br /&gt;
surf(x,t,f_n,'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_2(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al igual que en los casos anteriores, podemos ver que la solución acaba alcanzando la solución estacionaria. Además, podemos observar que la solución siempre es positiva, lo que implica que la difusión transporta energía con velocidad infinita.&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Ahora, igual que para el problema original, vamos a ver cómo se comporta el flujo en este problema. Para ello, vamos a representar el flujo en ambos extremos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.7.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2)); %Condición inicial&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t); %Solución del problema&lt;br /&gt;
duk=@(x,t,k) -k*pi.*cos(k.*pi.*x).*exp(-k.^2*pi.^2.*t); %Derivada de la solución&lt;br /&gt;
&lt;br /&gt;
%Aplicamos el método del trapecio&lt;br /&gt;
a=0; b=1; %Extremos de los intervalos              &lt;br /&gt;
x=linspace(a,b,100); %Vector de espacio&lt;br /&gt;
t=linspace(a,b,100); %Vector de tiempo&lt;br /&gt;
N=length(x)-1; %Número de puntos&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1); %Vector de pesos           &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
q0=@(t)0; &lt;br /&gt;
q1=@(t)0;&lt;br /&gt;
for k=1:100&lt;br /&gt;
    g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
    a_k=2*h*w'*g; %Solución de la regla del trapecio (c_k)&lt;br /&gt;
    q0=@(t) q0(t)+a_k.*duk(0,t,k); %Flujo en x=0&lt;br /&gt;
    q1=@(t) q1(t)+a_k.*duk(1,t,k); %flujo en x=1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Gráfica en x=0&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,q0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
&lt;br /&gt;
%Gráfica en x=1&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,q1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En ambos extremos el flujo empieza siendo cero, cosa que tiene sentido ya que tanto los extremos como los puntos de la barra cercanos a los extremos están a 0º. Posteriormente ambos flujos aumentan hacia fuera de la barra, esto es coherente ya que el calor en el centro de la barra en el momento inicial provoca que los laterales de la barra se vayan calentando y por tanto el flujo vaya hacia los extremos que se mantienen a 0º.&lt;br /&gt;
&lt;br /&gt;
Una vez avanza el tiempo podemos observar que ambos flujo se estacionan en un valor, y esto coincide con el momento en el que la gráfica de la solución alcanza la solución estacionaria. Además, cabe resaltar que este valor es 0, lo cual tiene sentido ya que la solución estacionaria hace que toda la barra se quede a 0º.&lt;br /&gt;
&lt;br /&gt;
==Aislamiento de un extremo==&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a ver cómo se comporta la solución cuando aislamos térmicamente el extremo derecho, es decir, cuando el flujo en ese punto es cero. Teniendo esto en cuenta, el problema queda de la siguiente forma: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{3t}-u_{3xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_3(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_{3x}(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_3(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviéndolo de la misma forma que en los casos anteriores obtenemos que la solución estacionaria es &amp;lt;math&amp;gt; v_3(x,t)=0 &amp;lt;/math&amp;gt; y que la solución del problema es &amp;lt;math&amp;gt; u_3(x,t)=\sum_{k=1}^\infty c_k\sin((k-\frac{1}{2})\pi x)e^{-(k-\frac{1}{2})^2\pi^2 t} &amp;lt;/math&amp;gt;. Ahora, para calcular los coeficientes &amp;lt;math&amp;gt; c_k &amp;lt;/math&amp;gt;, vamos a exigir que esta solución cumpla la condición inicial, es decir, &amp;lt;math&amp;gt; u_3(x,t)=\sum_{k=1}^\infty c_k\sin((k-\frac{1}{2})\pi x)= max\{0,1-4|x-1/2|\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
A diferencia de los otros casos, las autofunciones no las podemos expresar en función de la base trigonométrica, pero aun así forman un conjunto completo en [0,1] y vamos a comprobar que son ortogonales entre sí:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \int_0^1 sin((n-\frac{1}{2})\pi x)sin((m-\frac{1}{2})\pi x) dx= \frac{1}{2} \int_0^1 cos((n-m)\pi x)-cos((n+m-1)\pi x)dx=0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como &amp;lt;math&amp;gt;\{ \sin((n-\frac{1}{2})\pi x) \}_{n\in\mathbb{N}}&amp;lt;/math&amp;gt; cumplen estas características, forman una base Hilbertiana y por tanto pueden aproximar cualquier función y los &amp;lt;math&amp;gt; c_k &amp;lt;/math&amp;gt; se pueden calcular igual que los coeficientes de Fourier pero utilizando esta nueva base. Para hacer esto vamos a utilizar la regla del trapecio.&lt;br /&gt;
&lt;br /&gt;
Teniendo todo esto en cuenta, vamos a representar la función para entender mejor cómo funciona este sistema.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.9.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2)); %Condición inicial&lt;br /&gt;
uk=@(x,t,k) sin((k-0.5).*pi.*x).*exp(-(k-0.5).^2*pi.^2.*t); %Solución del problema&lt;br /&gt;
&lt;br /&gt;
%Aplicamos la regla del trapecio&lt;br /&gt;
a=0; b=1; %Extremos de los intervalos                    &lt;br /&gt;
x=linspace(a,b,100); %Vector de espacio&lt;br /&gt;
t=linspace(a,b,100); %Vector de tiempo&lt;br /&gt;
N=length(x)-1; %Número de puntos&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1);  %Vector de nudos            &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
f_n=zeros(length(x),length(t));&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 100 primero términos en todo el vector t&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    for k=1:100&lt;br /&gt;
        g=u0(x)*sin((k-0.5).*pi.*x)'; &lt;br /&gt;
        a_k=2*h*w'*g; %Solución de la regla del trapecio (c_k)&lt;br /&gt;
        f_n(i,:)= f_n(i,:)+a_k.*uk(x,t(i),k);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Gráfica en 3D&lt;br /&gt;
colormap jet &lt;br /&gt;
surf(x,t,f_n,'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_3(x,t)')}}&lt;br /&gt;
&lt;br /&gt;
Podemos observar que la gráfica es igual que la del problema anterior, excepto alrededor de x=1. Esto tiene sentido ya que lo único que hemos variado es la condición frontera en ese extremo. Además, podemos observar que la gráfica en esa zona es más recta, esto es debido a que la derivada es 0.&lt;br /&gt;
&lt;br /&gt;
===Flujo en los extremos===&lt;br /&gt;
Ahora, igual que en todos los problemas anteriores, para entender mejor la solución vamos a analizar el flujo viendo cómo se comporta en los extremos mediante la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.11.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2)); %Condición inicial&lt;br /&gt;
uk=@(x,t,k) sin((k-0.5).*pi.*x).*exp(-(k-0.5).^2*pi.^2.*t); %Solución del problema&lt;br /&gt;
duk=@(x,t,k) -(k-0.5)*pi.*cos((k-0.5).*pi.*x).*exp(-(k-0.5).^2*pi.^2.*t); %Derivada de la solución&lt;br /&gt;
&lt;br /&gt;
%Aplicamos el método del trapecio&lt;br /&gt;
a=0; b=1; %Extremos de los intervalos              &lt;br /&gt;
x=linspace(a,b,100); %Vector de espacio&lt;br /&gt;
t=linspace(a,b,100); %Vector de tiempo&lt;br /&gt;
N=length(x)-1; %Número de puntos&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1); %Vector de pesos           &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
q0=@(t)0; &lt;br /&gt;
q1=@(t)0;&lt;br /&gt;
for k=1:100&lt;br /&gt;
    g=u0(x)*sin((k-0.5)*pi*x)'; &lt;br /&gt;
    a_k=2*h*w'*g; %Solución de la regla del trapecio (c_k)&lt;br /&gt;
    q0=@(t) q0(t)+a_k.*duk(0,t,k); %Flujo en x=0&lt;br /&gt;
    q1=@(t) q1(t)+a_k.*duk(1,t,k); %flujo en x=1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Gráfica en x=0&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,q0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{3x}(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
&lt;br /&gt;
%Gráfica en x=1&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,q1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{3x}(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')}}&lt;br /&gt;
&lt;br /&gt;
En la gráfica del extremo izquierdo podemos observar que es igual que la anterior, al igual que pasa con la gráfica de la solución. Esto se debe a que la condición de contorno en ese extremo no la hemos variado.&lt;br /&gt;
&lt;br /&gt;
Por el contrario, en este extremo la gráfica es distinta debido a que al aislar este extremo no va a haber flujo y por eso la gráfica es prácticamente 0 en todo momento.&lt;br /&gt;
&lt;br /&gt;
=Principio del máximo=&lt;br /&gt;
Ahora, para entender mejor cómo funciona el principio del máximo, vamos a comprobar si este se cumple en las soluciones de los problemas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gpmax.png|925px|thumb|center|Soluciones]]&lt;br /&gt;
&lt;br /&gt;
En las dos primeras gráficas, podemos observar que el mínimo está en la frontera t=0 y el máximo en x=1 y en las otras dos podemos ver que el máximo está en t=0 y el mínimo en las fronteras de x. Por lo que efectivamente, en todas las soluciones que hemos calculado en este artículo se cumple el principio del máximo.&lt;br /&gt;
&lt;br /&gt;
=Solución fundamental=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la ecuación del calor cuando la variable espacial no está acotada. Por lo que el sistema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
u_t - k u_{xx} = 0&amp;amp; (x, t) \in \mathbb{R} \times (0, \infty)\\&lt;br /&gt;
u(x,0)=\delta(x)&amp;amp;&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde ''&amp;lt;math&amp;gt;\delta&amp;lt;/math&amp;gt;'' es la función delta de Dirac, que vale 0 en todo punto menos en x, y su integral en toda la recta real es igual a 1.&lt;br /&gt;
&lt;br /&gt;
La solución a este sistema es la llamada solución fundamental de la ecuación del calor, correspondiente a la condición inicial de un punto donde se concentra todo el calor y su fórmula es:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\Phi(x,t)=\frac{1}{\sqrt{4\pi kt}}\exp\left(-\frac{x^2}{4kt}\right).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.8.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Parámetros&lt;br /&gt;
k = 1;  % Coeficiente de conductividad&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
t = linspace(10^-2, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Inicialización de la matriz de soluciones&lt;br /&gt;
u = zeros(length(x), length(t));&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución fundamental&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
    u(:, i) = 1/sqrt(4 * pi * k * t(i)) * exp(-x.^2 / (4 * k * t(i)));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
colormap jet;&lt;br /&gt;
surf(x, t, u', 'FaceColor', 'interp');&lt;br /&gt;
title('Solución Fundamental de la Ecuación del Calor');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('t');&lt;br /&gt;
zlabel('Temperatura (u(x, t))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ANIMACIÓN:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
    u = 1/sqrt(4 * pi * k * t(i)) * exp(-x.^2 / (4 * k * t(i)));&lt;br /&gt;
&lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y la etiqueta&lt;br /&gt;
    title(['Evolución de la Temperatura (t = ' num2str(t(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 3]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.08);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
De manera análoga, podemos extender esta solución a dos dimensiones espaciales: &amp;lt;math&amp;gt; \Phi(x,y,t) = \frac{1}{4 \pi k t} \exp\left(-\frac{x^2 + y^2}{4 k t}\right).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gif2.1.gif|400px|thumb|right|Video de la evolución de la solución a lo largo del tiempo]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
k = 1;  % Coeficiente de conductividad&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos en x y y&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
y = linspace(-1, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear una malla 2D&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Tiempos para la animación&lt;br /&gt;
t_values = linspace(0.001, 0.1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución fundamental en 2D&lt;br /&gt;
    u = 1/(4 * pi * k * t_values(i)) * exp(-(X.^2 + Y.^2) / (4 * k * t_values(i)));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    colormap jet&lt;br /&gt;
    surf(X, Y, u, 'EdgeColor', 'none');&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución Fundamental en 2D (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('x');&lt;br /&gt;
    ylabel('y');&lt;br /&gt;
    zlabel('Temperatura u(x, y, t)');&lt;br /&gt;
&lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    zlim([0, 20]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.2);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.10.jpg|900px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Soluciones autosemejantes==&lt;br /&gt;
&lt;br /&gt;
Lo bueno que tiene la solución fundamental es que no hemos tenido que restringirla a una región acotada del espacio, sino que es solución para todo &amp;lt;math&amp;gt; x \in \mathbb{R} &amp;lt;/math&amp;gt;. No estaría de más preguntarse si existen otras soluciones con esta propiedad.&lt;br /&gt;
La solución fundamental tiene la propiedad de ser autosemejante, es decir, su gráfica al variar el tiempo mantiene siempre la misma forma (una gaussiana).&lt;br /&gt;
&lt;br /&gt;
Podemos buscar otras soluciones con esta propiedad considerando el cambio de variable &amp;lt;math&amp;gt;\xi=\frac{x}{\sqrt{t}}&amp;lt;/math&amp;gt;. Se comprueba que esta combinación de variables es invariante respecto de dilataciones parabólicas y además no tiene dimensión (PÁG 44 DEL LIBRO).&lt;br /&gt;
&lt;br /&gt;
Imponemos que la función de una variable &amp;lt;math&amp;gt; U(\xi) &amp;lt;/math&amp;gt; cumpla la EDP, y llegamos a la EDO:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U'(\xi)+\frac{1}{2}U(\xi)=B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cuya solución, deshaciendo el cambio de variable, es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U(\frac{x}{\sqrt{t}})=Ae^{-{\frac{x}{2\sqrt{t}}}}+2B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
con &amp;lt;math&amp;gt; A,B &amp;lt;/math&amp;gt; constantes a determinar. Para ello, consideraremos las siguientes restricciones, que involucran una región espacial no acotada: &amp;lt;math&amp;gt; x&amp;gt;0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
&amp;amp;u(0, t) = 1 \\&lt;br /&gt;
&amp;amp;u(x, 0) = 0\\&lt;br /&gt;
&amp;amp;lim_{x \to \infty } u(x,t)=0&lt;br /&gt;
\end{aligned}&lt;br /&gt;
\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con las que obtenemos &amp;lt;math&amp;gt; A=1 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B=0 &amp;lt;/math&amp;gt;, y por tanto la solución a este problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=e^{-{\frac{x}{2\sqrt{t}}}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:autosemejantes.gif|400px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Definir el intervalo espacial&lt;br /&gt;
x = linspace(0, 5, 100);&lt;br /&gt;
&lt;br /&gt;
% Definir el intervalo de tiempo&lt;br /&gt;
t_values = linspace(0.01, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución&lt;br /&gt;
    u = exp(-x / (2 * sqrt(t_values(i))));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución de la Ecuación del Calor (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.1);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==La convolución==&lt;br /&gt;
&lt;br /&gt;
Otra forma de obtener soluciones de la ecuación del calor es usando la solución fundamental &amp;lt;math&amp;gt; \Phi(x,t) &amp;lt;/math&amp;gt; y aplicando una [https://es.wikipedia.org/wiki/Convoluci%C3%B3n convolución].&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; u(x,t) = \int_{-\infty}^{\infty} \Phi(x-y,t) u_0(y) dy&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; es el dato inicial, es decir, &amp;lt;math&amp;gt; u(x,0) = u_0(x) &amp;lt;/math&amp;gt; para &amp;lt;math&amp;gt; x \in \mathbb{R} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hemos visto antes que la solución fundamental representaba la respuesta del sistema a un impulso unitario (delta de Dirac) en un punto y en un instante de tiempo.&lt;br /&gt;
&lt;br /&gt;
Intuitivamente, la convolución realiza una integración ponderada de las contribuciones locales del dato inicial en cada punto y momento, proporcionando así la evolución completa de la temperatura de acuerdo con la ecuación del calor.&lt;br /&gt;
&lt;br /&gt;
Para ilustrarlo, vemos qué forma tiene la solución para el dato incial: &amp;lt;math&amp;gt; u_0(x) = 1_{[-1,1]} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Falta cambiar el comando integral() por el de trapecio)&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-5, 5, 1000);&lt;br /&gt;
t_values = linspace(0.01, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Función dato inicial&lt;br /&gt;
f = @(x) double(x &amp;gt;= -1 &amp;amp; x &amp;lt;= 1);&lt;br /&gt;
&lt;br /&gt;
% Solución fundamental&lt;br /&gt;
G = @(x, t) 1/sqrt(4 * pi * t) * exp(-x.^2 / (4 * t));&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la convolución utilizando el método del trapecio&lt;br /&gt;
    u = zeros(size(x));&lt;br /&gt;
    for j = 1:length(x)&lt;br /&gt;
        integrand = @(y) G(x(j) - y, t_values(i)) .* f(y);&lt;br /&gt;
        u(j) = trapz(x, integrand(x));&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Convolución con Trapecio (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1.1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.1);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&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>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=69962</id>
		<title>Ecuación del calor (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=69962"/>
				<updated>2024-03-07T16:14:53Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Solución fundamental */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar la ecuación del calor en una dimensión mediante el estudio de una varilla metálica de longitud 1 y que se encuentra aislada por su superficie lateral, es decir, la conducción de calor solo se produce en la dirección longitudinal. Para ello, vamos a ver cómo varía la solución en función de la variación de distintos parámetros como las condiciones iniciales o el coeficiente de conductividad. Además, veremos qué ocurre cuando suponemos que la longitud de la varilla no está acotada.&lt;br /&gt;
&lt;br /&gt;
=Preliminares=&lt;br /&gt;
&lt;br /&gt;
Antes de empezar a desarrollar el problema necesitamos conocer algunos conceptos que nos van a permitir modelizarlo y sacar sus ecuaciones.&lt;br /&gt;
&lt;br /&gt;
*Como el calor es una forma de energía, vamos a utilizar '''el principio de conservación de energía'''. Este establece que en un volumen de control &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt; arbitrario, la variación de energía a lo largo del tiempo se debe al balance neto del flujo de calor que atraviesa la frontera  de &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;\partial V&amp;lt;/math&amp;gt;) más una producción externa.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{d}{dt}\int_Ve(x,t)dx=\int_{\partial V}\overrightarrow q\cdot d\overrightarrow s +\int_V rdx&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; e(x,t) &amp;lt;/math&amp;gt; representa la densidad de energía calorífica y por tanto la primera integral se corresponde con la energía total que hay en &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt; \overrightarrow q &amp;lt;/math&amp;gt; es el flujo de calor y como la segunda integral es una integral de superficie, representa el flujo que atraviesa la frontera de &amp;lt;math&amp;gt; V &amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; r &amp;lt;/math&amp;gt; es lo que aporta una fuente externa.&lt;br /&gt;
&lt;br /&gt;
* También vamos a necesitar expresar el flujo y la energía en función de la temperatura. Para lo primero utilizamos la '''ley de Fourier''', que establece que el flujo de transferencia de calor es proporcional y de sentido contrario al gradiente de temperatura en esa dirección.&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \overrightarrow q=-k\nabla u &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Siendo k la conductividad térmica, y u la temperatura. Y para lo segundo vamos a suponer que la energía es proporcional a la temperatura.&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; e=cu &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Siendo &amp;lt;math&amp;gt; c &amp;lt;/math&amp;gt; el calor específico.&lt;br /&gt;
&lt;br /&gt;
* Denominamos '''coeficiente de difusión''' a &amp;lt;math&amp;gt; D=\frac{k}{c}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Principio del máximo''': Sea &amp;lt;math&amp;gt; u\in C^{2,1}(Q_T)\cap C(\overline Q_T) &amp;lt;/math&amp;gt; tal que &amp;lt;math&amp;gt; u_t-\nabla u\leq 0 &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; Q_T &amp;lt;/math&amp;gt;. Entonces &amp;lt;math&amp;gt; u &amp;lt;/math&amp;gt; alcanza su máximo en la frontera parabólica:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \max_{(x,t)\in\overline Q_T}=\max_{(x,t)\in\partial_pQ_T}. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Análogamente, se cumple con el mínimo.&lt;br /&gt;
&lt;br /&gt;
=Problema original=&lt;br /&gt;
En este primer apartado, vamos a suponer que la temperatura inicial de la varilla es 0ºC y que en el extremo izquierdo la temperatura se mantiene a 0ºC mientras que en el derecho la temperatura es siempre de 1ºC. Teniendo esto en cuenta y los conceptos desarrollados en el apartado anterior, el sistema de ecuaciones que representa el problema es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_t-Du_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Siendo &amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt; función que representa la temperatura de la varilla a lo largo del tiempo. Vamos a suponer que &amp;lt;math&amp;gt;D=1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Homogeneización==&lt;br /&gt;
&lt;br /&gt;
Antes de empezar con la resolución del problema vamos a homogeneizar las condiciones de contorno. Para hacer esto vamos a restarle al problema la solución estacionaria, es decir, la que permanece invariante respecto al tiempo. Esto implica que &amp;lt;math&amp;gt; u_t\sim 0 &amp;lt;/math&amp;gt; y que &amp;lt;math&amp;gt; u(x,t)\sim v(x) &amp;lt;/math&amp;gt;. Por lo que el problema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
v_{xx}=0 &amp;amp; x\in(0,1)\\&lt;br /&gt;
v(0)=0\\&lt;br /&gt;
v(1)=1\\&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución de este sistema, y por tanto la solución estacionaria es: &amp;lt;math&amp;gt; v(x)=x &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.1.jpg|400px|thumb|right|Solución estacionaria]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
v=@(x,t) x;&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(v, [0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('v(x)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la solución estacionaria, tomamos &amp;lt;math&amp;gt; w(x,t)=u(x,t)-v(x) &amp;lt;/math&amp;gt; y vemos como queda el problema homogeneizado para &amp;lt;math&amp;gt; w(x,t)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
w_t-w_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
w(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(x,0)=-x&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Una vez homogeneizado el sistema podemos empezar a buscar la solución por el método de separación de variables, en el cual vamos a suponer que la solución es de la forma: &amp;lt;math&amp;gt; w(x,t)=X(x)T(t) &amp;lt;/math&amp;gt;. Como &amp;lt;math&amp;gt;w(x,t)&amp;lt;/math&amp;gt; es solución del problema original, obtenemos que se tiene que cumplir &amp;lt;math&amp;gt;\frac{X''(x)}{X(x)}=\frac{T'(t)}{T(t)}=\lambda_k&amp;lt;/math&amp;gt; dando lugar a la resolución de dos sistemas por separado, uno que depende de &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt; y otro que depende de &amp;lt;math&amp;gt; t&amp;lt;/math&amp;gt;. Al solucionar ambos problemas obtenemos el siguiente resultado: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para que &amp;lt;math&amp;gt; w(x,t) &amp;lt;/math&amp;gt; sea solución de nuestro problema solo falta ver que cumpla la condición incial, es decir, que &amp;lt;math&amp;gt; w(x,0)=c_k\sin(k\pi x)=-x &amp;lt;/math&amp;gt;. De esta igualdad sacamos que si extendemos la función &amp;lt;math&amp;gt; -x &amp;lt;/math&amp;gt; de forma impar los coeficientes &amp;lt;math&amp;gt; c_k&amp;lt;/math&amp;gt; van a ser los coeficiente de la [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) serie de Fourier]. Por tanto, la solución queda de la siguiente manera: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta función es la solución del problema homogeneizado, por lo que para obtener la solución del problema original tenemos que deshacer el cambio de variable. La solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}+x&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a graficar los 10 primeros términos de la serie en &amp;lt;math&amp;gt; t \in [0,1]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.2c.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t); %Solución del problema homogeneizado&lt;br /&gt;
v=@(x) x; %Solución estacionaria&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x); %Solución del problema&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
close all&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
&lt;br /&gt;
%Ejes&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;
En la gráfica podemos observar que la solución del problema alcanza en poco tiempo la solución estacionaria, lo cual tiene sentido ya que estamos utilizando un coeficiente de difusión relativamente alto&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Ahora, para entender mejor cómo funciona la solución, vamos a ver cómo es su flujo. Para ello, vamos a graficar el flujo en los extremos teniendo en cuenta que, por la ley de Fourier, &amp;lt;math&amp;gt; q=-k u_x &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.3.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos la función &lt;br /&gt;
dwi=@(x,t,k) (2*(-1)^(k+1)).*cos(k.*pi.*x).*exp(-k^2.*pi^2.*t); %Derivada de la solución del problema homogéneo&lt;br /&gt;
dv=@(x) 1; %Derivada de la solución estacionaria&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
dw0=@(t) 0;&lt;br /&gt;
dw1=@(t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    dw0=@(t) dw0(t) + dwi(0,t,n);&lt;br /&gt;
    dw1=@(t) dw1(t) + dwi(1,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
du0=@(t) dw0(t)-dv(0); %Derivada de la solución en 0&lt;br /&gt;
du1=@(t) dw1(t)-dv(1); %Derivada de la solución en 1&lt;br /&gt;
&lt;br /&gt;
%Definimos el vector de tiempo&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
&lt;br /&gt;
% Gráfica en x=0&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,du0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
&lt;br /&gt;
%Gráfica en x=1&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,du1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al observar la gráfica en el extremo izquierdo vemos que al principio no hay flujo debido a que tanto la barra como el extremo están a 0º. Una vez avanza el tiempo el flujo va siendo cada vez más negativo lo que implica que cada vez sale más flujo por el extremo izquierdo. Esto tiene sentido ya que como la barra se va calentando, como podemos ver en la gráfica de la solución, y el extremo se mantiene a 0º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor.&lt;br /&gt;
&lt;br /&gt;
Por el contrario, en la gráfica del extremo derecho podemos observar que inicialmente hay mucho flujo hacia el interior de la barra debido a que la barra está a 0º y el extremo a 1º. Una vez avanza el tiempo el flujo va siendo cada vez menos negativo lo que implica que cada vez entra menos flujo por el extremo derecho. Esto es coherente ya que como la barra se va calentando, y el extremo se mantiene a 1º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor como hemos mencionado antes.&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas, cabe destacar dos aspectos característicos:&lt;br /&gt;
* Lo primero que cabe preguntarse es por qué cuando en la gráfica hay una gran variación del flujo, en el extremo izquierdo la variación es más moderada, y por el contrario, en el extremo derecho es más drástica. Esto se debe a que en el extremo izquierdo la diferencia de temperatura entre dos puntos cercanos es menor que en el derecho, cosa que podemos observar en la gráfica de la solución.&lt;br /&gt;
* También llama la atención que ambas gráficas se acaban estabilizando en un flujo de -1, este punto coincide con el punto en el que la solución alcanza la solución estacionaria, por lo que tiene sentido que el flujo en ambos extremos se estabilice en el mismo valor.&lt;br /&gt;
&lt;br /&gt;
=Variación coeficiente de conductividad=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a ver como varia la solución cuando variamos el coeficiente de conductividad térmica de 1 a 1/2. Con este coeficiente el sistema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{1t}-\frac{1}{2}u_{1xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_1(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviéndolo de la misma forma que el anterior obtenemos que la estacionaria no varía y es &amp;lt;math&amp;gt; v_1(x)=x &amp;lt;/math&amp;gt;, y que la solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u_1(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{\frac{-k^2\pi^2 t}{2}}+x,&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gf2.4b.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2); %Solución del problema homogéneo&lt;br /&gt;
v=@(x) x; %Solución estacionaria&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x); %Solución del problema&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_1(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Aunque a primera vista pueda parecer igual que la solución del problema original, si nos fijamos bien podemos observar que esta tarda más en alcanzar la solución estacionaria ya que está curvada en un mayor intervalo, esto tiene sentido por tener un coeficiente de conductividad menor.&lt;br /&gt;
&lt;br /&gt;
Ahora para apreciar mejor la diferencia vamos a representar ambas soluciones restándoles la estacionaria en x=1/2.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.5.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi1=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t); %Solución del problema homogéneo con D=1&lt;br /&gt;
wi2=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2); %Solución del problema homogéneo con D=1/2&lt;br /&gt;
v=@(x) x; %Solución homogénea&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w1=@(x,t) 0;&lt;br /&gt;
w2=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w1=@(x,t) w1(x,t) + wi1(x,t,n);&lt;br /&gt;
    w2=@(x,t) w2(x,t) + wi2(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
u1=@(x,t) w1(x,t)+v(x); %Solución del problema con D=1&lt;br /&gt;
u2=@(x,t) w2(x,t)+v(x); %Solución del problema con D=1/2&lt;br /&gt;
&lt;br /&gt;
%Hacemos la diferencia con la solución estacionaria en x=1/2&lt;br /&gt;
dif1=@(t) u1(0.5,t)-v(0.5);&lt;br /&gt;
dif2=@(t) u2(0.5,t)-v(0.5);&lt;br /&gt;
&lt;br /&gt;
%Definimos el vector de tiempos&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
&lt;br /&gt;
% Gráfica de la solución del problema con D=1&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,dif1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1')&lt;br /&gt;
&lt;br /&gt;
% Gráfica de la solución del problema con D=1/2&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,dif2(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1/2')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En estas gráficas podemos apreciar mejor que efectivamente esta solución tarda más en alcanzar la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
=Variación de las condiciones de frontera y las iniciales=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a variar las condiciones de frontera y la inicial y a ver cómo varía la solución. Suponemos que en el extremo derecho ahora la temperatura se mantiene a 0º, y que en el momento inicial la temperatura sigue la siguiente función: &amp;lt;math&amp;gt;max\{0,1-4|x-1/2|\}.&amp;lt;/math&amp;gt; Teniendo todo esto en cuenta, el problema que vamos a estudiar ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{2t}-u_{2xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_2(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Resolviendo este problema de la misma forma que los anteriores, obtenemos que la solución estacionaria es &amp;lt;math&amp;gt; v_2(x)=0 &amp;lt;/math&amp;gt; y que la solución es: &amp;lt;math&amp;gt; u_2(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;. A diferencia de en los otros casos los &amp;lt;math&amp;gt;c_k&amp;lt;/math&amp;gt; los vamos a calcular aproximando las integrales que se utilizan para obtenerlos por el [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals método del trapecio].&lt;br /&gt;
&lt;br /&gt;
Haciendo todo esto, la gráfica de la solución queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.6.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2)); %Condición inicial&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t); %Solución del problema&lt;br /&gt;
&lt;br /&gt;
%Aplicamos la regla del trapecio&lt;br /&gt;
a=0; b=1; %Extremos del intervalo                 &lt;br /&gt;
x=linspace(a,b,100); %Vector de espacio&lt;br /&gt;
t=linspace(a,b,100); %Vector de tiempo&lt;br /&gt;
N=length(x)-1; %Número de puntos&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1); %Vector de pesos             &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
f_n=zeros(length(x),length(t));&lt;br /&gt;
&lt;br /&gt;
%Suma de los 10 primeros términos en todo el vector de tiempo&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    for k=1:10&lt;br /&gt;
        g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
        a_k=2*h*w'*g; %Resultado de la regla del trapecio (c_k)&lt;br /&gt;
        f_n(i,:)= f_n(i,:)+a_k.*uk(x,t(i),k);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Gráfica en 3D&lt;br /&gt;
colormap jet &lt;br /&gt;
surf(x,t,f_n,'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_2(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al igual que en los casos anteriores, podemos ver que la solución acaba alcanzando la solución estacionaria. Además, podemos observar que la solución siempre es positiva, lo que implica que la difusión transporta energía con velocidad infinita.&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Ahora, igual que para el problema original, vamos a ver cómo se comporta el flujo en este problema. Para ello, vamos a representar el flujo en ambos extremos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.7.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2)); %Condición inicial&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t); %Solución del problema&lt;br /&gt;
duk=@(x,t,k) -k*pi.*cos(k.*pi.*x).*exp(-k.^2*pi.^2.*t); %Derivada de la solución&lt;br /&gt;
&lt;br /&gt;
%Aplicamos el método del trapecio&lt;br /&gt;
a=0; b=1; %Extremos de los intervalos              &lt;br /&gt;
x=linspace(a,b,100); %Vector de espacio&lt;br /&gt;
t=linspace(a,b,100); %Vector de tiempo&lt;br /&gt;
N=length(x)-1; %Número de puntos&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1); %Vector de pesos           &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
q0=@(t)0; &lt;br /&gt;
q1=@(t)0;&lt;br /&gt;
for k=1:100&lt;br /&gt;
    g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
    a_k=2*h*w'*g; %Solución de la regla del trapecio (c_k)&lt;br /&gt;
    q0=@(t) q0(t)+a_k.*duk(0,t,k); %Flujo en x=0&lt;br /&gt;
    q1=@(t) q1(t)+a_k.*duk(1,t,k); %flujo en x=1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Gráfica en x=0&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,q0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
&lt;br /&gt;
%Gráfica en x=1&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,q1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En ambos extremos el flujo empieza siendo cero, cosa que tiene sentido ya que tanto los extremos como los puntos de la barra cercanos a los extremos están a 0º. Posteriormente ambos flujos aumentan hacia fuera de la barra, esto es coherente ya que el calor en el centro de la barra en el momento inicial provoca que los laterales de la barra se vayan calentando y por tanto el flujo vaya hacia los extremos que se mantienen a 0º.&lt;br /&gt;
&lt;br /&gt;
Una vez avanza el tiempo podemos observar que ambos flujo se estacionan en un valor, y esto coincide con el momento en el que la gráfica de la solución alcanza la solución estacionaria. Además, cabe resaltar que este valor es 0, lo cual tiene sentido ya que la solución estacionaria hace que toda la barra se quede a 0º.&lt;br /&gt;
&lt;br /&gt;
==Aislamiento de un extremo==&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a ver cómo se comporta la solución cuando aislamos térmicamente el extremo derecho, es decir, cuando el flujo en ese punto es cero. Teniendo esto en cuenta, el problema queda de la siguiente forma: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{3t}-u_{3xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_3(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_{3x}(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_3(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviéndolo de la misma forma que en los casos anteriores obtenemos que la solución estacionaria es &amp;lt;math&amp;gt; v_3(x,t)=0 &amp;lt;/math&amp;gt; y que la solución del problema es &amp;lt;math&amp;gt; u_3(x,t)=\sum_{k=1}^\infty c_k\sin((k-\frac{1}{2})\pi x)e^{-(k-\frac{1}{2})^2\pi^2 t} &amp;lt;/math&amp;gt;. Ahora, para calcular los coeficientes &amp;lt;math&amp;gt; c_k &amp;lt;/math&amp;gt;, vamos a exigir que esta solución cumpla la condición inicial, es decir, &amp;lt;math&amp;gt; u_3(x,t)=\sum_{k=1}^\infty c_k\sin((k-\frac{1}{2})\pi x)= max\{0,1-4|x-1/2|\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
A diferencia de los otros casos, las autofunciones no las podemos expresar en función de la base trigonométrica, pero aun así forman un conjunto completo en [0,1] y vamos a comprobar que son ortogonales entre sí:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \int_0^1 sin((n-\frac{1}{2})\pi x)sin((m-\frac{1}{2})\pi x) dx= \frac{1}{2} \int_0^1 cos((n-m)\pi x)-cos((n+m-1)\pi x)dx=0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como &amp;lt;math&amp;gt;\{ \sin((n-\frac{1}{2})\pi x) \}_{n\in\mathbb{N}}&amp;lt;/math&amp;gt; cumplen estas características, forman una base Hilbertiana y por tanto pueden aproximar cualquier función y los &amp;lt;math&amp;gt; c_k &amp;lt;/math&amp;gt; se pueden calcular igual que los coeficientes de Fourier pero utilizando esta nueva base. Para hacer esto vamos a utilizar la regla del trapecio.&lt;br /&gt;
&lt;br /&gt;
Teniendo todo esto en cuenta, vamos a representar la función para entender mejor cómo funciona este sistema.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.9.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2)); %Condición inicial&lt;br /&gt;
uk=@(x,t,k) sin((k-0.5).*pi.*x).*exp(-(k-0.5).^2*pi.^2.*t); %Solución del problema&lt;br /&gt;
&lt;br /&gt;
%Aplicamos la regla del trapecio&lt;br /&gt;
a=0; b=1; %Extremos de los intervalos                    &lt;br /&gt;
x=linspace(a,b,100); %Vector de espacio&lt;br /&gt;
t=linspace(a,b,100); %Vector de tiempo&lt;br /&gt;
N=length(x)-1; %Número de puntos&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1);  %Vector de nudos            &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
f_n=zeros(length(x),length(t));&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 100 primero términos en todo el vector t&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    for k=1:100&lt;br /&gt;
        g=u0(x)*sin((k-0.5).*pi.*x)'; &lt;br /&gt;
        a_k=2*h*w'*g; %Solución de la regla del trapecio (c_k)&lt;br /&gt;
        f_n(i,:)= f_n(i,:)+a_k.*uk(x,t(i),k);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Gráfica en 3D&lt;br /&gt;
colormap jet &lt;br /&gt;
surf(x,t,f_n,'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_3(x,t)')}}&lt;br /&gt;
&lt;br /&gt;
Podemos observar que la gráfica es igual que la del problema anterior, excepto alrededor de x=1. Esto tiene sentido ya que lo único que hemos variado es la condición frontera en ese extremo. Además, podemos observar que la gráfica en esa zona es más recta, esto es debido a que la derivada es 0.&lt;br /&gt;
&lt;br /&gt;
===Flujo en los extremos===&lt;br /&gt;
Ahora, igual que en todos los problemas anteriores, para entender mejor la solución vamos a analizar el flujo viendo cómo se comporta en los extremos mediante la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.11.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2)); %Condición inicial&lt;br /&gt;
uk=@(x,t,k) sin((k-0.5).*pi.*x).*exp(-(k-0.5).^2*pi.^2.*t); %Solución del problema&lt;br /&gt;
duk=@(x,t,k) -(k-0.5)*pi.*cos((k-0.5).*pi.*x).*exp(-(k-0.5).^2*pi.^2.*t); %Derivada de la solución&lt;br /&gt;
&lt;br /&gt;
%Aplicamos el método del trapecio&lt;br /&gt;
a=0; b=1; %Extremos de los intervalos              &lt;br /&gt;
x=linspace(a,b,100); %Vector de espacio&lt;br /&gt;
t=linspace(a,b,100); %Vector de tiempo&lt;br /&gt;
N=length(x)-1; %Número de puntos&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1); %Vector de pesos           &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
q0=@(t)0; &lt;br /&gt;
q1=@(t)0;&lt;br /&gt;
for k=1:100&lt;br /&gt;
    g=u0(x)*sin((k-0.5)*pi*x)'; &lt;br /&gt;
    a_k=2*h*w'*g; %Solución de la regla del trapecio (c_k)&lt;br /&gt;
    q0=@(t) q0(t)+a_k.*duk(0,t,k); %Flujo en x=0&lt;br /&gt;
    q1=@(t) q1(t)+a_k.*duk(1,t,k); %flujo en x=1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Gráfica en x=0&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,q0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{3x}(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
&lt;br /&gt;
%Gráfica en x=1&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,q1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{3x}(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')}}&lt;br /&gt;
&lt;br /&gt;
En la gráfica del extremo izquierdo podemos observar que es igual que la anterior, al igual que pasa con la gráfica de la solución. Esto se debe a que la condición de contorno en ese extremo no la hemos variado.&lt;br /&gt;
&lt;br /&gt;
Por el contrario, en este extremo la gráfica es distinta debido a que al aislar este extremo no va a haber flujo y por eso la gráfica es prácticamente 0 en todo momento.&lt;br /&gt;
&lt;br /&gt;
=Principio del máximo=&lt;br /&gt;
Ahora, para entender mejor cómo funciona el principio del máximo, vamos a comprobar si este se cumple en las soluciones de los problemas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gpmax.png|925px|thumb|center|Soluciones]]&lt;br /&gt;
&lt;br /&gt;
En las dos primeras gráficas, podemos observar que el mínimo está en la frontera t=0 y el máximo en x=1 y en las otras dos podemos ver que el máximo está en t=0 y el mínimo en las fronteras de x. Por lo que efectivamente, en todas las soluciones que hemos calculado en este artículo se cumple el principio del máximo.&lt;br /&gt;
&lt;br /&gt;
=Solución fundamental=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la ecuación del calor cuando la variable espacial no está acotada. Por lo que el sistema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
u_t - k u_{xx} = 0&amp;amp; (x, t) \in \mathbb{R} \times (0, \infty)\\&lt;br /&gt;
u(x,0)=\delta(x)&amp;amp;&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde ''&amp;lt;math&amp;gt;\delta&amp;lt;/math&amp;gt;'' es la función delta de Dirac, que vale 0 en todo punto menos en x, y su integral en toda la recta real es igual a 1.&lt;br /&gt;
&lt;br /&gt;
La solución a este sistema es la llamada solución fundamental de la ecuación del calor, correspondiente a la condición inicial de un punto donde se concentra todo el calor y su fórmula es:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\Phi(x,t)=\frac{1}{\sqrt{4\pi kt}}\exp\left(-\frac{x^2}{4kt}\right).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.8.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Parámetros&lt;br /&gt;
k = 1;  % Coeficiente de conductividad&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
t = linspace(10^-2, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Inicialización de la matriz de soluciones&lt;br /&gt;
u = zeros(length(x), length(t));&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución fundamental&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
    u(:, i) = 1/sqrt(4 * pi * k * t(i)) * exp(-x.^2 / (4 * k * t(i)));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
colormap jet;&lt;br /&gt;
surf(x, t, u', 'FaceColor', 'interp');&lt;br /&gt;
title('Solución Fundamental de la Ecuación del Calor');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('t');&lt;br /&gt;
zlabel('Temperatura (u(x, t))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ANIMACIÓN:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
    u = 1/sqrt(4 * pi * k * t(i)) * exp(-x.^2 / (4 * k * t(i)));&lt;br /&gt;
&lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y la etiqueta&lt;br /&gt;
    title(['Evolución de la Temperatura (t = ' num2str(t(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 3]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.08);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
De manera análoga, podemos extender esta solución a dos dimensiones espaciales: &amp;lt;math&amp;gt; \Phi(x,y,t) = \frac{1}{4 \pi k t} \exp\left(-\frac{x^2 + y^2}{4 k t}\right).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gif2.1.gif|400px|thumb|right|Video de la evolución de la solución a lo largo del tiempo]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
k = 1;  % Coeficiente de conductividad&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos en x y y&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
y = linspace(-1, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear una malla 2D&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Tiempos para la animación&lt;br /&gt;
t_values = linspace(0.001, 0.1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución fundamental en 2D&lt;br /&gt;
    u = 1/(4 * pi * k * t_values(i)) * exp(-(X.^2 + Y.^2) / (4 * k * t_values(i)));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    colormap jet&lt;br /&gt;
    surf(X, Y, u, 'EdgeColor', 'none');&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución Fundamental en 2D (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('x');&lt;br /&gt;
    ylabel('y');&lt;br /&gt;
    zlabel('Temperatura u(x, y, t)');&lt;br /&gt;
&lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    zlim([0, 20]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.2);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.10.jpg|900px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Soluciones autosemejantes==&lt;br /&gt;
&lt;br /&gt;
Lo bueno que tiene la solución fundamental es que no hemos tenido que restringirla a una región acotada del espacio, sino que es solución para todo &amp;lt;math&amp;gt; x \in \mathbb{R} &amp;lt;/math&amp;gt;. No estaría de más preguntarse si existen otras soluciones con esta propiedad.&lt;br /&gt;
La solución fundamental tiene la propiedad de ser autosemejante, es decir, su gráfica al variar el tiempo mantiene siempre la misma forma (una gaussiana).&lt;br /&gt;
&lt;br /&gt;
Podemos buscar otras soluciones con esta propiedad considerando el cambio de variable &amp;lt;math&amp;gt;\xi=\frac{x}{\sqrt{t}}&amp;lt;/math&amp;gt;. Se comprueba que esta combinación de variables es invariante respecto de dilataciones parabólicas y además no tiene dimensión (PÁG 44 DEL LIBRO).&lt;br /&gt;
&lt;br /&gt;
Imponemos que la función de una variable &amp;lt;math&amp;gt; U(\xi) &amp;lt;/math&amp;gt; cumpla la EDP, y llegamos a la EDO:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U'(\xi)+\frac{1}{2}U(\xi)=B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cuya solución, deshaciendo el cambio de variable, es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U(\frac{x}{\sqrt{t}})=Ae^{-{\frac{x}{2\sqrt{t}}}}+2B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
con &amp;lt;math&amp;gt; A,B &amp;lt;/math&amp;gt; constantes a determinar. Para ello, consideraremos las siguientes restricciones, que involucran una región espacial no acotada: &amp;lt;math&amp;gt; x&amp;gt;0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
&amp;amp;u(0, t) = 1 \\&lt;br /&gt;
&amp;amp;u(x, 0) = 0\\&lt;br /&gt;
&amp;amp;lim_{x \to \infty } u(x,t)=0&lt;br /&gt;
\end{aligned}&lt;br /&gt;
\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con las que obtenemos &amp;lt;math&amp;gt; A=1 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B=0 &amp;lt;/math&amp;gt;, y por tanto la solución a este problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=e^{-{\frac{x}{2\sqrt{t}}}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:autosemejantes.gif|400px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Definir el intervalo espacial&lt;br /&gt;
x = linspace(0, 5, 100);&lt;br /&gt;
&lt;br /&gt;
% Definir el intervalo de tiempo&lt;br /&gt;
t_values = linspace(0.01, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución&lt;br /&gt;
    u = exp(-x / (2 * sqrt(t_values(i))));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución de la Ecuación del Calor (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.1);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==La convolución==&lt;br /&gt;
&lt;br /&gt;
Otra forma de obtener soluciones de la ecuación del calor es usando la solución fundamental &amp;lt;math&amp;gt; \Phi(x,t) &amp;lt;/math&amp;gt; y aplicando una [https://es.wikipedia.org/wiki/Convoluci%C3%B3n convolución].&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; u(x,t) = \int_{-\infty}^{\infty} \Phi(x-y,t) u_0(y) dy&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; es el dato inicial, es decir, &amp;lt;math&amp;gt; u(x,0) = u_0(x) &amp;lt;/math&amp;gt; para &amp;lt;math&amp;gt; x \in \mathbb{R} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hemos visto antes que la solución fundamental representaba la respuesta del sistema a un impulso unitario (delta de Dirac) en un punto y en un instante de tiempo.&lt;br /&gt;
&lt;br /&gt;
Intuitivamente, la convolución realiza una integración ponderada de las contribuciones locales del dato inicial en cada punto y momento, proporcionando así la evolución completa de la temperatura de acuerdo con la ecuación del calor.&lt;br /&gt;
&lt;br /&gt;
Para ilustrarlo, vemos qué forma tiene la solución para el dato incial: &amp;lt;math&amp;gt; u_0(x) = 1_{[-1,1]} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Falta cambiar el comando integral() por el de trapecio)&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
k = 1;  % Difusividad térmica&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-3, 3, 100);&lt;br /&gt;
t_values = linspace(0.0005, 0.3, 100);&lt;br /&gt;
&lt;br /&gt;
% Función dato inicial&lt;br /&gt;
f = @(x) double(x &amp;gt;= -1 &amp;amp; x &amp;lt;= 1);&lt;br /&gt;
&lt;br /&gt;
% Solución fundamental&lt;br /&gt;
G = @(x, t) 1/sqrt(4 * pi * k * t) * exp(-x.^2 / (4 * k * t));&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la convolución&lt;br /&gt;
    u = zeros(size(x));&lt;br /&gt;
    for j = 1:length(x)&lt;br /&gt;
        integrand = @(y) G(x(j) - y, t_values(i)) .* f(y);&lt;br /&gt;
        u(j) = integral(integrand, -inf, inf);&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y la etiqueta&lt;br /&gt;
    title(['Evolución de la Temperatura (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1.1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.01);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&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>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Autosemejantes.gif&amp;diff=69961</id>
		<title>Archivo:Autosemejantes.gif</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Autosemejantes.gif&amp;diff=69961"/>
				<updated>2024-03-07T16:13:39Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=69947</id>
		<title>Ecuación del calor (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=69947"/>
				<updated>2024-03-07T16:02:10Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Solución fundamental */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar la ecuación del calor en una dimensión mediante el estudio de una varilla metálica de longitud 1 y que se encuentra aislada por su superficie lateral, es decir, la conducción de calor solo se produce en la dirección longitudinal. Para ello, vamos a ver cómo varía la solución en función de la variación de distintos parámetros como las condiciones iniciales o el coeficiente de conductividad. Además, veremos qué ocurre cuando suponemos que la longitud de la varilla no está acotada.&lt;br /&gt;
&lt;br /&gt;
=Preliminares=&lt;br /&gt;
&lt;br /&gt;
Antes de empezar a desarrollar el problema necesitamos conocer algunos conceptos que nos van a permitir modelizarlo y sacar sus ecuaciones.&lt;br /&gt;
&lt;br /&gt;
*Como el calor es una forma de energía, vamos a utilizar '''el principio de conservación de energía'''. Este establece que en un volumen de control &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt; arbitrario, la variación de energía a lo largo del tiempo se debe al balance neto del flujo de calor que atraviesa la frontera  de &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;\partial V&amp;lt;/math&amp;gt;) más una producción externa.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \frac{d}{dt}\int_Ve(x,t)dx=\int_{\partial V}\overrightarrow q\cdot d\overrightarrow s +\int_V rdx&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; e(x,t) &amp;lt;/math&amp;gt; representa la densidad de energía calorífica y por tanto la primera integral se corresponde con la energía total que hay en &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt; \overrightarrow q &amp;lt;/math&amp;gt; es el flujo de calor y como la segunda integral es una integral de superficie, representa el flujo que atraviesa la frontera de &amp;lt;math&amp;gt; V &amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt; r &amp;lt;/math&amp;gt; es lo que aporta una fuente externa.&lt;br /&gt;
&lt;br /&gt;
* También vamos a necesitar expresar el flujo y la energía en función de la temperatura. Para lo primero utilizamos la '''ley de Fourier''', que establece que el flujo de transferencia de calor es proporcional y de sentido contrario al gradiente de temperatura en esa dirección.&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \overrightarrow q=-k\nabla u &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Siendo k la conductividad térmica, y u la temperatura. Y para lo segundo vamos a suponer que la energía es proporcional a la temperatura.&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; e=cu &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Siendo &amp;lt;math&amp;gt; c &amp;lt;/math&amp;gt; el calor específico.&lt;br /&gt;
&lt;br /&gt;
* Denominamos '''coeficiente de difusión''' a &amp;lt;math&amp;gt; D=\frac{k}{c}. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Principio del máximo''': Sea &amp;lt;math&amp;gt; u\in C^{2,1}(Q_T)\cap C(\overline Q_T) &amp;lt;/math&amp;gt; tal que &amp;lt;math&amp;gt; u_t-\nabla u\leq 0 &amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt; Q_T &amp;lt;/math&amp;gt;. Entonces &amp;lt;math&amp;gt; u &amp;lt;/math&amp;gt; alcanza su máximo en la frontera parabólica:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \max_{(x,t)\in\overline Q_T}=\max_{(x,t)\in\partial_pQ_T}. &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Análogamente, se cumple con el mínimo.&lt;br /&gt;
&lt;br /&gt;
=Problema original=&lt;br /&gt;
En este primer apartado, vamos a suponer que la temperatura inicial de la varilla es 0ºC y que en el extremo izquierdo la temperatura se mantiene a 0ºC mientras que en el derecho la temperatura es siempre de 1ºC. Teniendo esto en cuenta y los conceptos desarrollados en el apartado anterior, el sistema de ecuaciones que representa el problema es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_t-Du_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Siendo &amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt; función que representa la temperatura de la varilla a lo largo del tiempo. Vamos a suponer que &amp;lt;math&amp;gt;D=1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Homogeneización==&lt;br /&gt;
&lt;br /&gt;
Antes de empezar con la resolución del problema vamos a homogeneizar las condiciones de contorno. Para hacer esto vamos a restarle al problema la solución estacionaria, es decir, la que permanece invariante respecto al tiempo. Esto implica que &amp;lt;math&amp;gt; u_t\sim 0 &amp;lt;/math&amp;gt; y que &amp;lt;math&amp;gt; u(x,t)\sim v(x) &amp;lt;/math&amp;gt;. Por lo que el problema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
v_{xx}=0 &amp;amp; x\in(0,1)\\&lt;br /&gt;
v(0)=0\\&lt;br /&gt;
v(1)=1\\&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución de este sistema, y por tanto la solución estacionaria es: &amp;lt;math&amp;gt; v(x)=x &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.1.jpg|400px|thumb|right|Solución estacionaria]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
v=@(x,t) x;&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(v, [0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('v(x)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la solución estacionaria, tomamos &amp;lt;math&amp;gt; w(x,t)=u(x,t)-v(x) &amp;lt;/math&amp;gt; y vemos como queda el problema homogeneizado para &amp;lt;math&amp;gt; w(x,t)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
w_t-w_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
w(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(x,0)=-x&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Una vez homogeneizado el sistema podemos empezar a buscar la solución por el método de separación de variables, en el cual vamos a suponer que la solución es de la forma: &amp;lt;math&amp;gt; w(x,t)=X(x)T(t) &amp;lt;/math&amp;gt;. Como &amp;lt;math&amp;gt;w(x,t)&amp;lt;/math&amp;gt; es solución del problema original, obtenemos que se tiene que cumplir &amp;lt;math&amp;gt;\frac{X''(x)}{X(x)}=\frac{T'(t)}{T(t)}=\lambda_k&amp;lt;/math&amp;gt; dando lugar a la resolución de dos sistemas por separado, uno que depende de &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt; y otro que depende de &amp;lt;math&amp;gt; t&amp;lt;/math&amp;gt;. Al solucionar ambos problemas obtenemos el siguiente resultado: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para que &amp;lt;math&amp;gt; w(x,t) &amp;lt;/math&amp;gt; sea solución de nuestro problema solo falta ver que cumpla la condición incial, es decir, que &amp;lt;math&amp;gt; w(x,0)=c_k\sin(k\pi x)=-x &amp;lt;/math&amp;gt;. De esta igualdad sacamos que si extendemos la función &amp;lt;math&amp;gt; -x &amp;lt;/math&amp;gt; de forma impar los coeficientes &amp;lt;math&amp;gt; c_k&amp;lt;/math&amp;gt; van a ser los coeficiente de la [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) serie de Fourier]. Por tanto, la solución queda de la siguiente manera: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta función es la solución del problema homogeneizado, por lo que para obtener la solución del problema original tenemos que deshacer el cambio de variable. La solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}+x&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a graficar los 10 primeros términos de la serie en &amp;lt;math&amp;gt; t \in [0,1]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.2c.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t); %Solución del problema homogeneizado&lt;br /&gt;
v=@(x) x; %Solución estacionaria&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x); %Solución del problema&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
close all&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
&lt;br /&gt;
%Ejes&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;
En la gráfica podemos observar que la solución del problema alcanza en poco tiempo la solución estacionaria, lo cual tiene sentido ya que estamos utilizando un coeficiente de difusión relativamente alto&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Ahora, para entender mejor cómo funciona la solución, vamos a ver cómo es su flujo. Para ello, vamos a graficar el flujo en los extremos teniendo en cuenta que, por la ley de Fourier, &amp;lt;math&amp;gt; q=-k u_x &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.3.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos la función &lt;br /&gt;
dwi=@(x,t,k) (2*(-1)^(k+1)).*cos(k.*pi.*x).*exp(-k^2.*pi^2.*t); %Derivada de la solución del problema homogéneo&lt;br /&gt;
dv=@(x) 1; %Derivada de la solución estacionaria&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
dw0=@(t) 0;&lt;br /&gt;
dw1=@(t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    dw0=@(t) dw0(t) + dwi(0,t,n);&lt;br /&gt;
    dw1=@(t) dw1(t) + dwi(1,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
du0=@(t) dw0(t)-dv(0); %Derivada de la solución en 0&lt;br /&gt;
du1=@(t) dw1(t)-dv(1); %Derivada de la solución en 1&lt;br /&gt;
&lt;br /&gt;
%Definimos el vector de tiempo&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
&lt;br /&gt;
% Gráfica en x=0&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,du0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
&lt;br /&gt;
%Gráfica en x=1&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,du1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al observar la gráfica en el extremo izquierdo vemos que al principio no hay flujo debido a que tanto la barra como el extremo están a 0º. Una vez avanza el tiempo el flujo va siendo cada vez más negativo lo que implica que cada vez sale más flujo por el extremo izquierdo. Esto tiene sentido ya que como la barra se va calentando, como podemos ver en la gráfica de la solución, y el extremo se mantiene a 0º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor.&lt;br /&gt;
&lt;br /&gt;
Por el contrario, en la gráfica del extremo derecho podemos observar que inicialmente hay mucho flujo hacia el interior de la barra debido a que la barra está a 0º y el extremo a 1º. Una vez avanza el tiempo el flujo va siendo cada vez menos negativo lo que implica que cada vez entra menos flujo por el extremo derecho. Esto es coherente ya que como la barra se va calentando, y el extremo se mantiene a 1º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor como hemos mencionado antes.&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas, cabe destacar dos aspectos característicos:&lt;br /&gt;
* Lo primero que cabe preguntarse es por qué cuando en la gráfica hay una gran variación del flujo, en el extremo izquierdo la variación es más moderada, y por el contrario, en el extremo derecho es más drástica. Esto se debe a que en el extremo izquierdo la diferencia de temperatura entre dos puntos cercanos es menor que en el derecho, cosa que podemos observar en la gráfica de la solución.&lt;br /&gt;
* También llama la atención que ambas gráficas se acaban estabilizando en un flujo de -1, este punto coincide con el punto en el que la solución alcanza la solución estacionaria, por lo que tiene sentido que el flujo en ambos extremos se estabilice en el mismo valor.&lt;br /&gt;
&lt;br /&gt;
=Variación coeficiente de conductividad=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a ver como varia la solución cuando variamos el coeficiente de conductividad térmica de 1 a 1/2. Con este coeficiente el sistema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{1t}-\frac{1}{2}u_{1xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_1(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviéndolo de la misma forma que el anterior obtenemos que la estacionaria no varía y es &amp;lt;math&amp;gt; v_1(x)=x &amp;lt;/math&amp;gt;, y que la solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u_1(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{\frac{-k^2\pi^2 t}{2}}+x,&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gf2.4b.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2); %Solución del problema homogéneo&lt;br /&gt;
v=@(x) x; %Solución estacionaria&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x); %Solución del problema&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_1(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Aunque a primera vista pueda parecer igual que la solución del problema original, si nos fijamos bien podemos observar que esta tarda más en alcanzar la solución estacionaria ya que está curvada en un mayor intervalo, esto tiene sentido por tener un coeficiente de conductividad menor.&lt;br /&gt;
&lt;br /&gt;
Ahora para apreciar mejor la diferencia vamos a representar ambas soluciones restándoles la estacionaria en x=1/2.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.5.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi1=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t); %Solución del problema homogéneo con D=1&lt;br /&gt;
wi2=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2); %Solución del problema homogéneo con D=1/2&lt;br /&gt;
v=@(x) x; %Solución homogénea&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w1=@(x,t) 0;&lt;br /&gt;
w2=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w1=@(x,t) w1(x,t) + wi1(x,t,n);&lt;br /&gt;
    w2=@(x,t) w2(x,t) + wi2(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
u1=@(x,t) w1(x,t)+v(x); %Solución del problema con D=1&lt;br /&gt;
u2=@(x,t) w2(x,t)+v(x); %Solución del problema con D=1/2&lt;br /&gt;
&lt;br /&gt;
%Hacemos la diferencia con la solución estacionaria en x=1/2&lt;br /&gt;
dif1=@(t) u1(0.5,t)-v(0.5);&lt;br /&gt;
dif2=@(t) u2(0.5,t)-v(0.5);&lt;br /&gt;
&lt;br /&gt;
%Definimos el vector de tiempos&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
&lt;br /&gt;
% Gráfica de la solución del problema con D=1&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,dif1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1')&lt;br /&gt;
&lt;br /&gt;
% Gráfica de la solución del problema con D=1/2&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,dif2(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1/2')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En estas gráficas podemos apreciar mejor que efectivamente esta solución tarda más en alcanzar la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
=Variación de las condiciones de frontera y las iniciales=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a variar las condiciones de frontera y la inicial y a ver cómo varía la solución. Suponemos que en el extremo derecho ahora la temperatura se mantiene a 0º, y que en el momento inicial la temperatura sigue la siguiente función: &amp;lt;math&amp;gt;max\{0,1-4|x-1/2|\}.&amp;lt;/math&amp;gt; Teniendo todo esto en cuenta, el problema que vamos a estudiar ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{2t}-u_{2xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_2(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Resolviendo este problema de la misma forma que los anteriores, obtenemos que la solución estacionaria es &amp;lt;math&amp;gt; v_2(x)=0 &amp;lt;/math&amp;gt; y que la solución es: &amp;lt;math&amp;gt; u_2(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;. A diferencia de en los otros casos los &amp;lt;math&amp;gt;c_k&amp;lt;/math&amp;gt; los vamos a calcular aproximando las integrales que se utilizan para obtenerlos por el [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals método del trapecio].&lt;br /&gt;
&lt;br /&gt;
Haciendo todo esto, la gráfica de la solución queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.6.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2)); %Condición inicial&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t); %Solución del problema&lt;br /&gt;
&lt;br /&gt;
%Aplicamos la regla del trapecio&lt;br /&gt;
a=0; b=1; %Extremos del intervalo                 &lt;br /&gt;
x=linspace(a,b,100); %Vector de espacio&lt;br /&gt;
t=linspace(a,b,100); %Vector de tiempo&lt;br /&gt;
N=length(x)-1; %Número de puntos&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1); %Vector de pesos             &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
f_n=zeros(length(x),length(t));&lt;br /&gt;
&lt;br /&gt;
%Suma de los 10 primeros términos en todo el vector de tiempo&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    for k=1:10&lt;br /&gt;
        g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
        a_k=2*h*w'*g; %Resultado de la regla del trapecio (c_k)&lt;br /&gt;
        f_n(i,:)= f_n(i,:)+a_k.*uk(x,t(i),k);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Gráfica en 3D&lt;br /&gt;
colormap jet &lt;br /&gt;
surf(x,t,f_n,'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_2(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al igual que en los casos anteriores, podemos ver que la solución acaba alcanzando la solución estacionaria. Además, podemos observar que la solución siempre es positiva, lo que implica que la difusión transporta energía con velocidad infinita.&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Ahora, igual que para el problema original, vamos a ver cómo se comporta el flujo en este problema. Para ello, vamos a representar el flujo en ambos extremos.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.7.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2)); %Condición inicial&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t); %Solución del problema&lt;br /&gt;
duk=@(x,t,k) -k*pi.*cos(k.*pi.*x).*exp(-k.^2*pi.^2.*t); %Derivada de la solución&lt;br /&gt;
&lt;br /&gt;
%Aplicamos el método del trapecio&lt;br /&gt;
a=0; b=1; %Extremos de los intervalos              &lt;br /&gt;
x=linspace(a,b,100); %Vector de espacio&lt;br /&gt;
t=linspace(a,b,100); %Vector de tiempo&lt;br /&gt;
N=length(x)-1; %Número de puntos&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1); %Vector de pesos           &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
q0=@(t)0; &lt;br /&gt;
q1=@(t)0;&lt;br /&gt;
for k=1:100&lt;br /&gt;
    g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
    a_k=2*h*w'*g; %Solución de la regla del trapecio (c_k)&lt;br /&gt;
    q0=@(t) q0(t)+a_k.*duk(0,t,k); %Flujo en x=0&lt;br /&gt;
    q1=@(t) q1(t)+a_k.*duk(1,t,k); %flujo en x=1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Gráfica en x=0&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,q0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
&lt;br /&gt;
%Gráfica en x=1&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,q1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En ambos extremos el flujo empieza siendo cero, cosa que tiene sentido ya que tanto los extremos como los puntos de la barra cercanos a los extremos están a 0º. Posteriormente ambos flujos aumentan hacia fuera de la barra, esto es coherente ya que el calor en el centro de la barra en el momento inicial provoca que los laterales de la barra se vayan calentando y por tanto el flujo vaya hacia los extremos que se mantienen a 0º.&lt;br /&gt;
&lt;br /&gt;
Una vez avanza el tiempo podemos observar que ambos flujo se estacionan en un valor, y esto coincide con el momento en el que la gráfica de la solución alcanza la solución estacionaria. Además, cabe resaltar que este valor es 0, lo cual tiene sentido ya que la solución estacionaria hace que toda la barra se quede a 0º.&lt;br /&gt;
&lt;br /&gt;
==Aislamiento de un extremo==&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a ver cómo se comporta la solución cuando aislamos térmicamente el extremo derecho, es decir, cuando el flujo en ese punto es cero. Teniendo esto en cuenta, el problema queda de la siguiente forma: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{3t}-u_{3xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_3(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_{3x}(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_3(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviéndolo de la misma forma que en los casos anteriores obtenemos que la solución estacionaria es &amp;lt;math&amp;gt; v_3(x,t)=0 &amp;lt;/math&amp;gt; y que la solución del problema es &amp;lt;math&amp;gt; u_3(x,t)=\sum_{k=1}^\infty c_k\sin((k-\frac{1}{2})\pi x)e^{-(k-\frac{1}{2})^2\pi^2 t} &amp;lt;/math&amp;gt;. Ahora, para calcular los coeficientes &amp;lt;math&amp;gt; c_k &amp;lt;/math&amp;gt;, vamos a exigir que esta solución cumpla la condición inicial, es decir, &amp;lt;math&amp;gt; u_3(x,t)=\sum_{k=1}^\infty c_k\sin((k-\frac{1}{2})\pi x)= max\{0,1-4|x-1/2|\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
A diferencia de los otros casos, las autofunciones no las podemos expresar en función de la base trigonométrica, pero aun así forman un conjunto completo en [0,1] y vamos a comprobar que son ortogonales entre sí:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; \int_0^1 sin((n-\frac{1}{2})\pi x)sin((m-\frac{1}{2})\pi x) dx= \frac{1}{2} \int_0^1 cos((n-m)\pi x)-cos((n+m-1)\pi x)dx=0&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como &amp;lt;math&amp;gt;\{ \sin((n-\frac{1}{2})\pi x) \}_{n\in\mathbb{N}}&amp;lt;/math&amp;gt; cumplen estas características, forman una base Hilbertiana y por tanto pueden aproximar cualquier función y los &amp;lt;math&amp;gt; c_k &amp;lt;/math&amp;gt; se pueden calcular igual que los coeficientes de Fourier pero utilizando esta nueva base. Para hacer esto vamos a utilizar la regla del trapecio.&lt;br /&gt;
&lt;br /&gt;
Teniendo todo esto en cuenta, vamos a representar la función para entender mejor cómo funciona este sistema.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.9.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2)); %Condición inicial&lt;br /&gt;
uk=@(x,t,k) sin((k-0.5).*pi.*x).*exp(-(k-0.5).^2*pi.^2.*t); %Solución del problema&lt;br /&gt;
&lt;br /&gt;
%Aplicamos la regla del trapecio&lt;br /&gt;
a=0; b=1; %Extremos de los intervalos                    &lt;br /&gt;
x=linspace(a,b,100); %Vector de espacio&lt;br /&gt;
t=linspace(a,b,100); %Vector de tiempo&lt;br /&gt;
N=length(x)-1; %Número de puntos&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1);  %Vector de nudos            &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
f_n=zeros(length(x),length(t));&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 100 primero términos en todo el vector t&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    for k=1:100&lt;br /&gt;
        g=u0(x)*sin((k-0.5).*pi.*x)'; &lt;br /&gt;
        a_k=2*h*w'*g; %Solución de la regla del trapecio (c_k)&lt;br /&gt;
        f_n(i,:)= f_n(i,:)+a_k.*uk(x,t(i),k);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Gráfica en 3D&lt;br /&gt;
colormap jet &lt;br /&gt;
surf(x,t,f_n,'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_3(x,t)')}}&lt;br /&gt;
&lt;br /&gt;
Podemos observar que la gráfica es igual que la del problema anterior, excepto alrededor de x=1. Esto tiene sentido ya que lo único que hemos variado es la condición frontera en ese extremo. Además, podemos observar que la gráfica en esa zona es más recta, esto es debido a que la derivada es 0.&lt;br /&gt;
&lt;br /&gt;
===Flujo en los extremos===&lt;br /&gt;
Ahora, igual que en todos los problemas anteriores, para entender mejor la solución vamos a analizar el flujo viendo cómo se comporta en los extremos mediante la siguiente gráfica.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.11.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2)); %Condición inicial&lt;br /&gt;
uk=@(x,t,k) sin((k-0.5).*pi.*x).*exp(-(k-0.5).^2*pi.^2.*t); %Solución del problema&lt;br /&gt;
duk=@(x,t,k) -(k-0.5)*pi.*cos((k-0.5).*pi.*x).*exp(-(k-0.5).^2*pi.^2.*t); %Derivada de la solución&lt;br /&gt;
&lt;br /&gt;
%Aplicamos el método del trapecio&lt;br /&gt;
a=0; b=1; %Extremos de los intervalos              &lt;br /&gt;
x=linspace(a,b,100); %Vector de espacio&lt;br /&gt;
t=linspace(a,b,100); %Vector de tiempo&lt;br /&gt;
N=length(x)-1; %Número de puntos&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1); %Vector de pesos           &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
q0=@(t)0; &lt;br /&gt;
q1=@(t)0;&lt;br /&gt;
for k=1:100&lt;br /&gt;
    g=u0(x)*sin((k-0.5)*pi*x)'; &lt;br /&gt;
    a_k=2*h*w'*g; %Solución de la regla del trapecio (c_k)&lt;br /&gt;
    q0=@(t) q0(t)+a_k.*duk(0,t,k); %Flujo en x=0&lt;br /&gt;
    q1=@(t) q1(t)+a_k.*duk(1,t,k); %flujo en x=1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%Gráfica en x=0&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,q0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{3x}(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
&lt;br /&gt;
%Gráfica en x=1&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,q1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{3x}(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')}}&lt;br /&gt;
&lt;br /&gt;
En la gráfica del extremo izquierdo podemos observar que es igual que la anterior, al igual que pasa con la gráfica de la solución. Esto se debe a que la condición de contorno en ese extremo no la hemos variado.&lt;br /&gt;
&lt;br /&gt;
Por el contrario, en este extremo la gráfica es distinta debido a que al aislar este extremo no va a haber flujo y por eso la gráfica es prácticamente 0 en todo momento.&lt;br /&gt;
&lt;br /&gt;
=Principio del máximo=&lt;br /&gt;
Ahora, para entender mejor cómo funciona el principio del máximo, vamos a comprobar si este se cumple en las soluciones de los problemas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gpmax.png|925px|thumb|center|Soluciones]]&lt;br /&gt;
&lt;br /&gt;
En las dos primeras gráficas, podemos observar que el mínimo está en la frontera t=0 y el máximo en x=1 y en las otras dos podemos ver que el máximo está en t=0 y el mínimo en las fronteras de x. Por lo que efectivamente, en todas las soluciones que hemos calculado en este artículo se cumple el principio del máximo.&lt;br /&gt;
&lt;br /&gt;
=Solución fundamental=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a estudiar la ecuación del calor cuando la variable espacial no está acotada. Por lo que el sistema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
u_t - k u_{xx} = 0&amp;amp; (x, t) \in \mathbb{R} \times (0, \infty)\\&lt;br /&gt;
u(x,0)=\delta(x)&amp;amp;&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde ''&amp;lt;math&amp;gt;\delta&amp;lt;/math&amp;gt;'' es la función delta de Dirac, que vale 0 en todo punto menos en x, y su integral en toda la recta real es igual a 1.&lt;br /&gt;
&lt;br /&gt;
La solución a este sistema es la llamada solución fundamental de la ecuación del calor, correspondiente a la condición inicial de un punto donde se concentra todo el calor y su fórmula es:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\Phi(x,t)=\frac{1}{\sqrt{4\pi kt}}\exp\left(-\frac{x^2}{4kt}\right).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.8.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Parámetros&lt;br /&gt;
k = 1;  % Coeficiente de conductividad&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
t = linspace(10^-2, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Inicialización de la matriz de soluciones&lt;br /&gt;
u = zeros(length(x), length(t));&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución fundamental&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
    u(:, i) = 1/sqrt(4 * pi * k * t(i)) * exp(-x.^2 / (4 * k * t(i)));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
colormap jet;&lt;br /&gt;
surf(x, t, u', 'FaceColor', 'interp');&lt;br /&gt;
title('Solución Fundamental de la Ecuación del Calor');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('t');&lt;br /&gt;
zlabel('Temperatura (u(x, t))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ANIMACIÓN:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
    u = 1/sqrt(4 * pi * k * t(i)) * exp(-x.^2 / (4 * k * t(i)));&lt;br /&gt;
&lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y la etiqueta&lt;br /&gt;
    title(['Evolución de la Temperatura (t = ' num2str(t(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 3]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.08);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
De manera análoga, podemos extender esta solución a dos dimensiones espaciales: &amp;lt;math&amp;gt; \Phi(x,y,t) = \frac{1}{4 \pi k t} \exp\left(-\frac{x^2 + y^2}{4 k t}\right).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gif2.1.gif|400px|thumb|right|Video de la evolución de la solución a lo largo del tiempo]]&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
k = 1;  % Coeficiente de conductividad&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos en x y y&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
y = linspace(-1, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear una malla 2D&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Tiempos para la animación&lt;br /&gt;
t_values = linspace(0.001, 0.1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución fundamental en 2D&lt;br /&gt;
    u = 1/(4 * pi * k * t_values(i)) * exp(-(X.^2 + Y.^2) / (4 * k * t_values(i)));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    colormap jet&lt;br /&gt;
    surf(X, Y, u, 'EdgeColor', 'none');&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución Fundamental en 2D (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('x');&lt;br /&gt;
    ylabel('y');&lt;br /&gt;
    zlabel('Temperatura u(x, y, t)');&lt;br /&gt;
&lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    zlim([0, 20]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.2);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.10.jpg|900px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Soluciones autosemejantes==&lt;br /&gt;
&lt;br /&gt;
Lo bueno que tiene la solución fundamental es que no hemos tenido que restringirla a una región acotada del espacio, sino que es solución para todo &amp;lt;math&amp;gt; x \in \mathbb{R} &amp;lt;/math&amp;gt;. No estaría de más preguntarse si existen otras soluciones con esta propiedad.&lt;br /&gt;
La solución fundamental tiene la propiedad de ser autosemejante, es decir, su gráfica al variar el tiempo mantiene siempre la misma forma (una gaussiana).&lt;br /&gt;
&lt;br /&gt;
Podemos buscar otras soluciones con esta propiedad considerando el cambio de variable &amp;lt;math&amp;gt;\xi=\frac{x}{\sqrt{t}}&amp;lt;/math&amp;gt;. Se comprueba que esta combinación de variables es invariante respecto de dilataciones parabólicas y además no tiene dimensión (PÁG 44 DEL LIBRO).&lt;br /&gt;
&lt;br /&gt;
Imponemos que la función de una variable &amp;lt;math&amp;gt; U(\xi) &amp;lt;/math&amp;gt; cumpla la EDP, y llegamos a la EDO:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U'(\xi)+\frac{1}{2}U(\xi)=B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cuya solución, deshaciendo el cambio de variable, es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U(\frac{x}{\sqrt{t}})=Ae^{-{\frac{x}{2\sqrt{t}}}}+2B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
con &amp;lt;math&amp;gt; A,B &amp;lt;/math&amp;gt; constantes a determinar. Para ello, consideraremos las siguientes restricciones, que involucran una región espacial no acotada: &amp;lt;math&amp;gt; x&amp;gt;0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
&amp;amp;u(0, t) = 1 \\&lt;br /&gt;
&amp;amp;u(x, 0) = 0\\&lt;br /&gt;
&amp;amp;lim_{x \to \infty } u(x,t)=0&lt;br /&gt;
\end{aligned}&lt;br /&gt;
\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con las que obtenemos &amp;lt;math&amp;gt; A=1 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B=0 &amp;lt;/math&amp;gt;, y por tanto la solución a este problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=e^{-{\frac{x}{2\sqrt{t}}}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Definir el intervalo espacial&lt;br /&gt;
x = linspace(0, 5, 100);&lt;br /&gt;
&lt;br /&gt;
% Definir el intervalo de tiempo&lt;br /&gt;
t_values = linspace(0.01, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución&lt;br /&gt;
    u = exp(-x / (2 * sqrt(t_values(i))));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución de la Ecuación del Calor (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.1);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==La convolución==&lt;br /&gt;
&lt;br /&gt;
Otra forma de obtener soluciones de la ecuación del calor es usando la solución fundamental &amp;lt;math&amp;gt; \Phi(x,t) &amp;lt;/math&amp;gt; y aplicando una [https://es.wikipedia.org/wiki/Convoluci%C3%B3n convolución].&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; u(x,t) = \int_{-\infty}^{\infty} \Phi(x-y,t) u_0(y) dy&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; es el dato inicial, es decir, &amp;lt;math&amp;gt; u(x,0) = u_0(x) &amp;lt;/math&amp;gt; para &amp;lt;math&amp;gt; x \in \mathbb{R} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hemos visto antes que la solución fundamental representaba la respuesta del sistema a un impulso unitario (delta de Dirac) en un punto y en un instante de tiempo.&lt;br /&gt;
&lt;br /&gt;
Intuitivamente, la convolución realiza una integración ponderada de las contribuciones locales del dato inicial en cada punto y momento, proporcionando así la evolución completa de la temperatura de acuerdo con la ecuación del calor.&lt;br /&gt;
&lt;br /&gt;
Para ilustrarlo, vemos qué forma tiene la solución para el dato incial: &amp;lt;math&amp;gt; u_0(x) = 1_{[-1,1]} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Falta cambiar el comando integral() por el de trapecio)&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
k = 1;  % Difusividad térmica&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-3, 3, 100);&lt;br /&gt;
t_values = linspace(0.0005, 0.3, 100);&lt;br /&gt;
&lt;br /&gt;
% Función dato inicial&lt;br /&gt;
f = @(x) double(x &amp;gt;= -1 &amp;amp; x &amp;lt;= 1);&lt;br /&gt;
&lt;br /&gt;
% Solución fundamental&lt;br /&gt;
G = @(x, t) 1/sqrt(4 * pi * k * t) * exp(-x.^2 / (4 * k * t));&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la convolución&lt;br /&gt;
    u = zeros(size(x));&lt;br /&gt;
    for j = 1:length(x)&lt;br /&gt;
        integrand = @(y) G(x(j) - y, t_values(i)) .* f(y);&lt;br /&gt;
        u(j) = integral(integrand, -inf, inf);&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y la etiqueta&lt;br /&gt;
    title(['Evolución de la Temperatura (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1.1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.01);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&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>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=69356</id>
		<title>Ecuación del calor (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=69356"/>
				<updated>2024-03-06T13:18:01Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Solución fundamental */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar la ecuación del calor en una dimensión mediante el estudio de una varilla metálica de longitud 1 y que se encuentra aislada por su superficie lateral, es decir, la conducción de calor solo se produce en la dirección longitudinal. Además, vamos a ver cómo varía la solución en función de la variación de distintos parámatros como las condiciones iniciales o el coeficiente de difusión.&lt;br /&gt;
&lt;br /&gt;
=Preliminares=&lt;br /&gt;
&lt;br /&gt;
Antes de empezar a desarrollar el problema necesitamos conocer algunos conceptos que nos van a permitir modelizarlo y sacar sus ecuaciones.&lt;br /&gt;
&lt;br /&gt;
* La '''ley de Fourier''' establece que el flujo de transferencia de calor es proporcional y de sentido contrario al gradiente de temperatura en esa dirección.&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; q=-k\nabla u &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Siendo k la conductividad térmica.&lt;br /&gt;
&lt;br /&gt;
*Conservación de la energía.&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
=Problema original=&lt;br /&gt;
En este primer apartado, vamos a suponer que la temperatura inicial de la varilla es 0ºC y que en el extremo izquierdo se consigue mantener la temperatura a 0ºC mientras que en el derecho la temperatura es siempre de 1ºC. Teniendo esto en cuenta y los conceptos desarrollados en el apartado anterior, el sistema de ecuaciones que representa el problema es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_t-u_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Homogeneización==&lt;br /&gt;
&lt;br /&gt;
Antes de empezar con la resolución del problema vamos a homogeneizar las condiciones de contorno. Para hacer esto vamos a restarle al problema la solución estacionaria, es decir, la que permanece invariante respecto al tiempo. Esto implica que &amp;lt;math&amp;gt; u_t\sim 0 &amp;lt;/math&amp;gt; y que &amp;lt;math&amp;gt; u(x,t)\sim v(x) &amp;lt;/math&amp;gt;. Por lo que el problema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
v_{xx}=0 &amp;amp; x\in(0,1)\\&lt;br /&gt;
v(0)=0\\&lt;br /&gt;
v(1)=1\\&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución de este problema, y por tanto la solución estacionaria es: &amp;lt;math&amp;gt; v(x)=x &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.1.jpg|400px|thumb|right|Solución estacionaria]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
v=@(x,t) x;&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(v, [0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('v(x)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la solución estacionaria, tomamos &amp;lt;math&amp;gt; w(x,t)=u(x,t)-v(x) &amp;lt;/math&amp;gt; y vemos como queda el problema homogeneizado para &amp;lt;math&amp;gt; w(x,t)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
w_t-w_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
w(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(x,0)=-x&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Una vez homogeneizado el sistema podemos empezar a buscar la solución por el método de separación de variables, en el cual vamos a suponer que la solución es de la forma: &amp;lt;math&amp;gt; w(x,t)=X(x)T(t) &amp;lt;/math&amp;gt;. Como &amp;lt;math&amp;gt;w(x,t)&amp;lt;/math&amp;gt; es solución obtenemos que se tiene que cumplir &amp;lt;math&amp;gt;\frac{X''(x)}{X(x)}=\frac{T'(t)}{T(t)}=\lambda_k&amp;lt;/math&amp;gt; dando lugar a la resolución de dos problemas por separado, uno que depende de &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt; y otro que depende de &amp;lt;math&amp;gt; t&amp;lt;/math&amp;gt;. Al solucionar ambos problemas obtenemos el siguiente resultado: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para que &amp;lt;math&amp;gt; w(x,t) &amp;lt;/math&amp;gt; sea solución de nuestro problema, solo falta ver que cumpla la condición incial, es decir, que &amp;lt;math&amp;gt; w(x,0)=c_k\sin(k\pi x)=-x &amp;lt;/math&amp;gt;. De esta igualdad sacamos que si extendemos la función &amp;lt;math&amp;gt; -x &amp;lt;/math&amp;gt; de forma impar los coeficientes &amp;lt;math&amp;gt; c_k&amp;lt;/math&amp;gt; van a ser los coeficiente de la [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) serie de Fourier]. Por tanto, la solución queda de la siguiente manera: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta función es la solución del problema homogeneizado, por lo que para obtener la solución del problema original tenemos que deshacer el cambio de variable. La solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}+x&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a graficar los 10 primeros términos de la serie en &amp;lt;math&amp;gt; t \in [0,1]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.2c.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
close all&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&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;
En la gráfica podemos observar que la solución del poblema alcanza la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Por la ley de Fourier sabemos que &amp;lt;math&amp;gt; q=-k u_x &amp;lt;/math&amp;gt;, siendo q el flujo. Por lo que para interpretar como es el flujo en nuestro problema, vamos a graficar como es en los extremos suponiendo que &amp;lt;math&amp;gt; k=1 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.3.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos la función &lt;br /&gt;
dwi=@(x,t,k) (2*(-1)^(k+1)).*cos(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
dv=@(x) 1;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
dw0=@(t) 0;&lt;br /&gt;
dw1=@(t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    dw0=@(t) dw0(t) + dwi(0,t,n);&lt;br /&gt;
    dw1=@(t) dw1(t) + dwi(1,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
du0=@(t) dw0(t)-dv(0);&lt;br /&gt;
du1=@(t) dw1(t)-dv(1);&lt;br /&gt;
&lt;br /&gt;
% Gráfica &lt;br /&gt;
close all&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,du0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,du1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al observar la gráfica en el extremo izquierdo vemos que al principio no hay flujo debido a que tanto la barra como el extremo están a 0º. Una vez avanza el tiempo el flujo va siendo cada vez más negativo lo que implica que cada vez sale más flujo por el extremo izquierdo. Esto tiene sentido ya que como la barra se va calentando, como podemos ver en la gráfica de la solución, y el extremo se mantiene a 0º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor.&lt;br /&gt;
&lt;br /&gt;
Por el contrario, en la gráfica del extremos derecho podemos observar que inicialmente hay mucho flujo hacia el interior de la barra debido a que la barra está a 0º y el extremo a 1º. Una vez avanza el tiempo el flujo va siendo cada vez menos negativo lo que implica que cada vez entra menos flujo por el extremo derecho. Esto es coherente ya que como la barra se va calentando, y el extremo se mantiene a 1º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor como hemos mencionado antes.&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas, cabe destacar dos aspectos característicos:&lt;br /&gt;
* Lo primero que cabe preguntarse es por qué cuando en la gráfica hay una gran variación del flujo, en el extremo izquierdo desciende más moderadamente, y en el extremo derecho asciende drásticamente. Esto se debe a que en el extremo izquierdo la diferencia de temperatura entre dos puntos cercanos es menor que en el derecho, cosa que podemos observar en la gráfica de la solución.&lt;br /&gt;
* También llama la atención que ambas gráficas se acaban estabilizando en un flujo de -1, este punto coincide con el punto en el que la solución alcanza la solución estacionaria, por lo que tiene sentido que el flujo en ambos extremos se estabilice en el mismo valor.&lt;br /&gt;
&lt;br /&gt;
=Variación coeficiente de conductividad=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a ver como varia la solución cuando variamos el coeficiente de conductividad térmica de 1 a 1/2. Con este coeficiente el sistema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{1t}-\frac{1}{2}u_{1xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_1(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendolo de la misma forma que el anterior obtenemos que la solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u_1(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{\frac{-k^2\pi^2 t}{2}}+x,&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y que la estacionaria no varía &amp;lt;math&amp;gt; v_1(x)=x &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gf2.4b.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
close all&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_1(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Aunque a primera vista pueda parecer igual que la solución del problema original, si nos fijamos bien podemos observar que esta tarda más en alcanzar la solución estacionaria ya que esta curvada en un mayor intervalo, esto tiene sentido por tener un coeficiente de conductividad menor.&lt;br /&gt;
&lt;br /&gt;
Ahora para apreciar mejor la diferencia vamos a representar ambas soluciones restándoles la estacionaria en x=1/2.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.5.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi1=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
wi2=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w1=@(x,t) 0;&lt;br /&gt;
w2=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w1=@(x,t) w1(x,t) + wi1(x,t,n);&lt;br /&gt;
    w2=@(x,t) w2(x,t) + wi2(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
u1=@(x,t) w1(x,t)+v(x);&lt;br /&gt;
u2=@(x,t) w2(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
%Hacemos la diferencia con la solución estacionaria&lt;br /&gt;
dif1=@(t) u1(0.5,t)-v(0.5);&lt;br /&gt;
dif2=@(t) u2(0.5,t)-v(0.5);&lt;br /&gt;
&lt;br /&gt;
% Gráfica &lt;br /&gt;
close all&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,dif1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,dif2(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1/2')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En estas gráficas podemos apreciar mejor que efectivamente esta solución tarda más en alcanzar la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
=Variación de las condiciones de frontera y las iniciales=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a variar las condiciones de frontera y la inicial y a ver cómo varía la solución. El problema que vamos a estudiar ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{2t}-u_{2xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_2(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Resolviendo este problema de la misma forma que los anteriores, obtenemos que la solución estacionaria &amp;lt;math&amp;gt; v_2(x)=0 &amp;lt;/math&amp;gt; y que la solución es: &amp;lt;math&amp;gt; u_2(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;. A diferencia de en los otros casos los &amp;lt;math&amp;gt;c_k&amp;lt;/math&amp;gt; los vamos a calcular aproximando las integrales por el [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals método del trapecio]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.6.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2));&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
close all&lt;br /&gt;
&lt;br /&gt;
a=0; b=1;                    &lt;br /&gt;
x=linspace(a,b,100);&lt;br /&gt;
t=linspace(a,b,100);&lt;br /&gt;
N=length(x)-1;&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1);              &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
f_n=zeros(length(x),length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    for k=1:100&lt;br /&gt;
        g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
        a_k=2*h*w'*g;&lt;br /&gt;
        f_n(i,:)= f_n(i,:)+a_k.*uk(x,t(i),k);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
colormap jet &lt;br /&gt;
surf(x,t,f_n,'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_2(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al igual que en los casos anteriores, podemos ver que la solución alcanza la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Ahora, igual que para el problema original, vamos a ver cómo se comporta el flujo en este problema.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.7.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2));&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
duk=@(x,t,k) -k*pi.*cos(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
close all&lt;br /&gt;
&lt;br /&gt;
a=0; b=1;                    &lt;br /&gt;
x=linspace(a,b,100);&lt;br /&gt;
t=linspace(a,b,100);&lt;br /&gt;
N=length(x)-1;&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1);              &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
q0=@(t)0;&lt;br /&gt;
q1=@(t)0;&lt;br /&gt;
    for k=1:100&lt;br /&gt;
        g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
        a_k=2*h*w'*g;&lt;br /&gt;
        q0=@(t) q0(t)+a_k.*duk(0,t,k);&lt;br /&gt;
        q1=@(t) q1(t)+a_k.*duk(1,t,k);&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,q0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,q1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Aislamiento de un extremo==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{3t}-u_{3xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_3(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_{3x}(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_3(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; v_3(x,t)=0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Solucion &amp;lt;math&amp;gt; u_3(x,t)=\sum_{k=1}^\infty c_k\sin((k+\frac{1}{2})\pi x)e^{-(k+\frac{1}{2})^2\pi^2 t} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Solución fundamental=&lt;br /&gt;
&lt;br /&gt;
La llamada solución fundamental de la ecuación del calor es la solución correspondiente a la condición inicial de un punto donde se concentra todo el calor.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
u_t - k u_{xx} = 0&amp;amp; (x, t) \in \mathbb{R} \times (0, \infty)\\&lt;br /&gt;
u(x,0)=\delta(x)&amp;amp;&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde ''&amp;lt;math&amp;gt;\delta&amp;lt;/math&amp;gt;'' es la función delta de Dirac, que vale 0 en todo punto menos en x, y su integral en toda la recta real es igual a 1. &lt;br /&gt;
&lt;br /&gt;
La solución a este problema es la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\Phi(x,t)=\frac{1}{\sqrt{4\pi kt}}\exp\left(-\frac{x^2}{4kt}\right).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.8.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Parámetros&lt;br /&gt;
k = 1;  % Coeficiente de conductividad&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
t = linspace(10^-2, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Inicialización de la matriz de soluciones&lt;br /&gt;
u = zeros(length(x), length(t));&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución fundamental&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
    u(:, i) = 1/sqrt(4 * pi * k * t(i)) * exp(-x.^2 / (4 * k * t(i)));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
colormap jet;&lt;br /&gt;
surf(x, t, u', 'FaceColor', 'interp');&lt;br /&gt;
title('Solución Fundamental de la Ecuación del Calor');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('t');&lt;br /&gt;
zlabel('Temperatura (u(x, t))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ANIMACIÓN:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
    u = 1/sqrt(4 * pi * k * t(i)) * exp(-x.^2 / (4 * k * t(i)));&lt;br /&gt;
&lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y la etiqueta&lt;br /&gt;
    title(['Evolución de la Temperatura (t = ' num2str(t(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 3]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.08);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
De manera análoga, podemos extender esta solución a dos dimensiones espaciales: &amp;lt;math&amp;gt; \Phi(x,y,t) = \frac{1}{4 \pi k t} \exp\left(-\frac{x^2 + y^2}{4 k t}\right).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
k = 1;  % Difusividad térmica&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos en x y y&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
y = linspace(-1, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear una malla 2D&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Tiempos para la animación&lt;br /&gt;
t_values = linspace(0.001, 0.1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución fundamental en 2D&lt;br /&gt;
    u = 1/(4 * pi * k * t_values(i)) * exp(-(X.^2 + Y.^2) / (4 * k * t_values(i)));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    surf(X, Y, u, 'EdgeColor', 'none');&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución Fundamental en 2D (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición x');&lt;br /&gt;
    ylabel('Posición y');&lt;br /&gt;
    zlabel('Temperatura u(x, y, t)');&lt;br /&gt;
&lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    zlim([0, 20]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.2);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Soluciones autosemejantes==&lt;br /&gt;
&lt;br /&gt;
Lo bueno que tiene la solución fundamental es que no hemos tenido que restringirla a una región acotada del espacio, sino que es solución para todo &amp;lt;math&amp;gt; x \in \mathbb{R} &amp;lt;/math&amp;gt;. No estaría de más preguntarse si existen otras soluciones con esta propiedad.&lt;br /&gt;
La solución fundamental tiene la propiedad de ser autosemejante, es decir, su gráfica al variar el tiempo mantiene siempre la misma forma (una gaussiana).&lt;br /&gt;
&lt;br /&gt;
Podemos buscar otras soluciones con esta propiedad considerando el cambio de variable &amp;lt;math&amp;gt;\xi=\frac{x}{\sqrt{t}}&amp;lt;/math&amp;gt;. Se comprueba que esta combinación de variables es invariante respecto de dilataciones parabólicas y además no tiene dimensión (PÁG 44 DEL LIBRO).&lt;br /&gt;
&lt;br /&gt;
Imponemos que la función de una variable &amp;lt;math&amp;gt; U(\xi) &amp;lt;/math&amp;gt; cumpla la EDP, y llegamos a la EDO:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U'(\xi)+\frac{1}{2}U(\xi)=B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cuya solución, deshaciendo el cambio de variable, es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U(\frac{x}{\sqrt{t}})=Ae^{-{\frac{x}{2\sqrt{t}}}}+2B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
con &amp;lt;math&amp;gt; A,B &amp;lt;/math&amp;gt; constantes a determinar. Para ello, consideraremos las siguientes restricciones, que involucran una región espacial no acotada: &amp;lt;math&amp;gt; x&amp;gt;0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
&amp;amp;u(0, t) = 1 \\&lt;br /&gt;
&amp;amp;u(x, 0) = 0\\&lt;br /&gt;
&amp;amp;lim_{x \to \infty } u(x,t)=0&lt;br /&gt;
\end{aligned}&lt;br /&gt;
\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con las que obtenemos &amp;lt;math&amp;gt; A=1 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B=0 &amp;lt;/math&amp;gt;, y por tanto la solución a este problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=e^{-{\frac{x}{2\sqrt{t}}}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Definir el intervalo espacial&lt;br /&gt;
x = linspace(0, 5, 100);&lt;br /&gt;
&lt;br /&gt;
% Definir el intervalo de tiempo&lt;br /&gt;
t_values = linspace(0.01, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución&lt;br /&gt;
    u = exp(-x / (2 * sqrt(t_values(i))));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución de la Ecuación del Calor (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.1);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==La convolución==&lt;br /&gt;
&lt;br /&gt;
Otra forma de obtener soluciones de la ecuación del calor es usando la solución fundamental &amp;lt;math&amp;gt; \Phi(x,t) &amp;lt;/math&amp;gt; y aplicando una [https://es.wikipedia.org/wiki/Convoluci%C3%B3n convolución].&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; u(x,t) = \int_{-\infty}^{\infty} \Phi(x-y,t) u_0(y) dy&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; es el dato inicial, es decir, &amp;lt;math&amp;gt; u(x,0) = u_0(x) &amp;lt;/math&amp;gt; para &amp;lt;math&amp;gt; x \in \mathbb{R} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hemos visto antes que la solución fundamental representaba la respuesta del sistema a un impulso unitario (delta de Dirac) en un punto y en un instante de tiempo.&lt;br /&gt;
&lt;br /&gt;
Intuitivamente, la convolución realiza una integración ponderada de las contribuciones locales del dato inicial en cada punto y momento, proporcionando así la evolución completa de la temperatura de acuerdo con la ecuación del calor.&lt;br /&gt;
&lt;br /&gt;
Para ilustrarlo, vemos qué forma tiene la solución para el dato incial: &amp;lt;math&amp;gt; u_0(x) = 1_{[-1,1]} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Falta cambiar el comando integral() por el de trapecio)&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
k = 1;  % Difusividad térmica&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-3, 3, 100);&lt;br /&gt;
t_values = linspace(0.0005, 0.3, 100);&lt;br /&gt;
&lt;br /&gt;
% Función dato inicial&lt;br /&gt;
f = @(x) double(x &amp;gt;= -1 &amp;amp; x &amp;lt;= 1);&lt;br /&gt;
&lt;br /&gt;
% Solución fundamental&lt;br /&gt;
G = @(x, t) 1/sqrt(4 * pi * k * t) * exp(-x.^2 / (4 * k * t));&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la convolución&lt;br /&gt;
    u = zeros(size(x));&lt;br /&gt;
    for j = 1:length(x)&lt;br /&gt;
        integrand = @(y) G(x(j) - y, t_values(i)) .* f(y);&lt;br /&gt;
        u(j) = integral(integrand, -inf, inf);&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y la etiqueta&lt;br /&gt;
    title(['Evolución de la Temperatura (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1.1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.01);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=69355</id>
		<title>Ecuación del calor (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=69355"/>
				<updated>2024-03-06T13:17:21Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Solución fundamental */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar la ecuación del calor en una dimensión mediante el estudio de una varilla metálica de longitud 1 y que se encuentra aislada por su superficie lateral, es decir, la conducción de calor solo se produce en la dirección longitudinal. Además, vamos a ver cómo varía la solución en función de la variación de distintos parámatros como las condiciones iniciales o el coeficiente de difusión.&lt;br /&gt;
&lt;br /&gt;
=Preliminares=&lt;br /&gt;
&lt;br /&gt;
Antes de empezar a desarrollar el problema necesitamos conocer algunos conceptos que nos van a permitir modelizarlo y sacar sus ecuaciones.&lt;br /&gt;
&lt;br /&gt;
* La '''ley de Fourier''' establece que el flujo de transferencia de calor es proporcional y de sentido contrario al gradiente de temperatura en esa dirección.&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; q=-k\nabla u &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Siendo k la conductividad térmica.&lt;br /&gt;
&lt;br /&gt;
*Conservación de la energía.&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
=Problema original=&lt;br /&gt;
En este primer apartado, vamos a suponer que la temperatura inicial de la varilla es 0ºC y que en el extremo izquierdo se consigue mantener la temperatura a 0ºC mientras que en el derecho la temperatura es siempre de 1ºC. Teniendo esto en cuenta y los conceptos desarrollados en el apartado anterior, el sistema de ecuaciones que representa el problema es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_t-u_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Homogeneización==&lt;br /&gt;
&lt;br /&gt;
Antes de empezar con la resolución del problema vamos a homogeneizar las condiciones de contorno. Para hacer esto vamos a restarle al problema la solución estacionaria, es decir, la que permanece invariante respecto al tiempo. Esto implica que &amp;lt;math&amp;gt; u_t\sim 0 &amp;lt;/math&amp;gt; y que &amp;lt;math&amp;gt; u(x,t)\sim v(x) &amp;lt;/math&amp;gt;. Por lo que el problema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
v_{xx}=0 &amp;amp; x\in(0,1)\\&lt;br /&gt;
v(0)=0\\&lt;br /&gt;
v(1)=1\\&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución de este problema, y por tanto la solución estacionaria es: &amp;lt;math&amp;gt; v(x)=x &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.1.jpg|400px|thumb|right|Solución estacionaria]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
v=@(x,t) x;&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(v, [0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('v(x)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la solución estacionaria, tomamos &amp;lt;math&amp;gt; w(x,t)=u(x,t)-v(x) &amp;lt;/math&amp;gt; y vemos como queda el problema homogeneizado para &amp;lt;math&amp;gt; w(x,t)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
w_t-w_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
w(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(x,0)=-x&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Una vez homogeneizado el sistema podemos empezar a buscar la solución por el método de separación de variables, en el cual vamos a suponer que la solución es de la forma: &amp;lt;math&amp;gt; w(x,t)=X(x)T(t) &amp;lt;/math&amp;gt;. Como &amp;lt;math&amp;gt;w(x,t)&amp;lt;/math&amp;gt; es solución obtenemos que se tiene que cumplir &amp;lt;math&amp;gt;\frac{X''(x)}{X(x)}=\frac{T'(t)}{T(t)}=\lambda_k&amp;lt;/math&amp;gt; dando lugar a la resolución de dos problemas por separado, uno que depende de &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt; y otro que depende de &amp;lt;math&amp;gt; t&amp;lt;/math&amp;gt;. Al solucionar ambos problemas obtenemos el siguiente resultado: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para que &amp;lt;math&amp;gt; w(x,t) &amp;lt;/math&amp;gt; sea solución de nuestro problema, solo falta ver que cumpla la condición incial, es decir, que &amp;lt;math&amp;gt; w(x,0)=c_k\sin(k\pi x)=-x &amp;lt;/math&amp;gt;. De esta igualdad sacamos que si extendemos la función &amp;lt;math&amp;gt; -x &amp;lt;/math&amp;gt; de forma impar los coeficientes &amp;lt;math&amp;gt; c_k&amp;lt;/math&amp;gt; van a ser los coeficiente de la [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) serie de Fourier]. Por tanto, la solución queda de la siguiente manera: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta función es la solución del problema homogeneizado, por lo que para obtener la solución del problema original tenemos que deshacer el cambio de variable. La solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}+x&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a graficar los 10 primeros términos de la serie en &amp;lt;math&amp;gt; t \in [0,1]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.2c.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
close all&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&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;
En la gráfica podemos observar que la solución del poblema alcanza la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Por la ley de Fourier sabemos que &amp;lt;math&amp;gt; q=-k u_x &amp;lt;/math&amp;gt;, siendo q el flujo. Por lo que para interpretar como es el flujo en nuestro problema, vamos a graficar como es en los extremos suponiendo que &amp;lt;math&amp;gt; k=1 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.3.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos la función &lt;br /&gt;
dwi=@(x,t,k) (2*(-1)^(k+1)).*cos(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
dv=@(x) 1;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
dw0=@(t) 0;&lt;br /&gt;
dw1=@(t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    dw0=@(t) dw0(t) + dwi(0,t,n);&lt;br /&gt;
    dw1=@(t) dw1(t) + dwi(1,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
du0=@(t) dw0(t)-dv(0);&lt;br /&gt;
du1=@(t) dw1(t)-dv(1);&lt;br /&gt;
&lt;br /&gt;
% Gráfica &lt;br /&gt;
close all&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,du0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,du1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al observar la gráfica en el extremo izquierdo vemos que al principio no hay flujo debido a que tanto la barra como el extremo están a 0º. Una vez avanza el tiempo el flujo va siendo cada vez más negativo lo que implica que cada vez sale más flujo por el extremo izquierdo. Esto tiene sentido ya que como la barra se va calentando, como podemos ver en la gráfica de la solución, y el extremo se mantiene a 0º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor.&lt;br /&gt;
&lt;br /&gt;
Por el contrario, en la gráfica del extremos derecho podemos observar que inicialmente hay mucho flujo hacia el interior de la barra debido a que la barra está a 0º y el extremo a 1º. Una vez avanza el tiempo el flujo va siendo cada vez menos negativo lo que implica que cada vez entra menos flujo por el extremo derecho. Esto es coherente ya que como la barra se va calentando, y el extremo se mantiene a 1º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor como hemos mencionado antes.&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas, cabe destacar dos aspectos característicos:&lt;br /&gt;
* Lo primero que cabe preguntarse es por qué cuando en la gráfica hay una gran variación del flujo, en el extremo izquierdo desciende más moderadamente, y en el extremo derecho asciende drásticamente. Esto se debe a que en el extremo izquierdo la diferencia de temperatura entre dos puntos cercanos es menor que en el derecho, cosa que podemos observar en la gráfica de la solución.&lt;br /&gt;
* También llama la atención que ambas gráficas se acaban estabilizando en un flujo de -1, este punto coincide con el punto en el que la solución alcanza la solución estacionaria, por lo que tiene sentido que el flujo en ambos extremos se estabilice en el mismo valor.&lt;br /&gt;
&lt;br /&gt;
=Variación coeficiente de conductividad=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a ver como varia la solución cuando variamos el coeficiente de conductividad térmica de 1 a 1/2. Con este coeficiente el sistema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{1t}-\frac{1}{2}u_{1xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_1(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendolo de la misma forma que el anterior obtenemos que la solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u_1(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{\frac{-k^2\pi^2 t}{2}}+x,&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y que la estacionaria no varía &amp;lt;math&amp;gt; v_1(x)=x &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gf2.4b.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
close all&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_1(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Aunque a primera vista pueda parecer igual que la solución del problema original, si nos fijamos bien podemos observar que esta tarda más en alcanzar la solución estacionaria ya que esta curvada en un mayor intervalo, esto tiene sentido por tener un coeficiente de conductividad menor.&lt;br /&gt;
&lt;br /&gt;
Ahora para apreciar mejor la diferencia vamos a representar ambas soluciones restándoles la estacionaria en x=1/2.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.5.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi1=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
wi2=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w1=@(x,t) 0;&lt;br /&gt;
w2=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w1=@(x,t) w1(x,t) + wi1(x,t,n);&lt;br /&gt;
    w2=@(x,t) w2(x,t) + wi2(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
u1=@(x,t) w1(x,t)+v(x);&lt;br /&gt;
u2=@(x,t) w2(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
%Hacemos la diferencia con la solución estacionaria&lt;br /&gt;
dif1=@(t) u1(0.5,t)-v(0.5);&lt;br /&gt;
dif2=@(t) u2(0.5,t)-v(0.5);&lt;br /&gt;
&lt;br /&gt;
% Gráfica &lt;br /&gt;
close all&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,dif1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,dif2(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1/2')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En estas gráficas podemos apreciar mejor que efectivamente esta solución tarda más en alcanzar la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
=Variación de las condiciones de frontera y las iniciales=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a variar las condiciones de frontera y la inicial y a ver cómo varía la solución. El problema que vamos a estudiar ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{2t}-u_{2xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_2(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Resolviendo este problema de la misma forma que los anteriores, obtenemos que la solución estacionaria &amp;lt;math&amp;gt; v_2(x)=0 &amp;lt;/math&amp;gt; y que la solución es: &amp;lt;math&amp;gt; u_2(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;. A diferencia de en los otros casos los &amp;lt;math&amp;gt;c_k&amp;lt;/math&amp;gt; los vamos a calcular aproximando las integrales por el [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals método del trapecio]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.6.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2));&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
close all&lt;br /&gt;
&lt;br /&gt;
a=0; b=1;                    &lt;br /&gt;
x=linspace(a,b,100);&lt;br /&gt;
t=linspace(a,b,100);&lt;br /&gt;
N=length(x)-1;&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1);              &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
f_n=zeros(length(x),length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    for k=1:100&lt;br /&gt;
        g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
        a_k=2*h*w'*g;&lt;br /&gt;
        f_n(i,:)= f_n(i,:)+a_k.*uk(x,t(i),k);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
colormap jet &lt;br /&gt;
surf(x,t,f_n,'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_2(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al igual que en los casos anteriores, podemos ver que la solución alcanza la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Ahora, igual que para el problema original, vamos a ver cómo se comporta el flujo en este problema.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.7.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2));&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
duk=@(x,t,k) -k*pi.*cos(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
close all&lt;br /&gt;
&lt;br /&gt;
a=0; b=1;                    &lt;br /&gt;
x=linspace(a,b,100);&lt;br /&gt;
t=linspace(a,b,100);&lt;br /&gt;
N=length(x)-1;&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1);              &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
q0=@(t)0;&lt;br /&gt;
q1=@(t)0;&lt;br /&gt;
    for k=1:100&lt;br /&gt;
        g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
        a_k=2*h*w'*g;&lt;br /&gt;
        q0=@(t) q0(t)+a_k.*duk(0,t,k);&lt;br /&gt;
        q1=@(t) q1(t)+a_k.*duk(1,t,k);&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,q0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,q1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Aislamiento de un extremo==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{3t}-u_{3xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_3(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_{3x}(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_3(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; v_3(x,t)=0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Solucion &amp;lt;math&amp;gt; u_3(x,t)=\sum_{k=1}^\infty c_k\sin((k+\frac{1}{2})\pi x)e^{-(k+\frac{1}{2})^2\pi^2 t} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Solución fundamental=&lt;br /&gt;
&lt;br /&gt;
La llamada solución fundamental de la ecuación del calor es la solución correspondiente a la condición inicial de un punto donde se concentra todo el calor.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
u_t - k u_{xx} = 0&amp;amp; (x, t) \in \mathbb{R} \times (0, \infty)\\&lt;br /&gt;
u(x,0)=\delta(x)&amp;amp;&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde ''&amp;lt;math&amp;gt;\delta&amp;lt;/math&amp;gt;'' es la función delta de Dirac, que vale 0 en todo punto menos en x, y su integral en toda la recta real es igual a 1. &lt;br /&gt;
&lt;br /&gt;
La solución a este problema es la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\Phi(x,t)=\frac{1}{\sqrt{4\pi kt}}\exp\left(-\frac{x^2}{4kt}\right).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.8.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Parámetros&lt;br /&gt;
k = 1;  % Coeficiente de conductividad&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
t = linspace(10^-2, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Inicialización de la matriz de soluciones&lt;br /&gt;
u = zeros(length(x), length(t));&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución fundamental&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
    u(:, i) = 1/sqrt(4 * pi * k * t(i)) * exp(-x.^2 / (4 * k * t(i)));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
colormap jet;&lt;br /&gt;
surf(x, t, u', 'FaceColor', 'interp');&lt;br /&gt;
title('Solución Fundamental de la Ecuación del Calor');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('t');&lt;br /&gt;
zlabel('Temperatura (u(x, t))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ANIMACIÓN:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
    u = 1/sqrt(4 * pi * k * t(i)) * exp(-x.^2 / (4 * k * t(i)));&lt;br /&gt;
&lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y la etiqueta&lt;br /&gt;
    title(['Evolución de la Temperatura (t = ' num2str(t(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 3]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.08);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
De manera análoga, podemos extender la solución a dos dimensiones espaciales: &amp;lt;math&amp;gt; \Phi(x,y,t) = \frac{1}{4 \pi k t} \exp\left(-\frac{x^2 + y^2}{4 k t}\right).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
k = 1;  % Difusividad térmica&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos en x y y&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
y = linspace(-1, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear una malla 2D&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Tiempos para la animación&lt;br /&gt;
t_values = linspace(0.001, 0.1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución fundamental en 2D&lt;br /&gt;
    u = 1/(4 * pi * k * t_values(i)) * exp(-(X.^2 + Y.^2) / (4 * k * t_values(i)));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    surf(X, Y, u, 'EdgeColor', 'none');&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución Fundamental en 2D (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición x');&lt;br /&gt;
    ylabel('Posición y');&lt;br /&gt;
    zlabel('Temperatura u(x, y, t)');&lt;br /&gt;
&lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    zlim([0, 20]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.2);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Soluciones autosemejantes==&lt;br /&gt;
&lt;br /&gt;
Lo bueno que tiene la solución fundamental es que no hemos tenido que restringirla a una región acotada del espacio, sino que es solución para todo &amp;lt;math&amp;gt; x \in \mathbb{R} &amp;lt;/math&amp;gt;. No estaría de más preguntarse si existen otras soluciones con esta propiedad.&lt;br /&gt;
La solución fundamental tiene la propiedad de ser autosemejante, es decir, su gráfica al variar el tiempo mantiene siempre la misma forma (una gaussiana).&lt;br /&gt;
&lt;br /&gt;
Podemos buscar otras soluciones con esta propiedad considerando el cambio de variable &amp;lt;math&amp;gt;\xi=\frac{x}{\sqrt{t}}&amp;lt;/math&amp;gt;. Se comprueba que esta combinación de variables es invariante respecto de dilataciones parabólicas y además no tiene dimensión (PÁG 44 DEL LIBRO).&lt;br /&gt;
&lt;br /&gt;
Imponemos que la función de una variable &amp;lt;math&amp;gt; U(\xi) &amp;lt;/math&amp;gt; cumpla la EDP, y llegamos a la EDO:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U'(\xi)+\frac{1}{2}U(\xi)=B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cuya solución, deshaciendo el cambio de variable, es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U(\frac{x}{\sqrt{t}})=Ae^{-{\frac{x}{2\sqrt{t}}}}+2B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
con &amp;lt;math&amp;gt; A,B &amp;lt;/math&amp;gt; constantes a determinar. Para ello, consideraremos las siguientes restricciones, que involucran una región espacial no acotada: &amp;lt;math&amp;gt; x&amp;gt;0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
&amp;amp;u(0, t) = 1 \\&lt;br /&gt;
&amp;amp;u(x, 0) = 0\\&lt;br /&gt;
&amp;amp;lim_{x \to \infty } u(x,t)=0&lt;br /&gt;
\end{aligned}&lt;br /&gt;
\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con las que obtenemos &amp;lt;math&amp;gt; A=1 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B=0 &amp;lt;/math&amp;gt;, y por tanto la solución a este problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=e^{-{\frac{x}{2\sqrt{t}}}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Definir el intervalo espacial&lt;br /&gt;
x = linspace(0, 5, 100);&lt;br /&gt;
&lt;br /&gt;
% Definir el intervalo de tiempo&lt;br /&gt;
t_values = linspace(0.01, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución&lt;br /&gt;
    u = exp(-x / (2 * sqrt(t_values(i))));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución de la Ecuación del Calor (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.1);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==La convolución==&lt;br /&gt;
&lt;br /&gt;
Otra forma de obtener soluciones de la ecuación del calor es usando la solución fundamental &amp;lt;math&amp;gt; \Phi(x,t) &amp;lt;/math&amp;gt; y aplicando una [https://es.wikipedia.org/wiki/Convoluci%C3%B3n convolución].&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; u(x,t) = \int_{-\infty}^{\infty} \Phi(x-y,t) u_0(y) dy&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; es el dato inicial, es decir, &amp;lt;math&amp;gt; u(x,0) = u_0(x) &amp;lt;/math&amp;gt; para &amp;lt;math&amp;gt; x \in \mathbb{R} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hemos visto antes que la solución fundamental representaba la respuesta del sistema a un impulso unitario (delta de Dirac) en un punto y en un instante de tiempo.&lt;br /&gt;
&lt;br /&gt;
Intuitivamente, la convolución realiza una integración ponderada de las contribuciones locales del dato inicial en cada punto y momento, proporcionando así la evolución completa de la temperatura de acuerdo con la ecuación del calor.&lt;br /&gt;
&lt;br /&gt;
Para ilustrarlo, vemos qué forma tiene la solución para el dato incial: &amp;lt;math&amp;gt; u_0(x) = 1_{[-1,1]} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Falta cambiar el comando integral() por el de trapecio)&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
k = 1;  % Difusividad térmica&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-3, 3, 100);&lt;br /&gt;
t_values = linspace(0.0005, 0.3, 100);&lt;br /&gt;
&lt;br /&gt;
% Función dato inicial&lt;br /&gt;
f = @(x) double(x &amp;gt;= -1 &amp;amp; x &amp;lt;= 1);&lt;br /&gt;
&lt;br /&gt;
% Solución fundamental&lt;br /&gt;
G = @(x, t) 1/sqrt(4 * pi * k * t) * exp(-x.^2 / (4 * k * t));&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la convolución&lt;br /&gt;
    u = zeros(size(x));&lt;br /&gt;
    for j = 1:length(x)&lt;br /&gt;
        integrand = @(y) G(x(j) - y, t_values(i)) .* f(y);&lt;br /&gt;
        u(j) = integral(integrand, -inf, inf);&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y la etiqueta&lt;br /&gt;
    title(['Evolución de la Temperatura (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1.1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.01);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=69354</id>
		<title>Ecuación del calor (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=69354"/>
				<updated>2024-03-06T13:16:54Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Solución fundamental */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar la ecuación del calor en una dimensión mediante el estudio de una varilla metálica de longitud 1 y que se encuentra aislada por su superficie lateral, es decir, la conducción de calor solo se produce en la dirección longitudinal. Además, vamos a ver cómo varía la solución en función de la variación de distintos parámatros como las condiciones iniciales o el coeficiente de difusión.&lt;br /&gt;
&lt;br /&gt;
=Preliminares=&lt;br /&gt;
&lt;br /&gt;
Antes de empezar a desarrollar el problema necesitamos conocer algunos conceptos que nos van a permitir modelizarlo y sacar sus ecuaciones.&lt;br /&gt;
&lt;br /&gt;
* La '''ley de Fourier''' establece que el flujo de transferencia de calor es proporcional y de sentido contrario al gradiente de temperatura en esa dirección.&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; q=-k\nabla u &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Siendo k la conductividad térmica.&lt;br /&gt;
&lt;br /&gt;
*Conservación de la energía.&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
=Problema original=&lt;br /&gt;
En este primer apartado, vamos a suponer que la temperatura inicial de la varilla es 0ºC y que en el extremo izquierdo se consigue mantener la temperatura a 0ºC mientras que en el derecho la temperatura es siempre de 1ºC. Teniendo esto en cuenta y los conceptos desarrollados en el apartado anterior, el sistema de ecuaciones que representa el problema es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_t-u_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Homogeneización==&lt;br /&gt;
&lt;br /&gt;
Antes de empezar con la resolución del problema vamos a homogeneizar las condiciones de contorno. Para hacer esto vamos a restarle al problema la solución estacionaria, es decir, la que permanece invariante respecto al tiempo. Esto implica que &amp;lt;math&amp;gt; u_t\sim 0 &amp;lt;/math&amp;gt; y que &amp;lt;math&amp;gt; u(x,t)\sim v(x) &amp;lt;/math&amp;gt;. Por lo que el problema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
v_{xx}=0 &amp;amp; x\in(0,1)\\&lt;br /&gt;
v(0)=0\\&lt;br /&gt;
v(1)=1\\&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución de este problema, y por tanto la solución estacionaria es: &amp;lt;math&amp;gt; v(x)=x &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.1.jpg|400px|thumb|right|Solución estacionaria]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
v=@(x,t) x;&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(v, [0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('v(x)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la solución estacionaria, tomamos &amp;lt;math&amp;gt; w(x,t)=u(x,t)-v(x) &amp;lt;/math&amp;gt; y vemos como queda el problema homogeneizado para &amp;lt;math&amp;gt; w(x,t)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
w_t-w_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
w(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(x,0)=-x&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Una vez homogeneizado el sistema podemos empezar a buscar la solución por el método de separación de variables, en el cual vamos a suponer que la solución es de la forma: &amp;lt;math&amp;gt; w(x,t)=X(x)T(t) &amp;lt;/math&amp;gt;. Como &amp;lt;math&amp;gt;w(x,t)&amp;lt;/math&amp;gt; es solución obtenemos que se tiene que cumplir &amp;lt;math&amp;gt;\frac{X''(x)}{X(x)}=\frac{T'(t)}{T(t)}=\lambda_k&amp;lt;/math&amp;gt; dando lugar a la resolución de dos problemas por separado, uno que depende de &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt; y otro que depende de &amp;lt;math&amp;gt; t&amp;lt;/math&amp;gt;. Al solucionar ambos problemas obtenemos el siguiente resultado: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para que &amp;lt;math&amp;gt; w(x,t) &amp;lt;/math&amp;gt; sea solución de nuestro problema, solo falta ver que cumpla la condición incial, es decir, que &amp;lt;math&amp;gt; w(x,0)=c_k\sin(k\pi x)=-x &amp;lt;/math&amp;gt;. De esta igualdad sacamos que si extendemos la función &amp;lt;math&amp;gt; -x &amp;lt;/math&amp;gt; de forma impar los coeficientes &amp;lt;math&amp;gt; c_k&amp;lt;/math&amp;gt; van a ser los coeficiente de la [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) serie de Fourier]. Por tanto, la solución queda de la siguiente manera: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta función es la solución del problema homogeneizado, por lo que para obtener la solución del problema original tenemos que deshacer el cambio de variable. La solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}+x&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a graficar los 10 primeros términos de la serie en &amp;lt;math&amp;gt; t \in [0,1]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.2c.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
close all&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&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;
En la gráfica podemos observar que la solución del poblema alcanza la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Por la ley de Fourier sabemos que &amp;lt;math&amp;gt; q=-k u_x &amp;lt;/math&amp;gt;, siendo q el flujo. Por lo que para interpretar como es el flujo en nuestro problema, vamos a graficar como es en los extremos suponiendo que &amp;lt;math&amp;gt; k=1 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.3.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos la función &lt;br /&gt;
dwi=@(x,t,k) (2*(-1)^(k+1)).*cos(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
dv=@(x) 1;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
dw0=@(t) 0;&lt;br /&gt;
dw1=@(t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    dw0=@(t) dw0(t) + dwi(0,t,n);&lt;br /&gt;
    dw1=@(t) dw1(t) + dwi(1,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
du0=@(t) dw0(t)-dv(0);&lt;br /&gt;
du1=@(t) dw1(t)-dv(1);&lt;br /&gt;
&lt;br /&gt;
% Gráfica &lt;br /&gt;
close all&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,du0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,du1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al observar la gráfica en el extremo izquierdo vemos que al principio no hay flujo debido a que tanto la barra como el extremo están a 0º. Una vez avanza el tiempo el flujo va siendo cada vez más negativo lo que implica que cada vez sale más flujo por el extremo izquierdo. Esto tiene sentido ya que como la barra se va calentando, como podemos ver en la gráfica de la solución, y el extremo se mantiene a 0º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor.&lt;br /&gt;
&lt;br /&gt;
Por el contrario, en la gráfica del extremos derecho podemos observar que inicialmente hay mucho flujo hacia el interior de la barra debido a que la barra está a 0º y el extremo a 1º. Una vez avanza el tiempo el flujo va siendo cada vez menos negativo lo que implica que cada vez entra menos flujo por el extremo derecho. Esto es coherente ya que como la barra se va calentando, y el extremo se mantiene a 1º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor como hemos mencionado antes.&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas, cabe destacar dos aspectos característicos:&lt;br /&gt;
* Lo primero que cabe preguntarse es por qué cuando en la gráfica hay una gran variación del flujo, en el extremo izquierdo desciende más moderadamente, y en el extremo derecho asciende drásticamente. Esto se debe a que en el extremo izquierdo la diferencia de temperatura entre dos puntos cercanos es menor que en el derecho, cosa que podemos observar en la gráfica de la solución.&lt;br /&gt;
* También llama la atención que ambas gráficas se acaban estabilizando en un flujo de -1, este punto coincide con el punto en el que la solución alcanza la solución estacionaria, por lo que tiene sentido que el flujo en ambos extremos se estabilice en el mismo valor.&lt;br /&gt;
&lt;br /&gt;
=Variación coeficiente de conductividad=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a ver como varia la solución cuando variamos el coeficiente de conductividad térmica de 1 a 1/2. Con este coeficiente el sistema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{1t}-\frac{1}{2}u_{1xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_1(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendolo de la misma forma que el anterior obtenemos que la solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u_1(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{\frac{-k^2\pi^2 t}{2}}+x,&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y que la estacionaria no varía &amp;lt;math&amp;gt; v_1(x)=x &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gf2.4b.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
close all&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_1(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Aunque a primera vista pueda parecer igual que la solución del problema original, si nos fijamos bien podemos observar que esta tarda más en alcanzar la solución estacionaria ya que esta curvada en un mayor intervalo, esto tiene sentido por tener un coeficiente de conductividad menor.&lt;br /&gt;
&lt;br /&gt;
Ahora para apreciar mejor la diferencia vamos a representar ambas soluciones restándoles la estacionaria en x=1/2.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.5.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi1=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
wi2=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w1=@(x,t) 0;&lt;br /&gt;
w2=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w1=@(x,t) w1(x,t) + wi1(x,t,n);&lt;br /&gt;
    w2=@(x,t) w2(x,t) + wi2(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
u1=@(x,t) w1(x,t)+v(x);&lt;br /&gt;
u2=@(x,t) w2(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
%Hacemos la diferencia con la solución estacionaria&lt;br /&gt;
dif1=@(t) u1(0.5,t)-v(0.5);&lt;br /&gt;
dif2=@(t) u2(0.5,t)-v(0.5);&lt;br /&gt;
&lt;br /&gt;
% Gráfica &lt;br /&gt;
close all&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,dif1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,dif2(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1/2')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En estas gráficas podemos apreciar mejor que efectivamente esta solución tarda más en alcanzar la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
=Variación de las condiciones de frontera y las iniciales=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a variar las condiciones de frontera y la inicial y a ver cómo varía la solución. El problema que vamos a estudiar ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{2t}-u_{2xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_2(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Resolviendo este problema de la misma forma que los anteriores, obtenemos que la solución estacionaria &amp;lt;math&amp;gt; v_2(x)=0 &amp;lt;/math&amp;gt; y que la solución es: &amp;lt;math&amp;gt; u_2(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;. A diferencia de en los otros casos los &amp;lt;math&amp;gt;c_k&amp;lt;/math&amp;gt; los vamos a calcular aproximando las integrales por el [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals método del trapecio]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.6.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2));&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
close all&lt;br /&gt;
&lt;br /&gt;
a=0; b=1;                    &lt;br /&gt;
x=linspace(a,b,100);&lt;br /&gt;
t=linspace(a,b,100);&lt;br /&gt;
N=length(x)-1;&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1);              &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
f_n=zeros(length(x),length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    for k=1:100&lt;br /&gt;
        g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
        a_k=2*h*w'*g;&lt;br /&gt;
        f_n(i,:)= f_n(i,:)+a_k.*uk(x,t(i),k);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
colormap jet &lt;br /&gt;
surf(x,t,f_n,'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_2(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al igual que en los casos anteriores, podemos ver que la solución alcanza la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Ahora, igual que para el problema original, vamos a ver cómo se comporta el flujo en este problema.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.7.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2));&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
duk=@(x,t,k) -k*pi.*cos(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
close all&lt;br /&gt;
&lt;br /&gt;
a=0; b=1;                    &lt;br /&gt;
x=linspace(a,b,100);&lt;br /&gt;
t=linspace(a,b,100);&lt;br /&gt;
N=length(x)-1;&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1);              &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
q0=@(t)0;&lt;br /&gt;
q1=@(t)0;&lt;br /&gt;
    for k=1:100&lt;br /&gt;
        g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
        a_k=2*h*w'*g;&lt;br /&gt;
        q0=@(t) q0(t)+a_k.*duk(0,t,k);&lt;br /&gt;
        q1=@(t) q1(t)+a_k.*duk(1,t,k);&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,q0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,q1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Aislamiento de un extremo==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{3t}-u_{3xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_3(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_{3x}(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_3(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; v_3(x,t)=0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Solucion &amp;lt;math&amp;gt; u_3(x,t)=\sum_{k=1}^\infty c_k\sin((k+\frac{1}{2})\pi x)e^{-(k+\frac{1}{2})^2\pi^2 t} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Solución fundamental=&lt;br /&gt;
&lt;br /&gt;
La llamada solución fundamental de la ecuación del calor es la solución correspondiente a la condición inicial de un punto donde se concentra todo el calor.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
u_t - k u_{xx} = 0&amp;amp; (x, t) \in \mathbb{R} \times (0, \infty)\\&lt;br /&gt;
u(x,0)=\delta(x)&amp;amp;&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde ''&amp;lt;math&amp;gt;\delta&amp;lt;/math&amp;gt;'' es la función delta de Dirac, que vale 0 en todo punto menos en x, y su integral en toda la recta real es igual a 1. &lt;br /&gt;
&lt;br /&gt;
La solución a este problema es la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\Phi(x,t)=\frac{1}{\sqrt{4\pi kt}}\exp\left(-\frac{x^2}{4kt}\right).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.8.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Parámetros&lt;br /&gt;
k = 1;  % Coeficiente de conductividad&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
t = linspace(10^-2, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Inicialización de la matriz de soluciones&lt;br /&gt;
u = zeros(length(x), length(t));&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución fundamental&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
    u(:, i) = 1/sqrt(4 * pi * k * t(i)) * exp(-x.^2 / (4 * k * t(i)));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
colormap jet;&lt;br /&gt;
surf(x, t, u', 'FaceColor', 'interp');&lt;br /&gt;
title('Solución Fundamental de la Ecuación del Calor');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('t');&lt;br /&gt;
zlabel('Temperatura (u(x, t))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ANIMACIÓN:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
    u = 1/sqrt(4 * pi * k * t(i)) * exp(-x.^2 / (4 * k * t(i)));&lt;br /&gt;
&lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y la etiqueta&lt;br /&gt;
    title(['Evolución de la Temperatura (t = ' num2str(t(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 3]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.08);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
De manera análoga, podemos extender la solución a dos dimensiones espaciales: &amp;lt;math&amp;gt; \Phi(x,t) = \frac{1}{4 \pi k t} \exp\left(-\frac{x^2 + y^2}{4 k t}\right).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
k = 1;  % Difusividad térmica&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos en x y y&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
y = linspace(-1, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear una malla 2D&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Tiempos para la animación&lt;br /&gt;
t_values = linspace(0.001, 0.1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución fundamental en 2D&lt;br /&gt;
    u = 1/(4 * pi * k * t_values(i)) * exp(-(X.^2 + Y.^2) / (4 * k * t_values(i)));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    surf(X, Y, u, 'EdgeColor', 'none');&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución Fundamental en 2D (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición x');&lt;br /&gt;
    ylabel('Posición y');&lt;br /&gt;
    zlabel('Temperatura u(x, y, t)');&lt;br /&gt;
&lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    zlim([0, 20]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.2);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Soluciones autosemejantes==&lt;br /&gt;
&lt;br /&gt;
Lo bueno que tiene la solución fundamental es que no hemos tenido que restringirla a una región acotada del espacio, sino que es solución para todo &amp;lt;math&amp;gt; x \in \mathbb{R} &amp;lt;/math&amp;gt;. No estaría de más preguntarse si existen otras soluciones con esta propiedad.&lt;br /&gt;
La solución fundamental tiene la propiedad de ser autosemejante, es decir, su gráfica al variar el tiempo mantiene siempre la misma forma (una gaussiana).&lt;br /&gt;
&lt;br /&gt;
Podemos buscar otras soluciones con esta propiedad considerando el cambio de variable &amp;lt;math&amp;gt;\xi=\frac{x}{\sqrt{t}}&amp;lt;/math&amp;gt;. Se comprueba que esta combinación de variables es invariante respecto de dilataciones parabólicas y además no tiene dimensión (PÁG 44 DEL LIBRO).&lt;br /&gt;
&lt;br /&gt;
Imponemos que la función de una variable &amp;lt;math&amp;gt; U(\xi) &amp;lt;/math&amp;gt; cumpla la EDP, y llegamos a la EDO:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U'(\xi)+\frac{1}{2}U(\xi)=B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cuya solución, deshaciendo el cambio de variable, es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U(\frac{x}{\sqrt{t}})=Ae^{-{\frac{x}{2\sqrt{t}}}}+2B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
con &amp;lt;math&amp;gt; A,B &amp;lt;/math&amp;gt; constantes a determinar. Para ello, consideraremos las siguientes restricciones, que involucran una región espacial no acotada: &amp;lt;math&amp;gt; x&amp;gt;0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
&amp;amp;u(0, t) = 1 \\&lt;br /&gt;
&amp;amp;u(x, 0) = 0\\&lt;br /&gt;
&amp;amp;lim_{x \to \infty } u(x,t)=0&lt;br /&gt;
\end{aligned}&lt;br /&gt;
\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con las que obtenemos &amp;lt;math&amp;gt; A=1 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B=0 &amp;lt;/math&amp;gt;, y por tanto la solución a este problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=e^{-{\frac{x}{2\sqrt{t}}}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Definir el intervalo espacial&lt;br /&gt;
x = linspace(0, 5, 100);&lt;br /&gt;
&lt;br /&gt;
% Definir el intervalo de tiempo&lt;br /&gt;
t_values = linspace(0.01, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución&lt;br /&gt;
    u = exp(-x / (2 * sqrt(t_values(i))));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución de la Ecuación del Calor (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.1);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==La convolución==&lt;br /&gt;
&lt;br /&gt;
Otra forma de obtener soluciones de la ecuación del calor es usando la solución fundamental &amp;lt;math&amp;gt; \Phi(x,t) &amp;lt;/math&amp;gt; y aplicando una [https://es.wikipedia.org/wiki/Convoluci%C3%B3n convolución].&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; u(x,t) = \int_{-\infty}^{\infty} \Phi(x-y,t) u_0(y) dy&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; es el dato inicial, es decir, &amp;lt;math&amp;gt; u(x,0) = u_0(x) &amp;lt;/math&amp;gt; para &amp;lt;math&amp;gt; x \in \mathbb{R} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hemos visto antes que la solución fundamental representaba la respuesta del sistema a un impulso unitario (delta de Dirac) en un punto y en un instante de tiempo.&lt;br /&gt;
&lt;br /&gt;
Intuitivamente, la convolución realiza una integración ponderada de las contribuciones locales del dato inicial en cada punto y momento, proporcionando así la evolución completa de la temperatura de acuerdo con la ecuación del calor.&lt;br /&gt;
&lt;br /&gt;
Para ilustrarlo, vemos qué forma tiene la solución para el dato incial: &amp;lt;math&amp;gt; u_0(x) = 1_{[-1,1]} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Falta cambiar el comando integral() por el de trapecio)&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
k = 1;  % Difusividad térmica&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-3, 3, 100);&lt;br /&gt;
t_values = linspace(0.0005, 0.3, 100);&lt;br /&gt;
&lt;br /&gt;
% Función dato inicial&lt;br /&gt;
f = @(x) double(x &amp;gt;= -1 &amp;amp; x &amp;lt;= 1);&lt;br /&gt;
&lt;br /&gt;
% Solución fundamental&lt;br /&gt;
G = @(x, t) 1/sqrt(4 * pi * k * t) * exp(-x.^2 / (4 * k * t));&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la convolución&lt;br /&gt;
    u = zeros(size(x));&lt;br /&gt;
    for j = 1:length(x)&lt;br /&gt;
        integrand = @(y) G(x(j) - y, t_values(i)) .* f(y);&lt;br /&gt;
        u(j) = integral(integrand, -inf, inf);&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y la etiqueta&lt;br /&gt;
    title(['Evolución de la Temperatura (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1.1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.01);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=69353</id>
		<title>Ecuación del calor (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=69353"/>
				<updated>2024-03-06T13:15:59Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Solución fundamental */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar la ecuación del calor en una dimensión mediante el estudio de una varilla metálica de longitud 1 y que se encuentra aislada por su superficie lateral, es decir, la conducción de calor solo se produce en la dirección longitudinal. Además, vamos a ver cómo varía la solución en función de la variación de distintos parámatros como las condiciones iniciales o el coeficiente de difusión.&lt;br /&gt;
&lt;br /&gt;
=Preliminares=&lt;br /&gt;
&lt;br /&gt;
Antes de empezar a desarrollar el problema necesitamos conocer algunos conceptos que nos van a permitir modelizarlo y sacar sus ecuaciones.&lt;br /&gt;
&lt;br /&gt;
* La '''ley de Fourier''' establece que el flujo de transferencia de calor es proporcional y de sentido contrario al gradiente de temperatura en esa dirección.&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; q=-k\nabla u &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Siendo k la conductividad térmica.&lt;br /&gt;
&lt;br /&gt;
*Conservación de la energía.&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
=Problema original=&lt;br /&gt;
En este primer apartado, vamos a suponer que la temperatura inicial de la varilla es 0ºC y que en el extremo izquierdo se consigue mantener la temperatura a 0ºC mientras que en el derecho la temperatura es siempre de 1ºC. Teniendo esto en cuenta y los conceptos desarrollados en el apartado anterior, el sistema de ecuaciones que representa el problema es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_t-u_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Homogeneización==&lt;br /&gt;
&lt;br /&gt;
Antes de empezar con la resolución del problema vamos a homogeneizar las condiciones de contorno. Para hacer esto vamos a restarle al problema la solución estacionaria, es decir, la que permanece invariante respecto al tiempo. Esto implica que &amp;lt;math&amp;gt; u_t\sim 0 &amp;lt;/math&amp;gt; y que &amp;lt;math&amp;gt; u(x,t)\sim v(x) &amp;lt;/math&amp;gt;. Por lo que el problema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
v_{xx}=0 &amp;amp; x\in(0,1)\\&lt;br /&gt;
v(0)=0\\&lt;br /&gt;
v(1)=1\\&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución de este problema, y por tanto la solución estacionaria es: &amp;lt;math&amp;gt; v(x)=x &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.1.jpg|400px|thumb|right|Solución estacionaria]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
v=@(x,t) x;&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(v, [0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('v(x)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la solución estacionaria, tomamos &amp;lt;math&amp;gt; w(x,t)=u(x,t)-v(x) &amp;lt;/math&amp;gt; y vemos como queda el problema homogeneizado para &amp;lt;math&amp;gt; w(x,t)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
w_t-w_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
w(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(x,0)=-x&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Una vez homogeneizado el sistema podemos empezar a buscar la solución por el método de separación de variables, en el cual vamos a suponer que la solución es de la forma: &amp;lt;math&amp;gt; w(x,t)=X(x)T(t) &amp;lt;/math&amp;gt;. Como &amp;lt;math&amp;gt;w(x,t)&amp;lt;/math&amp;gt; es solución obtenemos que se tiene que cumplir &amp;lt;math&amp;gt;\frac{X''(x)}{X(x)}=\frac{T'(t)}{T(t)}=\lambda_k&amp;lt;/math&amp;gt; dando lugar a la resolución de dos problemas por separado, uno que depende de &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt; y otro que depende de &amp;lt;math&amp;gt; t&amp;lt;/math&amp;gt;. Al solucionar ambos problemas obtenemos el siguiente resultado: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para que &amp;lt;math&amp;gt; w(x,t) &amp;lt;/math&amp;gt; sea solución de nuestro problema, solo falta ver que cumpla la condición incial, es decir, que &amp;lt;math&amp;gt; w(x,0)=c_k\sin(k\pi x)=-x &amp;lt;/math&amp;gt;. De esta igualdad sacamos que si extendemos la función &amp;lt;math&amp;gt; -x &amp;lt;/math&amp;gt; de forma impar los coeficientes &amp;lt;math&amp;gt; c_k&amp;lt;/math&amp;gt; van a ser los coeficiente de la [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) serie de Fourier]. Por tanto, la solución queda de la siguiente manera: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta función es la solución del problema homogeneizado, por lo que para obtener la solución del problema original tenemos que deshacer el cambio de variable. La solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}+x&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a graficar los 10 primeros términos de la serie en &amp;lt;math&amp;gt; t \in [0,1]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.2c.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
close all&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&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;
En la gráfica podemos observar que la solución del poblema alcanza la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Por la ley de Fourier sabemos que &amp;lt;math&amp;gt; q=-k u_x &amp;lt;/math&amp;gt;, siendo q el flujo. Por lo que para interpretar como es el flujo en nuestro problema, vamos a graficar como es en los extremos suponiendo que &amp;lt;math&amp;gt; k=1 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.3.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos la función &lt;br /&gt;
dwi=@(x,t,k) (2*(-1)^(k+1)).*cos(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
dv=@(x) 1;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
dw0=@(t) 0;&lt;br /&gt;
dw1=@(t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    dw0=@(t) dw0(t) + dwi(0,t,n);&lt;br /&gt;
    dw1=@(t) dw1(t) + dwi(1,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
du0=@(t) dw0(t)-dv(0);&lt;br /&gt;
du1=@(t) dw1(t)-dv(1);&lt;br /&gt;
&lt;br /&gt;
% Gráfica &lt;br /&gt;
close all&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,du0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,du1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al observar la gráfica en el extremo izquierdo vemos que al principio no hay flujo debido a que tanto la barra como el extremo están a 0º. Una vez avanza el tiempo el flujo va siendo cada vez más negativo lo que implica que cada vez sale más flujo por el extremo izquierdo. Esto tiene sentido ya que como la barra se va calentando, como podemos ver en la gráfica de la solución, y el extremo se mantiene a 0º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor.&lt;br /&gt;
&lt;br /&gt;
Por el contrario, en la gráfica del extremos derecho podemos observar que inicialmente hay mucho flujo hacia el interior de la barra debido a que la barra está a 0º y el extremo a 1º. Una vez avanza el tiempo el flujo va siendo cada vez menos negativo lo que implica que cada vez entra menos flujo por el extremo derecho. Esto es coherente ya que como la barra se va calentando, y el extremo se mantiene a 1º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor como hemos mencionado antes.&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas, cabe destacar dos aspectos característicos:&lt;br /&gt;
* Lo primero que cabe preguntarse es por qué cuando en la gráfica hay una gran variación del flujo, en el extremo izquierdo desciende más moderadamente, y en el extremo derecho asciende drásticamente. Esto se debe a que en el extremo izquierdo la diferencia de temperatura entre dos puntos cercanos es menor que en el derecho, cosa que podemos observar en la gráfica de la solución.&lt;br /&gt;
* También llama la atención que ambas gráficas se acaban estabilizando en un flujo de -1, este punto coincide con el punto en el que la solución alcanza la solución estacionaria, por lo que tiene sentido que el flujo en ambos extremos se estabilice en el mismo valor.&lt;br /&gt;
&lt;br /&gt;
=Variación coeficiente de conductividad=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a ver como varia la solución cuando variamos el coeficiente de conductividad térmica de 1 a 1/2. Con este coeficiente el sistema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{1t}-\frac{1}{2}u_{1xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_1(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendolo de la misma forma que el anterior obtenemos que la solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u_1(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{\frac{-k^2\pi^2 t}{2}}+x,&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y que la estacionaria no varía &amp;lt;math&amp;gt; v_1(x)=x &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gf2.4b.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
close all&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_1(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Aunque a primera vista pueda parecer igual que la solución del problema original, si nos fijamos bien podemos observar que esta tarda más en alcanzar la solución estacionaria ya que esta curvada en un mayor intervalo, esto tiene sentido por tener un coeficiente de conductividad menor.&lt;br /&gt;
&lt;br /&gt;
Ahora para apreciar mejor la diferencia vamos a representar ambas soluciones restándoles la estacionaria en x=1/2.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.5.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi1=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
wi2=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w1=@(x,t) 0;&lt;br /&gt;
w2=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w1=@(x,t) w1(x,t) + wi1(x,t,n);&lt;br /&gt;
    w2=@(x,t) w2(x,t) + wi2(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
u1=@(x,t) w1(x,t)+v(x);&lt;br /&gt;
u2=@(x,t) w2(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
%Hacemos la diferencia con la solución estacionaria&lt;br /&gt;
dif1=@(t) u1(0.5,t)-v(0.5);&lt;br /&gt;
dif2=@(t) u2(0.5,t)-v(0.5);&lt;br /&gt;
&lt;br /&gt;
% Gráfica &lt;br /&gt;
close all&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,dif1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,dif2(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1/2')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En estas gráficas podemos apreciar mejor que efectivamente esta solución tarda más en alcanzar la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
=Variación de las condiciones de frontera y las iniciales=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a variar las condiciones de frontera y la inicial y a ver cómo varía la solución. El problema que vamos a estudiar ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{2t}-u_{2xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_2(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Resolviendo este problema de la misma forma que los anteriores, obtenemos que la solución estacionaria &amp;lt;math&amp;gt; v_2(x)=0 &amp;lt;/math&amp;gt; y que la solución es: &amp;lt;math&amp;gt; u_2(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;. A diferencia de en los otros casos los &amp;lt;math&amp;gt;c_k&amp;lt;/math&amp;gt; los vamos a calcular aproximando las integrales por el [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals método del trapecio]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.6.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2));&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
close all&lt;br /&gt;
&lt;br /&gt;
a=0; b=1;                    &lt;br /&gt;
x=linspace(a,b,100);&lt;br /&gt;
t=linspace(a,b,100);&lt;br /&gt;
N=length(x)-1;&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1);              &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
f_n=zeros(length(x),length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    for k=1:100&lt;br /&gt;
        g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
        a_k=2*h*w'*g;&lt;br /&gt;
        f_n(i,:)= f_n(i,:)+a_k.*uk(x,t(i),k);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
colormap jet &lt;br /&gt;
surf(x,t,f_n,'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_2(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al igual que en los casos anteriores, podemos ver que la solución alcanza la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Ahora, igual que para el problema original, vamos a ver cómo se comporta el flujo en este problema.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.7.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2));&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
duk=@(x,t,k) -k*pi.*cos(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
close all&lt;br /&gt;
&lt;br /&gt;
a=0; b=1;                    &lt;br /&gt;
x=linspace(a,b,100);&lt;br /&gt;
t=linspace(a,b,100);&lt;br /&gt;
N=length(x)-1;&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1);              &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
q0=@(t)0;&lt;br /&gt;
q1=@(t)0;&lt;br /&gt;
    for k=1:100&lt;br /&gt;
        g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
        a_k=2*h*w'*g;&lt;br /&gt;
        q0=@(t) q0(t)+a_k.*duk(0,t,k);&lt;br /&gt;
        q1=@(t) q1(t)+a_k.*duk(1,t,k);&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,q0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,q1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Aislamiento de un extremo==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{3t}-u_{3xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_3(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_{3x}(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_3(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; v_3(x,t)=0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Solucion &amp;lt;math&amp;gt; u_3(x,t)=\sum_{k=1}^\infty c_k\sin((k+\frac{1}{2})\pi x)e^{-(k+\frac{1}{2})^2\pi^2 t} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Solución fundamental=&lt;br /&gt;
&lt;br /&gt;
La llamada solución fundamental de la ecuación del calor es la solución correspondiente a la condición inicial de un punto donde se concentra todo el calor.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
u_t - k u_{xx} = 0&amp;amp; (x, t) \in \mathbb{R} \times (0, \infty)\\&lt;br /&gt;
u(x,0)=\delta(x)&amp;amp;&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde ''&amp;lt;math&amp;gt;\delta&amp;lt;/math&amp;gt;'' es la función delta de Dirac, que vale 0 en todo punto menos en x, y su integral en toda la recta real es igual a 1. &lt;br /&gt;
&lt;br /&gt;
La solución a este problema es la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\Phi(x,t)=\frac{1}{\sqrt{4\pi kt}}\exp\left(-\frac{x^2}{4kt}\right).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.8.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Parámetros&lt;br /&gt;
k = 1;  % Coeficiente de conductividad&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
t = linspace(10^-2, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Inicialización de la matriz de soluciones&lt;br /&gt;
u = zeros(length(x), length(t));&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución fundamental&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
    u(:, i) = 1/sqrt(4 * pi * k * t(i)) * exp(-x.^2 / (4 * k * t(i)));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
colormap jet;&lt;br /&gt;
surf(x, t, u', 'FaceColor', 'interp');&lt;br /&gt;
title('Solución Fundamental de la Ecuación del Calor');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('t');&lt;br /&gt;
zlabel('Temperatura (u(x, t))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ANIMACIÓN:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
    u = 1/sqrt(4 * pi * k * t(i)) * exp(-x.^2 / (4 * k * t(i)));&lt;br /&gt;
&lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y la etiqueta&lt;br /&gt;
    title(['Evolución de la Temperatura (t = ' num2str(t(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 3]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.08);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
De manera análoga, podemos extender la solución a dos dimensiones espaciales: \Phi(x,t) = \frac{1}{4 \pi k t} \exp\left(-\frac{x^2 + y^2}{4 k t}\right)&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
k = 1;  % Difusividad térmica&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos en x y y&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
y = linspace(-1, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear una malla 2D&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Tiempos para la animación&lt;br /&gt;
t_values = linspace(0.001, 0.1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución fundamental en 2D&lt;br /&gt;
    u = 1/(4 * pi * k * t_values(i)) * exp(-(X.^2 + Y.^2) / (4 * k * t_values(i)));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    surf(X, Y, u, 'EdgeColor', 'none');&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución Fundamental en 2D (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición x');&lt;br /&gt;
    ylabel('Posición y');&lt;br /&gt;
    zlabel('Temperatura u(x, y, t)');&lt;br /&gt;
&lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    zlim([0, 20]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.2);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Soluciones autosemejantes==&lt;br /&gt;
&lt;br /&gt;
Lo bueno que tiene la solución fundamental es que no hemos tenido que restringirla a una región acotada del espacio, sino que es solución para todo &amp;lt;math&amp;gt; x \in \mathbb{R} &amp;lt;/math&amp;gt;. No estaría de más preguntarse si existen otras soluciones con esta propiedad.&lt;br /&gt;
La solución fundamental tiene la propiedad de ser autosemejante, es decir, su gráfica al variar el tiempo mantiene siempre la misma forma (una gaussiana).&lt;br /&gt;
&lt;br /&gt;
Podemos buscar otras soluciones con esta propiedad considerando el cambio de variable &amp;lt;math&amp;gt;\xi=\frac{x}{\sqrt{t}}&amp;lt;/math&amp;gt;. Se comprueba que esta combinación de variables es invariante respecto de dilataciones parabólicas y además no tiene dimensión (PÁG 44 DEL LIBRO).&lt;br /&gt;
&lt;br /&gt;
Imponemos que la función de una variable &amp;lt;math&amp;gt; U(\xi) &amp;lt;/math&amp;gt; cumpla la EDP, y llegamos a la EDO:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U'(\xi)+\frac{1}{2}U(\xi)=B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cuya solución, deshaciendo el cambio de variable, es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U(\frac{x}{\sqrt{t}})=Ae^{-{\frac{x}{2\sqrt{t}}}}+2B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
con &amp;lt;math&amp;gt; A,B &amp;lt;/math&amp;gt; constantes a determinar. Para ello, consideraremos las siguientes restricciones, que involucran una región espacial no acotada: &amp;lt;math&amp;gt; x&amp;gt;0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
&amp;amp;u(0, t) = 1 \\&lt;br /&gt;
&amp;amp;u(x, 0) = 0\\&lt;br /&gt;
&amp;amp;lim_{x \to \infty } u(x,t)=0&lt;br /&gt;
\end{aligned}&lt;br /&gt;
\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con las que obtenemos &amp;lt;math&amp;gt; A=1 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B=0 &amp;lt;/math&amp;gt;, y por tanto la solución a este problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=e^{-{\frac{x}{2\sqrt{t}}}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Definir el intervalo espacial&lt;br /&gt;
x = linspace(0, 5, 100);&lt;br /&gt;
&lt;br /&gt;
% Definir el intervalo de tiempo&lt;br /&gt;
t_values = linspace(0.01, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución&lt;br /&gt;
    u = exp(-x / (2 * sqrt(t_values(i))));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución de la Ecuación del Calor (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.1);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==La convolución==&lt;br /&gt;
&lt;br /&gt;
Otra forma de obtener soluciones de la ecuación del calor es usando la solución fundamental &amp;lt;math&amp;gt; \Phi(x,t) &amp;lt;/math&amp;gt; y aplicando una [https://es.wikipedia.org/wiki/Convoluci%C3%B3n convolución].&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; u(x,t) = \int_{-\infty}^{\infty} \Phi(x-y,t) u_0(y) dy&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; es el dato inicial, es decir, &amp;lt;math&amp;gt; u(x,0) = u_0(x) &amp;lt;/math&amp;gt; para &amp;lt;math&amp;gt; x \in \mathbb{R} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hemos visto antes que la solución fundamental representaba la respuesta del sistema a un impulso unitario (delta de Dirac) en un punto y en un instante de tiempo.&lt;br /&gt;
&lt;br /&gt;
Intuitivamente, la convolución realiza una integración ponderada de las contribuciones locales del dato inicial en cada punto y momento, proporcionando así la evolución completa de la temperatura de acuerdo con la ecuación del calor.&lt;br /&gt;
&lt;br /&gt;
Para ilustrarlo, vemos qué forma tiene la solución para el dato incial: &amp;lt;math&amp;gt; u_0(x) = 1_{[-1,1]} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Falta cambiar el comando integral() por el de trapecio)&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
k = 1;  % Difusividad térmica&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-3, 3, 100);&lt;br /&gt;
t_values = linspace(0.0005, 0.3, 100);&lt;br /&gt;
&lt;br /&gt;
% Función dato inicial&lt;br /&gt;
f = @(x) double(x &amp;gt;= -1 &amp;amp; x &amp;lt;= 1);&lt;br /&gt;
&lt;br /&gt;
% Solución fundamental&lt;br /&gt;
G = @(x, t) 1/sqrt(4 * pi * k * t) * exp(-x.^2 / (4 * k * t));&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la convolución&lt;br /&gt;
    u = zeros(size(x));&lt;br /&gt;
    for j = 1:length(x)&lt;br /&gt;
        integrand = @(y) G(x(j) - y, t_values(i)) .* f(y);&lt;br /&gt;
        u(j) = integral(integrand, -inf, inf);&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y la etiqueta&lt;br /&gt;
    title(['Evolución de la Temperatura (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1.1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.01);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=69352</id>
		<title>Ecuación del calor (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=69352"/>
				<updated>2024-03-06T13:14:12Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Solución fundamental */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar la ecuación del calor en una dimensión mediante el estudio de una varilla metálica de longitud 1 y que se encuentra aislada por su superficie lateral, es decir, la conducción de calor solo se produce en la dirección longitudinal. Además, vamos a ver cómo varía la solución en función de la variación de distintos parámatros como las condiciones iniciales o el coeficiente de difusión.&lt;br /&gt;
&lt;br /&gt;
=Preliminares=&lt;br /&gt;
&lt;br /&gt;
Antes de empezar a desarrollar el problema necesitamos conocer algunos conceptos que nos van a permitir modelizarlo y sacar sus ecuaciones.&lt;br /&gt;
&lt;br /&gt;
* La '''ley de Fourier''' establece que el flujo de transferencia de calor es proporcional y de sentido contrario al gradiente de temperatura en esa dirección.&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; q=-k\nabla u &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Siendo k la conductividad térmica.&lt;br /&gt;
&lt;br /&gt;
*Conservación de la energía.&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
=Problema original=&lt;br /&gt;
En este primer apartado, vamos a suponer que la temperatura inicial de la varilla es 0ºC y que en el extremo izquierdo se consigue mantener la temperatura a 0ºC mientras que en el derecho la temperatura es siempre de 1ºC. Teniendo esto en cuenta y los conceptos desarrollados en el apartado anterior, el sistema de ecuaciones que representa el problema es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_t-u_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Homogeneización==&lt;br /&gt;
&lt;br /&gt;
Antes de empezar con la resolución del problema vamos a homogeneizar las condiciones de contorno. Para hacer esto vamos a restarle al problema la solución estacionaria, es decir, la que permanece invariante respecto al tiempo. Esto implica que &amp;lt;math&amp;gt; u_t\sim 0 &amp;lt;/math&amp;gt; y que &amp;lt;math&amp;gt; u(x,t)\sim v(x) &amp;lt;/math&amp;gt;. Por lo que el problema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
v_{xx}=0 &amp;amp; x\in(0,1)\\&lt;br /&gt;
v(0)=0\\&lt;br /&gt;
v(1)=1\\&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución de este problema, y por tanto la solución estacionaria es: &amp;lt;math&amp;gt; v(x)=x &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.1.jpg|400px|thumb|right|Solución estacionaria]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
v=@(x,t) x;&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(v, [0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('v(x)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la solución estacionaria, tomamos &amp;lt;math&amp;gt; w(x,t)=u(x,t)-v(x) &amp;lt;/math&amp;gt; y vemos como queda el problema homogeneizado para &amp;lt;math&amp;gt; w(x,t)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
w_t-w_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
w(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(x,0)=-x&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Una vez homogeneizado el sistema podemos empezar a buscar la solución por el método de separación de variables, en el cual vamos a suponer que la solución es de la forma: &amp;lt;math&amp;gt; w(x,t)=X(x)T(t) &amp;lt;/math&amp;gt;. Como &amp;lt;math&amp;gt;w(x,t)&amp;lt;/math&amp;gt; es solución obtenemos que se tiene que cumplir &amp;lt;math&amp;gt;\frac{X''(x)}{X(x)}=\frac{T'(t)}{T(t)}=\lambda_k&amp;lt;/math&amp;gt; dando lugar a la resolución de dos problemas por separado, uno que depende de &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt; y otro que depende de &amp;lt;math&amp;gt; t&amp;lt;/math&amp;gt;. Al solucionar ambos problemas obtenemos el siguiente resultado: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para que &amp;lt;math&amp;gt; w(x,t) &amp;lt;/math&amp;gt; sea solución de nuestro problema, solo falta ver que cumpla la condición incial, es decir, que &amp;lt;math&amp;gt; w(x,0)=c_k\sin(k\pi x)=-x &amp;lt;/math&amp;gt;. De esta igualdad sacamos que si extendemos la función &amp;lt;math&amp;gt; -x &amp;lt;/math&amp;gt; de forma impar los coeficientes &amp;lt;math&amp;gt; c_k&amp;lt;/math&amp;gt; van a ser los coeficiente de la [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) serie de Fourier]. Por tanto, la solución queda de la siguiente manera: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta función es la solución del problema homogeneizado, por lo que para obtener la solución del problema original tenemos que deshacer el cambio de variable. La solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}+x&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a graficar los 10 primeros términos de la serie en &amp;lt;math&amp;gt; t \in [0,1]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.2c.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
close all&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&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;
En la gráfica podemos observar que la solución del poblema alcanza la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Por la ley de Fourier sabemos que &amp;lt;math&amp;gt; q=-k u_x &amp;lt;/math&amp;gt;, siendo q el flujo. Por lo que para interpretar como es el flujo en nuestro problema, vamos a graficar como es en los extremos suponiendo que &amp;lt;math&amp;gt; k=1 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.3.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos la función &lt;br /&gt;
dwi=@(x,t,k) (2*(-1)^(k+1)).*cos(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
dv=@(x) 1;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
dw0=@(t) 0;&lt;br /&gt;
dw1=@(t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    dw0=@(t) dw0(t) + dwi(0,t,n);&lt;br /&gt;
    dw1=@(t) dw1(t) + dwi(1,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
du0=@(t) dw0(t)-dv(0);&lt;br /&gt;
du1=@(t) dw1(t)-dv(1);&lt;br /&gt;
&lt;br /&gt;
% Gráfica &lt;br /&gt;
close all&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,du0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,du1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al observar la gráfica en el extremo izquierdo vemos que al principio no hay flujo debido a que tanto la barra como el extremo están a 0º. Una vez avanza el tiempo el flujo va siendo cada vez más negativo lo que implica que cada vez sale más flujo por el extremo izquierdo. Esto tiene sentido ya que como la barra se va calentando, como podemos ver en la gráfica de la solución, y el extremo se mantiene a 0º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor.&lt;br /&gt;
&lt;br /&gt;
Por el contrario, en la gráfica del extremos derecho podemos observar que inicialmente hay mucho flujo hacia el interior de la barra debido a que la barra está a 0º y el extremo a 1º. Una vez avanza el tiempo el flujo va siendo cada vez menos negativo lo que implica que cada vez entra menos flujo por el extremo derecho. Esto es coherente ya que como la barra se va calentando, y el extremo se mantiene a 1º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor como hemos mencionado antes.&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas, cabe destacar dos aspectos característicos:&lt;br /&gt;
* Lo primero que cabe preguntarse es por qué cuando en la gráfica hay una gran variación del flujo, en el extremo izquierdo desciende más moderadamente, y en el extremo derecho asciende drásticamente. Esto se debe a que en el extremo izquierdo la diferencia de temperatura entre dos puntos cercanos es menor que en el derecho, cosa que podemos observar en la gráfica de la solución.&lt;br /&gt;
* También llama la atención que ambas gráficas se acaban estabilizando en un flujo de -1, este punto coincide con el punto en el que la solución alcanza la solución estacionaria, por lo que tiene sentido que el flujo en ambos extremos se estabilice en el mismo valor.&lt;br /&gt;
&lt;br /&gt;
=Variación coeficiente de conductividad=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a ver como varia la solución cuando variamos el coeficiente de conductividad térmica de 1 a 1/2. Con este coeficiente el sistema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{1t}-\frac{1}{2}u_{1xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_1(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendolo de la misma forma que el anterior obtenemos que la solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u_1(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{\frac{-k^2\pi^2 t}{2}}+x,&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y que la estacionaria no varía &amp;lt;math&amp;gt; v_1(x)=x &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gf2.4b.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
close all&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_1(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Aunque a primera vista pueda parecer igual que la solución del problema original, si nos fijamos bien podemos observar que esta tarda más en alcanzar la solución estacionaria ya que esta curvada en un mayor intervalo, esto tiene sentido por tener un coeficiente de conductividad menor.&lt;br /&gt;
&lt;br /&gt;
Ahora para apreciar mejor la diferencia vamos a representar ambas soluciones restándoles la estacionaria en x=1/2.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.5.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi1=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
wi2=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w1=@(x,t) 0;&lt;br /&gt;
w2=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w1=@(x,t) w1(x,t) + wi1(x,t,n);&lt;br /&gt;
    w2=@(x,t) w2(x,t) + wi2(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
u1=@(x,t) w1(x,t)+v(x);&lt;br /&gt;
u2=@(x,t) w2(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
%Hacemos la diferencia con la solución estacionaria&lt;br /&gt;
dif1=@(t) u1(0.5,t)-v(0.5);&lt;br /&gt;
dif2=@(t) u2(0.5,t)-v(0.5);&lt;br /&gt;
&lt;br /&gt;
% Gráfica &lt;br /&gt;
close all&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,dif1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,dif2(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1/2')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En estas gráficas podemos apreciar mejor que efectivamente esta solución tarda más en alcanzar la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
=Variación de las condiciones de frontera y las iniciales=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a variar las condiciones de frontera y la inicial y a ver cómo varía la solución. El problema que vamos a estudiar ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{2t}-u_{2xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_2(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Resolviendo este problema de la misma forma que los anteriores, obtenemos que la solución estacionaria &amp;lt;math&amp;gt; v_2(x)=0 &amp;lt;/math&amp;gt; y que la solución es: &amp;lt;math&amp;gt; u_2(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;. A diferencia de en los otros casos los &amp;lt;math&amp;gt;c_k&amp;lt;/math&amp;gt; los vamos a calcular aproximando las integrales por el [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals método del trapecio]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.6.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2));&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
close all&lt;br /&gt;
&lt;br /&gt;
a=0; b=1;                    &lt;br /&gt;
x=linspace(a,b,100);&lt;br /&gt;
t=linspace(a,b,100);&lt;br /&gt;
N=length(x)-1;&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1);              &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
f_n=zeros(length(x),length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    for k=1:100&lt;br /&gt;
        g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
        a_k=2*h*w'*g;&lt;br /&gt;
        f_n(i,:)= f_n(i,:)+a_k.*uk(x,t(i),k);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
colormap jet &lt;br /&gt;
surf(x,t,f_n,'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_2(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al igual que en los casos anteriores, podemos ver que la solución alcanza la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Ahora, igual que para el problema original, vamos a ver cómo se comporta el flujo en este problema.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.7.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2));&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
duk=@(x,t,k) -k*pi.*cos(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
close all&lt;br /&gt;
&lt;br /&gt;
a=0; b=1;                    &lt;br /&gt;
x=linspace(a,b,100);&lt;br /&gt;
t=linspace(a,b,100);&lt;br /&gt;
N=length(x)-1;&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1);              &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
q0=@(t)0;&lt;br /&gt;
q1=@(t)0;&lt;br /&gt;
    for k=1:100&lt;br /&gt;
        g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
        a_k=2*h*w'*g;&lt;br /&gt;
        q0=@(t) q0(t)+a_k.*duk(0,t,k);&lt;br /&gt;
        q1=@(t) q1(t)+a_k.*duk(1,t,k);&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,q0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,q1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Aislamiento de un extremo==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{3t}-u_{3xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_3(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_{3x}(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_3(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; v_3(x,t)=0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Solucion &amp;lt;math&amp;gt; u_3(x,t)=\sum_{k=1}^\infty c_k\sin((k+\frac{1}{2})\pi x)e^{-(k+\frac{1}{2})^2\pi^2 t} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Solución fundamental=&lt;br /&gt;
&lt;br /&gt;
La llamada solución fundamental de la ecuación del calor es la solución correspondiente a la condición inicial de un punto donde se concentra todo el calor.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
u_t - k u_{xx} = 0&amp;amp; (x, t) \in \mathbb{R} \times (0, \infty)\\&lt;br /&gt;
u(x,0)=\delta(x)&amp;amp;&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde ''&amp;lt;math&amp;gt;\delta&amp;lt;/math&amp;gt;'' es la función delta de Dirac, que vale 0 en todo punto menos en x, y su integral en toda la recta real es igual a 1. &lt;br /&gt;
&lt;br /&gt;
La solución a este problema es la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\Phi(x,t)=\frac{1}{\sqrt{4\pi kt}}\exp\left(-\frac{x^2}{4kt}\right).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.8.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Parámetros&lt;br /&gt;
k = 1;  % Coeficiente de conductividad&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
t = linspace(10^-2, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Inicialización de la matriz de soluciones&lt;br /&gt;
u = zeros(length(x), length(t));&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución fundamental&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
    u(:, i) = 1/sqrt(4 * pi * k * t(i)) * exp(-x.^2 / (4 * k * t(i)));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
colormap jet;&lt;br /&gt;
surf(x, t, u', 'FaceColor', 'interp');&lt;br /&gt;
title('Solución Fundamental de la Ecuación del Calor');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('t');&lt;br /&gt;
zlabel('Temperatura (u(x, t))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ANIMACIÓN:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
    u = 1/sqrt(4 * pi * k * t(i)) * exp(-x.^2 / (4 * k * t(i)));&lt;br /&gt;
&lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y la etiqueta&lt;br /&gt;
    title(['Evolución de la Temperatura (t = ' num2str(t(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 3]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.08);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
De manera análoga, podemos extender la solución a dos dimensiones espaciales,&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
k = 1;  % Difusividad térmica&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos en x y y&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
y = linspace(-1, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear una malla 2D&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Tiempos para la animación&lt;br /&gt;
t_values = linspace(0.001, 0.1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución fundamental en 2D&lt;br /&gt;
    u = 1/(4 * pi * k * t_values(i)) * exp(-(X.^2 + Y.^2) / (4 * k * t_values(i)));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    surf(X, Y, u, 'EdgeColor', 'none');&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución Fundamental en 2D (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición x');&lt;br /&gt;
    ylabel('Posición y');&lt;br /&gt;
    zlabel('Temperatura u(x, y, t)');&lt;br /&gt;
&lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    zlim([0, 20]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.2);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Soluciones autosemejantes==&lt;br /&gt;
&lt;br /&gt;
Lo bueno que tiene la solución fundamental es que no hemos tenido que restringirla a una región acotada del espacio, sino que es solución para todo &amp;lt;math&amp;gt; x \in \mathbb{R} &amp;lt;/math&amp;gt;. No estaría de más preguntarse si existen otras soluciones con esta propiedad.&lt;br /&gt;
La solución fundamental tiene la propiedad de ser autosemejante, es decir, su gráfica al variar el tiempo mantiene siempre la misma forma (una gaussiana).&lt;br /&gt;
&lt;br /&gt;
Podemos buscar otras soluciones con esta propiedad considerando el cambio de variable &amp;lt;math&amp;gt;\xi=\frac{x}{\sqrt{t}}&amp;lt;/math&amp;gt;. Se comprueba que esta combinación de variables es invariante respecto de dilataciones parabólicas y además no tiene dimensión (PÁG 44 DEL LIBRO).&lt;br /&gt;
&lt;br /&gt;
Imponemos que la función de una variable &amp;lt;math&amp;gt; U(\xi) &amp;lt;/math&amp;gt; cumpla la EDP, y llegamos a la EDO:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U'(\xi)+\frac{1}{2}U(\xi)=B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cuya solución, deshaciendo el cambio de variable, es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U(\frac{x}{\sqrt{t}})=Ae^{-{\frac{x}{2\sqrt{t}}}}+2B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
con &amp;lt;math&amp;gt; A,B &amp;lt;/math&amp;gt; constantes a determinar. Para ello, consideraremos las siguientes restricciones, que involucran una región espacial no acotada: &amp;lt;math&amp;gt; x&amp;gt;0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
&amp;amp;u(0, t) = 1 \\&lt;br /&gt;
&amp;amp;u(x, 0) = 0\\&lt;br /&gt;
&amp;amp;lim_{x \to \infty } u(x,t)=0&lt;br /&gt;
\end{aligned}&lt;br /&gt;
\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con las que obtenemos &amp;lt;math&amp;gt; A=1 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B=0 &amp;lt;/math&amp;gt;, y por tanto la solución a este problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=e^{-{\frac{x}{2\sqrt{t}}}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Definir el intervalo espacial&lt;br /&gt;
x = linspace(0, 5, 100);&lt;br /&gt;
&lt;br /&gt;
% Definir el intervalo de tiempo&lt;br /&gt;
t_values = linspace(0.01, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución&lt;br /&gt;
    u = exp(-x / (2 * sqrt(t_values(i))));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución de la Ecuación del Calor (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.1);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==La convolución==&lt;br /&gt;
&lt;br /&gt;
Otra forma de obtener soluciones de la ecuación del calor es usando la solución fundamental &amp;lt;math&amp;gt; \Phi(x,t) &amp;lt;/math&amp;gt; y aplicando una [https://es.wikipedia.org/wiki/Convoluci%C3%B3n convolución].&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; u(x,t) = \int_{-\infty}^{\infty} \Phi(x-y,t) u_0(y) dy&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; es el dato inicial, es decir, &amp;lt;math&amp;gt; u(x,0) = u_0(x) &amp;lt;/math&amp;gt; para &amp;lt;math&amp;gt; x \in \mathbb{R} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hemos visto antes que la solución fundamental representaba la respuesta del sistema a un impulso unitario (delta de Dirac) en un punto y en un instante de tiempo.&lt;br /&gt;
&lt;br /&gt;
Intuitivamente, la convolución realiza una integración ponderada de las contribuciones locales del dato inicial en cada punto y momento, proporcionando así la evolución completa de la temperatura de acuerdo con la ecuación del calor.&lt;br /&gt;
&lt;br /&gt;
Para ilustrarlo, vemos qué forma tiene la solución para el dato incial: &amp;lt;math&amp;gt; u_0(x) = 1_{[-1,1]} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Falta cambiar el comando integral() por el de trapecio)&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
k = 1;  % Difusividad térmica&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-3, 3, 100);&lt;br /&gt;
t_values = linspace(0.0005, 0.3, 100);&lt;br /&gt;
&lt;br /&gt;
% Función dato inicial&lt;br /&gt;
f = @(x) double(x &amp;gt;= -1 &amp;amp; x &amp;lt;= 1);&lt;br /&gt;
&lt;br /&gt;
% Solución fundamental&lt;br /&gt;
G = @(x, t) 1/sqrt(4 * pi * k * t) * exp(-x.^2 / (4 * k * t));&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la convolución&lt;br /&gt;
    u = zeros(size(x));&lt;br /&gt;
    for j = 1:length(x)&lt;br /&gt;
        integrand = @(y) G(x(j) - y, t_values(i)) .* f(y);&lt;br /&gt;
        u(j) = integral(integrand, -inf, inf);&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y la etiqueta&lt;br /&gt;
    title(['Evolución de la Temperatura (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1.1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.01);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=69347</id>
		<title>Ecuación del calor (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=69347"/>
				<updated>2024-03-06T13:06:05Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* La convolución */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar la ecuación del calor en una dimensión mediante el estudio de una varilla metálica de longitud 1 y que se encuentra aislada por su superficie lateral, es decir, la conducción de calor solo se produce en la dirección longitudinal. Además, vamos a ver cómo varía la solución en función de la variación de distintos parámatros como las condiciones iniciales o el coeficiente de difusión.&lt;br /&gt;
&lt;br /&gt;
=Preliminares=&lt;br /&gt;
&lt;br /&gt;
Antes de empezar a desarrollar el problema necesitamos conocer algunos conceptos que nos van a permitir modelizarlo y sacar sus ecuaciones.&lt;br /&gt;
&lt;br /&gt;
* La '''ley de Fourier''' establece que el flujo de transferencia de calor es proporcional y de sentido contrario al gradiente de temperatura en esa dirección.&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; q=-k\nabla u &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Siendo k la conductividad térmica.&lt;br /&gt;
&lt;br /&gt;
*Conservación de la energía.&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
=Problema original=&lt;br /&gt;
En este primer apartado, vamos a suponer que la temperatura inicial de la varilla es 0ºC y que en el extremo izquierdo se consigue mantener la temperatura a 0ºC mientras que en el derecho la temperatura es siempre de 1ºC. Teniendo esto en cuenta y los conceptos desarrollados en el apartado anterior, el sistema de ecuaciones que representa el problema es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_t-u_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Homogeneización==&lt;br /&gt;
&lt;br /&gt;
Antes de empezar con la resolución del problema vamos a homogeneizar las condiciones de contorno. Para hacer esto vamos a restarle al problema la solución estacionaria, es decir, la que permanece invariante respecto al tiempo. Esto implica que &amp;lt;math&amp;gt; u_t\sim 0 &amp;lt;/math&amp;gt; y que &amp;lt;math&amp;gt; u(x,t)\sim v(x) &amp;lt;/math&amp;gt;. Por lo que el problema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
v_{xx}=0 &amp;amp; x\in(0,1)\\&lt;br /&gt;
v(0)=0\\&lt;br /&gt;
v(1)=1\\&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución de este problema, y por tanto la solución estacionaria es: &amp;lt;math&amp;gt; v(x)=x &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.1.jpg|400px|thumb|right|Solución estacionaria]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
v=@(x,t) x;&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(v, [0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('v(x)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la solución estacionaria, tomamos &amp;lt;math&amp;gt; w(x,t)=u(x,t)-v(x) &amp;lt;/math&amp;gt; y vemos como queda el problema homogeneizado para &amp;lt;math&amp;gt; w(x,t)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
w_t-w_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
w(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(x,0)=-x&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Una vez homogeneizado el sistema podemos empezar a buscar la solución por el método de separación de variables, en el cual vamos a suponer que la solución es de la forma: &amp;lt;math&amp;gt; w(x,t)=X(x)T(t) &amp;lt;/math&amp;gt;. Como &amp;lt;math&amp;gt;w(x,t)&amp;lt;/math&amp;gt; es solución obtenemos que se tiene que cumplir &amp;lt;math&amp;gt;\frac{X''(x)}{X(x)}=\frac{T'(t)}{T(t)}=\lambda_k&amp;lt;/math&amp;gt; dando lugar a la resolución de dos problemas por separado, uno que depende de &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt; y otro que depende de &amp;lt;math&amp;gt; t&amp;lt;/math&amp;gt;. Al solucionar ambos problemas obtenemos el siguiente resultado: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para que &amp;lt;math&amp;gt; w(x,t) &amp;lt;/math&amp;gt; sea solución de nuestro problema, solo falta ver que cumpla la condición incial, es decir, que &amp;lt;math&amp;gt; w(x,0)=c_k\sin(k\pi x)=-x &amp;lt;/math&amp;gt;. De esta igualdad sacamos que si extendemos la función &amp;lt;math&amp;gt; -x &amp;lt;/math&amp;gt; de forma impar los coeficientes &amp;lt;math&amp;gt; c_k&amp;lt;/math&amp;gt; van a ser los coeficiente de la [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) serie de Fourier]. Por tanto, la solución queda de la siguiente manera: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta función es la solución del problema homogeneizado, por lo que para obtener la solución del problema original tenemos que deshacer el cambio de variable. La solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}+x&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a graficar los 10 primeros términos de la serie en &amp;lt;math&amp;gt; t \in [0,1]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.2c.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
close all&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&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;
En la gráfica podemos observar que la solución del poblema alcanza la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Por la ley de Fourier sabemos que &amp;lt;math&amp;gt; q=-k u_x &amp;lt;/math&amp;gt;, siendo q el flujo. Por lo que para interpretar como es el flujo en nuestro problema, vamos a graficar como es en los extremos suponiendo que &amp;lt;math&amp;gt; k=1 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.3.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos la función &lt;br /&gt;
dwi=@(x,t,k) (2*(-1)^(k+1)).*cos(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
dv=@(x) 1;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
dw0=@(t) 0;&lt;br /&gt;
dw1=@(t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    dw0=@(t) dw0(t) + dwi(0,t,n);&lt;br /&gt;
    dw1=@(t) dw1(t) + dwi(1,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
du0=@(t) dw0(t)-dv(0);&lt;br /&gt;
du1=@(t) dw1(t)-dv(1);&lt;br /&gt;
&lt;br /&gt;
% Gráfica &lt;br /&gt;
close all&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,du0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,du1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al observar la gráfica en el extremo izquierdo vemos que al principio no hay flujo debido a que tanto la barra como el extremo están a 0º. Una vez avanza el tiempo el flujo va siendo cada vez más negativo lo que implica que cada vez sale más flujo por el extremo izquierdo. Esto tiene sentido ya que como la barra se va calentando, como podemos ver en la gráfica de la solución, y el extremo se mantiene a 0º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor.&lt;br /&gt;
&lt;br /&gt;
Por el contrario, en la gráfica del extremos derecho podemos observar que inicialmente hay mucho flujo hacia el interior de la barra debido a que la barra está a 0º y el extremo a 1º. Una vez avanza el tiempo el flujo va siendo cada vez menos negativo lo que implica que cada vez entra menos flujo por el extremo derecho. Esto es coherente ya que como la barra se va calentando, y el extremo se mantiene a 1º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor como hemos mencionado antes.&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas, cabe destacar dos aspectos característicos:&lt;br /&gt;
* Lo primero que cabe preguntarse es por qué cuando en la gráfica hay una gran variación del flujo, en el extremo izquierdo desciende más moderadamente, y en el extremo derecho asciende drásticamente. Esto se debe a que en el extremo izquierdo la diferencia de temperatura entre dos puntos cercanos es menor que en el derecho, cosa que podemos observar en la gráfica de la solución.&lt;br /&gt;
* También llama la atención que ambas gráficas se acaban estabilizando en un flujo de -1, este punto coincide con el punto en el que la solución alcanza la solución estacionaria, por lo que tiene sentido que el flujo en ambos extremos se estabilice en el mismo valor.&lt;br /&gt;
&lt;br /&gt;
=Variación coeficiente de conductividad=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a ver como varia la solución cuando variamos el coeficiente de conductividad térmica de 1 a 1/2. Con este coeficiente el sistema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{1t}-\frac{1}{2}u_{1xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_1(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendolo de la misma forma que el anterior obtenemos que la solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u_1(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{\frac{-k^2\pi^2 t}{2}}+x,&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y que la estacionaria no varía &amp;lt;math&amp;gt; v_1(x)=x &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gf2.4b.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
close all&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_1(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Aunque a primera vista pueda parecer igual que la solución del problema original, si nos fijamos bien podemos observar que esta tarda más en alcanzar la solución estacionaria ya que esta curvada en un mayor intervalo, esto tiene sentido por tener un coeficiente de conductividad menor.&lt;br /&gt;
&lt;br /&gt;
Ahora para apreciar mejor la diferencia vamos a representar ambas soluciones restándoles la estacionaria en x=1/2.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.5.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi1=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
wi2=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w1=@(x,t) 0;&lt;br /&gt;
w2=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w1=@(x,t) w1(x,t) + wi1(x,t,n);&lt;br /&gt;
    w2=@(x,t) w2(x,t) + wi2(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
u1=@(x,t) w1(x,t)+v(x);&lt;br /&gt;
u2=@(x,t) w2(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
%Hacemos la diferencia con la solución estacionaria&lt;br /&gt;
dif1=@(t) u1(0.5,t)-v(0.5);&lt;br /&gt;
dif2=@(t) u2(0.5,t)-v(0.5);&lt;br /&gt;
&lt;br /&gt;
% Gráfica &lt;br /&gt;
close all&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,dif1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,dif2(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1/2')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En estas gráficas podemos apreciar mejor que efectivamente esta solución tarda más en alcanzar la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
=Variación de las condiciones de frontera y las iniciales=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a variar las condiciones de frontera y la inicial y a ver cómo varía la solución. El problema que vamos a estudiar ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{2t}-u_{2xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_2(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Resolviendo este problema de la misma forma que los anteriores, obtenemos que la solución estacionaria &amp;lt;math&amp;gt; v_2(x)=0 &amp;lt;/math&amp;gt; y que la solución es: &amp;lt;math&amp;gt; u_2(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;. A diferencia de en los otros casos los &amp;lt;math&amp;gt;c_k&amp;lt;/math&amp;gt; los vamos a calcular aproximando las integrales por el [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals método del trapecio]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.6.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2));&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
close all&lt;br /&gt;
&lt;br /&gt;
a=0; b=1;                    &lt;br /&gt;
x=linspace(a,b,100);&lt;br /&gt;
t=linspace(a,b,100);&lt;br /&gt;
N=length(x)-1;&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1);              &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
f_n=zeros(length(x),length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    for k=1:100&lt;br /&gt;
        g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
        a_k=2*h*w'*g;&lt;br /&gt;
        f_n(i,:)= f_n(i,:)+a_k.*uk(x,t(i),k);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
colormap jet &lt;br /&gt;
surf(x,t,f_n,'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_2(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al igual que en los casos anteriores, podemos ver que la solución alcanza la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Ahora, igual que para el problema original, vamos a ver cómo se comporta el flujo en este problema.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.7.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2));&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
duk=@(x,t,k) -k*pi.*cos(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
close all&lt;br /&gt;
&lt;br /&gt;
a=0; b=1;                    &lt;br /&gt;
x=linspace(a,b,100);&lt;br /&gt;
t=linspace(a,b,100);&lt;br /&gt;
N=length(x)-1;&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1);              &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
q0=@(t)0;&lt;br /&gt;
q1=@(t)0;&lt;br /&gt;
    for k=1:100&lt;br /&gt;
        g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
        a_k=2*h*w'*g;&lt;br /&gt;
        q0=@(t) q0(t)+a_k.*duk(0,t,k);&lt;br /&gt;
        q1=@(t) q1(t)+a_k.*duk(1,t,k);&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,q0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,q1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Aislamiento de un extremo==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{3t}-u_{3xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_3(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_{3x}(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_3(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; v_3(x,t)=0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Solucion &amp;lt;math&amp;gt; u_3(x,t)=\sum_{k=1}^\infty c_k\sin((k+\frac{1}{2})\pi x)e^{-(k+\frac{1}{2})^2\pi^2 t} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Solución fundamental=&lt;br /&gt;
&lt;br /&gt;
La llamada solución fundamental de la ecuación del calor es la solución correspondiente a la condición inicial de un punto donde se concentra todo el calor.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
u_t - k u_{xx} = 0&amp;amp; (x, t) \in \mathbb{R} \times (0, \infty)\\&lt;br /&gt;
u(x,0)=\delta(x)&amp;amp;&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde ''&amp;lt;math&amp;gt;\delta&amp;lt;/math&amp;gt;'' es la función delta de Dirac, que vale 0 en todo punto menos en x, y su integral en toda la recta real es igual a 1. &lt;br /&gt;
&lt;br /&gt;
La solución a este problema es la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\Phi(x,t)=\frac{1}{\sqrt{4\pi kt}}\exp\left(-\frac{x^2}{4kt}\right).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.8.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Parámetros&lt;br /&gt;
k = 1;  % Coeficiente de conductividad&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
t = linspace(10^-2, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Inicialización de la matriz de soluciones&lt;br /&gt;
u = zeros(length(x), length(t));&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución fundamental&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
    u(:, i) = 1/sqrt(4 * pi * k * t(i)) * exp(-x.^2 / (4 * k * t(i)));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
colormap jet;&lt;br /&gt;
surf(x, t, u', 'FaceColor', 'interp');&lt;br /&gt;
title('Solución Fundamental de la Ecuación del Calor');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('t');&lt;br /&gt;
zlabel('Temperatura (u(x, t))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ANIMACIÓN:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
    u = 1/sqrt(4 * pi * k * t(i)) * exp(-x.^2 / (4 * k * t(i)));&lt;br /&gt;
&lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y la etiqueta&lt;br /&gt;
    title(['Evolución de la Temperatura (t = ' num2str(t(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 3]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.08);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Dimensión 2:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
k = 1;  % Difusividad térmica&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos en x y y&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
y = linspace(-1, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear una malla 2D&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Tiempos para la animación&lt;br /&gt;
t_values = linspace(0.001, 0.1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución fundamental en 2D&lt;br /&gt;
    u = 1/(4 * pi * k * t_values(i)) * exp(-(X.^2 + Y.^2) / (4 * k * t_values(i)));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    surf(X, Y, u, 'EdgeColor', 'none');&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución Fundamental en 2D (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición x');&lt;br /&gt;
    ylabel('Posición y');&lt;br /&gt;
    zlabel('Temperatura u(x, y, t)');&lt;br /&gt;
&lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    zlim([0, 20]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.2);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Soluciones autosemejantes==&lt;br /&gt;
&lt;br /&gt;
Lo bueno que tiene la solución fundamental es que no hemos tenido que restringirla a una región acotada del espacio, sino que es solución para todo &amp;lt;math&amp;gt; x \in \mathbb{R} &amp;lt;/math&amp;gt;. No estaría de más preguntarse si existen otras soluciones con esta propiedad.&lt;br /&gt;
La solución fundamental tiene la propiedad de ser autosemejante, es decir, su gráfica al variar el tiempo mantiene siempre la misma forma (una gaussiana).&lt;br /&gt;
&lt;br /&gt;
Podemos buscar otras soluciones con esta propiedad considerando el cambio de variable &amp;lt;math&amp;gt;\xi=\frac{x}{\sqrt{t}}&amp;lt;/math&amp;gt;. Se comprueba que esta combinación de variables es invariante respecto de dilataciones parabólicas y además no tiene dimensión (PÁG 44 DEL LIBRO).&lt;br /&gt;
&lt;br /&gt;
Imponemos que la función de una variable &amp;lt;math&amp;gt; U(\xi) &amp;lt;/math&amp;gt; cumpla la EDP, y llegamos a la EDO:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U'(\xi)+\frac{1}{2}U(\xi)=B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cuya solución, deshaciendo el cambio de variable, es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U(\frac{x}{\sqrt{t}})=Ae^{-{\frac{x}{2\sqrt{t}}}}+2B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
con &amp;lt;math&amp;gt; A,B &amp;lt;/math&amp;gt; constantes a determinar. Para ello, consideraremos las siguientes restricciones, que involucran una región espacial no acotada: &amp;lt;math&amp;gt; x&amp;gt;0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
&amp;amp;u(0, t) = 1 \\&lt;br /&gt;
&amp;amp;u(x, 0) = 0\\&lt;br /&gt;
&amp;amp;lim_{x \to \infty } u(x,t)=0&lt;br /&gt;
\end{aligned}&lt;br /&gt;
\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con las que obtenemos &amp;lt;math&amp;gt; A=1 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B=0 &amp;lt;/math&amp;gt;, y por tanto la solución a este problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=e^{-{\frac{x}{2\sqrt{t}}}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Definir el intervalo espacial&lt;br /&gt;
x = linspace(0, 5, 100);&lt;br /&gt;
&lt;br /&gt;
% Definir el intervalo de tiempo&lt;br /&gt;
t_values = linspace(0.01, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución&lt;br /&gt;
    u = exp(-x / (2 * sqrt(t_values(i))));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución de la Ecuación del Calor (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.1);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==La convolución==&lt;br /&gt;
&lt;br /&gt;
Otra forma de obtener soluciones de la ecuación del calor es usando la solución fundamental &amp;lt;math&amp;gt; \Phi(x,t) &amp;lt;/math&amp;gt; y aplicando una [https://es.wikipedia.org/wiki/Convoluci%C3%B3n convolución].&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; u(x,t) = \int_{-\infty}^{\infty} \Phi(x-y,t) u_0(y) dy&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; es el dato inicial, es decir, &amp;lt;math&amp;gt; u(x,0) = u_0(x) &amp;lt;/math&amp;gt; para &amp;lt;math&amp;gt; x \in \mathbb{R} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hemos visto antes que la solución fundamental representaba la respuesta del sistema a un impulso unitario (delta de Dirac) en un punto y en un instante de tiempo.&lt;br /&gt;
&lt;br /&gt;
Intuitivamente, la convolución realiza una integración ponderada de las contribuciones locales del dato inicial en cada punto y momento, proporcionando así la evolución completa de la temperatura de acuerdo con la ecuación del calor.&lt;br /&gt;
&lt;br /&gt;
Para ilustrarlo, vemos qué forma tiene la solución para el dato incial: &amp;lt;math&amp;gt; u_0(x) = 1_{[-1,1]} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Falta cambiar el comando integral() por el de trapecio)&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
k = 1;  % Difusividad térmica&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-3, 3, 100);&lt;br /&gt;
t_values = linspace(0.0005, 0.3, 100);&lt;br /&gt;
&lt;br /&gt;
% Función dato inicial&lt;br /&gt;
f = @(x) double(x &amp;gt;= -1 &amp;amp; x &amp;lt;= 1);&lt;br /&gt;
&lt;br /&gt;
% Solución fundamental&lt;br /&gt;
G = @(x, t) 1/sqrt(4 * pi * k * t) * exp(-x.^2 / (4 * k * t));&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la convolución&lt;br /&gt;
    u = zeros(size(x));&lt;br /&gt;
    for j = 1:length(x)&lt;br /&gt;
        integrand = @(y) G(x(j) - y, t_values(i)) .* f(y);&lt;br /&gt;
        u(j) = integral(integrand, -inf, inf);&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y la etiqueta&lt;br /&gt;
    title(['Evolución de la Temperatura (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1.1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.01);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=69346</id>
		<title>Ecuación del calor (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=69346"/>
				<updated>2024-03-06T13:04:19Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* La convolución */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar la ecuación del calor en una dimensión mediante el estudio de una varilla metálica de longitud 1 y que se encuentra aislada por su superficie lateral, es decir, la conducción de calor solo se produce en la dirección longitudinal. Además, vamos a ver cómo varía la solución en función de la variación de distintos parámatros como las condiciones iniciales o el coeficiente de difusión.&lt;br /&gt;
&lt;br /&gt;
=Preliminares=&lt;br /&gt;
&lt;br /&gt;
Antes de empezar a desarrollar el problema necesitamos conocer algunos conceptos que nos van a permitir modelizarlo y sacar sus ecuaciones.&lt;br /&gt;
&lt;br /&gt;
* La '''ley de Fourier''' establece que el flujo de transferencia de calor es proporcional y de sentido contrario al gradiente de temperatura en esa dirección.&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; q=-k\nabla u &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Siendo k la conductividad térmica.&lt;br /&gt;
&lt;br /&gt;
*Conservación de la energía.&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
=Problema original=&lt;br /&gt;
En este primer apartado, vamos a suponer que la temperatura inicial de la varilla es 0ºC y que en el extremo izquierdo se consigue mantener la temperatura a 0ºC mientras que en el derecho la temperatura es siempre de 1ºC. Teniendo esto en cuenta y los conceptos desarrollados en el apartado anterior, el sistema de ecuaciones que representa el problema es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_t-u_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Homogeneización==&lt;br /&gt;
&lt;br /&gt;
Antes de empezar con la resolución del problema vamos a homogeneizar las condiciones de contorno. Para hacer esto vamos a restarle al problema la solución estacionaria, es decir, la que permanece invariante respecto al tiempo. Esto implica que &amp;lt;math&amp;gt; u_t\sim 0 &amp;lt;/math&amp;gt; y que &amp;lt;math&amp;gt; u(x,t)\sim v(x) &amp;lt;/math&amp;gt;. Por lo que el problema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
v_{xx}=0 &amp;amp; x\in(0,1)\\&lt;br /&gt;
v(0)=0\\&lt;br /&gt;
v(1)=1\\&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución de este problema, y por tanto la solución estacionaria es: &amp;lt;math&amp;gt; v(x)=x &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.1.jpg|400px|thumb|right|Solución estacionaria]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
v=@(x,t) x;&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(v, [0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('v(x)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la solución estacionaria, tomamos &amp;lt;math&amp;gt; w(x,t)=u(x,t)-v(x) &amp;lt;/math&amp;gt; y vemos como queda el problema homogeneizado para &amp;lt;math&amp;gt; w(x,t)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
w_t-w_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
w(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(x,0)=-x&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Una vez homogeneizado el sistema podemos empezar a buscar la solución por el método de separación de variables, en el cual vamos a suponer que la solución es de la forma: &amp;lt;math&amp;gt; w(x,t)=X(x)T(t) &amp;lt;/math&amp;gt;. Como &amp;lt;math&amp;gt;w(x,t)&amp;lt;/math&amp;gt; es solución obtenemos que se tiene que cumplir &amp;lt;math&amp;gt;\frac{X''(x)}{X(x)}=\frac{T'(t)}{T(t)}=\lambda_k&amp;lt;/math&amp;gt; dando lugar a la resolución de dos problemas por separado, uno que depende de &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt; y otro que depende de &amp;lt;math&amp;gt; t&amp;lt;/math&amp;gt;. Al solucionar ambos problemas obtenemos el siguiente resultado: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para que &amp;lt;math&amp;gt; w(x,t) &amp;lt;/math&amp;gt; sea solución de nuestro problema, solo falta ver que cumpla la condición incial, es decir, que &amp;lt;math&amp;gt; w(x,0)=c_k\sin(k\pi x)=-x &amp;lt;/math&amp;gt;. De esta igualdad sacamos que si extendemos la función &amp;lt;math&amp;gt; -x &amp;lt;/math&amp;gt; de forma impar los coeficientes &amp;lt;math&amp;gt; c_k&amp;lt;/math&amp;gt; van a ser los coeficiente de la [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) serie de Fourier]. Por tanto, la solución queda de la siguiente manera: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta función es la solución del problema homogeneizado, por lo que para obtener la solución del problema original tenemos que deshacer el cambio de variable. La solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}+x&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a graficar los 10 primeros términos de la serie en &amp;lt;math&amp;gt; t \in [0,1]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.2c.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
close all&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&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;
En la gráfica podemos observar que la solución del poblema alcanza la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Por la ley de Fourier sabemos que &amp;lt;math&amp;gt; q=-k u_x &amp;lt;/math&amp;gt;, siendo q el flujo. Por lo que para interpretar como es el flujo en nuestro problema, vamos a graficar como es en los extremos suponiendo que &amp;lt;math&amp;gt; k=1 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.3.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos la función &lt;br /&gt;
dwi=@(x,t,k) (2*(-1)^(k+1)).*cos(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
dv=@(x) 1;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
dw0=@(t) 0;&lt;br /&gt;
dw1=@(t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    dw0=@(t) dw0(t) + dwi(0,t,n);&lt;br /&gt;
    dw1=@(t) dw1(t) + dwi(1,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
du0=@(t) dw0(t)-dv(0);&lt;br /&gt;
du1=@(t) dw1(t)-dv(1);&lt;br /&gt;
&lt;br /&gt;
% Gráfica &lt;br /&gt;
close all&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,du0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,du1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al observar la gráfica en el extremo izquierdo vemos que al principio no hay flujo debido a que tanto la barra como el extremo están a 0º. Una vez avanza el tiempo el flujo va siendo cada vez más negativo lo que implica que cada vez sale más flujo por el extremo izquierdo. Esto tiene sentido ya que como la barra se va calentando, como podemos ver en la gráfica de la solución, y el extremo se mantiene a 0º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor.&lt;br /&gt;
&lt;br /&gt;
Por el contrario, en la gráfica del extremos derecho podemos observar que inicialmente hay mucho flujo hacia el interior de la barra debido a que la barra está a 0º y el extremo a 1º. Una vez avanza el tiempo el flujo va siendo cada vez menos negativo lo que implica que cada vez entra menos flujo por el extremo derecho. Esto es coherente ya que como la barra se va calentando, y el extremo se mantiene a 1º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor como hemos mencionado antes.&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas, cabe destacar dos aspectos característicos:&lt;br /&gt;
* Lo primero que cabe preguntarse es por qué cuando en la gráfica hay una gran variación del flujo, en el extremo izquierdo desciende más moderadamente, y en el extremo derecho asciende drásticamente. Esto se debe a que en el extremo izquierdo la diferencia de temperatura entre dos puntos cercanos es menor que en el derecho, cosa que podemos observar en la gráfica de la solución.&lt;br /&gt;
* También llama la atención que ambas gráficas se acaban estabilizando en un flujo de -1, este punto coincide con el punto en el que la solución alcanza la solución estacionaria, por lo que tiene sentido que el flujo en ambos extremos se estabilice en el mismo valor.&lt;br /&gt;
&lt;br /&gt;
=Variación coeficiente de conductividad=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a ver como varia la solución cuando variamos el coeficiente de conductividad térmica de 1 a 1/2. Con este coeficiente el sistema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{1t}-\frac{1}{2}u_{1xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_1(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendolo de la misma forma que el anterior obtenemos que la solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u_1(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{\frac{-k^2\pi^2 t}{2}}+x,&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y que la estacionaria no varía &amp;lt;math&amp;gt; v_1(x)=x &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gf2.4b.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
close all&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_1(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Aunque a primera vista pueda parecer igual que la solución del problema original, si nos fijamos bien podemos observar que esta tarda más en alcanzar la solución estacionaria ya que esta curvada en un mayor intervalo, esto tiene sentido por tener un coeficiente de conductividad menor.&lt;br /&gt;
&lt;br /&gt;
Ahora para apreciar mejor la diferencia vamos a representar ambas soluciones restándoles la estacionaria en x=1/2.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.5.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi1=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
wi2=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w1=@(x,t) 0;&lt;br /&gt;
w2=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w1=@(x,t) w1(x,t) + wi1(x,t,n);&lt;br /&gt;
    w2=@(x,t) w2(x,t) + wi2(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
u1=@(x,t) w1(x,t)+v(x);&lt;br /&gt;
u2=@(x,t) w2(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
%Hacemos la diferencia con la solución estacionaria&lt;br /&gt;
dif1=@(t) u1(0.5,t)-v(0.5);&lt;br /&gt;
dif2=@(t) u2(0.5,t)-v(0.5);&lt;br /&gt;
&lt;br /&gt;
% Gráfica &lt;br /&gt;
close all&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,dif1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,dif2(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1/2')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En estas gráficas podemos apreciar mejor que efectivamente esta solución tarda más en alcanzar la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
=Variación de las condiciones de frontera y las iniciales=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a variar las condiciones de frontera y la inicial y a ver cómo varía la solución. El problema que vamos a estudiar ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{2t}-u_{2xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_2(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Resolviendo este problema de la misma forma que los anteriores, obtenemos que la solución estacionaria &amp;lt;math&amp;gt; v_2(x)=0 &amp;lt;/math&amp;gt; y que la solución es: &amp;lt;math&amp;gt; u_2(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;. A diferencia de en los otros casos los &amp;lt;math&amp;gt;c_k&amp;lt;/math&amp;gt; los vamos a calcular aproximando las integrales por el [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals método del trapecio]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.6.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2));&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
close all&lt;br /&gt;
&lt;br /&gt;
a=0; b=1;                    &lt;br /&gt;
x=linspace(a,b,100);&lt;br /&gt;
t=linspace(a,b,100);&lt;br /&gt;
N=length(x)-1;&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1);              &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
f_n=zeros(length(x),length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    for k=1:100&lt;br /&gt;
        g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
        a_k=2*h*w'*g;&lt;br /&gt;
        f_n(i,:)= f_n(i,:)+a_k.*uk(x,t(i),k);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
colormap jet &lt;br /&gt;
surf(x,t,f_n,'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_2(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al igual que en los casos anteriores, podemos ver que la solución alcanza la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Ahora, igual que para el problema original, vamos a ver cómo se comporta el flujo en este problema.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.7.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2));&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
duk=@(x,t,k) -k*pi.*cos(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
close all&lt;br /&gt;
&lt;br /&gt;
a=0; b=1;                    &lt;br /&gt;
x=linspace(a,b,100);&lt;br /&gt;
t=linspace(a,b,100);&lt;br /&gt;
N=length(x)-1;&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1);              &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
q0=@(t)0;&lt;br /&gt;
q1=@(t)0;&lt;br /&gt;
    for k=1:100&lt;br /&gt;
        g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
        a_k=2*h*w'*g;&lt;br /&gt;
        q0=@(t) q0(t)+a_k.*duk(0,t,k);&lt;br /&gt;
        q1=@(t) q1(t)+a_k.*duk(1,t,k);&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,q0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,q1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Aislamiento de un extremo==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{3t}-u_{3xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_3(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_{3x}(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_3(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; v_3(x,t)=0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Solucion &amp;lt;math&amp;gt; u_3(x,t)=\sum_{k=1}^\infty c_k\sin((k+\frac{1}{2})\pi x)e^{-(k+\frac{1}{2})^2\pi^2 t} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Solución fundamental=&lt;br /&gt;
&lt;br /&gt;
La llamada solución fundamental de la ecuación del calor es la solución correspondiente a la condición inicial de un punto donde se concentra todo el calor.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
u_t - k u_{xx} = 0&amp;amp; (x, t) \in \mathbb{R} \times (0, \infty)\\&lt;br /&gt;
u(x,0)=\delta(x)&amp;amp;&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde ''&amp;lt;math&amp;gt;\delta&amp;lt;/math&amp;gt;'' es la función delta de Dirac, que vale 0 en todo punto menos en x, y su integral en toda la recta real es igual a 1. &lt;br /&gt;
&lt;br /&gt;
La solución a este problema es la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\Phi(x,t)=\frac{1}{\sqrt{4\pi kt}}\exp\left(-\frac{x^2}{4kt}\right).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.8.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Parámetros&lt;br /&gt;
k = 1;  % Coeficiente de conductividad&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
t = linspace(10^-2, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Inicialización de la matriz de soluciones&lt;br /&gt;
u = zeros(length(x), length(t));&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución fundamental&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
    u(:, i) = 1/sqrt(4 * pi * k * t(i)) * exp(-x.^2 / (4 * k * t(i)));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
colormap jet;&lt;br /&gt;
surf(x, t, u', 'FaceColor', 'interp');&lt;br /&gt;
title('Solución Fundamental de la Ecuación del Calor');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('t');&lt;br /&gt;
zlabel('Temperatura (u(x, t))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ANIMACIÓN:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
    u = 1/sqrt(4 * pi * k * t(i)) * exp(-x.^2 / (4 * k * t(i)));&lt;br /&gt;
&lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y la etiqueta&lt;br /&gt;
    title(['Evolución de la Temperatura (t = ' num2str(t(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 3]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.08);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Dimensión 2:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
k = 1;  % Difusividad térmica&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos en x y y&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
y = linspace(-1, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear una malla 2D&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Tiempos para la animación&lt;br /&gt;
t_values = linspace(0.001, 0.1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución fundamental en 2D&lt;br /&gt;
    u = 1/(4 * pi * k * t_values(i)) * exp(-(X.^2 + Y.^2) / (4 * k * t_values(i)));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    surf(X, Y, u, 'EdgeColor', 'none');&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución Fundamental en 2D (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición x');&lt;br /&gt;
    ylabel('Posición y');&lt;br /&gt;
    zlabel('Temperatura u(x, y, t)');&lt;br /&gt;
&lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    zlim([0, 20]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.2);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Soluciones autosemejantes==&lt;br /&gt;
&lt;br /&gt;
Lo bueno que tiene la solución fundamental es que no hemos tenido que restringirla a una región acotada del espacio, sino que es solución para todo &amp;lt;math&amp;gt; x \in \mathbb{R} &amp;lt;/math&amp;gt;. No estaría de más preguntarse si existen otras soluciones con esta propiedad.&lt;br /&gt;
La solución fundamental tiene la propiedad de ser autosemejante, es decir, su gráfica al variar el tiempo mantiene siempre la misma forma (una gaussiana).&lt;br /&gt;
&lt;br /&gt;
Podemos buscar otras soluciones con esta propiedad considerando el cambio de variable &amp;lt;math&amp;gt;\xi=\frac{x}{\sqrt{t}}&amp;lt;/math&amp;gt;. Se comprueba que esta combinación de variables es invariante respecto de dilataciones parabólicas y además no tiene dimensión (PÁG 44 DEL LIBRO).&lt;br /&gt;
&lt;br /&gt;
Imponemos que la función de una variable &amp;lt;math&amp;gt; U(\xi) &amp;lt;/math&amp;gt; cumpla la EDP, y llegamos a la EDO:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U'(\xi)+\frac{1}{2}U(\xi)=B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cuya solución, deshaciendo el cambio de variable, es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U(\frac{x}{\sqrt{t}})=Ae^{-{\frac{x}{2\sqrt{t}}}}+2B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
con &amp;lt;math&amp;gt; A,B &amp;lt;/math&amp;gt; constantes a determinar. Para ello, consideraremos las siguientes restricciones, que involucran una región espacial no acotada: &amp;lt;math&amp;gt; x&amp;gt;0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
&amp;amp;u(0, t) = 1 \\&lt;br /&gt;
&amp;amp;u(x, 0) = 0\\&lt;br /&gt;
&amp;amp;lim_{x \to \infty } u(x,t)=0&lt;br /&gt;
\end{aligned}&lt;br /&gt;
\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con las que obtenemos &amp;lt;math&amp;gt; A=1 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B=0 &amp;lt;/math&amp;gt;, y por tanto la solución a este problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=e^{-{\frac{x}{2\sqrt{t}}}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Definir el intervalo espacial&lt;br /&gt;
x = linspace(0, 5, 100);&lt;br /&gt;
&lt;br /&gt;
% Definir el intervalo de tiempo&lt;br /&gt;
t_values = linspace(0.01, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución&lt;br /&gt;
    u = exp(-x / (2 * sqrt(t_values(i))));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución de la Ecuación del Calor (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.1);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==La convolución==&lt;br /&gt;
&lt;br /&gt;
Otra forma de obtener soluciones de la ecuación del calor es usando la solución fundamental &amp;lt;math&amp;gt; \Phi(x,t) &amp;lt;/math&amp;gt; y aplicando una [https://es.wikipedia.org/wiki/Convoluci%C3%B3n convolución].&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; u(x,t) = \int_{-\infty}^{\infty} \Phi(x-y,t) u_0(y) dy&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt; u_0(x) &amp;lt;/math&amp;gt; es el dato inicial, es decir, &amp;lt;math&amp;gt; u(x,0) = u_0(x) &amp;lt;/math&amp;gt; para &amp;lt;math&amp;gt; x \in \mathbb{R} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hemos visto antes que la solución fundamental representaba la respuesta del sistema a un impulso unitario (delta de Dirac) en un punto y en un instante de tiempo.&lt;br /&gt;
&lt;br /&gt;
Intuitivamente, la convolución realiza una integración ponderada de las contribuciones locales del dato inicial en cada punto y momento, proporcionando así la evolución completa de la temperatura de acuerdo con la ecuación del calor.&lt;br /&gt;
(Falta cambiar el comando integral() por el de trapecio)&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
k = 1;  % Difusividad térmica&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-3, 3, 100);&lt;br /&gt;
t_values = linspace(0.0005, 0.3, 100);&lt;br /&gt;
&lt;br /&gt;
% Función dato inicial&lt;br /&gt;
f = @(x) double(x &amp;gt;= -1 &amp;amp; x &amp;lt;= 1);&lt;br /&gt;
&lt;br /&gt;
% Solución fundamental&lt;br /&gt;
G = @(x, t) 1/sqrt(4 * pi * k * t) * exp(-x.^2 / (4 * k * t));&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la convolución&lt;br /&gt;
    u = zeros(size(x));&lt;br /&gt;
    for j = 1:length(x)&lt;br /&gt;
        integrand = @(y) G(x(j) - y, t_values(i)) .* f(y);&lt;br /&gt;
        u(j) = integral(integrand, -inf, inf);&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y la etiqueta&lt;br /&gt;
    title(['Evolución de la Temperatura (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1.1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.01);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=69345</id>
		<title>Ecuación del calor (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=69345"/>
				<updated>2024-03-06T12:49:26Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Dato inicial distinto de 0 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar la ecuación del calor en una dimensión mediante el estudio de una varilla metálica de longitud 1 y que se encuentra aislada por su superficie lateral, es decir, la conducción de calor solo se produce en la dirección longitudinal. Además, vamos a ver cómo varía la solución en función de la variación de distintos parámatros como las condiciones iniciales o el coeficiente de difusión.&lt;br /&gt;
&lt;br /&gt;
=Preliminares=&lt;br /&gt;
&lt;br /&gt;
Antes de empezar a desarrollar el problema necesitamos conocer algunos conceptos que nos van a permitir modelizarlo y sacar sus ecuaciones.&lt;br /&gt;
&lt;br /&gt;
* La '''ley de Fourier''' establece que el flujo de transferencia de calor es proporcional y de sentido contrario al gradiente de temperatura en esa dirección.&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; q=-k\nabla u &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Siendo k la conductividad térmica.&lt;br /&gt;
&lt;br /&gt;
*Conservación de la energía.&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
=Problema original=&lt;br /&gt;
En este primer apartado, vamos a suponer que la temperatura inicial de la varilla es 0ºC y que en el extremo izquierdo se consigue mantener la temperatura a 0ºC mientras que en el derecho la temperatura es siempre de 1ºC. Teniendo esto en cuenta y los conceptos desarrollados en el apartado anterior, el sistema de ecuaciones que representa el problema es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_t-u_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Homogeneización==&lt;br /&gt;
&lt;br /&gt;
Antes de empezar con la resolución del problema vamos a homogeneizar las condiciones de contorno. Para hacer esto vamos a restarle al problema la solución estacionaria, es decir, la que permanece invariante respecto al tiempo. Esto implica que &amp;lt;math&amp;gt; u_t\sim 0 &amp;lt;/math&amp;gt; y que &amp;lt;math&amp;gt; u(x,t)\sim v(x) &amp;lt;/math&amp;gt;. Por lo que el problema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
v_{xx}=0 &amp;amp; x\in(0,1)\\&lt;br /&gt;
v(0)=0\\&lt;br /&gt;
v(1)=1\\&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución de este problema, y por tanto la solución estacionaria es: &amp;lt;math&amp;gt; v(x)=x &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.1.jpg|400px|thumb|right|Solución estacionaria]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
v=@(x,t) x;&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(v, [0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('v(x)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la solución estacionaria, tomamos &amp;lt;math&amp;gt; w(x,t)=u(x,t)-v(x) &amp;lt;/math&amp;gt; y vemos como queda el problema homogeneizado para &amp;lt;math&amp;gt; w(x,t)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
w_t-w_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
w(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(x,0)=-x&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Una vez homogeneizado el sistema podemos empezar a buscar la solución por el método de separación de variables, en el cual vamos a suponer que la solución es de la forma: &amp;lt;math&amp;gt; w(x,t)=X(x)T(t) &amp;lt;/math&amp;gt;. Como &amp;lt;math&amp;gt;w(x,t)&amp;lt;/math&amp;gt; es solución obtenemos que se tiene que cumplir &amp;lt;math&amp;gt;\frac{X''(x)}{X(x)}=\frac{T'(t)}{T(t)}=\lambda_k&amp;lt;/math&amp;gt; dando lugar a la resolución de dos problemas por separado, uno que depende de &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt; y otro que depende de &amp;lt;math&amp;gt; t&amp;lt;/math&amp;gt;. Al solucionar ambos problemas obtenemos el siguiente resultado: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para que &amp;lt;math&amp;gt; w(x,t) &amp;lt;/math&amp;gt; sea solución de nuestro problema, solo falta ver que cumpla la condición incial, es decir, que &amp;lt;math&amp;gt; w(x,0)=c_k\sin(k\pi x)=-x &amp;lt;/math&amp;gt;. De esta igualdad sacamos que si extendemos la función &amp;lt;math&amp;gt; -x &amp;lt;/math&amp;gt; de forma impar los coeficientes &amp;lt;math&amp;gt; c_k&amp;lt;/math&amp;gt; van a ser los coeficiente de la [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) serie de Fourier]. Por tanto, la solución queda de la siguiente manera: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta función es la solución del problema homogeneizado, por lo que para obtener la solución del problema original tenemos que deshacer el cambio de variable. La solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}+x&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a graficar los 10 primeros términos de la serie en &amp;lt;math&amp;gt; t \in [0,1]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.2c.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
close all&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&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;
En la gráfica podemos observar que la solución del poblema alcanza la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Por la ley de Fourier sabemos que &amp;lt;math&amp;gt; q=-k u_x &amp;lt;/math&amp;gt;, siendo q el flujo. Por lo que para interpretar como es el flujo en nuestro problema, vamos a graficar como es en los extremos suponiendo que &amp;lt;math&amp;gt; k=1 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.3.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos la función &lt;br /&gt;
dwi=@(x,t,k) (2*(-1)^(k+1)).*cos(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
dv=@(x) 1;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
dw0=@(t) 0;&lt;br /&gt;
dw1=@(t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    dw0=@(t) dw0(t) + dwi(0,t,n);&lt;br /&gt;
    dw1=@(t) dw1(t) + dwi(1,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
du0=@(t) dw0(t)-dv(0);&lt;br /&gt;
du1=@(t) dw1(t)-dv(1);&lt;br /&gt;
&lt;br /&gt;
% Gráfica &lt;br /&gt;
close all&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,du0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,du1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al observar la gráfica en el extremo izquierdo vemos que al principio no hay flujo debido a que tanto la barra como el extremo están a 0º. Una vez avanza el tiempo el flujo va siendo cada vez más negativo lo que implica que cada vez sale más flujo por el extremo izquierdo. Esto tiene sentido ya que como la barra se va calentando, como podemos ver en la gráfica de la solución, y el extremo se mantiene a 0º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor.&lt;br /&gt;
&lt;br /&gt;
Por el contrario, en la gráfica del extremos derecho podemos observar que inicialmente hay mucho flujo hacia el interior de la barra debido a que la barra está a 0º y el extremo a 1º. Una vez avanza el tiempo el flujo va siendo cada vez menos negativo lo que implica que cada vez entra menos flujo por el extremo derecho. Esto es coherente ya que como la barra se va calentando, y el extremo se mantiene a 1º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor como hemos mencionado antes.&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas, cabe destacar dos aspectos característicos:&lt;br /&gt;
* Lo primero que cabe preguntarse es por qué cuando en la gráfica hay una gran variación del flujo, en el extremo izquierdo desciende más moderadamente, y en el extremo derecho asciende drásticamente. Esto se debe a que en el extremo izquierdo la diferencia de temperatura entre dos puntos cercanos es menor que en el derecho, cosa que podemos observar en la gráfica de la solución.&lt;br /&gt;
* También llama la atención que ambas gráficas se acaban estabilizando en un flujo de -1, este punto coincide con el punto en el que la solución alcanza la solución estacionaria, por lo que tiene sentido que el flujo en ambos extremos se estabilice en el mismo valor.&lt;br /&gt;
&lt;br /&gt;
=Variación coeficiente de conductividad=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a ver como varia la solución cuando variamos el coeficiente de conductividad térmica de 1 a 1/2. Con este coeficiente el sistema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{1t}-\frac{1}{2}u_{1xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_1(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendolo de la misma forma que el anterior obtenemos que la solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u_1(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{\frac{-k^2\pi^2 t}{2}}+x,&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y que la estacionaria no varía &amp;lt;math&amp;gt; v_1(x)=x &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gf2.4b.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
close all&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_1(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Aunque a primera vista pueda parecer igual que la solución del problema original, si nos fijamos bien podemos observar que esta tarda más en alcanzar la solución estacionaria ya que esta curvada en un mayor intervalo, esto tiene sentido por tener un coeficiente de conductividad menor.&lt;br /&gt;
&lt;br /&gt;
Ahora para apreciar mejor la diferencia vamos a representar ambas soluciones restándoles la estacionaria en x=1/2.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.5.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi1=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
wi2=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w1=@(x,t) 0;&lt;br /&gt;
w2=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w1=@(x,t) w1(x,t) + wi1(x,t,n);&lt;br /&gt;
    w2=@(x,t) w2(x,t) + wi2(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
u1=@(x,t) w1(x,t)+v(x);&lt;br /&gt;
u2=@(x,t) w2(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
%Hacemos la diferencia con la solución estacionaria&lt;br /&gt;
dif1=@(t) u1(0.5,t)-v(0.5);&lt;br /&gt;
dif2=@(t) u2(0.5,t)-v(0.5);&lt;br /&gt;
&lt;br /&gt;
% Gráfica &lt;br /&gt;
close all&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,dif1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,dif2(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1/2')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En estas gráficas podemos apreciar mejor que efectivamente esta solución tarda más en alcanzar la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
=Variación de las condiciones de frontera y las iniciales=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a variar las condiciones de frontera y la inicial y a ver cómo varía la solución. El problema que vamos a estudiar ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{2t}-u_{2xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_2(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Resolviendo este problema de la misma forma que los anteriores, obtenemos que la solución estacionaria &amp;lt;math&amp;gt; v_2(x)=0 &amp;lt;/math&amp;gt; y que la solución es: &amp;lt;math&amp;gt; u_2(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;. A diferencia de en los otros casos los &amp;lt;math&amp;gt;c_k&amp;lt;/math&amp;gt; los vamos a calcular aproximando las integrales por el [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals método del trapecio]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.6.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2));&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
close all&lt;br /&gt;
&lt;br /&gt;
a=0; b=1;                    &lt;br /&gt;
x=linspace(a,b,100);&lt;br /&gt;
t=linspace(a,b,100);&lt;br /&gt;
N=length(x)-1;&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1);              &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
f_n=zeros(length(x),length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    for k=1:100&lt;br /&gt;
        g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
        a_k=2*h*w'*g;&lt;br /&gt;
        f_n(i,:)= f_n(i,:)+a_k.*uk(x,t(i),k);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
colormap jet &lt;br /&gt;
surf(x,t,f_n,'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_2(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al igual que en los casos anteriores, podemos ver que la solución alcanza la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Ahora, igual que para el problema original, vamos a ver cómo se comporta el flujo en este problema.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.7.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2));&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
duk=@(x,t,k) -k*pi.*cos(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
close all&lt;br /&gt;
&lt;br /&gt;
a=0; b=1;                    &lt;br /&gt;
x=linspace(a,b,100);&lt;br /&gt;
t=linspace(a,b,100);&lt;br /&gt;
N=length(x)-1;&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1);              &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
q0=@(t)0;&lt;br /&gt;
q1=@(t)0;&lt;br /&gt;
    for k=1:100&lt;br /&gt;
        g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
        a_k=2*h*w'*g;&lt;br /&gt;
        q0=@(t) q0(t)+a_k.*duk(0,t,k);&lt;br /&gt;
        q1=@(t) q1(t)+a_k.*duk(1,t,k);&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,q0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,q1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Aislamiento de un extremo==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{3t}-u_{3xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_3(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_{3x}(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_3(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; v_3(x,t)=0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Solucion &amp;lt;math&amp;gt; u_3(x,t)=\sum_{k=1}^\infty c_k\sin((k+\frac{1}{2})\pi x)e^{-(k+\frac{1}{2})^2\pi^2 t} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Solución fundamental=&lt;br /&gt;
&lt;br /&gt;
La llamada solución fundamental de la ecuación del calor es la solución correspondiente a la condición inicial de un punto donde se concentra todo el calor.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
u_t - k u_{xx} = 0&amp;amp; (x, t) \in \mathbb{R} \times (0, \infty)\\&lt;br /&gt;
u(x,0)=\delta(x)&amp;amp;&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde ''&amp;lt;math&amp;gt;\delta&amp;lt;/math&amp;gt;'' es la función delta de Dirac, que vale 0 en todo punto menos en x, y su integral en toda la recta real es igual a 1. &lt;br /&gt;
&lt;br /&gt;
La solución a este problema es la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\Phi(x,t)=\frac{1}{\sqrt{4\pi kt}}\exp\left(-\frac{x^2}{4kt}\right).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.8.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Parámetros&lt;br /&gt;
k = 1;  % Coeficiente de conductividad&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
t = linspace(10^-2, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Inicialización de la matriz de soluciones&lt;br /&gt;
u = zeros(length(x), length(t));&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución fundamental&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
    u(:, i) = 1/sqrt(4 * pi * k * t(i)) * exp(-x.^2 / (4 * k * t(i)));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
colormap jet;&lt;br /&gt;
surf(x, t, u', 'FaceColor', 'interp');&lt;br /&gt;
title('Solución Fundamental de la Ecuación del Calor');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('t');&lt;br /&gt;
zlabel('Temperatura (u(x, t))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ANIMACIÓN:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
    u = 1/sqrt(4 * pi * k * t(i)) * exp(-x.^2 / (4 * k * t(i)));&lt;br /&gt;
&lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y la etiqueta&lt;br /&gt;
    title(['Evolución de la Temperatura (t = ' num2str(t(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 3]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.08);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Dimensión 2:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
k = 1;  % Difusividad térmica&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos en x y y&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
y = linspace(-1, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear una malla 2D&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Tiempos para la animación&lt;br /&gt;
t_values = linspace(0.001, 0.1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución fundamental en 2D&lt;br /&gt;
    u = 1/(4 * pi * k * t_values(i)) * exp(-(X.^2 + Y.^2) / (4 * k * t_values(i)));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    surf(X, Y, u, 'EdgeColor', 'none');&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución Fundamental en 2D (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición x');&lt;br /&gt;
    ylabel('Posición y');&lt;br /&gt;
    zlabel('Temperatura u(x, y, t)');&lt;br /&gt;
&lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    zlim([0, 20]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.2);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Soluciones autosemejantes==&lt;br /&gt;
&lt;br /&gt;
Lo bueno que tiene la solución fundamental es que no hemos tenido que restringirla a una región acotada del espacio, sino que es solución para todo &amp;lt;math&amp;gt; x \in \mathbb{R} &amp;lt;/math&amp;gt;. No estaría de más preguntarse si existen otras soluciones con esta propiedad.&lt;br /&gt;
La solución fundamental tiene la propiedad de ser autosemejante, es decir, su gráfica al variar el tiempo mantiene siempre la misma forma (una gaussiana).&lt;br /&gt;
&lt;br /&gt;
Podemos buscar otras soluciones con esta propiedad considerando el cambio de variable &amp;lt;math&amp;gt;\xi=\frac{x}{\sqrt{t}}&amp;lt;/math&amp;gt;. Se comprueba que esta combinación de variables es invariante respecto de dilataciones parabólicas y además no tiene dimensión (PÁG 44 DEL LIBRO).&lt;br /&gt;
&lt;br /&gt;
Imponemos que la función de una variable &amp;lt;math&amp;gt; U(\xi) &amp;lt;/math&amp;gt; cumpla la EDP, y llegamos a la EDO:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U'(\xi)+\frac{1}{2}U(\xi)=B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cuya solución, deshaciendo el cambio de variable, es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U(\frac{x}{\sqrt{t}})=Ae^{-{\frac{x}{2\sqrt{t}}}}+2B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
con &amp;lt;math&amp;gt; A,B &amp;lt;/math&amp;gt; constantes a determinar. Para ello, consideraremos las siguientes restricciones, que involucran una región espacial no acotada: &amp;lt;math&amp;gt; x&amp;gt;0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
&amp;amp;u(0, t) = 1 \\&lt;br /&gt;
&amp;amp;u(x, 0) = 0\\&lt;br /&gt;
&amp;amp;lim_{x \to \infty } u(x,t)=0&lt;br /&gt;
\end{aligned}&lt;br /&gt;
\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con las que obtenemos &amp;lt;math&amp;gt; A=1 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B=0 &amp;lt;/math&amp;gt;, y por tanto la solución a este problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=e^{-{\frac{x}{2\sqrt{t}}}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Definir el intervalo espacial&lt;br /&gt;
x = linspace(0, 5, 100);&lt;br /&gt;
&lt;br /&gt;
% Definir el intervalo de tiempo&lt;br /&gt;
t_values = linspace(0.01, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución&lt;br /&gt;
    u = exp(-x / (2 * sqrt(t_values(i))));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución de la Ecuación del Calor (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.1);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==La convolución==&lt;br /&gt;
&lt;br /&gt;
Otra forma de obtener soluciones de la ecuación del calor es usando la solución fundamental y aplicando una [https://es.wikipedia.org/wiki/Convoluci%C3%B3n convolución].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Falta cambiar el comando integral() por el de trapecio)&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
k = 1;  % Difusividad térmica&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-3, 3, 100);&lt;br /&gt;
t_values = linspace(0.0005, 0.3, 100);&lt;br /&gt;
&lt;br /&gt;
% Función dato inicial&lt;br /&gt;
f = @(x) double(x &amp;gt;= -1 &amp;amp; x &amp;lt;= 1);&lt;br /&gt;
&lt;br /&gt;
% Solución fundamental&lt;br /&gt;
G = @(x, t) 1/sqrt(4 * pi * k * t) * exp(-x.^2 / (4 * k * t));&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la convolución&lt;br /&gt;
    u = zeros(size(x));&lt;br /&gt;
    for j = 1:length(x)&lt;br /&gt;
        integrand = @(y) G(x(j) - y, t_values(i)) .* f(y);&lt;br /&gt;
        u(j) = integral(integrand, -inf, inf);&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y la etiqueta&lt;br /&gt;
    title(['Evolución de la Temperatura (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1.1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.01);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=69344</id>
		<title>Ecuación del calor (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=69344"/>
				<updated>2024-03-06T12:43:01Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar la ecuación del calor en una dimensión mediante el estudio de una varilla metálica de longitud 1 y que se encuentra aislada por su superficie lateral, es decir, la conducción de calor solo se produce en la dirección longitudinal. Además, vamos a ver cómo varía la solución en función de la variación de distintos parámatros como las condiciones iniciales o el coeficiente de difusión.&lt;br /&gt;
&lt;br /&gt;
=Preliminares=&lt;br /&gt;
&lt;br /&gt;
Antes de empezar a desarrollar el problema necesitamos conocer algunos conceptos que nos van a permitir modelizarlo y sacar sus ecuaciones.&lt;br /&gt;
&lt;br /&gt;
* La '''ley de Fourier''' establece que el flujo de transferencia de calor es proporcional y de sentido contrario al gradiente de temperatura en esa dirección.&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; q=-k\nabla u &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Siendo k la conductividad térmica.&lt;br /&gt;
&lt;br /&gt;
*Conservación de la energía.&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
=Problema original=&lt;br /&gt;
En este primer apartado, vamos a suponer que la temperatura inicial de la varilla es 0ºC y que en el extremo izquierdo se consigue mantener la temperatura a 0ºC mientras que en el derecho la temperatura es siempre de 1ºC. Teniendo esto en cuenta y los conceptos desarrollados en el apartado anterior, el sistema de ecuaciones que representa el problema es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_t-u_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Homogeneización==&lt;br /&gt;
&lt;br /&gt;
Antes de empezar con la resolución del problema vamos a homogeneizar las condiciones de contorno. Para hacer esto vamos a restarle al problema la solución estacionaria, es decir, la que permanece invariante respecto al tiempo. Esto implica que &amp;lt;math&amp;gt; u_t\sim 0 &amp;lt;/math&amp;gt; y que &amp;lt;math&amp;gt; u(x,t)\sim v(x) &amp;lt;/math&amp;gt;. Por lo que el problema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
v_{xx}=0 &amp;amp; x\in(0,1)\\&lt;br /&gt;
v(0)=0\\&lt;br /&gt;
v(1)=1\\&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución de este problema, y por tanto la solución estacionaria es: &amp;lt;math&amp;gt; v(x)=x &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.1.jpg|400px|thumb|right|Solución estacionaria]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
v=@(x,t) x;&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(v, [0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('v(x)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la solución estacionaria, tomamos &amp;lt;math&amp;gt; w(x,t)=u(x,t)-v(x) &amp;lt;/math&amp;gt; y vemos como queda el problema homogeneizado para &amp;lt;math&amp;gt; w(x,t)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
w_t-w_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
w(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(x,0)=-x&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Una vez homogeneizado el sistema podemos empezar a buscar la solución por el método de separación de variables, en el cual vamos a suponer que la solución es de la forma: &amp;lt;math&amp;gt; w(x,t)=X(x)T(t) &amp;lt;/math&amp;gt;. Como &amp;lt;math&amp;gt;w(x,t)&amp;lt;/math&amp;gt; es solución obtenemos que se tiene que cumplir &amp;lt;math&amp;gt;\frac{X''(x)}{X(x)}=\frac{T'(t)}{T(t)}=\lambda_k&amp;lt;/math&amp;gt; dando lugar a la resolución de dos problemas por separado, uno que depende de &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt; y otro que depende de &amp;lt;math&amp;gt; t&amp;lt;/math&amp;gt;. Al solucionar ambos problemas obtenemos el siguiente resultado: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para que &amp;lt;math&amp;gt; w(x,t) &amp;lt;/math&amp;gt; sea solución de nuestro problema, solo falta ver que cumpla la condición incial, es decir, que &amp;lt;math&amp;gt; w(x,0)=c_k\sin(k\pi x)=-x &amp;lt;/math&amp;gt;. De esta igualdad sacamos que si extendemos la función &amp;lt;math&amp;gt; -x &amp;lt;/math&amp;gt; de forma impar los coeficientes &amp;lt;math&amp;gt; c_k&amp;lt;/math&amp;gt; van a ser los coeficiente de la [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) serie de Fourier]. Por tanto, la solución queda de la siguiente manera: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta función es la solución del problema homogeneizado, por lo que para obtener la solución del problema original tenemos que deshacer el cambio de variable. La solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}+x&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a graficar los 10 primeros términos de la serie en &amp;lt;math&amp;gt; t \in [0,1]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.2c.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
close all&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&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;
En la gráfica podemos observar que la solución del poblema alcanza la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Por la ley de Fourier sabemos que &amp;lt;math&amp;gt; q=-k u_x &amp;lt;/math&amp;gt;, siendo q el flujo. Por lo que para interpretar como es el flujo en nuestro problema, vamos a graficar como es en los extremos suponiendo que &amp;lt;math&amp;gt; k=1 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.3.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos la función &lt;br /&gt;
dwi=@(x,t,k) (2*(-1)^(k+1)).*cos(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
dv=@(x) 1;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
dw0=@(t) 0;&lt;br /&gt;
dw1=@(t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    dw0=@(t) dw0(t) + dwi(0,t,n);&lt;br /&gt;
    dw1=@(t) dw1(t) + dwi(1,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
du0=@(t) dw0(t)-dv(0);&lt;br /&gt;
du1=@(t) dw1(t)-dv(1);&lt;br /&gt;
&lt;br /&gt;
% Gráfica &lt;br /&gt;
close all&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,du0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,du1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al observar la gráfica en el extremo izquierdo vemos que al principio no hay flujo debido a que tanto la barra como el extremo están a 0º. Una vez avanza el tiempo el flujo va siendo cada vez más negativo lo que implica que cada vez sale más flujo por el extremo izquierdo. Esto tiene sentido ya que como la barra se va calentando, como podemos ver en la gráfica de la solución, y el extremo se mantiene a 0º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor.&lt;br /&gt;
&lt;br /&gt;
Por el contrario, en la gráfica del extremos derecho podemos observar que inicialmente hay mucho flujo hacia el interior de la barra debido a que la barra está a 0º y el extremo a 1º. Una vez avanza el tiempo el flujo va siendo cada vez menos negativo lo que implica que cada vez entra menos flujo por el extremo derecho. Esto es coherente ya que como la barra se va calentando, y el extremo se mantiene a 1º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor como hemos mencionado antes.&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas, cabe destacar dos aspectos característicos:&lt;br /&gt;
* Lo primero que cabe preguntarse es por qué cuando en la gráfica hay una gran variación del flujo, en el extremo izquierdo desciende más moderadamente, y en el extremo derecho asciende drásticamente. Esto se debe a que en el extremo izquierdo la diferencia de temperatura entre dos puntos cercanos es menor que en el derecho, cosa que podemos observar en la gráfica de la solución.&lt;br /&gt;
* También llama la atención que ambas gráficas se acaban estabilizando en un flujo de -1, este punto coincide con el punto en el que la solución alcanza la solución estacionaria, por lo que tiene sentido que el flujo en ambos extremos se estabilice en el mismo valor.&lt;br /&gt;
&lt;br /&gt;
=Variación coeficiente de conductividad=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a ver como varia la solución cuando variamos el coeficiente de conductividad térmica de 1 a 1/2. Con este coeficiente el sistema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{1t}-\frac{1}{2}u_{1xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_1(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendolo de la misma forma que el anterior obtenemos que la solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u_1(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{\frac{-k^2\pi^2 t}{2}}+x,&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y que la estacionaria no varía &amp;lt;math&amp;gt; v_1(x)=x &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gf2.4b.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
close all&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_1(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Aunque a primera vista pueda parecer igual que la solución del problema original, si nos fijamos bien podemos observar que esta tarda más en alcanzar la solución estacionaria ya que esta curvada en un mayor intervalo, esto tiene sentido por tener un coeficiente de conductividad menor.&lt;br /&gt;
&lt;br /&gt;
Ahora para apreciar mejor la diferencia vamos a representar ambas soluciones restándoles la estacionaria en x=1/2.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.5.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi1=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
wi2=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w1=@(x,t) 0;&lt;br /&gt;
w2=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w1=@(x,t) w1(x,t) + wi1(x,t,n);&lt;br /&gt;
    w2=@(x,t) w2(x,t) + wi2(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
u1=@(x,t) w1(x,t)+v(x);&lt;br /&gt;
u2=@(x,t) w2(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
%Hacemos la diferencia con la solución estacionaria&lt;br /&gt;
dif1=@(t) u1(0.5,t)-v(0.5);&lt;br /&gt;
dif2=@(t) u2(0.5,t)-v(0.5);&lt;br /&gt;
&lt;br /&gt;
% Gráfica &lt;br /&gt;
close all&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,dif1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,dif2(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1/2')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En estas gráficas podemos apreciar mejor que efectivamente esta solución tarda más en alcanzar la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
=Variación de las condiciones de frontera y las iniciales=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a variar las condiciones de frontera y la inicial y a ver cómo varía la solución. El problema que vamos a estudiar ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{2t}-u_{2xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_2(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Resolviendo este problema de la misma forma que los anteriores, obtenemos que la solución estacionaria &amp;lt;math&amp;gt; v_2(x)=0 &amp;lt;/math&amp;gt; y que la solución es: &amp;lt;math&amp;gt; u_2(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;. A diferencia de en los otros casos los &amp;lt;math&amp;gt;c_k&amp;lt;/math&amp;gt; los vamos a calcular aproximando las integrales por el [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals método del trapecio]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.6.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2));&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
close all&lt;br /&gt;
&lt;br /&gt;
a=0; b=1;                    &lt;br /&gt;
x=linspace(a,b,100);&lt;br /&gt;
t=linspace(a,b,100);&lt;br /&gt;
N=length(x)-1;&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1);              &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
f_n=zeros(length(x),length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    for k=1:100&lt;br /&gt;
        g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
        a_k=2*h*w'*g;&lt;br /&gt;
        f_n(i,:)= f_n(i,:)+a_k.*uk(x,t(i),k);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
colormap jet &lt;br /&gt;
surf(x,t,f_n,'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_2(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al igual que en los casos anteriores, podemos ver que la solución alcanza la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Ahora, igual que para el problema original, vamos a ver cómo se comporta el flujo en este problema.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.7.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2));&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
duk=@(x,t,k) -k*pi.*cos(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
close all&lt;br /&gt;
&lt;br /&gt;
a=0; b=1;                    &lt;br /&gt;
x=linspace(a,b,100);&lt;br /&gt;
t=linspace(a,b,100);&lt;br /&gt;
N=length(x)-1;&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1);              &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
q0=@(t)0;&lt;br /&gt;
q1=@(t)0;&lt;br /&gt;
    for k=1:100&lt;br /&gt;
        g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
        a_k=2*h*w'*g;&lt;br /&gt;
        q0=@(t) q0(t)+a_k.*duk(0,t,k);&lt;br /&gt;
        q1=@(t) q1(t)+a_k.*duk(1,t,k);&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,q0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,q1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Aislamiento de un extremo==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{3t}-u_{3xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_3(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_{3x}(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_3(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; v_3(x,t)=0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Solucion &amp;lt;math&amp;gt; u_3(x,t)=\sum_{k=1}^\infty c_k\sin((k+\frac{1}{2})\pi x)e^{-(k+\frac{1}{2})^2\pi^2 t} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Solución fundamental=&lt;br /&gt;
&lt;br /&gt;
La llamada solución fundamental de la ecuación del calor es la solución correspondiente a la condición inicial de un punto donde se concentra todo el calor.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
u_t - k u_{xx} = 0&amp;amp; (x, t) \in \mathbb{R} \times (0, \infty)\\&lt;br /&gt;
u(x,0)=\delta(x)&amp;amp;&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde ''&amp;lt;math&amp;gt;\delta&amp;lt;/math&amp;gt;'' es la función delta de Dirac, que vale 0 en todo punto menos en x, y su integral en toda la recta real es igual a 1. &lt;br /&gt;
&lt;br /&gt;
La solución a este problema es la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\Phi(x,t)=\frac{1}{\sqrt{4\pi kt}}\exp\left(-\frac{x^2}{4kt}\right).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.8.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Parámetros&lt;br /&gt;
k = 1;  % Coeficiente de conductividad&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
t = linspace(10^-2, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Inicialización de la matriz de soluciones&lt;br /&gt;
u = zeros(length(x), length(t));&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución fundamental&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
    u(:, i) = 1/sqrt(4 * pi * k * t(i)) * exp(-x.^2 / (4 * k * t(i)));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
colormap jet;&lt;br /&gt;
surf(x, t, u', 'FaceColor', 'interp');&lt;br /&gt;
title('Solución Fundamental de la Ecuación del Calor');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('t');&lt;br /&gt;
zlabel('Temperatura (u(x, t))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ANIMACIÓN:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
    u = 1/sqrt(4 * pi * k * t(i)) * exp(-x.^2 / (4 * k * t(i)));&lt;br /&gt;
&lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y la etiqueta&lt;br /&gt;
    title(['Evolución de la Temperatura (t = ' num2str(t(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 3]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.08);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Dimensión 2:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
k = 1;  % Difusividad térmica&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos en x y y&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
y = linspace(-1, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear una malla 2D&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Tiempos para la animación&lt;br /&gt;
t_values = linspace(0.001, 0.1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución fundamental en 2D&lt;br /&gt;
    u = 1/(4 * pi * k * t_values(i)) * exp(-(X.^2 + Y.^2) / (4 * k * t_values(i)));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    surf(X, Y, u, 'EdgeColor', 'none');&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución Fundamental en 2D (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición x');&lt;br /&gt;
    ylabel('Posición y');&lt;br /&gt;
    zlabel('Temperatura u(x, y, t)');&lt;br /&gt;
&lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    zlim([0, 20]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.2);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Soluciones autosemejantes==&lt;br /&gt;
&lt;br /&gt;
Lo bueno que tiene la solución fundamental es que no hemos tenido que restringirla a una región acotada del espacio, sino que es solución para todo &amp;lt;math&amp;gt; x \in \mathbb{R} &amp;lt;/math&amp;gt;. No estaría de más preguntarse si existen otras soluciones con esta propiedad.&lt;br /&gt;
La solución fundamental tiene la propiedad de ser autosemejante, es decir, su gráfica al variar el tiempo mantiene siempre la misma forma (una gaussiana).&lt;br /&gt;
&lt;br /&gt;
Podemos buscar otras soluciones con esta propiedad considerando el cambio de variable &amp;lt;math&amp;gt;\xi=\frac{x}{\sqrt{t}}&amp;lt;/math&amp;gt;. Se comprueba que esta combinación de variables es invariante respecto de dilataciones parabólicas y además no tiene dimensión (PÁG 44 DEL LIBRO).&lt;br /&gt;
&lt;br /&gt;
Imponemos que la función de una variable &amp;lt;math&amp;gt; U(\xi) &amp;lt;/math&amp;gt; cumpla la EDP, y llegamos a la EDO:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U'(\xi)+\frac{1}{2}U(\xi)=B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cuya solución, deshaciendo el cambio de variable, es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U(\frac{x}{\sqrt{t}})=Ae^{-{\frac{x}{2\sqrt{t}}}}+2B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
con &amp;lt;math&amp;gt; A,B &amp;lt;/math&amp;gt; constantes a determinar. Para ello, consideraremos las siguientes restricciones, que involucran una región espacial no acotada: &amp;lt;math&amp;gt; x&amp;gt;0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
&amp;amp;u(0, t) = 1 \\&lt;br /&gt;
&amp;amp;u(x, 0) = 0\\&lt;br /&gt;
&amp;amp;lim_{x \to \infty } u(x,t)=0&lt;br /&gt;
\end{aligned}&lt;br /&gt;
\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con las que obtenemos &amp;lt;math&amp;gt; A=1 &amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt; B=0 &amp;lt;/math&amp;gt;, y por tanto la solución a este problema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u(x,t)=e^{-{\frac{x}{2\sqrt{t}}}}&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Definir el intervalo espacial&lt;br /&gt;
x = linspace(0, 5, 100);&lt;br /&gt;
&lt;br /&gt;
% Definir el intervalo de tiempo&lt;br /&gt;
t_values = linspace(0.01, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución&lt;br /&gt;
    u = exp(-x / (2 * sqrt(t_values(i))));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución de la Ecuación del Calor (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.1);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Dato inicial distinto de 0==&lt;br /&gt;
(Falta cambiar el comando integral() por el de trapecio)&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
k = 1;  % Difusividad térmica&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-3, 3, 100);&lt;br /&gt;
t_values = linspace(0.0005, 0.3, 100);&lt;br /&gt;
&lt;br /&gt;
% Función dato inicial&lt;br /&gt;
f = @(x) double(x &amp;gt;= -1 &amp;amp; x &amp;lt;= 1);&lt;br /&gt;
&lt;br /&gt;
% Solución fundamental&lt;br /&gt;
G = @(x, t) 1/sqrt(4 * pi * k * t) * exp(-x.^2 / (4 * k * t));&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la convolución&lt;br /&gt;
    u = zeros(size(x));&lt;br /&gt;
    for j = 1:length(x)&lt;br /&gt;
        integrand = @(y) G(x(j) - y, t_values(i)) .* f(y);&lt;br /&gt;
        u(j) = integral(integrand, -inf, inf);&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y la etiqueta&lt;br /&gt;
    title(['Evolución de la Temperatura (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1.1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.01);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=69342</id>
		<title>Ecuación del calor (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=69342"/>
				<updated>2024-03-06T12:39:35Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Soluciones autosemejantes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar la ecuación del calor en una dimensión mediante el estudio de una varilla metálica de longitud 1 y que se encuentra aislada por su superficie lateral, es decir, la conducción de calor solo se produce en la dirección longitudinal. Además, vamos a ver cómo varía la solución en función de la variación de distintos parámatros como las condiciones iniciales o el coeficiente de difusión.&lt;br /&gt;
&lt;br /&gt;
=Preliminares=&lt;br /&gt;
&lt;br /&gt;
Antes de empezar a desarrollar el problema necesitamos conocer algunos conceptos que nos van a permitir modelizarlo y sacar sus ecuaciones.&lt;br /&gt;
&lt;br /&gt;
* La '''ley de Fourier''' establece que el flujo de transferencia de calor es proporcional y de sentido contrario al gradiente de temperatura en esa dirección.&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; q=-k\nabla u &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Siendo k la conductividad térmica.&lt;br /&gt;
&lt;br /&gt;
*Conservación de la energía.&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
=Problema original=&lt;br /&gt;
En este primer apartado, vamos a suponer que la temperatura inicial de la varilla es 0ºC y que en el extremo izquierdo se consigue mantener la temperatura a 0ºC mientras que en el derecho la temperatura es siempre de 1ºC. Teniendo esto en cuenta y los conceptos desarrollados en el apartado anterior, el sistema de ecuaciones que representa el problema es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_t-u_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Homogeneización==&lt;br /&gt;
&lt;br /&gt;
Antes de empezar con la resolución del problema vamos a homogeneizar las condiciones de contorno. Para hacer esto vamos a restarle al problema la solución estacionaria, es decir, la que permanece invariante respecto al tiempo. Esto implica que &amp;lt;math&amp;gt; u_t\sim 0 &amp;lt;/math&amp;gt; y que &amp;lt;math&amp;gt; u(x,t)\sim v(x) &amp;lt;/math&amp;gt;. Por lo que el problema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
v_{xx}=0 &amp;amp; x\in(0,1)\\&lt;br /&gt;
v(0)=0\\&lt;br /&gt;
v(1)=1\\&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución de este problema, y por tanto la solución estacionaria es: &amp;lt;math&amp;gt; v(x)=x &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.1.jpg|400px|thumb|right|Solución estacionaria]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
v=@(x,t) x;&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(v, [0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('v(x)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la solución estacionaria, tomamos &amp;lt;math&amp;gt; w(x,t)=u(x,t)-v(x) &amp;lt;/math&amp;gt; y vemos como queda el problema homogeneizado para &amp;lt;math&amp;gt; w(x,t)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
w_t-w_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
w(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(x,0)=-x&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Una vez homogeneizado el sistema podemos empezar a buscar la solución por el método de separación de variables, en el cual vamos a suponer que la solución es de la forma: &amp;lt;math&amp;gt; w(x,t)=X(x)T(t) &amp;lt;/math&amp;gt;. Como &amp;lt;math&amp;gt;w(x,t)&amp;lt;/math&amp;gt; es solución obtenemos que se tiene que cumplir &amp;lt;math&amp;gt;\frac{X''(x)}{X(x)}=\frac{T'(t)}{T(t)}=\lambda_k&amp;lt;/math&amp;gt; dando lugar a la resolución de dos problemas por separado, uno que depende de &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt; y otro que depende de &amp;lt;math&amp;gt; t&amp;lt;/math&amp;gt;. Al solucionar ambos problemas obtenemos el siguiente resultado: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para que &amp;lt;math&amp;gt; w(x,t) &amp;lt;/math&amp;gt; sea solución de nuestro problema, solo falta ver que cumpla la condición incial, es decir, que &amp;lt;math&amp;gt; w(x,0)=c_k\sin(k\pi x)=-x &amp;lt;/math&amp;gt;. De esta igualdad sacamos que si extendemos la función &amp;lt;math&amp;gt; -x &amp;lt;/math&amp;gt; de forma impar los coeficientes &amp;lt;math&amp;gt; c_k&amp;lt;/math&amp;gt; van a ser los coeficiente de la [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) serie de Fourier]. Por tanto, la solución queda de la siguiente manera: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta función es la solución del problema homogeneizado, por lo que para obtener la solución del problema original tenemos que deshacer el cambio de variable. La solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}+x&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a graficar los 10 primeros términos de la serie en &amp;lt;math&amp;gt; t \in [0,1]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.2c.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
close all&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&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;
En la gráfica podemos observar que la solución del poblema alcanza la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Por la ley de Fourier sabemos que &amp;lt;math&amp;gt; q=-k u_x &amp;lt;/math&amp;gt;, siendo q el flujo. Por lo que para interpretar como es el flujo en nuestro problema, vamos a graficar como es en los extremos suponiendo que &amp;lt;math&amp;gt; k=1 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.3.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos la función &lt;br /&gt;
dwi=@(x,t,k) (2*(-1)^(k+1)).*cos(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
dv=@(x) 1;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
dw0=@(t) 0;&lt;br /&gt;
dw1=@(t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    dw0=@(t) dw0(t) + dwi(0,t,n);&lt;br /&gt;
    dw1=@(t) dw1(t) + dwi(1,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
du0=@(t) dw0(t)-dv(0);&lt;br /&gt;
du1=@(t) dw1(t)-dv(1);&lt;br /&gt;
&lt;br /&gt;
% Gráfica &lt;br /&gt;
close all&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,du0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,du1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al observar la gráfica en el extremo izquierdo vemos que al principio no hay flujo debido a que tanto la barra como el extremo están a 0º. Una vez avanza el tiempo el flujo va siendo cada vez más negativo lo que implica que cada vez sale más flujo por el extremo izquierdo. Esto tiene sentido ya que como la barra se va calentando, como podemos ver en la gráfica de la solución, y el extremo se mantiene a 0º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor.&lt;br /&gt;
&lt;br /&gt;
Por el contrario, en la gráfica del extremos derecho podemos observar que inicialmente hay mucho flujo hacia el interior de la barra debido a que la barra está a 0º y el extremo a 1º. Una vez avanza el tiempo el flujo va siendo cada vez menos negativo lo que implica que cada vez entra menos flujo por el extremo derecho. Esto es coherente ya que como la barra se va calentando, y el extremo se mantiene a 1º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor como hemos mencionado antes.&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas, cabe destacar dos aspectos característicos:&lt;br /&gt;
* Lo primero que cabe preguntarse es por qué cuando en la gráfica hay una gran variación del flujo, en el extremo izquierdo desciende más moderadamente, y en el extremo derecho asciende drásticamente. Esto se debe a que en el extremo izquierdo la diferencia de temperatura entre dos puntos cercanos es menor que en el derecho, cosa que podemos observar en la gráfica de la solución.&lt;br /&gt;
* También llama la atención que ambas gráficas se acaban estabilizando en un flujo de -1, este punto coincide con el punto en el que la solución alcanza la solución estacionaria, por lo que tiene sentido que el flujo en ambos extremos se estabilice en el mismo valor.&lt;br /&gt;
&lt;br /&gt;
=Variación coeficiente de conductividad=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a ver como varia la solución cuando variamos el coeficiente de conductividad térmica de 1 a 1/2. Con este coeficiente el sistema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{1t}-\frac{1}{2}u_{1xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_1(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendolo de la misma forma que el anterior obtenemos que la solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u_1(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{\frac{-k^2\pi^2 t}{2}}+x,&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y que la estacionaria no varía &amp;lt;math&amp;gt; v_1(x)=x &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gf2.4b.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
close all&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_1(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Aunque a primera vista pueda parecer igual que la solución del problema original, si nos fijamos bien podemos observar que esta tarda más en alcanzar la solución estacionaria ya que esta curvada en un mayor intervalo, esto tiene sentido por tener un coeficiente de conductividad menor.&lt;br /&gt;
&lt;br /&gt;
Ahora para apreciar mejor la diferencia vamos a representar ambas soluciones restándoles la estacionaria en x=1/2.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.5.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi1=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
wi2=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w1=@(x,t) 0;&lt;br /&gt;
w2=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w1=@(x,t) w1(x,t) + wi1(x,t,n);&lt;br /&gt;
    w2=@(x,t) w2(x,t) + wi2(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
u1=@(x,t) w1(x,t)+v(x);&lt;br /&gt;
u2=@(x,t) w2(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
%Hacemos la diferencia con la solución estacionaria&lt;br /&gt;
dif1=@(t) u1(0.5,t)-v(0.5);&lt;br /&gt;
dif2=@(t) u2(0.5,t)-v(0.5);&lt;br /&gt;
&lt;br /&gt;
% Gráfica &lt;br /&gt;
close all&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,dif1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,dif2(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1/2')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En estas gráficas podemos apreciar mejor que efectivamente esta solución tarda más en alcanzar la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
=Variación de las condiciones de frontera y las iniciales=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a variar las condiciones de frontera y la inicial y a ver cómo varía la solución. El problema que vamos a estudiar ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{2t}-u_{2xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_2(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Resolviendo este problema de la misma forma que los anteriores, obtenemos que la solución estacionaria &amp;lt;math&amp;gt; v_2(x)=0 &amp;lt;/math&amp;gt; y que la solución es: &amp;lt;math&amp;gt; u_2(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;. A diferencia de en los otros casos los &amp;lt;math&amp;gt;c_k&amp;lt;/math&amp;gt; los vamos a calcular aproximando las integrales por el [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals método del trapecio]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.6.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2));&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
close all&lt;br /&gt;
&lt;br /&gt;
a=0; b=1;                    &lt;br /&gt;
x=linspace(a,b,100);&lt;br /&gt;
t=linspace(a,b,100);&lt;br /&gt;
N=length(x)-1;&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1);              &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
f_n=zeros(length(x),length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    for k=1:100&lt;br /&gt;
        g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
        a_k=2*h*w'*g;&lt;br /&gt;
        f_n(i,:)= f_n(i,:)+a_k.*uk(x,t(i),k);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
colormap jet &lt;br /&gt;
surf(x,t,f_n,'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_2(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al igual que en los casos anteriores, podemos ver que la solución alcanza la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Ahora, igual que para el problema original, vamos a ver cómo se comporta el flujo en este problema.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.7.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2));&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
duk=@(x,t,k) -k*pi.*cos(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
close all&lt;br /&gt;
&lt;br /&gt;
a=0; b=1;                    &lt;br /&gt;
x=linspace(a,b,100);&lt;br /&gt;
t=linspace(a,b,100);&lt;br /&gt;
N=length(x)-1;&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1);              &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
q0=@(t)0;&lt;br /&gt;
q1=@(t)0;&lt;br /&gt;
    for k=1:100&lt;br /&gt;
        g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
        a_k=2*h*w'*g;&lt;br /&gt;
        q0=@(t) q0(t)+a_k.*duk(0,t,k);&lt;br /&gt;
        q1=@(t) q1(t)+a_k.*duk(1,t,k);&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,q0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,q1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Aislamiento de un extremo==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{3t}-u_{3xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_3(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_{3x}(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_3(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; v_3(x,t)=0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Solucion &amp;lt;math&amp;gt; u_3(x,t)=\sum_{k=1}^\infty c_k\sin((k+\frac{1}{2})\pi x)e^{-(k+\frac{1}{2})^2\pi^2 t} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Solución fundamental=&lt;br /&gt;
&lt;br /&gt;
La llamada solución fundamental de la ecuación del calor es la solución correspondiente a la condición inicial de un punto donde se concentra todo el calor.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
u_t - k u_{xx} = 0&amp;amp; (x, t) \in \mathbb{R} \times (0, \infty)\\&lt;br /&gt;
u(x,0)=\delta(x)&amp;amp;&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde ''&amp;lt;math&amp;gt;\delta&amp;lt;/math&amp;gt;'' es la función delta de Dirac, que vale 0 en todo punto menos en x, y su integral en toda la recta real es igual a 1. &lt;br /&gt;
&lt;br /&gt;
La solución a este problema es la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\Phi(x,t)=\frac{1}{\sqrt{4\pi kt}}\exp\left(-\frac{x^2}{4kt}\right).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.8.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Parámetros&lt;br /&gt;
k = 1;  % Coeficiente de conductividad&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
t = linspace(10^-2, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Inicialización de la matriz de soluciones&lt;br /&gt;
u = zeros(length(x), length(t));&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución fundamental&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
    u(:, i) = 1/sqrt(4 * pi * k * t(i)) * exp(-x.^2 / (4 * k * t(i)));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
colormap jet;&lt;br /&gt;
surf(x, t, u', 'FaceColor', 'interp');&lt;br /&gt;
title('Solución Fundamental de la Ecuación del Calor');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('t');&lt;br /&gt;
zlabel('Temperatura (u(x, t))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ANIMACIÓN:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
    u = 1/sqrt(4 * pi * k * t(i)) * exp(-x.^2 / (4 * k * t(i)));&lt;br /&gt;
&lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y la etiqueta&lt;br /&gt;
    title(['Evolución de la Temperatura (t = ' num2str(t(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 3]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.08);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Dimensión 2:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
k = 1;  % Difusividad térmica&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos en x y y&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
y = linspace(-1, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear una malla 2D&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Tiempos para la animación&lt;br /&gt;
t_values = linspace(0.001, 0.1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución fundamental en 2D&lt;br /&gt;
    u = 1/(4 * pi * k * t_values(i)) * exp(-(X.^2 + Y.^2) / (4 * k * t_values(i)));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    surf(X, Y, u, 'EdgeColor', 'none');&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución Fundamental en 2D (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición x');&lt;br /&gt;
    ylabel('Posición y');&lt;br /&gt;
    zlabel('Temperatura u(x, y, t)');&lt;br /&gt;
&lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    zlim([0, 20]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.2);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Soluciones autosemejantes==&lt;br /&gt;
&lt;br /&gt;
Lo bueno que tiene la solución fundamental es que no hemos tenido que restringirla a una región acotada del espacio, sino que es solución para todo &amp;lt;math&amp;gt; x \in \mathbb{R} &amp;lt;/math&amp;gt;. No estaría de más preguntarse si existen otras soluciones con esta propiedad.&lt;br /&gt;
La solución fundamental tiene la propiedad de ser autosemejante, es decir, su gráfica al variar el tiempo mantiene siempre la misma forma (una gaussiana).&lt;br /&gt;
&lt;br /&gt;
Podemos buscar otras soluciones con esta propiedad considerando el cambio de variable &amp;lt;math&amp;gt;\xi=\frac{x}{\sqrt{t}}&amp;lt;/math&amp;gt;. Se comprueba que esta combinación de variables es invariante respecto de dilataciones parabólicas y además no tiene dimensión (PÁG 44 DEL LIBRO).&lt;br /&gt;
&lt;br /&gt;
Imponemos que la función de una variable &amp;lt;math&amp;gt; U(\xi) &amp;lt;/math&amp;gt; cumpla la EDP, y llegamos a la EDO:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U'(\xi)+\frac{1}{2}U(\xi)=B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cuya solución, deshaciendo el cambio de variable, es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U(\frac{x}{\sqrt{t}})=Ae^{-{\frac{x}{2\sqrt{t}}}}+2B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
con &amp;lt;math&amp;gt; A,B &amp;lt;/math&amp;gt; constantes a determinar. Para ello, consideraremos las siguientes restricciones, que involucran una región espacial no acotada: &amp;lt;math&amp;gt; x&amp;gt;0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
&amp;amp;u(0, t) = 1 \\&lt;br /&gt;
&amp;amp;u(x, 0) = 0, x &amp;gt; 0\\&lt;br /&gt;
&amp;amp;lim_{x \to \infty } u(x,t)=0&lt;br /&gt;
\end{aligned}&lt;br /&gt;
\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Definir el intervalo espacial&lt;br /&gt;
x = linspace(0, 5, 100);&lt;br /&gt;
&lt;br /&gt;
% Definir el intervalo de tiempo&lt;br /&gt;
t_values = linspace(0.01, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución&lt;br /&gt;
    u = exp(-x / (2 * sqrt(t_values(i))));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución de la Ecuación del Calor (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.1);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Dato inicial distinto de 0==&lt;br /&gt;
(Falta cambiar el comando integral() por el de trapecio)&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
k = 1;  % Difusividad térmica&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-3, 3, 100);&lt;br /&gt;
t_values = linspace(0.0005, 0.3, 100);&lt;br /&gt;
&lt;br /&gt;
% Función dato inicial&lt;br /&gt;
f = @(x) double(x &amp;gt;= -1 &amp;amp; x &amp;lt;= 1);&lt;br /&gt;
&lt;br /&gt;
% Solución fundamental&lt;br /&gt;
G = @(x, t) 1/sqrt(4 * pi * k * t) * exp(-x.^2 / (4 * k * t));&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la convolución&lt;br /&gt;
    u = zeros(size(x));&lt;br /&gt;
    for j = 1:length(x)&lt;br /&gt;
        integrand = @(y) G(x(j) - y, t_values(i)) .* f(y);&lt;br /&gt;
        u(j) = integral(integrand, -inf, inf);&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y la etiqueta&lt;br /&gt;
    title(['Evolución de la Temperatura (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1.1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.01);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=69341</id>
		<title>Ecuación del calor (Raúl, Sofía, Jaime)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime)&amp;diff=69341"/>
				<updated>2024-03-06T12:20:18Z</updated>
		
		<summary type="html">&lt;p&gt;Raúl.Ortega: /* Soluciones autosemejantes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Ecuación del calor | [[:Categoría:EDP|EDP]]|[[:Categoría:EDP23/24|2023-24]] | Raúl Ortega&lt;br /&gt;
&lt;br /&gt;
Sofía Gómez&lt;br /&gt;
&lt;br /&gt;
Jaime Sáenz de Miera}}&lt;br /&gt;
&lt;br /&gt;
En este artículo vamos a estudiar la ecuación del calor en una dimensión mediante el estudio de una varilla metálica de longitud 1 y que se encuentra aislada por su superficie lateral, es decir, la conducción de calor solo se produce en la dirección longitudinal. Además, vamos a ver cómo varía la solución en función de la variación de distintos parámatros como las condiciones iniciales o el coeficiente de difusión.&lt;br /&gt;
&lt;br /&gt;
=Preliminares=&lt;br /&gt;
&lt;br /&gt;
Antes de empezar a desarrollar el problema necesitamos conocer algunos conceptos que nos van a permitir modelizarlo y sacar sus ecuaciones.&lt;br /&gt;
&lt;br /&gt;
* La '''ley de Fourier''' establece que el flujo de transferencia de calor es proporcional y de sentido contrario al gradiente de temperatura en esa dirección.&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; q=-k\nabla u &amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Siendo k la conductividad térmica.&lt;br /&gt;
&lt;br /&gt;
*Conservación de la energía.&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
=Problema original=&lt;br /&gt;
En este primer apartado, vamos a suponer que la temperatura inicial de la varilla es 0ºC y que en el extremo izquierdo se consigue mantener la temperatura a 0ºC mientras que en el derecho la temperatura es siempre de 1ºC. Teniendo esto en cuenta y los conceptos desarrollados en el apartado anterior, el sistema de ecuaciones que representa el problema es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_t-u_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Homogeneización==&lt;br /&gt;
&lt;br /&gt;
Antes de empezar con la resolución del problema vamos a homogeneizar las condiciones de contorno. Para hacer esto vamos a restarle al problema la solución estacionaria, es decir, la que permanece invariante respecto al tiempo. Esto implica que &amp;lt;math&amp;gt; u_t\sim 0 &amp;lt;/math&amp;gt; y que &amp;lt;math&amp;gt; u(x,t)\sim v(x) &amp;lt;/math&amp;gt;. Por lo que el problema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
v_{xx}=0 &amp;amp; x\in(0,1)\\&lt;br /&gt;
v(0)=0\\&lt;br /&gt;
v(1)=1\\&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución de este problema, y por tanto la solución estacionaria es: &amp;lt;math&amp;gt; v(x)=x &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.1.jpg|400px|thumb|right|Solución estacionaria]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
v=@(x,t) x;&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(v, [0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('v(x)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Una vez tenemos la solución estacionaria, tomamos &amp;lt;math&amp;gt; w(x,t)=u(x,t)-v(x) &amp;lt;/math&amp;gt; y vemos como queda el problema homogeneizado para &amp;lt;math&amp;gt; w(x,t)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
w_t-w_{xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
w(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
w(x,0)=-x&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Una vez homogeneizado el sistema podemos empezar a buscar la solución por el método de separación de variables, en el cual vamos a suponer que la solución es de la forma: &amp;lt;math&amp;gt; w(x,t)=X(x)T(t) &amp;lt;/math&amp;gt;. Como &amp;lt;math&amp;gt;w(x,t)&amp;lt;/math&amp;gt; es solución obtenemos que se tiene que cumplir &amp;lt;math&amp;gt;\frac{X''(x)}{X(x)}=\frac{T'(t)}{T(t)}=\lambda_k&amp;lt;/math&amp;gt; dando lugar a la resolución de dos problemas por separado, uno que depende de &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt; y otro que depende de &amp;lt;math&amp;gt; t&amp;lt;/math&amp;gt;. Al solucionar ambos problemas obtenemos el siguiente resultado: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para que &amp;lt;math&amp;gt; w(x,t) &amp;lt;/math&amp;gt; sea solución de nuestro problema, solo falta ver que cumpla la condición incial, es decir, que &amp;lt;math&amp;gt; w(x,0)=c_k\sin(k\pi x)=-x &amp;lt;/math&amp;gt;. De esta igualdad sacamos que si extendemos la función &amp;lt;math&amp;gt; -x &amp;lt;/math&amp;gt; de forma impar los coeficientes &amp;lt;math&amp;gt; c_k&amp;lt;/math&amp;gt; van a ser los coeficiente de la [https://mat.caminos.upm.es/wiki/Series_de_Fourier_(Ra%C3%BAl,_Sof%C3%ADa,_Jaime) serie de Fourier]. Por tanto, la solución queda de la siguiente manera: &amp;lt;math&amp;gt; w(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Esta función es la solución del problema homogeneizado, por lo que para obtener la solución del problema original tenemos que deshacer el cambio de variable. La solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{-k^2\pi^2 t}+x&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora vamos a graficar los 10 primeros términos de la serie en &amp;lt;math&amp;gt; t \in [0,1]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.2c.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
close all&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&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;
En la gráfica podemos observar que la solución del poblema alcanza la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Por la ley de Fourier sabemos que &amp;lt;math&amp;gt; q=-k u_x &amp;lt;/math&amp;gt;, siendo q el flujo. Por lo que para interpretar como es el flujo en nuestro problema, vamos a graficar como es en los extremos suponiendo que &amp;lt;math&amp;gt; k=1 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gr2.3.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos la función &lt;br /&gt;
dwi=@(x,t,k) (2*(-1)^(k+1)).*cos(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
dv=@(x) 1;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
dw0=@(t) 0;&lt;br /&gt;
dw1=@(t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    dw0=@(t) dw0(t) + dwi(0,t,n);&lt;br /&gt;
    dw1=@(t) dw1(t) + dwi(1,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
du0=@(t) dw0(t)-dv(0);&lt;br /&gt;
du1=@(t) dw1(t)-dv(1);&lt;br /&gt;
&lt;br /&gt;
% Gráfica &lt;br /&gt;
close all&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,du0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,du1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('u´(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al observar la gráfica en el extremo izquierdo vemos que al principio no hay flujo debido a que tanto la barra como el extremo están a 0º. Una vez avanza el tiempo el flujo va siendo cada vez más negativo lo que implica que cada vez sale más flujo por el extremo izquierdo. Esto tiene sentido ya que como la barra se va calentando, como podemos ver en la gráfica de la solución, y el extremo se mantiene a 0º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor.&lt;br /&gt;
&lt;br /&gt;
Por el contrario, en la gráfica del extremos derecho podemos observar que inicialmente hay mucho flujo hacia el interior de la barra debido a que la barra está a 0º y el extremo a 1º. Una vez avanza el tiempo el flujo va siendo cada vez menos negativo lo que implica que cada vez entra menos flujo por el extremo derecho. Esto es coherente ya que como la barra se va calentando, y el extremo se mantiene a 1º el flujo tiende ir de donde hay mayor temperatura a donde hay una temperatura menor como hemos mencionado antes.&lt;br /&gt;
&lt;br /&gt;
Al comparar ambas gráficas, cabe destacar dos aspectos característicos:&lt;br /&gt;
* Lo primero que cabe preguntarse es por qué cuando en la gráfica hay una gran variación del flujo, en el extremo izquierdo desciende más moderadamente, y en el extremo derecho asciende drásticamente. Esto se debe a que en el extremo izquierdo la diferencia de temperatura entre dos puntos cercanos es menor que en el derecho, cosa que podemos observar en la gráfica de la solución.&lt;br /&gt;
* También llama la atención que ambas gráficas se acaban estabilizando en un flujo de -1, este punto coincide con el punto en el que la solución alcanza la solución estacionaria, por lo que tiene sentido que el flujo en ambos extremos se estabilice en el mismo valor.&lt;br /&gt;
&lt;br /&gt;
=Variación coeficiente de conductividad=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a ver como varia la solución cuando variamos el coeficiente de conductividad térmica de 1 a 1/2. Con este coeficiente el sistema queda de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{1t}-\frac{1}{2}u_{1xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_1(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(1,t)=1&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_1(x,0)=0&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendolo de la misma forma que el anterior obtenemos que la solución es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt; &lt;br /&gt;
u_1(x,t)=\sum_{k=1}^\infty\frac{2(-1)^k}{k\pi}\sin(k\pi x)e^{\frac{-k^2\pi^2 t}{2}}+x,&lt;br /&gt;
&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y que la estacionaria no varía &amp;lt;math&amp;gt; v_1(x)=x &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:gf2.4b.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
clear all&lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w=@(x,t) w(x,t) + wi(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
u=@(x,t) w(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
close all&lt;br /&gt;
colormap jet&lt;br /&gt;
fsurf(u,[0 1 0 1], 'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_1(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Aunque a primera vista pueda parecer igual que la solución del problema original, si nos fijamos bien podemos observar que esta tarda más en alcanzar la solución estacionaria ya que esta curvada en un mayor intervalo, esto tiene sentido por tener un coeficiente de conductividad menor.&lt;br /&gt;
&lt;br /&gt;
Ahora para apreciar mejor la diferencia vamos a representar ambas soluciones restándoles la estacionaria en x=1/2.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.5.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Definimos las funciones&lt;br /&gt;
wi1=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t);&lt;br /&gt;
wi2=@(x,t,k) ((2*(-1)^(k))/(k*pi)).*sin(k.*pi.*x).*exp(-k^2.*pi^2.*t./2);&lt;br /&gt;
v=@(x) x;&lt;br /&gt;
&lt;br /&gt;
%Sumamos los 10 primeros términos&lt;br /&gt;
w1=@(x,t) 0;&lt;br /&gt;
w2=@(x,t) 0;&lt;br /&gt;
for n=1:10&lt;br /&gt;
    w1=@(x,t) w1(x,t) + wi1(x,t,n);&lt;br /&gt;
    w2=@(x,t) w2(x,t) + wi2(x,t,n);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
u1=@(x,t) w1(x,t)+v(x);&lt;br /&gt;
u2=@(x,t) w2(x,t)+v(x);&lt;br /&gt;
&lt;br /&gt;
%Hacemos la diferencia con la solución estacionaria&lt;br /&gt;
dif1=@(t) u1(0.5,t)-v(0.5);&lt;br /&gt;
dif2=@(t) u2(0.5,t)-v(0.5);&lt;br /&gt;
&lt;br /&gt;
% Gráfica &lt;br /&gt;
close all&lt;br /&gt;
t=linspace(0,1,100);&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,dif1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,dif2(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('w(0.5,t)-v(0.5)')&lt;br /&gt;
title('k=1/2')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
En estas gráficas podemos apreciar mejor que efectivamente esta solución tarda más en alcanzar la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
=Variación de las condiciones de frontera y las iniciales=&lt;br /&gt;
&lt;br /&gt;
En este apartado vamos a variar las condiciones de frontera y la inicial y a ver cómo varía la solución. El problema que vamos a estudiar ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{2t}-u_{2xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_2(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_2(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución==&lt;br /&gt;
&lt;br /&gt;
Resolviendo este problema de la misma forma que los anteriores, obtenemos que la solución estacionaria &amp;lt;math&amp;gt; v_2(x)=0 &amp;lt;/math&amp;gt; y que la solución es: &amp;lt;math&amp;gt; u_2(x,t)=\sum_{k=1}^\infty c_k\sin(k\pi x)e^{-k^2\pi^2 t} &amp;lt;/math&amp;gt;. A diferencia de en los otros casos los &amp;lt;math&amp;gt;c_k&amp;lt;/math&amp;gt; los vamos a calcular aproximando las integrales por el [https://mat.caminos.upm.es/wiki/Trapezoidal_rule_to_approximate_integrals método del trapecio]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.6.jpg|400px|thumb|right|Solución del problema]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2));&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
close all&lt;br /&gt;
&lt;br /&gt;
a=0; b=1;                    &lt;br /&gt;
x=linspace(a,b,100);&lt;br /&gt;
t=linspace(a,b,100);&lt;br /&gt;
N=length(x)-1;&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1);              &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
f_n=zeros(length(x),length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    for k=1:100&lt;br /&gt;
        g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
        a_k=2*h*w'*g;&lt;br /&gt;
        f_n(i,:)= f_n(i,:)+a_k.*uk(x,t(i),k);&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
colormap jet &lt;br /&gt;
surf(x,t,f_n,'FaceColor','interp')&lt;br /&gt;
xlabel('x')&lt;br /&gt;
ylabel('t')&lt;br /&gt;
zlabel('u_2(x,t)')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Al igual que en los casos anteriores, podemos ver que la solución alcanza la solución estacionaria.&lt;br /&gt;
&lt;br /&gt;
==Flujo en los extremos==&lt;br /&gt;
&lt;br /&gt;
Ahora, igual que para el problema original, vamos a ver cómo se comporta el flujo en este problema.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.7.jpg|450px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
u0=@(x) max(0,1-4*abs(x-1/2));&lt;br /&gt;
uk=@(x,t,k) sin(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
duk=@(x,t,k) -k*pi.*cos(k.*pi.*x).*exp(-k.^2*pi.^2.*t);&lt;br /&gt;
close all&lt;br /&gt;
&lt;br /&gt;
a=0; b=1;                    &lt;br /&gt;
x=linspace(a,b,100);&lt;br /&gt;
t=linspace(a,b,100);&lt;br /&gt;
N=length(x)-1;&lt;br /&gt;
h=(b-a)/N;&lt;br /&gt;
w=ones(N+1,1);              &lt;br /&gt;
w(1)=1/2; w(N+1)=1/2;&lt;br /&gt;
q0=@(t)0;&lt;br /&gt;
q1=@(t)0;&lt;br /&gt;
    for k=1:100&lt;br /&gt;
        g=u0(x)*sin(k*pi*x)'; &lt;br /&gt;
        a_k=2*h*w'*g;&lt;br /&gt;
        q0=@(t) q0(t)+a_k.*duk(0,t,k);&lt;br /&gt;
        q1=@(t) q1(t)+a_k.*duk(1,t,k);&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
subplot(2,1,1)&lt;br /&gt;
plot(t,q0(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(0,t)')&lt;br /&gt;
title('Flujo en el extremo izquierdo')&lt;br /&gt;
subplot(2,1,2)&lt;br /&gt;
plot(t,q1(t),color='b',LineWidth=1.5)&lt;br /&gt;
xlabel('t')&lt;br /&gt;
ylabel('-u_{2x}(1,t)')&lt;br /&gt;
title('Flujo en el extremo derecho')&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Aislamiento de un extremo==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; \begin{cases}&lt;br /&gt;
u_{3t}-u_{3xx}=0 &amp;amp; x\in(0,1),t&amp;gt;0\\&lt;br /&gt;
u_3(0,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_{3x}(1,t)=0&amp;amp;t&amp;gt;0\\&lt;br /&gt;
u_3(x,0)=max\{0,1-4|x-1/2|\}&amp;amp;x\in(0,1)&lt;br /&gt;
\end{cases}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; v_3(x,t)=0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Solucion &amp;lt;math&amp;gt; u_3(x,t)=\sum_{k=1}^\infty c_k\sin((k+\frac{1}{2})\pi x)e^{-(k+\frac{1}{2})^2\pi^2 t} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Solución fundamental=&lt;br /&gt;
&lt;br /&gt;
La llamada solución fundamental de la ecuación del calor es la solución correspondiente a la condición inicial de un punto donde se concentra todo el calor.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
u_t - k u_{xx} = 0&amp;amp; (x, t) \in \mathbb{R} \times (0, \infty)\\&lt;br /&gt;
u(x,0)=\delta(x)&amp;amp;&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde ''&amp;lt;math&amp;gt;\delta&amp;lt;/math&amp;gt;'' es la función delta de Dirac, que vale 0 en todo punto menos en x, y su integral en toda la recta real es igual a 1. &lt;br /&gt;
&lt;br /&gt;
La solución a este problema es la solución fundamental:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\Phi(x,t)=\frac{1}{\sqrt{4\pi kt}}\exp\left(-\frac{x^2}{4kt}\right).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:g2.8.jpg|400px|thumb|right]]&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
%Parámetros&lt;br /&gt;
k = 1;  % Coeficiente de conductividad&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
t = linspace(10^-2, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Inicialización de la matriz de soluciones&lt;br /&gt;
u = zeros(length(x), length(t));&lt;br /&gt;
&lt;br /&gt;
% Cálculo de la solución fundamental&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
    u(:, i) = 1/sqrt(4 * pi * k * t(i)) * exp(-x.^2 / (4 * k * t(i)));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
% Gráfica en 3D&lt;br /&gt;
colormap jet;&lt;br /&gt;
surf(x, t, u', 'FaceColor', 'interp');&lt;br /&gt;
title('Solución Fundamental de la Ecuación del Calor');&lt;br /&gt;
xlabel('x');&lt;br /&gt;
ylabel('t');&lt;br /&gt;
zlabel('Temperatura (u(x, t))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ANIMACIÓN:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo= &lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t)&lt;br /&gt;
    u = 1/sqrt(4 * pi * k * t(i)) * exp(-x.^2 / (4 * k * t(i)));&lt;br /&gt;
&lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y la etiqueta&lt;br /&gt;
    title(['Evolución de la Temperatura (t = ' num2str(t(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 3]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.08);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Dimensión 2:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
k = 1;  % Difusividad térmica&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos en x y y&lt;br /&gt;
x = linspace(-1, 1, 100);&lt;br /&gt;
y = linspace(-1, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear una malla 2D&lt;br /&gt;
[X, Y] = meshgrid(x, y);&lt;br /&gt;
&lt;br /&gt;
% Tiempos para la animación&lt;br /&gt;
t_values = linspace(0.001, 0.1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución fundamental en 2D&lt;br /&gt;
    u = 1/(4 * pi * k * t_values(i)) * exp(-(X.^2 + Y.^2) / (4 * k * t_values(i)));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    surf(X, Y, u, 'EdgeColor', 'none');&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución Fundamental en 2D (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición x');&lt;br /&gt;
    ylabel('Posición y');&lt;br /&gt;
    zlabel('Temperatura u(x, y, t)');&lt;br /&gt;
&lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    zlim([0, 20]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.2);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Soluciones autosemejantes==&lt;br /&gt;
&lt;br /&gt;
Lo bueno que tiene la solución fundamental es que no hemos tenido que restringirla a una región acotada del espacio, sino que es solución para todo &amp;lt;math&amp;gt; x \in \mathbb{R} &amp;lt;/math&amp;gt;. No estaría de más preguntarse si existen otras soluciones con esta propiedad.&lt;br /&gt;
La solución fundamental tiene la propiedad de ser autosemejante, es decir, su gráfica al variar el tiempo mantiene siempre la misma forma (una gaussiana).&lt;br /&gt;
&lt;br /&gt;
Podemos buscar otras soluciones con esta propiedad considerando el cambio de variable &amp;lt;math&amp;gt;\xi=\frac{x}{\sqrt{t}}&amp;lt;/math&amp;gt;. Se comprueba que esta combinación de variables es invariante respecto de dilataciones parabólicas y además no tiene dimensión (PÁG 44 DEL LIBRO).&lt;br /&gt;
&lt;br /&gt;
Imponemos que la función de una variable &amp;lt;math&amp;gt; U(\xi) &amp;lt;/math&amp;gt; cumpla la EDP, y llegamos a la EDO:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U'(\xi)+\frac{1}{2}U(\xi)=B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cuya solución, deshaciendo el cambio de variable, es:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;U(\frac{x}{\sqrt{t}})=Ae^{-{\frac{x}{2\sqrt{t}}}}+2B&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
con &amp;lt;math&amp;gt; A,B &amp;lt;/math&amp;gt; constantes a determinar. Para ello, consideraremos las siguientes restricciones, que involucran una región espacial no acotada:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Definir el intervalo espacial&lt;br /&gt;
x = linspace(0, 5, 100);&lt;br /&gt;
&lt;br /&gt;
% Definir el intervalo de tiempo&lt;br /&gt;
t_values = linspace(0.01, 1, 100);&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la solución&lt;br /&gt;
    u = exp(-x / (2 * sqrt(t_values(i))));&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y las etiquetas&lt;br /&gt;
    title(['Solución de la Ecuación del Calor (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.1);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Dato inicial distinto de 0==&lt;br /&gt;
(Falta cambiar el comando integral() por el de trapecio)&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Parámetros&lt;br /&gt;
k = 1;  % Difusividad térmica&lt;br /&gt;
&lt;br /&gt;
% Definición de los intervalos&lt;br /&gt;
x = linspace(-3, 3, 100);&lt;br /&gt;
t_values = linspace(0.0005, 0.3, 100);&lt;br /&gt;
&lt;br /&gt;
% Función dato inicial&lt;br /&gt;
f = @(x) double(x &amp;gt;= -1 &amp;amp; x &amp;lt;= 1);&lt;br /&gt;
&lt;br /&gt;
% Solución fundamental&lt;br /&gt;
G = @(x, t) 1/sqrt(4 * pi * k * t) * exp(-x.^2 / (4 * k * t));&lt;br /&gt;
&lt;br /&gt;
% Crear la figura&lt;br /&gt;
figure;&lt;br /&gt;
&lt;br /&gt;
% Bucle para crear la animación&lt;br /&gt;
for i = 1:length(t_values)&lt;br /&gt;
    % Calcular la convolución&lt;br /&gt;
    u = zeros(size(x));&lt;br /&gt;
    for j = 1:length(x)&lt;br /&gt;
        integrand = @(y) G(x(j) - y, t_values(i)) .* f(y);&lt;br /&gt;
        u(j) = integral(integrand, -inf, inf);&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    % Actualizar la gráfica&lt;br /&gt;
    plot(x, u, 'LineWidth', 2);&lt;br /&gt;
    &lt;br /&gt;
    % Configurar el eje y la etiqueta&lt;br /&gt;
    title(['Evolución de la Temperatura (t = ' num2str(t_values(i)) ')']);&lt;br /&gt;
    xlabel('Posición (x)');&lt;br /&gt;
    ylabel('Temperatura (u(x, t))');&lt;br /&gt;
    &lt;br /&gt;
    % Establecer límites del eje y para mantener la escala&lt;br /&gt;
    ylim([0, 1.1]);&lt;br /&gt;
    &lt;br /&gt;
    % Pausa para controlar la velocidad de la animación&lt;br /&gt;
    pause(0.01);&lt;br /&gt;
    &lt;br /&gt;
    % Borrar la gráfica anterior para la siguiente iteración&lt;br /&gt;
    if i &amp;lt; length(t_values)&lt;br /&gt;
        clf;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Raúl.Ortega</name></author>	</entry>

	</feed>