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


Posted in Python onJuly 17, 2019

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

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

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

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

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

但是该换元在接近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 相关文章推荐
python实现在sqlite动态创建表的方法
May 08 Python
浅析Python中的getattr(),setattr(),delattr(),hasattr()
Jun 14 Python
分享python数据统计的一些小技巧
Jul 21 Python
利用python3随机生成中文字符的实现方法
Nov 24 Python
pandas DataFrame数据转为list的方法
Apr 11 Python
Python数据分析matplotlib设置多个子图的间距方法
Aug 03 Python
python 随机生成10位数密码的实现代码
Jun 27 Python
Python 获取命令行参数内容及参数个数的实例
Dec 20 Python
深入了解NumPy 高级索引
Jul 24 Python
全网最全python库selenium自动化使用详细教程
Jan 12 Python
解决import tensorflow导致jupyter内核死亡的问题
Feb 06 Python
Python字典的基础操作
Nov 01 Python
Python_查看sqlite3表结构,查询语句的示例代码
Jul 17 #Python
10分钟用python搭建一个超好用的CMDB系统
Jul 17 #Python
在SQLite-Python中实现返回、查询中文字段的方法
Jul 17 #Python
PIL图像处理模块paste方法简单使用详解
Jul 17 #Python
python 实现GUI(图形用户界面)编程详解
Jul 17 #Python
解决python tkinter界面卡死的问题
Jul 17 #Python
Python 实现数据结构-堆栈和队列的操作方法
Jul 17 #Python
You might like
造势之举?韩国总统候选人发布《星际争霸》地图
2017/04/22 星际争霸
星际争霸 Starcraft 游戏介绍
2020/03/14 星际争霸
php入门学习知识点七 PHP函数的基本应用
2011/07/14 PHP
thinkphp获取栏目和文章当前位置的方法
2014/10/29 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
php无限级评论嵌套实现代码
2018/04/18 PHP
PHP实现的CURL非阻塞调用类
2018/07/26 PHP
每天一篇javascript学习小结(Boolean对象)
2015/11/12 Javascript
JavaScript基础语法之js表达式
2016/06/07 Javascript
使用BootStrap实现表格隔行变色及hover变色并在需要时出现滚动条
2017/01/04 Javascript
node内置调试方法总结
2018/02/22 Javascript
vue加载自定义的js文件方法
2018/03/13 Javascript
vue axios请求拦截实例代码
2018/03/29 Javascript
微信小程序项目实践之九宫格实现及item跳转功能
2018/07/19 Javascript
详解Webpack多环境代码打包的方法
2018/08/03 Javascript
Vue中对拿到的数据进行A-Z排序的实例
2018/09/25 Javascript
详解Vue 全局变量,局部变量
2019/04/17 Javascript
vue 全局环境切换问题
2019/10/27 Javascript
vue css 引入asstes中的图片无法显示的四种解决方法
2020/03/16 Javascript
python读文件逐行处理的示例代码分享
2013/12/27 Python
使用python3+xlrd解析Excel的实例
2018/05/04 Python
python对视频画框标记后保存的方法
2018/12/07 Python
python实现Virginia无密钥解密
2019/03/20 Python
关于Python3 类方法、静态方法新解
2019/08/30 Python
python代码实现TSNE降维数据可视化教程
2020/02/28 Python
基于Tensorflow读取MNIST数据集时网络超时的解决方式
2020/06/22 Python
Python读写csv文件流程及异常解决
2020/10/20 Python
澳大利亚连衣裙和女装在线:Esther
2017/11/11 全球购物
神话般的珠宝:Ross-Simons
2020/07/13 全球购物
某公司面试题
2012/03/05 面试题
工商技校毕业生自荐信
2013/11/15 职场文书
《陈涉世家》教学反思
2014/04/12 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书
研究生论文答辩开场白
2015/05/27 职场文书
2019广播稿怎么写
2019/04/17 职场文书
聊聊JS ES6中的解构
2021/04/29 Javascript