Quit[];

Két fajból álló kompetitív és kooperatív Lotka-Volterra-rendszerek: 1. Kompetitív eset

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

A modell

eq={x'[t]== x[t]((Subscript[r, 1])-(Subscript[a, 11])x[t]-(Subscript[a, 12])y[t]),y'[t]== y[t]((Subscript[r, 2])-(Subscript[a, 21])x[t]-(Subscript[a, 22])y[t])};ini={x[0]==x0,y[0]==y0};

f[x_,y_]:=x((Subscript[r, 1])-(Subscript[a, 11])x-(Subscript[a, 12])y);g[x_,y_]:= y((Subscript[r, 2])-(Subscript[a, 21])x-(Subscript[a, 22])y);

eq=={x'[t]==f[ x[t],y[t]],y'[t]==g[x[t],y[t]]}

Jelölések

Ahol:

x(t) az egyik faj létszáma a t időpontban

y(t) a másik faj létszáma a t időpontban

(Subscript[r, 1]),(Subscript[r, 2])>0 a belső növekedési ráta (azaz születési és a halálozási ráta különbsége)

(Subscript[a, 11]),(Subscript[a, 22])>0 az intraspecifikus verseny erőssége

(Subscript[a, 12]),(Subscript[a, 21])>0 az interspecifikus verseny erőssége

Kiegészítő magyarázat

az egyik faj hiányában a másik fajnak logisztikus szaporodási rátája van: (Subscript[K, 1]):=((Subscript[r, 1])/(Subscript[a, 11])) és (Subscript[K, 2]):=((Subscript[r, 2])/(Subscript[a, 22])) környezetfenntartó-képesség mellett

ugyanazért az erőforrásért versengenek, ezért a másik faj jelenléte kedvezőtlen az egyik faj számára, ezt fejezi ki a (Subscript[a, 21]),(Subscript[a, 12])>0 feltétel

feltehető (1 valószínűséggel), hogy Det[A]≠0, ahol A:=((Subscript[a, ij])) az interakciós mátrix

Egyensúlyi helyzetek (vagy stacionárius pontok)

stac=Solve[{0==f[x,y],0==g[x,y]},{x,y}]//Simplify

{Ν3,P3}={Ν,P}/.stac[[2]];

(E^0):=(0,0)

(E^1):=(((Subscript[r, 1])/(Subscript[a, 11])),0)

(E^2):=(0,((Subscript[r, 2])/(Subscript[a, 22])))

(E^3):=((((Subscript[a, 22]) (Subscript[r, 1])-(Subscript[a, 12]) (Subscript[r, 2]))/(Det[A])),(((Subscript[a, 11]) (Subscript[r, 2])-(Subscript[a, 21]) (Subscript[r, 1]))/(Det[A])))∈((((SuperPlus[ℝ])))^2) az alábbi két esetben:

A)      ((Subscript[a, 12])/(Subscript[a, 22]))<((Subscript[r, 1])/(Subscript[r, 2]))<((Subscript[a, 11])/(Subscript[a, 21]))       (ekkor Det[A]>0)

B)      ((Subscript[a, 11])/(Subscript[a, 21]))<((Subscript[r, 1])/(Subscript[r, 2]))<((Subscript[a, 12])/(Subscript[a, 22]))       (ekkor Det[A]<0)

Amikor (E^3):=((((Subscript[a, 22]) (Subscript[r, 1])-(Subscript[a, 12]) (Subscript[r, 2]))/(Det[A])),(((Subscript[a, 11]) (Subscript[r, 2])-(Subscript[a, 21]) (Subscript[r, 1]))/(Det[A])))∉((((SuperPlus[ℝ])))^2), kapunk két további esetet:

