为什么 Scipy 和 EXCEL 中的 Bessel 函数给出不同的结果?

问题描述

我尝试使用 Scipy 和 EXCEL 来计算 Bessel 函数,但它们给出了不同的结果。你知道为什么吗?提前致谢。

Python 代码

import scipy.special as ss


result = ss.k1(0.2155481626213)
print(result)

EXCEL(我使用的是今天版本的 OneDrive Excel Web 应用程序)

=BESSELK(0,2155481626213; 1)

Python 的结果是 4.405746469429914
Excel 的结果是 4,405746474969860

解决方法

由于结果的误差很小,数值计算的复杂性和误差的传播会导致差异。

旁注: 甚至 Wolfram Alpha 也得到了不同的值:4.405746469430。

,

正如@HubertusKaiser 所说;误差非常小,我们可以将其分配给舍入误差/浮点数。

对于大多数计算机 here 为什么 0.1+0.2 != 0.3 有一个很好的解释。 现在想象一下做很多那些“错误”的浮点计算,你最终会看到你看到的误差差异