吹風日記 このページをアンテナに追加 RSSフィード

2006年6月15日 1=0.9999999999…、はじめに言葉ありき、世界を拡げるただ一つの道 このエントリーを含むブックマーク

「1=0.9999999999…」という式が納得できない、という人は多いようです。今日は、この式の難しさの本質はどこにあるのか? そして、この式に人が感じる納得のいかなさは、いったいどこから生じてくるのかについて考えます。

 世の中にはあたりまえだと思っていることが、実はそうではないことも多い。たとえば、今日という日はいったいいつから始まるのか、とあらためて考えてみると、意外にむずかしい。午前〇時なのか、〇時一秒なのか。また、〇時〇秒五は今日なのか、昨日なのか。

 まずは数字の世界で考えてみる。

 時間の流れを一本の連続した直線で表し、その線上に一つの点をとり、「一日の始点」とする。そこから右へ一定の間隔で点をとり一時間とすると、一二番目の点が正午、二四番目の点が「次の日の始まり」となり、前日にはふくまれない。したがって一日の始点は午前〇時であり、終わりは二三時五九分五九秒九九九九…と無限に二四時に近づくが、二四時そのものは翌日である。つまり一日は起点があって終点のない直線で表される。

織田一朗『時計の針はなぜ右回りなのか

この「今日という日はいったいいつから始まるのか」という問題も大変面白いのですが、今回のテーマは、1=0.9999999999…か? です。数学ネタです。この日記では、過去にも「無数の「驚異」、赤い絵の具、数学とは何か」などで数学ネタをあつかっています。興味のある方は御参照ください。

今回引用した文では「終わりは二三時五九分五九秒九九九九…と無限に二四時に近づく」と表現されています。「無限に近づく」という言い方は、「無限に近づくけど、そのものではない」という感じがします。すなわち「1=0.9999999999…」ではない、ということです。どうなんでしょうか。

「1=0.9999999999…」の「証明」としてよく紹介されるのは、次のようなやり方です。まず、「1÷3=0.3333333333…」は問題ありません。この両辺を3倍すると、「1=0.9999999999…」となります。また別のやり方だと、「A=0.9999999999…」の両辺を10倍すると「10A=9.99999999…」となるので、10A-Aを計算すると、9A=9なることから、A=1を出します。

さて、結局のところ「1=0.9999999999…」は正しいのでしょうか? また、この「証明」は正しいのでしょうか?

ずばりと結論から申し上げますと、「1=0.9999999999…」という式自体は正しいです。それなら、上記の「証明」で正しいんですね?と聞かれると、「これは証明になっていない」というのが答えになります。何言ってんの?という感じですが、順に説明します。

まず、「0.9999999999…」という表現が何を表しているのかが問題です。この「…」という表現は、9が無限に続いていることを表しているわけです。正確には、この表現は「0.9→0.99→0.999→0.9999→…」という無限数列を表しています。0.9999999999…はこの数列の無限の先にある数(極限といいます)です。

この「無限の数列」というのがくせものです。数列の1つ1つの数はまともな数でも、その無限の先にある数(極限)がまともな数になるという保証はないからです。

例えば、「B=1+2+4+8+16+…」という「数」について考えてみます。ここでは2倍2倍しつつ無限の足し算が行われています。この足し算をどこか途中で止めれば(例えば「1+2+4+8」など)、まともな数です。しかし、極限値である「B=1+2+4+8+16+…」はまともな数ではありません。

ためしに「B=1+2+4+8+16+…」が存在したとします。この式の両辺を2倍すると、「2B=2+4+8+16+32+…」ですから、B-2Bを計算すると、1だけが残ることになります。したがって、-B=1、つまりB=-1が結論されるわけですが、これがまずいのは明らかです。どこで間違ったかというと、「B=1+2+4+8+16+…」という数が「ある」、とした瞬間が間違いです。

しかし、ここで「B=-1」を求めた計算のやり方は、さきほど「1=0.9999999999…」を「証明」するときに使った計算のしかたと、数字が違うだけで、まったく同じです。でも、同じやり方をして、一方は正しく、もう一方は間違いというのでは、納得いきません。

ということは、そもそも、「0.9999999999…」という数が「ある」ということを、ちゃんと証明する必要があったわけです。「0.9999999999…」は、小数という、私たちになじみ深い表し方になっているので、別になんの問題もないように思えたのですが、実はそうではないのです。

