python - x 上的对数

标签 python algorithm numpy math taylor-series

由于以下对数展开式成立:

log(1-x)=-x-x^2/2-x^3/3-...

可以计算以下在 x 处具有可移除奇点的函数:

log(1-x)/x=-1-x/2-...

(log(1-x)/x+1)/x=-1/2-x/3-...

((log(1-x)/x+1)/x+1/2)/x=-1/3-x/4-...

我正在尝试使用 NumPy 进行这些计算,特别是 log1p 函数,它在 x=0 附近是准确的。然而,上述功能的收敛仍然存在问题。

您对实现这些公式的任何现有函数有什么想法,还是我应该使用以前的扩展自己编写一个,但是效率不高?

最佳答案

最简单的事情就是这样

In [17]: def logf(x, eps=1e-6):
    ...:     if abs(x) < eps:
    ...:         return -0.5 - x/3.
    ...:     else:
    ...:         return (1. + log1p(-x)/x)/x

并用阈值 eps 玩一下。

如果您想要类似 numpy 的矢量化解决方案,请将 if 替换为 np.where

>>> np.where(x > eps, 1. + log1p(-x)/x) / x, -0.5 - x/3.)

关于python - x 上的对数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49994216/

相关文章:

python - 语音转文本代码卡在 "say something":

algorithm - 我如何解决有关鸽子原理(离散数学)的问题?

java - 在 DFS/BFS 算法中获取邻居时避免内存分配?

python - 根据同一行其他列中的值将函数应用于数据框列元素?

python - Numpy memmap 更好的 IO 和内存使用

python - 如何链接在两个列表之间创建连接?

python - 在 html 行中获取 href

python - 系统托盘应用程序如何在其他平台上完成?

python - 如何确定周期序列的最小周期

python - 在 scikit-learn 中向文本向量化器添加新词