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

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

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


\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},

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

Пример[править | править вики-текст]

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

\mathbf{P} = \begin{bmatrix}
1 & 1 & 2 & 2\\
1 & 1 & 2 & 2\\
3 & 3 & 4 & 4\\
3 & 3 & 4 & 4\end{bmatrix}

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

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

\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}

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

\mathbf{P} = \begin{bmatrix}
\mathbf{P}_{11} & \mathbf{P}_{12}\\
\mathbf{P}_{21} & \mathbf{P}_{22}\end{bmatrix}.

Операции[править | править вики-текст]

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

Прямая сумма[править | править вики-текст]

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

\mathbf{A} \oplus \mathbf{B} = \begin{bmatrix}
\mathbf{A} & \mathbf{0}\\
\mathbf{0} & \mathbf{B}\end{bmatrix}

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

Виды блочных матриц[править | править вики-текст]

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

Блочно-диагональная (квазидиагональная) матрица[править | править вики-текст]

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

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

 
\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},

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

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

Квазитреугольная матрица[править | править вики-текст]

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

 
\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}
.

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

Блочно-трёхдиагональная матрица[править | править вики-текст]

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

Блочно-теплицева матрица[править | править вики-текст]

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

Блочное умножение матриц[править | править вики-текст]

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

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],

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

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]

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

C_{ij}=\sum_{k=1}^{n} A_{ik} \times B_{kj}

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

Формулы[править | править вики-текст]

Формула Фробениуса[править | править вики-текст]

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


\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],

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

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

Примечания[править | править вики-текст]

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

Литература[править | править вики-текст]

  • Гантмахер Ф. Р. Теория матриц. — 5-е изд. — М.: Физматлит, 2004. — 560 с. — ISBN 5-9221-0524-8.
  • Ильин В. А., Позняк Э. Г. Линейная алгебра. — 6-е изд., стереотипное. — М.: Физматлит, 2005. — 280 с. — ISBN 5-9221-0481-0.