Я создал матрицу 2x2 из матриц 2x2:
a = matrix([[matrix([[ 1, 2], [ 3, 4]]),
matrix([[ 5, 6], [ 7, 8]])],
[matrix([[ 9, 10], [11, 12]]),
matrix([[13, 14], [15, 16]])]])
Когда я умножаю его на число (например, введите 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
Итак, вот вопросы:
- почему написано, что умножение матриц 2х2 не поддерживается?
- почему это умножение появляется, когда я умножаю матрицу на скаляр?
- могу ли я умножить матрицу на скаляр без чита
diagonal_matrix
?
3*a
, так и дляa*3
- person Maksim Zholudev   schedule 01.01.2012