ゼロ除算単語

ゼロジョサン
  • 31
  • 0pt
掲示板へ

ゼロ除算とは、0による割り算である。分が0の分数の事もす。

「いいか~?割り算をする時に、割る側は絶対に0にしちゃ駄だぞ~!」
「わかった!」 そんな純な君は今後、何も問題なく算数数学を勉強していく事だろう。

だが「なんで?と思ってしまった諸君。

ようこそ…計算マニア数学嫌いの界線へ…

概要

ゼロ除算は前述の通り「数を0で割る事」であるが、数学世界ではタブーである。
電卓に打てばERRORを吐きだすし、C言語整数では動作が停止する。
過去米海軍マイクロソフト社のソフトを採用し試運転した所、入ミスによりゼロ除算が発生してしまい推進システム麻痺機が2時間半も上で停止しまった例もある。恐るべしゼロ除算。

そもそも0自体が特殊な数であり、他の1や2等の自然数実数等の様にホイホイ扱えるものではないのだ。
(0自体については記事「0」を参照のこと。)

タブーの理由

りんごで考える

割られる数をA、割る数をB、商をC、余りをDとすると次の様に表記できる。(ただし全て自然数である。)

  A÷B=C…D

ではこれを文章問題にするとどうなるのか?

先生りんごがA個あり、これをB人で分けようと思います。1人に何個行き渡り、何個余りますか?」
生徒「1人C個もらえ、D個余ります。」

では、この文章問題に「10÷0」を当てはめるとどうなるのか?

先生りんごが10個あり、これを0人で分けようと思います。1人に何個行き渡り、何個余りますか?」
生徒「なにいってだこいつ」

これは困りましたね。冷静に考えると0人で分けるってのが意味深です。
しかし、生徒君は以下の考えからある答えを導き出しました。

例えば10÷3を計算する時、10からは3が3回引けて1余るから、10÷3=3…1
つまり、10からは0がいっぱい(限回)引けて、でも減る事はないから10余るから…

10÷0=…10 だ!

確かに生徒君の考え方は悪くありません、余りがある割り算では有効な考え方です。
ところで、分数にはA/B = D/B+C(/は括線)という書き換えがあります。これを生徒君の答えに当てはめるとどうなるでしょう。

10/0=10/0+ ⇒ 0=

なんと、両辺から10/0を引くと0=が導き出されてしまいました。これは有り得ないですね。
これで少なからず「ゼロ除算って何かおかしいぞ…」というのを感じてもらえたでしょうか。
この説明では意味ワカメ。という方は当記事の掲示板で他の説明をしてる方が居るのでそちらも参考に。

ちなみに今回は説明の為を数の様に扱っているが、本来限大記号)は数の様に扱ってはいけない。
限大記号については記事「∞」を参照のこと。 と言いたかったが曖昧さ回避記事の為容がなう…

代数で考える

    a=b        両辺にaを足す
   2a=a+b      両辺から2b引く
2a-2b=a-b       左辺をa-bで括る
2(a-b)=a-b       両辺をa-bで割る
    2=1

この計算式は数学的直感やセンスがないと一「あれ!?」となってしまう。(人によっては考えても分からない。)
しかし、このもらしい計算式には論ゼロ除算が含まれている。(a=b なので a-b=0である。)

この計算を利用する事で「全ての数は等しい」事を明する事が可である。 ⇒アンサイクロペディア「1=2」exit
(偽(ゼロ除算)から導き出した偽(全ての数が同値)なので問題ないのだが。)

三行で教えろ

(x+x)(x-x)=x2-x2=(x-x)x  左辺と右辺をx-x(=0)で割る

x+x=x                    両辺をxで割る

2=1                      ありえん(笑)

「0かもしれないもの」で割るのもNG

数学の問題を解く時に、次のような式に辿り着いたとしよう。

ab = ac

なんとも両辺をaで割りたくなる。そうすればb=cという非常にわかりやすい答えが得られるのだ。

