본문으로 건너뛰기

절4.2여인수 전개

목표
  1. 주어진 행렬의 행렬식을 계산하는 데 어떤 방법이 가장 적합한지 알아보는 법을 배웁니다.
  2. 계산법: 3\times 3 행렬의 행렬식, 여인수 전개를 이용한 행렬식 계산.
  3. 용어: 소행렬, 여인수.

이 절에서는 여인수 전개라고 하는 행렬의 행렬식에 대한 재귀적 공식을 제시합니다. 이 공식이 재귀적이라는 것은 (n-1)\times(n-1) 행렬의 행렬식을 계산하는 방법을 이미 알고 있다고 가정하고 n\times n 행렬의 행렬식을 계산한다는 의미입니다.

끝부분에는 크라머’의 규칙과 역행렬에 대한 여인수 공식을 다루는 보충 소절이 있습니다.

소절4.2.1여인수 전개

재귀적 공식에는 반드시 출발점이 있어야 합니다. 여인수 전개의 출발점은 1\times 1 행렬의 경우입니다. 행렬식의 정의로부터 다음이 바로 따라 나옵니다.

\begin{equation*}
\det\mat a=a.
\end{equation*}

여인수 전개를 설명하려면 몇 가지 표기법을 도입해야 합니다.

정의

A를 n\times n 행렬이라고 합시다.

  1. A_{ij}로 표기하는 (i,j) 소행렬은 A에서 i번째 행과 j번째 열을 삭제하여 얻은 (n-1)\times (n-1) 행렬입니다.
  2. (i,j) 여인수 C_{ij}는 소행렬을 이용하여 다음과 같이 정의됩니다.
    \begin{equation*}
C_{ij}=(-1)^{i+j}\det(A_{ij}).
\end{equation*}

여인수의 부호는 “체커보드 패턴”을 따른다는 점에 유의하십시오. 즉, (-1)^{i+j}를 다음 행렬로 나타낼 수 있습니다.

\begin{equation*}
\def\a{\textcolor{seq-green}{+}} \def\b{\textcolor{seq-blue}{-}}
\mat{\a,\b,\a,\b ; \b,\a,\b,\a ; \a,\b,\a,\b; \b,\a,\b,\a}.
\end{equation*}

n\times n 행렬의 여인수 C_{ij}는 (n-1)\times(n-1) 부분행렬의 행렬식입니다. 따라서 다음 정리는 사실상 행렬식을 계산하는 재귀적인 절차입니다.

증명

이 정리는 실제로 행렬식에 대해 2n개의 서로 다른 공식을 제공한다는 점에 유의하십시오. 각 행마다 하나씩, 각 열마다 하나씩입니다. 예를 들어, 첫 번째 열을 따른 여인수 전개 공식은 다음과 같습니다.

\begin{equation*}
\begin{split}
\det(A) = \sum_{i=1}^n a_{i1}C_{i1}
\amp= a_{11}C_{11} + a_{21}C_{21} + \cdots + a_{n1}C_{n1} \\
\amp= a_{11}\det(A_{11}) - a_{21}\det(A_{21}) + a_{31}\det(A_{31}) - \cdots \pm a_{n1}\det(A_{n1}).
\end{split}
\end{equation*}

행렬의 행렬식은 네 가지 정의 성질 in 절 4.1로 정의되는 하나의 수일 뿐임을 기억하십시오. 따라서 분명히 말하자면:

any 행이나 열을 따라 여인수 전개를 해도 같은 수를 얻습니다.

이제 행렬식의 재귀적 공식을 얻었으므로, 마침내 존재 정리 in 절 4.1를 증명할 수 있습니다.

2\times 2 행렬의 행렬식

일반적인 2\times2 행렬의 행렬식을 (다시) 계산해 봅시다.

\begin{equation*}
A=\mat{a b;c d}.
\end{equation*}

소행렬식은 다음과 같습니다.

