我创建了一个 2x2 矩阵的 2x2 矩阵:
a = matrix([[matrix([[ 1, 2], [ 3, 4]]),
matrix([[ 5, 6], [ 7, 8]])],
[matrix([[ 9, 10], [11, 12]]),
matrix([[13, 14], [15, 16]])]])
当我按数字(例如 type a*3
)将其倍增时,会发生以下错误:
TypeError: unsupported operand parent(s) for '*':
'Full MatrixSpace of 2 by 2 dense matrices over Integer Ring' and
'Full MatrixSpace of 2 by 2 dense matrices over Integer Ring'
这看起来很奇怪,因为Full MatrixSpace of 2 by 2 dense matrices over Integer Ring
它是子矩阵 ( parent(a[0,0])
) 的父级,我可以毫无问题地将它们相乘:
sage: a[0,0]*a[0,0]
[ 7 10]
[15 22]
以下任何命令都可以正常工作:
sage: a[0,0]*3
sage: a[0,0]*a[0,0]
sage: a[0,0]*a
sage: a*a
sage: a[0,0]*3*a
sage: diagonal_matrix([3]*2)*a # I don't want do this every time!
但这些没有:
sage: a*3 #TypeError
sage: a[0,0]*a*3 #TypeError
所以这里有问题:
- 为什么它说不支持 2x2 矩阵的乘法?
- 当我将矩阵乘以标量时,为什么会出现这种乘法?
diagonal_matrix
我可以在没有作弊的情况下将矩阵乘以标量吗?