Host-Parasite Models in discrete time

Nicholson-Bailey model

モデル式の定義

fn1 = R H Exp[-a P];
fn2 = c H (1-Exp[-a P]);
fnList = {fn1,fn2};
varList = {H, P};

Plot[ {1-Exp[-x], 1-Exp[-2 x],1-Exp[-0.5x]},{x,0,5},
	PlotRange->{0,1.2},AxesLabel->{"P","Prob. parasitized"},PlotStyle->Thick]

para = {a->0.07, R->2, c->1}
fnListN = fnList/.para

NB モデルの平衡点

eqmP = Log[R]/a;
eqmH = R Log[R]/a/c/(R-1);
{eqmH, eqmP}/.para//N

数値解

next[{Hx_, Px_}]:=fnListN/.{H->Hx, P->Px}
next[{0.1,0.01}]

seq = NestList[next,{20,10},35]

ListPlot[seq,Joined->True,PlotRange->{{0,40},{0,40}},AspectRatio->1,AxesLabel->{"H","P"},PlotStyle->Thick]

ListPlot[Transpose[seq],Joined->True,PlotRange->{0,40},AxesLabel->{"t","H, P"},PlotStyle->Thick,PlotMarkers->Automatic]

平衡点の局所安定性解析

mat = Outer[D, fnList, varList]

fnList/.{H->R Log[R]/a/c/(R-1), P->Log[R]/a}//Factor

mat2 = mat/.{H->R Log[R]/a/c/(R-1), P->Log[R]/a}

Det[mat2]//Simplify

Plot[%,{R,1,4}]

固有値の絶対値は常に1より大きい (R > 1) ので、平衡点は不安定

NB Model + Limited host growth (logistic growth)

fn1 = H Exp[r(1-H/K)] Exp[-a P];
fn2 = c H(1-Exp[-a P]);
fnList = {fn1,fn2}
varList = {H, P}

para = {r->2, K->100, c->1, a->0.02};
fnListN = fnList/.para

next[{Hx_, Px_}]:=fnListN/.{H->Hx, P->Px}
next[{0.1,0.01}]

seq = NestList[next,{40,30},50]

ListPlot[seq,Joined->True,AspectRatio->1,PlotRange->{{0,100},{0,100}},PlotStyle->Thick,AxesLabel->{"H_t","P_t"}]

ListPlot[Transpose[seq],Joined->True,PlotRange->{0,200},AxesLabel->{"t","H_t, P_t"}]

Non-random search by parasites

fn1 = R H (1 + a P/k)^(-k);
fn2 = c H (1-(1 + a P/k)^(-k));
fnList = {fn1,fn2};
varList = {H, P};

para = {a->0.07, R->2, c->1, k->0.5}
fnListN = fnList/.para

next[{Hx_, Px_}]:=fnListN/.{H->Hx, P->Px}
next[{0.1,0.01}]

seq = NestList[next,{20,10},30]

ListPlot[seq,Joined->True,PlotRange->{{0,80},{0,80}},AspectRatio->1,PlotStyle->Thick,AxesLabel->{"H_t","P_t"}]

ListPlot[Transpose[seq],Joined->True,PlotRange->{0,80},PlotStyle->Thick,AxesLabel->{"t","H_t", "P_t"}]

fn1==H

eqm = Solve[{fn1==H,fn2==P},{H,P}]

{eqmH, eqmP} = {H, P}/.eqm[[2]]

mat = Outer[D, fnList, varList]

fnList - fnList/.{H->eqmH, P->eqmP}//Simplify

mat2 = mat/.{H->eqmH, P->eqmP}//Simplify

MatrixForm[mat2]//Simplify

Det[mat2]//Simplify

Tr[mat2]//Simplify

k < 1 のとき平衡点は局所的に安定