создание блочной матрицы в Maple

Я хотел бы создать матрицу, построенную из определенных подматриц. В частности, пусть $A,B,C,D$ являются матрицами $n \times n$ (возьмите $n=2$, если хотите). Я хочу определить $$ M = \left[ \begin{array}{cc} A & B \ C & D \end{array} \right] $$ Я не возражаю, если он будет "сплющен". На самом деле в реальной задаче имеется $n^2$ блоков из $n \times n$ матриц, каждый из которых является либо нулевой матрицей, либо одним из трех стандартных блоков. Но я задаю вопрос для этого простого блока, потому что я думаю, что смогу понять большую проблему, как только получу это. Должен ли я просто использовать «блок» старого пакета linalg?

Любые советы приветствуются.


person James S. Cook    schedule 11.10.2012    source источник


Ответы (1)


По-видимому, вы можете просто притвориться, что записи являются матрицами, и он интерпретирует их так, как вы, вероятно, захотите. Я очень рад всему этому:

Это именно то, что должно быть. Спасибо Биллу.

person James S. Cook    schedule 12.10.2012
comment
Да, именно поэтому подпрограммы stackmatrix, blockmatrix и augment ныне устаревшего пакета linalg не воспроизводятся в более новом пакете LinearAlgebra. Конструктор Matrix или его сокращенный синтаксис угловой скобки выполняет свою работу. Другой способ, эффективный для больших примеров и матриц типа данных float[8], состоит в том, чтобы сформировать пустую матрицу, а затем использовать ArrayTools:-BlockCopy. - person acer; 12.10.2012
comment
@acer Спасибо за комментарий, есть ли у вас какие-либо советы по символьным вычислениям, когда матрицы заполнены неизвестными функциями или даже дифференциальными операторами? Мы играли с командой Equal, но я не уверен, как двигаться дальше. - person James S. Cook; 16.10.2012