如何用MATLAB拟合Logistic曲线求解曲线方程的三个特征参数

原始数据为2000年到2010年用水量,即时间t=2000:1:2010,用水量分别是503.02526.02561.96629.2700.21788.15876.769... 原始数据为2000年到2010年用水量,即时间t=2000:1:2010,用水量分别是
503.02
526.02
561.96
629.2
700.21
788.15
876.76
989.23
1058.23
1135.13
1330,如何确定logistic曲线的a,b,k后预测后面几年的用水量
展开
 我来答
lhmhz
高粉答主

2016-10-15 · 专注matlab等在各领域中的应用。
lhmhz
采纳数:7262 获赞数:16957

向TA提问 私信TA
展开全部

Logistic模型:a/(1+(a/b-1)*exp(-k*t))

实现代码:

clc,clear all,close all

%Logistic模型用matlab求解

%时间是2000年到2010年

%数据是Q=[503.02 526.02 561.96 629.2 700.21 788.15 876.76 989.23 1058.23 1135.13 1330] 

%要预测2015年的用水量。

t=[1:11];

Q=[503.02 526.02 561.96 629.2 700.21 788.15 876.76 989.23 1058.23 1135.13 1330]; 

func=inline('a(1)./(1+(a(1)/a(2)-1)*exp(-a(3).*t))','a','t');

b=[0.1576    0.9706    0.9572]

a=lsqcurvefit(func,b,t,Q);

Q1=func(a,t);

y=Q';y1=Q';

WZ=['Q=',num2str(a(1)),'/(1+(',num2str(a(1)),'/',num2str(a(2)),'-1)*','exp(-',num2str(a(3)),'*t)'];

figure

tt=2000:2010;

xx=min(t):1:max(t); 

yy=func(a,xx);

plot(tt,Q,'rp'),hold on

plot(tt,yy,'*-'),xlabel('年份'),ylabel('用水量(万吨)'),hold off %,grid on

text(2000,1300,WZ,'FontSize',10); 

t0=2015-2000+1;y0=func(a,t0);

text(2000,1200,['预测2015年的用水量:',num2str(max(y0)),'(万吨)'])

运行结果

预测2015年的用水量:1972万吨

追问
b=[0.1576    0.9706    0.9572]这行是怎么得到的呢?能否详细讲解哈
追答
b=[0.1576    0.9706    0.9572]是初值,从通过多次试验得到的。
置之不理cx
2016-10-15 · TA获得超过129个赞
知道小有建树答主
回答量:391
采纳率:0%
帮助的人:246万
展开全部
多项式函数拟合:a=polyfit(xdata,ydata,n)
其中n表示多项式的最高阶数,xdata,ydata为将要拟合的数据,它是用数组的方式输入.输出参数a为拟合多项式的系数
多项式在x处的值y可用下面程序计算.
y=polyval(a,x)
追问
我希望的是通过logistic曲线拟合哈,因为我知道它的变化趋势是S型,多项式拟合后的趋势与实际不一致
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式