NO IMAGE

hoho,原來那個blog上貼的數學建模很受歡迎,雖然寫的不怎麼樣,但是有人問我,我還是很開心的

所以貼來這裡和大家分享下

現在在當志願者,先隨便發哈。等回來整理哈格式。呵呵

 

唉,這個學期參加了數學建模
熬了2個通宵
呵呵

一開始我們就選擇了A題,看其他組變來變去的
心中還是堅持了A題
主要是因為找到可以套用的模板了
開始心想馬上就可以做好
於是第一天就早早的回家休息了
誰知看那個模型看了半天才看懂
後來有用matlab程式設計
畫圖
弄資料,正了個通宵
後面就開始寫文件了

唉,到晚上一點終於完工
可是會不了宿舍了
有隻得通宵-_-!

不知道最終結果回怎樣啊??

2007高教社杯全國大學生數學建模競賽

 

   

 

我們仔細閱讀了中國大學生數學建模競賽的競賽規則.

我們完全明白,在競賽開始後參賽隊員不能以任何方式(包括電話、電子郵件、網上諮詢等)與隊外的任何人(包括指導教師)研究、討論與賽題有關的問題。

我們知道,抄襲別人的成果是違反競賽規則的, 如果引用別人的成果或其他公開的資料(包括網上查到的資料),必須按照規定的參考文獻的表述方式在正文引用處和參考文獻中明確列出。

我們鄭重承諾,嚴格遵守競賽規則,以保證競賽的公正、公平性。如有違反競賽規則的行為,我們將受到嚴肅處理。

 

我們參賽選擇的題號是(從A/B/C/D中選擇一項填寫):    A             

       我們的參賽報名號為(如果賽區設定報名號的話):                       

所屬學校(請填寫完整的全名):    雲南大學                 

中國人口增長預測

 

 

 

 

 

 

 

 

摘要:

本文根據中國現有國情和過去幾年的人口資料建立出了符合中國人口增長的數學模型。在此模型的基礎上進一步對中國人口的中短期和長期趨勢做出預測,其合理性和實用性都比較好。其目的主要是用來給中國的人口政策,和中國人口老齡化的程度進行預測 。

針對問題,我們對影響人口增長的各方面因素進行綜合考慮,發現女性在人口增長中起著決定性的作用,並對此進行了模型的建立。

文中我們選擇了Leslie(萊斯利)矩陣進行數學建模,和Matlab建模工具並用Matlab命令程式設計進行模型的測試,對中國人口作了短期(10年),中期(20年)和長期(50年)做出了中國總人口的預測和中期和長期的人口年齡結構。

對於年齡結構模型,我們考慮年齡的分組,用Leslie矩陣定理2 X(n) ≈γ1nx*  。

最重要的是我們的建模是一個不斷改進的一個過程。

.

關鍵詞:中國人口   生育率   存活率   死亡率   人口向量       Leslis矩陣   Matlab

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

一、        問題重述

 

中國是一個人口大國,人口問題始終是制約我國發展的關鍵因素之一。近年來中國的人口發展出現了一些新的特點,例如,老齡化程序加速、出生人口性別比持續升高、鄉村人口城鎮化等因素,這些都影響著中國人口的增長。進來還有一些人認為我國應該放鬆計劃生育,允許生二胎。但放寬二胎將會對中國總人口有什麼影響還是個未知數。

建立人口數學模型,可以用來預測世界、國家和地區的人口,但是研究人口問題的主要目的,不僅是能夠預測將來的人口,而是要能動地控制人口的數量,改善人口的年齡結構。人口問題是一個關係全域性的重要問題,人口的變動會影響到基本國策的制定,影響到勞動就業的安排,社會福利事業的安排,甚至影響到國民經濟和社會發展戰略的規劃。所以正確的預測人口對處理人口、資源、經濟的關係,才能使人民的生活水平儘早富裕,同時促進社會的可持續發展提供有力的支援和保障。

本文從中國的實際情況和人口增長的上述特點出發,根據大賽附錄2 已有資料和從國家統計局網站上下載的人口資料,對中國人口增長情況建立中國人口增長的數學模型,並由此對中國人口增長的中短期和長期趨勢做出分析和預測。其中主要的研究問題有:

問題1.預測人口總人數變化規律。

問題2.預測中國年齡結構,反映中短期和長期中國老齡化問題。

問題3.預測中短期和長期後城、鎮、鄉人口的分佈的問題。

問題4.實行二胎對中國總人口的影響。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

二、        問題的分析

