Modeling Technological Growth

© 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,


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)


d1 is a constant.

Discussion of Model Behaviors

Fig. 1 In the Static Model--There is no growth. Once you learn everything you need, you are set for life.

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.

Fig. 2. The linear technological growth Model applies to our recent past.

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.

Fig. 3. In modern times, we have become aware that growth is really exponential at a fixed doubling time.

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


Fig. 4. The double exponential model of technological progress is proposed by Kurtweill, which contains a sudden upsurge in growth that resembles an approach to a singularity.

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:


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


def g(x): return e**(log(2.)*x/d)
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.  #.

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.









This entry was posted in Op Ed. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *