如何用matlab拟合下列人口模型的数据??

来源:百度知道 编辑:UC知道 时间:2024/05/27 14:04:41
1790年 3.9(百万人);1800年 5.3(百万人);1810年 7.2(百万人);1820年 9.6(百万人);1830年 12.9(百万人);1840年 17.1(百万人);1850年 23.2(百万人);1860年 31.4(百万人);1870年 38.6(百万人);1880年 50.2(百万人);1890年 62.9(百万人);1900年 76.0(百万人);1910年 92.0(百万人);1920年 106.5(百万人);1930年 123.2(百万人);1940年 131.7(百万人);1950年 150.7(百万人);1960年 179.3(百万人);1970年 204.0(百万人);1980年 226.5(百万人);1990年 251.4(百万人);2000年 281.4(百万人);
数据如上所示,拟合的函数关系是:
ln(x)=r*t + ln(x0);其中 r 和 x0 是要拟合的。
要求:从1790年到1900年,拟合得到一个r和x0 ,
从1790年到2000年拟合得到一个r和x0.
我是个新手,对你和不是很熟悉,非常感谢大家帮我!!!
结果为:r=0.02743 x0=4.1884
第二个结果为:r=0.02022 x0=6.0540
希望各位给出个具体的程序!谢谢了!!!!

我提一个方案吧,你可以试一下,对不对我就不太清楚了
自变量为t,因变量为x
先将你的式子改一下,取e为底
x=e((r*t)+ln(x0))
令z(1)=r,z(2)=ln(x0)
fz=@(z,t) EXP(z(1)*t+z(2)),...
'z','t';
[s,resnorm,residual,exitflag,output] = lsqcurvefit(fz,z0,t,x,[],[],options)
z0为系数矩阵初值,先随便选一下值比如(0.5,0.5)

data =
1790 3.9
1800 5.3
1810 7.2
1820 9.6
1830 12.9
1840 17.1
1850 23.2
1860 31.4
1870 38.6
1880 50.2
1890 62.9
1900 76
1910 92
1920 106.5
1930 123.2
1940 131.7
1950 150.7
1960 179.3
1970 204
1980 226.5
1990 251.4
200