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 相关文章推荐
17个Python小技巧分享
Jan 23 Python
浅谈django中的认证与登录
Oct 31 Python
Python基于csv模块实现读取与写入csv数据的方法
Jan 18 Python
Python打开文件,将list、numpy数组内容写入txt文件中的方法
Oct 26 Python
python实现汽车管理系统
Nov 30 Python
Django管理员账号和密码忘记的完美解决方法
Dec 06 Python
pyqt5 comboBox获得下标、文本和事件选中函数的方法
Jun 14 Python
Python利用matplotlib做图中图及次坐标轴的实例
Jul 08 Python
使用Python将字符串转换为格式化的日期时间字符串
Sep 01 Python
django中使用事务及接入支付宝支付功能
Sep 15 Python
Python如何进行时间处理
Aug 06 Python
python使用pywinauto驱动微信客户端实现公众号爬虫
May 19 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
Yii框架获取当前controlle和action对应id的方法
2014/12/03 PHP
php简单统计在线人数的方法
2016/05/10 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
SyntaxHighlighter语法高亮插件使用说明
2011/08/14 Javascript
jWiard 基于JQuery的强大的向导控件介绍
2011/10/28 Javascript
js浮点数精确计算(加、减、乘、除)
2013/12/26 Javascript
JavaScript实现的多个图片广告交替显示效果代码
2015/09/04 Javascript
javascript弹出窗口实现代码
2015/11/12 Javascript
jquery在ie7下选择器的问题导致append失效的解决方法
2016/01/10 Javascript
jQuery中数据缓存$.data的用法及源码完全解析
2016/04/29 Javascript
聊一聊jQuery插件uploadify使用方法
2016/08/24 Javascript
微信小程序 扎金花简单实例
2017/02/21 Javascript
vue通过watch对input做字数限定的方法
2017/07/13 Javascript
基于JavaScript实现前端数据多条件筛选功能
2020/08/19 Javascript
JavaScript中this函数使用实例解析
2020/02/21 Javascript
js函数柯里化的方法和作用实例分析
2020/04/11 Javascript
详解vue中v-on事件监听指令的基本用法
2020/07/22 Javascript
element-ui 弹窗组件封装的步骤
2021/01/22 Javascript
[43:35]TI4 循环赛第二日Liquid vs Fnatic
2014/07/11 DOTA
[04:31]2016国际邀请赛中国区预选赛妖精采访
2016/06/27 DOTA
Python中使用item()方法遍历字典的例子
2014/08/26 Python
Python实现多线程抓取网页功能实例详解
2017/06/08 Python
python多进程中的内存复制(实例讲解)
2018/01/05 Python
搞清楚 Python traceback的具体使用方法
2019/05/13 Python
tensorflow多维张量计算实例
2020/02/11 Python
浅谈keras2 predict和fit_generator的坑
2020/06/17 Python
纯CSS3制作的鼠标悬停时边框旋转
2017/01/03 HTML / CSS
HTML5自定义属性的问题分析
2019/08/16 HTML / CSS
YSL圣罗兰美妆官方旗舰店:购买YSL口红
2018/04/16 全球购物
德国高端单身人士交友网站:ElitePartner
2018/12/02 全球购物
加州风格的游泳和沙滩装品牌:Cupshe
2019/06/10 全球购物
亚马逊巴西站:Amazon.com.br
2019/09/22 全球购物
教师群众路线学习心得体会
2014/11/04 职场文书
人事局接收函
2015/01/30 职场文书
优秀团员主要事迹材料
2015/11/05 职场文书
python turtle绘图命令及案例
2021/11/23 Python