Exponential Growth

    Exponential growth is one of the most common time paths exhibited by systems in the world. It has two characteristics that are very important to note. The first characteristic is its power. Exponential growth can occur very rapidly. The second characteristic is its insidiousness. Exponential growth can "sneak up" on a person!

    Consider the case of repeatedly folding a standard piece of paper in half, doubling its thickness with each fold. After five or six folds, the paper is not particularly thick. But how thick would it be after 36 more folds? As shown in Figures 7a and 7b, after 42 folds a standard piece of paper would be approximately 280,000 miles thick -- more than the distance from the Earth to the moon! Further, the shape of the plot shows that the big explosion in thickness occurs at the end of the plot. For most of the simulation run, the system’s growth is hardly distinguishable from the horizontal axis. The last few doublings, however, really make the thickness grow.


    Figure 7a: Folding a Piece of Paper

    Figure 7b: Exponential Growth of the Thickness of a Piece of Paper




    In terms of a system dynamics model that can produce exponential growth, consider Figure 8 -- a "first cut" stock-flow structure of an elephant herd system. The figure presents the model’s stock and flow icons, the corresponding system dynamics equations, and the dimensions of each equation. As will become apparent throughout the remainder of this book, the specification of the dimensions of every equation in a system dynamics model is an important part of the modeling process. It helps the modeler both document a model and conceptualize its structure. Stocks are dimensioned in terms of "units" ("Elephants") and flows are dimensioned in terms of "units/time" ("Elephants/Year"). Other variables in a system dynamics model must possess dimensions that correspond algebraically to its stock-flow-feedback loop structure. Examples of system dynamics models that have been properly dimensioned will be presented ahead.

    Figure 8: "First Cut" Stock-Flow Structure of an Elephant Herd Model

    Figure 9 presents a simulation of the "first cut" model, when the initial number of elephants in the herd is set at ten and a constant number (two) of baby elephants are born each year. Clearly the model exhibits a linear, rather than an exponential, growth.

    (Click on image to run simulation)

    Figure 9: Simulation of the First Cut of the Elephant Herd Model (Initial Elephants = 10)

    Before moving directly to a structure that exhibits the exponential time shape, it is perhaps better to "think like a modeler" for the moment. A good system dynamicist will test each of the structures he or she creates for "robustness." This means that he or she will test to see if their model behaves "properly" under a variety of circumstances, both normal and extreme. If a model behaves properly in response to robustness testing, the system dynamicist can be confident that it will behave properly when interfaced with other model structures.

    Figure 10: Simulation of the First Cut of the Elephant Herd Model (Initial Elephants = 0)

    Figure 10 shows the results of a robustness test done on the "first cut" elephant herd model. For the purpose of the test, the initial number of elephants in the herd (stock variable) was changed to zero. Clearly the simulation makes no sense. The number of elephants in the herd grows even though there are initially no elephants to produce baby elephants. The conclusion is that the model does not behave properly in response to this extreme test and is therefore "nonrobust."

    The next cut of the model should be aimed at correcting the robustness problem. The first cut of the model generated an implausible result because elephants are needed to produce more elephants. This biological fact implies that a feedback link from the stock of elephants to the flow of elephant births is required so that the computer can calculate the number of baby elephants produced by the elephant herd each year.

    Figure 11 presents the "second cut" of the elephant model. It contains a feedback link from the stock of elephants to the birth rate flow, an additional icon (the birth rate coefficient (BirthRateCoef)), and an additional information link.

    Figure 11: "Second Cut" of the Elephant Herd Model (Initial Elephants = 0)

    Figure 12 shows the results of a simulation of the model when the initial number of elephants is set at zero. Clearly, the new formulation of the model has cured the robustness problem revealed in Figure 10. When there are initially no elephants in the herd, no baby elephants are born and the size of the herd remains at zero.

    (click on image to run simulation)

    Figure 12: Results of a simulation using "Second Cut" of the Elephant Herd Model (Initial Elephants = 0)

    Figure 13, on the other hand, is a simulation of the model when the initial number of elephants is ten. In this case, the positive feedback loop created between elephants and baby elephants causes the exponential growth path of the elephant herd.

    (Click on image to run simulation)

    Figure 13: Simulation of the "Second Cut" of the Elephant Herd Model (Initial Elephants = 10)



    Generic Structure

    Over the years, system dynamicists have identified combinations of stocks, flows and feedback loops that seem to explain the dynamic behavior of many systems. These frequently occuring stock-flow-feedback loop combinations are often referred to as "generic structures".

    Figure 14 shows a generic structure responsible for exponential growth and its corresponding causal loop diagram. It is the generic version of Figure 11 -- a generic first order positive feedback loop system. Most system dynamicists think about this structure when modeling a system that grows exponentially; the contents of the stock produces more of the contents of the stock.

    Figure 14: A Generic Structure Responsible for Exponential Growth

    Figures 15 and 16 illustrate two other specific instances of this generic structure. Figure 15 shows positive exponential feedback in an interest compounding savings account. Figure 16 shows how knowledge accumulates in a particular scientific field of study.

    Figure 15: Structure for a simple interest compounding savings account



    Figure 16: Structure for the growth of knowledge in a particular flield of study




    Exact Analytical Solution for a First Order, Linear, Positive Feedback Loop System

    The first order positive feedback loop system of Figure 14 is a linear system. As a result, in addition to its simulated solution, it possesses an exact analytical solution. This solution is:


        Stockt = Stock0 * e Coef * t


        Equation 1

    For the more mathematically inclined reader, the derivation of this solution is shown in the box below. Although the case has already been made that simulated solutions to nonlinear systems are preferable to analytical solutions to linear systems, Equation 1 can be used to generate some insights that are useful in system dynamics modeling.

    Derivation of the Analytical Solution



    Therefore, the exact analytical solution is:

    Stockt = Stock0 * eCoef * t

    For example, at time = 50, with a Coef of .02 and an initial Stock of 100:

    Stock50 = 100 * e 0.02 * 50 = 271.8281828



    Using the Exact Analytical Solution to Test Numerical Integration Methods

    Equation 1 can be used to determine the accuracy of various simulated solutions to the generic first order positive feedback loop system shown in Figure 14. Generally speaking, simulated solutions to system dynamics models differ by step size (DT) and/or numerical integration method employed. As was previously discussed, reducing DT makes a simulated solution more accurate, but forces the computer to do more work. In a similar way, numerical integration methods vary by accuracy and required number of calculations.

    Most system dynamics software packages go through the following sequence of events to simulate a model:

    Initialization Phase

    1. Create a list of all equations in required order of evaluation.

    2. Calculate initial values for all stocks, flows and auxiliaries (in order of evaluation).

    Iteration Phase

    1. Estimate the change in stocks over the interval DT.

    2. Calculate new values for stocks based on this estimate.

    3. Use new values of stocks to calculate new values for flows and auxiliaries.

    4. Add DT to simulation time.

    5. Stop iterating when Time >= StopTime

    Step 1 of the Iteration Phase is the place where most numerical integration methods differ. More specifically, different numerical integration methods estimate the change in a model's stocks over the interval DT in different ways.

    Although many numerical integration methods exist, the two that are most frequently used in system dynamics modeling are Euler's method and a second order Runge-Kutta method. Euler's method is the simplest and least accurate (for a given DT) numerical integration method available. Indeed, due to its conceptual simplicity, it is the method upon which the nomenclature of the generic system dynamics stock equation is based.

    In Step 1 of the Iteration Phase of the simulation of a system dynamics model, Euler's method estimates the change in a model's stocks over the interval DT as:

    DStock = DT * Flow at Beginning of DT

    Thus, in Step 2 of the Iteration Phase, the new values for a model's stocks are calculated in the following way:

    Stockt = Stock(t-DT) + D Stock

    Stockt = Stock(t-DT) + DT * (Flow(t-DT) => t)

    Of course, this is precisely the same formulation as Equation 4 of Analytical-vs-Simulated Solutions.

    A second-order Runge-Kutta method differs from Euler's method in that it uses two flow calculations within a given DT to create an estimate for the change in a model's stocks over the interval DT. More precisely, during Step 1 of the Iteration Phase of a simulation, a second order Runge-Kutta method estimates the change in a model's stocks over the interval DT as:

    F1 = DT * Flow at Beginning of DT [same as in Euler's method]

    F2 = DT * Flow at End of DT = DT * Flow(Stock(t) + F1)

    D Stock = 1/2 * (F1 + F2)

    Stockt = Stock(t-DT) + D Stock

    Stockt = Stock(t-DT) + 1/2 * (F1 + F2)

    In other words, a second-order Runge-Kutta method estimates the change in a model's stocks by taking the mean of the flows that occur at the beginning and at the end of each time step.

    Figure 17: Comparison of Exact Analytical Solution to Simulated Solution (Euler's Method; DT = .5)

    Figure 17 compares the results of simulating the generic first order positive feedback loop system shown in Figure 14 via Euler's method with a DT of .5, against the exact analytical solution to the system given by Equation 1. In each case, the initial value of the stock is set equal to 100 units and the value of the growth coefficient is set at .02 units/unit/time. Athough each solution starts at the same place, the simulated solution quickly diverges from its exact counterpart. Indeed by period 10, the exact amount in the stock is 122.14 units, while the simulated solution indicates that it contains only 122.02 units.

    In a similar way, Figure 18 compares the exact analytical solution to the generic first order positive feedback loop system against a simulated solution using Euler's method and a DT of .25. Clearly, cutting DT in half improves the accuracy of the simulated solution, as the simulated value of the stock at period 10 is now 122.08.

    Figure 18: Comparison of Exact Analytical Solution to Simulated Solution (Euler's Method; DT = .25)

    Finally, Figure 19 compares Equation 1 to a simulated solution utilizing a second order Runge Kutta method and a DT of .25. Inspection of this figure reveals that the simulated solution is now equal to the exact solution, to two places to the right of the decimal point, throughout the entire simulation.

    Figure 19: Comparison of Exact Analytical Solution to Simulated Solution (Second Order Runge Kutta Method; DT = .25)

    Measures of Exponential Growth

    The exact analytical solution to a first order, linear, positive feedback system (Equation 1) can be used to derive two important measures of exponential growth. The first of these measures is the system's time constant. The second is sytem's doubling time.

    Time Constant

    Figure 20 depicts a system dynamics representation of a first order, linear, positive feedback loop system with an exact analytical solution represented by Equation 1. The time constant of this system, Tc, measured in units of time, is defined to be 1/Coef.

    Figure 20: First Order, Linear, Positive Feedback Loop System

    Given the definition of the system time constant, the following question can be asked: How much exponential growth occurs during one time constant's worth of time? To answer this question, the system's time constant must be inserted into equation 1. Thus, the amount of exponential growth that occurs during one time constant of time is:

    Stockt = Stock0 * eCoef * t

    Stockt = Stock0 * eCoef * Tc

    Stockt = Stock0 * eCoef * (1/Coef)

    Stockt = Stock0 * e1

    Stockt = Stock0 * 2.71828

    In other words, the amount of exponential growth that occurs during one time constant is 2.71828 times the initial amount in the system's stock. Pushing this logic to the next step, the amount of exponential growth that occurs during two time constants is 7.3890 (i.e., 2.71828 * 2.71828) times the initial amount in the system's stock.

    Figure 21: Exponential Growth After One and Two Time Constants have Elapsed

    Figure 21 shows the amount of exponential growth that has taken place in a first order, linear, positive feedback loop system, with a Coef of .1 and an initial value of 100, after one and two time constants have elapsed. After one constant, the stock has grown from 100 to 271.83 and after two time constants it has grown to a value of 738.90.

    Doubling Time

    The second measure of how quickly exponential growth is proceeding in a first order, linear, positive feedback system is its doubling time. A system's doubling time is simply the amount of time it takes for the contents of its stock to double.

    The doubling time of a first order, linear, positive feeback loop system, Td, is equal to seventy percent of its time constant. That is: Td = .7 * Tc . For the more mathematically inclined reader, the derivation of this result is provided in the shaded box below.

    Derivation of the Doubling Time for a First Order, Linear, Positive Feedback Loop System

    The doubling time for a first order, linear, positive feeback loop system is calculated using Equation 1. If the doubling time, Td, is defined to be the time it takes to double the initial value of a stock, then:

    2*Stock0 = Stock0 * eCoef * Td

    Since the system's time constant, Tc, is 1/Coef, then the system's Coef = 1/Tc. Thus:

    2 * Stock0 = Stock0 * e 1/Tc * Td

    Dividing both sides by Stock0 yields:

    2 = eTd/ Tc

    Taking the natural logarithm of both sides yields:

    ln(2) = ln(eTd/Tc)

    Or:

    .69 = Td / Tc

    Or:

    .7 = Td / Tc

    Or:

    Td = .7 * Tc

    Thus, the doubling time of a first order, linear, positive feeback loop system is seventy percent of its time constant.

    Figure 22 shows the same simulation run presented in Figure 21. This time the figure shows that the system's stock doubles from a value of 100 to a value of 200 in (approximately) the seventh period (.7 multiplied by the time constant of 10 periods).

    Figure 22: Doubling Time for a First Order, Linear, Positive Feedback Loop System



    The concept of doubling time leads directly to a heuristic known as the Rule of 70. This rule says that, if you know, or can estimate, how quickly an exponentially growing system is growing (i.e., if you know, or can estimate, Coef in Equation 1), you can calculate its doubling time as Td = (70 / Coef) * 100.

    Consider, for example, the growth of the United States economy. As shown in Figure 23, U.S. nominal GDP grew exponentially at a rate of 7 percent per year, from 1959 to 1995 (i.e., Coef is estimated to be .07055). At this rate of growth, the Rule of 70 says that the nominal size of U.S. economy will double in (70 / .07055)*100 = 9.86 years.

    Figure 23: U.S. Nominal GDP (1959-1995)