请教数学高手:计算机自动拟合直线.详细看问题补充
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/12 05:55:01
请教数学高手:计算机自动拟合直线.详细看问题补充
请教各位高手:
如果我有30组数据,这30组数据前10组或者前15组是呈线性的规律,后面变化偏于平滑.图线大致如下图所示
我想找到这些数据拟合呈直线的规律,就是如何让其线性更好自动剔除不成线性的点.如果前面有线性的区域出现一两个远离线性关系的点的话又如何来进行拟合呢.就跟人工的画线法自动去除点一样的道理如何用软件实现呢?
请教各位高手:
如果我有30组数据,这30组数据前10组或者前15组是呈线性的规律,后面变化偏于平滑.图线大致如下图所示
我想找到这些数据拟合呈直线的规律,就是如何让其线性更好自动剔除不成线性的点.如果前面有线性的区域出现一两个远离线性关系的点的话又如何来进行拟合呢.就跟人工的画线法自动去除点一样的道理如何用软件实现呢?
碰到具体的问题总是有点办法的,但是一定要有足够多的信息,才能设计相应的对策.
比如你这里的问题,根据你的叙述我就假定以下的条件:
1.事先知道变化规律一定像图中那样是先近似线性然后有一定衰减
2.事先不知道从何处开始远离线性规律(否则已经可以自动过滤横坐标偏大的点了)
3.目标是拟合出前一段的线性部分,忽略后面那些偏离的
那么可以这样来做
首先根据30个点拟合一条直线,并记录下平均残量R(30)/30 = ||Ax-b||/30.
然后从最右边开始依次删除数据点,比如用29点拟合,再用28点拟合,……,每一步计算一下平均残量.
当取前k-1个点的平均残量R(k-1)/(k-1)对取前k个点的平均残量R(k)/k没有显著改进的时候停止.至于“显著改进”的标准就要自己视情况而定了,比如说 [R(k-1)/(k-1)] / [R(k)/k] < 0.95
这样就可以在算法停止的时候根据前k个点的数据来得到拟合结果,即使前面的区域有个别大的偏差点影响也不会太大.
当然,这只是一种方案给你参考,你可以根据自己的需求去修改.这类问题不要指望算法能有人那样智能,因为很难把人知道的信息全都融入到算法中,而且有时数据本身会比较差,没有什么万能办法.
比如你这里的问题,根据你的叙述我就假定以下的条件:
1.事先知道变化规律一定像图中那样是先近似线性然后有一定衰减
2.事先不知道从何处开始远离线性规律(否则已经可以自动过滤横坐标偏大的点了)
3.目标是拟合出前一段的线性部分,忽略后面那些偏离的
那么可以这样来做
首先根据30个点拟合一条直线,并记录下平均残量R(30)/30 = ||Ax-b||/30.
然后从最右边开始依次删除数据点,比如用29点拟合,再用28点拟合,……,每一步计算一下平均残量.
当取前k-1个点的平均残量R(k-1)/(k-1)对取前k个点的平均残量R(k)/k没有显著改进的时候停止.至于“显著改进”的标准就要自己视情况而定了,比如说 [R(k-1)/(k-1)] / [R(k)/k] < 0.95
这样就可以在算法停止的时候根据前k个点的数据来得到拟合结果,即使前面的区域有个别大的偏差点影响也不会太大.
当然,这只是一种方案给你参考,你可以根据自己的需求去修改.这类问题不要指望算法能有人那样智能,因为很难把人知道的信息全都融入到算法中,而且有时数据本身会比较差,没有什么万能办法.