We Promise to Make your Math Frustrations Go Away!


Try the Free Math Solver or Scroll down to Tutorials!












Please use this form if you would like
to have this math solver on your website,
free of charge.


Functions and Variables Used in This Tutorial

arrowflag, arrowvec, classify2D, labshift, liaparmval, liaparmvec, liapcontours, liapsign, liapsignseq, orbdt,
orbdtval, parmval, parmvec, plotreset, plrange, portrait, setparm, setstate, slopevec, statevec, sysid, and sysname.

Description of Systems Used in This Tutorial

In this tutorial, we use Liapunov functions to look at the stability of some planar equilibria. The routines
demonstrated here do not help in the selection of a trial form for a Liapunov function, but they do allow a quick graphical
check on the sign of either the function or its orbital derivative. As examples, we use two simple nonlinear systems for
which linearization does not yield a definite answer on the stability question. Both systems are centers in linear theory.

First Example

We define a simple nonlinear system with one equilibrium, at x = y = 0.



slopevec = {-2*y-x^3, a*x - y^3};

parmval = {1};

sysname = "Liap1";

We first try classify2D.


Abbreviations used in classify2D.

L = linear, NL = nonlinear, R2 = repeated root.

Z1 = one zero root, Z2 = two zero roots.

This message printed once.

stable (L), indeterminate (NL) - center

Thus the linearized system is a stable center, so there is no conclusion about the stability of the nonlinear system. We now
try to find a Liapunov function V. We can establish stability of the equilibrium if we find a V which (1) is positive definite
in a deleted neighborhood of the origin and which (2) has a negative definite orbital derivative in a deleted neighborhood of
the origin. Liapunov functions are defined as expressions in the state variables and any parameters that we wish to include.
We try a simple quadratic function with one parameter.

Vliap = x*x +

This is clearly positive definite for any positive alpha. We next declare the parameter alpha as a Liapunov parameter, and
set the parameter value to 1.

liaparmvec = {

liaparmval = {1};

Now we look at the orbital derivative of this function.


2 x (-x3 - 2 y) + 2 y (a x - y3)

To get the orbital derivative with the current system parameters substituted, we use orbdtval.


2 x (-x3 - 2 y) + 2 y (x - y3)

We see that a and alpha have been replaced by their present values (1 in both cases).

To get a quick look at the sign of the orbital derivative, we use the function liapsign, which will give us a contour
with regions of positive function in white, negative in grey. This routine automatically substitutes current values of both
system and Liapunov parameters.

plrange = {{-1.5,1.5},{-1.5,1.5}};


We see that this is not a suitable Liapunov function because the orbital derivative takes on both signs. We now use
the function liapsignseq to construct a sequence of such graphs, for a sequence of values of the parameter in the Liapunov
function. We try the values
α = 1, 2, and 3.

parmlist = {1,2,3};


Liapunov Sequence for 2 x(-x3 - 2 y) + 2 y (a x - y3)

Within the limits of the graphical resolution, it looks like
α = 2 may work. Let's see if we can verify this

liaparmval = {2};


2 x (-x3 - 2 y) + 4 y (x - y3)


-2 (x4 + 2 y4)

Now we have shown analytically that
α = 2 gives us a valid Liapunov function, and the equilibrium at {0,0} is
therefore strictly stable. In fact the analytical formulas show that the equilibrium is a global attractor for the system.

We can look at the contours of both the Liapunov function and its orbital derivative by using the plotting function



Before leaving this example, lets see what the solution looks like near the equilibrium. We look at a phase portrait
with four different initial conditions.

intlist = {{1,1},{-1,1},{-1,-1},{1,-1}};

h = 0.05;

nsteps = 300;

t0 = 0.0;

arrowflag = True;

arrowvec =


Now we see that the equilibrium is a nonlinear spiral. If we continued the integration the orbits would eventually
approach the origin, but the process is very slow because the approach is driven by terms which are cubic in the distance
from the origin.

Second Example

In this example, we consider a simple nonlinear system without any parameters.



parmval = {};

slopevec = {y-x*(x^2+y^2)-5*(x*y)^2,-x-y*(x^2+y^2)};

sysname = "Linear Center";

We start by looking at equilibrium by linearization.


stable (L), indeterminate (NL) - center

As before we get a linear center, which is indeterminate for our nonlinear system. We try a simple Liapunov function.

Vliap2 = x^2+y^2;

liaparmvec = {};

liaparmval = {};

Now we look at the sign of the orbital derivative.


2 x (y - 5 x2 y2 - x (x2 + y2)) + 2 y (-x - y (x2 + y2))


-2 (x4 + 2 x2 y2 + 5 x3 y2 + y4)

plrange = {{-2,2},{-2,2}};


We see that the orbital derivative is not negative everywhere. However, it is negative definite in a neighborhood of
the origin, so this establishes the local strict stability of the equilibrium there. This calculation leaves open the question of
whether the origin is a global attractor for the system. Lets look for other equilibria.

othereq = nfindpolyeq

{{881.08383 - 1.51709 i, -0.298048 - 0.488556i },
{81.08383 + 1.51709 i, -0.298048 + 0.488556 i}, {-1.28523, 0.628076},
{8-0.818705, 0.703033i, 80.0242891 - 0.455594 i}, {-0.747539 + 0.321368 },
{80.0242891 + 0.455594 i, -0.747539 - 0.321368 i},
{80.372109 - 0.207366 i, 0.506403 + 0.654794i },
{80.372109 + 0.207366i, 0.506403 - 0.654794i },
{8-0.428263 + 0.325725 i, -0.12637 + 0.770525i },
{8-0.428263 - 0.325725 i, -0.12637 - 0.770525i }, {0., 0.}

We see that there are two other real equilibrium points. We check their stability.

classify2D[{-1.28523, 0.628076}]

strictly stable - spiral

classify2D[{-0.818705, 0.703033}]

unstable - saddle

Thus the equilibrium at {-1.28523, 0.628076} is also an attractor.


This problem is taken from Chapter 10 of Nonlinear Ordinary Differential Equations, (second edition), D.W.
Jordan and P. Smith, Oxford Press, 1987. Consider the system defined by statevec = {x,y}, slopevec = {-x3 + y4, -y3 + y4}.
Show that linearization leads to no conclusion for the stability of the origin. Find a Liapunov function which proves
stability. Use liapsign to check the sign of the orbital derivative.