チェビシェフ生誕の儀

5月16日はロシアの数学者チェビシェフの誕生日です. チェビシェフといえば大数の法則を証明するのに用いるチェビシェフの不等式と,チェビシェフ多項式が有名です.チェビシェフ多項式は $\cos$の $n$倍角の公式関連で一時期大学入試問題でも取り上げられていたようです.倍角の公式として \begin{align} \cos2\theta &= 2\cos^2\theta – 1\ \cos3\theta &= 4\cos^3\theta – 3\cos\theta \end{align}などは高校生でも知っていますが,実は,任意の正の整数 $n$ に対して\begin{align}\cos n\theta = T_n(\cos\theta)\end{align}を満たす整数係数の多項式 $T_n(x)$ が存在します.この $T_n(x)$ をチェビシェフ多項式といいます.定義より \begin{align} T_1(x) &= x\ T_2(x) &= 2x^2-1\ T_3(x) &= 4x^3-3x \end{align}となりますね. $n$が偶数のときは偶関数,奇数のときは奇関数など,色々な性質がありますが,個人的に気になるのは, $T_n(x)$は具体的にどう表示されるのかです.つまり, $\cos n\theta$がどういう形をしているかです.Wikipediaなどでも取り上げられていますが, $\cos^k\theta$の係数がいくつかなどの記述はあまり見かけません. 一般的に知れ渡っているのかは分かりませんが,実は次が成り立ちます:\begin{align} \cos n\theta = \sum_{k=0}^{\lfloor n/2\rfloor}(-1)^k\frac{n}{n-k}\binom{n-k}{k}2^{n-2k-1}\cos^{n-2k}\theta. \end{align}ここで $\lfloor\ \rfloor$はいわゆるガウス記号, $\binom{n-k}{k}$は二項係数 {}{n-k}\mathrm{C}_k$のことです.これを示すには次の公式を認めることにします(そう易々と認められる公式ではありませんが,詳細はまたの機会にします):\begin{align} x^n+y^n=\sum{k=0}^{\lfloor n/2\rfloor}(-1)^k\frac{n}{n-k}\binom{n-k}{k}(x+y)^{n-2k}(xy)^k \tag{*} \end{align} さて,オイラーの公式によって\begin{align}2\cos\theta = e^{\theta i}+e^{-\theta i}\end{align}が成り立ちますが, $\theta$を $n\theta$に置き換えることによって,\begin{align}2\cos n\theta = e^{n\theta i}+e^{-n\theta i}=(e^{\theta i})^n+(e^{-\theta i})^n\end{align}が成り立ちます.そこで, $()$に \begin{align} x&=e^{\theta i}\ y&=e^{-\theta i} \end{align}を代入すると \begin{align} 2\cos n\theta = \sum_{k=0}^{\lfloor n/2\rfloor}(-1)^k\frac{n}{n-k}\binom{n-k}{k}(2\cos\theta)^{n-2k}(1)^k \end{align*}が成り立つので両辺を $2$で割って整理すれば, $n$倍角の公式が姿を現します. 心配な人はSymPyで確認してみましょう:
In [1]:
from sympy import *
x=Symbol('x')
In [2]:
def mychebyshev(n, x):
    n = Integer(n)
    return sum([(-1)**k * n/(n-k) * binomial(n-k, k) * 2**(n-2*k-1) * x**(n-2*k) for k in range(floor(n/2)+1)])
In [3]:
for k in range(1,10):#自家製
    print(mychebyshev(k, x))
x
2*x**2 - 1
4*x**3 - 3*x
8*x**4 - 8*x**2 + 1
16*x**5 - 20*x**3 + 5*x
32*x**6 - 48*x**4 + 18*x**2 - 1
64*x**7 - 112*x**5 + 56*x**3 - 7*x
128*x**8 - 256*x**6 + 160*x**4 - 32*x**2 + 1
256*x**9 - 576*x**7 + 432*x**5 - 120*x**3 + 9*x
In [4]:
for k in range(1,10):#sympy製
    print(chebyshevt_poly(k, x))
x
2*x**2 - 1
4*x**3 - 3*x
8*x**4 - 8*x**2 + 1
16*x**5 - 20*x**3 + 5*x
32*x**6 - 48*x**4 + 18*x**2 - 1
64*x**7 - 112*x**5 + 56*x**3 - 7*x
128*x**8 - 256*x**6 + 160*x**4 - 32*x**2 + 1
256*x**9 - 576*x**7 + 432*x**5 - 120*x**3 + 9*x
SymPyに標準で入っているものと照らし合わせても大丈夫なようです. 機会があればチェビシェフ多項式についての細かな内容に触れてみたいと思います.

コメントする