WOLFRAM NOTEBOOK

Exercises 3.4.a

For:
x
=rx-ln(1+x)
i) Sketch the different vector field types that appear when you vary
r
.
We’re going to do this a little differently from how we’ve done the others. To draw the vector field, you need to be able to draw whether
x
is greater than or less than zero, which is the same as asking, in this case, whether
rxisgreaterthanorlessthanln(1+x)
. Let’s plot each of these for different values of
randthendrawarrowsonthediagrams:
In[]:=
pl1=GraphicsGrid[Partition[Plot[{Log[1+x],#x},{x,-1,4},PlotRange->{{-1,4},{-4,2}},AxesLabelEvaluate[Style[#,14]&/@{"x","ln(1+x) and r x"}],AspectRatio->1,PlotLabel->Style["r = "<>ToString[#],14]]&/@Range[-0.5,2,0.5],3],ImageSize->800]
Out[]=
Nothing very interesting happens until
r1.
To draw on the arrows, you just need to see whether
rxorln(1+x)
is bigger. If
rxislarger,then
x
is positive, and draw an arrow to the right. If it’s negative, draw an arrow to the left.
In[]:=
finsol[r_]:=(x/.NSolve[Log[1+x]-rx0,x])GraphicsGridPartitionShowPlot{Log[1+x],#x},{x,-1,4},PlotRange->{{-1,4},{-2,2}},AxesLabelEvaluateStyle[#,14]&/@"x","ln(x) and
1-x
r
",AspectRatio->1,PlotLabel->Style["r = "<>ToString[#],14],Graphics[{Thick,Arrowheads[0.05],Arrow[{{-1,0},{finsol[#][[1]]-0.1,0}}],If[#==1,,If[#>=0,Arrow[{{finsol[#+0.00001][[-1]]-0.1,0},{finsol[#][[1]]+0.1,0}}],]],Arrow[If[#<0,{{4,0},{finsol[#+0.00001][[-1]]+0.1,0}},{{finsol[#+0.00001][[-1]]+0.1,0},{4,0}}]]}],If#==1,ShowGraphics[Circle[{0,0},0.1]],GraphicsDisk{0,0},0.1,3
π
2
,
π
2
,Show[{Graphics[Disk[{finsol[#][[1]],0},0.1]],Graphics[Circle[{finsol[#+0.0001][[-1]],0},0.1]]}]&/@Range[-0.5,2,0.5],3,ImageSize->1000,Spacings->-30//Quiet
Out[]=
Now taking the arrows and fixed points alone and plotting them as a vector field:
In[]:=
ShowShowGraphics[{Thick,Arrowheads[0.04],Arrow[{{-1,#},{finsol[#][[1]]-0.01,#}}],If[#==1,,If[#>=0,Arrow[{{finsol[#+0.00001][[-1]]-0.1,#},{finsol[#][[1]]+0.1,#}}],]],Arrow[If[#<0,{{4,#},{finsol[#+0.00001][[-1]]+0.1,#}},{{finsol[#+0.00001][[-1]]+0.1,#},{4,#}}]]}],If#==1,ShowGraphics[Circle[{0,#},0.1]],GraphicsDisk{0,#},0.1,3
π
2
,
π
2
,Show[{Graphics[Disk[{finsol[#][[1]],#},0.1]],Graphics[Circle[{finsol[#+0.0001][[-1]],#},0.1]]}]&/@Range[-0.5,4,0.25],PlotRange->{{-1.1,4},{-1,4}},AxesTrue,AxesOrigin{-1,-0.8},AxesLabelEvaluate[Style[#,17]&/@{"x","r"}]//Quiet
Out[]=
Now for the bifurcation diagram we need to flip the axes, and we would get something that looks like:
In[]:=
l1={#,finsol[#][[1]]}&/@Range[0,2,0.1]//Quiet;l2={#,finsol[#][[1]]}&/@Range[-2,1,0.01]//Quiet;l3={#,finsol[#][[2]]}&/@Range[-2,1,0.01]//Quiet;l4={#,finsol[#][[1]]}&/@Range[1,2,0.01]//Quiet;l5={#,finsol[#][[2]]}&/@Range[1,2,0.1]//Quiet;ListLinePlot[{l1,l2,l3,l4,l5},PlotStyle->{{Dashed,Blue},{Blue},{Dashed,Blue},{Blue},{Dashed,Blue}},AxesLabelEvaluate[Style[#,17]&/@{"r","x"}],PlotRange->{{-1,2},{-1,4}}]
Out[]=
This is clearly a transcritical bifurcation. Where is it happening though? It seemed in the diagram to be around r=1. However, we can be precise about it. It occurs at the point where the two lines
ln(1+x)andrx
are tangent to one another, ie. where their gradients are the same. We also know that it occurs at the x value of x=0 as there is always an intersection at this point, so we can equate the gradients, and then set x=0:
In[]:=
Solve
1
1+x
==r,r[[1,1]]/.x->0
Out[]=
r1
OK, so that confirms our guess that the critical point is at
(r,x)=(1,0)
. Can we turn the original equation into the Normal Form for a transcritical bifurcation by expanding about x=0? Let’s expand the right hand side of the equation about
x=0:
In[]:=
Series[-Log[x+1]+rx,{x,0,2}]//Normal
Out[]=
(-1+r)x+
2
x
2
And so the equation close to the critical value of x can be written as
x
=(r-1)x+
2
x
2
We want the
2
x
termonit
s own so let's multiply through by
2andweget:
2
x
=2(r-1)x+
2
x
Now the left hand side is really
so let's define
and finally we have
To get the - sign, let’s let X=-χ, R=-ρ:
which is precisely the normal form of a transcritical bifurcation.
Wolfram Cloud

You are using a browser not supported by the Wolfram Cloud

Supported browsers include recent versions of Chrome, Edge, Firefox and Safari.


I understand and wish to continue anyway »

You are using a browser not supported by the Wolfram Cloud. Supported browsers include recent versions of Chrome, Edge, Firefox and Safari.