ゼロ除算
出典: フリー百科事典『ウィキペディア(Wikipedia)』
ゼロ除算(ぜろじょざん、division by zero)は、0 で除す割り算のことである。このような除算は除される数を a とするならば、形式上は a⁄0 と書くことができるが、数学において、この式と何らかの意味のある値とが結び付けられるかどうかは、数学的な設定にまったく依存している話である。少なくとも通常の実数の体系とその算術においては、意味のある式ではない。
計算機プログラミングで整数のゼロ除算が行われると、プログラムの終了を引き起こすかもしれないし、浮動小数点数の場合におけると同様に、数ではない特殊値を返すかもしれない。
目次 |
[編集] 算数的解釈
算数レベルでは、除算は何らかの物の集合をそれぞれ同数になるように分けることで説明される。例えば、10個のリンゴを5人で分ける場合、各人は 10⁄5 = 2個のリンゴを受け取ることになる。同様に、10個のリンゴを1人で分ける場合、各人は 10⁄1 = 10個のリンゴを受け取る。
この考え方を使ってゼロ除算を説明できる。10個のリンゴを0人で分けるとする。各人は何個のリンゴを受け取るだろうか? 10⁄0 を計算しようとしても、元の設問自体が無意味なので無意味となる。この場合、各人が受け取る個数は、0個でも、10個でも、無限個でもない。なぜなら、元々受け取るべき人はいないからである。以上のように算数レベルで考える場合、ゼロ除算は無意味または未定義となる。
ゼロ除算の未定義性を理解する別の方法として、減法の繰り返し適用という考え方がある。すなわち、13 割る 5 を考えるとき、13 から 5 を繰り返し引き算していき、余りが 3 となる。除数を余りが除数より少なくなるまで繰り返し引くのである。結果は 13⁄5 = 2 あまり 3 などと記される。ゼロ除算の場合、ゼロを何度引いても余りがゼロより小さくなることはないため、無限に減法を繰り返すだけとなる。
[編集] 初期の試み
ブラーマグプタ(598年 – 668年)の著書 Brahmasphutasiddhanta では、0 を数として定義し、その演算結果も定義している。しかし、ゼロ除算の説明は間違っていた。彼の定義に従うと代数的不合理が生じることを簡単に証明できる。ブラーマグプタによれば、次の通りである。
- 「正または負の数をゼロで割ると、分母がゼロの分数となる。ゼロを正または負の数で割ると、ゼロになるか、またはゼロを分子とし有限数を分母とする分数になる。ゼロをゼロで割るとゼロになる」
830年、Mahavira はブラーマグプタの間違いを著書 Ganita Sara Samgraha で以下のように訂正しようとして失敗した。
- 「数はゼロで割っても変化しない」
Bhashkara II は n⁄0 = ∞ と定義することで問題を解決しようとした。この定義はある意味では正しいが、注意深く扱わないとパラドックスに陥る。このパラドックスは近年まで考察されなかった[1]。
[編集] 代数学的解釈
ゼロ除算を数学的に扱う自然な方法は、まず除算を他の算術操作で定義することで得られる。整数、有理数、実数、複素数の一般的算術規則では、ゼロ除算は未定義である。体の公理体系に従う数学的体系では、ゼロ除算は未定義のままとされなければならない。その理由は、除法が乗法の逆演算として定義されているためである。つまり、a⁄b の値は、bx = a という等式を x について解いたときに値が一意に定まる場合のみ存在する。さもなくば、値は未定義のままとされる。
b = 0 のとき、等式 bx = a は 0x = a または単に 0 = a と書き換えられる。つまりこの場合、等式 bx = a は a が 0 でないときには解がなく、a が 0 であれば任意の x が解となりうる。いずれにしても解は一意に定まらず、a⁄b は未定義となる。逆に、体においては a⁄b は b がゼロでないとき常に一意に定まる。
[編集] ゼロ除算に基づく誤謬
ゼロ除算を代数学的記述に用いて、例えば以下のように 1 = 2 のような誤った証明を導くことができる。
以下を前提とする。
このとき、次が成り立つ。
両辺をゼロ除算すると、次のようになる。
これを簡約化すると次のようになる。
この誤謬は、暗黙のうちに 0⁄0 = 1 であるかのように扱っていることから生じる。
上の証明が間違いであることは多くの人が気づくと思われるが、これをもっと巧妙に表現すると間違いを分かりにくくできる。例えば、1 を x に置き換え、ゼロを x - x、2 を x + x で置き換える。すると上記の証明は次のようになる。
- (x − x)x = x2 − x2 = 0
- (x − x)(x + x) = x2 − x2 = 0
したがって、
- (x − x)x = (x − x)(x + x)
両辺を x - x で割ると次のようになる。
- x = x + x
そして、両辺を x で割ると、次のようになる。
- 1 = 2
[編集] ゼロ除算と極限
直観的に a⁄0 は a⁄b で b を 0 に漸近させたときの極限を考えることで定義されるように見える。
a が正の数の場合、次のようになる。
a が負の数の場合、次のようになる。
したがって、a が正のとき a⁄0 を +∞、a が負のとき −∞ と定義できるように思われる。しかし、この定義には2つの問題点がある。
第一に、正と負の無限大は実数ではない。実数の範囲内で考えたい場合、この定義には意味がない。この定義を使いたければ、何らかの形で実数を拡張する必要がある。
第二に、右側から極限に漸近するのは恣意的である。左側から漸近して極限を求めた場合、a が正の場合に a⁄0 が −∞ となり、a が負の場合に +∞ となる。これを等式で表すと次のようになる(実数に無限大が含まれるように拡張したものとする)。
これではあまり意味がない。これを意味のある拡張とするには、符号のない無限大という概念を導入するしかない。
0⁄0 についても、極限
は存在しないため、うまく定義できない。さらに一般に、x が 0 に漸近すると共に f(x) も g(x) も 0 に漸近するとして、極限
を考えても、これは任意の値に収束する可能性もあるし、収束しない可能性もある。したがって、この手法では 0⁄0 について意味のある定義は得られない。
[編集] コンピュータにおけるゼロ除算
現在のほとんどのコンピュータでサポートされているIEEE 754 浮動小数点に関する標準規格では、全ての浮動小数点演算を定義している。ゼロ除算も例外ではなく、どういう値になるかが定義されている。IEEE 754の定義によれば、a/0 で a が正の数であれば、除算の結果は正の無限大となり、a が負の数であれば負の無限大となる。そして、a も 0 であった場合、除算結果は NaN(not a number、数でない)となる。IEEE 754 には −0 も定義されているため、0 の代わりに −0 で除算をした場合は、上述の符号が反転する。
整数のゼロ除算は通常、浮動小数点とは別に処理される。というのは整数ではゼロ除算の結果を表す方法がないためである。 多くのプロセッサは整数のゼロ除算を実行しようとすると例外を発生させる。結果、これによりゼロ除算を実行しようとしたプログラムは中断(アボート)と言う形で強制終了となるのが通常となっている。エラーが発生していると解釈されるためで、エラーメッセージが表示される事も多い。
1997年、市販品の応用を研究していたアメリカ海軍はタイコンデロガ級ミサイル巡洋艦ヨークタウンを改造して主機のガスタービンエンジンの制御にマイクロソフト社のソフトウェアを採用したが、試験航行中にデータベースのゼロ除算が発生してソフトウェアが例外を返し、結果として主機が停止、回復するまでカリブ海を2時間半ほど漂流する事態となっている[2]。
[編集] ポップカルチャー
- ゼロ除算がコンピュータや電卓でエラーを引き起こす様から、それを宇宙の終焉などに結びつけるインターネットミームが生まれ、通常、"OH SHI-" を前置するようになった[1]。このミームを題材にしたショートフィルム The Last Denominator では、ゼロ除算をしようとした直後に地球が爆発する。
- テッド・チャンの短篇に Division by Zero(ゼロで割る)という題名のものがある。
- Chuck Norris Facts によれば、チャック・ノリスは「ゼロ除算ができる」。
[編集] 脚注
- ^ J J O'Connor and E F Robertson (November 2000). "Zero". 2008-11-16 閲覧。
- ^ “Sunk by Windows NT”(. 1998-07-24) 2008-11-16 閲覧。.
[編集] 関連項目
[編集] 参考文献
- Jakub Czajko (July 2004) "On Cantorian spacetime over number systems with division by zero", Chaos, Solitons and Fractals, volume 21, number 2, pages 261—271.
- Ben Goldacre. "Maths Professor Divides By Zero, Says BBC". 2008-05-08 閲覧。ゼロ除算の結果を nullity という新たな記号で表す方法が提唱された。





のグラフ。x が 0 に近づくと、y は無限大に近づく。





