怎么利用人口数据和非线性最小二乘法估计y=Xm/[1+(Xm/X0-1)*exp(-r*t)]式中r,x0,xm的值?其求解方法如下:
1、将【1790年~2000年】的年份按序列来表示,并赋值给t。即
t=1:22%1——代表1790年,2——代表1800年,。。。,22——代表2000年
2、将人口数赋值给y
3、自定义logistic模型函数,即
fun=inline('a(1)./(1+(a(1)/a(2)-1)*exp(-a(3).*t))','a','t')
4、使用nlinfit非线性最小二乘法函数,拟合系数Xm、X0、r,即
a= nlinfit(t,y,fun,b)
5、使用plot绘图函数,绘制拟合前后对比图
6、根据上述方法,编写程序并执行,可以得到如下结果。
使用MATLAB求解logistic模型参数的步骤,可按下列过程进行:
1、要有已知自变量和因变量的一系列数据
2、自定义logistic模型函数
3、使用nlinfit()函数拟合logistic模型的参数
4、根据拟合值与已知值的差值,判断其拟合准确性
5、绘制logistic模型曲线图
例如:已知x=[21 24 27 30 33 36 39 42 45 48]y=[0 4.5541 11.5836 19.9043 22.7024 25.2441 26.2109 26.5693 26.6396 25.9511]。求logistic模型的参数。
求解代码:
x=[21 24 27 30 33 36 39 42 45 48]
y=[0 4.5541 11.5836 19.9043 22.7024 25.2441 26.2109 26.5693 26.6396 25.9511]
fun=inline('a(1)./(1+exp(a(2)-a(3).*x))','a','x')
b=[0.95717 0.48538 0.80028]
a = nlinfit(x,y,fun,b)
plot(x,y,'rp'),hold on
xx0=linspace(min(x),max(x),50)yy0=fun(a,xx0)
plot(xx0,yy0,'r-'),xlabel('x'),ylabel('y')
legend('实验数据','拟合曲线')
运行结果
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)