计算小(偶尔大)x 的 ln(1-x) 的好算法
我正在寻找一种计算 ln(1-x) 的算法。 x 通常很小(<0.01),但有时可能会更大。算法需要准确,而且不能太慢。我不想使用 ln(x) 库,因为我可能会失去准确性。
I'm looking for an algorithm to calculate ln(1-x). x is often small (<0.01), but occasionally it might be larger. Algorithm needs to be accurate, and not too slow. I'd rather not use library for ln(x), because I might lose accuracy.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
根据您想要的精度,
-x
是小型ln(1-x)
的良好近似值。来自此处。编辑:如果需要算法的原因是获得最佳准确性,那么有许多专门用于
log(1+x)
。例如,在 Python 中使用 log1p。 C 和 C++。Depending on the accuracy you want,
-x
is a good approximation to smallln(1-x)
. From here.Edit: If the reason for needing the algorithm is getting the best accuracy, then there are many libraries that are specialised for
log(1+x)
. For example, in Python use log1p. Ditto in C and C++.如果您使用 MATLAB,则 log1p() 函数专门用于计算小 x 值的 ln(1+x)。
If you are using MATLAB the log1p() function was designed specifically for calculating ln(1+x) for small values of x.