C)      (((Subscript[a, 22]) (Subscript[r, 1])-(Subscript[a, 12]) (Subscript[r, 2]))/(Det[A]))≤0, azaz ((Subscript[r, 1])/(Subscript[r, 2]))≤((Subscript[a, 12])/(Subscript[a, 22]))<((Subscript[a, 11])/(Subscript[a, 21])) vagy ((Subscript[r, 1])/(Subscript[r, 2]))≥((Subscript[a, 12])/(Subscript[a, 22]))>((Subscript[a, 11])/(Subscript[a, 21]))

D)      (((Subscript[a, 11]) (Subscript[r, 2])-(Subscript[a, 21]) (Subscript[r, 1]))/(Det[A]))≤0, azaz ((Subscript[a, 12])/(Subscript[a, 22]))<((Subscript[a, 11])/(Subscript[a, 21]))≤((Subscript[r, 1])/(Subscript[r, 2])) vagy  ((Subscript[a, 12])/(Subscript[a, 22]))>((Subscript[a, 11])/(Subscript[a, 21]))≥((Subscript[r, 1])/(Subscript[r, 2]))

Részletes vizsgálata az A) esetben

aeset=((Subscript[a, 12])/(Subscript[a, 22]))<((Subscript[r, 1])/(Subscript[r, 2]))<((Subscript[a, 11])/(Subscript[a, 21]));

ClearAll[par,param];
param={(Subscript[r, 1])->1,(Subscript[r, 2])->2,(Subscript[a, 11])->1,(Subscript[a, 12])->0.3,(Subscript[a, 21])->1,(Subscript[a, 22])->1,x0->0.2,y0->0.4};
par={(Subscript[r, 1])->1,(Subscript[r, 2])->2,(Subscript[a, 11])->1,(Subscript[a, 12])->0.3,(Subscript[a, 21])->1,(Subscript[a, 22])->1};

aeset/.par

Valóban teljesítik az aktuális paraméterek az A esetet definiáló egyenlőtlenségeket.

ClearAll[nds];nds[x0_,y0_]:=NDSolve[{x'[t]==x[t]((Subscript[r, 1])-(Subscript[a, 11])x[t]-(Subscript[a, 12])y[t]),y'[t]==y[t]((Subscript[r, 2])-(Subscript[a, 21])x[t]-(Subscript[a, 22])y[t]),x[0]==x0,y[0]==y0}/.par,{x[t],y[t]},{t,0,1000}][[1]]

xnull=Solve[f[x,y]==0,y][[1,1,2]]

ynull=Reduce[{g[x,y]==0,y>0,(Subscript[a, 21])>0,(Subscript[a, 22])>0,(Subscript[r, 2])>0},y,Reals][[5,2]]

nullclines=Plot[{xnull,ynull}/.par,{x,0,2},PlotRange->{-0.1,3.5},Epilog->{Red,PointSize[0.02],Point/@({x,y}/.stac/.par)},PlotLabel->"A) eset"];

nullclinesfull=Plot[{xnull,ynull}/.par,{x,0,2},PlotRange->{-0.1,3.5},Epilog->{Red,PointSize[0.02],Point/@({x,y}/.stac/.par),{Black,Text[((Subscript[r, 1])/(Subscript[a, 11])),{1,0.5}]},{Black,Text[((Subscript[r, 2])/(Subscript[a, 21])),{2,0.5}]},{Black,Text[((Subscript[r, 2])/(Subscript[a, 22])),{0.2,1.9}]},{Black,Text[((Subscript[r, 1])/(Subscript[a, 12])),{0.2,3.2}]}},PlotLabel->"A) eset"]

vp=VectorPlot[{f[x,y],g[x,y]}/.par,{x,0,2},{y,0,3.5},AxesOrigin->{0,0},VectorScale->0.1,PlotLabel->"A) eset"];

sp=StreamPlot[{f[x,y],g[x,y]}/.par,{x,0,2},{y,0,3.5},AxesOrigin->{0,0},VectorScale->0.1,PlotLabel->"A) eset"<>"\n"]

Show[nullclines,sp,PlotLabel->"A) eset",AxesLabel->{x,y}]

