超定系统

线性方程组组成的超定系统在不同类型的曲线拟合中经常出现。下面举例介绍。

在下面的数据中,y是在不同时间t内测得的数据,下面利用该数据进行曲线拟合。曲线模型假定为:

t 0.00 0.30 0.80 1.10 1.60 2.30

y 0.82 0.72 0.63 0.60 0.55 0.50

在MATLAB命令窗口中输入下面的语句:

code.matlab
>> t = [0 .3 .8 1.1 1.6 2.3]';
>> y = [.82 .72 .63 .60 .55 .50]';

利用最小二乘法拟合,可以计算拟合模型中的待定系数。现在利用给定的数据可以得到6个方程,有2个未知数,用下面的62矩阵表示:

code.matlab
>> E = [ones(size(t)) exp(-t)]
E =
      1.0000    1.0000
      1.0000    0.7408
      1.0000    0.4493
      1.0000    0.3329
      1.0000    0.2019
      1.0000    0.1003

下面使用反斜线运算符获取最小二乘解:

code.matlab
>> c = E\y
c =
      0.4760
      0.3413

所以最后得到的曲线模型为:

下面首先生成均匀间隔的时间序列T,然后利用上面得到的模型计算Y值,并利用T和Y绘图。

code.matlab
>> T = (0:0.1:2.5)';
>> Y = [ones(size(T)) exp(-T)]*c;
>> plot(T,Y,'-',t,y,'o')

通过检验可以发现,E*c并不精确等于y,但是差距很小,如图3-1所示。

Document Image

图3-1 拟合模型的图形