用matlab解答

来源:百度知道 编辑:UC知道 时间:2024/06/05 19:08:39
2. 试在matlab中编程,用以下美国人口数据拟合人口增长模型: ,确定其待定参数 和 。
年 份 1790 1800 1810 1820 1830 1840 1850
人口(×106) 3.9 5.3 7.2 9.6 12.9 17.1 23.2
年 份 1860 1870 1880 1890 1900 1910 1920
人口(×106) 31.4 38.6 50.2 62.9 76.0 92.0 106.5
年 份 1930 1940 1950 1960 1970 1980
人口(×106) 123.2 131.7 150.7 179.3 204.0 226.5

clc;clear
A=[1790 1800 1810 1820 1830 1840 1850 1860 1870 1880 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980;
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 204.0 226.5];
yr=A(1,:)-A(1,1);
pop=A(2,:)*1e6;
fun=@(a,t) a(1)./(1+a(2)*exp(-a(3)*t))%logistic人口模型
%求初始值
[K,a,b]=solve('5.3e6=K/(1+a*exp(-b*10))','9.6e6=K/(1+a*exp(-b*30))','226.5e6=K/(1+a*exp(-b*190))');
a0=eval([K(1),a(1),b(1)])
format long
a=nlinfit(yr,pop,fun,a0)
yr1=0:300;
pop1=fun(a,yr1);
pop2010=fun(a,2010-1790)
plot(yr+1790,pop,'o',yr1+1790,pop1)

结果:
a =

1.0e+008 *

3.603762767460773 0.000000531097359 0.000000000234227

pop2010 =

2.757103964896516e+008

图形见:ht