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 相关文章推荐
多线程爬虫批量下载pcgame图片url 保存为xml的实现代码
Jan 17 Python
Python使用Dijkstra算法实现求解图中最短路径距离问题详解
May 16 Python
python处理数据,存进hive表的方法
Jul 04 Python
PyQt5+requests实现车票查询工具
Jan 21 Python
详解Django+uwsgi+Nginx上线最佳实战
Mar 14 Python
Python 中包/模块的 `import` 操作代码
Apr 22 Python
详解python破解zip文件密码的方法
Jan 13 Python
如何导出python安装的所有模块名称和版本号到文件中
Jun 05 Python
解决Keras自带数据集与预训练model下载太慢问题
Jun 12 Python
Python 如何展开嵌套的序列
Aug 01 Python
如何利用python进行时间序列分析
Aug 04 Python
Python自动化爬取天眼查数据的实现
Jun 15 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&amp;&amp;mysql)一
2006/10/09 PHP
PHP 伪静态隐藏传递参数名的四种方法
2010/02/22 PHP
php单例模式实现(对象只被创建一次)
2012/12/05 PHP
深入理解PHP几个算法:PHP冒泡、PHP二分法、PHP求素数、PHP乘法表
2013/06/06 PHP
ThinkPHP字符串函数及常用函数汇总
2014/07/18 PHP
php简单实现MVC
2015/02/05 PHP
Smarty简单生成表单元素的方法示例
2016/05/23 PHP
使用PHPExcel实现数据批量导出为excel表格的方法(必看)
2017/06/09 PHP
说说掌握JavaScript语言的思想前提想学习js的朋友可以看看
2009/04/01 Javascript
使用Firebug对js进行断点调试的图文方法
2011/04/02 Javascript
jQuery中判断一个元素是否为另一个元素的子元素(或者其本身)
2012/03/21 Javascript
按下Enter焦点移至下一个控件的实现js代码
2013/12/11 Javascript
在JavaScript中判断整型的N种方法示例介绍
2014/06/18 Javascript
基于jQuery实现的扇形定时器附源码下载
2015/10/20 Javascript
NodeJS使用七牛云存储上传文件的方法
2017/07/24 NodeJs
jQuery实现倒计时功能 jQuery实现计时器功能
2017/09/19 jQuery
基于vue打包后字体和图片资源失效问题的解决方法
2018/03/06 Javascript
python 算法 排序实现快速排序
2012/06/05 Python
python检测服务器是否正常
2014/02/16 Python
简单介绍Python中的floor()方法
2015/05/15 Python
关于Pycharm无法debug问题的总结
2019/01/19 Python
python使用参数对嵌套字典进行取值的方法
2019/04/26 Python
python 函数中的内置函数及用法详解
2019/07/02 Python
Python使用Pandas对csv文件进行数据处理的方法
2019/08/01 Python
详解Django-channels 实现WebSocket实例
2019/08/22 Python
HTML5和CSS3让网页设计提升到下一个高度
2009/08/14 HTML / CSS
HTML5 声明兼容IE的写法
2011/05/16 HTML / CSS
英国户外玩具儿童游乐设备网站:TP Toys(蹦床、攀爬框架、秋千、滑梯和游戏屋)
2018/04/09 全球购物
DogBuddy荷兰:找到你最完美的狗保姆
2019/04/17 全球购物
高级Java程序员面试要点
2013/08/02 面试题
物流管理专业毕业生求职信
2014/03/23 职场文书
2014年重阳节活动策划方案书
2014/09/16 职场文书
表扬信格式模板
2015/05/05 职场文书
感动中国何玥观后感
2015/06/02 职场文书
vue3种table表格选项个数的控制方法
2022/04/14 Vue.js
MySQL约束(创建表时的各种条件说明)
2022/06/21 MySQL