【问题标题】:Suppress the transpose of a symbol in sympy output when the symbol is a scalar当符号是标量时,在 sympy 输出中抑制符号的转置
【发布时间】:2016-07-21 02:22:12
【问题描述】:

我正在尝试使用 sympy 在 python 中进行一些符号计算。因此,我定义了一些标量和矩阵符号。但是,控制台中的打印输出看起来相当难看,我想让它更紧凑。更具体地说,我有一个标量符号dt,它插入到矩阵Fd 中。如果我打印Fd 的转置,包含dt 的条目将打印为transpose(dt)。这是我的代码:

#!/usr/bin/python
from sympy import *

dt = Symbol('dt')

A = MatrixSymbol('A',3,3)
B = MatrixSymbol('B',3,3)
C = MatrixSymbol('C',3,3)
D = MatrixSymbol('D',3,3)
E = MatrixSymbol('E',3,3)
F = MatrixSymbol('F',3,3)
Ct = MatrixSymbol('Ct',3,3)
I = Identity(3)
O = ZeroMatrix(3,3 )

Fd = BlockMatrix([[I, dt*I, A, B, -Ct*(dt*dt)/2], [O, I, C, D, -Ct*dt], [O, O, E, F, O], [O, O, O, I, O], [O, O, O, O, I]])
print "======================="
print "Fd = "
print Fd
print "======================="

Fdt = Fd.T
print "======================="
print "Fdt = "
print Fdt
print "======================="

这是输出:

=======================
Fd = 
Matrix([
[I, dt*I, A, B, (-dt**2/2)*Ct],
[0,    I, C, D,      (-dt)*Ct],
[0,    0, E, F,             0],
[0,    0, 0, I,             0],
[0,    0, 0, 0,             I]])
=======================
=======================
Fdt = 
Matrix([
[                        I,                    0,  0, 0, 0],
[                  (dt*I)',                    I,  0, 0, 0],
[                       A',                   C', E', 0, 0],
[                       B',                   D', F', I, 0],
[(-transpose(dt)**2/2)*Ct', (-transpose(dt))*Ct',  0, 0, I]])
=======================

我想要一个更紧凑的输出(因为我会做更多的矩阵乘法),其中dt 实际上被识别为标量符号(因此不打印转置)。有人知道如何做到这一点吗?

【问题讨论】:

    标签: python matrix sympy symbolic-math


    【解决方案1】:

    确实,一个通用的 sympy 对象并不等于它的转置。如果您希望 dt 被视为实数或复数标量,请将其声明为:

    dt = Symbol('dt', real=True)
    

    dt = Symbol('dt', complex=True)
    

    那么您将在输出中使用dt 而不是transpose(dt)

    参考:assumptions

    【讨论】:

    • 确实,设置complex=True 使其工作。这似乎是不受欢迎的行为。我为它opened an issue
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    • 1970-01-01
    • 2013-11-02
    • 2020-10-25
    • 2020-12-23
    • 2019-11-11
    相关资源
    最近更新 更多