$x$を変数として

\[x^k = \sum_{j=1}^k a_j x(x - 1)(x - 2) \cdots (x-j)\]

が恒等式となるような実数$a_j$のことについて考えてみましょう.

例えば

\[\begin{align*} x^2 &= 1 \cdot x + 1 \cdot x(x-1), \\ x^3 &= 1 \cdot x + 3 \cdot x(x - 1) + 1 \cdot x(x - 1)(x - 2) \end{align*}\]

が成り立ちます.

最初に書いておきますが, $a_j$の一般項を決定する, というお話ではないです.

計算していたら面白い行列が出てくるので その紹介です.

考察

$x = p \; (1 \le p \le k)$を代入すると

\[\begin{align} p^k &= a_1p + a_2p(p - 1) + \cdots + a_p p! \\ &= \sum_{j=1}^p a_jp(p - 1)(p - 2) \cdots (p - (j - 1)). \end{align}\]

よって

\[\begin{align} \begin{pmatrix} 1^k \\ 2^k \\ \vdots \\ k^k \end{pmatrix} &= \begin{pmatrix} 1 & & & & \\ 2 & 2! & & & \\ 3 & 3 \cdot 2 & 3! & & \\ \vdots & & & \ddots & \\ k & & & & k! \end{pmatrix} \begin{pmatrix} a_1 \\ a_2 \\ a_3 \\ \vdots \\ a_k \end{pmatrix} \\ &= \begin{pmatrix} \perm{1}{1} & & & & \\ \perm{2}{1} & \perm{2}{2} & & & \\ \perm{3}{1} & \perm{3}{2} & \perm{3}{3} & & \\ \vdots & & & \ddots & \\ \perm{k}{1} & & & & \perm{k}{k} \end{pmatrix} \begin{pmatrix} a_1 \\ a_2 \\ a_3 \\ \vdots \\ a_k \end{pmatrix}. \end{align}\]

したがって

\[P_k = \begin{pmatrix} \perm{1}{1} & & & & \\ \perm{2}{1} & \perm{2}{2} & & & \\ \perm{3}{1} & \perm{3}{2} & \perm{3}{3} & & \\ \vdots & & & \ddots & \\ \perm{k}{1} & & & & \perm{k}{k} \end{pmatrix}\]

とおくと

\[\begin{pmatrix} 1^k \\ 2^k \\ 3^k \\ \vdots \\ k^k \end{pmatrix} = P_k \begin{pmatrix} a_1 \\ a_2 \\ a_3 \\ \vdots \\ a_k \end{pmatrix}.\]

を満たす.

また

\[\det P_k = 1! 2! 3! \cdots k! \neq 0\]

であるから, $P_k$は逆行列を持つ.

以上によって

\[\begin{pmatrix} a_1 \\ a_2 \\ a_3 \\ \vdots \\ a_k \end{pmatrix} = P_k^{-1} \begin{pmatrix} 1^k \\ 2^k \\ 3^k \\ \vdots \\ k^k \end{pmatrix}\]

が成り立つ.

手計算

$k=1, 2, 3, 4$の場合に$a_j$を計算してみよう.

$k=1$のとき

$P_1 = (1)$なので $P_1^{-1} = (1)$である. このとき

\[\begin{align} (a_1) &= P_1^{-1}(1^1) \\ &= (1)(1) = (1) \end{align}\]

なので, $a_1 = 1$である.

以上によって (当然であるが)

\[x = 1 \cdot x\]

が成り立つ.

$k=2$のとき

\[P_2 = \begin{pmatrix} 1 & 0 \\ 2 & 2 \end{pmatrix}\]

なので

\[\begin{align} P_2^{-1} &= \frac{1}{2} \begin{pmatrix} 2 & 0 \\ -2 & 1 \end{pmatrix} \\ &= \begin{pmatrix} 1 & 0 \\ -1 & 1/2 \end{pmatrix} \end{align}\]

である. このとき

\[\begin{align} \begin{pmatrix} a_1 \\ a_2 \end{pmatrix} &= P_2^{-1} \begin{pmatrix} 1^2 \\ 2^2 \end{pmatrix} \\ &= \begin{pmatrix} 1 & 0 \\ -1 & 1/2 \end{pmatrix} \begin{pmatrix} 1 \\ 4 \end{pmatrix} \\ &= \begin{pmatrix} 1 \\ 1 \end{pmatrix} \end{align}\]

である.

以上によって

