1=0.99999999...の話

 なんかここんとこ、気楽なさんすうネタを書いてねーな……と思ったので、なーんとなく思いついたことを書いてみる。タイトルの通りです。

中学生への教え方

 この「1=0.99999999…」を中学生に教えるときには、次のように説明するのが定番である。
 まず、A=0.99999999…と置く。
 すると、10A=9.99999999…である。
 よって、

10A=9.99999999…
- A=0.99999999…
= 9A=9.00000000…

となるので、最後の行を9で割り算してA=1を得る。
 この考え方の問題は、そもそも「0.99999999…」なる記号がなにを表しているかが明示されていないため、正しいか間違っているかを判定できないことだ。よって、厳密に議論しようと思えば、まず0.99999999…という記号がなにを表しているかをきちんと表明するべきである。

単調増加数列の極限

 というわけで、まずは単純にa_1=0.9, a_2=0.99, a_3=0.999,…という風にしてa_nという数列を定義し、その極限が0.99999999…である、ということにしてみよう。正式な定義としてはa_n=1-10^{-n}である。この場合、直接計算から

|1-a_n|=10^{-n}

となる。アルキメデスの原理の系から10^{-n}はn→∞のとき0に収束するため、a_nは1に収束しており、したがって0.99999999…=1である。
 この説明は極限の定義そのものとアルキメデスの原理という非常に単純な道具しか必要としないため、ε-N論法を習得した時点で完全に理解できるという意味で非常に美点があるが、中学生のときに習った上の証明となんの接点もないことが問題である。より中学生に近い証明はできないだろうか?

正項級数を用いた証明

 今度は、a_n=9×10^{-n}とし、正項級数Σa_nの極限を0.99999999…とする。a_1=0.9, a_2=0.09, a_3=0.009,…だから、直観的にこれでうまくいきそうだというのはわかると思う。正項級数は必ず収束するか発散するので、極限自体は必ず存在する。さらに、この級数の部分和は必ず1以下なので、極限0.99999999…も1以下であり、よってこの級数は絶対収束する。
 さて、次にb_n=10×a_nとしよう。するとb_1=9で、b_2=0.9、b_3=0.09…となるため、

Σ_{n≧2}b_n=Σa_n=0.99999999…

がわかる。一方、Σb_nは部分和がすべて10以下の正項級数なので絶対収束するが、絶対収束する級数はどのように足し算の順序を変えても極限が変わらないので、

Σb_n=b_1+Σ_{n≧2}b_n=9+0.99999999…

となる。さらに、b_n=10a_nなのだから、収束級数のよく知られた公式から

Σb_n=10Σa_n=10×0.99999999…

を得る。上から下を引き算すると、

0=9-9×0.99999999…

となるので、整理して0.99999999…=1を得る。
 この証明法は最初に紹介した中学生への教え方を収束級数の形でやり直したという点で興味深い。つまり、中学生への教え方で紹介したあの考え方は、この形でちゃんとした証明に書き直せるわけである。しかし一方で、この証明自体は最初の証明よりもずいぶん長くなってしまっている。つまり、あの証明は正しいが、大学レベルの数学を知ってしまっていると迂遠であると言える。
 なお、余談ではあるが、上で絶対収束する級数についての話を引用したが、実際には絶対収束していようとしてなかろうと、任意の収束級数Σc_nに対して

Σc_n=c_1+Σ_{n≧2}c_n

が成り立つことは簡単に示せる。これを利用するなら、上の証明はそれほど多くの知識を使っていないと見ることもできる。

十進小数展開の考え方

 いままでの考え方とは逆に、0.99999999…が定義から1になるような考え方もある。この考え方は十進小数展開というものと緊密に関係している。
 aを実数とする。このaの十進小数展開を考える。のだが、実はaの十進小数展開には二通りある。
 まず、整数a_0はN<aを満たす整数Nの中で最大のものとし、b_0はN≦aを満たす整数Nの中で最大のものとする。アルキメデスの原理から、a_0やb_0は必ず存在することが容易に示せる。
 次に、a-a_0=c_1とする。このとき、0<c_1≦1が成り立つ。そこでN<10c_1となる整数Nの中で最大のものをa_1とする。a_1は0から9までのどれかの数である。次に、10c_1-a_1=c_2として、N<10c_2となる整数Nの中で最大のものをa_2とする。以下これを続けて、a_3,a_4,a_5,…を得る。得た数を並べた

a_0.a_1a_2a_3…

というのが、数aの十進小数展開と呼ばれるもののひとつである。
 もちろんもうひとつの十進小数展開はb_0から始める。a-b_0=d_1とすれば、0≦d_1<1が成り立つ。そこでN≦10d_1となる整数Nの中で最大のものをb_1とする。以下同様にb_2,b_3,b_4…を定めていって、並べた

b_0.b_1b_2b_3…

というのが、数aのもうひとつの十進小数展開である。
 さて、上のaに1を代入すると、最初のa_nを用いた十進小数展開は

0.99999999…

となり、二番目のb_nを用いた十進小数展開は

1.00000000…

となる。したがって0.99999999…は1という数の十進小数展開のひとつだったわけである。簡単にわかるが、a≠bならばそれらの十進小数展開は必ず異なる値になるため、十進小数展開をひとつ指定することが、その数自体を指定することと一致する。よってこの考え方によれば、0.99999999…は1の十進小数展開であるから、定義から1と等しいと言える。
 最後に、任意のaに対して、aの十進小数展開をn桁目までで打ち切った値をa_nとすれば、a_nはaに収束することが比較的簡単に示せる。実は最初に紹介した「単調増加数列の極限」のところの証明は、本質的にこの事実を用いている。

実は1≠0.99999999…という話も

 最後に、この話をするとどうしても避けられない超実数の話をしておく。超実数は、実数を含む巨大な体である。そこには「無限大」や「無限小」の名で呼ばれる不思議な数があって、そのためにこの体ではアルキメデスの原理はもはや成り立たない。一方で、この超実数体を用いると、様々なことがうまくいくことがわかっている。たとえば、関数f(x)が点aで連続であることは、x-aが無限小なときにはf(x)-f(a)も無限小である、という主張と、ある意味で同値である。
 超実数の構成は、自然数上のウルトラフィルターを指定することから始まる。このウルトラフィルターはあらゆる有限集合を含まないことが要請される。そして、実数列(a_n)と(b_n)について、a_n=b_nとなるnの集合がこのウルトラフィルターに含まれることとして同値関係を作り、商集合を取る。この商集合が超実数である。実数aは、定数数列a_n≡aの同値類と同一視される。
 こうすると、0.99999999…は、a_n=1-10^{-n}という数列の同値類と見なせる。1は、定数数列a_n≡1の同値類と同一視される。この二つの数列は同値ではないため、超実数においては1≠0.99999999…である。なお、1-0.99999999…が、典型的な無限小の例である。
 このように、実数で考えていると0.99999999…をどう定義してもだいたい1=0.99999999…が成り立つのだが、超実数という別の枠組みで考えると成り立たない。だからこそ、この話の最初で述べたように、0.99999999…の定義が重要だったのである。中学生向けの説明では、誰もAが実数だと言っていないので、不十分なのだ。

 ふう、書きたいことを書いたのですっきりした。オチ? 特にないよ?

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