我需要计算数量
1/tanh(x) - 1/x
对于x > 0
,其中{
对于小x
,我们有
对于大的x
不管怎样,在计算表达式时,已经从10^-7
和更小的舍入错误会导致表达式被精确地计算为0:
import numpy
import matplotlib.pyplot as plt
x = numpy.array([2**k for k in range(-30, 30)])
y = 1.0 / numpy.tanh(x) - 1.0 / x
plt.loglog(x, y)
plt.show()
对于非常小的} around ^{}
x
,可以使用the Taylor expansion of ^{误差为
^{pr2}$O(x**7)
级,因此如果选择10^-5
作为断点,相对和绝对误差将远低于机器精度。在使用python包^{} 可获得任意十进制精度。例如:
它变得非常精确。在
查看^{} plotting 。
mpmath
与您正在使用的matplotlib
配合得很好,因此这应该可以解决您的问题。在下面是一个如何将mpmath集成到您上面编写的代码中的示例:
^{pr2}$一个可能更简单的解决方案是更改numpy运行时的数据类型:
使用
longdouble
作为数据类型确实可以在没有舍入错误的情况下给出正确的解决方案。在我确实修改了你的例子,在你的例子中,你唯一需要修改的是:
^{pr2}$收件人:
相关问题 更多 >
编程相关推荐