<?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=Carlos+Nieto+Egido</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=Carlos+Nieto+Egido"/>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/wiki/Especial:Contribuciones/Carlos_Nieto_Egido"/>
		<updated>2026-04-29T20:34:57Z</updated>
		<subtitle>Contribuciones del usuario</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35752</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35752"/>
				<updated>2016-05-08T10:02:07Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
=Planteamiento del probema=&lt;br /&gt;
Según Flick para que el fenómeno de la difusión tenga lugar, la distribución espacial de moléculas no debe ser homogénea, debe existir una diferencia, o gradiente de concentración entre dos puntos del medio.&lt;br /&gt;
Para ello suponemos que la concentración varia con la posición de la barra en el eje x (abscisas) denominaremos a u como la concentración en este caso de contaminante por cada posición del tubo. La ley de Flick afirma que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x)&lt;br /&gt;
Consideraremos que cada sección es muy pequeña respecto del tubo que será un objeto unidimensional de longitud en el eje x[0,L] siendo L=7m.&lt;br /&gt;
La concentración en cada punto de la barra a lo largo del tiempo será u(x,t)&lt;br /&gt;
La acumulación de partículas en la unidad de tiempo que se produce en el elemento de volumen S•dx es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir&lt;br /&gt;
uS-u’S=(du/dx).S.dx&lt;br /&gt;
La acumulación de partículas en la unidad de tiempo es&lt;br /&gt;
S.dx.(du/dt)&lt;br /&gt;
Igualando ambas expresiones y utilizando la Ley de Flick se obtiene&lt;br /&gt;
d(D.(du/dx))/dx=du/dt&lt;br /&gt;
Ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión . Si el coeficiente de difusión D no depende de la concentración&lt;br /&gt;
 (1/D).(du/dt)=(d^2u)/(dx^2)== (1/D).(du/dt)- (d^2u)/(dx^2)=0;&lt;br /&gt;
