2013-10-30 51 views
2

是否存在一些算法,允许给定一组包含建立一个数学模型?生成模式的数学模型

我不知道我要问的是正确的......让我再试一次...

鉴于一些输入设置...

int Set[] = { 1, 4, 9, 16, 25, 36 }; 

是否存在一种算法,将能够推断出该集合中明显的模式吗?在这种情况下是...

Set[x] = x^2 

我能想到做这样的事情的唯一途径是一些地方GA健身是生成的模型是如何紧密地输入设置一致。

编辑:

我要补充一点,我的问题域意味着集的包容性。这意味着,我正在为该组找到最接近可能的功能,并且没有使用该功能来推断超出集合...

+1

我认为这会更好math.stackexchange.com –

+6

不,因为{1,4,9,16,25,36,-1,75,pi,...}是一样的“有效“一组为{1,4,9,16,25,36,49,...}。您需要知道您期望的封闭表单解决方案,然后尝试将其与给定集相匹配。 – mbeckish

+1

@mbeckish同意。对于上面提供的简单集合,您可以计算平方根并查看线性关系,或者计算反nth根等。还可以应用傅里叶变换并搜索峰值以确定是否存在周期性发生。如果没有任何有关您期望的模式类型的信息,您可以做的最好的方法是应用多种方法,并查看是否有任何提供有用的关联。 – DevNull

回答

3

curve fitting的问题可能是一个合理的开始寻找的地方。我不确定这是否正是您要查找的内容 - 它不会真正地识别该模式,因为它只是生成一个尽可能紧跟模式的函数。

正如其他人所提到的,简单的设置也很容易被无限多的这样的功能,所以这样的事情可能是你想要的东西,而不是正是你在你的问题已经描述。

维基百科似乎表明Gauss-Newton algorithmLevenberg–Marquardt algorithm可能是开始你的研究的好地方。

+3

我不认为这是OP所要求的。这很适合于一组数据的通用函数,但对于任何一般数据集,我们强制使用特定类型的函数来适合任意数据集。我认为OP在询问如何进行自动模式分析以确定序列的性质,而不必事先知道生成函数。 – DevNull

+1

我认为你是对的 - 尽管正如你和其他人所说的那样,他所做的描述完全是根本不可能的,所以这可能仍然是有趣的。 – CmdrMoozy

+0

好点。这确实指出了无限可能的答案,所以它是完全有效的。加一 :) – DevNull

3

的数学论证解释了为什么,在一般情况下,这是不可能的:

  • 只有可数,可以在所有的写了很多计算机程序。
  • 有无数的无限序列整数。
  • 因此,存在对于其中没有可能的计算机程序可以生成那些序列整数无限多的序列。

因此,这是不可能的在一般情况下。抱歉!

希望这会有所帮助!

2

如果你想知道,如果给定的数据适合一些多项式函数,你,直到你达到一个恒定的计算连续的差异。达到常数的差异数是多项式的次数。

x | 1  2  3  4 
y | 1  4  9 16 
y' |  3  5  7 
y" |   2  2 

因为y”为2,y”为2×+ C ,因此y是X + C X + C 。ç是0,自2 × 1.5 = 3. C 为0,因为1 = 1。所以,我们有y = x 。

因此,该算法是:

  • 以连续的差异。
  • 如果它不收敛到一个常数,或者求助于曲线拟合,或者报告数据不足以确定多项式。
  • 如果确实收敛于一个常数,迭代地整合多项式表达式并评估尾随常数直到达到该程度。