Connects to: Principles Ch. 5 (Solow, RCK), Ch. 12 (investment), Ch. 25 (OLG)
Continuous time is the natural habitat of growth theory and optimal control. The differential equation is a single, clean object with a well-developed analytical theory; the phase plane of the RCK model reveals the saddle-path geometry of optimal saving at a glance; and the Hamiltonian framework of Pontryagin unifies all intertemporal optimization problems into a single set of necessary conditions.
This part derives the full mathematical solutions to the growth models of Principles Part I, using the ODE and phase-diagram tools of Chapter 3. Chapter 3 was preparation; this part is the application. Every model here was introduced verbally and graphically in Principles; here we solve it.
Chapter 10 solves the Solow growth model as a Bernoulli ODE, derives the closed-form transition path, proves existence and uniqueness of the steady state from the Inada conditions, and derives the Golden Rule algebraically. Chapter 11 develops the full apparatus of optimal control theory — Hamiltonians, Pontryagin’s maximum principle, costate equations, the transversality condition — and applies it to the Ramsey–Cass–Koopmans model to derive the Euler equation and saddle-path solution. Chapter 12 analyzes the continuous-time Blanchard–Yaari overlapping-generations model, the tractable alternative to the Diamond (1965) discrete-time OLG. Chapter 13 returns to the Tobin’s investment model, deriving the investment dynamics from an optimal control problem and using real options theory to analyze irreversibility.
The level of mathematical detail in this part is high. Every proof is complete; every algorithm is stated in language-neutral pseudocode before any code is shown. Readers who want only the results without the derivations can follow the boxed equations and worked examples; readers who want to understand why each result holds should work through each proof step by step.
Chapter 10: The Solow Growth Model¶
Solving the Fundamental Differential Equation
“The Solow model is the starting point for almost all analyses of economic growth. It is simple, tractable, and delivers surprisingly rich insights.” — Robert Barro and Xavier Sala-i-Martin
Cross-reference: Principles Ch. 5.2 (Solow–Swan model and the fundamental ODE); Ch. 5.5 (convergence, conditional and unconditional) [P:Ch.5.2, P:Ch.5.5]
10.1 Setting Up the Fundamental ODE from First Principles¶
Principles Chapter 5 presented the Solow ODE as a given. Here we derive it from the underlying production and saving assumptions, making explicit every step and every assumption.
The model’s building blocks:
A single good is produced by capital and effective labour using a neoclassical production function .
Population grows at rate : .
Technology grows at rate : .
A constant fraction of output is saved: .
Capital depreciates at rate .
Definition 10.1 (Intensive Form). Define capital per unit of effective labour and output per unit of effective labour , where is the intensive-form production function.
Deriving the ODE. Differentiate with respect to :
Substituting and :
Definition 10.2 (Fundamental Solow ODE). The fundamental equation of the Solow model is:
Every element of this equation has a clear interpretation: is actual investment per effective worker; is the break-even investment — the investment required to keep constant as population grows (), technology improves (), and capital depreciates ().
10.2 The Cobb–Douglas Special Case: Closed-Form Solution¶
With , , the Solow ODE becomes:
10.2.1 The Steady State¶
Definition 10.3 (Steady State). The steady state satisfies :
Steady-state output and consumption per effective worker:
10.2.2 The Bernoulli ODE: Closed-Form Transition Path¶
The Cobb–Douglas Solow ODE is a Bernoulli equation — a nonlinear first-order ODE of the form . The substitution linearizes it.
Let . Differentiating:
This is a linear first-order ODE in ! It has the form , with steady state and convergence rate .
Theorem 10.1 (Closed-Form Solow Transition Path). The transition path of the Cobb–Douglas Solow model from initial condition is:
where , , and .
Proof. The solution to with initial condition is:
Converting back via gives the result.
This is the exact transition path — not a linearization. It is valid for any initial condition , not just those near .
10.3 Linearization and the Convergence Rate¶
For empirical work — particularly convergence regressions — we need the local approximation of the transition path near the steady state.
Theorem 10.2 (Linear Convergence Rate). Near the steady state of the Cobb–Douglas Solow model, the log-deviation evolves approximately as:
Proof. From the exact solution, near :
Since and for near , we have , so .
Definition 10.4 (Half-Life of Convergence). The half-life is the time for the gap to halve: .
Calibration: With , , , : , , years. This matches the empirical estimates of cross-country convergence rates of approximately 2–3% per year — which corresponds to –0.03, somewhat below the model’s prediction with these parameters. The discrepancy is partly explained by international capital flows and human capital omitted from the basic model.
10.4 Existence and Uniqueness: The Inada Conditions¶
For general production functions, the existence and uniqueness of requires the Inada conditions.
Definition 10.5 (Inada Conditions). The production function satisfies the Inada conditions if:
Theorem 10.3 (Existence and Uniqueness of the Steady State). If satisfies the Inada conditions and , , then the equation has a unique positive solution , and this steady state is globally asymptotically stable.
Proof. Define . The Solow ODE is .
Existence: ... but we need and to guarantee a crossing above zero. At : , so for small . As : , and by L’Hôpital-style argument (since is concave with ), so . By the intermediate value theorem, crosses zero at some .
Uniqueness: . Since , is strictly decreasing. At the crossing, . The sign of determines local stability: the crossing is from above (stable) iff , i.e., . By convexity of the line and concavity of , they can cross only once, and at the crossing the slope of is below the slope of . Hence is unique and stable.
10.5 The Golden Rule: Optimal Saving¶
Definition 10.6 (Golden Rule Capital Stock). The Golden Rule capital stock maximizes steady-state consumption per effective worker over (equivalently over , since is a monotone function of ):
Theorem 10.4 (Golden Rule). The Golden Rule capital stock satisfies , which corresponds to the saving rate:
Proof (Cobb–Douglas): With , the Golden Rule condition gives . The corresponding steady state has , so .
The Golden Rule saving rate equals the capital share for Cobb–Douglas production. Countries with save too much (dynamically inefficient); countries with save too little. For the U.S.: and , suggesting the U.S. is below the Golden Rule — a common finding for advanced economies [P:Ch.5.3].
Dynamic efficiency: The RCK model (Chapter 11) shows that optimizing households choose in general, so market economies are dynamically efficient. The Golden Rule is relevant when policy interventions (mandatory saving, social security) push above .
10.6 Numerical Solution: The Shooting Algorithm¶
For production functions that do not yield a closed-form Bernoulli ODE solution, we solve numerically. The shooting algorithm finds the transition path from to (near) by integrating the ODE forward using RK4.
Algorithm 10.1 (Solow Transition Path).
Input: , , , , time horizon , step size .
Set , .
For :
Apply RK4 step:
Return .
For the RCK model (Chapter 11), the shooting is more complex because the initial value of the control variable is not given — only the initial value of the state variable is. The shooting algorithm must find such that the trajectory starting at converges to the saddle-point steady state rather than diverging.
10.7 Worked Example: Mankiw–Romer–Weil Convergence Regression¶
Cross-reference: Principles Ch. 5.5 (convergence evidence) [P:Ch.5.5]
Mankiw, Romer, and Weil (1992) test the Solow model’s conditional convergence prediction by regressing long-run average growth rates on initial income, saving rates, and population growth. The model predicts the log-linearized growth equation:
where is output per worker (not per effective worker). Setting years, , (so ), and estimating from the data (implying , suggesting physical plus human capital together):
The predicted coefficients: on approximately +0.59; on approximately -0.59; on approximately -0.39. MRW report empirical estimates very close to these, providing strong support for the augmented Solow model.
APL¶
⎕IO←0 ⋄ ⎕ML←1
⍝ 1. Parameters
alpha ← 1÷3 ⋄ s ← 0.20 ⋄ mu ← 0.08
⍝ 2. Steady State & Convergence
kstar ← (s ÷ mu) * ÷ 1 - alpha
ystar ← kstar * alpha
'Steady State [k*, y*]:' (⍕ 2 ⍕ kstar ystar)
lambda ← (1 - alpha) × mu
halflife ← (⍟2) ÷ lambda
'Convergence Lambda & Half-life:' (⍕ 2 ⍕ lambda halflife)
⍝ 3. Transition Path (Closed Form)
vstar ← kstar * 1 - alpha
k0 ← 0.5 ⋄ v0 ← k0 * 1 - alpha
T ← 101 ⋄ t ← ⍳T
v_path ← vstar + (v0 - vstar) × *-lambda × t
k_path ← v_path * ÷ 1 - alpha
gap ← |k_path - kstar
'Gap at t=0, 13, 26:' (⍕ 2 ⍕ gap[0 13 26])
⍝ 4. MRW Simulation (100 Countries)
N ← 100
⍝ Kap-safe randoms (0-1 floats)
rand ← {(?N⍴1000)÷1000}
s_i ← 0.05 + 0.35 × rand 0
n_i ← 0.00 + 0.03 × rand 0
mu_i ← n_i + 0.05
k0_i ← 0.5 + 2 × rand 0
kstar_i ← (s_i ÷ mu_i) * ÷ 1 - alpha
lny0_i ← ⍟ k0_i * alpha
lnyT_i ← ⍟ kstar_i * alpha
growth_i ← lnyT_i - lny0_i
⍝ 5. MRW Regression (OLS)
⍝ Flatten the coefficients
b_flat ← , b_ols
⍝ Define the labels
labels ← 'ln(s)' 'ln(n+g+d)' 'ln(y0)' 'Constant'
⍝ Format each number individually
formatted_b ← {⍕ 4 ⍕ ⍵}¨ b_flat
⍝ Zip and Mix (Notice the ⊂ around the colon!)
'MRW Coefficients (OLS Estimates):'
↑ labels ,¨ (⊂' : ') ,¨ formatted_b
⍝ In APL/Kap, ⌹ (Domino) handles the (X'X)^-1 X'y part automatically!
⍝ Simply: b = y ⌹ X
b_ols ← growth_i ⌹ Xmat
'MRW Coefficients [ln(s), ln(n+g+d), ln(y0), constant]:'
⍕ 3 ⍕ b_olsPython¶
import numpy as np
import matplotlib.pyplot as plt
# Parameters
alpha, s, mu = 1/3, 0.20, 0.08
lambda_ = (1-alpha)*mu
kstar = (s/mu)**(1/(1-alpha))
vstar = kstar**(1-alpha)
# Closed-form transition path
k0 = 0.5
T = 100
t = np.arange(T)
v0 = k0**(1-alpha)
v_path = vstar + (v0 - vstar)*np.exp(-lambda_*t)
k_path = v_path**(1/(1-alpha))
fig, axes = plt.subplots(1, 2, figsize=(12, 5))
ax = axes[0]
ax.plot(t, k_path, 'b-', linewidth=2, label='k̃(t)')
ax.axhline(kstar, color='red', linestyle='--', label=f'k̃* = {kstar:.2f}')
ax.set_xlabel('Time (years)'); ax.set_ylabel('k̃')
ax.set_title('Solow Transition Path (Closed Form)')
ax.legend()
# MRW simulation
np.random.seed(42)
N = 100
s_i = np.random.uniform(0.05, 0.40, N)
n_i = np.random.uniform(0.00, 0.03, N)
mu_i = n_i + 0.05
kstar_i = (s_i/mu_i)**(1/(1-alpha))
lns = np.log(s_i); lnmu = np.log(mu_i)
# Simulate 25-year growth: use linearized convergence
lny0 = np.random.normal(np.log(kstar_i**alpha), 0.3) # random initial incomes
conv = 1 - np.exp(-lambda_*25)
lnyT = lny0 + conv*(np.log(kstar_i**alpha) - lny0)
growth_25 = lnyT - lny0
# OLS regression: growth on ln(s), ln(n+g+d), ln(y0)
X = np.column_stack([lns, lnmu, lny0, np.ones(N)])
b = np.linalg.lstsq(X, growth_25, rcond=None)[0]
print("MRW regression coefficients:")
print(f" ln(s): {b[0]:.3f} (predicted: +{alpha/(1-alpha)*conv:.3f})")
print(f" ln(n+g+δ): {b[1]:.3f} (predicted: {-alpha/(1-alpha)*conv:.3f})")
print(f" ln(y₀): {b[2]:.3f} (predicted: {-conv:.3f})")
ax2 = axes[1]
ax2.scatter(lny0, growth_25, alpha=0.5, s=20)
ax2.set_xlabel('ln(y₀)'); ax2.set_ylabel('25-year growth')
ax2.set_title('Conditional convergence (MRW simulation)')
plt.tight_layout(); plt.show()Julia¶
using LinearAlgebra, Statistics, Random
Random.seed!(42)
alpha, mu = 1/3, 0.08
lambda_ = (1-alpha)*mu
# Closed-form path
kstar(s) = (s/mu)^(1/(1-alpha))
vstar(s) = kstar(s)^(1-alpha)
function solow_path(k0, s, T)
v0 = k0^(1-alpha); vs = vstar(s)
t = 0:T-1
v_t = vs .+ (v0-vs).*exp.(-lambda_.*t)
return v_t.^(1/(1-alpha))
end
k_path = solow_path(0.5, 0.20, 100)
println("k̃* = $(round(kstar(0.20), digits=3))")
println("k̃(50) = $(round(k_path[51], digits=3)) (should be ≈ k̃*)")
# MRW simulation
N = 100
s_i = 0.05 .+ 0.35*rand(N)
n_i = 0.00 .+ 0.03*rand(N)
mu_i = n_i .+ 0.05
ks_i = kstar.(s_i ./ mu_i .* mu_i) # simplify: kstar per country
lny0 = log.(kstar.(s_i).*alpha) .+ 0.3*randn(N)
conv = 1 - exp(-lambda_*25)
lnyT = lny0 .+ conv.*(log.(kstar.(s_i).^alpha) .- lny0)
growth = lnyT .- lny0
X = hcat(log.(s_i), log.(mu_i), lny0, ones(N))
b = X \ growth
println("\nMRW OLS: coefficients = ", round.(b, digits=3))R¶
alpha <- 1/3; mu <- 0.08; lambda_ <- (1-alpha)*mu
# Closed-form path
kstar <- function(s) (s/mu)^(1/(1-alpha))
solow_path <- function(k0, s, T) {
v0 <- k0^(1-alpha); vs <- kstar(s)^(1-alpha)
t <- 0:(T-1)
v_t <- vs + (v0-vs)*exp(-lambda_*t)
v_t^(1/(1-alpha))
}
k_path <- solow_path(0.5, 0.20, 100)
cat(sprintf("k̃* = %.3f, k̃(50) = %.3f\n", kstar(0.20), k_path[51]))
# MRW regression simulation
set.seed(42); N <- 100
s_i <- runif(N, 0.05, 0.40); n_i <- runif(N, 0, 0.03); mu_i <- n_i + 0.05
lny0 <- log(kstar(s_i)^alpha) + rnorm(N, 0, 0.3)
conv <- 1 - exp(-lambda_*25)
lnyT <- lny0 + conv*(log(kstar(s_i)^alpha) - lny0)
growth <- lnyT - lny0
df <- data.frame(growth, lns=log(s_i), lnmu=log(mu_i), lny0=lny0)
fit <- lm(growth ~ lns + lnmu + lny0, data=df)
cat("\nMRW OLS coefficients:\n"); print(round(coef(fit), 3))10.8 Programming Exercises¶
Exercise 10.1 (APL — Phase Diagram)¶
Write a dfn solow_phase ← {s mu alpha ← ⍵ ⋄ ...} that takes parameters and returns: (a) the steady state , convergence rate , and half-life ; (b) vectors k_grid, invest, breakeven of length 100 over ; (c) the crossing point. Plot using ]Plot or export to CSV. Verify the crossing is at .
Exercise 10.2 (Python — Parameter Sensitivity)¶
For and , compute: (a) the steady-state capital and output ; (b) the Golden Rule saving rate ; (c) the fraction . Plot a table of the dynamic efficiency gap for each combination.
Exercise 10.3 (Julia — Non–Cobb–Douglas)¶
Implement the RK4 solver for the Solow model with the CES production function (which nests Cobb–Douglas as ). For , , , : (a) find numerically using Newton–Raphson; (b) compare the convergence rate to the Cobb–Douglas approximation. Does higher substitution elasticity () speed or slow convergence?
Exercise 10.4 (R — The Augmented Solow Model)¶
Mankiw, Romer, and Weil (1992) augment the Solow model with human capital : . The fundamental equations become a 2D ODE system in . (a) Derive the two ODEs. (b) Show the steady state satisfies and similarly for . (c) Simulate 100 countries with , , , , , and run the MRW regression. Do the coefficients match the theoretical predictions?
Exercise 10.5 — The AK Model Failure ()¶
For the AK production function (linear, no diminishing returns): (a) show the Solow ODE becomes , a linear ODE with solution ; (b) there is no finite steady state — the economy grows forever at rate if ; (c) the Inada conditions fail (the lower Inada condition is violated since is constant); (d) explain what this implies for the convergence result: show that cross-country income differences are permanent in the AK model but transitory in the Solow model.
Exercise 10.6 — Dynamic Efficiency Test ()¶
Abel, Mankiw, Summers, and Zeckhauser (1989) test dynamic efficiency by comparing aggregate profits to aggregate investment across countries. Show that the economy is dynamically efficient iff (net factor payments to capital exceed net investment). (a) Express this condition in terms of the capital share , the investment-to-output ratio , and the capital-output ratio . (b) For the U.S.: , , ; evaluate the AMSZ test. (c) Simulate 50 OECD countries (with calibrated parameters from the Penn World Tables documentation) and identify which are dynamically inefficient.
10.9 Chapter Summary¶
Key results:
The Solow ODE is derived by differentiating and substituting capital accumulation and factor growth.
For Cobb–Douglas : the substitution transforms the nonlinear ODE into a linear one, yielding the closed-form path with .
The convergence rate and half-life years (for standard calibration) match empirical cross-country convergence estimates.
The Inada conditions guarantee existence and uniqueness of the steady state; a formal existence-uniqueness proof uses the intermediate value theorem and concavity.
The Golden Rule saving rate equals for Cobb–Douglas — countries saving more than are dynamically inefficient; most OECD countries save less than and are efficient.
In APL: the closed-form path is
v_path ← vstar + (v0-vstar) × * (-lambda) × ⍳T;k_path ← v_path * ÷ 1-alpha— the entire transition path in two lines.
Connections forward: Chapter 11 shows why optimizing households (RCK) choose , avoiding dynamic inefficiency. Chapter 17 implements the stochastic RBC extension of the Solow model by adding TFP shocks to the capital accumulation equation and solving via value function iteration.
Next: Chapter 11 — The Ramsey–Cass–Koopmans Model: Optimal Control and the Euler Equation