pp[x0_,y0_]:=ParametricPlot[Evaluate[{x[t],y[t]}/.
nds[x0,y0]],{t,0,1000},PlotRange->All,PlotStyle->Directive[Thick,Red]];

p1=pp[0.2,0.4];p2=pp[0.2,3];p3=pp[1.2,0.3];p4=pp[2,0.3];p5=pp[2,2];p6=pp[2,3];

Show[nullclines,sp,p1,p2,p3,p4,p5,p6,PlotLabel->"A) eset"]

Megjegyzések

Látszik, hogy (E^3) aszimptotikusan stabilis (globálisan is), (E^0),(E^1),(E^2) pedig instabilis

Szemléletesen nyilvánvaló, hogy Det[A]>0 – azaz -(Subscript[a, 12]) (Subscript[a, 21])+(Subscript[a, 11]) (Subscript[a, 22])>0 – azt jelenti, hogy az intraspecifikus verseny erősebb, mint az interspecifikus.

Részletes vizsgálata a B) esetben

ClearAll[param,par];
param={(Subscript[r, 1])->2,(Subscript[r, 2])->1,(Subscript[a, 11])->1,(Subscript[a, 12])->1,(Subscript[a, 21])->1,(Subscript[a, 22])->0.3,x0->0.2,y0->0.4};
par={(Subscript[r, 1])->2,(Subscript[r, 2])->1,(Subscript[a, 11])->1,(Subscript[a, 12])->1,(Subscript[a, 21])->1,(Subscript[a, 22])->0.3};

beset=((Subscript[a, 12])/(Subscript[a, 22]))>((Subscript[r, 1])/(Subscript[r, 2]))>((Subscript[a, 11])/(Subscript[a, 21]));

beset/.par

Valóban teljesítik az aktuális paraméterek a B esetet definiáló egyenlőtlenségeket.

ClearAll[nds];nds[x0_,y0_]:=NDSolve[{x'[t]==x[t]((Subscript[r, 1])-(Subscript[a, 11])x[t]-(Subscript[a, 12])y[t]),y'[t]==y[t]((Subscript[r, 2])-(Subscript[a, 21])x[t]-(Subscript[a, 22])y[t]),x[0]==x0,y[0]==y0}/.par,{x[t],y[t]},{t,0,1000}][[1]]

nullclines=Plot[{xnull,ynull}/.par,{x,0,2},PlotRange->{-0.1,3.5},Epilog->{Red,PointSize[0.02],Point/@({x,y}/.stac/.par)},PlotLabel->"B) eset"];

nullclinesfull=Plot[{xnull,ynull}/.par,{x,0,2},PlotRange->{-0.1,3.5},Epilog->{Red,PointSize[0.02],Point/@({x,y}/.stac/.par),{Black,Text[((Subscript[r, 2])/(Subscript[a, 21])),{1,0.5}]},{Black,Text[((Subscript[r, 1])/(Subscript[a, 11])),{2,0.5}]},{Black,Text[((Subscript[r, 1])/(Subscript[a, 12])),{0.2,1.9}]},{Black,Text[((Subscript[r, 2])/(Subscript[a, 22])),{0.2,3.1}]}},PlotLabel->"B) eset"]

vp=VectorPlot[{f[x,y],g[x,y]}/.par,{x,0,2},{y,0,3.5},AxesOrigin->{0,0},VectorScale->0.1,PlotLabel->"B) eset"];

sp=StreamPlot[{f[x,y],g[x,y]}/.par,{x,0,2},{y,0,3.5},AxesOrigin->{0,0},VectorScale->0.1,PlotLabel->"B) eset"<>"\n"]

Show[nullclines,sp,PlotLabel->"B) eset"]

pp[x0_,y0_]:=ParametricPlot[Evaluate[{x[t],y[t]}/.
nds[x0,y0]],{t,0,1000},PlotRange->All,PlotStyle->Directive[Thick,Red]];