當今,人口預測已經發展得非常成熟了,因此我們的策略是找合適的模型,並在原有模型基礎上進行改進。

    第一個找到的模型是馬爾薩斯模型,這個模型是認為人口總數是成指數Nt=N0eγt-t0 增長的。如果世界人口按照這個模型發展,那地球陸地幾年就被人類給站滿掉了。

第二個考慮的模型為Logistic模型(阻滯增長人口模型),其圖形如下

圖1阻滯增長人口模型

它可以用來預測中國人口,但是附件裡提供的資料讓我們感到不易計算如果採用阻洩Logistic模型 ,它要假設M 每年的總人口。

第三個考慮了Leslie(萊斯利)模型,它是由女性人口數量為基準物件,通過男女比率得出人口總數。該模型主要建立了Leslie矩陣,構成Leslie矩陣的資料有每個年齡組女性的生育率、存活率(由1-死亡率得出)。

G=b0b1…bn-1bns00…000s1…00……………00…sn-10

 

根據Leslie矩陣模型的性質,不僅可以在男女比率固定的條件下得到總人數 。還可以算出各年齡層次女性的變化,及各年齡段的總人口也能算出。問題二隨之解決。因此我們決定在Leslie模型基礎上進行改進。

 

問題三,我們可以利用原始統計資料按城市、城鎮、鄉村分別統計的特性。只要分開計算就可以算出市鎮鄉人口的分佈率。再根據矩陣的性質,就可以推算出以後每一年的市、鎮、鄉的人口。

 

問題四是再前3個解決了的基礎上,考慮到中國實行計劃生育政策。因此我們可以根據優化模型來分析,每個婦女生育胎次對中國人口增長的影響。

 

三、        模型的假設

1.       本模型以女性人口數量為基準物件。假設男女比例為1:1。

2.       把女性按年齡大小等分為n 個年齡組,不同年齡組的生育率bi 和死亡率di 不同。

3.       生育率僅與年齡段有關,存活率也僅與年齡段有關。

4.       不考慮生存空間等自然資源的制約,不考慮意外災難,不考慮移民等因素對人口變化的影響。

5.       女性的壽命不超過90歲。

 

四、        符號說明

i :把女性按年齡大小等分為n 個年齡組,i∈0,n

t :用時間離散方法等到的某一個時段,長度與年齡組區間相等(即一年);

r :女性人口比率;

bi i 年齡組女性的生育率;

di i 年齡組女性的死亡率;

si i 年齡組女性的存活率,根據di 得出si=1-di

Pi(t) t 時間段 i 年齡組女性的人口數量;

P(t) t 時間段女性的人口數量;

ri(t) t 時間段i 年齡組女性人口比率,即t 時間段i 年齡組女性人口/t 時間段總人口;

bi(t) t 時間段i 年齡組女性的生育率;

di(t) t 時間段i 年齡組總體的死亡率;

si (t):t 時間段i 年齡組總體的存活率,根據di(t) 得出si(t)=1-di(t)

N(t) t 時間段我國的總人口數量。

β(t) t 時間段每個育齡女性平均生育嬰兒數

 

主要引數說明:

1.   存活率si (t) = 1 –di(t)

2.       生育率bi(t)

 

一、        模型的建立與求解

1.       建立原始模型

根據人口統計情況,我們可以知道當前 t 時間段 i
年齡組女性的人口數量Pit, 以及 t 時間段所有 女性的人口數量P(t)

首先我們假定i 年齡組女性的生育率bi i 年齡組女性的死亡率di 不隨時間變化,女性人口比率r 始終保持不變。

 

t 1 時間段 0 年齡組女性的人口數量P0t 1 ,等於t 時間段內出生並存活下來的人數。

P0t 1=i=0nbi*Pi(t)
(1)

在時間段 i (i>0) 年齡組女性的人口數量Pit 1 ,等於t 時間段 i-1 年齡組女性通過自然增長存活下來的人數。

Pit 1=si-1*Pi-1t,
(i≥1)                   (2)

那麼,t 1 時間段女性的人口數量Pt 1 就可以根據上述的兩條公式等到:

P(t 1)=P0t 1 Pit 1,
(i≥1)                 (3)

同時,我們可以得出人口增長模型示圖:

由公式(3)可以得到t 時間段女性人口數量按年齡組分佈的向量:

Pt=P0t,P1t,P2t,…,PntT                     (4)

 

令:

G=b0b1…bn-1bns00…000s1…00……………00…sn-10                       (5)

於是公式(3)可以改寫為:

P(t 1)=G*P(t)                              (6)

假定P(0) 是某一時間段(某一年)的女性人數,它已經由統計資料給出,那麼經過∆t 年後女性人數P∆t 為:

