Recall our Solow-Malthus model. The rate of growth of the labor force and population depends on luxury-adjusted income per worker $ y/\phi $ divided by subsistence $ y^{sub} $:
(1) $ \frac{dL/dt}{L} = \frac{d\ln(L)}{dt} = n = \beta \left( \frac{y}{\phi y^{sub}}-1 \right) $
Income per worker depends on the capital-output ratio $ \kappa $, the level of the useful ideas stock $ H $, and the amount of resource scarcity induced by the labor force $ L $:
(2) $ \ln(y) = \theta\ln(\kappa) + \ln(H) - \ln(L)/\gamma $
(3) $ \frac{d\kappa}{dt} = (1-\alpha)s - (h + (1 - 1/\gamma)n + ֿֿ\delta)\kappa $
With the parameters $ \alpha $ and $\theta $—the capital share of income and the capital-intensity elasticity of income—related by:
(4) $ \theta = \frac{\alpha}{1-\alpha}$ and $ \alpha = \frac{\theta}{1+\theta} $
Substitute:
(5) $ \frac{1}{L}\frac{dL}{dt} = \frac{d\ln(L)}{dt} = n = \beta \left( \frac{\kappa^\theta H L^{-\gamma}}{\phi y^{sub}}-1 \right) $
(6) $ \frac{d\kappa}{dt} = -(1-\alpha)(h + (1-1/\gamma)n +\delta)\kappa + (1-\alpha)s $
Define population-adjusted-for-ideas $ P $:
(7) $ P = L H^{-\gamma} $
Then we have two state variables—capital-intensity $ \kappa $, the capital-output ratio, and population-adjusted-for-ideas $ P $. We have two dynamic equations: The rate of change of population-adjusted-for-ideas $ P $ is a function of the capital-output ratio and itself:
(8) $ \frac{1}{P}\frac{dP}{dt} = p = \beta \left( \frac{\kappa^\theta }{P^{1/\gamma} \phi y^{sub}}-1 \right) -h\gamma $
And the rate of change of capital-intensity $ \kappa $ is a function of itself and of the rate of change of population-adjusted-for-ideas $ P $:
(9) $ \frac{d\kappa}{dt} = (1-\alpha)s -(1-\alpha)(\gamma h +\delta)\kappa -(1-\alpha)\left(1-\frac{1}{\gamma}\right)\left(\frac{1}{P}\frac{dP}{dt}\right)\kappa $
The steady state is then:
(10) $ P^{*mal} = \frac{L}{H^\gamma} = \left[ \left( \frac{1}{\phi} \right) \left( \frac{\kappa^\theta }{ y^{sub}} \right) \left( \frac{1}{ 1 + h\gamma/\beta} \right) \right]^\gamma $
(11) $ \kappa^{*mal} = \frac{s}{\gamma h + \delta} $
Define:
(12) $ P = \Pi P^{*mal} $
(13) $ \kappa = k \kappa^{*mal} = k (s/(\delta + \gamma h)) $
Then:
(14) $ \kappa^{*mal} \frac{dk}{dt} = \left[ (1-\alpha)s -(1-\alpha)((1-1/\gamma)p + \gamma h +\delta) k (s/(\delta + \gamma h)) \right] $
(15) $ \frac{1}{\Pi}\frac{d\Pi}{dt} = p = \beta \Pi^{(-1/\gamma)} k^\theta (1 + \gamma h/\beta) - \beta - h \gamma $
(16) $ \Pi^{(-1/\gamma)} = 1 - \frac{\Delta \Pi}{\gamma} $
(17) $ k^\theta = 1 + \theta k $
(18) $ \frac{1}{\Pi}\frac{d\Pi}{dt} = p = \beta (1 + \gamma h/\beta)\left[ 1 - \frac{\Delta \Pi}{\gamma} \right]\left[ 1 + \theta \Delta k \right] - \beta - h \gamma $
(19) $ \frac{dk}{dt} = (1-\alpha)( \gamma h +\delta) - (1-\alpha)(1-1/\gamma)(1 + \Delta k) \frac{d\Pi}{dt} - (1-\alpha)(\delta + h \gamma)(1 + \Delta k) $
(20) $ \frac{dk}{dt} = - (1-\alpha)(\delta + h \gamma)\Delta k - (1-\alpha)(1-1/\gamma)\frac{d\Pi}{dt} - (1-\alpha)(1-1/\gamma)\Delta k \frac{d\Pi}{dt} $
(21) $ \frac{d\Pi}{dt} = -((\beta + \gamma h)/\gamma)\Delta \Pi + (\beta + \gamma h)\theta \Delta k $
(20) and (21) are a linearized two-equation two state-variable system for $ k = \frac{\kappa}{\kappa^*} $ and $ \Pi = \frac{P}{P^{*mal}} $, with $ \kappa = K/Y $ the capital intensity of the economy, and $ P = L H^{-\gamma} $ the population/labor force adjusted for the ideas stock.
Memo: $ \alpha = 1/2, \gamma = 2, \theta = 1, \delta = 0.05, \beta = 0.025, h=0.0005, h \gamma = 0.001, \delta + h \gamma = .051 $
(20') $ \frac{dk}{dt} = - 0.0255\Delta k - 0.25\frac{d\Pi}{dt} - 0.25\Delta k \frac{d\Pi}{dt} $
(21') $ \frac{d\Pi}{dt} = - 0.013\Delta \Pi + 0.026 \Delta k $
(22') $ \frac{dk}{dt} = - 0.032\Delta k + 0.00325 \Delta \Pi $
import numpy as np
import pandas as pd
P_vector = []
kappa_vector = []
P_vector = P_vector + [1.941371*.75]
kappa_vector = kappa_vector + [1.980198]
for i in range(0,100):
P = (1-0.025-0.0005)*P_vector[i] + 0.025*kappa_vector[i]
kappa = (1-0.02525)*kappa_vector[i]+0.05
P_vector = P_vector + [P]
kappa_vector = kappa_vector + [kappa]
malthus_converge_df = pd.DataFrame()
malthus_converge_df['P'] = P_vector
malthus_converge_df['kappa'] = kappa_vector
print(malthus_converge_df)
P kappa 0 1.456028 1.980198 1 1.468404 1.980198 2 1.480465 1.980198 3 1.492218 1.980198 4 1.503672 1.980198 5 1.514833 1.980198 6 1.525710 1.980198 7 1.536309 1.980198 8 1.546638 1.980198 9 1.556704 1.980198 10 1.566513 1.980198 11 1.576072 1.980198 12 1.585387 1.980198 13 1.594464 1.980198 14 1.603310 1.980198 15 1.611931 1.980198 16 1.620332 1.980198 17 1.628518 1.980198 18 1.636496 1.980198 19 1.644270 1.980198 20 1.651846 1.980198 21 1.659229 1.980198 22 1.666424 1.980198 23 1.673435 1.980198 24 1.680267 1.980198 25 1.686925 1.980198 26 1.693414 1.980198 27 1.699737 1.980198 28 1.705898 1.980198 29 1.711903 1.980198 .. ... ... 71 1.863825 1.980198 72 1.865802 1.980198 73 1.867729 1.980198 74 1.869607 1.980198 75 1.871437 1.980198 76 1.873220 1.980198 77 1.874958 1.980198 78 1.876652 1.980198 79 1.878302 1.980198 80 1.879910 1.980198 81 1.881477 1.980198 82 1.883005 1.980198 83 1.884493 1.980198 84 1.885943 1.980198 85 1.887357 1.980198 86 1.888734 1.980198 87 1.890076 1.980198 88 1.891384 1.980198 89 1.892659 1.980198 90 1.893901 1.980198 91 1.895112 1.980198 92 1.896291 1.980198 93 1.897441 1.980198 94 1.898561 1.980198 95 1.899653 1.980198 96 1.900716 1.980198 97 1.901753 1.980198 98 1.902763 1.980198 99 1.903748 1.980198 100 1.904707 1.980198 [101 rows x 2 columns]