Блочная матрица

Эта статья находится на начальном уровне проработки, в одной из её версий выборочно используется текст из источника, распространяемого под свободной лицензией
Материал из энциклопедии Руниверсалис
(перенаправлено с «Блочно-диагональная матрица»)

Бло́чная (кле́точная) ма́трица — представление матрицы, при котором она рассекается вертикальными и горизонтальными линиями на прямоугольные части — блоки (клетки):

[math]\displaystyle{ \mathbf{A} = \begin{bmatrix} \mathbf{A}_{11} & \mathbf{A}_{12} & \cdots &\mathbf{A}_{1t}\\ \mathbf{A}_{21} & \mathbf{A}_{22} & \cdots &\mathbf{A}_{2t}\\ \vdots & \vdots & \ddots &\vdots \\ \mathbf{A}_{s1} & \mathbf{A}_{s2} & \cdots &\mathbf{A}_{st}\end{bmatrix} }[/math],

где блок [math]\displaystyle{ \mathbf{A}_{\alpha\beta} }[/math] имеет размер [math]\displaystyle{ m_\alpha \times n_\beta }[/math] для [math]\displaystyle{ \alpha = 1, 2,\dots, s }[/math] и [math]\displaystyle{ \beta = 1, 2,\dots, t }[/math]

Пример

Матрица размера 4×4

[math]\displaystyle{ \mathbf{P} = \begin{bmatrix} 1 & 1 & 2 & 2\\ 1 & 1 & 2 & 2\\ 3 & 3 & 4 & 4\\ 3 & 3 & 4 & 4\end{bmatrix} }[/math]

может быть представлена в виде блочной матрицы из четырёх блоков размера 2×2 каждый.

При следующем определении блоков

[math]\displaystyle{ \mathbf{P}_{11} = \begin{bmatrix} 1 & 1 \\ 1 & 1 \end{bmatrix}, \mathbf{P}_{12} = \begin{bmatrix} 2 & 2\\ 2 & 2\end{bmatrix}, \mathbf{P}_{21} = \begin{bmatrix} 3 & 3 \\ 3 & 3 \end{bmatrix}, \mathbf{P}_{22} = \begin{bmatrix} 4 & 4\\ 4 & 4\end{bmatrix} }[/math]

блочная матрица может быть записана в таком виде:

[math]\displaystyle{ \mathbf{P} = \begin{bmatrix} \mathbf{P}_{11} & \mathbf{P}_{12}\\ \mathbf{P}_{21} & \mathbf{P}_{22}\end{bmatrix}. }[/math]

Операции

Формально операции с блочными матрицами производятся по тем же правилам, как если бы на месте блоков были числовые элементы. Для выполнимости операций необходимо соответствующее согласование размеров блоков. Например, при умножении блочных матриц требуется, чтобы горизонтальные размеры блоков первого сомножителя совпадали с соответствующими вертикальными размерами второго сомножителя[1].

Прямая сумма

Прямая сумма двух квадратных матриц [math]\displaystyle{ \mathbf{A} }[/math] и [math]\displaystyle{ \mathbf{B} }[/math] размеров [math]\displaystyle{ m \times m }[/math] и [math]\displaystyle{ n \times n }[/math] определяется как блочная матрица следующего вида:

[math]\displaystyle{ \mathbf{A} \oplus \mathbf{B} = \begin{bmatrix} \mathbf{A} & \mathbf{0}\\ \mathbf{0} & \mathbf{B}\end{bmatrix} }[/math]

где [math]\displaystyle{ \mathbf{0} }[/math] обозначает нулевой блок(нулевую матрицу типа [math]\displaystyle{ m \times n }[/math] вверху и [math]\displaystyle{ n \times m }[/math] внизу). Эта операция некоммутативна, но ассоциативна[2].

Виды блочных матриц

Многие виды матриц могут быть представлены в блочном виде. В этом случае к названию добавляется приставка блочно- или блочная, а операции над элементами трансформируются в операции над блоками.

Блочно-диагональная (квазидиагональная) матрица

У блочно-диагональной матрицы все блоки, кроме расположенных на главной диагонали, являются нулевыми матрицами.

Матрица выглядит, как

[math]\displaystyle{ \mathbf{A} = \begin{bmatrix} \mathbf{A}_{1} & 0 & \cdots & 0 \\ 0 & \mathbf{A}_{2} & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \mathbf{A}_{n} \end{bmatrix}, }[/math]

где каждый элемент [math]\displaystyle{ \mathbf{A}_k }[/math] является ненулевой матрицей.

Определитель квадратной квазидиагональной матрицы равен произведению определителей диагональных клеток.

Квазитреугольная матрица

Квазитреугольной называется блочная квадратная матрица [math]\displaystyle{ \mathbf{A} }[/math] у которой блоки [math]\displaystyle{ \mathbf{A}_{ij} = 0 }[/math] при [math]\displaystyle{ i\gt j }[/math] (или [math]\displaystyle{ i\lt j }[/math]):

