Quit[];

A (folytonos idejű, folytonos állapotterű) logisztikus modell

Farkas Miklós: Dynamical models in biology (Academic Press 2001), 19. old.

A modell

eq:=Ν'[t]==r Ν[t](1-((Ν[t])/K));
ini:=Ν[0]==Ν0;

Jelölések

ahol:

N(t) a populáció létszáma a t időpontban

r>0 az úgynevezett belső növekedési ráta (azaz születési és a halálozási ráta különbsége)

K>0 a környezet fenntartóképessége

Megoldása

ClearAll[verhulst];
verhulst[r_,K_,Ν0_]:=Quiet[Simplify[DSolve[{Ν'[t]==r Ν[t](1-((Ν[t])/K)),Ν[0]==Ν0},Ν,t]][[1,1,2,2]]]

verhulst[r,K,Ν0]/.{Ν0->(Subscript[Ν, 0])}

Még megoldható szimbolikusan.

Grafikonok

Rögzített paraméterek mellett

Plot[Evaluate[{verhulst[1.05,300,100],verhulst[1.05,300,500],300}],{t,0,10},PlotRange->{0,600},AxesLabel->{t,Style["N(t)",Italic]},PlotLabel->Style["A népesség létszáma tart\n a környezet eltartóképességéhez\n"<>ToString[TraditionalForm[verhulst[r,K,Ν0]/.{Ν0->(Subscript[Ν, 0])}]],Italic],PlotRange->All]

Plot[Evaluate[verhulst[1.05,300,#]&/@{10,100,200,300,400,600}],{t,0,10},PlotRange->All,Epilog->({Red,Thick,Line[{{((Log[((300-(Subscript[Ν, 0]))/(Subscript[Ν, 0]))])/1.05)-0.5,(300/2)},{((Log[((300-(Subscript[Ν, 0]))/(Subscript[Ν, 0]))])/1.05)+0.5,(300/2)}}/.{(Subscript[Ν, 0])->#}]}&/@{10,100}),AxesLabel->{t,Style["Ν(t)",Italic]}]

A vízszintes vonalkák jelzik az inflexiós pontot. Ha (Subscript[Ν, 0])=200, akkor már nincs inflexiós pont, mert (K/2)<200.

Változtatható paraméterek mellett

Manipulate[Plot[Evaluate[verhulst[r,K,Ν0]],{t,0,15},PlotRange->{0,800},PlotLabel->Style["Logisztikus görbék",Italic],AxesLabel->{t,Style["Ν(t)",Italic]}],
{{r,1.05,Style[r,Italic]},0,2},
{{K,300,Style[K,Italic]},100,400},{{Ν0,100,Style[(Subscript[Ν, 0]),Italic]},0,600},SaveDefinitions->True]

Már a modellből is látszik, hogy ha Ν>K, akkor a populáció csökken, míg Ν<K esetén növekszik.

A megoldásoknak szélsőértéke t>0 esetén nincs, de olyan (Subscript[Ν, 0]) kezdeti feltételekre, amelyekre (Subscript[Ν, 0])<(K/2) van inflexiós pont, ahol mindig Ν=(K/2) (a hosszú távon elérhető maximális létszám fele). Azaz a növekedés akkor a legnagyobb, amikor a populáció létszáma (K/2). A növekedés csökkenni kezd, amint a populáció létszáma ezt az értéket meghaladja.

Érdekességek

Demográfusok kimutatták, hogy az emberi populáció növekedésének csökkenése már megkezdődött.

Egyensúlyi helyzetek (vagy stacionárius pontok)

(N^0):=0 instabilis

(N^1):=K stabilis

Mennyi idő szükséges a populáció megduplázódásához?

((verhulst[r,K,Ν0]/.{t->t+T})/(verhulst[r,K,Ν0]))//Simplify

Numerikusan kiszámolható, de az eredmény - ellentétben az exponenciális szaporodással és fogyással - függ a kezdeti létszámtól is, és attól is, hogy mikortól mérjük a kettőződést. Egy példa:

FindRoot[(((verhulst[r,K,Ν0]/.{t->t+T})/(verhulst[r,K,Ν0]))/.{t->0.5,r->1.05,K->300,Ν0->100})==2,{T,1}]

A modell előnyei

figyelembe veszi, hogy a zsúfoltság és a véges mennyiségű táplálék miatt a populáció nem növekszik korlátlanul

A modell hátrányai

a populáció létszáma folytonosan változik, tehát csak nagy populációlétszámok esetén használható

a populáció létszáma minden határon túl monoton növekszik, ha t→+∞

a modell deteminisztikus

A Mathematica használata során felmerült problémák és megoldásuk

Mivel K a nevezőben szerepel, kezdeti értékét nullától eltérőre kellett állítani.

Nem működik, ha DSolve argumentumába az {eq,ini} listát tesszük.

Hivatkozás

Hyperlink["VerhulstWiki","http://en.wikipedia.org/wiki/Pierre_Fran%C3%A7ois_Verhulst"]