如何使用MATLAB求解logistic模型的参数 50
你的数据有问题。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