sympyを使用して、いくつかのシンボリック計算をPythonで実行しようとしています。したがって私はいくつかのスカラー記号と行列記号を定義します。しかし、コンソールの印刷出力はむしろ醜いので、もっとコンパクトにしたいと思っています。具体的には、スカラーシンボルdt
があります。このスカラーシンボルは、マトリックスFd
に接続されています。転記をFd
と印刷すると、dt
を含むエントリはtranspose(dt)
と表示されます。ここに私のコードです:シンボルがスカラーのときにsympy出力のシンボルの転置を抑制する
#!/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
が実際として認識されていますスカラーシンボル(したがって、転置は印刷されません)。誰かがこれを行う方法の手がかりを持っていますか?
、設定は '複雑= true'には、それが動作します。これは望ましくない動作のようです。私は[問題を開いた](https://github.com/sympy/sympy/issues/10959)。 – asmeurer