NO1.多项式拟合
例:已知的数据点来自f(x)=(x2+3x+5)e−5x*sinx,用多项式拟合的方法在不同的阶次下进行拟合。
>> x0=0:.1:1; y0=(x0.^2-3*x0+5).*exp(-5*x0).*sin(x0);
>> p3=polyfit(x0,y0,3); vpa(poly2sym(p3),10)%可以如下显示多项式
ans =
2.839962923*x^3-4.789842696*x^2+1.943211631*x+.5975248921e-1
绘制拟合曲线:
>> x0=0:.1:1; y0=(x0.^2-3*x0+5).*exp(-5*x0).*sin(x0);
>> x=0:0.01:1;
>> ya=(x.^2-3*x+5).*exp(-5*x).*sin(x);
>> y1=polyval(p3,x);
>> p3=polyfit(x0,y0,3);y1=polyval(p3,x);
>> p5=polyfit(x0,y0,5);y2=polyval(p5,x);
>> p8=polyfit(x0,y0,8);y3=polyval(p8,x);
>> p10=polyfit(x0,y0,10);y4=polyval(p10,x);
>> plot(x,ya,x,y1,x,y2,'-',x,y3,'--',x,y4,':');
绘制结果如图:
还可以利用MATLAB的拟合工具来进行数据拟合:
在命令窗口输入 cftool 调用函数拟合界面