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之Python安装
Sep 12 Python
进一步探究Python中的正则表达式
Apr 28 Python
用python实现简单EXCEL数据统计的实例
Jan 24 Python
python实现神经网络感知器算法
Dec 20 Python
python爬取网页内容转换为PDF文件
Jul 28 Python
详解Python列表赋值复制深拷贝及5种浅拷贝
May 15 Python
Python类的绑定方法和非绑定方法实例解析
Mar 04 Python
详解pandas绘制矩阵散点图(scatter_matrix)的方法
Apr 23 Python
python Canny边缘检测算法的实现
Apr 24 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
Apr 24 Python
30行Python代码实现高分辨率图像导航的方法
May 22 Python
django注册用邮箱发送验证码的实现
Apr 18 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 error_log 函数的使用
2009/04/13 PHP
javascript 无提示关闭窗口脚本
2009/08/17 Javascript
JavaScript 面向对象的之私有成员和公开成员
2010/05/04 Javascript
关于UTF-8的客户端用AJAX方式获取GB2312的服务器端乱码问题的解决办法
2010/11/30 Javascript
JS隐藏参数post传值实例
2013/04/18 Javascript
Bootstrap3制作图片轮播效果
2016/05/12 Javascript
JavaScript仿网易选项卡制作代码
2016/10/06 Javascript
jQuery ajax的功能实现方法详解
2017/01/06 Javascript
bootstrap常用组件之头部导航实现代码
2017/04/20 Javascript
微信小程序之选项卡的实现方法
2017/09/29 Javascript
Vue工程模板文件 webpack打包配置方法
2017/12/26 Javascript
基于vue-resource jsonp跨域问题的解决方法
2018/02/03 Javascript
vue-cli 如何打包上线的方法示例
2018/05/08 Javascript
读懂CommonJS的模块加载
2019/04/19 Javascript
[02:43]DOTA2英雄基础教程 德鲁伊
2014/01/13 DOTA
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
[03:00]2014DOTA2国际邀请赛 Titan淘汰潸然泪下Ohaiyo专访
2014/07/15 DOTA
Python迭代器和生成器介绍
2015/03/06 Python
利用Django内置的认证视图实现用户密码重置功能详解
2017/11/24 Python
浅谈Python实现2种文件复制的方法
2018/01/19 Python
Python实现Pig Latin小游戏实例代码
2018/02/02 Python
python利用小波分析进行特征提取的实例
2019/01/09 Python
在python中用print()输出多个格式化参数的方法
2019/07/16 Python
深入了解python中元类的相关知识
2019/08/29 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
2019/10/23 Python
Python猫眼电影最近上映的电影票房信息
2020/09/18 Python
雪花秀美国官方网站:韩国著名草本护肤化妆品品牌
2016/10/19 全球购物
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
2016/01/06 面试题
基层干部2014全国两会学习心得体会
2014/03/10 职场文书
《富饶的西沙群岛》教学反思
2014/04/09 职场文书
小学数学教研活动总结
2014/07/01 职场文书
党课培训心得体会
2014/09/02 职场文书
科长个人四风问题整改措施思想汇报
2014/10/13 职场文书
详解Java实现设计模式之责任链模式
2021/06/23 Java/Android
Java 超详细讲解十大排序算法面试无忧
2022/04/08 Java/Android
使用Ajax实现无刷新上传文件
2022/04/12 Javascript