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使用Tkinter实现机器人走迷宫
Jan 22 Python
详解pandas安装若干异常及解决方案总结
Jan 10 Python
使用python Telnet远程登录执行程序的方法
Jan 26 Python
使用selenium模拟登录解决滑块验证问题的实现
May 10 Python
Python性能分析工具Profile使用实例
Nov 19 Python
基于Tensorflow使用CPU而不用GPU问题的解决
Feb 07 Python
解决tensorboard多个events文件显示紊乱的问题
Feb 15 Python
Python脚本导出为exe程序的方法
Mar 25 Python
django 解决自定义序列化返回处理数据为null的问题
May 20 Python
Tensorflow使用Anaconda、pycharm安装记录
Jul 29 Python
Pycharm同步远程服务器调试的方法步骤
Nov 04 Python
Python编写冷笑话生成器
Apr 20 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
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
2013/06/18 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
新闻内页-JS分页
2006/06/07 Javascript
解决FireFox下[使用event很麻烦]的问题
2006/11/26 Javascript
LBS blog sql注射漏洞[All version]-官方已有补丁
2007/08/26 Javascript
autoIMG 基于jquery的图片自适应插件代码
2011/03/12 Javascript
js实现图片漂浮效果的方法
2015/03/02 Javascript
node-webkit打包成exe文件被360误报木马的解决方法
2015/03/11 Javascript
jQuery插件windowScroll实现单屏滚动特效
2015/07/14 Javascript
Jquery时间轴特效(三种不同类型)
2015/11/02 Javascript
javascript插件开发的一些感想和心得
2016/02/28 Javascript
JS组件Bootstrap实现下拉菜单效果代码
2016/04/26 Javascript
jQuery图片加载显示loading效果
2016/11/04 Javascript
基于对象合并功能的实现示例
2017/10/10 Javascript
JS 实现发送短信验证码的“59秒后重新发送验证短信”功能
2019/08/23 Javascript
Python读取系统文件夹内所有文件并统计数量的方法
2018/10/23 Python
Python3转换html到pdf的不同解决方案
2019/03/11 Python
Python获取数据库数据并保存在excel表格中的方法
2019/06/12 Python
python实现最小二乘法线性拟合
2019/07/19 Python
常用python爬虫库介绍与简要说明
2020/01/25 Python
Python实现AI换脸功能
2020/04/10 Python
Python使用20行代码实现微信聊天机器人
2020/06/05 Python
windows10在visual studio2019下配置使用openCV4.3.0
2020/07/14 Python
基于 HTML5 Canvas实现 的交互式地铁线路图
2018/03/05 HTML / CSS
英国女鞋购物网站:Moda in Pelle
2019/02/18 全球购物
护理专科毕业推荐信
2013/11/10 职场文书
优秀毕业大学生推荐信
2013/11/13 职场文书
营销总经理岗位职责
2014/02/02 职场文书
环境工程专业自荐信范文
2014/03/18 职场文书
社会公德演讲稿
2014/05/20 职场文书
爱护草坪标语
2014/06/24 职场文书
教师批评与自我批评
2014/10/15 职场文书
教师工作表现自我评价
2015/03/05 职场文书
新闻稿标题
2015/07/18 职场文书
2015中学政教处工作总结
2015/07/22 职场文书
OpenCV3.3+Python3.6实现图片高斯模糊
2021/05/18 Python