数学建模:人口增长模型
數學建模:人口增長模型
模型目標:
 通過給定的一組人口增長數據,預測后續的人口增長情況.
一、指數增長模型
假設增長率不變:
若已知人口年增長率為r,今年人口為 x0x_0x0?,預測k年后的人口可以用簡單的公式得到:
 xk=x0(1+r)kx_k = x_0(1+r)^kxk?=x0?(1+r)k
 *以美國人口為例,數據點取下表:
 
 用matlab輸入好數據:
該公式得到的人口增長模型如下圖(matlab作圖):
 
 選取的增長率0.2與實際的人口數據點貼合度差,于是進一步建立模型,找到偏差更小的增長率r
精確化增長率r
把人口看作關于時間的可微函數 x(t)x(t)x(t),記 x(0)=x0x(0) = x_0x(0)=x0?
 rx0rx_0rx0? 即為單位時間 x(t)x(t)x(t) 的增長量
 所以得到微分方程:
 dxdt=rx,x(0)=x0\frac{dx}{dt} = rx , x(0)=x_0dtdx?=rx,x(0)=x0?
 解得:
 x(t)=x0ertx(t) = x_0e^{rt}x(t)=x0?ert
 上述公式即位指數增長模型
數據擬合:
接下來對指數增長模型的參數進行估計,即數據擬合
·法一
用人口數據和線性最小二乘法,對上式取對數:
 y=rt+a,y=lnx,a=lnx0y = rt +a , y=lnx,a=lnx_0y=rt+a,y=lnx,a=lnx0?
 用matlab進行編程擬合:
 解得:
 r=0.202,x0=e1.8=6.049r = 0.202,x_0 = e^{1.8} = 6.049r=0.202,x0?=e1.8=6.049
 帶入得x(t)=6.049e0.0202tx(t) = 6.049 e^{0.0202t}x(t)=6.049e0.0202t
 
 ·法2
 對人口數據做數值微分,計算平均值r‘,x0直接選用原始數據.
 函數在各點的近似導數值為(數值微分中點公式):
 x′(tk)=xk+1?xk?12Δt,(k=1,2,3,...,n?1)x'(t_k) = \frac{x_{k+1}-x_{k-1}}{2\Delta t},\\\ \\(k=1,2,3,...,n-1)x′(tk?)=2Δtxk+1??xk?1??,?(k=1,2,3,...,n?1)
 x′(0)=4x1?3x0?x22Δt,x′(n)=?4xn?1+3xn+xn?22Δtx'(0) = \frac{4x_1-3x_0-x_2}{2 \Delta t}, x'(n) = \frac{-4x_{n-1}+3x_{n}+x_{n-2}}{2 \Delta t}x′(0)=2Δt4x1??3x0??x2??,x′(n)=2Δt?4xn?1?+3xn?+xn?2??
 那么增長率為: r(tk)=x′(tk)x(tk)r(t_k)=\frac{x'(t_k)}{x(t_k)}r(tk?)=x(tk?)x′(tk?)?
*公式相關推導可參考數值計算方法 第六章 數值積分和數值微分
增長率 rk=x′(tk)x(tk)r_k=\frac{x'(t_k)}{x(t_k)}rk?=x(tk?)x′(tk?)?再取平均值得到r = 0.0205
 
改進的指數增長模型
上述模型對于增長率r不變的假設導致預測曲線與實際偏差較大
 所以改進模型中假設 r 為 t 的函數 r(t)r(t)r(t) , 根據上述法2的 x′(t)x'(t)x′(t) 畫r—t圖像:
 根據散點圖假設r(t)=r0?r1tr(t)=r_0-r_1tr(t)=r0??r1?t的線性函數,用最小二乘法線性擬合得到:
 r0=0.03252,r1=0.0001143r_0 = 0.03252,\space r_1 = 0.0001143r0?=0.03252,?r1?=0.0001143
 根據微分方程:
 dx/dt=r(t)xdx/dt=r(t)xdx/dt=r(t)x
 ?x(t)=x0e(r0t?r1t2/2)\Rightarrow x(t) = x_0 e^{(r_0t-r_1t^2/2)}?x(t)=x0?e(r0?t?r1?t2/2)
 把擬合后的參數帶入:
 最終根據改進模型預測的2010年人口為290million,與實際數據281.4吻合度較高.顯然改進后的模型優于前兩者.
二、logistic模型
改進的指數增長模型中增長率線性下降,但沒有體現其下降的相關影響因素,只是以時間為變量.logistic模型考慮了自然資源,環境等對人口增長的阻滯作用.
未完…
總結
以上是生活随笔為你收集整理的数学建模:人口增长模型的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 程序员考试范围(考试大纲)
- 下一篇: PreferenceScreen使用
