sobota, 12 kwietnia 2014

Modelowanie. Rownanie Lotki Volterry

Modelowanie. Rownanie Lotki Volterry

Fragment mojego duzego tekstu z 1986 roku.

" Uklad dwoch nieliniowych rownan rozniczkowych zwyczajnych pierwszego stopnia Lotki-Volterry pokazuje przykladowo zmiany liczebnosci populacji dwoch gatunków ofiar-prey i drapiezników-predator zywiacych się ofiarami. Jest punktem wyjscia dla innych rownan rozniczkowych.
Oprocz biologi i ekologi stosowany jest nieomal w kazdej dziedzinie fizyki - w mechanice i mechanice kwantowej, hydrodynamice, astrofizyce. W medycynie wykorzystywany jest w neurologi i kardiologi. Stosowany w modelach ekonomicznych od 1965 roku - monopolu, duopolu, oligopolu, konkurencji, popytu, rynku i bezrobocia. Adekwatny do zjawisk w nieomal kazdej galezi gospodarki. Stosowany do modelowania zjawisk chaosu.

Litery a,b,c,d odpowiadaja literaturowym alfa, beta , gamma , delta. Zmienna populacja ofiar w czasie to x(t) a drapieznikow y(t).
dx/dt=(a-by)x , dy/dt=(cx-d)y
a - wspólczynnik eksponencjalnej plodnosci gatunku ofiar. Nie ma zatem zadnych ograniczen srodowiskowych i gatunek ofiary bez obecnosci drapieznika rozrasta sie eksponencjalnie
b - wspolczynnik efektywnosci polowan drapiezcow, ktorzy odzywiaja sie tylko ofiarami i maja nieograniczony apetyt
c - wspolczynnik rozrodczosci drapieznikow na jednostke upolowanej ofiary
d - wspolczynnik eksponencjalnego wymierania drapiezcow bez pozywienia ofiarami

Urokiem sprowadzenia ukladu rownan do postaci kanonicznej jest tez pokazanie ze jest zaledwie jeden parametr okreslajacy rozwiazania ! Wprowadza sie czas bezwymiarowy s=a*t i przeskalowane zmienne u,v.
u(s)= cx(t)/d , v(s)=by(t)/a;
wowczas
du/ds=u(1-v) , dv/ds=teta*v(u-1);
gdzie teta=d/a pokazuje iloraz dynamiki wymierania drapiezcow do plodnosci ofiar calkowice okreslajacy rozwiazanie. Rozwiazanie zalezy oczywiscie od stanow poczatkowych u(0) i v(0).
Stabilnosc i punkty stale wyznaczamy dokonujac linearyzacji pary rownan gdzie wspolczynnikami beda pochodne czastkowe. Z macierzy Jacobiego wynika ze (1,1) to centrum Lapunowa. (0.0) to punkt siodlowy w poczatku ukladu wspolrzednych.
Rozwiązania sa asymptotycznie funkcjami periodycznymi.


A zatem krzywe fazowe sa zamkniete.

Dla czytelnej prezentacji na wykresach zmienne bezwymiarowe sa bardzo korzystne bowiem wartosci fizyczne bardzo sie roznia. Ilosc drapieznikow jest przykladowo duzo mniejsza niz liczba ofiar. Uwzgledniamy to w opisie wykresu podajac wspolczynniki skalowania.
Maksima populacji drapiezcow wystepuja po maksimach populacji ofiar co wynika z tego ze drapiezniki majac dostep do duzej ilosci pozywienia rozmnazja sie szybko. Kiedy drapieznikow jest duzo zjadaja swoje ofiary i ich populacja maleje.

Model nie zapewnia czasem dobrej zgodnosci populacji ofiar i drapieznikow z zjawiskami obserwowanymi w naturze. Dobra zgodnosc uzyskuje sie przykladowo wprowadzajac jednoczesnie proste uzupelnienia
- Ograniczenia pojemnosci srodowiska zyciowego dla ofiar zapobiega astronomicznemu rozrostowi populacji ofiar nieobserwowanemu w przyrodzie. Ograniczeniem od gory moze byc przykladowo ilosc dostepnej trawy dla mnozacych sie krolikow
- Zapewnienie przezycia minimalnej ilosci ofiar, ktore zdolne sa umknac drapiezcom lub schowac sie do kryjowek. Zapobiega to calkowitemu wyniszczeniu gatunku ofiar nieobserwowanemu w przyrodzie.

Uklad rownan nie jest sztywny ale nie jest polecane uzycie metod calkowania rzedu wiekszego od dwoch z uwagi na waski obszar stabilnosci. Zupelnie wystarcza metoda Eulera. Tam gdzie zmodyfikowane rownania LV sa malenka czastka zlozonego systemu nalezy raczej stosowac metody calkowania dla rownan sztywnych"

Przelozony na Matlaba fragmencik programu w Turbo Pascalu

% Rownanie Lotki Voltery.
N=1000; t=1:1:N; x=t; y=t; teta=0.9; u=0.7; v=0.4; ts=0.01;

for i=1:N

u=u+ts*u*(1-v);
v=v+ts*teta*v*(u-1);
x(i)=u; y(i)=v; % Mozna odskalowac tutaj

end

%plot(t,x,':',t,y,'-'); grid;
%title('Bezwymiarowe Rownanie Lotki Voltery: teta=0.9 Blue-Pray, Green-Predator');
plot(y,x,':'); grid;
title('Bezwymiarowe Rownanie Lotki Voltery na plaszczyznie fazowej: teta=0.9');

Brak komentarzy:

Prześlij komentarz