binomial3.mws

Determine the critical points of the first three moment closure equations for the Verhulst model, and their stabilities, under assumption of binomial distribution.

>    restart;

>    with(LinearAlgebra,Eigenvalues);
with(VectorCalculus,Jacobian);

[Eigenvalues]

[Jacobian]

The differential equations of the first three cumulants are equal to eq1, eq2, eq3prel.

>    eq1:=(a1*N-kappa1)*kappa1-kappa2;

eq1 := (a1*N-kappa1)*kappa1-kappa2

>    eq2:=(f1*a1*N-f2*kappa1)*kappa1+(2*a1*N-f2)*kappa2-4*kappa1*kappa2-2*kappa3;

eq2 := (f1*a1*N-f2*kappa1)*kappa1+(2*a1*N-f2)*kappa2-4*kappa1*kappa2-2*kappa3

>    eq3prel:=(a1*N-kappa1)*kappa1-6*f2*kappa1*kappa2-6*kappa1*kappa3+(3*f1*a1*N-1)*kappa2-6*kappa2^2+3*(a1*N-f2)*kappa3-3*kappa4;

eq3prel := (a1*N-kappa1)*kappa1-6*f2*kappa1*kappa2-6*kappa1*kappa3+(3*f1*a1*N-1)*kappa2-6*kappa2^2+3*(a1*N-f2)*kappa3-3*kappa4

The assumption of binomial distribution means that kappa4=kappa2*(kappa1^2-6kappa1*kappa2+6kappa2^2)/kappa1^2.

>    eq3:=collect(subs(kappa4=kappa2*(kappa1^2-6*kappa1*kappa2+6*kappa2^2)/kappa1^2,eq3prel),kappa1);

eq3 := -kappa1^2+(-6*f2*kappa2-6*kappa3+a1*N)*kappa1-6*kappa2^2+3*(a1*N-f2)*kappa3+(3*f1*a1*N-1)*kappa2-3*kappa2+18*kappa2^2/kappa1-18*kappa2^3/kappa1^2
eq3 := -kappa1^2+(-6*f2*kappa2-6*kappa3+a1*N)*kappa1-6*kappa2^2+3*(a1*N-f2)*kappa3+(3*f1*a1*N-1)*kappa2-3*kappa2+18*kappa2^2/kappa1-18*kappa2^3/kappa1^2

Solve the first equation for kappa2. This gives kappa2 as a function of kappa1.

>    kap2:=solve(eq1,kappa2);

kap2 := -(-a1*N+kappa1)*kappa1

Substitute this value of kappa2 into the second equation.

>    eq2a:=subs(kappa2=kap2,eq2);

eq2a := (f1*a1*N-f2*kappa1)*kappa1-(2*a1*N-f2)*(-a1*N+kappa1)*kappa1+4*kappa1^2*(-a1*N+kappa1)-2*kappa3

Solve this equation for kappa3. This gives kappa3 as a function of kappa1.

>    kap3:=solve(eq2a,kappa3);

kap3 := 1/2*kappa1*f1*a1*N+kappa1*a1^2*N^2-3*a1*N*kappa1^2-1/2*kappa1*f2*a1*N+2*kappa1^3

Insert the values of kappa2 and kappa3 into eq3 divided by minus 3. This gives an expression in kappa1.

>    eq3a:=-map(simplify,collect(subs(kappa2=kap2,kappa3=kap3,eq3),kappa1))/3;

eq3a := 6*(-1+a1*N)*kappa1^3-(11*a1^2*N^2-12*a1*N-2*f1*a1*N+1+2*f2*a1*N)*kappa1^2-1/2*a1*N*(-2+12*a1*N+3*f1*a1*N-10*a1^2*N^2-3*f2*a1*N-f2*f1+f2^2)*kappa1
eq3a := 6*(-1+a1*N)*kappa1^3-(11*a1^2*N^2-12*a1*N-2*f1*a1*N+1+2*f2*a1*N)*kappa1^2-1/2*a1*N*(-2+12*a1*N+3*f1*a1*N-10*a1^2*N^2-3*f2*a1*N-f2*f1+f2^2)*kappa1

The problem now is to solve this third-degree equation in kappa1. (Some minor (cosmetic) simplification can be achieved by introducing K and sigma^2.)  One root is equal to 0. It does not correspond to a critical point, since eq3 is not defined for kappa1=0.

The remaining 2 roots of eq3a satisfy the following second-degree equation:

>    eq3b:=collect(eq3a/kappa1,kappa1);

