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中for循环下的索引变量的作用域
Apr 15 Python
python实现汉诺塔方法汇总
Jul 25 Python
Pycharm技巧之代码跳转该如何回退
Jul 16 Python
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
Mar 23 Python
Jupyter安装nbextensions,启动提示没有nbextensions库
Apr 23 Python
python读取csv文件并把文件放入一个list中的实例讲解
Apr 27 Python
python3之模块psutil系统性能信息使用
May 30 Python
对python 合并 累加两个dict的实例详解
Jan 21 Python
Python Gitlab Api 使用方法
Aug 28 Python
Python socket模块方法实现详解
Nov 05 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
Jun 24 Python
Django跨域请求原理及实现代码
Nov 14 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的memcached客户端memcached
2011/06/14 PHP
析构函数与php的垃圾回收机制详解
2013/10/28 PHP
PHP的引用详解
2015/02/22 PHP
php微信公众号开发(4)php实现自定义关键字回复
2016/12/15 PHP
PHP+Ajax 检测网络是否正常实例详解
2016/12/16 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
2018/08/07 PHP
轻轻松松学习JavaScript
2007/02/25 Javascript
23个Javascript弹出窗口特效整理
2011/02/25 Javascript
关于JavaScript中原型继承中的一点思考
2012/07/25 Javascript
js前台分页显示后端JAVA数据响应
2013/03/18 Javascript
js取消单选按钮选中并判断对象是否为空
2013/11/14 Javascript
alert出数组中的随即值代码
2014/09/25 Javascript
解析javascript中鼠标滚轮事件
2015/05/26 Javascript
遍历json 对象的属性并且动态添加属性的实现
2016/12/02 Javascript
适用于手机端的jQuery图片滑块动画
2016/12/09 Javascript
node.js多个异步过程中判断执行是否完成的解决方案
2017/12/10 Javascript
微信小程序下拉框功能的实例代码
2018/11/06 Javascript
layui默认选中table的CheckBox复选框方法
2019/09/19 Javascript
python实现数据图表
2017/07/29 Python
Python2.7基于笛卡尔积算法实现N个数组的排列组合运算示例
2017/11/23 Python
python3+PyQt5重新实现自定义数据拖放处理
2018/04/19 Python
使用tensorflow实现线性回归
2018/09/08 Python
python实现快递价格查询系统
2020/03/03 Python
Python 操作 PostgreSQL 数据库示例【连接、增删改查等】
2020/04/21 Python
Python with语句用法原理详解
2020/07/03 Python
python接口自动化框架实战
2020/12/23 Python
numba提升python运行速度的实例方法
2021/01/25 Python
Shopee印度尼西亚:东南亚与台湾市场最大电商平台
2018/06/17 全球购物
班组安全员工作职责
2014/02/01 职场文书
yy婚礼主持词
2014/03/14 职场文书
环保标语大全
2014/06/12 职场文书
白莲教口号
2014/06/18 职场文书
承诺书模板
2014/08/30 职场文书
食品药品安全责任书
2015/05/11 职场文书
MySQL数字类型自增的坑
2021/05/07 MySQL
阿里云k8s服务升级时502错误 springboot项目应用
2022/04/09 Servers