This page contains a maple code for Chapter 3 (Second-order differential equations: Steady-state solutions and their stability).
#liapunov.txt
#26.05.09
# Define the candidate Lyapunov function
V := a*x^2 +2*b*x*y +c*y^2;
# To use theorem 3.1 we need the point (0,0) to be a local minimum
# of the function V(x,y). Find out if this is satisfied, or if it
# imposes some constraints on the parameters in the function
Vx := diff(V,x):
Vy := diff(V,y):
VA := subs({x=0,y=0},diff(Vx,x));
VB := subs({x=0,y=0},diff(Vx,y));
VC := subs({x=0,y=0},diff(Vy,y));
# Print the requirements for (0,0) to be a local minimum
print("For a local minimum we require");
print("inequality one",VA>0);
print("inequality two:",VA*VC-VB^2>0);
#Define the differential equations
#xdot := -x -2*y+x*y^2;
#ydot := 3*x -3*y +y^3;
xdot := -4*y +x^2;
ydot := 4*x +y^2;
# Determine Vdot
Vdot := Vx*xdot +Vy*ydot;
# If we need to use the following piece of code then we are not going
# to be able to prove global stability, only asymptotic stability or
# unstability.
# To use theorem 3.1 we need the point (0,0) to be either a local minimum
# or a local maximum of the function Vdot(x,y). Find out if this is satisfied, or if it
# imposes some constraints on the parameters in the function
Vdotx := diff(Vdot,x):
Vdoty := diff(Vdot,y):
VdotA := subs({x=0,y=0},diff(Vdotx,x));
VdotB := subs({x=0,y=0},diff(Vdotx,y));
VdotC := subs({x=0,y=0},diff(Vdoty,y));
disc := VdotA*VdotC-VdotB^2;
print("Investigating Vdot(0,0), We always require");
print("inequality three:",disc>0);
# Print the requirements for (0,0) to be a local minimum
# This means that Vdot > 0 and (0,0) is unstable.
print("For a local minimum we require");
print("inequality four-a",VdotA>0);
# Print the requirements for (0,0) to be a local maximum
# This means that Vdot<0 and (0,0) is asymptotically stable
print("For a local maximum we require");
print("inequality four-b",VdotA<0);