找回密码
 注册
Simdroid-非首页
查看: 64|回复: 5

拟合问题!!

[复制链接]
发表于 2011-12-3 12:44:21 | 显示全部楼层 |阅读模式 来自 四川成都
请教一个问题: x=[1:10];
y也是十个对应的值[y1:y10];
我的问题是整个拟合用一个5次多项式,得到的函数式,与分段得到的5次多项式结果一样嘛??(从x=[1:3],x=[3:7];x=[7:10])这样分段
发表于 2011-12-3 13:00:44 | 显示全部楼层 来自 日本
Simdroid开发平台
不一样,具体原因可以参考《数值方法》。
令附:
从x=[1:3],一共有3个点,最多可拟合出2次多项式,哪来的5次?
回复 不支持

使用道具 举报

 楼主| 发表于 2011-12-3 13:23:11 | 显示全部楼层 来自 四川成都
guojunhang 发表于 2011-12-3 13:00
不一样,具体原因可以参考《数值方法》。
令附:
从x=[1:3],一共有3个点,最多可拟合出2次多项式,哪来的5 ...

多谢指导~~  
x=[0:0.5:10];
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=[x1,x2,x3,x4];
y=[y1,y2,y3,y4];
set(gca,'YDir','reverse');
plot(y,x,'r')
plot(y,x,'r',y1,x1,'s',y2,x2,'d',y3,x3,'r*',y4,x4,'-+')

帮忙看看这个分段拟合有没有问题?谢谢
回复 不支持

使用道具 举报

 楼主| 发表于 2011-12-3 13:32:27 | 显示全部楼层 来自 四川成都
这个运行出来结果感觉分段拟合和一段拟合图像是重合的呢??求解释  谢谢
回复 不支持

使用道具 举报

发表于 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次多项式拟合,比较其差异。
回复 不支持

使用道具 举报

发表于 2011-12-3 21:18:01 | 显示全部楼层 来自 重庆
如果数据符合5次曲线用多少个数据结果都一样
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-7-8 05:38 , Processed in 0.028968 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表