Está en la página 1de 8

Ecuaciones Lotka-Volterra

Contenido

1 Introduccin 2 Premisas 3 Mtodo de Euler 3.1 Programa Matlab 4 Mtodo Runge-Kutta 4.1 Programa Matlab 5 Resolucin del Problema inverso 5.1 Programa Matlab

1. Introduccin
Este artculo muestra la resolucin del modelo Lotka-Volterra, tambin conocido como ecuaciones predadorpresa, que se usan para el modelado de dos poblaciones que interactuan, una presa y un depredador, usando diferentes mtodos en MATLAB (Euler, Runge-Kutta y el mtodo del trapecio). Las ecuaciones fueron propuestas de forma independiente por Alfred Lotka en 1925 y Vito volterra en 1926.

2. Premisas
En nuestro caso la presa es la poblacin de conejos y el depredador la poblacin de zorros, que interactuarn entre ellos en un ecosistema que supondremos aislado, de forma que los conejos slo sern cazados por los zorros y los zorros slo se alimentarn de conejos. El modelo Lokta-Volterra parte de unas premisas que aslan a las dos especies y las interrelacionan entre s. La primera premisa expone que si no hay zorros los conejos se reproducen maltusianamente

R(t)=RR
Siendo R(t): la variacin de la poblacin de conejos, R: la poblacin de conejos, : la constante de natalidad de los conejos y : la constante de mortalidad de los conejos. Al no haber presencia de zorros los conejos no sern cazados y se multiplicarn exponencialmente siendo la solucin

R(t)=Ke

La segunda premisa dice que si no hubiese conejos que comer la poblacin de zorros disminuira siguiendo tambin el modelo de Malthus

F=F+F
Igual que en el anterior F: es la poblacin de zorros, F: es la variacin de la poblacin de zorros, : la constante de mortalidad y : la constante de natalidad. Siendo la natalidad nula la poblacin de zorros disminuira exponencialmente

F(t)=Ce

Las relaciones entre las dos especies se definen en las premisas 3 y 4 de forma que: La tercera premisa introduce la relacin de los conejos con los zorros, siendo los conejos que son comidos (que mueren) proporcionales a la relacin entre conejos y zorros

R=bFR
Siendo c: la constante de proporcionalidad de la relacin entre conejos y zorros

Y la cuarta premisa expresa la natalidad de los zorros en funcin de los conejos que son comidos por los zorros

F=dFR
Definiendo d la constante de natalidad de los zorros. De tal forma que nos queda un sistema de ecuaciones:

Igualando

=a;=c
Donde a: constante de natalidad de los conejos; b: constante de mortalidad de los conejos; c: constante de mortalidad de los zorros; d: constante de natalidad de los zorros.

3. Mtodo de Euler
Usando el mtodo de Euler y resolviendo (con MATLAB) obtenemos los siguientes grficas:

En dicho grfico se puede observar que cuando la poblacin de depredadores (zorros) disminuye, la de presas (conejos) aumentar, y viceversa. En el grfico se ve como en ningn momento se llegan a igualar las poblaciones, y por lo tanto el ecosistema formado por conejos y zorros se puede considerar estable.

En estas grficas se observa que asignando los valores propuestos, existirn varios puntos en los cuales las poblaciones de depredador y presa, es decir, zorros y conejos, se igualarn e incluso podemos afirmar que habr perodos parciales en los cuales la cantidad de zorros ser mayor que la de conejos, o que provoca el posterior decrecimiento de la poblacin de zorros. Si los valores hubieran sido ms extremos, podra haber llegado a producirse la extincin de zorros despus de un gran decrecimiento de la poblacin de conejos.

3.1 Programa Matlab

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.

a=0.4; b=0.37; c=0.3; d=0.05; t0=input('Introduzca el valor del tiempo inicial: '); t1=input('Introduzca el valor deltiempo final: '); N=t1*10; h=(t1-t0)/N; C=zeros(N+1); Z=zeros(N+1); C(1)=input('Introduzca el valor de la poblacin inicial de conejos en miles: '); Z(1)=input('Introduzca el valor de la poblacin inicial de zorros en miles: '); for n=1:N C(n+1)=C(n)+ h*(a*C(n)-b*C(n)*Z(n)); Z(n+1)=Z(n)+h*(-c*Z(n)+d*C(n)*Z(n)); end hold on x=t0:h:t1; figure(1) plot(x,C,'g') plot(x,Z,'r') xlabel('tiempo') ylabel('Nmero de conejos/zorros') figure(2) plot(C,Z,'b') xlabel('Nmero de conejos') ylabel('Nmero de zorros') hold off

4. Mtodo Runge-Kutta
Ahora aplicando el mtodo de Runge-Kutta obtenemos:

