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开发之快速搭建自动回复微信公众号功能
Apr 22 Python
Python环境搭建之OpenCV的步骤方法
Oct 20 Python
Python3 加密(hashlib和hmac)模块的实现
Nov 23 Python
Python实现简易版的Web服务器(推荐)
Jan 29 Python
python3+PyQt5自定义视图详解
Apr 24 Python
ActiveMQ:使用Python访问ActiveMQ的方法
Jan 30 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
Feb 25 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
Jun 12 Python
Python中的 sort 和 sorted的用法与区别
Aug 10 Python
Python如何调用JS文件中的函数
Aug 16 Python
pytorch载入预训练模型后,实现训练指定层
Jan 06 Python
python用tkinter实现一个gui的翻译工具
Oct 26 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
在windows iis5下安装php4.0+mysql之我见
2006/10/09 PHP
PHP5中GD库生成图形验证码(有汉字)
2013/07/28 PHP
win7安装php框架Yii的方法
2016/01/25 PHP
PHP重定向与伪静态区别
2017/02/19 PHP
PHP与Web页面的交互示例详解一
2020/08/04 PHP
用js实现的模拟jquery的animate自定义动画(2.5K)
2010/07/20 Javascript
基于jquery的划词搜索实现(备忘)
2010/09/14 Javascript
浅谈JS中json数据的处理
2016/06/30 Javascript
原生Javascript和jQuery做轮播图简单例子
2016/10/11 Javascript
利用vue写todolist单页应用
2016/12/15 Javascript
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
2016/12/15 Javascript
完美实现js选项卡切换效果(二)
2017/03/08 Javascript
关于vue-router的beforeEach无限循环的问题解决
2017/09/09 Javascript
react-native fetch的具体使用方法
2017/11/01 Javascript
js精确的加减乘除实例
2017/11/14 Javascript
详解各版本React路由的跳转的方法
2018/05/10 Javascript
JS异步执行结果获取的3种解决方式
2019/02/19 Javascript
vue结合el-upload实现腾讯云视频上传功能
2020/07/01 Javascript
Vue router安装及使用方法解析
2020/12/02 Vue.js
python使用分治法实现求解最大值的方法
2015/05/12 Python
python目录与文件名操作例子
2016/08/28 Python
Django csrf 验证问题的实现
2018/10/09 Python
Ubuntu18.04下python版本完美切换的解决方法
2019/06/14 Python
jupyter notebook 中输出pyecharts图实例
2020/04/23 Python
利用python、tensorflow、opencv、pyqt5实现人脸实时签到系统
2019/09/25 Python
pygame实现贪吃蛇游戏(上)
2019/10/29 Python
Pandas-Cookbook 时间戳处理方式
2019/12/07 Python
CSS3使用多列制作瀑布流
2016/05/10 HTML / CSS
AmazeUI图片轮播效果的示例代码
2020/08/20 HTML / CSS
德国婴儿推车和儿童安全座椅商店:BABYSHOP
2016/09/01 全球购物
市场专员岗位职责
2014/02/14 职场文书
加入学生会演讲稿
2014/04/24 职场文书
2014年学校团委工作总结
2014/12/20 职场文书
行政撤诉申请书
2015/05/18 职场文书
2019经典广告词集锦!
2019/07/02 职场文书
Python中的tkinter库简单案例详解
2022/01/22 Python