(1/D).(du/dt)=usubt==ut;&lt;br /&gt;
(d^2u)/(dx^2)==Dusubxx==Duxx&lt;br /&gt;
conclusión:   ut − Duxx = 0.&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
Sistema= \left\{\begin{matrix}\U'=-KU+F=0\\U(0)=U^0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecio2A14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicito3A14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerImplicito3A14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaHeun3A14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variable x mediante el método de Euler implícito.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia. Vale 5.85&lt;br /&gt;
[[ Archivo:GraficaMasa2A14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[ Archivo:ConcentracionPuntoMedio2A14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
&lt;br /&gt;
=Concentración a lo largo del tiempo=&lt;br /&gt;
Se puede comprobar en la siguiente gráfica que para tiempos grandes la cantidad de contaminante se irá acercando al valor estacionario de 1.17. Es decir, nuestra solución del problema debe parecerse a la función u(x,t)=1.17, es constante, luego no varía.&lt;br /&gt;
&lt;br /&gt;
El código usado:&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 % Datos&lt;br /&gt;
  L=7;&lt;br /&gt;
  T=10;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.1;&lt;br /&gt;
 N=L/h;&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
 % Discretizacion temporal&lt;br /&gt;
 dt=h/4; % Tamaño de paso&lt;br /&gt;
 t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 % Matriz K&lt;br /&gt;
 K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
 K(1,2)=-2;&lt;br /&gt;
 K(N+1,N)=-2;&lt;br /&gt;
 K=q*K/h^2;&lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
 % Calculamos u0&lt;br /&gt;
 u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
 % Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
 sol(1,:)=u0'; &lt;br /&gt;
 U=u0; % Inicializacion&lt;br /&gt;
 % Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
 for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
 U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
 sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
 end&lt;br /&gt;
 % Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
 contaminante=zeros(1,length(t));&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 f=sol(i,:);&lt;br /&gt;
 area=trapz(x,f);&lt;br /&gt;
 contaminante(i)=area;&lt;br /&gt;
 end&lt;br /&gt;
%Solución estacionaria&lt;br /&gt;
 a=sol(length(t),:);&lt;br /&gt;
 b=sol(1,:);&lt;br /&gt;
 c=sol((length(t)-1)/50+1,:);&lt;br /&gt;
 d=sol((length(t)-1)*2/50+1,:);&lt;br /&gt;
 e=sol((length(t)-1)*10/50+1,:);&lt;br /&gt;
 hold on&lt;br /&gt;
 plot(x,a);&lt;br /&gt;
 plot(x,b);&lt;br /&gt;
 plot(x,c);&lt;br /&gt;
 plot(x,d);&lt;br /&gt;
 plot(x,e);&lt;br /&gt;
 xlabel('Tubo')&lt;br /&gt;
 ylabel('Concentracion')&lt;br /&gt;
 hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:grafico_concentra_tiempo.jpg ‎|marco|centro|Concentración a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La distancia entre la solución estacionaria y las soluciones para los siguientes instantes: 0s, 1s, 2s y 10s; se puede apreciar en la imagen anterior. Además las distancias entre la solución estacionaria y la solución u(x,t) para t=0,1,2,10 son:&lt;br /&gt;
&lt;br /&gt;
dist10=0.3624&lt;br /&gt;
&lt;br /&gt;
dist1=0.9650&lt;br /&gt;
&lt;br /&gt;
dist2=0.7853&lt;br /&gt;
&lt;br /&gt;
dist0=1.3880&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Y el código Matlab usado es:&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 %distancias&lt;br /&gt;
 dist0=(sqrt(sum((sol(1,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist1=(sqrt(sum((sol(41,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist2=(sqrt(sum((sol(81,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist10=(sqrt(sum((sol(401,:)-1.17).^2)/(N+1)));&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar el estado estacionario con un error del 5% calculamos la media cuadrática de las distancias desde cada punto de la función al estado estacionario.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 % El error del 5%&lt;br /&gt;
 limite=0.05*8.25;&lt;br /&gt;
 % Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 dist=(sqrt(sum((sol(i,:)-1.17).^2)/(N+1)));&lt;br /&gt;
  if dist&amp;lt;limite&lt;br /&gt;
 tiempo=(i-1)*dt;&lt;br /&gt;
  break&lt;br /&gt;
 end&lt;br /&gt;
 end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Se obtiene un tiempo de 7.300 segundos. &lt;br /&gt;
Al dividir \triangle x por 10 sale un tiempo de 8.353 segundos.&lt;br /&gt;
&lt;br /&gt;
=Nuevas condiciones de frontera=&lt;br /&gt;
&lt;br /&gt;
==Aplicación de un limpiador==&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1,se coloca en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo,modificando las condiciones de frontera del problema generando que una condición de frontera tipo Neumann pase a ser una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
usaremos el '''método de diferencias finitas'' para llevar a cabo una aproximación del problema, siendo el código de Matlab obtenido: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=1;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El valor estacionario de la concentración en el tubo será de cero, debido a que se ha colocado un limpiador en uno de sus extremos que irá eliminando el contaminante.&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar este otro estado estacionario con un error del 5% vamos a calcular la media cuadrática de las concentraciones y ver cual coincide con el 5% de 5.85/7.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=70;&lt;br /&gt;
q=1;&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 &lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
 &lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:(1/dt) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=(1/dt):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(5.85/7);&lt;br /&gt;
% Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
dist=(sqrt(sum(sol(i,:).^2)/(N+1)));&lt;br /&gt;
if dist&amp;lt;limite&lt;br /&gt;
tiempo=(i-1)*dt&lt;br /&gt;
break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
Obteniendo un tiempo de 65.775.&lt;br /&gt;
&lt;br /&gt;
=Variación de las condiciones de frontera tipo Neumann=&lt;br /&gt;
Las nuevas condiciones neumann no son homogéneas. tendremos que homogeneizarlas con el siguiente cambio de variable :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,t)=w(x,t)+2a(t)x^2+b(t)x&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
el nuevo problema quedaría de la siguiente manera :&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=-3/7 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=-3, t&amp;gt;0\\w(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
w(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos observar que es un problema bien propuesto analizando su existencia de solución, unicidad y estabilidad con respecto al dato inicial.&lt;br /&gt;
&lt;br /&gt;
ahora ya se trata de un sistema con condiciones de frontera homogéneas, el problema de autovalores asociado es:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(PA)\left\{\begin{matrix}\\x''+μx=0 ,x\in\ (0,7)\\x'(0)=0\\x'(7)=0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y los autovalores y autofunciones salvo una constante son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;μ_k=\frac{\pi^2k^2}{49}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;φ_k=cos(kπ/7)x&amp;lt;/math&amp;gt;  k=0,1,2,3...&lt;br /&gt;
&lt;br /&gt;
Se aproxima el dato inicial y el segundo miembro, se elige Q y se toma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q c_kφ_k(x)=-3/7&amp;lt;/math&amp;gt;:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q a_kφ_k(x)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
donde se deduce que &amp;lt;math&amp;gt;c_k=\frac{\displaystyle\int_{0}^{7} -3/7cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_k=\frac{\displaystyle\int_{0}^{7} u_0cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El problema aproximado queda de la forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=\displaystyle\sum_{k=0}^Q c_kφ_k(x)&lt;br /&gt;
 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=0, t&amp;gt;0\\w(x,0)=w_0=\displaystyle\sum_{k=0}^Q a_kφ_k(x), x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Luego la solución aproximada que obtenemos será:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q T_k(t)φ_k(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo en la ecuación de difusión de una sustancia contaminante e igualando los coeficicientes de Fourier se obtiene el sistema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left\{\begin{matrix}\\T'_k(t)+μ_kT_k(t)=c_k\\T_k(0)=a_k\end{matrix}\right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendo el problema de valor inicial, se deduce que &amp;lt;math&amp;gt; T_k(t)=Ce^{-μ_k t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada queda de la forma &amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q Ce^{-μ_k t} cos(kπ/7)x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El valor de la constante C depende de la condición inicial,que es la que condiciona el valor de a&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
por ultimo solo nos quedaria deshacer el cambio de variable.&lt;br /&gt;
&lt;br /&gt;
[[Categoría:ED15/16]]&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35751</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35751"/>
				<updated>2016-05-08T09:45:05Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Planteamiento del probema */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
=Planteamiento del probema=&lt;br /&gt;
Según Flick para que el fenómeno de la difusión tenga lugar, la distribución espacial de moléculas no debe ser homogénea, debe existir una diferencia, o gradiente de concentración entre dos puntos del medio.&lt;br /&gt;
Para ello suponemos que la concentración varia con la posición de la barra en el eje x (abscisas) denominaremos a u como la concentración en este caso de contaminante por cada posición del tubo. La ley de Flick afirma que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x)&lt;br /&gt;
Consideraremos que cada sección es muy pequeña respecto del tubo que será un objeto unidimensional de longitud en el eje x[0,L] siendo L=7m.&lt;br /&gt;
La concentración en cada punto de la barra a lo largo del tiempo será u(x,t)&lt;br /&gt;
La acumulación de partículas en la unidad de tiempo que se produce en el elemento de volumen S•dx es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir&lt;br /&gt;
uS-u’S=(du/dx).S.dx&lt;br /&gt;
La acumulación de partículas en la unidad de tiempo es&lt;br /&gt;
S.dx.(du/dt)&lt;br /&gt;
Igualando ambas expresiones y utilizando la Ley de Flick se obtiene&lt;br /&gt;
d(D.(du/dx))/dx=du/dt&lt;br /&gt;
Ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión . Si el coeficiente de difusión D no depende de la concentración&lt;br /&gt;
 (1/D).(du/dt)=(d^2u)/(dx^2)== (1/D).(du/dt)- (d^2u)/(dx^2)=0;&lt;br /&gt;
(1/D).(du/dt)=usubt==ut;&lt;br /&gt;
(d^2u)/(dx^2)==Dusubxx==Duxx&lt;br /&gt;
conclusión:   ut − Duxx = 0.&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecio2A14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicito3A14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerImplicito3A14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaHeun3A14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variable x mediante el método de Euler implícito.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia. Vale 5.85&lt;br /&gt;
[[ Archivo:GraficaMasa2A14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[ Archivo:ConcentracionPuntoMedio2A14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
&lt;br /&gt;
=Concentración a lo largo del tiempo=&lt;br /&gt;
Se puede comprobar en la siguiente gráfica que para tiempos grandes la cantidad de contaminante se irá acercando al valor estacionario de 1.17. Es decir, nuestra solución del problema debe parecerse a la función u(x,t)=1.17, es constante, luego no varía.&lt;br /&gt;
&lt;br /&gt;
El código usado:&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 % Datos&lt;br /&gt;
  L=7;&lt;br /&gt;
  T=10;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.1;&lt;br /&gt;
 N=L/h;&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
 % Discretizacion temporal&lt;br /&gt;
 dt=h/4; % Tamaño de paso&lt;br /&gt;
 t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 % Matriz K&lt;br /&gt;
 K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
 K(1,2)=-2;&lt;br /&gt;
 K(N+1,N)=-2;&lt;br /&gt;
 K=q*K/h^2;&lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
 % Calculamos u0&lt;br /&gt;
 u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
 % Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
 sol(1,:)=u0'; &lt;br /&gt;
 U=u0; % Inicializacion&lt;br /&gt;
 % Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
 for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
 U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
 sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
 end&lt;br /&gt;
 % Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
 contaminante=zeros(1,length(t));&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 f=sol(i,:);&lt;br /&gt;
 area=trapz(x,f);&lt;br /&gt;
 contaminante(i)=area;&lt;br /&gt;
 end&lt;br /&gt;
%Solución estacionaria&lt;br /&gt;
 a=sol(length(t),:);&lt;br /&gt;
 b=sol(1,:);&lt;br /&gt;
 c=sol((length(t)-1)/50+1,:);&lt;br /&gt;
 d=sol((length(t)-1)*2/50+1,:);&lt;br /&gt;
 e=sol((length(t)-1)*10/50+1,:);&lt;br /&gt;
 hold on&lt;br /&gt;
 plot(x,a);&lt;br /&gt;
 plot(x,b);&lt;br /&gt;
 plot(x,c);&lt;br /&gt;
 plot(x,d);&lt;br /&gt;
 plot(x,e);&lt;br /&gt;
 xlabel('Tubo')&lt;br /&gt;
 ylabel('Concentracion')&lt;br /&gt;
 hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:grafico_concentra_tiempo.jpg ‎|marco|centro|Concentración a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La distancia entre la solución estacionaria y las soluciones para los siguientes instantes: 0s, 1s, 2s y 10s; se puede apreciar en la imagen anterior. Además las distancias entre la solución estacionaria y la solución u(x,t) para t=0,1,2,10 son:&lt;br /&gt;
&lt;br /&gt;
dist10=0.3624&lt;br /&gt;
&lt;br /&gt;
dist1=0.9650&lt;br /&gt;
&lt;br /&gt;
dist2=0.7853&lt;br /&gt;
&lt;br /&gt;
dist0=1.3880&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Y el código Matlab usado es:&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 %distancias&lt;br /&gt;
 dist0=(sqrt(sum((sol(1,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist1=(sqrt(sum((sol(41,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist2=(sqrt(sum((sol(81,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist10=(sqrt(sum((sol(401,:)-1.17).^2)/(N+1)));&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar el estado estacionario con un error del 5% calculamos la media cuadrática de las distancias desde cada punto de la función al estado estacionario.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 % El error del 5%&lt;br /&gt;
 limite=0.05*8.25;&lt;br /&gt;
 % Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 dist=(sqrt(sum((sol(i,:)-1.17).^2)/(N+1)));&lt;br /&gt;
  if dist&amp;lt;limite&lt;br /&gt;
 tiempo=(i-1)*dt;&lt;br /&gt;
  break&lt;br /&gt;
 end&lt;br /&gt;
 end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Se obtiene un tiempo de 7.300 segundos. &lt;br /&gt;
Al dividir \triangle x por 10 sale un tiempo de 8.353 segundos.&lt;br /&gt;
&lt;br /&gt;
=Nuevas condiciones de frontera=&lt;br /&gt;
&lt;br /&gt;
==Aplicación de un limpiador==&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1,se coloca en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo,modificando las condiciones de frontera del problema generando que una condición de frontera tipo Neumann pase a ser una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
usaremos el '''método de diferencias finitas'' para llevar a cabo una aproximación del problema, siendo el código de Matlab obtenido: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=1;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El valor estacionario de la concentración en el tubo será de cero, debido a que se ha colocado un limpiador en uno de sus extremos que irá eliminando el contaminante.&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar este otro estado estacionario con un error del 5% vamos a calcular la media cuadrática de las concentraciones y ver cual coincide con el 5% de 5.85/7.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=70;&lt;br /&gt;
q=1;&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 &lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
 &lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:(1/dt) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=(1/dt):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(5.85/7);&lt;br /&gt;
% Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
dist=(sqrt(sum(sol(i,:).^2)/(N+1)));&lt;br /&gt;
if dist&amp;lt;limite&lt;br /&gt;
tiempo=(i-1)*dt&lt;br /&gt;
break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
Obteniendo un tiempo de 65.775.&lt;br /&gt;
&lt;br /&gt;
=Variación de las condiciones de frontera tipo Neumann=&lt;br /&gt;
Las nuevas condiciones neumann no son homogéneas. tendremos que homogeneizarlas con el siguiente cambio de variable :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,t)=w(x,t)+2a(t)x^2+b(t)x&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
el nuevo problema quedaría de la siguiente manera :&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=-3/7 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=-3, t&amp;gt;0\\w(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
w(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos observar que es un problema bien propuesto analizando su existencia de solución, unicidad y estabilidad con respecto al dato inicial.&lt;br /&gt;
&lt;br /&gt;
ahora ya se trata de un sistema con condiciones de frontera homogéneas, el problema de autovalores asociado es:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(PA)\left\{\begin{matrix}\\x''+μx=0 ,x\in\ (0,7)\\x'(0)=0\\x'(7)=0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y los autovalores y autofunciones salvo una constante son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;μ_k=\frac{\pi^2k^2}{49}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;φ_k=cos(kπ/7)x&amp;lt;/math&amp;gt;  k=0,1,2,3...&lt;br /&gt;
&lt;br /&gt;
Se aproxima el dato inicial y el segundo miembro, se elige Q y se toma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q c_kφ_k(x)=-3/7&amp;lt;/math&amp;gt;:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q a_kφ_k(x)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
donde se deduce que &amp;lt;math&amp;gt;c_k=\frac{\displaystyle\int_{0}^{7} -3/7cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_k=\frac{\displaystyle\int_{0}^{7} u_0cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El problema aproximado queda de la forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=\displaystyle\sum_{k=0}^Q c_kφ_k(x)&lt;br /&gt;
 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=0, t&amp;gt;0\\w(x,0)=w_0=\displaystyle\sum_{k=0}^Q a_kφ_k(x), x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Luego la solución aproximada que obtenemos será:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q T_k(t)φ_k(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo en la ecuación de difusión de una sustancia contaminante e igualando los coeficicientes de Fourier se obtiene el sistema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left\{\begin{matrix}\\T'_k(t)+μ_kT_k(t)=c_k\\T_k(0)=a_k\end{matrix}\right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendo el problema de valor inicial, se deduce que &amp;lt;math&amp;gt; T_k(t)=Ce^{-μ_k t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada queda de la forma &amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q Ce^{-μ_k t} cos(kπ/7)x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El valor de la constante C depende de la condición inicial,que es la que condiciona el valor de a&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
por ultimo solo nos quedaria deshacer el cambio de variable.&lt;br /&gt;
&lt;br /&gt;
[[Categoría:ED15/16]]&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35629</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35629"/>
				<updated>2016-05-03T15:24:23Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Planteamiento del probema */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
=Planteamiento del probema=&lt;br /&gt;
Según Flick para que el fenómeno de la difusión tenga lugar, la distribución espacial de moléculas no debe ser homogénea, debe existir una diferencia, o gradiente de concentración entre dos puntos del medio.&lt;br /&gt;
Para ello suponemos que la concentración varia con la posición de la barra en el eje x (abscisas) denominaremos a u como la concentración en este caso de contaminante por cada posición del tubo. La ley de Flick afirma que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x)&lt;br /&gt;
Consideraremos que cada sección es muy pequeña respecto del tubo que será un objeto unidimensional de longitud en el eje x[0,L] siendo L=7m.&lt;br /&gt;
La concentración en cada punto de la barra a lo largo del tiempo será u(x,t)&lt;br /&gt;
La acumulación de partículas en la unidad de tiempo que se produce en el elemento de volumen S•dx es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir&lt;br /&gt;
uS-u’S=(du/dx).S.dx&lt;br /&gt;
La acumulación de partículas en la unidad de tiempo es&lt;br /&gt;
S.dx.(du/dt)&lt;br /&gt;
Igualando ambas expresiones y utilizando la Ley de Fick se obtiene&lt;br /&gt;
d(D.(du/dx))/dx=du/dt&lt;br /&gt;
Ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión . Si el coeficiente de difusión D no depende de la concentración&lt;br /&gt;
 (1/D).(du/dt)=(d^2u)/(dx^2)== (1/D).(du/dt)- (d^2u)/(dx^2)=0;&lt;br /&gt;
(1/D).(du/dt)=usubt==ut;&lt;br /&gt;
(d^2u)/(dx^2)==Dusubxx==Duxx&lt;br /&gt;
conclusión:   ut − Duxx = 0.&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecio2A14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicito3A14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerImplicito3A14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaHeun3A14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variable x mediante el método de Euler implícito.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia. Vale 5.85&lt;br /&gt;
[[ Archivo:GraficaMasa2A14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[ Archivo:ConcentracionPuntoMedio2A14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
&lt;br /&gt;
=Concentración a lo largo del tiempo=&lt;br /&gt;
Se puede comprobar en la siguiente gráfica que para tiempos grandes la cantidad de contaminante se irá acercando al valor estacionario de 1.17. Es decir, nuestra solución del problema debe parecerse a la función u(x,t)=1.17, es constante, luego no varía.&lt;br /&gt;
&lt;br /&gt;
El código usado:&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 % Datos&lt;br /&gt;
  L=7;&lt;br /&gt;
  T=10;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.1;&lt;br /&gt;
 N=L/h;&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
 % Discretizacion temporal&lt;br /&gt;
 dt=h/4; % Tamaño de paso&lt;br /&gt;
 t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 % Matriz K&lt;br /&gt;
 K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
 K(1,2)=-2;&lt;br /&gt;
 K(N+1,N)=-2;&lt;br /&gt;
 K=q*K/h^2;&lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
 % Calculamos u0&lt;br /&gt;
 u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
 % Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
 sol(1,:)=u0'; &lt;br /&gt;
 U=u0; % Inicializacion&lt;br /&gt;
 % Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
 for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
 U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
 sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
 end&lt;br /&gt;
 % Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
 contaminante=zeros(1,length(t));&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 f=sol(i,:);&lt;br /&gt;
 area=trapz(x,f);&lt;br /&gt;
 contaminante(i)=area;&lt;br /&gt;
 end&lt;br /&gt;
%Solución estacionaria&lt;br /&gt;
 a=sol(length(t),:);&lt;br /&gt;
 b=sol(1,:);&lt;br /&gt;
 c=sol((length(t)-1)/50+1,:);&lt;br /&gt;
 d=sol((length(t)-1)*2/50+1,:);&lt;br /&gt;
 e=sol((length(t)-1)*10/50+1,:);&lt;br /&gt;
 hold on&lt;br /&gt;
 plot(x,a);&lt;br /&gt;
 plot(x,b);&lt;br /&gt;
 plot(x,c);&lt;br /&gt;
 plot(x,d);&lt;br /&gt;
 plot(x,e);&lt;br /&gt;
 xlabel('Tubo')&lt;br /&gt;
 ylabel('Concentracion')&lt;br /&gt;
 hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:grafico_concentra_tiempo.jpg ‎|marco|centro|Concentración a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La distancia entre la solución estacionaria y las soluciones para los siguientes instantes: 0s, 1s, 2s y 10s; se puede apreciar en la imagen anterior. Además las distancias entre la solución estacionaria y la solución u(x,t) para t=0,1,2,10 son:&lt;br /&gt;
&lt;br /&gt;
dist10=0.3624&lt;br /&gt;
&lt;br /&gt;
dist1=0.9650&lt;br /&gt;
&lt;br /&gt;
dist2=0.7853&lt;br /&gt;
&lt;br /&gt;
dist0=1.3880&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Y el código Matlab usado es:&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 %distancias&lt;br /&gt;
 dist0=(sqrt(sum((sol(1,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist1=(sqrt(sum((sol(41,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist2=(sqrt(sum((sol(81,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist10=(sqrt(sum((sol(401,:)-1.17).^2)/(N+1)));&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar el estado estacionario con un error del 5% calculamos la media cuadrática de las distancias desde cada punto de la función al estado estacionario.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 % El error del 5%&lt;br /&gt;
 limite=0.05*8.25;&lt;br /&gt;
 % Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 dist=(sqrt(sum((sol(i,:)-1.17).^2)/(N+1)));&lt;br /&gt;
  if dist&amp;lt;limite&lt;br /&gt;
 tiempo=(i-1)*dt;&lt;br /&gt;
  break&lt;br /&gt;
 end&lt;br /&gt;
 end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Se obtiene un tiempo de 7.300 segundos. &lt;br /&gt;
Al dividir \triangle x por 10 sale un tiempo de 8.353 segundos.&lt;br /&gt;
&lt;br /&gt;
=Nuevas condiciones de frontera=&lt;br /&gt;
&lt;br /&gt;
==Aplicación de un limpiador==&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1,se coloca en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo,modificando las condiciones de frontera del problema generando que una condición de frontera tipo Neumann pase a ser una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
usaremos el '''método de diferencias finitas'' para llevar a cabo una aproximación del problema, siendo el código de Matlab obtenido: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=1;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El valor estacionario de la concentración en el tubo será de cero, debido a que se ha colocado un limpiador en uno de sus extremos que irá eliminando el contaminante.&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar este otro estado estacionario con un error del 5% vamos a calcular la media cuadrática de las concentraciones y ver cual coincide con el 5% de 5.85/7.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=70;&lt;br /&gt;
q=1;&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 &lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
 &lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:(1/dt) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=(1/dt):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(5.85/7);&lt;br /&gt;
% Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
dist=(sqrt(sum(sol(i,:).^2)/(N+1)));&lt;br /&gt;
if dist&amp;lt;limite&lt;br /&gt;
tiempo=(i-1)*dt&lt;br /&gt;
break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
Obteniendo un tiempo de 65.775.&lt;br /&gt;
&lt;br /&gt;
=Variación de las condiciones de frontera tipo Neumann=&lt;br /&gt;
Las nuevas condiciones neumann no son homogéneas. tendremos que homogeneizarlas con el siguiente cambio de variable :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,t)=w(x,t)+2a(t)x^2+b(t)x&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
el nuevo problema quedaría de la siguiente manera :&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=-3/7 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=-3, t&amp;gt;0\\w(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
w(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos observar que es un problema bien propuesto analizando su existencia de solución, unicidad y estabilidad con respecto al dato inicial.&lt;br /&gt;
&lt;br /&gt;
ahora ya se trata de un sistema con condiciones de frontera homogéneas, el problema de autovalores asociado es:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(PA)\left\{\begin{matrix}\\x''+μx=0 ,x\in\ (0,7)\\x'(0)=0\\x'(7)=0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y los autovalores y autofunciones salvo una constante son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;μ_k=\frac{\pi^2k^2}{49}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;φ_k=cos(kπ/7)x&amp;lt;/math&amp;gt;  k=0,1,2,3...&lt;br /&gt;
&lt;br /&gt;
Se aproxima el dato inicial y el segundo miembro, se elige Q y se toma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q c_kφ_k(x)=-3/7&amp;lt;/math&amp;gt;:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q a_kφ_k(x)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
donde se deduce que &amp;lt;math&amp;gt;c_k=\frac{\displaystyle\int_{0}^{7} -3/7cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_k=\frac{\displaystyle\int_{0}^{7} u_0cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El problema aproximado queda de la forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=\displaystyle\sum_{k=0}^Q c_kφ_k(x)&lt;br /&gt;
 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=0, t&amp;gt;0\\w(x,0)=w_0=\displaystyle\sum_{k=0}^Q a_kφ_k(x), x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Luego la solución aproximada que obtenemos será:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q T_k(t)φ_k(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo en la ecuación de difusión de una sustancia contaminante e igualando los coeficicientes de Fourier se obtiene el sistema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left\{\begin{matrix}\\T'_k(t)+μ_kT_k(t)=c_k\\T_k(0)=a_k\end{matrix}\right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendo el problema de valor inicial, se deduce que &amp;lt;math&amp;gt; T_k(t)=Ce^{-μ_k t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada queda de la forma &amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q Ce^{-μ_k t} cos(kπ/7)x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El valor de la constante C depende de la condición inicial,que es la que condiciona el valor de a&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
por ultimo solo nos quedaria deshacer el cambio de variable.&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35628</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35628"/>
				<updated>2016-05-03T15:23:34Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Planteamiento del probema */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
=Planteamiento del probema=&lt;br /&gt;
-Según Flick para que el fenómeno de la difusión tenga lugar, la distribución espacial de moléculas no debe ser homogénea, debe existir una diferencia, o gradiente de concentración entre dos puntos del medio.&lt;br /&gt;
Para ello suponemos que la concentración varia con la posición de la barra en el eje x (abscisas) denominaremos a u como la concentración en este caso de contaminante por cada posición del tubo. La ley de Flick afirma que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x)&lt;br /&gt;
Consideraremos que cada sección es muy pequeña respecto del tubo que será un objeto unidimensional de longitud en el eje x[0,L] siendo L=7m.&lt;br /&gt;
La concentración en cada punto de la barra a lo largo del tiempo será u(x,t)&lt;br /&gt;
La acumulación de partículas en la unidad de tiempo que se produce en el elemento de volumen S•dx es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir&lt;br /&gt;
uS-u’S=(du/dx).S.dx&lt;br /&gt;
La acumulación de partículas en la unidad de tiempo es&lt;br /&gt;
S.dx.(du/dt)&lt;br /&gt;
Igualando ambas expresiones y utilizando la Ley de Fick se obtiene&lt;br /&gt;
d(D.(du/dx))/dx=du/dt&lt;br /&gt;
Ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión . Si el coeficiente de difusión D no depende de la concentración&lt;br /&gt;
 (1/D).(du/dt)=(d^2u)/(dx^2)== (1/D).(du/dt)- (d^2u)/(dx^2)=0;&lt;br /&gt;
(1/D).(du/dt)=usubt==ut;&lt;br /&gt;
(d^2u)/(dx^2)==Dusubxx==Duxx&lt;br /&gt;
conclusión:   ut − Duxx = 0.&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecio2A14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicito3A14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerImplicito3A14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaHeun3A14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variable x mediante el método de Euler implícito.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia. Vale 5.85&lt;br /&gt;
[[ Archivo:GraficaMasa2A14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[ Archivo:ConcentracionPuntoMedio2A14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
&lt;br /&gt;
=Concentración a lo largo del tiempo=&lt;br /&gt;
Se puede comprobar en la siguiente gráfica que para tiempos grandes la cantidad de contaminante se irá acercando al valor estacionario de 1.17. Es decir, nuestra solución del problema debe parecerse a la función u(x,t)=1.17, es constante, luego no varía.&lt;br /&gt;
&lt;br /&gt;
El código usado:&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 % Datos&lt;br /&gt;
  L=7;&lt;br /&gt;
  T=10;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.1;&lt;br /&gt;
 N=L/h;&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
 % Discretizacion temporal&lt;br /&gt;
 dt=h/4; % Tamaño de paso&lt;br /&gt;
 t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 % Matriz K&lt;br /&gt;
 K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
 K(1,2)=-2;&lt;br /&gt;
 K(N+1,N)=-2;&lt;br /&gt;
 K=q*K/h^2;&lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
 % Calculamos u0&lt;br /&gt;
 u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
 % Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
 sol(1,:)=u0'; &lt;br /&gt;
 U=u0; % Inicializacion&lt;br /&gt;
 % Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
 for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
 U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
 sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
 end&lt;br /&gt;
 % Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
 contaminante=zeros(1,length(t));&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 f=sol(i,:);&lt;br /&gt;
 area=trapz(x,f);&lt;br /&gt;
 contaminante(i)=area;&lt;br /&gt;
 end&lt;br /&gt;
%Solución estacionaria&lt;br /&gt;
 a=sol(length(t),:);&lt;br /&gt;
 b=sol(1,:);&lt;br /&gt;
 c=sol((length(t)-1)/50+1,:);&lt;br /&gt;
 d=sol((length(t)-1)*2/50+1,:);&lt;br /&gt;
 e=sol((length(t)-1)*10/50+1,:);&lt;br /&gt;
 hold on&lt;br /&gt;
 plot(x,a);&lt;br /&gt;
 plot(x,b);&lt;br /&gt;
 plot(x,c);&lt;br /&gt;
 plot(x,d);&lt;br /&gt;
 plot(x,e);&lt;br /&gt;
 xlabel('Tubo')&lt;br /&gt;
 ylabel('Concentracion')&lt;br /&gt;
 hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:grafico_concentra_tiempo.jpg ‎|marco|centro|Concentración a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La distancia entre la solución estacionaria y las soluciones para los siguientes instantes: 0s, 1s, 2s y 10s; se puede apreciar en la imagen anterior. Además las distancias entre la solución estacionaria y la solución u(x,t) para t=0,1,2,10 son:&lt;br /&gt;
&lt;br /&gt;
dist10=0.3624&lt;br /&gt;
&lt;br /&gt;
dist1=0.9650&lt;br /&gt;
&lt;br /&gt;
dist2=0.7853&lt;br /&gt;
&lt;br /&gt;
dist0=1.3880&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Y el código Matlab usado es:&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 %distancias&lt;br /&gt;
 dist0=(sqrt(sum((sol(1,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist1=(sqrt(sum((sol(41,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist2=(sqrt(sum((sol(81,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist10=(sqrt(sum((sol(401,:)-1.17).^2)/(N+1)));&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar el estado estacionario con un error del 5% calculamos la media cuadrática de las distancias desde cada punto de la función al estado estacionario.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 % El error del 5%&lt;br /&gt;
 limite=0.05*8.25;&lt;br /&gt;
 % Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 dist=(sqrt(sum((sol(i,:)-1.17).^2)/(N+1)));&lt;br /&gt;
  if dist&amp;lt;limite&lt;br /&gt;
 tiempo=(i-1)*dt;&lt;br /&gt;
  break&lt;br /&gt;
 end&lt;br /&gt;
 end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Se obtiene un tiempo de 7.300 segundos. &lt;br /&gt;
Al dividir \triangle x por 10 sale un tiempo de 8.353 segundos.&lt;br /&gt;
&lt;br /&gt;
=Nuevas condiciones de frontera=&lt;br /&gt;
&lt;br /&gt;
==Aplicación de un limpiador==&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1,se coloca en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo,modificando las condiciones de frontera del problema generando que una condición de frontera tipo Neumann pase a ser una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
usaremos el '''método de diferencias finitas'' para llevar a cabo una aproximación del problema, siendo el código de Matlab obtenido: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=1;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El valor estacionario de la concentración en el tubo será de cero, debido a que se ha colocado un limpiador en uno de sus extremos que irá eliminando el contaminante.&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar este otro estado estacionario con un error del 5% vamos a calcular la media cuadrática de las concentraciones y ver cual coincide con el 5% de 5.85/7.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=70;&lt;br /&gt;
q=1;&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 &lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
 &lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:(1/dt) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=(1/dt):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(5.85/7);&lt;br /&gt;
% Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
dist=(sqrt(sum(sol(i,:).^2)/(N+1)));&lt;br /&gt;
if dist&amp;lt;limite&lt;br /&gt;
tiempo=(i-1)*dt&lt;br /&gt;
break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
Obteniendo un tiempo de 65.775.&lt;br /&gt;
&lt;br /&gt;
=Variación de las condiciones de frontera tipo Neumann=&lt;br /&gt;
Las nuevas condiciones neumann no son homogéneas. tendremos que homogeneizarlas con el siguiente cambio de variable :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,t)=w(x,t)+2a(t)x^2+b(t)x&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
el nuevo problema quedaría de la siguiente manera :&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=-3/7 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=-3, t&amp;gt;0\\w(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
w(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos observar que es un problema bien propuesto analizando su existencia de solución, unicidad y estabilidad con respecto al dato inicial.&lt;br /&gt;
&lt;br /&gt;
ahora ya se trata de un sistema con condiciones de frontera homogéneas, el problema de autovalores asociado es:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(PA)\left\{\begin{matrix}\\x''+μx=0 ,x\in\ (0,7)\\x'(0)=0\\x'(7)=0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y los autovalores y autofunciones salvo una constante son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;μ_k=\frac{\pi^2k^2}{49}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;φ_k=cos(kπ/7)x&amp;lt;/math&amp;gt;  k=0,1,2,3...&lt;br /&gt;
&lt;br /&gt;
Se aproxima el dato inicial y el segundo miembro, se elige Q y se toma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q c_kφ_k(x)=-3/7&amp;lt;/math&amp;gt;:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q a_kφ_k(x)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
donde se deduce que &amp;lt;math&amp;gt;c_k=\frac{\displaystyle\int_{0}^{7} -3/7cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_k=\frac{\displaystyle\int_{0}^{7} u_0cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El problema aproximado queda de la forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=\displaystyle\sum_{k=0}^Q c_kφ_k(x)&lt;br /&gt;
 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=0, t&amp;gt;0\\w(x,0)=w_0=\displaystyle\sum_{k=0}^Q a_kφ_k(x), x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Luego la solución aproximada que obtenemos será:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q T_k(t)φ_k(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo en la ecuación de difusión de una sustancia contaminante e igualando los coeficicientes de Fourier se obtiene el sistema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left\{\begin{matrix}\\T'_k(t)+μ_kT_k(t)=c_k\\T_k(0)=a_k\end{matrix}\right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendo el problema de valor inicial, se deduce que &amp;lt;math&amp;gt; T_k(t)=Ce^{-μ_k t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada queda de la forma &amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q Ce^{-μ_k t} cos(kπ/7)x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El valor de la constante C depende de la condición inicial,que es la que condiciona el valor de a&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
por ultimo solo nos quedaria deshacer el cambio de variable.&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35626</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35626"/>
				<updated>2016-05-03T15:23:27Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
=Planteamiento del probema=&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecio2A14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicito3A14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerImplicito3A14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaHeun3A14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variable x mediante el método de Euler implícito.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia. Vale 5.85&lt;br /&gt;
[[ Archivo:GraficaMasa2A14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[ Archivo:ConcentracionPuntoMedio2A14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
&lt;br /&gt;
=Concentración a lo largo del tiempo=&lt;br /&gt;
Se puede comprobar en la siguiente gráfica que para tiempos grandes la cantidad de contaminante se irá acercando al valor estacionario de 1.17. Es decir, nuestra solución del problema debe parecerse a la función u(x,t)=1.17, es constante, luego no varía.&lt;br /&gt;
&lt;br /&gt;
El código usado:&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 % Datos&lt;br /&gt;
  L=7;&lt;br /&gt;
  T=10;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.1;&lt;br /&gt;
 N=L/h;&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
 % Discretizacion temporal&lt;br /&gt;
 dt=h/4; % Tamaño de paso&lt;br /&gt;
 t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 % Matriz K&lt;br /&gt;
 K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
 K(1,2)=-2;&lt;br /&gt;
 K(N+1,N)=-2;&lt;br /&gt;
 K=q*K/h^2;&lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
 % Calculamos u0&lt;br /&gt;
 u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
 % Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
 sol(1,:)=u0'; &lt;br /&gt;
 U=u0; % Inicializacion&lt;br /&gt;
 % Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
 for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
 U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
 sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
 end&lt;br /&gt;
 % Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
 contaminante=zeros(1,length(t));&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 f=sol(i,:);&lt;br /&gt;
 area=trapz(x,f);&lt;br /&gt;
 contaminante(i)=area;&lt;br /&gt;
 end&lt;br /&gt;
%Solución estacionaria&lt;br /&gt;
 a=sol(length(t),:);&lt;br /&gt;
 b=sol(1,:);&lt;br /&gt;
 c=sol((length(t)-1)/50+1,:);&lt;br /&gt;
 d=sol((length(t)-1)*2/50+1,:);&lt;br /&gt;
 e=sol((length(t)-1)*10/50+1,:);&lt;br /&gt;
 hold on&lt;br /&gt;
 plot(x,a);&lt;br /&gt;
 plot(x,b);&lt;br /&gt;
 plot(x,c);&lt;br /&gt;
 plot(x,d);&lt;br /&gt;
 plot(x,e);&lt;br /&gt;
 xlabel('Tubo')&lt;br /&gt;
 ylabel('Concentracion')&lt;br /&gt;
 hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:grafico_concentra_tiempo.jpg ‎|marco|centro|Concentración a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La distancia entre la solución estacionaria y las soluciones para los siguientes instantes: 0s, 1s, 2s y 10s; se puede apreciar en la imagen anterior. Además las distancias entre la solución estacionaria y la solución u(x,t) para t=0,1,2,10 son:&lt;br /&gt;
&lt;br /&gt;
dist10=0.3624&lt;br /&gt;
&lt;br /&gt;
dist1=0.9650&lt;br /&gt;
&lt;br /&gt;
dist2=0.7853&lt;br /&gt;
&lt;br /&gt;
dist0=1.3880&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Y el código Matlab usado es:&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 %distancias&lt;br /&gt;
 dist0=(sqrt(sum((sol(1,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist1=(sqrt(sum((sol(41,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist2=(sqrt(sum((sol(81,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist10=(sqrt(sum((sol(401,:)-1.17).^2)/(N+1)));&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar el estado estacionario con un error del 5% calculamos la media cuadrática de las distancias desde cada punto de la función al estado estacionario.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 % El error del 5%&lt;br /&gt;
 limite=0.05*8.25;&lt;br /&gt;
 % Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 dist=(sqrt(sum((sol(i,:)-1.17).^2)/(N+1)));&lt;br /&gt;
  if dist&amp;lt;limite&lt;br /&gt;
 tiempo=(i-1)*dt;&lt;br /&gt;
  break&lt;br /&gt;
 end&lt;br /&gt;
 end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Se obtiene un tiempo de 7.300 segundos. &lt;br /&gt;
Al dividir \triangle x por 10 sale un tiempo de 8.353 segundos.&lt;br /&gt;
&lt;br /&gt;
=Nuevas condiciones de frontera=&lt;br /&gt;
&lt;br /&gt;
==Aplicación de un limpiador==&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1,se coloca en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo,modificando las condiciones de frontera del problema generando que una condición de frontera tipo Neumann pase a ser una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
usaremos el '''método de diferencias finitas'' para llevar a cabo una aproximación del problema, siendo el código de Matlab obtenido: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=1;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El valor estacionario de la concentración en el tubo será de cero, debido a que se ha colocado un limpiador en uno de sus extremos que irá eliminando el contaminante.&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar este otro estado estacionario con un error del 5% vamos a calcular la media cuadrática de las concentraciones y ver cual coincide con el 5% de 5.85/7.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=70;&lt;br /&gt;
q=1;&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 &lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
 &lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:(1/dt) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=(1/dt):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(5.85/7);&lt;br /&gt;
% Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
dist=(sqrt(sum(sol(i,:).^2)/(N+1)));&lt;br /&gt;
if dist&amp;lt;limite&lt;br /&gt;
tiempo=(i-1)*dt&lt;br /&gt;
break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
Obteniendo un tiempo de 65.775.&lt;br /&gt;
&lt;br /&gt;
=Variación de las condiciones de frontera tipo Neumann=&lt;br /&gt;
Las nuevas condiciones neumann no son homogéneas. tendremos que homogeneizarlas con el siguiente cambio de variable :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,t)=w(x,t)+2a(t)x^2+b(t)x&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
el nuevo problema quedaría de la siguiente manera :&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=-3/7 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=-3, t&amp;gt;0\\w(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
w(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos observar que es un problema bien propuesto analizando su existencia de solución, unicidad y estabilidad con respecto al dato inicial.&lt;br /&gt;
&lt;br /&gt;
ahora ya se trata de un sistema con condiciones de frontera homogéneas, el problema de autovalores asociado es:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(PA)\left\{\begin{matrix}\\x''+μx=0 ,x\in\ (0,7)\\x'(0)=0\\x'(7)=0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y los autovalores y autofunciones salvo una constante son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;μ_k=\frac{\pi^2k^2}{49}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;φ_k=cos(kπ/7)x&amp;lt;/math&amp;gt;  k=0,1,2,3...&lt;br /&gt;
&lt;br /&gt;
Se aproxima el dato inicial y el segundo miembro, se elige Q y se toma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q c_kφ_k(x)=-3/7&amp;lt;/math&amp;gt;:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q a_kφ_k(x)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
donde se deduce que &amp;lt;math&amp;gt;c_k=\frac{\displaystyle\int_{0}^{7} -3/7cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_k=\frac{\displaystyle\int_{0}^{7} u_0cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El problema aproximado queda de la forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=\displaystyle\sum_{k=0}^Q c_kφ_k(x)&lt;br /&gt;
 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=0, t&amp;gt;0\\w(x,0)=w_0=\displaystyle\sum_{k=0}^Q a_kφ_k(x), x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Luego la solución aproximada que obtenemos será:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q T_k(t)φ_k(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo en la ecuación de difusión de una sustancia contaminante e igualando los coeficicientes de Fourier se obtiene el sistema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left\{\begin{matrix}\\T'_k(t)+μ_kT_k(t)=c_k\\T_k(0)=a_k\end{matrix}\right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendo el problema de valor inicial, se deduce que &amp;lt;math&amp;gt; T_k(t)=Ce^{-μ_k t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada queda de la forma &amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q Ce^{-μ_k t} cos(kπ/7)x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El valor de la constante C depende de la condición inicial,que es la que condiciona el valor de a&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
por ultimo solo nos quedaria deshacer el cambio de variable.&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35615</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35615"/>
				<updated>2016-05-03T15:18:41Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Conservación de la masa */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecio2A14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicito3A14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerImplicito3A14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaHeun3A14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variable x mediante el método de Euler implícito.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia. Vale 5.85&lt;br /&gt;
[[ Archivo:GraficaMasa2A14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[ Archivo:ConcentracionPuntoMedio2A14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
&lt;br /&gt;
=Concentración a lo largo del tiempo=&lt;br /&gt;
Se puede comprobar en la siguiente gráfica que para tiempos grandes la cantidad de contaminante se irá acercando al valor estacionario de 1.17. Es decir, nuestra solución del problema debe parecerse a la función u(x,t)=1.17, es constante, luego no varía.&lt;br /&gt;
&lt;br /&gt;
El código usado:&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 % Datos&lt;br /&gt;
  L=7;&lt;br /&gt;
  T=10;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.1;&lt;br /&gt;
 N=L/h;&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
 % Discretizacion temporal&lt;br /&gt;
 dt=h/4; % Tamaño de paso&lt;br /&gt;
 t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 % Matriz K&lt;br /&gt;
 K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
 K(1,2)=-2;&lt;br /&gt;
 K(N+1,N)=-2;&lt;br /&gt;
 K=q*K/h^2;&lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
 % Calculamos u0&lt;br /&gt;
 u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
 % Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
 sol(1,:)=u0'; &lt;br /&gt;
 U=u0; % Inicializacion&lt;br /&gt;
 % Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
 for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
 U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
 sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
 end&lt;br /&gt;
 % Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
 contaminante=zeros(1,length(t));&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 f=sol(i,:);&lt;br /&gt;
 area=trapz(x,f);&lt;br /&gt;
 contaminante(i)=area;&lt;br /&gt;
 end&lt;br /&gt;
%Solución estacionaria&lt;br /&gt;
 a=sol(length(t),:);&lt;br /&gt;
 b=sol(1,:);&lt;br /&gt;
 c=sol((length(t)-1)/50+1,:);&lt;br /&gt;
 d=sol((length(t)-1)*2/50+1,:);&lt;br /&gt;
 e=sol((length(t)-1)*10/50+1,:);&lt;br /&gt;
 hold on&lt;br /&gt;
 plot(x,a);&lt;br /&gt;
 plot(x,b);&lt;br /&gt;
 plot(x,c);&lt;br /&gt;
 plot(x,d);&lt;br /&gt;
 plot(x,e);&lt;br /&gt;
 xlabel('Tubo')&lt;br /&gt;
 ylabel('Concentracion')&lt;br /&gt;
 hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:grafico_concentra_tiempo.jpg ‎|marco|centro|Concentración a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La distancia entre la solución estacionaria y las soluciones para los siguientes instantes: 0s, 1s, 2s y 10s; se puede apreciar en la imagen anterior. Además las distancias entre la solución estacionaria y la solución u(x,t) para t=0,1,2,10 son:&lt;br /&gt;
&lt;br /&gt;
dist10=0.3624&lt;br /&gt;
&lt;br /&gt;
dist1=0.9650&lt;br /&gt;
&lt;br /&gt;
dist2=0.7853&lt;br /&gt;
&lt;br /&gt;
dist0=1.3880&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Y el código Matlab usado es:&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 %distancias&lt;br /&gt;
 dist0=(sqrt(sum((sol(1,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist1=(sqrt(sum((sol(41,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist2=(sqrt(sum((sol(81,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist10=(sqrt(sum((sol(401,:)-1.17).^2)/(N+1)));&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar el estado estacionario con un error del 5% calculamos la media cuadrática de las distancias desde cada punto de la función al estado estacionario.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 % El error del 5%&lt;br /&gt;
 limite=0.05*8.25;&lt;br /&gt;
 % Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 dist=(sqrt(sum((sol(i,:)-1.17).^2)/(N+1)));&lt;br /&gt;
  if dist&amp;lt;limite&lt;br /&gt;
 tiempo=(i-1)*dt;&lt;br /&gt;
  break&lt;br /&gt;
 end&lt;br /&gt;
 end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Se obtiene un tiempo de 7.300 segundos. &lt;br /&gt;
Al dividir \triangle x por 10 sale un tiempo de 8.353 segundos.&lt;br /&gt;
&lt;br /&gt;
=Nuevas condiciones de frontera=&lt;br /&gt;
&lt;br /&gt;
==Aplicación de un limpiador==&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1,se coloca en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo,modificando las condiciones de frontera del problema generando que una condición de frontera tipo Neumann pase a ser una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
usaremos el '''método de diferencias finitas'' para llevar a cabo una aproximación del problema, siendo el código de Matlab obtenido: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=1;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El valor estacionario de la concentración en el tubo será de cero, debido a que se ha colocado un limpiador en uno de sus extremos que irá eliminando el contaminante.&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar este otro estado estacionario con un error del 5% vamos a calcular la media cuadrática de las concentraciones y ver cual coincide con el 5% de 5.85/7.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=70;&lt;br /&gt;
q=1;&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 &lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
 &lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:(1/dt) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=(1/dt):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(5.85/7);&lt;br /&gt;
% Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
dist=(sqrt(sum(sol(i,:).^2)/(N+1)));&lt;br /&gt;
if dist&amp;lt;limite&lt;br /&gt;
tiempo=(i-1)*dt&lt;br /&gt;
break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
Obteniendo un tiempo de 65.775.&lt;br /&gt;
&lt;br /&gt;
=Variación de las condiciones de frontera tipo Neumann=&lt;br /&gt;
Las nuevas condiciones neumann no son homogéneas. tendremos que homogeneizarlas con el siguiente cambio de variable :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,t)=w(x,t)+2a(t)x^2+b(t)x&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
el nuevo problema quedaría de la siguiente manera :&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=-3/7 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=-3, t&amp;gt;0\\w(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
w(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos observar que es un problema bien propuesto analizando su existencia de solución, unicidad y estabilidad con respecto al dato inicial.&lt;br /&gt;
&lt;br /&gt;
ahora ya se trata de un sistema con condiciones de frontera homogéneas, el problema de autovalores asociado es:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(PA)\left\{\begin{matrix}\\x''+μx=0 ,x\in\ (0,7)\\x'(0)=0\\x'(7)=0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y los autovalores y autofunciones salvo una constante son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;μ_k=\frac{\pi^2k^2}{49}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;φ_k=cos(kπ/7)x&amp;lt;/math&amp;gt;  k=0,1,2,3...&lt;br /&gt;
&lt;br /&gt;
Se aproxima el dato inicial y el segundo miembro, se elige Q y se toma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q c_kφ_k(x)=-3/7&amp;lt;/math&amp;gt;:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q a_kφ_k(x)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
donde se deduce que &amp;lt;math&amp;gt;c_k=\frac{\displaystyle\int_{0}^{7} -3/7cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_k=\frac{\displaystyle\int_{0}^{7} u_0cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El problema aproximado queda de la forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=\displaystyle\sum_{k=0}^Q c_kφ_k(x)&lt;br /&gt;
 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=0, t&amp;gt;0\\w(x,0)=w_0=\displaystyle\sum_{k=0}^Q a_kφ_k(x), x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Luego la solución aproximada que obtenemos será:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q T_k(t)φ_k(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo en la ecuación de difusión de una sustancia contaminante e igualando los coeficicientes de Fourier se obtiene el sistema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left\{\begin{matrix}\\T'_k(t)+μ_kT_k(t)=c_k\\T_k(0)=a_k\end{matrix}\right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendo el problema de valor inicial, se deduce que &amp;lt;math&amp;gt; T_k(t)=Ce^{-μ_k t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada queda de la forma &amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q Ce^{-μ_k t} cos(kπ/7)x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El valor de la constante C depende de la condición inicial,que es la que condiciona el valor de a&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
por ultimo solo nos quedaria deshacer el cambio de variable.&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35582</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35582"/>
				<updated>2016-05-03T14:57:39Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Variación de las condiciones de frontera tipo Neumann */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecio2A14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicito3A14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerImplicito3A14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaHeun3A14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variable x mediante el método de Euler implícito.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[ Archivo:GraficaMasa2A14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[ Archivo:ConcentracionPuntoMedio2A14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
&lt;br /&gt;
=Concentración a lo largo del tiempo=&lt;br /&gt;
Se puede comprobar en la siguiente gráfica que para tiempos grandes la cantidad de contaminante se irá acercando al valor estacionario de 1.17. Es decir, nuestra solución del problema debe parecerse a la función u(x,t)=1.17, es constante, luego no varía.&lt;br /&gt;
&lt;br /&gt;
El código usado:&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 % Datos&lt;br /&gt;
  L=7;&lt;br /&gt;
  T=10;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.1;&lt;br /&gt;
 N=L/h;&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
 % Discretizacion temporal&lt;br /&gt;
 dt=h/4; % Tamaño de paso&lt;br /&gt;
 t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 % Matriz K&lt;br /&gt;
 K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
 K(1,2)=-2;&lt;br /&gt;
 K(N+1,N)=-2;&lt;br /&gt;
 K=q*K/h^2;&lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
 % Calculamos u0&lt;br /&gt;
 u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
 % Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
 sol(1,:)=u0'; &lt;br /&gt;
 U=u0; % Inicializacion&lt;br /&gt;
 % Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
 for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
 U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
 sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
 end&lt;br /&gt;
 % Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
 contaminante=zeros(1,length(t));&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 f=sol(i,:);&lt;br /&gt;
 area=trapz(x,f);&lt;br /&gt;
 contaminante(i)=area;&lt;br /&gt;
 end&lt;br /&gt;
%Solución estacionaria&lt;br /&gt;
 a=sol(length(t),:);&lt;br /&gt;
 b=sol(1,:);&lt;br /&gt;
 c=sol((length(t)-1)/50+1,:);&lt;br /&gt;
 d=sol((length(t)-1)*2/50+1,:);&lt;br /&gt;
 e=sol((length(t)-1)*10/50+1,:);&lt;br /&gt;
 hold on&lt;br /&gt;
 plot(x,a);&lt;br /&gt;
 plot(x,b);&lt;br /&gt;
 plot(x,c);&lt;br /&gt;
 plot(x,d);&lt;br /&gt;
 plot(x,e);&lt;br /&gt;
 xlabel('Tubo')&lt;br /&gt;
 ylabel('Concentracion')&lt;br /&gt;
 hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:grafico_concentra_tiempo.jpg ‎|marco|centro|Concentración a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La distancia entre la solución estacionaria y las soluciones para los siguientes instantes: 0s, 1s, 2s y 10s; se puede apreciar en la imagen anterior. Además las distancias entre la solución estacionaria y la solución u(x,t) para t=0,1,2,10 son:&lt;br /&gt;
&lt;br /&gt;
dist10=0.3624&lt;br /&gt;
&lt;br /&gt;
dist1=0.9650&lt;br /&gt;
&lt;br /&gt;
dist2=0.7853&lt;br /&gt;
&lt;br /&gt;
dist0=1.3880&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Y el código Matlab usado es:&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 %distancias&lt;br /&gt;
 dist0=(sqrt(sum((sol(1,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist1=(sqrt(sum((sol(41,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist2=(sqrt(sum((sol(81,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist10=(sqrt(sum((sol(401,:)-1.17).^2)/(N+1)));&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar el estado estacionario con un error del 5% calculamos la media cuadrática de las distancias desde cada punto de la función al estado estacionario.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 % El error del 5%&lt;br /&gt;
 limite=0.05*8.25;&lt;br /&gt;
 % Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 dist=(sqrt(sum((sol(i,:)-1.17).^2)/(N+1)));&lt;br /&gt;
  if dist&amp;lt;limite&lt;br /&gt;
 tiempo=(i-1)*dt;&lt;br /&gt;
  break&lt;br /&gt;
 end&lt;br /&gt;
 end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Se obtiene un tiempo de 7.300 segundos. &lt;br /&gt;
Al dividir \triangle x por 10 sale un tiempo de 8.353 segundos.&lt;br /&gt;
&lt;br /&gt;
=Nuevas condiciones de frontera=&lt;br /&gt;
&lt;br /&gt;
==Aplicación de un limpiador==&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1,se coloca en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo,modificando las condiciones de frontera del problema generando que una condición de frontera tipo Neumann pase a ser una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
usaremos el '''método de diferencias finitas'' para llevar a cabo una aproximación del problema, siendo el código de Matlab obtenido: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=1;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El valor estacionario de la concentración en el tubo será de cero, debido a que se ha colocado un limpiador en uno de sus extremos que irá eliminando el contaminante.&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar este otro estado estacionario con un error del 5% vamos a calcular la media cuadrática de las concentraciones y ver cual coincide con el 5% de 5.85/7.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
 &lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=70;&lt;br /&gt;
q=1;&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 &lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
 &lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:(1/dt) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=(1/dt):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(5.85/7);&lt;br /&gt;
% Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
dist=(sqrt(sum(sol(i,:).^2)/(N+1)));&lt;br /&gt;
if dist&amp;lt;limite&lt;br /&gt;
tiempo=(i-1)*dt&lt;br /&gt;
break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
Obteniendo un tiempo de 65.775.&lt;br /&gt;
&lt;br /&gt;
=Variación de las condiciones de frontera tipo Neumann=&lt;br /&gt;
las nuevas condiciones neumann no son homogéneas. tendremos que homogeneizarlas con el siguiente cambio de variable :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,t)=w(x,t)+2a(t)x^2+b(t)x&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
el nuevo problema quedaría de la siguiente manera :&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=-3/7 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=-3, t&amp;gt;0\\w(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
w(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos observar que es un problema bien propuesto analizando su existencia de solución, unicidad y estabilidad con respecto al dato inicial.&lt;br /&gt;
&lt;br /&gt;
ahora ya se trata de un sistema con condiciones de frontera homogéneas, el problema de autovalores asociado es:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(PA)\left\{\begin{matrix}\\x''+μx=0 ,x\in\ (0,7)\\x'(0)=0\\x'(7)=0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y los autovalores y autofunciones salvo una constante son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;μ_k=\frac{\pi^2k^2}{49}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;φ_k=cos(kπ/7)x&amp;lt;/math&amp;gt;  k=0,1,2,3...&lt;br /&gt;
&lt;br /&gt;
Se aproxima el dato inicial y el segundo miembro, se elige Q y se toma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q c_kφ_k(x)=-3/7&amp;lt;/math&amp;gt;:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q a_kφ_k(x)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
donde se deduce que &amp;lt;math&amp;gt;c_k=\frac{\displaystyle\int_{0}^{7} -3/7cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_k=\frac{\displaystyle\int_{0}^{7} u_0cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El problema aproximado queda de la forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=\displaystyle\sum_{k=0}^Q c_kφ_k(x)&lt;br /&gt;
 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=0, t&amp;gt;0\\w(x,0)=w_0=\displaystyle\sum_{k=0}^Q a_kφ_k(x), x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Luego la solución aproximada que obtenemos será:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q T_k(t)φ_k(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo en la ecuación de difusión de una sustancia contaminante e igualando los coeficicientes de Fourier se obtiene el sistema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left\{\begin{matrix}\\T'_k(t)+μ_kT_k(t)=c_k\\T_k(0)=a_k\end{matrix}\right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendo el problema de valor inicial, se deduce que &amp;lt;math&amp;gt; T_k(t)=Ce^{-μ_k t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada queda de la forma &amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q Ce^{-μ_k t} cos(kπ/7)x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El valor de la constante C depende de la condición inicial,que es la que condiciona el valor de a&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
por ultimo solo nos quedaria deshacer el cambio de variable.&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35580</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35580"/>
				<updated>2016-05-03T14:56:56Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Concentración a lo largo del tiempo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecio2A14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicito3A14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerImplicito3A14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaHeun3A14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variable x mediante el método de Euler implícito.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[ Archivo:GraficaMasa2A14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[ Archivo:ConcentracionPuntoMedio2A14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
&lt;br /&gt;
=Concentración a lo largo del tiempo=&lt;br /&gt;
Se puede comprobar en la siguiente gráfica que para tiempos grandes la cantidad de contaminante se irá acercando al valor estacionario de 1.17. Es decir, nuestra solución del problema debe parecerse a la función u(x,t)=1.17, es constante, luego no varía.&lt;br /&gt;
&lt;br /&gt;
El código usado:&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 % Datos&lt;br /&gt;
  L=7;&lt;br /&gt;
  T=10;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.1;&lt;br /&gt;
 N=L/h;&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
 % Discretizacion temporal&lt;br /&gt;
 dt=h/4; % Tamaño de paso&lt;br /&gt;
 t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 % Matriz K&lt;br /&gt;
 K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
 K(1,2)=-2;&lt;br /&gt;
 K(N+1,N)=-2;&lt;br /&gt;
 K=q*K/h^2;&lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
 % Calculamos u0&lt;br /&gt;
 u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
 % Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
 sol(1,:)=u0'; &lt;br /&gt;
 U=u0; % Inicializacion&lt;br /&gt;
 % Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
 for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
 U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
 sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
 end&lt;br /&gt;
 % Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
 contaminante=zeros(1,length(t));&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 f=sol(i,:);&lt;br /&gt;
 area=trapz(x,f);&lt;br /&gt;
 contaminante(i)=area;&lt;br /&gt;
 end&lt;br /&gt;
%Solución estacionaria&lt;br /&gt;
 a=sol(length(t),:);&lt;br /&gt;
 b=sol(1,:);&lt;br /&gt;
 c=sol((length(t)-1)/50+1,:);&lt;br /&gt;
 d=sol((length(t)-1)*2/50+1,:);&lt;br /&gt;
 e=sol((length(t)-1)*10/50+1,:);&lt;br /&gt;
 hold on&lt;br /&gt;
 plot(x,a);&lt;br /&gt;
 plot(x,b);&lt;br /&gt;
 plot(x,c);&lt;br /&gt;
 plot(x,d);&lt;br /&gt;
 plot(x,e);&lt;br /&gt;
 xlabel('Tubo')&lt;br /&gt;
 ylabel('Concentracion')&lt;br /&gt;
 hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:grafico_concentra_tiempo.jpg ‎|marco|centro|Concentración a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La distancia entre la solución estacionaria y las soluciones para los siguientes instantes: 0s, 1s, 2s y 10s; se puede apreciar en la imagen anterior. Además las distancias entre la solución estacionaria y la solución u(x,t) para t=0,1,2,10 son:&lt;br /&gt;
&lt;br /&gt;
dist10=0.3624&lt;br /&gt;
&lt;br /&gt;
dist1=0.9650&lt;br /&gt;
&lt;br /&gt;
dist2=0.7853&lt;br /&gt;
&lt;br /&gt;
dist0=1.3880&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Y el código Matlab usado es:&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 %distancias&lt;br /&gt;
 dist0=(sqrt(sum((sol(1,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist1=(sqrt(sum((sol(41,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist2=(sqrt(sum((sol(81,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist10=(sqrt(sum((sol(401,:)-1.17).^2)/(N+1)));&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar el estado estacionario con un error del 5% calculamos la media cuadrática de las distancias desde cada punto de la función al estado estacionario.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 % El error del 5%&lt;br /&gt;
 limite=0.05*8.25;&lt;br /&gt;
 % Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 dist=(sqrt(sum((sol(i,:)-1.17).^2)/(N+1)));&lt;br /&gt;
  if dist&amp;lt;limite&lt;br /&gt;
 tiempo=(i-1)*dt;&lt;br /&gt;
  break&lt;br /&gt;
 end&lt;br /&gt;
 end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Se obtiene un tiempo de 7.300 segundos. &lt;br /&gt;
Al dividir \triangle x por 10 sale un tiempo de 8.353 segundos.&lt;br /&gt;
&lt;br /&gt;
=Nuevas condiciones de frontera=&lt;br /&gt;
&lt;br /&gt;
==Aplicación de un limpiador==&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1,se coloca en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo,modificando las condiciones de frontera del problema generando que una condición de frontera tipo Neumann pase a ser una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
usaremos el '''método de diferencias finitas'' para llevar a cabo una aproximación del problema, siendo el código de Matlab obtenido: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=1;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El valor estacionario de la concentración en el tubo será de cero, debido a que se ha colocado un limpiador en uno de sus extremos que irá eliminando el contaminante.&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar este otro estado estacionario con un error del 5% vamos a calcular la media cuadrática de las concentraciones y ver cual coincide con el 5% de 5.85/7.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
 &lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=70;&lt;br /&gt;
q=1;&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 &lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
 &lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:(1/dt) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=(1/dt):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(5.85/7);&lt;br /&gt;
% Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
dist=(sqrt(sum(sol(i,:).^2)/(N+1)));&lt;br /&gt;
if dist&amp;lt;limite&lt;br /&gt;
tiempo=(i-1)*dt&lt;br /&gt;
break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
Obteniendo un tiempo de 65.775.&lt;br /&gt;
&lt;br /&gt;
===Variación de las condiciones de frontera tipo Neumann===&lt;br /&gt;
las nuevas condiciones neumann no son homogéneas. tendremos que homogeneizarlas con el siguiente cambio de variable :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,t)=w(x,t)+2a(t)x^2+b(t)x&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
el nuevo problema quedaría de la siguiente manera :&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=-3/7 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=-3, t&amp;gt;0\\w(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
w(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos observar que es un problema bien propuesto analizando su existencia de solución, unicidad y estabilidad con respecto al dato inicial.&lt;br /&gt;
&lt;br /&gt;
ahora ya se trata de un sistema con condiciones de frontera homogéneas, el problema de autovalores asociado es:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(PA)\left\{\begin{matrix}\\x''+μx=0 ,x\in\ (0,7)\\x'(0)=0\\x'(7)=0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y los autovalores y autofunciones salvo una constante son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;μ_k=\frac{\pi^2k^2}{49}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;φ_k=cos(kπ/7)x&amp;lt;/math&amp;gt;  k=0,1,2,3...&lt;br /&gt;
&lt;br /&gt;
Se aproxima el dato inicial y el segundo miembro, se elige Q y se toma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q c_kφ_k(x)=-3/7&amp;lt;/math&amp;gt;:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q a_kφ_k(x)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
donde se deduce que &amp;lt;math&amp;gt;c_k=\frac{\displaystyle\int_{0}^{7} -3/7cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_k=\frac{\displaystyle\int_{0}^{7} u_0cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El problema aproximado queda de la forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=\displaystyle\sum_{k=0}^Q c_kφ_k(x)&lt;br /&gt;
 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=0, t&amp;gt;0\\w(x,0)=w_0=\displaystyle\sum_{k=0}^Q a_kφ_k(x), x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Luego la solución aproximada que obtenemos será:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q T_k(t)φ_k(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo en la ecuación de difusión de una sustancia contaminante e igualando los coeficicientes de Fourier se obtiene el sistema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left\{\begin{matrix}\\T'_k(t)+μ_kT_k(t)=c_k\\T_k(0)=a_k\end{matrix}\right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendo el problema de valor inicial, se deduce que &amp;lt;math&amp;gt; T_k(t)=Ce^{-μ_k t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada queda de la forma &amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q Ce^{-μ_k t} cos(kπ/7)x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El valor de la constante C depende de la condición inicial,que es la que condiciona el valor de a&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
por ultimo solo nos quedaria deshacer el cambio de variable.&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35577</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35577"/>
				<updated>2016-05-03T14:56:31Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Concentración a lo largo del tiempo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecio2A14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicito3A14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerImplicito3A14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaHeun3A14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variable x mediante el método de Euler implícito.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[ Archivo:GraficaMasa2A14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[ Archivo:ConcentracionPuntoMedio2A14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
&lt;br /&gt;
=Concentración a lo largo del tiempo=&lt;br /&gt;
Se puede comprobar en la siguiente gráfica que para tiempos grandes la cantidad de contaminante se irá acercando al valor estacionario de 1.17. Es decir, nuestra solución del problema debe parecerse a la función u(x,t)=1.17, es constante, luego no varía.&lt;br /&gt;
&lt;br /&gt;
El código usado:&lt;br /&gt;
&lt;br /&gt;
 % Datos&lt;br /&gt;
  L=7;&lt;br /&gt;
  T=10;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.1;&lt;br /&gt;
 N=L/h;&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
 % Discretizacion temporal&lt;br /&gt;
 dt=h/4; % Tamaño de paso&lt;br /&gt;
 t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 % Matriz K&lt;br /&gt;
 K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
 K(1,2)=-2;&lt;br /&gt;
 K(N+1,N)=-2;&lt;br /&gt;
 K=q*K/h^2;&lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
 % Calculamos u0&lt;br /&gt;
 u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
 % Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
 sol(1,:)=u0'; &lt;br /&gt;
 U=u0; % Inicializacion&lt;br /&gt;
 % Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
 for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
 U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
 sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
 end&lt;br /&gt;
 % Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
 contaminante=zeros(1,length(t));&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 f=sol(i,:);&lt;br /&gt;
 area=trapz(x,f);&lt;br /&gt;
 contaminante(i)=area;&lt;br /&gt;
 end&lt;br /&gt;
%Solución estacionaria&lt;br /&gt;
 a=sol(length(t),:);&lt;br /&gt;
 b=sol(1,:);&lt;br /&gt;
 c=sol((length(t)-1)/50+1,:);&lt;br /&gt;
 d=sol((length(t)-1)*2/50+1,:);&lt;br /&gt;
 e=sol((length(t)-1)*10/50+1,:);&lt;br /&gt;
 hold on&lt;br /&gt;
 plot(x,a);&lt;br /&gt;
 plot(x,b);&lt;br /&gt;
 plot(x,c);&lt;br /&gt;
 plot(x,d);&lt;br /&gt;
 plot(x,e);&lt;br /&gt;
 xlabel('Tubo')&lt;br /&gt;
 ylabel('Concentracion')&lt;br /&gt;
 hold off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:grafico_concentra_tiempo.jpg ‎|marco|centro|Concentración a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La distancia entre la solución estacionaria y las soluciones para los siguientes instantes: 0s, 1s, 2s y 10s; se puede apreciar en la imagen anterior. Además las distancias entre la solución estacionaria y la solución u(x,t) para t=0,1,2,10 son:&lt;br /&gt;
&lt;br /&gt;
dist10=0.3624&lt;br /&gt;
&lt;br /&gt;
dist1=0.9650&lt;br /&gt;
&lt;br /&gt;
dist2=0.7853&lt;br /&gt;
&lt;br /&gt;
dist0=1.3880&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Y el código Matlab usado es:&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 %distancias&lt;br /&gt;
 dist0=(sqrt(sum((sol(1,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist1=(sqrt(sum((sol(41,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist2=(sqrt(sum((sol(81,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist10=(sqrt(sum((sol(401,:)-1.17).^2)/(N+1)));&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar el estado estacionario con un error del 5% calculamos la media cuadrática de las distancias desde cada punto de la función al estado estacionario.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 % El error del 5%&lt;br /&gt;
 limite=0.05*8.25;&lt;br /&gt;
 % Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 dist=(sqrt(sum((sol(i,:)-1.17).^2)/(N+1)));&lt;br /&gt;
  if dist&amp;lt;limite&lt;br /&gt;
 tiempo=(i-1)*dt;&lt;br /&gt;
  break&lt;br /&gt;
 end&lt;br /&gt;
 end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Se obtiene un tiempo de 7.300 segundos. &lt;br /&gt;
Al dividir \triangle x por 10 sale un tiempo de 8.353 segundos.&lt;br /&gt;
&lt;br /&gt;
=Nuevas condiciones de frontera=&lt;br /&gt;
&lt;br /&gt;
==Aplicación de un limpiador==&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1,se coloca en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo,modificando las condiciones de frontera del problema generando que una condición de frontera tipo Neumann pase a ser una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
usaremos el '''método de diferencias finitas'' para llevar a cabo una aproximación del problema, siendo el código de Matlab obtenido: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=1;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El valor estacionario de la concentración en el tubo será de cero, debido a que se ha colocado un limpiador en uno de sus extremos que irá eliminando el contaminante.&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar este otro estado estacionario con un error del 5% vamos a calcular la media cuadrática de las concentraciones y ver cual coincide con el 5% de 5.85/7.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
 &lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=70;&lt;br /&gt;
q=1;&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 &lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
 &lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:(1/dt) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=(1/dt):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(5.85/7);&lt;br /&gt;
% Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
dist=(sqrt(sum(sol(i,:).^2)/(N+1)));&lt;br /&gt;
if dist&amp;lt;limite&lt;br /&gt;
tiempo=(i-1)*dt&lt;br /&gt;
break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
Obteniendo un tiempo de 65.775.&lt;br /&gt;
&lt;br /&gt;
===Variación de las condiciones de frontera tipo Neumann===&lt;br /&gt;
las nuevas condiciones neumann no son homogéneas. tendremos que homogeneizarlas con el siguiente cambio de variable :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,t)=w(x,t)+2a(t)x^2+b(t)x&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
el nuevo problema quedaría de la siguiente manera :&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=-3/7 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=-3, t&amp;gt;0\\w(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
w(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos observar que es un problema bien propuesto analizando su existencia de solución, unicidad y estabilidad con respecto al dato inicial.&lt;br /&gt;
&lt;br /&gt;
ahora ya se trata de un sistema con condiciones de frontera homogéneas, el problema de autovalores asociado es:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(PA)\left\{\begin{matrix}\\x''+μx=0 ,x\in\ (0,7)\\x'(0)=0\\x'(7)=0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y los autovalores y autofunciones salvo una constante son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;μ_k=\frac{\pi^2k^2}{49}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;φ_k=cos(kπ/7)x&amp;lt;/math&amp;gt;  k=0,1,2,3...&lt;br /&gt;
&lt;br /&gt;
Se aproxima el dato inicial y el segundo miembro, se elige Q y se toma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q c_kφ_k(x)=-3/7&amp;lt;/math&amp;gt;:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q a_kφ_k(x)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
donde se deduce que &amp;lt;math&amp;gt;c_k=\frac{\displaystyle\int_{0}^{7} -3/7cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_k=\frac{\displaystyle\int_{0}^{7} u_0cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El problema aproximado queda de la forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=\displaystyle\sum_{k=0}^Q c_kφ_k(x)&lt;br /&gt;
 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=0, t&amp;gt;0\\w(x,0)=w_0=\displaystyle\sum_{k=0}^Q a_kφ_k(x), x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Luego la solución aproximada que obtenemos será:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q T_k(t)φ_k(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo en la ecuación de difusión de una sustancia contaminante e igualando los coeficicientes de Fourier se obtiene el sistema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left\{\begin{matrix}\\T'_k(t)+μ_kT_k(t)=c_k\\T_k(0)=a_k\end{matrix}\right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendo el problema de valor inicial, se deduce que &amp;lt;math&amp;gt; T_k(t)=Ce^{-μ_k t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada queda de la forma &amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q Ce^{-μ_k t} cos(kπ/7)x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El valor de la constante C depende de la condición inicial,que es la que condiciona el valor de a&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
por ultimo solo nos quedaria deshacer el cambio de variable.&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35575</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35575"/>
				<updated>2016-05-03T14:55:48Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Conservación de la masa */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecio2A14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicito3A14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerImplicito3A14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaHeun3A14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variable x mediante el método de Euler implícito.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[ Archivo:GraficaMasa2A14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[ Archivo:ConcentracionPuntoMedio2A14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
&lt;br /&gt;
=Concentración a lo largo del tiempo=&lt;br /&gt;
Se puede comprobar en la siguiente gráfica que para tiempos grandes la cantidad de contaminante se irá acercando al valor estacionario de 1.17. Es decir, nuestra solución del problema debe parecerse a la función u(x,t)=1.17, es constante, luego no varía.&lt;br /&gt;
&lt;br /&gt;
El código usado:&lt;br /&gt;
 % Datos&lt;br /&gt;
  L=7;&lt;br /&gt;
  T=10;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.1;&lt;br /&gt;
 N=L/h;&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
 % Discretizacion temporal&lt;br /&gt;
 dt=h/4; % Tamaño de paso&lt;br /&gt;
 t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 % Matriz K&lt;br /&gt;
 K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
 K(1,2)=-2;&lt;br /&gt;
 K(N+1,N)=-2;&lt;br /&gt;
 K=q*K/h^2;&lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
 % Calculamos u0&lt;br /&gt;
 u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
 % Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
 sol(1,:)=u0'; &lt;br /&gt;
 U=u0; % Inicializacion&lt;br /&gt;
 % Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
 for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
 U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
 sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
 end&lt;br /&gt;
 % Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
 contaminante=zeros(1,length(t));&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 f=sol(i,:);&lt;br /&gt;
 area=trapz(x,f);&lt;br /&gt;
 contaminante(i)=area;&lt;br /&gt;
 end&lt;br /&gt;
%Solución estacionaria&lt;br /&gt;
 a=sol(length(t),:);&lt;br /&gt;
 b=sol(1,:);&lt;br /&gt;
 c=sol((length(t)-1)/50+1,:);&lt;br /&gt;
 d=sol((length(t)-1)*2/50+1,:);&lt;br /&gt;
 e=sol((length(t)-1)*10/50+1,:);&lt;br /&gt;
 hold on&lt;br /&gt;
 plot(x,a);&lt;br /&gt;
 plot(x,b);&lt;br /&gt;
 plot(x,c);&lt;br /&gt;
 plot(x,d);&lt;br /&gt;
 plot(x,e);&lt;br /&gt;
 xlabel('Tubo')&lt;br /&gt;
 ylabel('Concentracion')&lt;br /&gt;
 hold off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:grafico_concentra_tiempo.jpg ‎|marco|centro|Concentración a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La distancia entre la solución estacionaria y las soluciones para los siguientes instantes: 0s, 1s, 2s y 10s; se puede apreciar en la imagen anterior. Además las distancias entre la solución estacionaria y la solución u(x,t) para t=0,1,2,10 son:&lt;br /&gt;
&lt;br /&gt;
dist10=0.3624&lt;br /&gt;
&lt;br /&gt;
dist1=0.9650&lt;br /&gt;
&lt;br /&gt;
dist2=0.7853&lt;br /&gt;
&lt;br /&gt;
dist0=1.3880&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Y el código Matlab usado es:&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 %distancias&lt;br /&gt;
 dist0=(sqrt(sum((sol(1,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist1=(sqrt(sum((sol(41,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist2=(sqrt(sum((sol(81,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist10=(sqrt(sum((sol(401,:)-1.17).^2)/(N+1)));&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar el estado estacionario con un error del 5% calculamos la media cuadrática de las distancias desde cada punto de la función al estado estacionario.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 % El error del 5%&lt;br /&gt;
 limite=0.05*8.25;&lt;br /&gt;
 % Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 dist=(sqrt(sum((sol(i,:)-1.17).^2)/(N+1)));&lt;br /&gt;
  if dist&amp;lt;limite&lt;br /&gt;
 tiempo=(i-1)*dt;&lt;br /&gt;
  break&lt;br /&gt;
 end&lt;br /&gt;
 end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Se obtiene un tiempo de 7.300 segundos. &lt;br /&gt;
Al dividir \triangle x por 10 sale un tiempo de 8.353 segundos.&lt;br /&gt;
&lt;br /&gt;
=Nuevas condiciones de frontera=&lt;br /&gt;
&lt;br /&gt;
==Aplicación de un limpiador==&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1,se coloca en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo,modificando las condiciones de frontera del problema generando que una condición de frontera tipo Neumann pase a ser una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
usaremos el '''método de diferencias finitas'' para llevar a cabo una aproximación del problema, siendo el código de Matlab obtenido: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=1;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El valor estacionario de la concentración en el tubo será de cero, debido a que se ha colocado un limpiador en uno de sus extremos que irá eliminando el contaminante.&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar este otro estado estacionario con un error del 5% vamos a calcular la media cuadrática de las concentraciones y ver cual coincide con el 5% de 5.85/7.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
 &lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=70;&lt;br /&gt;
q=1;&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 &lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
 &lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:(1/dt) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=(1/dt):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(5.85/7);&lt;br /&gt;
% Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
dist=(sqrt(sum(sol(i,:).^2)/(N+1)));&lt;br /&gt;
if dist&amp;lt;limite&lt;br /&gt;
tiempo=(i-1)*dt&lt;br /&gt;
break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
Obteniendo un tiempo de 65.775.&lt;br /&gt;
&lt;br /&gt;
===Variación de las condiciones de frontera tipo Neumann===&lt;br /&gt;
las nuevas condiciones neumann no son homogéneas. tendremos que homogeneizarlas con el siguiente cambio de variable :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,t)=w(x,t)+2a(t)x^2+b(t)x&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
el nuevo problema quedaría de la siguiente manera :&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=-3/7 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=-3, t&amp;gt;0\\w(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
w(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos observar que es un problema bien propuesto analizando su existencia de solución, unicidad y estabilidad con respecto al dato inicial.&lt;br /&gt;
&lt;br /&gt;
ahora ya se trata de un sistema con condiciones de frontera homogéneas, el problema de autovalores asociado es:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(PA)\left\{\begin{matrix}\\x''+μx=0 ,x\in\ (0,7)\\x'(0)=0\\x'(7)=0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y los autovalores y autofunciones salvo una constante son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;μ_k=\frac{\pi^2k^2}{49}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;φ_k=cos(kπ/7)x&amp;lt;/math&amp;gt;  k=0,1,2,3...&lt;br /&gt;
&lt;br /&gt;
Se aproxima el dato inicial y el segundo miembro, se elige Q y se toma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q c_kφ_k(x)=-3/7&amp;lt;/math&amp;gt;:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q a_kφ_k(x)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
donde se deduce que &amp;lt;math&amp;gt;c_k=\frac{\displaystyle\int_{0}^{7} -3/7cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_k=\frac{\displaystyle\int_{0}^{7} u_0cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El problema aproximado queda de la forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=\displaystyle\sum_{k=0}^Q c_kφ_k(x)&lt;br /&gt;
 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=0, t&amp;gt;0\\w(x,0)=w_0=\displaystyle\sum_{k=0}^Q a_kφ_k(x), x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Luego la solución aproximada que obtenemos será:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q T_k(t)φ_k(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo en la ecuación de difusión de una sustancia contaminante e igualando los coeficicientes de Fourier se obtiene el sistema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left\{\begin{matrix}\\T'_k(t)+μ_kT_k(t)=c_k\\T_k(0)=a_k\end{matrix}\right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendo el problema de valor inicial, se deduce que &amp;lt;math&amp;gt; T_k(t)=Ce^{-μ_k t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada queda de la forma &amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q Ce^{-μ_k t} cos(kπ/7)x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El valor de la constante C depende de la condición inicial,que es la que condiciona el valor de a&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
por ultimo solo nos quedaria deshacer el cambio de variable.&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35573</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35573"/>
				<updated>2016-05-03T14:55:33Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Conservación de la masa */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecio2A14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicito3A14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerImplicito3A14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaHeun3A14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variable x mediante el método de euler implícito.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[ Archivo:GraficaMasa2A14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[ Archivo:ConcentracionPuntoMedio2A14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
&lt;br /&gt;
=Concentración a lo largo del tiempo=&lt;br /&gt;
Se puede comprobar en la siguiente gráfica que para tiempos grandes la cantidad de contaminante se irá acercando al valor estacionario de 1.17. Es decir, nuestra solución del problema debe parecerse a la función u(x,t)=1.17, es constante, luego no varía.&lt;br /&gt;
&lt;br /&gt;
El código usado:&lt;br /&gt;
 % Datos&lt;br /&gt;
  L=7;&lt;br /&gt;
  T=10;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.1;&lt;br /&gt;
 N=L/h;&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
 % Discretizacion temporal&lt;br /&gt;
 dt=h/4; % Tamaño de paso&lt;br /&gt;
 t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 % Matriz K&lt;br /&gt;
 K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
 K(1,2)=-2;&lt;br /&gt;
 K(N+1,N)=-2;&lt;br /&gt;
 K=q*K/h^2;&lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
 % Calculamos u0&lt;br /&gt;
 u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
 % Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
 sol(1,:)=u0'; &lt;br /&gt;
 U=u0; % Inicializacion&lt;br /&gt;
 % Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
 for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
 U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
 sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
 end&lt;br /&gt;
 % Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
 contaminante=zeros(1,length(t));&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 f=sol(i,:);&lt;br /&gt;
 area=trapz(x,f);&lt;br /&gt;
 contaminante(i)=area;&lt;br /&gt;
 end&lt;br /&gt;
%Solución estacionaria&lt;br /&gt;
 a=sol(length(t),:);&lt;br /&gt;
 b=sol(1,:);&lt;br /&gt;
 c=sol((length(t)-1)/50+1,:);&lt;br /&gt;
 d=sol((length(t)-1)*2/50+1,:);&lt;br /&gt;
 e=sol((length(t)-1)*10/50+1,:);&lt;br /&gt;
 hold on&lt;br /&gt;
 plot(x,a);&lt;br /&gt;
 plot(x,b);&lt;br /&gt;
 plot(x,c);&lt;br /&gt;
 plot(x,d);&lt;br /&gt;
 plot(x,e);&lt;br /&gt;
 xlabel('Tubo')&lt;br /&gt;
 ylabel('Concentracion')&lt;br /&gt;
 hold off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:grafico_concentra_tiempo.jpg ‎|marco|centro|Concentración a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La distancia entre la solución estacionaria y las soluciones para los siguientes instantes: 0s, 1s, 2s y 10s; se puede apreciar en la imagen anterior. Además las distancias entre la solución estacionaria y la solución u(x,t) para t=0,1,2,10 son:&lt;br /&gt;
&lt;br /&gt;
dist10=0.3624&lt;br /&gt;
&lt;br /&gt;
dist1=0.9650&lt;br /&gt;
&lt;br /&gt;
dist2=0.7853&lt;br /&gt;
&lt;br /&gt;
dist0=1.3880&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Y el código Matlab usado es:&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 %distancias&lt;br /&gt;
 dist0=(sqrt(sum((sol(1,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist1=(sqrt(sum((sol(41,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist2=(sqrt(sum((sol(81,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist10=(sqrt(sum((sol(401,:)-1.17).^2)/(N+1)));&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar el estado estacionario con un error del 5% calculamos la media cuadrática de las distancias desde cada punto de la función al estado estacionario.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 % El error del 5%&lt;br /&gt;
 limite=0.05*8.25;&lt;br /&gt;
 % Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 dist=(sqrt(sum((sol(i,:)-1.17).^2)/(N+1)));&lt;br /&gt;
  if dist&amp;lt;limite&lt;br /&gt;
 tiempo=(i-1)*dt;&lt;br /&gt;
  break&lt;br /&gt;
 end&lt;br /&gt;
 end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Se obtiene un tiempo de 7.300 segundos. &lt;br /&gt;
Al dividir \triangle x por 10 sale un tiempo de 8.353 segundos.&lt;br /&gt;
&lt;br /&gt;
=Nuevas condiciones de frontera=&lt;br /&gt;
&lt;br /&gt;
==Aplicación de un limpiador==&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1,se coloca en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo,modificando las condiciones de frontera del problema generando que una condición de frontera tipo Neumann pase a ser una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
usaremos el '''método de diferencias finitas'' para llevar a cabo una aproximación del problema, siendo el código de Matlab obtenido: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=1;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El valor estacionario de la concentración en el tubo será de cero, debido a que se ha colocado un limpiador en uno de sus extremos que irá eliminando el contaminante.&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar este otro estado estacionario con un error del 5% vamos a calcular la media cuadrática de las concentraciones y ver cual coincide con el 5% de 5.85/7.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
 &lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=70;&lt;br /&gt;
q=1;&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 &lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
 &lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:(1/dt) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=(1/dt):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(5.85/7);&lt;br /&gt;
% Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
dist=(sqrt(sum(sol(i,:).^2)/(N+1)));&lt;br /&gt;
if dist&amp;lt;limite&lt;br /&gt;
tiempo=(i-1)*dt&lt;br /&gt;
break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
Obteniendo un tiempo de 65.775.&lt;br /&gt;
&lt;br /&gt;
===Variación de las condiciones de frontera tipo Neumann===&lt;br /&gt;
las nuevas condiciones neumann no son homogéneas. tendremos que homogeneizarlas con el siguiente cambio de variable :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,t)=w(x,t)+2a(t)x^2+b(t)x&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
el nuevo problema quedaría de la siguiente manera :&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=-3/7 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=-3, t&amp;gt;0\\w(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
w(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos observar que es un problema bien propuesto analizando su existencia de solución, unicidad y estabilidad con respecto al dato inicial.&lt;br /&gt;
&lt;br /&gt;
ahora ya se trata de un sistema con condiciones de frontera homogéneas, el problema de autovalores asociado es:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(PA)\left\{\begin{matrix}\\x''+μx=0 ,x\in\ (0,7)\\x'(0)=0\\x'(7)=0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y los autovalores y autofunciones salvo una constante son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;μ_k=\frac{\pi^2k^2}{49}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;φ_k=cos(kπ/7)x&amp;lt;/math&amp;gt;  k=0,1,2,3...&lt;br /&gt;
&lt;br /&gt;
Se aproxima el dato inicial y el segundo miembro, se elige Q y se toma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q c_kφ_k(x)=-3/7&amp;lt;/math&amp;gt;:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q a_kφ_k(x)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
donde se deduce que &amp;lt;math&amp;gt;c_k=\frac{\displaystyle\int_{0}^{7} -3/7cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_k=\frac{\displaystyle\int_{0}^{7} u_0cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El problema aproximado queda de la forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=\displaystyle\sum_{k=0}^Q c_kφ_k(x)&lt;br /&gt;
 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=0, t&amp;gt;0\\w(x,0)=w_0=\displaystyle\sum_{k=0}^Q a_kφ_k(x), x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Luego la solución aproximada que obtenemos será:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q T_k(t)φ_k(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo en la ecuación de difusión de una sustancia contaminante e igualando los coeficicientes de Fourier se obtiene el sistema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left\{\begin{matrix}\\T'_k(t)+μ_kT_k(t)=c_k\\T_k(0)=a_k\end{matrix}\right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendo el problema de valor inicial, se deduce que &amp;lt;math&amp;gt; T_k(t)=Ce^{-μ_k t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada queda de la forma &amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q Ce^{-μ_k t} cos(kπ/7)x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El valor de la constante C depende de la condición inicial,que es la que condiciona el valor de a&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
por ultimo solo nos quedaria deshacer el cambio de variable.&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35564</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35564"/>
				<updated>2016-05-03T14:36:55Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Aplicación de un limpiador */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecio2A14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicito3A14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerImplicito3A14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaHeun3A14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variable x.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[ Archivo:GraficaMasa2A14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[ Archivo:ConcentracionPuntoMedio2A14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
&lt;br /&gt;
=Concentración a lo largo del tiempo=&lt;br /&gt;
Se puede comprobar en la siguiente gráfica que para tiempos grandes la cantidad de contaminante se irá acercando al valor estacionario de 1.17. Es decir, nuestra solución del problema debe parecerse a la función u(x,t)=1.17, es constante, luego no varía.&lt;br /&gt;
&lt;br /&gt;
El código usado:&lt;br /&gt;
 % Datos&lt;br /&gt;
  L=7;&lt;br /&gt;
  T=10;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.1;&lt;br /&gt;
 N=L/h;&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
 % Discretizacion temporal&lt;br /&gt;
 dt=h/4; % Tamaño de paso&lt;br /&gt;
 t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 % Matriz K&lt;br /&gt;
 K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
 K(1,2)=-2;&lt;br /&gt;
 K(N+1,N)=-2;&lt;br /&gt;
 K=q*K/h^2;&lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
 % Calculamos u0&lt;br /&gt;
 u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
 % Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
 sol(1,:)=u0'; &lt;br /&gt;
 U=u0; % Inicializacion&lt;br /&gt;
 % Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
 for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
 U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
 sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
 end&lt;br /&gt;
 % Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
 contaminante=zeros(1,length(t));&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 f=sol(i,:);&lt;br /&gt;
 area=trapz(x,f);&lt;br /&gt;
 contaminante(i)=area;&lt;br /&gt;
 end&lt;br /&gt;
%Solución estacionaria&lt;br /&gt;
 a=sol(length(t),:);&lt;br /&gt;
 b=sol(1,:);&lt;br /&gt;
 c=sol((length(t)-1)/50+1,:);&lt;br /&gt;
 d=sol((length(t)-1)*2/50+1,:);&lt;br /&gt;
 e=sol((length(t)-1)*10/50+1,:);&lt;br /&gt;
 hold on&lt;br /&gt;
 plot(x,a);&lt;br /&gt;
 plot(x,b);&lt;br /&gt;
 plot(x,c);&lt;br /&gt;
 plot(x,d);&lt;br /&gt;
 plot(x,e);&lt;br /&gt;
 xlabel('Tubo')&lt;br /&gt;
 ylabel('Concentracion')&lt;br /&gt;
 hold off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:grafico_concentra_tiempo.jpg ‎|marco|centro|Concentración a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La distancia entre la solución estacionaria y las soluciones para los siguientes instantes: 0s, 1s, 2s y 10s; se puede apreciar en la imagen anterior. Además las distancias entre la solución estacionaria y la solución u(x,t) para t=0,1,2,10 son:&lt;br /&gt;
&lt;br /&gt;
dist10=0.3624&lt;br /&gt;
&lt;br /&gt;
dist1=0.9650&lt;br /&gt;
&lt;br /&gt;
dist2=0.7853&lt;br /&gt;
&lt;br /&gt;
dist0=1.3880&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Y el código Matlab usado es:&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 %distancias&lt;br /&gt;
 dist0=(sqrt(sum((sol(1,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist1=(sqrt(sum((sol(41,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist2=(sqrt(sum((sol(81,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist10=(sqrt(sum((sol(401,:)-1.17).^2)/(N+1)));&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar el estado estacionario con un error del 5% calculamos la media cuadrática de las distancias desde cada punto de la función al estado estacionario.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 % El error del 5%&lt;br /&gt;
 limite=0.05*8.25;&lt;br /&gt;
 % Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 dist=(sqrt(sum((sol(i,:)-1.17).^2)/(N+1)));&lt;br /&gt;
  if dist&amp;lt;limite&lt;br /&gt;
 tiempo=(i-1)*dt;&lt;br /&gt;
  break&lt;br /&gt;
 end&lt;br /&gt;
 end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Se obtiene un tiempo de 7.300 segundos. &lt;br /&gt;
Al dividir \triangle x por 10 sale un tiempo de 8.353 segundos.&lt;br /&gt;
&lt;br /&gt;
=Nuevas condiciones de frontera=&lt;br /&gt;
&lt;br /&gt;
==Aplicación de un limpiador==&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1,se coloca en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo,modificando las condiciones de frontera del problema generando que una condición de frontera tipo Neumann pase a ser una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
usaremos el '''método de diferencias finitas'' para llevar a cabo una aproximación del problema, siendo el código de Matlab obtenido: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=1;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35563</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35563"/>
				<updated>2016-05-03T14:36:39Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Nuevas condiciones de frontera */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecio2A14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicito3A14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerImplicito3A14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaHeun3A14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variable x.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[ Archivo:GraficaMasa2A14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[ Archivo:ConcentracionPuntoMedio2A14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
&lt;br /&gt;
=Concentración a lo largo del tiempo=&lt;br /&gt;
Se puede comprobar en la siguiente gráfica que para tiempos grandes la cantidad de contaminante se irá acercando al valor estacionario de 1.17. Es decir, nuestra solución del problema debe parecerse a la función u(x,t)=1.17, es constante, luego no varía.&lt;br /&gt;
&lt;br /&gt;
El código usado:&lt;br /&gt;
 % Datos&lt;br /&gt;
  L=7;&lt;br /&gt;
  T=10;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.1;&lt;br /&gt;
 N=L/h;&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
 % Discretizacion temporal&lt;br /&gt;
 dt=h/4; % Tamaño de paso&lt;br /&gt;
 t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 % Matriz K&lt;br /&gt;
 K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
 K(1,2)=-2;&lt;br /&gt;
 K(N+1,N)=-2;&lt;br /&gt;
 K=q*K/h^2;&lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
 % Calculamos u0&lt;br /&gt;
 u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
 % Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
 sol(1,:)=u0'; &lt;br /&gt;
 U=u0; % Inicializacion&lt;br /&gt;
 % Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
 for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
 U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
 sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
 end&lt;br /&gt;
 % Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
 contaminante=zeros(1,length(t));&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 f=sol(i,:);&lt;br /&gt;
 area=trapz(x,f);&lt;br /&gt;
 contaminante(i)=area;&lt;br /&gt;
 end&lt;br /&gt;
%Solución estacionaria&lt;br /&gt;
 a=sol(length(t),:);&lt;br /&gt;
 b=sol(1,:);&lt;br /&gt;
 c=sol((length(t)-1)/50+1,:);&lt;br /&gt;
 d=sol((length(t)-1)*2/50+1,:);&lt;br /&gt;
 e=sol((length(t)-1)*10/50+1,:);&lt;br /&gt;
 hold on&lt;br /&gt;
 plot(x,a);&lt;br /&gt;
 plot(x,b);&lt;br /&gt;
 plot(x,c);&lt;br /&gt;
 plot(x,d);&lt;br /&gt;
 plot(x,e);&lt;br /&gt;
 xlabel('Tubo')&lt;br /&gt;
 ylabel('Concentracion')&lt;br /&gt;
 hold off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:grafico_concentra_tiempo.jpg ‎|marco|centro|Concentración a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La distancia entre la solución estacionaria y las soluciones para los siguientes instantes: 0s, 1s, 2s y 10s; se puede apreciar en la imagen anterior. Además las distancias entre la solución estacionaria y la solución u(x,t) para t=0,1,2,10 son:&lt;br /&gt;
&lt;br /&gt;
dist10=0.3624&lt;br /&gt;
&lt;br /&gt;
dist1=0.9650&lt;br /&gt;
&lt;br /&gt;
dist2=0.7853&lt;br /&gt;
&lt;br /&gt;
dist0=1.3880&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Y el código Matlab usado es:&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 %distancias&lt;br /&gt;
 dist0=(sqrt(sum((sol(1,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist1=(sqrt(sum((sol(41,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist2=(sqrt(sum((sol(81,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist10=(sqrt(sum((sol(401,:)-1.17).^2)/(N+1)));&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar el estado estacionario con un error del 5% calculamos la media cuadrática de las distancias desde cada punto de la función al estado estacionario.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 % El error del 5%&lt;br /&gt;
 limite=0.05*8.25;&lt;br /&gt;
 % Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 dist=(sqrt(sum((sol(i,:)-1.17).^2)/(N+1)));&lt;br /&gt;
  if dist&amp;lt;limite&lt;br /&gt;
 tiempo=(i-1)*dt;&lt;br /&gt;
  break&lt;br /&gt;
 end&lt;br /&gt;
 end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Se obtiene un tiempo de 7.300 segundos. &lt;br /&gt;
Al dividir \triangle x por 10 sale un tiempo de 8.353 segundos.&lt;br /&gt;
&lt;br /&gt;
=Nuevas condiciones de frontera=&lt;br /&gt;
&lt;br /&gt;
=Aplicación de un limpiador=&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1,se coloca en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo,modificando las condiciones de frontera del problema generando que una condición de frontera tipo Neumann pase a ser una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
usaremos el '''método de diferencias finitas'' para llevar a cabo una aproximación del problema, siendo el código de Matlab obtenido: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=1;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35562</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35562"/>
				<updated>2016-05-03T14:35:23Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Aplicación de un limpiador */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecio2A14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicito3A14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerImplicito3A14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaHeun3A14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variable x.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[ Archivo:GraficaMasa2A14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[ Archivo:ConcentracionPuntoMedio2A14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
&lt;br /&gt;
=Concentración a lo largo del tiempo=&lt;br /&gt;
Se puede comprobar en la siguiente gráfica que para tiempos grandes la cantidad de contaminante se irá acercando al valor estacionario de 1.17. Es decir, nuestra solución del problema debe parecerse a la función u(x,t)=1.17, es constante, luego no varía.&lt;br /&gt;
&lt;br /&gt;
El código usado:&lt;br /&gt;
 % Datos&lt;br /&gt;
  L=7;&lt;br /&gt;
  T=10;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.1;&lt;br /&gt;
 N=L/h;&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
 % Discretizacion temporal&lt;br /&gt;
 dt=h/4; % Tamaño de paso&lt;br /&gt;
 t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 % Matriz K&lt;br /&gt;
 K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
 K(1,2)=-2;&lt;br /&gt;
 K(N+1,N)=-2;&lt;br /&gt;
 K=q*K/h^2;&lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
 % Calculamos u0&lt;br /&gt;
 u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
 % Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
 sol(1,:)=u0'; &lt;br /&gt;
 U=u0; % Inicializacion&lt;br /&gt;
 % Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
 for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
 U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
 sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
 end&lt;br /&gt;
 % Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
 contaminante=zeros(1,length(t));&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 f=sol(i,:);&lt;br /&gt;
 area=trapz(x,f);&lt;br /&gt;
 contaminante(i)=area;&lt;br /&gt;
 end&lt;br /&gt;
%Solución estacionaria&lt;br /&gt;
 a=sol(length(t),:);&lt;br /&gt;
 b=sol(1,:);&lt;br /&gt;
 c=sol((length(t)-1)/50+1,:);&lt;br /&gt;
 d=sol((length(t)-1)*2/50+1,:);&lt;br /&gt;
 e=sol((length(t)-1)*10/50+1,:);&lt;br /&gt;
 hold on&lt;br /&gt;
 plot(x,a);&lt;br /&gt;
 plot(x,b);&lt;br /&gt;
 plot(x,c);&lt;br /&gt;
 plot(x,d);&lt;br /&gt;
 plot(x,e);&lt;br /&gt;
 xlabel('Tubo')&lt;br /&gt;
 ylabel('Concentracion')&lt;br /&gt;
 hold off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:grafico_concentra_tiempo.jpg ‎|marco|centro|Concentración a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La distancia entre la solución estacionaria y las soluciones para los siguientes instantes: 0s, 1s, 2s y 10s; se puede apreciar en la imagen anterior. Además las distancias entre la solución estacionaria y la solución u(x,t) para t=0,1,2,10 son:&lt;br /&gt;
&lt;br /&gt;
dist10=0.3624&lt;br /&gt;
&lt;br /&gt;
dist1=0.9650&lt;br /&gt;
&lt;br /&gt;
dist2=0.7853&lt;br /&gt;
&lt;br /&gt;
dist0=1.3880&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Y el código Matlab usado es:&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 %distancias&lt;br /&gt;
 dist0=(sqrt(sum((sol(1,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist1=(sqrt(sum((sol(41,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist2=(sqrt(sum((sol(81,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist10=(sqrt(sum((sol(401,:)-1.17).^2)/(N+1)));&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar el estado estacionario con un error del 5% calculamos la media cuadrática de las distancias desde cada punto de la función al estado estacionario.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 % El error del 5%&lt;br /&gt;
 limite=0.05*8.25;&lt;br /&gt;
 % Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 dist=(sqrt(sum((sol(i,:)-1.17).^2)/(N+1)));&lt;br /&gt;
  if dist&amp;lt;limite&lt;br /&gt;
 tiempo=(i-1)*dt;&lt;br /&gt;
  break&lt;br /&gt;
 end&lt;br /&gt;
 end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Se obtiene un tiempo de 7.300 segundos. &lt;br /&gt;
Al dividir \triangle x por 10 sale un tiempo de 8.353 segundos.&lt;br /&gt;
&lt;br /&gt;
==Nuevas condiciones de frontera==&lt;br /&gt;
=Aplicación de un limpiador=&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1,se coloca en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo,modificando las condiciones de frontera del problema generando que una condición de frontera tipo Neumann pase a ser una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
usaremos el '''método de diferencias finitas'' para llevar a cabo una aproximación del problema, siendo el código de Matlab obtenido: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=1;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35561</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35561"/>
				<updated>2016-05-03T14:29:11Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Aplicación de un limpiador */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecio2A14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicito3A14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerImplicito3A14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaHeun3A14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variable x.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[ Archivo:GraficaMasa2A14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[ Archivo:ConcentracionPuntoMedio2A14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
&lt;br /&gt;
=Concentración a lo largo del tiempo=&lt;br /&gt;
Se puede comprobar en la siguiente gráfica que para tiempos grandes la cantidad de contaminante se irá acercando al valor estacionario de 1.17. Es decir, nuestra solución del problema debe parecerse a la función u(x,t)=1.17, es constante, luego no varía.&lt;br /&gt;
&lt;br /&gt;
El código usado:&lt;br /&gt;
 % Datos&lt;br /&gt;
  L=7;&lt;br /&gt;
  T=10;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.1;&lt;br /&gt;
 N=L/h;&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
 % Discretizacion temporal&lt;br /&gt;
 dt=h/4; % Tamaño de paso&lt;br /&gt;
 t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 % Matriz K&lt;br /&gt;
 K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
 K(1,2)=-2;&lt;br /&gt;
 K(N+1,N)=-2;&lt;br /&gt;
 K=q*K/h^2;&lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
 % Calculamos u0&lt;br /&gt;
 u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
 % Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
 sol(1,:)=u0'; &lt;br /&gt;
 U=u0; % Inicializacion&lt;br /&gt;
 % Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
 for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
 U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
 sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
 end&lt;br /&gt;
 % Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
 contaminante=zeros(1,length(t));&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 f=sol(i,:);&lt;br /&gt;
 area=trapz(x,f);&lt;br /&gt;
 contaminante(i)=area;&lt;br /&gt;
 end&lt;br /&gt;
%Solución estacionaria&lt;br /&gt;
 a=sol(length(t),:);&lt;br /&gt;
 b=sol(1,:);&lt;br /&gt;
 c=sol((length(t)-1)/50+1,:);&lt;br /&gt;
 d=sol((length(t)-1)*2/50+1,:);&lt;br /&gt;
 e=sol((length(t)-1)*10/50+1,:);&lt;br /&gt;
 hold on&lt;br /&gt;
 plot(x,a);&lt;br /&gt;
 plot(x,b);&lt;br /&gt;
 plot(x,c);&lt;br /&gt;
 plot(x,d);&lt;br /&gt;
 plot(x,e);&lt;br /&gt;
 xlabel('Tubo')&lt;br /&gt;
 ylabel('Concentracion')&lt;br /&gt;
 hold off&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:grafico_concentra_tiempo.jpg ‎|marco|centro|Concentración a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La distancia entre la solución estacionaria y las soluciones para los siguientes instantes: 0s, 1s, 2s y 10s; se puede apreciar en la imagen anterior. Además las distancias entre la solución estacionaria y la solución u(x,t) para t=0,1,2,10 son:&lt;br /&gt;
&lt;br /&gt;
dist10=0.3624&lt;br /&gt;
&lt;br /&gt;
dist1=0.9650&lt;br /&gt;
&lt;br /&gt;
dist2=0.7853&lt;br /&gt;
&lt;br /&gt;
dist0=1.3880&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Y el código Matlab usado es:&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 %distancias&lt;br /&gt;
 dist0=(sqrt(sum((sol(1,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist1=(sqrt(sum((sol(41,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist2=(sqrt(sum((sol(81,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist10=(sqrt(sum((sol(401,:)-1.17).^2)/(N+1)));&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar el estado estacionario con un error del 5% calculamos la media cuadrática de las distancias desde cada punto de la función al estado estacionario.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 % El error del 5%&lt;br /&gt;
 limite=0.05*8.25;&lt;br /&gt;
 % Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 dist=(sqrt(sum((sol(i,:)-1.17).^2)/(N+1)));&lt;br /&gt;
  if dist&amp;lt;limite&lt;br /&gt;
 tiempo=(i-1)*dt;&lt;br /&gt;
  break&lt;br /&gt;
 end&lt;br /&gt;
 end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Se obtiene un tiempo de 7.300 segundos. &lt;br /&gt;
Al dividir \triangle x por 10 sale un tiempo de 8.353 segundos.&lt;br /&gt;
&lt;br /&gt;
==Nuevas condiciones de frontera==&lt;br /&gt;
=Aplicación de un limpiador=&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1,se coloca en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo,modificando las condiciones de frontera del problema generando que una condición de frontera tipo Neumann pase a ser una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
usaremos el '''método de diferencias finitas'' para llevar a cabo una aproximación del problema, siendo el código de Matlab obtenido: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=1;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35489</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35489"/>
				<updated>2016-05-03T09:39:38Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Conservación de la masa */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecio2A14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicito3A14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerImplicito3A14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaHeun3A14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variable x.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[ Archivo:GraficaMasa2A14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[ Archivo:ConcentracionPuntoMedio2A14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
&lt;br /&gt;
=Concentración a lo largo del tiempo=&lt;br /&gt;
Se puede comprobar en la siguiente gráfica que para tiempos grandes la cantidad de contaminante se irá acercando al valor estacionario de 8.25/7=1.17. Es decir, nuestra solución del problema debe parecerse a la función u(x,t)=1.17, es constante, luego no varía.&lt;br /&gt;
[[Archivo:grafico_concentracion_tiempo.jpg ‎|marco|centro|Concentración a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La distancia entre la solución estacionaria y las soluciones para los siguientes instantes: 0s, 1s, 2s y 10s; se puede apreciar en la imagen anterior. Además las distancias entre la solución estacionaria y la solución u(x,t) para t=0,1,2,10 son:&lt;br /&gt;
&lt;br /&gt;
dist0=1.4662&lt;br /&gt;
&lt;br /&gt;
dist1=1.0671&lt;br /&gt;
&lt;br /&gt;
dist2=0.8632&lt;br /&gt;
&lt;br /&gt;
dist10=0.1724&lt;br /&gt;
&lt;br /&gt;
Y el código Matlab usado es:&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 %distancias&lt;br /&gt;
 dist0=(sqrt(sum((sol(1,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist1=(sqrt(sum((sol(41,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist2=(sqrt(sum((sol(81,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist10=(sqrt(sum((sol(401,:)-1.17).^2)/(N+1)));&lt;br /&gt;
}}&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar el estado estacionario con un error del 5% calculamos la media cuadrática de las distancias desde cada punto de la función al estado estacionario.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 % El error del 5%&lt;br /&gt;
 limite=0.05*8.25;&lt;br /&gt;
 % Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 dist=(sqrt(sum((sol(i,:)-1.17).^2)/(N+1)));&lt;br /&gt;
  if dist&amp;lt;limite&lt;br /&gt;
 tiempo=(i-1)*dt;&lt;br /&gt;
  break&lt;br /&gt;
 end&lt;br /&gt;
 end&lt;br /&gt;
}}&lt;br /&gt;
Se obtiene un tiempo de 5.6750 segundos. &lt;br /&gt;
Al dividir \triangle x por 10 sale un tiempo de 7.353 segundos.&lt;br /&gt;
&lt;br /&gt;
=Limpiador=&lt;br /&gt;
&lt;br /&gt;
Colocar un limpiador en el extremo izquierdo se traduce físicamente en que la concentración en x=0 es ahora nula. Por lo tanto el problema a resolver ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1, colocamos en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo izquierdo, lo que modifica las condiciones de frontera del problema provocando que una condición de frontera tipo Neumann se convierta en una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
Obtenemos una aproximación numérica de la solución utilizando el '''método de diferencias finitas'''. &lt;br /&gt;
&lt;br /&gt;
El código en MATLAB del método sería:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:t2li.png|marco|centro|Resolución del sistema de difusión de una sustancia contaminante por el método del trapecio.]]&lt;br /&gt;
&lt;br /&gt;
El valor estacionario de la concentración en el tubo será de cero, debido a que se ha colocado un limpiador en uno de sus extremos que irá eliminando el contaminante.&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar este otro estado estacionario con un error del 5% vamos a calcular la media cuadrática de las concentraciones y ver cual coincide con el 5% de 5.85/7.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
 &lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=70;&lt;br /&gt;
q=1;&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 &lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
 &lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:(1/dt) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=(1/dt):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(5.85/7);&lt;br /&gt;
% Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
dist=(sqrt(sum(sol(i,:).^2)/(N+1)));&lt;br /&gt;
if dist&amp;lt;limite&lt;br /&gt;
tiempo=(i-1)*dt&lt;br /&gt;
break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
De esta forma el tiempo que obtenemos es 65.775&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Condiciones tipo Neumann===&lt;br /&gt;
Las nuevas condiciones newmann no son homogéneas. tendremos que homogeneizarlas con el siguiente cambio de variable :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,t)=w(x,t)+2a(t)x^2+b(t)x&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
el nuevo problema quedaría de la siguiente manera :&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=-3/7 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=-3, t&amp;gt;0\\w(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
w(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que es un problema bien propuesto analizando su existencia de solución, unicidad de ésta y estabilidad con respecto al dato inicial.&lt;br /&gt;
&lt;br /&gt;
ahora ya se trata de un sistema con condiciones de frontera homogéneas, el problema de autovalores asociado es:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(PA)\left\{\begin{matrix}\\x''+μx=0 ,x\in\ (0,7)\\x'(0)=0\\x'(7)=0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y los autovalores y autofunciones salvo una constante son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;μ_k=\frac{\pi^2k^2}{49}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;φ_k=cos(kπ/7)x&amp;lt;/math&amp;gt;  k=0,1,2,3...&lt;br /&gt;
&lt;br /&gt;
Se aproxima el dato inicial y el segundo miembro, se elige Q y se toma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q c_kφ_k(x)=-3/7&amp;lt;/math&amp;gt;:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q a_kφ_k(x)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
donde se deduce que &amp;lt;math&amp;gt;c_k=\frac{\displaystyle\int_{0}^{7} -3/7cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_k=\frac{\displaystyle\int_{0}^{7} u_0cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El problema aproximado queda de la forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=\displaystyle\sum_{k=0}^Q c_kφ_k(x)&lt;br /&gt;
 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=0, t&amp;gt;0\\w(x,0)=w_0=\displaystyle\sum_{k=0}^Q a_kφ_k(x), x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada sería:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q T_k(t)φ_k(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo en la ecuación de difusión de una sustancia contaminante e igualando los coeficicientes de Fourier se obtiene el sistema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left\{\begin{matrix}\\T'_k(t)+μ_kT_k(t)=c_k\\T_k(0)=a_k\end{matrix}\right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendo el problema de valor inicial, se deduce que &amp;lt;math&amp;gt; T_k(t)=Ce^{-μ_k t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada queda de la forma &amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q Ce^{-μ_k t} cos(kπ/7)x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El valor de la constante C depende de la condición inicial,que es la que condiciona el valor de a&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
por ultimo solo nos quedaria deshacer el cambio de variable.&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35487</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35487"/>
				<updated>2016-05-03T09:35:13Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Limpiador */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecio2A14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicito3A14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerImplicito3A14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaHeun3A14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variables x.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[ Archivo:GraficaMasa2A14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[ Archivo:ConcentracionPuntoMedio2A14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
&lt;br /&gt;
=Concentración a lo largo del tiempo=&lt;br /&gt;
Se puede comprobar en la siguiente gráfica que para tiempos grandes la cantidad de contaminante se irá acercando al valor estacionario de 8.25/7=1.17. Es decir, nuestra solución del problema debe parecerse a la función u(x,t)=1.17, es constante, luego no varía.&lt;br /&gt;
[[Archivo:grafico_concentracion_tiempo.jpg ‎|marco|centro|Concentración a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La distancia entre la solución estacionaria y las soluciones para los siguientes instantes: 0s, 1s, 2s y 10s; se puede apreciar en la imagen anterior. Además las distancias entre la solución estacionaria y la solución u(x,t) para t=0,1,2,10 son:&lt;br /&gt;
&lt;br /&gt;
dist0=1.4662&lt;br /&gt;
&lt;br /&gt;
dist1=1.0671&lt;br /&gt;
&lt;br /&gt;
dist2=0.8632&lt;br /&gt;
&lt;br /&gt;
dist10=0.1724&lt;br /&gt;
&lt;br /&gt;
Y el código Matlab usado es:&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 %distancias&lt;br /&gt;
 dist0=(sqrt(sum((sol(1,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist1=(sqrt(sum((sol(41,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist2=(sqrt(sum((sol(81,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist10=(sqrt(sum((sol(401,:)-1.17).^2)/(N+1)));&lt;br /&gt;
}}&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar el estado estacionario con un error del 5% calculamos la media cuadrática de las distancias desde cada punto de la función al estado estacionario.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 % El error del 5%&lt;br /&gt;
 limite=0.05*8.25;&lt;br /&gt;
 % Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 dist=(sqrt(sum((sol(i,:)-1.17).^2)/(N+1)));&lt;br /&gt;
  if dist&amp;lt;limite&lt;br /&gt;
 tiempo=(i-1)*dt;&lt;br /&gt;
  break&lt;br /&gt;
 end&lt;br /&gt;
 end&lt;br /&gt;
}}&lt;br /&gt;
Se obtiene un tiempo de 5.6750 segundos. &lt;br /&gt;
Al dividir \triangle x por 10 sale un tiempo de 7.353 segundos.&lt;br /&gt;
&lt;br /&gt;
=Limpiador=&lt;br /&gt;
&lt;br /&gt;
Colocar un limpiador en el extremo izquierdo se traduce físicamente en que la concentración en x=0 es ahora nula. Por lo tanto el problema a resolver ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1, colocamos en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo izquierdo, lo que modifica las condiciones de frontera del problema provocando que una condición de frontera tipo Neumann se convierta en una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
Obtenemos una aproximación numérica de la solución utilizando el '''método de diferencias finitas'''. &lt;br /&gt;
&lt;br /&gt;
El código en MATLAB del método sería:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:t2li.png|marco|centro|Resolución del sistema de difusión de una sustancia contaminante por el método del trapecio.]]&lt;br /&gt;
&lt;br /&gt;
El valor estacionario de la concentración en el tubo será de cero, debido a que se ha colocado un limpiador en uno de sus extremos que irá eliminando el contaminante.&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar este otro estado estacionario con un error del 5% vamos a calcular la media cuadrática de las concentraciones y ver cual coincide con el 5% de 5.85/7.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
 &lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=70;&lt;br /&gt;
q=1;&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 &lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
 &lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:(1/dt) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=(1/dt):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(5.85/7);&lt;br /&gt;
% Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
dist=(sqrt(sum(sol(i,:).^2)/(N+1)));&lt;br /&gt;
if dist&amp;lt;limite&lt;br /&gt;
tiempo=(i-1)*dt&lt;br /&gt;
break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
De esta forma el tiempo que obtenemos es 65.775&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Condiciones tipo Neumann===&lt;br /&gt;
Las nuevas condiciones newmann no son homogéneas. tendremos que homogeneizarlas con el siguiente cambio de variable :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,t)=w(x,t)+2a(t)x^2+b(t)x&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
el nuevo problema quedaría de la siguiente manera :&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=-3/7 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=-3, t&amp;gt;0\\w(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
w(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que es un problema bien propuesto analizando su existencia de solución, unicidad de ésta y estabilidad con respecto al dato inicial.&lt;br /&gt;
&lt;br /&gt;
ahora ya se trata de un sistema con condiciones de frontera homogéneas, el problema de autovalores asociado es:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(PA)\left\{\begin{matrix}\\x''+μx=0 ,x\in\ (0,7)\\x'(0)=0\\x'(7)=0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y los autovalores y autofunciones salvo una constante son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;μ_k=\frac{\pi^2k^2}{49}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;φ_k=cos(kπ/7)x&amp;lt;/math&amp;gt;  k=0,1,2,3...&lt;br /&gt;
&lt;br /&gt;
Se aproxima el dato inicial y el segundo miembro, se elige Q y se toma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q c_kφ_k(x)=-3/7&amp;lt;/math&amp;gt;:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q a_kφ_k(x)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
donde se deduce que &amp;lt;math&amp;gt;c_k=\frac{\displaystyle\int_{0}^{7} -3/7cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_k=\frac{\displaystyle\int_{0}^{7} u_0cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El problema aproximado queda de la forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=\displaystyle\sum_{k=0}^Q c_kφ_k(x)&lt;br /&gt;
 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=0, t&amp;gt;0\\w(x,0)=w_0=\displaystyle\sum_{k=0}^Q a_kφ_k(x), x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada sería:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q T_k(t)φ_k(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo en la ecuación de difusión de una sustancia contaminante e igualando los coeficicientes de Fourier se obtiene el sistema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left\{\begin{matrix}\\T'_k(t)+μ_kT_k(t)=c_k\\T_k(0)=a_k\end{matrix}\right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendo el problema de valor inicial, se deduce que &amp;lt;math&amp;gt; T_k(t)=Ce^{-μ_k t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada queda de la forma &amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q Ce^{-μ_k t} cos(kπ/7)x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El valor de la constante C depende de la condición inicial,que es la que condiciona el valor de a&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
por ultimo solo nos quedaria deshacer el cambio de variable.&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35485</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35485"/>
				<updated>2016-05-03T09:34:42Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Limpiador */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecio2A14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicito3A14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerImplicito3A14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaHeun3A14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variables x.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[ Archivo:GraficaMasa2A14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[ Archivo:ConcentracionPuntoMedio2A14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
&lt;br /&gt;
=Concentración a lo largo del tiempo=&lt;br /&gt;
Se puede comprobar en la siguiente gráfica que para tiempos grandes la cantidad de contaminante se irá acercando al valor estacionario de 8.25/7=1.17. Es decir, nuestra solución del problema debe parecerse a la función u(x,t)=1.17, es constante, luego no varía.&lt;br /&gt;
[[Archivo:grafico_concentracion_tiempo.jpg ‎|marco|centro|Concentración a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La distancia entre la solución estacionaria y las soluciones para los siguientes instantes: 0s, 1s, 2s y 10s; se puede apreciar en la imagen anterior. Además las distancias entre la solución estacionaria y la solución u(x,t) para t=0,1,2,10 son:&lt;br /&gt;
&lt;br /&gt;
dist0=1.4662&lt;br /&gt;
&lt;br /&gt;
dist1=1.0671&lt;br /&gt;
&lt;br /&gt;
dist2=0.8632&lt;br /&gt;
&lt;br /&gt;
dist10=0.1724&lt;br /&gt;
&lt;br /&gt;
Y el código Matlab usado es:&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 %distancias&lt;br /&gt;
 dist0=(sqrt(sum((sol(1,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist1=(sqrt(sum((sol(41,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist2=(sqrt(sum((sol(81,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist10=(sqrt(sum((sol(401,:)-1.17).^2)/(N+1)));&lt;br /&gt;
}}&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar el estado estacionario con un error del 5% calculamos la media cuadrática de las distancias desde cada punto de la función al estado estacionario.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 % El error del 5%&lt;br /&gt;
 limite=0.05*8.25;&lt;br /&gt;
 % Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 dist=(sqrt(sum((sol(i,:)-1.17).^2)/(N+1)));&lt;br /&gt;
  if dist&amp;lt;limite&lt;br /&gt;
 tiempo=(i-1)*dt;&lt;br /&gt;
  break&lt;br /&gt;
 end&lt;br /&gt;
 end&lt;br /&gt;
}}&lt;br /&gt;
Se obtiene un tiempo de 5.6750 segundos. &lt;br /&gt;
Al dividir \triangle x por 10 sale un tiempo de 7.353 segundos.&lt;br /&gt;
&lt;br /&gt;
=Limpiador=&lt;br /&gt;
&lt;br /&gt;
Colocar un limpiador en el extremo izquierdo se traduce físicamente en que la concentración en x=0 es ahora nula. Por lo tanto el problema a resolver ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1, colocamos en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo izquierdo, lo que modifica las condiciones de frontera del problema provocando que una condición de frontera tipo Neumann se convierta en una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
Obtenemos una aproximación numérica de la solución utilizando el '''método de diferencias finitas'''. &lt;br /&gt;
&lt;br /&gt;
El código en MATLAB del método sería:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:t2li.png|marco|centro|Resolución del sistema de difusión de una sustancia contaminante por el método del trapecio.]]&lt;br /&gt;
&lt;br /&gt;
El valor estacionario de la concentración en el tubo será de cero, debido a que se ha colocado un limpiador en uno de sus extremos que irá eliminando el contaminante.&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar este otro estado estacionario con un error del 5% vamos a calcular la media cuadrática de las concentraciones y ver cual coincide con el 5% de 5.85/7.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
 &lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=70;&lt;br /&gt;
q=1;&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 &lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
 &lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:(1/dt) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=(1/dt):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(5.85/7);&lt;br /&gt;
% Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
dist=(sqrt(sum(sol(i,:).^2)/(N+1)));&lt;br /&gt;
if dist&amp;lt;limite&lt;br /&gt;
tiempo=(i-1)*dt&lt;br /&gt;
break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
De esta forma el tiempo que obtenemos es 65.775&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Condiciones tipo Neumann===&lt;br /&gt;
Las nuevas condiciones newmann no son homogéneas. tendremos que homogeneizarlas con el siguiente cambio de variable :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,t)=w(x,t)+2a(t)x^2+b(t)x&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
el nuevo problema quedaría de la siguiente manera :&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=-3/7 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=-3, t&amp;gt;0\\w(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
w(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que es un problema bien propuesto analizando su existencia de solución, unicidad de ésta y estabilidad con respecto al dato inicial.&lt;br /&gt;
&lt;br /&gt;
ahora ya se trata de un sistema con condiciones de frontera homogéneas, el problema de autovalores asociado es:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(PA)\left\{\begin{matrix}\\x''+μx=0 ,x\in\ (0,7)\\x'(0)=0\\x'(7)=0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y los autovalores y autofunciones salvo una constante son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;μ_k=\frac{\pi^2k^2}{49}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;φ_k=cos(kπ/7)x&amp;lt;/math&amp;gt;  k=0,1,2,3...&lt;br /&gt;
&lt;br /&gt;
Se aproxima el dato inicial y el segundo miembro, se elige Q y se toma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q c_kφ_k(x)=-3/7&amp;lt;/math&amp;gt;:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q a_kφ_k(x)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
donde se deduce que &amp;lt;math&amp;gt;c_k=\frac{\displaystyle\int_{0}^{7} -3/7cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_k=\frac{\displaystyle\int_{0}^{7} u_0cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El problema aproximado queda de la forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=\displaystyle\sum_{k=0}^Q c_kφ_k(x)&lt;br /&gt;
 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=0, t&amp;gt;0\\w(x,0)=w_0=\displaystyle\sum_{k=0}^Q a_kφ_k(x), x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada sería:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q T_k(t)φ_k(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo en la ecuación de difusión de una sustancia contaminante e igualando los coeficicientes de Fourier se obtiene el sistema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left\{\begin{matrix}\\T'_k(t)+μ_kT_k(t)=c_k\\T_k(0)=a_k\end{matrix}\right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendo el problema de valor inicial, se deduce que &amp;lt;math&amp;gt; T_k(t)=Ce^{-μ_k t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada queda de la forma &amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q Ce^{-μ_k t} cos(kπ/7)x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El valor de la constante C depende de la condición inicial,que es la que condiciona el valor de a&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
por ultimo solo nos quedaria deshacer el cambio de variable.&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35484</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35484"/>
				<updated>2016-05-03T09:34:18Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Limpiador */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecio2A14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicito3A14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerImplicito3A14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaHeun3A14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variables x.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[ Archivo:GraficaMasa2A14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[ Archivo:ConcentracionPuntoMedio2A14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
&lt;br /&gt;
=Concentración a lo largo del tiempo=&lt;br /&gt;
Se puede comprobar en la siguiente gráfica que para tiempos grandes la cantidad de contaminante se irá acercando al valor estacionario de 8.25/7=1.17. Es decir, nuestra solución del problema debe parecerse a la función u(x,t)=1.17, es constante, luego no varía.&lt;br /&gt;
[[Archivo:grafico_concentracion_tiempo.jpg ‎|marco|centro|Concentración a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La distancia entre la solución estacionaria y las soluciones para los siguientes instantes: 0s, 1s, 2s y 10s; se puede apreciar en la imagen anterior. Además las distancias entre la solución estacionaria y la solución u(x,t) para t=0,1,2,10 son:&lt;br /&gt;
&lt;br /&gt;
dist0=1.4662&lt;br /&gt;
&lt;br /&gt;
dist1=1.0671&lt;br /&gt;
&lt;br /&gt;
dist2=0.8632&lt;br /&gt;
&lt;br /&gt;
dist10=0.1724&lt;br /&gt;
&lt;br /&gt;
Y el código Matlab usado es:&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 %distancias&lt;br /&gt;
 dist0=(sqrt(sum((sol(1,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist1=(sqrt(sum((sol(41,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist2=(sqrt(sum((sol(81,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist10=(sqrt(sum((sol(401,:)-1.17).^2)/(N+1)));&lt;br /&gt;
}}&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar el estado estacionario con un error del 5% calculamos la media cuadrática de las distancias desde cada punto de la función al estado estacionario.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 % El error del 5%&lt;br /&gt;
 limite=0.05*8.25;&lt;br /&gt;
 % Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 dist=(sqrt(sum((sol(i,:)-1.17).^2)/(N+1)));&lt;br /&gt;
  if dist&amp;lt;limite&lt;br /&gt;
 tiempo=(i-1)*dt;&lt;br /&gt;
  break&lt;br /&gt;
 end&lt;br /&gt;
 end&lt;br /&gt;
}}&lt;br /&gt;
Se obtiene un tiempo de 5.6750 segundos. &lt;br /&gt;
Al dividir \triangle x por 10 sale un tiempo de 7.353 segundos.&lt;br /&gt;
&lt;br /&gt;
=Limpiador=&lt;br /&gt;
&lt;br /&gt;
Colocar un limpiador en el extremo izquierdo se traduce físicamente en que la concentración en x=0 es ahora nula. Por lo tanto el problema a resolver ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1, colocamos en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo izquierdo, lo que modifica las condiciones de frontera del problema provocando que una condición de frontera tipo Neumann se convierta en una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
Obtenemos una aproximación numérica de la solución utilizando el '''método de diferencias finitas'''. &lt;br /&gt;
&lt;br /&gt;
El código en MATLAB del método sería:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:t2li.png|marco|centro|Resolución del sistema de difusión de una sustancia contaminante por el método del trapecio.]]&lt;br /&gt;
&lt;br /&gt;
El valor estacionario de la concentración en el tubo será de cero, debido a que se ha colocado un limpiador en uno de sus extremos que irá eliminando el contaminante.&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar este otro estado estacionario con un error del 5% vamos a calcular la media cuadrática de las concentraciones y ver cual coincide con el 5% de 5.85/7.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
 &lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=70;&lt;br /&gt;
q=1;&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 &lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
 &lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:(1/dt) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=(1/dt):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(5.85/7);&lt;br /&gt;
% Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
dist=(sqrt(sum(sol(i,:).^2)/(N+1)));&lt;br /&gt;
if dist&amp;lt;limite&lt;br /&gt;
tiempo=(i-1)*dt&lt;br /&gt;
break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
De esta forma el tiempo que obtenemos es 65.775&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Condiciones tipo Neumann===&lt;br /&gt;
Las nuevas condiciones newmann no son homogéneas. tendremos que homogeneizarlas con el siguiente cambio de variable :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,t)=w(x,t)+2a(t)x^2+b(t)x&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
el nuevo problema quedaría de la siguiente manera :&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=-3/7 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=-3, t&amp;gt;0\\w(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
w(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que es un problema bien propuesto analizando su existencia de solución, unicidad de ésta y estabilidad con respecto al dato inicial.&lt;br /&gt;
&lt;br /&gt;
ahora ya se trata de un sistema con condiciones de frontera homogéneas, el problema de autovalores asociado es:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(PA)\left\{\begin{matrix}\\x''+μx=0 ,x\in\ (0,7)\\x'(0)=0\\x'(7)=0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y los autovalores y autofunciones salvo una constante son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;μ_k=\frac{\pi^2k^2}{49}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;φ_k=cos(kπ/7)x&amp;lt;/math&amp;gt;  k=0,1,2,3...&lt;br /&gt;
&lt;br /&gt;
Se aproxima el dato inicial y el segundo miembro, se elige Q y se toma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q c_kφ_k(x)=-3/7&amp;lt;/math&amp;gt;:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q a_kφ_k(x)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
donde se deduce que &amp;lt;math&amp;gt;c_k=\frac{\displaystyle\int_{0}^{7} -3/7cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_k=\frac{\displaystyle\int_{0}^{7} u_0cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El problema aproximado queda de la forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=\displaystyle\sum_{k=0}^Q c_kφ_k(x)&lt;br /&gt;
 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=0, t&amp;gt;0\\w(x,0)=w_0=\displaystyle\sum_{k=0}^Q a_kφ_k(x), x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada sería:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q T_k(t)φ_k(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo en la ecuación de difusión de una sustancia contaminante e igualando los coeficicientes de Fourier se obtiene el sistema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left\{\begin{matrix}\\T'_k(t)+μ_kT_k(t)=c_k\\T_k(0)=a_k\end{matrix}\right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendo el problema de valor inicial, se deduce que &amp;lt;math&amp;gt; T_k(t)=Ce^{-μ_k t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada queda de la forma &amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q Ce^{-μ_k t} cos(kπ/7)x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El valor de la constante C depende de la condición inicial,que es la que condiciona el valor de a&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
por ultimo solo nos quedaria deshacer el cambio de variable.&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35483</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35483"/>
				<updated>2016-05-03T09:33:25Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Concentración a lo largo del tiempo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecio2A14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicito3A14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerImplicito3A14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaHeun3A14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variables x.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[ Archivo:GraficaMasa2A14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[ Archivo:ConcentracionPuntoMedio2A14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
&lt;br /&gt;
=Concentración a lo largo del tiempo=&lt;br /&gt;
Se puede comprobar en la siguiente gráfica que para tiempos grandes la cantidad de contaminante se irá acercando al valor estacionario de 8.25/7=1.17. Es decir, nuestra solución del problema debe parecerse a la función u(x,t)=1.17, es constante, luego no varía.&lt;br /&gt;
[[Archivo:grafico_concentracion_tiempo.jpg ‎|marco|centro|Concentración a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La distancia entre la solución estacionaria y las soluciones para los siguientes instantes: 0s, 1s, 2s y 10s; se puede apreciar en la imagen anterior. Además las distancias entre la solución estacionaria y la solución u(x,t) para t=0,1,2,10 son:&lt;br /&gt;
&lt;br /&gt;
dist0=1.4662&lt;br /&gt;
&lt;br /&gt;
dist1=1.0671&lt;br /&gt;
&lt;br /&gt;
dist2=0.8632&lt;br /&gt;
&lt;br /&gt;
dist10=0.1724&lt;br /&gt;
&lt;br /&gt;
Y el código Matlab usado es:&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 %distancias&lt;br /&gt;
 dist0=(sqrt(sum((sol(1,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist1=(sqrt(sum((sol(41,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist2=(sqrt(sum((sol(81,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist10=(sqrt(sum((sol(401,:)-1.17).^2)/(N+1)));&lt;br /&gt;
}}&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar el estado estacionario con un error del 5% calculamos la media cuadrática de las distancias desde cada punto de la función al estado estacionario.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 % El error del 5%&lt;br /&gt;
 limite=0.05*8.25;&lt;br /&gt;
 % Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 dist=(sqrt(sum((sol(i,:)-1.17).^2)/(N+1)));&lt;br /&gt;
  if dist&amp;lt;limite&lt;br /&gt;
 tiempo=(i-1)*dt;&lt;br /&gt;
  break&lt;br /&gt;
 end&lt;br /&gt;
 end&lt;br /&gt;
}}&lt;br /&gt;
Se obtiene un tiempo de 5.6750 segundos. &lt;br /&gt;
Al dividir \triangle x por 10 sale un tiempo de 7.353 segundos.&lt;br /&gt;
&lt;br /&gt;
=Limpiador=&lt;br /&gt;
&lt;br /&gt;
Colocar un limpiador en el extremo izquierdo se traduce físicamente en que la concentración en x=0 es ahora nula. Por lo tanto el problema a resolver ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1, colocamos en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo izquierdo, lo que modifica las condiciones de frontera del problema provocando que una condición de frontera tipo Neumann se convierta en una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
Obtenemos una aproximación numérica de la solución utilizando el '''método de diferencias finitas'''. &lt;br /&gt;
&lt;br /&gt;
El código en MATLAB del método sería:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:t2li.png|marco|centro|Resolución del sistema de difusión de una sustancia contaminante por el método del trapecio.]]&lt;br /&gt;
&lt;br /&gt;
El valor estacionario de la concentración en el tubo será de cero, debido a que se ha colocado un limpiador en uno de sus extremos que irá eliminando el contaminante.&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar este otro estado estacionario con un error del 5% vamos a calcular la media cuadrática de las concentraciones y ver cual coincide con el 5% de 5.85/7.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
 &lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=70;&lt;br /&gt;
q=1;&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 &lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
 &lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:(1/dt) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=(1/dt):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(5.85/7);&lt;br /&gt;
% Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
dist=(sqrt(sum(sol(i,:).^2)/(N+1)));&lt;br /&gt;
if dist&amp;lt;limite&lt;br /&gt;
tiempo=(i-1)*dt&lt;br /&gt;
break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
De esta forma el tiempo que obtenemos es 65.775&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Condiciones tipo Neumann===&lt;br /&gt;
Las nuevas condiciones newmann no son homogéneas. tendremos que homogeneizarlas con el siguiente cambio de variable :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,t)=w(x,t)+2a(t)x^2+b(t)x&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
el nuevo problema quedaría de la siguiente manera :&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=-3/7 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=-3, t&amp;gt;0\\w(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
w(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que es un problema bien propuesto analizando su existencia de solución, unicidad de ésta y estabilidad con respecto al dato inicial.&lt;br /&gt;
&lt;br /&gt;
ahora ya se trata de un sistema con condiciones de frontera homogéneas, el problema de autovalores asociado es:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(PA)\left\{\begin{matrix}\\x''+μx=0 ,x\in\ (0,7)\\x'(0)=0\\x'(7)=0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y los autovalores y autofunciones salvo una constante son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;μ_k=\frac{\pi^2k^2}{49}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;φ_k=cos(kπ/7)x&amp;lt;/math&amp;gt;  k=0,1,2,3...&lt;br /&gt;
&lt;br /&gt;
Se aproxima el dato inicial y el segundo miembro, se elige Q y se toma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q c_kφ_k(x)=-3/7&amp;lt;/math&amp;gt;:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q a_kφ_k(x)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
donde se deduce que &amp;lt;math&amp;gt;c_k=\frac{\displaystyle\int_{0}^{7} -3/7cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_k=\frac{\displaystyle\int_{0}^{7} u_0cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El problema aproximado queda de la forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=\displaystyle\sum_{k=0}^Q c_kφ_k(x)&lt;br /&gt;
 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=0, t&amp;gt;0\\w(x,0)=w_0=\displaystyle\sum_{k=0}^Q a_kφ_k(x), x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada sería:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q T_k(t)φ_k(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo en la ecuación de difusión de una sustancia contaminante e igualando los coeficicientes de Fourier se obtiene el sistema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left\{\begin{matrix}\\T'_k(t)+μ_kT_k(t)=c_k\\T_k(0)=a_k\end{matrix}\right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendo el problema de valor inicial, se deduce que &amp;lt;math&amp;gt; T_k(t)=Ce^{-μ_k t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada queda de la forma &amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q Ce^{-μ_k t} cos(kπ/7)x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El valor de la constante C depende de la condición inicial,que es la que condiciona el valor de a&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
por ultimo solo nos quedaria deshacer el cambio de variable.&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35481</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35481"/>
				<updated>2016-05-03T09:32:44Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Concentración a lo largo del tiempo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecio2A14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicito3A14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerImplicito3A14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaHeun3A14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variables x.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[ Archivo:GraficaMasa2A14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[ Archivo:ConcentracionPuntoMedio2A14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
&lt;br /&gt;
=Concentración a lo largo del tiempo=&lt;br /&gt;
Se puede comprobar en la siguiente gráfica que para tiempos grandes la cantidad de contaminante se irá acercando al valor estacionario de 8.25/7=1.17. Es decir, nuestra solución del problema debe parecerse a la función u(x,t)=1.17, es constante, luego no varía.&lt;br /&gt;
[[Archivo:grafico_concentracion_tiempo.jpg ‎|marco|centro|Concentración a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La distancia entre la solución estacionaria y las soluciones para los siguientes instantes: 0s, 1s, 2s y 10s; se puede apreciar en la imagen anterior. Además las distancias entre la solución estacionaria y la solución u(x,t) para t=0,1,2,10 son:&lt;br /&gt;
&lt;br /&gt;
dist0=1.4662&lt;br /&gt;
&lt;br /&gt;
dist1=1.0671&lt;br /&gt;
&lt;br /&gt;
dist2=0.8632&lt;br /&gt;
&lt;br /&gt;
dist10=0.1724&lt;br /&gt;
&lt;br /&gt;
Y el código Matlab usado es:&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 %distancias&lt;br /&gt;
 dist0=(sqrt(sum((sol(1,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist1=(sqrt(sum((sol(41,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist2=(sqrt(sum((sol(81,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist10=(sqrt(sum((sol(401,:)-1.17).^2)/(N+1)));&lt;br /&gt;
}}&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar el estado estacionario con un error del 5% calculamos la media cuadrática de las distancias desde cada punto de la función al estado estacionario.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
 % El error del 5%&lt;br /&gt;
 limite=0.05*8.25;&lt;br /&gt;
 % Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 dist=(sqrt(sum((sol(i,:)-1.17).^2)/(N+1)));&lt;br /&gt;
  if dist&amp;lt;limite&lt;br /&gt;
 tiempo=(i-1)*dt;&lt;br /&gt;
  break&lt;br /&gt;
 end&lt;br /&gt;
 end&lt;br /&gt;
}}&lt;br /&gt;
Se obtiene un tiempo de 5.6750 segundos. &lt;br /&gt;
Al dividir &amp;quot;incremento de x&amp;quot; por 10 sale un tiempo de 7.353 segundos.&lt;br /&gt;
&lt;br /&gt;
=Limpiador=&lt;br /&gt;
&lt;br /&gt;
Colocar un limpiador en el extremo izquierdo se traduce físicamente en que la concentración en x=0 es ahora nula. Por lo tanto el problema a resolver ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1, colocamos en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo izquierdo, lo que modifica las condiciones de frontera del problema provocando que una condición de frontera tipo Neumann se convierta en una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
Obtenemos una aproximación numérica de la solución utilizando el '''método de diferencias finitas'''. &lt;br /&gt;
&lt;br /&gt;
El código en MATLAB del método sería:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:t2li.png|marco|centro|Resolución del sistema de difusión de una sustancia contaminante por el método del trapecio.]]&lt;br /&gt;
&lt;br /&gt;
El valor estacionario de la concentración en el tubo será de cero, debido a que se ha colocado un limpiador en uno de sus extremos que irá eliminando el contaminante.&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar este otro estado estacionario con un error del 5% vamos a calcular la media cuadrática de las concentraciones y ver cual coincide con el 5% de 5.85/7.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
 &lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=70;&lt;br /&gt;
q=1;&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 &lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
 &lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:(1/dt) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=(1/dt):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(5.85/7);&lt;br /&gt;
% Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
dist=(sqrt(sum(sol(i,:).^2)/(N+1)));&lt;br /&gt;
if dist&amp;lt;limite&lt;br /&gt;
tiempo=(i-1)*dt&lt;br /&gt;
break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
De esta forma el tiempo que obtenemos es 65.775&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Condiciones tipo Neumann===&lt;br /&gt;
Las nuevas condiciones newmann no son homogéneas. tendremos que homogeneizarlas con el siguiente cambio de variable :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,t)=w(x,t)+2a(t)x^2+b(t)x&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
el nuevo problema quedaría de la siguiente manera :&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=-3/7 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=-3, t&amp;gt;0\\w(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
w(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que es un problema bien propuesto analizando su existencia de solución, unicidad de ésta y estabilidad con respecto al dato inicial.&lt;br /&gt;
&lt;br /&gt;
ahora ya se trata de un sistema con condiciones de frontera homogéneas, el problema de autovalores asociado es:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(PA)\left\{\begin{matrix}\\x''+μx=0 ,x\in\ (0,7)\\x'(0)=0\\x'(7)=0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y los autovalores y autofunciones salvo una constante son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;μ_k=\frac{\pi^2k^2}{49}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;φ_k=cos(kπ/7)x&amp;lt;/math&amp;gt;  k=0,1,2,3...&lt;br /&gt;
&lt;br /&gt;
Se aproxima el dato inicial y el segundo miembro, se elige Q y se toma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q c_kφ_k(x)=-3/7&amp;lt;/math&amp;gt;:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q a_kφ_k(x)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
donde se deduce que &amp;lt;math&amp;gt;c_k=\frac{\displaystyle\int_{0}^{7} -3/7cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_k=\frac{\displaystyle\int_{0}^{7} u_0cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El problema aproximado queda de la forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=\displaystyle\sum_{k=0}^Q c_kφ_k(x)&lt;br /&gt;
 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=0, t&amp;gt;0\\w(x,0)=w_0=\displaystyle\sum_{k=0}^Q a_kφ_k(x), x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada sería:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q T_k(t)φ_k(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo en la ecuación de difusión de una sustancia contaminante e igualando los coeficicientes de Fourier se obtiene el sistema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left\{\begin{matrix}\\T'_k(t)+μ_kT_k(t)=c_k\\T_k(0)=a_k\end{matrix}\right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendo el problema de valor inicial, se deduce que &amp;lt;math&amp;gt; T_k(t)=Ce^{-μ_k t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada queda de la forma &amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q Ce^{-μ_k t} cos(kπ/7)x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El valor de la constante C depende de la condición inicial,que es la que condiciona el valor de a&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
por ultimo solo nos quedaria deshacer el cambio de variable.&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35479</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35479"/>
				<updated>2016-05-03T09:31:26Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Conservación de la masa */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecio2A14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicito3A14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerImplicito3A14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaHeun3A14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variables x.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[ Archivo:GraficaMasa2A14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[ Archivo:ConcentracionPuntoMedio2A14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
&lt;br /&gt;
=Concentración a lo largo del tiempo=&lt;br /&gt;
Se puede comprobar en la siguiente gráfica que para tiempos grandes la cantidad de contaminante se irá acercando al valor estacionario de 8.25/7=1.17. Es decir, nuestra solución del problema debe parecerse a la función u(x,t)=1.17, es constante, luego no varía.&lt;br /&gt;
[[Archivo:grafico_concentracion_tiempo.jpg ‎|marco|centro|Concentración a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La distancia entre la solución estacionaria y las soluciones para los siguientes instantes: 0s, 1s, 2s y 10s; se puede apreciar en la imagen anterior. Además las distancias entre la solución estacionaria y la solución u(x,t) para t=0,1,2,10 son:&lt;br /&gt;
&lt;br /&gt;
dist0=1.4662&lt;br /&gt;
&lt;br /&gt;
dist1=1.0671&lt;br /&gt;
&lt;br /&gt;
dist2=0.8632&lt;br /&gt;
&lt;br /&gt;
dist10=0.1724&lt;br /&gt;
&lt;br /&gt;
Y el código Matlab usado es:&lt;br /&gt;
 %distancias&lt;br /&gt;
 dist0=(sqrt(sum((sol(1,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist1=(sqrt(sum((sol(41,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist2=(sqrt(sum((sol(81,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist10=(sqrt(sum((sol(401,:)-1.17).^2)/(N+1)));&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar el estado estacionario con un error del 5% calculamos la media cuadrática de las distancias desde cada punto de la función al estado estacionario.&lt;br /&gt;
&lt;br /&gt;
 % El error del 5%&lt;br /&gt;
 limite=0.05*8.25;&lt;br /&gt;
 % Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 dist=(sqrt(sum((sol(i,:)-1.17).^2)/(N+1)));&lt;br /&gt;
  if dist&amp;lt;limite&lt;br /&gt;
 tiempo=(i-1)*dt;&lt;br /&gt;
  break&lt;br /&gt;
 end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Se obtiene un tiempo de 5.6750 segundos. &lt;br /&gt;
Al dividir &amp;quot;incremento de x&amp;quot; por 10 sale un tiempo de 7.353 segundos.&lt;br /&gt;
&lt;br /&gt;
=Limpiador=&lt;br /&gt;
&lt;br /&gt;
Colocar un limpiador en el extremo izquierdo se traduce físicamente en que la concentración en x=0 es ahora nula. Por lo tanto el problema a resolver ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1, colocamos en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo izquierdo, lo que modifica las condiciones de frontera del problema provocando que una condición de frontera tipo Neumann se convierta en una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
Obtenemos una aproximación numérica de la solución utilizando el '''método de diferencias finitas'''. &lt;br /&gt;
&lt;br /&gt;
El código en MATLAB del método sería:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:t2li.png|marco|centro|Resolución del sistema de difusión de una sustancia contaminante por el método del trapecio.]]&lt;br /&gt;
&lt;br /&gt;
El valor estacionario de la concentración en el tubo será de cero, debido a que se ha colocado un limpiador en uno de sus extremos que irá eliminando el contaminante.&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar este otro estado estacionario con un error del 5% vamos a calcular la media cuadrática de las concentraciones y ver cual coincide con el 5% de 5.85/7.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
 &lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=70;&lt;br /&gt;
q=1;&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 &lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
 &lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:(1/dt) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=(1/dt):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(5.85/7);&lt;br /&gt;
% Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
dist=(sqrt(sum(sol(i,:).^2)/(N+1)));&lt;br /&gt;
if dist&amp;lt;limite&lt;br /&gt;
tiempo=(i-1)*dt&lt;br /&gt;
break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
De esta forma el tiempo que obtenemos es 65.775&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Condiciones tipo Neumann===&lt;br /&gt;
Las nuevas condiciones newmann no son homogéneas. tendremos que homogeneizarlas con el siguiente cambio de variable :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,t)=w(x,t)+2a(t)x^2+b(t)x&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
el nuevo problema quedaría de la siguiente manera :&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=-3/7 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=-3, t&amp;gt;0\\w(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
w(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que es un problema bien propuesto analizando su existencia de solución, unicidad de ésta y estabilidad con respecto al dato inicial.&lt;br /&gt;
&lt;br /&gt;
ahora ya se trata de un sistema con condiciones de frontera homogéneas, el problema de autovalores asociado es:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(PA)\left\{\begin{matrix}\\x''+μx=0 ,x\in\ (0,7)\\x'(0)=0\\x'(7)=0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y los autovalores y autofunciones salvo una constante son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;μ_k=\frac{\pi^2k^2}{49}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;φ_k=cos(kπ/7)x&amp;lt;/math&amp;gt;  k=0,1,2,3...&lt;br /&gt;
&lt;br /&gt;
Se aproxima el dato inicial y el segundo miembro, se elige Q y se toma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q c_kφ_k(x)=-3/7&amp;lt;/math&amp;gt;:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q a_kφ_k(x)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
donde se deduce que &amp;lt;math&amp;gt;c_k=\frac{\displaystyle\int_{0}^{7} -3/7cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_k=\frac{\displaystyle\int_{0}^{7} u_0cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El problema aproximado queda de la forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=\displaystyle\sum_{k=0}^Q c_kφ_k(x)&lt;br /&gt;
 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=0, t&amp;gt;0\\w(x,0)=w_0=\displaystyle\sum_{k=0}^Q a_kφ_k(x), x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada sería:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q T_k(t)φ_k(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo en la ecuación de difusión de una sustancia contaminante e igualando los coeficicientes de Fourier se obtiene el sistema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left\{\begin{matrix}\\T'_k(t)+μ_kT_k(t)=c_k\\T_k(0)=a_k\end{matrix}\right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendo el problema de valor inicial, se deduce que &amp;lt;math&amp;gt; T_k(t)=Ce^{-μ_k t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada queda de la forma &amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q Ce^{-μ_k t} cos(kπ/7)x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El valor de la constante C depende de la condición inicial,que es la que condiciona el valor de a&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
por ultimo solo nos quedaria deshacer el cambio de variable.&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35477</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35477"/>
				<updated>2016-05-03T09:30:12Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Conservación de la masa */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecio2A14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicito3A14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerImplicito3A14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaHeun3A14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variables x.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[ Archivo:GraficaMasa2A14.jpgg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[ Archivo:ConcentracionPuntoMedio2A14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
&lt;br /&gt;
=Concentración a lo largo del tiempo=&lt;br /&gt;
Se puede comprobar en la siguiente gráfica que para tiempos grandes la cantidad de contaminante se irá acercando al valor estacionario de 8.25/7=1.17. Es decir, nuestra solución del problema debe parecerse a la función u(x,t)=1.17, es constante, luego no varía.&lt;br /&gt;
[[Archivo:grafico_concentracion_tiempo.jpg ‎|marco|centro|Concentración a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La distancia entre la solución estacionaria y las soluciones para los siguientes instantes: 0s, 1s, 2s y 10s; se puede apreciar en la imagen anterior. Además las distancias entre la solución estacionaria y la solución u(x,t) para t=0,1,2,10 son:&lt;br /&gt;
&lt;br /&gt;
dist0=1.4662&lt;br /&gt;
&lt;br /&gt;
dist1=1.0671&lt;br /&gt;
&lt;br /&gt;
dist2=0.8632&lt;br /&gt;
&lt;br /&gt;
dist10=0.1724&lt;br /&gt;
&lt;br /&gt;
Y el código Matlab usado es:&lt;br /&gt;
 %distancias&lt;br /&gt;
 dist0=(sqrt(sum((sol(1,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist1=(sqrt(sum((sol(41,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist2=(sqrt(sum((sol(81,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist10=(sqrt(sum((sol(401,:)-1.17).^2)/(N+1)));&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar el estado estacionario con un error del 5% calculamos la media cuadrática de las distancias desde cada punto de la función al estado estacionario.&lt;br /&gt;
&lt;br /&gt;
 % El error del 5%&lt;br /&gt;
 limite=0.05*8.25;&lt;br /&gt;
 % Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 dist=(sqrt(sum((sol(i,:)-1.17).^2)/(N+1)));&lt;br /&gt;
  if dist&amp;lt;limite&lt;br /&gt;
 tiempo=(i-1)*dt;&lt;br /&gt;
  break&lt;br /&gt;
 end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Se obtiene un tiempo de 5.6750 segundos. &lt;br /&gt;
Al dividir &amp;quot;incremento de x&amp;quot; por 10 sale un tiempo de 7.353 segundos.&lt;br /&gt;
&lt;br /&gt;
=Limpiador=&lt;br /&gt;
&lt;br /&gt;
Colocar un limpiador en el extremo izquierdo se traduce físicamente en que la concentración en x=0 es ahora nula. Por lo tanto el problema a resolver ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1, colocamos en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo izquierdo, lo que modifica las condiciones de frontera del problema provocando que una condición de frontera tipo Neumann se convierta en una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
Obtenemos una aproximación numérica de la solución utilizando el '''método de diferencias finitas'''. &lt;br /&gt;
&lt;br /&gt;
El código en MATLAB del método sería:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:t2li.png|marco|centro|Resolución del sistema de difusión de una sustancia contaminante por el método del trapecio.]]&lt;br /&gt;
&lt;br /&gt;
El valor estacionario de la concentración en el tubo será de cero, debido a que se ha colocado un limpiador en uno de sus extremos que irá eliminando el contaminante.&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar este otro estado estacionario con un error del 5% vamos a calcular la media cuadrática de las concentraciones y ver cual coincide con el 5% de 5.85/7.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
 &lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=70;&lt;br /&gt;
q=1;&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 &lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
 &lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:(1/dt) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=(1/dt):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(5.85/7);&lt;br /&gt;
% Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
dist=(sqrt(sum(sol(i,:).^2)/(N+1)));&lt;br /&gt;
if dist&amp;lt;limite&lt;br /&gt;
tiempo=(i-1)*dt&lt;br /&gt;
break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
De esta forma el tiempo que obtenemos es 65.775&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Condiciones tipo Neumann===&lt;br /&gt;
Las nuevas condiciones newmann no son homogéneas. tendremos que homogeneizarlas con el siguiente cambio de variable :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,t)=w(x,t)+2a(t)x^2+b(t)x&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
el nuevo problema quedaría de la siguiente manera :&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=-3/7 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=-3, t&amp;gt;0\\w(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
w(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que es un problema bien propuesto analizando su existencia de solución, unicidad de ésta y estabilidad con respecto al dato inicial.&lt;br /&gt;
&lt;br /&gt;
ahora ya se trata de un sistema con condiciones de frontera homogéneas, el problema de autovalores asociado es:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(PA)\left\{\begin{matrix}\\x''+μx=0 ,x\in\ (0,7)\\x'(0)=0\\x'(7)=0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y los autovalores y autofunciones salvo una constante son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;μ_k=\frac{\pi^2k^2}{49}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;φ_k=cos(kπ/7)x&amp;lt;/math&amp;gt;  k=0,1,2,3...&lt;br /&gt;
&lt;br /&gt;
Se aproxima el dato inicial y el segundo miembro, se elige Q y se toma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q c_kφ_k(x)=-3/7&amp;lt;/math&amp;gt;:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q a_kφ_k(x)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
donde se deduce que &amp;lt;math&amp;gt;c_k=\frac{\displaystyle\int_{0}^{7} -3/7cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_k=\frac{\displaystyle\int_{0}^{7} u_0cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El problema aproximado queda de la forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=\displaystyle\sum_{k=0}^Q c_kφ_k(x)&lt;br /&gt;
 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=0, t&amp;gt;0\\w(x,0)=w_0=\displaystyle\sum_{k=0}^Q a_kφ_k(x), x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada sería:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q T_k(t)φ_k(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo en la ecuación de difusión de una sustancia contaminante e igualando los coeficicientes de Fourier se obtiene el sistema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left\{\begin{matrix}\\T'_k(t)+μ_kT_k(t)=c_k\\T_k(0)=a_k\end{matrix}\right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendo el problema de valor inicial, se deduce que &amp;lt;math&amp;gt; T_k(t)=Ce^{-μ_k t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada queda de la forma &amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q Ce^{-μ_k t} cos(kπ/7)x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El valor de la constante C depende de la condición inicial,que es la que condiciona el valor de a&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
por ultimo solo nos quedaria deshacer el cambio de variable.&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:GraficaMasa2A14.jpg&amp;diff=35476</id>
		<title>Archivo:GraficaMasa2A14.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:GraficaMasa2A14.jpg&amp;diff=35476"/>
				<updated>2016-05-03T09:29:52Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35474</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35474"/>
				<updated>2016-05-03T09:28:26Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Conservación de la masa */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecio2A14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicito3A14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerImplicito3A14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaHeun3A14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variables x.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[Archivo:ConservacionMasaA14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[ Archivo:ConcentracionPuntoMedio2A14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
&lt;br /&gt;
=Concentración a lo largo del tiempo=&lt;br /&gt;
Se puede comprobar en la siguiente gráfica que para tiempos grandes la cantidad de contaminante se irá acercando al valor estacionario de 8.25/7=1.17. Es decir, nuestra solución del problema debe parecerse a la función u(x,t)=1.17, es constante, luego no varía.&lt;br /&gt;
[[Archivo:grafico_concentracion_tiempo.jpg ‎|marco|centro|Concentración a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La distancia entre la solución estacionaria y las soluciones para los siguientes instantes: 0s, 1s, 2s y 10s; se puede apreciar en la imagen anterior. Además las distancias entre la solución estacionaria y la solución u(x,t) para t=0,1,2,10 son:&lt;br /&gt;
&lt;br /&gt;
dist0=1.4662&lt;br /&gt;
&lt;br /&gt;
dist1=1.0671&lt;br /&gt;
&lt;br /&gt;
dist2=0.8632&lt;br /&gt;
&lt;br /&gt;
dist10=0.1724&lt;br /&gt;
&lt;br /&gt;
Y el código Matlab usado es:&lt;br /&gt;
 %distancias&lt;br /&gt;
 dist0=(sqrt(sum((sol(1,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist1=(sqrt(sum((sol(41,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist2=(sqrt(sum((sol(81,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist10=(sqrt(sum((sol(401,:)-1.17).^2)/(N+1)));&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar el estado estacionario con un error del 5% calculamos la media cuadrática de las distancias desde cada punto de la función al estado estacionario.&lt;br /&gt;
&lt;br /&gt;
 % El error del 5%&lt;br /&gt;
 limite=0.05*8.25;&lt;br /&gt;
 % Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 dist=(sqrt(sum((sol(i,:)-1.17).^2)/(N+1)));&lt;br /&gt;
  if dist&amp;lt;limite&lt;br /&gt;
 tiempo=(i-1)*dt;&lt;br /&gt;
  break&lt;br /&gt;
 end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Se obtiene un tiempo de 5.6750 segundos. &lt;br /&gt;
Al dividir &amp;quot;incremento de x&amp;quot; por 10 sale un tiempo de 7.353 segundos.&lt;br /&gt;
&lt;br /&gt;
=Limpiador=&lt;br /&gt;
&lt;br /&gt;
Colocar un limpiador en el extremo izquierdo se traduce físicamente en que la concentración en x=0 es ahora nula. Por lo tanto el problema a resolver ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1, colocamos en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo izquierdo, lo que modifica las condiciones de frontera del problema provocando que una condición de frontera tipo Neumann se convierta en una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
Obtenemos una aproximación numérica de la solución utilizando el '''método de diferencias finitas'''. &lt;br /&gt;
&lt;br /&gt;
El código en MATLAB del método sería:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:t2li.png|marco|centro|Resolución del sistema de difusión de una sustancia contaminante por el método del trapecio.]]&lt;br /&gt;
&lt;br /&gt;
El valor estacionario de la concentración en el tubo será de cero, debido a que se ha colocado un limpiador en uno de sus extremos que irá eliminando el contaminante.&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar este otro estado estacionario con un error del 5% vamos a calcular la media cuadrática de las concentraciones y ver cual coincide con el 5% de 5.85/7.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
 &lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=70;&lt;br /&gt;
q=1;&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 &lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
 &lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:(1/dt) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=(1/dt):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(5.85/7);&lt;br /&gt;
% Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
dist=(sqrt(sum(sol(i,:).^2)/(N+1)));&lt;br /&gt;
if dist&amp;lt;limite&lt;br /&gt;
tiempo=(i-1)*dt&lt;br /&gt;
break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
De esta forma el tiempo que obtenemos es 65.775&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Condiciones tipo Neumann===&lt;br /&gt;
Las nuevas condiciones newmann no son homogéneas. tendremos que homogeneizarlas con el siguiente cambio de variable :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,t)=w(x,t)+2a(t)x^2+b(t)x&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
el nuevo problema quedaría de la siguiente manera :&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=-3/7 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=-3, t&amp;gt;0\\w(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
w(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que es un problema bien propuesto analizando su existencia de solución, unicidad de ésta y estabilidad con respecto al dato inicial.&lt;br /&gt;
&lt;br /&gt;
ahora ya se trata de un sistema con condiciones de frontera homogéneas, el problema de autovalores asociado es:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(PA)\left\{\begin{matrix}\\x''+μx=0 ,x\in\ (0,7)\\x'(0)=0\\x'(7)=0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y los autovalores y autofunciones salvo una constante son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;μ_k=\frac{\pi^2k^2}{49}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;φ_k=cos(kπ/7)x&amp;lt;/math&amp;gt;  k=0,1,2,3...&lt;br /&gt;
&lt;br /&gt;
Se aproxima el dato inicial y el segundo miembro, se elige Q y se toma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q c_kφ_k(x)=-3/7&amp;lt;/math&amp;gt;:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q a_kφ_k(x)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
donde se deduce que &amp;lt;math&amp;gt;c_k=\frac{\displaystyle\int_{0}^{7} -3/7cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_k=\frac{\displaystyle\int_{0}^{7} u_0cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El problema aproximado queda de la forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=\displaystyle\sum_{k=0}^Q c_kφ_k(x)&lt;br /&gt;
 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=0, t&amp;gt;0\\w(x,0)=w_0=\displaystyle\sum_{k=0}^Q a_kφ_k(x), x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada sería:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q T_k(t)φ_k(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo en la ecuación de difusión de una sustancia contaminante e igualando los coeficicientes de Fourier se obtiene el sistema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left\{\begin{matrix}\\T'_k(t)+μ_kT_k(t)=c_k\\T_k(0)=a_k\end{matrix}\right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendo el problema de valor inicial, se deduce que &amp;lt;math&amp;gt; T_k(t)=Ce^{-μ_k t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada queda de la forma &amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q Ce^{-μ_k t} cos(kπ/7)x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El valor de la constante C depende de la condición inicial,que es la que condiciona el valor de a&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
por ultimo solo nos quedaria deshacer el cambio de variable.&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:ConcentracionPuntoMedio2A14.jpg&amp;diff=35473</id>
		<title>Archivo:ConcentracionPuntoMedio2A14.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:ConcentracionPuntoMedio2A14.jpg&amp;diff=35473"/>
				<updated>2016-05-03T09:26:26Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35472</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35472"/>
				<updated>2016-05-03T09:26:15Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Conservación de la masa */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecio2A14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicito3A14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerImplicito3A14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaHeun3A14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variables x.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[Archivo:ConservacionMasaA14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[Archivo:ConcentracionPuntoMedioA14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
&lt;br /&gt;
=Concentración a lo largo del tiempo=&lt;br /&gt;
Se puede comprobar en la siguiente gráfica que para tiempos grandes la cantidad de contaminante se irá acercando al valor estacionario de 8.25/7=1.17. Es decir, nuestra solución del problema debe parecerse a la función u(x,t)=1.17, es constante, luego no varía.&lt;br /&gt;
[[Archivo:grafico_concentracion_tiempo.jpg ‎|marco|centro|Concentración a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La distancia entre la solución estacionaria y las soluciones para los siguientes instantes: 0s, 1s, 2s y 10s; se puede apreciar en la imagen anterior. Además las distancias entre la solución estacionaria y la solución u(x,t) para t=0,1,2,10 son:&lt;br /&gt;
&lt;br /&gt;
dist0=1.4662&lt;br /&gt;
&lt;br /&gt;
dist1=1.0671&lt;br /&gt;
&lt;br /&gt;
dist2=0.8632&lt;br /&gt;
&lt;br /&gt;
dist10=0.1724&lt;br /&gt;
&lt;br /&gt;
Y el código Matlab usado es:&lt;br /&gt;
 %distancias&lt;br /&gt;
 dist0=(sqrt(sum((sol(1,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist1=(sqrt(sum((sol(41,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist2=(sqrt(sum((sol(81,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist10=(sqrt(sum((sol(401,:)-1.17).^2)/(N+1)));&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar el estado estacionario con un error del 5% calculamos la media cuadrática de las distancias desde cada punto de la función al estado estacionario.&lt;br /&gt;
&lt;br /&gt;
 % El error del 5%&lt;br /&gt;
 limite=0.05*8.25;&lt;br /&gt;
 % Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 dist=(sqrt(sum((sol(i,:)-1.17).^2)/(N+1)));&lt;br /&gt;
  if dist&amp;lt;limite&lt;br /&gt;
 tiempo=(i-1)*dt;&lt;br /&gt;
  break&lt;br /&gt;
 end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Se obtiene un tiempo de 5.6750 segundos. &lt;br /&gt;
Al dividir &amp;quot;incremento de x&amp;quot; por 10 sale un tiempo de 7.353 segundos.&lt;br /&gt;
&lt;br /&gt;
=Limpiador=&lt;br /&gt;
&lt;br /&gt;
Colocar un limpiador en el extremo izquierdo se traduce físicamente en que la concentración en x=0 es ahora nula. Por lo tanto el problema a resolver ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1, colocamos en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo izquierdo, lo que modifica las condiciones de frontera del problema provocando que una condición de frontera tipo Neumann se convierta en una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
Obtenemos una aproximación numérica de la solución utilizando el '''método de diferencias finitas'''. &lt;br /&gt;
&lt;br /&gt;
El código en MATLAB del método sería:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:t2li.png|marco|centro|Resolución del sistema de difusión de una sustancia contaminante por el método del trapecio.]]&lt;br /&gt;
&lt;br /&gt;
El valor estacionario de la concentración en el tubo será de cero, debido a que se ha colocado un limpiador en uno de sus extremos que irá eliminando el contaminante.&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar este otro estado estacionario con un error del 5% vamos a calcular la media cuadrática de las concentraciones y ver cual coincide con el 5% de 5.85/7.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
 &lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=70;&lt;br /&gt;
q=1;&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 &lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
 &lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:(1/dt) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=(1/dt):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(5.85/7);&lt;br /&gt;
% Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
dist=(sqrt(sum(sol(i,:).^2)/(N+1)));&lt;br /&gt;
if dist&amp;lt;limite&lt;br /&gt;
tiempo=(i-1)*dt&lt;br /&gt;
break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
De esta forma el tiempo que obtenemos es 65.775&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Condiciones tipo Neumann===&lt;br /&gt;
Las nuevas condiciones newmann no son homogéneas. tendremos que homogeneizarlas con el siguiente cambio de variable :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,t)=w(x,t)+2a(t)x^2+b(t)x&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
el nuevo problema quedaría de la siguiente manera :&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=-3/7 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=-3, t&amp;gt;0\\w(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
w(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que es un problema bien propuesto analizando su existencia de solución, unicidad de ésta y estabilidad con respecto al dato inicial.&lt;br /&gt;
&lt;br /&gt;
ahora ya se trata de un sistema con condiciones de frontera homogéneas, el problema de autovalores asociado es:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(PA)\left\{\begin{matrix}\\x''+μx=0 ,x\in\ (0,7)\\x'(0)=0\\x'(7)=0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y los autovalores y autofunciones salvo una constante son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;μ_k=\frac{\pi^2k^2}{49}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;φ_k=cos(kπ/7)x&amp;lt;/math&amp;gt;  k=0,1,2,3...&lt;br /&gt;
&lt;br /&gt;
Se aproxima el dato inicial y el segundo miembro, se elige Q y se toma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q c_kφ_k(x)=-3/7&amp;lt;/math&amp;gt;:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q a_kφ_k(x)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
donde se deduce que &amp;lt;math&amp;gt;c_k=\frac{\displaystyle\int_{0}^{7} -3/7cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_k=\frac{\displaystyle\int_{0}^{7} u_0cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El problema aproximado queda de la forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=\displaystyle\sum_{k=0}^Q c_kφ_k(x)&lt;br /&gt;
 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=0, t&amp;gt;0\\w(x,0)=w_0=\displaystyle\sum_{k=0}^Q a_kφ_k(x), x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada sería:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q T_k(t)φ_k(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo en la ecuación de difusión de una sustancia contaminante e igualando los coeficicientes de Fourier se obtiene el sistema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left\{\begin{matrix}\\T'_k(t)+μ_kT_k(t)=c_k\\T_k(0)=a_k\end{matrix}\right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendo el problema de valor inicial, se deduce que &amp;lt;math&amp;gt; T_k(t)=Ce^{-μ_k t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada queda de la forma &amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q Ce^{-μ_k t} cos(kπ/7)x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El valor de la constante C depende de la condición inicial,que es la que condiciona el valor de a&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
por ultimo solo nos quedaria deshacer el cambio de variable.&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35471</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35471"/>
				<updated>2016-05-03T09:23:20Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Resolución por el método de Heun */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecio2A14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicito3A14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerImplicito3A14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaHeun3A14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variables x.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[Archivo:ConservacionMasaA14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[Archivo:ConcentracionPuntoMedioA14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
=Concentración a lo largo del tiempo=&lt;br /&gt;
Se puede comprobar en la siguiente gráfica que para tiempos grandes la cantidad de contaminante se irá acercando al valor estacionario de 8.25/7=1.17. Es decir, nuestra solución del problema debe parecerse a la función u(x,t)=1.17, es constante, luego no varía.&lt;br /&gt;
[[Archivo:grafico_concentracion_tiempo.jpg ‎|marco|centro|Concentración a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La distancia entre la solución estacionaria y las soluciones para los siguientes instantes: 0s, 1s, 2s y 10s; se puede apreciar en la imagen anterior. Además las distancias entre la solución estacionaria y la solución u(x,t) para t=0,1,2,10 son:&lt;br /&gt;
&lt;br /&gt;
dist0=1.4662&lt;br /&gt;
&lt;br /&gt;
dist1=1.0671&lt;br /&gt;
&lt;br /&gt;
dist2=0.8632&lt;br /&gt;
&lt;br /&gt;
dist10=0.1724&lt;br /&gt;
&lt;br /&gt;
Y el código Matlab usado es:&lt;br /&gt;
 %distancias&lt;br /&gt;
 dist0=(sqrt(sum((sol(1,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist1=(sqrt(sum((sol(41,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist2=(sqrt(sum((sol(81,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist10=(sqrt(sum((sol(401,:)-1.17).^2)/(N+1)));&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar el estado estacionario con un error del 5% calculamos la media cuadrática de las distancias desde cada punto de la función al estado estacionario.&lt;br /&gt;
&lt;br /&gt;
 % El error del 5%&lt;br /&gt;
 limite=0.05*8.25;&lt;br /&gt;
 % Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 dist=(sqrt(sum((sol(i,:)-1.17).^2)/(N+1)));&lt;br /&gt;
  if dist&amp;lt;limite&lt;br /&gt;
 tiempo=(i-1)*dt;&lt;br /&gt;
  break&lt;br /&gt;
 end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Se obtiene un tiempo de 5.6750 segundos. &lt;br /&gt;
Al dividir &amp;quot;incremento de x&amp;quot; por 10 sale un tiempo de 7.353 segundos.&lt;br /&gt;
&lt;br /&gt;
=Limpiador=&lt;br /&gt;
&lt;br /&gt;
Colocar un limpiador en el extremo izquierdo se traduce físicamente en que la concentración en x=0 es ahora nula. Por lo tanto el problema a resolver ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1, colocamos en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo izquierdo, lo que modifica las condiciones de frontera del problema provocando que una condición de frontera tipo Neumann se convierta en una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
Obtenemos una aproximación numérica de la solución utilizando el '''método de diferencias finitas'''. &lt;br /&gt;
&lt;br /&gt;
El código en MATLAB del método sería:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:t2li.png|marco|centro|Resolución del sistema de difusión de una sustancia contaminante por el método del trapecio.]]&lt;br /&gt;
&lt;br /&gt;
El valor estacionario de la concentración en el tubo será de cero, debido a que se ha colocado un limpiador en uno de sus extremos que irá eliminando el contaminante.&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar este otro estado estacionario con un error del 5% vamos a calcular la media cuadrática de las concentraciones y ver cual coincide con el 5% de 5.85/7.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
 &lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=70;&lt;br /&gt;
q=1;&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 &lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
 &lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:(1/dt) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=(1/dt):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(5.85/7);&lt;br /&gt;
% Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
dist=(sqrt(sum(sol(i,:).^2)/(N+1)));&lt;br /&gt;
if dist&amp;lt;limite&lt;br /&gt;
tiempo=(i-1)*dt&lt;br /&gt;
break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
De esta forma el tiempo que obtenemos es 65.775&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Condiciones tipo Neumann===&lt;br /&gt;
Las nuevas condiciones newmann no son homogéneas. tendremos que homogeneizarlas con el siguiente cambio de variable :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,t)=w(x,t)+2a(t)x^2+b(t)x&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
el nuevo problema quedaría de la siguiente manera :&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=-3/7 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=-3, t&amp;gt;0\\w(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
w(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que es un problema bien propuesto analizando su existencia de solución, unicidad de ésta y estabilidad con respecto al dato inicial.&lt;br /&gt;
&lt;br /&gt;
ahora ya se trata de un sistema con condiciones de frontera homogéneas, el problema de autovalores asociado es:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(PA)\left\{\begin{matrix}\\x''+μx=0 ,x\in\ (0,7)\\x'(0)=0\\x'(7)=0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y los autovalores y autofunciones salvo una constante son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;μ_k=\frac{\pi^2k^2}{49}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;φ_k=cos(kπ/7)x&amp;lt;/math&amp;gt;  k=0,1,2,3...&lt;br /&gt;
&lt;br /&gt;
Se aproxima el dato inicial y el segundo miembro, se elige Q y se toma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q c_kφ_k(x)=-3/7&amp;lt;/math&amp;gt;:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q a_kφ_k(x)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
donde se deduce que &amp;lt;math&amp;gt;c_k=\frac{\displaystyle\int_{0}^{7} -3/7cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_k=\frac{\displaystyle\int_{0}^{7} u_0cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El problema aproximado queda de la forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=\displaystyle\sum_{k=0}^Q c_kφ_k(x)&lt;br /&gt;
 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=0, t&amp;gt;0\\w(x,0)=w_0=\displaystyle\sum_{k=0}^Q a_kφ_k(x), x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada sería:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q T_k(t)φ_k(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo en la ecuación de difusión de una sustancia contaminante e igualando los coeficicientes de Fourier se obtiene el sistema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left\{\begin{matrix}\\T'_k(t)+μ_kT_k(t)=c_k\\T_k(0)=a_k\end{matrix}\right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendo el problema de valor inicial, se deduce que &amp;lt;math&amp;gt; T_k(t)=Ce^{-μ_k t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada queda de la forma &amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q Ce^{-μ_k t} cos(kπ/7)x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El valor de la constante C depende de la condición inicial,que es la que condiciona el valor de a&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
por ultimo solo nos quedaria deshacer el cambio de variable.&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:GraficaHeun3A14.jpg&amp;diff=35470</id>
		<title>Archivo:GraficaHeun3A14.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:GraficaHeun3A14.jpg&amp;diff=35470"/>
				<updated>2016-05-03T09:23:04Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35469</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35469"/>
				<updated>2016-05-03T09:22:38Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Resolución por el método de Euler explícito */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecio2A14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicito3A14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerImplicito3A14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo: GraficaHeunA14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variables x.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[Archivo:ConservacionMasaA14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[Archivo:ConcentracionPuntoMedioA14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
=Concentración a lo largo del tiempo=&lt;br /&gt;
Se puede comprobar en la siguiente gráfica que para tiempos grandes la cantidad de contaminante se irá acercando al valor estacionario de 8.25/7=1.17. Es decir, nuestra solución del problema debe parecerse a la función u(x,t)=1.17, es constante, luego no varía.&lt;br /&gt;
[[Archivo:grafico_concentracion_tiempo.jpg ‎|marco|centro|Concentración a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La distancia entre la solución estacionaria y las soluciones para los siguientes instantes: 0s, 1s, 2s y 10s; se puede apreciar en la imagen anterior. Además las distancias entre la solución estacionaria y la solución u(x,t) para t=0,1,2,10 son:&lt;br /&gt;
&lt;br /&gt;
dist0=1.4662&lt;br /&gt;
&lt;br /&gt;
dist1=1.0671&lt;br /&gt;
&lt;br /&gt;
dist2=0.8632&lt;br /&gt;
&lt;br /&gt;
dist10=0.1724&lt;br /&gt;
&lt;br /&gt;
Y el código Matlab usado es:&lt;br /&gt;
 %distancias&lt;br /&gt;
 dist0=(sqrt(sum((sol(1,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist1=(sqrt(sum((sol(41,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist2=(sqrt(sum((sol(81,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist10=(sqrt(sum((sol(401,:)-1.17).^2)/(N+1)));&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar el estado estacionario con un error del 5% calculamos la media cuadrática de las distancias desde cada punto de la función al estado estacionario.&lt;br /&gt;
&lt;br /&gt;
 % El error del 5%&lt;br /&gt;
 limite=0.05*8.25;&lt;br /&gt;
 % Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 dist=(sqrt(sum((sol(i,:)-1.17).^2)/(N+1)));&lt;br /&gt;
  if dist&amp;lt;limite&lt;br /&gt;
 tiempo=(i-1)*dt;&lt;br /&gt;
  break&lt;br /&gt;
 end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Se obtiene un tiempo de 5.6750 segundos. &lt;br /&gt;
Al dividir &amp;quot;incremento de x&amp;quot; por 10 sale un tiempo de 7.353 segundos.&lt;br /&gt;
&lt;br /&gt;
=Limpiador=&lt;br /&gt;
&lt;br /&gt;
Colocar un limpiador en el extremo izquierdo se traduce físicamente en que la concentración en x=0 es ahora nula. Por lo tanto el problema a resolver ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1, colocamos en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo izquierdo, lo que modifica las condiciones de frontera del problema provocando que una condición de frontera tipo Neumann se convierta en una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
Obtenemos una aproximación numérica de la solución utilizando el '''método de diferencias finitas'''. &lt;br /&gt;
&lt;br /&gt;
El código en MATLAB del método sería:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:t2li.png|marco|centro|Resolución del sistema de difusión de una sustancia contaminante por el método del trapecio.]]&lt;br /&gt;
&lt;br /&gt;
El valor estacionario de la concentración en el tubo será de cero, debido a que se ha colocado un limpiador en uno de sus extremos que irá eliminando el contaminante.&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar este otro estado estacionario con un error del 5% vamos a calcular la media cuadrática de las concentraciones y ver cual coincide con el 5% de 5.85/7.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
 &lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=70;&lt;br /&gt;
q=1;&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 &lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
 &lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:(1/dt) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=(1/dt):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(5.85/7);&lt;br /&gt;
% Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
dist=(sqrt(sum(sol(i,:).^2)/(N+1)));&lt;br /&gt;
if dist&amp;lt;limite&lt;br /&gt;
tiempo=(i-1)*dt&lt;br /&gt;
break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
De esta forma el tiempo que obtenemos es 65.775&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Condiciones tipo Neumann===&lt;br /&gt;
Las nuevas condiciones newmann no son homogéneas. tendremos que homogeneizarlas con el siguiente cambio de variable :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,t)=w(x,t)+2a(t)x^2+b(t)x&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
el nuevo problema quedaría de la siguiente manera :&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=-3/7 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=-3, t&amp;gt;0\\w(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
w(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que es un problema bien propuesto analizando su existencia de solución, unicidad de ésta y estabilidad con respecto al dato inicial.&lt;br /&gt;
&lt;br /&gt;
ahora ya se trata de un sistema con condiciones de frontera homogéneas, el problema de autovalores asociado es:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(PA)\left\{\begin{matrix}\\x''+μx=0 ,x\in\ (0,7)\\x'(0)=0\\x'(7)=0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y los autovalores y autofunciones salvo una constante son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;μ_k=\frac{\pi^2k^2}{49}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;φ_k=cos(kπ/7)x&amp;lt;/math&amp;gt;  k=0,1,2,3...&lt;br /&gt;
&lt;br /&gt;
Se aproxima el dato inicial y el segundo miembro, se elige Q y se toma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q c_kφ_k(x)=-3/7&amp;lt;/math&amp;gt;:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q a_kφ_k(x)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
donde se deduce que &amp;lt;math&amp;gt;c_k=\frac{\displaystyle\int_{0}^{7} -3/7cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_k=\frac{\displaystyle\int_{0}^{7} u_0cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El problema aproximado queda de la forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=\displaystyle\sum_{k=0}^Q c_kφ_k(x)&lt;br /&gt;
 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=0, t&amp;gt;0\\w(x,0)=w_0=\displaystyle\sum_{k=0}^Q a_kφ_k(x), x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada sería:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q T_k(t)φ_k(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo en la ecuación de difusión de una sustancia contaminante e igualando los coeficicientes de Fourier se obtiene el sistema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left\{\begin{matrix}\\T'_k(t)+μ_kT_k(t)=c_k\\T_k(0)=a_k\end{matrix}\right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendo el problema de valor inicial, se deduce que &amp;lt;math&amp;gt; T_k(t)=Ce^{-μ_k t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada queda de la forma &amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q Ce^{-μ_k t} cos(kπ/7)x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El valor de la constante C depende de la condición inicial,que es la que condiciona el valor de a&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
por ultimo solo nos quedaria deshacer el cambio de variable.&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:GraficaEulerExplicito3A14.jpg&amp;diff=35468</id>
		<title>Archivo:GraficaEulerExplicito3A14.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:GraficaEulerExplicito3A14.jpg&amp;diff=35468"/>
				<updated>2016-05-03T09:22:14Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35467</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35467"/>
				<updated>2016-05-03T09:21:58Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Resolución por el método de Euler implícito */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecio2A14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicitoA14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerImplicito3A14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo: GraficaHeunA14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variables x.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[Archivo:ConservacionMasaA14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[Archivo:ConcentracionPuntoMedioA14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
=Concentración a lo largo del tiempo=&lt;br /&gt;
Se puede comprobar en la siguiente gráfica que para tiempos grandes la cantidad de contaminante se irá acercando al valor estacionario de 8.25/7=1.17. Es decir, nuestra solución del problema debe parecerse a la función u(x,t)=1.17, es constante, luego no varía.&lt;br /&gt;
[[Archivo:grafico_concentracion_tiempo.jpg ‎|marco|centro|Concentración a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La distancia entre la solución estacionaria y las soluciones para los siguientes instantes: 0s, 1s, 2s y 10s; se puede apreciar en la imagen anterior. Además las distancias entre la solución estacionaria y la solución u(x,t) para t=0,1,2,10 son:&lt;br /&gt;
&lt;br /&gt;
dist0=1.4662&lt;br /&gt;
&lt;br /&gt;
dist1=1.0671&lt;br /&gt;
&lt;br /&gt;
dist2=0.8632&lt;br /&gt;
&lt;br /&gt;
dist10=0.1724&lt;br /&gt;
&lt;br /&gt;
Y el código Matlab usado es:&lt;br /&gt;
 %distancias&lt;br /&gt;
 dist0=(sqrt(sum((sol(1,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist1=(sqrt(sum((sol(41,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist2=(sqrt(sum((sol(81,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist10=(sqrt(sum((sol(401,:)-1.17).^2)/(N+1)));&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar el estado estacionario con un error del 5% calculamos la media cuadrática de las distancias desde cada punto de la función al estado estacionario.&lt;br /&gt;
&lt;br /&gt;
 % El error del 5%&lt;br /&gt;
 limite=0.05*8.25;&lt;br /&gt;
 % Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 dist=(sqrt(sum((sol(i,:)-1.17).^2)/(N+1)));&lt;br /&gt;
  if dist&amp;lt;limite&lt;br /&gt;
 tiempo=(i-1)*dt;&lt;br /&gt;
  break&lt;br /&gt;
 end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Se obtiene un tiempo de 5.6750 segundos. &lt;br /&gt;
Al dividir &amp;quot;incremento de x&amp;quot; por 10 sale un tiempo de 7.353 segundos.&lt;br /&gt;
&lt;br /&gt;
=Limpiador=&lt;br /&gt;
&lt;br /&gt;
Colocar un limpiador en el extremo izquierdo se traduce físicamente en que la concentración en x=0 es ahora nula. Por lo tanto el problema a resolver ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1, colocamos en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo izquierdo, lo que modifica las condiciones de frontera del problema provocando que una condición de frontera tipo Neumann se convierta en una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
Obtenemos una aproximación numérica de la solución utilizando el '''método de diferencias finitas'''. &lt;br /&gt;
&lt;br /&gt;
El código en MATLAB del método sería:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:t2li.png|marco|centro|Resolución del sistema de difusión de una sustancia contaminante por el método del trapecio.]]&lt;br /&gt;
&lt;br /&gt;
El valor estacionario de la concentración en el tubo será de cero, debido a que se ha colocado un limpiador en uno de sus extremos que irá eliminando el contaminante.&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar este otro estado estacionario con un error del 5% vamos a calcular la media cuadrática de las concentraciones y ver cual coincide con el 5% de 5.85/7.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
 &lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=70;&lt;br /&gt;
q=1;&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 &lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
 &lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:(1/dt) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=(1/dt):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(5.85/7);&lt;br /&gt;
% Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
dist=(sqrt(sum(sol(i,:).^2)/(N+1)));&lt;br /&gt;
if dist&amp;lt;limite&lt;br /&gt;
tiempo=(i-1)*dt&lt;br /&gt;
break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
De esta forma el tiempo que obtenemos es 65.775&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Condiciones tipo Neumann===&lt;br /&gt;
Las nuevas condiciones newmann no son homogéneas. tendremos que homogeneizarlas con el siguiente cambio de variable :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,t)=w(x,t)+2a(t)x^2+b(t)x&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
el nuevo problema quedaría de la siguiente manera :&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=-3/7 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=-3, t&amp;gt;0\\w(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
w(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que es un problema bien propuesto analizando su existencia de solución, unicidad de ésta y estabilidad con respecto al dato inicial.&lt;br /&gt;
&lt;br /&gt;
ahora ya se trata de un sistema con condiciones de frontera homogéneas, el problema de autovalores asociado es:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(PA)\left\{\begin{matrix}\\x''+μx=0 ,x\in\ (0,7)\\x'(0)=0\\x'(7)=0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y los autovalores y autofunciones salvo una constante son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;μ_k=\frac{\pi^2k^2}{49}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;φ_k=cos(kπ/7)x&amp;lt;/math&amp;gt;  k=0,1,2,3...&lt;br /&gt;
&lt;br /&gt;
Se aproxima el dato inicial y el segundo miembro, se elige Q y se toma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q c_kφ_k(x)=-3/7&amp;lt;/math&amp;gt;:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q a_kφ_k(x)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
donde se deduce que &amp;lt;math&amp;gt;c_k=\frac{\displaystyle\int_{0}^{7} -3/7cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_k=\frac{\displaystyle\int_{0}^{7} u_0cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El problema aproximado queda de la forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=\displaystyle\sum_{k=0}^Q c_kφ_k(x)&lt;br /&gt;
 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=0, t&amp;gt;0\\w(x,0)=w_0=\displaystyle\sum_{k=0}^Q a_kφ_k(x), x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada sería:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q T_k(t)φ_k(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo en la ecuación de difusión de una sustancia contaminante e igualando los coeficicientes de Fourier se obtiene el sistema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left\{\begin{matrix}\\T'_k(t)+μ_kT_k(t)=c_k\\T_k(0)=a_k\end{matrix}\right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendo el problema de valor inicial, se deduce que &amp;lt;math&amp;gt; T_k(t)=Ce^{-μ_k t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada queda de la forma &amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q Ce^{-μ_k t} cos(kπ/7)x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El valor de la constante C depende de la condición inicial,que es la que condiciona el valor de a&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
por ultimo solo nos quedaria deshacer el cambio de variable.&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:GraficaEulerImplicito3A14.jpg&amp;diff=35466</id>
		<title>Archivo:GraficaEulerImplicito3A14.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:GraficaEulerImplicito3A14.jpg&amp;diff=35466"/>
				<updated>2016-05-03T09:21:29Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:GraficaEulerExplicito2A14.jpg&amp;diff=35465</id>
		<title>Archivo:GraficaEulerExplicito2A14.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:GraficaEulerExplicito2A14.jpg&amp;diff=35465"/>
				<updated>2016-05-03T09:19:01Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35464</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35464"/>
				<updated>2016-05-03T09:18:37Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Resolución por el método de Euler implícito */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecio2A14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicitoA14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerImplicito2A14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo: GraficaHeunA14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variables x.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[Archivo:ConservacionMasaA14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[Archivo:ConcentracionPuntoMedioA14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
=Concentración a lo largo del tiempo=&lt;br /&gt;
Se puede comprobar en la siguiente gráfica que para tiempos grandes la cantidad de contaminante se irá acercando al valor estacionario de 8.25/7=1.17. Es decir, nuestra solución del problema debe parecerse a la función u(x,t)=1.17, es constante, luego no varía.&lt;br /&gt;
[[Archivo:grafico_concentracion_tiempo.jpg ‎|marco|centro|Concentración a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La distancia entre la solución estacionaria y las soluciones para los siguientes instantes: 0s, 1s, 2s y 10s; se puede apreciar en la imagen anterior. Además las distancias entre la solución estacionaria y la solución u(x,t) para t=0,1,2,10 son:&lt;br /&gt;
&lt;br /&gt;
dist0=1.4662&lt;br /&gt;
&lt;br /&gt;
dist1=1.0671&lt;br /&gt;
&lt;br /&gt;
dist2=0.8632&lt;br /&gt;
&lt;br /&gt;
dist10=0.1724&lt;br /&gt;
&lt;br /&gt;
Y el código Matlab usado es:&lt;br /&gt;
 %distancias&lt;br /&gt;
 dist0=(sqrt(sum((sol(1,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist1=(sqrt(sum((sol(41,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist2=(sqrt(sum((sol(81,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist10=(sqrt(sum((sol(401,:)-1.17).^2)/(N+1)));&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar el estado estacionario con un error del 5% calculamos la media cuadrática de las distancias desde cada punto de la función al estado estacionario.&lt;br /&gt;
&lt;br /&gt;
 % El error del 5%&lt;br /&gt;
 limite=0.05*8.25;&lt;br /&gt;
 % Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 dist=(sqrt(sum((sol(i,:)-1.17).^2)/(N+1)));&lt;br /&gt;
  if dist&amp;lt;limite&lt;br /&gt;
 tiempo=(i-1)*dt;&lt;br /&gt;
  break&lt;br /&gt;
 end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Se obtiene un tiempo de 5.6750 segundos. &lt;br /&gt;
Al dividir &amp;quot;incremento de x&amp;quot; por 10 sale un tiempo de 7.353 segundos.&lt;br /&gt;
&lt;br /&gt;
=Limpiador=&lt;br /&gt;
&lt;br /&gt;
Colocar un limpiador en el extremo izquierdo se traduce físicamente en que la concentración en x=0 es ahora nula. Por lo tanto el problema a resolver ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1, colocamos en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo izquierdo, lo que modifica las condiciones de frontera del problema provocando que una condición de frontera tipo Neumann se convierta en una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
Obtenemos una aproximación numérica de la solución utilizando el '''método de diferencias finitas'''. &lt;br /&gt;
&lt;br /&gt;
El código en MATLAB del método sería:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:t2li.png|marco|centro|Resolución del sistema de difusión de una sustancia contaminante por el método del trapecio.]]&lt;br /&gt;
&lt;br /&gt;
El valor estacionario de la concentración en el tubo será de cero, debido a que se ha colocado un limpiador en uno de sus extremos que irá eliminando el contaminante.&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar este otro estado estacionario con un error del 5% vamos a calcular la media cuadrática de las concentraciones y ver cual coincide con el 5% de 5.85/7.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
 &lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=70;&lt;br /&gt;
q=1;&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 &lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
 &lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:(1/dt) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=(1/dt):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(5.85/7);&lt;br /&gt;
% Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
dist=(sqrt(sum(sol(i,:).^2)/(N+1)));&lt;br /&gt;
if dist&amp;lt;limite&lt;br /&gt;
tiempo=(i-1)*dt&lt;br /&gt;
break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
De esta forma el tiempo que obtenemos es 65.775&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Condiciones tipo Neumann===&lt;br /&gt;
Las nuevas condiciones newmann no son homogéneas. tendremos que homogeneizarlas con el siguiente cambio de variable :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,t)=w(x,t)+2a(t)x^2+b(t)x&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
el nuevo problema quedaría de la siguiente manera :&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=-3/7 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=-3, t&amp;gt;0\\w(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
w(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que es un problema bien propuesto analizando su existencia de solución, unicidad de ésta y estabilidad con respecto al dato inicial.&lt;br /&gt;
&lt;br /&gt;
ahora ya se trata de un sistema con condiciones de frontera homogéneas, el problema de autovalores asociado es:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(PA)\left\{\begin{matrix}\\x''+μx=0 ,x\in\ (0,7)\\x'(0)=0\\x'(7)=0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y los autovalores y autofunciones salvo una constante son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;μ_k=\frac{\pi^2k^2}{49}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;φ_k=cos(kπ/7)x&amp;lt;/math&amp;gt;  k=0,1,2,3...&lt;br /&gt;
&lt;br /&gt;
Se aproxima el dato inicial y el segundo miembro, se elige Q y se toma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q c_kφ_k(x)=-3/7&amp;lt;/math&amp;gt;:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q a_kφ_k(x)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
donde se deduce que &amp;lt;math&amp;gt;c_k=\frac{\displaystyle\int_{0}^{7} -3/7cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_k=\frac{\displaystyle\int_{0}^{7} u_0cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El problema aproximado queda de la forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=\displaystyle\sum_{k=0}^Q c_kφ_k(x)&lt;br /&gt;
 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=0, t&amp;gt;0\\w(x,0)=w_0=\displaystyle\sum_{k=0}^Q a_kφ_k(x), x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada sería:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q T_k(t)φ_k(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo en la ecuación de difusión de una sustancia contaminante e igualando los coeficicientes de Fourier se obtiene el sistema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left\{\begin{matrix}\\T'_k(t)+μ_kT_k(t)=c_k\\T_k(0)=a_k\end{matrix}\right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendo el problema de valor inicial, se deduce que &amp;lt;math&amp;gt; T_k(t)=Ce^{-μ_k t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada queda de la forma &amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q Ce^{-μ_k t} cos(kπ/7)x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El valor de la constante C depende de la condición inicial,que es la que condiciona el valor de a&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
por ultimo solo nos quedaria deshacer el cambio de variable.&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:GraficaEulerImplicito2A14.jpg&amp;diff=35463</id>
		<title>Archivo:GraficaEulerImplicito2A14.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:GraficaEulerImplicito2A14.jpg&amp;diff=35463"/>
				<updated>2016-05-03T09:18:23Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35462</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35462"/>
				<updated>2016-05-03T09:17:58Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Resolución por el método del trapecio */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecio2A14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicitoA14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo: GraficaEulerImplicitoA14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo: GraficaHeunA14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variables x.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[Archivo:ConservacionMasaA14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[Archivo:ConcentracionPuntoMedioA14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
=Concentración a lo largo del tiempo=&lt;br /&gt;
Se puede comprobar en la siguiente gráfica que para tiempos grandes la cantidad de contaminante se irá acercando al valor estacionario de 8.25/7=1.17. Es decir, nuestra solución del problema debe parecerse a la función u(x,t)=1.17, es constante, luego no varía.&lt;br /&gt;
[[Archivo:grafico_concentracion_tiempo.jpg ‎|marco|centro|Concentración a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La distancia entre la solución estacionaria y las soluciones para los siguientes instantes: 0s, 1s, 2s y 10s; se puede apreciar en la imagen anterior. Además las distancias entre la solución estacionaria y la solución u(x,t) para t=0,1,2,10 son:&lt;br /&gt;
&lt;br /&gt;
dist0=1.4662&lt;br /&gt;
&lt;br /&gt;
dist1=1.0671&lt;br /&gt;
&lt;br /&gt;
dist2=0.8632&lt;br /&gt;
&lt;br /&gt;
dist10=0.1724&lt;br /&gt;
&lt;br /&gt;
Y el código Matlab usado es:&lt;br /&gt;
 %distancias&lt;br /&gt;
 dist0=(sqrt(sum((sol(1,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist1=(sqrt(sum((sol(41,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist2=(sqrt(sum((sol(81,:)-1.17).^2)/(N+1)));&lt;br /&gt;
 dist10=(sqrt(sum((sol(401,:)-1.17).^2)/(N+1)));&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar el estado estacionario con un error del 5% calculamos la media cuadrática de las distancias desde cada punto de la función al estado estacionario.&lt;br /&gt;
&lt;br /&gt;
 % El error del 5%&lt;br /&gt;
 limite=0.05*8.25;&lt;br /&gt;
 % Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
 for i=1:length(t)&lt;br /&gt;
 dist=(sqrt(sum((sol(i,:)-1.17).^2)/(N+1)));&lt;br /&gt;
  if dist&amp;lt;limite&lt;br /&gt;
 tiempo=(i-1)*dt;&lt;br /&gt;
  break&lt;br /&gt;
 end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Se obtiene un tiempo de 5.6750 segundos. &lt;br /&gt;
Al dividir &amp;quot;incremento de x&amp;quot; por 10 sale un tiempo de 7.353 segundos.&lt;br /&gt;
&lt;br /&gt;
=Limpiador=&lt;br /&gt;
&lt;br /&gt;
Colocar un limpiador en el extremo izquierdo se traduce físicamente en que la concentración en x=0 es ahora nula. Por lo tanto el problema a resolver ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1, colocamos en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo izquierdo, lo que modifica las condiciones de frontera del problema provocando que una condición de frontera tipo Neumann se convierta en una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
Obtenemos una aproximación numérica de la solución utilizando el '''método de diferencias finitas'''. &lt;br /&gt;
&lt;br /&gt;
El código en MATLAB del método sería:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:t2li.png|marco|centro|Resolución del sistema de difusión de una sustancia contaminante por el método del trapecio.]]&lt;br /&gt;
&lt;br /&gt;
El valor estacionario de la concentración en el tubo será de cero, debido a que se ha colocado un limpiador en uno de sus extremos que irá eliminando el contaminante.&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar este otro estado estacionario con un error del 5% vamos a calcular la media cuadrática de las concentraciones y ver cual coincide con el 5% de 5.85/7.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
 &lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=70;&lt;br /&gt;
q=1;&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 &lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
 &lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:(1/dt) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=(1/dt):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(5.85/7);&lt;br /&gt;
% Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
dist=(sqrt(sum(sol(i,:).^2)/(N+1)));&lt;br /&gt;
if dist&amp;lt;limite&lt;br /&gt;
tiempo=(i-1)*dt&lt;br /&gt;
break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
De esta forma el tiempo que obtenemos es 65.775&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Condiciones tipo Neumann===&lt;br /&gt;
Las nuevas condiciones newmann no son homogéneas. tendremos que homogeneizarlas con el siguiente cambio de variable :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,t)=w(x,t)+2a(t)x^2+b(t)x&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
el nuevo problema quedaría de la siguiente manera :&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=-3/7 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=-3, t&amp;gt;0\\w(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
w(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que es un problema bien propuesto analizando su existencia de solución, unicidad de ésta y estabilidad con respecto al dato inicial.&lt;br /&gt;
&lt;br /&gt;
ahora ya se trata de un sistema con condiciones de frontera homogéneas, el problema de autovalores asociado es:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(PA)\left\{\begin{matrix}\\x''+μx=0 ,x\in\ (0,7)\\x'(0)=0\\x'(7)=0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y los autovalores y autofunciones salvo una constante son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;μ_k=\frac{\pi^2k^2}{49}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;φ_k=cos(kπ/7)x&amp;lt;/math&amp;gt;  k=0,1,2,3...&lt;br /&gt;
&lt;br /&gt;
Se aproxima el dato inicial y el segundo miembro, se elige Q y se toma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q c_kφ_k(x)=-3/7&amp;lt;/math&amp;gt;:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q a_kφ_k(x)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
donde se deduce que &amp;lt;math&amp;gt;c_k=\frac{\displaystyle\int_{0}^{7} -3/7cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_k=\frac{\displaystyle\int_{0}^{7} u_0cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El problema aproximado queda de la forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=\displaystyle\sum_{k=0}^Q c_kφ_k(x)&lt;br /&gt;
 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=0, t&amp;gt;0\\w(x,0)=w_0=\displaystyle\sum_{k=0}^Q a_kφ_k(x), x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada sería:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q T_k(t)φ_k(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo en la ecuación de difusión de una sustancia contaminante e igualando los coeficicientes de Fourier se obtiene el sistema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left\{\begin{matrix}\\T'_k(t)+μ_kT_k(t)=c_k\\T_k(0)=a_k\end{matrix}\right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendo el problema de valor inicial, se deduce que &amp;lt;math&amp;gt; T_k(t)=Ce^{-μ_k t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada queda de la forma &amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q Ce^{-μ_k t} cos(kπ/7)x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El valor de la constante C depende de la condición inicial,que es la que condiciona el valor de a&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
por ultimo solo nos quedaria deshacer el cambio de variable.&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:GraficaTrapecio2A14.jpg&amp;diff=35460</id>
		<title>Archivo:GraficaTrapecio2A14.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:GraficaTrapecio2A14.jpg&amp;diff=35460"/>
				<updated>2016-05-03T09:17:15Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35218</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35218"/>
				<updated>2016-05-02T15:59:04Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Limpiador */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecioA14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicitoA14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo: GraficaEulerImplicitoA14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo: GraficaHeunA14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variables x.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[Archivo:ConservacionMasaA14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[Archivo:ConcentracionPuntoMedioA14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
&lt;br /&gt;
=Limpiador=&lt;br /&gt;
&lt;br /&gt;
Colocar un limpiador en el extremo izquierdo se traduce físicamente en que la concentración en x=0 es ahora nula. Por lo tanto el problema a resolver ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1, colocamos en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo izquierdo, lo que modifica las condiciones de frontera del problema provocando que una condición de frontera tipo Neumann se convierta en una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
Obtenemos una aproximación numérica de la solución utilizando el '''método de diferencias finitas'''. &lt;br /&gt;
&lt;br /&gt;
El código en MATLAB del método sería:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:t2li.png|marco|centro|Resolución del sistema de difusión de una sustancia contaminante por el método del trapecio.]]&lt;br /&gt;
&lt;br /&gt;
El valor estacionario de la concentración en el tubo será de cero, debido a que se ha colocado un limpiador en uno de sus extremos que irá eliminando el contaminante.&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar este otro estado estacionario con un error del 5% vamos a calcular la media cuadrática de las concentraciones y ver cual coincide con el 5% de 5.85/7.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
 &lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=70;&lt;br /&gt;
q=1;&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 &lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
 &lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:(1/dt) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=(1/dt):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(5.85/7);&lt;br /&gt;
% Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
dist=(sqrt(sum(sol(i,:).^2)/(N+1)));&lt;br /&gt;
if dist&amp;lt;limite&lt;br /&gt;
tiempo=(i-1)*dt&lt;br /&gt;
break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
De esta forma el tiempo que obtenemos es 65.775&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Condiciones tipo Neumann===&lt;br /&gt;
Las nuevas condiciones newmann no son homogéneas. tendremos que homogeneizarlas con el siguiente cambio de variable :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,t)=w(x,t)+2a(t)x^2+b(t)x&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
el nuevo problema quedaría de la siguiente manera :&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=-3/7 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=-3, t&amp;gt;0\\w(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
w(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que es un problema bien propuesto analizando su existencia de solución, unicidad de ésta y estabilidad con respecto al dato inicial.&lt;br /&gt;
&lt;br /&gt;
ahora ya se trata de un sistema con condiciones de frontera homogéneas, el problema de autovalores asociado es:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(PA)\left\{\begin{matrix}\\x''+μx=0 ,x\in\ (0,7)\\x'(0)=0\\x'(7)=0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y los autovalores y autofunciones salvo una constante son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;μ_k=\frac{\pi^2k^2}{49}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;φ_k=cos(kπ/7)x&amp;lt;/math&amp;gt;  k=0,1,2,3...&lt;br /&gt;
&lt;br /&gt;
Se aproxima el dato inicial y el segundo miembro, se elige Q y se toma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q c_kφ_k(x)=-3/7&amp;lt;/math&amp;gt;:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q a_kφ_k(x)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
donde se deduce que &amp;lt;math&amp;gt;c_k=\frac{\displaystyle\int_{0}^{7} -3/7cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_k=\frac{\displaystyle\int_{0}^{7} u_0cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El problema aproximado queda de la forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=\displaystyle\sum_{k=0}^Q c_kφ_k(x)&lt;br /&gt;
 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=0, t&amp;gt;0\\w(x,0)=w_0=\displaystyle\sum_{k=0}^Q a_kφ_k(x), x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada sería:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q T_k(t)φ_k(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo en la ecuación de difusión de una sustancia contaminante e igualando los coeficicientes de Fourier se obtiene el sistema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left\{\begin{matrix}\\T'_k(t)+μ_kT_k(t)=c_k\\T_k(0)=a_k\end{matrix}\right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendo el problema de valor inicial, se deduce que &amp;lt;math&amp;gt; T_k(t)=Ce^{-μ_k t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada queda de la forma &amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q Ce^{-μ_k t} cos(kπ/7)x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El valor de la constante C depende de la condición inicial,que es la que condiciona el valor de a&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
por ultimo solo nos quedaria deshacer el cambio de variable.&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35217</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35217"/>
				<updated>2016-05-02T15:58:37Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Condiciones tipo Newman */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecioA14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicitoA14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo: GraficaEulerImplicitoA14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo: GraficaHeunA14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variables x.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[Archivo:ConservacionMasaA14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[Archivo:ConcentracionPuntoMedioA14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
&lt;br /&gt;
=Limpiador=&lt;br /&gt;
&lt;br /&gt;
Colocar un limpiador en el extremo izquierdo se traduce físicamente en que la concentración en x=0 es ahora nula. Por lo tanto el problema a resolver ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1, colocamos en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo izquierdo, lo que modifica las condiciones de frontera del problema provocando que una condición de frontera tipo Neumann se convierta en una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
Obtenemos una aproximación numérica de la solución utilizando el '''método de diferencias finitas'''. &lt;br /&gt;
&lt;br /&gt;
El código en MATLAB del método sería:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:t2li.png|marco|centro|Resolución del sistema de difusión de una sustancia contaminante por el método del trapecio.]]&lt;br /&gt;
&lt;br /&gt;
El valor estacionario de la concentración en el tubo será de cero, debido a que se ha colocado un limpiador en uno de sus extremos que irá eliminando el contaminante.&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar este otro estado estacionario con un error del 5% vamos a calcular la media cuadrática de las concentraciones y ver cual coincide con el 5% de 5.85/7.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
 &lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=70;&lt;br /&gt;
q=1;&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 &lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
 &lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:(1/dt) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=(1/dt):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(5.85/7);&lt;br /&gt;
% Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
dist=(sqrt(sum(sol(i,:).^2)/(N+1)));&lt;br /&gt;
if dist&amp;lt;limite&lt;br /&gt;
tiempo=(i-1)*dt&lt;br /&gt;
break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
De esta forma el tiempo que obtenemos es 65.775&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Condiciones tipo Neumann===&lt;br /&gt;
Las nuevas condiciones newmann no son homogéneas. tendremos que homogeneizarlas con el siguiente cambio de variable :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,t)=w(x,t)+2a(t)x^2+b(t)x&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
el nuevo problema quedaría de la siguiente manera :&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=-3/7 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=-3, t&amp;gt;0\\w(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
w(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que es un problema bien propuesto analizando su existencia de solución, unicidad de ésta y estabilidad con respecto al dato inicial.&lt;br /&gt;
&lt;br /&gt;
ahora ya se trata de un sistema con condiciones de frontera homogéneas, el problema de autovalores asociado es:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(PA)\left\{\begin{matrix}\\x''+μx=0 ,x\in\ (0,7)\\x'(0)=0\\x'(7)=0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y los autovalores y autofunciones salvo una constante son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;μ_k=\frac{\pi^2k^2}{49}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;φ_k=cos(kπ/7)x&amp;lt;/math&amp;gt;  k=0,1,2,3...&lt;br /&gt;
&lt;br /&gt;
Se aproxima el dato inicial y el segundo miembro, se elige Q y se toma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q c_kφ_k(x)=-3/7&amp;lt;/math&amp;gt;:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q a_kφ_k(x)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
donde se deduce que &amp;lt;math&amp;gt;c_k=\frac{\displaystyle\int_{0}^{7} -3/7cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_k=\frac{\displaystyle\int_{0}^{7} u_0cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El problema aproximado queda de la forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=\displaystyle\sum_{k=0}^Q c_kφ_k(x)&lt;br /&gt;
 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=0, t&amp;gt;0\\w(x,0)=w_0=\displaystyle\sum_{k=0}^Q a_kφ_k(x), x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada sería:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q T_k(t)φ_k(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo en la ecuación de difusión de una sustancia contaminante e igualando los coeficicientes de Fourier se obtiene el sistema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left\{\begin{matrix}\\T'_k(t)+μ_kT_k(t)=c_k\\T_k(0)=a_k\end{matrix}\right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendo el problema de valor inicial, se deduce que &amp;lt;math&amp;gt; T_k(t)=Ce^{-μ_k t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada queda de la forma &amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q Ce^{-μ_k t} cos(kπ/7)x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El valor de la constante C depende de la condición inicial,que es la que condiciona el valor de a&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
por ultimo solo nos quedaria deshacer el cambio de variable.&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35215</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35215"/>
				<updated>2016-05-02T15:57:34Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecioA14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicitoA14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo: GraficaEulerImplicitoA14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo: GraficaHeunA14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variables x.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[Archivo:ConservacionMasaA14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[Archivo:ConcentracionPuntoMedioA14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
&lt;br /&gt;
=Limpiador=&lt;br /&gt;
&lt;br /&gt;
Colocar un limpiador en el extremo izquierdo se traduce físicamente en que la concentración en x=0 es ahora nula. Por lo tanto el problema a resolver ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1, colocamos en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo izquierdo, lo que modifica las condiciones de frontera del problema provocando que una condición de frontera tipo Neumann se convierta en una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
Obtenemos una aproximación numérica de la solución utilizando el '''método de diferencias finitas'''. &lt;br /&gt;
&lt;br /&gt;
El código en MATLAB del método sería:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:t2li.png|marco|centro|Resolución del sistema de difusión de una sustancia contaminante por el método del trapecio.]]&lt;br /&gt;
&lt;br /&gt;
El valor estacionario de la concentración en el tubo será de cero, debido a que se ha colocado un limpiador en uno de sus extremos que irá eliminando el contaminante.&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar este otro estado estacionario con un error del 5% vamos a calcular la media cuadrática de las concentraciones y ver cual coincide con el 5% de 5.85/7.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
 &lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=70;&lt;br /&gt;
q=1;&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 &lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
 &lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:(1/dt) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=(1/dt):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(5.85/7);&lt;br /&gt;
% Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
dist=(sqrt(sum(sol(i,:).^2)/(N+1)));&lt;br /&gt;
if dist&amp;lt;limite&lt;br /&gt;
tiempo=(i-1)*dt&lt;br /&gt;
break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
De esta forma el tiempo que obtenemos es 65.775&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Condiciones tipo Newman===&lt;br /&gt;
las nuevas condiciones newmann no son homogéneas. tendremos que homogeneizarlas con el siguiente cambio de variable :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,t)=w(x,t)+2a(t)x^2+b(t)x&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
el nuevo problema quedaría de la siguiente manera :&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=-3/7 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=-3, t&amp;gt;0\\w(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
w(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que es un problema bien propuesto analizando su existencia de solución, unicidad de ésta y estabilidad con respecto al dato inicial.&lt;br /&gt;
&lt;br /&gt;
ahora ya se trata de un sistema con condiciones de frontera homogéneas, el problema de autovalores asociado es:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(PA)\left\{\begin{matrix}\\x''+μx=0 ,x\in\ (0,7)\\x'(0)=0\\x'(7)=0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y los autovalores y autofunciones salvo una constante son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;μ_k=\frac{\pi^2k^2}{49}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;φ_k=cos(kπ/7)x&amp;lt;/math&amp;gt;  k=0,1,2,3...&lt;br /&gt;
&lt;br /&gt;
Se aproxima el dato inicial y el segundo miembro, se elige Q y se toma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q c_kφ_k(x)=-3/7&amp;lt;/math&amp;gt;:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\displaystyle\sum_{k=0}^Q a_kφ_k(x)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
donde se deduce que &amp;lt;math&amp;gt;c_k=\frac{\displaystyle\int_{0}^{7} -3/7cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_k=\frac{\displaystyle\int_{0}^{7} u_0cos(kπ/7)x\, dx}{\displaystyle\int_{0}^{7} cos^2(kπ/7)x\, dx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El problema aproximado queda de la forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\w_t-w_{xx}=\displaystyle\sum_{k=0}^Q c_kφ_k(x)&lt;br /&gt;
 ,x\in\ (0,7), t&amp;gt;0\\w_x(0,t)=0, t&amp;gt;0\\w_x(7,t)=0, t&amp;gt;0\\w(x,0)=w_0=\displaystyle\sum_{k=0}^Q a_kφ_k(x), x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada sería:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q T_k(t)φ_k(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sustituyendo en la ecuación de difusión de una sustancia contaminante e igualando los coeficicientes de Fourier se obtiene el sistema:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left\{\begin{matrix}\\T'_k(t)+μ_kT_k(t)=c_k\\T_k(0)=a_k\end{matrix}\right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resolviendo el problema de valor inicial, se deduce que &amp;lt;math&amp;gt; T_k(t)=Ce^{-μ_k t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La solución aproximada queda de la forma &amp;lt;math&amp;gt;w(x,t)=\displaystyle\sum_{k=0}^Q Ce^{-μ_k t} cos(kπ/7)x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El valor de la constante C depende de la condición inicial,que es la que condiciona el valor de a&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
por ultimo solo nos quedaria deshacer el cambio de variable.&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35207</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35207"/>
				<updated>2016-05-02T15:44:34Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Limpiador */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecioA14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicitoA14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo: GraficaEulerImplicitoA14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo: GraficaHeunA14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variables x.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[Archivo:ConservacionMasaA14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[Archivo:ConcentracionPuntoMedioA14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
&lt;br /&gt;
=Limpiador=&lt;br /&gt;
&lt;br /&gt;
Colocar un limpiador en el extremo izquierdo se traduce físicamente en que la concentración en x=0 es ahora nula. Por lo tanto el problema a resolver ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
Pasado un tiempo T = 1, colocamos en el extremo izquierdo un limpiador que elimina el contaminante&lt;br /&gt;
en ese extremo izquierdo, lo que modifica las condiciones de frontera del problema provocando que una condición de frontera tipo Neumann se convierta en una condición tipo Dirichlet, obteniendo el siguiente sistema:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}\\u_t-u_{xx}=0 ,x\in\ (0,7), t&amp;gt;0\\u_x(0,t)=0, t&amp;lt;1\\u(0,t)=0, t&amp;gt;1\\u_x(7,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,7)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\\0, x≤5\\3, x&amp;gt;5\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se comprueba que está bien propuesto analizando la existencia de solución, la unicidad de ésta y su estabilidad,&lt;br /&gt;
&lt;br /&gt;
Obtenemos una aproximación numérica de la solución utilizando el '''método de diferencias finitas'''. &lt;br /&gt;
&lt;br /&gt;
El código en MATLAB del método sería:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:((length(t)-1)/7) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=((length(t)-1)/7):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica obtenida sería:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:t2li.png|marco|centro|Resolución del sistema de difusión de una sustancia contaminante por el método del trapecio.]]&lt;br /&gt;
&lt;br /&gt;
El valor estacionario de la concentración en el tubo será de cero, debido a que se ha colocado un limpiador en uno de sus extremos que irá eliminando el contaminante.&lt;br /&gt;
&lt;br /&gt;
Para averiguar el tiempo que tarda la concentración en alcanzar este otro estado estacionario con un error del 5% vamos a calcular la media cuadrática de las concentraciones y ver cual coincide con el 5% de 5.85/7.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann para t&amp;lt;=1&lt;br /&gt;
% u(0,t)=0 Condicion Dirichlet para t&amp;gt;1&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
 &lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=70;&lt;br /&gt;
q=1;&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
xint=h:h:L; % Vector de nodos interiores&lt;br /&gt;
 &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
 &lt;br /&gt;
% Matriz K para t&amp;lt;=1&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Matriz K para t&amp;gt;1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(N,N-1)=-2;&lt;br /&gt;
K2=K2/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
F2=zeros(N,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*5/7),3*ones(1,N*2/7)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
 &lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:(1/dt) &lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
U(1)=[];&lt;br /&gt;
for j=(1/dt):length(t)-1 &lt;br /&gt;
U=(eye(N)+dt*K2)\(U+dt*F2); % Euler Implicito&lt;br /&gt;
sol(j+1,:)= [0,U']; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(5.85/7);&lt;br /&gt;
% Buscamos para que tiempo se alcanza ese valor&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
dist=(sqrt(sum(sol(i,:).^2)/(N+1)));&lt;br /&gt;
if dist&amp;lt;limite&lt;br /&gt;
tiempo=(i-1)*dt&lt;br /&gt;
break&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
De esta forma el tiempo que obtenemos es 65.775&lt;br /&gt;
&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35199</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35199"/>
				<updated>2016-05-02T15:40:48Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Limpiador */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecioA14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicitoA14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo: GraficaEulerImplicitoA14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo: GraficaHeunA14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variables x.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[Archivo:ConservacionMasaA14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[Archivo:ConcentracionPuntoMedioA14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
&lt;br /&gt;
=Limpiador=&lt;br /&gt;
&lt;br /&gt;
Colocar un limpiador en el extremo izquierdo se traduce físicamente en que la concentración en x=0 es ahora nula. Por lo tanto el problema a resolver ahora es el siguiente:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}\\u_t-Du_{xx}=0\\u(0,t)=0 &amp;amp; t≥0\\u_x(L,t)=0 &amp;amp; t≥0\\u(x,0)=u_0 &amp;amp; xє(0,L)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Método de diferencias finitas ===&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}\\u'_n(t) + \frac {-u_n + 2u_n(t) + u_{n+1}(t)}{h^2}\\\frac {u_{n+1}(t)-u_{n+1}(t)}{2h}\\u_0(t)=0\\u_n(0)=u_0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resolución numérica ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Al cambiar las condiciones de contorno, el valor estacionario de  la concentración &amp;lt;math&amp;gt; u(x,t)&amp;lt;/math&amp;gt; es 0 es todos los puntos del tubo, lo que se traduce en que el contaminante desaparece por completo cuando el tiempo es muy grande.&lt;br /&gt;
&lt;br /&gt;
Será preciso calcular el error relativo en cada punto del tubo, obtener el valor absoluto y escoger el máximo valor.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;error \ relativo=\cfrac{valor \ real-valor \ estacionario}{valor \ estacionario}=5  &amp;lt;/math&amp;gt;%&lt;br /&gt;
&lt;br /&gt;
El tiempo que se tarda en alcanzar el valor del 5% es dependiente del valor que consideramos como estacionario, que en nuestro caso será la concentración correspondiente a T=100 segundos desde que se inicia el ensayo (elegimos este tiempo ya que es suficientemente pequeño el valor de la concentración &amp;lt;math&amp;gt; u(x,t)&amp;lt;/math&amp;gt;. El resultado que se obtiene de tiempo para alcanzar dicho error del 5% es 99.49 segundos, quedando reflejado a continuación: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Difusión de una sustancia contaminante con limpiador en el extremo de la&lt;br /&gt;
% izquierda&lt;br /&gt;
% u_t-u_xx=0, x en (0,L)&lt;br /&gt;
% u(0,t)=0&lt;br /&gt;
% u_x(L,t)=0&lt;br /&gt;
% u(0,t)=u0(x)&lt;br /&gt;
% ______________________________________&lt;br /&gt;
%&lt;br /&gt;
clear all&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=5;&lt;br /&gt;
T=100;&lt;br /&gt;
% Discretización espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
% Vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximación de -u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=(1/h^2)*K;&lt;br /&gt;
% Vector F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Vector u0&lt;br /&gt;
u0=[zeros(31,1);3*ones(20,1)];&lt;br /&gt;
% Discretización temporal&lt;br /&gt;
dt=h^2/2;&lt;br /&gt;
t=0:dt:T; %Vector de tiempos&lt;br /&gt;
% Método del trapecio&lt;br /&gt;
A=eye(N+1)+dt/2*K;&lt;br /&gt;
U(1,:)=u0';&lt;br /&gt;
uu=u0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    uu=A\((eye(N+1)-dt/2*K)*uu+dt*F);&lt;br /&gt;
    U(n+1,:)=uu';&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos&lt;br /&gt;
[xx,tt]= meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,U)&lt;br /&gt;
% Valor estacionario de la concentración en el tubo&lt;br /&gt;
est=U(length(t),:);&lt;br /&gt;
clear A F K L N T U dt h n t u0 uu x xx tt&lt;br /&gt;
% Repetimos el cálculo y lo paramos al alcanzar un error máximo del 5%&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=5;&lt;br /&gt;
T=100;&lt;br /&gt;
% Discretización espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
% Vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximación de -u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=(1/h^2)*K;&lt;br /&gt;
% Vector F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Vector u0&lt;br /&gt;
u0=[zeros(31,1);3*ones(20,1)];&lt;br /&gt;
% Discretización temporal&lt;br /&gt;
dt=h^2/2;&lt;br /&gt;
t=0:dt:T; %Vector de tiempos&lt;br /&gt;
% Método del trapecio&lt;br /&gt;
A=eye(N+1)+dt/2*K;&lt;br /&gt;
U(1,:)=u0';&lt;br /&gt;
uu=u0;&lt;br /&gt;
n=1;&lt;br /&gt;
while max((abs(uu'-est))./est)&amp;gt;0.05&lt;br /&gt;
    uu=A\((eye(N+1)-dt/2*K)*uu+dt*F);&lt;br /&gt;
    U(n+1,:)=uu';&lt;br /&gt;
    n=n+1;&lt;br /&gt;
end&lt;br /&gt;
% Tiempo invertido&lt;br /&gt;
a=size(U);&lt;br /&gt;
b=a(1);&lt;br /&gt;
tiempo=(b-1)*dt&lt;br /&gt;
&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35198</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35198"/>
				<updated>2016-05-02T15:40:08Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Limpiador */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecioA14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicitoA14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo: GraficaEulerImplicitoA14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo: GraficaHeunA14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variables x.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[Archivo:ConservacionMasaA14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[Archivo:ConcentracionPuntoMedioA14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
&lt;br /&gt;
=Limpiador=&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35197</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35197"/>
				<updated>2016-05-02T15:39:53Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecioA14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicitoA14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo: GraficaEulerImplicitoA14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo: GraficaHeunA14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variables x.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[Archivo:ConservacionMasaA14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[Archivo:ConcentracionPuntoMedioA14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;br /&gt;
&lt;br /&gt;
==Limpiador==&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35178</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=35178"/>
				<updated>2016-05-02T11:33:00Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Resolución por el método de Heun */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecioA14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicitoA14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo: GraficaEulerImplicitoA14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Heun tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo: GraficaHeunA14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variables x.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[Archivo:ConservacionMasaA14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[Archivo:ConcentracionPuntoMedioA14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=34845</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=34845"/>
				<updated>2016-04-30T16:17:37Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] | Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecioA14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicitoA14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo: GraficaEulerImplicitoA14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo: GraficaHeunA14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variables x.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[Archivo:ConservacionMasaA14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[Archivo:ConcentracionPuntoMedioA14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=34840</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=34840"/>
				<updated>2016-04-30T16:07:38Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: Carlos Nieto Egido trasladó la página Difusión de una sustancia contaminante en un tubo largo a Difusión de una sustancia contaminante en un tubo largo. A14&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] |&lt;br /&gt;
&lt;br /&gt;
Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecioA14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicitoA14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo: GraficaEulerImplicitoA14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo: GraficaHeunA14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variables x.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[Archivo:ConservacionMasaA14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[Archivo:ConcentracionPuntoMedioA14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo&amp;diff=34841</id>
		<title>Difusión de una sustancia contaminante en un tubo largo</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo&amp;diff=34841"/>
				<updated>2016-04-30T16:07:38Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: Carlos Nieto Egido trasladó la página Difusión de una sustancia contaminante en un tubo largo a Difusión de una sustancia contaminante en un tubo largo. A14&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECCIÓN [[Difusión de una sustancia contaminante en un tubo largo. A14]]&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=34838</id>
		<title>Difusión de una sustancia contaminante en un tubo largo. A14</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_en_un_tubo_largo._A14&amp;diff=34838"/>
				<updated>2016-04-30T16:05:26Z</updated>
		
		<summary type="html">&lt;p&gt;Carlos Nieto Egido: /* Conservación de la masa */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante en un tubo largo. Grupo A 14 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED15/16|Curso 2015-16]] |&lt;br /&gt;
&lt;br /&gt;
Guillermo Alfaya Franklin 1546&lt;br /&gt;
&lt;br /&gt;
Carlos Nieto Egido 1321&lt;br /&gt;
&lt;br /&gt;
Jesús Pedroche Serrano 1309&lt;br /&gt;
&lt;br /&gt;
Rubén Peláez Moreno 1584 }}&lt;br /&gt;
&lt;br /&gt;
=Resolución del problema=&lt;br /&gt;
Resolveremos el problema con el método de diferencias finitas. Este proporciona una aproximación de la solución numérica de un sistema continuo.&lt;br /&gt;
Partimos el intervalo [0,7] definiendo h como anchura de paso.&lt;br /&gt;
En segundo lugar, se aplica la ecuación diferencial a un nodo interior Xn, sustituyendo la derivada uxx por esta aproximación de segundo orden:&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
Teniendo en cuenta esta aproximación, y la notación &amp;lt;math&amp;gt; u_n(t) = u(x_n,t)&amp;lt;/math&amp;gt; , resulta el siguiente sistema de N+1 ecuaciones, obtenido al aplicar la ecuación diferencial para cada n:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)-u_{n+1}(t)}{h^2}=0\end{array}&lt;br /&gt;
n=1,2,3...,N-1 &lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta:&lt;br /&gt;
 &amp;lt;math&amp;gt;u'_n(t)\simeq\frac{u_{n+1}(t)-u_{n-1}(t)}{h2}&amp;lt;/math&amp;gt;&lt;br /&gt;
Aplicamos las condiciones de contorno:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}u'_0(t)=0\\u'_n(t)=0\end{array}&lt;br /&gt;
Resultando el sistema:&lt;br /&gt;
&lt;br /&gt;
\begin{array}{c}U'=-KU+F=0\\U(0)=U^0\end{array}&lt;br /&gt;
&lt;br /&gt;
La matriz &amp;lt;math&amp;gt;U^0&amp;lt;/math&amp;gt; incluye las condiciones iniciales.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que en el instante inicial se verifica  :&amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=\left\{\begin{matrix}\ 0, x≤3\\3, x&amp;gt;3\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método del trapecio==&lt;br /&gt;
&lt;br /&gt;
Se resuelve el sistema en primer lugar utilizando el '''método del trapecio''' tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Trapecio&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); % Trapecio&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
La gráfica representa la variación de la concentración en función del tiempo y de la posición.&lt;br /&gt;
[[Archivo:GraficaTrapecioA14.jpg|marco|centro|Solución por el método del trapecio]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler explícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Explicito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=U-dt*K*U; % EULER EXPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo:GraficaEulerExplicitoA14.jpg|marco|centro|Solución por el método de Euler explícito]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Euler implícito==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
 % Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo: GraficaEulerImplicitoA14.jpg ‎|marco|centro|Solución por el método de Euler Implícito.]]&lt;br /&gt;
&lt;br /&gt;
==Resolución por el método de Heun==&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/20&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
Se resuelve el sistema utilizando el Método de Euler Explícito tomando &amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,7]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;&lt;br /&gt;
El código en MATLAB es&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
% Heun&lt;br /&gt;
clear all&lt;br /&gt;
&lt;br /&gt;
% Datos del problema&lt;br /&gt;
L=7;&lt;br /&gt;
T=7;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=1/10;&lt;br /&gt;
N=70;&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
% Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/20; % Paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1); &lt;br /&gt;
% Guardamos la solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Voy hasta la longitud de t menos 1 porque ya conozco un valor&lt;br /&gt;
K1=K*U; % HEUN&lt;br /&gt;
K2=K*(U-dt*K*U);&lt;br /&gt;
U=U-dt*0.5*(K1+K2);&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos solucion&lt;br /&gt;
end&lt;br /&gt;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
xlabel('Coordenada x');&lt;br /&gt;
ylabel('Tiempo');&lt;br /&gt;
zlabel('Concentración de contaminante');&lt;br /&gt;
}}&lt;br /&gt;
[[Archivo: GraficaHeunA14.jpg ‎|marco|centro|Solución por el método de Heun]]&lt;br /&gt;
&lt;br /&gt;
=Conservación de la masa=&lt;br /&gt;
&lt;br /&gt;
Al no dejar pasar el tubo masa por sus paredes, ni ser generada masa en el interior del mismo, la cantidad de masa de contaminante se conserva.&lt;br /&gt;
Podemos deducir esto a partir de la ecuación u(x,t) integrando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con el siguiente código de MATLAB podemos calcular la cantidad de contaminante integrando la concentración en la variables x.&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
%Cantidad de contaminante con Euler Implícito&lt;br /&gt;
clear all&lt;br /&gt;
clf&lt;br /&gt;
% Datos&lt;br /&gt;
L=7;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.1;&lt;br /&gt;
N=L/h;&lt;br /&gt;
x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=h/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';&lt;br /&gt;
% Guardamos la solucion para t=0 en la matriz solucion&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0; % Inicializacion&lt;br /&gt;
% Calculamos U_n+1 a partir de U_n con un bucle for&lt;br /&gt;
for j=1:length(t)-1 % Hasta length(t)-1 porque ya tenemos el valor para t=0&lt;br /&gt;
U=(eye(N+1)+dt*K)\(U+dt*F); % EULER IMPLICITO&lt;br /&gt;
sol(j+1,:)= U'; % Guardamos la solucion&lt;br /&gt;
end&lt;br /&gt;
% Calculamos el area de la funcion para cada t (el area será la cantidad de contaminante)&lt;br /&gt;
contaminante=zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
f=sol(i,:);&lt;br /&gt;
area=trapz(x,f);&lt;br /&gt;
contaminante(i)=area;&lt;br /&gt;
end&lt;br /&gt;
% Obtenemos en la figura 1 la cantidad de contaminante con el tiempo,y en la&lt;br /&gt;
% figura 2 la concentracion en el punto medio de la barra a lo largo del tiempo&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(t,contaminante)&lt;br /&gt;
xlabel('Tiempo')&lt;br /&gt;
ylabel('Cantidad de contaminante')&lt;br /&gt;
punto_medio=(length(x)-1)/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio),'g')&lt;br /&gt;
}}&lt;br /&gt;
En la gráfica se aprecia que la masa total de contaminante dentro del tubo no cambia.&lt;br /&gt;
[[Archivo:ConservacionMasaA14.jpg ‎|marco|centro|Variación de la masa de contaminante a lo largo del tiempo]]&lt;br /&gt;
&lt;br /&gt;
La segunda gráfica muestra cómo cambia la concentración de contaminante en el punto medio del tubo.&lt;br /&gt;
[[Archivo:ConcentracionPuntoMedioA14.jpg ‎|marco|centro|Variación de la concentración de contaminante en el punto medio del tubo]]&lt;/div&gt;</summary>
		<author><name>Carlos Nieto Egido</name></author>	</entry>

	</feed>