除以零

<image>

在数学中，被除数的除数（分母）是零或将某数除以零，可表达为$\frac{a}{0}$，$a$是被除数。在算式中没有意义，因为没有数目，以零相乘（假设$a\neq 0$），由于任何数字乘以零均等于零，因此除以零是一个没有定义的值。此式是否成立端视其在如何的数学设定下计算。一般实数算术中，此式为无意义。在程序设计中，当遇上正整数除以零程序会中止，正如浮点数会出现无限大或NaN值的情况，而在Microsoft Excel及Openoffice或Libreoffice的Calc中，除以零会直接显示`#DIV/0!`。

## 基本算术

基本算术中，除法指将一个集合中的物件分成若干等份。例如，$10$个苹果平分给$5$人，每人可得$\frac{10}{5} = 2$个苹果。同理，$10$个苹果只分给$1$人，则其可独得$\frac{10}{1} = 10$个苹果。

若除以$0$又如何？若有$10$颗苹果，无人（$0$解作没有）来分，每“人”可得多少苹果？问题本身是无意义的，因根本无人来，论每“人”可得多少，根本多余。因此，$\frac{10}{0}$，在基本算术中，是无意义或未下定义的。

另种解释是将除法理解为不断的减法。例如“$13$除以$5$”，换一种说法，$13$减去两个$5$，余下$3$，即被除数一直减去除数直至余数数值低于除数，算式为$\frac{13}{5} = 2$余数$3$。若某数除以零，就算不断减去零，余数也不可能小于除数，使得算式与无穷拉上关系，超出基本算术的范畴。此解释也有一问题，即为无穷大乘以零仍是零。

### 早期尝试

婆罗摩笈多（598–668年）的著作《婆罗摩历算书》被视为最早讨论零的数学和定义涉及零的算式的文本。但当中对除以零的论述并不正确，根据婆罗摩笈多所说。

一个正或负整数除以零，成为以零为分母的分数。零除以正或负整数是零或以零为分子、该正或负整数为分母的分数。零除以零是零。

830年，另一位数学家摩诃吠罗 (数学家)在其著作《计算精华》试图纠正婆罗摩笈多的错误，但不成功：

一数字除以零会维持不变。

婆什迦罗第二尝试解决此问题，答案是让$\frac{n}{0}=\infty$。虽然此定义有一定道理，但会导致一个悖论：$0\times\infty$的结果可以是任意一个数，所以所有的数都是相同的。

在微积分和数学分析中，像$0\times\infty$或$\frac{0}{0}$这一类极限称为不定型。不定型是可以计算的，结果可能是任意数。

<image>

## 代数处理

若某数学系统遵从域的公理，则在该数学系统内除以零必须为没有意义。这是因为除法被定义为是乘法的逆向操作，即$\frac{a}{b}$值是方程$bx = a$中$x$的解（若有的话）。若设$b = 0$，方程式$bx = a$可写成$0 \times x = a$或直接$0 x= a$。因此，方程式$bx = a$没有解（当$a \neq 0$时），但$x$是任何数值也可解此方程（当$a = 0$时）。在各自情况下均没有独一无二的数值，所以$\frac{a}{b}$未能下定义。

### 除以零的谬误

在代数运算中不当使用除以零可得出无效证明：$2 = 1$

式：

$$0a = 0$$

试：

$a = 1$：正确

$a = 2$：正确

得出：

$$0\times 1 = 0\times 2$$

除以零得出

$$\frac{0}{0}\times 1 = 2$$

简化，得出：

$$1 = 2\,$$

以上谬论假设，某数除以0是容许的，并且$\frac{0}{0}=1$。

另一个简洁的证明

设$a=b$，则$$a^2=ab$$两边同时减去$b^2$，由平方差公式得$$(a+b)(a-b)=b(a-b)$$两边除以$(a-b)$，$$a+b=b$$故$a=0$。

通过上面的过程，证明了一切数字等于$0$。此谬论是由于简化的过程不正确，计算过程使用了“除以零”。

因为$(a-b)$是零，所以不能够把左右两边的$(a-b)$删去。

### 虚假的除法

在矩阵代数或线性代数中，可定义一种虚假的除法，设$\frac{a}{b}=a b^+$，当中$b^+$代表$b$的虚构倒数。这样，若$b^-$存在，则$b^+ = b^-$。若$b=0$，则$0^+ = 0$；参见广义逆。

## 数学分析

<image>

### 扩展的实数轴

表面看来，可以藉着考虑随着$b$趋向$0$的$\frac{a}{b}$来定义“除以零”。

对于任何正数$a$，右极限是

$$\lim_{b \to 0^{+}} {a \over b} = {+}\infty$$

另一方面，左极限是

$$\lim_{b \to 0^{-}} {a \over b} = {-}\infty$$

由于左极限及右极限不相同，因此函数在$x=0$的极限不存在，该点没有定义。同样地，若$a$是负数，极限也不存在。

如果分子及分母均为零或趋向零，则可使用洛必达法则计算。

### 不定型极限

不定型（Indeterminate Form）的极限可透过四则运算或洛必达法则计算。

考虑函数$f(x) = \frac{x^2-9}{x-3}$

如果直接代入$x=3$，会得到零除以零，这是没有意义的。

$$f(3) = \frac{3^2-9}{3-3} = \frac{0}{0}$$

但透过约简分子及分母，该点的极限是可以计算的。

$$\lim_{x\to 3} \frac{x^2-9}{x-3}=\lim_{x\to 3} \frac{(x+3)(x-3)}{x-3}=\lim_{x\to 3} x+3=6$$

此外，函数的极限可透过洛必达法则计算。

$$\lim_{x\to c}\frac{f(x)}{g(x)} = \lim_{x\to c}\frac{f'(x)}{g'(x)}$$

若随着$x$趋向$0$，$f(x)$与$g(x)$均趋向$0$，该极限可等于任何实数或无限，或者根本不存在，视乎$f$及$g$是何函数。

### 形式推算

运用形式推算，正号、负号或没有正负号因情况而定，除以零定义为：

$$\lim\limits_{x \to 0} {\frac{1}{x} =\frac{\lim\limits_{x \to 0} {1}}{\lim\limits_{x \to 0} {x}}} = \infty.$$

### 黎曼球

集合$\mathbb{C}\cup\{\infty\}$为黎曼球（Riemann sphere），在复分析中相当重要。

## 计算机科学

程式语言｜整数｜浮点数

C语言｜未定义行为，早期计算机可能崩溃；如果0是常量，可能导致编译警告。｜无穷大或NaN

Java｜抛出ArithmeticException异常｜无穷大或NaN

JavaScript｜不适用，JavaScript无整数类型｜无穷大或NaN

Python｜抛出ZeroDivisionError异常｜抛出ZeroDivisionError异常；但是部分Python包提供的运算函数除外

在计算机中，除以零的结果根据编程语言、软硬件环境、数据类型、数值而不同。部分语言中，无论是整数还是浮点数，除以0均会产生异常，而在另一部分语言中，整数除以零会产生异常或未定义行为，而浮点数除以零的结果如下：

- 零与NaN除以零：NaN（注：NaN不等于NaN）
- 零与NaN以外的数除以符号相同的0（如1除以0）：正无穷大
- 零与NaN以外的数除以符号不同的0（如1除以-0、-1除以0）：负无穷大

## 参考

- 1957 (1999 Dover edition), Introduction to Logic, Dover Publications, Inc., Mineola, New York. ISBN 0-486-40687-3 (pbk.).
- Charles Seife 2000, Zero: The Biography of a Dangerous Idea, Penguin Books, NY, ISBN 0-14-029647-6 (pbk.).
- Alfred Tarski 1941 (1995 Dover edition), Introduction to Logic and to the Methodology of Deductive Sciences, Dover Publications, Inc., Mineola, New York. ISBN 0-486-28462-X (pbk.).