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

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

最佳答案

这是 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/

相关文章:

module - 使用 IPython/Jupyter 开发 Julia 模块的良好工作流程是什么?

获取列表中最大项目的 Pythonic 方法

ipython - 添加用于向上移动单元格和向下移动单元格的键盘快捷键

ipython - Jupyterhub终端路径变量

Octave 4.2.2 和 sympy 1.6

python - 为什么 sympy.arg() 函数没有返回预期的输出?

python - pretty-print sympy 数组

python - 使用 python readline 时如何获取(和设置)当前 bash 光标位置?

python - 如何将 Python 程序的标准输出移至文件?

Python TimedRotatingFileHandler 覆盖日志