Explotación minera (Grupo21-C)

De MateWiki
Revisión del 01:17 5 mar 2015 de Maire perez (Discusión | contribuciones) (Utilización de Runge Kutta de cuarto orden y Heun con el apartado anterior)

Saltar a: navegación, buscar
Trabajo realizado por estudiantes
Título Explotación minera. Grupo 21-C
Asignatura Ecuaciones Diferenciales
Curso Curso 2014-15
Autores Jesús Infestas Robles, Pablo Medina Higueras , Alejandro Perales Juidías, Jaime Delage Ramírez, Mairena Pérez López
Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura


1 Introducción

  • La idea principal se basa en el modelo de Gompertz ,el cual muestra las tasas de crecimiento en un periodo de tiempo y su disminución de forma exponencial con el paso del mismo.Aplicado a nuestro caso se trata de una explotación de un yacimiento mineral, en un principio se decide explotar por su posible rentabilidad,el cual en un periodo de tiempo dado -25 años- será durante el cual se extrae la cantidad mayor de mineral y a partir de dicho tiempo,empecerá a descender esta producción, las causas son ajenas a nuestro estudio, pero seguramente ya no exista el mismo rendimiento.
  • Con lo cual nuestro problema muestra una ecuación diferencial que sigue esta forma:

[math] \frac{dQ}{dt}=rQlog(\frac{K}{Q}) [/math]

1.1 Relación de cantidad y produccion

[math] P(Q) = \frac{dQ}{dt}=rQlog(\frac{K}{Q}) [/math]

  • 1.Necesitamos saber para que valor Q alcanza el máximo, para ello derivamos nuestra función respecto a Q :

[math] P'(Q) =r(log(\frac{K}{Q})+Q\frac{\frac{-K}{Q^2}}{\frac{K}{Q}})=r(log(\frac{K}{Q})-1)⇐⇒P′(Q) = 0⇐⇒log(\frac{K}{Q})=1⇐⇒(\frac{K}{Q})=e⇐⇒Q=(\frac{K}{e}) [/math]

  • 2. Y así obtendremos nuestra tasa intrínseca de crecimiento(r) para nuestra función Gompertz :
  • 3. Tenemos en cuenta que nuestra producción máxima son 240 toneladas/año, entonces :

1.2 Relación de la producción y el volumen de toneladas extraídas modelo de Gompertz

  • Realizamos el programa teniendo en cuenta nuestra tasa intrínseca de crecimiento anteriormente hallada:


r=240*exp(1)/10785;           %tasa intrínseca de crecimiento
k=10875;                      %la cantidad total (toneladas) extraible
Q=0:1:10875;                  %vector con la cantidad de toneladas desde 0 hasta el maximo que se extraen
N=length(Q);                  %Tamaño vector Q
P=zeros(1,N);                 %vector de ceros deuna fila y N columnas
for i=1:N                     %realizo el bucle 
    P(i)=r*Q(i)*log(k/Q(i));  %Defino la funcion P(Q) 
end 
plot(Q,P)                     %Dibujo mi grafica como una curva con Q(abcisas) y P(ordenadas)
xlabel('cantidad (tn)')       %añado un pequeño titulo a mi Q y P
ylabel('produccion (tn/año)')


  • Análisis de nuestra curva:
1.Como se puede apreciar,nuestra función realiza una curva que transcurre desde 0 hasta la cantidad máxima de toneladas que se pueden extraer.
2.Además;la curva que describre nuestra función alcanza su máximo relativo en 240 toneladas por año, que es la producción máxima de nuestra función.

1.3 Relación de la producción y el volumen de toneladas extraídas modelo de Verhulst

  • Realizamos nuestro programa con nuestra nueva función y tasa intrínseca de crecimiento para el modelo de Verhulst :

[math] Q'=rQ(1-\frac{Q}{k}) [/math]


r1=240*exp(1)/10875;           %Tasa intrinseca de creciemiento modelo de Gompertz
r2=(240*4)/10875;              %Tasa intrinseca de creciemiento modelo de Verhulst
K=10875;                       %Cantidad maxima de toneladas extraibles
Q=0:1:10875;                   %Vector con la cantidad en toneladas desde 0 hasta K
N=length(Q);                   %Tamaño de nuestro vector Q
for i=1:N                      %Realizamos un bucle desde uno hasta el numero de elementos(N) de nuestro vector Q
    PG(i)=r1*Q(i)*log(K/Q(i)); %Gompertz
    PV(i)=r2*Q(i)*(1-Q(i)/K);  %Verhulst
