April 22, 2017

なんで 0.99999… = 1 なの?

昔、疑問に思っていた事を、ふと思い出した。

0.99999… = 1

これは本当だろうか? 正しい気もした、間違っているきもした。

1 / 3 = 0.33333...
0.33333... x 3 = 0.99999...
1 / 3 x 3 = 1
よって、0.99999... = 1 は正しい
0.9 < 1
0.99 < 1
0.999 < 1
このように、0.9 の後にどれだけ 9 を付け足しても 1 より小さい
よって、0.99999... < 1
よって、0.99999... = 1 は間違い

どちらの考え方も一見正しいように見えるが、正反対の結論になってしまった。

実は、この議論を始めるために最初に確認しなくてはいけない事がある。 0.99999… とは何だう?

0.9 の後に 9 を無限個、続けた数字? 「無限」って整数だったの? 整数って事は、偶数か奇数のどちらかだ。 「無限」って偶数?奇数?

「無限」について数学的に正しく扱う事は簡単ではない。 だが、ここが上の議論で一番重要な点だ。 0.33333… や 0.99999… を正しく定義できれば、このパラドックスは理解できる。

「無限」という言葉を使うと難しくなるので、その言葉を使わずに 0.99999… を定義してみよう。 以下のような数列 an を考える。

  • a1 = 0.9

  • a2 = 0.99

  • a3 = 0.999

ちなみに、数学的に厳密に書くと

  • a1 = 0.9

  • ak+1 = ak + (9/10)k+1

となる。 (まあ、表現が難しくなっただけで今回の記事には関係無いが)

さて、この数列 an は以下の 2 個の特徴をもつ。

  1. どんな自然数 n においても、an < 10

  2. どんな自然数 n においても、an < an+1

1 と 2 を真面目に証明するとこの記事が長くなりすぎるので、ここは「当たり前」で許してほしい。

では、1 と 2 の条件を満たす数列のグラフはどんな形になるだろう? (今は an の詳しい事は一回忘れて、「1 と 2 の条件を満たす数列」のグラフを考えよう。)

例えばこんな形になるのではないか?

https://dq1xd0takmkns.cloudfront.net/img/54eeddc725f5a5554e53f408c396295b.png

上図を見ると直観的に分かるかもしれないが、an は「n を大きくするとある数に近づく」という性質を持っている。

なぜなら「2 どんな自然数 n においても、an < an+1 」より、an は、n を大きくすると

  • 際限なく大きくなる

  • 上限となる、ある数に近づく

のどちらかである。

そして、 「際限なく大きくなる」「1 どんな自然数 n においても、an < 10」 と明らかに矛盾する。

この「上限となる、ある数 x」を先ほどの図に加えるとこのようになる。

https://dq1xd0takmkns.cloudfront.net/img/61234fc829d1c0afae5ef08f408731a7.png

では、この x について厳密な定義をしてみよう。 (「n を大きくすると近づく数」という表現は数学的には曖昧すぎる)

先ほど an について「1 どんな自然数 n においても、an < 10」と書いた。

当たり前だが、この条件はもっと厳しくする事ができる。 例えば、

  • どんな自然数 n においても、an < 5

  • どんな自然数 n においても、an < 3

これはどちらも正しい。

この条件を一番厳しくした時の値で x を定義する。(10, 5, 3 という数字を使ったが、もっと小さい数を使う事も出来る。) この使用可能な数の中で、最小値を x とするのだ。

正確に書くと以下のようになる。

a) どんな自然数 n においても、an < k を満たす数 k は 2 個以上存在する。x はそのような k の中の最小値。

別の言い方をすると、こんな風になるかもしれない。

b) どんな自然数 n においても、an < x。ただし、y < x を満たす全ての数 y において、 y < an となる n をが 1 個以上存在する。

x の定義は上記の a), b) どちらでもよい。

数学的にはいい加減だが少しだけ直観的な表現にすると、

c) x とは 0.9 の後に 9 を多く続けた数より、少しだけ大きい数(「多く」とは、100万でも 10億でも良い。)

とも言えるだろう。 「少しだけ大きい」という部分がポイントだ。

そして、この数 x を 0.99999… と名付けよう。

すると、「0.99999… = 1」とは、a) の表現を用いると「0.9 の後に 9 をいくつ続けた数よりも大きい数は 2 個以上存在する。そのような数の最小値は 1 である。」

b) の表現を用いると「0.9 の後に 9 をいくつ続けても 1 より小さい。1 より小さい全ての数 y について、0.9 の後に 9 をいくつか続けると y より大きくなる事がある。」

c) の表現を用いると「0.9 の後に 9 を多く続けた数より、少しだけ大きい数は 1 である。」

という事になる。

どうだろう。

“0.9 の後に 9 を無限個繋げた数” = 1

という表現とは全然違う印象を受けるのではないか?

では、最初のパラドックスに戻ってみよう。 長くなるので、以下では c) の表現のみを用いてみる。

1 / 3 = 0.33333...
(1 / 3 = "0.3 の後に 3 を多く続けた数より、少しだけ大きい数")
0.33333... x 3 = 0.99999...
("0.3 の後に 3 を多く続けた数より少し大きい数" x 3 = "0.9 の後に 9 を多く続けた数より少し大きい数")
1 / 3 x 3 = 1
よって、0.99999... = 1 は正しい
("0.9 の後に 9 を多く続けた数より少し大きい数" = 1 は正しい。)

これは全て正しい。

1 / 3 = “0.3 の後に 3 を多く続けた数より、少しだけ大きい数”

ここが直観に反するかもしれないが、実際には正しい。 (数学的に厳密な証明は、今回は控える)

0.9 < 1
0.99 < 1
0.999 < 1
このように、0.9 の後にどれだけ 9 を付け足しても 1 より小さい。
よって、0.99999... < 1
("0.9 の後に 9 を多く続けた数より少し大きい数" < 1)
よって、0.99999... = 1 は間違い。
("0.9 の後に 9 を多く続けた数より少し大きい数" = 1 は間違い)

これは間違っている。

0.9 の後にどれだけ 9 を付け足しても 1 より小さい

“0.9 の後に 9 を多く続けた数より少し大きい数” < 1

この間に議論の飛躍がある。 ここで間違えているのだ。

この疑問を始めて感じたのは、小学生の時だったと思う。 その際、周りの大人たちに聞いたが納得のいく解答は得られなかった。 (今にして思うと、大人にも良く分からなかったのかもしれない)

小学生だったころの自分にも分かるような説明を考えてみたが、どうだろうか。