使用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('实验数据','拟合曲线')
运行结果
利用matlab对Logistic模型的参数xm和r求解:x(t)=xm/(1+(xm/x0-1)*exp(-rt))方法如下:
1、将【1975年~2020年】的年份按序列来表示,并赋值给t。即t=1:22%1——代表1975年,2——代表1800年,。。。,22——代表2020年。
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将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案。
并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。MATLAB优势特点
1、高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来;
2、具有完备的图形处理功能,实现计算结果和编程的可视化;
3、友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握;
4、功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量方便实用的处理工具。
参考资料来源:百度百科-MATLAB
logistic模型属于非线性问题。所以求解其模型函数的系数可以用nlinfit()非线性回归分析函数来解决。由于给出的数据偏少,通过有效的插值方法,增加合理的数据点。主要代码:
a0=[-35.287,813.17,0.0098613]
t=0:5:75%t=[0,30,45,76]
p=[2200 2259.2 2429.3 2699.5 3058.7 3495.8 4000 5228.9 7048.4 8260 8738.6 9152.7 9494 9754.1 9924.9 9997.9]%p=[2200,4000,8260,10000]
fun=@(a,t)a(1)./(1+(a(1)/a(2)-1)*exp(-a(3).*t))
a= nlinfit(t,p,fun,a0)
运行结果
L=11278.4096;P0=1257.3315;r=0.061172
决定系数R²:0.93268
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)