コンバンハー(´∀`∩
十進法を一般化した記数法を定義してMinecraft計算機に使ったCORDICアルゴリズムの10進数化の解説に繋げたいと思って書きました。
まず初めに使用する記号の定義をまとめて書いておく。
意味は具体例を通して考察する。
(用語は独自です。先行研究は具体例で述べた部分以外は独力でやったものなのであるかどうか知りません。)
実数全体の集合
任意の
一方で分解が唯一つに定まらないときは「分解は冗長である」と呼ぷ。
任意の
まずはこれがb進法を抽象化し、一般化したものであることを確認する。
一応例示すると、10進数の場合
で、分解は
また、N桁以下の非負実数全体は
また
別の例について見る。
3進法と似ているが、表示の集合
2進数と似ているが、この場合は冗長性がある。例示すると
今までは
例えば
ググれば多分情報は出るので詳しくは省略するが、これも面白い数の表現方法である。
(思い付いた時は感動しました。)
分解は完全かつ一意的である。(確か一意性の証明が東大の過去問にあったっけな)
ここまでは全て完全なものを考えてきたが、不完全な例も簡単に作ることができる。
実際、99などの分解は10の位が欠損していることから集合の範囲内で実行できない。また分解は一意的である。
次も不完全な例である。
例1,2,3,6を踏まえて一般化すると次のようなことがわかる。
次も興味深い例である。
Fibonacci数列を
任意のkに対し
ただし
これをZeckendorf表示と呼び、分解は完全でかつ条件付きで一意的であるという著しい性質を持つ。ググると証明がある。
具体例を通して性質を見てきたところで、分解が完全であるかどうかを基底から判別する方法について考察する。
幾つかの仮定をする。
任意の
例1のb進数で考えると、仮定と命題2の条件は満たされていることがわかる。
となるので命題はこの場合正しいことがわかる。次に補題1の状況で考えると
基底の分解が完全であることは同値なので上の命題は十分条件になると捉えられる。
次に
ここで
で命題2より
となる。集合
は
CORDICアルゴリズム導入部分に話をつなげる。
これが命題2の条件を満たすことを証明しよう。
加法定理より
であることを何回か使うと
任意の
なので命題の条件は満たされる。
なので仮定を満たすことがわかる。これで命題2より基底は完全であることが証明された。
最後に十進CORDICアルゴリズムの収束性について同様の考察をする。
(便宜上
基底の完全性の証明は二進CORDICと同様に行う。
ただし、
命題2よりこの基底は完全である。
の部分を見ると
この話を用いて次の記事ではMinecraftのために少し変更した十進CORDICアルゴリズムを解説したい。