matlab求指导啊,做的是最小二乘法,代码如下>> x=[2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011];>> y=[5567,5497,5320,5548,5633,5795,5819,5910,5965,6022,6107];>> p=polyfit(x,y,1)p =1.0e+005 *0.0007 -1.3367也就是说y=70x-133670
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/30 09:41:12
![matlab求指导啊,做的是最小二乘法,代码如下>> x=[2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011];>> y=[5567,5497,5320,5548,5633,5795,5819,5910,5965,6022,6107];>> p=polyfit(x,y,1)p =1.0e+005 *0.0007 -1.3367也就是说y=70x-133670](/uploads/image/z/10913889-57-9.jpg?t=matlab%E6%B1%82%E6%8C%87%E5%AF%BC%E5%95%8A%2C%E5%81%9A%E7%9A%84%E6%98%AF%E6%9C%80%E5%B0%8F%E4%BA%8C%E4%B9%98%E6%B3%95%2C%E4%BB%A3%E7%A0%81%E5%A6%82%E4%B8%8B%3E%3E+x%3D%5B2001%2C2002%2C2003%2C2004%2C2005%2C2006%2C2007%2C2008%2C2009%2C2010%2C2011%5D%3B%3E%3E+y%3D%5B5567%2C5497%2C5320%2C5548%2C5633%2C5795%2C5819%2C5910%2C5965%2C6022%2C6107%5D%3B%3E%3E+p%3Dpolyfit%28x%2Cy%2C1%29p+%3D1.0e%2B005+%2A0.0007+-1.3367%E4%B9%9F%E5%B0%B1%E6%98%AF%E8%AF%B4y%3D70x-133670)
matlab求指导啊,做的是最小二乘法,代码如下>> x=[2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011];>> y=[5567,5497,5320,5548,5633,5795,5819,5910,5965,6022,6107];>> p=polyfit(x,y,1)p =1.0e+005 *0.0007 -1.3367也就是说y=70x-133670
matlab求指导啊,
做的是最小二乘法,代码如下
>> x=[2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011];
>> y=[5567,5497,5320,5548,5633,5795,5819,5910,5965,6022,6107];
>> p=polyfit(x,y,1)
p =
1.0e+005 *
0.0007 -1.3367
也就是说y=70x-133670;
但是这个函数验算下,当x=2001的时候,答案是6400?怎么可能,是不是哪里错了?
matlab求指导啊,做的是最小二乘法,代码如下>> x=[2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011];>> y=[5567,5497,5320,5548,5633,5795,5819,5910,5965,6022,6107];>> p=polyfit(x,y,1)p =1.0e+005 *0.0007 -1.3367也就是说y=70x-133670
为什么不可能呢~最小二乘法是求一条直线,所有点到直线的距离平方和最小.也就是说这个直线是不一定经过你的已知点的.因为你的已知点也可能是有误差的,这也是最小二乘避免误差的意义所在.
如果你的已知点是准确的,或者说,是必须在拟合曲线上的,那你应该用的是插值之类的.
你的p 取值不对
>> vpa(p)
ans =
[ 69.499999999988773424774990417063, -133673.09090906832716427743434906]
x = [2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011];
y = [5567,5497,5320,5548,5633,5795,5819,5910,5965,6022,6107];
xx = (x-2000)/10; %%%% !!!!!!!!!!
p = polyfit(xx,y,1);
f = poly2sym(p)
yy = subs(f,'x',(2001-2000)/10);
str = ['2001- ' num2str(yy)];
disp(str);