Application Center - Maplesoft

# Lesson 6: Bifurcations

You can switch back to the summary page by clicking here.

Lesson06.mw

ORDINARY DIFFERENTIAL EQUATIONS POWERTOOL

Lesson 6 -- Bifurcations

Columbia, SC 29208

-------------------------------------------------------------------

 >

Outline of Lesson 6

6.A Graphical Approaches to Bifurcation

6.A-1 Animated Direction Fields and Solution Curves

6.A-2 Bifurcation Diagram

6.B Analytic Determination of Bifurcation Points

 >

Initialization

 > restart;

 > with( DEtools ):

 > with( plots ):

Warning, the name changecoords has been redefined

 >

6.A Graphical Approaches to Bifurcation

The solution of a differential equation that contains a parameter will depend in some intrinsic way on the value of this parameter.  As the parameter varies, the nature of the solution may indeed vary also.  For example, the number, location, and stability of equilibrium solutions may change with changing values of the parameter.  Such changes in the nature and behavior of solutions changes are called bifurcations, and the location of such points in a space of parameter and dependent variable are called bifurcation points.

By way of clarification of these ideas, consider the one-parameter family of functions

 > f := y^2 - 2*y + mu;

 >

in the differential equation

 > ode := diff( y(t), t ) = eval( f, y=y(t) );

 >

6.A-1 Animated Direction Fields and Solution Curves

For each of the following values of the parameter ,

 > PARAM := [ seq( i/2, i=-8..8 ) ];

 >

the differential equation

has a solution , and perhaps some equilibrium solutions.  If a phase portrait is generated for each value of the parameter listed above, an animation can be constructed of the transition that occurs as the parameter changes.  The impact of this animation will be enhanced if all equilibria for each value of the parameter are included in the list of initial conditions.  This is accomplished by the following Maple calculation.

 > IC := { seq( [0,i], i=-5..5 ) }:

 > for mu in PARAM do

 > yROOT := solve( f=0, y );

 > yROOT2 := remove( has, {yROOT}, I );

 > IC := IC union { seq( [0,y0], y0 = yROOT2 ) };

 > od:

 > unassign( 'mu' ):

 >

The complete set of initial conditions is now

 > IC;

 >

Maple Question

Note that the IC are being kept as a set , not a list .  Why is this important? (Consult the on-line help for information about sets and lists.)

 >

The first frame of the animation is

 > DEplot( eval(ode,mu=PARAM[1]), {y(t)}, t=0..5, y=-10..10, IC, arrows=MEDIUM );

 >

It shows two equilimbium solutions, the upper one being unstable, and the lower one, stable.

Since there are 17 frames in the full animation it may take a considerable amount of time to complete the execution of the next command that generates the full animation.

 > PLOTseq := seq( DEplot( ode, {y(t)}, t=0..5, y=-10..10, IC,

 > arrows=MEDIUM ), mu=PARAM ):

 > display( PLOTseq, insequence=true );

 >

As the parameter varies, the phase portrait for the corresponding differential equation exhibits two equilibrium solutions that merge into one, that then seems to disappear entirely.  There is a transition from two equilibria, to one, to none.  This is the type behavior that the term bifurcation designates.

Hence, this animation shows there is at least one bifurcation somewhere in this range of parameters.  To identify the values of the parameter where the bifurcations occur, one typically examines a bifurcation diagram (see below).

 >

6.A-2 Bifurcation Diagram

Continuing the previous example, recall that the right-hand side of the ODE

 > ode;

 >

is the function

 > f;

 >

where is the parameter.  The equilibrium solutions ( constant) are solutions of the equation .  In general, these solutions will depend on the parameter , so the equation defines the equilibrium solutions implicitly.  The constant will depend on the parameter !

A bifurcation diagram displays the equilibria of the ODE as a function of the parameter, that is, it contains a graph of vs. .  Hence, the bifurcation diagram is obtained by graphing as a function of as determined implicitly by the equation .

In Maple, such a plot, here called Figure 6.1, can be obtained with

 > implicitplot( f=0, mu=-8..8, y=-4..4, style=POINT, view=[ -8..2, -4..4 ], title="Figure 6.1" );

 >

For values of less than 1, there are two equilibrium solutions.  (For example, if , there are two intersections of the vertical line with the curve containing the equilibrium values.)  At , the two branches of the relation shown in Figure 6.1 come together at a single point.  Thus for , there is a single equilibrium solution, and clearly, for value of greater than 1, there are no equilibrium solutions.  Hence, the bifurcation value for this ODE is .

For a second example, consider the one-parameter family of ODEs determined by

 > f := y^3 - mu*y: ode := diff( y(t), t ) = eval( f, y=y(t) );

 >

where again, is the parameter.

The bifurcation diagram for this example has the name "pitchfork".

 > implicitplot( f=0, mu=-4..4, y=-2..2, style=POINT, axes=BOXED, title="Pitchfork Bifurcation" );

 >

6.B Analytic Determination of Bifurcation Points

Not every equilibrium solution is a bifurcation point. For a given value of the parameter , a necessary condition for an equilibrium solution to be a bifurcation point is

.

Thus, equilibrium points for the ODE must satisfy the equation .  If an equilibrium point satisfies the additional condition   , then the equilibrium point might also be a bifurcation point.

The bifurcation points generated by the function

 > f := y*(1-y)^2 + mu;

 >

are found by solving the equations

 > bif_eq1 := f = 0; bif_eq2 := diff( f, y ) = 0;

 >

Maple gives

 > bif_sol := solve( { bif_eq1, bif_eq2 }, { mu, y } );

 >

as the solutions, which are then expressed as the points via

 > bif_pt := seq( eval([mu,y],BP), BP=[bif_sol] );

 >

The bifurcation diagram corresponding to the ODE

 > dy/dt = f;

 >

is given in Figure 6.2.

 > bif_diag := implicitplot( f=0, mu=-2..2, y=-2..4, style=POINT ):

 > bif_pt_P := plot( [bif_pt], style=POINT, color=BLUE,

 > symbol=CROSS, symbolsize=16 ):

 > display( bif_diag, bif_pt_P, axes=BOXED, title="Figure 6.2" );

 >

 >

The two potential bifurcation points are marked with blue crosses in Figure 6.2.

 >