5. Популяцияны дамытудың компьютерлік модельдері (Мальтус және Ферхульст модельдері)
(2) Мальтустың математикалық моделін келесідей
N′ (t) = f(N), где f(N) = N0e (α – β)t
ал (3) Ферхюльстің математикалық моделін келесідей жазайық
N′ (t) = f(N), где f(N) = rN(t) - k N2 (t)]
мұнда қажетті функция N(t) болып табылады, онда Эйлер-Коши формулалары бойынша осы теңдеулер үшін популяцияның даму моделінің шешімі келесідей есептеледі:
Бұл формулалар компьютерлік модельдің негізі болып табылады.
program Popul_mf;
uses Crt, Graph;
var i, j, l, z, gM, gD, bg, bv, g0k, v0k, yk, tk, Nk, vk : integer;
a, b, r, k, as, t0, dt, ag, av, kg, kv, Np, N0, N1: real; ass: string;
t, v, N: array [1..2000] of real; ysl: boolean;
function f (z: integer; x: real): real;
begin if z = 1 then f:= (a-b)*x; {матмодель Мальтуса}
if z = 2 then f:= r*x – k*sqr(x); {матмодель Ферхюльста}
end;
BEGIN
a:=0.6; b:=0.5; {исходные данные модели Мальтуса}
r:= 0.3; k:= 0.001; {исходные данные модели Ферхюльста}
dt:=0.01;
for z:=1 to 2 do
begin
t0:=0; N0:=1000; {начальные данные обеих моделей}
i:=1; t[1]:=t0; N[1]:=N0; v[1]:=f(z, N0);
repeat { моделирование изменения численности популяции}
Np:=N0+dt*f(z, N0); {формул Эйлера }
N1:=N0+dt*(f(z, N0)+f(z, Np))/2; { формула Эйлера-Коши}
t0:=t0+dt; N0:=N1;
i:=i+1; t[i]:=t0; N[i]:=N1; v[i]:=f(z,N1);
if z = 1 then ysl:= abs(t0-10)<=0.1;
{условие окончание цикла repeat для модели Мальтуса}
if z =2 then ysl:= abs(N0-r/k)<= 1;
{условие окончание цикла repeat для модели Ферхюльста}
until ysl;
Достарыңызбен бөлісу: |