\begin{tikzpicture}[all nodes={},
  every matrix/.append style={nodes={
      text width=.7em, text height=.66em, text depth=.5ex}}]

  \matrix (a) at (0, 0) [math matrix, anchor=west] {
    a \& b \\ c \& d \\
    };
  \node [left=1mm of a] {$A_{11} = {}\;$};
  \node [right=1mm of a] (a22) {$\;{} = \mat d$};

  \matrix (b) [math matrix, right=4cm of a] {
    a \& b \\ c \& d \\
    };
  \node [left=1mm of b] (A12) {$A_{12} = {}\;$};
  \node [right=1mm of b] {$\;{} = \mat c$};

  \matrix (c) at (a.south west) [math matrix, anchor=north west, yshift=-1em] {
    a \& b \\ c \& d \\
    };
  \node [left=1mm of c] {$A_{21} = {}\;$};
  \node [right=1mm of c] (a12) {$\;{} = \mat b$};

  \matrix (d) at (b.south west) [math matrix, anchor=north west, yshift=-1em] {
    a \& b \\ c \& d \\
    };
  \node [left=1mm of d] (A22) {$A_{22} = {}\;$};
  \node [right=1mm of d] {$\;{} = \mat a$.};

  \begin{scope}[every node/.style={
          seq-green, draw, thick, circle, inner sep=1pt, opacity=1},
      decoration={zigzag,segment length=1.5mm}, seq-red, thick, opacity=.7,
      line join=round]
    \node[fit=(a-1-1)] {};
    \draw[decorate] (a-1-1.west) -- (a-1-2.east);
    \draw[decorate] (a-1-1.north) -- (a-2-1.south);

    \node[fit=(b-1-2)] {};
    \draw[decorate] (b-1-1.west) -- (b-1-2.east);
    \draw[decorate] (b-1-2.north) -- (b-2-2.south);

    \node[fit=(c-2-1)] {};
    \draw[decorate] (c-2-1.west) -- (c-2-2.east);
    \draw[decorate] (c-2-1.south) -- (c-1-1.north);

    \node[fit=(d-2-2)] {};
    \draw[decorate] (d-2-1.west) -- (d-2-2.east);
    \draw[decorate] (d-1-2.north) -- (d-2-2.south);
  \end{scope}

\end{tikzpicture}

소행렬식은 모두 1\times 1 행렬입니다. 앞서 보았듯이 1\times1 행렬의 행렬식은 그 안에 있는 수일 뿐이므로, 여인수는 다음과 같습니다.

\begin{align*}
C_{11} &= {+\det(A_{11}) = d} &
C_{12} &= {-\det(A_{12}) = -c}\\
C_{21} &= {-\det(A_{21}) = -b} &
C_{22} &= {+\det(A_{22}) = a}
\end{align*}

첫 번째 열을 따라 여인수 전개하면 다음을 얻으며,

\begin{equation*}
\det(A)=aC_{11}+cC_{21} = ad - bc,
\end{equation*}

이는 이 정의 in 절 3.5와 이 예제 in 절 4.1에 나온 공식과 일치합니다.

3\times 3 행렬의 행렬식

여인수 전개를 이용하여 3\times 3 행렬의 행렬식에 대한 공식도 구할 수 있습니다. 첫 번째 행을 따라 전개하여

\begin{equation*}
A = \mat{a_{11} a_{12} a_{13}; a_{21} a_{22} a_{23}; a_{31} a_{32} a_{33}}
\end{equation*}

의 행렬식을 계산해 봅시다. 소행렬식과 여인수는 다음과 같습니다:

