用MATLAB解决最小二乘解的题

有一组实测数据如下表,而且已知该数据可能满足的原型函数为
y(x)=a*x+b*x^2*e^(-cx)+d,试求满足下面数据的最小二乘解a,b,c,d的值
x= 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
与x相对应的y=2.3201 2.6470 2.9707 3.2885 3.6008 3.9090 4.2147 4.5191 4.8232 5.1275

谢谢各位了...
谢谢.我老师说要先进行建立M脚本.这个怎么回事啊?

>> clear
>> f=inline('a(1)*x+a(2)*x.^2.*exp(-a(3)*x)+a(4)','a','x');
x=[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1];
y=[2.3201 2.6470 2.9707 3.2885 3.6008 3.9090 4.2147 4.5191 4.8232 5.1275];
[xx,res]=lsqcurvefit(f,ones(1,4),x,y);
xx',res

要建立也是可以的。就是把上面那个inline弄成.m
如下:
在Matlab下输入:edit zhidao_15.m,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function y=zhidao_15(a,x)
y=a(1)*x+a(2)*x.^2.*exp(-a(3)*x)+a(4);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

在Matlab下面输入:
x=[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1];
y=[2.3201 2.6470 2.9707 3.2885 3.6008 3.9090 4.2147 4.5191 4.8232 5.1275];
[xx,res]=lsqcurvefit('zhidao_15',ones(1,4),x,y);
xx',res
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-01-23
这个题目本质上就是个二次函数的求极值问题。
(1)首先将式子化简
如图
(2)代入下列函数中函数中
2.1
最速下降法子函数(代码)
2.2
拟牛顿法(对秩1
子函数代码)
2.3
bfgs子函数代码
2.3
dfp(子函数代码)
(3)上述过程包含了计算的步骤,可以用optimtool设置方法来求解并得到过程。本来想给你结果的,分数太少,就不写上去了。
相似回答