鄭小洋 羅其莉 姚蕾 宋江敏
【摘要】本文直接從建立阻滯增長(zhǎng)模型出發(fā),培養(yǎng)學(xué)生應(yīng)用MATLAB解決實(shí)際問(wèn)題的計(jì)算和估計(jì)參數(shù)的能力.
【關(guān)鍵詞】阻滯增長(zhǎng)模型;參數(shù)估計(jì);最小二乘法;數(shù)值計(jì)算
引言 在大學(xué)生數(shù)學(xué)建模課程教學(xué)中有人口預(yù)測(cè)模型這部分內(nèi)容,最開(kāi)始導(dǎo)出的是人口指數(shù)增長(zhǎng)模型,但是,對(duì)一般情況的人口預(yù)測(cè)效果不怎么好,后又建立了人口阻滯增長(zhǎng)模型.這一過(guò)程的推導(dǎo)和教學(xué)能夠讓學(xué)生體會(huì)到怎么樣從一個(gè)粗略的模型提煉出一個(gè)能描述、反映和解決實(shí)際問(wèn)題的數(shù)學(xué)模型,從而可以培養(yǎng)學(xué)生從實(shí)際問(wèn)題抽象出適當(dāng)?shù)臄?shù)學(xué)問(wèn)題的建模能力.本文直接從建立阻滯增長(zhǎng)模型出發(fā),重在培養(yǎng)學(xué)生的建模思想、建模能力、以MATLAB軟件求解模型和估計(jì)模型參數(shù)的能力.
1.模型的建立
人口阻滯增長(zhǎng)模型的原理:阻滯增長(zhǎng)模型是考慮到自然資源、環(huán)境條件等因素對(duì)人口增長(zhǎng)的阻滯作用,對(duì)指數(shù)增長(zhǎng)模型的基本假設(shè)進(jìn)行修改后得到的.阻滯作用體現(xiàn)在對(duì)人口增長(zhǎng)率r的影響上,使得r隨著人口數(shù)量x的增加而下降.若將r表示為x的函數(shù)r(x),則它應(yīng)是減函數(shù),可以得到:
dxdt=r(x)x,x(0)=x0,(1)
這里x0為初始時(shí)的人口數(shù)量.
對(duì)人口增長(zhǎng)率r(x)的一個(gè)簡(jiǎn)單的假定是設(shè)r(x)為x的線性函數(shù),即
r(x)=r0-sx,(r>0,s>0),(2)
這里r0為固有增長(zhǎng)率.另外,假設(shè)自然資源和環(huán)境條件所能容納的最大人口數(shù)量xm,當(dāng)x=xm時(shí)人口不再增長(zhǎng),即增長(zhǎng)率r(xm)=0,代入(2)式得s=r0xm,則(2)式為
r(x)=r01-xxm,(3)
將(3)代入(1)得:
dxdt=r0x1-xxm,
x(0)=x0,(4)
注意微分方程(4)帶有兩個(gè)參數(shù)xm和r0.具體求解模型時(shí),該問(wèn)題就是求解帶參數(shù)的微分方程,這是個(gè)非常有意義的主題,可以引導(dǎo)學(xué)生去學(xué)習(xí)、討論相關(guān)的內(nèi)容.另外,該模型是荷蘭生物學(xué)家Verhulst提出的,稱為L(zhǎng)ogistic模型,它在描述許多物種數(shù)量的變化規(guī)律以及社會(huì)經(jīng)濟(jì)領(lǐng)域有廣泛的應(yīng)用.
2.求解模型
這里從兩方面求解這個(gè)帶參數(shù)的微分方程模型.一個(gè)是教材敘述的分離變量法解該微分方程,得解析解
x(t)=xm1+xmx0-1e-r0t.(5)
另一個(gè)方法是以MATLAB軟件求解,其程序?yàn)閐solve(′Dx=r_0*x*(1-x/x_m)′,′x(0)=x_0′,′t′).結(jié)果為:xm/(1+exp(-r0*t)*(xm-x0)/x0).當(dāng)然,較復(fù)雜的微分方程可以通過(guò)MATLAB軟件求數(shù)值解,這些內(nèi)容可以指導(dǎo)學(xué)生課外去學(xué)習(xí)、實(shí)踐.
3.估計(jì)模型參數(shù)
人口阻滯增長(zhǎng)模型的解(5)里含有兩個(gè)參數(shù),這兩個(gè)參數(shù)可以通過(guò)某一國(guó)家或者某一地區(qū)的實(shí)際人口統(tǒng)計(jì)數(shù)據(jù)作參數(shù)估計(jì),本文采用最小二乘法估計(jì)參數(shù).如果直接用教材的線性二乘法估計(jì)參數(shù),則需要對(duì)解作處理,可以參閱教材.這里調(diào)用MATLAB的函數(shù)lsqcurvefit就可以完成參數(shù)估計(jì),該函數(shù)的算法原理,可以指導(dǎo)感興趣的學(xué)生課外學(xué)習(xí).本文以《數(shù)學(xué)建?!方滩牡拿绹?guó)每隔10年(1790—1960)的人口統(tǒng)計(jì)數(shù)據(jù)(×106)估計(jì)該模型的兩個(gè)參數(shù)xm和r0.求解程序?yàn)椋?/p>
函數(shù)文件logistic:function y=logistic(a,x)
x0=3.9; y=a(1)./(1+(a(1)/x0-1).*exp(-a(2)*x))
主函數(shù):
x=[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17];
y=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76.0,92.0,106.5,123.2,131.7,150.7,179.3]; % 人口數(shù)量
a0=[570 0.03]; % 參數(shù)初值
[a,resnorm]=lsqcurvefit(@logistic,a0,x,y)
x1=linspace(0,18,100);x0=3.9;
y1=a(1)./(1+(a(1)/x0-1).*exp(-a(2)*x1));
plot(10*x1+1790,y1); hold; ?plot(10*x+1790,y,′o′); axis([1790 1970 3 240]); xlabel(′年份/年′); ?ylabel(′×e+006人′);
title(′美國(guó)人口預(yù)測(cè)′); legend(′擬合的值′,′實(shí)際值′);
y1970=a(1)./(1+(a(1)/x0-1).*exp(-a(2)*19))
求得的結(jié)果為:xm=226.0779,r0=0.3026,y1970=191.3787.注意xm的值不太理想,可再以較多的人口數(shù)據(jù)估計(jì)參數(shù).
本文就在人口阻滯增長(zhǎng)模型教學(xué)時(shí)應(yīng)該注意的問(wèn)題展開(kāi)了討論,注重培養(yǎng)學(xué)生的建模能力以及用MATLAB軟件解決實(shí)際問(wèn)題的能力.當(dāng)然,進(jìn)一步要求的是在課外指導(dǎo)學(xué)生學(xué)習(xí)本文涉及的MATLAB函數(shù),例如dsolve和lsqcurvefit的算法原理.
【參考文獻(xiàn)】
[1]姜啟源,謝金星,葉俊.數(shù)學(xué)模型.高等教育出版社,2003.
[2]韓明.從數(shù)學(xué)實(shí)驗(yàn)和數(shù)學(xué)建??创髮W(xué)數(shù)學(xué)教學(xué)改革[J].科學(xué)咨詢(決策管理),2010(2):131-134.
[3]李同勝.數(shù)學(xué)素質(zhì)教育教學(xué)新體系和實(shí)驗(yàn)報(bào)告[J].教育研討,1997(6): 2-3.
[4]陳紹剛,黃廷祝,黃家琳.大學(xué)數(shù)學(xué)教學(xué)過(guò)程中數(shù)學(xué)建模意識(shí)與方法的培養(yǎng)[J].中國(guó)大學(xué)教學(xué),2010(12):46-48.