p1=pp[0.2,0.4];p2=pp[0.2,1.5];p3=pp[1.2,0.3];p4=pp[2,0.3];p5=pp[2,2];p6=pp[1,3];

Show[nullclines,sp,p1,p2,p3,p4,p5,p6,PlotLabel->"B) eset"<>"\n"]

Megjegyzések

Látszik, hogy (E^1) és (E^2) aszimptotikusan stabilis (de nem globálisan), szeparatrix választja el a vonzási tartományokat. (E^0),(E^3) pedig instabilis

Szemléletesen nyilvánvaló, hogy Det[A]<0, – azaz -(Subscript[a, 12]) (Subscript[a, 21])+(Subscript[a, 11]) (Subscript[a, 22])<0 – azt jelenti, hogy az intraspecifikus verseny gyengébb, mint az interspecifikus.

Részletes vizsgálata a C) esetben

ceset=Or[((Subscript[a, 11])/(Subscript[a, 21]))>((Subscript[a, 12])/(Subscript[a, 22]))≥((Subscript[r, 1])/(Subscript[r, 2])),((Subscript[a, 11])/(Subscript[a, 21]))<((Subscript[a, 12])/(Subscript[a, 22]))≤((Subscript[r, 1])/(Subscript[r, 2]))];

par1={(Subscript[r, 1])->1,(Subscript[r, 2])->2,(Subscript[a, 11])->0.6,(Subscript[a, 12])->0.55,(Subscript[a, 21])->1,(Subscript[a, 22])->1};
param1=par1⋃{x0->0.2,y0->0.4};
ceset/.par1

par2={(Subscript[r, 1])->2,(Subscript[r, 2])->1,(Subscript[a, 11])->0.6,(Subscript[a, 12])->1,(Subscript[a, 21])->1,(Subscript[a, 22])->1};
param2=par2⋃{x0->0.2,y0->0.4};
ceset/.par2

Valóban teljesítik az aktuális paraméterek a C esetet definiáló egyenlőtlenségeket.

abra[adat_]:=Module[{ize=ToExpression["par"<>ToString[adat]]},nullclines=Plot[{xnull,ynull}/.ize,{x,0,3adat-1},PlotRange->{-0.1,3.5},Epilog->{Red,PointSize[0.02],Point/@({x,y}/.stac/.ize)},PlotLabel->"C"<>ToString[adat]<>") eset"];
nullclinesfull=Plot[{xnull,ynull}/.ize,{x,0,3adat-1},PlotRange->{-0.1,3.5},Epilog->{Red,PointSize[0.02],Point/@({x,y}/.stac/.ize),{Black,Text[((Subscript[r, 1])/(Subscript[a, 11])),{1.65,0.5}]},{Black,Text[((Subscript[r, 2])/(Subscript[a, 21])),{2,0.5}]},{Black,Text[((Subscript[r, 1])/(Subscript[a, 12])),{0.2,0.9}]},{Black,Text[((Subscript[r, 2])/(Subscript[a, 22])),{0.2,1.9}]}},PlotLabel->"C"<>ToString[adat]<>") eset"];
sp=StreamPlot[{f[x,y],g[x,y]}/.ize,{x,0,3adat-1},{y,-0.1,3.5},AxesOrigin->{0,0},VectorScale->0.1,PlotLabel->"C"<>ToString[adat]<>") eset"];
Show[nullclines,sp,PlotLabel->"C"<>ToString[adat]<>") eset"]]

GraphicsRow[{abra[1],abra[2]},ImageSize->800]

A C1 esetben (E^0), a C2 esetben (E^1) aszimptotikusan stabilis, a többi stacionárius pont mind instabilis. Lássuk a trajektóriákat is.

ClearAll[nds];nds[x0_,y0_,adat_]:=NDSolve[{x'[t]==x[t]((Subscript[r, 1])-(Subscript[a, 11])x[t]-(Subscript[a, 12])y[t]),y'[t]==y[t]((Subscript[r, 2])-(Subscript[a, 21])x[t]-(Subscript[a, 22])y[t]),x[0]==x0,y[0]==y0}/.ToExpression["par"<>ToString[adat]],{x[t],y[t]},{t,0,1000}][[1]]

