我正在尝试绘制对数函数:对于非常大的x值的对数函数:x*log(1+1/x)。我检查了几个项,因为总体绘制不是很好,问题似乎是,尽管这个函数永远不应该高于1,但对于某些点,它会变得大于1。我相信这与对数函数的准确性有关。
对于x的以下值:
[ 5.4380181e+11 3.1688845e+12 4.5195668e+13 7.4634268e+14 1.2442192e+16
2.0754228e+17 3.4624427e+18 5.787843e+19 9.9925409e+20 2.6069079e+22]我为x*np.log(1+1/x)准备的
[ 0.99999999 0.99999989 0.99999774 0.9999925 0.99959801 0.99007829
1.1261964 0.0 0.0 0.0]如你所见,第7项大于1。
我曾尝试使用log1p,但这给出了毫无意义的答案。
我也尝试过使用np.float128(),但我得到了与上面完全相同的结果。
有什么想法吗?
非常感谢!
发布于 2017-01-28 20:00:54
阅读log1p的手册页。它不接受与log相同的参数。我想这解释了“无意义的答案”。
它对我来说很有效:
l = [5.4380181e+11, 3.1688845e+12, 4.5195668e+13, 7.4634268e+14, 1.2442192e+16, 2.0754228e+17, 3.4624427e+18, 5.787843e+19, 9.9925409e+20, 2.6069079e+22]
[n*log1p(1/n) for n in l]输出:
0.9999999999990805,
0.9999999999998422,
0.9999999999999888,
0.99999999999999992,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0
https://stackoverflow.com/questions/41909321
复制相似问题