SciPy 的紧急援助功能 BUG

以下是昨晚我公司的效益走势图,令我惊讶的是它居然是锯齿状的曲线,其实它正确的显示方式应该是圆滑的曲线。(下图是一个示例)

我首先想到的是,这必然有一个在 python 的代码计算精度问题,但事实证明,有一个在 SciPy 版本 0.8.0b1 的错误。我开始填报,但我看到有类似的错误报告和一份这样的报告被标记为关闭,所以大概是修复将出现在下一个版本中。

问题是,SciPy 的紧急援助功能是虚的,近 5.8 部分参数不准确的。例如,紧急救援基金为 -4.5717 的数学计算 -4.5717×1012 + 1.04767×1012(1.0 + 5.7i)一SciPy 计算相同的值 -4.4370×1012 + 1.3652×1012 有近30%的迭代是关闭的。

下面就是触发该 BUG 的代码:

from scipy.special import erf
from numpy import linspace, exp
import matplotlib.pyplot as plt

def g(y):
    z = (1 + 1j*y) /  sqrt(2)
    temp = exp(z*z)*(1 - erf(z))
    u, v = temp.real, temp.imag
    return -v / u

x = linspace(0, 10, 101)
plt.plot(x, g(x))

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。