Maxima で綴る数学の旅

紙と鉛筆の代わりに、数式処理システムMaxima / Macsyma を使って、数学を楽しみましょう

-数学- p進数入門 ベルヌーイ数とヴィットの公式

実は、このp進数に関する一連のシリーズの目標は、ヴィットの公式を示すことに置いていました。ヴィットの公式とは以下の式です。ただし極限はp進距離(差のp進絶対値)で考えます。左辺\(B_k\)はk番目のベルヌーイ数です。

$$ \notag B_{k}=\lim_{N\rightarrow \infty }{\frac{\sum_{a=1}^{p^{N}}{a^{k}}}{p^{N}}} $$

分かり易く、aについて展開してしまうと、以下の式となります。 

$$\notag B_{k}=\lim_{N\rightarrow \infty }{\frac{1^{k}+2^{k}+3^{k}+\cdots+\left(p^N\right)^{k}}{p^{N}}}$$

k乗和なのでベルヌーイ数が出てきそうな感じはありますが、それにしても綺麗な式が成り立つものです。

きっかけはこちらのノート(というのでしょうか)に青木先生の本とヴィットの公式が紹介されていたことでした。Maximaのpadicsパッケージでこの式が成り立つことを確かめてみて、少しだけp進数に近づけた気がして、このシリーズを書いてみました。

以下の計算は、きいねくさんのノートの中の計算をMaximaで(数字は変えて)写経させて頂いたようなものです。きいねくさんのノートには多謝です。

 

tex出力の準備を少ししてから、この式が本当に成り立つことをいくつかの例で確かめてみましょう。 

ちなみに以下で登場する関数bern(k)はMaximaの組み込み関数でkに具体的な自然数を指定すると、k番目のベルヌーイ数\( B_k \)を計算してくれます。例えばbern(1)=-1/2, bern(2)=1/6など。

(%i1) texbern(e):=concat("B_{",tex1(args(e)[1]),"}")$
(%i2) texput(bern,texbern)$
(%i3) bern(k)=limit(sum(a^k,a,1,p^N)/p^N,N,inf);
$$ \tag{%o3} B_{k}=\lim_{N\rightarrow \infty }{\frac{\sum_{a=1}^{p^{N}}{a^{k}}}{p^{N}}} $$
(%i4) load("padics")$
(%i5) texput(nounify(padic_norm),
lambda([arglist],block([f1,f2],[f1,f2]:args(arglist),
concat("\\left| ", tex1(f1), " \\right|_{",tex1(f2),"}"))))$

まずはk=6, p=7の場合をやってみましょう。6番目のベルヌーイ数を確かめます。
(%i6) 'bern(6)=bern(6);
$$ \tag{%o6} \mathrm{\%bern}\left(6\right)=\frac{1}{42} $$

ヴィットの公式を書き換えると、以下のp進絶対値が\(N \rightarrow \infty\)のとき、0に収束することを示せば良いのです。
(%i7) witt:'padic_norm(sum(a^k,a,1,p^N)/p^N-bern(k),p);
$$ \tag{%o7} \left| \frac{\sum_{a=1}^{p^{N}}{a^{k}}}{p^{N}}-B_{k} \right|_{p} $$

k=6, p=7の場合は、
(%i8) witt73:ev(witt,p:7,k:6);
$$ \tag{%o8} \left| \frac{\sum_{a=1}^{7^{N}}{a^6}}{7^{N}}-\frac{1}{42} \right|_{7} $$

ですね。

Nをどんどん大きくして、このp進絶対値を具体的に計算してみましょう。Nを1〜6で試してみます。
(%i9) for N:1 thru 6 do print(ev(witt73)=ev(witt73,nouns));
$$ \tag{*} \left| \frac{\sum_{a=1}^{7}{a^6}}{7}-\frac{1}{42} \right|_{7}=\frac{1}{49}\verb| | $$
$$ \tag{*} \left| \frac{\sum_{a=1}^{49}{a^6}}{49}-\frac{1}{42} \right|_{7}=\frac{1}{2401}\verb| | $$
$$ \tag{*} \left| \frac{\sum_{a=1}^{343}{a^6}}{343}-\frac{1}{42} \right|_{7}=\frac{1}{117649}\verb| | $$
$$ \tag{*} \left| \frac{\sum_{a=1}^{2401}{a^6}}{2401}-\frac{1}{42} \right|_{7}=\frac{1}{5764801}\verb| | $$
$$ \tag{*} \left| \frac{\sum_{a=1}^{16807}{a^6}}{16807}-\frac{1}{42} \right|_{7}=\frac{1}{282475249}\verb| | $$
$$ \tag{*} \left| \frac{\sum_{a=1}^{117649}{a^6}}{117649}-\frac{1}{42} \right|_{7}=\frac{1}{13841287201}\verb| | $$
$$ \tag{%o9} \mathbf{done} $$

確かにどんどん0に近づいていることがわかります。

もう一例、k=8, p=13で試してみましょう。
(%i10) bern(8)=bern(8);
$$ \tag{%o10} -\frac{1}{30}=-\frac{1}{30} $$
(%i11) witt135:ev(witt,p:13,k:8);
$$ \tag{%o11} \left| \frac{\sum_{a=1}^{13^{N}}{a^8}}{13^{N}}+\frac{1}{30} \right|_{13} $$
(%i12) for N:1 thru 6 do print(ev(witt135)=ev(witt135,nouns));
$$ \tag{*} \left| \frac{\sum_{a=1}^{13}{a^8}}{13}+\frac{1}{30} \right|_{13}=\frac{1}{169}\verb| | $$
$$ \tag{*} \left| \frac{\sum_{a=1}^{169}{a^8}}{169}+\frac{1}{30} \right|_{13}=\frac{1}{28561}\verb| | $$
$$ \tag{*} \left| \frac{\sum_{a=1}^{2197}{a^8}}{2197}+\frac{1}{30} \right|_{13}=\frac{1}{4826809}\verb| | $$
$$ \tag{*} \left| \frac{\sum_{a=1}^{28561}{a^8}}{28561}+\frac{1}{30} \right|_{13}=\frac{1}{815730721}\verb| | $$
$$ \tag{*} \left| \frac{\sum_{a=1}^{371293}{a^8}}{371293}+\frac{1}{30} \right|_{13}=\frac{1}{137858491849}\verb| | $$
$$ \tag{*} \left| \frac{\sum_{a=1}^{4826809}{a^8}}{4826809}+\frac{1}{30} \right|_{13}=\frac{1}{23298085122481}\verb| | $$

この場合も確かに0に近づくことがわかります。