logo

블록 행렬 📂행렬대수

블록 행렬

정의

AAm×nm \times n 행렬이라고 하자.

A=[a11a12a1na21a22a2nam1am2amn] A = \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \cdots & a_{mn} \\ \end{bmatrix}

이때 다음과 같이 행렬을 자르는 임의의 수직선, 수평선들을 생각하자.

A=[a11a12a13a14a15a1n1a1na21a22a23a24a25a2n1a2na31a32a33a34a35a3n1a3na41a42a43a44a45a4n1a4nam1am2am3am4am5am1namn] A = \left[ \begin{array}{cc|ccc|c|} a_{11} & a_{12} & a_{13} & a_{14} & a_{15} & \cdots & a_{1n-1} & a_{1n} \\ a_{21} & a_{22} & a_{23} & a_{24} & a_{25} & \cdots & a_{2n-1} & a_{2n} \\ \hline a_{31} & a_{32} & a_{33} & a_{34} & a_{35} & \cdots & a_{3n-1} & a_{3n} \\ a_{41} & a_{42} & a_{43} & a_{44} & a_{45} & \cdots & a_{4n-1} & a_{4n} \\ \hline \vdots & \vdots & \vdots & \vdots & \vdots & \ddots & \vdots & \vdots & \\ \hline a_{m1} & a_{m2} & a_{m3} & a_{m4} & a_{m5} & \cdots & a_{m-1n} & a_{mn} \end{array} \right]

이때 각각의 선들로 잘려진 부분들을 AA블록block이라고 한다.

A11=[a11a12a21a22],A12=[a13a14a15a23a24a25],,Akl=[am1namn] A_{11} = \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix},\quad A_{12} = \begin{bmatrix} a_{13} & a_{14} & a_{15}\\ a_{23} & a_{24} & a_{25} \end{bmatrix},\quad \cdots,\quad A_{kl} = \begin{bmatrix} a_{m-1n} & a_{mn}\end{bmatrix}

행렬 AA를 다음과 같이 블록으로 표현한 것을 블록 행렬block matrix이라고 한다.

A=[A11A12A1lA21A22A2lAk1Ak2Akl] A = \begin{bmatrix} A_{11} & A_{12} & \cdots & A_{1l} \\ A_{21} & A_{22} & \cdots & A_{2l} \\ \vdots & \vdots & \ddots & \vdots \\ A_{k1} & A_{k2} & \cdots & A_{kl} \\ \end{bmatrix}

설명

행렬을 블록 행렬로 다루는 것은 행렬 계산을 쉽게 해준다. 실제로 블록행렬의 계산도 행렬을 계산하는 것처럼 하면 된다.

A=[A11A12A21A22]andB=[B11B12B21B22]    AB=[A11B11+A12B21A11B12+A12B22A21B11+A22B21A21B12+A22B22] A = \begin{bmatrix} A_{11} & A_{12} \\ A_{21} & A_{22} \end{bmatrix}\quad \text{and} \quad B = \begin{bmatrix} B_{11} & B_{12} \\ B_{21} & B_{22} \end{bmatrix} \\[1em] \implies AB = \begin{bmatrix} A_{11}B_{11} + A_{12}B_{21} & A_{11}B_{12} + A_{12}B_{22} \\ A_{21}B_{11} + A_{22}B_{21} & A_{21}B_{12} + A_{22}B_{22} \end{bmatrix}

따라서 행렬을 영행렬이나 항등행렬이 포함된 블록 행렬꼴로 바꾸면 행렬곱을 쉽게 계산할 수 있다.

A=[A11IOA22]andB=[B11B12B21B22]    AB=[A11B11+B21A11B12+B22A22B21A22B22] A = \begin{bmatrix} A_{11} & I \\ O & A_{22} \end{bmatrix}\quad \text{and} \quad B = \begin{bmatrix} B_{11} & B_{12} \\ B_{21} & B_{22} \end{bmatrix} \\[1em] \implies AB = \begin{bmatrix} A_{11}B_{11} + B_{21} & A_{11}B_{12} + B_{22} \\ A_{22}B_{21} & A_{22}B_{22} \end{bmatrix}

행렬을 행벡터와 열벡터로 쪼갠 것도 블록행렬이다.

A=[a11a12a1na21a22a2nam1am2amn]=[r1r2rm]=[c1c2cn] \begin{align*} A =& \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \cdots & a_{mn} \end{bmatrix} = \begin{bmatrix} \mathbf{r}_{1} \\ \mathbf{r}_{2} \\ \vdots \\ \mathbf{r}_{m} \end{bmatrix} \\ =& \begin{bmatrix} \mathbf{c}_{1} & \mathbf{c}_{2} & \cdots & \mathbf{c}_{n} \end{bmatrix} \end{align*}

따라서 AxA \mathbf{x}를 다음과 같이 표현할 수 있다.

Ax=[c1c2cn][x1x2xn]=inxici \begin{align*} A \mathbf{x} &= \begin{bmatrix} \mathbf{c}_{1} & \mathbf{c}_{2} & \cdots & \mathbf{c}_{n} \end{bmatrix} \begin{bmatrix} x_{1} \\ x_{2} \\ \vdots \\ x_{n} \end{bmatrix} \\ &= \sum_{i}^{n} x_{i}\mathbf{c}_{i} \end{align*}

