怎么用Matlab编程求解logistic模型中r,x0,xm的值?

怎么用Matlab编程求解logistic模型中r,x0,xm的值?,第1张

怎么利用人口数据和非线性最小二乘法估计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('实验数据','拟合曲线')

运行结果


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11542050.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存