假设你在一个 sympy 表达式中有许多不可交换的符号,比如
a, c = sympy.symbols('a c', commutative=False)
b = sympy.Symbol('b')
expr = a * c + b * c
使表达式中的所有符号都可交换的首选方法是什么,例如,sympy.simplify(allcommutative(expr)) = c * (a + b)
?
在this answer据说如果不替换符号就无法在创建后更改符号的交换性,但也许有一种简单的方法可以像这样在 block 中更改表达式的所有符号?
最佳答案
如果您希望 Eq(expr, c * (a + b))
的计算结果为 True,您需要将符号替换为其他可交换的符号。例如:
replacements = {s: sympy.Dummy(s.name) for s in expr.free_symbols}
sympy.Eq(expr, c * (a + b)).xreplace(replacements).simplify()
这将返回 True。
关于python - 使所有符号在 sympy 表达式中可交换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48291209/