如何以编程方式猜测数学函数?
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 的变量。
我建议您使用您喜欢的语言寻找简单的方程求解器;其中大多数允许您指定所需的方程式。
我在二维数组中有一些数学函数的输入和输出,如下所示:
. . . . .
[[ 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 的变量。
我建议您使用您喜欢的语言寻找简单的方程求解器;其中大多数允许您指定所需的方程式。