我试图在 sympy 中进行一些替换,但它们通常不是 x=1
等形式。更像 (a+b)/(c+d)= 1.
.我可以选择一个任意变量来求解,但在某些情况下,这可能会产生无限的解决方案,可能会产生无限可能的替换,以及任何其他未知的未知警告,而直接替换则不会。
为了说明我正在尝试做的事情,请考虑:
这显然只是1
。我如何让 sympy 输出 1
?
更新
这也不起作用:
sp.solvers.solve([(a+b)/(c+d)-x,(c+d)/(a+b)-1],x)
求解您为两个变量而不是一个变量设置的系统。这将迫使 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。
<小时/>
direct replacement would not
直接替换是指替换表达式树的一部分。表达式 (a+b)/(c+d) 在其树中的任何位置不包含 (c+d)/(a+b),因此直接替换无法执行任何操作。
我是一名优秀的程序员,十分优秀!