pp[x0_,y0_,adat_]:=ParametricPlot[Evaluate[{x[t],y[t]}/.
nds[x0,y0,adat]],{t,0,1000},PlotRange->All,PlotStyle->Directive[Thick,Red]];

p1=pp[0.2,0.4,1];p2=pp[0.2,1.5,1];p3=pp[1.2,0.3,1];p4=pp[2,0.3,1];p5=pp[2,2,1];p6=pp[1,3,1];

abra[1];

Show[nullclines,sp,p1,p2,p3,p4,p5,p6,PlotLabel->"C1) eset"]

abra[2];

p1=pp[0.2,0.4,2];p2=pp[0.2,1.5,2];p3=pp[1.2,0.3,2];p4=pp[2,0.3,2];p5=pp[2,2,2];p6=pp[1,3,2];

Show[nullclines,sp,p1,p2,p3,p4,p5,p6,PlotLabel->"C2) eset"]

Megjegyzések

Szemléletesen nyilvánvaló, hogy  ((Subscript[r, 1])/(Subscript[r, 2]))<((Subscript[a, 12])/(Subscript[a, 22]))és((Subscript[r, 1])/(Subscript[r, 2]))<((Subscript[a, 11])/(Subscript[a, 21]))  azt jelenti, hogy a második fajnál nagy a belső növekedési ráta, kicsi az intraspecifikus verseny, az egyes fajnál pedig kicsi a belső növekedési ráta és nagy az intraspecifikus verseny, (Subscript[a, 12]) nagy, tehát az első fajt a második jelenléte erősen hátráltatja, míg (Subscript[a, 21])  kicsi, tehát a második fajt az első jelenléte alig hátráltatja

Részletes vizsgálata a D) esetben

deset=Or[((Subscript[r, 1])/(Subscript[r, 2]))≥((Subscript[a, 11])/(Subscript[a, 21]))>((Subscript[a, 12])/(Subscript[a, 22])),((Subscript[r, 1])/(Subscript[r, 2]))≤((Subscript[a, 11])/(Subscript[a, 21]))<((Subscript[a, 12])/(Subscript[a, 22]))];

ClearAll[par,param];
param={(Subscript[r, 1])->2,(Subscript[r, 2])->1,(Subscript[a, 11])->1,(Subscript[a, 12])->1,(Subscript[a, 21])->1,(Subscript[a, 22])->0.6,x0->0.2,y0->0.4};
par={(Subscript[r, 1])->2,(Subscript[r, 2])->1,(Subscript[a, 11])->1,(Subscript[a, 12])->1,(Subscript[a, 21])->1,(Subscript[a, 22])->0.6};

ClearAll[par1,param1];
param=1{(Subscript[r, 1])->2,(Subscript[r, 2])->1,(Subscript[a, 11])->1,(Subscript[a, 12])->1,(Subscript[a, 21])->1,(Subscript[a, 22])->1.6,x0->0.2,y0->0.4};
par1={(Subscript[r, 1])->2,(Subscript[r, 2])->1,(Subscript[a, 11])->1,(Subscript[a, 12])->1,(Subscript[a, 21])->1,(Subscript[a, 22])->1.6};

ClearAll[par2,param2];
param2={(Subscript[r, 1])->1,(Subscript[r, 2])->2,(Subscript[a, 11])->1,(Subscript[a, 12])->1,(Subscript[a, 21])->1,(Subscript[a, 22])->0.6,x0->0.2,y0->0.4};
par2={(Subscript[r, 1])->1,(Subscript[r, 2])->2,(Subscript[a, 11])->1,(Subscript[a, 12])->1,(Subscript[a, 21])->1,(Subscript[a, 22])->0.6};

