Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Resuelve las ecuaciones Predator-Prey

Este ejemplo muestra cómo resolver una ecuación diferencial que representa un modelo depredador/presa utilizando ambos y.ode23ode45 Estas funciones son para la solución numérica de ecuaciones diferenciales ordinarias utilizando métodos de integración de tamaño de paso variable Runge-Kutta. utiliza un simple par de fórmulas de 2ª y 3ª orden para una precisión media y utiliza un par de orden 4º y 5º para una mayor precisión.ode23ode45

Consideremos el par de ecuaciones diferenciales ordinarias de primer orden conocidas como:Lotka-Volterra equations predator-prey model

<math display="block">
<mrow>
<mtable columnalign="left">
<mtr>
<mtd>
<mrow>
<mfrac>
<mrow>
<mi mathvariant="normal">dx</mi>
</mrow>
<mrow>
<mi mathvariant="normal">dt</mi>
</mrow>
</mfrac>
<mo>=</mo>
<mi mathvariant="italic">x</mi>
<mo>-</mo>
<mi>α</mi>
<mi mathvariant="normal">xy</mi>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mfrac>
<mrow>
<mi mathvariant="normal">dy</mi>
</mrow>
<mrow>
<mi mathvariant="normal">dt</mi>
</mrow>
</mfrac>
<mo>=</mo>
<mo>-</mo>
<mi mathvariant="italic">y</mi>
<mo>+</mo>
<mi>β</mi>
<mi mathvariant="normal">xy</mi>
<mo>.</mo>
</mrow>
</mtd>
</mtr>
</mtable>
</mrow>
</math>

Las variables

<math display="inline">
<mrow>
<mi mathvariant="italic">x</mi>
</mrow>
</math>
Y
<math display="inline">
<mrow>
<mi mathvariant="italic">y</mi>
</mrow>
</math>
miden los tamaños de las poblaciones de presas y depredadores, respectivamente. El término transversal cuadrático explica las interacciones entre la especie. La población de presas aumenta cuando no hay depredadores presentes, y la población de depredadores disminuye cuando las presas escasean.

Código ecuaciones

Para simular el sistema, cree una función que devuelva un vector de columna de derivados de estado, dados los valores de estado y tiempo. Las dos variables

<math display="inline">
<mrow>
<mi mathvariant="italic">x</mi>
</mrow>
</math>
Y
<math display="inline">
<mrow>
<mi mathvariant="italic">y</mi>
</mrow>
</math>
se pueden representar en MATLAB como los dos primeros valores de un vector.y Del mismo modo, los derivados son los dos primeros valores en un vector.yp La función debe aceptar valores para y y devolver los valores producidos por las ecuaciones en.tyyp

yp(1) = (1 - alpha*y(2))*y(1)

yp(2) = (-1 + beta*y(1))*y(2)

En este ejemplo, las ecuaciones están contenidas en un archivo llamado.lotka.m Este archivo utiliza valores de parámetro de

<math display="inline">
<mrow>
<mi>α</mi>
<mo>=</mo>
<mn>0</mn>
<mo>.</mo>
<mn>01</mn>
</mrow>
</math>
Y
<math display="inline">
<mrow>
<mi>β</mi>
<mo>=</mo>
<mn>0</mn>
<mo>.</mo>
<mn>02</mn>
</mrow>
</math>
.

type lotka
function yp = lotka(t,y) %LOTKA  Lotka-Volterra predator-prey model.  %   Copyright 1984-2014 The MathWorks, Inc.  yp = diag([1 - .01*y(2), -1 + .02*y(1)])*y; 

Simular sistema

Utilíciese para resolver la ecuación diferencial definida en el intervaloode23lotka

<math display="inline">
<mrow>
<mn>0</mn>
<mo><</mo>
<mi>t</mi>
<mo><</mo>
<mn>15</mn>
</mrow>
</math>
. Utilice una condición inicial de
<math display="inline">
<mrow>
<mi mathvariant="italic">x</mi>
<mrow>
<mo>(</mo>
<mrow>
<mn>0</mn>
</mrow>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mi mathvariant="italic">y</mi>
<mrow>
<mo>(</mo>
<mrow>
<mn>0</mn>
</mrow>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mn>20</mn>
</mrow>
</math>
para que las poblaciones de depredadores y presas sean iguales.

t0 = 0; tfinal = 15; y0 = [20; 20];    [t,y] = ode23(@lotka,[t0 tfinal],y0);

Resultados de trazado

Trazar las poblaciones resultantes contra el tiempo.

plot(t,y) title('Predator/Prey Populations Over Time') xlabel('t') ylabel('Population') legend('Prey','Predators','Location','North')

Ahora trazar las poblaciones uno contra el otro. La trama de plano de fase resultante hace que la relación cíclica entre las poblaciones sea muy clara.

plot(y(:,1),y(:,2)) title('Phase Plane Plot') xlabel('Prey Population') ylabel('Predator Population')

Comparar resultados de diferentes Solvers

Resuelva el sistema una segunda vez usando, en lugar de.ode45ode23 El solucionador toma más tiempo para cada paso, pero también toma pasos más grandes.ode45 Sin embargo, la salida de es suave porque, de forma predeterminada, el solucionador utiliza una fórmula de extensión continua para producir la salida en cuatro puntos de tiempo igualmente espaciados en el intervalo de cada paso tomado.ode45 (Puede ajustar el número de puntos con la opción.)'Refine' Trace ambas soluciones para la comparación.

[T,Y] = ode45(@lotka,[t0 tfinal],y0);  plot(y(:,1),y(:,2),'-',Y(:,1),Y(:,2),'-'); title('Phase Plane Plot') legend('ode23','ode45')

Los resultados muestran que la resolución de ecuaciones diferenciales utilizando diferentes métodos numéricos puede producir respuestas ligeramente diferentes.

Consulte también

|

Temas relacionados