end                            %cerramos el bucle
subplot(1,3,1)
plot(Q,PG)                     %Dibujamos una curva en nuestro eje x(Q)y nuestro eje y(funcion de Gompertz)
xlabel('cantidad')             %añadimos titulo a las abcisas
ylabel('produccion')           %añadimos titulo a las ordenadas
subplot(1,3,2)
plot(Q,PV,'g')                 %dibujamos nuestra curva con eje x(Q) y eje y(funcion del modelo de Verhulst)
xlabel('cantidad (tn)')        %añadimos titulo a las abcisas d 
ylabel('produccion (tn/año)')  %añadimos titulo a las ordenadas
subplot(1,3,3)
plot(Q,PG)                     %Dibujamos una curva en nuestro eje x(Q)y nuestro eje y(funcion de Gompertz)
xlabel('cantidad')             %añadimos titulo a las abcisas
ylabel('produccion')           %añadimos titulo a las ordenadas
hold on                        %sobre nuestra curva anterior le superponemos la siguiente
plot(Q,PV,'g')                 %dibujamos nuestra curva con eje x(Q) y eje y(funcion del modelo de Verhulst)
xlabel('cantidad (tn)')        %añadimos titulo a las abcisas d 
ylabel('produccion (tn/año)')  %añadimos titulo a las ordenadas
legend('Modelo Gompertz','Modelo Verhulst','Location','best') 
hold off


  • Análisis de nuestras gráficas :


Comparación de gráficos



  • 1.En la primera subventana aparece la curva del modelo de Gompertz explicada en el apartado anterior
  • 2.En la segunda subventana aparece la curva del modelo de Verhulst , de acuerdo con este podemos decir que ajusta bastante bien cuando está alejado del momento inicial
  • 3.







1.4 Utilización del método de Euler,RK4 y Heun

  • Previo

Euler es un método de aproximación de problemas de valor inicial,obtendremos la solución aproximación de soluciones en un intervalo definido.Si nuestra h es pequeña la aproximación será mejor, ya que la acumulación de errores en cada solución será menor.

1.5 Función Q(t), obtención por Euler y dibujo de su gráfica

  • Aunque nuestra cantidad inicial es 0 ponemos 0.1 porque sino al hacer Euler saldría una indeterminación, y no se podría dibujar nuestra gráfica, así que hemos elegido ese valor pequeño para que funcione correctamente


t0=0;                                      %El tiempo inicial es cero
Q0=0.1;                                    %Al principio la cantidad de mineral extraida es cero
h=1/12;                                    %El enunciado dice que el paso es de un mes, y como nuestra unidad es el año, el paso será 1/12
                                           %Definimos la variable independiente pero como no conocemos el tiempo en el que se paraliza la excavacíón, 
                                           %por lo que del vector t solo definimos el primer elemento
t=t0;                                      %Primer elemento de t
r=240*exp(1)/10875;                        %El valor de r ha sido hallado en el apartado 2
K=10875;                                   %Cantidad total extraible
                                           %Al no conocer el tiempo final, tampoco podemos saber el valor de N, y por
                                           %lo tanto, el tamaño del vector Q, por lo que solo definimos el primer
                                           %elemento del vector
Q(1)=Q0;
i=1;                                       %el bucle empieza con el elemento 1
while 1                                    %Empezamos el bucle que rastrea todos los elementos hasta el buscado  
     Q(i+1)=Q(i)+h*(r*Q(i)*log(K/Q(i)));   %euler
     t(i+1)=t(i)+h;                        
    if i>1&&abs((r*Q(i)*log(K/Q(i)))-25)<0.1&r*Q(i-1)*log(K/Q(i-1))>r*Q(i)*log(K/Q(i))  
                                           %Vemos cuando la producción deja de ser rentable, que será cuando la producción baje a 25 toneladas
      
break                                      %en ese momento salimos del bucle
    end                                    %cerramos el bucle
   i=i+1;                                  %para que nuestro bucle prosiga elemento a elemento hasta encontrar el de la condicion if
end


plot(t,Q,'r')                              %dibujamos la curva en rojo, tiempo en abcisas y cantidad en ordenadas
legend('Euler','Location','best')          %ponemos una leyenda nuestra curva


