拟合未知曲线[已关闭]

前端之家收集整理的这篇文章主要介绍了拟合未知曲线[已关闭]前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我遇到了一些相关的问题(如 this,this,thisthis),但他们都将数据拟合到已知的曲线上.有没有办法适应给定的数据到一个未知的曲线?我的意思是,给出一些数据,算法将给我一个适合,这是一个函数或一个函数的总和.我在C编程,但是我完全失去了如何使用 gsl软件包来做到这一点.我可以使用任何可以(理想情况下)通过C管道的东西.但是,对于什么方向我应该看的任何帮助将不胜感激.

编辑:这基本上是我收集的实验(物理)数据,所以数据将有一些趋势被加性高斯分布噪声修改.一般来说,这种趋势将是非线性的,所以我猜想线性回归拟合方法是不合适的.对于排序,数据是时间有序的,因此曲线必须以该顺序合适.

解决方法

您可能会在数值分析领域寻找 polynomial interpolation.

在多项式插值中 – 给定一组点(x,y) – 您正在尝试找到适合这些点的最佳多项式.一个方法是使用Newton interpolation,这是相当容易的程序.

广泛研究了细节中的数值分析和插值领域,您可能可以获得多项式误差的上限.

然而,请注意,因为您正在寻找最适合您的数据的多项式,并且该功能并不是真正的多项式 – 当远离您的初始训练集时,错误的规模就会爆发.

另外请注意,您的数据集是有限的,并且有数字(实际上是不可枚举的无穷大)的函数可以适合数据(完全或近似) – 所以最好的是哪一个可能特定于你的数据实际上正在努力实现.

如果您正在寻找一个适合您的数据的模型,请注意线性回归和多项式插值在尺度的相反端:多项式插值可能是过度拟合到模型,而线性回归可能不适合它,究竟应该如何使用的是具体情况,因应用而异.

简单多项式插值示例:

假设我们有(0,1),(1,2),(3,10)作为我们的数据.

我们使用牛顿法的table1是:

0  | 1 |                 |
1  | 2 | (2-1)/(1-0)=1   |
3  | 9 | (10-2)/(3-1)=4  | (4-1)/(3-0)=1

现在,我们得到的多项式是以最后一个元素结束的“对角线”:

1 + 1*(x-0) + 1*(x-0)(x-1) = 1 + x + x^2 - x = x^2 +1

(这对我们使用的数据确实是完美的)

(1)递归地创建表:前2列是x,y值,每个下一列都是基于先前的列.一旦你得到它真的很容易实现,完整的解释是在维基百科页面的牛顿插值.

猜你在找的C&C++相关文章