MATLAB下的多项式拟合

本文只进行线性多项式的拟合,至于非线性的拟合不会涉及,参考文献为《MATLAB从入门到放弃》。

多项式格式如下:

a为各项系数,x为自变量,n为阶。

先说说两个会用到的函数:

polyfit(x,y,n)           拟合参数的“普通求取法”调用格式

poly(a,xp,S)           在xp指定点上计算拟合函数值yp及半带宽dyp

sum(x)                         求和

我说点人话,polyfit就是用来拟合多项式的,x为自变量,y为因变量,n为拟合阶数;

polyval用来调用拟合出来的多项式计算值;

        sum ……


以其中的y=7*x.^3+3.4*x.^2+1.2*x+5为例


代码如下:

       x=0:1:10;

       y=[5 16.6 77 228.2 512.2 971 1646.6 2581 3816.2 5394.2 7357];

for i=1:5

    fun=polyfit(x,y,i);%得到i从1到5的多项式

    Y=polyval(fun,x);%计算拟合函数在x处的值。

    if sum((Y-y).^2)<0.1%利用理论值与实际值做平方差和,如果值小与0.1即满足需求

        res=i  

        break;

    end

end


下面是在MATLAB上运行的情况

MATLAB下的多项式拟合_第1张图片


满足理论值与实际值的平方小与0.1的阶数为3,然后直接拟合结果

MATLAB下的多项式拟合_第2张图片

得出的拟合结果的三阶系数为7,二阶系数为3.4,一阶系数为1.2,常数项为5。


写于2017-2-13深圳 夜



你可能感兴趣的:(大学回忆)