作业帮 > 综合 > 作业

Logistic模型用matlab求解

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/06/24 05:12:52
Logistic模型用matlab求解

t=[2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010]

N=[128453 129227 129988 130756 131448 132129 132802 133450 134091]

N0就取2000吧

我实在不太会弄,请大神帮忙用lsqcurvefit解决,要有代码解释

多谢!


不好意思写错了,N0取2000年的值
Logistic模型用matlab求解
这个数据没有 logistic 规律吧~下面程序你参考一下:% curvefitLogistic.m
% 在实际应用时, 只有在确认所得的生物数据具有 logistic 曲线规律, 拟合的结果才
% 有意义,下面这组数据具有 logistic 曲线规律!
N=[3929 5308 7240 9638 12866 17069 23192 31443 38558 50156 62948 ...
    75995 91972 105711 122775 131669 150697 179323 203185 226500];
t=1790:10:1980;
% 画原始数据图
plot(t,N,t,N,'r*')
hold on 
% Logistic 函数的构造
func  = @(beta,x) beta(1)./(1+(beta(1)/N(1)-1)*exp(-beta(2)*(x-1790)));
% 关键:寻优初值的选取:beta0(1)为函数的最大值,beta0(1)尽可能小,这里直接取 0
% 因为:现在在计算机上进行 logistic 曲线拟合, 多采用 Guass一Newton 算法和 Guass-
% Newton 的改进算法 Marquardt 法, 这两种算法只有在选取一组与实际值较接近的初
% 值K, a, b 时, 迭代过程的收敛性才好, 即找到的K 、a 、b 的值能使 R 值最小!
beta0 = [max(N) 0];

% lsqcurvefit 调用
[beta,resnorm,residual,exitflag,output]= lsqcurvefit(func,beta0,t,N);

% 画拟合图
plot(t,func(beta,t), t,func(beta,t), '*b');拟合效果图: