1=0.999999……?

とりあえず1らしい

 私が今まで目にした教科書などでは「 0.999999…… = 1 」と記述されていて『証明』が付けられていました。つまり、たいていの人は、1=0.999999…… を認めているでしょう。とはいえ「本当にそうなんですか?」と問い詰めると、やはりちょっと怯んでしまうこともあるかもしれません。だから、何事にも不屈の魂で望む人の中から、時に「いつまでたっても 0.999999…… は1にならないから、等しいはずはない!」という反論が出て来たりするのです。
 私は ―― 後に述べるとおり、この等式が成り立つと考えているのですが ―― このような「反逆者」的な態度は立派だと思います。何事にも疑問を持ち、納得のいくまで考えるという姿勢は大切です。もちろん、自分でもできるだけ論理的に考える、あるいは、相手のした説明が論理的かを真摯に検証することが前提です。(それをせずに、感情的な“議論”を繰り返すと敬遠されますので、お互い注意しましょう。)
 ということで、まずは今まで目にした『証明』を検証してみたいと思います。

分数を利用する

1/3 + 2/3 = 1 より 0.333333…… + 0.666666…… = 0.999999…… = 1

 もっとも頻繁に目にする説明の一つです。したがって反論もよくあって、「 1/3 = 0.333333…… 」は本当にそうなの?という突っ込みが入ることが多いです。まずここで等号が成り立たないのではないか、というわけですね。ここを認めてもらわないと等式の証明にはなりませんから、結局振り出しに戻るような感じもします。
 また、足し算は下の位から計算していくのが普通ということで「無限小数同士の加法を考えてよいものか?」という疑問が出てきたりします。例えば、0.666666…… ×2=1.333333…… ですが、“最後の”位に「2」が出現する心配もあって当然ですからね。
 このような疑問があると、ちょっと答えにくくなってしまうと思います。

わかったことにする

A=0.999999…… とおくと、10A=9.999999…… だから、10A-A=9 であり、A=1

 これもよく目にするパターンです。循環無限小数を分数になおすときに使うテクニックでもあります。しかし、これについても、上と同じように「無限小数同士の減法をしてよいものか?」という疑問が出てきます。

数列と極限の利用

{0.9, 0.99, 0.999, ……} という数列の極限を取る

 上記のような数列の極限が 0.999999…… なのだから当然「1」になる、という立場です。――後に補足しますが、これは最も正統な考え方だと思います。―― ただ、突然に極限が出てくるので戸惑いがあります。そして、数学III を学んでいない方には説明できない、という大きな欠点を持ちます。――まあ仕方ないか。(←解決策を期待した人、ゴメンナサイ。)

1=0.999999……を“説明”すると

"……" とは何か?

 そこで、真剣に説明しようと考えると、そもそも「 0.999999…… 」は何を意味する表記なのか? という解答を用意しなければならないことに気付きます。9が無限に続く……、「無限に続く」とはどういう数ですか? これを曖昧にしたままでは、議論は平行線を辿ってしまいます。
 ということで「 0.999999…… 」を含めた無限小数の定義を考えてみました。もしかしたら、どこかの数学の教科書に載っているかもしれませんが、残念ながら私が持っている『解析概論』からは該当する記述を発見できませんでしたので、自分で捻り出したものです。不備な点があれば指摘してください。また、正式な記述のある書籍をご存知でしたら教えてください。
 なお、以下から急に難しくなるかもしれません。

実数αをN進法小数で表記する規則

実数αをN進法小数で表記する規則を以下のように定義する。

(1) 最初の定義

[α] を a_0 とする。また、α の小数点以下第n位を a_n とする。

 要するに、第k桁まで確定しているとき、
  α-S_k ≧ c * N^-(k+1) , 0 ≦ c < N で c は整数
 なる最大の数 c をもって a_k+1=c とする。( S_k については下記参照。)
 つまり、例えばαが j 位で確定するなら、a_n = 0 , n ≧ j+1 となる。

※ただし α が負のときは a_0 ⇒ [α]+1, α-S_k ⇒ -(α-S_k) かな? なお、a_0 はさらに分割できますが、整数部分の桁数は確定しますので、これでよいでしょう。

さらに、S_n=Σ[k=0,n]a_k * N^-k とおくと、当然
 α=lim_[n→∞]S_n ――(※)
が成り立つが、これによって、
 α=(a_0).(a_1)(a_2)(a_3)……
と表記することにする。

(2) 定義

ただし、b_0 および、n ≧ 1 のとき常に、
 0 ≦ b_n < N
なる項で構成される整数列 b_n があり、
 T_n=Σ[k=0,n]b_k * N^-k
 lim_[n→∞]T_n=α ――(※)
を満足するのであれば、
 (b_0).(b_1)(b_2)(b_3)……
でも α を表記できることにする。
逆に言えば、上記の b_n があるとき、T_n の極限値をもって、
 (b_0).(b_1)(b_2)(b_3)……
の値を定めることにする。

補足

 定義としては (2) のみで十分ですが、拡張的に考えたので (1) も沿えてあります。また、(1) は構成例であり、この定義によって、あらゆる実数 α に対して、それを表現する数列が少なくとも1つは存在することがわかります。

上記の定義を認めると……

{0.9, 0.99, 0.999, ……} の極限を取れば 0.999999…… の値がわかるわけで「1」になります。
また、はじめの方の説明では、
 A=0.999999…… に対して 10A-A ......
については、無限級数が収束することを利用しての、極限値を求めることの説明であったことがわかります。

定義だから

 さて、お気づきの人も多いかと思いますが、上記の説明は「そう定義されているから」としてしまってもよいくらいです。ですが、『無限小数』として何時の間にか使ってしまっている『無限』を、極限の概念を用いて厳密に定義できたと思うので、承認できるものではないでしょうか。

著作・制作/永施 誠
e-mail; webmaster@stardustcrown.com