しかし、ここは、踏みとどまってほしい。そのaは0かもしれませんよ?

このような時にどうすればいいのかを考えてみよう。

まず、予備知識として以下の式を考えよう。

xy = 0

この式は「xが0 または yが0」を意味している。もちろん両方が0という可性もありえる。

「xが0」とは限らないし、「yが0」とも限らないのが注意点だ。

それでは、最初の式に戻り、移項して因数分解してみよう。

ab =  ac 

ab - ac = 0

a(b-c) = 0

xy = 0 と似た形になったので、同じように扱うことができる。

この式は「aが0 または b-cが0 」を意味している。もちろん両方という可性もありえる。

「aが0」とは限らないし、「b-cが0」とも限らないのが注意点だ。

しかし、最初の式の両辺をaで割ると、「b-cが0」を意味する式が得られる。「b-cが0」とは限らないのに…

もともと「aが0 または b-cが0 」という意味だった式は、「両辺をaで割る」ことによって、「aが0の可性を奪われてしまう」のだ。

「式の両辺をaで割る」とは、「式からaが0の可性を勝手に奪い取る」ことを意味する。

その結果、本来「b-c が0」とは限らないのに、「b-c は確実に 0」という誤った結論に至ることになる。

これは1=2という誤った結論を導くのによく使われるトリックである。

めると、

「0かもしれない値 a で両辺を勝手に割る」のはNGであり、得られた式は必ずしも正しいとは限らない。

ただ、「0かもしれない値 a で両辺を割って得られた式」と「a = 0」のうち少なくとも片方は正しい。

n/0=∞説

昔、バースカラ2世という偉人は「n/0=(n≠0)」と定義しゼロ除算の問題を解決しようと試みた。
確かにlim[n→0+]1/nはである(反例グラフy=1/xを想像してもらえると理解しやすい)。

1/10 = 0.1
1/1 =1
1/0.1 = 10
1/0.01 = 100
1/0.001 = 1000

1/0.0000…1 = 10000…0

1/0 =

しかし、lim[n→0-]1/n(マイナス方面から0に近づいていく)はどうだろうか。こちらは反例グラフが下に向かって伸びていくので-となってしまう。しかし本質的にはも‐もn/0のはずである。つまりこの定義だけでは=-となってしまうのである。

よって、n/0はとは定義できないのである。

「不定」と「不能」

ゼロ除算自体が「定義されてないから」「タブーだ」「してはいけない(め)」と扱われているが、実はゼロ除算の結果は「不定」と「不能」の2つに分けられる。

不定

不定は読んで字の如く、「数が定まらない」という事をす。0÷0を想像してもらいたい。果たして答は何になるのだろうか?
仮に0÷0の商をXだとする。A÷B=CはC×B=Aに書き換えられるのは周知である。

0÷0=X ⇒ X×0=0

ゼロ乗算の積は0である。つまりXには何を入れても式は成立するのである。
0÷0の商は「全ての数」となってしまうのである。まさに数が定まっていない状態である。

不能

不能はいわゆる「解なし」である。N÷0を想像してもらいたい(Nは0以外の適当な数でいい)。こちらはどうなるだろうか?
ここでは例としてN=5とし、5÷0の商をXだとする。

5÷0=X ⇒ X×0=5

ゼロ乗算の積は0である。しかし、書き換えた式の右辺には0以外の数字が来てしまっている。
つまりXにはどんな数を入れても式は成立しないのである。N÷0の商は「解なし」となってしまう。


ところでWindowsに付属の電卓でゼロ除算を行うと数による返事は帰ってこないのだが、不定と不能によって返事が違うのはご存じだろうか。

不定計算を行うと「結果が定義されていません」不能計算を行うと「0で割る事は出来ません」とそれぞれちゃんとした返事が返ってくる。

ただERRORを吐きだされるより思いやりの気持ちを感じますね。感じない?あぁ、そう。

ゼロ除算に纏わる計算

0の逆数

