Diferencia entre revisiones de «Modelos de mezclas (Grupo 20)»

De MateWiki
Saltar a: navegación, buscar
(Enunciado de nuestro problema)
 
(No se muestran 30 ediciones intermedias de 4 usuarios)
Línea 1: Línea 1:
 +
{{Trabajo|Modelo de mezclas|[[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:Trabajos 2012-13|2012-13]]}}
 
Este árticulo muestra la resolución en español del trabajo número cinco llevado a cabo por el grupo 20. El problema consiste en un modelo de mezclas, en el que intervienen dos embalses de agua limpia y una cierta cantidad de contaminante tóxico.
 
Este árticulo muestra la resolución en español del trabajo número cinco llevado a cabo por el grupo 20. El problema consiste en un modelo de mezclas, en el que intervienen dos embalses de agua limpia y una cierta cantidad de contaminante tóxico.
  
Línea 66: Línea 67:
 
<math> xa'(t)=\frac{-4*xa(t)}{100} + \frac{1*xb(t)}{100} </math>
 
<math> xa'(t)=\frac{-4*xa(t)}{100} + \frac{1*xb(t)}{100} </math>
  
<math> xb'(t)=\frac{4*xa(t)}{100} - \frac{4,5*xb(t)}{100} </math>
+
<math> xb'(t)=\frac{4*xa(t)}{100} - \frac{5,5*xb(t)}{100} </math>
  
 
== Tercer apartado ==
 
== Tercer apartado ==
3. Resolver ambos sistemas por un método de Euler y comparar los resultados. ¿Cuál es la diferencia
+
'''3. Resolver ambos sistemas por un método de Euler y comparar los resultados. ¿Cuál es la diferencia de tiempo que tarda en desaparecer la mitad del contaminante inicial en el pantano A cuando se activa el sistema de limpieza? ¿Y la tercera parte?'''
de tiempo que tarda en desaparecer la mitad del contaminante inicial en el pantano A cuando
+
se activa el sistema de limpieza? ¿Y la tercera parte?
+
  
 
Ahora utilizamos el método de Euler para resolver nuestros dos sistemas ( el inicial y el del plan de limpieza):
 
Ahora utilizamos el método de Euler para resolver nuestros dos sistemas ( el inicial y el del plan de limpieza):
Línea 147: Línea 146:
 
N=10000; h=(tN-t0)/N; %Número y amplitud de subintervalos
 
N=10000; h=(tN-t0)/N; %Número y amplitud de subintervalos
 
v=100; %Volumen de los lagos A y B
 
v=100; %Volumen de los lagos A y B
A=[-4/v,1/v;4/v,-4.5/v]; %Matriz con los coeficientes que multiplicarán a xa y xb
+
A=[-4/v,1/v;4/v,-5.5/v]; %Matriz con los coeficientes que multiplicarán a xa y xb
 
x=x0; %Asignación de los valores iniciales a la primera columna de la matriz solución
 
x=x0; %Asignación de los valores iniciales a la primera columna de la matriz solución
 
xa(1)=x(1); %Iniciamos el vector cantidad de contaminante en A
 
xa(1)=x(1); %Iniciamos el vector cantidad de contaminante en A
Línea 208: Línea 207:
  
  
Por otro lado, el contaminante tarda en reducirse hasta la tercera parte del contaminate inicial 39 días y con el plan de limpieza tarde 35, es decir, 4 días menos.
+
Por otro lado, el contaminante tarda en reducirse una tercera parte del contaminate inicial 14 días y con el plan de limpieza tarde 11, es decir, tres días menos.
  
 
== Cuarto apartado ==
 
== Cuarto apartado ==
Línea 253: Línea 252:
 
N=10000; h=(tN-t0)/N; %Número y amplitud de subintervalos
 
N=10000; h=(tN-t0)/N; %Número y amplitud de subintervalos
 
v=100; %Volumen de los lagos A y B
 
v=100; %Volumen de los lagos A y B
A=[-4/v,1/v;4/v,-4.5/v]; %Volumen de los lagos A y B
+
A=[-4/v,1/v;4/v,-5.5/v]; %Volumen de los lagos A y B
 
