Wology, or, some exactly solvable growth models
by Keith Briggs (formerly at Department of Plant Sciences,
University of Cambridge,
Downing St.,
Cambridge CB2 3EA. Revised 1999 Nov 12; font adjustments 2005 July 11)
`To give full growth to that which still doth grow?' 
Shakespeare, Sonnet CXV
Introduction
Aim of these notes: to show how some generalizations of logistic growth
laws have elegant analytic solutions and speculate on their applications
to modelling.
Lambert's
W function is defined by
or equivalently
Actually, W is multivalued, but I shall always use the principal branch, which
satisfies W(0) = 0, and is defined on e^{1}< x<∞.
Useful formulas
 The solution of (a+bx)exp(cx)d = 0 is
x = W[cd/bexp(ac/b)]/ca/b. 

Example application: in New Phytol. 136, 362 (1997),
the equation (q_{1}+q_{2} R)exp(q_{3}R)0.05 = 0
needed to be solved for the pathozone width R.
This is trivial with the above formula: R = W[(q_{3}/(20q_{2}))exp(q_{1}q_{3}/q_{2})]/q_{3}q_{1}/q_{2}.
Similar transcendental algebraic equations arise in the computation
of equilibria in graphtheoretical epidemic models.
 W'(x) = W(x)/(x(1+W(x))) for x nonzero.
 ∫ W(x)dx = x[W(x)1+1/W(x)]+c
 The inverse function W^{ < 1 > } is given by W^{ < 1 > }(x) = xexp(x).
 The Taylor series of W around 0 is
∑_{k = 1}^{∞}[((k)^{k1})/k!]x^{k}, and has radius of convergence e^{1}.
Differential equations
It is usually considered that the most general exactly solvable
growth model is that of Richards:
y'(t) = Β/ν y(1(y/k)^{n})

(ν not 0, ν> 2) for which the solution is
y(t) = Κ [1+J exp( Β t)]^{ν
(2)} 
with J a function of Κ,ν and y(0).
Instead, I wish to consider models of the form
y'(t) = y^{n} (1y) n = 2,3,... . 

The key to these are the integrals
 ∫[dx/(x(1bx))] = log(x)log(bx1)
 ∫[dx/(x^{2}(1bx))] = b(log(x)log(bx1))x^{1}
 ∫integral[dx/(x^{3}(1bx))] = (x^{2}/2bx^{1})b^{2}(log(bx1)log(x))
etc.
These allow us to give explicitly the solution of the
initial value problem
y'(t) = y^{2}(1y), y(0) = y_{0} 
 (3) 
as
y(t) = [1+W(ue^{ut})]^{1}, u = y_{0}^{1}1. 

More generally,
y'(t) = ay^{2}(by), y(0) = y_{0}, a > 0, b > 0 
 (4) 
has the solution
y(t) = b[1+W(ue^{uab2 t})]^{1}, u = b/y_{0}1. 

Figure 1: Solutions of equation (4) for y_{0} = 3,a = 0.001,b = 8,12,18,32,62
A very rough fit of equation (4) to some onion plant growth data is
shown in Figure 2. No attempt has been made to
optimize the parameters.
Figure 2: Fit of equation (4) to onion growth data
Another differential equation, which can be interpreted as having a
timedependent growth rate, is
v'(x) = 
v^{2}(1bv)
x^{2}(1bx)


 (5) 
with the initial value v(0) = 0. Since this differential
equation has a singular point at the origin, we need to add a condition
such as v'(0) = 1 to pick out a solution of interest.
The exact solution of equation (5) is explicitly given by
bv(x)^{1} = 
[ [ [ [


1+W[+exp{log(b+1/x)+(1/xc)/b1}/b] 

 

1+W[exp{log(+b1/x)+(1/xc)/b1}/b] 


 
 (6) 
for c = constant.
Some typical solutions are shown in Figure 3.
These solutions tend to b[W(exp(c/b1))+1]^{1}
as x tends to infinity.
Figure 3: The functions v(x) for various b
LotkaVolterra models
The twospecies model
has solutions which are closed loops in the xy plane.
The exact solution (homework exercise) for the lower branch is
y = W[Cx^{c/a}exp(cx/a)], C = constant. 

Takehome message
Don't assume that only solutions expressible with standard
elementary transcendental functions are the only useful ones!
A numerical algorithm for W
/* ANSI C code for W(x). K M Briggs 98 Feb 12
http://wwwepidem.plantsci.cam.ac.uk/~kbriggs/LambertW.c
Based on Halley iteration. Converges rapidly for all valid x. */
double W(const double x) {
int i; double p,e,t,w,eps=4.0e16; /* eps=desired precision */
if (x<0.36787944117144232159552377016146086) {
fprintf(stderr,"x=%g is < 1/e, exiting.\n",x); exit(1); }
if (0.0==x) return 0.0;
/* get initial approximation for iteration... */
if (x<1.0) { /* series near 0 */
p=sqrt(2.0*(2.7182818284590452353602874713526625*x+1.0));
w=1.0+pp*p/3.0+11.0/72.0*p*p*p;
} else w=log(x); /* asymptotic */
if (x>3.0) w=log(w);
for (i=0; i<20; i++) { /* Halley loop */
e=exp(w); t=w*ex;
t/=e*(w+1.0)0.5*(w+2.0)*t/(w+1.0); w=t;
if (fabs(t)<eps*(1.0+fabs(w))) return w; /* relabs error */
} /* never gets here */
fprintf(stderr,"No convergence at x=%g\n",x); exit(1);
}
Bibliography
I've tried to make these notes selfcontained, so all you should need is...
[1] Briggs, K. M. Wology, or, some exactly solvable growth models
Footnotes:
1: Johann Heinrich Lambert: born 1728 Aug 26 in Mülhausen, Alsace;
died 1777 Sep 25 in Berlin, Prussia.
Lambert was a colleague of Euler and Lagrange at the Berlin Academy of Sciences.
Amongst other achievements, he was the first to provide a rigorous proof that π is irrational.
