首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使所有符号在交感表达式中互为交换。

使所有符号在交感表达式中互为交换。
EN

Stack Overflow用户
提问于 2018-01-16 15:02:09
回答 2查看 645关注 0票数 2

假设在一个交感表达式中有许多非交换符号,比如

代码语言:javascript
运行
AI代码解释
复制
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中,有人说如果不替换符号,就无法改变符号的交换性,但是也许有一种简单的方法可以在这样的表达式中用块来改变所有的符号?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-16 15:32:38

如果希望Eq(expr, c * (a + b))计算为True,则需要用其他通勤符号替换符号。例如:

代码语言:javascript
运行
AI代码解释
复制
replacements = {s: sympy.Dummy(s.name) for s in expr.free_symbols}
sympy.Eq(expr, c * (a + b)).xreplace(replacements).simplify()

这是真实的。

票数 5
EN

Stack Overflow用户

发布于 2018-01-17 20:39:42

两项评论:

  1. 非交换项将考虑因素(尽管他们尊重nc费用出现在其上的一方)
  2. 虽然您有一个健壮的答案,但一个通常足够好的简单答案就是表示表达式的字符串版本。

两者均如下所示:

代码语言:javascript
运行
AI代码解释
复制
>>> 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)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48291209

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档