简短的答案是:您要的是不可能的。
您正在寻找的是一种通常与曲线拟合有关的算法。对于此特定问题,一种可能的方法是Lagrange多项式。
但是请注意,通常来说,您想要的东西可能没有真正的解决方案。例如,考虑以下简单序列:
2, 4, 6, 8, 10, 12, 14。接下来的几个数字是什么?
您可能会说答案是
16, 18, 20依此类推,因为您使用方程式
f(n) = 2*nwhere
n是项的位置(从1开始)。
请注意,形式的等式是无限的:
f(n) = [(n-1)*(n-2)*(n-3)*(n-4)*(n-5)*(n-6)*(n-7) * g(n)] + 2*n
第二项对产生正确的值,
n = 1..7而第一项
0仅对的那些值产生a
n。因此,您可以为
g(n)第一项中的最后一个乘数选择任何函数(具有有限范围),并从
n=8开始获取所需的任何值。
例如,对于
g(n) = 20*n,
f(n) = (n-1)*(n-2)*(n-3)*(n-4)*(n-5)*(n-6)*(n-7) * 20 * n + 2*n
将产生一个列表:
2, 4, 6, 8, 10, 12, 14, 806416
因此,您指出的问题是无法解决的。
但是,如果表征算法的形式(或表征要使用的函数族来解决问题),则可以获得最适合数字的函数。例如,您可以说它
f(n)是阶数的多项式
1(线性方程式),它将减少可能性的数量并给您
f(n)= 2 * n。这些方法中的某些方法传统上用于机器学习,尤其是线性回归和逻辑回归。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)