P∆t=G∆t*P(0)                              (7)

因此,由公式(7)便可以通過基準人口數P0 i 年齡組女性的生育率bi i 年齡組女性的死亡率di ,預測出經過任意時間∆t 女性的人口數量P∆t ;並且又可以結合女性人口比率r ,得出該時間段我國的總人口數量N∆t

N∆t=G∆t*P(0)r
(8)

     

 

但是,根據分析,我們可以發現這個數學模型有幾個不足之處:

 

此模型中t 1 時間段中0歲的人口是根據t 年各年齡組女性基數乘以生育率求和得出的。新生人口中有女性的也有男性的,但是它計算的時候並沒有先把男性人口數分離出來。

此模式並沒有考慮新生人口的存活率問題。

此模型假設了i 年齡組女性的生育率bi i 年齡組女性的死亡率di 不隨時間變化。但是現實中,各年齡組女性的生育率及死亡率會隨社會發展狀況及男女性別比率等各種因素而發生變化的。因此預測結果的誤差會變大。

此模型中認為從0歲到n 歲的女性都有生育能力。實際上,女性都有一個育齡期,如果一個女性的年齡小於或大於這個育齡期區間,那麼她是沒有生育能力的。

 

1.       改進模型

 

因此我們必須對它做一些改進,才能使它更準確地預測人口增長情況。

       同樣,我們以年為組劃分年齡組,t 時間段i 年齡組女性的生育率記為bi(t) t 時間段i 年齡組女性的死亡率記為di(t) t 時間段i 年齡組女性人口比率記為ri(t) ,由此得到t 時間段i 年齡組女性的存活率si (t)。另外設定i1,i2 為女性的育齡期,

 

t 1 時間段 0 年齡組的人口數量N0t 1 ,等於t 時間段內出生並存活下來的人數。

N1t 1=s0ti=i1i2bi(t)ri(t)Ni(t)                                 (a)

bi(t) 分解為:

bit=β(t)hi(t)                         (b)

1.   其中hi(t) 是生育模式[1],它成立:

i=i1i2hit=1
(c)

2.   β(t) 表示t 時間段每個育齡女性平均生育嬰兒數:

βt=i=i1i2bit
(d)

令:

bi’t=s0thi(t)ri(t)                       (e)

將公式(e)代入公式(a),那麼公式(a)可以改寫為:

N1t 1=βti=i1i2bi’tNi(t)                                  (f)

分別令:

Nt=N1t,N2t,…,NntT                (g)

 

A(t)=00…00s1(t)0…000s2(t)…00……………00…sn-1(t)0                 (h)

 

B(t)=0…0bi1’t…bi2’t0…00…00…00…0………………………0…00…00…0            (i)

那麼有:

Nt 1=At βtBt*Nt                (j)

在社會穩定的前提下,生育率和死亡率都比較穩定,從而可以視At Bt 為常規矩陣A B ,那麼公式(j)可以化簡為:

Nt 1=A βtB*Nt                  (j)

 

這個便是我們確定的最終模型。由此改進過的數學模型我們就可以定義一些人口指數:

1)   人口總數

 
Nt=i=0nPit
(l)

2)   平均年齡

Rt=1N(t)i=0niPit
(m)

3)   平均壽命

St=j=0nexp-j=0jdit                                        (n)

4)   老齡化指數

ωt=R(t)S(t)
(o)


[1] 生育模式描述了t時間段內育齡女性隨年齡改變的性態。

一、        模型檢驗

 

下面是對問題的解決,我們把原始的統計資料匯入到Matlab 中,並編寫合適的Matlab程式實現對模型的測試。

1)   人口總數預測

根據改經的模型,我們得知狀態方程(k)中,βt 為控制變數、Nt 為狀態變數。那麼尋求某人口指數或綜合若干人口指數的代價函式的最有值,可以稱為離散人口控制模型,由於模型關於控制變數和狀態變數都是線性的,因此我們稱它為離散雙線性模型。

在我國人口問題上,假設一個育齡期內各年齡組女性的生育率不隨時間變化,那麼:

βt=i=i1i2bit=bi1t bi1 1t 1 … bi2t i2-i1         (I)

βt t 時間段i1 歲女性一生平均生育的嬰兒數,稱為生育胎次,它是控制人口的最主要引數。

利用2002年的人口統計資料,我們就可以用離散雙線性模型來預測我國的人口在未來若干年的增長情況了。

①    可利用外推得死亡率公式:

dit=di20021-t-200210-3, i≤5或i≥50di2002,
i<i<50

②  生育模式用г 分佈的離散值:

ht=1768t-184e-t-182, t≥180,
t<18

③  t 時間段i 年齡組女性人口比率ri(t) 根據統計為0.487

 

假定我國目前得β 值為1.6,那麼可得未來不同時期的人口統計結果。

 

 

 

 

 

 

 

 

 

 

 

 

 

短期預測到2020年 ,這裡我們只關注總人口,前提條件是我們假設城鄉的人口不流動。可以看到2004年到2020年中國人口呈現增長的態勢。並接近15億。

圖2 我國人口短期增長預測圖

 

中期預測,中國人口到2050年我國人口增長放緩開始呈現平穩方展。到2030年左右中國將面臨一個人口峰值。但隨後增長將放緩到平穩。

圖3 我國人口中期增長預測圖

 

長期預測 我國人口增長將繼續放緩到平穩,人口維持在15億人上下。

圖4 我國人口長期增長預測圖

 

2)   中國年齡結構預測

到2010年中國的年輕人佔絕大比率,當然也看到40-50歲也佔很大比重。

到2020年還是持續著年輕人佔主要成份在人口中。

 

 

可發現到2050年農村的老齡化程度最高。且大部分為60歲以上老人。

在三次預測的中鄉村人口是一直佔最大比重。在人口老齡化中也是表現的得罪嚴重。

不足之處是沒有考慮到人口的流動性。 但預測結果也有合理性,當前中國的老齡化問題的確越來越嚴重。據官方網站資料2005 是11%,2020將是20%。

問題2解決同時問題3中國人口城市、城鎮、鄉的分佈也體現了出了。如上圖所示,但是我們的條件是假設人口不流動。所以有一定的缺陷。

 

3)   生二胎對中國人口增長的影響

β為一個婦女一生平均所生的嬰兒個數,稱為生育胎次 。設定不同的生育胎次,我們可以預測到中國人口從2005年到2050年的人口增長狀況:

 

 

2005年中國人口為13億,由次我們可以分析到若中國放開計劃生育,全部允許生二胎,那2020中國人口將增長到16億,2030年中國人口將增長到17億,2045到19億。可見中國計劃生育政策不能構放鬆當前。根本原因是由於中國人口基數過於龐大。

 

所以經上表預測,全國總生育率應該在2以下,我們的資料表明這個資料應該在1.6到2.0之間最為合適。這樣中國人口才不至於增長過快。

 

 

 

 

 

 

 

 

 

 

 

 

 

二、        模型的評價

1.模型的優點

1)      建立的模型能與實際緊密聯絡,結合實際情況對所提出的問題進行求解,是模型更貼近實際,通用性、推廣性較強。

2)      通過利用數學工具和Matlab程式設計的方法,嚴格地對模型求解,具有科學性。

3)      模型能比較準確地預測我國中短期人口增長情況,如總人口,年齡結構分佈,等。

4)      β 這個關鍵引數進行了靈敏度分析,對於我國人口增長情況的預測及人口控制提供了有價值的參考。

2.模型的缺點

1)      基準資料是某一年的人口統計資料,因此它的預測精度受基準資料的影響比較大。

2)      在預測我國人口增長情況中,我們對原始資料進行了一些處理,如女性分年齡組的人口資料向量,女性人口比率等,這些方法給最終的結果帶來了一定的誤差。

3)      在應用模型的過程中,我們都是分城市、城鎮、鄉村3各部分來分別統計的,沒有考慮到城鎮化程序及人口流動等因素對我國人口結構的影響,這也會給統計的結果帶來誤差。

4)      模型沒有提供如何控制β 引數的方法,這主要影響到今後我國計劃生育基本國策的實施等問題。

3. 要改進的地方

計算人口分佈的時候應該加上流動性因素。人口分佈會更準確。

 

三、        參考文獻

[1] 譚永基 蔡志傑,數學建模,上海:復旦大學出版社,1997年2月

[2] 吳建國,數學建模案例精編,北京:中國水利水電出版社,2005年

[3] 王文波,數學建模及其基礎知識詳解,武漢:武漢大學出版社,2006年5月

[4] 楊啟帆,數學建模競賽—浙江大學學生獲獎論文點評,浙江:浙江大學出版社,    2005年

[5] 楊芝馨,高等數學,北京:高等教育教育出版社, 1979年

[6] 邱曉華,中國人民共和國國家統計局, http://www.stats.gov.cn ,

2007年10月22日

 

 

 

 

 

 

 

 

附錄:1

 

Matlab程式

%2010年人口預測

%城市人口的leslie矩陣

c2002c = gallery(‘leslie’, a2002c, b2002c);

