無限小数と 0.999…
この文章をご覧になっている皆さんはタイトルにある「1 = 0.999…」論議を見たことがあるという方も少なくないでしょう. 1 と 0.999… は等しいのだと言う人がいる一方, 0.999… は 1 に"限りなく近い"数であってそれは 1 とは異なるものなのだという人も少なくないです. ここではまず 1 = 0.999… であることを証明し, その後でなぜ 1 ≠ 0.999… 論が存在するのかを考えていきたいです.
そのためには, そもそも数 0.999… とは何なのかを明らかにしておく必要があります. 最初にこれから先の議論を円滑に行うためにいくつかの記号を導入します.
数列
まずは数列を表す記号を定義します. 通常, 書籍等では a, b, x, y といったアルファベットの右下に 1 や 2, n, m といった数字や記号を小さく添えて数列の第 1 項, 第 2 項,…, 第 n 項などを表すことが多いです. またテキスト形式で記述する場合, アルファベットにアンダーバーを添えて a_1, a_2,…, a_n と書かれることもあります. しかしここでは数列は自然数全体(など)を定義域とする関数であるという立場から, 数列 a の第 n 項を a(n) と書き表します. また数列 a は (a(n)) とも書きます. 波括弧 {} を用いて数列を {a(n)} と書きあらわす記法はここでは用いません. 演算の順序などを表すためにも丸括弧は用いていますが, それを数列と混同してしまうことはおそらくないでしょう.
数列の極限
1 = 0.999… の議論を行う上で避けては通れないのがこの数列の極限です. 素朴に定義するのであれば次のようになるでしょう.
数列 (a(n)) の第 n 項 a(n) について, n を限りなく大きくしたとき a(n) がある実数 c に限りなく近づくならば, 数列 (a(n)) は c に収束するといい, c を数列 (a(n)) の極限値という. 収束する数列 (a(n)) の極限値を lim a(n) と書く:
lim a(n) = c.
ここでは数列の極限しか考えないため, lim の下側に通常書かれる n → ∞ は省略して単に lim と書くことにしています.
(厳密には次のように定義されます. この形での厳密な議論は行わないため読み飛ばして構いません.
数列 (a(n)) と実数 c が条件
任意の正の数 ε に対して, n > N であるような任意の自然数 n に対して
|a(n) - c| < ε
となるような自然数 N が存在する.
を満たすとき, 数列 (a(n)) は c に収束するといい, c を数列 (a(n)) の極限値という. このような c が存在するとき単に, 数列 (a(n)) は収束するという. 数列 (a(n)) が収束するとき, (数列の極限値は存在すればただ一つであるから) 極限値を lim a(n) と書く.
上記の条件は砕けた表現をすれば, どんな正の数 ε に対しても(仮にそれがどれだけ小さくても), N を十分大きくとればその N の先にあるすべての n について, a(n) と c の距離が ε より小さくなるということです. これは a(n) の収束について最初に述べた素朴な定義のように"限りなく大きく"とか"限りなく近づく"といったあいまいな表現を用いずに表されています)
注: 数列 (a(n)) が収束しその極限値が c であるとき, この極限値 c 自身を記号 lim a(n) で表します. 従って lim a(n) は c に"限りなく近い数"というよくわからないものではなく, c そのものです.
例: a(n) = 1/n として数列 (a(n)) を定めると n を限りなく大きくしたとき a(n) は限りなく 0 に近づきます. 従って lim a(n) = 0. (lim a(n) は"0 に限りなく近い数"ではなく 0 自身です)
べき乗
a を実数, n を非負の整数とする. a の n 乗 a^n を次で定める.
a^0 = 1
a^n = (a^(n-1))*a (n > 0).
つまり a^n は a を n 回かけ合わせた数です.
さて, 0.999… が 1 に等しいことを証明するのですがその前に無限小数とは何かを明確にしておかなければならないでしょう. 無限小数という名の実数が定義されていたとすれば, それはどのような性質を持つべきでしょうか.
いま無限小数の定義は不明ですが, 例えば x = 0.123125… という(循環しているとは限らない)無限小数と呼ばれる実数が与えられたとき, 自然数や有限小数と類似の性質として, 次を満たすべきであると考えてよいでしょう.
無限小数 x の小数第 n 位の値を a(n) とする, すなわち
a(1) = 1, a(2) = 2, a(3) = 3, a(4) = 1, a(5) = 2, a(6) = 5, …
とする. 無限小数を小数第 n 位までで打ち切って作られる有限小数を s(n) とする, すなわち
s(n) = 0.123125…a(n)
とする. このとき無限小数 x と任意の自然数 n に対して
s(n) ≦ x ≦ s(n) + 1/(10^n)
が成り立つ.
上記性質は n = 1 から順に具体的に書き上げると見やすいです.
0.1 ≦ 0.123125… ≦ 0.1 + 1/10 = 0.2
0.12 ≦ 0.123125… ≦ 0.13
0.123 ≦ 0.123125… ≦ 0.124
0.1231 ≦ 0.123125… ≦ 0.1232
0.12312 ≦ 0.123125… ≦ 0.12313
0.123125 ≦ 0.123125… ≦ 0.123126
…
上記の無限小数 x と x から得られた有限小数 s(n) についての評価式より(辺々から s(n) を引くと)
0 ≦ x - s(n) ≦ 1/(10^n)
が成り立ちます. n を限りなく大きくすると 1/(10^n) は限りなく 0 に近づくから x と s(n) の距離 x - s(n) は限りなく 0 に近づきます, すなわち s(n) は x に収束します.
従って, 上記の考察を逆にとって下記のように, 無限小数とは適当な有限小数の極限として定義されると考えるのが妥当でしょう.
無限小数
数列 (a(n)) の各 n 項は 0 以上 9 以下の整数値をとるとする. 数列 (s(n)) を次で定める
s(1) = a(1)/10 = 0.a(1)
s(2) = s(1) + a(2)/100 = 0.a(1)a(2)
s(3) = s(2) + a(3)/1000 = 0.a(1)a(2)a(3)
…
s(n) = s(n-1) + a(n)/(10^n) = 0.a(1)a(2)a(3)…a(n)
…
すなわち s(n) は数列 (a(n)/(10^n)) の第 1 項から第 n 項までの和であるとする. このとき(s(n) が収束するならば) s(n) の極限値 lim s(n) を a(n) を並べて 0.a(1)a(2)a(3)… と書く:
0.a(1)a(2)a(3)… = lim s(n).
ここまで準備を終えたところでようやく 1 = 0.999… を証明することができます. 0.999… は 全ての項が 9 である数列 (a(n)) により定まる数列 (s(n))
s(n) = 0.a(1)a(2)a(3)…a(n) = 0.999…9
の極限値です. s(n) = 1 - 1/(10^n) より lim s(n) = 1 ですから 1 = 0.999… です.
注1: 実数の基本的な性質を知っていれば, 数列 (a(n)) の循環如何にかかわらず数列 (s(n)) は上に有界で(広義の)単調増大列であることから数列 (s(n)) は収束することがただちにわかりますが, おそらく高校数学の範囲外です. (ただしこれと同等な主張を"明らかなこと"として高校数学では取り扱っています)
注2: 中学校において, 循環小数 0.121212… は x = 0.121212… とおいて
100*x - x = 12
99*x = 12
x = 12/99
というように循環小数と, それに循環節の長さ分だけ 10 をかけたものとの差をとると, 無限に続く部分を消し去ることができてもとの分数を求めることができるということを習いますが, この計算方法は極限の性質から次のように正当化されます.
無限小数 0.121212… は数列 s(1) = 0.1, s(2) = 0.12, s(3) = 0.121,… の極限値である. 任意の n > 2 に対して
100*s(n+2) - s(n) = 12
であり s が収束することと, 収束列の性質から
100*(lim s(n)) - lim s(n) = 12
従って
lim s(n) = 12/99
となる.
一般には小数第 i 位から小数第 j 位が循環節であるとき, 任意の n > i に対して
(10^(j-i+1))*s(n+(j-i+1)) - s(n)
が定数になることからこの計算方法が正しいことがわかります.
収束列の部分列は同一の極限値を持つため, 0.12 12 12 … のように等比級数として求める手法も正しいです: lim s(n) = lim s(2*n) = (12/100)/(1-1/100) = 12/99.
注1を知らない場合でも s(n) の極限値にあたりをつけられる場合には, 直接それに s(n) が収束することを示すのも良いと思います.