如何使用MATLAB求解logistic模型的参数
1个回答
2017-09-27
展开全部
如何使用MATLAB求解logistic模型的参数
你的数据有问题。t 和 x的个数不相等。只能数据来计算。
t=0:5:95; %[0,10,20....110];
x=[3 5 10 19 34 54 79 108 145 192 260 344 425 500 566 626 680 728 768 803];
func=inline('a(1)./(1+(a(1)/a(2)-1)*exp(-a(3).*t))','a','t');
b=[9.5022 0.34446 4.3874];
a=lsqcurvefit(func,b,t,x);
vpa(a,10)
x1=func(a,t);
[x' x1']
plot(t,x,'*',t,x1,'r-')
xlabel('t');ylabel('x(t)')
legend('原始数据','拟合曲线')
运行结果
[ 848.9710766, 8.511800278, 0.07576157627]
%xm=848.9710766,x0=8.511800278,r=0.07576157627
% x x1 对比值
3 8.5118
5 12.375
10 17.953
19 25.969
34 37.401
54 53.54
79 75.99
108 106.59
145 147.17
192 199.06
260 262.4
344 335.49
425 414.55
500 494.31
566 569.3
626 635.29
680 690.06
728 733.34
768 766.25
803 790.54
你的数据有问题。t 和 x的个数不相等。只能数据来计算。
t=0:5:95; %[0,10,20....110];
x=[3 5 10 19 34 54 79 108 145 192 260 344 425 500 566 626 680 728 768 803];
func=inline('a(1)./(1+(a(1)/a(2)-1)*exp(-a(3).*t))','a','t');
b=[9.5022 0.34446 4.3874];
a=lsqcurvefit(func,b,t,x);
vpa(a,10)
x1=func(a,t);
[x' x1']
plot(t,x,'*',t,x1,'r-')
xlabel('t');ylabel('x(t)')
legend('原始数据','拟合曲线')
运行结果
[ 848.9710766, 8.511800278, 0.07576157627]
%xm=848.9710766,x0=8.511800278,r=0.07576157627
% x x1 对比值
3 8.5118
5 12.375
10 17.953
19 25.969
34 37.401
54 53.54
79 75.99
108 106.59
145 147.17
192 199.06
260 262.4
344 335.49
425 414.55
500 494.31
566 569.3
626 635.29
680 690.06
728 733.34
768 766.25
803 790.54
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询