\begin{tikzpicture}[every matrix/.append style={nodes={
      text width=1.2em, text height=.66em, text depth=.5ex}}]]

          \matrix (a) at (0, 0) [math matrix, anchor=west] {
            a_{11} \& a_{12} \& a_{13} \\
            a_{21} \& a_{22} \& a_{23} \\
            a_{31} \& a_{32} \& a_{33} \\
          };
          \node [left=1mm of a] (A11) {$A_{11} = {}\;$};
          \node [right=1mm of a] (a11)
             {$\;{} = \mat{a_{22} a_{23}; a_{32} a_{33}}$};
          \node [right=1em of a11] (C11)
             {$C_{11} = +\det\mat{a_{22} a_{23}; a_{32} a_{33}}$};

          \matrix (b) at (a.south west) [math matrix, anchor=north west,
              yshift=-.5em] {
            a_{11} \& a_{12} \& a_{13} \\
            a_{21} \& a_{22} \& a_{23} \\
            a_{31} \& a_{32} \& a_{33} \\
          };
          \node [left=1mm of b] (A12) {$A_{12} = {}\;$};
          \node [right=1mm of b] (a12)
             {$\;{} = \mat{a_{21} a_{23}; a_{31} a_{33}}$};
          \node at (C11.west |- a12.east) [anchor=west] (C12)
             {$C_{12} = -\det\mat{a_{21} a_{23}; a_{31} a_{33}}$};

          \matrix (c) at (b.south west) [math matrix, anchor=north west,
              yshift=-.5em] {
            a_{11} \& a_{12} \& a_{13} \\
            a_{21} \& a_{22} \& a_{23} \\
            a_{31} \& a_{32} \& a_{33} \\
          };
          \node [left=1mm of c] (A13) {$A_{13} = {}\;$};
          \node [right=1mm of c] (a13)
             {$\;{} = \mat{a_{21} a_{22}; a_{31} a_{32}}$};
          \node at (C12.west |- a13.east) [anchor=west] (C13)
             {$C_{13} = +\det\mat{a_{21} a_{22}; a_{31} a_{32}}$};

          \begin{scope}[every node/.style={
                 seq-green, draw, thick, circle, inner sep=0pt, opacity=1},
              decoration={zigzag,segment length=1.5mm}, seq-red, thick, opacity=.7,
              line join=round]
            \node[fit=(a-1-1)] {};
            \draw[decorate] (a-1-1.west) -- (a-1-3.east);
            \draw[decorate] (a-1-1.north) -- (a-3-1.south);

            \node[fit=(b-1-2)] {};
            \draw[decorate] (b-1-1.west) -- (b-1-3.east);
            \draw[decorate] (b-1-2.north) -- (b-3-2.south);

            \node[fit=(c-1-3)] {};
            \draw[decorate] (c-1-1.west) -- (c-1-3.east);
            \draw[decorate] (c-1-3.north) -- (c-3-3.south);
          \end{scope}

          \end{tikzpicture}

행렬식은 다음과 같습니다:

\begin{align*}
\det(A) \amp= a_{11}C_{11} + a_{12}C_{12} + a_{13}C_{13}\\
\amp= a_{11}\det\mat{a_{22} a_{23}; a_{32} a_{33}}
- a_{12}\det\mat{a_{21} a_{23}; a_{31} a_{33}}
+ a_{13}\det\mat{a_{21} a_{22}; a_{31} a_{32}}\\
\amp=
a_{11}(a_{22}a_{33}-a_{23}a_{32})
- a_{12}(a_{21}a_{33}-a_{23}a_{31})
+ a_{13}(a_{21}a_{32}-a_{22}a_{31})\\
\amp=
a_{11}a_{22}a_{33} + a_{12}a_{23}a_{31} + a_{13}a_{21}a_{32}
-a_{13}a_{22}a_{31} - a_{11}a_{23}a_{32} - a_{12}a_{21}a_{33}.
\end{align*}

3\times 3 행렬의 행렬식 공식은 그대로 외우기에는 너무 복잡해 보입니다. 다행히 다음과 같은 암기법이 있습니다.

계산 절차: 3\times 3 행렬의 행렬식 계산하기

3\times 3 행렬의 행렬식을 계산하려면, 먼저 처음 두 열을 오른쪽에 반복하여 더 큰 행렬을 그리십시오. 그런 다음 행렬의 하향 대각 성분들의 곱을 모두 더하고, 상향 대각 성분들의 곱을 뺍니다:

