Vandermondeの行列式

Vandermondeの行列式の証明

公開日: 2021-01-13

  Table of Contents

1. 今回のスコープ

  • Vardemondeの行列式の証明

2. Vandermondeの行列式

前提ルール

  1. 行列の余因子展開
  2. 行列$A$の行列式の計算において、ある列の$\alpha$倍を他の行から引くとき、det($A$)の値は変わらない
  3. 行列Aのある行を非ゼロ定数$\beta$倍するとき、$\text{det}(A)$は$\alpha$倍となる

命題

\[\text{det}\left( \begin{array}{ccccc} 1 & a_1 & \cdots & a_1^{n-2} & a_1^{n-1}\\ 1&a_2 & \cdots & a_2^{n-2} & a_2^{n-1}\\ \vdots&\vdots & \cdots & \vdots & \vdots\\ 1 & a_{n-1} & \cdots & a_{n-1}^{n-2} & a_{n-1}^{n-1}\\ 1 & a_n & \cdots & a_n^{n-2} & a_n^{n-1} \end{array} \right)= (-1)^{n(n-1)/2}{\displaystyle\prod_{1\leq i<j\leq n}}(a_i - a_j)\]

証明

証明は帰納法を用います。(1) $n = 1$のときは両辺が1で成立。念の為、(2) $n = 2$のときを見てみると、

\(\text{det}\left(\begin{array}{cc}1 & a_1\\1&a_2\end{array}\right) = (a_2 - a_1)\)

で成立します。

(3) $n=k$ の場合:

$n=k-1$で成立することを仮定します。このとき、$n=k$でみてみます。なお簡略化のため

\(A \equiv \left( \begin{array}{ccccc} 1 & a_1 & \cdots & a_1^{k-2} & a_1^{k-1}\\ 1&a_2 & \cdots & a_2^{k-2} & a_2^{k-1}\\ \vdots&\vdots & \cdots & \vdots & \vdots\\ 1 & a_{k-1} & \cdots & a_{k-1}^{k-2} & a_{k-1}^{k-1}\\ 1 & a_k & \cdots & a_k^{k-2} & a_k^{k-1} \end{array} \right)\)

と表記します。

まず、(k-1)列目を$a_1$倍して、k列目から引きます。

\(\text(det)(A) = \text(det)\left( \begin{array}{ccccc} 1 & a_1 & \cdots & a_1^{k-2} & 0\\ 1&a_2 & \cdots & a_2^{k-2} & a_2^{k-2}(a_2 - a_1)\\ \vdots&\vdots & \cdots & \vdots & \vdots\\ 1 & a_{k-1} & \cdots & a_{k-1}^{k-2} & a_{k-1}^{k-2}(a_{k-1} - a_1)\\ 1 & a_k & \cdots & a_k^{k-2} & a_k^{k-2}(a_k - a_1) \end{array} \right)\)

次に(k-2)列目を$a_1$倍して、(k-1)列目から引きます。

\[\text{det}(A) = \text(det)\left( \begin{array}{ccccc} 1 & a_1 & \cdots & a_1^{k-2} & 0\\ 1&a_2 & \cdots & a_2^{k-2} & a_2^{k-2}(a_2 - a_1)\\ \vdots&\vdots & \cdots & \vdots & \vdots\\ 1 & a_{k-1} & \cdots & a_{k-1}^{k-2} & a_{k-1}^{k-2}(a_{k-1} - a_1)\\ 1 & a_k & \cdots & a_k^{k-2} & a_k^{k-2}(a_k - a_1) \end{array} \right) = \text{det}\left( \begin{array}{ccccc} 1 & a_1 & \cdots & 0 & 0\\ 1&a_2 & \cdots & a_2^{k-3}(a_2-a_1) & a_2^{k-2}(a_2 - a_1)\\ \vdots&\vdots & \cdots & \vdots & \vdots\\ 1 & a_{k-1} & \cdots & a_{k-1}^{k-3}(a_{k-1}-a_1) & a_{k-1}^{k-2}(a_{k-1} - a_1)\\ 1 & a_k & \cdots & a_k^{k-3}(a_k-a_1) & a_k^{k-2}(a_k - a_1) \end{array} \right)\]

これを繰り返していき

