Você está na página 1de 9

Un ejemplo clásico de un sistema de ecuaciones no lineales es el modelo predador-

presa. En un cierto hábitat viven conejos y linces, cuyas poblaciones en el instante t


denotamos por x(t ) e y (t ) , respectivamente. El modelo depredador presa establece
que se verifica el siguiente sistema.

x´(t )  Ax(t )  Bx(t ) y (t )


y´(t )  Cx(t ) y (t )  Dy (t )
Con datos: A  2, B  0.02, C  0.0002, D  0.8

Considerando inicialmente hay, y (0)  120 linces y x(0)  3000 conejos.

a) Hacer el programa utilizando el método más apropiado que considere usted.


b) Mostrar gráficamente el comportamiento N° de linces (y) vs N° de conejos (x).
Explique el comportamiento.
c) Que sucede si variamos las condiciones iniciales, por ejemplo y (0)  100 linces
y x(0)  5000 conejos. Superponer los gráficos obtenidos al caso b). Explique el
comportamiento
Nota: Utilizar el método de Runge Kutta 2
SOLUCION
a)
%
===============================================================
==========
% Programa de Matlab para dibujar un retrato de fase para el depredador Lotka-
Volterra
% Modelo de presa. Los resultados se muestran en cada paso de tiempo.
% Además, el usuario tiene la opción de trazar un gráfico de series de tiempo para x
o y.
% Establezca la opción de parámetro = 1 para una gráfica de series de tiempo para
x.
% Establecer la opción = 2 para una gráfica de series de tiempo para y.
% El usuario puede cambiar los parámetros de ecuación de alfa, beta, gamma y detla.
%
===============================================================
==========
function LotkaVolterra_JA
clear % Borra la ventana de comando.
clc % borra el historial de comandos.
clf % Elimina cualquier elemento de la ventana de la figura antes de la simulación.
% =============== Escoja opción 1 o 2
=====================================
choice = 1;
countdown = 5; % Cuenta regresiva antes de que se ejecute la simulación.
iterations = 1; % Establece el conteo de interacciones iniciales en 1.
pausetime = 0.1; % Muestra soluciones en cada paso de tiempo.
runtime = 0.4; % Tiempo de duración de la simulación.
% =============== Valores de los parámetros de la ecuación
================
alpha = 2;
beta = 0.02;
gamma = 0.0002;
delta = 0.8;
% =============== Condiciones iniciales para x e y
========================
initialx = 120;
initialy = 3000;
fprintf('--------------------------------------\nModelo depredador-presa Lotka-Volterra \n\n\t
Codigo Matlab \n--------------------------------------')
fprintf('\n\nValores de los parametros establecidos,')
fprintf('\n\nalpha = %2.6f \nbeta = %2.6f \ngamma = %2.6f \ndelta = %2.6f
',alpha,beta,gamma,delta)
fprintf('\n\nPara trazar un gráfico de series de tiempo para x, establezca el parámetro
de elección en el código en 1')
fprintf('\nSeleccione la opción 2 para trazar un gráfico de series de tiempo para
y.\n\nSimulación se ejecutará en ')
for i = 5:-1:1
fprintf('\n%8i',countdown') % Cuenta regresiva para el inicio de la simulación.
countdown = countdown-1;
pause(1)
end
fprintf('\n')
% Resuelve las ecuaciones con el Runge Kutta)
deq1=@(t,x) [x(1)*(alpha - beta*x(2)); -x(2)*(gamma-delta*x(1))];
[t,sol] = ode45(deq1,[0 runtime],[initialx initialy]);
arraysize = size(t); % Establece el tamaño de la matriz de tiempo para el bucle for.
%============ Las soluciones se trazan en cada paso de tiempo =============
for i = 1 : max(arraysize)
subplot(2,1,1)
plot(sol(iterations,1),sol(iterations,2),'.','color',[rand; rand;
rand],'markersize',14,'MarkerFaceColor','b');
hold on
title(['Ecuaciones de Lotka-Volterra t = ' num2str(t(iterations)) ' s '],'fontsize',12)
xlabel('x','fontsize',12)
ylabel('y','fontsize',12)
axis([min(sol(:,1)) max(sol(:,1)) min(sol(:,2)) max(sol(:,2))])

subplot(2,1,2)
text(0.1,0.5,'El gráfico de series de tiempo se mostrará al final de la simulación')

iterations = iterations + 1; % Agrega 1 al conteo de iteraciones.


pause(pausetime)
end
% ==== Dibuja series de tiempo de x o y gráfico según la opción ==========
if choice == 1
subplot(2,1,2)
plot(t(:,1),sol(:,1),'b.','markersize',10,'MarkerFaceColor','b')
title(['series de tiempo de Lotka-Volterra para x tiempo de ejecución = '
num2str(max(t)) ' segundos '],'fontsize',12)
xlabel('t')
ylabel('x')
axis([min(t(:,1)) max(t(:,1)) min(sol(:,1)) max(sol(:,1))])
elseif choice == 2
title(['Series de tiempo de Lotka-Volterra para y tiempo de ejecución = '
num2str(max(t)) ' segundos '],'fontsize',12)
subplot(2,1,2)
plot(t(:,1),sol(:,2),'r.','markersize',10,'MarkerFaceColor','b')
title(['Series de tiempo de Lotka-Volterra para y tiempo de ejecución = '
num2str(max(t)) ' segundos '],'fontsize',12)
xlabel('t')
ylabel('x')
axis([min(t(:,1)) max(t(:,1)) min(sol(:,2)) max(sol(:,2))])
end
%====================== Fin del programa
==================================

b)
Series de tiempo de Lotka-Volterra para x

Series de tiempo de Lotka-Volterra para y


c)
Series de tiempo de Lotka-Volterra para x

Series de tiempo de Lotka-Volterra para y


Un sistema de ecuaciones diferenciales que presenta CAOS es el de Lorentz, el cual es
una simplificación de las ecuaciones originales que encontró en la predicción del tiempo.

x´ 10( y  x)
y´ x(25  z )  y
8z
z´ xy  ( )
3
Con las condiciones iniciales x (0)  0.1 , y (0)  1 y z (0)  0.1 .

Tiempo en t en  0 :1000 .

a) Elabore un programa por el método de RK4.


b) Mostrar el comportamiento de dos dimensiones para cada una de las variables
involucradas y explique el comportamiento
c) Mostrar en 3D, el comportamiento x, y, z.
SOLUCION