x=x0; %Asignación de los valores iniciales a la primera columna de la matriz solución
 
x=x0; %Asignación de los valores iniciales a la primera columna de la matriz solución
 
xa(1)=x(1); %Iniciamos el vector cantidad de contaminante en A
 
xa(1)=x(1); %Iniciamos el vector cantidad de contaminante en A
Línea 264: Línea 263:
 
     x = x + (h/6)*(k1 + 2*k2 + 2*k3 + k4);
 
     x = x + (h/6)*(k1 + 2*k2 + 2*k3 + k4);
 
     xa(n+1)=x(1);
 
     xa(n+1)=x(1);
 +
 
     xb(n+1)=x(2);
 
     xb(n+1)=x(2);
 
end
 
end
Línea 279: Línea 279:
 
|-
 
|-
 
| [[Archivo:tercer.jpg|thumb|500px|left|Resolución del caso inicial con el método de Runge-Kutta]] || [[Archivo:cuartos.jpg|thumb|500px|left|Resolución del caso del plan de limpieza con el método de Runge-Kutta. |500px]]
 
| [[Archivo:tercer.jpg|thumb|500px|left|Resolución del caso inicial con el método de Runge-Kutta]] || [[Archivo:cuartos.jpg|thumb|500px|left|Resolución del caso del plan de limpieza con el método de Runge-Kutta. |500px]]
 +
|}
 +
 +
 +
 +
Comparando el método de Euler y el de Runge-Kutta con la solución real, observamos que el método de Rung-Kutta es más próximo a la solución real.
 +
 +
 +
 +
{|
 +
|-
 +
| [[Archivo:solucion sin aproximar.jpg|thumb|500px|left|Solución]] ||
 
|}
 
|}
  
 
== Quinto apartado ==
 
== Quinto apartado ==
  