\pgfdeclarelayer{background}
  \pgfsetlayers{background,main}
  \[
  \det\mat{a_{11} a_{12} a_{13}; a_{21} a_{22} a_{23}; a_{31} a_{32} a_{33}}
  = \begin{aligned}
  \amp\textcolor{seq-green}{
    a_{11}a_{22}a_{33} + a_{12}a_{23}a_{31} + a_{13}a_{21}a_{32}} \\
  \amp\quad
  \textcolor{seq-blue}{
  -a_{13}a_{22}a_{31} - a_{11}a_{23}a_{32} - a_{12}a_{21}a_{33}}
  \end{aligned}
  \]
  \centering
  \begin{tikzpicture}[baseline=(a-2-1.base)]
    \matrix (a) [matrix of math nodes, nodes={minimum width=2em}]
    { a_{11} \& a_{12} \& a_{13} \& a_{11} \& a_{12} \\
      a_{21} \& a_{22} \& a_{23} \& a_{21} \& a_{22} \\
      a_{31} \& a_{32} \& a_{33} \& a_{31} \& a_{32} \\
    };
  \begin{pgfonlayer}{background}
    \draw[seq-green!30!white, line cap=round, line width=1em]
       ($(-3pt,3pt)+(a-1-1.center)$) -- ($(3pt,-3pt)+(a-3-3.center)$)
       ($(-3pt,3pt)+(a-1-2.center)$) -- ($(3pt,-3pt)+(a-3-4.center)$)
       ($(-3pt,3pt)+(a-1-3.center)$) -- ($(3pt,-3pt)+(a-3-5.center)$);
  \end{pgfonlayer}
  \node (minus) [right=2mm of a] {$-$};
  \matrix (b) [matrix of math nodes, nodes={minimum width=2em}, right=2mm of minus]
    { a_{11} \& a_{12} \& a_{13} \& a_{11} \& a_{12} \\
      a_{21} \& a_{22} \& a_{23} \& a_{21} \& a_{22} \\
      a_{31} \& a_{32} \& a_{33} \& a_{31} \& a_{32} \\
    };
  \begin{pgfonlayer}{background}
    \draw[seq-blue!30!white, line cap=round, line width=1em]
       ($(3pt,3pt)+(b-1-3.center)$) -- ($(-3pt,-3pt)+(b-3-1.center)$)
       ($(3pt,3pt)+(b-1-4.center)$) -- ($(-3pt,-3pt)+(b-3-2.center)$)
       ($(3pt,3pt)+(b-1-5.center)$) -- ($(-3pt,-3pt)+(b-3-3.center)$);
  \end{pgfonlayer}

  \end{tikzpicture}

또는 팩맨이나 애스터로이드에서처럼 대각선이 행렬의 양옆을 “넘어가 반대편으로 이어지도록” 허용하면, 처음 두 열을 반복할 필요가 없습니다.

여인수 전개는 0인 성분이 여러 개 있는 행이나 열을 가진 행렬의 행렬식을 계산할 때 가장 유용합니다. 실제로 A의 (i,j) 성분이 0이면 (i,j) 여인수를 계산할 이유가 없습니다. 다음 예제에서는 넷째 열에 0이 두 개 있는 행렬의 행렬식을 넷째 열을 따라 여인수 전개하여 계산합니다.

여인수 전개는 미지수가 포함된 성분이 있는 행렬의 행렬식을 계산할 때도 매우 유용합니다. 실제로 이 경우에는 행 축약을 하기가 불편합니다. 미지수를 포함한 성분이 피벗인지 아닌지 확신할 수 없기 때문입니다.

행렬의 행렬식을 계산할 때는 여러 기법을 조합하여 사용하는 것이 가장 효율적인 경우가 많습니다. 실제로 행렬을 여인수 전개할 때, 여인수의 행렬식은 가장 편리한 어떤 방법으로든 계산할 수 있습니다. 또는 앞의 예제에서처럼 여인수 전개를 하기 전에 행 연산과 열 연산을 수행하여 행렬의 일부 성분을 소거할 수도 있습니다.

요약: 행렬식을 계산하는 방법

