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 socket网络编程步骤详解(socket套接字使用)
Dec 06 Python
让python同时兼容python2和python3的8个技巧分享
Jul 11 Python
Django中实现点击图片链接强制直接下载的方法
May 14 Python
Python基于二分查找实现求整数平方根的方法
May 12 Python
Python生成随机数组的方法小结
Apr 15 Python
python pandas修改列属性的方法详解
Jun 09 Python
python随机在一张图像上截取任意大小图片的方法
Jan 24 Python
对python读取zip压缩文件里面的csv数据实例详解
Feb 08 Python
python 定时器每天就执行一次的实现代码
Aug 14 Python
Python实现串口通信(pyserial)过程解析
Sep 25 Python
python实现的读取网页并分词功能示例
Oct 29 Python
自学python用什么系统好
Jun 23 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入门
2006/10/09 PHP
Apache, PHP在Windows 9x/NT下的安装与配置 (二)
2006/10/09 PHP
php和mysql中uft-8中文编码乱码的几种解决办法
2012/04/19 PHP
firefox中用javascript实现鼠标位置的定位
2007/06/17 Javascript
基于jQuery的合并表格中相同文本的相邻单元格的代码
2011/04/06 Javascript
向左滚动文字 js代码效果
2013/08/17 Javascript
jQuery图片左右滚动代码 有左右按钮实例
2016/06/20 Javascript
AngularJS下对数组的对比分析
2016/08/24 Javascript
jQuery得到多个值只能用取Class ,不能用取ID的方法
2016/12/04 Javascript
AngularJS框架的ng-app指令与自动加载实现方法分析
2017/01/04 Javascript
Javascript实现时间倒计时效果
2017/07/15 Javascript
详谈Node.js之操作文件系统
2017/08/29 Javascript
基于ES6 Array.of的用法(实例讲解)
2017/09/05 Javascript
推荐VSCode 上特别好用的 Vue 插件之vetur
2017/09/14 Javascript
vue+elementUi图片上传组件使用详解
2019/08/20 Javascript
node.js中对Event Loop事件循环的理解与应用实例分析
2020/02/14 Javascript
Node.js 中判断一个文件是否存在
2020/08/24 Javascript
python用来获得图片exif信息的库实例分析
2015/03/16 Python
Hadoop中的Python框架的使用指南
2015/04/22 Python
numpy数组广播的机制
2019/07/12 Python
简单了解Python write writelines区别
2020/02/27 Python
使用python 计算百分位数实现数据分箱代码
2020/03/03 Python
pandas抽取行列数据的几种方法
2020/12/13 Python
网络、C以及其他硬件方面的面试题
2016/08/23 面试题
毕业生求职自荐信怎么写
2014/01/08 职场文书
三爱活动实施方案
2014/03/19 职场文书
《孙权劝学》教学反思
2014/04/23 职场文书
元旦联欢会策划方案
2014/06/11 职场文书
优秀毕业生的求职信
2014/07/21 职场文书
2014年教师节寄语
2014/08/11 职场文书
拆迁委托协议书
2014/09/15 职场文书
统计学教授推荐信
2014/09/18 职场文书
格列佛游记读书笔记
2015/06/30 职场文书
大学迎新生欢迎词
2015/09/29 职场文书
导游词之永泰公主墓
2019/12/04 职场文书
深入理解java.lang.String类的不可变性
2021/06/27 Java/Android