matlab函数拟合

来源:百度知道 编辑:UC知道 时间:2024/06/11 13:26:29
1 用Logistic模型求解人口增长模型
dx/dt = rx(1-x/xm)
x(0)=x0
其中,x是是人口数,xm是最大人口数
用分离变量求得
x(t) = xm/(1+(xm/x0-1)e^r(t0-t))
t0是第一年
并且已知t0--t10,及相应的x(t)值
求解 r 和 xm 并进行预测
数据如下
2000,97.4938
2001,107.7658,
2002,118.9796,
2003,131.1914,
2004,144.4542,
2005,158.8166,
2006,174.3208,
2007,189.0005,
2008,201.8791,

2000到2008年为已知数据
2009到2048为预测数据

clc;clear
format long g
A=[2000,97.4938
2001,107.7658,
2002,118.9796,
2003,131.1914,
2004,144.4542,
2005,158.8166,
2006,174.3208,
2007,189.0005,
2008,201.8791]
t0=A(1,1);x0=A(1,2);
t=A(:,1);x=A(:,2);
fun=@(a,t) a(1)./(1+(a(1)/x0-1)*exp(a(2)*(t0-t)))
a=nlinfit(t,x,fun,[400 0.1]);
xm=a(1),r=a(2)
tt=2000:2048;
plot(t,x,'o',tt,fun(a,tt))
format short g
x_pre=[2009:2048;fun(a,2009:2048)]'

结果:
xm =

470.16646129192

r =

0.133396448522147

x_pre =

2009 218.61
2010 234.27
2011 249.93
2012 265.46
2013 280.72
2014 295.59
2015 309.97
2016 323.74
2017 336.84
2018 349.21
2019 360.8