'''5. Si no conocemos la cantidad de contaminante inicial pero sabemos que tras unos días se redujo el contaminante a solo una tonelada en A y dos en B. ¿Cuánto contaminante se estima que se vertió inicialmente?'''
+
'''5. Si no conocemos la cantidad de contaminante inicial pero sabemos que tras unos días se redujo el contaminante a solo una tonelada en A y dos en B. ¿Cuánto contaminante se estima que se vertió inicialmente?
 +
Planteamos el sistema  tomando como valores iniciales los valores de xa y xb que no dan,tomando tN=0  y t0 distinto de cero(t0=100).
 +
Veremos que en la grafica nos sale una exponencial creciente hacia la izquierda,no tiende a cero en ningun momento; como partimos de que el contaminante se echa en el lago A, en el lago B se supone que no hay contaminate,pero la grafica nos muestra otra cosa, por lo que no podriamos estimar la cantidad de contaminante inicial que hay con los datos que tenemos.
 +
 
 +
En el codigo de matlab seria:
 +
 
 +
{{matlab|codigo=
 +
%Definiciones
 +
t0=100; tN=0; %Extremos del intervalo a estudiar
 +
x0=[1 2]'; %Valores iniciales (para t=0)
 +
N=10000; h=(tN-t0)/N; %Número y amplitud de subintervalos
 +
v=100; %Volumen de los lagos A y B
 +
A=[-3/v,0;3/v,-4.5/v]; %Matriz con los coeficientes que multiplicarán a xa y xb
 +
x=x0; %Asignación de los valores iniciales a la primera columna de la matriz solución
 +
xa(1)=x(1); %Iniciamos el vector cantidad de contaminante en A
 +
xb(1)=x(2); %Iniciamos el vector cantidad de contaminante en B
 +
for n=1:N
 +
    x=x+h*(A*x); %Aplicamos el método de Euler
 +
    xa(n+1)=x(1); %Guardamos la solución como segunda columna de xa
 +
    xb(n+1)=x(2); %Guardamos la solución como segunda columna de xb
 +
end
 +
x=t0:h:tN; %Vector de subintervalos de tiempo
 +
 
 +
%Dibujo
 +
plot(x,[xa;xb],'.') %Cantidad de contaminante en los lagos A y B en función del tiempo
 +
title('Cantidad de contaminante en A y B en función del tiempo');
 +
xlabel('t(días)');
 +
ylabel('cantidad de contaminante (Hm^3)');
 +
}}
 +
 
 +
 
 +
grafica para determinar la cantidad de contaminante inicial:
 +
 
 +
'''
 +
 
 +
{|
 +
|-
 +
| [[Archivo:lagrafica.jpg|thumb|500px|left|Resolución del caso mediante el método de Euler]]
 +
 
 +
 
 +
 
 +
 
 +
[[Categoría:Grado en Ingeniería Civil y Territorial]]
 +
[[Categoría:Ecuaciones Diferenciales]]
 +
[[Categoría:Trabajos 2012-13]]

Revisión actual del 00:27 3 jun 2013

Este árticulo muestra la resolución en español del trabajo número cinco llevado a cabo por el grupo 20. El problema consiste en un modelo de mezclas, en el que intervienen dos embalses de agua limpia y una cierta cantidad de contaminante tóxico.

1 Enunciado de nuestro problema

Modelos de mezclas. Dos pantanos A y B con 100Hm3 de agua cada uno están unidos por una presa que deja pasar agua de A a B. El pantano A recibe 3Hm3/día de agua limpia proveniente de ríos, y el B 1,5Hm3/día. Para mantener el nivel de los pantanos estable la presa de A a B deja pasar una media de 3Hm3/día mientras que la presa al final de B desaloja 4:5Hm3=día. Se produce un vertido tóxico en el pantano A que deja 20 toneladas de un cierto contaminante. Supongamos que se dan las siguientes hipótesis:

1. El contaminante está disuelto de forma homogénea en el agua de los pantanos.

2. Al entrar o salir agua en un pantano, esta se mezcla con el agua del pantano de forma inmediata creando una mezcla homogénea.

3. La variación de contaminante en un lago es la diferencia entre el contaminante que entra y sale en el lago, es decir si denotamos por xA(t) la cantidad de contaminante en el lago A, se tiene dxA dt = velocidad de entrada -velocidad de salida Se pide:

2 Primer apartado

1. Calcular el sistema de ecuaciones diferenciales para las cantidades de contaminantes en los lagos

xA y xB de acuerdo a las hipótesis. ¿Cóomo cambiaría el sistema de ecuaciones si hubiese un

tercer pantano unido a B por una segunda presa que soltara 6Hm3/día recibiendo 1,5Hm3/día

de agua limpia de ríos?


Planteamos el sistemas de ecuaciones respetando las hipótesis iniciales y teniendo en cuenta los valores iniciales de contaminantes en cada pantano:

[math] xa'(t)=\frac{-3*xa(t)}{100} [/math]

[math] xb'(t)=\frac{xa(t)*3}{100}-\frac{4,5*xb(t)}{100} [/math]

xa(0)=20

xb(0)=0


Ahora supioniendo que tenemos el tercer pantano, el sistema sería similar:

[math] xa'(t)=\frac{-3*xa(t)}{100} [/math]

[math] xb'(t)=\frac{xa(t)*3}{100}-\frac{4,5*xb(t)}{Vb(t)} [/math]

[math] xc'(t)=\frac{6*xb(t)}{V(t)} [/math]

xa(0)=20

xb(0)=0

xc(0)=0

3 Segundo apartado

2. Supongamos que se activa un plan de limpieza que consiste en bombear 1Hm3/día de agua del pantano B al A ajustando las cantidades de agua que dejan pasar las presas para mantener estables los niveles de los pantanos. Escribir el nuevo sistema de ecuaciones.


El plan de limpieza modifica el sistema de ecuaciones a:

[math] xa'(t)=\frac{-4*xa(t)}{100} + \frac{1*xb(t)}{100} [/math]

[math] xb'(t)=\frac{4*xa(t)}{100} - \frac{5,5*xb(t)}{100} [/math]

4 Tercer apartado

3. Resolver ambos sistemas por un método de Euler y comparar los resultados. ¿Cuál es la diferencia de tiempo que tarda en desaparecer la mitad del contaminante inicial en el pantano A cuando se activa el sistema de limpieza? ¿Y la tercera parte?

Ahora utilizamos el método de Euler para resolver nuestros dos sistemas ( el inicial y el del plan de limpieza):

Pasado a código Matlab sería así:

Sin plan de limpieza:

%Definiciones
t0=0; tN=300; %Extremos del intervalo a estudiar
x0=[20 0]'; %Valores iniciales (para t=0)
N=10000; h=(tN-t0)/N; %Número y amplitud de subintervalos
v=100; %Volumen de los lagos A y B
A=[-3/v,0;3/v,-4.5/v]; %Matriz con los coeficientes que multiplicarán a xa y xb
x=x0; %Asignación de los valores iniciales a la primera columna de la matriz solución
xa(1)=x(1); %Iniciamos el vector cantidad de contaminante en A
xb(1)=x(2); %Iniciamos el vector cantidad de contaminante en B
for n=1:N
    x=x+h*(A*x); %Aplicamos el método de Euler
    xa(n+1)=x(1); %Guardamos la solución como segunda columna de xa
    xb(n+1)=x(2); %Guardamos la solución como segunda columna de xb
end
x=t0:h:tN; %Vector de subintervalos de tiempo

%Dibujo
plot(x,[xa;xb],'.') %Cantidad de contaminante en los lagos A y B en función del tiempo
title('Cantidad de contaminante en A y B en función del tiempo');
xlabel('t(días)');
ylabel('cantidad de contaminante (Hm^3)');


A continuación mostramos los gráficos de las funciones de la cantidad de contaminante en los pantanos A y B. La línea azul corresponde al pantano A, y la verde al B.

Resolución del caso inicial mediante el método de Euler


















Con plan de limpieza

%Definiciones
t0=0; tN=300; %Extremos del intervalo a estudiar
x0=[20 0]'; %Valores iniciales (para t=0)
N=10000; h=(tN-t0)/N; %Número y amplitud de subintervalos
v=100; %Volumen de los lagos A y B
A=[-4/v,1/v;4/v,-5.5/v]; %Matriz con los coeficientes que multiplicarán a xa y xb
x=x0; %Asignación de los valores iniciales a la primera columna de la matriz solución
xa(1)=x(1); %Iniciamos el vector cantidad de contaminante en A
xb(1)=x(2); %Iniciamos el vector cantidad de contaminante en B
for n=1:N
    x=x+h*(A*x); %Aplicamos el método de Euler
    xa(n+1)=x(1); %Guardamos la solución como segunda columna de xa
    xb(n+1)=x(2); %Guardamos la solución como segunda columna de xb
end
x=t0:h:tN; %Vector de subintervalos de tiempo

%Dibujo
plot(x,[xa;xb],'.') %Cantidad de contaminante en los lagos A y B en función del tiempo
title('Cantidad de contaminante en A y B en función del tiempo');
xlabel('t(días)');
ylabel('cantidad de contaminante (Hm^3)');

La línea azul corresponde al pantano A, y la verde al B.

Resolución del caso del plan de limpieza mediante el método de Euler



















Sin sistema de limpieza tarda 24 días en eliminarse la mitad del contaminante en el pantano A y con el plan tarda tan solo 18, es decir, seis días menos.


Por otro lado, el contaminante tarda en reducirse una tercera parte del contaminate inicial 14 días y con el plan de limpieza tarde 11, es decir, tres días menos.

5 Cuarto apartado

4. Usar el método de Runge-Kutta de cuarto orden para resolver ambos sistemas. Comparar con el método de Euler para diferentes tiempos.

%%programa: apartado41

%Definiciones
t0=0; tN=200; %Extremos del intervalo a estudiar
x0=[20 0]'; %Valores iniciales (para t=0)
N=10000; h=(tN-t0)/N; %Número y amplitud de subintervalos
v=100; %Volumen de los lagos A y B
A=[-3/v,0;3/v,-4.5/v]; %Volumen de los lagos A y B
x=x0; %Asignación de los valores iniciales a la primera columna de la matriz solución
xa(1)=x(1); %Iniciamos el vector cantidad de contaminante en A
xb(1)=x(2); %Iniciamos el vector cantidad de contaminante en B
for n=1:N
    k1 = A*x;
    k2 = A*(x+0.5*h*k1);
    k3 = A*(x+0.5*h*k2);
    k4 = A*(x+h*k3);
    x = x + (h/6)*(k1 + 2*k2 + 2*k3 + k4);
    xa(n+1)=x(1);
    xb(n+1)=x(2);
end
x=t0:h:tN; %Vector de subintervalos de tiempo

%Dibujo
plot(x,[xa;xb],'.') %Cantidad de contaminante en los lagos A y B en función del tiempo
title('Cantidad de contaminante en A y B en función del tiempo');
xlabel('t(días)');
ylabel('cantidad de contaminante (Hm^3)');


%%programa: apartado42

%Definiciones
t0=0; tN=200; %Extremos del intervalo a estudiar
x0=[20 0]'; %Valores iniciales (para t=0)
N=10000; h=(tN-t0)/N; %Número y amplitud de subintervalos
v=100; %Volumen de los lagos A y B
A=[-4/v,1/v;4/v,-5.5/v]; %Volumen de los lagos A y B
x=x0; %Asignación de los valores iniciales a la primera columna de la matriz solución
xa(1)=x(1); %Iniciamos el vector cantidad de contaminante en A
xb(1)=x(2); %Iniciamos el vector cantidad de contaminante en B
for n=1:N
    k1 = A*x;
    k2 = A*(x+0.5*h*k1);
    k3 = A*(x+0.5*h*k2);
    k4 = A*(x+h*k3);
    x = x + (h/6)*(k1 + 2*k2 + 2*k3 + k4);
    xa(n+1)=x(1);

    xb(n+1)=x(2);
end
x=t0:h:tN; %Vector de subintervalos de tiempo

%Dibujo
plot(x,[xa;xb],'.') %Cantidad de contaminante en los lagos A y B en función del tiempo
title('Cantidad de contaminante en A y B en función del tiempo');
xlabel('t(días)');
ylabel('cantidad de contaminante (Hm^3)');t0=0; tN=200;


Resolución del caso inicial con el método de Runge-Kutta
Resolución del caso del plan de limpieza con el método de Runge-Kutta.


Comparando el método de Euler y el de Runge-Kutta con la solución real, observamos que el método de Rung-Kutta es más próximo a la solución real.


Solución

6 Quinto apartado

5. Si no conocemos la cantidad de contaminante inicial pero sabemos que tras unos días se redujo el contaminante a solo una tonelada en A y dos en B. ¿Cuánto contaminante se estima que se vertió inicialmente? Planteamos el sistema tomando como valores iniciales los valores de xa y xb que no dan,tomando tN=0 y t0 distinto de cero(t0=100). Veremos que en la grafica nos sale una exponencial creciente hacia la izquierda,no tiende a cero en ningun momento; como partimos de que el contaminante se echa en el lago A, en el lago B se supone que no hay contaminate,pero la grafica nos muestra otra cosa, por lo que no podriamos estimar la cantidad de contaminante inicial que hay con los datos que tenemos.

En el codigo de matlab seria:

%Definiciones
t0=100; tN=0; %Extremos del intervalo a estudiar
x0=[1 2]'; %Valores iniciales (para t=0)
N=10000; h=(tN-t0)/N; %Número y amplitud de subintervalos
v=100; %Volumen de los lagos A y B
A=[-3/v,0;3/v,-4.5/v]; %Matriz con los coeficientes que multiplicarán a xa y xb
x=x0; %Asignación de los valores iniciales a la primera columna de la matriz solución
xa(1)=x(1); %Iniciamos el vector cantidad de contaminante en A
xb(1)=x(2); %Iniciamos el vector cantidad de contaminante en B
for n=1:N
    x=x+h*(A*x); %Aplicamos el método de Euler
    xa(n+1)=x(1); %Guardamos la solución como segunda columna de xa
    xb(n+1)=x(2); %Guardamos la solución como segunda columna de xb
end
x=t0:h:tN; %Vector de subintervalos de tiempo

%Dibujo
plot(x,[xa;xb],'.') %Cantidad de contaminante en los lagos A y B en función del tiempo
title('Cantidad de contaminante en A y B en función del tiempo');
xlabel('t(días)');
ylabel('cantidad de contaminante (Hm^3)');


grafica para determinar la cantidad de contaminante inicial:

Resolución del caso mediante el método de Euler