如何以编程方式猜测数学函数?

How to guess a math function programmatically?

我在二维数组中有一些数学函数的输入和输出,如下所示:

. . . . .
[[  3,  2, -2,  3, -2 ],  5]
[[  0,  0,  1, -1, -1 ],  1]
[[  2,  2,  1,  2, -3 ],  1]
[[ -1,  0,  2,  2,  1 ],  3]
. . . . .

我想了解这个功能是什么。它肯定会对输入进行一些算术运算,所以我可以做类似的事情(这里是伪代码:)

while(true){
    newExpr = constructNextExpression(
        add, sub, mul, div, 
        Lparan, Rparan, sqr, sqrt, 
        a, b, c, d, e, result
    )
    found = true
    for (values in valueArray){
        if(eval(newExpr(values) == false)) {
            found = false
            break
        }        
    }
    if(found) return newExpr
}

但这对我来说似乎是蛮力,所以我不确定我是否应该采用这种方法。还有哪些其他可能更明智的方法?

如果范例具有足够的灵活性 特异性,这是可以解决的。

对于初学者,您可以拟合 任何N 个点,总次数不超过 N 的多项式;您可以 fiddle 使用您的方程参数来实现每个变量的所需程度。最熟悉的例子是 N 变量中的 N 方程,通常可以通过简单的线性矩阵运算求解(没有等价或不一致的线性方程),产生每个 N 阶数为 1 的变量。

我建议您使用您喜欢的语言寻找简单的方程求解器;其中大多数允许您指定所需的方程式。