또한 AAm×pm \times p 행렬이고 ai\mathbf{a}_{i}AA의 행벡터라고 하고, BBp×np \times n 행렬이고 bi\mathbf{b}_{i}BB의 열벡터라고 하자. 그러면 두 행렬의 곱은 다음과 같다.

AB=[a1a2am][b1b2bn]=[a1b1a1b2a1bna2b1a2b2a2bnamb1amb2ambn] AB = \begin{bmatrix} \mathbf{a}_{1} \\ \mathbf{a}_{2} \\ \vdots \\ \mathbf{a}_{m} \end{bmatrix} \begin{bmatrix} \mathbf{b}_{1} & \mathbf{b}_{2} & \cdots & \mathbf{b}_{n} \end{bmatrix} = \begin{bmatrix} \mathbf{a}_{1} \mathbf{b}_{1} & \mathbf{a}_{1} \mathbf{b}_{2} & \cdots & \mathbf{a}_{1} \mathbf{b}_{n} \\ \mathbf{a}_{2} \mathbf{b}_{1} & \mathbf{a}_{2} \mathbf{b}_{2} & \cdots & \mathbf{a}_{2} \mathbf{b}_{n} \\ \vdots & \vdots & \ddots & \vdots \\ \mathbf{a}_{m} \mathbf{b}_{1} & \mathbf{a}_{m} \mathbf{b}_{2} & \cdots & \mathbf{a}_{m} \mathbf{b}_{n} \\ \end{bmatrix}

정리

A=[A1A2OA3]A = \begin{bmatrix} A_{1} & A_{2} \\ O & A_{3} \end{bmatrix}를 블록행렬이라고 하자. 그 행렬식에 대해 다음이 성립한다.

detA=detA1detA3 \det A = \det A_{1} \det A_{3}

따름정리

  • 블록행렬 A=[A1A2OI]A = \begin{bmatrix} A_{1} & A_{2} \\ O & I \end{bmatrix}의 행렬식은 detA1\det A_{1}과 같다.
  • 행과 열에 순열을 취해 다음과 같은 꼴로 나타날수 있는 행렬 AA축소가능행렬이라 하며, 그 행렬식 detA\det AdetBdetD\det B \det D 혹은 detBdetD-\det B \det D 중 하나다. A~=[BOCD] \widetilde{A} = \begin{bmatrix} B & O \\ C & D \end{bmatrix}

증명

블록행렬 AA를 다음과 같이 세 블록행렬의 곱으로 분해할 수 있다.

A=[A1A2OA3]=[IA1+OOIA2+OIOA1+A3OOA2+A3I]=[IOOA3][A1A2OI]=[IOOA3][IA1+A2OIO+A2IOA1+IOOO+II]=[IOOA3][IA2OI][A1OOI] \begin{align*} A &= \begin{bmatrix} A_{1} & A_{2} \\ O & A_{3} \end{bmatrix} \\ &= \begin{bmatrix} IA_{1} + OO & IA_{2} + OI \\ OA_{1} + A_{3}O & OA_{2} + A_{3}I \end{bmatrix} \\ &= \begin{bmatrix} I & O \\ O & A_{3} \end{bmatrix} \begin{bmatrix} A_{1} & A_{2} \\ O & I \end{bmatrix} \\ &= \begin{bmatrix} I & O \\ O & A_{3} \end{bmatrix} \begin{bmatrix} IA_{1} + A_{2}O & IO + A_{2}I \\ OA_{1} + IO & OO + II \end{bmatrix} \\ &= \begin{bmatrix} I & O \\ O & A_{3} \end{bmatrix} \begin{bmatrix} I & A_{2} \\ O & I \end{bmatrix} \begin{bmatrix} A_{1} & O \\ O & I \end{bmatrix} \end{align*}

곱의 행렬식은 행렬식의 곱과 같으므로

detA=det([IOOA3][IA2OI][A1OOI])=det([IOOA3])det([IA2OI])det([A1OOI]) \begin{align*} \det A &= \det \left( \begin{bmatrix} I & O \\ O & A_{3} \end{bmatrix} \begin{bmatrix} I & A_{2} \\ O & I \end{bmatrix} \begin{bmatrix} A_{1} & O \\ O & I \end{bmatrix} \right) \\ &= \det \left( \begin{bmatrix} I & O \\ O & A_{3} \end{bmatrix} \right) \det \left( \begin{bmatrix} I & A_{2} \\ O & I \end{bmatrix} \right) \det \left( \begin{bmatrix} A_{1} & O \\ O & I \end{bmatrix} \right) \end{align*}

여기서 행렬식의 라플라스 전개를 생각해보면

det([IOOA3])=detA3,det([A1OOI])=detA1, \det \left( \begin{bmatrix} I & O \\ O & A_{3} \end{bmatrix} \right) = \det A_{3},\quad \det \left( \begin{bmatrix} A_{1} & O \\ O & I \end{bmatrix} \right) = \det A_{1},

anddet([IA2OI])=1 \text{and} \quad \det \left( \begin{bmatrix} I & A_{2} \\ O & I \end{bmatrix} \right)=1

임을 알 수 있다. 그러므로

detA=detA1detA3 \det A = \det A_{1} \det A_{3}