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实现去除下载电影和电视剧文件名中的多余字符的方法
Sep 23 Python
python Pygame的具体使用讲解
Nov 03 Python
对Python 语音识别框架详解
Dec 24 Python
python使用pymongo操作mongo的完整步骤
Apr 13 Python
对Python的交互模式和直接运行.py文件的区别详解
Jun 29 Python
在python中利用numpy求解多项式以及多项式拟合的方法
Jul 03 Python
Python Matplotlib 基于networkx画关系网络图
Jul 10 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
Feb 04 Python
Python利用myqr库创建自己的二维码
Nov 24 Python
Python爬虫之App爬虫视频下载的实现
Dec 08 Python
Python中OpenCV实现查找轮廓的实例
Jun 08 Python
pandas时间序列之pd.to_datetime()的实现
Jun 16 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
一个程序下载的管理程序(三)
2006/10/09 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
2014/04/19 PHP
php使用PDO方法详解
2014/12/27 PHP
PHP生成指定随机字符串的简单实现方法
2015/04/01 PHP
PHP中header函数的用法及其注意事项详解
2016/06/13 PHP
PHP随机获取未被微信屏蔽的域名(微信域名检测)
2017/03/19 PHP
javascript 常用关键字列表集合
2007/12/04 Javascript
来自qq的javascript面试题
2010/07/24 Javascript
探索Emberjs制作一个简单的Todo应用
2012/11/07 Javascript
JQuery实现表格中相同单元格合并示例代码
2013/06/26 Javascript
Extjs NumberField后面加单位实现思路
2013/07/30 Javascript
JSON+HTML实现国家省市联动选择效果
2014/05/18 Javascript
javascript检测是否联网的实现代码
2014/09/28 Javascript
不到30行JS代码实现Excel表格的方法
2014/11/15 Javascript
jQuery+html5实现div弹出层并遮罩背景
2015/04/15 Javascript
js实现目录链接,内容跟着目录滚动显示的简单实例
2016/10/15 Javascript
javascript使用btoa和atob来进行Base64转码和解码
2017/03/20 Javascript
详解webpack之scss和postcss-loader的配置
2018/01/09 Javascript
关于在vue 中使用百度ueEditor编辑器的方法实例代码
2018/09/14 Javascript
使用python绘制人人网好友关系图示例
2014/04/01 Python
100行python代码实现跳一跳辅助程序
2018/01/15 Python
python使用tornado实现登录和登出
2018/07/28 Python
详解python pandas 分组统计的方法
2019/07/30 Python
python多线程扫描端口(线程池)
2019/09/04 Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
2020/05/11 Python
Python实现网络聊天室的示例代码(支持多人聊天与私聊)
2021/01/27 Python
CSS3 绘制BMW logo实的现代码
2013/04/25 HTML / CSS
瑞典快乐袜子:Happy Socks
2018/02/16 全球购物
中国领先的汽车保养服务平台:途虎养车
2019/10/18 全球购物
《傅雷家书》教学反思
2014/04/20 职场文书
青安岗事迹材料
2014/05/14 职场文书
考试作弊检讨书怎么写?
2014/12/21 职场文书
介绍信范文
2015/01/31 职场文书
教师岗位职责
2015/02/03 职场文书
护理工作个人总结
2015/03/03 职场文书
2016年学校“3.12”植树节活动总结
2016/03/16 职场文书