用最小二乘法求形如原型函数为y(x)=a*exp(bx)得经验公式...要求用matlab.....

数据表如下x=7.2 2.7 3.5 4.1 4.8 y=65 60 53 50 46

% 1、拟合和很多因素有关,比如初值、拟合函数的选择、算法设置等。
% 2、从结果看,你现在的拟合函数形式不太适合所给的数据,请重新考虑其他形式的函数。
% 3、怀疑x的第一个点(7.2)是否正确,请核实。

x=[7.2 2.7 3.5 4.1 4.8];
y=[65 60 53 50 46];
f = inline('c(1)+exp(c(2)*x)','c','x');
opt = optimset('MaxFunEvals',1e5);
c = lsqcurvefit(f, [0 0], x, y,[],[],opt);
a = c(1)
b = c(2)

% 把拟合结果与原始数据对照
plot(x,y, '-o', x, f(c, x), 'r:x');
legend('原始数据', '拟合函数')追问

能从头到尾得些一遍嘛..这是个我们没接触过的课程的老师留的作业...后天就要交了...

追答

请问你想要怎样“从头到尾”?
程序是完整的,也有必要的注释,但你给的数据与拟合公式不匹配,得不到理想的结果。

追问

有很多地方不对...c = lsqcurvefit(f, [0 0], x, y,[],[],opt);中那个方格里是什么东西...plot(x,y, '-o', x, f(c, x), 'r:x');那个x,y后面的东西是什么....

追答

怎么会不对?你运行试过吗?
如果看不懂可以问,但不要随便说“不对”。

c = lsqcurvefit(f, [0 0], x, y,[],[],opt);
其中[0 0]是拟合参数a、b的初值,后面两个[]用于指定参数的范围,因为这里对参数并无限制,所以用空数组。

plot(x,y, '-o', x, f(c, x), 'r:x');
'-o'表示实线,数据点处用圆圈标记;'r:x'表示红色虚线,数据点处用叉标记。

追问

加我QQ聊好不好 对不起,我说错话了..873758194

追答

我QQ平时不在线,加了意义不大。
有问题继续在这里问吧。

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答