행렬식을 계산하는 방법은 여러 가지가 있습니다:

  1. 2\times 2 및 3\times 3 행렬에 대한 특수 공식.

    0인 성분이 여러 개 있는 3\times 3 행렬을 제외하면, 작은 행렬의 행렬식을 계산하는 데에는 보통 이 방법이 가장 좋습니다.

  2. 여인수 전개.

    이 방법은 보통 0인 성분이 여러 개 있는 행이나 열이 있을 때, 또는 행렬에 미지수 성분이 있을 때 가장 효율적입니다.

  3. 행 연산과 열 연산.

    이 방법은 0이 많이 들어 있는 행이나 열이 없는 큰 행렬이 주어졌을 때 일반적으로 가장 빠릅니다.

  4. 위 방법들의 임의의 조합.

    여인수 전개는 재귀적이지만, 소행렬식은 가장 편리한 어떤 방법으로든 계산할 수 있습니다. 또는 여인수 전개를 하기 전에 행 연산과 열 연산을 수행하여 행렬의 일부 성분을 소거할 수도 있습니다.

기억하십시오. 행렬식을 계산하는 모든 방법은 같은 값을 냅니다.

소절4.2.2크라머’ 공식과 역행렬

이 명제 in 절 3.5에서 2\times 2 행렬의 행렬식을 다음 규칙으로 계산할 수 있었음을 상기하십시오.

\begin{equation*}
A = \mat{d -b; -c a} \quad\implies\quad
A\inv = \frac 1{\det(A)}\mat{d -b; -c a}.
\end{equation*}

이 예제에서 2\times 2 행렬의 여인수를 계산하였습니다. C_{11}=d,\,C_{12}=-c,\,C_{21}=-b,\,C_{22}=a를 사용하면 위 공식을 다음과 같이 다시 쓸 수 있습니다.

\begin{equation*}
A\inv = \frac 1{\det(A)}\mat{C_{11} C_{21}; C_{12} C_{22}}.
\end{equation*}

이 공식은 n\times n 행렬로 일반화됩니다.

여인수로 이루어진 행렬을 A의 수반행렬이라고 부르기도 하며, \adj(A)로 나타냅니다.

\begin{equation*}
\adj(A) = \mat{C_{11} C_{21} \cdots, C_{n-1,1} C_{n1};
C_{12} C_{22} \cdots, C_{n-1,2} C_{n2};
\vdots, \vdots, \ddots, \vdots, \vdots;
C_{1,n-1} C_{2,n-1} \cdots, C_{n-1,n-1} C_{n,n-1};
C_{1n} C_{2n} \cdots, C_{n-1,n} C_{nn}}.
\end{equation*}

(i,j) 여인수 C_{ij}는 수반행렬의 (i,j) 성분이 아니라 (j,i) 성분에 들어간다는 점에 유의하십시오. 즉, 수반행렬은 여인수 행렬의 전치입니다.

앞의 예제에서 알 수 있듯이, 이 소절 in 절 3.5에서처럼 단위행렬을 첨가하여 행 축약하는 방법과 비교하면 (4.2.1)는 역행렬을 계산하는 데 매우 비효율적인 방법입니다. 그러나 이 공식에도 쓸모가 있습니다.

  • 행렬에 미지수인 성분이 있으면, 행렬식을 행 축약으로 계산하기 어려운 것과 같은 이유로 역행렬을 행 축약으로 계산하기도 어렵습니다. 미지수를 포함한 성분이 피벗인지 아닌지 확신할 수 없기 때문입니다.
  • 이 공식은 이론적인 목적에 유용합니다. (4.2.1)에서 분모는 행렬식으로 나눌 때에만 나타난다는 점에 주목하십시오. 여인수를 계산하는 데에는 곱셈과 덧셈만 필요하며 나눗셈은 전혀 필요하지 않습니다. 이는 예를 들어 행렬식이 매우 작으면, 행렬 성분의 측정 오차가 역행렬을 계산할 때 크게 증폭된다는 것을 의미합니다. 이런 식으로 (4.2.1)는 오차 분석에 유용합니다.

정리의 증명에는 크라머’ 공식이라는 흥미로운 기법이 사용되는데, 이 공식은 가역 행렬 방정식의 해의 성분에 대한 공식을 제공합니다.

증명

이제 크라머’의 규칙을 사용하여 이 소절의 첫 번째 정리을 증명합니다.