求助:关于Logistic模型的matlab代码

t=0:51; %令1954年为初始年
x=[60.2 61.5 62.8 64.6 66 67.2 66.2 65.9 67.3 69.1 70.4 72.5 74.5 76.3 78.5 80.7 83 85.2 87.1 89.2 90.9 92.4 93.7 95 96.259 97.5 98.705 100.1 101.654 103.008 104.357 105.851 107.5 109.3 111.026 112.704 114.333 115.823 117.171 118.517 119.85 121.121 122.389 123.626 124.761 125.786 126.743 127.627 128.453 129.227 129.988 130.756];
[c,d]=solve('c/(1+(c/60.2-1)*exp(-5*d))=67.2','c/(1+(c/60.2-1)*exp(-20*d))=90.9','c','d') ;%求初始参数
b0=[ 241.9598, 0.02985]; %初始参数值
fun=inline('b(1)./(1+(b(1)/60.2-1).*exp(-b(2).*t))','b','t');
[b1,r1,j1]=nlinfit(t,x,fun,b0)
y= 180.9871./(1+( 180.9871/60.2-1).*exp( -0.0336.*t)); %非线性拟合的方程
plot(t,x,'*',t,y,'-or') %对原始数据与曲线拟合后的值作图
R1=r1.^2;
R2=(x-mean(x)).^2;
R=1-R1/R2 %可决系数
W=sum(abs(r1)) %残差绝对值之

那个初始参数值是怎么定的,还有fun函数是固定的吗?拟合函数的那些系数又是怎么回事。。

【1】初始值是这么定的:
>> [c,d]=solve('c/(1+(c/60.2-1)*exp(-5*d))=67.2','c/(1+(c/60.2-1)*exp(-20*d))=90.9','c','d')

c =

62.457687920920008140916437719297-1.6291275002135204129081793780683*i
62.457687920920008140916437719297+1.6291275002135204129081793780683*i
241.95986840768380162085441918688

d =

-.95675170588036288272009149214033e-1+.43712460153973020393407947582405*i
-.95675170588036288272009149214033e-1-.43712460153973020393407947582405*i
.29854891132649696390901254874996e-1

【2】fun的函数形式就是logistic函数。

【3】b1 =

180.9871 0.0336

可以改成这样,效果一样:
%==============
[c,d]=solve('c/(1+(c/60.2-1)*exp(-5*d))=67.2','c/(1+(c/60.2-1)*exp(-20*d))=90.9','c','d') ;%求初始参数
t=0:51; %令1954年为初始年
x=[60.2 61.5 62.8 64.6 66 67.2 66.2 65.9 67.3 69.1 70.4 72.5 74.5 76.3 78.5 80.7 83 85.2 87.1 89.2 90.9 92.4 93.7 95 96.259 97.5 98.705 100.1 101.654 103.008 104.357 105.851 107.5 109.3 111.026 112.704 114.333 115.823 117.171 118.517 119.85 121.121 122.389 123.626 124.761 125.786 126.743 127.627 128.453 129.227 129.988 130.756];
b0=[ eval(c(3)), eval(d(3))]; %初始参数值
fun=inline('b(1)./(1+(b(1)/60.2-1)*exp(-b(2)*t))','b','t');
[b1,r1,j1]=nlinfit(t,x,fun,b0)
y1=fun(b1,t);%非线性拟合的方程
plot(t+1954,x,'*',t+1954,y1) %对原始数据与曲线拟合后的值作图
grid
R1=r1.^2;
R2=(x-mean(x)).^2;
R=1-R1/R2 %可决系数
W=sum(abs(r1)) %残差绝对值之
%==============
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-05-31
初始参数值多数情况是通过经验或实验获得,如果没有这些经验值,可以自己编,但是可能会出现不收敛的情况,拟合效果非常不好
fun是你自己规定的函数的形式,你想让他是什么样的就怎么写,系数就是b