多项式拟合的方法有两种:
(1)方法一:由矩阵除法解超定方程组得到多项式拟合系数;
(2)方法二:直接调用内置函数polyfit,得到降幂形式的多项式拟合系数。
(1)方法一:已知需进行多项式拟合的 n 组数( x i , y i ), i =1,2,…, n ,由矩阵除法求解超定方程组得到 m ( m < n )阶多项式的拟合系数 A =[ a 0 , a 1 ,…, a m ]:
(2)方法二:已知需进行多项式拟合的 n 组数( x i , y i ), i =1,2,…, n ,调用内置函数polyfit进行 m ( m < n )阶多项式拟合,得到拟合系数向量 p ,具体形式为: p =polyfit( x , y , m ),或[ p , s ]=polyfit( x , y , m ),或[ p , s , mu ]=polyfit( x , y , m )。
例
2.17 多项式拟合:用五阶多项式对[0,
/2]上的正弦函数进行最小二乘拟合,分别采用矩阵除法解超定方程组、调用函数polyfit实现,并给出拟合结果图示。
基于区间[0,
/2]上的正弦函数
y
=sin(
x
),取从 0 到
/2、间隔
/20 的 11 个等间距离散点
x
i
及其函数值
y
i
为已知数据(
x
i
,
y
i
),
i
=1,2,…,11,见表 2-2。
表 2-2 离散点 x 及其正弦函数值 y
采用矩阵除法解超定方程组、调用函数polyfit实现五阶多项式的正弦函数拟合,编制的Matlab程序见ex2_17.m。运行程序ex2_17.m,得到拟合结果图 2-4。
方法一:矩阵除法解超定方程组。
求得五阶多项式的六个系数 a 0 , a 1 , a 2 , a 3 , a 4 , a 5 。
方法二:直接调用内置函数polyfit( x , y ,5),实现五阶多项式的拟合,求得多项式拟合的六个系数 a 0 , a 1 , a 2 , a 3 , a 4 , a 5 。
编制的Matlab程序ex2_17.m如下。
在Matlab命令行窗口运行ex2_17.m程序,得到如下所示的多项式拟合结果。可以看出,两种方法得到的五阶多项式拟合系数
p
1 和
p
2 一致。在已知数据点区域[0,
/2]范围内,拟合曲线与正弦函数曲线一致;但已知数据点超出该范围,拟合曲线则偏离了正弦函数曲线,拟合曲线失真。
图 2-4 区间[0,
/2]的正弦函数五阶多项式拟合结果