前回の記事:
では五角数定理の係数と約数和関数の漸化式の間の不思議な関係について、現象論的に紹介しました。これは黒川先生の本(上記記事で紹介)の最後の方に載っているお話です。
(%i1) :lisp (progn (ql:quickload :drakma)(ql:quickload :maxima-asdf))
(%i1) install_github("YasuakiHonda","qsexpand","master")$
(%i2) asdf_load("qsexpand")$
上記3行は色々設定しないと動きません(それは別記事で)。その代わりに、
https://github.com/YasuakiHonda/qsexpand/raw/master/qsexpand.lisp
からqsexpand.lispファイルをダウンロードして保存して、
(%i2) loadfile("qsexpand.lisp")$
でも準備完了です。
ここまでは準備でした。まず前回のおさらいです。これが五角数定理の左辺に現れる無限積です。
(%i3) qpoly1:product((1-q^n),n,1,inf);
$$ \tag{%o3} \prod_{n=1}^{\infty }{\left(1-q^{n}\right)} $$
(%i4) powerdisp:true$
この無限積を100次まで展開してみます。
(%i5) qsexpand(qpoly1,100);
$$ \tag{%o5} 1-q-q^2+q^5+q^7-q^{12}-q^{15}+q^{22}+q^{26}-q^{35}-q^{40}+q^{51}+q^{57}-q^{70}-q^{77}+q^{92} $$
この時、適当な自然数Nの約数の総和と、Nから上記の次数を引いて約数和を取り上記の係数をかけたものを足し合わせると、両者が一致する、という現象が、前回ご紹介したことでした。自然数の約数の総和関数にはある漸化式が成り立つ、ということになります。
例えばN=27の時、どちらも40になります。
(%i6) divsum(27);
$$ \tag{%o6} 40 $$
(%i7) divsum(27-1)+divsum(27-2)-divsum(27-5)-divsum(27-7)+divsum(27-12)+divsum(27-15)-divsum(27-22)-divsum(27-26);
$$ \tag{%o7} 40 $$
N=51の時は、どちらも72になります。ただしNから次数を引いた約数和の計算で最後の項は一見、取り扱いが違うように見えます。
(%i8) divsum(51);
$$ \tag{%o8} 72 $$
(%i9) divsum(51-1)+divsum(51-2)-divsum(51-5)-divsum(51-7)+divsum(51-12)+divsum(51-15)-divsum(51-22)-divsum(51-26) + divsum(51-35) + divsum(51-40) - 51;
$$ \tag{%o9} 72 $$
黒川先生の本のp157から証明のヒントが載っています。これをMaximaで追ってみる、というのが今回の試みです。最終的に自然数の約数の総和関数に成り立つ漸化式をきっちりと求めます。
早速、五角数定理の左辺の無限積をP(q)と置いてみます。
(%i10) P(q)=qpoly1;
$$ \tag{%o10} P\left(q\right)=\prod_{n=1}^{\infty }{\left(1-q^{n}\right)} $$
両辺のlogを取ると右辺は無限和になります。この計算は残念ながらコマンド一発ではできません。
(%i11) log(P(q))=log(qpoly1);
$$ \tag{%o11} \log P\left(q\right)=\log \prod_{n=1}^{\infty }{\left(1-q^{n}\right)} $$
(%i12) logP:log(P(q))=sum(log(1-q^n),n,1,inf);
$$ \tag{%o12} \log P\left(q\right)=\sum_{n=1}^{\infty }{\log \left(1-q^{n}\right)} $$
内側のlogの部分を冪級数に展開してみます。
(%i13) logP21:powerseries(part(%,2,1),q,0);
$$ \tag{%o13} -\sum_{\mathrm{i1}=1}^{\infty }{\frac{q^{\mathrm{i1}\,n}}{\mathrm{i1}}} $$
総和のインデックス変数がi1では見難いのでmにして、見易くします。
(%i14) logP21:block([niceindicespref:[m]],niceindices(logP21));
$$ \tag{%o14} -\sum_{m=1}^{\infty }{\frac{q^{m\,n}}{m}} $$
この式をqで微分します。
(%i15) qdlogP21:intosum(q*diff(logP21,q));
$$ \tag{%o15} \sum_{m=1}^{\infty }{\left(-n\,q^{m\,n}\right)} $$
(%o12)の両辺を微分し、右辺は項別微分を(%o15)で変形します。左辺は対数微分になること、右辺は二重和になることに気をつけましょう。
(%i16) qdlogP:q*diff(lhs(logP),q)=substpart(qdlogP21,rhs(logP),1);
$$ \tag{%o16} \frac{q\,\left(\frac{d}{d\,q}\,P\left(q\right)\right)}{P\left(q\right)}=-\sum_{n=1}^{\infty }{n\,\sum_{m=1}^{\infty }{q^{m\,n}}} $$
右辺の二重和は数論的関数の母関数の式変形でたまに出てくる大切な形です。この二重和は約数和に変形できるのです。以下に二重和の展開と約数和を係数とする級数を計算して、一致していることをみます。ここはじっと睨んで納得してください。
(%i17) firstn(ev(sum(sum(n*q^(m*n),m,1,N),n,1,N),N:10),10);
$$ \tag{%o17} q+3\,q^2+4\,q^3+7\,q^4+6\,q^5+12\,q^6+8\,q^7+15\,q^8+13\,q^9+18\,q^{10} $$
(%i18) sum(divsum(n)*q^(n),n,1,10);
$$ \tag{%o18} q+3\,q^2+4\,q^3+7\,q^4+6\,q^5+12\,q^6+8\,q^7+15\,q^8+13\,q^9+18\,q^{10} $$
ここからの計算ではdivsum()関数が頻出しますので、σで表示することにします。Maximaの約数和関数divsum()は1変数あるいは2変数の形があり、divsum(n,k)はnの約数のk乗和、divsum(n)はdivsum(n,1)のこととなります。
(%i19) (texput(divsum,"\\sigma"), powerdisp:false)$
(%i20) substpart(divsum(n)*q^n,qdlogP,2,1,1);
$$ \tag{%o20} \frac{q\,\left(\frac{d}{d\,q}\,P\left(q\right)\right)}{P\left(q\right)}=-\sum_{n=1}^{\infty }{\sigma\left(n , 1\right)\,q^{n}} $$
両辺にP(q)をかけて整理します。
(%i21) %*P(q);
$$ \tag{%o21} q\,\left(\frac{d}{d\,q}\,P\left(q\right)\right)=-P\left(q\right)\,\sum_{n=1}^{\infty }{\sigma\left(n , 1\right)\,q^{n}} $$
P(q)は元々冪級数です。その係数を\(a_m\)とすると以下のように表示できます。
(%i22) Pq:sum(a[m]*q^m,m,0,inf);
$$ \tag{%o22} \sum_{m=0}^{\infty }{a_{m}\,q^{m}} $$
P(q)の冪級数展開の微分にqをかけた式も求めます。
(%i23) qdPq:substpart(q*diff(part(Pq,1),q),Pq,1);
$$ \tag{%o23} \sum_{m=0}^{\infty }{m\,a_{m}\,q^{m}} $$
これらの冪級数展開系を(%o21)の両辺に代入してみます。
(%i24) Q1:qdPq=-Pq*sum(divsum(n,1)*q^n,n,1,inf);
$$ \tag{%o24} \sum_{m=0}^{\infty }{m\,a_{m}\,q^{m}}=-\left(\sum_{m=0}^{\infty }{a_{m}\,q^{m}}\right)\,\sum_{n=1}^{\infty }{\sigma\left(n , 1\right)\,q^{n}} $$
もう少しだけ右辺を計算します。この総和の積はコーシー和という二重和の形に変形することができます。Maximaが自動的に計算してくれます。
(%i25) Q2:Q1,sumexpand:true,cauchysum:true;
$$ \tag{%o25} \sum_{m=0}^{\infty }{m\,a_{m}\,q^{m}}=-\sum_{\mathrm{i2}=1}^{\infty }{\sum_{\mathrm{i3}=0}^{\mathrm{i2}-1}{\sigma\left(\mathrm{i2}-\mathrm{i3} , 1\right)\,a_{\mathrm{i3}}\,q^{\mathrm{i2}}}} $$
右辺をよく見ると、ある数から別の数を引いて約数和を取った形が登場しました!
インデックス変数を置き換えてみ易くします。
(%i26) Q3:lhs(Q2)=block([niceindicespref:[n,m]],niceindices(rhs(Q2)));
$$ \tag{%o26} \sum_{m=0}^{\infty }{m\,a_{m}\,q^{m}}=-\sum_{m=1}^{\infty }{\left(\sum_{n=0}^{m-1}{\sigma\left(m-n , 1\right)\,a_{n}}\right)\,q^{m}} $$
両辺の係数が一致するはずですね。
(%i27) cQ4:coeff(part(Q3,1,1),q^m)=-coeff(part(Q3,2,1,1),q^m);
$$ \tag{%o27} m\,a_{m}=-\sum_{n=0}^{m-1}{\sigma\left(m-n , 1\right)\,a_{n}} $$
右辺の総和のn=0の場合だけを総和の外に出します。
(%i28) cQ5:lhs(cQ4)=block([inn:part(cQ4,2,1,1)],-ev(inn,n:0)-sum(inn,n,1,m-1));
$$ \tag{%o28} m\,a_{m}=-\sum_{n=1}^{m-1}{\sigma\left(m-n , 1\right)\,a_{n}}-a_{0}\,\sigma\left(m , 1\right) $$
総和の外に出した項を求める形にしてみます。\(a_{0}=1\)を使います。
(%i29) final:solve(cQ5,divsum(m,1)),a[0]=1;
$$ \tag{%o29} \left[ \sigma\left(m , 1\right)=-\sum_{n=1}^{m-1}{\sigma\left(m-n , 1\right)\,a_{n}}-m\,a_{m} \right] $$
これが求める約数の総和関数に成り立つ漸化式です。この最後の項\(-m\,a_{m}\)は\(a_m\)が\(0\)かどうかで現れたり消えたりします。これが51の時の最後の項の違いだったのです。
実際に五角数定理の左辺の展開系の係数を取り出して\(a_m\)に格納します。
(%i30) (powerdisp:true,qsexpand(qpoly1,100));
$$ \tag{%o30} 1-q-q^2+q^5+q^7-q^{12}-q^{15}+q^{22}+q^{26}-q^{35}-q^{40}+q^{51}+q^{57}-q^{70}-q^{77}+q^{92} $$
(%i31) for i:1 step 1 thru 100 do a[i]:coeff(%,q,i);
$$ \tag{%o31} \mathbf{done} $$
実際にm=27, m=51で計算して両辺が40, 72になることを確認しておきましょう。
(%i32) final,m:27;
$$ \tag{%o32} \left[ 40=-\sum_{n=1}^{26}{\sigma\left(27-n , 1\right)\,a_{n}} \right] $$
(%i33) %,nouns;
$$ \tag{%o33} \left[ 40=40 \right] $$
(%i34) final,m:51;
$$ \tag{%o34} \left[ 72=-51-\sum_{n=1}^{50}{\sigma\left(51-n , 1\right)\,a_{n}} \right] $$
(%i35) %,nouns;
$$ \tag{%o35} \left[ 72=72 \right] $$