生成模式的数学模型

时间:2013-10-30 20:44:59

标签: algorithm math

是否存在一些允许在给定包含集合的情况下创建数学模型的算法?

我不确定我是否正确地问过......让我再试一次......

给定一些输入集......

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

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

Set[x] = x^2

我能想到做这样的事情的唯一方法是一些GA,其中适应性是生成的模型与输入集的匹配程度。

编辑:

我应该补充一点,我的问题域意味着该集合具有包容性。意思是,我找到了该集合最接近的可能函数,并且没有使用该函数来推断超出集合...

3 个答案:

答案 0 :(得分:3)

curve fitting的问题可能是开始寻找的合理位置。我不确定这是否正是你正在寻找的 - 它不会真正识别模式,只是产生一个尽可能接近模式的函数。

正如其他人所提到的,对于一个简单的集合,很容易就会有无数的这样的函数,所以这样的东西可能就是你想要的,而不是你在问题中所描述的那样。

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

答案 1 :(得分:3)

一个数学论证,解释了为什么一般来说这是不可能的:

  • 根本无法编写很多计算机程序。
  • 有无数个无限的整数序列。
  • 因此,有无限多个整数序列,没有可能的计算机程序可以生成这些序列。
因此,在一般情况下这是不可能的。遗憾!

希望这有帮助!

答案 2 :(得分:2)

如果您想知道给定数据是否适合某些多项式函数,您可以计算连续差异,直到达到常数。达到常数的差异数是多项式的次数。

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

由于y“是2,y'是2x + C 1 ,因此y是x 2 + C 1 x + C 2 .C 1 为0,因为2×1.5 = 3.C 2 为0,因为1 2 =所以,我们有y = x 2

所以,算法是:

  • 接连不断。
  • 如果它没有收敛到常数,要么求助于曲线拟合,要么报告数据不足以确定多项式。
  • 如果它收敛到一个常数,则迭代地积分多项式表达式并评估尾随常数,直到达到该程度。