Diferencia entre revisiones de «Difusión de una sustancia contaminante (Grupo 10)»
(→Ley de Flick) |
(→Resolución por el método de Fourier) |
||
| (No se muestran 178 ediciones intermedias de 2 usuarios) | |||
| Línea 1: | Línea 1: | ||
| + | {{ TrabajoED | Difusión de una sustancia contaminante. Grupo 10-B | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED13/14|Curso 2013-14]] | Alejandro Giménez Alves, Miguel Aparicio Martín Romo, Nuria Trapote García, Karlo André Palomino Paredes }} | ||
| + | [[Archivo:nuriat.png|500px|thumb|right|Tubo con sustancia contaminante]] | ||
| + | La difusión implica un movimiento espontáneo y desordenado de moléculas individuales y, especialmente, nos interesa la difusión de moléculas de una sustancia disuelta en otra. | ||
| − | + | La difusión de una sustancia puede considerarse análoga al flujo de calor, y la ley de Fick establece que el ritmo de difusión por unidad de superficie, en dirección perpendicular a ésta, es proporcional al gradiente de la concentración de esa sustancia en esa dirección. La concentración es la masa de la sustancia por unidad de volumen, y el gradiente de concentración es la variación de concentración por unidad de distancia. | |
| − | La difusión de una sustancia puede considerarse análoga al flujo de calor, y la ley de Fick establece que el ritmo de difusión por unidad de superficie, en dirección perpendicular a ésta, es proporcional al gradiente de la concentración de esa sustancia en esa dirección. La concentración es la masa de la sustancia por unidad de volumen, y el gradiente de concentración es la variación de concentración por unidad de distancia. | + | |
Para determinar como se distribuye la concentración de una sustancia contaminante tomaremos como ejemplo un tubo largo compuesto por dos sustancias de las cuáles una de ellas es contaminante. | Para determinar como se distribuye la concentración de una sustancia contaminante tomaremos como ejemplo un tubo largo compuesto por dos sustancias de las cuáles una de ellas es contaminante. | ||
| + | |||
= Simplificación del problema = | = Simplificación del problema = | ||
| − | Para que este problema resulte más sencillo aplicaremos una serie de condiciones, | + | Para que este problema resulte más sencillo aplicaremos una serie de condiciones, facilitando el cálculo del mismo. |
| − | En primer lugar denotaremos su concentración <math> u </math>, concentración de contaminante en cada posición del tubo y constante en cada sección, medida en <math> \frac{mol}{m^ | + | En primer lugar denotaremos su concentración <math> u </math>, concentración de contaminante en cada posición del tubo y constante en cada sección, medida en <math> \frac{mol}{m^2s} </math>. |
| − | + | ||
| − | + | ||
| − | + | Supondremos que el tubo mide L=5 m, ocupando el intervalo <math> x \in (0,L) </math>, y que la concentración es la misma en cualquier punto de la sección transversal del tubo. Por tanto, la concentración dependerá unicamente de dos variables <math> u = u(x,t) </math>. En los extremos se ha colocado un aislante que hace que el flujo de contaminante al exterior del tubo sea nulo. Además, consideraremos la simplificación de que se trata de un tubo aislado por sus laterales, pero abierto por las bases del cilindro. | |
| − | + | ||
| − | <math> | + | |
| − | + | ||
| − | |||
| − | + | == Ley de conservación de masa == | |
| − | La ley de conservación de masas exige que no haya una generación espontánea de materia. Es decir, | + | Tras una serie de experimentos realizados por Lavoisier, se pusieron de manifiesto que si tenemos en cuenta todas las sustancias que forman parte en una reacción química y todos los productos formados, nunca varía la masa. Esta ley exige que no haya una generación espontánea de materia. Es decir, en la región del espacio estudiada, no existe entrada o salida por un punto cualquiera (frontera o interior), la masa en esta región se mantiene constante. Esta es la ley de la conservación de la masa, que podemos enunciarla, pues, de la siguiente manera: <br /> |
| + | ''"En toda reacción química la masa se conserva, esto es, la masa total de los reactivos es igual a la masa total de los productos"'' <br /> | ||
| + | La ley de conservación de masas exige que no haya una generación espontánea de materia. Es decir, en la región del espacio estudiada, no existe entrada o salida por un punto cualquiera (frontera o interior), la masa en esta región se mantiene constante.<br /> | ||
Esta suposición, en términos de variación de masa, puede quedar determinada como: | Esta suposición, en términos de variación de masa, puede quedar determinada como: | ||
| + | ''Variación de la masa en el tiempo = flujo de masa a través de la frontera por unidad de tiempo + flujo de masa generada en el interior por unidad de tiempo. '' | ||
| − | + | == Ley de Fick == | |
| − | + | ||
| − | + | ||
| − | + | ||
Se trata de una ley cuantitativa en forma diferencial que describe la difusión de materia o energía en un medio en el que inicialmente existe equilibrio químico o físico. Esta ley se trata de una generalización de los fenómenos descritos por la '''Ley de Fourier''', ya que esta es una consideración concreta del calor. | Se trata de una ley cuantitativa en forma diferencial que describe la difusión de materia o energía en un medio en el que inicialmente existe equilibrio químico o físico. Esta ley se trata de una generalización de los fenómenos descritos por la '''Ley de Fourier''', ya que esta es una consideración concreta del calor. | ||
| Línea 40: | Línea 37: | ||
Donde <math>F</math> es el flujo de la sustancia y <math>D</math> el coeficiente de difusión, que representa la facilidad en que un soluto particular se mueve por un disolvente determinado. | Donde <math>F</math> es el flujo de la sustancia y <math>D</math> el coeficiente de difusión, que representa la facilidad en que un soluto particular se mueve por un disolvente determinado. | ||
| − | == Modelización de la ecuación diferencial | + | La ley de Fick establece que el flujo de difusión del contaminante es proporcional a la variación de concentración: |
| + | |||
| + | <math> F(x,t)=-D\frac{\partial u}{\partial x} </math> | ||
| + | |||
| + | donde D es el coeficiente de difusión (medido en <math> \frac{m^2}{s} </math>), que depende de las propiedades físicas de los compuestos, y que se supone constante D=1. | ||
| + | |||
| + | = Modelización de la ecuación diferencial = | ||
| − | + | Aplicando el principio de conservación de la masa y la ley de Fourier, definimos la variable <math> u(x,t)</math> en unidades de sustancia por área, es decir, concentración por superficie del tubo. | |
Consideramos <math> A </math> como variable superficie, y tomamos un pequeño trozo, definido por <math>\Delta x</math>. Entonces, para obtener la variación de la masa en el tiempo: | Consideramos <math> A </math> como variable superficie, y tomamos un pequeño trozo, definido por <math>\Delta x</math>. Entonces, para obtener la variación de la masa en el tiempo: | ||
| Línea 61: | Línea 64: | ||
<math>F(x,t)A-F(x+\Delta x, t)A</math> | <math>F(x,t)A-F(x+\Delta x, t)A</math> | ||
| − | + | Con lo que queda <math>A u_t(x,t) \Delta x = F(x,t)A-F(x+\Delta x, t)A</math>, y al dividir <math>A \Delta x</math>, nos queda <math>u_t(x,t)= \frac {F(x,t)-F(x+\Delta x, t)}{\Delta x}</math>. <br /> | |
| + | Como <math>\Delta x \rightarrow 0 </math>, <math>u_t(x,t)= -F_x(x,t)</math>, y aplicando ley de Fick, <math>u_t(x,t)=-\frac{\partial }{\partial x}(-D u_x(x,t)) = D u_xx(x,t) </math>.<br /> | ||
| + | Con lo que resulta una ecuación en derivadas parciales que determina la concentración de sustancia: | ||
| + | <math>u_t(x,t)- D u_xx(x,t)= 0 </math> | ||
| − | |||
| − | + | == Planteamiento del problema bien propuesto == | |
| − | + | Suponemos que el flujo será nula al haber una tapa en los extremos del tubo, con lo que el problema bien propuesto quedaría:: | |
| − | + | <math>\begin{cases} | |
| + | u_t(x,t)- D u_{xx}(x,t)= 0 ; x\in (0,5) \\ | ||
| + | u(x,0)=u_0 , x\in (0,5) \\ | ||
| + | u_x(0,t)=0 , u_x(5,t)=0 ; t\geq 0 | ||
| + | \end{cases} | ||
| + | </math> | ||
| − | |||
| − | |||
| − | + | = Resolución numérica = | |
| − | + | Para la resolución de ésta ecuación necesitaremos mínimo tres condiciones, dos de las cuales serán de contorno, y la otra será la condición inicial.Si suponemos <math>u_0(x,0)</math>, entonces: | |
| − | <math>u_t(x,t)- D u_xx(x,t)= 0 </math> | + | <math> u_0(x,0)=\begin{cases} |
| + | 0, si x\leq 3\\ | ||
| + | 3, si x>3 | ||
| + | \end{cases} | ||
| + | </math> | ||
| + | |||
| + | |||
| + | == Resolución por el método de las diferencias finitas == | ||
| + | |||
| + | En el primer caso particular que estudiaremos, trataremos de obtener una resolución numérica del problema anteriormente planteado, dónde tenemos las fronteras aisladas y las concentraciones iniciales conocidas: | ||
| + | |||
| + | <math>\begin{cases} | ||
| + | u_t(x,t)- D u_{xx}(x,t)= 0; x\in (0,5), t\geq 0 \\ | ||
| + | u_0(x,0), x\in (0,5) \\ | ||
| + | u_x(0,t)=0, u_x(5,t)=0, t\geq 0 | ||
| + | \end{cases} | ||
| + | </math> | ||
| + | |||
| + | La resolución por el método de las diferencias finitas se basa en expresar el problema continuo a un sistema discreto de ecuaciones diferenciales de primer orden. Particularizando para nuestro caso con las condiciones dadas, el problema planteado sería: | ||
| + | |||
| + | <math>\begin{cases} | ||
| + | u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)+u_{n+1}(t)}{h^2} \\ | ||
| + | \frac{u_1(t)-u_-1(t)}{2h} \rightarrow u_1(t)=u_-1(t) \\ | ||
| + | \frac{u_{N+1}(t)-u_{N-1}(t)}{2h} \rightarrow u_{N+1}(t)=u_{N-1}\\ | ||
| + | u_n(0)=u^0(x) | ||
| + | \end{cases} | ||
| + | </math> | ||
| + | |||
| + | Por lo que tenemos un sistema de la forma: | ||
| + | |||
| + | <math>\begin{cases} | ||
| + | U'(t)+KU(t)=F(t)=0\\ | ||
| + | U(0)=U^0 | ||
| + | \end{cases} | ||
| + | </math> | ||
| + | |||
| + | Con <math>N+1</math> ecuaciones. | ||
| + | |||
| + | === Resolución por método del trapecio === | ||
| + | |||
| + | Suponiendo que en el instante inicial se verifica :<math> | ||
| + | u(x,0)=\left\{\begin{matrix}\\0, x≤3\\3, x>3\end{matrix}\right. | ||
| + | </math> | ||
| + | |||
| + | Si tomamos <math>\triangle t= \triangle x/4</math> en <math>t\in\ [0,5]</math>, con <math>\triangle x=0.1</math> | ||
| + | |||
| + | El código en MATLAB del método sería: | ||
| + | |||
| + | {{matlab| codigo= | ||
| + | %Datos | ||
| + | L=5; %Longitud de varilla | ||
| + | T=5; %tiempo final | ||
| + | q=1; | ||
| + | %Discretización temporal y espacial | ||
| + | dx=0.1; % Paso en espacio | ||
| + | N=L/dx; %Número de subintervalos | ||
| + | x=0:dx:L; % Vector de espacio | ||
| + | dt=dx/4; % Paso en tiempo | ||
| + | t=0:dt:T; % Vector de tiempos | ||
| + | % Matriz de coeficientes. Aproximacion de -q*u_xx | ||
| + | K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1); | ||
| + | K(1,2)=-2; | ||
| + | K(N+1,N)=-2; | ||
| + | K=q*K/dx^2; | ||
| + | % Calculamos u0 condición inicial | ||
| + | u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]'; | ||
| + | % F=0 (no la consideramos) | ||
| + | sol(1,:)=u0'; | ||
| + | U=u0; % Inicializacion | ||
| + | % Calculamos U_n -> U_n+1 | ||
| + | %Aplicamos método del trapecio | ||
| + | for j=1:length(t)-1 | ||
| + | U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); | ||
| + | sol(j+1,:)= U'; | ||
| + | end | ||
| + | %Dibujamos la solucion | ||
| + | [xx,tt]=meshgrid(x,t); | ||
| + | surf(xx,tt,sol); | ||
| + | }} | ||
| + | [[Archivo:nur.jpg|500px|thumb|centro|Gráfica concentración / espacio-tiempo. Resolución por el método del trapecio.]] | ||
| + | |||
| + | === Resolución por método de Euler explícito === | ||
| + | |||
| + | {{matlab| codigo= | ||
| + | %Datos | ||
| + | L=5; %Longitud de varilla | ||
| + | T=5; %tiempo final | ||
| + | q=1; | ||
| + | %Discretización temporal y espacial | ||
| + | dx=0.1; % Paso en espacio | ||
| + | N=L/dx; %Número de subintervalos | ||
| + | x=0:dx:L; % Vector de espacio | ||
| + | dt=dx/20; % Paso en tiempo | ||
| + | t=0:dt:T; % Vector de tiempos | ||
| + | % Matriz de coeficientes. Aproximacion de -q*u_xx | ||
| + | K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1); | ||
| + | K(1,2)=-2; | ||
| + | K(N+1,N)=-2; | ||
| + | K=q*K/dx^2; | ||
| + | % Calculamos u0 condición inicial | ||
| + | u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]'; | ||
| + | % F=0 (no la consideramos) | ||
| + | sol(1,:)=u0'; | ||
| + | U=u0; % Inicializacion | ||
| + | % Calculamos U_n -> U_n+1 | ||
| + | %Aplicamos método Euler explícito | ||
| + | for j=1:length(t)-1 | ||
| + | k1=-K*U; % Calculamos k1=h*f(tn,yn) | ||
| + | k2=-K*(U+dt*k1); % Calculamos k2=h*f(tn+h/2,yn+1/2*k1) | ||
| + | % Meto los datos en el vector | ||
| + | U=U+(dt/2)*(k1+k2); | ||
| + | sol(j+1,:)= U'; | ||
| + | end | ||
| + | %Dibujamos la solucion | ||
| + | [xx,tt]=meshgrid(x,t); | ||
| + | surf(xx,tt,sol); | ||
| + | }} | ||
| + | [[Archivo:mig.jpg|500px|thumb|centro|Gráfica concentración / espacio-tiempo. Resolución por el método de Euler explícito.]] | ||
| + | |||
| + | === Resolución por método de Euler implícito === | ||
| + | |||
| + | {{matlab| codigo= | ||
| + | %Datos | ||
| + | L=5; %Longitud de varilla | ||
| + | T=5; | ||
| + | q=1; | ||
| + | %Discretización temporal y espacial | ||
| + | dx=0.1; % Paso en espacio | ||
| + | N=L/dx; %Número de subintervalos | ||
| + | h=L/N; | ||
| + | x=0:h:L; % Vector de espacio | ||
| + | dt=h/20; % Paso en tiempo | ||
| + | t=0:dt:T; % Vector de tiempos | ||
| + | % Matriz de coeficientes. Aproximacion de -q*u_xx | ||
| + | K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1); | ||
| + | K(1,2)=-2; | ||
| + | K(N+1,N)=-2; | ||
| + | K=q*K/h^2; | ||
| + | % Calculamos u0 condición inicial | ||
| + | u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]'; | ||
| + | % F=0 (no la consideramos) | ||
| + | sol(1,:)=u0'; | ||
| + | U=u0; % Inicializacion | ||
| + | % Calculamos U_n -> U_n+1 | ||
| + | % Aplicamos método Euler implícito | ||
| + | for j=1:length(t)-1 | ||
| + | U=U-dt*K*U; | ||
| + | sol(j+1,:)= U'; | ||
| + | end | ||
| + | %Dibujamos la solucion | ||
| + | [xx,tt]=meshgrid(x,t); | ||
| + | surf(xx,tt,sol); | ||
| + | }} | ||
| + | [[Archivo:migap.jpg|500px|thumb|centro|Gráfica concentración / espacio-tiempo. Resolución por el método de Euler implícito.]] | ||
| + | |||
| + | === Resolución por método de Euler modificado === | ||
| + | |||
| + | {{matlab| codigo= | ||
| + | %Datos | ||
| + | L=5; %Longitud de varilla | ||
| + | T=5; | ||
| + | q=1; | ||
| + | %Discretización temporal y espacial | ||
| + | dx=0.1; % Paso en espacio | ||
| + | N=L/dx; %Número de subintervalos | ||
| + | h=L/N; | ||
| + | x=0:h:L; % Vector de espacio | ||
| + | dt=h/20; % Paso en tiempo | ||
| + | t=0:dt:T; % Vector de tiempos | ||
| + | % Matriz de coeficientes. Aproximacion de -q*u_xx | ||
| + | K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1); | ||
| + | K(1,2)=-2; | ||
| + | K(N+1,N)=-2; | ||
| + | K=q*K/h^2; | ||
| + | % Calculamos u0 condición inicial | ||
| + | u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]'; | ||
| + | % F=0 (no la consideramos) | ||
| + | sol(1,:)=u0'; | ||
| + | U=u0; % Inicializacion | ||
| + | % Calculamos U_n -> U_n+1 | ||
| + | for j=1:length(t)-1 | ||
| + | k1=-K*U; % Calculamos k1=h*f(tn,yn) | ||
| + | k2=-K*(U+dt*k1); % Calculamos k2=h*f(tn+h/2,yn+1/2*k1) | ||
| + | % Meto los datos en el vector | ||
| + | U=U+(dt/2)*(k1+k2); | ||
| + | sol(j+1,:)= U'; | ||
| + | end | ||
| + | %Dibujamos la solucion | ||
| + | [xx,tt]=meshgrid(x,t); | ||
| + | surf(xx,tt,sol); | ||
| + | }} | ||
| + | [[Archivo: mig.jpg|500px|thumb|centro|Gráfica concentración / espacio-tiempo. Resolución por el método de Euler modificado.]] | ||
| + | |||
| + | |||
| + | == Conservación de la masa total de contaminante == | ||
| + | |||
| + | A continuación demostraremos que la masa total de contaminante en el tubo se conserva a lo largo del tiempo, que se puede deducir a partir de la ecuación sin tener que resolverla. Integramos la ecuación y debido a las condiciones de frontera: | ||
| + | <math>\frac d {dt} \int_0^5 u(x,t)\,dx= \int_0^5 u_{xx}(x,t)\,dx= u_x(x,t)|_0^5=0</math> | ||
| + | {{matlab| codigo= | ||
| + | %Datos | ||
| + | L=5; %Longitud de varilla | ||
| + | T=5; | ||
| + | q=1; | ||
| + | %Discretización temporal y espacial | ||
| + | N=500; %Número de subintervalos | ||
| + | h=L/N; | ||
| + | x=0:h:L; % Vector de espacio | ||
| + | dt=h/4; % Paso en tiempo | ||
| + | t=0:dt:T; % Vector de tiempos | ||
| + | % Matriz de coeficientes. Aproximacion de -q*u_xx | ||
| + | K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1); | ||
| + | K(1,2)=-2; | ||
| + | K(N+1,N)=-2; | ||
| + | K=q*K/h^2; | ||
| + | % Calculamos u0 condición inicial | ||
| + | u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]'; | ||
| + | % F=0 (no la consideramos) | ||
| + | sol(1,:)=u0'; | ||
| + | U=u0; % Inicializacion | ||
| + | % Calculamos U_n -> U_n+1 | ||
| + | for j=1:length(t)-1 | ||
| + | U=(eye(N+1)+dt*K)\(U+dt*F); | ||
| + | sol(j+1,:)= U'; | ||
| + | end | ||
| + | % Calculamos el area de la funcion en cada tiempo (area = cantidad de contaminante) | ||
| + | areas=zeros(1,length(t)); | ||
| + | for i=1:length(t) | ||
| + | f=sol(i,:); | ||
| + | w=trapz(x,f); | ||
| + | area(i)=w; | ||
| + | end | ||
| + | %Dibujamos | ||
| + | plot(t,area) | ||
| + | xlabel('Tiempo') | ||
| + | ylabel('Cantidad de contaminante') | ||
| + | }} | ||
| + | [[Archivo:aleeex.jpg|500px|thumb|centro|Conservación masa total de contaminante]] | ||
| + | [[Archivo:gime.jpg|500px|thumb|centro|Conservación masa total de contaminante]] | ||
| + | |||
| + | |||
| + | ==Concentración a lo largo del tiempo== | ||
| + | |||
| + | La concentración de la sustancia contaminante en la varilla varía con el tiempo, pero en un cierto momento esta concentración se va homogeneizando, y deja de variar, entrando en un estado estacionario:: | ||
| + | <math> u_t(x,t)- Du_{xx}(x,t)=0 </math> : | ||
| + | <math> u_t(x,t)=0 \rightarrow Du_{xx}(x,t)=0 </math> : | ||
| + | <math> u=c_1x+c_2 </math> | ||
| + | Utizando Matlab comprobaremos que <math> c_1=0 </math> <math> c_2=1.17 </math> | ||
| + | Para tiempos grandes la concentración se estabiliza en torno a 1.17 en toda la varilla, de forma que la solución se asemejará a una función lineal constante. | ||
| + | |||
| + | {{matlab| codigo= | ||
| + | %Datos | ||
| + | L=5; %Longitud de varilla | ||
| + | T=50; | ||
| + | q=1; | ||
| + | %Discretización temporal y espacial | ||
| + | dx=0.1; % Paso en espacio | ||
| + | N=L/dx; %Número de subintervalos | ||
| + | h=L/N; | ||
| + | x=0:h:L; % Vector de espacio | ||
| + | dt=h/4; % Paso en tiempo | ||
| + | t=0:dt:T; % Vector de tiempos | ||
| + | % Matriz de coeficientes. Aproximacion de -q*u_xx | ||
| + | K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1); | ||
| + | K(1,2)=-2; | ||
| + | K(N+1,N)=-2; | ||
| + | K=q*K/h^2; | ||
| + | % Calculamos u0 condición inicial | ||
| + | u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]'; | ||
| + | % F=0 (no la consideramos) | ||
| + | sol(1,:)=u0'; | ||
| + | U=u0; % Inicializacion | ||
| + | % Calculamos U_n -> U_n+1 | ||
| + | %Aplicamos método del trapecio | ||
| + | for j=1:length(t)-1 | ||
| + | U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U); | ||
| + | sol(j+1,:)= U'; | ||
| + | end | ||
| + | %Solución estacionaria | ||
| + | a=sol(length(t),:); | ||
| + | b=sol(1,:); | ||
| + | c=sol((length(t)-1)/50+1,:); | ||
| + | d=sol((length(t)-1)*2/50+1,:); | ||
| + | e=sol((length(t)-1)*10/50+1,:); | ||
| + | hold on | ||
| + | plot(x,a,'xk','linewidth',2); | ||
| + | plot(x,b,'-m','linewidth',1); | ||
| + | plot(x,c,'-g','linewidth',1); | ||
| + | plot(x,d,'-y','linewidth',1); | ||
| + | plot(x,e,'-b','linewidth',1); | ||
| + | legend('u(50s)','u(0s)','u(1s)','u(2s)','u(10s)'); | ||
| + | xlabel('Posición en la varilla') | ||
| + | ylabel('Concentracion') | ||
| + | hold off | ||
| + | }} | ||
| + | |||
| + | [[Archivo:Soluciones(t).jpg|500px|thumb|centro|Soluciones a lo largo del tiempo]] | ||
| + | |||
| + | La distancia entre la solución estacionaria y las soluciones para los siguientes instantes: 0s, 1s, 2s y 10s; se puede apreciar en la imagen anterior. | ||
| + | |||
| + | Una vez analizado los datos, se demuestra que la sustancia contaminante se estabiliza en t=9.98s, con un error del 5%. | ||
| + | |||
| + | En el caso de que consideremos Δx'=Δx/10,el tiempo en el que se estabiliza la cantidad de sustancia contaminante será t=10s, dato que será más preciso debido a que el paso realizado en el programa es menor. | ||
| + | |||
| + | ==Nueva condición de frontera== | ||
| + | |||
| + | ===Primer caso. Limpiador=== | ||
| + | |||
| + | Si colocamos un limpiador, que elimina la sustancia contaminante, en el extremo izquierdo de la varilla, varían las condiciones de contorno del problema. En este caso, en el extremo izquierdo, la condición inicial será de tipo Dirichlet ya que se esta variación esta provocada por un mecanismo físico externo que actúa sobre el extremo. | ||
| + | |||
| + | <math>\begin{cases} | ||
| + | u_t(x,t)- D u_{xx}(x,t)= 0 ; x\in (0,5) \\ | ||
| + | u(x,0)=u_0 , x\in (0,5) \\ | ||
| + | u(0,t)=0 , u_x(5,t)=0 ; t\geq 0 | ||
| + | \end{cases} | ||
| + | </math> | ||
| + | |||
| + | Dadas las nuevas condiciones, resolvemos el problema por el método de diferencias finitas con la ayuda de Matlab. | ||
| + | |||
| + | {{matlab| codigo= | ||
| + | %Datos | ||
| + | L=5; %Longitud de varilla | ||
| + | T=5; %tiempo final | ||
| + | q=1; | ||
| + | %Discretización temporal y espacial | ||
| + | dx=0.1; % Paso en espacio | ||
| + | N=L/dx; %Número de subintervalos | ||
| + | x=0:dx:L;% Vector de espacio | ||
| + | dt=dx/4; % Paso en tiempo | ||
| + | t=0:dt:T; % Vector de tiempos | ||
| + | % Matriz de coeficientes. Aproximacion de -q*u_xx | ||
| + | K=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1); | ||
| + | K(N,N-1)=-2; | ||
| + | K=q*K/dx^2; | ||
| + | % Matriz F | ||
| + | F=zeros(N,1); | ||
| + | % Calculamos u0 condición inicial | ||
| + | u0=[zeros(1,N*3/5),3*ones(1,N*2/5)]'; | ||
| + | sol(1,:)=[0,u0']; | ||
| + | U=u0; % Inicializacion | ||
| + | % Calculamos U_n -> U_n+1 | ||
| + | %Aplicamos método trapecio | ||
| + | for j=1:length(t)-1 | ||
| + | U=(eye(N)+(dt*K))\(dt*F+U); | ||
| + | sol(j+1,:)= [0,U']; | ||
| + | end | ||
| + | %Dibujamos la solucion | ||
| + | [xx,tt]=meshgrid(x,t); | ||
| + | surf(xx,tt,sol); | ||
| + | }} | ||
| + | |||
| + | [[Archivo:Xata.JPG|500px|thumb|centro|Solución al variar las condiciones de contorno del problema.]] | ||
| + | |||
| + | Observando la gráfica, y por la presencia del limpiador en el extremo de la varilla, para tiempos grandes la cantidad de sustancia contaminante será nula en toda la varilla. En realidad, esto no es del todo cierto puesto que la sustancia no llega a eliminarse completamente, ya que el limpiador solo elimina la sustancia contaminante en el extremo izquierdo. Aunque la concentración en todos los puntos disminuye de manera exponencial, permanece asintótica a 0. | ||
| + | |||
| + | [[Archivo:Trapotito.JPG|500px|thumb|centro|Momento en el que se estabiliza con la presencia del limpiador.]] | ||
| + | |||
| + | ===Segundo caso=== | ||
| + | |||
| + | Volvemos a cambiar las condiciones de frontera, pero en este caso en ambos extremos. | ||
| + | <math>\begin{cases} | ||
| + | u_t(x,t)- D u_{xx}(x,t)= 0 ; x\in (0,5) \\ | ||
| + | u(x,0)=u_0 , x\in (0,5) \\ | ||
| + | u_x(0,t)=3 , u(5,t)=10sin(t) ; t\geq 0 | ||
| + | \end{cases} | ||
| + | </math> | ||
| + | |||
| + | Podemos obtener el resultado mediante un programa en Matlab:: | ||
| + | |||
| + | {{matlab| codigo= | ||
| + | %Datos | ||
| + | L=5; %Longitud de varilla | ||
| + | T=10; %tiempo final | ||
| + | q=1; | ||
| + | %Discretización temporal y espacial | ||
| + | dx=0.1; % Paso en espacio | ||
| + | N=L/dx; %Número de subintervalos | ||
| + | x=0:dx:L;% Vector de espacio | ||
| + | dt=dx/4; % Paso en tiempo | ||
| + | t=0:dt:T; % Vector de tiempos | ||
| + | % Matriz de coeficientes. Aproximacion de -q*u_xx | ||
| + | K=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1); | ||
| + | K(1,2)=-2; | ||
| + | K=q*K/dx^2; | ||
| + | % Matriz F | ||
| + | F=[-3*2/dx, zeros(1,N-1)]'; | ||
| + | % Calculamos u0 condición inicial | ||
| + | u0=[zeros(1,(N*3/5)),3*ones(1,(N*2/5))]'; | ||
| + | v=10*sin(t); %Condicion de frontera Dirichlet | ||
| + | sol(1,:)=[u0' v(1)]; | ||
| + | U=u0; % Inicializacion | ||
| + | % Calculamos U_n -> U_n+1 | ||
| + | %Aplicamos método trapecio | ||
| + | for j=1:length(t)-1 | ||
| + | F(N)=(1/dx^2)*v(j); | ||
| + | U=(eye(N)+(dt*K))\(dt*F+U); | ||
| + | sol(j+1,:)= [U', v(j+1)]; | ||
| + | end | ||
| + | %Dibujamos la solucion | ||
| + | [xx,tt]=meshgrid(x,t); | ||
| + | surf(xx,tt,sol); | ||
| + | }} | ||
| + | |||
| + | El resultado obtenido de la concentración de la sustancia contaminante será, gráficamente: | ||
| + | |||
| + | [[Archivo:aaawww.jpg|500px|thumb|centro|Solución al variar las condiciones de contorno del problema.]] | ||
| + | |||
| + | Las nuevas conciones de contorno son de tipo Neumann en el extremo izquierdo, lo que indica que se producirá un flujo de masa contaminante constante, 3, en ese extremo; y de tipo Dirichlet en el derecho, que nos indica que en ese extremo la cantidad de masa contaminante variará con el tiempo de forma periódica, entre los valores -10 y 10. | ||
| + | |||
| + | ==Resolución por el método de Fourier== | ||
| + | |||
| + | Las condiciones de frontera del problema son homogéneas, por lo que podemos aplicar este método de cálculo, sin realizar ningún cambio. | ||
| + | El primer paso es resolver el problema de autovalores asociado:: | ||
| + | |||
| + | <math>\begin{cases} | ||
| + | y''+λy=0 x \in (0,5) \\ | ||
| + | y'(0)=0 \\ | ||
| + | y'(5)=0 | ||
| + | \end{cases} | ||
| + | </math> | ||
| + | |||
| + | Realizando analíticamente el cálculo, obtenemos los siguientes autovalores y autofunciones:: | ||
| + | <math> λ_k=\frac{k^2π^2}{25} → φ_k=cos\frac{kπ}{5}x , k=0,1,2,3... </math> | ||
| + | |||
| + | Las condiciones de frontera e iniciales serían las siguientes en términos de la serie de Fourier:: | ||
| + | |||
| + | <math> \sum_{k=0}^∞c_k(t)φ_k(x)=0 , \sum_{k=0}^∞a_k(t)φ_k(x)\begin{cases} 0, x≤3 \\ 3, x>3\end{cases} </math> | ||
| + | |||
| + | Y ensayamos soluciones de la forma:: | ||
| + | |||
| + | <math> u(x,t)=\sum_{k=0}^∞T_k(t)φ_k(x)=\sum_{k=0}^∞T_k(t)cos\frac{kπ}{5}x </math> | ||
| + | |||
| + | |||
| + | Relacionando los resultados obtenidos en el problema de autovalores y el problema de difusión de la sustancia contaminante obtenemos lo siguiente:: | ||
| + | |||
| + | <math>\begin{cases} T'_k(t)+μ_kT_k(t)=c_k=0 \\ T_k(0)=a_k \end{cases} </math> | ||
| + | |||
| + | La solución de este último problema de valor inicial es:: | ||
| + | |||
| + | <math>T_k(t)=a_ke^{-μ_kt}</math> | ||
| + | |||
| + | De esta manera obtenemos la solución final:: | ||
| + | |||
| + | <math> u(x,t)=\sum_{k=0}^∞a_ke^{-μ_kt}cos\frac{kπ}{5}x </math> | ||
| + | |||
| + | Resolveremos a través de Matlab, con una serie de Fourier de 1, 3, 5, 10 y 20 términos. | ||
| + | |||
| + | {{matlab| codigo= | ||
| + | %Datos | ||
| + | L=5; %Longitud de varilla | ||
| + | T=0.5; %tiempo final | ||
| + | q=1; | ||
| + | %Discretización temporal y espacial | ||
| + | dx=0.1; % Paso en espacio | ||
| + | N=L/dx; %Número de subintervalos | ||
| + | x=0:dx:L;% Vector de espacio | ||
| + | dt=dx/4; % Paso en tiempo | ||
| + | t=0:dt:T; % Vector de tiempos | ||
| + | M=1; %Número de términos | ||
| + | sol=zeros(length(t),N+1); | ||
| + | u=[zeros(1,(N*3/5)+1),ones(1,N*2/5)*3]; | ||
| + | %Aplicamos Fourier | ||
| + | for j=1:M | ||
| + | phi=cos((j*pi*x)/5); | ||
| + | a=(trapz(x,u.*phi))/(trapz(x,phi.^2)); | ||
| + | TT=exp(-(j^2)*(pi^2)*t/25)*a; | ||
| + | sol=sol+TT'*phi; | ||
| + | end | ||
| + | %Dibujamos la solucion | ||
| + | [xx,tt]=meshgrid(x,t); | ||
| + | surf(xx,tt,sol); | ||
| + | }} | ||
| + | |||
| + | Gráficamente la concentración de la sustancia calculada por el método de Fourier será: | ||
| + | |||
| + | [[Archivo:M=1.jpg|520px|thumb|left|Solución para 1 término de la serie de Fourier]] | ||
| + | [[Archivo:M=3.jpg|520px|thumb|right|Solución para 3 términos de la serie de Fourier]] | ||
| + | [[Archivo:M=5.jpg|520px|thumb|left|Solución para 5 términos de la serie de Fourier]] | ||
| + | [[Archivo:M=10.jpg|520px|thumb|right|Solución para 10 términos de la serie de Fourier]] | ||
| + | |||
| + | Como se puede anteriores gráficas apreciamos la precisión va aumentando a medida que aumenta el número de términos que utilizamos. Si tomamos 20 términos en la serie, la aproximación es mejor, como veremos en la siguiente imagen: | ||
| + | |||
| + | [[Archivo:M=20.jpg|1000px|thumb|centro|Solución para 20 términos de la serie de Fourier]] | ||
| + | |||
| + | |||
| + | [[Categoría:Ecuaciones Diferenciales]] | ||
| + | [[Categoría:ED13/14]] | ||
| + | [[Categoría:Trabajos 2013-14]] | ||
Revisión actual del 07:49 23 may 2014
| Trabajo realizado por estudiantes | |
|---|---|
| Título | Difusión de una sustancia contaminante. Grupo 10-B |
| Asignatura | Ecuaciones Diferenciales |
| Curso | Curso 2013-14 |
| Autores | Alejandro Giménez Alves, Miguel Aparicio Martín Romo, Nuria Trapote García, Karlo André Palomino Paredes |
| Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura | |
La difusión implica un movimiento espontáneo y desordenado de moléculas individuales y, especialmente, nos interesa la difusión de moléculas de una sustancia disuelta en otra.
La difusión de una sustancia puede considerarse análoga al flujo de calor, y la ley de Fick establece que el ritmo de difusión por unidad de superficie, en dirección perpendicular a ésta, es proporcional al gradiente de la concentración de esa sustancia en esa dirección. La concentración es la masa de la sustancia por unidad de volumen, y el gradiente de concentración es la variación de concentración por unidad de distancia.
Para determinar como se distribuye la concentración de una sustancia contaminante tomaremos como ejemplo un tubo largo compuesto por dos sustancias de las cuáles una de ellas es contaminante.
Contenido
- 1 Simplificación del problema
- 2 Modelización de la ecuación diferencial
- 3 Resolución numérica
1 Simplificación del problema
Para que este problema resulte más sencillo aplicaremos una serie de condiciones, facilitando el cálculo del mismo.
En primer lugar denotaremos su concentración [math] u [/math], concentración de contaminante en cada posición del tubo y constante en cada sección, medida en [math] \frac{mol}{m^2s} [/math].
Supondremos que el tubo mide L=5 m, ocupando el intervalo [math] x \in (0,L) [/math], y que la concentración es la misma en cualquier punto de la sección transversal del tubo. Por tanto, la concentración dependerá unicamente de dos variables [math] u = u(x,t) [/math]. En los extremos se ha colocado un aislante que hace que el flujo de contaminante al exterior del tubo sea nulo. Además, consideraremos la simplificación de que se trata de un tubo aislado por sus laterales, pero abierto por las bases del cilindro.
1.1 Ley de conservación de masa
Tras una serie de experimentos realizados por Lavoisier, se pusieron de manifiesto que si tenemos en cuenta todas las sustancias que forman parte en una reacción química y todos los productos formados, nunca varía la masa. Esta ley exige que no haya una generación espontánea de materia. Es decir, en la región del espacio estudiada, no existe entrada o salida por un punto cualquiera (frontera o interior), la masa en esta región se mantiene constante. Esta es la ley de la conservación de la masa, que podemos enunciarla, pues, de la siguiente manera:
"En toda reacción química la masa se conserva, esto es, la masa total de los reactivos es igual a la masa total de los productos"
La ley de conservación de masas exige que no haya una generación espontánea de materia. Es decir, en la región del espacio estudiada, no existe entrada o salida por un punto cualquiera (frontera o interior), la masa en esta región se mantiene constante.
Esta suposición, en términos de variación de masa, puede quedar determinada como:
Variación de la masa en el tiempo = flujo de masa a través de la frontera por unidad de tiempo + flujo de masa generada en el interior por unidad de tiempo.
1.2 Ley de Fick
Se trata de una ley cuantitativa en forma diferencial que describe la difusión de materia o energía en un medio en el que inicialmente existe equilibrio químico o físico. Esta ley se trata de una generalización de los fenómenos descritos por la Ley de Fourier, ya que esta es una consideración concreta del calor.
La ley de Fick anuncia que en el caso de existir diferencias de concentración en cualquier especie, el paso de estas especies se llevará a cabo desde las regiones con mayor concentración a las de menor. Formulado matemáticamente:
[math]F(x,t)=-D\frac{\partial u}{\partial x}[/math]
Donde [math]F[/math] es el flujo de la sustancia y [math]D[/math] el coeficiente de difusión, que representa la facilidad en que un soluto particular se mueve por un disolvente determinado.
La ley de Fick establece que el flujo de difusión del contaminante es proporcional a la variación de concentración:
[math] F(x,t)=-D\frac{\partial u}{\partial x} [/math]
donde D es el coeficiente de difusión (medido en [math] \frac{m^2}{s} [/math]), que depende de las propiedades físicas de los compuestos, y que se supone constante D=1.
2 Modelización de la ecuación diferencial
Aplicando el principio de conservación de la masa y la ley de Fourier, definimos la variable [math] u(x,t)[/math] en unidades de sustancia por área, es decir, concentración por superficie del tubo.
Consideramos [math] A [/math] como variable superficie, y tomamos un pequeño trozo, definido por [math]\Delta x[/math]. Entonces, para obtener la variación de la masa en el tiempo:
[math] A u(x,t) \Delta x [/math]
Y derivando en el tiempo:
[math] A u_t(x,t) \Delta x [/math]
obtenemos el primer término de la igualdad anteriormente enunciada.
En el segundo, consideramos nulo el flujo de masa en los puntos interiores por unidad de tiempo, pues suponemos la tubería perfecta y sin sumideros.
Como la superficie lateral del tubo está aislada, solamente habrá flujo de sustancia en la dirección del eje [math]x[/math]. Si [math]F(x,t)\gt 0[/math] pensamos que el flujo va hacia la derecha, si [math]F(x,t)\lt 0[/math], este va a hacia la izquierda. El flujo de calor en un intervalo [math][x, x + ∆x ] [/math] viene dado dado por:
[math]F(x,t)A-F(x+\Delta x, t)A[/math]
Con lo que queda [math]A u_t(x,t) \Delta x = F(x,t)A-F(x+\Delta x, t)A[/math], y al dividir [math]A \Delta x[/math], nos queda [math]u_t(x,t)= \frac {F(x,t)-F(x+\Delta x, t)}{\Delta x}[/math].
Como [math]\Delta x \rightarrow 0 [/math], [math]u_t(x,t)= -F_x(x,t)[/math], y aplicando ley de Fick, [math]u_t(x,t)=-\frac{\partial }{\partial x}(-D u_x(x,t)) = D u_xx(x,t) [/math].
Con lo que resulta una ecuación en derivadas parciales que determina la concentración de sustancia:
[math]u_t(x,t)- D u_xx(x,t)= 0 [/math]
2.1 Planteamiento del problema bien propuesto
Suponemos que el flujo será nula al haber una tapa en los extremos del tubo, con lo que el problema bien propuesto quedaría::
[math]\begin{cases} u_t(x,t)- D u_{xx}(x,t)= 0 ; x\in (0,5) \\ u(x,0)=u_0 , x\in (0,5) \\ u_x(0,t)=0 , u_x(5,t)=0 ; t\geq 0 \end{cases} [/math]
3 Resolución numérica
Para la resolución de ésta ecuación necesitaremos mínimo tres condiciones, dos de las cuales serán de contorno, y la otra será la condición inicial.Si suponemos [math]u_0(x,0)[/math], entonces:
[math] u_0(x,0)=\begin{cases} 0, si x\leq 3\\ 3, si x\gt3 \end{cases} [/math]
3.1 Resolución por el método de las diferencias finitas
En el primer caso particular que estudiaremos, trataremos de obtener una resolución numérica del problema anteriormente planteado, dónde tenemos las fronteras aisladas y las concentraciones iniciales conocidas:
[math]\begin{cases} u_t(x,t)- D u_{xx}(x,t)= 0; x\in (0,5), t\geq 0 \\ u_0(x,0), x\in (0,5) \\ u_x(0,t)=0, u_x(5,t)=0, t\geq 0 \end{cases} [/math]
La resolución por el método de las diferencias finitas se basa en expresar el problema continuo a un sistema discreto de ecuaciones diferenciales de primer orden. Particularizando para nuestro caso con las condiciones dadas, el problema planteado sería:
[math]\begin{cases} u'_n(t)+\frac{-u_{n-1}(t)+2u_n(t)+u_{n+1}(t)}{h^2} \\ \frac{u_1(t)-u_-1(t)}{2h} \rightarrow u_1(t)=u_-1(t) \\ \frac{u_{N+1}(t)-u_{N-1}(t)}{2h} \rightarrow u_{N+1}(t)=u_{N-1}\\ u_n(0)=u^0(x) \end{cases} [/math]
Por lo que tenemos un sistema de la forma:
[math]\begin{cases} U'(t)+KU(t)=F(t)=0\\ U(0)=U^0 \end{cases} [/math]
Con [math]N+1[/math] ecuaciones.
3.1.1 Resolución por método del trapecio
Suponiendo que en el instante inicial se verifica :[math] u(x,0)=\left\{\begin{matrix}\\0, x≤3\\3, x\gt3\end{matrix}\right. [/math]
Si tomamos [math]\triangle t= \triangle x/4[/math] en [math]t\in\ [0,5][/math], con [math]\triangle x=0.1[/math]
El código en MATLAB del método sería:
%Datos
L=5; %Longitud de varilla
T=5; %tiempo final
q=1;
%Discretización temporal y espacial
dx=0.1; % Paso en espacio
N=L/dx; %Número de subintervalos
x=0:dx:L; % Vector de espacio
dt=dx/4; % Paso en tiempo
t=0:dt:T; % Vector de tiempos
% Matriz de coeficientes. Aproximacion de -q*u_xx
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);
K(1,2)=-2;
K(N+1,N)=-2;
K=q*K/dx^2;
% Calculamos u0 condición inicial
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';
% F=0 (no la consideramos)
sol(1,:)=u0';
U=u0; % Inicializacion
% Calculamos U_n -> U_n+1
%Aplicamos método del trapecio
for j=1:length(t)-1
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U);
sol(j+1,:)= U';
end
%Dibujamos la solucion
[xx,tt]=meshgrid(x,t);
surf(xx,tt,sol);3.1.2 Resolución por método de Euler explícito
%Datos
L=5; %Longitud de varilla
T=5; %tiempo final
q=1;
%Discretización temporal y espacial
dx=0.1; % Paso en espacio
N=L/dx; %Número de subintervalos
x=0:dx:L; % Vector de espacio
dt=dx/20; % Paso en tiempo
t=0:dt:T; % Vector de tiempos
% Matriz de coeficientes. Aproximacion de -q*u_xx
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);
K(1,2)=-2;
K(N+1,N)=-2;
K=q*K/dx^2;
% Calculamos u0 condición inicial
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';
% F=0 (no la consideramos)
sol(1,:)=u0';
U=u0; % Inicializacion
% Calculamos U_n -> U_n+1
%Aplicamos método Euler explícito
for j=1:length(t)-1
k1=-K*U; % Calculamos k1=h*f(tn,yn)
k2=-K*(U+dt*k1); % Calculamos k2=h*f(tn+h/2,yn+1/2*k1)
% Meto los datos en el vector
U=U+(dt/2)*(k1+k2);
sol(j+1,:)= U';
end
%Dibujamos la solucion
[xx,tt]=meshgrid(x,t);
surf(xx,tt,sol);3.1.3 Resolución por método de Euler implícito
%Datos
L=5; %Longitud de varilla
T=5;
q=1;
%Discretización temporal y espacial
dx=0.1; % Paso en espacio
N=L/dx; %Número de subintervalos
h=L/N;
x=0:h:L; % Vector de espacio
dt=h/20; % Paso en tiempo
t=0:dt:T; % Vector de tiempos
% Matriz de coeficientes. Aproximacion de -q*u_xx
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);
K(1,2)=-2;
K(N+1,N)=-2;
K=q*K/h^2;
% Calculamos u0 condición inicial
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';
% F=0 (no la consideramos)
sol(1,:)=u0';
U=u0; % Inicializacion
% Calculamos U_n -> U_n+1
% Aplicamos método Euler implícito
for j=1:length(t)-1
U=U-dt*K*U;
sol(j+1,:)= U';
end
%Dibujamos la solucion
[xx,tt]=meshgrid(x,t);
surf(xx,tt,sol);3.1.4 Resolución por método de Euler modificado
%Datos
L=5; %Longitud de varilla
T=5;
q=1;
%Discretización temporal y espacial
dx=0.1; % Paso en espacio
N=L/dx; %Número de subintervalos
h=L/N;
x=0:h:L; % Vector de espacio
dt=h/20; % Paso en tiempo
t=0:dt:T; % Vector de tiempos
% Matriz de coeficientes. Aproximacion de -q*u_xx
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);
K(1,2)=-2;
K(N+1,N)=-2;
K=q*K/h^2;
% Calculamos u0 condición inicial
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';
% F=0 (no la consideramos)
sol(1,:)=u0';
U=u0; % Inicializacion
% Calculamos U_n -> U_n+1
for j=1:length(t)-1
k1=-K*U; % Calculamos k1=h*f(tn,yn)
k2=-K*(U+dt*k1); % Calculamos k2=h*f(tn+h/2,yn+1/2*k1)
% Meto los datos en el vector
U=U+(dt/2)*(k1+k2);
sol(j+1,:)= U';
end
%Dibujamos la solucion
[xx,tt]=meshgrid(x,t);
surf(xx,tt,sol);
3.2 Conservación de la masa total de contaminante
A continuación demostraremos que la masa total de contaminante en el tubo se conserva a lo largo del tiempo, que se puede deducir a partir de la ecuación sin tener que resolverla. Integramos la ecuación y debido a las condiciones de frontera: [math]\frac d {dt} \int_0^5 u(x,t)\,dx= \int_0^5 u_{xx}(x,t)\,dx= u_x(x,t)|_0^5=0[/math]
%Datos
L=5; %Longitud de varilla
T=5;
q=1;
%Discretización temporal y espacial
N=500; %Número de subintervalos
h=L/N;
x=0:h:L; % Vector de espacio
dt=h/4; % Paso en tiempo
t=0:dt:T; % Vector de tiempos
% Matriz de coeficientes. Aproximacion de -q*u_xx
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);
K(1,2)=-2;
K(N+1,N)=-2;
K=q*K/h^2;
% Calculamos u0 condición inicial
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';
% F=0 (no la consideramos)
sol(1,:)=u0';
U=u0; % Inicializacion
% Calculamos U_n -> U_n+1
for j=1:length(t)-1
U=(eye(N+1)+dt*K)\(U+dt*F);
sol(j+1,:)= U';
end
% Calculamos el area de la funcion en cada tiempo (area = cantidad de contaminante)
areas=zeros(1,length(t));
for i=1:length(t)
f=sol(i,:);
w=trapz(x,f);
area(i)=w;
end
%Dibujamos
plot(t,area)
xlabel('Tiempo')
ylabel('Cantidad de contaminante')
3.3 Concentración a lo largo del tiempo
La concentración de la sustancia contaminante en la varilla varía con el tiempo, pero en un cierto momento esta concentración se va homogeneizando, y deja de variar, entrando en un estado estacionario:: [math] u_t(x,t)- Du_{xx}(x,t)=0 [/math] : [math] u_t(x,t)=0 \rightarrow Du_{xx}(x,t)=0 [/math] : [math] u=c_1x+c_2 [/math] Utizando Matlab comprobaremos que [math] c_1=0 [/math] [math] c_2=1.17 [/math] Para tiempos grandes la concentración se estabiliza en torno a 1.17 en toda la varilla, de forma que la solución se asemejará a una función lineal constante.
%Datos
L=5; %Longitud de varilla
T=50;
q=1;
%Discretización temporal y espacial
dx=0.1; % Paso en espacio
N=L/dx; %Número de subintervalos
h=L/N;
x=0:h:L; % Vector de espacio
dt=h/4; % Paso en tiempo
t=0:dt:T; % Vector de tiempos
% Matriz de coeficientes. Aproximacion de -q*u_xx
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);
K(1,2)=-2;
K(N+1,N)=-2;
K=q*K/h^2;
% Calculamos u0 condición inicial
u0=[zeros(1,1+N*3/5),3*ones(1,N*2/5)]';
% F=0 (no la consideramos)
sol(1,:)=u0';
U=u0; % Inicializacion
% Calculamos U_n -> U_n+1
%Aplicamos método del trapecio
for j=1:length(t)-1
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U);
sol(j+1,:)= U';
end
%Solución estacionaria
a=sol(length(t),:);
b=sol(1,:);
c=sol((length(t)-1)/50+1,:);
d=sol((length(t)-1)*2/50+1,:);
e=sol((length(t)-1)*10/50+1,:);
hold on
plot(x,a,'xk','linewidth',2);
plot(x,b,'-m','linewidth',1);
plot(x,c,'-g','linewidth',1);
plot(x,d,'-y','linewidth',1);
plot(x,e,'-b','linewidth',1);
legend('u(50s)','u(0s)','u(1s)','u(2s)','u(10s)');
xlabel('Posición en la varilla')
ylabel('Concentracion')
hold off
La distancia entre la solución estacionaria y las soluciones para los siguientes instantes: 0s, 1s, 2s y 10s; se puede apreciar en la imagen anterior.
Una vez analizado los datos, se demuestra que la sustancia contaminante se estabiliza en t=9.98s, con un error del 5%.
En el caso de que consideremos Δx'=Δx/10,el tiempo en el que se estabiliza la cantidad de sustancia contaminante será t=10s, dato que será más preciso debido a que el paso realizado en el programa es menor.
3.4 Nueva condición de frontera
3.4.1 Primer caso. Limpiador
Si colocamos un limpiador, que elimina la sustancia contaminante, en el extremo izquierdo de la varilla, varían las condiciones de contorno del problema. En este caso, en el extremo izquierdo, la condición inicial será de tipo Dirichlet ya que se esta variación esta provocada por un mecanismo físico externo que actúa sobre el extremo.
[math]\begin{cases} u_t(x,t)- D u_{xx}(x,t)= 0 ; x\in (0,5) \\ u(x,0)=u_0 , x\in (0,5) \\ u(0,t)=0 , u_x(5,t)=0 ; t\geq 0 \end{cases} [/math]
Dadas las nuevas condiciones, resolvemos el problema por el método de diferencias finitas con la ayuda de Matlab.
%Datos
L=5; %Longitud de varilla
T=5; %tiempo final
q=1;
%Discretización temporal y espacial
dx=0.1; % Paso en espacio
N=L/dx; %Número de subintervalos
x=0:dx:L;% Vector de espacio
dt=dx/4; % Paso en tiempo
t=0:dt:T; % Vector de tiempos
% Matriz de coeficientes. Aproximacion de -q*u_xx
K=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);
K(N,N-1)=-2;
K=q*K/dx^2;
% Matriz F
F=zeros(N,1);
% Calculamos u0 condición inicial
u0=[zeros(1,N*3/5),3*ones(1,N*2/5)]';
sol(1,:)=[0,u0'];
U=u0; % Inicializacion
% Calculamos U_n -> U_n+1
%Aplicamos método trapecio
for j=1:length(t)-1
U=(eye(N)+(dt*K))\(dt*F+U);
sol(j+1,:)= [0,U'];
end
%Dibujamos la solucion
[xx,tt]=meshgrid(x,t);
surf(xx,tt,sol);
Observando la gráfica, y por la presencia del limpiador en el extremo de la varilla, para tiempos grandes la cantidad de sustancia contaminante será nula en toda la varilla. En realidad, esto no es del todo cierto puesto que la sustancia no llega a eliminarse completamente, ya que el limpiador solo elimina la sustancia contaminante en el extremo izquierdo. Aunque la concentración en todos los puntos disminuye de manera exponencial, permanece asintótica a 0.
3.4.2 Segundo caso
Volvemos a cambiar las condiciones de frontera, pero en este caso en ambos extremos. [math]\begin{cases} u_t(x,t)- D u_{xx}(x,t)= 0 ; x\in (0,5) \\ u(x,0)=u_0 , x\in (0,5) \\ u_x(0,t)=3 , u(5,t)=10sin(t) ; t\geq 0 \end{cases} [/math]
Podemos obtener el resultado mediante un programa en Matlab::
%Datos
L=5; %Longitud de varilla
T=10; %tiempo final
q=1;
%Discretización temporal y espacial
dx=0.1; % Paso en espacio
N=L/dx; %Número de subintervalos
x=0:dx:L;% Vector de espacio
dt=dx/4; % Paso en tiempo
t=0:dt:T; % Vector de tiempos
% Matriz de coeficientes. Aproximacion de -q*u_xx
K=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);
K(1,2)=-2;
K=q*K/dx^2;
% Matriz F
F=[-3*2/dx, zeros(1,N-1)]';
% Calculamos u0 condición inicial
u0=[zeros(1,(N*3/5)),3*ones(1,(N*2/5))]';
v=10*sin(t); %Condicion de frontera Dirichlet
sol(1,:)=[u0' v(1)];
U=u0; % Inicializacion
% Calculamos U_n -> U_n+1
%Aplicamos método trapecio
for j=1:length(t)-1
F(N)=(1/dx^2)*v(j);
U=(eye(N)+(dt*K))\(dt*F+U);
sol(j+1,:)= [U', v(j+1)];
end
%Dibujamos la solucion
[xx,tt]=meshgrid(x,t);
surf(xx,tt,sol);
El resultado obtenido de la concentración de la sustancia contaminante será, gráficamente:
Las nuevas conciones de contorno son de tipo Neumann en el extremo izquierdo, lo que indica que se producirá un flujo de masa contaminante constante, 3, en ese extremo; y de tipo Dirichlet en el derecho, que nos indica que en ese extremo la cantidad de masa contaminante variará con el tiempo de forma periódica, entre los valores -10 y 10.
3.5 Resolución por el método de Fourier
Las condiciones de frontera del problema son homogéneas, por lo que podemos aplicar este método de cálculo, sin realizar ningún cambio. El primer paso es resolver el problema de autovalores asociado::
[math]\begin{cases} y''+λy=0 x \in (0,5) \\ y'(0)=0 \\ y'(5)=0 \end{cases} [/math]
Realizando analíticamente el cálculo, obtenemos los siguientes autovalores y autofunciones:: [math] λ_k=\frac{k^2π^2}{25} → φ_k=cos\frac{kπ}{5}x , k=0,1,2,3... [/math]
Las condiciones de frontera e iniciales serían las siguientes en términos de la serie de Fourier::
[math] \sum_{k=0}^∞c_k(t)φ_k(x)=0 , \sum_{k=0}^∞a_k(t)φ_k(x)\begin{cases} 0, x≤3 \\ 3, x\gt3\end{cases} [/math]
Y ensayamos soluciones de la forma::
[math] u(x,t)=\sum_{k=0}^∞T_k(t)φ_k(x)=\sum_{k=0}^∞T_k(t)cos\frac{kπ}{5}x [/math]
Relacionando los resultados obtenidos en el problema de autovalores y el problema de difusión de la sustancia contaminante obtenemos lo siguiente::
[math]\begin{cases} T'_k(t)+μ_kT_k(t)=c_k=0 \\ T_k(0)=a_k \end{cases} [/math]
La solución de este último problema de valor inicial es::
[math]T_k(t)=a_ke^{-μ_kt}[/math]
De esta manera obtenemos la solución final::
[math] u(x,t)=\sum_{k=0}^∞a_ke^{-μ_kt}cos\frac{kπ}{5}x [/math]
Resolveremos a través de Matlab, con una serie de Fourier de 1, 3, 5, 10 y 20 términos.
%Datos
L=5; %Longitud de varilla
T=0.5; %tiempo final
q=1;
%Discretización temporal y espacial
dx=0.1; % Paso en espacio
N=L/dx; %Número de subintervalos
x=0:dx:L;% Vector de espacio
dt=dx/4; % Paso en tiempo
t=0:dt:T; % Vector de tiempos
M=1; %Número de términos
sol=zeros(length(t),N+1);
u=[zeros(1,(N*3/5)+1),ones(1,N*2/5)*3];
%Aplicamos Fourier
for j=1:M
phi=cos((j*pi*x)/5);
a=(trapz(x,u.*phi))/(trapz(x,phi.^2));
TT=exp(-(j^2)*(pi^2)*t/25)*a;
sol=sol+TT'*phi;
end
%Dibujamos la solucion
[xx,tt]=meshgrid(x,t);
surf(xx,tt,sol);
Gráficamente la concentración de la sustancia calculada por el método de Fourier será:
Como se puede anteriores gráficas apreciamos la precisión va aumentando a medida que aumenta el número de términos que utilizamos. Si tomamos 20 términos en la serie, la aproximación es mejor, como veremos en la siguiente imagen:

