同情非平凡的替代

时间:2017-08-01 20:28:10

标签: python sympy

我试图在同意中进行一些替换,但它们通常不是x=1等形式。更像是(a+b)/(c+d)=1。我可以选择一个任意变量来解决,但是存在可能产生无限解的情况,可能产生无限可能的替换,以及任何其他未知的未知警告,当直接替换时不会。

为了说明我想要做的事,请考虑:

sympy

这显然只是1。如何为此输出1

更新

这也不起作用:

sp.solvers.solve([(a+b)/(c+d)-x,(c+d)/(a+b)-1],x)

1 个答案:

答案 0 :(得分:1)

解决为两个变量设置的系统,而不仅仅是一个。这将迫使SymPy实际使用这两个方程式。

sp.solve([(a+b)/(c+d) - x, (c+d)/(a+b) - 1], [x, a])

输出{a: -b + c + d, x: 1}

或者更具体地说,

sp.solvers.solve([(a+b)/(c+d) - x, (c+d)/(a+b) - 1], [x, a])[x]

输出1。

通常,上述过程是“消除a”,但在具体示例中,它同时消除了b,c,d。

  

直接替换不会

直接替换意味着替换表达式树的一部分。表达式(a + b)/(c + d)在其树中的任何地方都包含(c + d)/(a + b),因此没有任何直接替换可以做到的事情。