我已经在不同版本的计算器中检查了0 ^ 0的结果:
- iOS 10.3 => 1
- iOS 11.4 =>错误
- macOS 10.12.6 => 1
- macOS 10.13.5 =>不是数字
差异的原因是什么?
我已经在不同版本的计算器中检查了0 ^ 0的结果:
差异的原因是什么?
Answers:
虽然通常不定义0⁰,但是某些数学分支确实将其明确定义为1,因为如您所见,这是函数y(x)=xˣ在n = 0处收敛的值。
非正式地讲,请注意0.5 0.5 = 0.707…;0.2 0.2 = 0.725…; 0.1 0.1 = 0.794…和0.01 0.01 = 0.955…。当您接近0时,结果将接近1,这使得在某些情况下将 0 ^ 0 定义为1 非常合逻辑且方便。
因此,这三个结果中的任何一个本质上都不是错误的,相反,它们都反映了此未定义表达式的值的不同约定。
维基百科上有一篇很好的文章对此问题进行了解释。另请参见从零到零功率–是0⁰= 1?。
浮点算术的大多数实现都遵循IEEE 754-2008标准,该标准指定pow(0,0)返回1(请参见第9.2.1节)。
但是它还定义了其他两个函数:pown(0,0)= 1和powr(0,0)= NaN。
维基百科总结如下:
大多数浮点库的设计中都使用了IEEE 754-2008浮点标准。它建议了一些用于计算幂的运算:[20]
pow将0 0视为1。如果幂是正整数,则结果与pown相同,否则,结果与powr相同(某些例外情况除外)。
pown将0 0视为1。幂必须是一个精确的整数。该值是针对负基数定义的;例如pown(-3,5)是-243。powr将0 0视为NaN(非数字-未定义)。对于像powr(-3,2)这样的基数小于零的情况,该值也是NaN。该值由epower×log(base)定义。
pow变种的灵感来自C99的pow功能,主要是为了兼容性。[21] 它主要用于具有单个幂函数的语言。由于幂函数的用法冲突和观点不同(如上所述),引入了pown和powr变体。[22]
当然,这与正确的数学结果无关。正如其他人所指出的,答案不只一个,而且IEEE必须做出任意决定。
零到零的幂是一个矛盾
它应该产生一个错误。您没有看到正在生成错误的唯一原因是由于相关计算器的版本没有捕获该输入错误。
关于0⁰存在一些争议,归结为功能x ^ y在(x,y)->(0,0)不连续。这是半争论的,因为禁止具有不连续值的函数在数学上是胡说八道。
通常的做法是将整数嵌入到实数中,以便在实数函数采用整数值时,在实数上定义的函数与在整数上定义的相同函数匹配。因此,将0.0 ^ 0与0.0 ^ 0.0区分开是没有意义的。
现在,以整数0为指数的x⁰是一个恰好包含零个x因子的乘积。由于x的值中不包含x的因子,因此根据x为其分配值几乎没有意义,并且其作为空乘积的值很明显为1,这是乘法的中性元素。
这也很有意义,因为它不会将二项式定理任意地限制为非零值。从某种意义上说,这是一个基于试图在x = 0处合理地完成函数x⁰的论据,从而使该函数在所有地方都定义并连续。
如果我们改用函数0 ^ x尝试此操作,则x = 0 +处的极限可能为0,但由于未为负x定义该函数,因此将其定义为仍无法解决基本的不连续性。
现在,计算器倾向于将x ^ y计算为exp(y * ln(x))。当然,对于x = 0来说这是个坏消息。因此,必须明确地编程这些值,否则您将得到一个非数字。对于显式编程,您必须依靠程序员的数学直觉,并且与数学家相比,典型的程序员将更受伪数学直觉的指导,例如“定义时函数必须是连续的”。
此外,您可能会期望来自不同用户的大量评论,并且纯数学家不会因为他们对数学真相的看法而完全依赖计算器,因此您不能期望他们的输入会淹没其他人的输入。
因此,结果是民主的结果远胜于数学的结果,而且民主多数派倾向于改变。