Bifurcation Analysis

Adam Rumpf, 2/20/2017

Introduction

Below is a sequence of examples of four common types of bifurcation: saddle-node, transcritical, pitchfork, and Hopf. For each example we provide a specific autonomous ODE system which displays that type of bifurcation. In all examples, x and y represent functions of time t while r represents the single parameter which will be varied to create the bifurcation.

As a review, a bifurcation occurs when changing the value of the parameter r causes a qualitative change to the equilibria of the system. The specific type of qualitative change determiens the type of bifurcation, but in general it describes a change in the number or the stability of the equilibria. We can attempt to look for bifurcations by solving for the equilibria ((SuperStar[x]),(SuperStar[y])) by setting ((dx)/(dt)) and ((dy)/(dt)) equal to 0. In general these equilibria will be functions of r, and we can look at how the equilibria change as r changes. For example, some values of r will cause several equilibria to merge into one, or to become imaginary, in which case the number of equilibria depends on r.

A bifurcation also occurs when the stability of an equilibrium changes. In order to evaluate the stability of an equilibrium, we examine the eigenvalues of the Jacobian matrix. Given an ODE system ((dx)/(dt))=f(x,y),((dy)/(dt))=g(x,y), the Jacobian evaluated at the equilibrium ((SuperStar[x]),(SuperStar[y])) is

(SuperStar[J])=(Subscript[(({{((∂f)/(∂x)), ((∂f)/(∂y))}, {((∂g)/(∂x)), ((∂g)/(∂y))}})), (x,y)=((SuperStar[x]),(SuperStar[y]))])

If all eigenvalues have negative real parts, then ((SuperStar[x]),(SuperStar[y])) is stable. Otherwise it is unstable. Further classifications (like being a saddle point, or orbiting in a particular direction) can also be made. As with the equilibria, themselves, the eigenvalues of the Jacobian are functions of r, and the signs of their real parts may depend on r, which leads to other types of bifurcation

Note that, in the case of a one-dimensional ODE system ((dx)/(dt))=f(x), the Jacobian (SuperStar[J]) reduces to simply the scalar ((∂f)/(∂x))(Subscript[|, x=(SuperStar[x])]), in which case we can look directly at the value of ((∂f)/(∂x)) rather than having to look at eigenvalues.

Each section below describes a different type of bifurcation. First an ODE system will be presented, then a bifurcation analysis will be conducted by hand, and finally a Manipulate environment will be defined to show a visualization of the bifurcation in action. In all cases there is a slider to control the value of r. Equilibria will be shown in red on the stream plot, either as a line (for the 1D case) or a point (in the 2D case). For the 1D cases, to the right of the stream plot will be a plot of the equilibrium values as a function of r. In all cases, solid lines and filled dots correspond to stable equilibria, while dotted lines and hollow dots correspond to unstable equilibria.

Saddle-Node Bifurcation

A saddle-node bifurcation occurs when two equilibria collide and annihilate each other (or, if moving in the other direction, when two equilibria are spontaneously generated out of nothing). Specifically this can occur when changing the parameters causes a pair of equilibria to simultaneously become real or imaginary. The example below concerns the 1D system:

((dx)/(dt))=(x^2)-r

Setting ((dx)/(dt))=0 and solving, we find that the equilibria are (SuperStar[x])=±(Sqrt[r]). We can consider different cases depending on the value of r:

If r>0, then (Sqrt[r]) is real, and thus we have two real equilibria.

If r<0, then (Sqrt[r]) is imaginary, and thus we have no real equilibria.

If r=0, then we have exactly one unique equilibrium of (SuperStar[x])=0.

We can conduct stability analysis by evaluating (∂/(∂x))((x^2)-r)=2x at x=±(Sqrt[r]). In the case of r>0, clearly (SuperStar[x])=(Sqrt[r]) yields a positive Jacobian while (SuperStar[x])=-(Sqrt[r]) yields a negative one, and so (SuperStar[x])=(Sqrt[r]) should be unstable while (SuperStar[x])=-(Sqrt[r]) is stable.

