<?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=PabloEscu</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=PabloEscu"/>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/wiki/Especial:Contribuciones/PabloEscu"/>
		<updated>2026-05-02T19:46:59Z</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_-_Grupo_11B&amp;diff=39627</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39627"/>
				<updated>2017-05-09T10:37:06Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: /* Estado estacionario. Conclusiones. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo &amp;lt;br /&amp;gt;Javier Carrillo&amp;lt;br /&amp;gt; Pablo Escudero &amp;lt;br /&amp;gt;Alejandro Gaitón&amp;lt;br /&amp;gt; Alejandro González&amp;lt;br /&amp;gt; Pablo Vidal }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
== Deducción de la ecuación. ==&lt;br /&gt;
En primer lugar, sabemos que para que se produzca difusión, es necesario que exista un gradiente de concentración o diferencia entre dos puntos del medio. Definimos la variable u como la concentración de contaminante en cada posición del tubo (que consideramos unidimensional y con sección despreciable, de longitud L=8m), la cual varía a lo largo del eje de abscisas (eje x), por lo que el intervalo en el que trabajaremos será [0,L]. Teniendo en cuenta la ley de Flick, sabemos que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x). Añadiendo la variable del tiempo, la concentración de contaminante en cada posición y en cada instante la expresaremos por u(x,t). La acumulación de partículas en cada instante que se produce por cada unidad de volumen S.dx (S es la sección) es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir uS-u’S=(du/dx).S.dx La acumulación de partículas por unidad de tiempo es S.dx.(du/dt) Si igualamos ambas expresiones y aplicamos la Ley de Flick nos queda d(D.(du/dx))/dx=du/dt. Obtenemos una ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión. Todo esto es válido si el coeficiente de difusión D no depende de la concentración.&lt;br /&gt;
== Planteamiento del sistema. ==&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Planteamiento.png|800px|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
== Método del trapecio. ==&lt;br /&gt;
Resolvemos por el método de las líneas la ecuación diferencial con dos condiciones Newman que vienen dadas por la ausencia de flujo en los extremos del tubo. Empleamos también la condición inicial: u(x,0) = 2, si x ≤ 4, 4, si x &amp;gt; 4 y resolvemos matricialmente el sistema de N+1 incógnitas.&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Datos&lt;br /&gt;
  L=8;&lt;br /&gt;
T=7;&lt;br /&gt;
 q=1;&lt;br /&gt;
 &lt;br /&gt;
 % Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &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&lt;br /&gt;
 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;
 &lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Resolución.png|400x400px|miniaturadeimagen|centro|Concentración/espacio-tiempo]]&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa. ==&lt;br /&gt;
Integramos en todos los instantes la cantidad de contaminante que hay en cada punto de la barra, lo que nos da la masa total de contaminante en cada instante. A partir de la ecuación u(x,t)se deduce que la masa total del contaminante se conserva a lo largo del tiempo. Dicha masa es '''23.550''', hallada según el programa:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=12;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&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))/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio))&lt;br /&gt;
}}&lt;br /&gt;
=== Evidencias ===&lt;br /&gt;
[[Archivo:Conservación_de_la_masa.png|500x500px|miniaturadeimagen|izquierda|&amp;quot;La masa es constante en el tiempo&amp;quot;]] [[Archivo:Cantidad en el punto medio.png|500x500px|miniaturadeimagen|derecha|&amp;quot;Variación de la masa en el punto medio&amp;quot;]]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aplicación de los métodos ==&lt;br /&gt;
Resolvemos por los métodos de Euler explícito, ímplicito y de Heun con las condiciones inicilales del ejercicio anterior.&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler explícito ===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Euler Explicito&lt;br /&gt;
  % Datos del problema&lt;br /&gt;
  L=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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);%tienes N+1 incognitas&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler implícito ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Heun ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
  N=round(L/h);&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=[2*ones(1,2+N*4/8),3*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Comparación de resultados ===&lt;br /&gt;
[[Archivo:Heun2.png|400px|miniaturadeimagen|derecha|Heun]]&lt;br /&gt;
[[Archivo:Euler_exp.png|400px|miniaturadeimagen|izquierda|Euler explícito]] [[Archivo:Euler_imp.png|400px|miniaturadeimagen|centro|Euler implícito]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                        &amp;lt;big&amp;gt;'''Observando las gráficas se aprecia que apenas hay diferencia.'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Concentración casi constante. Consecuencias. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la imagen apreciamos como a tiempos grandes (50 segundos) el contaminante se distribuye de forma homogénea estabilizándose en '''2.9438''', la cantidad de contaminante total dividida la longitud del tubo, 8.&lt;br /&gt;
[[Archivo:Regimen_estacionario.png|350x350px|miniaturadeimagen|izquierda|Régimen estacionario]]&lt;br /&gt;
&lt;br /&gt;
Por lo que podemos decir que el flujo es 0(muy próximo) y por la tanto la tanto la solución es homogénea siendo en cada instante y posición 2.9438.&lt;br /&gt;
La función de la solución sería u(x,t)= 2.9438 cuando el tiempo es grande.&lt;br /&gt;
Este estado estacionario se da cuando el flujo se aproxime a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para demostrar esta solución en régimen estacionario hemos usado los tiempos 0,1,2,10 y hemos calculado la media cuadrada entre el valor de estacionamiento y los diferentes valores de la concentración en cada posición:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Distancia para 0 segundos= 0.999499&amp;lt;br /&amp;gt;Distancia para 1 segundos = 0.776147&amp;lt;br /&amp;gt;Distancia para 2 segundos  = 0.657469&amp;lt;br /&amp;gt;Distancia para 10 segundos = 0.192049&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(L/h);&lt;br /&gt;
x=0:h:L; &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&lt;br /&gt;
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;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&lt;br /&gt;
dist0=(sqrt(sum((sol(1,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist1=(sqrt(sum((sol(28,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist2=(sqrt(sum((sol(56,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist10=(sqrt(sum((sol(267,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Estado estacionario. Conclusiones. ==&lt;br /&gt;
Hemos calculado el tiempo en el cual podemos considerar que se ha alcanzado el estado estacionario (es decir cuando la distancia que hemos calculado anteriormente es menor de un valor establecido). El valor establecido es el 5% de la concentración media, es decir '''0.147187''' .&amp;lt;br /&amp;gt;&lt;br /&gt;
El tiempo que nos ha dado es '''11.7375 segundos'''. &amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos el siguiente programa con tiempo 50.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=50;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
Hemos querido probar si el ∆x influía y para ello lo hemos multiplicado por 10. Hemos utilizado el anterior programa y solo hemos cambiado el ∆x .&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=400;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=1.5;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
x=[0,1.5,3,4.5,6,7.5,8]; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Y cambia el resultado ya que la distancia en ningún momento es menor del 5%, es decir de 0.147187. Por ello, aunque se podría suponer que no se alcanza el estado estacionario en realidad sí lo hace, pues lo que ocurre es que el error es mayor ya que la distancia que nos da es siempre constante e igual a 0.34375.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Aplicación de un limpiador ===&lt;br /&gt;
En el segundo 1 se sitúa en el extremo 0 un filtro que limpia dicha posición. Hasta ese instante el problema es idéntico a los anteriores, pero a partir de entonces solo la concentración será nula en el extremo inicial. El nuevo valor estacionario es 0 ya que se va eliminando contaminante.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Contaminante0.png|400x400px|miniaturadeimagen|izquierda|Se aprecia que en la izquierda la cantidad de contaminante es 0]]&lt;br /&gt;
[[Archivo:TiempoGrande.png|400x400px|miniaturadeimagen|centro|Cuando el tiempo es muy grande la concentración total desciende a 0]] &amp;lt;br /&amp;gt;&lt;br /&gt;
Para obtener ambos gráficos se ha utilizado el siguiente programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Además este estado estacionario (que es 0) se alcanzará con menos del 5%  de error en 78.1875 segundos.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos este programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=100;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39626</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39626"/>
				<updated>2017-05-09T10:33:57Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: /* Uso de un limpiador */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo &amp;lt;br /&amp;gt;Javier Carrillo&amp;lt;br /&amp;gt; Pablo Escudero &amp;lt;br /&amp;gt;Alejandro Gaitón&amp;lt;br /&amp;gt; Alejandro González&amp;lt;br /&amp;gt; Pablo Vidal }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
== Deducción de la ecuación. ==&lt;br /&gt;
En primer lugar, sabemos que para que se produzca difusión, es necesario que exista un gradiente de concentración o diferencia entre dos puntos del medio. Definimos la variable u como la concentración de contaminante en cada posición del tubo (que consideramos unidimensional y con sección despreciable, de longitud L=8m), la cual varía a lo largo del eje de abscisas (eje x), por lo que el intervalo en el que trabajaremos será [0,L]. Teniendo en cuenta la ley de Flick, sabemos que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x). Añadiendo la variable del tiempo, la concentración de contaminante en cada posición y en cada instante la expresaremos por u(x,t). La acumulación de partículas en cada instante que se produce por cada unidad de volumen S.dx (S es la sección) es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir uS-u’S=(du/dx).S.dx La acumulación de partículas por unidad de tiempo es S.dx.(du/dt) Si igualamos ambas expresiones y aplicamos la Ley de Flick nos queda d(D.(du/dx))/dx=du/dt. Obtenemos una ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión. Todo esto es válido si el coeficiente de difusión D no depende de la concentración.&lt;br /&gt;
== Planteamiento del sistema. ==&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Planteamiento.png|800px|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
== Método del trapecio. ==&lt;br /&gt;
Resolvemos por el método de las líneas la ecuación diferencial con dos condiciones Newman que vienen dadas por la ausencia de flujo en los extremos del tubo. Empleamos también la condición inicial: u(x,0) = 2, si x ≤ 4, 4, si x &amp;gt; 4 y resolvemos matricialmente el sistema de N+1 incógnitas.&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Datos&lt;br /&gt;
  L=8;&lt;br /&gt;
T=7;&lt;br /&gt;
 q=1;&lt;br /&gt;
 &lt;br /&gt;
 % Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &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&lt;br /&gt;
 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;
 &lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Resolución.png|400x400px|miniaturadeimagen|centro|Concentración/espacio-tiempo]]&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa. ==&lt;br /&gt;
Integramos en todos los instantes la cantidad de contaminante que hay en cada punto de la barra, lo que nos da la masa total de contaminante en cada instante. A partir de la ecuación u(x,t)se deduce que la masa total del contaminante se conserva a lo largo del tiempo. Dicha masa es '''23.550''', hallada según el programa:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=12;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&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))/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio))&lt;br /&gt;
}}&lt;br /&gt;
=== Evidencias ===&lt;br /&gt;
[[Archivo:Conservación_de_la_masa.png|500x500px|miniaturadeimagen|izquierda|&amp;quot;La masa es constante en el tiempo&amp;quot;]] [[Archivo:Cantidad en el punto medio.png|500x500px|miniaturadeimagen|derecha|&amp;quot;Variación de la masa en el punto medio&amp;quot;]]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aplicación de los métodos ==&lt;br /&gt;
Resolvemos por los métodos de Euler explícito, ímplicito y de Heun con las condiciones inicilales del ejercicio anterior.&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler explícito ===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Euler Explicito&lt;br /&gt;
  % Datos del problema&lt;br /&gt;
  L=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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);%tienes N+1 incognitas&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler implícito ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Heun ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
  N=round(L/h);&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=[2*ones(1,2+N*4/8),3*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Comparación de resultados ===&lt;br /&gt;
[[Archivo:Heun2.png|400px|miniaturadeimagen|derecha|Heun]]&lt;br /&gt;
[[Archivo:Euler_exp.png|400px|miniaturadeimagen|izquierda|Euler explícito]] [[Archivo:Euler_imp.png|400px|miniaturadeimagen|centro|Euler implícito]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                        &amp;lt;big&amp;gt;'''Observando las gráficas se aprecia que apenas hay diferencia.'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Concentración casi constante. Consecuencias. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la imagen apreciamos como a tiempos grandes (50 segundos) el contaminante se distribuye de forma homogénea estabilizándose en '''2.9438''', la cantidad de contaminante total dividida la longitud del tubo, 8.&lt;br /&gt;
[[Archivo:Regimen_estacionario.png|350x350px|miniaturadeimagen|izquierda|Régimen estacionario]]&lt;br /&gt;
&lt;br /&gt;
Por lo que podemos decir que el flujo es 0(muy próximo) y por la tanto la tanto la solución es homogénea siendo en cada instante y posición 2.9438.&lt;br /&gt;
La función de la solución sería u(x,t)= 2.9438 cuando el tiempo es grande.&lt;br /&gt;
Este estado estacionario se da cuando el flujo se aproxime a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para demostrar esta solución en régimen estacionario hemos usado los tiempos 0,1,2,10 y hemos calculado la media cuadrada entre el valor de estacionamiento y los diferentes valores de la concentración en cada posición:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Distancia para 0 segundos= 0.999499&amp;lt;br /&amp;gt;Distancia para 1 segundos = 0.776147&amp;lt;br /&amp;gt;Distancia para 2 segundos  = 0.657469&amp;lt;br /&amp;gt;Distancia para 10 segundos = 0.192049&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(L/h);&lt;br /&gt;
x=0:h:L; &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&lt;br /&gt;
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;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&lt;br /&gt;
dist0=(sqrt(sum((sol(1,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist1=(sqrt(sum((sol(28,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist2=(sqrt(sum((sol(56,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist10=(sqrt(sum((sol(267,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Estado estacionario. Conclusiones. ==&lt;br /&gt;
Hemos calculado el tiempo en el cual podemos considerar que se ha alcanzado el estado estacionario (es decir cuando la distancia que hemos calculado anteriormente es menor de un valor establecido). El valor establecido es el 5% de la concentración media, es decir '''0.147187''' .&amp;lt;br /&amp;gt;&lt;br /&gt;
El tiempo que nos ha dado es '''11.7375 segundos'''. &amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos el siguiente programa con tiempo 50.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=50;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
Hemos querido probar si el ∆x influía y para ello lo hemos multiplicado por 10. Hemos utilizado el anterior programa y solo hemos cambiado el ∆x .&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=400;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=1.5;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
x=[0,1.5,3,4.5,6,7.5,8]; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Y cambia el resultado ya que la distancia en ningún momento es menor del 5%, es decir de 0.147187. Por ello, aunque se podría suponer que no se alcanza el estado estacionario en realidad sí lo hace, pues lo que ocurre es que el error es mayor ya que la distancia que nos da es siempre constante e igual a 0.34375.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
En el segundo 1 se sitúa en el extremo 0 un filtro que limpia dicha posición. Hasta ese instante el problema es idéntico a los anteriores, pero a partir de entonces slo la concentración será nula en el extremo inicial. El nuevo valor estacionario es 0 ya que se va eliminando contaminante.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Contaminante0.png|400x400px|miniaturadeimagen|izquierda|Se aprecia que en la izquierda la cantidad de contaminante es 0]]&lt;br /&gt;
[[Archivo:TiempoGrande.png|400x400px|miniaturadeimagen|centro|Cuando el tiempo es muy grande la concentración total desciende a 0]] &amp;lt;br /&amp;gt;&lt;br /&gt;
Para obtener ambos gráficos se ha utilizado el siguiente programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Además este estado estacionario (que es 0) se alcanzará con menos del 5%  de error en 78.1875 segundos.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos este programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=100;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39625</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39625"/>
				<updated>2017-05-09T10:33:16Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: /* Estado estacionario. Conclusiones. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo &amp;lt;br /&amp;gt;Javier Carrillo&amp;lt;br /&amp;gt; Pablo Escudero &amp;lt;br /&amp;gt;Alejandro Gaitón&amp;lt;br /&amp;gt; Alejandro González&amp;lt;br /&amp;gt; Pablo Vidal }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
== Deducción de la ecuación. ==&lt;br /&gt;
En primer lugar, sabemos que para que se produzca difusión, es necesario que exista un gradiente de concentración o diferencia entre dos puntos del medio. Definimos la variable u como la concentración de contaminante en cada posición del tubo (que consideramos unidimensional y con sección despreciable, de longitud L=8m), la cual varía a lo largo del eje de abscisas (eje x), por lo que el intervalo en el que trabajaremos será [0,L]. Teniendo en cuenta la ley de Flick, sabemos que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x). Añadiendo la variable del tiempo, la concentración de contaminante en cada posición y en cada instante la expresaremos por u(x,t). La acumulación de partículas en cada instante que se produce por cada unidad de volumen S.dx (S es la sección) es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir uS-u’S=(du/dx).S.dx La acumulación de partículas por unidad de tiempo es S.dx.(du/dt) Si igualamos ambas expresiones y aplicamos la Ley de Flick nos queda d(D.(du/dx))/dx=du/dt. Obtenemos una ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión. Todo esto es válido si el coeficiente de difusión D no depende de la concentración.&lt;br /&gt;
== Planteamiento del sistema. ==&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Planteamiento.png|800px|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
== Método del trapecio. ==&lt;br /&gt;
Resolvemos por el método de las líneas la ecuación diferencial con dos condiciones Newman que vienen dadas por la ausencia de flujo en los extremos del tubo. Empleamos también la condición inicial: u(x,0) = 2, si x ≤ 4, 4, si x &amp;gt; 4 y resolvemos matricialmente el sistema de N+1 incógnitas.&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Datos&lt;br /&gt;
  L=8;&lt;br /&gt;
T=7;&lt;br /&gt;
 q=1;&lt;br /&gt;
 &lt;br /&gt;
 % Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &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&lt;br /&gt;
 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;
 &lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Resolución.png|400x400px|miniaturadeimagen|centro|Concentración/espacio-tiempo]]&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa. ==&lt;br /&gt;
Integramos en todos los instantes la cantidad de contaminante que hay en cada punto de la barra, lo que nos da la masa total de contaminante en cada instante. A partir de la ecuación u(x,t)se deduce que la masa total del contaminante se conserva a lo largo del tiempo. Dicha masa es '''23.550''', hallada según el programa:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=12;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&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))/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio))&lt;br /&gt;
}}&lt;br /&gt;
=== Evidencias ===&lt;br /&gt;
[[Archivo:Conservación_de_la_masa.png|500x500px|miniaturadeimagen|izquierda|&amp;quot;La masa es constante en el tiempo&amp;quot;]] [[Archivo:Cantidad en el punto medio.png|500x500px|miniaturadeimagen|derecha|&amp;quot;Variación de la masa en el punto medio&amp;quot;]]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aplicación de los métodos ==&lt;br /&gt;
Resolvemos por los métodos de Euler explícito, ímplicito y de Heun con las condiciones inicilales del ejercicio anterior.&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler explícito ===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Euler Explicito&lt;br /&gt;
  % Datos del problema&lt;br /&gt;
  L=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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);%tienes N+1 incognitas&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler implícito ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Heun ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
  N=round(L/h);&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=[2*ones(1,2+N*4/8),3*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Comparación de resultados ===&lt;br /&gt;
[[Archivo:Heun2.png|400px|miniaturadeimagen|derecha|Heun]]&lt;br /&gt;
[[Archivo:Euler_exp.png|400px|miniaturadeimagen|izquierda|Euler explícito]] [[Archivo:Euler_imp.png|400px|miniaturadeimagen|centro|Euler implícito]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                        &amp;lt;big&amp;gt;'''Observando las gráficas se aprecia que apenas hay diferencia.'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Concentración casi constante. Consecuencias. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la imagen apreciamos como a tiempos grandes (50 segundos) el contaminante se distribuye de forma homogénea estabilizándose en '''2.9438''', la cantidad de contaminante total dividida la longitud del tubo, 8.&lt;br /&gt;
[[Archivo:Regimen_estacionario.png|350x350px|miniaturadeimagen|izquierda|Régimen estacionario]]&lt;br /&gt;
&lt;br /&gt;
Por lo que podemos decir que el flujo es 0(muy próximo) y por la tanto la tanto la solución es homogénea siendo en cada instante y posición 2.9438.&lt;br /&gt;
La función de la solución sería u(x,t)= 2.9438 cuando el tiempo es grande.&lt;br /&gt;
Este estado estacionario se da cuando el flujo se aproxime a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para demostrar esta solución en régimen estacionario hemos usado los tiempos 0,1,2,10 y hemos calculado la media cuadrada entre el valor de estacionamiento y los diferentes valores de la concentración en cada posición:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Distancia para 0 segundos= 0.999499&amp;lt;br /&amp;gt;Distancia para 1 segundos = 0.776147&amp;lt;br /&amp;gt;Distancia para 2 segundos  = 0.657469&amp;lt;br /&amp;gt;Distancia para 10 segundos = 0.192049&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(L/h);&lt;br /&gt;
x=0:h:L; &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&lt;br /&gt;
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;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&lt;br /&gt;
dist0=(sqrt(sum((sol(1,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist1=(sqrt(sum((sol(28,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist2=(sqrt(sum((sol(56,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist10=(sqrt(sum((sol(267,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Estado estacionario. Conclusiones. ==&lt;br /&gt;
Hemos calculado el tiempo en el cual podemos considerar que se ha alcanzado el estado estacionario (es decir cuando la distancia que hemos calculado anteriormente es menor de un valor establecido). El valor establecido es el 5% de la concentración media, es decir '''0.147187''' .&amp;lt;br /&amp;gt;&lt;br /&gt;
El tiempo que nos ha dado es '''11.7375 segundos'''. &amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos el siguiente programa con tiempo 50.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=50;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
=== Uso de un limpiador ===&lt;br /&gt;
Hemos querido probar si el ∆x influía y para ello lo hemos multiplicado por 10. Hemos utilizado el anterior programa y solo hemos cambiado el ∆x .&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=400;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=1.5;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
x=[0,1.5,3,4.5,6,7.5,8]; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Y cambia el resultado ya que la distancia en ningún momento es menor del 5%, es decir de 0.147187. Por ello, aunque se podría suponer que no se alcanza el estado estacionario en realidad sí lo hace, pues lo que ocurre es que el error es mayor ya que la distancia que nos da es siempre constante e igual a 0.34375.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
En el segundo 1 se sitúa en el extremo 0 un filtro que limpia dicha posición. Hasta ese instante el problema es idéntico a los anteriores, pero a partir de entonces slo la concentración será nula en el extremo inicial. El nuevo valor estacionario es 0 ya que se va eliminando contaminante.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Contaminante0.png|400x400px|miniaturadeimagen|izquierda|Se aprecia que en la izquierda la cantidad de contaminante es 0]]&lt;br /&gt;
[[Archivo:TiempoGrande.png|400x400px|miniaturadeimagen|centro|Cuando el tiempo es muy grande la concentración total desciende a 0]] &amp;lt;br /&amp;gt;&lt;br /&gt;
Para obtener ambos gráficos se ha utilizado el siguiente programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Además este estado estacionario (que es 0) se alcanzará con menos del 5%  de error en 78.1875 segundos.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos este programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=100;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39624</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39624"/>
				<updated>2017-05-09T10:31:39Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: /* Uso de un limpiador de contaminante. Conclusiones. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo &amp;lt;br /&amp;gt;Javier Carrillo&amp;lt;br /&amp;gt; Pablo Escudero &amp;lt;br /&amp;gt;Alejandro Gaitón&amp;lt;br /&amp;gt; Alejandro González&amp;lt;br /&amp;gt; Pablo Vidal }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
== Deducción de la ecuación. ==&lt;br /&gt;
En primer lugar, sabemos que para que se produzca difusión, es necesario que exista un gradiente de concentración o diferencia entre dos puntos del medio. Definimos la variable u como la concentración de contaminante en cada posición del tubo (que consideramos unidimensional y con sección despreciable, de longitud L=8m), la cual varía a lo largo del eje de abscisas (eje x), por lo que el intervalo en el que trabajaremos será [0,L]. Teniendo en cuenta la ley de Flick, sabemos que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x). Añadiendo la variable del tiempo, la concentración de contaminante en cada posición y en cada instante la expresaremos por u(x,t). La acumulación de partículas en cada instante que se produce por cada unidad de volumen S.dx (S es la sección) es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir uS-u’S=(du/dx).S.dx La acumulación de partículas por unidad de tiempo es S.dx.(du/dt) Si igualamos ambas expresiones y aplicamos la Ley de Flick nos queda d(D.(du/dx))/dx=du/dt. Obtenemos una ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión. Todo esto es válido si el coeficiente de difusión D no depende de la concentración.&lt;br /&gt;
== Planteamiento del sistema. ==&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Planteamiento.png|800px|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
== Método del trapecio. ==&lt;br /&gt;
Resolvemos por el método de las líneas la ecuación diferencial con dos condiciones Newman que vienen dadas por la ausencia de flujo en los extremos del tubo. Empleamos también la condición inicial: u(x,0) = 2, si x ≤ 4, 4, si x &amp;gt; 4 y resolvemos matricialmente el sistema de N+1 incógnitas.&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Datos&lt;br /&gt;
  L=8;&lt;br /&gt;
T=7;&lt;br /&gt;
 q=1;&lt;br /&gt;
 &lt;br /&gt;
 % Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &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&lt;br /&gt;
 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;
 &lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Resolución.png|400x400px|miniaturadeimagen|centro|Concentración/espacio-tiempo]]&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa. ==&lt;br /&gt;
Integramos en todos los instantes la cantidad de contaminante que hay en cada punto de la barra, lo que nos da la masa total de contaminante en cada instante. A partir de la ecuación u(x,t)se deduce que la masa total del contaminante se conserva a lo largo del tiempo. Dicha masa es '''23.550''', hallada según el programa:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=12;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&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))/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio))&lt;br /&gt;
}}&lt;br /&gt;
=== Evidencias ===&lt;br /&gt;
[[Archivo:Conservación_de_la_masa.png|500x500px|miniaturadeimagen|izquierda|&amp;quot;La masa es constante en el tiempo&amp;quot;]] [[Archivo:Cantidad en el punto medio.png|500x500px|miniaturadeimagen|derecha|&amp;quot;Variación de la masa en el punto medio&amp;quot;]]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aplicación de los métodos ==&lt;br /&gt;
Resolvemos por los métodos de Euler explícito, ímplicito y de Heun con las condiciones inicilales del ejercicio anterior.&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler explícito ===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Euler Explicito&lt;br /&gt;
  % Datos del problema&lt;br /&gt;
  L=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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);%tienes N+1 incognitas&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler implícito ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Heun ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
  N=round(L/h);&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=[2*ones(1,2+N*4/8),3*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Comparación de resultados ===&lt;br /&gt;
[[Archivo:Heun2.png|400px|miniaturadeimagen|derecha|Heun]]&lt;br /&gt;
[[Archivo:Euler_exp.png|400px|miniaturadeimagen|izquierda|Euler explícito]] [[Archivo:Euler_imp.png|400px|miniaturadeimagen|centro|Euler implícito]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                        &amp;lt;big&amp;gt;'''Observando las gráficas se aprecia que apenas hay diferencia.'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Concentración casi constante. Consecuencias. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la imagen apreciamos como a tiempos grandes (50 segundos) el contaminante se distribuye de forma homogénea estabilizándose en '''2.9438''', la cantidad de contaminante total dividida la longitud del tubo, 8.&lt;br /&gt;
[[Archivo:Regimen_estacionario.png|350x350px|miniaturadeimagen|izquierda|Régimen estacionario]]&lt;br /&gt;
&lt;br /&gt;
Por lo que podemos decir que el flujo es 0(muy próximo) y por la tanto la tanto la solución es homogénea siendo en cada instante y posición 2.9438.&lt;br /&gt;
La función de la solución sería u(x,t)= 2.9438 cuando el tiempo es grande.&lt;br /&gt;
Este estado estacionario se da cuando el flujo se aproxime a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para demostrar esta solución en régimen estacionario hemos usado los tiempos 0,1,2,10 y hemos calculado la media cuadrada entre el valor de estacionamiento y los diferentes valores de la concentración en cada posición:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Distancia para 0 segundos= 0.999499&amp;lt;br /&amp;gt;Distancia para 1 segundos = 0.776147&amp;lt;br /&amp;gt;Distancia para 2 segundos  = 0.657469&amp;lt;br /&amp;gt;Distancia para 10 segundos = 0.192049&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(L/h);&lt;br /&gt;
x=0:h:L; &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&lt;br /&gt;
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;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&lt;br /&gt;
dist0=(sqrt(sum((sol(1,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist1=(sqrt(sum((sol(28,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist2=(sqrt(sum((sol(56,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist10=(sqrt(sum((sol(267,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Estado estacionario. Conclusiones. ==&lt;br /&gt;
Hemos calculado el tiempo en el cual podemos considerar que se ha alcanzado el estado estacionario (es decir cuando la distancia que hemos calculado anteriormente es menor de un valor establecido). El valor establecido es el 5% de la concentración media, es decir '''0.147187''' .&amp;lt;br /&amp;gt;&lt;br /&gt;
El tiempo que nos ha dado es '''11.7375 segundos'''. &amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos el siguiente programa con tiempo 50.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=50;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
Hemos querido probar si el ∆x influía y para ello lo hemos multiplicado por 10. Hemos utilizado el anterior programa y solo hemos cambiado el ∆x .&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=400;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=1.5;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
x=[0,1.5,3,4.5,6,7.5,8]; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Y cambia el resultado ya que la distancia en ningún momento es menor del 5%, es decir de 0.147187. Por ello, aunque se podría suponer que no se alcanza el estado estacionario en realidad sí lo hace, pues lo que ocurre es que el error es mayor ya que la distancia que nos da es siempre constante e igual a 0.34375.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
En el segundo 1 se sitúa en el extremo 0 un filtro que limpia dicha posición. Hasta ese instante el problema es idéntico a los anteriores, pero a partir de entonces slo la concentración será nula en el extremo inicial. El nuevo valor estacionario es 0 ya que se va eliminando contaminante.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Contaminante0.png|400x400px|miniaturadeimagen|izquierda|Se aprecia que en la izquierda la cantidad de contaminante es 0]]&lt;br /&gt;
[[Archivo:TiempoGrande.png|400x400px|miniaturadeimagen|centro|Cuando el tiempo es muy grande la concentración total desciende a 0]] &amp;lt;br /&amp;gt;&lt;br /&gt;
Para obtener ambos gráficos se ha utilizado el siguiente programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Además este estado estacionario (que es 0) se alcanzará con menos del 5%  de error en 78.1875 segundos.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos este programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=100;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39623</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39623"/>
				<updated>2017-05-09T10:30:13Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: /* Uso de un limpiador de contaminante. Conclusiones. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo &amp;lt;br /&amp;gt;Javier Carrillo&amp;lt;br /&amp;gt; Pablo Escudero &amp;lt;br /&amp;gt;Alejandro Gaitón&amp;lt;br /&amp;gt; Alejandro González&amp;lt;br /&amp;gt; Pablo Vidal }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
== Deducción de la ecuación. ==&lt;br /&gt;
En primer lugar, sabemos que para que se produzca difusión, es necesario que exista un gradiente de concentración o diferencia entre dos puntos del medio. Definimos la variable u como la concentración de contaminante en cada posición del tubo (que consideramos unidimensional y con sección despreciable, de longitud L=8m), la cual varía a lo largo del eje de abscisas (eje x), por lo que el intervalo en el que trabajaremos será [0,L]. Teniendo en cuenta la ley de Flick, sabemos que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x). Añadiendo la variable del tiempo, la concentración de contaminante en cada posición y en cada instante la expresaremos por u(x,t). La acumulación de partículas en cada instante que se produce por cada unidad de volumen S.dx (S es la sección) es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir uS-u’S=(du/dx).S.dx La acumulación de partículas por unidad de tiempo es S.dx.(du/dt) Si igualamos ambas expresiones y aplicamos la Ley de Flick nos queda d(D.(du/dx))/dx=du/dt. Obtenemos una ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión. Todo esto es válido si el coeficiente de difusión D no depende de la concentración.&lt;br /&gt;
== Planteamiento del sistema. ==&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Planteamiento.png|800px|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
== Método del trapecio. ==&lt;br /&gt;
Resolvemos por el método de las líneas la ecuación diferencial con dos condiciones Newman que vienen dadas por la ausencia de flujo en los extremos del tubo. Empleamos también la condición inicial: u(x,0) = 2, si x ≤ 4, 4, si x &amp;gt; 4 y resolvemos matricialmente el sistema de N+1 incógnitas.&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Datos&lt;br /&gt;
  L=8;&lt;br /&gt;
T=7;&lt;br /&gt;
 q=1;&lt;br /&gt;
 &lt;br /&gt;
 % Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &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&lt;br /&gt;
 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;
 &lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Resolución.png|400x400px|miniaturadeimagen|centro|Concentración/espacio-tiempo]]&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa. ==&lt;br /&gt;
Integramos en todos los instantes la cantidad de contaminante que hay en cada punto de la barra, lo que nos da la masa total de contaminante en cada instante. A partir de la ecuación u(x,t)se deduce que la masa total del contaminante se conserva a lo largo del tiempo. Dicha masa es '''23.550''', hallada según el programa:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=12;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&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))/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio))&lt;br /&gt;
}}&lt;br /&gt;
=== Evidencias ===&lt;br /&gt;
[[Archivo:Conservación_de_la_masa.png|500x500px|miniaturadeimagen|izquierda|&amp;quot;La masa es constante en el tiempo&amp;quot;]] [[Archivo:Cantidad en el punto medio.png|500x500px|miniaturadeimagen|derecha|&amp;quot;Variación de la masa en el punto medio&amp;quot;]]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aplicación de los métodos ==&lt;br /&gt;
Resolvemos por los métodos de Euler explícito, ímplicito y de Heun con las condiciones inicilales del ejercicio anterior.&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler explícito ===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Euler Explicito&lt;br /&gt;
  % Datos del problema&lt;br /&gt;
  L=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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);%tienes N+1 incognitas&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler implícito ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Heun ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
  N=round(L/h);&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=[2*ones(1,2+N*4/8),3*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Comparación de resultados ===&lt;br /&gt;
[[Archivo:Heun2.png|400px|miniaturadeimagen|derecha|Heun]]&lt;br /&gt;
[[Archivo:Euler_exp.png|400px|miniaturadeimagen|izquierda|Euler explícito]] [[Archivo:Euler_imp.png|400px|miniaturadeimagen|centro|Euler implícito]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                        &amp;lt;big&amp;gt;'''Observando las gráficas se aprecia que apenas hay diferencia.'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Concentración casi constante. Consecuencias. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la imagen apreciamos como a tiempos grandes (50 segundos) el contaminante se distribuye de forma homogénea estabilizándose en '''2.9438''', la cantidad de contaminante total dividida la longitud del tubo, 8.&lt;br /&gt;
[[Archivo:Regimen_estacionario.png|350x350px|miniaturadeimagen|izquierda|Régimen estacionario]]&lt;br /&gt;
&lt;br /&gt;
Por lo que podemos decir que el flujo es 0(muy próximo) y por la tanto la tanto la solución es homogénea siendo en cada instante y posición 2.9438.&lt;br /&gt;
La función de la solución sería u(x,t)= 2.9438 cuando el tiempo es grande.&lt;br /&gt;
Este estado estacionario se da cuando el flujo se aproxime a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para demostrar esta solución en régimen estacionario hemos usado los tiempos 0,1,2,10 y hemos calculado la media cuadrada entre el valor de estacionamiento y los diferentes valores de la concentración en cada posición:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Distancia para 0 segundos= 0.999499&amp;lt;br /&amp;gt;Distancia para 1 segundos = 0.776147&amp;lt;br /&amp;gt;Distancia para 2 segundos  = 0.657469&amp;lt;br /&amp;gt;Distancia para 10 segundos = 0.192049&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(L/h);&lt;br /&gt;
x=0:h:L; &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&lt;br /&gt;
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;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&lt;br /&gt;
dist0=(sqrt(sum((sol(1,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist1=(sqrt(sum((sol(28,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist2=(sqrt(sum((sol(56,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist10=(sqrt(sum((sol(267,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Uso de un limpiador de contaminante. Conclusiones. ==&lt;br /&gt;
Hemos calculado el tiempo en el cual podemos considerar que se ha alcanzado el estado estacionario (es decir cuando la distancia que hemos calculado anteriormente es menor de un valor establecido). El valor establecido es el 5% de la concentración media, es decir '''0.147187''' .&amp;lt;br /&amp;gt;&lt;br /&gt;
El tiempo que nos ha dado es '''11.7375 segundos'''. &amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos el siguiente programa con tiempo 50.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=50;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
Hemos querido probar si el ∆x influía y para ello lo hemos multiplicado por 10. Hemos utilizado el anterior programa y solo hemos cambiado el ∆x .&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=400;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=1.5;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
x=[0,1.5,3,4.5,6,7.5,8]; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Y cambia el resultado ya que la distancia en ningún momento es menor del 5%, es decir de 0.147187. Por ello, aunque se podría suponer que no se alcanza el estado estacionario en realidad sí lo hace, pues lo que ocurre es que el error es mayor ya que la distancia que nos da es siempre constante e igual a 0.34375.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
En el segundo 1 se sitúa en el extremo 0 un filtro que limpia dicha posición. Hasta ese instante el problema es idéntico a los anteriores, pero a partir de entonces slo la concentración será nula en el extremo inicial. El nuevo valor estacionario es 0 ya que se va eliminando contaminante.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Contaminante0.png|400x400px|miniaturadeimagen|izquierda|Se aprecia que en la izquierda la cantidad de contaminante es 0]]&lt;br /&gt;
[[Archivo:TiempoGrande.png|400x400px|miniaturadeimagen|centro|Cuando el tiempo es muy grande la concentración total desciende a 0]] &amp;lt;br /&amp;gt;&lt;br /&gt;
Para obtener ambos gráficos se ha utilizado el siguiente programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Además este estado estacionario (que es 0) se alcanzará con menos del 5%  de error en 78.1875 segundos.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos este programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=100;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39622</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39622"/>
				<updated>2017-05-09T10:27:22Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: /* Concentración casi constante. Consecuencias. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo &amp;lt;br /&amp;gt;Javier Carrillo&amp;lt;br /&amp;gt; Pablo Escudero &amp;lt;br /&amp;gt;Alejandro Gaitón&amp;lt;br /&amp;gt; Alejandro González&amp;lt;br /&amp;gt; Pablo Vidal }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
== Deducción de la ecuación. ==&lt;br /&gt;
En primer lugar, sabemos que para que se produzca difusión, es necesario que exista un gradiente de concentración o diferencia entre dos puntos del medio. Definimos la variable u como la concentración de contaminante en cada posición del tubo (que consideramos unidimensional y con sección despreciable, de longitud L=8m), la cual varía a lo largo del eje de abscisas (eje x), por lo que el intervalo en el que trabajaremos será [0,L]. Teniendo en cuenta la ley de Flick, sabemos que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x). Añadiendo la variable del tiempo, la concentración de contaminante en cada posición y en cada instante la expresaremos por u(x,t). La acumulación de partículas en cada instante que se produce por cada unidad de volumen S.dx (S es la sección) es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir uS-u’S=(du/dx).S.dx La acumulación de partículas por unidad de tiempo es S.dx.(du/dt) Si igualamos ambas expresiones y aplicamos la Ley de Flick nos queda d(D.(du/dx))/dx=du/dt. Obtenemos una ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión. Todo esto es válido si el coeficiente de difusión D no depende de la concentración.&lt;br /&gt;
== Planteamiento del sistema. ==&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Planteamiento.png|800px|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
== Método del trapecio. ==&lt;br /&gt;
Resolvemos por el método de las líneas la ecuación diferencial con dos condiciones Newman que vienen dadas por la ausencia de flujo en los extremos del tubo. Empleamos también la condición inicial: u(x,0) = 2, si x ≤ 4, 4, si x &amp;gt; 4 y resolvemos matricialmente el sistema de N+1 incógnitas.&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Datos&lt;br /&gt;
  L=8;&lt;br /&gt;
T=7;&lt;br /&gt;
 q=1;&lt;br /&gt;
 &lt;br /&gt;
 % Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &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&lt;br /&gt;
 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;
 &lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Resolución.png|400x400px|miniaturadeimagen|centro|Concentración/espacio-tiempo]]&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa. ==&lt;br /&gt;
Integramos en todos los instantes la cantidad de contaminante que hay en cada punto de la barra, lo que nos da la masa total de contaminante en cada instante. A partir de la ecuación u(x,t)se deduce que la masa total del contaminante se conserva a lo largo del tiempo. Dicha masa es '''23.550''', hallada según el programa:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=12;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&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))/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio))&lt;br /&gt;
}}&lt;br /&gt;
=== Evidencias ===&lt;br /&gt;
[[Archivo:Conservación_de_la_masa.png|500x500px|miniaturadeimagen|izquierda|&amp;quot;La masa es constante en el tiempo&amp;quot;]] [[Archivo:Cantidad en el punto medio.png|500x500px|miniaturadeimagen|derecha|&amp;quot;Variación de la masa en el punto medio&amp;quot;]]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aplicación de los métodos ==&lt;br /&gt;
Resolvemos por los métodos de Euler explícito, ímplicito y de Heun con las condiciones inicilales del ejercicio anterior.&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler explícito ===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Euler Explicito&lt;br /&gt;
  % Datos del problema&lt;br /&gt;
  L=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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);%tienes N+1 incognitas&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler implícito ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Heun ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
  N=round(L/h);&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=[2*ones(1,2+N*4/8),3*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Comparación de resultados ===&lt;br /&gt;
[[Archivo:Heun2.png|400px|miniaturadeimagen|derecha|Heun]]&lt;br /&gt;
[[Archivo:Euler_exp.png|400px|miniaturadeimagen|izquierda|Euler explícito]] [[Archivo:Euler_imp.png|400px|miniaturadeimagen|centro|Euler implícito]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                        &amp;lt;big&amp;gt;'''Observando las gráficas se aprecia que apenas hay diferencia.'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Concentración casi constante. Consecuencias. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la imagen apreciamos como a tiempos grandes (50 segundos) el contaminante se distribuye de forma homogénea estabilizándose en '''2.9438''', la cantidad de contaminante total dividida la longitud del tubo, 8.&lt;br /&gt;
[[Archivo:Regimen_estacionario.png|350x350px|miniaturadeimagen|izquierda|Régimen estacionario]]&lt;br /&gt;
&lt;br /&gt;
Por lo que podemos decir que el flujo es 0(muy próximo) y por la tanto la tanto la solución es homogénea siendo en cada instante y posición 2.9438.&lt;br /&gt;
La función de la solución sería u(x,t)= 2.9438 cuando el tiempo es grande.&lt;br /&gt;
Este estado estacionario se da cuando el flujo se aproxime a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para demostrar esta solución en régimen estacionario hemos usado los tiempos 0,1,2,10 y hemos calculado la media cuadrada entre el valor de estacionamiento y los diferentes valores de la concentración en cada posición:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Distancia para 0 segundos= 0.999499&amp;lt;br /&amp;gt;Distancia para 1 segundos = 0.776147&amp;lt;br /&amp;gt;Distancia para 2 segundos  = 0.657469&amp;lt;br /&amp;gt;Distancia para 10 segundos = 0.192049&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(L/h);&lt;br /&gt;
x=0:h:L; &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&lt;br /&gt;
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;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&lt;br /&gt;
dist0=(sqrt(sum((sol(1,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist1=(sqrt(sum((sol(28,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist2=(sqrt(sum((sol(56,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist10=(sqrt(sum((sol(267,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Uso de un limpiador de contaminante. Conclusiones. ==&lt;br /&gt;
Hemos calculado el tiempo en el cual podemos considerar que se ha alcanzado el estado estacionario (es decir cuando la distancia que hemos calculado anteriormente es menor de un valor establecido). El valor establecido es el 5% de la concentración media, es decir que este valor es 0.147187.&amp;lt;br /&amp;gt;&lt;br /&gt;
El tiempo que nos ha dado es 11.7375 segundos. &amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos el siguiente programa con tiempo 50.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=50;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
Hemos querido probar si el ∆x influía y para ello lo hemos multiplicado por 10. Hemos utilizado el anterior programa y solo hemos cambiado el ∆x .&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=400;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=1.5;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
x=[0,1.5,3,4.5,6,7.5,8]; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Y cambia el resultado ya que la distancia en ningún momento es menor del 5%, es decir de 0.147187. Por ello, aunque se podría suponer que no se alcanza el estado estacionario en realidad sí lo hace, pues lo que ocurre es que el error es mayor ya que la distancia que nos da es siempre constante e igual a 0.34375.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
En el segundo 1 se sitúa en el extremo 0 un filtro que limpia dicha posición. Hasta ese instante el problema es idéntico a los anteriores, pero a partir de entonces slo la concentración será nula en el extremo inicial. El nuevo valor estacionario es 0 ya que se va eliminando contaminante.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Contaminante0.png|400x400px|miniaturadeimagen|izquierda|Se aprecia que en la izquierda la cantidad de contaminante es 0]]&lt;br /&gt;
[[Archivo:TiempoGrande.png|400x400px|miniaturadeimagen|centro|Cuando el tiempo es muy grande la concentración total desciende a 0]] &amp;lt;br /&amp;gt;&lt;br /&gt;
Para obtener ambos gráficos se ha utilizado el siguiente programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Además este estado estacionario (que es 0) se alcanzará con menos del 5%  de error en 78.1875 segundos.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos este programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=100;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39621</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39621"/>
				<updated>2017-05-09T10:21:56Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: /* Método del trapecio. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo &amp;lt;br /&amp;gt;Javier Carrillo&amp;lt;br /&amp;gt; Pablo Escudero &amp;lt;br /&amp;gt;Alejandro Gaitón&amp;lt;br /&amp;gt; Alejandro González&amp;lt;br /&amp;gt; Pablo Vidal }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
== Deducción de la ecuación. ==&lt;br /&gt;
En primer lugar, sabemos que para que se produzca difusión, es necesario que exista un gradiente de concentración o diferencia entre dos puntos del medio. Definimos la variable u como la concentración de contaminante en cada posición del tubo (que consideramos unidimensional y con sección despreciable, de longitud L=8m), la cual varía a lo largo del eje de abscisas (eje x), por lo que el intervalo en el que trabajaremos será [0,L]. Teniendo en cuenta la ley de Flick, sabemos que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x). Añadiendo la variable del tiempo, la concentración de contaminante en cada posición y en cada instante la expresaremos por u(x,t). La acumulación de partículas en cada instante que se produce por cada unidad de volumen S.dx (S es la sección) es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir uS-u’S=(du/dx).S.dx La acumulación de partículas por unidad de tiempo es S.dx.(du/dt) Si igualamos ambas expresiones y aplicamos la Ley de Flick nos queda d(D.(du/dx))/dx=du/dt. Obtenemos una ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión. Todo esto es válido si el coeficiente de difusión D no depende de la concentración.&lt;br /&gt;
== Planteamiento del sistema. ==&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Planteamiento.png|800px|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
== Método del trapecio. ==&lt;br /&gt;
Resolvemos por el método de las líneas la ecuación diferencial con dos condiciones Newman que vienen dadas por la ausencia de flujo en los extremos del tubo. Empleamos también la condición inicial: u(x,0) = 2, si x ≤ 4, 4, si x &amp;gt; 4 y resolvemos matricialmente el sistema de N+1 incógnitas.&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Datos&lt;br /&gt;
  L=8;&lt;br /&gt;
T=7;&lt;br /&gt;
 q=1;&lt;br /&gt;
 &lt;br /&gt;
 % Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &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&lt;br /&gt;
 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;
 &lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Resolución.png|400x400px|miniaturadeimagen|centro|Concentración/espacio-tiempo]]&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa. ==&lt;br /&gt;
Integramos en todos los instantes la cantidad de contaminante que hay en cada punto de la barra, lo que nos da la masa total de contaminante en cada instante. A partir de la ecuación u(x,t)se deduce que la masa total del contaminante se conserva a lo largo del tiempo. Dicha masa es '''23.550''', hallada según el programa:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=12;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&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))/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio))&lt;br /&gt;
}}&lt;br /&gt;
=== Evidencias ===&lt;br /&gt;
[[Archivo:Conservación_de_la_masa.png|500x500px|miniaturadeimagen|izquierda|&amp;quot;La masa es constante en el tiempo&amp;quot;]] [[Archivo:Cantidad en el punto medio.png|500x500px|miniaturadeimagen|derecha|&amp;quot;Variación de la masa en el punto medio&amp;quot;]]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aplicación de los métodos ==&lt;br /&gt;
Resolvemos por los métodos de Euler explícito, ímplicito y de Heun con las condiciones inicilales del ejercicio anterior.&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler explícito ===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Euler Explicito&lt;br /&gt;
  % Datos del problema&lt;br /&gt;
  L=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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);%tienes N+1 incognitas&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler implícito ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Heun ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
  N=round(L/h);&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=[2*ones(1,2+N*4/8),3*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Comparación de resultados ===&lt;br /&gt;
[[Archivo:Heun2.png|400px|miniaturadeimagen|derecha|Heun]]&lt;br /&gt;
[[Archivo:Euler_exp.png|400px|miniaturadeimagen|izquierda|Euler explícito]] [[Archivo:Euler_imp.png|400px|miniaturadeimagen|centro|Euler implícito]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                        &amp;lt;big&amp;gt;'''Observando las gráficas se aprecia que apenas hay diferencia.'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Concentración casi constante. Consecuencias. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la imagen apreciamos como a tiempos grandes (50 segundos) el contaminante se distribuye de forma homogénea estabilizándose en 2.9438, la cantidad de contaminante total dividida la longitud del tubo, 8.&lt;br /&gt;
[[Archivo:Regimen_estacionario.png|350x350px|miniaturadeimagen|izquierda|Régimen estacionario]]&lt;br /&gt;
&lt;br /&gt;
Por lo que podemos decir que el flujo es 0(muy próximo) y por la tanto la tanto la solución es homogénea siendo en cada instante y posición 2.9438.&lt;br /&gt;
La función de la solución sería u(x,t)= 2.9438 cuando el tiempo es grande.&lt;br /&gt;
Este estado estacionario se da cuando el flujo se aproxime a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para demostrar esta solución en régimen estacionario hemos usado los tiempos 0,1,2,10 y hemos calculado la media cuadrada entre el valor de estacionamiento y los diferentes valores de la concentración en cada posición:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Distancia para 0 segundos= 0.999499&amp;lt;br /&amp;gt;Distancia para 1 segundos = 0.776147&amp;lt;br /&amp;gt;Distancia para 2 segundos  = 0.657469&amp;lt;br /&amp;gt;Distancia para 10 segundos = 0.192049&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(L/h);&lt;br /&gt;
x=0:h:L; &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&lt;br /&gt;
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;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&lt;br /&gt;
dist0=(sqrt(sum((sol(1,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist1=(sqrt(sum((sol(28,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist2=(sqrt(sum((sol(56,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist10=(sqrt(sum((sol(267,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Uso de un limpiador de contaminante. Conclusiones. ==&lt;br /&gt;
Hemos calculado el tiempo en el cual podemos considerar que se ha alcanzado el estado estacionario (es decir cuando la distancia que hemos calculado anteriormente es menor de un valor establecido). El valor establecido es el 5% de la concentración media, es decir que este valor es 0.147187.&amp;lt;br /&amp;gt;&lt;br /&gt;
El tiempo que nos ha dado es 11.7375 segundos. &amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos el siguiente programa con tiempo 50.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=50;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
Hemos querido probar si el ∆x influía y para ello lo hemos multiplicado por 10. Hemos utilizado el anterior programa y solo hemos cambiado el ∆x .&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=400;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=1.5;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
x=[0,1.5,3,4.5,6,7.5,8]; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Y cambia el resultado ya que la distancia en ningún momento es menor del 5%, es decir de 0.147187. Por ello, aunque se podría suponer que no se alcanza el estado estacionario en realidad sí lo hace, pues lo que ocurre es que el error es mayor ya que la distancia que nos da es siempre constante e igual a 0.34375.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
En el segundo 1 se sitúa en el extremo 0 un filtro que limpia dicha posición. Hasta ese instante el problema es idéntico a los anteriores, pero a partir de entonces slo la concentración será nula en el extremo inicial. El nuevo valor estacionario es 0 ya que se va eliminando contaminante.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Contaminante0.png|400x400px|miniaturadeimagen|izquierda|Se aprecia que en la izquierda la cantidad de contaminante es 0]]&lt;br /&gt;
[[Archivo:TiempoGrande.png|400x400px|miniaturadeimagen|centro|Cuando el tiempo es muy grande la concentración total desciende a 0]] &amp;lt;br /&amp;gt;&lt;br /&gt;
Para obtener ambos gráficos se ha utilizado el siguiente programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Además este estado estacionario (que es 0) se alcanzará con menos del 5%  de error en 78.1875 segundos.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos este programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=100;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39620</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39620"/>
				<updated>2017-05-09T10:19:26Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: /* Planteamiento del sistema. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo &amp;lt;br /&amp;gt;Javier Carrillo&amp;lt;br /&amp;gt; Pablo Escudero &amp;lt;br /&amp;gt;Alejandro Gaitón&amp;lt;br /&amp;gt; Alejandro González&amp;lt;br /&amp;gt; Pablo Vidal }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
== Deducción de la ecuación. ==&lt;br /&gt;
En primer lugar, sabemos que para que se produzca difusión, es necesario que exista un gradiente de concentración o diferencia entre dos puntos del medio. Definimos la variable u como la concentración de contaminante en cada posición del tubo (que consideramos unidimensional y con sección despreciable, de longitud L=8m), la cual varía a lo largo del eje de abscisas (eje x), por lo que el intervalo en el que trabajaremos será [0,L]. Teniendo en cuenta la ley de Flick, sabemos que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x). Añadiendo la variable del tiempo, la concentración de contaminante en cada posición y en cada instante la expresaremos por u(x,t). La acumulación de partículas en cada instante que se produce por cada unidad de volumen S.dx (S es la sección) es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir uS-u’S=(du/dx).S.dx La acumulación de partículas por unidad de tiempo es S.dx.(du/dt) Si igualamos ambas expresiones y aplicamos la Ley de Flick nos queda d(D.(du/dx))/dx=du/dt. Obtenemos una ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión. Todo esto es válido si el coeficiente de difusión D no depende de la concentración.&lt;br /&gt;
== Planteamiento del sistema. ==&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Planteamiento.png|800px|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
== Método del trapecio. ==&lt;br /&gt;
Resolvemos por el método de las líneas la ecuación diferencial con dos condiciones Newman que vienen dadas por la ausencia de flujo en los extremos del tubo. Empleamos también la condición inicial: u(x,0) = 2, si x ≤ 4, 4, si x &amp;gt; 4 y resolvemos matricialmente el sistema de N+1 incógnitas.&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Datos&lt;br /&gt;
  L=8;&lt;br /&gt;
T=7;&lt;br /&gt;
 q=1;&lt;br /&gt;
 &lt;br /&gt;
 % Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &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&lt;br /&gt;
 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;
 &lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Resolución.png|400x400px|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa. ==&lt;br /&gt;
Integramos en todos los instantes la cantidad de contaminante que hay en cada punto de la barra, lo que nos da la masa total de contaminante en cada instante. A partir de la ecuación u(x,t)se deduce que la masa total del contaminante se conserva a lo largo del tiempo. Dicha masa es '''23.550''', hallada según el programa:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=12;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&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))/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio))&lt;br /&gt;
}}&lt;br /&gt;
=== Evidencias ===&lt;br /&gt;
[[Archivo:Conservación_de_la_masa.png|500x500px|miniaturadeimagen|izquierda|&amp;quot;La masa es constante en el tiempo&amp;quot;]] [[Archivo:Cantidad en el punto medio.png|500x500px|miniaturadeimagen|derecha|&amp;quot;Variación de la masa en el punto medio&amp;quot;]]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aplicación de los métodos ==&lt;br /&gt;
Resolvemos por los métodos de Euler explícito, ímplicito y de Heun con las condiciones inicilales del ejercicio anterior.&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler explícito ===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Euler Explicito&lt;br /&gt;
  % Datos del problema&lt;br /&gt;
  L=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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);%tienes N+1 incognitas&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler implícito ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Heun ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
  N=round(L/h);&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=[2*ones(1,2+N*4/8),3*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Comparación de resultados ===&lt;br /&gt;
[[Archivo:Heun2.png|400px|miniaturadeimagen|derecha|Heun]]&lt;br /&gt;
[[Archivo:Euler_exp.png|400px|miniaturadeimagen|izquierda|Euler explícito]] [[Archivo:Euler_imp.png|400px|miniaturadeimagen|centro|Euler implícito]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                        &amp;lt;big&amp;gt;'''Observando las gráficas se aprecia que apenas hay diferencia.'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Concentración casi constante. Consecuencias. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la imagen apreciamos como a tiempos grandes (50 segundos) el contaminante se distribuye de forma homogénea estabilizándose en 2.9438, la cantidad de contaminante total dividida la longitud del tubo, 8.&lt;br /&gt;
[[Archivo:Regimen_estacionario.png|350x350px|miniaturadeimagen|izquierda|Régimen estacionario]]&lt;br /&gt;
&lt;br /&gt;
Por lo que podemos decir que el flujo es 0(muy próximo) y por la tanto la tanto la solución es homogénea siendo en cada instante y posición 2.9438.&lt;br /&gt;
La función de la solución sería u(x,t)= 2.9438 cuando el tiempo es grande.&lt;br /&gt;
Este estado estacionario se da cuando el flujo se aproxime a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para demostrar esta solución en régimen estacionario hemos usado los tiempos 0,1,2,10 y hemos calculado la media cuadrada entre el valor de estacionamiento y los diferentes valores de la concentración en cada posición:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Distancia para 0 segundos= 0.999499&amp;lt;br /&amp;gt;Distancia para 1 segundos = 0.776147&amp;lt;br /&amp;gt;Distancia para 2 segundos  = 0.657469&amp;lt;br /&amp;gt;Distancia para 10 segundos = 0.192049&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(L/h);&lt;br /&gt;
x=0:h:L; &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&lt;br /&gt;
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;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&lt;br /&gt;
dist0=(sqrt(sum((sol(1,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist1=(sqrt(sum((sol(28,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist2=(sqrt(sum((sol(56,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist10=(sqrt(sum((sol(267,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Uso de un limpiador de contaminante. Conclusiones. ==&lt;br /&gt;
Hemos calculado el tiempo en el cual podemos considerar que se ha alcanzado el estado estacionario (es decir cuando la distancia que hemos calculado anteriormente es menor de un valor establecido). El valor establecido es el 5% de la concentración media, es decir que este valor es 0.147187.&amp;lt;br /&amp;gt;&lt;br /&gt;
El tiempo que nos ha dado es 11.7375 segundos. &amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos el siguiente programa con tiempo 50.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=50;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
Hemos querido probar si el ∆x influía y para ello lo hemos multiplicado por 10. Hemos utilizado el anterior programa y solo hemos cambiado el ∆x .&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=400;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=1.5;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
x=[0,1.5,3,4.5,6,7.5,8]; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Y cambia el resultado ya que la distancia en ningún momento es menor del 5%, es decir de 0.147187. Por ello, aunque se podría suponer que no se alcanza el estado estacionario en realidad sí lo hace, pues lo que ocurre es que el error es mayor ya que la distancia que nos da es siempre constante e igual a 0.34375.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
En el segundo 1 se sitúa en el extremo 0 un filtro que limpia dicha posición. Hasta ese instante el problema es idéntico a los anteriores, pero a partir de entonces slo la concentración será nula en el extremo inicial. El nuevo valor estacionario es 0 ya que se va eliminando contaminante.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Contaminante0.png|400x400px|miniaturadeimagen|izquierda|Se aprecia que en la izquierda la cantidad de contaminante es 0]]&lt;br /&gt;
[[Archivo:TiempoGrande.png|400x400px|miniaturadeimagen|centro|Cuando el tiempo es muy grande la concentración total desciende a 0]] &amp;lt;br /&amp;gt;&lt;br /&gt;
Para obtener ambos gráficos se ha utilizado el siguiente programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Además este estado estacionario (que es 0) se alcanzará con menos del 5%  de error en 78.1875 segundos.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos este programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=100;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39619</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39619"/>
				<updated>2017-05-09T10:19:14Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: /* Deducción de la ecuación. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo &amp;lt;br /&amp;gt;Javier Carrillo&amp;lt;br /&amp;gt; Pablo Escudero &amp;lt;br /&amp;gt;Alejandro Gaitón&amp;lt;br /&amp;gt; Alejandro González&amp;lt;br /&amp;gt; Pablo Vidal }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
== Deducción de la ecuación. ==&lt;br /&gt;
En primer lugar, sabemos que para que se produzca difusión, es necesario que exista un gradiente de concentración o diferencia entre dos puntos del medio. Definimos la variable u como la concentración de contaminante en cada posición del tubo (que consideramos unidimensional y con sección despreciable, de longitud L=8m), la cual varía a lo largo del eje de abscisas (eje x), por lo que el intervalo en el que trabajaremos será [0,L]. Teniendo en cuenta la ley de Flick, sabemos que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x). Añadiendo la variable del tiempo, la concentración de contaminante en cada posición y en cada instante la expresaremos por u(x,t). La acumulación de partículas en cada instante que se produce por cada unidad de volumen S.dx (S es la sección) es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir uS-u’S=(du/dx).S.dx La acumulación de partículas por unidad de tiempo es S.dx.(du/dt) Si igualamos ambas expresiones y aplicamos la Ley de Flick nos queda d(D.(du/dx))/dx=du/dt. Obtenemos una ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión. Todo esto es válido si el coeficiente de difusión D no depende de la concentración.&lt;br /&gt;
== Planteamiento del sistema. ==&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Planteamiento.png|800px|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
== Método del trapecio. ==&lt;br /&gt;
Resolvemos por el método de las líneas la ecuación diferencial con dos condiciones Newman que vienen dadas por la ausencia de flujo en los extremos del tubo. Empleamos también la condición inicial: u(x,0) = 2, si x ≤ 4, 4, si x &amp;gt; 4 y resolvemos matricialmente el sistema de N+1 incógnitas.&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Datos&lt;br /&gt;
  L=8;&lt;br /&gt;
T=7;&lt;br /&gt;
 q=1;&lt;br /&gt;
 &lt;br /&gt;
 % Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &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&lt;br /&gt;
 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;
 &lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Resolución.png|400x400px|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa. ==&lt;br /&gt;
Integramos en todos los instantes la cantidad de contaminante que hay en cada punto de la barra, lo que nos da la masa total de contaminante en cada instante. A partir de la ecuación u(x,t)se deduce que la masa total del contaminante se conserva a lo largo del tiempo. Dicha masa es '''23.550''', hallada según el programa:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=12;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&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))/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio))&lt;br /&gt;
}}&lt;br /&gt;
=== Evidencias ===&lt;br /&gt;
[[Archivo:Conservación_de_la_masa.png|500x500px|miniaturadeimagen|izquierda|&amp;quot;La masa es constante en el tiempo&amp;quot;]] [[Archivo:Cantidad en el punto medio.png|500x500px|miniaturadeimagen|derecha|&amp;quot;Variación de la masa en el punto medio&amp;quot;]]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aplicación de los métodos ==&lt;br /&gt;
Resolvemos por los métodos de Euler explícito, ímplicito y de Heun con las condiciones inicilales del ejercicio anterior.&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler explícito ===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Euler Explicito&lt;br /&gt;
  % Datos del problema&lt;br /&gt;
  L=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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);%tienes N+1 incognitas&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler implícito ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Heun ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
  N=round(L/h);&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=[2*ones(1,2+N*4/8),3*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Comparación de resultados ===&lt;br /&gt;
[[Archivo:Heun2.png|400px|miniaturadeimagen|derecha|Heun]]&lt;br /&gt;
[[Archivo:Euler_exp.png|400px|miniaturadeimagen|izquierda|Euler explícito]] [[Archivo:Euler_imp.png|400px|miniaturadeimagen|centro|Euler implícito]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                        &amp;lt;big&amp;gt;'''Observando las gráficas se aprecia que apenas hay diferencia.'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Concentración casi constante. Consecuencias. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la imagen apreciamos como a tiempos grandes (50 segundos) el contaminante se distribuye de forma homogénea estabilizándose en 2.9438, la cantidad de contaminante total dividida la longitud del tubo, 8.&lt;br /&gt;
[[Archivo:Regimen_estacionario.png|350x350px|miniaturadeimagen|izquierda|Régimen estacionario]]&lt;br /&gt;
&lt;br /&gt;
Por lo que podemos decir que el flujo es 0(muy próximo) y por la tanto la tanto la solución es homogénea siendo en cada instante y posición 2.9438.&lt;br /&gt;
La función de la solución sería u(x,t)= 2.9438 cuando el tiempo es grande.&lt;br /&gt;
Este estado estacionario se da cuando el flujo se aproxime a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para demostrar esta solución en régimen estacionario hemos usado los tiempos 0,1,2,10 y hemos calculado la media cuadrada entre el valor de estacionamiento y los diferentes valores de la concentración en cada posición:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Distancia para 0 segundos= 0.999499&amp;lt;br /&amp;gt;Distancia para 1 segundos = 0.776147&amp;lt;br /&amp;gt;Distancia para 2 segundos  = 0.657469&amp;lt;br /&amp;gt;Distancia para 10 segundos = 0.192049&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(L/h);&lt;br /&gt;
x=0:h:L; &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&lt;br /&gt;
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;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&lt;br /&gt;
dist0=(sqrt(sum((sol(1,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist1=(sqrt(sum((sol(28,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist2=(sqrt(sum((sol(56,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist10=(sqrt(sum((sol(267,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Uso de un limpiador de contaminante. Conclusiones. ==&lt;br /&gt;
Hemos calculado el tiempo en el cual podemos considerar que se ha alcanzado el estado estacionario (es decir cuando la distancia que hemos calculado anteriormente es menor de un valor establecido). El valor establecido es el 5% de la concentración media, es decir que este valor es 0.147187.&amp;lt;br /&amp;gt;&lt;br /&gt;
El tiempo que nos ha dado es 11.7375 segundos. &amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos el siguiente programa con tiempo 50.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=50;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
Hemos querido probar si el ∆x influía y para ello lo hemos multiplicado por 10. Hemos utilizado el anterior programa y solo hemos cambiado el ∆x .&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=400;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=1.5;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
x=[0,1.5,3,4.5,6,7.5,8]; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Y cambia el resultado ya que la distancia en ningún momento es menor del 5%, es decir de 0.147187. Por ello, aunque se podría suponer que no se alcanza el estado estacionario en realidad sí lo hace, pues lo que ocurre es que el error es mayor ya que la distancia que nos da es siempre constante e igual a 0.34375.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
En el segundo 1 se sitúa en el extremo 0 un filtro que limpia dicha posición. Hasta ese instante el problema es idéntico a los anteriores, pero a partir de entonces slo la concentración será nula en el extremo inicial. El nuevo valor estacionario es 0 ya que se va eliminando contaminante.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Contaminante0.png|400x400px|miniaturadeimagen|izquierda|Se aprecia que en la izquierda la cantidad de contaminante es 0]]&lt;br /&gt;
[[Archivo:TiempoGrande.png|400x400px|miniaturadeimagen|centro|Cuando el tiempo es muy grande la concentración total desciende a 0]] &amp;lt;br /&amp;gt;&lt;br /&gt;
Para obtener ambos gráficos se ha utilizado el siguiente programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Además este estado estacionario (que es 0) se alcanzará con menos del 5%  de error en 78.1875 segundos.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos este programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=100;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39618</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39618"/>
				<updated>2017-05-09T10:18:52Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: /* Planteamiento del sistema. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo &amp;lt;br /&amp;gt;Javier Carrillo&amp;lt;br /&amp;gt; Pablo Escudero &amp;lt;br /&amp;gt;Alejandro Gaitón&amp;lt;br /&amp;gt; Alejandro González&amp;lt;br /&amp;gt; Pablo Vidal }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
== Deducción de la ecuación. ==&lt;br /&gt;
En primer lugar, sabemos que para que se produzca difusión, es necesario que exista un gradiente de concentración o diferencia entre dos puntos del medio. Definimos la variable u como la concentración de contaminante en cada posición del tubo (que consideramos unidimensional y con sección despreciable, de longitud L=8m), la cual varía a lo largo del eje de abscisas (eje x), por lo que el intervalo en el que trabajaremos será [0,L]. Teniendo en cuenta la ley de Flick, sabemos que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x). Añadiendo la variable del tiempo, la concentración de contaminante en cada posición y en cada instante la expresaremos por u(x,t). La acumulación de partículas en cada instante que se produce por cada unidad de volumen S.dx (S es la sección) es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir uS-u’S=(du/dx).S.dx La acumulación de partículas por unidad de tiempo es S.dx.(du/dt) Si igualamos ambas expresiones y aplicamos la Ley de Flick nos queda d(D.(du/dx))/dx=du/dt. Obtenemos una ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión. Todo esto es válido si el coeficiente de difusión D no depende de la concentración.&lt;br /&gt;
== Planteamiento del sistema. ==&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Planteamiento.png|800px|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
== Método del trapecio. ==&lt;br /&gt;
Resolvemos por el método de las líneas la ecuación diferencial con dos condiciones Newman que vienen dadas por la ausencia de flujo en los extremos del tubo. Empleamos también la condición inicial: u(x,0) = 2, si x ≤ 4, 4, si x &amp;gt; 4 y resolvemos matricialmente el sistema de N+1 incógnitas.&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Datos&lt;br /&gt;
  L=8;&lt;br /&gt;
T=7;&lt;br /&gt;
 q=1;&lt;br /&gt;
 &lt;br /&gt;
 % Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &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&lt;br /&gt;
 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;
 &lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Resolución.png|400x400px|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa. ==&lt;br /&gt;
Integramos en todos los instantes la cantidad de contaminante que hay en cada punto de la barra, lo que nos da la masa total de contaminante en cada instante. A partir de la ecuación u(x,t)se deduce que la masa total del contaminante se conserva a lo largo del tiempo. Dicha masa es '''23.550''', hallada según el programa:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=12;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&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))/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio))&lt;br /&gt;
}}&lt;br /&gt;
=== Evidencias ===&lt;br /&gt;
[[Archivo:Conservación_de_la_masa.png|500x500px|miniaturadeimagen|izquierda|&amp;quot;La masa es constante en el tiempo&amp;quot;]] [[Archivo:Cantidad en el punto medio.png|500x500px|miniaturadeimagen|derecha|&amp;quot;Variación de la masa en el punto medio&amp;quot;]]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aplicación de los métodos ==&lt;br /&gt;
Resolvemos por los métodos de Euler explícito, ímplicito y de Heun con las condiciones inicilales del ejercicio anterior.&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler explícito ===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Euler Explicito&lt;br /&gt;
  % Datos del problema&lt;br /&gt;
  L=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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);%tienes N+1 incognitas&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler implícito ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Heun ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
  N=round(L/h);&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=[2*ones(1,2+N*4/8),3*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Comparación de resultados ===&lt;br /&gt;
[[Archivo:Heun2.png|400px|miniaturadeimagen|derecha|Heun]]&lt;br /&gt;
[[Archivo:Euler_exp.png|400px|miniaturadeimagen|izquierda|Euler explícito]] [[Archivo:Euler_imp.png|400px|miniaturadeimagen|centro|Euler implícito]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                        &amp;lt;big&amp;gt;'''Observando las gráficas se aprecia que apenas hay diferencia.'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Concentración casi constante. Consecuencias. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la imagen apreciamos como a tiempos grandes (50 segundos) el contaminante se distribuye de forma homogénea estabilizándose en 2.9438, la cantidad de contaminante total dividida la longitud del tubo, 8.&lt;br /&gt;
[[Archivo:Regimen_estacionario.png|350x350px|miniaturadeimagen|izquierda|Régimen estacionario]]&lt;br /&gt;
&lt;br /&gt;
Por lo que podemos decir que el flujo es 0(muy próximo) y por la tanto la tanto la solución es homogénea siendo en cada instante y posición 2.9438.&lt;br /&gt;
La función de la solución sería u(x,t)= 2.9438 cuando el tiempo es grande.&lt;br /&gt;
Este estado estacionario se da cuando el flujo se aproxime a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para demostrar esta solución en régimen estacionario hemos usado los tiempos 0,1,2,10 y hemos calculado la media cuadrada entre el valor de estacionamiento y los diferentes valores de la concentración en cada posición:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Distancia para 0 segundos= 0.999499&amp;lt;br /&amp;gt;Distancia para 1 segundos = 0.776147&amp;lt;br /&amp;gt;Distancia para 2 segundos  = 0.657469&amp;lt;br /&amp;gt;Distancia para 10 segundos = 0.192049&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(L/h);&lt;br /&gt;
x=0:h:L; &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&lt;br /&gt;
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;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&lt;br /&gt;
dist0=(sqrt(sum((sol(1,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist1=(sqrt(sum((sol(28,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist2=(sqrt(sum((sol(56,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist10=(sqrt(sum((sol(267,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Uso de un limpiador de contaminante. Conclusiones. ==&lt;br /&gt;
Hemos calculado el tiempo en el cual podemos considerar que se ha alcanzado el estado estacionario (es decir cuando la distancia que hemos calculado anteriormente es menor de un valor establecido). El valor establecido es el 5% de la concentración media, es decir que este valor es 0.147187.&amp;lt;br /&amp;gt;&lt;br /&gt;
El tiempo que nos ha dado es 11.7375 segundos. &amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos el siguiente programa con tiempo 50.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=50;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
Hemos querido probar si el ∆x influía y para ello lo hemos multiplicado por 10. Hemos utilizado el anterior programa y solo hemos cambiado el ∆x .&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=400;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=1.5;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
x=[0,1.5,3,4.5,6,7.5,8]; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Y cambia el resultado ya que la distancia en ningún momento es menor del 5%, es decir de 0.147187. Por ello, aunque se podría suponer que no se alcanza el estado estacionario en realidad sí lo hace, pues lo que ocurre es que el error es mayor ya que la distancia que nos da es siempre constante e igual a 0.34375.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
En el segundo 1 se sitúa en el extremo 0 un filtro que limpia dicha posición. Hasta ese instante el problema es idéntico a los anteriores, pero a partir de entonces slo la concentración será nula en el extremo inicial. El nuevo valor estacionario es 0 ya que se va eliminando contaminante.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Contaminante0.png|400x400px|miniaturadeimagen|izquierda|Se aprecia que en la izquierda la cantidad de contaminante es 0]]&lt;br /&gt;
[[Archivo:TiempoGrande.png|400x400px|miniaturadeimagen|centro|Cuando el tiempo es muy grande la concentración total desciende a 0]] &amp;lt;br /&amp;gt;&lt;br /&gt;
Para obtener ambos gráficos se ha utilizado el siguiente programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Además este estado estacionario (que es 0) se alcanzará con menos del 5%  de error en 78.1875 segundos.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos este programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=100;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39617</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39617"/>
				<updated>2017-05-09T10:18:31Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: /* Planteamiento del sistema. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo &amp;lt;br /&amp;gt;Javier Carrillo&amp;lt;br /&amp;gt; Pablo Escudero &amp;lt;br /&amp;gt;Alejandro Gaitón&amp;lt;br /&amp;gt; Alejandro González&amp;lt;br /&amp;gt; Pablo Vidal }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
== Deducción de la ecuación. ==&lt;br /&gt;
En primer lugar, sabemos que para que se produzca difusión, es necesario que exista un gradiente de concentración o diferencia entre dos puntos del medio. Definimos la variable u como la concentración de contaminante en cada posición del tubo (que consideramos unidimensional y con sección despreciable, de longitud L=8m), la cual varía a lo largo del eje de abscisas (eje x), por lo que el intervalo en el que trabajaremos será [0,L]. Teniendo en cuenta la ley de Flick, sabemos que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x). Añadiendo la variable del tiempo, la concentración de contaminante en cada posición y en cada instante la expresaremos por u(x,t). La acumulación de partículas en cada instante que se produce por cada unidad de volumen S.dx (S es la sección) es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir uS-u’S=(du/dx).S.dx La acumulación de partículas por unidad de tiempo es S.dx.(du/dt) Si igualamos ambas expresiones y aplicamos la Ley de Flick nos queda d(D.(du/dx))/dx=du/dt. Obtenemos una ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión. Todo esto es válido si el coeficiente de difusión D no depende de la concentración.&lt;br /&gt;
== Planteamiento del sistema. ==&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Planteamiento.png|800px|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
== Método del trapecio. ==&lt;br /&gt;
Resolvemos por el método de las líneas la ecuación diferencial con dos condiciones Newman que vienen dadas por la ausencia de flujo en los extremos del tubo. Empleamos también la condición inicial: u(x,0) = 2, si x ≤ 4, 4, si x &amp;gt; 4 y resolvemos matricialmente el sistema de N+1 incógnitas.&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Datos&lt;br /&gt;
  L=8;&lt;br /&gt;
T=7;&lt;br /&gt;
 q=1;&lt;br /&gt;
 &lt;br /&gt;
 % Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &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&lt;br /&gt;
 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;
 &lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Resolución.png|400x400px|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa. ==&lt;br /&gt;
Integramos en todos los instantes la cantidad de contaminante que hay en cada punto de la barra, lo que nos da la masa total de contaminante en cada instante. A partir de la ecuación u(x,t)se deduce que la masa total del contaminante se conserva a lo largo del tiempo. Dicha masa es '''23.550''', hallada según el programa:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=12;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&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))/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio))&lt;br /&gt;
}}&lt;br /&gt;
=== Evidencias ===&lt;br /&gt;
[[Archivo:Conservación_de_la_masa.png|500x500px|miniaturadeimagen|izquierda|&amp;quot;La masa es constante en el tiempo&amp;quot;]] [[Archivo:Cantidad en el punto medio.png|500x500px|miniaturadeimagen|derecha|&amp;quot;Variación de la masa en el punto medio&amp;quot;]]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aplicación de los métodos ==&lt;br /&gt;
Resolvemos por los métodos de Euler explícito, ímplicito y de Heun con las condiciones inicilales del ejercicio anterior.&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler explícito ===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Euler Explicito&lt;br /&gt;
  % Datos del problema&lt;br /&gt;
  L=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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);%tienes N+1 incognitas&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler implícito ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Heun ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
  N=round(L/h);&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=[2*ones(1,2+N*4/8),3*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Comparación de resultados ===&lt;br /&gt;
[[Archivo:Heun2.png|400px|miniaturadeimagen|derecha|Heun]]&lt;br /&gt;
[[Archivo:Euler_exp.png|400px|miniaturadeimagen|izquierda|Euler explícito]] [[Archivo:Euler_imp.png|400px|miniaturadeimagen|centro|Euler implícito]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                        &amp;lt;big&amp;gt;'''Observando las gráficas se aprecia que apenas hay diferencia.'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Concentración casi constante. Consecuencias. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la imagen apreciamos como a tiempos grandes (50 segundos) el contaminante se distribuye de forma homogénea estabilizándose en 2.9438, la cantidad de contaminante total dividida la longitud del tubo, 8.&lt;br /&gt;
[[Archivo:Regimen_estacionario.png|350x350px|miniaturadeimagen|izquierda|Régimen estacionario]]&lt;br /&gt;
&lt;br /&gt;
Por lo que podemos decir que el flujo es 0(muy próximo) y por la tanto la tanto la solución es homogénea siendo en cada instante y posición 2.9438.&lt;br /&gt;
La función de la solución sería u(x,t)= 2.9438 cuando el tiempo es grande.&lt;br /&gt;
Este estado estacionario se da cuando el flujo se aproxime a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para demostrar esta solución en régimen estacionario hemos usado los tiempos 0,1,2,10 y hemos calculado la media cuadrada entre el valor de estacionamiento y los diferentes valores de la concentración en cada posición:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Distancia para 0 segundos= 0.999499&amp;lt;br /&amp;gt;Distancia para 1 segundos = 0.776147&amp;lt;br /&amp;gt;Distancia para 2 segundos  = 0.657469&amp;lt;br /&amp;gt;Distancia para 10 segundos = 0.192049&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(L/h);&lt;br /&gt;
x=0:h:L; &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&lt;br /&gt;
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;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&lt;br /&gt;
dist0=(sqrt(sum((sol(1,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist1=(sqrt(sum((sol(28,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist2=(sqrt(sum((sol(56,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist10=(sqrt(sum((sol(267,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Uso de un limpiador de contaminante. Conclusiones. ==&lt;br /&gt;
Hemos calculado el tiempo en el cual podemos considerar que se ha alcanzado el estado estacionario (es decir cuando la distancia que hemos calculado anteriormente es menor de un valor establecido). El valor establecido es el 5% de la concentración media, es decir que este valor es 0.147187.&amp;lt;br /&amp;gt;&lt;br /&gt;
El tiempo que nos ha dado es 11.7375 segundos. &amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos el siguiente programa con tiempo 50.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=50;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
Hemos querido probar si el ∆x influía y para ello lo hemos multiplicado por 10. Hemos utilizado el anterior programa y solo hemos cambiado el ∆x .&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=400;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=1.5;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
x=[0,1.5,3,4.5,6,7.5,8]; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Y cambia el resultado ya que la distancia en ningún momento es menor del 5%, es decir de 0.147187. Por ello, aunque se podría suponer que no se alcanza el estado estacionario en realidad sí lo hace, pues lo que ocurre es que el error es mayor ya que la distancia que nos da es siempre constante e igual a 0.34375.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
En el segundo 1 se sitúa en el extremo 0 un filtro que limpia dicha posición. Hasta ese instante el problema es idéntico a los anteriores, pero a partir de entonces slo la concentración será nula en el extremo inicial. El nuevo valor estacionario es 0 ya que se va eliminando contaminante.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Contaminante0.png|400x400px|miniaturadeimagen|izquierda|Se aprecia que en la izquierda la cantidad de contaminante es 0]]&lt;br /&gt;
[[Archivo:TiempoGrande.png|400x400px|miniaturadeimagen|centro|Cuando el tiempo es muy grande la concentración total desciende a 0]] &amp;lt;br /&amp;gt;&lt;br /&gt;
Para obtener ambos gráficos se ha utilizado el siguiente programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Además este estado estacionario (que es 0) se alcanzará con menos del 5%  de error en 78.1875 segundos.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos este programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=100;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39616</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39616"/>
				<updated>2017-05-09T10:18:22Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: /* Planteamiento del sistema. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo &amp;lt;br /&amp;gt;Javier Carrillo&amp;lt;br /&amp;gt; Pablo Escudero &amp;lt;br /&amp;gt;Alejandro Gaitón&amp;lt;br /&amp;gt; Alejandro González&amp;lt;br /&amp;gt; Pablo Vidal }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
== Deducción de la ecuación. ==&lt;br /&gt;
En primer lugar, sabemos que para que se produzca difusión, es necesario que exista un gradiente de concentración o diferencia entre dos puntos del medio. Definimos la variable u como la concentración de contaminante en cada posición del tubo (que consideramos unidimensional y con sección despreciable, de longitud L=8m), la cual varía a lo largo del eje de abscisas (eje x), por lo que el intervalo en el que trabajaremos será [0,L]. Teniendo en cuenta la ley de Flick, sabemos que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x). Añadiendo la variable del tiempo, la concentración de contaminante en cada posición y en cada instante la expresaremos por u(x,t). La acumulación de partículas en cada instante que se produce por cada unidad de volumen S.dx (S es la sección) es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir uS-u’S=(du/dx).S.dx La acumulación de partículas por unidad de tiempo es S.dx.(du/dt) Si igualamos ambas expresiones y aplicamos la Ley de Flick nos queda d(D.(du/dx))/dx=du/dt. Obtenemos una ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión. Todo esto es válido si el coeficiente de difusión D no depende de la concentración.&lt;br /&gt;
== Planteamiento del sistema. ==&lt;br /&gt;
[[Archivo:Planteamiento.png|800px|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
== Método del trapecio. ==&lt;br /&gt;
Resolvemos por el método de las líneas la ecuación diferencial con dos condiciones Newman que vienen dadas por la ausencia de flujo en los extremos del tubo. Empleamos también la condición inicial: u(x,0) = 2, si x ≤ 4, 4, si x &amp;gt; 4 y resolvemos matricialmente el sistema de N+1 incógnitas.&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Datos&lt;br /&gt;
  L=8;&lt;br /&gt;
T=7;&lt;br /&gt;
 q=1;&lt;br /&gt;
 &lt;br /&gt;
 % Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &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&lt;br /&gt;
 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;
 &lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Resolución.png|400x400px|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa. ==&lt;br /&gt;
Integramos en todos los instantes la cantidad de contaminante que hay en cada punto de la barra, lo que nos da la masa total de contaminante en cada instante. A partir de la ecuación u(x,t)se deduce que la masa total del contaminante se conserva a lo largo del tiempo. Dicha masa es '''23.550''', hallada según el programa:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=12;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&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))/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio))&lt;br /&gt;
}}&lt;br /&gt;
=== Evidencias ===&lt;br /&gt;
[[Archivo:Conservación_de_la_masa.png|500x500px|miniaturadeimagen|izquierda|&amp;quot;La masa es constante en el tiempo&amp;quot;]] [[Archivo:Cantidad en el punto medio.png|500x500px|miniaturadeimagen|derecha|&amp;quot;Variación de la masa en el punto medio&amp;quot;]]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aplicación de los métodos ==&lt;br /&gt;
Resolvemos por los métodos de Euler explícito, ímplicito y de Heun con las condiciones inicilales del ejercicio anterior.&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler explícito ===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Euler Explicito&lt;br /&gt;
  % Datos del problema&lt;br /&gt;
  L=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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);%tienes N+1 incognitas&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler implícito ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Heun ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
  N=round(L/h);&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=[2*ones(1,2+N*4/8),3*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Comparación de resultados ===&lt;br /&gt;
[[Archivo:Heun2.png|400px|miniaturadeimagen|derecha|Heun]]&lt;br /&gt;
[[Archivo:Euler_exp.png|400px|miniaturadeimagen|izquierda|Euler explícito]] [[Archivo:Euler_imp.png|400px|miniaturadeimagen|centro|Euler implícito]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                        &amp;lt;big&amp;gt;'''Observando las gráficas se aprecia que apenas hay diferencia.'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Concentración casi constante. Consecuencias. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la imagen apreciamos como a tiempos grandes (50 segundos) el contaminante se distribuye de forma homogénea estabilizándose en 2.9438, la cantidad de contaminante total dividida la longitud del tubo, 8.&lt;br /&gt;
[[Archivo:Regimen_estacionario.png|350x350px|miniaturadeimagen|izquierda|Régimen estacionario]]&lt;br /&gt;
&lt;br /&gt;
Por lo que podemos decir que el flujo es 0(muy próximo) y por la tanto la tanto la solución es homogénea siendo en cada instante y posición 2.9438.&lt;br /&gt;
La función de la solución sería u(x,t)= 2.9438 cuando el tiempo es grande.&lt;br /&gt;
Este estado estacionario se da cuando el flujo se aproxime a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para demostrar esta solución en régimen estacionario hemos usado los tiempos 0,1,2,10 y hemos calculado la media cuadrada entre el valor de estacionamiento y los diferentes valores de la concentración en cada posición:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Distancia para 0 segundos= 0.999499&amp;lt;br /&amp;gt;Distancia para 1 segundos = 0.776147&amp;lt;br /&amp;gt;Distancia para 2 segundos  = 0.657469&amp;lt;br /&amp;gt;Distancia para 10 segundos = 0.192049&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(L/h);&lt;br /&gt;
x=0:h:L; &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&lt;br /&gt;
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;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&lt;br /&gt;
dist0=(sqrt(sum((sol(1,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist1=(sqrt(sum((sol(28,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist2=(sqrt(sum((sol(56,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist10=(sqrt(sum((sol(267,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Uso de un limpiador de contaminante. Conclusiones. ==&lt;br /&gt;
Hemos calculado el tiempo en el cual podemos considerar que se ha alcanzado el estado estacionario (es decir cuando la distancia que hemos calculado anteriormente es menor de un valor establecido). El valor establecido es el 5% de la concentración media, es decir que este valor es 0.147187.&amp;lt;br /&amp;gt;&lt;br /&gt;
El tiempo que nos ha dado es 11.7375 segundos. &amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos el siguiente programa con tiempo 50.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=50;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
Hemos querido probar si el ∆x influía y para ello lo hemos multiplicado por 10. Hemos utilizado el anterior programa y solo hemos cambiado el ∆x .&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=400;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=1.5;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
x=[0,1.5,3,4.5,6,7.5,8]; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Y cambia el resultado ya que la distancia en ningún momento es menor del 5%, es decir de 0.147187. Por ello, aunque se podría suponer que no se alcanza el estado estacionario en realidad sí lo hace, pues lo que ocurre es que el error es mayor ya que la distancia que nos da es siempre constante e igual a 0.34375.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
En el segundo 1 se sitúa en el extremo 0 un filtro que limpia dicha posición. Hasta ese instante el problema es idéntico a los anteriores, pero a partir de entonces slo la concentración será nula en el extremo inicial. El nuevo valor estacionario es 0 ya que se va eliminando contaminante.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Contaminante0.png|400x400px|miniaturadeimagen|izquierda|Se aprecia que en la izquierda la cantidad de contaminante es 0]]&lt;br /&gt;
[[Archivo:TiempoGrande.png|400x400px|miniaturadeimagen|centro|Cuando el tiempo es muy grande la concentración total desciende a 0]] &amp;lt;br /&amp;gt;&lt;br /&gt;
Para obtener ambos gráficos se ha utilizado el siguiente programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Además este estado estacionario (que es 0) se alcanzará con menos del 5%  de error en 78.1875 segundos.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos este programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=100;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Planteamiento.png&amp;diff=39615</id>
		<title>Archivo:Planteamiento.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Planteamiento.png&amp;diff=39615"/>
				<updated>2017-05-09T10:16:37Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39614</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39614"/>
				<updated>2017-05-09T10:14:37Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo &amp;lt;br /&amp;gt;Javier Carrillo&amp;lt;br /&amp;gt; Pablo Escudero &amp;lt;br /&amp;gt;Alejandro Gaitón&amp;lt;br /&amp;gt; Alejandro González&amp;lt;br /&amp;gt; Pablo Vidal }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
== Deducción de la ecuación. ==&lt;br /&gt;
En primer lugar, sabemos que para que se produzca difusión, es necesario que exista un gradiente de concentración o diferencia entre dos puntos del medio. Definimos la variable u como la concentración de contaminante en cada posición del tubo (que consideramos unidimensional y con sección despreciable, de longitud L=8m), la cual varía a lo largo del eje de abscisas (eje x), por lo que el intervalo en el que trabajaremos será [0,L]. Teniendo en cuenta la ley de Flick, sabemos que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x). Añadiendo la variable del tiempo, la concentración de contaminante en cada posición y en cada instante la expresaremos por u(x,t). La acumulación de partículas en cada instante que se produce por cada unidad de volumen S.dx (S es la sección) es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir uS-u’S=(du/dx).S.dx La acumulación de partículas por unidad de tiempo es S.dx.(du/dt) Si igualamos ambas expresiones y aplicamos la Ley de Flick nos queda d(D.(du/dx))/dx=du/dt. Obtenemos una ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión. Todo esto es válido si el coeficiente de difusión D no depende de la concentración.&lt;br /&gt;
== Planteamiento del sistema. ==&lt;br /&gt;
u_t-〖Du〗_xx=0&lt;br /&gt;
u_x (0,t)=0         u_x (8,t)=0&lt;br /&gt;
u(x,0)={█(0 si x&amp;lt;h@3 si x&amp;gt;h)┤&lt;br /&gt;
&lt;br /&gt;
== Método del trapecio. ==&lt;br /&gt;
Resolvemos por el método de las líneas la ecuación diferencial con dos condiciones Newman que vienen dadas por la ausencia de flujo en los extremos del tubo. Empleamos también la condición inicial: u(x,0) = 2, si x ≤ 4, 4, si x &amp;gt; 4 y resolvemos matricialmente el sistema de N+1 incógnitas.&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Datos&lt;br /&gt;
  L=8;&lt;br /&gt;
T=7;&lt;br /&gt;
 q=1;&lt;br /&gt;
 &lt;br /&gt;
 % Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &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&lt;br /&gt;
 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;
 &lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Resolución.png|400x400px|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa. ==&lt;br /&gt;
Integramos en todos los instantes la cantidad de contaminante que hay en cada punto de la barra, lo que nos da la masa total de contaminante en cada instante. A partir de la ecuación u(x,t)se deduce que la masa total del contaminante se conserva a lo largo del tiempo. Dicha masa es '''23.550''', hallada según el programa:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=12;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&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))/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio))&lt;br /&gt;
}}&lt;br /&gt;
=== Evidencias ===&lt;br /&gt;
[[Archivo:Conservación_de_la_masa.png|500x500px|miniaturadeimagen|izquierda|&amp;quot;La masa es constante en el tiempo&amp;quot;]] [[Archivo:Cantidad en el punto medio.png|500x500px|miniaturadeimagen|derecha|&amp;quot;Variación de la masa en el punto medio&amp;quot;]]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aplicación de los métodos ==&lt;br /&gt;
Resolvemos por los métodos de Euler explícito, ímplicito y de Heun con las condiciones inicilales del ejercicio anterior.&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler explícito ===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Euler Explicito&lt;br /&gt;
  % Datos del problema&lt;br /&gt;
  L=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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);%tienes N+1 incognitas&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler implícito ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Heun ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
  N=round(L/h);&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=[2*ones(1,2+N*4/8),3*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Comparación de resultados ===&lt;br /&gt;
[[Archivo:Heun2.png|400px|miniaturadeimagen|derecha|Heun]]&lt;br /&gt;
[[Archivo:Euler_exp.png|400px|miniaturadeimagen|izquierda|Euler explícito]] [[Archivo:Euler_imp.png|400px|miniaturadeimagen|centro|Euler implícito]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                        &amp;lt;big&amp;gt;'''Observando las gráficas se aprecia que apenas hay diferencia.'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Concentración casi constante. Consecuencias. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la imagen apreciamos como a tiempos grandes (50 segundos) el contaminante se distribuye de forma homogénea estabilizándose en 2.9438, la cantidad de contaminante total dividida la longitud del tubo, 8.&lt;br /&gt;
[[Archivo:Regimen_estacionario.png|350x350px|miniaturadeimagen|izquierda|Régimen estacionario]]&lt;br /&gt;
&lt;br /&gt;
Por lo que podemos decir que el flujo es 0(muy próximo) y por la tanto la tanto la solución es homogénea siendo en cada instante y posición 2.9438.&lt;br /&gt;
La función de la solución sería u(x,t)= 2.9438 cuando el tiempo es grande.&lt;br /&gt;
Este estado estacionario se da cuando el flujo se aproxime a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para demostrar esta solución en régimen estacionario hemos usado los tiempos 0,1,2,10 y hemos calculado la media cuadrada entre el valor de estacionamiento y los diferentes valores de la concentración en cada posición:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Distancia para 0 segundos= 0.999499&amp;lt;br /&amp;gt;Distancia para 1 segundos = 0.776147&amp;lt;br /&amp;gt;Distancia para 2 segundos  = 0.657469&amp;lt;br /&amp;gt;Distancia para 10 segundos = 0.192049&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(L/h);&lt;br /&gt;
x=0:h:L; &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&lt;br /&gt;
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;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&lt;br /&gt;
dist0=(sqrt(sum((sol(1,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist1=(sqrt(sum((sol(28,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist2=(sqrt(sum((sol(56,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist10=(sqrt(sum((sol(267,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Uso de un limpiador de contaminante. Conclusiones. ==&lt;br /&gt;
Hemos calculado el tiempo en el cual podemos considerar que se ha alcanzado el estado estacionario (es decir cuando la distancia que hemos calculado anteriormente es menor de un valor establecido). El valor establecido es el 5% de la concentración media, es decir que este valor es 0.147187.&amp;lt;br /&amp;gt;&lt;br /&gt;
El tiempo que nos ha dado es 11.7375 segundos. &amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos el siguiente programa con tiempo 50.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=50;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
Hemos querido probar si el ∆x influía y para ello lo hemos multiplicado por 10. Hemos utilizado el anterior programa y solo hemos cambiado el ∆x .&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=400;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=1.5;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
x=[0,1.5,3,4.5,6,7.5,8]; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Y cambia el resultado ya que la distancia en ningún momento es menor del 5%, es decir de 0.147187. Por ello, aunque se podría suponer que no se alcanza el estado estacionario en realidad sí lo hace, pues lo que ocurre es que el error es mayor ya que la distancia que nos da es siempre constante e igual a 0.34375.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
En el segundo 1 se sitúa en el extremo 0 un filtro que limpia dicha posición. Hasta ese instante el problema es idéntico a los anteriores, pero a partir de entonces slo la concentración será nula en el extremo inicial. El nuevo valor estacionario es 0 ya que se va eliminando contaminante.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Contaminante0.png|400x400px|miniaturadeimagen|izquierda|Se aprecia que en la izquierda la cantidad de contaminante es 0]]&lt;br /&gt;
[[Archivo:TiempoGrande.png|400x400px|miniaturadeimagen|centro|Cuando el tiempo es muy grande la concentración total desciende a 0]] &amp;lt;br /&amp;gt;&lt;br /&gt;
Para obtener ambos gráficos se ha utilizado el siguiente programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Además este estado estacionario (que es 0) se alcanzará con menos del 5%  de error en 78.1875 segundos.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos este programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=100;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39613</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39613"/>
				<updated>2017-05-09T09:57:10Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: /* Conservación de la masa. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo &amp;lt;br /&amp;gt;Javier Carrillo&amp;lt;br /&amp;gt; Pablo Escudero &amp;lt;br /&amp;gt;Alejandro Gaitón&amp;lt;br /&amp;gt; Alejandro González&amp;lt;br /&amp;gt; Pablo Vidal }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Planteamiento del sistema. ==&lt;br /&gt;
En primer lugar, sabemos que para que se produzca difusión, es necesario que exista un gradiente de concentración o diferencia entre dos puntos del medio. Definimos la variable u como la concentración de contaminante en cada posición del tubo (que consideramos unidimensional y con sección despreciable, de longitud L=8m), la cual varía a lo largo del eje de abscisas (eje x), por lo que el intervalo en el que trabajaremos será [0,L]. Teniendo en cuenta la ley de Flick, sabemos que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x). Añadiendo la variable del tiempo, la concentración de contaminante en cada posición y en cada instante la expresaremos por u(x,t). La acumulación de partículas en cada instante que se produce por cada unidad de volumen S.dx (S es la sección) es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir uS-u’S=(du/dx).S.dx La acumulación de partículas por unidad de tiempo es S.dx.(du/dt) Si igualamos ambas expresiones y aplicamos la Ley de Flick nos queda d(D.(du/dx))/dx=du/dt. Obtenemos una ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión. Todo esto es válido si el coeficiente de difusión D no depende de la concentración.&lt;br /&gt;
&lt;br /&gt;
== Resolución del sistema. ==&lt;br /&gt;
Resolvemos por el método de las líneas la ecuación diferencial con dos condiciones Newman que vienen dadas por la ausencia de flujo en los extremos del tubo. Empleamos también la condición inicial: u(x,0) = 2, si x ≤ 4, 4, si x &amp;gt; 4 y resolvemos matricialmente el sistema de N+1 incógnitas.&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Datos&lt;br /&gt;
  L=8;&lt;br /&gt;
T=7;&lt;br /&gt;
 q=1;&lt;br /&gt;
 &lt;br /&gt;
 % Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &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&lt;br /&gt;
 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;
 &lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Resolución.png|400x400px|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa. ==&lt;br /&gt;
Integramos en todos los instantes la cantidad de contaminante que hay en cada punto de la barra, lo que nos da la masa total de contaminante en cada instante. A partir de la ecuación u(x,t)se deduce que la masa total del contaminante se conserva a lo largo del tiempo. Dicha masa es '''23.550''', hallada según el programa:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=12;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&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))/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio))&lt;br /&gt;
}}&lt;br /&gt;
=== Evidencias ===&lt;br /&gt;
[[Archivo:Conservación_de_la_masa.png|500x500px|miniaturadeimagen|izquierda|&amp;quot;La masa es constante en el tiempo&amp;quot;]] [[Archivo:Cantidad en el punto medio.png|500x500px|miniaturadeimagen|derecha|&amp;quot;Variación de la masa en el punto medio&amp;quot;]]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aplicación de los métodos ==&lt;br /&gt;
Resolvemos por los métodos de Euler explícito, ímplicito y de Heun con las condiciones inicilales del ejercicio anterior.&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler explícito ===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Euler Explicito&lt;br /&gt;
  % Datos del problema&lt;br /&gt;
  L=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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);%tienes N+1 incognitas&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler implícito ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Heun ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
  N=round(L/h);&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=[2*ones(1,2+N*4/8),3*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Comparación de resultados ===&lt;br /&gt;
[[Archivo:Heun2.png|400px|miniaturadeimagen|derecha|Heun]]&lt;br /&gt;
[[Archivo:Euler_exp.png|400px|miniaturadeimagen|izquierda|Euler explícito]] [[Archivo:Euler_imp.png|400px|miniaturadeimagen|centro|Euler implícito]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                        &amp;lt;big&amp;gt;'''Observando las gráficas se aprecia que apenas hay diferencia.'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Concentración casi constante. Consecuencias. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la imagen apreciamos como a tiempos grandes (50 segundos) el contaminante se distribuye de forma homogénea estabilizándose en 2.9438, la cantidad de contaminante total dividida la longitud del tubo, 8.&lt;br /&gt;
[[Archivo:Regimen_estacionario.png|350x350px|miniaturadeimagen|izquierda|Régimen estacionario]]&lt;br /&gt;
&lt;br /&gt;
Por lo que podemos decir que el flujo es 0(muy próximo) y por la tanto la tanto la solución es homogénea siendo en cada instante y posición 2.9438.&lt;br /&gt;
La función de la solución sería u(x,t)= 2.9438 cuando el tiempo es grande.&lt;br /&gt;
Este estado estacionario se da cuando el flujo se aproxime a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para demostrar esta solución en régimen estacionario hemos usado los tiempos 0,1,2,10 y hemos calculado la media cuadrada entre el valor de estacionamiento y los diferentes valores de la concentración en cada posición:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Distancia para 0 segundos= 0.999499&amp;lt;br /&amp;gt;Distancia para 1 segundos = 0.776147&amp;lt;br /&amp;gt;Distancia para 2 segundos  = 0.657469&amp;lt;br /&amp;gt;Distancia para 10 segundos = 0.192049&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(L/h);&lt;br /&gt;
x=0:h:L; &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&lt;br /&gt;
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;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&lt;br /&gt;
dist0=(sqrt(sum((sol(1,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist1=(sqrt(sum((sol(28,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist2=(sqrt(sum((sol(56,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist10=(sqrt(sum((sol(267,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Uso de un limpiador de contaminante. Conclusiones. ==&lt;br /&gt;
Hemos calculado el tiempo en el cual podemos considerar que se ha alcanzado el estado estacionario (es decir cuando la distancia que hemos calculado anteriormente es menor de un valor establecido). El valor establecido es el 5% de la concentración media, es decir que este valor es 0.147187.&amp;lt;br /&amp;gt;&lt;br /&gt;
El tiempo que nos ha dado es 11.7375 segundos. &amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos el siguiente programa con tiempo 50.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=50;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
Hemos querido probar si el ∆x influía y para ello lo hemos multiplicado por 10. Hemos utilizado el anterior programa y solo hemos cambiado el ∆x .&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=400;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=1.5;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
x=[0,1.5,3,4.5,6,7.5,8]; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Y cambia el resultado ya que la distancia en ningún momento es menor del 5%, es decir de 0.147187. Por ello, aunque se podría suponer que no se alcanza el estado estacionario en realidad sí lo hace, pues lo que ocurre es que el error es mayor ya que la distancia que nos da es siempre constante e igual a 0.34375.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
En el segundo 1 se sitúa en el extremo 0 un filtro que limpia dicha posición. Hasta ese instante el problema es idéntico a los anteriores, pero a partir de entonces slo la concentración será nula en el extremo inicial. El nuevo valor estacionario es 0 ya que se va eliminando contaminante.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Contaminante0.png|400x400px|miniaturadeimagen|izquierda|Se aprecia que en la izquierda la cantidad de contaminante es 0]]&lt;br /&gt;
[[Archivo:TiempoGrande.png|400x400px|miniaturadeimagen|centro|Cuando el tiempo es muy grande la concentración total desciende a 0]] &amp;lt;br /&amp;gt;&lt;br /&gt;
Para obtener ambos gráficos se ha utilizado el siguiente programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Además este estado estacionario (que es 0) se alcanzará con menos del 5%  de error en 78.1875 segundos.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos este programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=100;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39612</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39612"/>
				<updated>2017-05-09T09:55:46Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo &amp;lt;br /&amp;gt;Javier Carrillo&amp;lt;br /&amp;gt; Pablo Escudero &amp;lt;br /&amp;gt;Alejandro Gaitón&amp;lt;br /&amp;gt; Alejandro González&amp;lt;br /&amp;gt; Pablo Vidal }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Planteamiento del sistema. ==&lt;br /&gt;
En primer lugar, sabemos que para que se produzca difusión, es necesario que exista un gradiente de concentración o diferencia entre dos puntos del medio. Definimos la variable u como la concentración de contaminante en cada posición del tubo (que consideramos unidimensional y con sección despreciable, de longitud L=8m), la cual varía a lo largo del eje de abscisas (eje x), por lo que el intervalo en el que trabajaremos será [0,L]. Teniendo en cuenta la ley de Flick, sabemos que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x). Añadiendo la variable del tiempo, la concentración de contaminante en cada posición y en cada instante la expresaremos por u(x,t). La acumulación de partículas en cada instante que se produce por cada unidad de volumen S.dx (S es la sección) es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir uS-u’S=(du/dx).S.dx La acumulación de partículas por unidad de tiempo es S.dx.(du/dt) Si igualamos ambas expresiones y aplicamos la Ley de Flick nos queda d(D.(du/dx))/dx=du/dt. Obtenemos una ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión. Todo esto es válido si el coeficiente de difusión D no depende de la concentración.&lt;br /&gt;
&lt;br /&gt;
== Resolución del sistema. ==&lt;br /&gt;
Resolvemos por el método de las líneas la ecuación diferencial con dos condiciones Newman que vienen dadas por la ausencia de flujo en los extremos del tubo. Empleamos también la condición inicial: u(x,0) = 2, si x ≤ 4, 4, si x &amp;gt; 4 y resolvemos matricialmente el sistema de N+1 incógnitas.&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Datos&lt;br /&gt;
  L=8;&lt;br /&gt;
T=7;&lt;br /&gt;
 q=1;&lt;br /&gt;
 &lt;br /&gt;
 % Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &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&lt;br /&gt;
 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;
 &lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Resolución.png|400x400px|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa. ==&lt;br /&gt;
Integramos en todos los instantes la cantidad de contaminante que hay en cada punto de la barra, lo que nos da la masa total de contaminante en cada instante. A partir de la ecuación u(x,t)se deduce que la masa total del contaminante se conserva a lo largo del tiempo. Dicha masa es '''23.550''', hallada según el programa:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=12;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&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))/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Conservación_de_la_masa.png|500x500px|miniaturadeimagen|izquierda|&amp;quot;La masa es constante en el tiempo&amp;quot;]] [[Archivo:Cantidad en el punto medio.png|500x500px|miniaturadeimagen|derecha|&amp;quot;Variación de la masa en el punto medio&amp;quot;]]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aplicación de los métodos ==&lt;br /&gt;
Resolvemos por los métodos de Euler explícito, ímplicito y de Heun con las condiciones inicilales del ejercicio anterior.&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler explícito ===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Euler Explicito&lt;br /&gt;
  % Datos del problema&lt;br /&gt;
  L=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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);%tienes N+1 incognitas&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler implícito ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Heun ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
  N=round(L/h);&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=[2*ones(1,2+N*4/8),3*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Comparación de resultados ===&lt;br /&gt;
[[Archivo:Heun2.png|400px|miniaturadeimagen|derecha|Heun]]&lt;br /&gt;
[[Archivo:Euler_exp.png|400px|miniaturadeimagen|izquierda|Euler explícito]] [[Archivo:Euler_imp.png|400px|miniaturadeimagen|centro|Euler implícito]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                        &amp;lt;big&amp;gt;'''Observando las gráficas se aprecia que apenas hay diferencia.'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Concentración casi constante. Consecuencias. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la imagen apreciamos como a tiempos grandes (50 segundos) el contaminante se distribuye de forma homogénea estabilizándose en 2.9438, la cantidad de contaminante total dividida la longitud del tubo, 8.&lt;br /&gt;
[[Archivo:Regimen_estacionario.png|350x350px|miniaturadeimagen|izquierda|Régimen estacionario]]&lt;br /&gt;
&lt;br /&gt;
Por lo que podemos decir que el flujo es 0(muy próximo) y por la tanto la tanto la solución es homogénea siendo en cada instante y posición 2.9438.&lt;br /&gt;
La función de la solución sería u(x,t)= 2.9438 cuando el tiempo es grande.&lt;br /&gt;
Este estado estacionario se da cuando el flujo se aproxime a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para demostrar esta solución en régimen estacionario hemos usado los tiempos 0,1,2,10 y hemos calculado la media cuadrada entre el valor de estacionamiento y los diferentes valores de la concentración en cada posición:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Distancia para 0 segundos= 0.999499&amp;lt;br /&amp;gt;Distancia para 1 segundos = 0.776147&amp;lt;br /&amp;gt;Distancia para 2 segundos  = 0.657469&amp;lt;br /&amp;gt;Distancia para 10 segundos = 0.192049&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(L/h);&lt;br /&gt;
x=0:h:L; &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&lt;br /&gt;
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;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&lt;br /&gt;
dist0=(sqrt(sum((sol(1,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist1=(sqrt(sum((sol(28,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist2=(sqrt(sum((sol(56,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist10=(sqrt(sum((sol(267,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Uso de un limpiador de contaminante. Conclusiones. ==&lt;br /&gt;
Hemos calculado el tiempo en el cual podemos considerar que se ha alcanzado el estado estacionario (es decir cuando la distancia que hemos calculado anteriormente es menor de un valor establecido). El valor establecido es el 5% de la concentración media, es decir que este valor es 0.147187.&amp;lt;br /&amp;gt;&lt;br /&gt;
El tiempo que nos ha dado es 11.7375 segundos. &amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos el siguiente programa con tiempo 50.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=50;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
Hemos querido probar si el ∆x influía y para ello lo hemos multiplicado por 10. Hemos utilizado el anterior programa y solo hemos cambiado el ∆x .&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=400;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=1.5;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
x=[0,1.5,3,4.5,6,7.5,8]; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Y cambia el resultado ya que la distancia en ningún momento es menor del 5%, es decir de 0.147187. Por ello, aunque se podría suponer que no se alcanza el estado estacionario en realidad sí lo hace, pues lo que ocurre es que el error es mayor ya que la distancia que nos da es siempre constante e igual a 0.34375.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
En el segundo 1 se sitúa en el extremo 0 un filtro que limpia dicha posición. Hasta ese instante el problema es idéntico a los anteriores, pero a partir de entonces slo la concentración será nula en el extremo inicial. El nuevo valor estacionario es 0 ya que se va eliminando contaminante.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Contaminante0.png|400x400px|miniaturadeimagen|izquierda|Se aprecia que en la izquierda la cantidad de contaminante es 0]]&lt;br /&gt;
[[Archivo:TiempoGrande.png|400x400px|miniaturadeimagen|centro|Cuando el tiempo es muy grande la concentración total desciende a 0]] &amp;lt;br /&amp;gt;&lt;br /&gt;
Para obtener ambos gráficos se ha utilizado el siguiente programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Además este estado estacionario (que es 0) se alcanzará con menos del 5%  de error en 78.1875 segundos.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos este programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=100;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39611</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39611"/>
				<updated>2017-05-09T09:53:12Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: /* Conservación de la masa. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo &amp;lt;br /&amp;gt;Javier Carrillo&amp;lt;br /&amp;gt; Pablo Escudero &amp;lt;br /&amp;gt;Alejandro Gaitón&amp;lt;br /&amp;gt; Alejandro González&amp;lt;br /&amp;gt; Pablo Vidal }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Planteamiento del sistema. ==&lt;br /&gt;
En primer lugar, sabemos que para que se produzca difusión, es necesario que exista un gradiente de concentración o diferencia entre dos puntos del medio. Definimos la variable u como la concentración de contaminante en cada posición del tubo (que consideramos unidimensional y con sección despreciable, de longitud L=8m), la cual varía a lo largo del eje de abscisas (eje x), por lo que el intervalo en el que trabajaremos será [0,L]. Teniendo en cuenta la ley de Flick, sabemos que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x). Añadiendo la variable del tiempo, la concentración de contaminante en cada posición y en cada instante la expresaremos por u(x,t). La acumulación de partículas en cada instante que se produce por cada unidad de volumen S.dx (S es la sección) es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir uS-u’S=(du/dx).S.dx La acumulación de partículas por unidad de tiempo es S.dx.(du/dt) Si igualamos ambas expresiones y aplicamos la Ley de Flick nos queda d(D.(du/dx))/dx=du/dt. Obtenemos una ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión. Todo esto es válido si el coeficiente de difusión D no depende de la concentración.&lt;br /&gt;
&lt;br /&gt;
== Resolución del sistema. ==&lt;br /&gt;
Resolvemos por el método de las líneas la ecuación diferencial con dos condiciones Newman que vienen dadas por la ausencia de flujo en los extremos del tubo. Empleamos también la condición inicial: u(x,0) = 2, si x ≤ 4, 4, si x &amp;gt; 4 y resolvemos matricialmente el sistema de N+1 incógnitas.&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Datos&lt;br /&gt;
  L=8;&lt;br /&gt;
T=7;&lt;br /&gt;
 q=1;&lt;br /&gt;
 &lt;br /&gt;
 % Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &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&lt;br /&gt;
 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;
 &lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Resolución.png|400x400px|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa. ==&lt;br /&gt;
Integramos en todos los instantes la cantidad de contaminante que hay en cada punto de la barra, lo que nos da la masa total de contaminante en cada instante. A partir de la ecuación u(x,t)se deduce que la masa total del contaminante se conserva a lo largo del tiempo. Dicha masa es '''23.550''', hallada según el programa:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=12;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&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))/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Conservación_de_la_masa.png|500x500px|miniaturadeimagen|izquierda|&amp;quot;La masa es constante en el tiempo&amp;quot;]] [[Archivo:Cantidad en el punto medio.png|500x500px|miniaturadeimagen|derecha|&amp;quot;Variación de la masa en el punto medio&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== Aplicación de los métodos ==&lt;br /&gt;
Resolvemos por los métodos de Euler explícito, ímplicito y de Heun con las condiciones inicilales del ejercicio anterior.&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler explícito ===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Euler Explicito&lt;br /&gt;
  % Datos del problema&lt;br /&gt;
  L=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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);%tienes N+1 incognitas&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler implícito ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Heun ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
  N=round(L/h);&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=[2*ones(1,2+N*4/8),3*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Comparación de resultados ===&lt;br /&gt;
[[Archivo:Heun2.png|400px|miniaturadeimagen|derecha|Heun]]&lt;br /&gt;
[[Archivo:Euler_exp.png|400px|miniaturadeimagen|izquierda|Euler explícito]] [[Archivo:Euler_imp.png|400px|miniaturadeimagen|centro|Euler implícito]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                        &amp;lt;big&amp;gt;'''Observando las gráficas se aprecia que apenas hay diferencia.'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Concentración casi constante. Consecuencias. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la imagen apreciamos como a tiempos grandes (50 segundos) el contaminante se distribuye de forma homogénea estabilizándose en 2.9438, la cantidad de contaminante total dividida la longitud del tubo, 8.&lt;br /&gt;
[[Archivo:Regimen_estacionario.png|350x350px|miniaturadeimagen|izquierda|Régimen estacionario]]&lt;br /&gt;
&lt;br /&gt;
Por lo que podemos decir que el flujo es 0(muy próximo) y por la tanto la tanto la solución es homogénea siendo en cada instante y posición 2.9438.&lt;br /&gt;
La función de la solución sería u(x,t)= 2.9438 cuando el tiempo es grande.&lt;br /&gt;
Este estado estacionario se da cuando el flujo se aproxime a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para demostrar esta solución en régimen estacionario hemos usado los tiempos 0,1,2,10 y hemos calculado la media cuadrada entre el valor de estacionamiento y los diferentes valores de la concentración en cada posición:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Distancia para 0 segundos= 0.999499&amp;lt;br /&amp;gt;Distancia para 1 segundos = 0.776147&amp;lt;br /&amp;gt;Distancia para 2 segundos  = 0.657469&amp;lt;br /&amp;gt;Distancia para 10 segundos = 0.192049&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(L/h);&lt;br /&gt;
x=0:h:L; &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&lt;br /&gt;
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;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&lt;br /&gt;
dist0=(sqrt(sum((sol(1,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist1=(sqrt(sum((sol(28,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist2=(sqrt(sum((sol(56,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist10=(sqrt(sum((sol(267,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Uso de un limpiador de contaminante. Conclusiones. ==&lt;br /&gt;
Hemos calculado el tiempo en el cual podemos considerar que se ha alcanzado el estado estacionario (es decir cuando la distancia que hemos calculado anteriormente es menor de un valor establecido). El valor establecido es el 5% de la concentración media, es decir que este valor es 0.147187.&amp;lt;br /&amp;gt;&lt;br /&gt;
El tiempo que nos ha dado es 11.7375 segundos. &amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos el siguiente programa con tiempo 50.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=50;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
Hemos querido probar si el ∆x influía y para ello lo hemos multiplicado por 10. Hemos utilizado el anterior programa y solo hemos cambiado el ∆x .&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=400;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=1.5;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
x=[0,1.5,3,4.5,6,7.5,8]; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Y cambia el resultado ya que la distancia en ningún momento es menor del 5%, es decir de 0.147187. Por ello, aunque se podría suponer que no se alcanza el estado estacionario en realidad sí lo hace, pues lo que ocurre es que el error es mayor ya que la distancia que nos da es siempre constante e igual a 0.34375.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
En el segundo 1 se sitúa en el extremo 0 un filtro que limpia dicha posición. Hasta ese instante el problema es idéntico a los anteriores, pero a partir de entonces slo la concentración será nula en el extremo inicial. El nuevo valor estacionario es 0 ya que se va eliminando contaminante.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Contaminante0.png|400x400px|miniaturadeimagen|izquierda|Se aprecia que en la izquierda la cantidad de contaminante es 0]]&lt;br /&gt;
[[Archivo:TiempoGrande.png|400x400px|miniaturadeimagen|centro|Cuando el tiempo es muy grande la concentración total desciende a 0]] &amp;lt;br /&amp;gt;&lt;br /&gt;
Para obtener ambos gráficos se ha utilizado el siguiente programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Además este estado estacionario (que es 0) se alcanzará con menos del 5%  de error en 78.1875 segundos.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos este programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=100;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39610</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39610"/>
				<updated>2017-05-09T09:37:48Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo &amp;lt;br /&amp;gt;Javier Carrillo&amp;lt;br /&amp;gt; Pablo Escudero &amp;lt;br /&amp;gt;Alejandro Gaitón&amp;lt;br /&amp;gt; Alejandro González&amp;lt;br /&amp;gt; Pablo Vidal }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Planteamiento del sistema. ==&lt;br /&gt;
En primer lugar, sabemos que para que se produzca difusión, es necesario que exista un gradiente de concentración o diferencia entre dos puntos del medio. Definimos la variable u como la concentración de contaminante en cada posición del tubo (que consideramos unidimensional y con sección despreciable, de longitud L=8m), la cual varía a lo largo del eje de abscisas (eje x), por lo que el intervalo en el que trabajaremos será [0,L]. Teniendo en cuenta la ley de Flick, sabemos que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x). Añadiendo la variable del tiempo, la concentración de contaminante en cada posición y en cada instante la expresaremos por u(x,t). La acumulación de partículas en cada instante que se produce por cada unidad de volumen S.dx (S es la sección) es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir uS-u’S=(du/dx).S.dx La acumulación de partículas por unidad de tiempo es S.dx.(du/dt) Si igualamos ambas expresiones y aplicamos la Ley de Flick nos queda d(D.(du/dx))/dx=du/dt. Obtenemos una ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión. Todo esto es válido si el coeficiente de difusión D no depende de la concentración.&lt;br /&gt;
&lt;br /&gt;
== Resolución del sistema. ==&lt;br /&gt;
Resolvemos por el método de las líneas la ecuación diferencial con dos condiciones Newman que vienen dadas por la ausencia de flujo en los extremos del tubo. Empleamos también la condición inicial: u(x,0) = 2, si x ≤ 4, 4, si x &amp;gt; 4 y resolvemos matricialmente el sistema de N+1 incógnitas.&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Datos&lt;br /&gt;
  L=8;&lt;br /&gt;
T=7;&lt;br /&gt;
 q=1;&lt;br /&gt;
 &lt;br /&gt;
 % Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &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&lt;br /&gt;
 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;
 &lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Resolución.png|400x400px|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa. ==&lt;br /&gt;
Integramos en todos los instantes la cantidad de contaminante que hay en cada punto de la barra, lo que nos da la masa total de contaminante en cada instante. A partir de la ecuación u(x,t)se deduce que la masa total del contaminante se conserva a lo largo del tiempo. Dicha masa es 23.550, hallada según el programa:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=12;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&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))/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Conservación_de_la_masa.png|500x500px|miniaturadeimagen|izquierda|&amp;quot;La masa es constante en el tiempo&amp;quot;]] [[Archivo:Cantidad en el punto medio.png|500x500px|miniaturadeimagen|derecha|&amp;quot;Variación de la masa en el punto medio&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aplicación de los métodos ==&lt;br /&gt;
Resolvemos por los métodos de Euler explícito, ímplicito y de Heun con las condiciones inicilales del ejercicio anterior.&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler explícito ===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Euler Explicito&lt;br /&gt;
  % Datos del problema&lt;br /&gt;
  L=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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);%tienes N+1 incognitas&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler implícito ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Heun ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
  N=round(L/h);&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=[2*ones(1,2+N*4/8),3*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Comparación de resultados ===&lt;br /&gt;
[[Archivo:Heun2.png|400px|miniaturadeimagen|derecha|Heun]]&lt;br /&gt;
[[Archivo:Euler_exp.png|400px|miniaturadeimagen|izquierda|Euler explícito]] [[Archivo:Euler_imp.png|400px|miniaturadeimagen|centro|Euler implícito]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                        &amp;lt;big&amp;gt;'''Observando las gráficas se aprecia que apenas hay diferencia.'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Concentración casi constante. Consecuencias. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la imagen apreciamos como a tiempos grandes (50 segundos) el contaminante se distribuye de forma homogénea estabilizándose en 2.9438, la cantidad de contaminante total dividida la longitud del tubo, 8.&lt;br /&gt;
[[Archivo:Regimen_estacionario.png|350x350px|miniaturadeimagen|izquierda|Régimen estacionario]]&lt;br /&gt;
&lt;br /&gt;
Por lo que podemos decir que el flujo es 0(muy próximo) y por la tanto la tanto la solución es homogénea siendo en cada instante y posición 2.9438.&lt;br /&gt;
La función de la solución sería u(x,t)= 2.9438 cuando el tiempo es grande.&lt;br /&gt;
Este estado estacionario se da cuando el flujo se aproxime a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para demostrar esta solución en régimen estacionario hemos usado los tiempos 0,1,2,10 y hemos calculado la media cuadrada entre el valor de estacionamiento y los diferentes valores de la concentración en cada posición:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Distancia para 0 segundos= 0.999499&amp;lt;br /&amp;gt;Distancia para 1 segundos = 0.776147&amp;lt;br /&amp;gt;Distancia para 2 segundos  = 0.657469&amp;lt;br /&amp;gt;Distancia para 10 segundos = 0.192049&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(L/h);&lt;br /&gt;
x=0:h:L; &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&lt;br /&gt;
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;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&lt;br /&gt;
dist0=(sqrt(sum((sol(1,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist1=(sqrt(sum((sol(28,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist2=(sqrt(sum((sol(56,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist10=(sqrt(sum((sol(267,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Uso de un limpiador de contaminante. Conclusiones. ==&lt;br /&gt;
Hemos calculado el tiempo en el cual podemos considerar que se ha alcanzado el estado estacionario (es decir cuando la distancia que hemos calculado anteriormente es menor de un valor establecido). El valor establecido es el 5% de la concentración media, es decir que este valor es 0.147187.&amp;lt;br /&amp;gt;&lt;br /&gt;
El tiempo que nos ha dado es 11.7375 segundos. &amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos el siguiente programa con tiempo 50.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=50;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
Hemos querido probar si el ∆x influía y para ello lo hemos multiplicado por 10. Hemos utilizado el anterior programa y solo hemos cambiado el ∆x .&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=400;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=1.5;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
x=[0,1.5,3,4.5,6,7.5,8]; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Y cambia el resultado ya que la distancia en ningún momento es menor del 5%, es decir de 0.147187. Por ello, aunque se podría suponer que no se alcanza el estado estacionario en realidad sí lo hace, pues lo que ocurre es que el error es mayor ya que la distancia que nos da es siempre constante e igual a 0.34375.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
En el segundo 1 se sitúa en el extremo 0 un filtro que limpia dicha posición. Hasta ese instante el problema es idéntico a los anteriores, pero a partir de entonces slo la concentración será nula en el extremo inicial. El nuevo valor estacionario es 0 ya que se va eliminando contaminante.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Contaminante0.png|400x400px|miniaturadeimagen|izquierda|Se aprecia que en la izquierda la cantidad de contaminante es 0]]&lt;br /&gt;
[[Archivo:TiempoGrande.png|400x400px|miniaturadeimagen|centro|Cuando el tiempo es muy grande la concentración total desciende a 0]] &amp;lt;br /&amp;gt;&lt;br /&gt;
Para obtener ambos gráficos se ha utilizado el siguiente programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Además este estado estacionario (que es 0) se alcanzará con menos del 5%  de error en 78.1875 segundos.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos este programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=100;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39609</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39609"/>
				<updated>2017-05-09T09:37:21Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: /* Aplicación de Euler implícito y Heun. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo &amp;lt;br /&amp;gt;Javier Carrillo&amp;lt;br /&amp;gt; Pablo Escudero &amp;lt;br /&amp;gt;Alejandro Gaitón&amp;lt;br /&amp;gt; Alejandro González&amp;lt;br /&amp;gt; Pablo Vidal }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
== Planteamiento del sistema. ==&lt;br /&gt;
En primer lugar, sabemos que para que se produzca difusión, es necesario que exista un gradiente de concentración o diferencia entre dos puntos del medio. Definimos la variable u como la concentración de contaminante en cada posición del tubo (que consideramos unidimensional y con sección despreciable, de longitud L=8m), la cual varía a lo largo del eje de abscisas (eje x), por lo que el intervalo en el que trabajaremos será [0,L]. Teniendo en cuenta la ley de Flick, sabemos que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x). Añadiendo la variable del tiempo, la concentración de contaminante en cada posición y en cada instante la expresaremos por u(x,t). La acumulación de partículas en cada instante que se produce por cada unidad de volumen S.dx (S es la sección) es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir uS-u’S=(du/dx).S.dx La acumulación de partículas por unidad de tiempo es S.dx.(du/dt) Si igualamos ambas expresiones y aplicamos la Ley de Flick nos queda d(D.(du/dx))/dx=du/dt. Obtenemos una ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión. Todo esto es válido si el coeficiente de difusión D no depende de la concentración.&lt;br /&gt;
&lt;br /&gt;
== Resolución del sistema. ==&lt;br /&gt;
Resolvemos por el método de las líneas la ecuación diferencial con dos condiciones Newman que vienen dadas por la ausencia de flujo en los extremos del tubo. Empleamos también la condición inicial: u(x,0) = 2, si x ≤ 4, 4, si x &amp;gt; 4 y resolvemos matricialmente el sistema de N+1 incógnitas.&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Datos&lt;br /&gt;
  L=8;&lt;br /&gt;
T=7;&lt;br /&gt;
 q=1;&lt;br /&gt;
 &lt;br /&gt;
 % Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &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&lt;br /&gt;
 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;
 &lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Resolución.png|400x400px|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa. ==&lt;br /&gt;
Integramos en todos los instantes la cantidad de contaminante que hay en cada punto de la barra, lo que nos da la masa total de contaminante en cada instante. A partir de la ecuación u(x,t)se deduce que la masa total del contaminante se conserva a lo largo del tiempo. Dicha masa es 23.550, hallada según el programa:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=12;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&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))/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Conservación_de_la_masa.png|500x500px|miniaturadeimagen|izquierda|&amp;quot;La masa es constante en el tiempo&amp;quot;]] [[Archivo:Cantidad en el punto medio.png|500x500px|miniaturadeimagen|derecha|&amp;quot;Variación de la masa en el punto medio&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aplicación de los métodos ==&lt;br /&gt;
Resolvemos por los métodos de Euler explícito, ímplicito y de Heun con las condiciones inicilales del ejercicio anterior.&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler explícito ===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Euler Explicito&lt;br /&gt;
  % Datos del problema&lt;br /&gt;
  L=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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);%tienes N+1 incognitas&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler implícito ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Heun ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
  N=round(L/h);&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=[2*ones(1,2+N*4/8),3*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Comparación de resultados ===&lt;br /&gt;
[[Archivo:Heun2.png|400px|miniaturadeimagen|derecha|Heun]]&lt;br /&gt;
[[Archivo:Euler_exp.png|400px|miniaturadeimagen|izquierda|Euler explícito]] [[Archivo:Euler_imp.png|400px|miniaturadeimagen|centro|Euler implícito]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                        &amp;lt;big&amp;gt;'''Observando las gráficas se aprecia que apenas hay diferencia.'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Concentración casi constante. Consecuencias. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la imagen apreciamos como a tiempos grandes (50 segundos) el contaminante se distribuye de forma homogénea estabilizándose en 2.9438, la cantidad de contaminante total dividida la longitud del tubo, 8.&lt;br /&gt;
[[Archivo:Regimen_estacionario.png|350x350px|miniaturadeimagen|izquierda|Régimen estacionario]]&lt;br /&gt;
&lt;br /&gt;
Por lo que podemos decir que el flujo es 0(muy próximo) y por la tanto la tanto la solución es homogénea siendo en cada instante y posición 2.9438.&lt;br /&gt;
La función de la solución sería u(x,t)= 2.9438 cuando el tiempo es grande.&lt;br /&gt;
Este estado estacionario se da cuando el flujo se aproxime a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para demostrar esta solución en régimen estacionario hemos usado los tiempos 0,1,2,10 y hemos calculado la media cuadrada entre el valor de estacionamiento y los diferentes valores de la concentración en cada posición:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Distancia para 0 segundos= 0.999499&amp;lt;br /&amp;gt;Distancia para 1 segundos = 0.776147&amp;lt;br /&amp;gt;Distancia para 2 segundos  = 0.657469&amp;lt;br /&amp;gt;Distancia para 10 segundos = 0.192049&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(L/h);&lt;br /&gt;
x=0:h:L; &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&lt;br /&gt;
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;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&lt;br /&gt;
dist0=(sqrt(sum((sol(1,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist1=(sqrt(sum((sol(28,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist2=(sqrt(sum((sol(56,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist10=(sqrt(sum((sol(267,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Uso de un limpiador de contaminante. Conclusiones. ==&lt;br /&gt;
Hemos calculado el tiempo en el cual podemos considerar que se ha alcanzado el estado estacionario (es decir cuando la distancia que hemos calculado anteriormente es menor de un valor establecido). El valor establecido es el 5% de la concentración media, es decir que este valor es 0.147187.&amp;lt;br /&amp;gt;&lt;br /&gt;
El tiempo que nos ha dado es 11.7375 segundos. &amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos el siguiente programa con tiempo 50.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=50;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
Hemos querido probar si el ∆x influía y para ello lo hemos multiplicado por 10. Hemos utilizado el anterior programa y solo hemos cambiado el ∆x .&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=400;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=1.5;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
x=[0,1.5,3,4.5,6,7.5,8]; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Y cambia el resultado ya que la distancia en ningún momento es menor del 5%, es decir de 0.147187. Por ello, aunque se podría suponer que no se alcanza el estado estacionario en realidad sí lo hace, pues lo que ocurre es que el error es mayor ya que la distancia que nos da es siempre constante e igual a 0.34375.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
En el segundo 1 se sitúa en el extremo 0 un filtro que limpia dicha posición. Hasta ese instante el problema es idéntico a los anteriores, pero a partir de entonces slo la concentración será nula en el extremo inicial. El nuevo valor estacionario es 0 ya que se va eliminando contaminante.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Contaminante0.png|400x400px|miniaturadeimagen|izquierda|Se aprecia que en la izquierda la cantidad de contaminante es 0]]&lt;br /&gt;
[[Archivo:TiempoGrande.png|400x400px|miniaturadeimagen|centro|Cuando el tiempo es muy grande la concentración total desciende a 0]] &amp;lt;br /&amp;gt;&lt;br /&gt;
Para obtener ambos gráficos se ha utilizado el siguiente programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Además este estado estacionario (que es 0) se alcanzará con menos del 5%  de error en 78.1875 segundos.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos este programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=100;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39608</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39608"/>
				<updated>2017-05-09T09:36:43Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: /* Aplicación de Euler implícito y Heun. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo &amp;lt;br /&amp;gt;Javier Carrillo&amp;lt;br /&amp;gt; Pablo Escudero &amp;lt;br /&amp;gt;Alejandro Gaitón&amp;lt;br /&amp;gt; Alejandro González&amp;lt;br /&amp;gt; Pablo Vidal }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
== Planteamiento del sistema. ==&lt;br /&gt;
En primer lugar, sabemos que para que se produzca difusión, es necesario que exista un gradiente de concentración o diferencia entre dos puntos del medio. Definimos la variable u como la concentración de contaminante en cada posición del tubo (que consideramos unidimensional y con sección despreciable, de longitud L=8m), la cual varía a lo largo del eje de abscisas (eje x), por lo que el intervalo en el que trabajaremos será [0,L]. Teniendo en cuenta la ley de Flick, sabemos que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x). Añadiendo la variable del tiempo, la concentración de contaminante en cada posición y en cada instante la expresaremos por u(x,t). La acumulación de partículas en cada instante que se produce por cada unidad de volumen S.dx (S es la sección) es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir uS-u’S=(du/dx).S.dx La acumulación de partículas por unidad de tiempo es S.dx.(du/dt) Si igualamos ambas expresiones y aplicamos la Ley de Flick nos queda d(D.(du/dx))/dx=du/dt. Obtenemos una ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión. Todo esto es válido si el coeficiente de difusión D no depende de la concentración.&lt;br /&gt;
&lt;br /&gt;
== Resolución del sistema. ==&lt;br /&gt;
Resolvemos por el método de las líneas la ecuación diferencial con dos condiciones Newman que vienen dadas por la ausencia de flujo en los extremos del tubo. Empleamos también la condición inicial: u(x,0) = 2, si x ≤ 4, 4, si x &amp;gt; 4 y resolvemos matricialmente el sistema de N+1 incógnitas.&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Datos&lt;br /&gt;
  L=8;&lt;br /&gt;
T=7;&lt;br /&gt;
 q=1;&lt;br /&gt;
 &lt;br /&gt;
 % Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &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&lt;br /&gt;
 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;
 &lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Resolución.png|400x400px|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa. ==&lt;br /&gt;
Integramos en todos los instantes la cantidad de contaminante que hay en cada punto de la barra, lo que nos da la masa total de contaminante en cada instante. A partir de la ecuación u(x,t)se deduce que la masa total del contaminante se conserva a lo largo del tiempo. Dicha masa es 23.550, hallada según el programa:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=12;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&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))/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Conservación_de_la_masa.png|500x500px|miniaturadeimagen|izquierda|&amp;quot;La masa es constante en el tiempo&amp;quot;]] [[Archivo:Cantidad en el punto medio.png|500x500px|miniaturadeimagen|derecha|&amp;quot;Variación de la masa en el punto medio&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aplicación de Euler implícito y Heun. ==&lt;br /&gt;
Resolvemos por los métodos de Euler explícito, ímplicito y de Heun con las condiciones inicilales del ejercicio anterior.&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler explícito ===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Euler Explicito&lt;br /&gt;
  % Datos del problema&lt;br /&gt;
  L=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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);%tienes N+1 incognitas&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler implícito ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Heun ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
  N=round(L/h);&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=[2*ones(1,2+N*4/8),3*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Comparación de resultados ===&lt;br /&gt;
[[Archivo:Heun2.png|400px|miniaturadeimagen|derecha|Heun]]&lt;br /&gt;
[[Archivo:Euler_exp.png|400px|miniaturadeimagen|izquierda|Euler explícito]] [[Archivo:Euler_imp.png|400px|miniaturadeimagen|centro|Euler implícito]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                        &amp;lt;big&amp;gt;'''Observando las gráficas se aprecia que apenas hay diferencia.'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Concentración casi constante. Consecuencias. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la imagen apreciamos como a tiempos grandes (50 segundos) el contaminante se distribuye de forma homogénea estabilizándose en 2.9438, la cantidad de contaminante total dividida la longitud del tubo, 8.&lt;br /&gt;
[[Archivo:Regimen_estacionario.png|350x350px|miniaturadeimagen|izquierda|Régimen estacionario]]&lt;br /&gt;
&lt;br /&gt;
Por lo que podemos decir que el flujo es 0(muy próximo) y por la tanto la tanto la solución es homogénea siendo en cada instante y posición 2.9438.&lt;br /&gt;
La función de la solución sería u(x,t)= 2.9438 cuando el tiempo es grande.&lt;br /&gt;
Este estado estacionario se da cuando el flujo se aproxime a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para demostrar esta solución en régimen estacionario hemos usado los tiempos 0,1,2,10 y hemos calculado la media cuadrada entre el valor de estacionamiento y los diferentes valores de la concentración en cada posición:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Distancia para 0 segundos= 0.999499&amp;lt;br /&amp;gt;Distancia para 1 segundos = 0.776147&amp;lt;br /&amp;gt;Distancia para 2 segundos  = 0.657469&amp;lt;br /&amp;gt;Distancia para 10 segundos = 0.192049&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(L/h);&lt;br /&gt;
x=0:h:L; &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&lt;br /&gt;
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;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&lt;br /&gt;
dist0=(sqrt(sum((sol(1,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist1=(sqrt(sum((sol(28,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist2=(sqrt(sum((sol(56,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist10=(sqrt(sum((sol(267,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Uso de un limpiador de contaminante. Conclusiones. ==&lt;br /&gt;
Hemos calculado el tiempo en el cual podemos considerar que se ha alcanzado el estado estacionario (es decir cuando la distancia que hemos calculado anteriormente es menor de un valor establecido). El valor establecido es el 5% de la concentración media, es decir que este valor es 0.147187.&amp;lt;br /&amp;gt;&lt;br /&gt;
El tiempo que nos ha dado es 11.7375 segundos. &amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos el siguiente programa con tiempo 50.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=50;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
Hemos querido probar si el ∆x influía y para ello lo hemos multiplicado por 10. Hemos utilizado el anterior programa y solo hemos cambiado el ∆x .&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=400;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=1.5;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
x=[0,1.5,3,4.5,6,7.5,8]; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Y cambia el resultado ya que la distancia en ningún momento es menor del 5%, es decir de 0.147187. Por ello, aunque se podría suponer que no se alcanza el estado estacionario en realidad sí lo hace, pues lo que ocurre es que el error es mayor ya que la distancia que nos da es siempre constante e igual a 0.34375.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
En el segundo 1 se sitúa en el extremo 0 un filtro que limpia dicha posición. Hasta ese instante el problema es idéntico a los anteriores, pero a partir de entonces slo la concentración será nula en el extremo inicial. El nuevo valor estacionario es 0 ya que se va eliminando contaminante.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Contaminante0.png|400x400px|miniaturadeimagen|izquierda|Se aprecia que en la izquierda la cantidad de contaminante es 0]]&lt;br /&gt;
[[Archivo:TiempoGrande.png|400x400px|miniaturadeimagen|centro|Cuando el tiempo es muy grande la concentración total desciende a 0]] &amp;lt;br /&amp;gt;&lt;br /&gt;
Para obtener ambos gráficos se ha utilizado el siguiente programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Además este estado estacionario (que es 0) se alcanzará con menos del 5%  de error en 78.1875 segundos.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos este programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=100;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Heun2.png&amp;diff=39607</id>
		<title>Archivo:Heun2.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Heun2.png&amp;diff=39607"/>
				<updated>2017-05-09T09:30:29Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Euler_imp.png&amp;diff=39606</id>
		<title>Archivo:Euler imp.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Euler_imp.png&amp;diff=39606"/>
				<updated>2017-05-09T09:29:00Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Euler_exp.png&amp;diff=39605</id>
		<title>Archivo:Euler exp.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Euler_exp.png&amp;diff=39605"/>
				<updated>2017-05-09T09:26:17Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39604</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39604"/>
				<updated>2017-05-09T09:25:03Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: /* Resolución del sistema. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo &amp;lt;br /&amp;gt;Javier Carrillo&amp;lt;br /&amp;gt; Pablo Escudero &amp;lt;br /&amp;gt;Alejandro Gaitón&amp;lt;br /&amp;gt; Alejandro González&amp;lt;br /&amp;gt; Pablo Vidal }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
== Planteamiento del sistema. ==&lt;br /&gt;
En primer lugar, sabemos que para que se produzca difusión, es necesario que exista un gradiente de concentración o diferencia entre dos puntos del medio. Definimos la variable u como la concentración de contaminante en cada posición del tubo (que consideramos unidimensional y con sección despreciable, de longitud L=8m), la cual varía a lo largo del eje de abscisas (eje x), por lo que el intervalo en el que trabajaremos será [0,L]. Teniendo en cuenta la ley de Flick, sabemos que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x). Añadiendo la variable del tiempo, la concentración de contaminante en cada posición y en cada instante la expresaremos por u(x,t). La acumulación de partículas en cada instante que se produce por cada unidad de volumen S.dx (S es la sección) es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir uS-u’S=(du/dx).S.dx La acumulación de partículas por unidad de tiempo es S.dx.(du/dt) Si igualamos ambas expresiones y aplicamos la Ley de Flick nos queda d(D.(du/dx))/dx=du/dt. Obtenemos una ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión. Todo esto es válido si el coeficiente de difusión D no depende de la concentración.&lt;br /&gt;
&lt;br /&gt;
== Resolución del sistema. ==&lt;br /&gt;
Resolvemos por el método de las líneas la ecuación diferencial con dos condiciones Newman que vienen dadas por la ausencia de flujo en los extremos del tubo. Empleamos también la condición inicial: u(x,0) = 2, si x ≤ 4, 4, si x &amp;gt; 4 y resolvemos matricialmente el sistema de N+1 incógnitas.&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Datos&lt;br /&gt;
  L=8;&lt;br /&gt;
T=7;&lt;br /&gt;
 q=1;&lt;br /&gt;
 &lt;br /&gt;
 % Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &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&lt;br /&gt;
 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;
 &lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Resolución.png|400x400px|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa. ==&lt;br /&gt;
Integramos en todos los instantes la cantidad de contaminante que hay en cada punto de la barra, lo que nos da la masa total de contaminante en cada instante. A partir de la ecuación u(x,t)se deduce que la masa total del contaminante se conserva a lo largo del tiempo. Dicha masa es 23.550, hallada según el programa:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=12;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&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))/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Conservación_de_la_masa.png|500x500px|miniaturadeimagen|izquierda|&amp;quot;La masa es constante en el tiempo&amp;quot;]] [[Archivo:Cantidad en el punto medio.png|500x500px|miniaturadeimagen|derecha|&amp;quot;Variación de la masa en el punto medio&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aplicación de Euler implícito y Heun. ==&lt;br /&gt;
Resolvemos por los métodos de Euler explícito, ímplicito y de Heun con las condiciones inicilales del ejercicio anterior.&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler explícito ===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Euler Explicito&lt;br /&gt;
  % Datos del problema&lt;br /&gt;
  L=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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);%tienes N+1 incognitas&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler implícito ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Heun ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
  N=round(L/h);&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=[2*ones(1,2+N*4/8),3*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Observando las gráficas se aprecia que apenas hay diferencia.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Concentración casi constante. Consecuencias. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la imagen apreciamos como a tiempos grandes (50 segundos) el contaminante se distribuye de forma homogénea estabilizándose en 2.9438, la cantidad de contaminante total dividida la longitud del tubo, 8.&lt;br /&gt;
[[Archivo:Regimen_estacionario.png|350x350px|miniaturadeimagen|izquierda|Régimen estacionario]]&lt;br /&gt;
&lt;br /&gt;
Por lo que podemos decir que el flujo es 0(muy próximo) y por la tanto la tanto la solución es homogénea siendo en cada instante y posición 2.9438.&lt;br /&gt;
La función de la solución sería u(x,t)= 2.9438 cuando el tiempo es grande.&lt;br /&gt;
Este estado estacionario se da cuando el flujo se aproxime a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para demostrar esta solución en régimen estacionario hemos usado los tiempos 0,1,2,10 y hemos calculado la media cuadrada entre el valor de estacionamiento y los diferentes valores de la concentración en cada posición:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Distancia para 0 segundos= 0.999499&amp;lt;br /&amp;gt;Distancia para 1 segundos = 0.776147&amp;lt;br /&amp;gt;Distancia para 2 segundos  = 0.657469&amp;lt;br /&amp;gt;Distancia para 10 segundos = 0.192049&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(L/h);&lt;br /&gt;
x=0:h:L; &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&lt;br /&gt;
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;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&lt;br /&gt;
dist0=(sqrt(sum((sol(1,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist1=(sqrt(sum((sol(28,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist2=(sqrt(sum((sol(56,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist10=(sqrt(sum((sol(267,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Uso de un limpiador de contaminante. Conclusiones. ==&lt;br /&gt;
Hemos calculado el tiempo en el cual podemos considerar que se ha alcanzado el estado estacionario (es decir cuando la distancia que hemos calculado anteriormente es menor de un valor establecido). El valor establecido es el 5% de la concentración media, es decir que este valor es 0.147187.&amp;lt;br /&amp;gt;&lt;br /&gt;
El tiempo que nos ha dado es 11.7375 segundos. &amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos el siguiente programa con tiempo 50.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=50;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
Hemos querido probar si el ∆x influía y para ello lo hemos multiplicado por 10. Hemos utilizado el anterior programa y solo hemos cambiado el ∆x .&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=400;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=1.5;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
x=[0,1.5,3,4.5,6,7.5,8]; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Y cambia el resultado ya que la distancia en ningún momento es menor del 5%, es decir de 0.147187. Por ello, aunque se podría suponer que no se alcanza el estado estacionario en realidad sí lo hace, pues lo que ocurre es que el error es mayor ya que la distancia que nos da es siempre constante e igual a 0.34375.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
En el segundo 1 se sitúa en el extremo 0 un filtro que limpia dicha posición. Hasta ese instante el problema es idéntico a los anteriores, pero a partir de entonces slo la concentración será nula en el extremo inicial. El nuevo valor estacionario es 0 ya que se va eliminando contaminante.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Contaminante0.png|400x400px|miniaturadeimagen|izquierda|Se aprecia que en la izquierda la cantidad de contaminante es 0]]&lt;br /&gt;
[[Archivo:TiempoGrande.png|400x400px|miniaturadeimagen|centro|Cuando el tiempo es muy grande la concentración total desciende a 0]] &amp;lt;br /&amp;gt;&lt;br /&gt;
Para obtener ambos gráficos se ha utilizado el siguiente programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Además este estado estacionario (que es 0) se alcanzará con menos del 5%  de error en 78.1875 segundos.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos este programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=100;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Resoluci%C3%B3n.png&amp;diff=39603</id>
		<title>Archivo:Resolución.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Resoluci%C3%B3n.png&amp;diff=39603"/>
				<updated>2017-05-09T09:22:44Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39602</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39602"/>
				<updated>2017-05-09T09:21:57Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo &amp;lt;br /&amp;gt;Javier Carrillo&amp;lt;br /&amp;gt; Pablo Escudero &amp;lt;br /&amp;gt;Alejandro Gaitón&amp;lt;br /&amp;gt; Alejandro González&amp;lt;br /&amp;gt; Pablo Vidal }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
== Planteamiento del sistema. ==&lt;br /&gt;
En primer lugar, sabemos que para que se produzca difusión, es necesario que exista un gradiente de concentración o diferencia entre dos puntos del medio. Definimos la variable u como la concentración de contaminante en cada posición del tubo (que consideramos unidimensional y con sección despreciable, de longitud L=8m), la cual varía a lo largo del eje de abscisas (eje x), por lo que el intervalo en el que trabajaremos será [0,L]. Teniendo en cuenta la ley de Flick, sabemos que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x). Añadiendo la variable del tiempo, la concentración de contaminante en cada posición y en cada instante la expresaremos por u(x,t). La acumulación de partículas en cada instante que se produce por cada unidad de volumen S.dx (S es la sección) es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir uS-u’S=(du/dx).S.dx La acumulación de partículas por unidad de tiempo es S.dx.(du/dt) Si igualamos ambas expresiones y aplicamos la Ley de Flick nos queda d(D.(du/dx))/dx=du/dt. Obtenemos una ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión. Todo esto es válido si el coeficiente de difusión D no depende de la concentración.&lt;br /&gt;
&lt;br /&gt;
== Resolución del sistema. ==&lt;br /&gt;
Resolvemos por el método de las líneas la ecuación diferencial con dos condiciones Newman que vienen dadas por la ausencia de flujo en los extremos del tubo. Empleamos también la condición inicial: u(x,0) = 2, si x ≤ 4, 4, si x &amp;gt; 4 y resolvemos matricialmente el sistema de N+1 incógnitas.&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Datos&lt;br /&gt;
  L=8;&lt;br /&gt;
T=7;&lt;br /&gt;
 q=1;&lt;br /&gt;
 &lt;br /&gt;
 % Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &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&lt;br /&gt;
 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;
 &lt;br /&gt;
 % Definimos F&lt;br /&gt;
 F=zeros(N+1,1);&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa. ==&lt;br /&gt;
Integramos en todos los instantes la cantidad de contaminante que hay en cada punto de la barra, lo que nos da la masa total de contaminante en cada instante. A partir de la ecuación u(x,t)se deduce que la masa total del contaminante se conserva a lo largo del tiempo. Dicha masa es 23.550, hallada según el programa:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=12;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&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))/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Conservación_de_la_masa.png|500x500px|miniaturadeimagen|izquierda|&amp;quot;La masa es constante en el tiempo&amp;quot;]] [[Archivo:Cantidad en el punto medio.png|500x500px|miniaturadeimagen|derecha|&amp;quot;Variación de la masa en el punto medio&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aplicación de Euler implícito y Heun. ==&lt;br /&gt;
Resolvemos por los métodos de Euler explícito, ímplicito y de Heun con las condiciones inicilales del ejercicio anterior.&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler explícito ===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Euler Explicito&lt;br /&gt;
  % Datos del problema&lt;br /&gt;
  L=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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);%tienes N+1 incognitas&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler implícito ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Heun ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
  N=round(L/h);&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=[2*ones(1,2+N*4/8),3*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Observando las gráficas se aprecia que apenas hay diferencia.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Concentración casi constante. Consecuencias. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la imagen apreciamos como a tiempos grandes (50 segundos) el contaminante se distribuye de forma homogénea estabilizándose en 2.9438, la cantidad de contaminante total dividida la longitud del tubo, 8.&lt;br /&gt;
[[Archivo:Regimen_estacionario.png|350x350px|miniaturadeimagen|izquierda|Régimen estacionario]]&lt;br /&gt;
&lt;br /&gt;
Por lo que podemos decir que el flujo es 0(muy próximo) y por la tanto la tanto la solución es homogénea siendo en cada instante y posición 2.9438.&lt;br /&gt;
La función de la solución sería u(x,t)= 2.9438 cuando el tiempo es grande.&lt;br /&gt;
Este estado estacionario se da cuando el flujo se aproxime a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para demostrar esta solución en régimen estacionario hemos usado los tiempos 0,1,2,10 y hemos calculado la media cuadrada entre el valor de estacionamiento y los diferentes valores de la concentración en cada posición:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Distancia para 0 segundos= 0.999499&amp;lt;br /&amp;gt;Distancia para 1 segundos = 0.776147&amp;lt;br /&amp;gt;Distancia para 2 segundos  = 0.657469&amp;lt;br /&amp;gt;Distancia para 10 segundos = 0.192049&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(L/h);&lt;br /&gt;
x=0:h:L; &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&lt;br /&gt;
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;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&lt;br /&gt;
dist0=(sqrt(sum((sol(1,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist1=(sqrt(sum((sol(28,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist2=(sqrt(sum((sol(56,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist10=(sqrt(sum((sol(267,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Uso de un limpiador de contaminante. Conclusiones. ==&lt;br /&gt;
Hemos calculado el tiempo en el cual podemos considerar que se ha alcanzado el estado estacionario (es decir cuando la distancia que hemos calculado anteriormente es menor de un valor establecido). El valor establecido es el 5% de la concentración media, es decir que este valor es 0.147187.&amp;lt;br /&amp;gt;&lt;br /&gt;
El tiempo que nos ha dado es 11.7375 segundos. &amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos el siguiente programa con tiempo 50.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=50;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
Hemos querido probar si el ∆x influía y para ello lo hemos multiplicado por 10. Hemos utilizado el anterior programa y solo hemos cambiado el ∆x .&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=400;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=1.5;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
x=[0,1.5,3,4.5,6,7.5,8]; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Y cambia el resultado ya que la distancia en ningún momento es menor del 5%, es decir de 0.147187. Por ello, aunque se podría suponer que no se alcanza el estado estacionario en realidad sí lo hace, pues lo que ocurre es que el error es mayor ya que la distancia que nos da es siempre constante e igual a 0.34375.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
En el segundo 1 se sitúa en el extremo 0 un filtro que limpia dicha posición. Hasta ese instante el problema es idéntico a los anteriores, pero a partir de entonces slo la concentración será nula en el extremo inicial. El nuevo valor estacionario es 0 ya que se va eliminando contaminante.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Contaminante0.png|400x400px|miniaturadeimagen|izquierda|Se aprecia que en la izquierda la cantidad de contaminante es 0]]&lt;br /&gt;
[[Archivo:TiempoGrande.png|400x400px|miniaturadeimagen|centro|Cuando el tiempo es muy grande la concentración total desciende a 0]] &amp;lt;br /&amp;gt;&lt;br /&gt;
Para obtener ambos gráficos se ha utilizado el siguiente programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Además este estado estacionario (que es 0) se alcanzará con menos del 5%  de error en 78.1875 segundos.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos este programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=100;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39601</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39601"/>
				<updated>2017-05-09T09:18:02Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo &amp;lt;br /&amp;gt;Javier Carrillo&amp;lt;br /&amp;gt; Pablo Escudero &amp;lt;br /&amp;gt;Alejandro Gaitón&amp;lt;br /&amp;gt; Alejandro González&amp;lt;br /&amp;gt; Pablo Vidal }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Planteamiento del sistema. ==&lt;br /&gt;
En primer lugar, sabemos que para que se produzca difusión, es necesario que exista un gradiente de concentración o diferencia entre dos puntos del medio. Definimos la variable u como la concentración de contaminante en cada posición del tubo (que consideramos unidimensional y con sección despreciable, de longitud L=8m), la cual varía a lo largo del eje de abscisas (eje x), por lo que el intervalo en el que trabajaremos será [0,L]. Teniendo en cuenta la ley de Flick, sabemos que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x). Añadiendo la variable del tiempo, la concentración de contaminante en cada posición y en cada instante la expresaremos por u(x,t). La acumulación de partículas en cada instante que se produce por cada unidad de volumen S.dx (S es la sección) es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir uS-u’S=(du/dx).S.dx La acumulación de partículas por unidad de tiempo es S.dx.(du/dt) Si igualamos ambas expresiones y aplicamos la Ley de Flick nos queda d(D.(du/dx))/dx=du/dt. Obtenemos una ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión. Todo esto es válido si el coeficiente de difusión D no depende de la concentración.&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa. ==&lt;br /&gt;
Integramos en todos los instantes la cantidad de contaminante que hay en cada punto de la barra, lo que nos da la masa total de contaminante en cada instante. A partir de la ecuación u(x,t)se deduce que la masa total del contaminante se conserva a lo largo del tiempo. Dicha masa es 23.550, hallada según el programa:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=12;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&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))/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Conservación_de_la_masa.png|500x500px|miniaturadeimagen|izquierda|&amp;quot;La masa es constante en el tiempo&amp;quot;]] [[Archivo:Cantidad en el punto medio.png|500x500px|miniaturadeimagen|derecha|&amp;quot;Variación de la masa en el punto medio&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aplicación de Euler implícito y Heun. ==&lt;br /&gt;
Resolvemos por los métodos de Euler explícito, ímplicito y de Heun con las condiciones inicilales del ejercicio anterior.&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler explícito ===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Euler Explicito&lt;br /&gt;
  % Datos del problema&lt;br /&gt;
  L=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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);%tienes N+1 incognitas&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler implícito ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Heun ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
  N=round(L/h);&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=[2*ones(1,2+N*4/8),3*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Observando las gráficas se aprecia que apenas hay diferencia.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Concentración casi constante. Consecuencias. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la imagen apreciamos como a tiempos grandes (50 segundos) el contaminante se distribuye de forma homogénea estabilizándose en 2.9438, la cantidad de contaminante total dividida la longitud del tubo, 8.&lt;br /&gt;
[[Archivo:Regimen_estacionario.png|350x350px|miniaturadeimagen|izquierda|Régimen estacionario]]&lt;br /&gt;
&lt;br /&gt;
Por lo que podemos decir que el flujo es 0(muy próximo) y por la tanto la tanto la solución es homogénea siendo en cada instante y posición 2.9438.&lt;br /&gt;
La función de la solución sería u(x,t)= 2.9438 cuando el tiempo es grande.&lt;br /&gt;
Este estado estacionario se da cuando el flujo se aproxime a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para demostrar esta solución en régimen estacionario hemos usado los tiempos 0,1,2,10 y hemos calculado la media cuadrada entre el valor de estacionamiento y los diferentes valores de la concentración en cada posición:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Distancia para 0 segundos= 0.999499&amp;lt;br /&amp;gt;Distancia para 1 segundos = 0.776147&amp;lt;br /&amp;gt;Distancia para 2 segundos  = 0.657469&amp;lt;br /&amp;gt;Distancia para 10 segundos = 0.192049&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(L/h);&lt;br /&gt;
x=0:h:L; &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&lt;br /&gt;
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;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&lt;br /&gt;
dist0=(sqrt(sum((sol(1,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist1=(sqrt(sum((sol(28,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist2=(sqrt(sum((sol(56,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist10=(sqrt(sum((sol(267,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Uso de un limpiador de contaminante. Conclusiones. ==&lt;br /&gt;
Hemos calculado el tiempo en el cual podemos considerar que se ha alcanzado el estado estacionario (es decir cuando la distancia que hemos calculado anteriormente es menor de un valor establecido). El valor establecido es el 5% de la concentración media, es decir que este valor es 0.147187.&amp;lt;br /&amp;gt;&lt;br /&gt;
El tiempo que nos ha dado es 11.7375 segundos. &amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos el siguiente programa con tiempo 50.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=50;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
Hemos querido probar si el ∆x influía y para ello lo hemos multiplicado por 10. Hemos utilizado el anterior programa y solo hemos cambiado el ∆x .&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=400;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=1.5;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
x=[0,1.5,3,4.5,6,7.5,8]; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Y cambia el resultado ya que la distancia en ningún momento es menor del 5%, es decir de 0.147187. Por ello, aunque se podría suponer que no se alcanza el estado estacionario en realidad sí lo hace, pues lo que ocurre es que el error es mayor ya que la distancia que nos da es siempre constante e igual a 0.34375.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
En el segundo 1 se sitúa en el extremo 0 un filtro que limpia dicha posición. Hasta ese instante el problema es idéntico a los anteriores, pero a partir de entonces slo la concentración será nula en el extremo inicial. El nuevo valor estacionario es 0 ya que se va eliminando contaminante.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Contaminante0.png|400x400px|miniaturadeimagen|izquierda|Se aprecia que en la izquierda la cantidad de contaminante es 0]]&lt;br /&gt;
[[Archivo:TiempoGrande.png|400x400px|miniaturadeimagen|centro|Cuando el tiempo es muy grande la concentración total desciende a 0]] &amp;lt;br /&amp;gt;&lt;br /&gt;
Para obtener ambos gráficos se ha utilizado el siguiente programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Además este estado estacionario (que es 0) se alcanzará con menos del 5%  de error en 78.1875 segundos.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos este programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=100;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39600</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39600"/>
				<updated>2017-05-09T09:13:03Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: /* Aplicación de Euler implícito y Heun. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo &amp;lt;br /&amp;gt;Javier Carrillo&amp;lt;br /&amp;gt; Pablo Escudero &amp;lt;br /&amp;gt;Alejandro Gaitón&amp;lt;br /&amp;gt; Alejandro González&amp;lt;br /&amp;gt; Pablo Vidal }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Planteamiento del sistema. ==&lt;br /&gt;
En primer lugar, sabemos que para que se produzca difusión, es necesario que exista un gradiente de concentración o diferencia entre dos puntos del medio. Definimos la variable u como la concentración de contaminante en cada posición del tubo (que consideramos unidimensional y con sección despreciable, de longitud L=8m), la cual varía a lo largo del eje de abscisas (eje x), por lo que el intervalo en el que trabajaremos será [0,L]. Teniendo en cuenta la ley de Flick, sabemos que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x). Añadiendo la variable del tiempo, la concentración de contaminante en cada posición y en cada instante la expresaremos por u(x,t). La acumulación de partículas en cada instante que se produce por cada unidad de volumen S.dx (S es la sección) es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir uS-u’S=(du/dx).S.dx La acumulación de partículas por unidad de tiempo es S.dx.(du/dt) Si igualamos ambas expresiones y aplicamos la Ley de Flick nos queda d(D.(du/dx))/dx=du/dt. Obtenemos una ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión. Todo esto es válido si el coeficiente de difusión D no depende de la concentración.&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa. ==&lt;br /&gt;
Integramos en todos los instantes la cantidad de contaminante que hay en cada punto de la barra, lo que nos da la masa total de contaminante en cada instante. A partir de la ecuación u(x,t)se deduce que la masa total del contaminante se conserva a lo largo del tiempo. Dicha masa es 23.550, hallada según el programa:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=12;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&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))/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Conservación_de_la_masa.png|500x500px|miniaturadeimagen|izquierda|&amp;quot;La masa es constante en el tiempo&amp;quot;]] [[Archivo:Cantidad en el punto medio.png|500x500px|miniaturadeimagen|derecha|&amp;quot;Variación de la masa en el punto medio&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aplicación de Euler implícito y Heun. ==&lt;br /&gt;
Resolvemos por los métodos de Euler explícito, ímplicito y de Heun con las condiciones inicilales del ejercicio anterior.&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler explícito ===&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Euler Explicito&lt;br /&gt;
  % Datos del problema&lt;br /&gt;
  L=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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);%tienes N+1 incognitas&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Euler implícito ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Heun ===&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
  N=round(L/h);&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=[2*ones(1,2+N*4/8),3*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Observando las gráficas se aprecia que apenas hay diferencia.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Concentración casi constante. Consecuencias. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la imagen apreciamos como a tiempos grandes (50 segundos) el contaminante se distribuye de forma homogénea estabilizándose en 2.9438, la cantidad de contaminante total dividida la longitud del tubo, 8.&lt;br /&gt;
[[Archivo:Regimen_estacionario.png|350x350px|miniaturadeimagen|izquierda|Régimen estacionario]]&lt;br /&gt;
&lt;br /&gt;
Por lo que podemos decir que el flujo es 0(muy próximo) y por la tanto la tanto la solución es homogénea siendo en cada instante y posición 2.9438.&lt;br /&gt;
La función de la solución sería u(x,t)= 2.9438 cuando el tiempo es grande.&lt;br /&gt;
Este estado estacionario se da cuando el flujo se aproxime a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para demostrar esta solución en régimen estacionario hemos usado los tiempos 0,1,2,10 y hemos calculado la media cuadrada entre el valor de estacionamiento y los diferentes valores de la concentración en cada posición:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Distancia para 0 segundos= 0.999499&amp;lt;br /&amp;gt;Distancia para 1 segundos = 0.776147&amp;lt;br /&amp;gt;Distancia para 2 segundos  = 0.657469&amp;lt;br /&amp;gt;Distancia para 10 segundos = 0.192049&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(L/h);&lt;br /&gt;
x=0:h:L; &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&lt;br /&gt;
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;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&lt;br /&gt;
dist0=(sqrt(sum((sol(1,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist1=(sqrt(sum((sol(28,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist2=(sqrt(sum((sol(56,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist10=(sqrt(sum((sol(267,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Uso de un limpiador de contaminante. Conclusiones. ==&lt;br /&gt;
Hemos calculado el tiempo en el cual podemos considerar que se ha alcanzado el estado estacionario (es decir cuando la distancia que hemos calculado anteriormente es menor de un valor establecido). El valor establecido es el 5% de la concentración media, es decir que este valor es 0.147187.&amp;lt;br /&amp;gt;&lt;br /&gt;
El tiempo que nos ha dado es 11.7375 segundos. &amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos el siguiente programa con tiempo 50.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=50;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
Hemos querido probar si el ∆x influía y para ello lo hemos multiplicado por 10. Hemos utilizado el anterior programa y solo hemos cambiado el ∆x .&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=400;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=1.5;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
x=[0,1.5,3,4.5,6,7.5,8]; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Y cambia el resultado ya que la distancia en ningún momento es menor del 5%, es decir de 0.147187. Por ello, aunque se podría suponer que no se alcanza el estado estacionario en realidad sí lo hace, pues lo que ocurre es que el error es mayor ya que la distancia que nos da es siempre constante e igual a 0.34375.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
En el segundo 1 se sitúa en el extremo 0 un filtro que limpia dicha posición. Hasta ese instante el problema es idéntico a los anteriores, pero a partir de entonces slo la concentración será nula en el extremo inicial. El nuevo valor estacionario es 0 ya que se va eliminando contaminante.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Contaminante0.png|400x400px|miniaturadeimagen|izquierda|Se aprecia que en la izquierda la cantidad de contaminante es 0]]&lt;br /&gt;
[[Archivo:TiempoGrande.png|400x400px|miniaturadeimagen|centro|Cuando el tiempo es muy grande la concentración total desciende a 0]] &amp;lt;br /&amp;gt;&lt;br /&gt;
Para obtener ambos gráficos se ha utilizado el siguiente programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Además este estado estacionario (que es 0) se alcanzará con menos del 5%  de error en 78.1875 segundos.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos este programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=100;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39599</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39599"/>
				<updated>2017-05-09T09:11:31Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo &amp;lt;br /&amp;gt;Javier Carrillo&amp;lt;br /&amp;gt; Pablo Escudero &amp;lt;br /&amp;gt;Alejandro Gaitón&amp;lt;br /&amp;gt; Alejandro González&amp;lt;br /&amp;gt; Pablo Vidal }}&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Planteamiento del sistema. ==&lt;br /&gt;
En primer lugar, sabemos que para que se produzca difusión, es necesario que exista un gradiente de concentración o diferencia entre dos puntos del medio. Definimos la variable u como la concentración de contaminante en cada posición del tubo (que consideramos unidimensional y con sección despreciable, de longitud L=8m), la cual varía a lo largo del eje de abscisas (eje x), por lo que el intervalo en el que trabajaremos será [0,L]. Teniendo en cuenta la ley de Flick, sabemos que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x). Añadiendo la variable del tiempo, la concentración de contaminante en cada posición y en cada instante la expresaremos por u(x,t). La acumulación de partículas en cada instante que se produce por cada unidad de volumen S.dx (S es la sección) es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir uS-u’S=(du/dx).S.dx La acumulación de partículas por unidad de tiempo es S.dx.(du/dt) Si igualamos ambas expresiones y aplicamos la Ley de Flick nos queda d(D.(du/dx))/dx=du/dt. Obtenemos una ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión. Todo esto es válido si el coeficiente de difusión D no depende de la concentración.&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa. ==&lt;br /&gt;
Integramos en todos los instantes la cantidad de contaminante que hay en cada punto de la barra, lo que nos da la masa total de contaminante en cada instante. A partir de la ecuación u(x,t)se deduce que la masa total del contaminante se conserva a lo largo del tiempo. Dicha masa es 23.550, hallada según el programa:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=12;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&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))/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Conservación_de_la_masa.png|500x500px|miniaturadeimagen|izquierda|&amp;quot;La masa es constante en el tiempo&amp;quot;]] [[Archivo:Cantidad en el punto medio.png|500x500px|miniaturadeimagen|derecha|&amp;quot;Variación de la masa en el punto medio&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aplicación de Euler implícito y Heun. ==&lt;br /&gt;
Resolvemos por los métodos de Euler explícito, ímplicito y de Heun con las condiciones inicilales del ejercicio anterior.&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Euler Explicito&lt;br /&gt;
  % Datos del problema&lt;br /&gt;
  L=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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);%tienes N+1 incognitas&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
&amp;lt;br /&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
  N=round(L/h);&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=[2*ones(1,2+N*4/8),3*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Observando las gráficas se aprecia que apenas hay diferencia.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Concentración casi constante. Consecuencias. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la imagen apreciamos como a tiempos grandes (50 segundos) el contaminante se distribuye de forma homogénea estabilizándose en 2.9438, la cantidad de contaminante total dividida la longitud del tubo, 8.&lt;br /&gt;
[[Archivo:Regimen_estacionario.png|350x350px|miniaturadeimagen|izquierda|Régimen estacionario]]&lt;br /&gt;
&lt;br /&gt;
Por lo que podemos decir que el flujo es 0(muy próximo) y por la tanto la tanto la solución es homogénea siendo en cada instante y posición 2.9438.&lt;br /&gt;
La función de la solución sería u(x,t)= 2.9438 cuando el tiempo es grande.&lt;br /&gt;
Este estado estacionario se da cuando el flujo se aproxime a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para demostrar esta solución en régimen estacionario hemos usado los tiempos 0,1,2,10 y hemos calculado la media cuadrada entre el valor de estacionamiento y los diferentes valores de la concentración en cada posición:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Distancia para 0 segundos= 0.999499&amp;lt;br /&amp;gt;Distancia para 1 segundos = 0.776147&amp;lt;br /&amp;gt;Distancia para 2 segundos  = 0.657469&amp;lt;br /&amp;gt;Distancia para 10 segundos = 0.192049&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(L/h);&lt;br /&gt;
x=0:h:L; &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&lt;br /&gt;
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;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&lt;br /&gt;
dist0=(sqrt(sum((sol(1,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist1=(sqrt(sum((sol(28,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist2=(sqrt(sum((sol(56,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist10=(sqrt(sum((sol(267,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Uso de un limpiador de contaminante. Conclusiones. ==&lt;br /&gt;
Hemos calculado el tiempo en el cual podemos considerar que se ha alcanzado el estado estacionario (es decir cuando la distancia que hemos calculado anteriormente es menor de un valor establecido). El valor establecido es el 5% de la concentración media, es decir que este valor es 0.147187.&amp;lt;br /&amp;gt;&lt;br /&gt;
El tiempo que nos ha dado es 11.7375 segundos. &amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos el siguiente programa con tiempo 50.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=50;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
Hemos querido probar si el ∆x influía y para ello lo hemos multiplicado por 10. Hemos utilizado el anterior programa y solo hemos cambiado el ∆x .&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=400;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=1.5;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
x=[0,1.5,3,4.5,6,7.5,8]; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Y cambia el resultado ya que la distancia en ningún momento es menor del 5%, es decir de 0.147187. Por ello, aunque se podría suponer que no se alcanza el estado estacionario en realidad sí lo hace, pues lo que ocurre es que el error es mayor ya que la distancia que nos da es siempre constante e igual a 0.34375.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
En el segundo 1 se sitúa en el extremo 0 un filtro que limpia dicha posición. Hasta ese instante el problema es idéntico a los anteriores, pero a partir de entonces slo la concentración será nula en el extremo inicial. El nuevo valor estacionario es 0 ya que se va eliminando contaminante.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Contaminante0.png|400x400px|miniaturadeimagen|izquierda|Se aprecia que en la izquierda la cantidad de contaminante es 0]]&lt;br /&gt;
[[Archivo:TiempoGrande.png|400x400px|miniaturadeimagen|centro|Cuando el tiempo es muy grande la concentración total desciende a 0]] &amp;lt;br /&amp;gt;&lt;br /&gt;
Para obtener ambos gráficos se ha utilizado el siguiente programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Además este estado estacionario (que es 0) se alcanzará con menos del 5%  de error en 78.1875 segundos.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos este programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=100;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39175</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39175"/>
				<updated>2017-04-27T23:43:53Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: /* Uso de un limpiador de contaminante. Conclusiones. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo Javier Carrillo Pablo Escudero Alejandro Gaitón Alejandro González Pablo Vidal }}&lt;br /&gt;
&lt;br /&gt;
== Planteamiento del sistema. ==&lt;br /&gt;
En primer lugar, sabemos que para que se produzca difusión, es necesario que exista un gradiente de concentración o diferencia entre dos puntos del medio. Definimos la variable u como la concentración de contaminante en cada posición del tubo (que consideramos unidimensional y con sección despreciable, de longitud L=8m), la cual varía a lo largo del eje de abscisas (eje x), por lo que el intervalo en el que trabajaremos será [0,L]. Teniendo en cuenta la ley de Flick, sabemos que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x). Añadiendo la variable del tiempo, la concentración de contaminante en cada posición y en cada instante la expresaremos por u(x,t). La acumulación de partículas en cada instante que se produce por cada unidad de volumen S.dx (S es la sección) es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir uS-u’S=(du/dx).S.dx La acumulación de partículas por unidad de tiempo es S.dx.(du/dt) Si igualamos ambas expresiones y aplicamos la Ley de Flick nos queda d(D.(du/dx))/dx=du/dt. Obtenemos una ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión. Todo esto es válido si el coeficiente de difusión D no depende de la concentración.&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa. ==&lt;br /&gt;
Integramos en todos los instantes la cantidad de contaminante que hay en cada punto de la barra, lo que nos da la masa total de contaminante en cada instante. A partir de la ecuación u(x,t)se deduce que la masa total del contaminante se conserva a lo largo del tiempo. Dicha masa es 23.550, hallada según el programa:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=12;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&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))/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Conservación_de_la_masa.png|500x500px|miniaturadeimagen|izquierda|&amp;quot;La masa es constante en el tiempo&amp;quot;]] [[Archivo:Cantidad en el punto medio.png|500x500px|miniaturadeimagen|derecha|&amp;quot;Variación de la masa en el punto medio&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aplicación de Euler implícito y Heun. ==&lt;br /&gt;
Resolvemos por los métodos de Euler explícito, ímplicito y de Heun con las condiciones inicilales del ejercicio anterior.&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Euler Explicito&lt;br /&gt;
  % Datos del problema&lt;br /&gt;
  L=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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);%tienes N+1 incognitas&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
&amp;lt;br /&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
  N=round(L/h);&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=[2*ones(1,2+N*4/8),3*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Observando las gráficas se aprecia que apenas hay diferencia.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Concentración casi constante. Consecuencias. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la imagen apreciamos como a tiempos grandes (50 segundos) el contaminante se distribuye de forma homogénea estabilizándose en 2.9438, la cantidad de contaminante total dividida la longitud del tubo, 8.&lt;br /&gt;
[[Archivo:Regimen_estacionario.png|350x350px|miniaturadeimagen|izquierda|Régimen estacionario]]&lt;br /&gt;
&lt;br /&gt;
Por lo que podemos decir que el flujo es 0(muy próximo) y por la tanto la tanto la solución es homogénea siendo en cada instante y posición 2.9438.&lt;br /&gt;
La función de la solución sería u(x,t)= 2.9438 cuando el tiempo es grande.&lt;br /&gt;
Este estado estacionario se da cuando el flujo se aproxime a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para demostrar esta solución en régimen estacionario hemos usado los tiempos 0,1,2,10 y hemos calculado la media cuadrada entre el valor de estacionamiento y los diferentes valores de la concentración en cada posición:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Distancia para 0 segundos= 0.999499&amp;lt;br /&amp;gt;Distancia para 1 segundos = 0.776147&amp;lt;br /&amp;gt;Distancia para 2 segundos  = 0.657469&amp;lt;br /&amp;gt;Distancia para 10 segundos = 0.192049&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(L/h);&lt;br /&gt;
x=0:h:L; &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&lt;br /&gt;
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;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&lt;br /&gt;
dist0=(sqrt(sum((sol(1,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist1=(sqrt(sum((sol(28,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist2=(sqrt(sum((sol(56,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist10=(sqrt(sum((sol(267,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Uso de un limpiador de contaminante. Conclusiones. ==&lt;br /&gt;
Hemos calculado el tiempo en el cual podemos considerar que se ha alcanzado el estado estacionario (es decir cuando la distancia que hemos calculado anteriormente es menor de un valor establecido). El valor establecido es el 5% de la concentración media, es decir que este valor es 0.147187.&amp;lt;br /&amp;gt;&lt;br /&gt;
El tiempo que nos ha dado es 11.7375 segundos. &amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos el siguiente programa con tiempo 50.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=50;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
Hemos querido probar si el ∆x influía y para ello lo hemos multiplicado por 10. Hemos utilizado el anterior programa y solo hemos cambiado el ∆x .&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=400;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=1.5;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
x=[0,1.5,3,4.5,6,7.5,8]; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Y cambia el resultado ya que la distancia en ningún momento es menor del 5%, es decir de 0.147187. Por ello, aunque se podría suponer que no se alcanza el estado estacionario en realidad sí lo hace, pues lo que ocurre es que el error es mayor ya que la distancia que nos da es siempre constante e igual a 0.34375.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
En el segundo 1 se sitúa en el extremo 0 un filtro que limpia dicha posición. Hasta ese instante el problema es idéntico a los anteriores, pero a partir de entonces slo la concentración será nula en el extremo inicial. El nuevo valor estacionario es 0 ya que se va eliminando contaminante.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Contaminante0.png|400x400px|miniaturadeimagen|izquierda|Se aprecia que en la izquierda la cantidad de contaminante es 0]]&lt;br /&gt;
[[Archivo:TiempoGrande.png|400x400px|miniaturadeimagen|centro|Cuando el tiempo es muy grande la concentración total desciende a 0]] &amp;lt;br /&amp;gt;&lt;br /&gt;
Para obtener ambos gráficos se ha utilizado el siguiente programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Además este estado estacionario (que es 0) se alcanzará con menos del 5%  de error en 78.1875 segundos.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos este programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=100;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39174</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39174"/>
				<updated>2017-04-27T23:41:49Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: /* Resolución del sistema. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo Javier Carrillo Pablo Escudero Alejandro Gaitón Alejandro González Pablo Vidal }}&lt;br /&gt;
&lt;br /&gt;
== Planteamiento del sistema. ==&lt;br /&gt;
En primer lugar, sabemos que para que se produzca difusión, es necesario que exista un gradiente de concentración o diferencia entre dos puntos del medio. Definimos la variable u como la concentración de contaminante en cada posición del tubo (que consideramos unidimensional y con sección despreciable, de longitud L=8m), la cual varía a lo largo del eje de abscisas (eje x), por lo que el intervalo en el que trabajaremos será [0,L]. Teniendo en cuenta la ley de Flick, sabemos que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x). Añadiendo la variable del tiempo, la concentración de contaminante en cada posición y en cada instante la expresaremos por u(x,t). La acumulación de partículas en cada instante que se produce por cada unidad de volumen S.dx (S es la sección) es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir uS-u’S=(du/dx).S.dx La acumulación de partículas por unidad de tiempo es S.dx.(du/dt) Si igualamos ambas expresiones y aplicamos la Ley de Flick nos queda d(D.(du/dx))/dx=du/dt. Obtenemos una ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión. Todo esto es válido si el coeficiente de difusión D no depende de la concentración.&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa. ==&lt;br /&gt;
Integramos en todos los instantes la cantidad de contaminante que hay en cada punto de la barra, lo que nos da la masa total de contaminante en cada instante. A partir de la ecuación u(x,t)se deduce que la masa total del contaminante se conserva a lo largo del tiempo. Dicha masa es 23.550, hallada según el programa:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=12;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&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))/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Conservación_de_la_masa.png|500x500px|miniaturadeimagen|izquierda|&amp;quot;La masa es constante en el tiempo&amp;quot;]] [[Archivo:Cantidad en el punto medio.png|500x500px|miniaturadeimagen|derecha|&amp;quot;Variación de la masa en el punto medio&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aplicación de Euler implícito y Heun. ==&lt;br /&gt;
Resolvemos por los métodos de Euler explícito, ímplicito y de Heun con las condiciones inicilales del ejercicio anterior.&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Euler Explicito&lt;br /&gt;
  % Datos del problema&lt;br /&gt;
  L=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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);%tienes N+1 incognitas&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
&amp;lt;br /&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
  N=round(L/h);&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=[2*ones(1,2+N*4/8),3*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Observando las gráficas se aprecia que apenas hay diferencia.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Concentración casi constante. Consecuencias. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la imagen apreciamos como a tiempos grandes (50 segundos) el contaminante se distribuye de forma homogénea estabilizándose en 2.9438, la cantidad de contaminante total dividida la longitud del tubo, 8.&lt;br /&gt;
[[Archivo:Regimen_estacionario.png|350x350px|miniaturadeimagen|izquierda|Régimen estacionario]]&lt;br /&gt;
&lt;br /&gt;
Por lo que podemos decir que el flujo es 0(muy próximo) y por la tanto la tanto la solución es homogénea siendo en cada instante y posición 2.9438.&lt;br /&gt;
La función de la solución sería u(x,t)= 2.9438 cuando el tiempo es grande.&lt;br /&gt;
Este estado estacionario se da cuando el flujo se aproxime a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para demostrar esta solución en régimen estacionario hemos usado los tiempos 0,1,2,10 y hemos calculado la media cuadrada entre el valor de estacionamiento y los diferentes valores de la concentración en cada posición:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Distancia para 0 segundos= 0.999499&amp;lt;br /&amp;gt;Distancia para 1 segundos = 0.776147&amp;lt;br /&amp;gt;Distancia para 2 segundos  = 0.657469&amp;lt;br /&amp;gt;Distancia para 10 segundos = 0.192049&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(L/h);&lt;br /&gt;
x=0:h:L; &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&lt;br /&gt;
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;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&lt;br /&gt;
dist0=(sqrt(sum((sol(1,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist1=(sqrt(sum((sol(28,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist2=(sqrt(sum((sol(56,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist10=(sqrt(sum((sol(267,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Uso de un limpiador de contaminante. Conclusiones. ==&lt;br /&gt;
Hemos calculado el tiempo en el cual podemos considerar que se ha alcanzado el estado estacionario (es decir cuando la distancia que hemos calculado anteriormente es menor de un valor establecido). El valor establecido es el 5% de la concentración media, es decir que este valor es 0.147187.&amp;lt;br /&amp;gt;&lt;br /&gt;
El tiempo que nos ha dado es 11.7375 segundos. &amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos el siguiente programa con tiempo 50.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=50;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
Hemos querido probar si el ∆x influía y para ello lo hemos multiplicado por 10. Hemos utilizado el anterior programa y solo hemos cambiado el ∆x .&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=400;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=1.5;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
x=[0,1.5,3,4.5,6,7.5,8]; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Y cambia el resultado ya que la distancia en ningún momento es menor del 5%, es decir de 0.147187. Por ello, aunque se podría suponer que no se alcanza el estado estacionario en realidad sí lo hace, pues lo que ocurre es que el error es mayor ya que la distancia que nos da es siempre constante e igual a 0.34375.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
En el segundo 1 se sitúa en el extremo 0 un filtro que limpia dicha posición. Hasta ese instante el problema es idéntico a los anteriores, pero a partir de entonces slo la concentración será nula en el extremo inicial. El nuevo valor estacionario es 0 ya que se va eliminando contaminante.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Contaminante0.png|400x400px|miniaturadeimagen|izquierda|Se aprecia que en la izquierda la cantidad de contaminante es 0]]&lt;br /&gt;
[[Archivo:TiempoGrande.png|400x400px|miniaturadeimagen|centro]] En este otro gráfico apreciamos como cuando el tiempo es muy grande la concentración total desciende a 0.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para obtener ambos gráficos se ha utilizado el siguiente programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Además este estado estacionario (que es 0) se alcanzará con menos del 5%  de error en 78.1875 segundos.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos este programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=100;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39173</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39173"/>
				<updated>2017-04-27T23:39:04Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: /* Estudio de la concentración. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo Javier Carrillo Pablo Escudero Alejandro Gaitón Alejandro González Pablo Vidal }}&lt;br /&gt;
&lt;br /&gt;
== Planteamiento del sistema. ==&lt;br /&gt;
En primer lugar, sabemos que para que se produzca difusión, es necesario que exista un gradiente de concentración o diferencia entre dos puntos del medio. Definimos la variable u como la concentración de contaminante en cada posición del tubo (que consideramos unidimensional y con sección despreciable, de longitud L=8m), la cual varía a lo largo del eje de abscisas (eje x), por lo que el intervalo en el que trabajaremos será [0,L]. Teniendo en cuenta la ley de Flick, sabemos que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x). Añadiendo la variable del tiempo, la concentración de contaminante en cada posición y en cada instante la expresaremos por u(x,t). La acumulación de partículas en cada instante que se produce por cada unidad de volumen S.dx (S es la sección) es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir uS-u’S=(du/dx).S.dx La acumulación de partículas por unidad de tiempo es S.dx.(du/dt) Si igualamos ambas expresiones y aplicamos la Ley de Flick nos queda d(D.(du/dx))/dx=du/dt. Obtenemos una ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión. Todo esto es válido si el coeficiente de difusión D no depende de la concentración.&lt;br /&gt;
&lt;br /&gt;
== Resolución del sistema. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa. ==&lt;br /&gt;
Integramos en todos los instantes la cantidad de contaminante que hay en cada punto de la barra, lo que nos da la masa total de contaminante en cada instante. A partir de la ecuación u(x,t)se deduce que la masa total del contaminante se conserva a lo largo del tiempo. Dicha masa es 23.550, hallada según el programa:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=12;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&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))/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Conservación_de_la_masa.png|500x500px|miniaturadeimagen|izquierda|&amp;quot;La masa es constante en el tiempo&amp;quot;]] [[Archivo:Cantidad en el punto medio.png|500x500px|miniaturadeimagen|derecha|&amp;quot;Variación de la masa en el punto medio&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aplicación de Euler implícito y Heun. ==&lt;br /&gt;
Resolvemos por los métodos de Euler explícito, ímplicito y de Heun con las condiciones inicilales del ejercicio anterior.&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Euler Explicito&lt;br /&gt;
  % Datos del problema&lt;br /&gt;
  L=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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);%tienes N+1 incognitas&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
&amp;lt;br /&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
  N=round(L/h);&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=[2*ones(1,2+N*4/8),3*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Observando las gráficas se aprecia que apenas hay diferencia.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Concentración casi constante. Consecuencias. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la imagen apreciamos como a tiempos grandes (50 segundos) el contaminante se distribuye de forma homogénea estabilizándose en 2.9438, la cantidad de contaminante total dividida la longitud del tubo, 8.&lt;br /&gt;
[[Archivo:Regimen_estacionario.png|350x350px|miniaturadeimagen|izquierda|Régimen estacionario]]&lt;br /&gt;
&lt;br /&gt;
Por lo que podemos decir que el flujo es 0(muy próximo) y por la tanto la tanto la solución es homogénea siendo en cada instante y posición 2.9438.&lt;br /&gt;
La función de la solución sería u(x,t)= 2.9438 cuando el tiempo es grande.&lt;br /&gt;
Este estado estacionario se da cuando el flujo se aproxime a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para demostrar esta solución en régimen estacionario hemos usado los tiempos 0,1,2,10 y hemos calculado la media cuadrada entre el valor de estacionamiento y los diferentes valores de la concentración en cada posición:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Distancia para 0 segundos= 0.999499&amp;lt;br /&amp;gt;Distancia para 1 segundos = 0.776147&amp;lt;br /&amp;gt;Distancia para 2 segundos  = 0.657469&amp;lt;br /&amp;gt;Distancia para 10 segundos = 0.192049&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(L/h);&lt;br /&gt;
x=0:h:L; &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&lt;br /&gt;
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;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&lt;br /&gt;
dist0=(sqrt(sum((sol(1,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist1=(sqrt(sum((sol(28,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist2=(sqrt(sum((sol(56,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist10=(sqrt(sum((sol(267,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Uso de un limpiador de contaminante. Conclusiones. ==&lt;br /&gt;
Hemos calculado el tiempo en el cual podemos considerar que se ha alcanzado el estado estacionario (es decir cuando la distancia que hemos calculado anteriormente es menor de un valor establecido). El valor establecido es el 5% de la concentración media, es decir que este valor es 0.147187.&amp;lt;br /&amp;gt;&lt;br /&gt;
El tiempo que nos ha dado es 11.7375 segundos. &amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos el siguiente programa con tiempo 50.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=50;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
Hemos querido probar si el ∆x influía y para ello lo hemos multiplicado por 10. Hemos utilizado el anterior programa y solo hemos cambiado el ∆x .&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=400;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=1.5;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
x=[0,1.5,3,4.5,6,7.5,8]; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Y cambia el resultado ya que la distancia en ningún momento es menor del 5%, es decir de 0.147187. Por ello, aunque se podría suponer que no se alcanza el estado estacionario en realidad sí lo hace, pues lo que ocurre es que el error es mayor ya que la distancia que nos da es siempre constante e igual a 0.34375.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
En el segundo 1 se sitúa en el extremo 0 un filtro que limpia dicha posición. Hasta ese instante el problema es idéntico a los anteriores, pero a partir de entonces slo la concentración será nula en el extremo inicial. El nuevo valor estacionario es 0 ya que se va eliminando contaminante.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Contaminante0.png|400x400px|miniaturadeimagen|izquierda|Se aprecia que en la izquierda la cantidad de contaminante es 0]]&lt;br /&gt;
[[Archivo:TiempoGrande.png|400x400px|miniaturadeimagen|centro]] En este otro gráfico apreciamos como cuando el tiempo es muy grande la concentración total desciende a 0.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para obtener ambos gráficos se ha utilizado el siguiente programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Además este estado estacionario (que es 0) se alcanzará con menos del 5%  de error en 78.1875 segundos.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos este programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=100;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39172</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39172"/>
				<updated>2017-04-27T23:38:16Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: /* Aplicación de Euler implícito y Heun. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo Javier Carrillo Pablo Escudero Alejandro Gaitón Alejandro González Pablo Vidal }}&lt;br /&gt;
&lt;br /&gt;
== Planteamiento del sistema. ==&lt;br /&gt;
En primer lugar, sabemos que para que se produzca difusión, es necesario que exista un gradiente de concentración o diferencia entre dos puntos del medio. Definimos la variable u como la concentración de contaminante en cada posición del tubo (que consideramos unidimensional y con sección despreciable, de longitud L=8m), la cual varía a lo largo del eje de abscisas (eje x), por lo que el intervalo en el que trabajaremos será [0,L]. Teniendo en cuenta la ley de Flick, sabemos que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x). Añadiendo la variable del tiempo, la concentración de contaminante en cada posición y en cada instante la expresaremos por u(x,t). La acumulación de partículas en cada instante que se produce por cada unidad de volumen S.dx (S es la sección) es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir uS-u’S=(du/dx).S.dx La acumulación de partículas por unidad de tiempo es S.dx.(du/dt) Si igualamos ambas expresiones y aplicamos la Ley de Flick nos queda d(D.(du/dx))/dx=du/dt. Obtenemos una ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión. Todo esto es válido si el coeficiente de difusión D no depende de la concentración.&lt;br /&gt;
&lt;br /&gt;
== Resolución del sistema. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa. ==&lt;br /&gt;
Integramos en todos los instantes la cantidad de contaminante que hay en cada punto de la barra, lo que nos da la masa total de contaminante en cada instante. A partir de la ecuación u(x,t)se deduce que la masa total del contaminante se conserva a lo largo del tiempo. Dicha masa es 23.550, hallada según el programa:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=12;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&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))/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Conservación_de_la_masa.png|500x500px|miniaturadeimagen|izquierda|&amp;quot;La masa es constante en el tiempo&amp;quot;]] [[Archivo:Cantidad en el punto medio.png|500x500px|miniaturadeimagen|derecha|&amp;quot;Variación de la masa en el punto medio&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aplicación de Euler implícito y Heun. ==&lt;br /&gt;
Resolvemos por los métodos de Euler explícito, ímplicito y de Heun con las condiciones inicilales del ejercicio anterior.&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
  % Euler Explicito&lt;br /&gt;
  % Datos del problema&lt;br /&gt;
  L=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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);%tienes N+1 incognitas&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
&amp;lt;br /&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
 N=round(L/h);&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&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=8;&lt;br /&gt;
  T=7;&lt;br /&gt;
  q=1;&lt;br /&gt;
  % Discretizacion espacial&lt;br /&gt;
  h=0.15;&lt;br /&gt;
  N=round(L/h);&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=[2*ones(1,2+N*4/8),3*ones(1,N*4/8)]';&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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Observando las gráficas se aprecia que apenas hay diferencia.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Concentración casi constante. Consecuencias. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Estudio de la concentración. ==&lt;br /&gt;
En la imagen apreciamos como a tiempos grandes (50 segundos) el contaminante se distribuye de forma homogénea estabilizándose en 2.9438, la cantidad de contaminante total dividida la longitud del tubo, 8.&lt;br /&gt;
[[Archivo:Regimen_estacionario.png|350x350px|miniaturadeimagen|izquierda|Régimen estacionario]]&lt;br /&gt;
&lt;br /&gt;
Por lo que podemos decir que el flujo es 0(muy próximo) y por la tanto la tanto la solución es homogénea siendo en cada instante y posición 2.9438.&lt;br /&gt;
La función de la solución sería u(x,t)= 2.9438 cuando el tiempo es grande.&lt;br /&gt;
Este estado estacionario se da cuando el flujo se aproxime a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para demostrar esta solución en régimen estacionario hemos usado los tiempos 0,1,2,10 y hemos calculado la media cuadrada entre el valor de estacionamiento y los diferentes valores de la concentración en cada posición:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Distancia para 0 segundos= 0.999499&amp;lt;br /&amp;gt;Distancia para 1 segundos = 0.776147&amp;lt;br /&amp;gt;Distancia para 2 segundos  = 0.657469&amp;lt;br /&amp;gt;Distancia para 10 segundos = 0.192049&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(L/h);&lt;br /&gt;
x=0:h:L; &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&lt;br /&gt;
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;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&lt;br /&gt;
dist0=(sqrt(sum((sol(1,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist1=(sqrt(sum((sol(28,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist2=(sqrt(sum((sol(56,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist10=(sqrt(sum((sol(267,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Uso de un limpiador de contaminante. Conclusiones. ==&lt;br /&gt;
Hemos calculado el tiempo en el cual podemos considerar que se ha alcanzado el estado estacionario (es decir cuando la distancia que hemos calculado anteriormente es menor de un valor establecido). El valor establecido es el 5% de la concentración media, es decir que este valor es 0.147187.&amp;lt;br /&amp;gt;&lt;br /&gt;
El tiempo que nos ha dado es 11.7375 segundos. &amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos el siguiente programa con tiempo 50.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=50;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
Hemos querido probar si el ∆x influía y para ello lo hemos multiplicado por 10. Hemos utilizado el anterior programa y solo hemos cambiado el ∆x .&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=400;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=1.5;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
x=[0,1.5,3,4.5,6,7.5,8]; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Y cambia el resultado ya que la distancia en ningún momento es menor del 5%, es decir de 0.147187. Por ello, aunque se podría suponer que no se alcanza el estado estacionario en realidad sí lo hace, pues lo que ocurre es que el error es mayor ya que la distancia que nos da es siempre constante e igual a 0.34375.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
En el segundo 1 se sitúa en el extremo 0 un filtro que limpia dicha posición. Hasta ese instante el problema es idéntico a los anteriores, pero a partir de entonces slo la concentración será nula en el extremo inicial. El nuevo valor estacionario es 0 ya que se va eliminando contaminante.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Contaminante0.png|400x400px|miniaturadeimagen|izquierda|Se aprecia que en la izquierda la cantidad de contaminante es 0]]&lt;br /&gt;
[[Archivo:TiempoGrande.png|400x400px|miniaturadeimagen|centro]] En este otro gráfico apreciamos como cuando el tiempo es muy grande la concentración total desciende a 0.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para obtener ambos gráficos se ha utilizado el siguiente programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Además este estado estacionario (que es 0) se alcanzará con menos del 5%  de error en 78.1875 segundos.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos este programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=100;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39171</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39171"/>
				<updated>2017-04-27T23:26:49Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo Javier Carrillo Pablo Escudero Alejandro Gaitón Alejandro González Pablo Vidal }}&lt;br /&gt;
&lt;br /&gt;
== Planteamiento del sistema. ==&lt;br /&gt;
En primer lugar, sabemos que para que se produzca difusión, es necesario que exista un gradiente de concentración o diferencia entre dos puntos del medio. Definimos la variable u como la concentración de contaminante en cada posición del tubo (que consideramos unidimensional y con sección despreciable, de longitud L=8m), la cual varía a lo largo del eje de abscisas (eje x), por lo que el intervalo en el que trabajaremos será [0,L]. Teniendo en cuenta la ley de Flick, sabemos que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x). Añadiendo la variable del tiempo, la concentración de contaminante en cada posición y en cada instante la expresaremos por u(x,t). La acumulación de partículas en cada instante que se produce por cada unidad de volumen S.dx (S es la sección) es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir uS-u’S=(du/dx).S.dx La acumulación de partículas por unidad de tiempo es S.dx.(du/dt) Si igualamos ambas expresiones y aplicamos la Ley de Flick nos queda d(D.(du/dx))/dx=du/dt. Obtenemos una ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión. Todo esto es válido si el coeficiente de difusión D no depende de la concentración.&lt;br /&gt;
&lt;br /&gt;
== Resolución del sistema. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa. ==&lt;br /&gt;
Integramos en todos los instantes la cantidad de contaminante que hay en cada punto de la barra, lo que nos da la masa total de contaminante en cada instante. A partir de la ecuación u(x,t)se deduce que la masa total del contaminante se conserva a lo largo del tiempo. Dicha masa es 23.550, hallada según el programa:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=12;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&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))/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Conservación_de_la_masa.png|500x500px|miniaturadeimagen|izquierda|&amp;quot;La masa es constante en el tiempo&amp;quot;]] [[Archivo:Cantidad en el punto medio.png|500x500px|miniaturadeimagen|derecha|&amp;quot;Variación de la masa en el punto medio&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aplicación de Euler implícito y Heun. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Concentración casi constante. Consecuencias. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Estudio de la concentración. ==&lt;br /&gt;
En la imagen apreciamos como a tiempos grandes (50 segundos) el contaminante se distribuye de forma homogénea estabilizándose en 2.9438, la cantidad de contaminante total dividida la longitud del tubo, 8.&lt;br /&gt;
[[Archivo:Regimen_estacionario.png|350x350px|miniaturadeimagen|izquierda|Régimen estacionario]]&lt;br /&gt;
&lt;br /&gt;
Por lo que podemos decir que el flujo es 0(muy próximo) y por la tanto la tanto la solución es homogénea siendo en cada instante y posición 2.9438.&lt;br /&gt;
La función de la solución sería u(x,t)= 2.9438 cuando el tiempo es grande.&lt;br /&gt;
Este estado estacionario se da cuando el flujo se aproxime a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para demostrar esta solución en régimen estacionario hemos usado los tiempos 0,1,2,10 y hemos calculado la media cuadrada entre el valor de estacionamiento y los diferentes valores de la concentración en cada posición:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Distancia para 0 segundos= 0.999499&amp;lt;br /&amp;gt;Distancia para 1 segundos = 0.776147&amp;lt;br /&amp;gt;Distancia para 2 segundos  = 0.657469&amp;lt;br /&amp;gt;Distancia para 10 segundos = 0.192049&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(L/h);&lt;br /&gt;
x=0:h:L; &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&lt;br /&gt;
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;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&lt;br /&gt;
dist0=(sqrt(sum((sol(1,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist1=(sqrt(sum((sol(28,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist2=(sqrt(sum((sol(56,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist10=(sqrt(sum((sol(267,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Uso de un limpiador de contaminante. Conclusiones. ==&lt;br /&gt;
Hemos calculado el tiempo en el cual podemos considerar que se ha alcanzado el estado estacionario (es decir cuando la distancia que hemos calculado anteriormente es menor de un valor establecido). El valor establecido es el 5% de la concentración media, es decir que este valor es 0.147187.&amp;lt;br /&amp;gt;&lt;br /&gt;
El tiempo que nos ha dado es 11.7375 segundos. &amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos el siguiente programa con tiempo 50.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=50;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
Hemos querido probar si el ∆x influía y para ello lo hemos multiplicado por 10. Hemos utilizado el anterior programa y solo hemos cambiado el ∆x .&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=400;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=1.5;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
x=[0,1.5,3,4.5,6,7.5,8]; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Y cambia el resultado ya que la distancia en ningún momento es menor del 5%, es decir de 0.147187. Por ello, aunque se podría suponer que no se alcanza el estado estacionario en realidad sí lo hace, pues lo que ocurre es que el error es mayor ya que la distancia que nos da es siempre constante e igual a 0.34375.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
En el segundo 1 se sitúa en el extremo 0 un filtro que limpia dicha posición. Hasta ese instante el problema es idéntico a los anteriores, pero a partir de entonces slo la concentración será nula en el extremo inicial. El nuevo valor estacionario es 0 ya que se va eliminando contaminante.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Contaminante0.png|400x400px|miniaturadeimagen|izquierda|Se aprecia que en la izquierda la cantidad de contaminante es 0]]&lt;br /&gt;
[[Archivo:TiempoGrande.png|400x400px|miniaturadeimagen|centro]] En este otro gráfico apreciamos como cuando el tiempo es muy grande la concentración total desciende a 0.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para obtener ambos gráficos se ha utilizado el siguiente programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Además este estado estacionario (que es 0) se alcanzará con menos del 5%  de error en 78.1875 segundos.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos este programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=100;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39170</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39170"/>
				<updated>2017-04-27T23:26:22Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: /* Planteamiento del sistema. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo Javier Carrillo Pablo Escudero Alejandro Gaitón Alejandro González Pablo Vidal }}&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. 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) 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. La concentración en cada punto de la barra a lo largo del tiempo será u(x,t) 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 uS-u’S=(du/dx).S.dx La acumulación de partículas en la unidad de tiempo es S.dx.(du/dt) Igualando ambas expresiones y utilizando la Ley de Flick se obtiene d(D.(du/dx))/dx=du/dt 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;
&lt;br /&gt;
== Planteamiento del sistema. ==&lt;br /&gt;
En primer lugar, sabemos que para que se produzca difusión, es necesario que exista un gradiente de concentración o diferencia entre dos puntos del medio. Definimos la variable u como la concentración de contaminante en cada posición del tubo (que consideramos unidimensional y con sección despreciable, de longitud L=8m), la cual varía a lo largo del eje de abscisas (eje x), por lo que el intervalo en el que trabajaremos será [0,L]. Teniendo en cuenta la ley de Flick, sabemos que la densidad de corriente de partículas es proporcional al gradiente de concentración F = −D x(∂u /∂x). Añadiendo la variable del tiempo, la concentración de contaminante en cada posición y en cada instante la expresaremos por u(x,t). La acumulación de partículas en cada instante que se produce por cada unidad de volumen S.dx (S es la sección) es igual a la diferencia entre el flujo entrante uS, menos el flujo saliente u’S, es decir uS-u’S=(du/dx).S.dx La acumulación de partículas por unidad de tiempo es S.dx.(du/dt) Si igualamos ambas expresiones y aplicamos la Ley de Flick nos queda d(D.(du/dx))/dx=du/dt. Obtenemos una ecuación diferencial en derivadas parciales que describe el fenómeno de la difusión. Todo esto es válido si el coeficiente de difusión D no depende de la concentración.&lt;br /&gt;
&lt;br /&gt;
== Resolución del sistema. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa. ==&lt;br /&gt;
Integramos en todos los instantes la cantidad de contaminante que hay en cada punto de la barra, lo que nos da la masa total de contaminante en cada instante. A partir de la ecuación u(x,t)se deduce que la masa total del contaminante se conserva a lo largo del tiempo. Dicha masa es 23.550, hallada según el programa:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=12;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&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))/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Conservación_de_la_masa.png|500x500px|miniaturadeimagen|izquierda|&amp;quot;La masa es constante en el tiempo&amp;quot;]] [[Archivo:Cantidad en el punto medio.png|500x500px|miniaturadeimagen|derecha|&amp;quot;Variación de la masa en el punto medio&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aplicación de Euler implícito y Heun. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Concentración casi constante. Consecuencias. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Estudio de la concentración. ==&lt;br /&gt;
En la imagen apreciamos como a tiempos grandes (50 segundos) el contaminante se distribuye de forma homogénea estabilizándose en 2.9438, la cantidad de contaminante total dividida la longitud del tubo, 8.&lt;br /&gt;
[[Archivo:Regimen_estacionario.png|350x350px|miniaturadeimagen|izquierda|Régimen estacionario]]&lt;br /&gt;
&lt;br /&gt;
Por lo que podemos decir que el flujo es 0(muy próximo) y por la tanto la tanto la solución es homogénea siendo en cada instante y posición 2.9438.&lt;br /&gt;
La función de la solución sería u(x,t)= 2.9438 cuando el tiempo es grande.&lt;br /&gt;
Este estado estacionario se da cuando el flujo se aproxime a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para demostrar esta solución en régimen estacionario hemos usado los tiempos 0,1,2,10 y hemos calculado la media cuadrada entre el valor de estacionamiento y los diferentes valores de la concentración en cada posición:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Distancia para 0 segundos= 0.999499&amp;lt;br /&amp;gt;Distancia para 1 segundos = 0.776147&amp;lt;br /&amp;gt;Distancia para 2 segundos  = 0.657469&amp;lt;br /&amp;gt;Distancia para 10 segundos = 0.192049&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(L/h);&lt;br /&gt;
x=0:h:L; &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&lt;br /&gt;
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;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&lt;br /&gt;
dist0=(sqrt(sum((sol(1,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist1=(sqrt(sum((sol(28,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist2=(sqrt(sum((sol(56,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist10=(sqrt(sum((sol(267,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Uso de un limpiador de contaminante. Conclusiones. ==&lt;br /&gt;
Hemos calculado el tiempo en el cual podemos considerar que se ha alcanzado el estado estacionario (es decir cuando la distancia que hemos calculado anteriormente es menor de un valor establecido). El valor establecido es el 5% de la concentración media, es decir que este valor es 0.147187.&amp;lt;br /&amp;gt;&lt;br /&gt;
El tiempo que nos ha dado es 11.7375 segundos. &amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos el siguiente programa con tiempo 50.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=50;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
Hemos querido probar si el ∆x influía y para ello lo hemos multiplicado por 10. Hemos utilizado el anterior programa y solo hemos cambiado el ∆x .&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=400;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=1.5;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
x=[0,1.5,3,4.5,6,7.5,8]; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Y cambia el resultado ya que la distancia en ningún momento es menor del 5%, es decir de 0.147187. Por ello, aunque se podría suponer que no se alcanza el estado estacionario en realidad sí lo hace, pues lo que ocurre es que el error es mayor ya que la distancia que nos da es siempre constante e igual a 0.34375.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
En el segundo 1 se sitúa en el extremo 0 un filtro que limpia dicha posición. Hasta ese instante el problema es idéntico a los anteriores, pero a partir de entonces slo la concentración será nula en el extremo inicial. El nuevo valor estacionario es 0 ya que se va eliminando contaminante.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Contaminante0.png|400x400px|miniaturadeimagen|izquierda|Se aprecia que en la izquierda la cantidad de contaminante es 0]]&lt;br /&gt;
[[Archivo:TiempoGrande.png|400x400px|miniaturadeimagen|centro]] En este otro gráfico apreciamos como cuando el tiempo es muy grande la concentración total desciende a 0.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para obtener ambos gráficos se ha utilizado el siguiente programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Además este estado estacionario (que es 0) se alcanzará con menos del 5%  de error en 78.1875 segundos.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos este programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=100;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39169</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39169"/>
				<updated>2017-04-27T23:19:19Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: /* Uso de un limpiador de contaminante. Conclusiones. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo Javier Carrillo Pablo Escudero Alejandro Gaitón Alejandro González Pablo Vidal }}&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. 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) 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. La concentración en cada punto de la barra a lo largo del tiempo será u(x,t) 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 uS-u’S=(du/dx).S.dx La acumulación de partículas en la unidad de tiempo es S.dx.(du/dt) Igualando ambas expresiones y utilizando la Ley de Flick se obtiene d(D.(du/dx))/dx=du/dt 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;
&lt;br /&gt;
== Planteamiento del sistema. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Resolución del sistema. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa. ==&lt;br /&gt;
Integramos en todos los instantes la cantidad de contaminante que hay en cada punto de la barra, lo que nos da la masa total de contaminante en cada instante. A partir de la ecuación u(x,t)se deduce que la masa total del contaminante se conserva a lo largo del tiempo. Dicha masa es 23.550, hallada según el programa:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=12;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&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))/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Conservación_de_la_masa.png|500x500px|miniaturadeimagen|izquierda|&amp;quot;La masa es constante en el tiempo&amp;quot;]] [[Archivo:Cantidad en el punto medio.png|500x500px|miniaturadeimagen|derecha|&amp;quot;Variación de la masa en el punto medio&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aplicación de Euler implícito y Heun. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Concentración casi constante. Consecuencias. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Estudio de la concentración. ==&lt;br /&gt;
En la imagen apreciamos como a tiempos grandes (50 segundos) el contaminante se distribuye de forma homogénea estabilizándose en 2.9438, la cantidad de contaminante total dividida la longitud del tubo, 8.&lt;br /&gt;
[[Archivo:Regimen_estacionario.png|350x350px|miniaturadeimagen|izquierda|Régimen estacionario]]&lt;br /&gt;
&lt;br /&gt;
Por lo que podemos decir que el flujo es 0(muy próximo) y por la tanto la tanto la solución es homogénea siendo en cada instante y posición 2.9438.&lt;br /&gt;
La función de la solución sería u(x,t)= 2.9438 cuando el tiempo es grande.&lt;br /&gt;
Este estado estacionario se da cuando el flujo se aproxime a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para demostrar esta solución en régimen estacionario hemos usado los tiempos 0,1,2,10 y hemos calculado la media cuadrada entre el valor de estacionamiento y los diferentes valores de la concentración en cada posición:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Distancia para 0 segundos= 0.999499&amp;lt;br /&amp;gt;Distancia para 1 segundos = 0.776147&amp;lt;br /&amp;gt;Distancia para 2 segundos  = 0.657469&amp;lt;br /&amp;gt;Distancia para 10 segundos = 0.192049&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(L/h);&lt;br /&gt;
x=0:h:L; &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&lt;br /&gt;
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;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&lt;br /&gt;
dist0=(sqrt(sum((sol(1,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist1=(sqrt(sum((sol(28,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist2=(sqrt(sum((sol(56,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist10=(sqrt(sum((sol(267,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Uso de un limpiador de contaminante. Conclusiones. ==&lt;br /&gt;
Hemos calculado el tiempo en el cual podemos considerar que se ha alcanzado el estado estacionario (es decir cuando la distancia que hemos calculado anteriormente es menor de un valor establecido). El valor establecido es el 5% de la concentración media, es decir que este valor es 0.147187.&amp;lt;br /&amp;gt;&lt;br /&gt;
El tiempo que nos ha dado es 11.7375 segundos. &amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos el siguiente programa con tiempo 50.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=50;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
Hemos querido probar si el ∆x influía y para ello lo hemos multiplicado por 10. Hemos utilizado el anterior programa y solo hemos cambiado el ∆x .&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=400;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=1.5;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
x=[0,1.5,3,4.5,6,7.5,8]; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Y cambia el resultado ya que la distancia en ningún momento es menor del 5%, es decir de 0.147187. Por ello, aunque se podría suponer que no se alcanza el estado estacionario en realidad sí lo hace, pues lo que ocurre es que el error es mayor ya que la distancia que nos da es siempre constante e igual a 0.34375.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
En el segundo 1 se sitúa en el extremo 0 un filtro que limpia dicha posición. Hasta ese instante el problema es idéntico a los anteriores, pero a partir de entonces slo la concentración será nula en el extremo inicial. El nuevo valor estacionario es 0 ya que se va eliminando contaminante.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Contaminante0.png|400x400px|miniaturadeimagen|izquierda|Se aprecia que en la izquierda la cantidad de contaminante es 0]]&lt;br /&gt;
[[Archivo:TiempoGrande.png|400x400px|miniaturadeimagen|centro]] En este otro gráfico apreciamos como cuando el tiempo es muy grande la concentración total desciende a 0.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para obtener ambos gráficos se ha utilizado el siguiente programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Además este estado estacionario (que es 0) se alcanzará con menos del 5%  de error en 78.1875 segundos.&amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos este programa:&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&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=8;&lt;br /&gt;
T=100;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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:round(((length(t)-1)/T))&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=round(((length(t)-1)/T)):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;
% Dibujamos la solucion&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
surf(xx,tt,sol);&lt;br /&gt;
 &lt;br /&gt;
 % Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:TiempoGrande.png&amp;diff=39168</id>
		<title>Archivo:TiempoGrande.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:TiempoGrande.png&amp;diff=39168"/>
				<updated>2017-04-27T23:14:11Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Contaminante0.png&amp;diff=39167</id>
		<title>Archivo:Contaminante0.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Contaminante0.png&amp;diff=39167"/>
				<updated>2017-04-27T23:10:09Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39057</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=39057"/>
				<updated>2017-04-27T14:19:36Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo Javier Carrillo Pablo Escudero Alejandro Gaitón Alejandro González Pablo Vidal }}&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. 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) 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. La concentración en cada punto de la barra a lo largo del tiempo será u(x,t) 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 uS-u’S=(du/dx).S.dx La acumulación de partículas en la unidad de tiempo es S.dx.(du/dt) Igualando ambas expresiones y utilizando la Ley de Flick se obtiene d(D.(du/dx))/dx=du/dt 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;
&lt;br /&gt;
== Planteamiento del sistema. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Resolución del sistema. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa. ==&lt;br /&gt;
Integramos en todos los instantes la cantidad de contaminante que hay en cada punto de la barra, lo que nos da la masa total de contaminante en cada instante. A partir de la ecuación u(x,t)se deduce que la masa total del contaminante se conserva a lo largo del tiempo. Dicha masa es 23.550, hallada según el programa:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=12;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&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=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&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))/2;&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(:,punto_medio))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Conservación_de_la_masa.png|500x500px|miniaturadeimagen|izquierda|&amp;quot;La masa es constante en el tiempo&amp;quot;]] [[Archivo:Cantidad en el punto medio.png|500x500px|miniaturadeimagen|derecha|&amp;quot;Variación de la masa en el punto medio&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aplicación de Euler implícito y Heun. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Concentración casi constante. Consecuencias. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Estudio de la concentración. ==&lt;br /&gt;
En la imagen apreciamos como a tiempos grandes (50 segundos) el contaminante se distribuye de forma homogénea estabilizándose en 2.9438, la cantidad de contaminante total dividida la longitud del tubo, 8.&lt;br /&gt;
[[Archivo:Regimen_estacionario.png|350x350px|miniaturadeimagen|izquierda|Régimen estacionario]]&lt;br /&gt;
&lt;br /&gt;
Por lo que podemos decir que el flujo es 0(muy próximo) y por la tanto la tanto la solución es homogénea siendo en cada instante y posición 2.9438.&lt;br /&gt;
La función de la solución sería u(x,t)= 2.9438 cuando el tiempo es grande.&lt;br /&gt;
Este estado estacionario se da cuando el flujo se aproxime a 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para demostrar esta solución en régimen estacionario hemos usado los tiempos 0,1,2,10 y hemos calculado la media cuadrada entre el valor de estacionamiento y los diferentes valores de la concentración en cada posición:&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Distancia para 0 segundos= 0.999499&amp;lt;br /&amp;gt;Distancia para 1 segundos = 0.776147&amp;lt;br /&amp;gt;Distancia para 2 segundos  = 0.657469&amp;lt;br /&amp;gt;Distancia para 10 segundos = 0.192049&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&lt;br /&gt;
% u_x(L,t)=0 Condicion Neumann&lt;br /&gt;
% u(x,0)=u0(x)&lt;br /&gt;
% Datos&lt;br /&gt;
L=8;&lt;br /&gt;
T=10;&lt;br /&gt;
q=1;&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
h=0.15;&lt;br /&gt;
N=round(L/h);&lt;br /&gt;
x=0:h:L; &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&lt;br /&gt;
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;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
  % Calculamos u0&lt;br /&gt;
  u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
&lt;br /&gt;
dist0=(sqrt(sum((sol(1,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist1=(sqrt(sum((sol(28,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist2=(sqrt(sum((sol(56,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
dist10=(sqrt(sum((sol(267,:)-(23.550/8)).^2)/(N+1)))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Uso de un limpiador de contaminante. Conclusiones. ==&lt;br /&gt;
Hemos calculado el tiempo en el cual podemos considerar que se ha alcanzado el estado estacionario (es decir cuando la distancia que hemos calculado anteriormente es menor de un valor establecido). El valor establecido es el 5% de la concentración media, es decir que este valor es 0.147187.&amp;lt;br /&amp;gt;&lt;br /&gt;
El tiempo que nos ha dado es 11.7375 segundos. &amp;lt;br /&amp;gt;&lt;br /&gt;
Para ello utilizamos el siguiente programa con tiempo 50.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=50;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=0.15;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
 x=0:h:L; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
Hemos querido probar si el ∆x influía y para ello lo hemos multiplicado por 10. Hemos utilizado el anterior programa y solo hemos cambiado el ∆x .&amp;lt;br /&amp;gt;&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% u_t-qu_xx=0, x en (0,L)&lt;br /&gt;
% u_x(0,t)=0 Condicion Neumann&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=8;&lt;br /&gt;
T=400;&lt;br /&gt;
q=1;&lt;br /&gt;
&lt;br /&gt;
% Discretizacion espacial&lt;br /&gt;
 h=1.5;&lt;br /&gt;
 N=round(L/h);&lt;br /&gt;
x=[0,1.5,3,4.5,6,7.5,8]; &lt;br /&gt;
% Discretizacion temporal&lt;br /&gt;
dt=0.15/4; % Tamaño de paso&lt;br /&gt;
t=0:dt:T; % Vector de tiempos&lt;br /&gt;
&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; % Condicion Neumann&lt;br /&gt;
K(N+1,N)=-2; % Condicion Neumann&lt;br /&gt;
K=q*K/h^2;&lt;br /&gt;
&lt;br /&gt;
% Definimos F&lt;br /&gt;
F=zeros(N+1,1);&lt;br /&gt;
&lt;br /&gt;
% Calculamos u0&lt;br /&gt;
&lt;br /&gt;
u0=[2*ones(1,2+N*4/8),4*ones(1,N*4/8)]';&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 % 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;
% Calculamos cual es el error del 5%&lt;br /&gt;
limite=0.05*(23.550/8);&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,:)-(23.550/8)).^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;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Y cambia el resultado ya que la distancia en ningún momento es menor del 5%, es decir de 0.147187. Por ello, aunque se podría suponer que no se alcanza el estado estacionario en realidad sí lo hace, pues lo que ocurre es que el error es mayor ya que la distancia que nos da es siempre constante e igual a 0.34375.&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Regimen_estacionario.png&amp;diff=39056</id>
		<title>Archivo:Regimen estacionario.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Regimen_estacionario.png&amp;diff=39056"/>
				<updated>2017-04-27T14:01:18Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Cantidad_en_el_punto_medio.png&amp;diff=39055</id>
		<title>Archivo:Cantidad en el punto medio.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Cantidad_en_el_punto_medio.png&amp;diff=39055"/>
				<updated>2017-04-27T13:55:32Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Conservaci%C3%B3n_de_la_masa.png&amp;diff=39054</id>
		<title>Archivo:Conservación de la masa.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Conservaci%C3%B3n_de_la_masa.png&amp;diff=39054"/>
				<updated>2017-04-27T13:49:09Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=38904</id>
		<title>Difusión de una sustancia contaminante - Grupo 11B</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_-_Grupo_11B&amp;diff=38904"/>
				<updated>2017-04-25T16:56:31Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: Página creada con «{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | Ecuaciones Diferenciales|Curso 2016-17 |...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de sustancias contaminantes. Grupo 11B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Alejandro Barnuevo Javier Carrillo Pablo Escudero Alejandro Gaitón Alejandro González Pablo Vidal }}&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. 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) 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. La concentración en cada punto de la barra a lo largo del tiempo será u(x,t) 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 uS-u’S=(du/dx).S.dx La acumulación de partículas en la unidad de tiempo es S.dx.(du/dt) Igualando ambas expresiones y utilizando la Ley de Flick se obtiene d(D.(du/dx))/dx=du/dt 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;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;br /&gt;
[[Categoría:Trabajos 2016-17]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Visualizaci%C3%B3n_de_campos_escalares_y_vectoriales_en_fluidos_(Grupo_12A)&amp;diff=38414</id>
		<title>Visualización de campos escalares y vectoriales en fluidos (Grupo 12A)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Visualizaci%C3%B3n_de_campos_escalares_y_vectoriales_en_fluidos_(Grupo_12A)&amp;diff=38414"/>
				<updated>2016-12-13T09:34:07Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: /* Curvas de nivel de la presión */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En el artículo desarrollado a continuación vamos a estudiar el flujo de un fluido incompresible alrededor de un obstáculo con forma circular. Vamos a trabajar con coordenadas cilíndricas (polares ya que se reduce al plano) ya que con la forma del obstáculo, los cálculos nos resultarán más sencillos. Las gráficas que mostremos aquí han sido obtenidas con el programa [[MATLAB]] / [[OCTAVE]].&amp;lt;br /&amp;gt;&lt;br /&gt;
{{ TrabajoED | Visualización de campos escalares y vectoriales en fluidos. Grupo 12A | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC16/17|2016-17]] | Jorge Barrena Blázquez, Rommel Beltrán Carrero, Pablo Domingo Escudero Bravo, Carlos Maroto Escribano}}&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC16/17]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introducción==&lt;br /&gt;
Antes de comenzar, cabe explicar el concepto de fluido incompresible. Un fluido incompresible es aquel cuya masa y volumen no variarán, permaneciendo constantes en el tiempo; y se opone a las compresiones ofrecidas bajo cualquier condición o circunstancia. Su significado matemático, por tanto, es que dicho fluido tendrá una densidad constante, facilitando los cálculos necesarios por homogeneidad de sus propiedades en cualquier posición.&lt;br /&gt;
&lt;br /&gt;
==Región ocupada por un fluido==&lt;br /&gt;
&lt;br /&gt;
De forma previa a la realización de cálculo alguno respecto al comportamiento del fluido habrá que delimitar la región del estudio. Se nos da una corona circular de radios 1 y 5, por lo que representamos su mallado en el intervalo [-5,5] x [-5,5]:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Obstaculomatlab.png|500x500px|miniaturadeimagen|izquierda]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Obstaculo.jpg|1000x1000px|miniaturadeimagen|izquierda]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Función potencial y su campo de velocidades==&lt;br /&gt;
La velocidad de las partículas del fluido viene dada por el gradiente de :&lt;br /&gt;
[[Archivo:Formula1.png|400x200|sinmarco|izquierda]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Velocidad.png|400x200px|sinmarco|izquierda]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La representación gráfica de la función potencial y su gradiente (campo de velocidades) es la siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Funcionpotencialmatlab.png|450x900px|miniaturadeimagen|izquierda]] [[Archivo:Campodevelocidadesmatlab.png|700×900px|marco|derecha]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Campo y funcion potencial lineas de nivel2.jpg|600x550px|miniaturadeimagen|derecha]]&lt;br /&gt;
[[Archivo:Funcionpotencial5.jpg|700x380px|miniaturadeimagen|izquierda]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ampliando la imagen del campo de velocidades puede apreciarse que es ortogonal a la función potencial. Además, para mayor claridad se han superpuesto los gráficos de la función potencial y del campo de velocidades.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[Archivo:ZOOM.jpg|750px|thumb|sinmarco|izquierda]] &lt;br /&gt;
[[Archivo:Campo_y_funcion_potencial22.jpg|500px|thumb|sinmarco|derecha]]  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Velocidades paralelas a la superficie====&lt;br /&gt;
Vamos a experimentar con las direcciones de la velocidad al entrar en contacto con el obstáculo. Probando a hacer el producto escalar entre la velocidad del fluido y el vector normal del osbtáculo obtenemos:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:U.n2.png|200x200]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Con lo que puede deducirse que la velocidad del fluido siempre será perpendicular al vector normal de la superficie, es decir, que las partículas del fluido únicamente rodearán el espacio, no lo pasarán por encima, pues las componentes verticales de la velocidad se anulan.&lt;br /&gt;
&lt;br /&gt;
====Campo de velocidades y función potencial lejos del obstáculo====&lt;br /&gt;
Vamos a ver qué sucede cuando nos alejamos mucho de nuestro obstáculo y entonces  \(\rho\) es  muy grande. Para ello vamos a hacer el límite de cuando \(\rho\) tiende a infinito de nuestra función potencial  \(\varphi= \big( \rho + \frac{1}{ \rho } \big) sen \big( \theta \big)\)  veremos como  \(\frac{1}{ \rho }\) será igual a cero.&lt;br /&gt;
&lt;br /&gt;
\(\lim_{ \rho  \rightarrow  \infty }\big( \rho + \frac{1}{ \rho } \big) sen \big( \theta \big)=\rho sen \big( \theta \big)\)&lt;br /&gt;
&lt;br /&gt;
Y nuestro gradiente&lt;br /&gt;
&lt;br /&gt;
\(\nabla\varphi = \frac{\partial\varphi}{\partial  \rho }  g_{p}+ \frac{1}{ \rho^{2} } \frac{\partial \varphi }{\partial  \theta }  g_{ \theta } + \frac{\partial \varphi }{\partial z}  g_{z} =sen \big( \theta \big)  g_{ \rho } + \frac{1}{ \rho } cos  \big( \theta \big)  g_{ \theta }=sen \big( \theta \big)  g_{ \rho } \)&lt;br /&gt;
&lt;br /&gt;
Y por ello, este campo de velocidades se dará en los puntos donde \(\rho\) es muy grande.&lt;br /&gt;
&lt;br /&gt;
==Rotacional y divergencia del campo==&lt;br /&gt;
En este punto estudiaremos analiticamente que \( \overline{u}\) su rotacional como su divergencia es nula y trataremos el tema de la incompresibilidad del fluido.&lt;br /&gt;
&lt;br /&gt;
Nuestro rotacional en coordenadas polares:&lt;br /&gt;
&lt;br /&gt;
\(\nabla \times \overline{u} = \frac{1}{ \rho }  \begin{bmatrix} g_{ \rho }  &amp;amp; g_{ \theta }&amp;amp;  g_{ z }\\ \frac{\partial}{\partial\rho } &amp;amp;  \frac{\partial}{\partial \theta }  &amp;amp; \frac{\partial}{\partial z} \\ u g_{ \rho } &amp;amp; ug_{  \theta } &amp;amp; ug_{ z} \end{bmatrix}= \frac{1}{ \rho }  \begin{bmatrix} g_{ \rho }  &amp;amp; g_{ \theta }&amp;amp;  g_{ z }\\ \frac{\partial}{\partial\rho } &amp;amp;  \frac{\partial}{\partial \theta }  &amp;amp; \frac{\partial}{\partial z} \\ sen \big( \theta \big)  \big(1- \frac{1}{   \rho ^{3} } \big)  &amp;amp; cos \big( \theta \big) \big( \rho + \frac{1}{  \rho ^{2} } \big)   &amp;amp; 0 \end{bmatrix}= \frac{1}{ \rho }  \big\{ \big(cos \big( \theta \big)- \frac{1}{  \rho ^{2} } cos \big( \theta \big)\big) - \big(cos \big( \theta \big)-cos \big( \theta \big) \frac{1}{  \rho ^{2} }   \big)   \big\} g_{z} =0\)&lt;br /&gt;
&lt;br /&gt;
Nuestra divergencia en coordenadas polares:&lt;br /&gt;
&lt;br /&gt;
\(\nabla  . \overline{u} = \frac{1}{ \sqrt{g} }  \frac{\partial}{\partial  x_{i} }  \big( \sqrt{g} u_{i}  \big) = \frac{1}{ \rho }  \big\{ \frac{\partial}{\partial  \rho } \big(\rho sen \big( \theta \big) -sen \big( \theta \big) \frac{1}{\rho} \big) +\frac{\partial}{\partial  \theta }   \big(cos \big( \theta \big)+cos \big( \theta \big) \frac{1}{  \rho ^{2} }  \big)   \big\}= \)&lt;br /&gt;
&lt;br /&gt;
\(\frac{1}{ \rho }  \big\{ \frac{\partial}{\partial  \rho } \big(\rho sen \big( \theta \big) -sen \big( \theta \big) \frac{1}{\rho} \big) +\frac{\partial}{\partial  \theta }   \big(cos \big( \theta \big)+cos \big( \theta \big) \frac{1}{  \rho ^{2} }  \big)   \big\}=\)&lt;br /&gt;
&lt;br /&gt;
\(\frac{1}{ \rho } \big\{sen \big( \theta \big)+sen \big( \theta \big)\frac{1}{   \rho ^{2}  }-sen \big( \theta \big) -sen\big( \theta \big)  \frac{1}{  \rho ^{2} }  \big\} =0\)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vemos que ambos quedan reducidos a 0.&lt;br /&gt;
&lt;br /&gt;
Demostrando que la divergencia es nula, vemos que nuestro fluido es un líquido incompresible.&lt;br /&gt;
&lt;br /&gt;
==Líneas de corriente del campo==&lt;br /&gt;
En este punto vamos a dibujar las líneas de corriente que nos definirán la trayectoria del plano y son  tangentes a \( \overline{u}\).&lt;br /&gt;
Para ello  necesitaremos calcular el campo ortogonal y su potencial.&lt;br /&gt;
=====Calculo analítico=====&lt;br /&gt;
Este campo lo obtendremos del resultado de  multiplicar el vector \( \overline{k}\) con el campo \( \overline{u}\). Que al estar en coordenadas polares nuestro \( \overline{k}\) será  \(\overline{ g_{z} }\).&lt;br /&gt;
&lt;br /&gt;
\(\overline{v} = \overline{k} \times  \overline{u} =\overline{g_{z}} \times \overline{ u }=\begin{bmatrix} g_{ \rho }  &amp;amp; g_{ \theta }&amp;amp;  g_{ z }\\ 0 &amp;amp;  0  &amp;amp; 1 \\ sen \theta  \big(1- \frac{1}{  \rho ^{2} } \big)  &amp;amp;   \rho ^{2}cos \theta  \big( \frac{1}{ \rho } + \frac{1}{  \rho ^{3} } \big)   &amp;amp; 0 \end{bmatrix}=\frac{1}{ \rho }\big\{-\rho^{2} cos \theta  \big( \frac{1}{ \rho } + \frac{1}{  \rho ^{3} } \big) \overline{g _{ \rho } } +sen \theta\big( 1-\frac{1}{  \rho ^{2} } \big) \overline{ g_{ \theta } }     \big\} =-cos \theta \big( 1-\frac{1}{  \rho ^{2} } \big)  \overline{ g_{  \rho  } }+ sen \theta \big( \frac{1}{ \rho } + \frac{1}{  \rho ^{3} } \big)   \overline{ g_{   \theta   } }\)&lt;br /&gt;
&lt;br /&gt;
=====Comprobación por grafica de matlab=====&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear all; clf;&lt;br /&gt;
%datos&lt;br /&gt;
p=linspace(1,5,25);&lt;br /&gt;
theta=linspace(0,2*pi,25);&lt;br /&gt;
%creamos la malla&lt;br /&gt;
[U,V]=meshgrid(p,theta);&lt;br /&gt;
%Le damos la forma que queremos&lt;br /&gt;
X=U.*cos(V);&lt;br /&gt;
Y=U.*sin(V);&lt;br /&gt;
%doy la función&lt;br /&gt;
phi=inline('(p+(1./p)).*sin(theta)','p','theta');&lt;br /&gt;
%consehuimos las alturas&lt;br /&gt;
Z=phi(U,V);&lt;br /&gt;
%el grafico&lt;br /&gt;
%fibujamoslas lineas de nivel&lt;br /&gt;
% contour(X,Y,Z,75);&lt;br /&gt;
% axis equal&lt;br /&gt;
 &lt;br /&gt;
hold on&lt;br /&gt;
%las derivadas parciales&lt;br /&gt;
ux=(1-1./(U.*U)).*sin(V).*cos(V)-U.*sin(V).*cos(V).*((1./U)+(1./(U.*U.*U)));&lt;br /&gt;
uy=(1-1./(U.*U)).*sin(V).*sin(V)+U.*cos(V).*cos(V).*((1./U)+(1./(U.*U.*U)));&lt;br /&gt;
%dibujamos el gradiente&lt;br /&gt;
quiver(X,Y,ux,uy);&lt;br /&gt;
%el ortogonal&lt;br /&gt;
vx=-(1+1./(U.*U)).*cos(V).*cos(V)-U.*sin(V).*sin(V).*((1./U)-(1./(U.*U.*U)));&lt;br /&gt;
vy=-(1+1./(U.*U)).*cos(V).*sin(V)+U.*cos(V).*sin(V).*((1./U)-(1./(U.*U.*U)));&lt;br /&gt;
%dibujar el otrtogonal&lt;br /&gt;
quiver(X,Y,vx,vy);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Campo ortogonal al campo de velocidades.jpg|marco|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Demuestro que este campo es irrotacional =====&lt;br /&gt;
Al ser de divergencia nula el rotacional también lo será:&lt;br /&gt;
&lt;br /&gt;
\(\nabla \times \overline{v} = \frac{1}{ \rho } \begin{bmatrix} g_{ \rho } &amp;amp; g_{ \theta }&amp;amp;  g_{ z }\\ \frac{\partial}{\partial\rho } &amp;amp;  \frac{\partial}{\partial \theta }  &amp;amp; \frac{\partial}{\partial z} \\ v g_{ \rho } &amp;amp; vg_{  \theta } &amp;amp; vg_{ z} \end{bmatrix}= \frac{1}{  \rho  } \big\{sen \theta  \big(1- \frac{1}{  \rho ^{2} } \big)- \big(sen \theta  \big(1- \frac{1}{  \rho ^{2} } \big) \big)  \big\} =0 \)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Así queda demostrado que es irrotacional.&lt;br /&gt;
&lt;br /&gt;
=====Potencial escalar de corriente =====&lt;br /&gt;
Interpretaremos las líneas de corriente como la función potencial de este campo&lt;br /&gt;
\(\overline{v} = \nabla  \psi\)&lt;br /&gt;
&lt;br /&gt;
Calcularemos el potencial escalar:&lt;br /&gt;
&lt;br /&gt;
\(\frac{\partial \psi }{\partial  \rho } =-cos \theta \big(1- \frac{1}{  \rho ^{2}} \big) cos \rightarrow   \psi =- \int  cos \theta d \rho  + \int  \frac{cos \theta }{  \rho ^{2} }d \rho   \rightarrow  \psi = - \rho cos \theta - \frac{1}{ \rho }cos \theta+C \big( \theta \big)\)  &lt;br /&gt;
&lt;br /&gt;
Donde C igualando \(\rightarrow   cos \big( \theta \big)=cte \rightarrow 0\)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Representamos las líneas de corriente con Matlab=====&lt;br /&gt;
El código respectivo:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear all; clf;&lt;br /&gt;
%datos&lt;br /&gt;
p=linspace(1,5,50);&lt;br /&gt;
theta=linspace(0,2*pi,50);&lt;br /&gt;
%creamos la malla&lt;br /&gt;
[U,V]=meshgrid(p,theta);&lt;br /&gt;
%Le damos la forma que queremos&lt;br /&gt;
X=U.*cos(V);&lt;br /&gt;
Y=U.*sin(V);&lt;br /&gt;
%potencial escalar. Lineas de corriente&lt;br /&gt;
chi=(1./U-U).*cos(V)&lt;br /&gt;
 &lt;br /&gt;
%las derivadas parciales&lt;br /&gt;
ux=(1-1./(U.*U)).*sin(V).*cos(V)-U.*sin(V).*cos(V).*((1./U)+(1./(U.*U.*U)));&lt;br /&gt;
uy=(1-1./(U.*U)).*sin(V).*sin(V)+U.*cos(V).*cos(V).*((1./U)+(1./(U.*U.*U)));&lt;br /&gt;
%Dibujo lineas de corriente&lt;br /&gt;
contour(X,Y,chi,50,'LineWidth',1.5)&lt;br /&gt;
 axis([-5,5,-5,5])&lt;br /&gt;
 axis equal&lt;br /&gt;
 view(2)&lt;br /&gt;
 hold on&lt;br /&gt;
 &lt;br /&gt;
%Dibujo campo de velocidades&lt;br /&gt;
 quiver(X,Y,ux,uy)&lt;br /&gt;
axis([-5,5,-5,5])&lt;br /&gt;
 axis equal&lt;br /&gt;
view(2)&lt;br /&gt;
hold on&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Lineas de corriente.jpg|thumb|700px|marco|centro]]&lt;br /&gt;
&lt;br /&gt;
En ella se ve como la velocidad es tangente a las líneas de corriente.&lt;br /&gt;
&lt;br /&gt;
=====Las lineas de corriente son ortogonales a las curvas equipotenciales=====&lt;br /&gt;
Se presenta gráficamente que son ortogonales:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear all; clf;&lt;br /&gt;
%datos&lt;br /&gt;
p=linspace(1,5,50);&lt;br /&gt;
theta=linspace(0,2*pi,50);&lt;br /&gt;
%creamos la malla&lt;br /&gt;
[U,V]=meshgrid(p,theta);&lt;br /&gt;
%Le damos la forma que queremos&lt;br /&gt;
X=U.*cos(V);&lt;br /&gt;
Y=U.*sin(V);&lt;br /&gt;
%potencial escalar. Lineas de corriente&lt;br /&gt;
chi=(1./U-U).*cos(V)&lt;br /&gt;
%curvas equipotenciales&lt;br /&gt;
po=(1./U+U).*sin(V)&lt;br /&gt;
 %Dibujo lineas de corriente&lt;br /&gt;
 contour(X,Y,chi,50,'LineWidth',1.5)&lt;br /&gt;
 axis([-5,5,-5,5])&lt;br /&gt;
 axis equal&lt;br /&gt;
 view(2)&lt;br /&gt;
 hold on&lt;br /&gt;
 &lt;br /&gt;
%Dibujo equipotenciales&lt;br /&gt;
 contour(X,Y,po,50,'LineWidth',1.5)&lt;br /&gt;
 axis([-5,5,-5,5])&lt;br /&gt;
 axis equal&lt;br /&gt;
 view(2)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Ortogonalidad.jpg|thumb|700px|marco|centro]]&lt;br /&gt;
&lt;br /&gt;
==Velocidades máxima y mínima en frontera del obstáculo==&lt;br /&gt;
&lt;br /&gt;
Como hemos demostrado anteriormente, el fluido va a rodear al obstáculo S, sin llegar a pasar por encima ni atravesarlo. Ahora bien, sí que va a rodearlo, encontrando así diferentes velocidades alrededor de la frontera que lo conforma. Así pues, como sabemos el campo de velocidades del fluido y las coordenadas de la frontera (Radio=1), procedemos a calcular cómo será el campo en todo el contorno de S:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tex2Img 1480793466.jpg |500px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
Ya tenemos la dirección y valores del campo en todos esos puntos. Ahora bien, para hallar los puntos máximos y mínimos, necesitamos llevar a esta función a sus extremos. Para ello, vemos que, usando el módulo de esta, tenemos::[[Archivo:Tex2Img 1480795219.jpg|100px|sinmarco|centro]]&lt;br /&gt;
 -Adquirirá sus valores máximos cuando:          &lt;br /&gt;
    [[Archivo:Tex2Img 1480795766.jpg|200px|sinmarco|ninguna]]&lt;br /&gt;
    [[Archivo:Tex2Img 1480795810.jpg|200px|sinmarco|ninguna]]&lt;br /&gt;
&lt;br /&gt;
 -Y sus valores mínimos cuando:&lt;br /&gt;
    [[Archivo:Tex2Img 1480796357.jpg|200px|sinmarco|ninguna]]&lt;br /&gt;
&lt;br /&gt;
Por tanto, tenemos que: (en cartesianas)&lt;br /&gt;
  - Las velocidades máximas se darán en los puntos: [1,0] , [-1,0]&lt;br /&gt;
  - Las velocidades mínimas se darán en los puntos: [0,1] , [0,-1]&lt;br /&gt;
&lt;br /&gt;
Los puntos de remanso, que son donde se adquiere velocidad nula, corresponden con los de las velocidades mínimas, como podemos comprobar.&lt;br /&gt;
&lt;br /&gt;
==Presión del fluido: Ecuación de Bernouilli==&lt;br /&gt;
===Ecuación de Bernouilli===&lt;br /&gt;
Sabemos que un fluido se caracteriza, entre otras cosas, por tener carácter compresible o incompresible, determinando así su dinámica. Además de ello, también describirán su comportamiento agentes externos como la temperatura o la presión.&lt;br /&gt;
En este caso, la ecuación de Bernouilli nos permite relacionar la velocidad de un fluido en función de la presión a la que esté sometido, considerando también una densidad:&lt;br /&gt;
[[Archivo:Tex2Img 1480874948.jpg ‎|200px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
Consideramos el fluido incompresible (d=2), el campo de velocidades u y tomando la cte=10. Sustituimos y obtenemos el siguiente campo de presiones:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tex2Img 1480875432.jpg|500px|sinmarco|centro]]&lt;br /&gt;
[[Archivo:Tex2Img 1480875690.jpg|300px|marco|centro]]&lt;br /&gt;
&lt;br /&gt;
Así pues, introducimos la ecuación de presiones resultante en Matlab y dibujamos:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% vemos variables&lt;br /&gt;
rho=1:0.1:6;&lt;br /&gt;
th=0:0.1:2*pi+0.1;&lt;br /&gt;
%hacemos retícula&lt;br /&gt;
[U,V]=meshgrid(rho,th);&lt;br /&gt;
%describo coordenadas&lt;br /&gt;
X=U.*cos(V);&lt;br /&gt;
Y=U.*sin(V);&lt;br /&gt;
%aplicamos funcion presion&lt;br /&gt;
f=10-((sin(V).^2)).*((1-(1./(U.^2))))-((((cos(V)).^2)).*(((1./U)+(1./(U.^3))).^2)).*(U.^2);&lt;br /&gt;
%dibujo&lt;br /&gt;
surf(X,Y,f)&lt;br /&gt;
axis([-5,5,-5,5])&lt;br /&gt;
axis equal&lt;br /&gt;
view(2)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Campodepresiones.png|600px|thumb|marco|centro]]&lt;br /&gt;
Así pues, viendo el gráfico nos damos cuenta de que las mayores presiones se darán cuando el fluido choque con el obstáculo verticalmente. Y las menores presiones se encontrarán, debido al desplazamiento producido por el choque, en los laterales horizontales del obstáculo. En tanto, lejos del obstáculo se mantendrán más o menos presiones constantes.&lt;br /&gt;
&lt;br /&gt;
===Campo de presiones y velocidad del fluido===&lt;br /&gt;
&lt;br /&gt;
Una vez hallado el campo de presiones de nuestro fluido, procedemos a encontrar la relación que, según Bernouilli, lo vincula al campo de velocidades el mismo. De este modo, comparamos los gráficos y vemos:&lt;br /&gt;
[[Archivo:Campodepresiones.png|400px|thumb|marco|izquierda]] [[Archivo:VelocidadesA12.png|400px|thumb|marco|derecha]]&lt;br /&gt;
&lt;br /&gt;
El fluido, al desplazarse de sur a norte, cuando se encuentra con el fluido choca, viendo su velocidad reducida al mínimo, coincidiendo con la zona donde la presión es máxima. Esto hace que las partículas se desplacen a ambos lados del obstáculo, aumentando de nuevo su velocidad y reduciendo de nuevo la presión a mínimos, ya que no están sometidos a otro choque. Aún así, al llegar al extremo superior del obstáculo, de nuevo las partículas del fluido se chocan y se frenan entre ellas, volviendo a aumentar bastante la presión en esa zona. Por tanto, encontramos una clara relación entre velocidades y presiones.&lt;br /&gt;
&lt;br /&gt;
==Incompresibilidad del fluido. Ecuación de Navier-Stokes==&lt;br /&gt;
Uno de los Siete Grandes Problemas del Milenio son las ecuaciones de Navier-Stokes, que tratan de describir el movimiento de un fluido en la atmósfera, las corrientes oceánicas, y sobre cualquier objeto, tales como las aeronaves. De esta forma, se intenta encontrar una relación general entre dichos movimientos y en todos donde estén involucrados fluidos newtonianos, aplicando las leyes elementales de la Mecánica y Termodinámica física. Hasta ahora solo se ha podido demostrar para casos muy particulares. En esta sección vamos a tratar una de las ecuaciones de manera simplificada, donde podamos tomar  los parámetros de campo u y presión ,quedando:&lt;br /&gt;
[[Archivo:Tex2Img 1480881335.jpg|200px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
Vamos a considerar una viscosidad nula, por lo que lo idealizamos como fluido perfecto. Además, sabemos que es incompresible por tener divergencia nula, lo que hace que tomemos la densidad d=cte. Así, queda:&lt;br /&gt;
[[Archivo:Tex2Img 1480881740.jpg|200px|sinmarco|centro]]&lt;br /&gt;
Además, nos dan la siguiente condición:&lt;br /&gt;
[[Archivo:Tex2Img 1480882019.jpg ‎|200px|sinmarco|centro]]&lt;br /&gt;
Con todo ello, desarrollamos la ecuación y nos queda (''teniendo e cuenta que estamos trabajando en 2D''):&lt;br /&gt;
[[Archivo:Tex2Img_1480884716.jpg‎|300px|marco|centro]]&lt;br /&gt;
&lt;br /&gt;
Ahora bien, vamos a comprobar ahora que dicha ecuación guarda relación con la ecuación de Bernouilli, ya que para elaborarlas se han tenido en consideración leyes físicas semejantes, y se ha operado con el campo de presiones y de velocidades del fluido, el cual es incompresible y perfecto (sin viscosidad). Para ello, debemos aplicar el gradiente a la misma, y desarrollar en cartesianas partiendo de ahí:&lt;br /&gt;
[[Archivo:Tex2Img 1480883663.jpg|900px|sinmarco|centro]]&lt;br /&gt;
[[Archivo:Tex2Img_1480884822.jpg |900px|sinmarco|centro]]&lt;br /&gt;
[[Archivo:Tex2Img_1480884716.jpg ‎|800px|marco|centro]]&lt;br /&gt;
&lt;br /&gt;
Como podemos comprobar, las soluciones de Bernouilli y Navier-Stokes coinciden, haciendo evidente su conexión tanto matemática como física, aunque solo cuando la viscosidad del fluido es nula.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Teorema de Kutta-Joukowski. Paradoja D'Alembert==&lt;br /&gt;
El Teorema Kutta-Joukowski es un teorema fundamental de la aerodinámica. El teorema relaciona la fuerza que ejerce un fluido con su circulación a lo largo de un cuerpo. La circulación es la integral de línea de la velocidad del fluido, en una curva cerrada que contiene al cuerpo. En las descripciones del teorema Kutta-Joukowski, tomó como sólido un cilindro circular.&lt;br /&gt;
 &lt;br /&gt;
En resumen podemos decir que este teorema concluye que la fuerza que ejerce el fluido sobre el obstáculo es proporcional a la circulación.&lt;br /&gt;
Por otro lado la Paradoja de D´Alembert es una contradicción a la que se llegó tras estudiar matemáticamente el fenómeno de la resistencia producida sobre un cuerpo cuando una corriente de fluido (líquido o gas) circula sobre él.&lt;br /&gt;
D'Alembert aplicó la teoría de flujo potencial para modelar el fenómeno, y concluyó que la fuerza resultante sobre el cuerpo es cero, lo cual se contradice con la observación.&lt;br /&gt;
&lt;br /&gt;
En nuestro caso, empezaremos parametrizando el obstáculo:&lt;br /&gt;
[[Archivo:1.png|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Calculamos la circulación en el intervalo (a,b)=(0,2π):&lt;br /&gt;
&lt;br /&gt;
[[Archivo:10yo.png|miniaturadeimagen|centro]]&lt;br /&gt;
[[Archivo:4.png|600px|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
Obtenemos el resultado de que la circulación es nula. Esto va en contra de la intuición ya que se supone que el fluido debería ejercer una fuerza sobre el obstáculo, pero aplicando el Teorema de Kutta-Joukowski, llegamos a la conclusión de que la fuerza es nula también. Encontrándonos con la conocida Paradoja D'Alembert.&lt;br /&gt;
&lt;br /&gt;
==Curvas de nivel de la presión==&lt;br /&gt;
Como anteriormente hemos observado, los máximos valores para la presión los encontramos en la zona superior e inferior del óbstaculo, correspondiéndose con las zonas de mayor velocidad. Mientras que en los laterales las líneas son de un color azul que equivale a valores más bajos de la presión, justo donde las corrientes se alejan del obstáculo.&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
 %Reticula&lt;br /&gt;
 ro=1:0.1:5; &lt;br /&gt;
 teta=0:0.1:2*pi; &lt;br /&gt;
[U,V]=meshgrid(ro,teta);&lt;br /&gt;
%Cambio de coordenadas  &lt;br /&gt;
 X=U.*cos(V);&lt;br /&gt;
Y=U.*sin(V); &lt;br /&gt;
 %Formula de la presión&lt;br /&gt;
 p=10-((sin(V).^2)).*((1-(1./(U.^2))))-((((cos(V)).^2)).*(((1./U)+(1./(U.^3))).^2)).*(U.^2);&lt;br /&gt;
 %Dibujo de las curvas de nivel&lt;br /&gt;
 contour(X,Y,p,50,'linewidth',1.5)&lt;br /&gt;
 axis([-5,5-5,5])&lt;br /&gt;
 axis equal&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Fotaza.png|600px|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
==Presión media del fluido==&lt;br /&gt;
Vamos a calcular la presión media del fluido. Para ello se hará un aaproximacion de la integral de la presion y lo dividiremos entre el área de la región que ocupa el fluido. En este caso es el área de una corona circular de radios 1 y 5.&lt;br /&gt;
(Agregar imagen 4)&lt;br /&gt;
Realizamos la aproximación de la presión mediante Matlab:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
 %Reticula&lt;br /&gt;
 h=0.01;&lt;br /&gt;
 ro=1:h:5;&lt;br /&gt;
 teta=0:h:2*pi;&lt;br /&gt;
[U,V]=meshgrid(ro,teta);&lt;br /&gt;
%Presión del fluido&lt;br /&gt;
p=10-((sin(V).^2)).*((1-(1./(U.^2))))-((((cos(V)).^2)).*(((1./U)+(1./(U.^3))).^2)).*(U.^2);&lt;br /&gt;
%Integral de la presión&lt;br /&gt;
 pres=U.*p;&lt;br /&gt;
 %Integral&lt;br /&gt;
 volumen=h^2*pres;&lt;br /&gt;
 w=sum(sum(volumen));&lt;br /&gt;
 %Área de la corona circular&lt;br /&gt;
 area=(pi*5^2)-(pi*1^2);&lt;br /&gt;
 %Presión media &lt;br /&gt;
 presmedia=w/área&lt;br /&gt;
}}&lt;br /&gt;
Realizando estos cálculos obtenemos un resultado de '''8.9444''' que si contrastamos con una de las gráficas de la presión podemos ver que concuerda, ya que en la gráfica a simple vista se observa como los valores medios rondan este valor.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Presiones.jpg ‎|600px|thumb|marco|centro]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Visualizaci%C3%B3n_de_campos_escalares_y_vectoriales_en_fluidos_(Grupo_12A)&amp;diff=38412</id>
		<title>Visualización de campos escalares y vectoriales en fluidos (Grupo 12A)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Visualizaci%C3%B3n_de_campos_escalares_y_vectoriales_en_fluidos_(Grupo_12A)&amp;diff=38412"/>
				<updated>2016-12-13T09:32:43Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: /* Teorema de Kutta-Joukowski. Paradoja D'Alembert */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En el artículo desarrollado a continuación vamos a estudiar el flujo de un fluido incompresible alrededor de un obstáculo con forma circular. Vamos a trabajar con coordenadas cilíndricas (polares ya que se reduce al plano) ya que con la forma del obstáculo, los cálculos nos resultarán más sencillos. Las gráficas que mostremos aquí han sido obtenidas con el programa [[MATLAB]] / [[OCTAVE]].&amp;lt;br /&amp;gt;&lt;br /&gt;
{{ TrabajoED | Visualización de campos escalares y vectoriales en fluidos. Grupo 12A | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC16/17|2016-17]] | Jorge Barrena Blázquez, Rommel Beltrán Carrero, Pablo Domingo Escudero Bravo, Carlos Maroto Escribano}}&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC16/17]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introducción==&lt;br /&gt;
Antes de comenzar, cabe explicar el concepto de fluido incompresible. Un fluido incompresible es aquel cuya masa y volumen no variarán, permaneciendo constantes en el tiempo; y se opone a las compresiones ofrecidas bajo cualquier condición o circunstancia. Su significado matemático, por tanto, es que dicho fluido tendrá una densidad constante, facilitando los cálculos necesarios por homogeneidad de sus propiedades en cualquier posición.&lt;br /&gt;
&lt;br /&gt;
==Región ocupada por un fluido==&lt;br /&gt;
&lt;br /&gt;
De forma previa a la realización de cálculo alguno respecto al comportamiento del fluido habrá que delimitar la región del estudio. Se nos da una corona circular de radios 1 y 5, por lo que representamos su mallado en el intervalo [-5,5] x [-5,5]:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Obstaculomatlab.png|500x500px|miniaturadeimagen|izquierda]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Obstaculo.jpg|1000x1000px|miniaturadeimagen|izquierda]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Función potencial y su campo de velocidades==&lt;br /&gt;
La velocidad de las partículas del fluido viene dada por el gradiente de :&lt;br /&gt;
[[Archivo:Formula1.png|400x200|sinmarco|izquierda]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Velocidad.png|400x200px|sinmarco|izquierda]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La representación gráfica de la función potencial y su gradiente (campo de velocidades) es la siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Funcionpotencialmatlab.png|450x900px|miniaturadeimagen|izquierda]] [[Archivo:Campodevelocidadesmatlab.png|700×900px|marco|derecha]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Campo y funcion potencial lineas de nivel2.jpg|600x550px|miniaturadeimagen|derecha]]&lt;br /&gt;
[[Archivo:Funcionpotencial5.jpg|700x380px|miniaturadeimagen|izquierda]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ampliando la imagen del campo de velocidades puede apreciarse que es ortogonal a la función potencial. Además, para mayor claridad se han superpuesto los gráficos de la función potencial y del campo de velocidades.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[Archivo:ZOOM.jpg|750px|thumb|sinmarco|izquierda]] &lt;br /&gt;
[[Archivo:Campo_y_funcion_potencial22.jpg|500px|thumb|sinmarco|derecha]]  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Velocidades paralelas a la superficie====&lt;br /&gt;
Vamos a experimentar con las direcciones de la velocidad al entrar en contacto con el obstáculo. Probando a hacer el producto escalar entre la velocidad del fluido y el vector normal del osbtáculo obtenemos:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:U.n2.png|200x200]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Con lo que puede deducirse que la velocidad del fluido siempre será perpendicular al vector normal de la superficie, es decir, que las partículas del fluido únicamente rodearán el espacio, no lo pasarán por encima, pues las componentes verticales de la velocidad se anulan.&lt;br /&gt;
&lt;br /&gt;
====Campo de velocidades y función potencial lejos del obstáculo====&lt;br /&gt;
Vamos a ver qué sucede cuando nos alejamos mucho de nuestro obstáculo y entonces  \(\rho\) es  muy grande. Para ello vamos a hacer el límite de cuando \(\rho\) tiende a infinito de nuestra función potencial  \(\varphi= \big( \rho + \frac{1}{ \rho } \big) sen \big( \theta \big)\)  veremos como  \(\frac{1}{ \rho }\) será igual a cero.&lt;br /&gt;
&lt;br /&gt;
\(\lim_{ \rho  \rightarrow  \infty }\big( \rho + \frac{1}{ \rho } \big) sen \big( \theta \big)=\rho sen \big( \theta \big)\)&lt;br /&gt;
&lt;br /&gt;
Y nuestro gradiente&lt;br /&gt;
&lt;br /&gt;
\(\nabla\varphi = \frac{\partial\varphi}{\partial  \rho }  g_{p}+ \frac{1}{ \rho^{2} } \frac{\partial \varphi }{\partial  \theta }  g_{ \theta } + \frac{\partial \varphi }{\partial z}  g_{z} =sen \big( \theta \big)  g_{ \rho } + \frac{1}{ \rho } cos  \big( \theta \big)  g_{ \theta }=sen \big( \theta \big)  g_{ \rho } \)&lt;br /&gt;
&lt;br /&gt;
Y por ello, este campo de velocidades se dará en los puntos donde \(\rho\) es muy grande.&lt;br /&gt;
&lt;br /&gt;
==Rotacional y divergencia del campo==&lt;br /&gt;
En este punto estudiaremos analiticamente que \( \overline{u}\) su rotacional como su divergencia es nula y trataremos el tema de la incompresibilidad del fluido.&lt;br /&gt;
&lt;br /&gt;
Nuestro rotacional en coordenadas polares:&lt;br /&gt;
&lt;br /&gt;
\(\nabla \times \overline{u} = \frac{1}{ \rho }  \begin{bmatrix} g_{ \rho }  &amp;amp; g_{ \theta }&amp;amp;  g_{ z }\\ \frac{\partial}{\partial\rho } &amp;amp;  \frac{\partial}{\partial \theta }  &amp;amp; \frac{\partial}{\partial z} \\ u g_{ \rho } &amp;amp; ug_{  \theta } &amp;amp; ug_{ z} \end{bmatrix}= \frac{1}{ \rho }  \begin{bmatrix} g_{ \rho }  &amp;amp; g_{ \theta }&amp;amp;  g_{ z }\\ \frac{\partial}{\partial\rho } &amp;amp;  \frac{\partial}{\partial \theta }  &amp;amp; \frac{\partial}{\partial z} \\ sen \big( \theta \big)  \big(1- \frac{1}{   \rho ^{3} } \big)  &amp;amp; cos \big( \theta \big) \big( \rho + \frac{1}{  \rho ^{2} } \big)   &amp;amp; 0 \end{bmatrix}= \frac{1}{ \rho }  \big\{ \big(cos \big( \theta \big)- \frac{1}{  \rho ^{2} } cos \big( \theta \big)\big) - \big(cos \big( \theta \big)-cos \big( \theta \big) \frac{1}{  \rho ^{2} }   \big)   \big\} g_{z} =0\)&lt;br /&gt;
&lt;br /&gt;
Nuestra divergencia en coordenadas polares:&lt;br /&gt;
&lt;br /&gt;
\(\nabla  . \overline{u} = \frac{1}{ \sqrt{g} }  \frac{\partial}{\partial  x_{i} }  \big( \sqrt{g} u_{i}  \big) = \frac{1}{ \rho }  \big\{ \frac{\partial}{\partial  \rho } \big(\rho sen \big( \theta \big) -sen \big( \theta \big) \frac{1}{\rho} \big) +\frac{\partial}{\partial  \theta }   \big(cos \big( \theta \big)+cos \big( \theta \big) \frac{1}{  \rho ^{2} }  \big)   \big\}= \)&lt;br /&gt;
&lt;br /&gt;
\(\frac{1}{ \rho }  \big\{ \frac{\partial}{\partial  \rho } \big(\rho sen \big( \theta \big) -sen \big( \theta \big) \frac{1}{\rho} \big) +\frac{\partial}{\partial  \theta }   \big(cos \big( \theta \big)+cos \big( \theta \big) \frac{1}{  \rho ^{2} }  \big)   \big\}=\)&lt;br /&gt;
&lt;br /&gt;
\(\frac{1}{ \rho } \big\{sen \big( \theta \big)+sen \big( \theta \big)\frac{1}{   \rho ^{2}  }-sen \big( \theta \big) -sen\big( \theta \big)  \frac{1}{  \rho ^{2} }  \big\} =0\)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vemos que ambos quedan reducidos a 0.&lt;br /&gt;
&lt;br /&gt;
Demostrando que la divergencia es nula, vemos que nuestro fluido es un líquido incompresible.&lt;br /&gt;
&lt;br /&gt;
==Líneas de corriente del campo==&lt;br /&gt;
En este punto vamos a dibujar las líneas de corriente que nos definirán la trayectoria del plano y son  tangentes a \( \overline{u}\).&lt;br /&gt;
Para ello  necesitaremos calcular el campo ortogonal y su potencial.&lt;br /&gt;
=====Calculo analítico=====&lt;br /&gt;
Este campo lo obtendremos del resultado de  multiplicar el vector \( \overline{k}\) con el campo \( \overline{u}\). Que al estar en coordenadas polares nuestro \( \overline{k}\) será  \(\overline{ g_{z} }\).&lt;br /&gt;
&lt;br /&gt;
\(\overline{v} = \overline{k} \times  \overline{u} =\overline{g_{z}} \times \overline{ u }=\begin{bmatrix} g_{ \rho }  &amp;amp; g_{ \theta }&amp;amp;  g_{ z }\\ 0 &amp;amp;  0  &amp;amp; 1 \\ sen \theta  \big(1- \frac{1}{  \rho ^{2} } \big)  &amp;amp;   \rho ^{2}cos \theta  \big( \frac{1}{ \rho } + \frac{1}{  \rho ^{3} } \big)   &amp;amp; 0 \end{bmatrix}=\frac{1}{ \rho }\big\{-\rho^{2} cos \theta  \big( \frac{1}{ \rho } + \frac{1}{  \rho ^{3} } \big) \overline{g _{ \rho } } +sen \theta\big( 1-\frac{1}{  \rho ^{2} } \big) \overline{ g_{ \theta } }     \big\} =-cos \theta \big( 1-\frac{1}{  \rho ^{2} } \big)  \overline{ g_{  \rho  } }+ sen \theta \big( \frac{1}{ \rho } + \frac{1}{  \rho ^{3} } \big)   \overline{ g_{   \theta   } }\)&lt;br /&gt;
&lt;br /&gt;
=====Comprobación por grafica de matlab=====&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear all; clf;&lt;br /&gt;
%datos&lt;br /&gt;
p=linspace(1,5,25);&lt;br /&gt;
theta=linspace(0,2*pi,25);&lt;br /&gt;
%creamos la malla&lt;br /&gt;
[U,V]=meshgrid(p,theta);&lt;br /&gt;
%Le damos la forma que queremos&lt;br /&gt;
X=U.*cos(V);&lt;br /&gt;
Y=U.*sin(V);&lt;br /&gt;
%doy la función&lt;br /&gt;
phi=inline('(p+(1./p)).*sin(theta)','p','theta');&lt;br /&gt;
%consehuimos las alturas&lt;br /&gt;
Z=phi(U,V);&lt;br /&gt;
%el grafico&lt;br /&gt;
%fibujamoslas lineas de nivel&lt;br /&gt;
% contour(X,Y,Z,75);&lt;br /&gt;
% axis equal&lt;br /&gt;
 &lt;br /&gt;
hold on&lt;br /&gt;
%las derivadas parciales&lt;br /&gt;
ux=(1-1./(U.*U)).*sin(V).*cos(V)-U.*sin(V).*cos(V).*((1./U)+(1./(U.*U.*U)));&lt;br /&gt;
uy=(1-1./(U.*U)).*sin(V).*sin(V)+U.*cos(V).*cos(V).*((1./U)+(1./(U.*U.*U)));&lt;br /&gt;
%dibujamos el gradiente&lt;br /&gt;
quiver(X,Y,ux,uy);&lt;br /&gt;
%el ortogonal&lt;br /&gt;
vx=-(1+1./(U.*U)).*cos(V).*cos(V)-U.*sin(V).*sin(V).*((1./U)-(1./(U.*U.*U)));&lt;br /&gt;
vy=-(1+1./(U.*U)).*cos(V).*sin(V)+U.*cos(V).*sin(V).*((1./U)-(1./(U.*U.*U)));&lt;br /&gt;
%dibujar el otrtogonal&lt;br /&gt;
quiver(X,Y,vx,vy);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Campo ortogonal al campo de velocidades.jpg|marco|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Demuestro que este campo es irrotacional =====&lt;br /&gt;
Al ser de divergencia nula el rotacional también lo será:&lt;br /&gt;
&lt;br /&gt;
\(\nabla \times \overline{v} = \frac{1}{ \rho } \begin{bmatrix} g_{ \rho } &amp;amp; g_{ \theta }&amp;amp;  g_{ z }\\ \frac{\partial}{\partial\rho } &amp;amp;  \frac{\partial}{\partial \theta }  &amp;amp; \frac{\partial}{\partial z} \\ v g_{ \rho } &amp;amp; vg_{  \theta } &amp;amp; vg_{ z} \end{bmatrix}= \frac{1}{  \rho  } \big\{sen \theta  \big(1- \frac{1}{  \rho ^{2} } \big)- \big(sen \theta  \big(1- \frac{1}{  \rho ^{2} } \big) \big)  \big\} =0 \)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Así queda demostrado que es irrotacional.&lt;br /&gt;
&lt;br /&gt;
=====Potencial escalar de corriente =====&lt;br /&gt;
Interpretaremos las líneas de corriente como la función potencial de este campo&lt;br /&gt;
\(\overline{v} = \nabla  \psi\)&lt;br /&gt;
&lt;br /&gt;
Calcularemos el potencial escalar:&lt;br /&gt;
&lt;br /&gt;
\(\frac{\partial \psi }{\partial  \rho } =-cos \theta \big(1- \frac{1}{  \rho ^{2}} \big) cos \rightarrow   \psi =- \int  cos \theta d \rho  + \int  \frac{cos \theta }{  \rho ^{2} }d \rho   \rightarrow  \psi = - \rho cos \theta - \frac{1}{ \rho }cos \theta+C \big( \theta \big)\)  &lt;br /&gt;
&lt;br /&gt;
Donde C igualando \(\rightarrow   cos \big( \theta \big)=cte \rightarrow 0\)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Representamos las líneas de corriente con Matlab=====&lt;br /&gt;
El código respectivo:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear all; clf;&lt;br /&gt;
%datos&lt;br /&gt;
p=linspace(1,5,50);&lt;br /&gt;
theta=linspace(0,2*pi,50);&lt;br /&gt;
%creamos la malla&lt;br /&gt;
[U,V]=meshgrid(p,theta);&lt;br /&gt;
%Le damos la forma que queremos&lt;br /&gt;
X=U.*cos(V);&lt;br /&gt;
Y=U.*sin(V);&lt;br /&gt;
%potencial escalar. Lineas de corriente&lt;br /&gt;
chi=(1./U-U).*cos(V)&lt;br /&gt;
 &lt;br /&gt;
%las derivadas parciales&lt;br /&gt;
ux=(1-1./(U.*U)).*sin(V).*cos(V)-U.*sin(V).*cos(V).*((1./U)+(1./(U.*U.*U)));&lt;br /&gt;
uy=(1-1./(U.*U)).*sin(V).*sin(V)+U.*cos(V).*cos(V).*((1./U)+(1./(U.*U.*U)));&lt;br /&gt;
%Dibujo lineas de corriente&lt;br /&gt;
contour(X,Y,chi,50,'LineWidth',1.5)&lt;br /&gt;
 axis([-5,5,-5,5])&lt;br /&gt;
 axis equal&lt;br /&gt;
 view(2)&lt;br /&gt;
 hold on&lt;br /&gt;
 &lt;br /&gt;
%Dibujo campo de velocidades&lt;br /&gt;
 quiver(X,Y,ux,uy)&lt;br /&gt;
axis([-5,5,-5,5])&lt;br /&gt;
 axis equal&lt;br /&gt;
view(2)&lt;br /&gt;
hold on&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Lineas de corriente.jpg|thumb|700px|marco|centro]]&lt;br /&gt;
&lt;br /&gt;
En ella se ve como la velocidad es tangente a las líneas de corriente.&lt;br /&gt;
&lt;br /&gt;
=====Las lineas de corriente son ortogonales a las curvas equipotenciales=====&lt;br /&gt;
Se presenta gráficamente que son ortogonales:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear all; clf;&lt;br /&gt;
%datos&lt;br /&gt;
p=linspace(1,5,50);&lt;br /&gt;
theta=linspace(0,2*pi,50);&lt;br /&gt;
%creamos la malla&lt;br /&gt;
[U,V]=meshgrid(p,theta);&lt;br /&gt;
%Le damos la forma que queremos&lt;br /&gt;
X=U.*cos(V);&lt;br /&gt;
Y=U.*sin(V);&lt;br /&gt;
%potencial escalar. Lineas de corriente&lt;br /&gt;
chi=(1./U-U).*cos(V)&lt;br /&gt;
%curvas equipotenciales&lt;br /&gt;
po=(1./U+U).*sin(V)&lt;br /&gt;
 %Dibujo lineas de corriente&lt;br /&gt;
 contour(X,Y,chi,50,'LineWidth',1.5)&lt;br /&gt;
 axis([-5,5,-5,5])&lt;br /&gt;
 axis equal&lt;br /&gt;
 view(2)&lt;br /&gt;
 hold on&lt;br /&gt;
 &lt;br /&gt;
%Dibujo equipotenciales&lt;br /&gt;
 contour(X,Y,po,50,'LineWidth',1.5)&lt;br /&gt;
 axis([-5,5,-5,5])&lt;br /&gt;
 axis equal&lt;br /&gt;
 view(2)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Ortogonalidad.jpg|thumb|700px|marco|centro]]&lt;br /&gt;
&lt;br /&gt;
==Velocidades máxima y mínima en frontera del obstáculo==&lt;br /&gt;
&lt;br /&gt;
Como hemos demostrado anteriormente, el fluido va a rodear al obstáculo S, sin llegar a pasar por encima ni atravesarlo. Ahora bien, sí que va a rodearlo, encontrando así diferentes velocidades alrededor de la frontera que lo conforma. Así pues, como sabemos el campo de velocidades del fluido y las coordenadas de la frontera (Radio=1), procedemos a calcular cómo será el campo en todo el contorno de S:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tex2Img 1480793466.jpg |500px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
Ya tenemos la dirección y valores del campo en todos esos puntos. Ahora bien, para hallar los puntos máximos y mínimos, necesitamos llevar a esta función a sus extremos. Para ello, vemos que, usando el módulo de esta, tenemos::[[Archivo:Tex2Img 1480795219.jpg|100px|sinmarco|centro]]&lt;br /&gt;
 -Adquirirá sus valores máximos cuando:          &lt;br /&gt;
    [[Archivo:Tex2Img 1480795766.jpg|200px|sinmarco|ninguna]]&lt;br /&gt;
    [[Archivo:Tex2Img 1480795810.jpg|200px|sinmarco|ninguna]]&lt;br /&gt;
&lt;br /&gt;
 -Y sus valores mínimos cuando:&lt;br /&gt;
    [[Archivo:Tex2Img 1480796357.jpg|200px|sinmarco|ninguna]]&lt;br /&gt;
&lt;br /&gt;
Por tanto, tenemos que: (en cartesianas)&lt;br /&gt;
  - Las velocidades máximas se darán en los puntos: [1,0] , [-1,0]&lt;br /&gt;
  - Las velocidades mínimas se darán en los puntos: [0,1] , [0,-1]&lt;br /&gt;
&lt;br /&gt;
Los puntos de remanso, que son donde se adquiere velocidad nula, corresponden con los de las velocidades mínimas, como podemos comprobar.&lt;br /&gt;
&lt;br /&gt;
==Presión del fluido: Ecuación de Bernouilli==&lt;br /&gt;
===Ecuación de Bernouilli===&lt;br /&gt;
Sabemos que un fluido se caracteriza, entre otras cosas, por tener carácter compresible o incompresible, determinando así su dinámica. Además de ello, también describirán su comportamiento agentes externos como la temperatura o la presión.&lt;br /&gt;
En este caso, la ecuación de Bernouilli nos permite relacionar la velocidad de un fluido en función de la presión a la que esté sometido, considerando también una densidad:&lt;br /&gt;
[[Archivo:Tex2Img 1480874948.jpg ‎|200px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
Consideramos el fluido incompresible (d=2), el campo de velocidades u y tomando la cte=10. Sustituimos y obtenemos el siguiente campo de presiones:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tex2Img 1480875432.jpg|500px|sinmarco|centro]]&lt;br /&gt;
[[Archivo:Tex2Img 1480875690.jpg|300px|marco|centro]]&lt;br /&gt;
&lt;br /&gt;
Así pues, introducimos la ecuación de presiones resultante en Matlab y dibujamos:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% vemos variables&lt;br /&gt;
rho=1:0.1:6;&lt;br /&gt;
th=0:0.1:2*pi+0.1;&lt;br /&gt;
%hacemos retícula&lt;br /&gt;
[U,V]=meshgrid(rho,th);&lt;br /&gt;
%describo coordenadas&lt;br /&gt;
X=U.*cos(V);&lt;br /&gt;
Y=U.*sin(V);&lt;br /&gt;
%aplicamos funcion presion&lt;br /&gt;
f=10-((sin(V).^2)).*((1-(1./(U.^2))))-((((cos(V)).^2)).*(((1./U)+(1./(U.^3))).^2)).*(U.^2);&lt;br /&gt;
%dibujo&lt;br /&gt;
surf(X,Y,f)&lt;br /&gt;
axis([-5,5,-5,5])&lt;br /&gt;
axis equal&lt;br /&gt;
view(2)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Campodepresiones.png|600px|thumb|marco|centro]]&lt;br /&gt;
Así pues, viendo el gráfico nos damos cuenta de que las mayores presiones se darán cuando el fluido choque con el obstáculo verticalmente. Y las menores presiones se encontrarán, debido al desplazamiento producido por el choque, en los laterales horizontales del obstáculo. En tanto, lejos del obstáculo se mantendrán más o menos presiones constantes.&lt;br /&gt;
&lt;br /&gt;
===Campo de presiones y velocidad del fluido===&lt;br /&gt;
&lt;br /&gt;
Una vez hallado el campo de presiones de nuestro fluido, procedemos a encontrar la relación que, según Bernouilli, lo vincula al campo de velocidades el mismo. De este modo, comparamos los gráficos y vemos:&lt;br /&gt;
[[Archivo:Campodepresiones.png|400px|thumb|marco|izquierda]] [[Archivo:VelocidadesA12.png|400px|thumb|marco|derecha]]&lt;br /&gt;
&lt;br /&gt;
El fluido, al desplazarse de sur a norte, cuando se encuentra con el fluido choca, viendo su velocidad reducida al mínimo, coincidiendo con la zona donde la presión es máxima. Esto hace que las partículas se desplacen a ambos lados del obstáculo, aumentando de nuevo su velocidad y reduciendo de nuevo la presión a mínimos, ya que no están sometidos a otro choque. Aún así, al llegar al extremo superior del obstáculo, de nuevo las partículas del fluido se chocan y se frenan entre ellas, volviendo a aumentar bastante la presión en esa zona. Por tanto, encontramos una clara relación entre velocidades y presiones.&lt;br /&gt;
&lt;br /&gt;
==Incompresibilidad del fluido. Ecuación de Navier-Stokes==&lt;br /&gt;
Uno de los Siete Grandes Problemas del Milenio son las ecuaciones de Navier-Stokes, que tratan de describir el movimiento de un fluido en la atmósfera, las corrientes oceánicas, y sobre cualquier objeto, tales como las aeronaves. De esta forma, se intenta encontrar una relación general entre dichos movimientos y en todos donde estén involucrados fluidos newtonianos, aplicando las leyes elementales de la Mecánica y Termodinámica física. Hasta ahora solo se ha podido demostrar para casos muy particulares. En esta sección vamos a tratar una de las ecuaciones de manera simplificada, donde podamos tomar  los parámetros de campo u y presión ,quedando:&lt;br /&gt;
[[Archivo:Tex2Img 1480881335.jpg|200px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
Vamos a considerar una viscosidad nula, por lo que lo idealizamos como fluido perfecto. Además, sabemos que es incompresible por tener divergencia nula, lo que hace que tomemos la densidad d=cte. Así, queda:&lt;br /&gt;
[[Archivo:Tex2Img 1480881740.jpg|200px|sinmarco|centro]]&lt;br /&gt;
Además, nos dan la siguiente condición:&lt;br /&gt;
[[Archivo:Tex2Img 1480882019.jpg ‎|200px|sinmarco|centro]]&lt;br /&gt;
Con todo ello, desarrollamos la ecuación y nos queda (''teniendo e cuenta que estamos trabajando en 2D''):&lt;br /&gt;
[[Archivo:Tex2Img_1480884716.jpg‎|300px|marco|centro]]&lt;br /&gt;
&lt;br /&gt;
Ahora bien, vamos a comprobar ahora que dicha ecuación guarda relación con la ecuación de Bernouilli, ya que para elaborarlas se han tenido en consideración leyes físicas semejantes, y se ha operado con el campo de presiones y de velocidades del fluido, el cual es incompresible y perfecto (sin viscosidad). Para ello, debemos aplicar el gradiente a la misma, y desarrollar en cartesianas partiendo de ahí:&lt;br /&gt;
[[Archivo:Tex2Img 1480883663.jpg|900px|sinmarco|centro]]&lt;br /&gt;
[[Archivo:Tex2Img_1480884822.jpg |900px|sinmarco|centro]]&lt;br /&gt;
[[Archivo:Tex2Img_1480884716.jpg ‎|800px|marco|centro]]&lt;br /&gt;
&lt;br /&gt;
Como podemos comprobar, las soluciones de Bernouilli y Navier-Stokes coinciden, haciendo evidente su conexión tanto matemática como física, aunque solo cuando la viscosidad del fluido es nula.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Teorema de Kutta-Joukowski. Paradoja D'Alembert==&lt;br /&gt;
El Teorema Kutta-Joukowski es un teorema fundamental de la aerodinámica. El teorema relaciona la fuerza que ejerce un fluido con su circulación a lo largo de un cuerpo. La circulación es la integral de línea de la velocidad del fluido, en una curva cerrada que contiene al cuerpo. En las descripciones del teorema Kutta-Joukowski, tomó como sólido un cilindro circular.&lt;br /&gt;
 &lt;br /&gt;
En resumen podemos decir que este teorema concluye que la fuerza que ejerce el fluido sobre el obstáculo es proporcional a la circulación.&lt;br /&gt;
Por otro lado la Paradoja de D´Alembert es una contradicción a la que se llegó tras estudiar matemáticamente el fenómeno de la resistencia producida sobre un cuerpo cuando una corriente de fluido (líquido o gas) circula sobre él.&lt;br /&gt;
D'Alembert aplicó la teoría de flujo potencial para modelar el fenómeno, y concluyó que la fuerza resultante sobre el cuerpo es cero, lo cual se contradice con la observación.&lt;br /&gt;
&lt;br /&gt;
En nuestro caso, empezaremos parametrizando el obstáculo:&lt;br /&gt;
[[Archivo:1.png|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Calculamos la circulación en el intervalo (a,b)=(0,2π):&lt;br /&gt;
&lt;br /&gt;
[[Archivo:10yo.png|miniaturadeimagen|centro]]&lt;br /&gt;
[[Archivo:4.png|600px|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
Obtenemos el resultado de que la circulación es nula. Esto va en contra de la intuición ya que se supone que el fluido debería ejercer una fuerza sobre el obstáculo, pero aplicando el Teorema de Kutta-Joukowski, llegamos a la conclusión de que la fuerza es nula también. Encontrándonos con la conocida Paradoja D'Alembert.&lt;br /&gt;
&lt;br /&gt;
==Curvas de nivel de la presión==&lt;br /&gt;
Como anteriormente hemos observado, los máximos valores para la presión los encontramos en la zona superior e inferior del óbstaculo, correspondiéndose con las zonas de mayor velocidad. Mientras que en los laterales las líneas son de un color azul que equivale a valores más bajos de la presión, justo donde las corrientes se alejan del obstáculo.&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
 %Reticula&lt;br /&gt;
 ro=1:0.1:5; &lt;br /&gt;
 teta=0:0.1:2*pi; &lt;br /&gt;
[U,V]=meshgrid(ro,teta);&lt;br /&gt;
%Cambio de coordenadas  &lt;br /&gt;
 X=U.*cos(V);&lt;br /&gt;
Y=U.*sin(V); &lt;br /&gt;
 %Formula de la presión&lt;br /&gt;
 p=10-((sin(V).^2)).*((1-(1./(U.^2))))-((((cos(V)).^2)).*(((1./U)+(1./(U.^3))).^2)).*(U.^2);&lt;br /&gt;
 %Dibujo de las curvas de nivel&lt;br /&gt;
 contour(X,Y,p,50,'linewidth',1.5)&lt;br /&gt;
 axis([-5,5-5,5])&lt;br /&gt;
 axis equal&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Fotaza.png|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
==Presión media del fluido==&lt;br /&gt;
Vamos a calcular la presión media del fluido. Para ello se hará un aaproximacion de la integral de la presion y lo dividiremos entre el área de la región que ocupa el fluido. En este caso es el área de una corona circular de radios 1 y 5.&lt;br /&gt;
(Agregar imagen 4)&lt;br /&gt;
Realizamos la aproximación de la presión mediante Matlab:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
 %Reticula&lt;br /&gt;
 h=0.01;&lt;br /&gt;
 ro=1:h:5;&lt;br /&gt;
 teta=0:h:2*pi;&lt;br /&gt;
[U,V]=meshgrid(ro,teta);&lt;br /&gt;
%Presión del fluido&lt;br /&gt;
p=10-((sin(V).^2)).*((1-(1./(U.^2))))-((((cos(V)).^2)).*(((1./U)+(1./(U.^3))).^2)).*(U.^2);&lt;br /&gt;
%Integral de la presión&lt;br /&gt;
 pres=U.*p;&lt;br /&gt;
 %Integral&lt;br /&gt;
 volumen=h^2*pres;&lt;br /&gt;
 w=sum(sum(volumen));&lt;br /&gt;
 %Área de la corona circular&lt;br /&gt;
 area=(pi*5^2)-(pi*1^2);&lt;br /&gt;
 %Presión media &lt;br /&gt;
 presmedia=w/área&lt;br /&gt;
}}&lt;br /&gt;
Realizando estos cálculos obtenemos un resultado de '''8.9444''' que si contrastamos con una de las gráficas de la presión podemos ver que concuerda, ya que en la gráfica a simple vista se observa como los valores medios rondan este valor.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Presiones.jpg ‎|600px|thumb|marco|centro]]&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Visualizaci%C3%B3n_de_campos_escalares_y_vectoriales_en_fluidos_(Grupo_12A)&amp;diff=37887</id>
		<title>Visualización de campos escalares y vectoriales en fluidos (Grupo 12A)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Visualizaci%C3%B3n_de_campos_escalares_y_vectoriales_en_fluidos_(Grupo_12A)&amp;diff=37887"/>
				<updated>2016-12-05T22:55:24Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: /* Función potencial y su campo de velocidades */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En el artículo desarrollado a continuación vamos a estudiar el flujo de un fluido incompresible alrededor de un obstáculo con forma circular. Vamos a trabajar con coordenadas cilíndricas (polares ya que se reduce al plano) ya que con la forma del obstáculo, los cálculos nos resultarán más sencillos. Las gráficas que mostremos aquí han sido obtenidas con el programa [[MATLAB]] / [[OCTAVE]].&amp;lt;br /&amp;gt;&lt;br /&gt;
{{ TrabajoED | Visualización de campos escalares y vectoriales en fluidos. Grupo 12A | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC16/17|2016-17]] | Jorge Barrena Blázquez, Rommel Beltrán Carrero, Pablo Domingo Escudero Bravo, Carlos Maroto Escribano}}&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC16/17]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introducción==&lt;br /&gt;
Antes de comenzar, cabe explicar el concepto de fluido incompresible. Un fluido incompresible es aquel cuya masa y volumen no variarán, permaneciendo constantes en el tiempo; y se opone a las compresiones ofrecidas bajo cualquier condición o circunstancia. Su significado matemático, por tanto, es que dicho fluido tendrá una densidad constante, facilitando los cálculos necesarios por homogeneidad de sus propiedades en cualquier posición.&lt;br /&gt;
&lt;br /&gt;
==Región ocupada por un fluido==&lt;br /&gt;
&lt;br /&gt;
De forma previa a la realización de cálculo alguno respecto al comportamiento del fluido habrá que delimitar la región del estudio. Se nos da una corona circular de radios 1 y 5, por lo que representamos su mallado en el intervalo [-5,5] x [-5,5]:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Obstaculomatlab.png|500x500px|miniaturadeimagen|izquierda]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Obstaculo.jpg|1000x1000px|miniaturadeimagen|izquierda]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Función potencial y su campo de velocidades==&lt;br /&gt;
La velocidad de las partículas del fluido viene dada por el gradiente de :&lt;br /&gt;
[[Archivo:Formula1.png|400x200|sinmarco|izquierda]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Velocidad.png|400x200px|sinmarco|izquierda]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La representación gráfica de la función potencial y su gradiente (campo de velocidades) es la siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Funcionpotencialmatlab.png|450x900px|miniaturadeimagen|izquierda]] [[Archivo:Campodevelocidadesmatlab.png|700×900px|marco|derecha]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Campo y funcion potencial lineas de nivel2.jpg|600x550px|miniaturadeimagen|derecha]]&lt;br /&gt;
[[Archivo:Funcionpotencial5.jpg|700x380px|miniaturadeimagen|izquierda]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ampliando la imagen del campo de velocidades puede apreciarse que es ortogonal a la función potencial. Además, para mayor claridad se han superpuesto los gráficos de la función potencial y del campo de velocidades.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[Archivo:ZOOM.jpg|900x900px|sinmarco|izquierda]] &lt;br /&gt;
[[Archivo:Campo_y_funcion_potencial22.jpg|500x500px|sinmarco|derecha]]  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Velocidades paralelas a la superficie====&lt;br /&gt;
Vamos a experimentar con las direcciones de la velocidad al entrar en contacto con el obstáculo. Probando a hacer el producto escalar entre la velocidad del fluido y el vector normal del osbtáculo obtenemos:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:U.n2.png|200x200]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Con lo que puede deducirse que la velocidad del fluido siempre será perpendicular al vector normal de la superficie, es decir, que las partículas del fluido únicamente rodearán el espacio, no lo pasarán por encima, pues las componentes verticales de la velocidad se anulan.&lt;br /&gt;
&lt;br /&gt;
====Campo de velocidades y función potencial lejos del obstáculo====&lt;br /&gt;
Vamos a ver qué sucede cuando nos alejamos mucho de nuestro obstáculo y entonces  \(\rho\) es  muy grande. Para ello vamos a hacer el límite de cuando \(\rho\) tiende a infinito de nuestra función potencial  \(\varphi= \big( \rho + \frac{1}{ \rho } \big) sen \big( \theta \big)\)  veremos como  \(\frac{1}{ \rho }\) será igual a cero.&lt;br /&gt;
&lt;br /&gt;
\(\lim_{ \rho  \rightarrow  \infty }\big( \rho + \frac{1}{ \rho } \big) sen \big( \theta \big)=\rho sen \big( \theta \big)\)&lt;br /&gt;
&lt;br /&gt;
Y nuestro gradiente&lt;br /&gt;
&lt;br /&gt;
\(\nabla\varphi = \frac{\partial\varphi}{\partial  \rho }  g_{p}+ \frac{1}{ \rho^{2} } \frac{\partial \varphi }{\partial  \theta }  g_{ \theta } + \frac{\partial \varphi }{\partial z}  g_{z} =sen \big( \theta \big)  g_{ \rho } + \frac{1}{ \rho } cos  \big( \theta \big)  g_{ \theta }=sen \big( \theta \big)  g_{ \theta } \)&lt;br /&gt;
&lt;br /&gt;
Y por ello estos serán los puntos cuando \rho es muy grande&lt;br /&gt;
&lt;br /&gt;
==Rotacional y divergencia del campo==&lt;br /&gt;
En este punto estudiaremos analiticamente que \( \overline{u}\) su rotacional como su divergencia es nula y trataremos el tema de la incompresibilidad del fluido.&lt;br /&gt;
&lt;br /&gt;
Nuestro rotacional en coordenadas polares&lt;br /&gt;
&lt;br /&gt;
\(\nabla \times \overline{u} = \frac{1}{ \rho }  \begin{bmatrix} g_{ \rho }  &amp;amp; g_{ \theta }&amp;amp;  g_{ z }\\ \frac{\partial}{\partial\rho } &amp;amp;  \frac{\partial}{\partial \theta }  &amp;amp; \frac{\partial}{\partial z} \\ u g_{ \rho } &amp;amp; ug_{  \theta } &amp;amp; ug_{ z} \end{bmatrix}= \frac{1}{ \rho }  \begin{bmatrix} g_{ \rho }  &amp;amp; g_{ \theta }&amp;amp;  g_{ z }\\ \frac{\partial}{\partial\rho } &amp;amp;  \frac{\partial}{\partial \theta }  &amp;amp; \frac{\partial}{\partial z} \\ sen \big( \theta \big)  \big(1- \frac{1}{   \rho ^{3} } \big)  &amp;amp; cos \big( \theta \big) \big( \rho + \frac{1}{  \rho ^{2} } \big)   &amp;amp; 0 \end{bmatrix}= \frac{1}{ \rho }  \big\{ \big(cos \big( \theta \big)- \frac{1}{  \rho ^{2} } cos \big( \theta \big)\big) - \big(cos \big( \theta \big)-cos \big( \theta \big) \frac{1}{  \rho ^{2} }   \big)   \big\} g_{z} =0\)&lt;br /&gt;
&lt;br /&gt;
Nuestra divergencia en coordenadas polares&lt;br /&gt;
&lt;br /&gt;
\(\nabla  . \overline{u} = \frac{1}{ \sqrt{g} }  \frac{\partial}{\partial  x_{i} }  \big( \sqrt{g} u_{i}  \big) = \frac{1}{ \rho }  \big\{ \frac{\partial}{\partial  \rho } \big(\rho sen \big( \theta \big) -sen \big( \theta \big) \frac{1}{\rho} \big) +\frac{\partial}{\partial  \theta }   \big(cos \big( \theta \big)+cos \big( \theta \big) \frac{1}{  \rho ^{2} }  \big)   \big\}= \)&lt;br /&gt;
&lt;br /&gt;
\(\frac{1}{ \rho }  \big\{ \frac{\partial}{\partial  \rho } \big(\rho sen \big( \theta \big) -sen \big( \theta \big) \frac{1}{\rho} \big) +\frac{\partial}{\partial  \theta }   \big(cos \big( \theta \big)+cos \big( \theta \big) \frac{1}{  \rho ^{2} }  \big)   \big\}=\)&lt;br /&gt;
&lt;br /&gt;
\(\frac{1}{ \rho } \big\{sen \big( \theta \big)+sen \big( \theta \big)\frac{1}{   \rho ^{2}  }-sen \big( \theta \big) -sen\big( \theta \big)  \frac{1}{  \rho ^{2} }  \big\} =0\)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vemos que ambos quedan reducidos a 0&lt;br /&gt;
&lt;br /&gt;
Demostrando que la divergencia es nula tratamos la condición de que el agua es un líquido incompresible; Por ello suponemos que el agua es incompresible pero no lo podemos hacer del mismo modo con el aire. Por ello local mente el fluido ni se expande ni se contrae.&lt;br /&gt;
&lt;br /&gt;
==Líneas de corriente del campo==&lt;br /&gt;
En este punto vamos a dibujar las líneas de corriente que nos definirán la trayectoria del plano y son  tangentes a \( \overline{u}\) a nuestro campo que es el fluido, el agua.&lt;br /&gt;
Para ello  necesitaremos calcular el campo ortogonal y su potencial.&lt;br /&gt;
=====Calculo analítico=====&lt;br /&gt;
Este campo lo obtendremos del resultado de  multiplicar el vector \( \overline{k}\) con el campo \( \overline{u}\). Que al estar en coordenadas polares nuestro \( \overline{k}\) será  \(\overline{ g_{z} }\).&lt;br /&gt;
&lt;br /&gt;
\(\overline{v} = \overline{k} \times  \overline{u} =\overline{k} \times \overline{ g_{z} }=\begin{bmatrix} g_{ \rho }  &amp;amp; g_{ \theta }&amp;amp;  g_{ z }\\ 0 &amp;amp;  0  &amp;amp; 1 \\ sen \theta  \big(1- \frac{1}{  \rho ^{2} } \big)  &amp;amp;   \rho ^{2}cos \theta  \big( \frac{1}{ \rho } + \frac{1}{  \rho ^{3} } \big)   &amp;amp; 0 \end{bmatrix}=\frac{1}{ \rho }\big\{-\rho^{2} cos \theta  \big( \frac{1}{ \rho } + \frac{1}{  \rho ^{3} } \big) \overline{g _{ \rho } } +sen \theta\big( 1-\frac{1}{  \rho ^{2} } \big) \overline{ g_{ \theta } }     \big\} =-cos \theta \big( 1-\frac{1}{  \rho ^{2} } \big)  \overline{ g_{  \rho  } }+ sen \theta \big( \frac{1}{ \rho } + \frac{1}{  \rho ^{3} } \big)   \overline{ g_{   \theta   } }\)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Comprobación por grafica de matlab=====&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear all; clf;&lt;br /&gt;
%datos&lt;br /&gt;
p=linspace(1,5,25);&lt;br /&gt;
theta=linspace(0,2*pi,25);&lt;br /&gt;
%creamos la malla&lt;br /&gt;
[U,V]=meshgrid(p,theta);&lt;br /&gt;
%Le damos la forma que queremos&lt;br /&gt;
X=U.*cos(V);&lt;br /&gt;
Y=U.*sin(V);&lt;br /&gt;
%doy la función&lt;br /&gt;
phi=inline('(p+(1./p)).*sin(theta)','p','theta');&lt;br /&gt;
%consehuimos las alturas&lt;br /&gt;
Z=phi(U,V);&lt;br /&gt;
%el grafico&lt;br /&gt;
%fibujamoslas lineas de nivel&lt;br /&gt;
% contour(X,Y,Z,75);&lt;br /&gt;
% axis equal&lt;br /&gt;
 &lt;br /&gt;
hold on&lt;br /&gt;
%las derivadas parciales&lt;br /&gt;
ux=(1-1./(U.*U)).*sin(V).*cos(V)-U.*sin(V).*cos(V).*((1./U)+(1./(U.*U.*U)));&lt;br /&gt;
uy=(1-1./(U.*U)).*sin(V).*sin(V)+U.*cos(V).*cos(V).*((1./U)+(1./(U.*U.*U)));&lt;br /&gt;
%dibujamos el gradiente&lt;br /&gt;
quiver(X,Y,ux,uy);&lt;br /&gt;
%el ortogonal&lt;br /&gt;
vx=-(1+1./(U.*U)).*cos(V).*cos(V)-U.*sin(V).*sin(V).*((1./U)-(1./(U.*U.*U)));&lt;br /&gt;
vy=-(1+1./(U.*U)).*cos(V).*sin(V)+U.*cos(V).*sin(V).*((1./U)-(1./(U.*U.*U)));&lt;br /&gt;
%dibujar el otrtogonal&lt;br /&gt;
quiver(X,Y,vx,vy);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Campo ortogonal al campo de velocidades.jpg|marco|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====demuestro que este campo es irrotacional =====&lt;br /&gt;
Al ser de divergencia nula el rotacional también lo será&lt;br /&gt;
&lt;br /&gt;
\(\nabla \times \overline{u} = \frac{1}{ \rho } \begin{bmatrix} g_{ \rho } &amp;amp; g_{ \theta }&amp;amp;  g_{ z }\\ \frac{\partial}{\partial\rho } &amp;amp;  \frac{\partial}{\partial \theta }  &amp;amp; \frac{\partial}{\partial z} \\ v g_{ \rho } &amp;amp; vg_{  \theta } &amp;amp; vg_{ z} \end{bmatrix}= \frac{1}{  \rho  } \big\{sen \theta  \big(1- \frac{1}{  \rho ^{2} } \big)- \big(sen \theta  \big(1- \frac{1}{  \rho ^{2} } \big) \big)  \big\} =0 \)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Así queda demostrado que s irrotacional&lt;br /&gt;
&lt;br /&gt;
=====Potencial escalar de corriente =====&lt;br /&gt;
Interpretaremos las líneas de corriente como la función potencial de este campo&lt;br /&gt;
\(\overline{v} = \nabla  \psi\)&lt;br /&gt;
&lt;br /&gt;
Calcularemos el potencial escalar:&lt;br /&gt;
&lt;br /&gt;
\(\frac{\partial \psi }{\partial  \rho } =-cos \theta \big(1- \frac{1}{  \rho ^{2}} \big) cos \rightarrow   \psi =- \int  cos \theta d \rho  + \int  \frac{cos \theta }{  \rho ^{2} }d \rho   \rightarrow  \psi = - \rho cos \theta - \frac{1}{ \rho }cos \theta+C \big( \theta \big)\)  &lt;br /&gt;
&lt;br /&gt;
Donde C igualando \(\rightarrow   cos \big( \theta \big)=cte \rightarrow 0\)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Representamos las líneas de corriente con Matlab=====&lt;br /&gt;
el código respectivo&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear all; clf;&lt;br /&gt;
%datos&lt;br /&gt;
p=linspace(1,5,50);&lt;br /&gt;
theta=linspace(0,2*pi,50);&lt;br /&gt;
%creamos la malla&lt;br /&gt;
[U,V]=meshgrid(p,theta);&lt;br /&gt;
%Le damos la forma que queremos&lt;br /&gt;
X=U.*cos(V);&lt;br /&gt;
Y=U.*sin(V);&lt;br /&gt;
%potencial escalar. Lineas de corriente&lt;br /&gt;
chi=(1./U-U).*cos(V)&lt;br /&gt;
 &lt;br /&gt;
%las derivadas parciales&lt;br /&gt;
ux=(1-1./(U.*U)).*sin(V).*cos(V)-U.*sin(V).*cos(V).*((1./U)+(1./(U.*U.*U)));&lt;br /&gt;
uy=(1-1./(U.*U)).*sin(V).*sin(V)+U.*cos(V).*cos(V).*((1./U)+(1./(U.*U.*U)));&lt;br /&gt;
%Dibujo lineas de corriente&lt;br /&gt;
contour(X,Y,chi,50,'LineWidth',1.5)&lt;br /&gt;
 axis([-5,5,-5,5])&lt;br /&gt;
 axis equal&lt;br /&gt;
 view(2)&lt;br /&gt;
 hold on&lt;br /&gt;
 &lt;br /&gt;
%Dibujo campo de velocidades&lt;br /&gt;
 quiver(X,Y,ux,uy)&lt;br /&gt;
axis([-5,5,-5,5])&lt;br /&gt;
 axis equal&lt;br /&gt;
view(2)&lt;br /&gt;
hold on&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Lineas de corriente.jpg|marco|centro]]&lt;br /&gt;
&lt;br /&gt;
En ella se ve como la velocidad es tangente a las líneas de corriente&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Lineas ortogonales corriente son ortogonales alas curvas equipotenciales=====&lt;br /&gt;
Vamos a demostrar gracias a matlab que las Lineas ortogonales corriente son ortogonales alas curvas equipotenciales&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear all; clf;&lt;br /&gt;
%datos&lt;br /&gt;
p=linspace(1,5,50);&lt;br /&gt;
theta=linspace(0,2*pi,50);&lt;br /&gt;
%creamos la malla&lt;br /&gt;
[U,V]=meshgrid(p,theta);&lt;br /&gt;
%Le damos la forma que queremos&lt;br /&gt;
X=U.*cos(V);&lt;br /&gt;
Y=U.*sin(V);&lt;br /&gt;
%potencial escalar. Lineas de corriente&lt;br /&gt;
chi=(1./U-U).*cos(V)&lt;br /&gt;
%curvas equipotenciales&lt;br /&gt;
po=(1./U+U).*sin(V)&lt;br /&gt;
 %Dibujo lineas de corriente&lt;br /&gt;
 contour(X,Y,chi,50,'LineWidth',1.5)&lt;br /&gt;
 axis([-5,5,-5,5])&lt;br /&gt;
 axis equal&lt;br /&gt;
 view(2)&lt;br /&gt;
 hold on&lt;br /&gt;
 &lt;br /&gt;
%Dibujo equipotenciales&lt;br /&gt;
 contour(X,Y,po,50,'LineWidth',1.5)&lt;br /&gt;
 axis([-5,5,-5,5])&lt;br /&gt;
 axis equal&lt;br /&gt;
 view(2)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Ortogonalidad.jpg|marco|centro]]&lt;br /&gt;
&lt;br /&gt;
==Velocidades máxima y mínima en frontera del obstáculo==&lt;br /&gt;
&lt;br /&gt;
Como hemos demostrado anteriormente, el fluido va a rodear al obstáculo S, sin llegar a pasar por encima ni atravesarlo. Ahora bien, sí que va a rodearlo, encontrando así diferentes velocidades alrededor de la frontera que lo conforma. Así pues, como sabemos el campo de velocidades del fluido y las coordenadas de la frontera (Radio=1), procedemos a calcular cómo será el campo en todo el contorno de S:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tex2Img 1480793466.jpg |500px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
Ya tenemos la dirección y valores del campo en todos esos puntos. Ahora bien, para hallar los puntos máximos y mínimos, necesitamos llevar a esta función a sus extremos. Para ello, vemos que, usando el módulo de esta, tenemos::[[Archivo:Tex2Img 1480795219.jpg|100px|sinmarco|centro]]&lt;br /&gt;
 -Adquirirá sus valores máximos cuando:          &lt;br /&gt;
    [[Archivo:Tex2Img 1480795766.jpg|200px|sinmarco|ninguna]]&lt;br /&gt;
    [[Archivo:Tex2Img 1480795810.jpg|200px|sinmarco|ninguna]]&lt;br /&gt;
&lt;br /&gt;
 -Y sus valores mínimos cuando:&lt;br /&gt;
    [[Archivo:Tex2Img 1480796357.jpg|200px|sinmarco|ninguna]]&lt;br /&gt;
&lt;br /&gt;
Por tanto, tenemos que: (en cartesianas)&lt;br /&gt;
  - Las velocidades máximas se darán en los puntos: [1,0] , [-1,0]&lt;br /&gt;
  - Las velocidades mínimas se darán en los puntos: [0,1] , [0,-1]&lt;br /&gt;
&lt;br /&gt;
Los puntos de remanso, que son donde se adquiere velocidad nula, corresponden con los de las velocidades mínimas, como podemos comprobar.&lt;br /&gt;
&lt;br /&gt;
==Presión del fluido: Ecuación de Bernouilli==&lt;br /&gt;
===Ecuación de Bernouilli===&lt;br /&gt;
Sabemos que un fluido se caracteriza, entre otras cosas, por tener carácter compresible o incompresible, determinando así su dinámica. Además de ello, también describirán su comportamiento agentes externos como la temperatura o la presión.&lt;br /&gt;
En este caso, la ecuación de Bernouilli nos permite relacionar la velocidad de un fluido en función de la presión a la que esté sometido, considerando también una densidad:&lt;br /&gt;
[[Archivo:Tex2Img 1480874948.jpg ‎|200px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
Consideramos el fluido incompresible (d=2), el campo de velocidades u y tomando la cte=10. Sustituimos y obtenemos el siguiente campo de presiones:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tex2Img 1480875432.jpg|500px|sinmarco|centro]]&lt;br /&gt;
[[Archivo:Tex2Img 1480875690.jpg|300px|marco|centro]]&lt;br /&gt;
&lt;br /&gt;
Así pues, introducimos la ecuación de presiones resultante en Matlab y dibujamos:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% vemos variables&lt;br /&gt;
rho=1:0.1:6;&lt;br /&gt;
th=0:0.1:2*pi+0.1;&lt;br /&gt;
%hacemos retícula&lt;br /&gt;
[U,V]=meshgrid(rho,th);&lt;br /&gt;
%describo coordenadas&lt;br /&gt;
X=U.*cos(V);&lt;br /&gt;
Y=U.*sin(V);&lt;br /&gt;
%aplicamos funcion presion&lt;br /&gt;
f=10-((sin(V).^2)).*((1-(1./(U.^2))))-((((cos(V)).^2)).*(((1./U)+(1./(U.^3))).^2)).*(U.^2);&lt;br /&gt;
%dibujo&lt;br /&gt;
surf(X,Y,f)&lt;br /&gt;
axis([-5,5,-5,5])&lt;br /&gt;
axis equal&lt;br /&gt;
view(2)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Campodepresiones.png|600px|thumb|marco|centro]]&lt;br /&gt;
Así pues, viendo el gráfico nos damos cuenta de que las mayores presiones se darán cuando el fluido choque con el obstáculo verticalmente. Y las menores presiones se encontrarán, debido al desplazamiento producido por el choque, en los laterales horizontales del obstáculo. En tanto, lejos del obstáculo se mantendrán más o menos presiones constantes.&lt;br /&gt;
&lt;br /&gt;
===Campo de presiones y velocidad del fluido===&lt;br /&gt;
&lt;br /&gt;
Una vez hallado el campo de presiones de nuestro fluido, procedemos a encontrar la relación que, según Bernouilli, lo vincula al campo de velocidades el mismo. De este modo, comparamos los gráficos y vemos:&lt;br /&gt;
[[Archivo:Campodepresiones.png|400px|thumb|marco|izquierda]] [[Archivo:VelocidadesA12.png|400px|thumb|marco|derecha]]&lt;br /&gt;
&lt;br /&gt;
El fluido, al desplazarse de sur a norte, cuando se encuentra con el fluido choca, viendo su velocidad reducida al mínimo, coincidiendo con la zona donde la presión es máxima. Esto hace que las partículas se desplacen a ambos lados del obstáculo, aumentando de nuevo su velocidad y reduciendo de nuevo la presión a mínimos, ya que no están sometidos a otro choque. Aún así, al llegar al extremo superior del obstáculo, de nuevo las partículas del fluido se chocan y se frenan entre ellas, volviendo a aumentar bastante la presión en esa zona. Por tanto, encontramos una clara relación entre velocidades y presiones.&lt;br /&gt;
&lt;br /&gt;
==Incompresibilidad del fluido. Ecuación de Navier-Stokes==&lt;br /&gt;
Uno de los Siete Grandes Problemas del Milenio son las ecuaciones de Navier-Stokes, que tratan de describir el movimiento de un fluido en la atmósfera, las corrientes oceánicas, y sobre cualquier objeto, tales como las aeronaves. De esta forma, se intenta encontrar una relación general entre dichos movimientos y en todos donde estén involucrados fluidos newtonianos, aplicando las leyes elementales de la Mecánica y Termodinámica física. Hasta ahora solo se ha podido demostrar para casos muy particulares. En esta sección vamos a tratar una de las ecuaciones de manera simplificada, donde podamos tomar  los parámetros de campo u y presión ,quedando:&lt;br /&gt;
[[Archivo:Tex2Img 1480881335.jpg|200px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
Vamos a considerar una viscosidad nula, por lo que lo idealizamos como fluido perfecto. Además, sabemos que es incompresible por tener divergencia nula, lo que hace que tomemos la densidad d=cte. Así, queda:&lt;br /&gt;
[[Archivo:Tex2Img 1480881740.jpg|200px|sinmarco|centro]]&lt;br /&gt;
Además, nos dan la siguiente condición:&lt;br /&gt;
[[Archivo:Tex2Img 1480882019.jpg ‎|200px|sinmarco|centro]]&lt;br /&gt;
Con todo ello, desarrollamos la ecuación y nos queda (''teniendo e cuenta que estamos trabajando en 2D''):&lt;br /&gt;
[[Archivo:Tex2Img_1480884716.jpg‎|300px|marco|centro]]&lt;br /&gt;
&lt;br /&gt;
Ahora bien, vamos a comprobar ahora que dicha ecuación guarda relación con la ecuación de Bernouilli, ya que para elaborarlas se han tenido en consideración leyes físicas semejantes, y se ha operado con el campo de presiones y de velocidades del fluido, el cual es incompresible y perfecto (sin viscosidad). Para ello, debemos aplicar el gradiente a la misma, y desarrollar en cartesianas partiendo de ahí:&lt;br /&gt;
[[Archivo:Tex2Img 1480883663.jpg|900px|sinmarco|centro]]&lt;br /&gt;
[[Archivo:Tex2Img_1480884822.jpg |900px|sinmarco|centro]]&lt;br /&gt;
[[Archivo:Tex2Img_1480884716.jpg ‎|800px|marco|centro]]&lt;br /&gt;
&lt;br /&gt;
Como podemos comprobar, las soluciones de Bernouilli y Navier-Stokes coinciden, haciendo evidente su conexión tanto matemática como física, aunque solo cuando la viscosidad del fluido es nula.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Teorema de Kutta-Joukowski. Paradoja D'Alembert==&lt;br /&gt;
El Teorema Kutta-Joukowski es un teorema fundamental de la aerodinámica. Es el nombre del alemán Martin Wilhelm Kutta y el ruso Nikolái Zhukovski (o Joukowski) que empezaron a desarrollar sus ideas clave a principios del siglo XX. El teorema relaciona la fuerza de sustentación generada por un cilindro recto con la velocidad del fluido por el cilindro, la densidad del fluido, y la circulación. La circulación es la integral de línea de la velocidad del fluido, en una curva cerrada que contiene al cilindro. Puede ser entendido como la cantidad total &amp;quot;hilado&amp;quot; del fluido alrededor del cilindro. En las descripciones del teorema Kutta-Joukowski el cilindro recto por lo general es limitado a un cilindro circular o un perfil alar.&lt;br /&gt;
El teorema se refiere al flujo bidimensional alrededor de un cilindro (o un cilindro de envergadura de ala infinito) y determina la sustentación generada por unidad de envergadura. &lt;br /&gt;
En resumen podemos decir que este teorema trata de que la fuerza que ejerce el fluido sobre el obstáculo es proporcional a la circulación.&lt;br /&gt;
Por otro lado la Paradoja de D´Alembert es una contradicción a la que llegó tras estudiar matemáticamente el fenómeno de la resistencia producida sobre un cuerpo cuando una corriente de fluido (líquido o gas) circula sobre él.&lt;br /&gt;
D'Alembert aplicó la teoría de flujo potencial para modelar el fenómeno, y concluyó que la fuerza resultante sobre el cuerpo sobre el cual fluye el aire es cero, lo cual se contradice con la observación.&lt;br /&gt;
&lt;br /&gt;
En nuestro problema empezaremos parametrizando el obstáculo:&lt;br /&gt;
[[Archivo:1.png|miniaturadeimagen|izquierda]]&lt;br /&gt;
Calculamos la circulación en el intervalo (a,b)=(0,2π):&lt;br /&gt;
[[Archivo:10yo.png|miniaturadeimagen|izquierda]]&lt;br /&gt;
Obtenemos el resultado de que la circulación es nula. Esto va en contra de la intuición ya que se supone que el fluido debería ejercer una fuerza sobre el obstáculo, pero aplicando el Teorema de Kutta-Joukowski, que como hemos dicho antes dice que la fuerza es proporcional a la circulación, llegamos a la conclusión de que la fuerza debería ser nula también. Encontrándonos con la conocida como Paradoja de Agregar a diccionario.&lt;br /&gt;
&lt;br /&gt;
==Curvas de nivel de la presión==&lt;br /&gt;
Como anteriormente hemos observado los maximos valores para la presión los encontramos en la zona superior e inferior del óbstaculo correspondiendose con las zonas de mayor velocidad. Mientras que el los laterales las líneas son de un color azul que equivale a valores más bajos de la presión, justo donde las corrientes se alejan del obstáculo.&lt;br /&gt;
1 %Reticula&lt;br /&gt;
2 ro=1:0.1:5; &lt;br /&gt;
3 teta=0:0.1:2*pi; &lt;br /&gt;
[U,V]=meshgrid(ro,teta);&lt;br /&gt;
5%Cambio de coordenadas  &lt;br /&gt;
6 X=U.*cos(V);&lt;br /&gt;
7Y=U.*sin(V); &lt;br /&gt;
8 %Formula de la presión&lt;br /&gt;
9 p=10-((sin(V).^2)).*((1-(1./(U.^2))))-((((cos(V)).^2)).*(((1./U)+(1./(U.^3))).^2)).*(U.^2);&lt;br /&gt;
10 %Dibujo de las curvas de nivel&lt;br /&gt;
11 contour(X,Y,p,50,'linewidth',1.5)&lt;br /&gt;
12 axis([-5,5-5,5])&lt;br /&gt;
13 axis equal&lt;br /&gt;
[[Archivo:Captura de pantalla 2016-12-05 23.36.04.png|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
==Presión media del fluido==&lt;br /&gt;
Vamos a calcular la presión media del fluido. Para ello se hará un aaproximacion de la integral de la presion y lo dividiremos entre el área de la región que ocupa el fluido. En este caso es el área de una corona circular de radios 1 y 5.&lt;br /&gt;
(Agregar imagen 4)&lt;br /&gt;
Realizamos la aproximación de la presión mediante Matlab:&lt;br /&gt;
1 %Reticula&lt;br /&gt;
2 h=0.01;&lt;br /&gt;
3 ro=1:h:5;&lt;br /&gt;
4 teta=0:h:2*pi;&lt;br /&gt;
5 [U,V]=meshgrid(ro,teta);&lt;br /&gt;
6 %Presión del fluido&lt;br /&gt;
7 p=10-((sin(V).^2)).*((1-(1./(U.^2))))-((((cos(V)).^2)).*(((1./U)+(1./(U.^3))).^2)).*(U.^2);&lt;br /&gt;
8 %Integral de la presión&lt;br /&gt;
9 pres=U.*p;&lt;br /&gt;
10 %Integral&lt;br /&gt;
11 volumen=h^2*pres;&lt;br /&gt;
12 w=sum(sum(volumen));&lt;br /&gt;
13 %Área de la corona circular&lt;br /&gt;
14 area=(pi*5^2)-(pi*1^2);&lt;br /&gt;
15 %Presión media &lt;br /&gt;
16 presmedia=w/área&lt;br /&gt;
Realizando estos cálculos obtenemos un resultado de 8.9444 que si contrastamos con una de las gráficas de la presión podemos ver que concuerda, ya que en la gráfica a simple vista se observa como los valores medios rondan este valor.&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Campo_y_funcion_potencial22.jpg&amp;diff=37881</id>
		<title>Archivo:Campo y funcion potencial22.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Campo_y_funcion_potencial22.jpg&amp;diff=37881"/>
				<updated>2016-12-05T22:47:15Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Visualizaci%C3%B3n_de_campos_escalares_y_vectoriales_en_fluidos_(Grupo_12A)&amp;diff=37879</id>
		<title>Visualización de campos escalares y vectoriales en fluidos (Grupo 12A)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Visualizaci%C3%B3n_de_campos_escalares_y_vectoriales_en_fluidos_(Grupo_12A)&amp;diff=37879"/>
				<updated>2016-12-05T22:45:55Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: /* Función potencial y su campo de velocidades */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En el artículo desarrollado a continuación vamos a estudiar el flujo de un fluido incompresible alrededor de un obstáculo con forma circular. Vamos a trabajar con coordenadas cilíndricas (polares ya que se reduce al plano) ya que con la forma del obstáculo, los cálculos nos resultarán más sencillos. Las gráficas que mostremos aquí han sido obtenidas con el programa [[MATLAB]] / [[OCTAVE]].&amp;lt;br /&amp;gt;&lt;br /&gt;
{{ TrabajoED | Visualización de campos escalares y vectoriales en fluidos. Grupo 12A | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC16/17|2016-17]] | Jorge Barrena Blázquez, Rommel Beltrán Carrero, Pablo Domingo Escudero Bravo, Carlos Maroto Escribano}}&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC16/17]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introducción==&lt;br /&gt;
Antes de comenzar, cabe explicar el concepto de fluido incompresible. Un fluido incompresible es aquel cuya masa y volumen no variarán, permaneciendo constantes en el tiempo; y se opone a las compresiones ofrecidas bajo cualquier condición o circunstancia. Su significado matemático, por tanto, es que dicho fluido tendrá una densidad constante, facilitando los cálculos necesarios por homogeneidad de sus propiedades en cualquier posición.&lt;br /&gt;
&lt;br /&gt;
==Región ocupada por un fluido==&lt;br /&gt;
&lt;br /&gt;
De forma previa a la realización de cálculo alguno respecto al comportamiento del fluido habrá que delimitar la región del estudio. Se nos da una corona circular de radios 1 y 5, por lo que representamos su mallado en el intervalo [-5,5] x [-5,5]:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Obstaculomatlab.png|500x500px|miniaturadeimagen|izquierda]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Obstaculo.jpg|1000x1000px|miniaturadeimagen|izquierda]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Función potencial y su campo de velocidades==&lt;br /&gt;
La velocidad de las partículas del fluido viene dada por el gradiente de :&lt;br /&gt;
[[Archivo:Formula1.png|400x200|sinmarco|izquierda]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Velocidad.png|400x200px|sinmarco|izquierda]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La representación gráfica de la función potencial y su gradiente (campo de velocidades) es la siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Funcionpotencialmatlab.png|450x900px|miniaturadeimagen|izquierda]] [[Archivo:Campodevelocidadesmatlab.png|700×900px|marco|derecha]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Campo y funcion potencial lineas de nivel2.jpg|600x550px|miniaturadeimagen|derecha]]&lt;br /&gt;
[[Archivo:Funcionpotencial5.jpg|700x380px|miniaturadeimagen|izquierda]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ampliando la imagen del campo de velocidades puede apreciarse que es ortogonal a la función potencial:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:ZOOM.jpg|1000x1000px|sinmarco|izquierda]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Velocidades paralelas a la superficie====&lt;br /&gt;
Vamos a experimentar con las direcciones de la velocidad al entrar en contacto con el obstáculo. Probando a hacer el producto escalar entre la velocidad del fluido y el vector normal del osbtáculo obtenemos:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:U.n2.png|200x200]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Con lo que puede deducirse que la velocidad del fluido siempre será perpendicular al vector normal de la superficie, es decir, que las partículas del fluido únicamente rodearán el espacio, no lo pasarán por encima, pues las componentes verticales de la velocidad se anulan.&lt;br /&gt;
&lt;br /&gt;
====Campo de velocidades y función potencial lejos del obstáculo====&lt;br /&gt;
Vamos a ver qué sucede cuando nos alejamos mucho de nuestro obstáculo y entonces  \(\rho\) es  muy grande. Para ello vamos a hacer el límite de cuando \(\rho\) tiende a infinito de nuestra función potencial  \(\varphi= \big( \rho + \frac{1}{ \rho } \big) sen \big( \theta \big)\)  veremos como  \(\frac{1}{ \rho }\) será igual a cero.&lt;br /&gt;
&lt;br /&gt;
\(\lim_{ \rho  \rightarrow  \infty }\big( \rho + \frac{1}{ \rho } \big) sen \big( \theta \big)=\rho sen \big( \theta \big)\)&lt;br /&gt;
&lt;br /&gt;
Y nuestro gradiente&lt;br /&gt;
&lt;br /&gt;
\(\nabla\varphi = \frac{\partial\varphi}{\partial  \rho }  g_{p}+ \frac{1}{ \rho^{2} } \frac{\partial \varphi }{\partial  \theta }  g_{ \theta } + \frac{\partial \varphi }{\partial z}  g_{z} =sen \big( \theta \big)  g_{ \rho } + \frac{1}{ \rho } cos  \big( \theta \big)  g_{ \theta }=sen \big( \theta \big)  g_{ \theta } \)&lt;br /&gt;
&lt;br /&gt;
Y por ello estos serán los puntos cuando \rho es muy grande&lt;br /&gt;
&lt;br /&gt;
==Rotacional y divergencia del campo==&lt;br /&gt;
En este punto estudiaremos analiticamente que \( \overline{u}\) su rotacional como su divergencia es nula y trataremos el tema de la incompresibilidad del fluido.&lt;br /&gt;
&lt;br /&gt;
Nuestro rotacional en coordenadas polares&lt;br /&gt;
&lt;br /&gt;
\(\nabla \times \overline{u} = \frac{1}{ \rho }  \begin{bmatrix} g_{ \rho }  &amp;amp; g_{ \theta }&amp;amp;  g_{ z }\\ \frac{\partial}{\partial\rho } &amp;amp;  \frac{\partial}{\partial \theta }  &amp;amp; \frac{\partial}{\partial z} \\ u g_{ \rho } &amp;amp; ug_{  \theta } &amp;amp; ug_{ z} \end{bmatrix}= \frac{1}{ \rho }  \begin{bmatrix} g_{ \rho }  &amp;amp; g_{ \theta }&amp;amp;  g_{ z }\\ \frac{\partial}{\partial\rho } &amp;amp;  \frac{\partial}{\partial \theta }  &amp;amp; \frac{\partial}{\partial z} \\ sen \big( \theta \big)  \big(1- \frac{1}{   \rho ^{3} } \big)  &amp;amp; cos \big( \theta \big) \big( \rho + \frac{1}{  \rho ^{2} } \big)   &amp;amp; 0 \end{bmatrix}= \frac{1}{ \rho }  \big\{ \big(cos \big( \theta \big)- \frac{1}{  \rho ^{2} } cos \big( \theta \big)\big) - \big(cos \big( \theta \big)-cos \big( \theta \big) \frac{1}{  \rho ^{2} }   \big)   \big\} g_{z} =0\)&lt;br /&gt;
&lt;br /&gt;
Nuestra divergencia en coordenadas polares&lt;br /&gt;
&lt;br /&gt;
\(\nabla  . \overline{u} = \frac{1}{ \sqrt{g} }  \frac{\partial}{\partial  x_{i} }  \big( \sqrt{g} u_{i}  \big) = \frac{1}{ \rho }  \big\{ \frac{\partial}{\partial  \rho } \big(\rho sen \big( \theta \big) -sen \big( \theta \big) \frac{1}{\rho} \big) +\frac{\partial}{\partial  \theta }   \big(cos \big( \theta \big)+cos \big( \theta \big) \frac{1}{  \rho ^{2} }  \big)   \big\}= \)&lt;br /&gt;
&lt;br /&gt;
\(\frac{1}{ \rho }  \big\{ \frac{\partial}{\partial  \rho } \big(\rho sen \big( \theta \big) -sen \big( \theta \big) \frac{1}{\rho} \big) +\frac{\partial}{\partial  \theta }   \big(cos \big( \theta \big)+cos \big( \theta \big) \frac{1}{  \rho ^{2} }  \big)   \big\}=\)&lt;br /&gt;
&lt;br /&gt;
\(\frac{1}{ \rho } \big\{sen \big( \theta \big)+sen \big( \theta \big)\frac{1}{   \rho ^{2}  }-sen \big( \theta \big) -sen\big( \theta \big)  \frac{1}{  \rho ^{2} }  \big\} =0\)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vemos que ambos quedan reducidos a 0&lt;br /&gt;
&lt;br /&gt;
Demostrando que la divergencia es nula tratamos la condición de que el agua es un líquido incompresible; Por ello suponemos que el agua es incompresible pero no lo podemos hacer del mismo modo con el aire. Por ello local mente el fluido ni se expande ni se contrae.&lt;br /&gt;
&lt;br /&gt;
==Líneas de corriente del campo==&lt;br /&gt;
En este punto vamos a dibujar las líneas de corriente que nos definirán la trayectoria del plano y son  tangentes a \( \overline{u}\) a nuestro campo que es el fluido, el agua.&lt;br /&gt;
Para ello  necesitaremos calcular el campo ortogonal y su potencial.&lt;br /&gt;
=====Calculo analítico=====&lt;br /&gt;
Este campo lo obtendremos del resultado de  multiplicar el vector \( \overline{k}\) con el campo \( \overline{u}\). Que al estar en coordenadas polares nuestro \( \overline{k}\) será  \(\overline{ g_{z} }\).&lt;br /&gt;
&lt;br /&gt;
\(\overline{v} = \overline{k} \times  \overline{u} =\overline{k} \times \overline{ g_{z} }=\begin{bmatrix} g_{ \rho }  &amp;amp; g_{ \theta }&amp;amp;  g_{ z }\\ 0 &amp;amp;  0  &amp;amp; 1 \\ sen \theta  \big(1- \frac{1}{  \rho ^{2} } \big)  &amp;amp;   \rho ^{2}cos \theta  \big( \frac{1}{ \rho } + \frac{1}{  \rho ^{3} } \big)   &amp;amp; 0 \end{bmatrix}=\frac{1}{ \rho }\big\{-\rho^{2} cos \theta  \big( \frac{1}{ \rho } + \frac{1}{  \rho ^{3} } \big) \overline{g _{ \rho } } +sen \theta\big( 1-\frac{1}{  \rho ^{2} } \big) \overline{ g_{ \theta } }     \big\} =-cos \theta \big( 1-\frac{1}{  \rho ^{2} } \big)  \overline{ g_{  \rho  } }+ sen \theta \big( \frac{1}{ \rho } + \frac{1}{  \rho ^{3} } \big)   \overline{ g_{   \theta   } }\)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Comprobación por grafica de matlab=====&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear all; clf;&lt;br /&gt;
%datos&lt;br /&gt;
p=linspace(1,5,25);&lt;br /&gt;
theta=linspace(0,2*pi,25);&lt;br /&gt;
%creamos la malla&lt;br /&gt;
[U,V]=meshgrid(p,theta);&lt;br /&gt;
%Le damos la forma que queremos&lt;br /&gt;
X=U.*cos(V);&lt;br /&gt;
Y=U.*sin(V);&lt;br /&gt;
%doy la función&lt;br /&gt;
phi=inline('(p+(1./p)).*sin(theta)','p','theta');&lt;br /&gt;
%consehuimos las alturas&lt;br /&gt;
Z=phi(U,V);&lt;br /&gt;
%el grafico&lt;br /&gt;
%fibujamoslas lineas de nivel&lt;br /&gt;
% contour(X,Y,Z,75);&lt;br /&gt;
% axis equal&lt;br /&gt;
 &lt;br /&gt;
hold on&lt;br /&gt;
%las derivadas parciales&lt;br /&gt;
ux=(1-1./(U.*U)).*sin(V).*cos(V)-U.*sin(V).*cos(V).*((1./U)+(1./(U.*U.*U)));&lt;br /&gt;
uy=(1-1./(U.*U)).*sin(V).*sin(V)+U.*cos(V).*cos(V).*((1./U)+(1./(U.*U.*U)));&lt;br /&gt;
%dibujamos el gradiente&lt;br /&gt;
quiver(X,Y,ux,uy);&lt;br /&gt;
%el ortogonal&lt;br /&gt;
vx=-(1+1./(U.*U)).*cos(V).*cos(V)-U.*sin(V).*sin(V).*((1./U)-(1./(U.*U.*U)));&lt;br /&gt;
vy=-(1+1./(U.*U)).*cos(V).*sin(V)+U.*cos(V).*sin(V).*((1./U)-(1./(U.*U.*U)));&lt;br /&gt;
%dibujar el otrtogonal&lt;br /&gt;
quiver(X,Y,vx,vy);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Campo ortogonal al campo de velocidades.jpg|marco|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====demuestro que este campo es irrotacional =====&lt;br /&gt;
Al ser de divergencia nula el rotacional también lo será&lt;br /&gt;
&lt;br /&gt;
\(\nabla \times \overline{u} = \frac{1}{ \rho } \begin{bmatrix} g_{ \rho } &amp;amp; g_{ \theta }&amp;amp;  g_{ z }\\ \frac{\partial}{\partial\rho } &amp;amp;  \frac{\partial}{\partial \theta }  &amp;amp; \frac{\partial}{\partial z} \\ v g_{ \rho } &amp;amp; vg_{  \theta } &amp;amp; vg_{ z} \end{bmatrix}= \frac{1}{  \rho  } \big\{sen \theta  \big(1- \frac{1}{  \rho ^{2} } \big)- \big(sen \theta  \big(1- \frac{1}{  \rho ^{2} } \big) \big)  \big\} =0 \)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Así queda demostrado que s irrotacional&lt;br /&gt;
&lt;br /&gt;
=====Potencial escalar de corriente =====&lt;br /&gt;
Interpretaremos las líneas de corriente como la función potencial de este campo&lt;br /&gt;
\(\overline{v} = \nabla  \psi\)&lt;br /&gt;
&lt;br /&gt;
Calcularemos el potencial escalar:&lt;br /&gt;
&lt;br /&gt;
\(\frac{\partial \psi }{\partial  \rho } =-cos \theta \big(1- \frac{1}{  \rho ^{2}} \big) cos \rightarrow   \psi =- \int  cos \theta d \rho  + \int  \frac{cos \theta }{  \rho ^{2} }d \rho   \rightarrow  \psi = - \rho cos \theta - \frac{1}{ \rho }cos \theta+C \big( \theta \big)\)  &lt;br /&gt;
&lt;br /&gt;
Donde C igualando \(\rightarrow   cos \big( \theta \big)=cte \rightarrow 0\)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Representamos las líneas de corriente con Matlab=====&lt;br /&gt;
el código respectivo&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear all; clf;&lt;br /&gt;
%datos&lt;br /&gt;
p=linspace(1,5,50);&lt;br /&gt;
theta=linspace(0,2*pi,50);&lt;br /&gt;
%creamos la malla&lt;br /&gt;
[U,V]=meshgrid(p,theta);&lt;br /&gt;
%Le damos la forma que queremos&lt;br /&gt;
X=U.*cos(V);&lt;br /&gt;
Y=U.*sin(V);&lt;br /&gt;
%potencial escalar. Lineas de corriente&lt;br /&gt;
chi=(1./U-U).*cos(V)&lt;br /&gt;
 &lt;br /&gt;
%las derivadas parciales&lt;br /&gt;
ux=(1-1./(U.*U)).*sin(V).*cos(V)-U.*sin(V).*cos(V).*((1./U)+(1./(U.*U.*U)));&lt;br /&gt;
uy=(1-1./(U.*U)).*sin(V).*sin(V)+U.*cos(V).*cos(V).*((1./U)+(1./(U.*U.*U)));&lt;br /&gt;
%Dibujo lineas de corriente&lt;br /&gt;
contour(X,Y,chi,50,'LineWidth',1.5)&lt;br /&gt;
 axis([-5,5,-5,5])&lt;br /&gt;
 axis equal&lt;br /&gt;
 view(2)&lt;br /&gt;
 hold on&lt;br /&gt;
 &lt;br /&gt;
%Dibujo campo de velocidades&lt;br /&gt;
 quiver(X,Y,ux,uy)&lt;br /&gt;
axis([-5,5,-5,5])&lt;br /&gt;
 axis equal&lt;br /&gt;
view(2)&lt;br /&gt;
hold on&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Lineas de corriente.jpg|marco|centro]]&lt;br /&gt;
&lt;br /&gt;
En ella se ve como la velocidad es tangente a las líneas de corriente&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Lineas ortogonales corriente son ortogonales alas curvas equipotenciales=====&lt;br /&gt;
Vamos a demostrar gracias a matlab que las Lineas ortogonales corriente son ortogonales alas curvas equipotenciales&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear all; clf;&lt;br /&gt;
%datos&lt;br /&gt;
p=linspace(1,5,50);&lt;br /&gt;
theta=linspace(0,2*pi,50);&lt;br /&gt;
%creamos la malla&lt;br /&gt;
[U,V]=meshgrid(p,theta);&lt;br /&gt;
%Le damos la forma que queremos&lt;br /&gt;
X=U.*cos(V);&lt;br /&gt;
Y=U.*sin(V);&lt;br /&gt;
%potencial escalar. Lineas de corriente&lt;br /&gt;
chi=(1./U-U).*cos(V)&lt;br /&gt;
%curvas equipotenciales&lt;br /&gt;
po=(1./U+U).*sin(V)&lt;br /&gt;
 %Dibujo lineas de corriente&lt;br /&gt;
 contour(X,Y,chi,50,'LineWidth',1.5)&lt;br /&gt;
 axis([-5,5,-5,5])&lt;br /&gt;
 axis equal&lt;br /&gt;
 view(2)&lt;br /&gt;
 hold on&lt;br /&gt;
 &lt;br /&gt;
%Dibujo equipotenciales&lt;br /&gt;
 contour(X,Y,po,50,'LineWidth',1.5)&lt;br /&gt;
 axis([-5,5,-5,5])&lt;br /&gt;
 axis equal&lt;br /&gt;
 view(2)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Ortogonalidad.jpg|marco|centro]]&lt;br /&gt;
&lt;br /&gt;
==Velocidades máxima y mínima en frontera del obstáculo==&lt;br /&gt;
&lt;br /&gt;
Como hemos demostrado anteriormente, el fluido va a rodear al obstáculo S, sin llegar a pasar por encima ni atravesarlo. Ahora bien, sí que va a rodearlo, encontrando así diferentes velocidades alrededor de la frontera que lo conforma. Así pues, como sabemos el campo de velocidades del fluido y las coordenadas de la frontera (Radio=1), procedemos a calcular cómo será el campo en todo el contorno de S:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tex2Img 1480793466.jpg |500px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
Ya tenemos la dirección y valores del campo en todos esos puntos. Ahora bien, para hallar los puntos máximos y mínimos, necesitamos llevar a esta función a sus extremos. Para ello, vemos que, usando el módulo de esta, tenemos::[[Archivo:Tex2Img 1480795219.jpg|100px|sinmarco|centro]]&lt;br /&gt;
 -Adquirirá sus valores máximos cuando:          &lt;br /&gt;
    [[Archivo:Tex2Img 1480795766.jpg|200px|sinmarco|ninguna]]&lt;br /&gt;
    [[Archivo:Tex2Img 1480795810.jpg|200px|sinmarco|ninguna]]&lt;br /&gt;
&lt;br /&gt;
 -Y sus valores mínimos cuando:&lt;br /&gt;
    [[Archivo:Tex2Img 1480796357.jpg|200px|sinmarco|ninguna]]&lt;br /&gt;
&lt;br /&gt;
Por tanto, tenemos que: (en cartesianas)&lt;br /&gt;
  - Las velocidades máximas se darán en los puntos: [1,0] , [-1,0]&lt;br /&gt;
  - Las velocidades mínimas se darán en los puntos: [0,1] , [0,-1]&lt;br /&gt;
&lt;br /&gt;
Los puntos de remanso, que son donde se adquiere velocidad nula, corresponden con los de las velocidades mínimas, como podemos comprobar.&lt;br /&gt;
&lt;br /&gt;
==Presión del fluido: Ecuación de Bernouilli==&lt;br /&gt;
===Ecuación de Bernouilli===&lt;br /&gt;
Sabemos que un fluido se caracteriza, entre otras cosas, por tener carácter compresible o incompresible, determinando así su dinámica. Además de ello, también describirán su comportamiento agentes externos como la temperatura o la presión.&lt;br /&gt;
En este caso, la ecuación de Bernouilli nos permite relacionar la velocidad de un fluido en función de la presión a la que esté sometido, considerando también una densidad:&lt;br /&gt;
[[Archivo:Tex2Img 1480874948.jpg ‎|200px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
Consideramos el fluido incompresible (d=2), el campo de velocidades u y tomando la cte=10. Sustituimos y obtenemos el siguiente campo de presiones:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tex2Img 1480875432.jpg|500px|sinmarco|centro]]&lt;br /&gt;
[[Archivo:Tex2Img 1480875690.jpg|300px|marco|centro]]&lt;br /&gt;
&lt;br /&gt;
Así pues, introducimos la ecuación de presiones resultante en Matlab y dibujamos:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% vemos variables&lt;br /&gt;
rho=1:0.1:6;&lt;br /&gt;
th=0:0.1:2*pi+0.1;&lt;br /&gt;
%hacemos retícula&lt;br /&gt;
[U,V]=meshgrid(rho,th);&lt;br /&gt;
%describo coordenadas&lt;br /&gt;
X=U.*cos(V);&lt;br /&gt;
Y=U.*sin(V);&lt;br /&gt;
%aplicamos funcion presion&lt;br /&gt;
f=10-((sin(V).^2)).*((1-(1./(U.^2))))-((((cos(V)).^2)).*(((1./U)+(1./(U.^3))).^2)).*(U.^2);&lt;br /&gt;
%dibujo&lt;br /&gt;
surf(X,Y,f)&lt;br /&gt;
axis([-5,5,-5,5])&lt;br /&gt;
axis equal&lt;br /&gt;
view(2)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Campodepresiones.png|600px|thumb|marco|centro]]&lt;br /&gt;
Así pues, viendo el gráfico nos damos cuenta de que las mayores presiones se darán cuando el fluido choque con el obstáculo verticalmente. Y las menores presiones se encontrarán, debido al desplazamiento producido por el choque, en los laterales horizontales del obstáculo. En tanto, lejos del obstáculo se mantendrán más o menos presiones constantes.&lt;br /&gt;
&lt;br /&gt;
===Campo de presiones y velocidad del fluido===&lt;br /&gt;
&lt;br /&gt;
Una vez hallado el campo de presiones de nuestro fluido, procedemos a encontrar la relación que, según Bernouilli, lo vincula al campo de velocidades el mismo. De este modo, comparamos los gráficos y vemos:&lt;br /&gt;
[[Archivo:Campodepresiones.png|400px|thumb|marco|izquierda]] [[Archivo:VelocidadesA12.png|400px|thumb|marco|derecha]]&lt;br /&gt;
&lt;br /&gt;
El fluido, al desplazarse de sur a norte, cuando se encuentra con el fluido choca, viendo su velocidad reducida al mínimo, coincidiendo con la zona donde la presión es máxima. Esto hace que las partículas se desplacen a ambos lados del obstáculo, aumentando de nuevo su velocidad y reduciendo de nuevo la presión a mínimos, ya que no están sometidos a otro choque. Aún así, al llegar al extremo superior del obstáculo, de nuevo las partículas del fluido se chocan y se frenan entre ellas, volviendo a aumentar bastante la presión en esa zona. Por tanto, encontramos una clara relación entre velocidades y presiones.&lt;br /&gt;
&lt;br /&gt;
==Incompresibilidad del fluido. Ecuación de Navier-Stokes==&lt;br /&gt;
Uno de los Siete Grandes Problemas del Milenio son las ecuaciones de Navier-Stokes, que tratan de describir el movimiento de un fluido en la atmósfera, las corrientes oceánicas, y sobre cualquier objeto, tales como las aeronaves. De esta forma, se intenta encontrar una relación general entre dichos movimientos y en todos donde estén involucrados fluidos newtonianos, aplicando las leyes elementales de la Mecánica y Termodinámica física. Hasta ahora solo se ha podido demostrar para casos muy particulares. En esta sección vamos a tratar una de las ecuaciones de manera simplificada, donde podamos tomar  los parámetros de campo u y presión ,quedando:&lt;br /&gt;
[[Archivo:Tex2Img 1480881335.jpg|200px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
Vamos a considerar una viscosidad nula, por lo que lo idealizamos como fluido perfecto. Además, sabemos que es incompresible por tener divergencia nula, lo que hace que tomemos la densidad d=cte. Así, queda:&lt;br /&gt;
[[Archivo:Tex2Img 1480881740.jpg|200px|sinmarco|centro]]&lt;br /&gt;
Además, nos dan la siguiente condición:&lt;br /&gt;
[[Archivo:Tex2Img 1480882019.jpg ‎|200px|sinmarco|centro]]&lt;br /&gt;
Con todo ello, desarrollamos la ecuación y nos queda (''teniendo e cuenta que estamos trabajando en 2D''):&lt;br /&gt;
[[Archivo:Tex2Img_1480884716.jpg‎|300px|marco|centro]]&lt;br /&gt;
&lt;br /&gt;
Ahora bien, vamos a comprobar ahora que dicha ecuación guarda relación con la ecuación de Bernouilli, ya que para elaborarlas se han tenido en consideración leyes físicas semejantes, y se ha operado con el campo de presiones y de velocidades del fluido, el cual es incompresible y perfecto (sin viscosidad). Para ello, debemos aplicar el gradiente a la misma, y desarrollar en cartesianas partiendo de ahí:&lt;br /&gt;
[[Archivo:Tex2Img 1480883663.jpg|900px|sinmarco|centro]]&lt;br /&gt;
[[Archivo:Tex2Img_1480884822.jpg |900px|sinmarco|centro]]&lt;br /&gt;
[[Archivo:Tex2Img_1480884716.jpg ‎|800px|marco|centro]]&lt;br /&gt;
&lt;br /&gt;
Como podemos comprobar, las soluciones de Bernouilli y Navier-Stokes coinciden, haciendo evidente su conexión tanto matemática como física, aunque solo cuando la viscosidad del fluido es nula.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Teorema de Kutta-Joukowski. Paradoja D'Alembert==&lt;br /&gt;
El Teorema Kutta-Joukowski es un teorema fundamental de la aerodinámica. Es el nombre del alemán Martin Wilhelm Kutta y el ruso Nikolái Zhukovski (o Joukowski) que empezaron a desarrollar sus ideas clave a principios del siglo XX. El teorema relaciona la fuerza de sustentación generada por un cilindro recto con la velocidad del fluido por el cilindro, la densidad del fluido, y la circulación. La circulación es la integral de línea de la velocidad del fluido, en una curva cerrada que contiene al cilindro. Puede ser entendido como la cantidad total &amp;quot;hilado&amp;quot; del fluido alrededor del cilindro. En las descripciones del teorema Kutta-Joukowski el cilindro recto por lo general es limitado a un cilindro circular o un perfil alar.&lt;br /&gt;
El teorema se refiere al flujo bidimensional alrededor de un cilindro (o un cilindro de envergadura de ala infinito) y determina la sustentación generada por unidad de envergadura. &lt;br /&gt;
En resumen podemos decir que este teorema trata de que la fuerza que ejerce el fluido sobre el obstáculo es proporcional a la circulación.&lt;br /&gt;
Por otro lado la Paradoja de D´Alembert es una contradicción a la que llegó tras estudiar matemáticamente el fenómeno de la resistencia producida sobre un cuerpo cuando una corriente de fluido (líquido o gas) circula sobre él.&lt;br /&gt;
D'Alembert aplicó la teoría de flujo potencial para modelar el fenómeno, y concluyó que la fuerza resultante sobre el cuerpo sobre el cual fluye el aire es cero, lo cual se contradice con la observación.&lt;br /&gt;
&lt;br /&gt;
En nuestro problema empezaremos parametrizando el obstáculo:&lt;br /&gt;
[[Archivo:1.png|miniaturadeimagen|izquierda]]&lt;br /&gt;
Calculamos la circulación en el intervalo (a,b)=(0,2π):&lt;br /&gt;
[[Archivo:10yo.png|miniaturadeimagen|izquierda]]&lt;br /&gt;
Obtenemos el resultado de que la circulación es nula. Esto va en contra de la intuición ya que se supone que el fluido debería ejercer una fuerza sobre el obstáculo, pero aplicando el Teorema de Kutta-Joukowski, que como hemos dicho antes dice que la fuerza es proporcional a la circulación, llegamos a la conclusión de que la fuerza debería ser nula también. Encontrándonos con la conocida como Paradoja de Agregar a diccionario.&lt;br /&gt;
&lt;br /&gt;
==Curvas de nivel de la presión==&lt;br /&gt;
Como anteriormente hemos observado los maximos valores para la presión los encontramos en la zona superior e inferior del óbstaculo correspondiendose con las zonas de mayor velocidad. Mientras que el los laterales las líneas son de un color azul que equivale a valores más bajos de la presión, justo donde las corrientes se alejan del obstáculo.&lt;br /&gt;
1 %Reticula&lt;br /&gt;
2 ro=1:0.1:5; &lt;br /&gt;
3 teta=0:0.1:2*pi; &lt;br /&gt;
[U,V]=meshgrid(ro,teta);&lt;br /&gt;
5%Cambio de coordenadas  &lt;br /&gt;
6 X=U.*cos(V);&lt;br /&gt;
7Y=U.*sin(V); &lt;br /&gt;
8 %Formula de la presión&lt;br /&gt;
9 p=10-((sin(V).^2)).*((1-(1./(U.^2))))-((((cos(V)).^2)).*(((1./U)+(1./(U.^3))).^2)).*(U.^2);&lt;br /&gt;
10 %Dibujo de las curvas de nivel&lt;br /&gt;
11 contour(X,Y,p,50,'linewidth',1.5)&lt;br /&gt;
12 axis([-5,5-5,5])&lt;br /&gt;
13 axis equal&lt;br /&gt;
[[Archivo:Captura de pantalla 2016-12-05 23.36.04.png|miniaturadeimagen|centro]]&lt;br /&gt;
&lt;br /&gt;
==Presión media del fluido==&lt;br /&gt;
Vamos a calcular la presión media del fluido. Para ello se hará un aaproximacion de la integral de la presion y lo dividiremos entre el área de la región que ocupa el fluido. En este caso es el área de una corona circular de radios 1 y 5.&lt;br /&gt;
(Agregar imagen 4)&lt;br /&gt;
Realizamos la aproximación de la presión mediante Matlab:&lt;br /&gt;
1 %Reticula&lt;br /&gt;
2 h=0.01;&lt;br /&gt;
3 ro=1:h:5;&lt;br /&gt;
4 teta=0:h:2*pi;&lt;br /&gt;
5 [U,V]=meshgrid(ro,teta);&lt;br /&gt;
6 %Presión del fluido&lt;br /&gt;
7 p=10-((sin(V).^2)).*((1-(1./(U.^2))))-((((cos(V)).^2)).*(((1./U)+(1./(U.^3))).^2)).*(U.^2);&lt;br /&gt;
8 %Integral de la presión&lt;br /&gt;
9 pres=U.*p;&lt;br /&gt;
10 %Integral&lt;br /&gt;
11 volumen=h^2*pres;&lt;br /&gt;
12 w=sum(sum(volumen));&lt;br /&gt;
13 %Área de la corona circular&lt;br /&gt;
14 area=(pi*5^2)-(pi*1^2);&lt;br /&gt;
15 %Presión media &lt;br /&gt;
16 presmedia=w/área&lt;br /&gt;
Realizando estos cálculos obtenemos un resultado de 8.9444 que si contrastamos con una de las gráficas de la presión podemos ver que concuerda, ya que en la gráfica a simple vista se observa como los valores medios rondan este valor.&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Funcionpotencial5.jpg&amp;diff=37875</id>
		<title>Archivo:Funcionpotencial5.jpg</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Funcionpotencial5.jpg&amp;diff=37875"/>
				<updated>2016-12-05T22:42:52Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Visualizaci%C3%B3n_de_campos_escalares_y_vectoriales_en_fluidos_(Grupo_12A)&amp;diff=37868</id>
		<title>Visualización de campos escalares y vectoriales en fluidos (Grupo 12A)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Visualizaci%C3%B3n_de_campos_escalares_y_vectoriales_en_fluidos_(Grupo_12A)&amp;diff=37868"/>
				<updated>2016-12-05T22:39:00Z</updated>
		
		<summary type="html">&lt;p&gt;PabloEscu: /* Velocidades paralelas a la superficie */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En el artículo desarrollado a continuación vamos a estudiar el flujo de un fluido incompresible alrededor de un obstáculo con forma circular. Vamos a trabajar con coordenadas cilíndricas (polares ya que se reduce al plano) ya que con la forma del obstáculo, los cálculos nos resultarán más sencillos. Las gráficas que mostremos aquí han sido obtenidas con el programa [[MATLAB]] / [[OCTAVE]].&amp;lt;br /&amp;gt;&lt;br /&gt;
{{ TrabajoED | Visualización de campos escalares y vectoriales en fluidos. Grupo 12A | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC16/17|2016-17]] | Jorge Barrena Blázquez, Rommel Beltrán Carrero, Pablo Domingo Escudero Bravo, Carlos Maroto Escribano}}&lt;br /&gt;
[[Categoría:Teoría de Campos]]&lt;br /&gt;
[[Categoría:TC16/17]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introducción==&lt;br /&gt;
Antes de comenzar, cabe explicar el concepto de fluido incompresible. Un fluido incompresible es aquel cuya masa y volumen no variarán, permaneciendo constantes en el tiempo; y se opone a las compresiones ofrecidas bajo cualquier condición o circunstancia. Su significado matemático, por tanto, es que dicho fluido tendrá una densidad constante, facilitando los cálculos necesarios por homogeneidad de sus propiedades en cualquier posición.&lt;br /&gt;
&lt;br /&gt;
==Región ocupada por un fluido==&lt;br /&gt;
&lt;br /&gt;
De forma previa a la realización de cálculo alguno respecto al comportamiento del fluido habrá que delimitar la región del estudio. Se nos da una corona circular de radios 1 y 5, por lo que representamos su mallado en el intervalo [-5,5] x [-5,5]:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Obstaculomatlab.png|500x500px|miniaturadeimagen|izquierda]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Obstaculo.jpg|1000x1000px|miniaturadeimagen|izquierda]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Función potencial y su campo de velocidades==&lt;br /&gt;
La velocidad de las partículas del fluido viene dada por el gradiente de :&lt;br /&gt;
[[Archivo:Formula1.png|sinmarco|izquierda]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Velocidad.png|400x200px|sinmarco|izquierda]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La representación gráfica de la función potencial y su gradiente (campo de velocidades) es la siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Funcionpotencialmatlab.png|700x900px|miniaturadeimagen|izquierda]] [[Archivo:Campodevelocidadesmatlab.png|673×434px|marco|derecha]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Campo y funcion potencial lineas de nivel2.jpg|600x550px|miniaturadeimagen|derecha]]&lt;br /&gt;
[[Archivo:Funcion potencial3.jpg|700x400px|miniaturadeimagen|izquierda]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ampliando la imagen del campo de velocidades puede apreciarse que es ortogonal a la función potencial:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:ZOOM.jpg|1000x1000px|sinmarco|izquierda]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Velocidades paralelas a la superficie====&lt;br /&gt;
Vamos a experimentar con las direcciones de la velocidad al entrar en contacto con el obstáculo. Probando a hacer el producto escalar entre la velocidad del fluido y el vector normal del osbtáculo obtenemos:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:U.n2.png|200x200]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Con lo que puede deducirse que la velocidad del fluido siempre será perpendicular al vector normal de la superficie, es decir, que las partículas del fluido únicamente rodearán el espacio, no lo pasarán por encima, pues las componentes verticales de la velocidad se anulan.&lt;br /&gt;
&lt;br /&gt;
====Campo de velocidades y función potencial lejos del obstáculo====&lt;br /&gt;
Vamos a ver qué sucede cuando nos alejamos mucho de nuestro obstáculo y entonces  \(\rho\) es  muy grande. Para ello vamos a hacer el límite de cuando \(\rho\) tiende a infinito de nuestra función potencial  \(\varphi= \big( \rho + \frac{1}{ \rho } \big) sen \big( \theta \big)\)  veremos como  \(\frac{1}{ \rho }\) será igual a cero.&lt;br /&gt;
&lt;br /&gt;
\(\lim_{ \rho  \rightarrow  \infty }\big( \rho + \frac{1}{ \rho } \big) sen \big( \theta \big)=\rho sen \big( \theta \big)\)&lt;br /&gt;
&lt;br /&gt;
Y nuestro gradiente&lt;br /&gt;
&lt;br /&gt;
\(\nabla\varphi = \frac{\partial\varphi}{\partial  \rho }  g_{p}+ \frac{1}{ \rho^{2} } \frac{\partial \varphi }{\partial  \theta }  g_{ \theta } + \frac{\partial \varphi }{\partial z}  g_{z} =sen \big( \theta \big)  g_{ \rho } + \frac{1}{ \rho } cos  \big( \theta \big)  g_{ \theta }=sen \big( \theta \big)  g_{ \theta } \)&lt;br /&gt;
&lt;br /&gt;
Y por ello estos serán los puntos cuando \rho es muy grande&lt;br /&gt;
&lt;br /&gt;
==Rotacional y divergencia del campo==&lt;br /&gt;
En este punto estudiaremos analiticamente que \( \overline{u}\) su rotacional como su divergencia es nula y trataremos el tema de la incompresibilidad del fluido.&lt;br /&gt;
&lt;br /&gt;
Nuestro rotacional en coordenadas polares&lt;br /&gt;
&lt;br /&gt;
\(\nabla \times \overline{u} = \frac{1}{ \rho }  \begin{bmatrix} g_{ \rho }  &amp;amp; g_{ \theta }&amp;amp;  g_{ z }\\ \frac{\partial}{\partial\rho } &amp;amp;  \frac{\partial}{\partial \theta }  &amp;amp; \frac{\partial}{\partial z} \\ u g_{ \rho } &amp;amp; ug_{  \theta } &amp;amp; ug_{ z} \end{bmatrix}= \frac{1}{ \rho }  \begin{bmatrix} g_{ \rho }  &amp;amp; g_{ \theta }&amp;amp;  g_{ z }\\ \frac{\partial}{\partial\rho } &amp;amp;  \frac{\partial}{\partial \theta }  &amp;amp; \frac{\partial}{\partial z} \\ sen \big( \theta \big)  \big(1- \frac{1}{   \rho ^{3} } \big)  &amp;amp; cos \big( \theta \big) \big( \rho + \frac{1}{  \rho ^{2} } \big)   &amp;amp; 0 \end{bmatrix}= \frac{1}{ \rho }  \big\{ \big(cos \big( \theta \big)- \frac{1}{  \rho ^{2} } cos \big( \theta \big)\big) - \big(cos \big( \theta \big)-cos \big( \theta \big) \frac{1}{  \rho ^{2} }   \big)   \big\} g_{z} =0\)&lt;br /&gt;
&lt;br /&gt;
Nuestra divergencia en coordenadas polares&lt;br /&gt;
&lt;br /&gt;
\(\nabla  . \overline{u} = \frac{1}{ \sqrt{g} }  \frac{\partial}{\partial  x_{i} }  \big( \sqrt{g} u_{i}  \big) = \frac{1}{ \rho }  \big\{ \frac{\partial}{\partial  \rho } \big(\rho sen \big( \theta \big) -sen \big( \theta \big) \frac{1}{\rho} \big) +\frac{\partial}{\partial  \theta }   \big(cos \big( \theta \big)+cos \big( \theta \big) \frac{1}{  \rho ^{2} }  \big)   \big\}= \)&lt;br /&gt;
&lt;br /&gt;
\(\frac{1}{ \rho }  \big\{ \frac{\partial}{\partial  \rho } \big(\rho sen \big( \theta \big) -sen \big( \theta \big) \frac{1}{\rho} \big) +\frac{\partial}{\partial  \theta }   \big(cos \big( \theta \big)+cos \big( \theta \big) \frac{1}{  \rho ^{2} }  \big)   \big\}=\)&lt;br /&gt;
&lt;br /&gt;
\(\frac{1}{ \rho } \big\{sen \big( \theta \big)+sen \big( \theta \big)\frac{1}{   \rho ^{2}  }-sen \big( \theta \big) -sen\big( \theta \big)  \frac{1}{  \rho ^{2} }  \big\} =0\)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vemos que ambos quedan reducidos a 0&lt;br /&gt;
&lt;br /&gt;
Demostrando que la divergencia es nula tratamos la condición de que el agua es un líquido incompresible; Por ello suponemos que el agua es incompresible pero no lo podemos hacer del mismo modo con el aire. Por ello local mente el fluido ni se expande ni se contrae.&lt;br /&gt;
&lt;br /&gt;
==Líneas de corriente del campo==&lt;br /&gt;
En este punto vamos a dibujar las líneas de corriente que nos definirán la trayectoria del plano y son  tangentes a \( \overline{u}\) a nuestro campo que es el fluido, el agua.&lt;br /&gt;
Para ello  necesitaremos calcular el campo ortogonal y su potencial.&lt;br /&gt;
=====Calculo analítico=====&lt;br /&gt;
Este campo lo obtendremos del resultado de  multiplicar el vector \( \overline{k}\) con el campo \( \overline{u}\). Que al estar en coordenadas polares nuestro \( \overline{k}\) será  \(\overline{ g_{z} }\).&lt;br /&gt;
&lt;br /&gt;
\(\overline{v} = \overline{k} \times  \overline{u} =\overline{k} \times \overline{ g_{z} }=\begin{bmatrix} g_{ \rho }  &amp;amp; g_{ \theta }&amp;amp;  g_{ z }\\ 0 &amp;amp;  0  &amp;amp; 1 \\ sen \theta  \big(1- \frac{1}{  \rho ^{2} } \big)  &amp;amp;   \rho ^{2}cos \theta  \big( \frac{1}{ \rho } + \frac{1}{  \rho ^{3} } \big)   &amp;amp; 0 \end{bmatrix}=\frac{1}{ \rho }\big\{-\rho^{2} cos \theta  \big( \frac{1}{ \rho } + \frac{1}{  \rho ^{3} } \big) \overline{g _{ \rho } } +sen \theta\big( 1-\frac{1}{  \rho ^{2} } \big) \overline{ g_{ \theta } }     \big\} =-cos \theta \big( 1-\frac{1}{  \rho ^{2} } \big)  \overline{ g_{  \rho  } }+ sen \theta \big( \frac{1}{ \rho } + \frac{1}{  \rho ^{3} } \big)   \overline{ g_{   \theta   } }\)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Comprobación por grafica de matlab=====&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear all; clf;&lt;br /&gt;
%datos&lt;br /&gt;
p=linspace(1,5,25);&lt;br /&gt;
theta=linspace(0,2*pi,25);&lt;br /&gt;
%creamos la malla&lt;br /&gt;
[U,V]=meshgrid(p,theta);&lt;br /&gt;
%Le damos la forma que queremos&lt;br /&gt;
X=U.*cos(V);&lt;br /&gt;
Y=U.*sin(V);&lt;br /&gt;
%doy la función&lt;br /&gt;
phi=inline('(p+(1./p)).*sin(theta)','p','theta');&lt;br /&gt;
%consehuimos las alturas&lt;br /&gt;
Z=phi(U,V);&lt;br /&gt;
%el grafico&lt;br /&gt;
%fibujamoslas lineas de nivel&lt;br /&gt;
% contour(X,Y,Z,75);&lt;br /&gt;
% axis equal&lt;br /&gt;
 &lt;br /&gt;
hold on&lt;br /&gt;
%las derivadas parciales&lt;br /&gt;
ux=(1-1./(U.*U)).*sin(V).*cos(V)-U.*sin(V).*cos(V).*((1./U)+(1./(U.*U.*U)));&lt;br /&gt;
uy=(1-1./(U.*U)).*sin(V).*sin(V)+U.*cos(V).*cos(V).*((1./U)+(1./(U.*U.*U)));&lt;br /&gt;
%dibujamos el gradiente&lt;br /&gt;
quiver(X,Y,ux,uy);&lt;br /&gt;
%el ortogonal&lt;br /&gt;
vx=-(1+1./(U.*U)).*cos(V).*cos(V)-U.*sin(V).*sin(V).*((1./U)-(1./(U.*U.*U)));&lt;br /&gt;
vy=-(1+1./(U.*U)).*cos(V).*sin(V)+U.*cos(V).*sin(V).*((1./U)-(1./(U.*U.*U)));&lt;br /&gt;
%dibujar el otrtogonal&lt;br /&gt;
quiver(X,Y,vx,vy);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Campo ortogonal al campo de velocidades.jpg|marco|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====demuestro que este campo es irrotacional =====&lt;br /&gt;
Al ser de divergencia nula el rotacional también lo será&lt;br /&gt;
&lt;br /&gt;
\(\nabla \times \overline{u} = \frac{1}{ \rho } \begin{bmatrix} g_{ \rho } &amp;amp; g_{ \theta }&amp;amp;  g_{ z }\\ \frac{\partial}{\partial\rho } &amp;amp;  \frac{\partial}{\partial \theta }  &amp;amp; \frac{\partial}{\partial z} \\ v g_{ \rho } &amp;amp; vg_{  \theta } &amp;amp; vg_{ z} \end{bmatrix}= \frac{1}{  \rho  } \big\{sen \theta  \big(1- \frac{1}{  \rho ^{2} } \big)- \big(sen \theta  \big(1- \frac{1}{  \rho ^{2} } \big) \big)  \big\} =0 \)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Así queda demostrado que s irrotacional&lt;br /&gt;
&lt;br /&gt;
=====Potencial escalar de corriente =====&lt;br /&gt;
Interpretaremos las líneas de corriente como la función potencial de este campo&lt;br /&gt;
\(\overline{v} = \nabla  \psi\)&lt;br /&gt;
&lt;br /&gt;
Calcularemos el potencial escalar:&lt;br /&gt;
&lt;br /&gt;
\(\frac{\partial \psi }{\partial  \rho } =-cos \theta \big(1- \frac{1}{  \rho ^{2}} \big) cos \rightarrow   \psi =- \int  cos \theta d \rho  + \int  \frac{cos \theta }{  \rho ^{2} }d \rho   \rightarrow  \psi = - \rho cos \theta - \frac{1}{ \rho }cos \theta+C \big( \theta \big)\)  &lt;br /&gt;
&lt;br /&gt;
Donde C igualando \(\rightarrow   cos \big( \theta \big)=cte \rightarrow 0\)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Representamos las líneas de corriente con Matlab=====&lt;br /&gt;
el código respectivo&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear all; clf;&lt;br /&gt;
%datos&lt;br /&gt;
p=linspace(1,5,50);&lt;br /&gt;
theta=linspace(0,2*pi,50);&lt;br /&gt;
%creamos la malla&lt;br /&gt;
[U,V]=meshgrid(p,theta);&lt;br /&gt;
%Le damos la forma que queremos&lt;br /&gt;
X=U.*cos(V);&lt;br /&gt;
Y=U.*sin(V);&lt;br /&gt;
%potencial escalar. Lineas de corriente&lt;br /&gt;
chi=(1./U-U).*cos(V)&lt;br /&gt;
 &lt;br /&gt;
%las derivadas parciales&lt;br /&gt;
ux=(1-1./(U.*U)).*sin(V).*cos(V)-U.*sin(V).*cos(V).*((1./U)+(1./(U.*U.*U)));&lt;br /&gt;
uy=(1-1./(U.*U)).*sin(V).*sin(V)+U.*cos(V).*cos(V).*((1./U)+(1./(U.*U.*U)));&lt;br /&gt;
%Dibujo lineas de corriente&lt;br /&gt;
contour(X,Y,chi,50,'LineWidth',1.5)&lt;br /&gt;
 axis([-5,5,-5,5])&lt;br /&gt;
 axis equal&lt;br /&gt;
 view(2)&lt;br /&gt;
 hold on&lt;br /&gt;
 &lt;br /&gt;
%Dibujo campo de velocidades&lt;br /&gt;
 quiver(X,Y,ux,uy)&lt;br /&gt;
axis([-5,5,-5,5])&lt;br /&gt;
 axis equal&lt;br /&gt;
view(2)&lt;br /&gt;
hold on&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Lineas de corriente.jpg|marco|centro]]&lt;br /&gt;
&lt;br /&gt;
En ella se ve como la velocidad es tangente a las líneas de corriente&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Lineas ortogonales corriente son ortogonales alas curvas equipotenciales=====&lt;br /&gt;
Vamos a demostrar gracias a matlab que las Lineas ortogonales corriente son ortogonales alas curvas equipotenciales&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear all; clf;&lt;br /&gt;
%datos&lt;br /&gt;
p=linspace(1,5,50);&lt;br /&gt;
theta=linspace(0,2*pi,50);&lt;br /&gt;
%creamos la malla&lt;br /&gt;
[U,V]=meshgrid(p,theta);&lt;br /&gt;
%Le damos la forma que queremos&lt;br /&gt;
X=U.*cos(V);&lt;br /&gt;
Y=U.*sin(V);&lt;br /&gt;
%potencial escalar. Lineas de corriente&lt;br /&gt;
chi=(1./U-U).*cos(V)&lt;br /&gt;
%curvas equipotenciales&lt;br /&gt;
po=(1./U+U).*sin(V)&lt;br /&gt;
 %Dibujo lineas de corriente&lt;br /&gt;
 contour(X,Y,chi,50,'LineWidth',1.5)&lt;br /&gt;
 axis([-5,5,-5,5])&lt;br /&gt;
 axis equal&lt;br /&gt;
 view(2)&lt;br /&gt;
 hold on&lt;br /&gt;
 &lt;br /&gt;
%Dibujo equipotenciales&lt;br /&gt;
 contour(X,Y,po,50,'LineWidth',1.5)&lt;br /&gt;
 axis([-5,5,-5,5])&lt;br /&gt;
 axis equal&lt;br /&gt;
 view(2)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Ortogonalidad.jpg|marco|centro]]&lt;br /&gt;
&lt;br /&gt;
==Velocidades máxima y mínima en frontera del obstáculo==&lt;br /&gt;
&lt;br /&gt;
Como hemos demostrado anteriormente, el fluido va a rodear al obstáculo S, sin llegar a pasar por encima ni atravesarlo. Ahora bien, sí que va a rodearlo, encontrando así diferentes velocidades alrededor de la frontera que lo conforma. Así pues, como sabemos el campo de velocidades del fluido y las coordenadas de la frontera (Radio=1), procedemos a calcular cómo será el campo en todo el contorno de S:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tex2Img 1480793466.jpg |500px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
Ya tenemos la dirección y valores del campo en todos esos puntos. Ahora bien, para hallar los puntos máximos y mínimos, necesitamos llevar a esta función a sus extremos. Para ello, vemos que, usando el módulo de esta, tenemos::[[Archivo:Tex2Img 1480795219.jpg|100px|sinmarco|centro]]&lt;br /&gt;
 -Adquirirá sus valores máximos cuando:          &lt;br /&gt;
    [[Archivo:Tex2Img 1480795766.jpg|200px|sinmarco|ninguna]]&lt;br /&gt;
    [[Archivo:Tex2Img 1480795810.jpg|200px|sinmarco|ninguna]]&lt;br /&gt;
&lt;br /&gt;
 -Y sus valores mínimos cuando:&lt;br /&gt;
    [[Archivo:Tex2Img 1480796357.jpg|200px|sinmarco|ninguna]]&lt;br /&gt;
&lt;br /&gt;
Por tanto, tenemos que: (en cartesianas)&lt;br /&gt;
  - Las velocidades máximas se darán en los puntos: [1,0] , [-1,0]&lt;br /&gt;
  - Las velocidades mínimas se darán en los puntos: [0,1] , [0,-1]&lt;br /&gt;
&lt;br /&gt;
Los puntos de remanso, que son donde se adquiere velocidad nula, corresponden con los de las velocidades mínimas, como podemos comprobar.&lt;br /&gt;
&lt;br /&gt;
==Presión del fluido: Ecuación de Bernouilli==&lt;br /&gt;
===Ecuación de Bernouilli===&lt;br /&gt;
Sabemos que un fluido se caracteriza, entre otras cosas, por tener carácter compresible o incompresible, determinando así su dinámica. Además de ello, también describirán su comportamiento agentes externos como la temperatura o la presión.&lt;br /&gt;
En este caso, la ecuación de Bernouilli nos permite relacionar la velocidad de un fluido en función de la presión a la que esté sometido, considerando también una densidad:&lt;br /&gt;
[[Archivo:Tex2Img 1480874948.jpg ‎|200px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
Consideramos el fluido incompresible (d=2), el campo de velocidades u y tomando la cte=10. Sustituimos y obtenemos el siguiente campo de presiones:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tex2Img 1480875432.jpg|500px|sinmarco|centro]]&lt;br /&gt;
[[Archivo:Tex2Img 1480875690.jpg|300px|marco|centro]]&lt;br /&gt;
&lt;br /&gt;
Así pues, introducimos la ecuación de presiones resultante en Matlab y dibujamos:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
% vemos variables&lt;br /&gt;
rho=1:0.1:6;&lt;br /&gt;
th=0:0.1:2*pi+0.1;&lt;br /&gt;
%hacemos retícula&lt;br /&gt;
[U,V]=meshgrid(rho,th);&lt;br /&gt;
%describo coordenadas&lt;br /&gt;
X=U.*cos(V);&lt;br /&gt;
Y=U.*sin(V);&lt;br /&gt;
%aplicamos funcion presion&lt;br /&gt;
f=10-((sin(V).^2)).*((1-(1./(U.^2))))-((((cos(V)).^2)).*(((1./U)+(1./(U.^3))).^2)).*(U.^2);&lt;br /&gt;
%dibujo&lt;br /&gt;
surf(X,Y,f)&lt;br /&gt;
axis([-5,5,-5,5])&lt;br /&gt;
axis equal&lt;br /&gt;
view(2)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Campodepresiones.png|600px|thumb|marco|centro]]&lt;br /&gt;
Así pues, viendo el gráfico nos damos cuenta de que las mayores presiones se darán cuando el fluido choque con el obstáculo verticalmente. Y las menores presiones se encontrarán, debido al desplazamiento producido por el choque, en los laterales horizontales del obstáculo. En tanto, lejos del obstáculo se mantendrán más o menos presiones constantes.&lt;br /&gt;
&lt;br /&gt;
===Campo de presiones y velocidad del fluido===&lt;br /&gt;
&lt;br /&gt;
Una vez hallado el campo de presiones de nuestro fluido, procedemos a encontrar la relación que, según Bernouilli, lo vincula al campo de velocidades el mismo. De este modo, comparamos los gráficos y vemos:&lt;br /&gt;
[[Archivo:Campodepresiones.png|400px|thumb|marco|izquierda]] [[Archivo:VelocidadesA12.png|400px|thumb|marco|derecha]]&lt;br /&gt;
&lt;br /&gt;
El fluido, al desplazarse de sur a norte, cuando se encuentra con el fluido choca, viendo su velocidad reducida al mínimo, coincidiendo con la zona donde la presión es máxima. Esto hace que las partículas se desplacen a ambos lados del obstáculo, aumentando de nuevo su velocidad y reduciendo de nuevo la presión a mínimos, ya que no están sometidos a otro choque. Aún así, al llegar al extremo superior del obstáculo, de nuevo las partículas del fluido se chocan y se frenan entre ellas, volviendo a aumentar bastante la presión en esa zona. Por tanto, encontramos una clara relación entre velocidades y presiones.&lt;br /&gt;
&lt;br /&gt;
==Incompresibilidad del fluido. Ecuación de Navier-Stokes==&lt;br /&gt;
Uno de los Siete Grandes Problemas del Milenio son las ecuaciones de Navier-Stokes, que tratan de describir el movimiento de un fluido en la atmósfera, las corrientes oceánicas, y sobre cualquier objeto, tales como las aeronaves. De esta forma, se intenta encontrar una relación general entre dichos movimientos y en todos donde estén involucrados fluidos newtonianos, aplicando las leyes elementales de la Mecánica y Termodinámica física. Hasta ahora solo se ha podido demostrar para casos muy particulares. En esta sección vamos a tratar una de las ecuaciones de manera simplificada, donde podamos tomar  los parámetros de campo u y presión ,quedando:&lt;br /&gt;
[[Archivo:Tex2Img 1480881335.jpg|200px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
Vamos a considerar una viscosidad nula, por lo que lo idealizamos como fluido perfecto. Además, sabemos que es incompresible por tener divergencia nula, lo que hace que tomemos la densidad d=cte. Así, queda:&lt;br /&gt;
[[Archivo:Tex2Img 1480881740.jpg|200px|sinmarco|centro]]&lt;br /&gt;
Además, nos dan la siguiente condición:&lt;br /&gt;
[[Archivo:Tex2Img 1480882019.jpg ‎|200px|sinmarco|centro]]&lt;br /&gt;
Con todo ello, desarrollamos la ecuación y nos queda (''teniendo e cuenta que estamos trabajando en 2D''):&lt;br /&gt;
[[Archivo:Tex2Img_1480884716.jpg‎|300px|marco|centro]]&lt;br /&gt;
&lt;br /&gt;
Ahora bien, vamos a comprobar ahora que dicha ecuación guarda relación con la ecuación de Bernouilli, ya que para elaborarlas se han tenido en consideración leyes físicas semejantes, y se ha operado con el campo de presiones y de velocidades del fluido, el cual es incompresible y perfecto (sin viscosidad). Para ello, debemos aplicar el gradiente a la misma, y desarrollar en cartesianas partiendo de ahí:&lt;br /&gt;
[[Archivo:Tex2Img 1480883663.jpg|900px|sinmarco|centro]]&lt;br /&gt;
[[Archivo:Tex2Img_1480884822.jpg |900px|sinmarco|centro]]&lt;br /&gt;
[[Archivo:Tex2Img_1480884716.jpg ‎|800px|marco|centro]]&lt;br /&gt;
&lt;br /&gt;
Como podemos comprobar, las soluciones de Bernouilli y Navier-Stokes coinciden, haciendo evidente su conexión tanto matemática como física, aunque solo cuando la viscosidad del fluido es nula.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Teorema de Kutta-Joukowski. Paradoja D'Alembert==&lt;br /&gt;
El Teorema Kutta-Joukowski es un teorema fundamental de la aerodinámica. Es el nombre del alemán Martin Wilhelm Kutta y el ruso Nikolái Zhukovski (o Joukowski) que empezaron a desarrollar sus ideas clave a principios del siglo XX. El teorema relaciona la fuerza de sustentación generada por un cilindro recto con la velocidad del fluido por el cilindro, la densidad del fluido, y la circulación. La circulación es la integral de línea de la velocidad del fluido, en una curva cerrada que contiene al cilindro. Puede ser entendido como la cantidad total &amp;quot;hilado&amp;quot; del fluido alrededor del cilindro. En las descripciones del teorema Kutta-Joukowski el cilindro recto por lo general es limitado a un cilindro circular o un perfil alar.&lt;br /&gt;
El teorema se refiere al flujo bidimensional alrededor de un cilindro (o un cilindro de envergadura de ala infinito) y determina la sustentación generada por unidad de envergadura. &lt;br /&gt;
En resumen podemos decir que este teorema trata de que la fuerza que ejerce el fluido sobre el obstáculo es proporcional a la circulación.&lt;br /&gt;
Por otro lado la Paradoja de D´Alembert es una contradicción a la que llegó tras estudiar matemáticamente el fenómeno de la resistencia producida sobre un cuerpo cuando una corriente de fluido (líquido o gas) circula sobre él.&lt;br /&gt;
D'Alembert aplicó la teoría de flujo potencial para modelar el fenómeno, y concluyó que la fuerza resultante sobre el cuerpo sobre el cual fluye el aire es cero, lo cual se contradice con la observación.&lt;br /&gt;
&lt;br /&gt;
En nuestro problema empezaremos parametrizando el obstáculo:&lt;br /&gt;
[[Archivo:1.png|miniaturadeimagen|izquierda]]&lt;br /&gt;
Calculamos la circulación en el intervalo (a,b)=(0,2π):&lt;br /&gt;
[[Archivo:10yo.png|miniaturadeimagen|izquierda]]&lt;br /&gt;
Obtenemos el resultado de que la circulación es nula. Esto va en contra de la intuición ya que se supone que el fluido debería ejercer una fuerza sobre el obstáculo, pero aplicando el Teorema de Kutta-Joukowski, que como hemos dicho antes dice que la fuerza es proporcional a la circulación, llegamos a la conclusión de que la fuerza debería ser nula también. Encontrándonos con la conocida como Paradoja de Agregar a diccionario.&lt;br /&gt;
&lt;br /&gt;
==Curvas de nivel de la presión==&lt;br /&gt;
Como anteriormente hemos observado los maximos valores para la presión los encontramos en la zona superior e inferior del óbstaculo correspondiendose con las zonas de mayor velocidad. Mientras que el los laterales las líneas son de un color azul que equivale a valores más bajos de la presión, justo donde las corrientes se alejan del obstáculo.&lt;br /&gt;
1 %Reticula&lt;br /&gt;
2 ro=1:0.1:5; &lt;br /&gt;
3 teta=0:0.1:2*pi; &lt;br /&gt;
[U,V]=meshgrid(ro,teta);&lt;br /&gt;
5%Cambio de coordenadas  &lt;br /&gt;
6 X=U.*cos(V);&lt;br /&gt;
7Y=U.*sin(V); &lt;br /&gt;
8 %Formula de la presión&lt;br /&gt;
9 p=10-((sin(V).^2)).*((1-(1./(U.^2))))-((((cos(V)).^2)).*(((1./U)+(1./(U.^3))).^2)).*(U.^2);&lt;br /&gt;
10 %Dibujo de las curvas de nivel&lt;br /&gt;
11 contour(X,Y,p,50,'linewidth',1.5)&lt;br /&gt;
12 axis([-5,5-5,5])&lt;br /&gt;
13 axis equal&lt;br /&gt;
&lt;br /&gt;
==Presión media del fluido==&lt;br /&gt;
Vamos a calcular la presión media del fluido. Para ello se hará un aaproximacion de la integral de la presion y lo dividiremos entre el área de la región que ocupa el fluido. En este caso es el área de una corona circular de radios 1 y 5.&lt;br /&gt;
(Agregar imagen 4)&lt;br /&gt;
Realizamos la aproximación de la presión mediante Matlab:&lt;br /&gt;
1 %Reticula&lt;br /&gt;
2 h=0.01;&lt;br /&gt;
3 ro=1:h:5;&lt;br /&gt;
4 teta=0:h:2*pi;&lt;br /&gt;
5 [U,V]=meshgrid(ro,teta);&lt;br /&gt;
6 %Presión del fluido&lt;br /&gt;
7 p=10-((sin(V).^2)).*((1-(1./(U.^2))))-((((cos(V)).^2)).*(((1./U)+(1./(U.^3))).^2)).*(U.^2);&lt;br /&gt;
8 %Integral de la presión&lt;br /&gt;
9 pres=U.*p;&lt;br /&gt;
10 %Integral&lt;br /&gt;
11 volumen=h^2*pres;&lt;br /&gt;
12 w=sum(sum(volumen));&lt;br /&gt;
13 %Área de la corona circular&lt;br /&gt;
14 area=(pi*5^2)-(pi*1^2);&lt;br /&gt;
15 %Presión media &lt;br /&gt;
16 presmedia=w/área&lt;br /&gt;
Realizando estos cálculos obtenemos un resultado de 8.9444 que si contrastamos con una de las gráficas de la presión podemos ver que concuerda, ya que en la gráfica a simple vista se observa como los valores medios rondan este valor.&lt;/div&gt;</summary>
		<author><name>PabloEscu</name></author>	</entry>

	</feed>