首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python实现对数函数的精度

使用Python实现对数函数的精度
EN

Stack Overflow用户
提问于 2017-01-28 19:35:36
回答 1查看 62关注 0票数 1

我正在尝试绘制对数函数:对于非常大的x值的对数函数:x*log(1+1/x)。我检查了几个项,因为总体绘制不是很好,问题似乎是,尽管这个函数永远不应该高于1,但对于某些点,它会变得大于1。我相信这与对数函数的准确性有关。

对于x的以下值:

代码语言:javascript
复制
[ 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)准备的

代码语言:javascript
复制
[ 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(),但我得到了与上面完全相同的结果。

有什么想法吗?

非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2017-01-28 20:00:54

阅读log1p的手册页。它不接受与log相同的参数。我想这解释了“无意义的答案”。

它对我来说很有效:

代码语言:javascript
复制
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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41909321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档