如何使用已知值迭代方程的答案



我不知道如何或从哪里开始,我需要一些词汇或术语来进行研究,所以让我们向社区询问。

问题:我有一个值X,它是这个方程的最终答案。我有一系列的值,比方说10(a-J(,这些值将用于方程中。使用简单的计算(+,-,*,/,((,^(来形成一个方程,该方程使用A-J的部分或全部值来将方程求解为X值。

示例:A^2+B*C+(D+E+F+G(*J+30=X

输入:最终值X,方程中使用的值,方程中要使用的最大值数,这意味着我想在方程中至少使用Z个给定值(在示例中Z=8(

输出:用给定值求解的方程

例如,这可以转换成python脚本吗?这样计算有可能吗?描述这种计算的术语是什么?

如果我正确理解问题:

您正在寻找的算法输出一个数学函数,以及特定值,当应用于该函数时,为您提供任意值x的输入值x。

总的来说,我认为这是不可能的。从非确定性的角度来看,这可能是可能的,你可以尝试猜测值,但从算法或计算的角度来看这通常是不可行的。

  1. 让我们首先将函数限制为一个变量。找到一个给你一个值x的函数,对于某个值a,即f(a(=x,与要求f(a(-x=0是一样的。

  2. 将运算限制为+,-,*,我们看到f(a(是一个多项式。

  3. 以这种方式限制问题将解决方案与代数数可构造数罗瓦理论

  4. 可以找到给定输入值x的多项式IF,并且只有IF输入值x是代数的。你可以生成一个简单的算法,它取x的幂,直到x的幂是整数(或有理数(。

  5. 你可以生成一个简单的算法,它取x的无理部分的幂,直到x的幂是整数(或有理数(。请注意,即使在这种算法中,您也需要考虑某种测量误差,因为sqrt(2(=1.41421356237…对于无穷多的小数位数,计算机只能跟踪某些有限的小数位数。例如:

def sqrt(x):
return x**(1/2)
if __name__ == "__main__":
num = sqrt(2)
print(num)
print(num**2)

将输出:

1.4142135623730951
2.0000000000000004
  1. 所以这样一个简单算法的输出永远不会100%正确。人类有可能做到这一点,但计算机没有。你可能想研究符号计算领域,但即使是解决部分问题的算法也不容易转化为脚本
  2. 如果您可以100%不解决这个问题,您可能需要研究线性近似非线性近似

即使没有测量错误,我认为这在一般情况下也是不可能的,原因是添加运算(^,/(可能不会产生多项式环。这是解决代数数相关问题的基础。

引入额外变量b、c,。。。。,n到f,使得f(a,b,c,…,n,…(=x也将限制什么函数将满足的性质。

无论如何,这个问题是困难的,即使只考虑一个变量的多项式。在谷歌上用粗体搜索这些术语可能有助于进一步了解您的问题。很抱歉,如果其中一些对你来说已经很明显了,无论如何,我希望这会有所帮助!

最新更新