@Xc-liu
2016-04-03T11:46:23.000000Z
字数 983
阅读 1376
人口增长的可以由如下的微分方程描述
dN/dt=aN-bN^2
其中aN项代表人口出生对于总人口的影响, bN^2项代表人口死亡及生存资源的限制对于人口总量的影响。
首先忽略bN^2项对于总量的影响,即认为b=0。此时可以先得出方程的解析解,不妨设 a=10, N(0)=1000.则可以得出N(t)=1000*exp(10*X)
画出解析解的图像.
x=np.arange(0,100,10);
y=1000*np.exp(10*x)
plt.plot(x,y)
plt.show
在同样的条件下可以写出上面方程的数值解,并且做出数值解的图像。
N_peo=[]
t=[]
a=10
dt=10
N_peo.append(1000)
t.append(0)
end_time=100
for i in range(int(end_time/dt)):
m=N_peo[i]+a*N_peo[i]*dt
N_peo.append(m)
t.append (dt*(i+1))
print t[-1],N_peo[-1]
import numpy as np
import matplotlib.pyplot as plt
plt.plot(t,N_peo)
plt.show()
进一步可以考虑人口死亡及生存资源的限制可以同样写出方程的数值解,不妨设a=10,b=0.01,N(0)=1000
N_peo=[]
t=[]
a=10
dt=10
N_peo.append(1000)
t.append(0)
end_time=100
for i in range(int(end_time/dt)):
m=N_peo[i]+(a*N_peo[i]* N_peo[i])*dt
N_peo.append(m)
t.append (dt*(i+1))
print t[-1],N_peo[-1]
import numpy as np
import matplotlib.pyplot as plt
plt.plot(t,N_peo)
plt.show()
改变b的数值可以得出不同的增长曲线,b=0.01时人口保持不变。
b>0.01时人口开始就呈现下降趋势最终趋于零。
b<0.01时人口呈现“S”型增长,最终趋于稳定。```
通过数值方式求解一阶线性微分方程,加深了对欧拉法的理解。进一步熟悉了python 及matplotlib 的用法。
<<题目选自课本1.6