[math]\displaystyle{ \mathbf{A} = \begin{bmatrix} \mathbf{A}_{11} & \mathbf{A}_{12} & \cdots & \mathbf{A}_{1n} \\ 0 & \mathbf{A}_{22} & \cdots & \mathbf{A}_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \mathbf{A}_{nn} \end{bmatrix} }[/math].

Определитель квазитреугольной матрицы равен произведению определителей диагональных блоков. Легко заметить, что блочно-диагональная матрица является частным случаем квазитреугольной[3].

Блочно-трёхдиагональная матрица

См. также трёхдиагональная матрица.

Блочно-теплицева матрица

См. также матрица Тёплица.

Блочное умножение матриц

С целью повышения эффективности использования кэш-памяти CPU существует алгоритм блочного умножения матриц

[math]\displaystyle{ C=AB=\left[ \begin{array}{ccccc} A_{11} & A_{12} & ... & A_{1n} \\ A_{21} & A_{22} & ... & A_{2n} \\ ... & ... & ... & ... \\ A_{n1} & A_{n2} & ... & A_{nn} \\ \end{array} \right] \times \left[ \begin{array}{ccccc} B_{11} & B_{12} & ... & B_{1n} \\ B_{21} & B_{22} & ... & B_{2n} \\ ... & ... & ... & ... \\ B_{n1} & B_{n2} & ... & B_{nn} \\ \end{array} \right] }[/math],

в котором результирующая матрица

[math]\displaystyle{ C=\left[ \begin{array}{ccccc} C_{11} & C_{12} & ... & C_{1n} \\ C_{21} & C_{22} & ... & C_{2n} \\ ... & ... & ... & ... \\ C_{n1} & C_{n2} & ... & C_{nn} \\ \end{array} \right] }[/math]

формируется поблочно с использованием известной формулы

[math]\displaystyle{ C_{ij}=\sum_{k=1}^{n} A_{ik} \times B_{kj} }[/math]

либо её более быстрых аналогов, а размер обрабатываемых данных на каждой итерации не превышает ёмкость кэш-памяти. Размер блока напрямую зависит от архитектуры вычислительной системы и определяет время выполнения умножения[4]. Аналогичный подход применяется при умножении матриц с использованием GPU с оптимизацией использования разделяемой памяти ограниченного объёма[5][6].

Формулы

Формула Фробениуса

Для обращения невырожденной блочной матрицы может использоваться формула Фробениуса:

[math]\displaystyle{ \left[\begin{array}{ccccc} A & B \\ C & D \\ \end{array}\right]^{-1} = \left[\begin{array}{ccccc} A^{-1} +A^{-1} BH^{-1} CA^{-1} & -A^{-1} BH^{-1} \\ -H^{-1} CA^{-1} & H^{-1} \\ \end{array}\right], }[/math]

где [math]\displaystyle{ A }[/math] — невырожденная квадратная матрица размера [math]\displaystyle{ m_1\times m_1 }[/math], [math]\displaystyle{ D }[/math] — квадратная матрица размера [math]\displaystyle{ m_2\times m_2 }[/math] и [math]\displaystyle{ H=D-CA^{-1} B }[/math].

Эта формула позволяет свести обращение матрицы размера [math]\displaystyle{ (m_1+m_2)\times (m_1+m_2) }[/math] к обращению двух матриц меньшего размера [math]\displaystyle{ m_1\times m_1 }[/math] и [math]\displaystyle{ m_2\times m_2 }[/math] и операциям умножения и сложения матриц размеров [math]\displaystyle{ m_1\times m_1 }[/math], [math]\displaystyle{ m_2\times m_2 }[/math], [math]\displaystyle{ m_1\times m_2 }[/math], [math]\displaystyle{ m_2\times m_1 }[/math][7].

Примечания

  1. Гантмахер, 2004, с. 53—54.
  2. Ильин, Позняк, 2007, с. 18.
  3. Гантмахер, 2004, с. 55.
  4. Ватутин Э. И., Мартынов И. А., Титов В. С.  Оценка реальной производительности современных процессоров в задаче умножения матриц для однопоточной программной реализации Архивная копия от 11 января 2015 на Wayback Machine // Известия Юго-Западного государственного университета. Серия: Управление, вычислительная техника, информатика. Медицинское приборостроение. 2013. № 4. — С. 11—20.
  5. Ватутин Э. И., Мартынов И. А., Титов В. С.  Оценка реальной производительности современных видеокарт с поддержкой технологии CUDA в задаче умножения матриц Архивная копия от 11 января 2015 на Wayback Machine // Известия Юго-Западного государственного университета. Серия: Управление, вычислительная техника, информатика. Медицинское приборостроение. 2014. № 2. — С. 8—17.
  6. Параллельные вычисления на GPU. Архитектура и программная модель CUDA / Боресков А. В., Харламов А. А. Марковский Н. Д. и др. — М.: Изд-во Моск. ун-та, 2012. — 336 с.
  7. Гантмахер, 2004, с. 57—58.

Литература