假设在一个交感表达式中有许多非交换符号,比如
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中,有人说如果不替换符号,就无法改变符号的交换性,但是也许有一种简单的方法可以在这样的表达式中用块来改变所有的符号?
发布于 2018-01-16 15:32:38
如果希望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()
这是真实的。
发布于 2018-01-17 20:39:42
两项评论:
两者均如下所示:
>>> import sympy
>>> a, c = sympy.symbols('a c', commutative=False)
>>> b = sympy.Symbol('b')
>>> expr = a * c + b * c
>>> factor(expr)
(b + a)*c
>>> S(str(_))
c*(a + b)
https://stackoverflow.com/questions/48291209
复制相似问题