Python math库 ln(x)运算的实现及原理

 更新时间:2019年07月17日 11:08:30   作者:双花诞  
这篇文章主要介绍了Python math库 ln(x)运算的实现及原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

这个是很有用的一个运算,除了本身可以求自然对数,还是求指数函数需要用到的基础函数。

实现原理就是泰勒展开,最简单是在x=1处进行泰勒展开:

但该函数离1越远越难收敛,同时大于2时无法收敛,所以需要进行换元,然后重新展开:


但是该换元在接近0时或者接近无穷大时收敛困难,处在1到10范围内收敛快且精度高,所以对大于10或小于1的值进行分解如下:

 ln(55000)=ln(5.5)+4ln10

 ln(0.0015)=ln(1.5)-4ln10

ln10为算好的值,可直接由ln_h1(10)得到

Epsilon 为精度控制

输出的i可以检测收敛次数。

Epsilon = 10e-16
ln10 = 2.30258509299404568401
def ln_h(x):
  '''
  ln函数泰勒换元展开
  :param x: 0<x
  :return:ln(x)
  '''
  def ln_h1(x):
    s2 = 0.0
    delta = x = (x - 1.0) / (x + 1.0)
    i = 0
    while fab_h(delta * 2) / (i * 2 + 1) > Epsilon:
      s2 += delta / (i * 2 + 1)
      delta *= x * x
      i += 1
    print(i)
    return 2 * s2
  coef = 0
  if x > 10:
    while x / 10 > 1:
      coef += 1
      x /= 10
    return ln_h1(x) + coef*ln10
  elif x < 1:
    while x * 10 < 10:
      coef += 1
      x *= 10
    return ln_h1(x) - coef*ln10
  else:
    return ln_h1(x)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Python Django ORM与模型详解

    Python Django ORM与模型详解

    这篇文章主要介绍了django的ORM与模型的实现原理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧v
    2021-11-11
  • Python深度学习albumentations数据增强库

    Python深度学习albumentations数据增强库

    下面开始albumenations的正式介绍,在这里我强烈建议英语基础还好的读者去官方网站跟着教程一步步学习,而这里的内容主要是我自己的一个总结以及方便英语能力较弱的读者学习
    2021-09-09
  • Python读写unicode文件的方法

    Python读写unicode文件的方法

    这篇文章主要介绍了Python读写unicode文件的方法,涉及Python针对文件的读取及编码操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • Python自动修改电脑静态IP地址的实现示例

    Python自动修改电脑静态IP地址的实现示例

    通过Python自动修改电脑的静态IP地址可以极大地提高我们的工作效率,减少手动修改IP地址带来的错误,本文就来介绍一下Python自动修改电脑静态IP地址的实现示例,感兴趣的可以了解一下
    2023-11-11
  • Django admin管理工具TabularInline类用法详解

    Django admin管理工具TabularInline类用法详解

    这篇文章主要介绍了Django admin管理工具TabularInline类用法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • 手把手教你Python抓取数据并可视化

    手把手教你Python抓取数据并可视化

    很多小伙伴在提到python数据可视化的时候第一反应就是matplotlib库,但实际上python还有很多很好用的数据可视化的库,下面这篇文章主要给大家介绍了关于如何利用Python抓取数据并可视化的相关资料,需要的朋友可以参考下
    2022-05-05
  • pytorch tensor按广播赋值scatter_函数的用法

    pytorch tensor按广播赋值scatter_函数的用法

    这篇文章主要介绍了pytorch tensor按广播赋值scatter_函数的用法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • Python如何在类中定义装饰器

    Python如何在类中定义装饰器

    这篇文章主要介绍了Python如何在类中定义装饰器的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • python多重继承实例

    python多重继承实例

    这篇文章主要介绍了python多重继承实例,简单实用易于理解,需要的朋友可以参考下
    2014-10-10
  • 基于MATLAB和Python实现MFCC特征参数提取

    基于MATLAB和Python实现MFCC特征参数提取

    这篇文章主要介绍了基于MATLAB和Python实现MFCC特征参数提取,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08

最新评论