假设我有以下矩阵表达式:
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))
如果x
和y
是常规的SymPy符号,则将显示为-xy
。但是在这种情况下,它显示为x - y
。即使在替换矩阵值后它可以正确评估(即为-xy
),该演示也会很快变得模棱两可。如何使其正确显示?
未调用sympy.init_printing()
时,它将明确显示为x\*(-y)
。
我在Jupyter中使用它。
答案 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版本中。