matlab中非线性拟合lsqcurvefit的出现问题

我在编一个人口模型,也用lsqcurvefit求出待定参数了,可是将求出的参数重新带回函数,然后画图的时候得到的不是向上的曲线,而是一条直线,希望各位帮助一下啊!
%自己定义的模型函数
function f=curve(x,t)
x0=3.9
f=x(1)\(1+(x(1)\x0-1)*exp(-1*x(2)*t));
%主程序
clear,close all;
x=[1790:10:1980]
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,106.5,123.2,131.7,150.7,179.3,204,226.5]
plot(x,y,'k+');title('数据的散点图');
x0=[500,0.03]
z=lsqcurvefit('curve',x0,x,y);
z
b=curve(z,x)
figure,plot(x,b)
如果我就要拟合x和y,期望得到指数增长的模型。怎么拟合呢?

x=[1790:10:1980];
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,106.5,123.2,131.7,150.7,179.3,204,226.5];
plot(x,y,'k+');title('数据的散点图');
x0=[500,0.03];
z=lsqcurvefit(@curve,x0,x,y);
figure(2)
x1=-x;
b=curve(z,x1)
plot(x,b,'r*')
画图的时候,你得到的数据只有部分,因为exp(-1*x(2)*t)趋近于0;
即你得到的是一个定值,那么画出来的自然是一条直线。
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答