ORDINARY DIFFERENTIAL EQUATIONS POWERTOOL
Unit 6 -- Bifurcations
Industrial Mathematics Institute
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;
>
in the differential equation
> ode := diff( y(t), t ) = eval( f, y=y(t) );
>
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 ) ];
>
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;
>
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 );
>
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 );
>
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).
>
Continuing the previous example, recall that
> f;
> ode;
>
where
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
where
:
> implicitplot( f=0, mu=-8..8, y=-4..4, style=POINT, view=[ -8..2, -4..4 ] );
>
The bifurcation value is
.
>
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) );
>
where
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 );
>
>
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 that
. That is, if
and
, then
is a possible bifurcation point for the ODE
.
>
> f := y*(1-y)^2 + mu;
> bif_eq1 := f = 0;
> bif_eq2 := diff( f, y ) = 0;
> bif_sol := solve( { bif_eq1, bif_eq2 }, { mu, y } );
> bif_pt := seq( eval([mu,y],BP), BP=[bif_sol] );
>
> 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 );
>
[Back to ODE Powertool Table of Contents]
>