Доступ к различным блокам (подматрицам) символьной блочной матрицы в SymPy - PullRequest
0 голосов
/ 05 сентября 2018

Я новичок в Python.

Интересно, есть ли способ получить доступ к различным элементам символьной блочной матрицы с помощью модуля sympy.

Например, я сгенерировал следующий код, я хотел бы видеть C_11+C_12 с помощью C[0], но вместо этого я вижу C_11[0, 0] + C_13[0, 0]

from sympy import *


C_11 = MatrixSymbol('C_11', 5, 5)

C_12 = MatrixSymbol('C_12', 5, 3)

C_13 = MatrixSymbol('C_13', 5, 5)

C_21 = C_12.T 

C_22 = MatrixSymbol('C_22', 3, 3)

C_23 = MatrixSymbol('C_23', 3, 5)

C_31 = C_13.T

C_32 = C_23.T

C_33 = MatrixSymbol('C_33', 5, 5)

C = BlockMatrix([[C_11+C_13, C_12, C_13],
                 [C_21, C_22, C_23],
                 [C_31, C_32, C_33]])

C

C[0]

1 Ответ

0 голосов
/ 05 сентября 2018

Доступ к блоку (i, j) блочной матрицы C осуществляется с помощью C.blocks[i, j]. Пример:

from sympy import *
b = Matrix([1, 2, 4, 8])
C = BlockMatrix([[b, 3*b], [5*b, 7*b]])
print(C.blocks[0, 1])

отпечатки Matrix([[3], [6], [12], [24]]).

Другие потенциально полезные свойства объектов BlockMatrix можно найти, прочитав source . Не все из них упомянуты в документации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...