eq3b := (-6+6*a1*N)*kappa1^2+(-11*a1^2*N^2+12*a1*N+2*f1*a1*N-1-2*f2*a1*N)*kappa1-1/2*a1*N*(-2+12*a1*N+3*f1*a1*N-10*a1^2*N^2-3*f2*a1*N-f2*f1+f2^2)
eq3b := (-6+6*a1*N)*kappa1^2+(-11*a1^2*N^2+12*a1*N+2*f1*a1*N-1-2*f2*a1*N)*kappa1-1/2*a1*N*(-2+12*a1*N+3*f1*a1*N-10*a1^2*N^2-3*f2*a1*N-f2*f1+f2^2)

This equation can of course be solved explicitly. But I look instead for asymptotic approximations. Put kappa1 = AN + B + C/N.

>    eq3c:=subs(kappa1=A*N+B+C/N,eq3b);

eq3c := (-6+6*a1*N)*(A*N+B+C/N)^2+(-11*a1^2*N^2+12*a1*N+2*f1*a1*N-1-2*f2*a1*N)*(A*N+B+C/N)-1/2*a1*N*(-2+12*a1*N+3*f1*a1*N-10*a1^2*N^2-3*f2*a1*N-f2*f1+f2^2)
eq3c := (-6+6*a1*N)*(A*N+B+C/N)^2+(-11*a1^2*N^2+12*a1*N+2*f1*a1*N-1-2*f2*a1*N)*(A*N+B+C/N)-1/2*a1*N*(-2+12*a1*N+3*f1*a1*N-10*a1^2*N^2-3*f2*a1*N-f2*f1+f2^2)
eq3c := (-6+6*a1*N)*(A*N+B+C/N)^2+(-11*a1^2*N^2+12*a1*N+2*f1*a1*N-1-2*f2*a1*N)*(A*N+B+C/N)-1/2*a1*N*(-2+12*a1*N+3*f1*a1*N-10*a1^2*N^2-3*f2*a1*N-f2*f1+f2^2)

Form 3 equations (for A,B,C) by putting the coefficients of N^3, N^2, N^1 equal to zero.

>    eqA:=coeff(eq3c,N,3);

eqA := 6*a1*A^2-11*a1^2*A+5*a1^3

>    eqB:=coeff(eq3c,N,2);

eqB := -6*A^2+12*a1*B*A+(-2*f2*a1+12*a1+2*f1*a1)*A-11*a1^2*B-1/2*a1*(-3*f2*a1+12*a1+3*f1*a1)

>    eqC:=coeff(eq3c,N,1);

eqC := -12*B*A+6*a1*(2*C*A+B^2)-A+(-2*f2*a1+12*a1+2*f1*a1)*B-11*a1^2*C-1/2*a1*(-2-f2*f1+f2^2)

>    AA:=solve(eqA,A);

AA := a1, 5/6*a1

The A values of the 2 critical points are given by AA[1] and AA[2]. I expect AA[2] to correspond to a spurious solution.  

Determine B and C-values corresponding to these 2 A-values: Begin with AA[1]:

>    eqB1:=subs(A=AA[1],eqB);

eqB1 := -6*a1^2+a1^2*B+(-2*f2*a1+12*a1+2*f1*a1)*a1-1/2*a1*(-3*f2*a1+12*a1+3*f1*a1)

>    BB[1]:=solve(eqB1,B);

BB[1] := 1/2*f2-1/2*f1

>    eqC1:=simplify(subs(A=AA[1],B=BB[1],eqC));

eqC1 := a1^2*C-1/2*a1*f2*f1+1/2*a1*f1^2

>    CC[1]:=solve(eqC1,C);

CC[1] := 1/2*f1/a1*(f2-f1)

An asymptotic approximation for the first solution for kappa1 has thus been found. It is

AA[1]*N + BB[1] + CC[1]/N. Use it to derive asymptotic approximations of kappa2 and kappa3, using kap2 and kap3.  

Write kappa2 sim DD[1]*N+EE[1]  and  kappa3 sim FF[1]*N.

>    kap2;

-(-a1*N+kappa1)*kappa1

>    kap21:=simplify(convert(asympt(subs(kappa1=AA[1]*N+BB[1]+CC[1]/N,kap2),N,2),polynom));

kap21 := -1/4*(f2-f1)*(2*a1^2*N^2+f2*a1*N+f1*a1*N+2*f2*f1-2*f1^2)/a1/N

>    DD[1]:=coeff(kap21,N,1);

DD[1] := -1/2*(f2-f1)*a1

>    EE[1]:=factor(simplify(coeff(kap21,N,0)));

EE[1] := -1/4*(f2-f1)*(f2+f1)

>    kap31:=simplify(map(simplify,convert(asympt(subs(kappa1=AA[1]*N+BB[1]+CC[1]/N,kap3),N,2),polynom)));

kap31 := 1/2*f2^2*a1*N-1/2*f2*f1*a1*N+1/2*f1*f2^2-7/4*f2*f1^2+f1^3+1/4*f2^3

