【发布时间】:2017-03-24 22:54:22
【问题描述】:
我正在使用 sympy (python 3.6, sympy 1.0) 来促进数学证明中矩阵变换的计算。
为了计算舒尔补码,需要对由符号矩阵组成的块矩阵进行切片。
作为直接寻址矩阵:
M[0:1,1]
不工作我试过 sympy.matrices.expressions.blockmatrix.blocks 不幸的是 blocks 在处理一系列块时弄乱了矩阵的维度:
from sympy import *
n = Symbol('n')
Aj = MatrixSymbol('Aj', n,n)
M = BlockMatrix([[Aj, Aj],[Aj, Aj]])
M1 = M.blocks[0:1,0:1]
M2 = M.blocks[0,0]
print(M1.shape)
print(M2.shape)
M.blocks 为矩阵 M1 返回一个维数为 1,1 的矩阵,而矩阵 M2 的右维数为 n,n。
在使用间隔时如何获得正确的尺寸有什么建议吗?
【问题讨论】:
-
如果您认为
(1, 1)与M1的形状不符,您可能需要查看M.shape,看看您是否也觉得它有误。 -
我想你也许可以在
M1上再次调用BlockMatrix来获得一个块矩阵,假设你仍然想要一个块矩阵。 -
M.shape 返回 (2*n, 2*n) 这是预期结果,因为 M 是 4 个 (2x2) 维度为 n 的矩阵的结果 BlockMatrix(M1) 返回正确的结果,可以你解释一下为什么?