matlab多项式拟合中要求常数项为零,该怎么拟合?
有一个多项式拟合的问题,但是要求拟合后的五次多项式中,常数项为零,该怎么拟合??怎么编码?polyfit出的结果中有常数项。。。原拟合的数值点过零点,但是如此也不行,po...
有一个多项式拟合的问题,但是要求拟合后的五次多项式中,常数项为零,该怎么拟合??怎么编码?polyfit出的结果中有常数项。。。
原拟合的数值点过零点,但是如此也不行,polyfit拟合常数项还是有的 展开
原拟合的数值点过零点,但是如此也不行,polyfit拟合常数项还是有的 展开
4个回答
展开全部
可以多设几个接近零点的点。比如(0,0),(0.001,0.001)等等。这样得到的常数项就接近0了,对你的结果影响不大,可以把常数项去掉。
如:
>> a=[0,0.001,3,5,7,8,9,12,18];b=[0,0.001,18,29,36,38,40,50,81];
>> polyfit(a,b,5)
ans =
Columns 1 through 5
-6.8493e-004 2.8700e-002 -3.9362e-001 1.8499e+000 3.2573e+000
Column 6
1.1043e-003
这里常数项为1.1043e-003,已经很小了。可以去掉。如果不满意,可以再加几个接近0的点。matlab多项式拟合要照顾所有数据,所以你多设几个靠近0的值就可以了。或者你直接用插值,这样常数项肯定为0。
如:
>> a=[0,0.001,3,5,7,8,9,12,18];b=[0,0.001,18,29,36,38,40,50,81];
>> polyfit(a,b,5)
ans =
Columns 1 through 5
-6.8493e-004 2.8700e-002 -3.9362e-001 1.8499e+000 3.2573e+000
Column 6
1.1043e-003
这里常数项为1.1043e-003,已经很小了。可以去掉。如果不满意,可以再加几个接近0的点。matlab多项式拟合要照顾所有数据,所以你多设几个靠近0的值就可以了。或者你直接用插值,这样常数项肯定为0。
展开全部
【多项式拟合指令】
polyfit(X,Y,N):多项式拟合,返回降幂排列的多项式系数。
polyval(P,xi):计算多项式的值。
其中,X,Y是数据点的值;N是拟合的最高次幂;P是返回的多项式系数;xi是要求的点的横坐标。
【.m文件的代码】
[plain] view plaincopy
x=[1 2 3 4 5 6 7 8 9]
y=[9 7 6 3 -1 2 5 7 20]
P=polyfit(x,y,3);
xi=0:.2:10;
yi=polyval(P,xi);
plot(xi,yi,x,y,'r*');
polyfit(X,Y,N):多项式拟合,返回降幂排列的多项式系数。
polyval(P,xi):计算多项式的值。
其中,X,Y是数据点的值;N是拟合的最高次幂;P是返回的多项式系数;xi是要求的点的横坐标。
【.m文件的代码】
[plain] view plaincopy
x=[1 2 3 4 5 6 7 8 9]
y=[9 7 6 3 -1 2 5 7 20]
P=polyfit(x,y,3);
xi=0:.2:10;
yi=polyval(P,xi);
plot(xi,yi,x,y,'r*');
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2009-12-20
展开全部
最小二乘拟合
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2009-12-20
展开全部
过(0,0)点就没常数项了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询