>    FF[1]:=factor(coeff(kap31,N,1));

FF[1] := 1/2*a1*f2*(f2-f1)

Now proceed to find approximations of the remaining critical point, with subscript 2. First I work on B and C.

>    eqB2:=simplify(subs(A=AA[2],eqB));

eqB2 := -1/6*a1^2-a1^2*B-1/6*f2*a1^2+1/6*f1*a1^2

>    BB[2]:=solve(eqB2,B);

BB[2] := -1/6-1/6*f2+1/6*f1

>    eqC2:=simplify(subs(A=AA[2],B=BB[2],eqC));

eqC2 := 1/3*f2*a1-1/3*f1*a1-a1^2*C-1/2*a1*f2*f1+1/2*a1*f1^2

>    CC[2]:=factor(solve(eqC2,C));

CC[2] := -1/6*(-2+3*f1)*(f2-f1)/a1

>    kap22:=simplify(convert(asympt(subs(kappa1=AA[2]*N+BB[2]+CC[2]/N,kap2),N,1),polynom));

kap22 := 5/36*a1^2*N^2+1/9*a1*N+1/9*f2*a1*N-1/9*f1*a1*N

>    DD[2]:=coeff(kap22,N,2);

DD[2] := 5/36*a1^2

>    EE[2]:=factor(coeff(kap22,N,1));

EE[2] := 1/9*a1*(1+f2-f1)

So kappa2 is sim DD[2]*N^2 + EE[2]*N

>    kap32:=simplify(convert(asympt(subs(kappa1=AA[2]*N+BB[2]+CC[2]/N,kap3),N,1),polynom));

kap32 := -5/54*a1^3*N^3-4/9*a1^2*N^2*f2+4/9*a1^2*N^2*f1-1/36*a1^2*N^2

>    FF[2]:=coeff(kap32,N,3);

FF[2] := -5/54*a1^3

And kappa3 = FF[2]*N^3.  

I have now derived asymptotic approximations of the first three cumulants at each of the 2 critical points.

I would also like to study the local stability of the 2 critical points.  I do this by evaluating the eigenvalues of the jacobian matrices evaluated at each of the four critical points...

>    F:=[eq1,eq2,eq3];