\[x^2 = 1 \cdot x + 1 \cdot x (x - 1)\]

が成り立つことが分かる.

$k=3$のとき

\[P_3 = \begin{pmatrix} 1 & & \\ 2 & 2 & \\ 3 & 6 & 6 \end{pmatrix}\]

である.

$P_3$は$P_2$を部分行列として持つ下三角行列なので

\[\left( \begin{array}{cc|c} P_2^{-1} & & \\ \hline a & b & c \end{array} \right)\]

と書ける.

\[P_3 P_3^{-1} = \begin{pmatrix} 1 & & \\ & 1 & \\ & & 1 \end{pmatrix}\]

より

\[\begin{pmatrix} 1 & & \\ 2 & 2 & \\ 3 & 3 & 6 \end{pmatrix} \begin{pmatrix} 1 & & \\ -1 & 1/2 & \\ a & b & c \end{pmatrix} = \begin{pmatrix} 1 & & \\ & 1 & \\ & & 1 \end{pmatrix}.\]

を得る. これより(成分毎に方程式を立てて解けば)

\[P_3^{-1} = \begin{pmatrix} 1 & & \\ -1 & 1/2 & \\ 1/2 & -1/2 & 1/6 \end{pmatrix}\]

を得る. よって

\[\begin{align} \begin{pmatrix} a_1 \\ a_2 \\ a_3 \end{pmatrix} &= \begin{pmatrix} 1 & & \\ -1 & 1/2 & \\ 1/2 & -1/2 & 1/6 \end{pmatrix} \begin{pmatrix} 1^3 \\ 2^3 \\ 3^3 \end{pmatrix} \\ &= \begin{pmatrix} 1 \\ 3 \\ 1 \end{pmatrix} \end{align}\]

が成り立つ.

以上によって

\[x^3 = 1 \cdot x + 3 \cdot x(x-1) + 1 \cdot x(x - 1)(x - 2)\]

が成り立つことが分かる.

$k=4$のとき

\[P_4 = \begin{pmatrix} 1 & & & \\ 2 & 2 & & \\ 3 & 6 & 6 & \\ 4 & 12 & 24 & 24 \end{pmatrix}\]

である. $k=3$のときと同様に計算すると

\[P_4^{-1} = \begin{pmatrix} 1 & & & \\ -1 & 1/2 & & \\ 1/2 & -1/2 & 1/6 & \\ -1/6 & 1/4 & -1/6 & 1/24 \end{pmatrix}\]

が成り立つ. よって

\[\begin{align} \begin{pmatrix} a_1 \\ a_2 \\ a_3 \\ a_4 \end{pmatrix} &= \begin{pmatrix} 1 & & & \\ -1 & 1/2 & & \\ 1/2 & -1/2 & 1/6 & \\ -1/6 & 1/4 & -1/6 & 1/24 \end{pmatrix} \begin{pmatrix} 1^4 \\ 2^4 \\ 3^4 \\ 4^4 \end{pmatrix} \\ &= \begin{pmatrix} 1 \\ 7 \\ 6 \\ 1 \end{pmatrix} \end{align}\]

が成り立つ.

以上によって

\[x^4 = 1 \cdot x + 7 \cdot x(x - 1) + 6 \cdot x(x - 1)(x - 2) + 1 \cdot x(x - 1)(x - 2)(x - 3)\]

が成り立つことが分かる.

ソースコード

$1 \le k \le 10$のとき $P_k, P_k^{-1}, a = (a_1, a_2, \ldots a_k)^T$を求めるスクリプトを示します. 結果はgitlabのスニペットに置きました.

実行には sympyが必要です.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from pprint import pprint

import sympy as sym


def get_permutation(n: int, k: int) -> int:
    return sym.prod([n - j for j in range(k)])


def get_p_matrix(k: int) -> sym.Matrix:
    return sym.Matrix([[get_permutation(x, y) for y in range(1, k + 1)] for x in range(1, k + 1)])


def get_power_vec(k: int) -> sym.Matrix:
    return sym.Matrix([[j**k] for j in range(1, k + 1)])


def main():
    for k in range(1, 10 + 1):
        print(f"P_{k}")
        pprint(get_p_matrix(k))

        print(f"P_{k}^-1")
        pprint(get_p_matrix(k).inv())

        print("a")
        print(get_p_matrix(k).inv() * get_power_vec(k))

        print()
        print("=" * 80)
        print()


if __name__ == '__main__':
    main()