© Fernando Caracena, 2015
Various mathematical models are applied here to technological growth.
Linear Model
The linear model has two constants, a and b:
f(t)=a*t +b (1).
The paleolithic model is one possible linear model, which has no perceptible progress (a=0), and the and outputs the initial value b=1.0, which remains the same through all time.
The full linear model results by assigning the constant, a, some positive value, which describes the up-tilt, or slope, of the rising curve of progress. In the fig. 2 , the choice, b=0.0 , results in no loss in generality.
The Exponential Model
The exponential model has a fixed doubling time, d:
f(t)=exp(log(2.)*t/d ) (2a),
where d is a constant.
Note that when t=d then f(d)=exp(log(2.)), which is just 2,
f(d)=2.
The Double Exponential Model
In this case, growth is still modelled as in (2a), but the doubling time itself is allowed to decay exponentially:
f(t)=exp(log(2.)*t/d(t) ) (2b),
d(t) = d0 exp(log(2.)*t/d1 ) , (3)
where
d1 is a constant.
Discussion of Model Behaviors
The Paleolithic Model
In prehistoric days, technological progress was so slow that the best model that applied to, it was a static model. There was no noticeable progress. Generation after generation, people did the same old thing with little variation. Progress was there, but it was so slow as to be imperceptible. Evolution of lifeforms is a form of progress, which is imperceptible on the scale of a human lifespan.
Linear Growth Model
In modern times, we have become aware of technological growth, especially now, because of historical records. Also, life has changed significantly from one generation to the next. Grandpa' s transportation was a horse and buggy, then an old Model T Ford, etc.
The Exponential Model
The exponential model for technological growth applies to our very recent past, especially to the development of electronics and integrated circuits. That the number of transistors in a dense integrated circuit doubles approximately every two years is known as Moore's law. It is this kind of progress, which has taken us from a room full of circuitry and electronic, vacuum tubes (the first computers) to small hand-held devices.
Taking the logarithm of the ordinate and plotting it against the unmodified abscissa (semilog plot) yields a linear plot resembling Fig. 2.
The Double Exponential Model
Ray Kurtzweill speaks about the approaching "singularity", when progress will go into a blinding speed. The model he applies to this kind of progress, I call a double exponential. The form of growth is sill exponential, but the doubling time is not a constant, but itself is a decaying exponential. In a double exponential, the doubling time for growth keeps getting shorter and shorter. When the double exponential is plotted against time, it gives a curve that models all of human history up to the present. For a long time (millenia), human progress seems to be non-existent, then suddenly it turns vertically and rises so rapidly that it looks like the approach to a singularity.
Python Code
ipython --pylab
# The paleolithic and linear growth model both use the following function:
def f(x): return a*x+b
#The paleolithic model
" This is a no growth, or Static, model:
a=0.0
b=1.0 #.
#Create a time variable that ranges in a floating array from 0.0 to 99.9, which is for all models:
t=arange(0,100, 0.1) #.
plot(t,f(t),color='b', linewidth=3)
# Label the plot
labels = getp(gca(), 'xticklabels')
xlabel('Time', fontsize=20)
ylabel('Growth', fontsize=20)
suptitle('Static Model', fontsize=20,fontweight='bold', color='k')
# The Liner Growth Model
# Here we chose the constants as follows:
a = 2.0
b=0.0 #.
plot(t,f(t),color='b', linewidth=3)
suptitle('Linear Model', fontsize=20,fontweight='bold', color='k')
# The Exponential Growth Model
# Choose the doubling time
d=10.
def g(x): return e**(log(2.)*x/d)
figure()
plot(t,g(t),color='b', linewidth=3)
labels = getp(gca(), 'xticklabels')
xlabel('Time', fontsize=20, fontweight='bold')
ylabel('Growth', fontsize=20, fontweight='bold')
suptitle('Exponential Growth', fontsize=20, fontweight='bold', color='k')
# The Double Exponential Growth Model
# In this model, another time constant is set for an exponential decay in doubling time:
d2=50. #.
figure()
plot(t,y,color='b', linewidth=3)
labels = getp(gca(), 'xticklabels')
setp(labels, color='k', fontweight='bold', fontsize=20)
xlabel('Time', fontsize=20)
ylabel('Growth', fontsize=20)
suptitle('Double Exponential Growth', fontsize=20,fontweight='bold', color='k')
# Note that python ignores all lines beginning with #, which represent comments.