【问题标题】:Python how to get function formula given it's inputs and resultsPython如何在给定输入和结果的情况下获取函数公式
【发布时间】:2016-08-01 07:22:44
【问题描述】:

假设我们有一个公式未知的函数,给定这个函数的输入和结果很少,我们如何得到函数的公式。

例如,我们有输入 x 和 y,结果 r 格式为 (x,y,r)

[ (2,4,8) , (3,6,18) ]

而想要的功能可以是

f(x,y) = x * y

【问题讨论】:

  • 尝试使用一些遗传算法来进化语法搜索所需的公式;)
  • 如果满足的公式数不胜数怎么办?
  • 如果你解决了这个问题,我想会有 1 亿人感兴趣。
  • 这不就是一个方程组吗?也许你应该参加线性代数或微分方程课程。无论如何,这不值得一个python标签
  • @sinabakh 仍然不可能。

标签: python algorithm math interpolation


【解决方案1】:

当您发布问题时,问题太笼统了。如果您想找到将给定输入映射到给定结果的 任何 公式,那么可能的公式太多了。为了理解这一点,您需要以某种方式限制要考虑的函数集。例如,您可以说您只对多项式解决方案感兴趣,即哪里

r = sum a_ij * x^i * y^j for i from 0 to n and j from 0 to n - i

然后你有一个方程组,a_ij 作为参数来求解。 n 的度数越高,您必须找到的此类参数就越多,因此您需要了解的输入输出组合就越多。它的变体使用有理函数(所以你除以另一个多项式),或者允许一些三角函数,或类似的东西。

如果您的设置特别简单,您将只有线性方程,即r = a*x + b*y + c。如您所见,即使它具有三个参数a,b,c,所以您无法仅在给定您在问题中提供的两个输入的情况下唯一地找到所有三个参数。即便如此,结果也不会是您想要的 r = x*y,因为从技术上讲,这是 2 级。

如果您想指出r = x*y 是一个特别简单的公式,并且您想寻找简单的公式,那么一种方法是按复杂度递增的顺序列举公式。但是如果你在没有参数的情况下这样做(因为丑陋的参数会使像a*x + b*y + c 这样的简单公式看起来很复杂),那么很难将这个枚举引导到你想要的那个,所以你真的必须枚举所有可能的公式,这很快就会非常变得不可行。

【讨论】:

    猜你喜欢
    • 2011-03-08
    • 1970-01-01
    • 2021-03-22
    • 2020-01-16
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多