首页 > 解决方案 > Python 下溢应该不太精确

问题描述

我尝试了这个非常简单的代码,通过计算两个函数之间的绝对误差和相对误差来查看 python 下溢:

from pylab import *

n = 2000
x = logspace(-17,-16,n)

y1 = 1/(1+x) - 1/(1-x)
y2 = (-2 *x)/((1+x)*(1-x))

ea = abs(y1 - y2)

er = ea/abs(y2)

loglog(x[ea>0], er[ea>0])

通常下溢应该出现在 x <= 2^-53 但这里他出现在 x <= 2^-54 = 5.55e-17。参看:

相对误差的演变曲线

我不知道为什么,任何帮助将不胜感激。

标签: pythonunderflow

解决方案


推荐阅读