unit06.mws

ORDINARY DIFFERENTIAL EQUATIONS POWERTOOL

Unit 6 -- Bifurcations

Prof. Douglas B. Meade

Industrial Mathematics Institute

Department of Mathematics

University of South Carolina

Columbia, SC 29208

URL: http://www.math.sc.edu/~meade/

E-mail: meade@math.sc.edu

Copyright © 2001 by Douglas B. Meade

All rights reserved

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

>

Outline of Unit 6

>

Initialization

> restart;

> with( DEtools ):

> with( plots ):

> with( linalg ):

Warning, the name changecoords has been redefined

Warning, the name adjoint has been redefined

Warning, the protected names norm and trace have been redefined and unprotected

>

6.A Graphical Approaches to Bifurcation

Consider the one-parameter family of functions

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

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

>

in the differential equation

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

ode := diff(y(t),t) = y(t)^2-2*y(t)+mu

>

6.A-1 Animated Slope Fields and Solution Curves

One way to obtain an appreciation for the importance of bifurcations is to examine the slope field and solution curves for different values of the parameter. Here, these plots will be put together as an animation.

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

PARAM := [-4, -7/2, -3, -5/2, -2, -3/2, -1, -1/2, 0...

>

To maximize the impact of this animation we want to be sure that every equilibrium solution is displayed. One way to ensure this is to include all equilibria for each value of the parameter in the list of initial conditions.

> 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

> IC;

{[0, -2], [0, -5], [0, -4], [0, -3], [0, -1], [0, 0...
{[0, -2], [0, -5], [0, -4], [0, -3], [0, -1], [0, 0...
{[0, -2], [0, -5], [0, -4], [0, -3], [0, -1], [0, 0...

>

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 );

[Maple Plot]

>

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.

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

> arrows=MEDIUM ), mu=PARAM ):

> display( PLOTseq, insequence=true );

[Maple Plot]

>

The fact that there is a bifurcation somewhere in this range of parameters is evident from the animation. To identify the value of the parameter where the bifurcation occurs, one typically examines a bifurcation diagram (see below).

>

6.A-2 Bifurcation Diagram

Continuing the previous example, recall that

> f;

y^2-2*y+mu

> ode;

diff(y(t),t) = y(t)^2-2*y(t)+mu

>

where mu is the parameter. The bifurcation diagram displays the equilibria of the ODE as a function of the parameter. In general, this means plotting the implicitly defined function y = y(mu) where f[mu](y) = 0 :

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

[Maple Plot]

>

The bifurcation value is mu = 1 .

>

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

> f := y^3 - alpha*y:

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

ode := diff(y(t),t) = y(t)^3-alpha*y(t)

>

where alpha is the parameter.

The bifurcation diagram for this example is the familiar "pitchfork".

> implicitplot( f=0, alpha=-4..4, y=-2..2, style=POINT, axes=BOXED );

[Maple Plot]

>

>

6.B Analytic Determination of Bifurcation Points

Not every equilibrium solution is a bifurcation point. For a given value of the parameter, mu , a necessary condition for an equilibrium solution to be a bifurcation point is that
diff(f[mu](y),y) = 0 . That is, if f[mu](y) = 0 and diff(f[mu](y),y) = 0 , then y is a possible bifurcation point for the ODE diff(y(t),t) = f[mu](y(t)) .

>

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

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

> bif_eq1 := f = 0;

bif_eq1 := y*(1-y)^2+mu = 0

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

bif_eq2 := (1-y)^2-2*y*(1-y) = 0

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

bif_sol := {mu = -4/27, y = 1/3}, {y = 1, mu = 0}

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

bif_pt := [-4/27, 1/3], [0, 1]

>

> 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 );

>

[Maple Plot]

[Back to ODE Powertool Table of Contents]

>