Note: May need to quit kernal before running. I had some issues with this notebook.

Rock Paper Scissors

Plot of Generic Solution Curves

p0=2;
r0=1;
s0=1/2;
s1=NDSolve[{p'[t]==p[t]*(r[t]-s[t]),r'[t]==r[t]*(s[t]-p[t]),s'[t]==s[t]*(p[t]-r[t]),p[0]==p0,r[0]==r0,s[0]==s0},{p,r,s},{t,0,20}];
Plot[{Evaluate[p[t]/.s1],Evaluate[r[t]/.s1],Evaluate[s[t]/.s1]},{t,0,20}]

It seems like the species oscillate around. How can we show this?

Conserved quantites and intersecting surfaces

We know that P+R+S is constant as well as P*R*S. We can use this to constrcut invarient manifolds. We can always rescale so that P+R+S=1. We can solve this equations to obtain parametrized curves for R and S in terms of the other variable. We will draw surfaces with P as the dependant variable

Manipulate[Plot3D[{1-R-S,C0/(R*S)},{R,0,1},{S,0,1},RegionFunction->Function[{R,S},0<R+S<1],ViewPoint->{6,3,2},ClippingStyle->None],{C0,0,1/10}]

It is clear that the intersection of the plane with the surface forms a closed curve.

Phase portrait

plot1=StreamPlot[{P*(2*R+P-1),R*(1-R-2*P)},{P,-.01,1},{R,-.01,1},RegionFunction->Function[{R,S},0<R+S<1],StreamStyle->{Red}]

plot2=ContourPlot[(1-P-R)*P*R,{P,0,1},{R,0,1},RegionFunction->Function[{R,S},0<R+S<1],PlotRange->{0,.037},Contours->20];
Show[plot2,plot1]