某年美国轿车价格的调查资料如表,其中xi表示轿车的使用年数,yi表示相应的平均价格。
实验要求:试分析用什么形式的曲线来拟合表中的数据,并预测使用4.5年后轿车的平均价格大致为多少?
xi |
1 2 3 4 5 6 7 8 9 10 |
yi |
2615 1943 1494 1087 765 538 484 290 226 204 |
实验步骤
画出离散点,运用最小二乘法拟合,并计算4.5年后轿车相应的平均价值。
实验结果及讨论
①离散点图形,根据离散点图形大致预测模型。
由离散点图形可以看出数据近似于指数衰减,因此假设模型为y=aebx。
②运用最小二乘法拟合函数,画出离散点和拟合函数图形,并计算4.5年后轿车的平均价格。
经过拟合得出的假设模型中待定参数存储在X中,分别为:3544.5 -0.0003
4.5年后轿车的平均价格为: 922.4867元
③画出拟合函数与离散点误差图形
分析:
有上以上图形我们可以得出:
1. 在经验模型函数已知的情况下,我们可以直接利用Matlab中的相关函数命令直接拟合。而当经验模型函数未知时,我们可以先画出离散点图形,拟定一个假设模型函数,然后在进行拟合。
2.并不是所有给出的数据都经过拟合函数,有部分点偏离拟合函数,在该点处误差较大,靠近或经过你和函数的点误差很小。而插值函数都经过给出的数据。在现实中,会有部分数据测量不准确,若强制使插值函数经过所有的点,这无疑会使误差增大,从这一点上,拟合优于插值。同时也提醒我们,在测量时尽量测量准确,获得可靠数据,减小误差。好的数据不一定能获得好的结论,但错误的数据一定得不出好结论。
3.拟合函数不唯一。在第二小问中,我假设的模型是指数函数y=aebx形式的。但是也可以认为是抛物线或反比例函数形式的,用这两种假设也可以得出拟合函数,所以拟合函数不唯一。我们要做的就是尽可能的选择误差最小的一种或其组合模型。
4.我们可以根据数据拟合出模型函数,然后就可以通过拟合函数预测位置节点数据和数据走向、趋势。为我们做出决定提供依据。
程序源码:
x=(1:10);y=[2615,1943,1494,1087,765,538,484,290,226,204]; %给定的x,y数据 %%%%绘制离散点,根据其图形确定拟合函数%%%% figure; plot(x,y,'rp','MarkerSize',10);title('离散点图像');xlabel('x');ylabel('y');legend('离散点');grid on %由离散点可以看出数据近似于指数衰减,假设模型为y=ae^(bx) %%%%绘制离散点和拟合函数图形,并计算4.5年后车的平均价格%%%% X0=[100,-1]; %设定计算初始值 [X,r] = lsqcurvefit(@(X,x) X(1)*exp(X(2)*x),X0,x,y);%最小二乘法求拟合 a=sqrt(r/10); %计算均方差 X1=(1:0.1:11); %将节点密集等分 Y=X(1)*exp(X(2)*X1); %计算等分节点的拟合函数值 disp('4.5年后轿车的平均价格为:') ys=X(1)*exp(X(2)*4.5) %计算4.5年后轿车的平均价格 disp('假设模型y=ae^(bx)的待定参数a和b存储在X中,分别为:');X figure; %绘制离散点与拟合函数 plot(x,y,'ro',X1,Y,'b-');title('离散点与拟合函数图形');xlabel('x');ylabel('y');legend('离散点','拟合函数');grid on %%%%绘制拟合函数与离散点的误差图%%%% ry=X(1)*exp(X(2)*x)-y; %计算离散点的误差 figure; %绘制拟合函数误差图 plot(x,ry,'g-');title('拟合函数与离散点误差');xlabel('x');ylabel('y');legend('拟合函数与离散点误差');grid on