Wednesday, 22 January 2020

小説 パズルの軌跡 穂瑞沙羅華の課外活動

2009年 機本伸司著 角川春樹事務所

16進数 級数

大学を卒業して就職したばかりの青年と,飛び級で同じ大学を卒業してから普通の高校生になった物理学の天才少女が,ある企業の依頼で,同時期に多数起こった失踪事件を追うという話です.

16進数
窓は一つしかない。その横に、テンキーが並んでいる。いや、正確にはテンキーではなく、十六進数の特殊キーである。つまり、0から9までの数字の他に、AからFまで、アルファベットのキーがある。
沙羅華は、先生の方をちらりと見た。
「ドアのパスワードは、変えてないわよ」と先生が言う。「前にあなたと相談したときのまま」
沙羅華は軽くうなずくと、人さし指で "221B"と押した。
16進数は,ドラマ「すべてがFになる」にも登場しました.10進数が0~9という10個の数字を使って,$1$の位,$10$の位,$10^2$の位…と表され,2進数は0と1という2つの数字を使って,$1$の位,$2$の位,$2^2$の位…と表されるように,16進数は0~9とA~F(10から15)という数字と文字を15個使って,$1$の位,$16$の位,$16^2$の位…と表されます.

例えば,10進数表記の$$8731=8×10^3+7×10^2+3×10+1×1$$を2の累乗の和で表すと,\begin{eqnarray}
8731&=& 8192+512+16+8+2+1 \\
&=&  2^{13}+2^9+2^4+2^3+2+1
\end{eqnarray}なので,2進数表記では$10001000011011$となります.

この小説に登場した16進数表記の 221B を10進数表記で表すと,\begin{eqnarray}
221B &=&2×16^3+2×16^2+1×16+B×1 \\ &=&2×16^3+2×16^2+1×16+11×1 \\
&=&  8731
\end{eqnarray}なので,16進数表記の 221B は,10進数表記の 8731 を意味します.

10進数は人間にとって分かり易いが,コンピューターでは 0か1 (on/off) の2進数が扱い易い.しかし桁数が大きくなってしまう.そこで16進数なら桁数が少なくて済むし,2の累乗なのでコンピューターでも扱い易い.というわけでコンピューターでは16進数がよく使われているそうです.

10進数の4桁は,数字の並べ方が$10^4=10000$通りに対して,16進数の4桁は,$16^4=65536$通りあり,セキュリティ面では約6.55倍の強さがあるといえます.

級数
<著者あとがき>
こうして"究極の疑間"に挑戦し続ける彼女の姿は、数学に出てくる"級数"に似ているかもしれません。整数nの値が一つ増えるごとに、解も変化していくわけです。
そして彼女はまだ、大きく揺らいでいる。果たして何らかの値に"収束" するのか、それとも"発散"するのか……。そんなふうに"極限値"を探りながら、彼女の旅は続くことになりそうです。
ヒロインの生き方を級数で比喩しているわけですが,級数は数列の和を意味し,有限和はそのひとつひとつがまた数列になりますから,用語は数列でも級数でも良かったと思います.また「解も変化していく」という表現よりは「値も変化していく」の方が適切でしょう.

級数の極限で簡単なものを見てみましょう.$$\frac{1}{2}+\frac{1}{2^2}+\frac{1}{2^3}+\frac{1}{2^4}+・・・$$は,初項$\frac{1}{2}$,公比$\frac{1}{2}$の無限等比級数ですから,n項までの和$$S_n=1-\left( \frac{ 1 }{ 2 } \right )^n $$からその極限を考えると,$\left( \frac{ 1 }{ 2 } \right )^n$は限りなく0に近づくので,$$\lim_{n \to \infty} S_n=1$$とするのが高校までのやり方ですが,より厳密なε-N論法を使ってこのことを証明してみましょう.

上の$\displaystyle \lim_{n \to \infty} S_n=1$という式は,ε-N論法では次のように表されます.$$\forall \varepsilon >0, \exists N\in\mathbb{ N }, \forall n \gt N \Rightarrow |S_n-1|<\varepsilon$$この式を意訳すると次のようになります.「どんなに小さい正の数 $\varepsilon$が与えられても、ある自然数$N$をうまく決めれば,それより大きい自然数nでは, $S_n$と$1$との差を$\varepsilon$より小さくできる」$$|S_n-1|=|1-\left( \frac{ 1 }{ 2 } \right )^n-1|=\left( \frac{ 1 }{ 2 } \right )^n<\varepsilon$$が成り立てばいいので,$$\left( \frac{ 1 }{ 2 } \right )^n<\varepsilon$$を解くと,$$n>\log_{\frac{1}{2}}\varepsilon$$Nをこの値より小さい最大の自然数にすれば,証明したい式が成り立ちます.例えば$\varepsilon=10^{-4}$が与えられたとすると,$\log_{\frac{1}{2}}10^{-4}=13.28・・・$となるので,N=13と決めれば,それより大きい自然数nはすべて$|S_n-1|<\varepsilon$を満たします.

[参考]
パソコンはなぜ16進数を好むのか?
http://www.buturigaku.net/sub03_Spot/ICT/hex.html