2

我是一名数学学生,并在此链接中获得了详细的证明。

出于好奇,我尝试将其设置在一个 Excel 表中,其中列为 N,行为 K,这样:

=COMBIN(R$6,$B16)-COMBIN(R$6-1,$B16)-COMBIN(R$6-1,$B16-1)

应该相等0。在大多数情况下,它确实如此,但有时我会得到奇怪的结果。例如:

=COMBIN(110,35)-COMBIN(110-1,35)-COMBIN(110-1,35-1)=0

=COMBIN(110,45)-COMBIN(110-1,45)-COMBIN(110-1,45-1)=0

=COMBIN(110,40)-COMBIN(110-1,40)-COMBIN(110-1,40-1)=633318697598976

有人能告诉我为什么会这样吗?

4

2 回答 2

1

恐怕答案必须是 Excel 中缺乏精度(最多 15 位),但也许这并不是一个足够好的答案。

Excel 的 =COMBIN() 函数A2(比如 110)和B2(比如 35)可以分解为:

=FACT(A2)/(FACT(A2-B2)*FACT(B2))

下图的顶部显示了这一点(并确认了您的结果!):

SO18746815 示例

底部将该公式分解为其组件,显示最大元素的值为 1.5882E+178。这完全在 Excel 对 +/-1.7976931348623158e+308 公式的限制范围内,但可能实际上介于:

15882455415227300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

15882455415227500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

我想这是问题所在。

令我困惑的是,坚持使用 110,差异仅在B21-109 范围内出现 29 次——但对于任何解释,最好还是回到数学上!

于 2013-09-11T18:17:43.113 回答
0

Excel 中存在一个特殊的COMBIN错误,该错误已经存在多年(Excel 2006 或更早版本,仍然在 Excel 365 中),并且与大数的除法没有明显关系,因为它在给出整数结果时发生在小整数上。

这似乎只在与 0 进行比较或使用该MOD函数时出现在现实世界中。因此,如果这对您很重要,您需要在处理小整数时对结果进行四舍五入,或者在不比较 0 的情况下允许相等性测试的一些灵活性。

  • 你指出=(COMBIN(110,35)-COMBIN(110-1,35)-COMBIN(110-1,35-1)=0)FALSE
  • 但尝试=(COMBIN(110,35)=COMBIN(110-1,35)+COMBIN(110-1,35-1))给出TRUE

还有更小的例子,第一个是:

  • =(COMBIN(9,3)-COMBIN(8,3)-COMBIN(8,2)=0)给予FALSE
  • =(COMBIN(9,3)=COMBIN(8,3)+COMBIN(8,2))给予TRUE

甚至更简单

  • =(COMBIN(9,3)-84=0)给予FALSE
  • =(COMBIN(9,3)=84)给予TRUE
  • =(FACT(9)/(FACT(3)*FACT(6))-84=0)给予TRUE

TRUE 结果是期望的行为。

通常,Excel 的 COMBIN 函数会设法给出正确的整数。但在某些情况下,它给出的值略低于或高于正确的整数,通常是高于或低于一到两个浮点精度,然后试图隐藏它所做的事实:=COMBIN(9,3)-840=(COMBIN(9,3)-84=0)实际上它计算了一个-1.421E-14与 比较的数字0

该错误的一些小例子:

  • COMBIN(9,3)COMBIN(9,6)计算84 -1.42E-14
  • COMBIN(10,4)COMBIN(10,6)计算210 -2.84E-14
  • COMBIN(11,5)COMBIN(11,6)计算462 -5.68E-14
  • COMBIN(12,6)计算924 -2.27E-13
  • COMBIN(14,6)COMBIN(14,8)计算3003 -4.55E-13
  • COMBIN(15,3)COMBIN(15,12)计算455 +5.68E-14
  • COMBIN(15,7)COMBIN(15,8)计算6435 -9.09E-13
  • COMBIN(16,4)COMBIN(16,12)计算1820 +2.27E-13
  • COMBIN(16,8)计算12870 -1.82E-12
  • COMBIN(17,5)COMBIN(17,12)计算6188 +9.09E-13
  • COMBIN(18,6)COMBIN(18,12)计算18564 +3.64E-12
  • COMBIN(18,7)COMBIN(18,11)计算31824 -3.64E-12
  • COMBIN(18,9)计算48620 -7.28E-12
  • COMBIN(19,7)COMBIN(19,12)计算50388 +7.28E-12
  • COMBIN(19,8)COMBIN(19,11)计算75582 -1.46E-11
  • COMBIN(20,5)COMBIN(20,15)计算15504 -1.82E-12
  • COMBIN(20,8)COMBIN(20,12)计算125970 +1.46E-11

您的特定示例超出了整数精度,但即使是更小的COMBIN(110,3)计算215820 +2.91E-11

于 2021-03-22T22:34:11.397 回答