Topic: Exponential Growth Model and Limitation
Subject: Numerical Methods
Tool: Scilab
- Ordinary Differential Equation (ODE) for Exponential Growth
The ODE representing exponential growth is a fundamental model frequently used in real-world application of predictive modeling, particularly in demographics, ecology, and urban planning, to forecast future population sizes based on past trends and other factors.
The population growth is represented by the differential equation shown in Equation (1). The equation signifies that the rate of population change is directly proportional to the current population size.
$$\frac{dP}{dt}=r \, P \tag{1}$$
Equation (1) has a general solution as shown in Equation (2).
$$P(t) = P_0 \; e^{r \, t}, \quad P(0) = P_0 \tag{2}$$
The ODE representing the population growth model has the following limitations if applied in predictive modelling. First, it predicts unlimited and unrealistic growth over the long period of time, which is not sustainable in the long run due to factors resulting to limitation of resources. Second, the growth rate considered constant does not account for changes in birth and death rates or other environmental factors.
Below is the list of models or techniques for estimating or describing the population aside from exponential growth.
- Exponential Growth
- Logistic Growth
- System Dynamics
- Naive Bayes and Decision Tree
- Grey Prediction
- Numerical Solution to ODE using Euler's Method
The Scilab scripts used for calculations implements the Euler method to numerically approximate the solution of a first-order ordinary differential equation modeling exponential growth. Euler method requires an ODE and initial condition in the form of Equation (3).
$$\frac{dP}{dt} = f(t,P) , \quad (t_0 , P_0) \tag{3}$$
The approximate solution using Euler’s method is shown in Equation (4).
$$\frac{\Delta P}{\Delta t} \approx \frac{P_{n+1} - P_n}{h} \approx f(t, P) \tag{4}$$
\(P_{n+1}\) is the solution to the ODE and can be solved by rearranging the Equation (4) leading to Equation (5).
$$P_{n+1} = P_n + h \; f(t, P) \tag{5}$$
The \(f(t,P)\) requires finding the growth rate, \(r\), for the two conditions as shown in Equation (6).
$$\large r = \frac{\ln \left( {\frac{P_t}{P_0}} \right)}{t} \tag{6}$$
- Philippine Statistics Authority (PSA) Population Estimates
This article will use the exponential growth model to predict and estimates the population growth of the Philippines in comparison with a country’s agency (PSA) estimates. The agency is mandated to conduct national censuses and surveys including those on population.
Table 1 presents the population projections from the PSA up to the year 2055. These projections will be analyzed alongside the model based on exponential growth.
Table 1. Philippine Population Projection until 2055
- PSA Estimates and Exponential Growth Comparison
Figure 1 illustrates the difference between two methods of estimation. The exponential growth model deviates from the PSA estimates after 25 years. Exponential growth models can accurately predict population trends during the initial growth phase, but their reliability decreases as other factors cause deviations from exponential behavior.
Figure 1. Population Growth Model and PSA Estimates
Below is the Scilab script to produce the results shown in Figure 1.
- Scilab Script
// Copyright (C) 2025 - I.S.Comia // Date of creation: Jul 6, 2025 // Predictive Modeling using Exponential Growth clear;clc; // Subroutine // Population or Exponential Growth Model (1st-Order ODE) function dPdt=f(t, P) global r; dPdt = r * P; endfunction function r=growthRate(P_0, P_t, t) // calculate the estimated growth rate // input: // P_0 - quantity at t = 0 // P_t - quantity at a given time t // t - time // output: // r - estimated growth rate r = log(P_t./P_0)./t; endfunction // Main function // Problem case scenario // Phil. Statistic Authority (PSA) estimated population from year 2020 to 2050 // Primary parameters actYear = [2020 2025 2030 2035 2040 2045 2050 2055]; // Population in millions Pop = [109.2027 113.8631 118.8738 123.9636 128.8260 133.0245 136.2989 138.6727]; Yrs = actYear - 2020; // years covered t = Yrs(2)-Yrs(1); global r; r = growthRate(Pop(1),Pop(2),t); // growth rate estimate T_initial = Yrs(1); // initial time P_initial = Pop(1); // initial population (millions) // Secondary parameters T_final = Yrs($); // years, final time dt = 1/12; // month, step size, N = T_final/dt; // number of steps // Euler method solution to IVP ODE // Initial conditions for time and P-value T(1) = T_initial; P(1) = P_initial; // Solution for k = 1:N dPdt = f(T(k), P(k)); T(k+1) = T(k) + dt; P(k+1) = P(k) + dPdt * dt; end // Plotting of ODE solution clf; fig = gcf() fig.figure_size = [700, 700] plot(T,P,"b-","LineWidth",4) title("Population Growth Model, Year 2020~2055","FontSize",4) xlabel("Time (years)","FontSize",3.5) ylabel("Population (millions)","FontSize",3.5) xgrid(7,1) // Population estimate for T_value~5 years or Year 2025 idT = max(find(T <= 5.05)); T_value = T(idT); P_value = P(idT); mprintf("For T_value: %4.2f, P_value: %6.3f \n", T_value, P_value) // Plot of information for Year 2025 plot(T_value,P_value,"rs","MarkerFaceColor","r","MarkerSize",13) ann_1=xstring(T_value+0.75,P_value-1,["Year:2025,Pop:",string(round(P_value)),"M"]) ann_1.font_size = 2 ann_2 = xstring(20,102.5,"https://gani-mech-toolbox.blogspot.com") ann_2.font_size = 2 ann_3 = xstring(T_initial-2.5,P_initial-2.5,"Year: 2020") ann_3.font_size = 2 T_line = [T_value T_value T_initial-5]; P_line = [100 P_value P_value]; plot(T_line,P_line,"r--","LineWidth",1) // PSA population estimate plot(Yrs,Pop,"ko","MarkerFaceColor","k","MarkerSize",8) ann_4 = ["Exponential Growth Model";"Est Pop @ Year 2025";"";"PSA Pop Estimate"] ann_5 = legend(ann_4,2,with_box=%F) ann_5.font_size = 2 ax = gca() ax.data_bounds = [-5 100; 40 150]
Feel free to comment for inquiry, clarification, correction or suggestion for improvement. Drop your email to make a request to the author.
- James, G., et al., Modern Engineering Mathematics. Addison-Wesley Publishing Company, Inc. 1993.
- “Philippine Population is Projected to be around 138.67 Million by 2055 under Scenario 2”. Philippine Statistics Authority. January 31, 2024. https://psa.gov.ph/content/philippine-population-projected-be-around-13867-million-2055-under-scenario-2
- ChatGPT. AI Tools. Accessed on July 6, 2025.
- Google AI Overview. AI Tools. Accessed on July 9, 2025.