要するに、実は高校までの数学では「実数」の定義をなんにもしていなかったのですね。それなのに何の配慮もなく「0.9999999999…」みたいな数を使おうとしたところに問題があります。

しかし、「0.9999999999…」は「0.9999999999…」であって、「存在する」のは明らかなんじゃないの? という感じがしますね。なぜかというと「0.9999999999…」と「書けている」からです。書けている以上、存在するに決まっているだろうというわけですが、しかし、「1+2+4+8+16+…」は存在しなかったのでした。「…」という「無限」が出てくる場合、その数の取りあつかいには注意が必要です。

では、数学では「0.9999999999…」という数をどうやって定義するかというと、これがかなり難しいのです。ふつう大学1年生ぐらいで実数の定義をやると思いますが、そこまで勉強して初めて「0.9999999999…」を定義できます。簡単に言えば、次のようにやります。

「0.9→0.99→0.999→0.9999→…」や「1→2→3→4→5→…」などの無限数列について、前者のようなある一つの値に近づいていくものとものと、後者のようなそうでないものとを区別します。前者を「収束する数列」と呼びます。この区別のきちんとしたやり方は、イプシロン・デルタ論法とかなんとか、えらそうな名前がついているのですが、ともかくあいまいさなく定義ができます。

で、「無限数列のうちで収束するもの」を「実数」と定義します。ずいぶん唐突ですが、別に理解できなくても、あとの話には支障はありません。くり返すと、「数列」を「実数」とみなすのです。例えば、円周率という実数は「3→3.1→3.14→3.141→3.1415→…」という「数列」のことです。1という実数は「1→1→1→1→…」という数列のことです。「極限」という無限を直接あつかうのを回避するため、数列そのものを数とみなすという発想が鍵です。

ここで、「1.1→1.01→1.001→1.0001→…」と「1.2→1.02→1.002→1.0002→…」は、数列どうしの差がいくらでも小さくなりますから、こういうものは「同じ」とみなしたほうがいいでしょう。こう決めておくと、「1→1→1→1→…」と「0.9→0.99→0.999→0.9999→…」は、実数として同じものとみなせます。これが「1=0.9999999999…」という式の意味です。

なんだか、わりきれない感じがしますね。どうも人工的な感じ。「実数」という、なじみの深いものを、こんな変なやり方で定義しなければならないというのは、ちょっと納得しにくいものがあります。今話したやり方は、専門的に言うと、「コーシー列の極限」として実数を定義するやり方で、もう一つ「デデキンドの切断」という方法もありますが、不自然なのは似たりよったりです。

いったん、まとめますと、「1=0.9999999999…」の証明は、実は大学レベルの数学を使って初めて証明できる内容で、見た目ほど簡単なものではありません。私は、この「証明」が、とある中学校の定期テストに出題されたことがあるのを知っていますが、そりゃ無茶というものです。

問題の本質は、そもそも「実数」というものがきちんと定義されていなかった、という点にあります。で、実数の定義には大学レベルの道具が必要です。ですから、高校レベルの数学で納得のいく説明がない、というのはある意味しかたないことです。

私たちは、「実数」というものをずいぶん幼いときから使ってきました。初めて登場する有理数でない実数は円周率πですから、小学生の頃です。しかし、「実は、実数が未定義だった!」ということには、ふつう気づきません。なぜかというと、小数で「表現」できていたからです。

「表現」というのは、どういうことでしょうか。例えば、「友達」を「あだ名」で表現するとき、どんなことに気をつければよいでしょうか。まず、ある「あだ名」を呼んだとき、それに対して一人の「友達」だけがあてはまることが必要です。もし、「モーちゃん!」という呼びかけに、何人もの友達がふりむいたら困ります。専門的に言うと、「あだ名→友達」という写像をつくれ、ということです。

また、すべての「友達」に「あだ名」をつけてあげないと「友達をあだ名で表現する」とは言えないでしょう。ですから、どんな「友達」に対しても、ある「あだ名」がないといけません。これを専門用語では、「あだ名→友達」が全射でなければならない、というふうに言います。

