某年美国轿车价格的调查资料如表,其中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年后轿车相应的平均价值。

实验结果及讨论

①离散点图形,根据离散点图形大致预测模型。

blob.png

由离散点图形可以看出数据近似于指数衰减,因此假设模型为y=aebx

②运用最小二乘法拟合函数,画出离散点和拟合函数图形,并计算4.5年后轿车的平均价格。

blob.png

经过拟合得出的假设模型中待定参数存储在X中,分别为:3544.5   -0.0003

4.5年后轿车的平均价格为:  922.4867

 

③画出拟合函数与离散点误差图形

blob.png

分析:

有上以上图形我们可以得出:

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