Manipulate[TableForm[{{Show[StreamPlot[{1,(x^2)-r},{t,-2,2},{x,-2,2},PlotLabel->"stream plot (x versus t)"],If[r≥0,Graphics[{Red,Thick,Line[{{-2,-(Sqrt[r])},{2,-(Sqrt[r])}}],Dashed,Line[{{-2,(Sqrt[r])},{2,(Sqrt[r])}}]}],Graphics[{}]]],Show[Plot[{Piecewise[{{-(Sqrt[rr]),rr≥0}},Nothing],Piecewise[{{(Sqrt[rr]),rr≥0}},Nothing]},{rr,-2.001,r},PlotStyle->{Directive[Red,Thick],Directive[Red,Thick,Dashed]},PlotRange->{{-2,2},{-2,2}},AspectRatio->1,Frame->True,Axes->False,PlotLabel->"equilibria ((SuperStar[x]) versus r)"],If[r≥0,Graphics[{Red,PointSize[Large],Point[{{r,(Sqrt[r])},{r,-(Sqrt[r])}}],White,PointSize[Medium],Point[{r,(Sqrt[r])}]}],Graphics[{}]]]}}],{{r,1},-2,2}]

Transcritical Bifurcation

A transcritical bifurcation occurs when two equilibria “slide past” each other and swap stabilities when they collide. The example below concerns the 1D system:

((dx)/(dt))=(x^2)-r x

Setting ((dx)/(dt))=0 and solving, we find that the equilibria are (SuperStar[x])=0 and (SuperStar[x])=r. For r≠0 this is two separate equilibria while for r=0 the two coincide.

We can conduct stability analysis by evaluating (∂/(∂x))((x^2)-r x)=2x-r at x=0 and x=r. We will consider the two cases separately:

For x=0 the Jacobian is -r, which is obviously negative (and thus stable) for r>0 and positive (and thus unstable) for r<0.

For x=r the Jacobian is r, which is positive (and thus unstable) for r>0 and negative (and thus stable) for r<0.

The two equilibria always have opposite stabilities whether r<0 or r>0.

Manipulate[TableForm[{{Show[StreamPlot[{1,(x^2)-r x},{t,-2,2},{x,-2,2},PlotLabel->"stream plot (x versus t)"],If[r≥0,Graphics[{Red,Thick,Line[{{-2,0},{2,0}}],Dashed,Line[{{-2,r},{2,r}}]}],Graphics[{Red,Thick,Line[{{-2,r},{2,r}}],Dashed,Line[{{-2,0},{2,0}}]}]]],Show[Plot[{Piecewise[{{rr,rr≥0}},0],Piecewise[{{0,rr≥0}},rr]},{rr,-2.001,r},PlotStyle->{Directive[Red,Thick,Dashed],Directive[Red,Thick]},PlotRange->{{-2,2},{-2,2}},AspectRatio->1,Frame->True,Axes->False,PlotLabel->"equilibria ((SuperStar[x]) versus r)"],If[r≥0,Graphics[{Red,PointSize[Large],Point[{{r,0},{r,r}}],White,PointSize[Medium],Point[{r,r}]}],Graphics[{Red,PointSize[Large],Point[{{r,0},{r,r}}],White,PointSize[Medium],Point[{r,0}]}]]]}}],{{r,1},-2,2}]

Pitchfork Bifurcation

A pitchfork bifurcation occurs when a single equilibrium splits into three (or, if moving in the other direction, when three equilibria merge to result in a single equilibrium). This is similar to a saddle-node bifurcation, except that one equilibrium remains real regardless of the other two. The example below concerns the 1D system:

((dx)/(dt))=(x^3)-r x

Setting ((dx)/(dt))=0 and solving, we find that the equilibria are (SuperStar[x])∈{-(Sqrt[r]),0,(Sqrt[r])}. (SuperStar[x])=0 is constant and does not change as r changes, while (SuperStar[x])=±(Sqrt[r]) depend on the sign of r. Going through the same process as for the saddle-node bifurcation above, we find that r>0 results in both being real, r<0 results in both being imaginary, and r=0 results in both merging and coinciding with (SuperStar[x])=0.

