[关闭]
@Xc-liu 2016-04-03T11:46:23.000000Z 字数 983 阅读 1376

人口增长的微分方程模型

1.背景介绍

人口增长的可以由如下的微分方程描述
dN/dt=aN-bN^2
其中aN项代表人口出生对于总人口的影响, bN^2项代表人口死亡及生存资源的限制对于人口总量的影响。

2.具体分析

首先忽略bN^2项对于总量的影响,即认为b=0。此时可以先得出方程的解析解,不妨设 a=10, N(0)=1000.则可以得出N(t)=1000*exp(10*X)
画出解析解的图像.

  1. x=np.arange(0,100,10);
  2. y=1000*np.exp(10*x)
  3. plt.plot(x,y)
  4. plt.show

解析解图像

在同样的条件下可以写出上面方程的数值解,并且做出数值解的图像。

  1. N_peo=[]
  2. t=[]
  3. a=10
  4. dt=10
  5. N_peo.append(1000)
  6. t.append(0)
  7. end_time=100
  8. for i in range(int(end_time/dt)):
  9. m=N_peo[i]+a*N_peo[i]*dt
  10. N_peo.append(m)
  11. t.append (dt*(i+1))
  12. print t[-1],N_peo[-1]
  13. import numpy as np
  14. import matplotlib.pyplot as plt
  15. plt.plot(t,N_peo)
  16. plt.show()

进一步可以考虑人口死亡及生存资源的限制可以同样写出方程的数值解,不妨设a=10,b=0.01,N(0)=1000

  1. N_peo=[]
  2. t=[]
  3. a=10
  4. dt=10
  5. N_peo.append(1000)
  6. t.append(0)
  7. end_time=100
  8. for i in range(int(end_time/dt)):
  9. m=N_peo[i]+(a*N_peo[i]* N_peo[i])*dt
  10. N_peo.append(m)
  11. t.append (dt*(i+1))
  12. print t[-1],N_peo[-1]
  13. import numpy as np
  14. import matplotlib.pyplot as plt
  15. plt.plot(t,N_peo)
  16. plt.show()

改变b的数值可以得出不同的增长曲线,b=0.01时人口保持不变。
b>0.01时人口开始就呈现下降趋势最终趋于零。
b<0.01时人口呈现“S”型增长,最终趋于稳定。```

3.总结

通过数值方式求解一阶线性微分方程,加深了对欧拉法的理解。进一步熟悉了python 及matplotlib 的用法。

<<题目选自课本1.6

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注