逆数とは、元の数と掛け合わせると積が1になる数の事である。2の逆数は1/2であり、a/bの逆数はb/aである。
0は何を掛けても積は0となるので逆数が存在しない。0は一逆数を持たない数である。

極限ゼロと極限限同士の積は計算方法によって解が違うので当てにならない。

  • lim[x→0]x*(1/x) = lim[x→0]x/x = 1
  • lim[x→0]x*(1/x)2 = lim[x→0]1/x =
  • lim[x→0]x * lim[x→]x = 不定

何故答えが不定になってしまうのか?それは同じ極限ゼロにも極限限にも大小関係があるからだ。
lim[x→0]xもlim[x→0]2xも、両方計算してしまえば同じ0になってしまう。しかし前者を分子にし、後者を分にすれば答えは1/2となる。同じ極限値でも式によって大きさが違うので、それを較して「答えは如何程か?」と定める事はできないのである。

00(0の0乗)

一般的に「1」の方が都合が良いとされているが、「定義されてない」「0」という説もある。

0説

lim[x→+0]0x=0 つまり、0は何乗でも0なんだから0乗でも0に決まってるだろ。という説である。

1説

lim[x→0]x0=1 つまり、0乗すれば元が何だろうが1になるんだから0でも1になるに決まってるだろ。という説である。
これだけ聞くと0説とレベルが同じに感じる。

実はxxのグラフ(想像しにくいと思われるのでGoogle先生「x^xで検索」exitを参考)は一見x=0の時1を通っている様に見えるが、実はその点に限り定義されてない。つまりxxはx=0に不連続点を持っているグラフである。
ちなみに、lim[x→0]xx=1である事も計算されている。

00=1と定義してるプログラムも少なくなく、ドナルド・クヌースは「0x数学的意義があまりいが、x0は様々な場面で使用できるので形式的に便利」とっている。

定義されてない説

n1=n
nk+1=nk×n

数計算のルールより、数が1ずつ増えていくというのは、nを1つずつ掛けるのに等しい。
つまり、逆に言えば数が1ずつ減っていくというのはnを1つずつ割るのに等しい。

k=0の時、 n0+1=n0×n=n なので、n0=n/n=1 は明らかである。
しかし、n=0の時は0/0となりゼロ除算となってしまうので不定となってしまう。よって00も定義できない。

ゼロ乗算しても0にならない数は存在するか?

ここまで筆者は「0を掛けたら0である」を当然に様に言い回してたが、果たしてこれは事実なのだろうか?

昔の偉人は「2乗してマイナスになる数なんてある訳ない」と考えたが、なんだかんだで虚数iを作ってしまった。
θ90えてるのに直三角形はねーよ」と思ったら、色々頑って単位円を使って度の拡に成功した。(拡というよりも三の定義自体を大幅に変えてしまったのだが… 三角関数を参考せよ。)

もしかしたら0を掛けても0にならない数は存在するのでは?計算してみる事にする。

計算

0の定義…  0は足しても何も変化しない。X+0=Xである。
         0はRを除き乗算すると0にする。X×0=0であるが、R×0の場合はその限りではない。

ここでは0を掛けても0にならない数Rを考えていく。

0=0+0         両辺にRを掛ける
R×0=R×(0+0)   分配法則を使う
0×R=0×R+0×R  0×R=Mとする
M=M+M

さて、Mは0×Rの積なのでM≠0のはずである。しかしM=2Mという式が発生してしまった。
これを解けばM=0となってしまい前提条件と矛盾としてしまう。

結果、0を掛けても0にならない数Rは存在しない。そう、数学者は「機としての拡」は出来ても今まで使用してきた物が使えなくなってしまう物を作る事は出来ないのだ。悲しきかな。

関連動画

関連コミュニティ

関連項目

【スポンサーリンク】

  • 31
  • 0pt
スマホ版URL:
https://dic.nicovideo.jp/t/a/%E3%82%BC%E3%83%AD%E9%99%A4%E7%AE%97

