为什么非零数的0次方等于1?

金鍂鑫𨰻

<p class="ql-block" style="text-align:center;"><b style="color:rgb(237, 35, 8); font-size:22px;">为什么非零数的0次方等于1?</b></p><p class="ql-block"><br></p><p class="ql-block">从小学高年级到初中的数学中,我们已经知道“乘方指的是几个相同因数相乘”,5³就是5×5×5,右上角的指数3表示相乘的次数。类似还有5²=5×5,5¹=5。</p><p class="ql-block"><br></p><p class="ql-block">而当指数取0时, 那就是“0 个 5 相乘”。按照我们的直觉,应该是什么都没有发生。可课本规定a⁰=1(a≠0),这看上去怎么感觉是无中生有。</p><p class="ql-block"><br></p><p class="ql-block">问题出在我们是以加法角度来思考的。好比记账,账本一开始是0,加三次5后,实际是:0+5+5+5=15,就是说账面的初始起点为0。</p><p class="ql-block"><br></p><p class="ql-block">但把这套用到乘法里就行不通了,乘法的起点必须是一个“乘上任何数都不改变它”的数——也就是1。数学上把这种在运算中保持其他数不变的起点称为单位元:加法的单位元是0,而乘法单位元则是1。</p><p class="ql-block"><br></p><p class="ql-block">这样来看, 真正的含义是从乘法起点1出发,连续执行3次“乘以5”的操作,即1×5×5×5=125。那么5⁰的含义就水落石出了:从起点1出发,执行0次“乘以5”。因为什么操作都没做,结果自然停留在最初的起点1。</p><p class="ql-block"><br></p><p class="ql-block">这一约定不仅合乎直觉,更是维护数学规则统一的需要。我们在中学学过同底数幂的乘法法则:当底数a不为0,指数m、n为正整数时,两个幂相乘等于指数相加:</p> <p class="ql-block">为了让这条法则推广到指数为0的情况,就必须规定a⁰=1。假如规定<span style="font-size:18px;">a⁰=0</span> ,不妨取a=5、m=3、n=0代入公式:等号右边是5³×5⁰=5³=125 ,等号左边却变成了5³×5⁰=125×0=0,左右两侧直接矛盾。因此,只有规定非零数的0次方为1,整套指数运算法则才能严丝合缝地运转。</p> <p class="ql-block" style="text-align:center;"><b style="color:rgb(237, 35, 8); font-size:22px;">两条规则在原点处碰撞:0⁰</b></p><p class="ql-block"><br></p><p class="ql-block">既然规定a⁰=1如此完美,课本里为什么偏偏要加上“a≠0”这道免责声明?</p><p class="ql-block"><br></p><p class="ql-block">原因在于,一旦底数a也取0,数学里的两条基本规则就会在0⁰这里发生碰撞:</p><p class="ql-block">1. 任何非零数的0次方都等于1,即a⁰=1 (其中a≠0);</p><p class="ql-block">2. 0的任何正数次方都等于0,即0ʸ=0(其中y>0)。 </p><p class="ql-block">0⁰恰好落在两条规则的夹缝中:看指数似乎该得1,看底数似乎该得0;但严格按限定条件,两条规则都对它失效。</p><p class="ql-block"><br></p><p class="ql-block">面对这个棘手的符号,数学界自身也分裂成了两派。1821年,法国数学家柯西在经典著作《分析教程》中,明确将0⁰列为没有固定值的未定式(indeterminate form)。而在 1992 年,计算机科学家高德纳发表了论文《关于符号的两点注记》,公开呼吁在离散数学与代数学中,应当毫不犹豫地规定0⁰=1。</p><p class="ql-block"><br></p><p class="ql-block">这场争论延续了近两百年。并非哪一方错了,而是不同领域的数学家的视角不同。</p> <p class="ql-block" style="text-align:center;"><b style="color:rgb(237, 35, 8); font-size:22px;">从微积分的角度来看:结果取决于逼近的路径</b></p><p class="ql-block" style="text-align:center;"><br></p><p class="ql-block"><span style="color:rgb(1, 1, 1); font-size:18px;">微积分关心的是变量动态逼近的过程。考虑函数z=xʸ(其中x>0,y为任意实数)。如果把底数x和指数y看作水平面上的坐标,把计算结果z看作竖直高度,那么每一组数值就对应三维空间中的一个点(x,y,z) ,所有点连起来便构成了图中的蓝色三维曲面。</span></p> <p class="ql-block"><span style="color:rgb(237, 35, 8);">如上图所示:曲面z=xʸ在x=0,y=0附近的形态。 右侧粗黑竖线对应</span><span style="color:rgb(237, 35, 8); font-size:18px;">x=0,y=0</span><span style="color:rgb(237, 35, 8);">的位置,其上的红点分别代表(0,0,0)、(0,0,0.5)、</span><span style="color:rgb(237, 35, 8); font-size:18px;">(0,0,1)、(0,0,1.5)</span><span style="color:rgb(237, 35, 8);"> 和</span><span style="color:rgb(237, 35, 8); font-size:18px;">(0,0,2)</span><span style="color:rgb(237, 35, 8);"> 等不同高度的空间点。沿着绿线(按固定比例y=ax)逼近原点,高度全部汇集到1;沿着红线(让x极速衰减)逼近原点,高度则会停留在 0、0.5、1.5、2 等不同位置。</span></p><p class="ql-block"><br></p><p class="ql-block">通常,一个坐标(x,y)只对应唯一的一个高度 。但在图中右侧x=0,y=0的位置,曲面发生了剧烈扭曲,整条黑色竖线(从(000)一直向上无限延伸)都挤在同一点的正上方。这意味着,当x和y同时趋近于0时,高度z最终停在哪里,完全取决于走哪条路线,我们具体看下:</p><p class="ql-block">●<b>常规路线(图中绿线与中央一条红线,极限全为 1)</b>:如果固定y=0,让x逐渐减小到0,因为正数的0次方恒为 1,高度x始终是1(对应图中央笔直通向红点(0,0,1)的红线)。更一般地,只要让x和y按固定比例同步归零(即沿水平方向满足y=ax的路径移动,对应图中绿线),无论从哪个方向走,最后都会汇集到红点(0,0,1) 。</p><p class="ql-block">●<b>特定速度路线(图中通向(0,0,0.5)的红线)</b>:如果让底数x比指数y缩小得快得多,结果就会改变。令:</p> <p class="ql-block">由于指数相乘时t被约掉了,无论t多么接近0,高度z始终停在0.5。这就是图中保持0.5高度、贴着曲面滑向红点(0,0,0.5)的红线。</p><p class="ql-block">●<b>任意高度路线(图中其余红线)</b>:把上一条路线的底数2换成任意大于1的常数 ,令:</p> <p class="ql-block">改变k的值,终点就能取遍(0,0,0)到(0,0,1)之间的任意高度。若把指数改为负数y=-t,则xʸ=k,高度又能取遍大于 1 的任意实数(如通向红点(0,0,1.5)和(0,0,2)的红线)。此外,若固定正数y先让x归零(图中最底部的红线),结果又会落向红点(0,0,0) 。</p><p class="ql-block"><br></p><p class="ql-block">所以说,在x=0,y=0附近,xʸ可以逼近任何非负高度,甚至无限增大。只要不指明x和y靠近0的相对速度,就无法确定走的是哪条路线,极限也就没有唯一的值。这就是微积分将0⁰列为未定式的原因。</p> <p class="ql-block" style="text-align:center;"><b style="color:rgb(237, 35, 8); font-size:22px;">代数与组合的回应:空任务只有一种完成方式</b></p><p class="ql-block"><br></p><p class="ql-block">既然微积分里数学家这样认为,为什么代数、组合与计算机教材仍规定0⁰=1?</p><p class="ql-block"><br></p><p class="ql-block">高德纳认为:“趋近于0的变量”和“等于0的常数”是两回事。微积分里,底数和指数都在连续变化;而在代数和离散数学里,指数上的0从一开始就是固定的整数0。这正好对应图中固定y=0的中央红线,结果恒为1。在这些领域规定0⁰=1,有下面两个好处:</p><p class="ql-block"><br></p><p class="ql-block"><b>1. 保持公式简洁</b></p><p class="ql-block"><br></p><p class="ql-block">以多项式P (x)=3+2x+5x²为例,为了统一各项的规律,通常会写成P (x)=3x⁰+2x+5x²:规定0⁰=1,代入x=0就能直接算出 。如果不允许0⁰=1,每次在多项式或二项式定理中代入,第一项就会报错,所有公式都必须额外注明“当x=0时,将x⁰项替换为 1”。</p><p class="ql-block"><br></p><p class="ql-block"><b>2. 契合计数逻辑</b></p><p class="ql-block"><br></p><p class="ql-block">在排列组合中,aᵇ对应这样一个计数问题:把b个互不相同的球放进a个互不相同的盒子,总共有多少种放置方案。</p><p class="ql-block">●3²(就是2个球、3个盒子的情况):对应每个球都有 3 种选择,所以会有3×3=9种放法。</p><p class="ql-block">●0²(就是2个球、0个盒子):没有盒子,球无处可放,方案数为 0。 </p><p class="ql-block">●2⁰和 0⁰(0 个球):没有球需要安置,要求自然满足。什么都不用做,就是一种合法的放法,而且只有这一种,方案数为 1。盒子有 2 个还是 0 个,对此没有影响。</p><p class="ql-block"><br></p><p class="ql-block">这个论证在计数问题里是成立的:球的个数就是0,不存在“逼近0”的情况,所以0⁰=1是上述定义的结果。</p> <p class="ql-block" style="text-align:center;"><b style="color:rgb(237, 35, 8); font-size:22px;">争论的终点:分清“趋近于 0”与“等于 0”</b></p><p class="ql-block"><br></p><p class="ql-block">这场争议的根源在于同一个记号 ,承载了两套完全不一样的数学机制:</p><p class="ql-block">●离散的计数机制:指数代表操作次数或是物体的数量。从 1 开始连乘 0 次,或是把 0 个球分到盒子里,得到结果都是 1。约定0⁰=1,目的是维持代数公式与计数规则的一致性。</p><p class="ql-block">●连续的极限机制:底数x和指数y为可连续变化的实数。当x、y同时趋向0时,极限取值取决于二者靠近0的相对快慢(如图里走向不同高度的红线、绿线),因此属于未定式,要结合具体路径单独讨论。</p><p class="ql-block"><br></p><p class="ql-block">厘清两套机制之后,分歧也就清楚了。现在,代数学、组合数学,还有不少编程语言(例如 Python 的 0**0、IEEE 754 浮点数标准里的 pow(0.0, 0.0)),都会直接定义0⁰=1,但在微积分中,只要遇到底数和指数同时趋于0的极限问题,就还要按未定式处理。两套规则不必争辩对错,只要认清各自适用的前提,就能在所属领域内保持自洽。</p>