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中的MongoDB基本操作:连接、查询实例
Feb 13 Python
对python中return和print的一些理解
Aug 18 Python
机器学习的框架偏向于Python的13个原因
Dec 07 Python
Python排序搜索基本算法之插入排序实例分析
Dec 11 Python
PyQt5每天必学之滑块控件QSlider
Apr 20 Python
在Python中使用gRPC的方法示例
Aug 08 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
Aug 06 Python
python编写简单端口扫描器
Sep 04 Python
python字典的值可以修改吗
Jun 29 Python
Python调用C语言程序方法解析
Jul 07 Python
详解Python高阶函数
Aug 15 Python
总结Python变量的相关知识
Jun 28 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 301转向实现代码
2008/09/18 PHP
基于PHP实现商品成交时发送短信功能
2016/05/11 PHP
PHP数据库编程之MySQL优化策略概述
2017/08/16 PHP
Javascript this指针
2009/07/30 Javascript
js实现双向链表互联网机顶盒实战应用实现
2011/10/28 Javascript
javascript确认框的三种使用方法
2013/12/17 Javascript
javascript 获取网页标题代码实例
2014/01/22 Javascript
jquery提交form表单时禁止重复提交的方法
2014/02/13 Javascript
JavaScript实现MIPS乘法模拟的方法
2015/04/17 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
2016/04/13 Javascript
Es6 写的文件import 起来解决方案详解
2016/12/13 Javascript
微信小程序 增、删、改、查操作实例详解
2017/01/13 Javascript
Javascript ES6中对象类型Sets的介绍与使用详解
2017/07/17 Javascript
Vue Router的懒加载路径的解决方法
2018/06/21 Javascript
js如何实现元素曝光上报
2019/08/07 Javascript
JS如何操作DOM基于表格动态展示数据
2020/10/15 Javascript
Python自定义scrapy中间模块避免重复采集的方法
2015/04/07 Python
python使用PyGame绘制图像并保存为图片文件的方法
2015/04/24 Python
python判断图片宽度和高度后删除图片的方法
2015/05/22 Python
python 生成器生成杨辉三角的方法(必看)
2017/04/10 Python
python爬虫headers设置后无效的解决方法
2017/10/21 Python
Django csrf 两种方法设置form的实例
2019/02/03 Python
Python如何筛选序列中的元素的方法实现
2019/07/15 Python
python实现在一个画布上画多个子图
2020/01/19 Python
python字符串,元组,列表,字典互转代码实例详解
2020/02/14 Python
keras topN显示,自编写代码案例
2020/07/03 Python
html5本地存储_动力节点Java学院整理
2017/07/12 HTML / CSS
HTML5移动端开发遇见的东西
2019/10/11 HTML / CSS
大专生工程监理求职信
2013/10/04 职场文书
英文版银行求职信
2013/10/09 职场文书
审计主管岗位职责
2014/01/31 职场文书
计算机维护专业推荐信
2014/02/27 职场文书
环保倡议书400字
2014/05/15 职场文书
伦敦奥运会的口号
2014/06/21 职场文书
个人授权委托书范本
2014/09/14 职场文书
校园学雷锋广播稿
2014/10/08 职场文书