chinasnowlee 发表于 2011-12-3 12:44:21

拟合问题!!

请教一个问题: x=;
y也是十个对应的值;
我的问题是整个拟合用一个5次多项式,得到的函数式,与分段得到的5次多项式结果一样嘛??(从x=,x=;x=)这样分段

guojunhang 发表于 2011-12-3 13:00:44

不一样,具体原因可以参考《数值方法》。
令附:
从x=,一共有3个点,最多可拟合出2次多项式,哪来的5次?

chinasnowlee 发表于 2011-12-3 13:23:11

guojunhang 发表于 2011-12-3 13:00 static/image/common/back.gif
不一样,具体原因可以参考《数值方法》。
令附:
从x=,一共有3个点,最多可拟合出2次多项式,哪来的5 ...

多谢指导~~
x=;
y=[0.008368214
0.007191997
0.006001203
0.004942747
0.004060792
0.003399394
0.00279685
0.002293626
0.001823075
0.001484878
0.001220212
0.000955543
0.000705578
0.000485028
0.000279182
0.000146868
-7.36809E-05
-0.000279526
-0.000147135
-7.35691E-05
0]';
plot(y,x,'y');
x1=x(:,1:5);
y1=y(:,1:5);
x2=x(:,5:10);
y2=y(:,5:10);
x3=x(:,10:15);
y3=y(:,10:15);
x4=x(:,15:20);
y4=y(:,15:20);
p1=polyfit(x1,y1,5);
p2=polyfit(x2,y2,5);
p3=polyfit(x3,y3,5);
p4=polyfit(x4,y4,5);
hold on
y1=polyval(p1,x1);
y2=polyval(p2,x2);
y3=polyval(p3,x3);
y4=polyval(p4,x4);
x=;
y=;
set(gca,'YDir','reverse');
plot(y,x,'r')
plot(y,x,'r',y1,x1,'s',y2,x2,'d',y3,x3,'r*',y4,x4,'-+')

帮忙看看这个分段拟合有没有问题?谢谢

chinasnowlee 发表于 2011-12-3 13:32:27

这个运行出来结果感觉分段拟合和一段拟合图像是重合的呢??求解释谢谢

guojunhang 发表于 2011-12-3 14:22:09

本帖最后由 guojunhang 于 2011-12-3 15:32 编辑

在你的程序中,是5用点去拟合5次多项式,结果不唯一,matlab返回警告:
Warning: Polynomial is not unique; degree >= number of data points.
你要是分段拟合,五次多项式,是需要6个点的。此时误差为0.曲线恰好经过这些点。
要看出差异出来,需要7个点对以上。具体原因看数值方法。

另付一个小警告,看这个曲线走势,平坦的很,2次多项式就足够了吧?你选5次多项式,有点过高了吧

不如你用2次多项式拟合,比较其差异。

dahaijianfei 发表于 2011-12-3 21:18:01

如果数据符合5次曲线用多少个数据结果都一样
页: [1]
查看完整版本: 拟合问题!!