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 24 Python
Python 数据结构之旋转链表
Feb 25 Python
Python使用flask框架操作sqlite3的两种方式
Jan 31 Python
关于python写入文件自动换行的问题
Jun 23 Python
替换python字典中的key值方法
Jul 06 Python
对Pycharm创建py文件时自定义头部模板的方法详解
Feb 12 Python
Python单元测试工具doctest和unittest使用解析
Sep 02 Python
python实现串口通信的示例代码
Feb 10 Python
Python动态导入模块:__import__、importlib、动态导入的使用场景实例分析
Mar 30 Python
python语言中有算法吗
Jun 16 Python
python多线程和多进程关系详解
Dec 14 Python
Python中快速掌握Data Frame的常用操作
Mar 31 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版(1)
2006/10/09 PHP
php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
2010/10/22 PHP
PHP优于Node.js的五大理由分享
2012/09/15 PHP
PHP 线程安全与非线程安全版本的区别深入解析
2013/08/06 PHP
基于PHP的简单采集数据入库程序【续篇】
2014/07/30 PHP
PHP二维数组矩形转置实例
2016/07/20 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
PHP中in_array的隐式转换的解决方法
2018/03/06 PHP
JavaScript 学习笔记(十四) 正则表达式
2010/01/22 Javascript
js渐变显示渐变消失示例代码
2013/08/01 Javascript
15条JavaScript最佳实践小结
2013/08/09 Javascript
jQuery判断checkbox是否选中的小例子
2013/12/02 Javascript
jquery 快速回到页首的方法
2013/12/05 Javascript
Javascript复制实例详解
2016/01/28 Javascript
javascript将中国数字格式转换成欧式数字格式的简单实例
2016/08/02 Javascript
jquery 禁止鼠标右键并监听右键事件
2017/04/27 jQuery
基于ajax和jsonp的原生封装(实例)
2017/10/16 Javascript
微信小程序手机号码验证功能的实例代码
2018/08/28 Javascript
[09:31]2016国际邀请赛中国区预选赛Yao赛后采访 答题送礼
2016/06/27 DOTA
通过实例简单了解Python中yield的作用
2019/12/11 Python
通过实例解析Python调用json模块
2019/12/11 Python
Python Merge函数原理及用法解析
2020/09/16 Python
Python QT组件库qtwidgets的使用
2020/11/02 Python
Speedo美国:澳大利亚顶尖泳衣制造商
2016/08/03 全球购物
中东地区为妈妈们提供一切的头号购物目的地:Sprii
2018/05/06 全球购物
Final类有什么特点
2012/04/25 面试题
WebSphere面试题:在WebSphere里面如何部署一个应用
2015/08/02 面试题
回门宴新郎答谢词
2014/01/12 职场文书
《雨点儿》教学反思
2014/04/14 职场文书
群众路线教育实践活动对照检查材料
2014/09/22 职场文书
2014年依法行政工作总结
2014/11/19 职场文书
软件项目经理岗位职责
2015/04/01 职场文书
离婚案件被告代理词
2015/05/23 职场文书
离婚协议书范文2016
2016/03/18 职场文书
聊一聊Redis与MySQL双写一致性如何保证
2021/06/26 Redis
js不常见操作运算符总结
2021/11/20 Javascript