序文とあとがきの人のブログ

画像はスマホでは拡大できます。記事の題名の下にあるタグをクリックまたはタップすると記事を細かく分類したページに移動します。最近は数学を語ることもあります。

数学ではなぜ0で割ってはいけないのか(4月30日7:14 最終推敲)

実は, 数学でも0で割ることはある. ただし, 例外的かつ便宜上である.


まず, あえてありきたりな説明をする. それには一理あるが問題点もあるからである.


反比例の関数y=1/xを考えてみたい(グラフは下にある). まず関数とは何か考えよう. 座標平面(xy平面)を想像してほしい. 数直線(いわゆるx軸)の或る区間の全ての数xに対して, 別の数直線(いわゆるy軸)への対応があり, xに対してただ一つyの値が定まるとき, yはxの関数であるという. このときxを独立変数, yを従属変数という. x軸やy軸は実数(real number)全体の集合(Rと表す)であり区間はその部分集合であるから, 関数とはRの部分集合の要素にRの要素をただ一つ対応させる物とみなすことができる. この観点では, 関数とは或る集合の全ての要素に(一般には別の)集合の要素をただ一つ対応させる物とみなすことができる. この考えは後ほど再考する.


さて, 関数y=1/x(変数xの分子と分母をひっくりかえした分数を対応させる関数)のx=0付近の関数値を調べよう. (^は累乗を表す)

x=0.1=1/10とすると, y=10となる. 

x=0.01=1/100=1/(10^2)とすると, y=100となる.

x=0.0001=1/10000=1/(10^4)とすると,

y=10000となる.

x=0.00000001=1/100000000=1/(10^8)とすると, y=100000000=10^8となる.

このように, x>0の範囲でxを0に近づけていくと, 関数y=1/xの値yはいくらでも大きくなる.

では, x<0の範囲でxを0に近づいてみよう.


x=−0.1=−1/10とすると, y=−10となる. 

x=−0.01=−1/100=−1/(10^2)とすると, y=−100となる.

x=−0.0001=−1/10000=−1/(10^4)とすると, y=−10000となる.

x=−0.00000001=−1/100000000=−1/(10^8)とすると, y=−100000000=−10^8となる.

これらのことから, x≠0の範囲で定義された関数y=1/xを, x=0でも「うまく」定義することは不可能に思えてくるであろう. それは, x>0でxを0に近づけるとyの値はいくらでも大きくなり, まさに数学で言う正の無限大に発散する(つまりy>0でyの値がいくらでも大きくなる)ことだけではなく, x<0でxを0に近づけるとyの値は負で絶対値がいくらでも大きくなり, まさに数学で言う負の無限大に発散する(つまりy<0で絶対値|y|がいくらでも大きくなる)ことによる.「うまく」とは, 難しく言ってしまえば, 関数y=1/xがx=0でも連続であるように(簡単に言うとグラフが点(0, 1/0)でもつながっているように)1/0を定義できないということである. 特定の近づけ方について考えたが, どのような近づけ方でも同様であることが知られている. これはaを0でない定数としてy=a/xを考えても同様である(a<0の場合はyの正負が上述と入れ替わるが得られる結論は同じである). 1/0が「うまく」定義できないのだから, 当然3/0とか−4/0なども「うまく」定義できない. 反比例の関数のグラフをご存知の方は, x=0での値をどのように定めてもx=0でグラフはつながっていないことがすぐにわかるだろう.

f:id:PDEM:20210524222726j:plain

しかしこれは, 0で割ることを「うまく」定義できない理由, 特に関数y=1/xがx=0でも連続であるように定義できない理由であり, 0で割ることを定義できない理由ではないのである. ありきたりな説明をしたが, このような問題点があることは広く知られてほしい. グラフによる説明をしても, それは論理によって説明したことにならない. これは2変数関数z=x^yを(x, y)=(0, 0)でも連続であるように定義できない理由が, 0^0を定義できない理由ではないことに本質的に同じである. ちなみに多くの場合, 0^0は1と暗黙の了解で定義されている. それについては後日話そう.


では, なぜ通常の数学では0で割ることを四則演算の定義から除外するのか. 話は単純である. まず0とは, 任意の実数aに対してa+0=aを満たす実数として定義される. つまり, 少し厳密に言うと,「任意の数aに対してa+0=aを満たす数」が0という言葉の意味である. これと分配法則と減法の定義から, 「0a=0」が証明される. 本当は数(すなわち実数)の厳密な定義から話をしたいが, とりあえず「0にどんな数をかけても0である」というのは定義ではなく定理であり本当は証明が必要ということだけ知っておいていただきたい. これを利用すれば, 説明は簡単である.


まず, どんな数aに対してもa/0が定義できるとする. 0に何をかけても0なので,

(a/0)×0=0

が成り立つ. 一方, 0で約分ができるので(厳密には除法の定義: a/bとはbx=aの解xであることより(a/b)×b=aが成り立つので)

(a/0)×0=a

ゆえに

a=(a/0)×0=0

つまり「どんな数も0に等しい」という結論が得られる. これは当然成り立たない. 成り立たない結論が得られたのは数を0で割ることができると仮定したからである. つまり, 零環(1=0を仮定する, ゆえに全ての要素aと0が等しい(a=a×1=a×0=0)ような集合)のような例外的な数学を好き好む訳ではない限り, 0で割ることは認めないのが普通である. 零環を環論の例外とすることも, これが背景にあるのである.


しかし, もちろんこれは数を実数の範囲で考えるからで, 複素数の範囲で考え, リーマン球面(集合としては複素平面Cに無限遠点∞を加えたものC∪{∞})における, 独立変数も従属変数も複素数とした複素関数の理論において, 便宜上, 全ての複素数cに対して

c+∞=∞+c=∞,

c×∞=∞×c=∞ (c≠0),

c/0=∞ (c≠0), c/∞=0

と定義する(複素解析を知っている人向けに言うと, 無限遠点∞は実部または虚部の少なくとも一方の絶対値が正の無限大+∞の「複素数」であるから, こう定義するのは自然であろう). つまりリーマン球面からリーマン球面への関数は通常の複素数の四則演算に加えてこれらの演算も加味されて定義されている. もちろんこれは0で割ってはいるが, あくまで理論を見通し良くするための便宜上の定義に過ぎない. リーマン球面ではなく複素平面においては, 当然0では割れない. それは上の論法を繰り返せばわかる.


肝心の複素数とは何か, について話すとまた話が脱線するし, ありきたりな説明をしても多分納得のいく人は少ないので, 今回はこれぐらいに.


ちなみに海外では, 分数は分子から書き括線(かっせん)を引き, 分母を書く.

a/b は a over b, a divided by b,

1/2 は the harf,

1/3 は one third

と読む.


数とは何か考えた, こちらの記事も参照されたい:https://pdem.hatenadiary.com/entry/36940024