El modelo es un sistema de tres ecuaciones diferenciales ordinarias ahora conocidas


como ecuaciones de Lorenz:
dx
  ( y  x)
dt
dy
 x(   z )  y
dt
dz
 xy   z
dt
Las ecuaciones describen la tasa de cambio de tres cantidades con respecto al tiempo:
x es proporcional a la tasa de convección, y a la variación de temperatura horizontal, y
z a la variación de temperatura vertical.

Las constantes  ,  y  son parámetros del sistema proporcionales al número de


Prandtl, el número de Rayleigh y ciertas dimensiones físicas de la capa en sí
Normalmente se supone que los parámetros  ,  y  son positivos.

Lorenz usó los valores   10 ,   8 3 y   28 . El sistema muestra un


comportamiento caótico para estos valores (y cercanos).

a)
% De resolución en el intervalo de tiempo [0,100] con condiciones iniciales [0.1,1,0.1]
% '' f '' es un conjunto de ecuaciones diferenciales
% '' a '' es una matriz que contiene las variables "x", "y" y "z"
% '' t '' es variable de tiempo
sigma = 10;
beta = 8/3;
rho = 28;
f = @(t,a) [-sigma*a(1) + sigma*a(2); rho*a(1) - a(2) - a(1)*a(3); -beta*a(3) +
a(1)*a(2)];
[t,a] = ode45(f,[0 100],[0.1 1 0.1]); % Solucionador de 4to orden Runge-Kutta
plot3(a(:,1),a(:,2),a(:,3))

b)
% De objetivo: resolver las ecuaciones de Lorenz
% dx / dt = sigma * (y-x); dy / dt = -x * z + r * x-y; dz / dt = x * y-b * z
sig = 10.0; b = 8/3; r = 20; % Parámetros
t (1) = 0.0; % Inicial t
x (1) = 0.1; y (1) = 1; z (1) = 0.1; % Inicial x, y, z
dt = 0,005; % Hora de caminar
nn = 10000; % De pasos de tiempo
para k = 1: nn % bucle de tiempo
fx = sig * (y (k) -x (k)); % RHS de la ecuación x
fy = -x (k) * z (k) + r * x (k) -y (k); % RHS de la ecuación y
fz = x (k) * y (k) -b * z (k); % RHS de la ecuación z
x (k + 1) = x (k) + dt * fx; % Encontrar nuevo x
y (k + 1) = y (k) + dt * fy; % Encontrar nuevas y
z (k + 1) = z (k) + dt * fz; % Buscar nueva z
t (k + 1) = t (k) + dt; % Encontrar nuevas t
fina l% bucle de tiempo de cierre
parcela (t, x) % Parcela x vs t
título (’CFB’) % título
xlabel (’t’); ylabel (’x’); % De ejes de etiquetas

c)
La tasa (g/min) a la que se contamina el lago A esta dado por:

dx1 x x
 20  2  1
xt 80 20
La tasa (g/min) a la que se contamina el lago B está dado por:

dx2 x x
 35  1  2
xt 40 20
Estos lagos están interconectados, siendo las concentraciones x1 y x2 del contaminante
en los lagos A y B. Si inicialmente el lago A tiene x1 (0)  50 g y el lago B x2 (0)  20 g .
h  0.1 y t  0,5 .

SOLUCION

clc % borra el historial de comandos.


clear % Borra la ventana de comando.
% Modelamiento de la tasa de contaminación
h=0.1;
n=5/h;
x1(0)=50; % Gramos en el lago A.
x2(0)=20; % Gramos en el lago B.
t=0:h:5;
for i=1:n;
dx1=20+(x2(i)/80)-(x1(i)/20);
x1(i+1)=x1x1(i)+h*dx1;
dx2=35+(x1(i)/40)-(x2(i)/40);
x2(i+1)=x2(i)+h*dx2;
end
plot(t,x1,'r*o-')
plot(t,x2,'b*-')
title('Variación de la concentración en los lagos A y B','fontsize',4)
xlabel('tiempo (segundos)','fontsize',4)
ylabel('concentraciones','fontsize',4)
legend('Concentración A','Concentración B')

Você também pode gostar