1.6 Utilización de Runge Kutta de cuarto orden y Heun con el apartado anterior

  • Realizamos el mismo ejercicio que en el apartado anterior, pero esta vez, utilizando los métodos de Runge Kutta de cuarto orden y Heun
t0=0;                                      %El tiempo inicial es cero
y0=0.1;                                    %Al principio la cantidad de mineral extraida es cero
h=1/12;                                    %El paso nos dice que es de un mes, y como nuestra unidad es el año el paso es 1/10
                                           %Definimos la variable independiente pero como no conocemos el tiempo en el que se paraliza 
                                           %la excavacíon, por lo que del vector t solo definimos el primer elemento
t=t0;
r=240*exp(1)/10875;                        %el valor de r ha sido hallado en el apartado 2
K=10875;                                   %Cantidad total extraible
                                           %Al no conocer el tiempo final, tampoco podemos saber el valor de N, y por lo tanto, el 
                                           %tamaño de los vectores y y z, por lo que solo definimos el primer elemento de los vectores.

y(1)=y0;                                   %RK4
z(1)=y0;                                   %Heun
i=1;
while 1                                    %Empezamos el bucle de Runge Kutta
                                           %RK4
K1=r*y(i)*log(K/y(i)); 
K2=r*(y(i)+1/2*K1*h)*log(K/(y(i)+1/2*K1*h));
K3=r*(y(i)+1/2*K2*h)*log(K/(y(i)+1/2*K2*h));
K4=r*(y(i)+K3*h)*log(K/(y(i)+K3*h));
y(i+1)=y(i)+h/6*(K1+2*K2+2*K3+K4);
     t(i+1)=t(i)+h;
    if i>1&&abs((r*y(i)*log(K/y(i)))-25)<0.1&r*y(i-1)*log(K/y(i-1))>r*y(i)*log(K/y(i))
      
break
    end
   i=i+1;
end
i=1;
while 1                                   %Empezamos el bucle de Heun
                                          %Heun
k1=r*z(i)*log(K/z(i));
k2=r*(z(i)+k1*h)*log(K/(z(i)+k1*h));
z(i+1)=z(i)+(h/2)*(k1+k2);
     t(i+1)=t(i)+h;
    if i>1&&abs((r*z(i)*log(K/z(i)))-25)<0.1&r*z(i-1)*log(K/z(i-1))>r*z(i)*log(K/z(i))
break
    end
   i=i+1;
end


hold on
plot(t,y,'r');                           %Dibujamos nuestra primera gráfica                                      
plot(t,z,'g');                           %Dibujamos nuestra segunda gráfica
legend('RK4','Heun','Location','best') 
hold off


  • Se puede observar la gran aproximación que hay en nuestras dos gráficas obtenidas por los métodos de Runge Kutta de cuarto orden y por Heun.

1.7 Tendencia de nuestra cantidad Q cuando el tiempo lim→ ∞

  • Realizamos el programa usando un tiempo máximo elegido por nosotros,que sea grande para ver la tendencia de nuestra función (tmáximo 10000)
%Q(t)=K*exp(exp(-r*t)*(log(Q0/K)))
%y por lo tanto el limite valdrá:
t=0:1:10000;                             %vector t desde 0 hasta 10000
N=length(t);                             %tamaño del vector t
Q=zeros(1,N);                            %matriz de una fila y N columnas
r=240*exp(1)/10875;                      %valor de nuestra tasa intriseca de crecimiento en Gompertz
Q0=0.1;                                  %valor inicial
K=10875;                                 %cantidad maxima extraible
Q(1)=Q0;                                 %primer valor de nuestra matriz Q es Q0
Q=K*exp(exp(-r*t)*(log(Q0/K)));          %Definimos nuestra funcion de Gompertz
for i=1:N                                %empezamos el bucle desde 1 hasta el tamaño del vector t ,(N)
    Q(i)=K*exp(exp(-r*t(i))*(log(Q0/K)));%Definimos Gompertz en funcion de cada elemento de t
end                                      %cerramos el bucle
Q(10000)                                 %               
plot(t,Q)                                %dibujamos la curva con tiempo en abcisas y Q en ordenadas
xlabel('tiempo(años)')                   %titulo al eje x
ylabel('cantidad (tn)')                  %titulo al eje y