python-如何求解给定微分方程的库兹涅茨曲线增长模型?
发布时间:2022-06-30 01:48:24 217
相关标签: # node.js
语境:
使用 Maddison 项目实际人均 GDP 数据集,我使用最小二乘法得出以下等式:0.012406 + 0.005132 ln(g) - 0.006304 ln(g)**2
当我试图预测不同经济群体到 2050 年的人均 GDP 时,我参考了本文的方法“Tilman et al. 10.1073/pnas.1116437108”,以了解他们如何尝试求解微分方程:dG/dt = G(-0.6284 + 0.157lnG - 0.0093ln(G)^2
我以同样的方式转换了我的最小二乘:-0.012406 g + g 0.005132 math.log(g) - g 0.006304*math.log(g)**2
我正在尝试在 python 中求解 ODE 以获得几个初始值,以获得库兹涅茨曲线并估计 2050 年。我使用了下面的代码,但我无法解决相同的问题。
Python代码:
import numpy as np
import matplotlib.pyplot as plt
import scipy as sp
from scipy.integrate import odeint
from scipy.integrate import solve_ivp
import math
def solveit(y0):
def gdp(g, t):
y = g
dgdt = [-0.012406*g + g*0.005132*math.log(g) - g*0.006304*math.log(g)**2]
return dgdt
#initial conditions
#y0 = [785.60]
t = np.linspace(0, 60000, 1000)
#call integrator
sol = odeint(gdp, y0, t)
m = sol[:]
plt.plot(t,m)
plt.show()
ys= [[785.60],[1860],[7800]]
fig = plt.figure()
for y_ in ys:
solveit(y_)
plt.legend(loc='best')
plt.grid()
plt.show()
错误消息:
RuntimeError: The array return by func must be one-dimensional, but got ndim=2.
关于这方面的说明会很有帮助。
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报