%根據2002年的資料預測出8年後的全國城市女性的人口數目分佈向量

r2002c = c2002c^8 * n2002c;

%假設8年後男女比例為1:1,計算出全國城市人口數目

f2010c = 2 * r2002c;

 

%鎮上人口的leslie矩陣

c2002z = gallery(‘leslie’, a2002z, b2002z);

%根據2002年的資料預測出8年後的全國鎮上女性的人口數目分佈向量

r2002z = c2002z^8 * n2002z;

%假設8年後男女比例為1:1,計算出全城鎮上人口數目

f2010z = 2 * r2002z;

 

%鄉村人口的leslie矩陣

c2002x = gallery(‘leslie’, a2002x, b2002x);

%根據2002年的資料預測出8年後的全國鄉村女性的人口數目分佈向量

r2002x = c2002x^8 * n2002x;

%假設8年後男女比例為1:1,計算出全國鄉村人口數目

f2010x = 2 * r2002x;

 

figure;

title(‘2010年城,鎮,鄉人口預測’);

hold on;

%按年齡顯示全國城市人口分佈圖

plot (f2010c, ‘r’);

 

%按年齡顯示全國城鎮上人口分佈圖

plot (f2010z,’b’);

 

%按年齡顯示全國鄉村人口分佈圖

plot (f2010x,’g’);

 

xlabel(‘年齡’);

ylabel(‘人口數’);

text(75,13500000,’總人口:13.6億’);

legend(‘城市人口’,’鎮上人口’,’鄉村人口’);

 

%2020年人口預測

%城市人口的leslie矩陣

%根據2002年的資料預測出18年後的全國城市女性的人口數目分佈向量

r2002c = c2002c^18 * n2002c;

%假設18年後男女比例為1:1,計算出全國城市人口數目

f2020c = 2 * r2002c;

 

%鎮上人口的leslie矩陣

%根據2002年的資料預測出18年後的全國鎮上女性的人口數目分佈向量

r2002z = c2002z^18 * n2002z;

%假設18年後男女比例為1:1,計算出全城鎮上人口數目

f2020z = 2 * r2002z;

 

%鄉村人口的leslie矩陣

%根據2002年的資料預測出18年後的全國鄉村女性的人口數目分佈向量

r2002x = c2002x^18 * n2002x;

%假設18年後男女比例為1:1,計算出全國鄉村人口數目

f2020x = 2 * r2002x;

 

figure;

title(‘2020年城,鎮,鄉人口預測’);

hold on;

%按年齡顯示全國城市人口分佈圖

plot (f2020c, ‘r’);

 

%按年齡顯示全國城鎮上人口分佈圖

plot (f2020z,’b’);

 

%按年齡顯示全國鄉村人口分佈圖

plot (f2020x,’g’);

 

xlabel(‘年齡’);

ylabel(‘人口數’);

text(75,13500000,’總人口:14.4億’);

legend(‘城市人口’,’鎮上人口’,’鄉村人口’);

 

%2050年預測

%城市人口的leslie矩陣

c2004c = gallery(‘leslie’, a2004c, b2004c);

%根據2004年的資料預測出46年後的全國城市女性的人口數目分佈向量

r2004c = c2004c^46 * n2004c;

%假設46年後男女比例為1:1,計算出全國城市人口數目

f2050c = 2 * r2004c;

 

%鎮上人口的leslie矩陣

c2004z = gallery(‘leslie’, a2004z, b2004z);

%根據2004年的資料預測出46年後的全國鎮上女性的人口數目分佈向量

r2004z = c2004z^46 * n2004z;

%假設46年後男女比例為1:1,計算出全城鎮上人口數目

f2050z = 2 * r2004z;

 

%鄉村人口的leslie矩陣

c2004x = gallery(‘leslie’, a2004x, b2004x);

%根據2004年的資料預測出46年後的全國鄉村女性的人口數目分佈向量

r2004x = c2004x^46 * n2004x;

%假設46年後男女比例為1:1,計算出全國鄉村人口數目

f2050x = 2 * r2004x;

 

figure;

title(‘2050年城,鎮,鄉人口預測’);

hold on;

%按年齡顯示全國城市人口分佈圖

plot (f2050c, ‘r’);

 

%按年齡顯示全國城鎮上人口分佈圖

plot (f2050z,’b’);

 

%按年齡顯示全國鄉村人口分佈圖

plot (f2050x,’g’);

 

xlabel(‘年齡’);

ylabel(‘人口數’);

text(75,13500000,’總人口:14.1億’);

legend(‘城市人口’,’鎮上人口’,’鄉村人口’);