【发布时间】: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