Comparando los resultados obtenidos en la grfica mediante ambos mtodos numricos, sea Euler y RungeKutta, se observa que las soluciones a travs del mtodo Runge-Kutta son ms exactos y precisos, pues la diferencia entre mximos es menor, lo que significa que se ajusta ms en los resultados a un intervalo mas aproximado. En el mtodo de Euler la precisin depende de la variable h, cuanto menor sea con respecto al intervalo ms convergente es el sistema y por consiguiente ms preciso es este mtodo. Sin embargo con el mtodo de Runge-Kutta se pueden obtener buenas aproximaciones a pesar de darle grandes valores a h. Respecto a la dificultad que se presenta a la hora de usar el mtodo del trapecio para resolver este sistema es que a este mtodo, a pesar de ser ms exacto, le surge el inconveniente y la dificultad de despejar Yn+1. Tambin debe tenerse en cuenta que Euler y Runge-Kutta son mtodos explcitos, sin embargo el mtodo del trapecio como el mtodo teta, son implcitos y no lineales, y para resolverlos tendramos que convertirlos en explcitos de la manera ya comentada que tan laboriosa resulta a veces.

4.1 Programa Matlab

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.

t0=input('Introduzca el valor del tiempo inicial: '); t1=input('Introduzca el valor deltiempo final: '); N=t1*10; h=(t1-t0)/N; C=zeros(N+1); Z=zeros(N+1); C(1)=input('Introduzca el valor de la poblacin inicial de conejos en miles: '); Z(1)=input('Introduzca el valor de la poblacin inicial de zorros en miles: '); a=0.4; b=0.37; c=0.3; d=0.05; for n=1:N k1=a*C(n)-b*C(n)*Z(n); m1=-c*Z(n)+d*C(n)*Z(n); k2=a*(C(n)+0.5*k1)-b*(C(n)+0.5*k1)*Z(n); m2=-c*(Z(n)+0.5*m1)+d*C(n)*(Z(n)+0.5*m1); k3=a*(C(n)+0.5*k2)-b*(C(n)+0.5*k2)*Z(n); m3=-c*(Z(n)+0.5*m2)+d*C(n)*(Z(n)+0.5*m2); k4=a*(C(n)+k3)-b*(C(n)+k3)*Z(n); m4=-c*(Z(n)+m3)+d*C(n)*(Z(n)+m3); C(n+1)=C(n)+h/6*(k1+2*k2+2*k3+k4); Z(n+1)=Z(n)+h/6*(m1+2*m2+2*m3+m4); end hold on x=t0:h:t1; figure(1) plot(x,C,'g') plot(x,Z,'r') xlabel('tiempo') ylabel('Nmero de conejos/zorros') figure(2) plot(C,Z,'b') xlabel('Nmero de conejos') ylabel('Nmero de zorros') hold off

5. Resolucin del Problema inverso


Tambin podemos obtener los datos de las poblaciones que haba hace un tiempo determinado. Usando matlab obtenemos

C=3.577,4conejos//Z=230,4zorros
Como se observa en las siguientes grficas:

Descargas

Descargas

5.1 Programa Matlab

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32.

a=0.4; b=0.37; c=0.3; d=0.05; t0=100; t1=0; N=t0*10; h=(t0-t1)/N; %valor del tiempo entre cada una de las N iteraciones t=t0:-h:t1; C=zeros(N+1); Z=zeros(N+1); C=input('Introduzca el valor de la poblacin inicial de conejos en miles: '); Z=input('Introduzca el valor de la poblacin inicial de zorros en miles: '); I=[C,Z]; C=I(1); Z=I(2); for n=1:N k1=[a*I(1)-c*I(1)*I(2), -b*I(2)+d*I(2)*I(1)]; k2=[a*(I(1)+1/2*h*k1(1))-c*(I(1)+1/2*h*k1(1))*(I(2)+1/2*h*k1(2)),b*(I(2)+1/2*h*k1(2))+d*(I(2)+1/2*h*k1(2))*(I(1)+1/2*h*k1(1))]; k3=[a*(I(1)+1/2*h*k2(1))-c*(I(1)+1/2*h*k2(1))*(I(2)+1/2*h*k2(2)),b*(I(2)+1/2*h*k2(2))+d*(I(2)+1/2*h*k2(2))*(I(1)+1/2*h*k2(1))]; k4=[a*(I(1)+h*k3(1))-c*(I(1)+h*k3(1))*(I(2)+h*k3(2)),-b*(I(2)+h*k3(2))+d*(I(2)+h*k3(2))*(I(1)+h*k3(1))]; I=I+h*(k1+2*k2+2*k3+k4)/6; C(n+1)=I(1); Z(n+1)=I(2); end hold on figure(1) plot(t,C,'g') plot(t,Z,'b') figure(2) plot(C,Z,'r') hold off

También podría gustarte