Matlab 用“x=0:0.3:15; y=0.25*x+20*sin(x);”产生的数据,求出函数y的3阶和7阶拟合多项式,画出曲线。
实现代码:
clc,clear
x=0:0.3:15;
y=0.25*x+20*sin(x);
p3=polyfit(x,y,3) %3阶拟合多项式系数
str = ['y=',num2str(p3(1)),'x^3',num2str(p3(2)),'x^2',num2str(p3(3)),'x+',num2str(p3(4))];
fprintf('%s\n',str);
xi3=0:0.1:15;
yi3=polyval(p3,xi3);
p7=polyfit(x,y,7) %7阶拟合多项式系数
str = ['y=',num2str(p7(1)),'x^7+',num2str(p7(2)),'x^6',num2str(p7(3)),'x^5+',num2str(p7(4)),'x^4+',num2str(p7(5)),'x^3',num2str(p7(6)),'x^2+',num2str(p7(7)),'x',num2str(p7(8))];
fprintf('%s\n',str);
xi7=0:0.1:15;
yi7=polyval(p7,xi7);
plot(x,y,xi3,yi3,xi7,yi7)
xlabel('x'),ylabel('y');
legend('y=0.25x+20sin(x)曲线','y的3阶拟合多项式','y的7阶拟合多项式')
运行结果