\[\begin{aligned} \text{det}(A) &= \text{det}\left( \begin{array}{ccccc} 1 & 0 & \cdots & 0 & 0\\ 1&a_2-a_1 & \cdots & a_2^{k-3}(a_2-a_1) & a_2^{k-2}(a_2 - a_1)\\ \vdots&\vdots & \cdots & \vdots & \vdots\\ 1 & a_{k-1}-a_1 & \cdots & a_{k-1}^{k-3}(a_{k-1}-a_1) & a_{k-1}^{k-2}(a_{k-1} - a_1)\\ 1 & a_k-a_1 & \cdots & a_k^{k-3}(a_k-a_1) & a_k^{k-2}(a_k - a_1) \end{array} \right)\\ &= \text{det}\left( \begin{array}{ccccc} 1 & 0 & \cdots & 0 & 0\\ 0&a_2-a_1 & \cdots & a_2^{k-3}(a_2-a_1) & a_2^{k-2}(a_2 - a_1)\\ \vdots&\vdots & \cdots & \vdots & \vdots\\ 0 & a_{k-1}-a_1 & \cdots & a_{k-1}^{k-3}(a_{k-1}-a_1) & a_{k-1}^{k-2}(a_{k-1} - a_1)\\ 0 & a_k-a_1 & \cdots & a_k^{k-3}(a_k-a_1) & a_k^{k-2}(a_k - a_1) \end{array} \right) \end{aligned}\]

を得ます。余因子展開からわかるように

\[\text{det}\left( \begin{array}{ccccc} 1 & 0 & \cdots & 0 & 0\\ 0&a_2-a_1 & \cdots & a_2^{k-3}(a_2-a_1) & a_2^{k-2}(a_2 - a_1)\\ \vdots&\vdots & \cdots & \vdots & \vdots\\ 0 & a_{k-1}-a_1 & \cdots & a_{k-1}^{k-3}(a_{k-1}-a_1) & a_{k-1}^{k-2}(a_{k-1} - a_1)\\ 0 & a_k-a_1 & \cdots & a_k^{k-3}(a_k-a_1) & a_k^{k-2}(a_k - a_1) \end{array} \right)=\text{det}\left( \begin{array}{cccc} a_2-a_1 & \cdots & a_2^{k-3}(a_2-a_1) & a_2^{k-2}(a_2 - a_1)\\ \vdots & \cdots & \vdots & \vdots\\ a_{k-1}-a_1 & \cdots & a_{k-1}^{k-3}(a_{k-1}-a_1) & a_{k-1}^{k-2}(a_{k-1} - a_1)\\ a_k-a_1 & \cdots & a_k^{k-3}(a_k-a_1) & a_k^{k-2}(a_k - a_1) \end{array} \right)\]

前提ルール3より

\[\begin{aligned} \text{det}\left( \begin{array}{cccc} a_2-a_1 & \cdots & a_2^{k-3}(a_2-a_1) & a_2^{k-2}(a_2 - a_1)\\ \vdots & \cdots & \vdots & \vdots\\ a_{k-1}-a_1 & \cdots & a_{k-1}^{k-3}(a_{k-1}-a_1) & a_{k-1}^{k-2}(a_{k-1} - a_1)\\ a_k-a_1 & \cdots & a_k^{k-3}(a_k-a_1) & a_k^{k-2}(a_k - a_1) \end{array} \right) &=(a_2-a_1)\cdots(a_k-a_1)\text{det}\left( \begin{array}{cccc} 1& \cdots & a_2^{k-3} & a_2^{k-2}\\ \vdots & \cdots & \vdots & \vdots\\ 1 & \cdots & a_{k-1}^{k-3} & a_{k-1}^{k-2}\\ 1 & \cdots & a_k^{k-3} & a_k^{k-2} \end{array} \right) \\ &= (-1)^k(a_1-a_2)\cdots(a_1-a_k)(-1)^{(k-1)(k-2)/2}{\displaystyle\prod_{2\leq i<j\leq k}}(a_i - a_j)\\ &= (-1)^{k(k-1)/2}{\displaystyle\prod_{1\leq i<j\leq k}}(a_i - a_j) \end{aligned}\]

証明終了。

3. Pythonでの計算方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import numpy as np

def vandermonde(A):
    """
    INPUT: 
        [[  1   2   4   8]
         [  1   3   9  27]
         [  1   4  16  64]
         [  1   5  25 125]]
    
    Returns: 
        determinant
    """
    det = 1
    #array_size = A.shape[0]
    #col_array = A[:, 1]
    col_array = [i[1] for i in A]
    array_size = len(col_array)


    for i in range(array_size):
        for j in range(i):
            det *= (col_array[j] - col_array[i])

    return det * (-1) ** (array_size*(array_size-1)/2)

def main():
    A = np.vander(np.arange(2, 6))[:, ::-1]
    A = [l.tolist() for l in list(A)]
    res = vandermonde(A)
    print(res)

if __name__ = 'main':
  main()


Share Buttons
Share on:

Feature Tags
Leave a Comment
(注意:GitHub Accountが必要となります)