請參考以下程序:
% curvefitLogistic.m
%在實際應用中,只有當獲得的生物數據被證實具有邏輯斯蒂曲線規律時,擬合結果才可能是
%是有意義的,下面壹組數據有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* ')
繼續
%邏輯函數的構造
func = @(beta,x) beta(1)。/(1+(beta(1)/N(1)-1)* exp(-beta(2)*(x-1790));
% Key:優化初始值的選取:beta0(1)是函數的最大值,beta0(1)越小越好,所以這裏我們可以直接取0。
%因為高斯-牛頓算法和高斯-
%牛頓的改進算法Marquardt法,這兩種算法只選取壹組接近實際值的初始值。
當%值為k,a,b時,叠代過程的收斂性好,即k,a,b的發現值能使r的值最小!
beta 0 =[max(N)0];
% lsqcurvefit調用
[beta,resnorm,residual,exitflag,output]= lsqcurvefit(func,beta0,t,N);