We can conduct stability analysis by evaluating (∂/(∂x))((x^3)-r x)=3(x^2)-r at x=0 and x=±(Sqrt[r]). If x=0 then the Jacobian is -r, which always has a sign opposite r. If x=±(Sqrt[r]) then the Jacobian is 2r, which always has a sign the same as r. The overall conclusion is that for r<0 we have a single unstable equilibrium at (SuperStar[x])=0, while for r>0 we have three equilibria: a stable equilibrium at (SuperStar[x])=0 and two unstable equilibria at (SuperStar[x])=±(Sqrt[r]).

Manipulate[TableForm[{{Show[StreamPlot[{1,(x^3)-r x},{t,-2,2},{x,-2,2},PlotLabel->"stream plot (x versus t)"],If[r≥0,Graphics[{Red,Thick,Line[{{-2,0},{2,0}}],Dashed,Line[{{-2,(Sqrt[r])},{2,(Sqrt[r])}}],Line[{{-2,-(Sqrt[r])},{2,-(Sqrt[r])}}]}],Graphics[{Red,Thick,Dashed,Line[{{-2,0},{2,0}}]}]]],Show[Plot[{Piecewise[{{-(Sqrt[rr]),rr≥0}},Nothing],Piecewise[{{(Sqrt[rr]),rr≥0}},Nothing],Piecewise[{{0,rr≥0}},Nothing],Piecewise[{{0,rr<0}},Nothing]},{rr,-2.001,r},PlotStyle->{Directive[Red,Thick,Dashed],Directive[Red,Thick,Dashed],Directive[Red,Thick],Directive[Red,Thick,Dashed]},PlotRange->{{-2,2},{-2,2}},AspectRatio->1,Frame->True,Axes->False,PlotLabel->"equilibria ((SuperStar[x]) versus r)"],If[r≥0,Graphics[{Red,PointSize[Large],Point[{{r,(Sqrt[r])},{r,-(Sqrt[r])},{r,0}}],White,PointSize[Medium],Point[{{r,(Sqrt[r])},{r,-(Sqrt[r])}}]}],Graphics[{Red,PointSize[Large],Point[{r,0}],White,PointSize[Medium],Point[{r,0}]}]]]}}],{{r,1},-2,2}]

Hopf Bifurcation

A Hopf bifurcation occurs when an equilibrium changes stability in a way that leads to a periodic orbit. This can only occur if we increase our system to at least two dimensions. The example below concerns the 2D system:

((dx)/(dt))=r(1-(y^2))x-y
((dy)/(dt))=x

Finding the equilibria now requires us to solve the simultaneous system ((dx)/(dt))=0,((dy)/(dt))=0, which has exactly one solution: ((SuperStar[x]),(SuperStar[y]))=(0,0). This is independent of the value of r. We next conduct stability analysis by examining the Jacobian

(SuperStar[J])=(Subscript[(({{(d/(dx))(r(1-(y^2))x-y), (d/(dy))(r(1-(y^2))x-y)}, {(d/(dx))(x), (d/(dy))(x)}})), (x,y)=(0,0)])=(Subscript[(({{r(1-(y^2)), -2r x y-1}, {1, 0}})), (x,y)=(0,0)])=(({{r, -1}, {1, 0}}))

which has eigenvalues of ((r ±(Sqrt[(r^2) - 4]))/2). These always have a negative real part for r<0 and a positive real part for r>0. For r≤-2 and r≥2 they are purely real, while for -2<r<2 they include an imaginary part. At r=0 the eigenvalues are purely imaginary and we have periodic orbits.

The equilibrium displays used above do not apply to this 2D system, and so instead we display only the stream plot of y versus x. Notice that as r goes from negative to zero to positive, the system goes from spiraling inward (stable) to circular orbits (periodic) to spiraling outward (unstable).

Manipulate[Show[StreamPlot[{r(1-(y^2))x-y,x},{x,-2,2},{y,-2,2},PlotLabel->"stream plot (y versus x)"],Graphics[{Red,PointSize[Large],Point[{0,0}]}]],{{r,1},-3,3}]