【问题标题】:Subsitute a matrix M by (-M) in SymPy and display it unambiguously在 SymPy 中用 (-M) 替换矩阵 M 并明确显示
【发布时间】:2018-10-29 11:45:35
【问题描述】:

假设我有以下矩阵表达式:

import sympy
sympy.init_printing(use_unicode=True)
x = sympy.MatrixSymbol('x', 2, 2)
y = sympy.MatrixSymbol('y', 2, 2)

a = x * y

我想用相同的矩阵乘以负一代替第二个矩阵:

a.subs(y, (-y))

如果 xy 是常规 SymPy 符号,则这将显示为 -xy。但在这种情况下,它显示为x - y。即使在替换矩阵值时它的评估正确(即-xy),这个演示很快就会变得模棱两可。如何让它正确显示?

sympy.init_printing()未被调用时,它会明确显示为x\*(-y)

我在 Jupyter 中使用它。

【问题讨论】:

    标签: python jupyter sympy


    【解决方案1】:

    这是 SymPy 的 LaTeX 打印机中的一个错误:它不认为 MatMul(Integer(-1), MatrixSymbol(...)) 在产品中需要括号。

    在修复错误之前,解决方法是使用“漂亮”打印而不是 LaTeX:

    sympy.init_printing(use_latex=False)
    

    导致x⋅(-y)。 Pretty-print 通常比 str 输出(如 x*(-y))更具可读性。


    The big is fixed in the current master branch,因此不应出现在 SymPy 1.3 以上的版本中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-06
      • 1970-01-01
      • 2017-03-07
      • 1970-01-01
      • 2020-09-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多