用SymPy中的(-M)替换矩阵M并明确显示

时间:2018-10-29 11:45:35

标签: python jupyter sympy

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

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中使用它。

1 个答案:

答案 0 :(得分:0)

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

在修复该错误之前,一种解决方法是使用“漂亮的”打印代替LaTeX:

sympy.init_printing(use_latex=False)

产生x⋅(-y)。与str之类的x*(-y)输出相比,漂亮的打印通常更具可读性。


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