Matlab 多项式拟合

使用Matlab进行多项式拟合,针对sin函数的数据进行高效拟合,达到良好的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(代码: 2\duoxiangsinihe.m)

多项式拟合sin函数,效果比较好:

x0=-pi:0.1:pi;
y0=sin(x0);     %要拟合的函数。原函数

p0=polyfit(x0,y0,4);  %最高拟合四阶的多项式 
y1=polyval(p0,x0);

plot(x0,y0,x0,y1,'r');
poly2sym(p0)  %拟合的多项式的结果
多项式拟合该函数,效果不好:
x1=-1:0.2:1;          %拟合的点不适合太多,否则很卡
y1=1./(1+25*x1.^2);   %要拟合的函数。原函数。多项式不能很好的拟合该曲线

x0=-1:0.01:1;         %绘制原图的时候可以多选些点
y0=1./(1+25*x0.^2);

p3=polyfit(x1,y1,3);    %最高拟合3阶多项式
p5=polyfit(x1,y1,5);    %最高拟合5阶多项式
p10=polyfit(x1,y1,10);  %拟合10阶多项式。多项式不能很好的拟合该曲线

y3=polyval(p3,x0);
y5=polyval(p5,x0);
y10=polyval(p10,x0);

plot(x0,y0,x0,y3,'r',x0,y5,'m',x0,y10,'k');
legend('原图','3阶','5阶','10阶');
曲线拟合上面的函数,效果会好些:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 曲线拟合
x1=-1:0.2:1;           %拟合的点不适合太多,否则很卡
y1=1./(1+25*x1.^2);    %要拟合的原函数

options=fitoptions('Method','NonlinearLeastSquares');  %拟合方法,非线性最小二乘法
options.Lower=[-Inf -Inf -Inf];  %最小值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值