F := [(a1*N-kappa1)*kappa1-kappa2, (f1*a1*N-f2*kappa1)*kappa1+(2*a1*N-f2)*kappa2-4*kappa1*kappa2-2*kappa3, -kappa1^2+(-6*f2*kappa2-6*kappa3+a1*N)*kappa1-6*kappa2^2+3*(a1*N-f2)*kappa3+(3*f1*a1*N-1)*kapp...
F := [(a1*N-kappa1)*kappa1-kappa2, (f1*a1*N-f2*kappa1)*kappa1+(2*a1*N-f2)*kappa2-4*kappa1*kappa2-2*kappa3, -kappa1^2+(-6*f2*kappa2-6*kappa3+a1*N)*kappa1-6*kappa2^2+3*(a1*N-f2)*kappa3+(3*f1*a1*N-1)*kapp...

>    J:=Jacobian(F,[kappa1,kappa2,kappa3]);

J := Matrix(%id = 3612864)
J := Matrix(%id = 3612864)
J := Matrix(%id = 3612864)
J := Matrix(%id = 3612864)
J := Matrix(%id = 3612864)

Determine the Jacobian in each of the two critical points:

>    J1:=subs(kappa1=AA[1]*N+BB[1]+CC[1]/N,kappa2=DD[1]*N+EE[1],kappa3=FF[1]*N,J):

>    J2:=subs(kappa1=AA[2]*N+BB[2]+CC[2]/N,kappa2=DD[2]*N^2+EE[2]*N,kappa3=FF[2]*N^3,J):

Determine the eigenvalues of the matrix J1.  Maple on my PC takes too long time (for my patience) to find asymptotic approx of eigenvalues. So instead I modify the two matrices J1 and J2 by replacing each element by the first two elements of its asymptotic approximation as N approaches infinity. The modified matrices are named J1a and J2a.

>    J1a:=J1:

>    J1a[1,1]:=convert(asympt(J1[1,1],N,1),polynom);

J1a[1,1] := -a1*N+f1-f2

>    J1a[1,2];

-1

>    J1a[1,3];

0

>    J1a[2,1]:=simplify(convert(asympt(J1[2,1],N,1),polynom));

J1a[2,1] := -f1*a1*N+f2*f1-f1^2

>    J1a[2,2]:=convert(asympt(J1[2,2],N,1),polynom);

J1a[2,2] := -2*a1*N-3*f2+2*f1

>    J1a[2,3];

-2

>    J1a[3,1]:=simplify(convert(asympt(J1[3,1],N,4),polynom));

J1a[3,1] := -a1*N-f2-9/2*f2^2+9*f2*f1-9/2*f1^2-3*f2^3-15*f2*f1^2+f1+27/2*f1*f2^2+9/2*f1^3

>    J1a[3,2]:=simplify(convert(asympt(J1[3,2],N,1),polynom));

J1a[3,2] := -3*f1*a1*N-4-27/2*f2^2-33/2*f1^2+30*f2*f1-18*f2+18*f1

>    J1a[3,3]:=convert(asympt(J1[3,3],N,1),polynom);

J1a[3,3] := -3*a1*N-6*f2+3*f1

Determine the eigenvalues of the modified matrix J1a:

>    a1:='a1':

>    eg1:=Eigenvalues(J1a):

Determine asymptotic approximations of the eigenvalues of J1a:

>    a1:='a1':

>    eg11a:=convert(asympt(eg1[1],N,3),polynom):

>    assume(a1>0);

>    eg11b:=simplify(evalc(eg11a));

eg11b := -a1*N+2*f1-f2

>    a1:='a1':

>    eg12a:=convert(asympt(eg1[2],N,3),polynom):

>    assume(a1>0);

>    eg12b:=simplify(eg12a);

eg12b := -3*a1*N-6*f2-3*f1

>    a1:='a1':

>    eg13a:=convert(asympt(eg1[3],N,3),polynom):

>    assume(a1>0);

>    eg13b:=simplify(eg13a);

eg13b := -2*a1*N-3*f2+7*f1

>    a1:='a1':

The 3 eigenvalues are asymptotic to -K, -2K, -3K. All are negative. Hence this critical point is stable.

Proceed to modify the matrix J2:

>    J2a:=J2:

>    J2a[1,1]:=convert(asympt(J2[1,1],N,1),polynom);

J2a[1,1] := -2/3*a1*N+1/3+1/3*f2-1/3*f1

>    J2a[1,2];

-1

>    J2a[1,3];

0

>    J2a[2,1]:=convert(asympt(J2[2,1],N,0),polynom);

J2a[2,1] := -5/9*a1^2*N^2+(-5/3*f2*a1+f1*a1-4/9*a1*(1+f2-f1))*N

>    J2a[2,2]:=convert(asympt(J2[2,2],N,1),polynom);

J2a[2,2] := -4/3*a1*N-1/3*f2+2/3-2/3*f1

>    J2a[2,3];

-2

>    J2a[3,1]:=simplify(convert(asympt(J2[3,1],N,5),polynom));

J2a[3,1] := 13/18*a1^3*N^3-1/3*a1^2*N^2*f2-1/2*a1^2*N^2*f1

>    J2a[3,2]:=simplify(convert(asympt(J2[3,2],N,0),polynom));

J2a[3,2] := -19/6*a1^2*N^2+5/3*a1*N-28/3*f2*a1*N+22/3*f1*a1*N

>    J2a[3,3]:=convert(asympt(J2[3,3],N,1),polynom);

J2a[3,3] := -2*a1*N+1-2*f2-f1

The eigenvalues of the matrix J2a are:

>    a1:='a1':

>    eg2:=Eigenvalues(J2a):

Determine asymptotic approximations of the three eigenvalues of J2:

>    a1:='a1':

>    eg21a:=convert(asympt(eg2[1],N,3),polynom):

>    assume(a1>0);

>    eg21b:=evalf(simplify(evalc(eg21a)));

eg21b := .1584383541e-9*I*f1+.1584383541e-8*I*f2+.3299906198-.1584383541e-9*I+2.633603979*f2-3.519431949*f1+1.192582403*N*a1
eg21b := .1584383541e-9*I*f1+.1584383541e-8*I*f2+.3299906198-.1584383541e-9*I+2.633603979*f2-3.519431949*f1+1.192582403*N*a1

>    a1:='a1':

>    eg22a:=convert(asympt(eg2[2],N,3),polynom):

>    assume(a1>0);

>    eg22b:=evalc(evalf(simplify(eg22a)));

eg22b := -4.192582403*a1*N+1.479533189-.4e-9*I-5.395508740*f2+2.281336710*f1

>    a1:='a1':

>    eg23a:=convert(asympt(eg2[3],N,3),polynom):

>    assume(a1>0);

>    eg23b:=evalf(simplify(evalc(eg23a)));

eg23b := .7619047623*f2-.7619047612*f1+.1904761907+0.*I+.1e-9*I*f2-.7e-9*I*f1-1.000000000*N*a1
eg23b := .7619047623*f2-.7619047612*f1+.1904761907+0.*I+.1e-9*I*f2-.7e-9*I*f1-1.000000000*N*a1

The eigenvalues are asymptotically 1.19K, -4.19K, -K. Hence the corresponding critical point is unstable.

>