假设我有以下矩阵表达式:
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 中使用它。
最佳答案
这是 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因此不应出现在 1.3 以上的 SymPy 版本中。
关于python - 在 SymPy 中用 (-M) 替换矩阵 M 并明确显示它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53044835/