todo (mod⋆) が抜けている場所の修正あるいは (mod⋆) をすべて略すか?
~はじめに~
公式解説 同様の考察ステップを踏み, 10 の剰余を 5 と 2 の剰余に分けて考えることで,
a0=2,a1=3,an+2=3an+1+an(mod5)
と定めた時に an=1(mod5) なる n の決定が目標となります.
すると, 公式解説にもあるように数列の周期性を利用が得策のようです.
本ユーザー解説ではこの周期の発見及びその後の処理を楽に行う方法について説明します.
~具体的な方法~
bn:=anan+1(mod5) とします. bn の前 4 項を愚直に計算をすると, 4,2,1,4 となっています.
ここで, bn+1 は bn の値のみから定まります.
実際, an+2=3an+1+an=an+1(3+bn1) より, bn+1=3+bn1(mod5) です.
すなわち, b は 4,2,1,4,2,1,4,2,1,… と周期 3 で繰り返すことがわかります.
(注: b は an=0 とならないため, 今回の数値設定の元で定義できているように感じるかもしれません. しかし実際には bn=0 となる場合でもある種の正当化ができます. 詳細は次節へ)
今,
- anan+1 は 4,2,1,4,2,1,4,… と周期 3 で繰り返す.
- a3=3a0(mod5) である.
が分かっています.
ここで, 周期性から a0a1=a3a4 であるので, a4=3a1(mod5) が分かります. 以下同様にして, an+3=3an(mod5) が全ての n で成り立ちます.
以上から, a の前 3 項の値 (2,3,1) と併せて,
an=⎩⎪⎪⎨⎪⎪⎧2×3m3m+13m(nmod3=0)(nmod3=1)(nmod3=2)
と求まります. ただし, m=⌊3n⌋ とし, an 直後の等号はmod5 で考えています.
さらに, 3 の 5 を法とした位数が 4 であることを用いると, 以下が分かります.
- 数列 a(mod5) は周期 12 である.
- n=0,1,…,11 の中に an=1(mod5) なる n は丁度 3 つあり, それら n の 3 での剰余は全て異なる.
さらにさらに今回都合の良いことに, a3=a4=1 を愚直計算の際に既に知っており, 残りの n=1(mod3),an=1(mod5) を満たす n に関しても, 34=1(mod5) から, n=10 がたちどころに得られます.
以上から n=2,3,10(mod12) の時に an=1(mod5) となるという結論を得られました.
~解説の解説~
この節では上記の解説について少しだけ深掘りします.
前節の解法の拡張
まずは前節の 注 で触れた, an=0 となりうる場合でも同様の手法が使えるという点について説明します.
今回は,
a0=a1=1,an+2=2an+3an+1(mod5)
で定まる数列の周期を考えることにしましょう.
この数列は, (1,1,0,2,1,2,3,3,0,1,3,1,4,4,0,3,4,3,2,2,0,4,2,4,1,1,…) のように, 24 項で 1 周期となります.
前節では, 周期を求めたい数列の, 隣接項の比の値を数列 b としていましたが, そうすると今回は 02 が出てきてしまうので, 代わりに, [1:1],[1:0],[0:2] のように比そのものを値として扱うことにします.
ただし, [0:0] は考えないこととし, [x:y] と [x′:y′] は,
{x=λx′(mod5)y=λy′(mod5) をともに満たすような λ=1,2,3,4 が存在する時に, 同じ値を表すとします.
例えば, {3=3×1(mod5)4=3×3(mod5) であるので, [3:4]=[1:3] です.
このようにすることで, [0:4]=[0:3] のように比の値では未定義となる場合をもカバーできます.
この記号の元で, 改めて bn=[an:an+1] と定めた列を考えます.
bn+1=[an+1:an+2]=[an+1:2an+3an+1] です.
つまり, f([x:y])=[y:2x+3y] として, bn+1=bn です.
ここで, [:] の取り扱い上で注意が必要な点に触れておきます.
今回定義した f([x:y])=[y:2x+3y] ですが, ちゃんと定義出来ているのは自明な事ではありません.
例えば, g([x:y])=[y:x2] とした g が定義できているか考えてみましょう.
g([2:4])=[4:4] のように, 一見ちゃんと計算できるようです. しかし, [2:4]=[1:2] とも表示できることを考えると, g([2:4])=g([1:2])=[2:1] とも計算できてしまいます. [4:4]=[2:1] であるので, これはあってはならないことです. つまり, g は正しく定義出来ていません.
一方, f([x:y])=[y:2x+3y] の場合, [x:y]=[λx:λy] のような別の表示をしても, f([λx:λy])=[λy:λ(2x+3y)]=[y:2x+3y] のように, 一貫した値が得られます. (このようにちゃんと定義できていることを 一般に 'well-defined' と言います. )
ともあれ, 今回の場合では f([x:y])=[y:2x+3y] とすれば, f(bn)=bn+1 となり, bn+1 の値が bn からのみ計算できると分かりました.
[x:y] として取りうる値は(考えていない [0:0] を除けば) [0:1], [1:0], [1:1], [1:2], [1:3], [1:4] の 6 種類のみです. よって, b として取りうる値も高々 6 通りのみであるので, 周期は 6 以下となります.
実際に, b=(b0=[1:1],[1:0],[0:1],[1:3],[1:2],[1:4],[1:1],…) と周期 6 となります.
ここまでくれば, 後は先ほどの場合と同様に, 3a0=a6 の計算と b の周期から a の周期及び各項の値が比較的簡単に求まります.
今回扱った概念について
今回扱った [x:y] のように, いくつかの値を組にして, 各成分が同じ定数倍で一致する時に等しい値とみなす空間を射影空間と言います. (通常全て 0 の組は考えません)
今回は整数に mod5 上の演算を入れた世界での射影空間 (記号で書くと, F5P や P(F5) と書かれがち) で数列の周期の発見のために導入しましたが, 競技数学の世界ではこの他に, 各成分が実数や複素数の場合などが射影幾何学と呼ばれるジャンルで現れるようです.