-100は何桁の整数?

皆さん「桁」ってご存じですか?1053は4桁の数とか、あんなかんじのやつです。ところでこの桁(ここで議論したいのは厳密には「桁数」と呼ばれる数)というもの、負の整数にはどう定義されているのか気になったので考えてみました!

1.文字数

1053という数は4文字の数字によって表現されます。このとき、例えば-45という数は-と4と5の3文字によって構成されるため3文字と言えるでしょう。ただしこの定義では001053は6桁と主張出来てしまい、1053=001053であるためこれは一意に定義できません。そこで頭の0は無視するというルールを付け足します。この定義に従うと0は0桁ということになります。

2.対数を用いた定義

一般に、N進法における自然数nの桁数は⌊1+log_N(n)⌋と等しいことが知られています。ここから自然に桁を拡張することを考えたいのですが、log_Nは正の数に対してのみ定義されているためこのままでは用いることができません。

そこで、複素対数関数というものを考えます。つまり、yが複素数の時にy=e^xとなるようなxの値を考えることにします。ただしe^(2πi)=1であることに注意すると、y=e^xが成り立つ時y=e^(x+2πi)とかも成り立ってしまうためこのままでは一意に定まりません。これは以下のように解決します。Log(z):=log(|z|)+iArg(z)と複素対数関数を定義するとこれは0でない複素数を虚部が(-π,π]に含まれる複素数へ移す関数になります。またLogの逆関数は指数関数となります(証明は書かないので気になったら自分で確かめるなりググるなり)。また、正の実数の時と同じようにLog_N(n)=Log(n)/Log(N)と定義します。

では本題に戻りましょう。0を除く複素数zについて、その整数部分の桁数を⌊1+Log_N(z)⌋と定義することにします。このとき、十進法における-100の桁数は⌊1+Log_10(-100)⌋=⌊3+πi⌋……って待って?

床関数も複素数上で定義されてなくない??????

床関数を複素領域に拡張した方のブログ記事を発見したため今回はこちらを使わせて頂くことにします。この定義に従うと-100の桁数は⌊1+Log_10(-100)⌋=⌊3+πi⌋=2であることが分かりました!

ちなみに-101の桁数は⌊3+log_10(1.01)+πi⌋=3です。

まとめ

いかがでしたか?定義のところで「整数部分の」という言い回しをしているのは複素数に対してもこの定義を適用したいと思った時にカバーできるようにするためです。複素数における整数って何でしょうか。まぁ今回の定義だと|z|∈ℤとなるzが複素数上に拡張された整数だと思うのが自然だと思います、知らんけど。

それでは次回またお会いしましょう。

この記事が気に入ったらサポートをしてみませんか?