(deset/.#)&/@{par1,par2}

Valóban teljesítik az aktuális paraméterek a D esetet definiáló egyenlőtlenségeket.

abra[adat_]:=Module[{ize=ToExpression["par"<>ToString[adat]]},nullclines=Plot[{xnull,ynull}/.ize,{x,0,3adat-1},PlotRange->{-0.1,3.5},Epilog->{Red,PointSize[0.02],Point/@({x,y}/.stac/.ize)},PlotLabel->"C"<>ToString[adat]<>") eset"];
nullclinesfull=Plot[{xnull,ynull}/.ize,{x,0,3adat-1},PlotRange->{-0.1,3.5},Epilog->{Red,PointSize[0.02],Point/@({x,y}/.stac/.ize),{Black,Text[((Subscript[r, 1])/(Subscript[a, 11])),{1.65,0.5}]},{Black,Text[((Subscript[r, 2])/(Subscript[a, 21])),{2,0.5}]},{Black,Text[((Subscript[r, 1])/(Subscript[a, 12])),{0.2,0.9}]},{Black,Text[((Subscript[r, 2])/(Subscript[a, 22])),{0.2,1.9}]}},PlotLabel->"C"<>ToString[adat]<>") eset"];
sp=StreamPlot[{f[x,y],g[x,y]}/.ize,{x,0,3adat-1},{y,-0.1,3.5},AxesOrigin->{0,0},VectorScale->0.1,PlotLabel->"C"<>ToString[adat]<>") eset"];
Show[nullclines,sp,PlotLabel->"D"<>ToString[adat]<>") eset"]]

GraphicsRow[{abra[1],abra[2]},ImageSize->600]

ClearAll[nds];nds[x0_,y0_,adat_]:=NDSolve[{x'[t]==x[t]((Subscript[r, 1])-(Subscript[a, 11])x[t]-(Subscript[a, 12])y[t]),y'[t]==y[t]((Subscript[r, 2])-(Subscript[a, 21])x[t]-(Subscript[a, 22])y[t]),x[0]==x0,y[0]==y0}/.ToExpression["par"<>ToString[adat]],{x[t],y[t]},{t,0,1000}][[1]]

pp[x0_,y0_,adat_]:=ParametricPlot[Evaluate[{x[t],y[t]}/.
nds[x0,y0,adat]],{t,0,1000},PlotRange->All,PlotStyle->Directive[Thick,Red]];

p1=pp[0.2,0.4,1];p2=pp[0.2,1.5,1];p3=pp[1.2,0.3,1];p4=pp[2,0.3,1];p5=pp[2,2,1];p6=pp[1,3,1];

abra[1];
Show[nullclines,sp,p1,p2,p3,p4,p5,p6,PlotLabel->"D1) eset"]

abra[2];
Show[nullclines,sp,p1,p2,p3,p4,p5,p6,PlotLabel->"D2) eset"]

Megjegyzések

A D1 esetben (E^1), a D2 esetben (E^2) aszimptotikusan stabilis, a többi stacionárius pont mind instabilis.

Szemléletesen nyilvánvaló, hogy  ((Subscript[r, 1])/(Subscript[r, 2]))>((Subscript[a, 12])/(Subscript[a, 22]))és((Subscript[r, 1])/(Subscript[r, 2]))>((Subscript[a, 11])/(Subscript[a, 21]))  azt jelenti, hogy a második fajnál kicsi a belső növekedési ráta, nagy az intraspecifikus verseny, az első fajnál pedig nagy a belső növekedési ráta és kicsi az intraspecifikus verseny, (Subscript[a, 12]) kicsi, tehát az első fajt a második jelenléte alig hátráltatja, míg (Subscript[a, 21]) nagy, tehát a második fajt az első jelenléte erősen. hátráltatja

Magyarázat

A C) és D) esetben érvényesül a versengő kizárás elve: a gyengébb paraméterekkel rendelkező faj kihal, míg az erősebb paraméterekkel rendelkező fennmarad.

Hivatkozások