ふつうは、この2条件をクリアしていれば、「表現」と言えるのですが、さらに次のような条件をつけ加えてみます。どんな「友達」も、自分の「あだ名」を、ただ1つしかもっていない、という条件です。つまり、あるときは「モーちゃん」またあるときは「ハチベエ」はたまた「ハカセ」、というわけのわからぬ状態ではない、ということです。専門的には、「あだ名→友達」が単射である、と言います。このとき、「あだ名」と「友達」は1対1に対応する(全単射がある)といい、「あだ名」と「友達」を同一視できる(本名を忘れてもOKな)状態になります。

例えば、有理数は、分数によって表現できます。しかし、「2分の1」と「4分の2」は異なる分数なのに同じ有理数を表現しています。これは、「あだ名」が多すぎの状態です。単射ではないということです。しかし、既約分数(約分をやり終えた分数)に話を限定すれば、単射になります。つまり、有理数は、既約分数と、1対1に対応します。

実数は、無限小数によって表現できます。ところが、有理数の場合と違い、「無限小数→実数」の写像は、ほとんどいたるところで単射に見えます。つまり、ある勝手な実数(例えば、円周率π)をとったとき、それを表現する無限小数(3.14159265…)が1つしかないように見えます。有理数のときのような約分などは必要がなく見えます。実数と無限小数は、1対1に対応しているように見えるわけです。

こうして、私たちは、実数と無限小数を同じものだ、と考えて数学をやっているわけです。ところが実際には、1と0.9999999999…は、異なる無限小数なのに、同じ実数を指していたのです。実は単射じゃなかった。要するに、無限小数というのは、実数の「表現」としてはイマイチなんです。しかし、これよりうまくやる方法が残念ながらないんですね。

で、まずいことに、私たちは、「1対1に対応」とかいう以前の段階で、表現しているもの(この場合、無限小数)と表現されているもの(この場合、実数)との区別がついていないんですね。そこが混乱のもとです。

長々と書いてきましたが、ここでようやく、「1=0.9999999999…」の納得のいかなさについて、ちゃんと言葉にできます。

私たちは、「言語」という「表現」を使うわけです。表現している対象は「世界」です。この「言語→世界」という写像は、まずそもそも全射ではありません。ですから、哲学者のヴィトゲンシュタインは「私の言葉の限界が、私の世界の限界である」と言って、世界の範囲を小さくしたのです。これは、「言語→世界」写像を全射にする、ということです。ともかく、私たちの多くは、「言語→世界」写像は全射でない(言葉で表現できないことがある)ことを知っています。

ところが、「言語→世界」写像が単射であるかどうかについては、ほとんど疑いをはさむことなく「単射だ」と思っているのではないでしょうか。これは、「どんなに似ていても、違う言葉は違うものを表す」という考え方です。例えば、この日記でも、「空」と「天」は違うなどの記事を書いてきました。

もっと進めて、実は私たちは「違う言葉は違うものを表す」どころか、「同じ言葉でも違うものを表す」とさえ考えています。例えば、「その年も、春はやっぱり春だった」という文章は、論理的には「春=春」という同じことのくり返しにすぎないわけです。しかしこの文章には微妙な、しかしはっきりした心の動きを感じます。つまり、ただ無意味な同語反復ではありません。最初の「春」と二番目の「春」は意味が違うのです。

私たちにとって、「言語→世界」写像は単射です。その上で、「私の言葉の限界が、私の世界の限界である」のだとしたら、言語と世界は1対1に対応します。まさに"In the beginning was the Word."(旧訳聖書ヨハネによる福音書)の世界です。そういう性質をもつ、言語という「表現」を使って、私たちは生きているのです。

そのとき、「1=0.9999999999…」に納得できない、というのは、極めて自然な感覚です。だって、「1」と「0.9999999999…」では表現が違うんですから。違う表現は違うものを表しているのに決まっているでしょう。本当は、数学的にも、違う表現は違うものを表す(つまり単射)なほうがよかったんです。でも、無限小数という表現手段では、それはかなわなかった。

「1=0.9999999999…」というのは、「無限小数→実数」という表現に入ったひび割れです。そこには、表現するものと表現されるもののズレという、とても面白い事象が顔をのぞかせています。もし、「私の言葉の限界が、私の世界の限界である」のだとしたら、この言葉と世界のズレ、そのスキマこそが、「私の世界」を拡げる、ただ一つの道なのです。