この記事の掲示板に最近投稿されたピコカキコ

ピコカキコがありません

ゼロ除算

114 ななしのよっしん
2019/09/01(日) 02:40:48 ID: owpor+M6gO
ガウスビックリの展開だね
115 ななしのよっしん
2019/10/13(日) 09:01:23 ID: ydKHn9CEV+
システムエンジニアゼロ除算で殴り続けるとどうなるのですか?
116 ななしのよっしん
2019/10/21(月) 12:46:53 ID: o4lnh92988
小梅太夫ゼロ割りは破綻~~~」
117 ななしのよっしん
2020/01/17(金) 14:45:52 ID: YSZs8VshA0
>>115
もうやめて! プログラマーライフは0よ!
118  
2020/02/13(木) 14:34:32 ID: gVvBvaK6y1
量子コンピューターの世界では
観測するまで結果が保留という事で
0/0は0であるかもだしであるかも知れない
119 ななしのよっしん
2020/04/27(月) 13:41:28 ID: gUF1DnOzO8
X^XもSin(X/X)もX→0の極限値があるように見える場合、そもそもX/XですらX→0で1になる
しかしX/Y、Sin(X/Y)、X^Yにおいて、X→0、Y→0では不定になる
f(X)/g(X)と表記した時点で(dY/dX)=1を暗に導入してしまったため、種々の不具合が生じている(0×限大に生じる問題と同じ)
120 ななしのよっしん
2020/04/27(月) 13:55:03 ID: gUF1DnOzO8
>>100
「10個のりんごがあります」←わかる
「ここに居る人は0人です」←わかる
りんごを0人でわけると?」←わからない

「10個のりんごがあります」←わかる
「ここに居る人は-2人です」←わからない
りんごを-2人でわけると?」←わからないかどうかもわからない

なので全く別の話
「-2人」を分かるように表現した時点で三行も分かるようになってしまうだろう
121 うそとまこと
2020/08/06(木) 15:52:10 ID: bmxKTOyqIr
>>20
ゼロ除算の原因となったプログラムが分からないので、

https://saeki-ce.xsrv.jp/C_src/warizan02.htmlexit

減算で除算/C言語サンプル ソースプログラム佐伯英子技術士事務所情報工学)を参照(※正の整数だけに対応してます)

#include <stdio.h>
int main()
{
int a,b,c;
printf("a÷bを計算\n");
(省略しています。全て読むにはこのリンクをクリック!)
122 うそとまこと
2020/08/06(木) 15:58:55 ID: bmxKTOyqIr
>>121
このプログラムから、if(b==0)に関連する部分を削除し、a÷0(ゼロ除算)するとエラー(オーバーフロー)します。
for文の内容は、aがb以上なら、aからbを減算し続け、aがbより小さくなったら終了。その回数cが商になり、減算されたaが余りになります。

if(b==0)を使用せずにエラーしないプログラムを作成できれば、ゼロ除算拠になるのではと考えましたが、失敗に終わりました。
そこで考え方を見直し、a÷bを計算して、a:17,b:3,答え:5,余り:2となりますが、a:17,b:3,答え:6,不足:-1となる数式が定義されていないことに疑問を持ちました。(除法、剰余演算参照)

不足をめる数式を不足算(仮)とし、減算だけで除算する不足算(仮)プログラムを作成。
123 うそとまこと
2020/08/06(木) 16:00:25 ID: bmxKTOyqIr
#include <stdio.h>
int main()
{
int a,b,c;
printf("a÷bを計算\n");
printf("a:");
scanf("%d",&a);
printf("b:");
scanf("%d",&b);

for(c=0;a>0;c=c+1)
{a=a-b;}
(省略しています。全て読むにはこのリンクをクリック!)

おすすめトレンド

最新の話題で記事を新しくしてみませんか?

ぐらんぶる 手塚国光 米津玄師 山鳥毛(刀剣乱舞) 山本美月 hyde 瀬戸康史 事故物件