对于一个某些参数未知的曲线,在手上拥有其部分数据时,可用lsqcurvefit函数获得其参数。
如:
x = 0 : 1 : 21;
y = [3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.9 76 92 76.5 123.2 131.7 150.7 179.3 204 226.5 251.4 281.4];
当中x为年份,y为人口数。
如图为人口增长公式。其中参数x0为人口初始数据,xm为最大人口容量,r为固定增长率,x(t)为第t年人口数量。x0此时已知,需要xm与r的值。
首先编写函数usa_population:
function [ out ] = usa_population( x, year )
out = x(1) ./ (1 + (x(1) / 3.9 - 1) .* exp(- x(2) .* year));
end
其中x(1)为xm,x(2)为r。
之后声明新变量x0作为预估的初值,xi为使用lsqcurvefit()函数后得到的参数值。
x0 = [1, 1];
xi = lsqcurvefit('usa_population', x0, x, y);
查看xi中的内容:
xi =
361.2406 0.2678
即为所求的xm与r。
作图查看拟合结果:
scatter(x, y);
hold on;
z = usa_population(xi, x);
plot(x, z);
得到图像: