Python math库 ln(x)运算的实现及原理
作者:双花诞 发布时间:2023-09-11 18:12:28
标签:Python,math,ln(x)运算
这个是很有用的一个运算,除了本身可以求自然对数,还是求指数函数需要用到的基础函数。
实现原理就是泰勒展开,最简单是在x=1处进行泰勒展开:
但该函数离1越远越难收敛,同时大于2时无法收敛,所以需要进行换元,然后重新展开:
但是该换元在接近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)
来源:https://blog.csdn.net/m15682532244/article/details/80775927


猜你喜欢
- 例子老规矩,先上一个代码:def add(s, x): return s + xdef gen(): for i in range(4):
- 前言这里给大家介绍一下利用Pycharm如何打包文件,并为文件设置图标。一、下载pyinstaller库1)点击win+r,输入cmd打开控
- 学习使用存储过程(Stored Procedure),是ASP程序员的必须课之一。所有的大型数据库都支持存储过程,比如Oracle
- 大部分新手刚学Django开发的时候默认用的都是SQLite数据库,上线部署的时候,大多用的却是Mysql。那么我们应该如何把数据库从SQL
- 使用Python方法比用各种命令方便,可以设置超时时间,到底通不通,端口是否开放一眼能看出来。命令和返回完整权限,可以ping通,端口开放,
- 由于数据文件平时在数据库运行的时候处于使用状态,故当数据库处于打开状态时,管理员是无法重命名数据文件名字的。那么一定要更改这个数据文件的名字
- 最近在玩数据库的时候,偶尔会有外键创建不成功的时候,于是上网查阅资料,整合自己的理解有了以下这篇文章:mysql创建外键不成功的原因及处理方
- 本文实例讲述了Python装饰器用法与知识点。分享给大家供大家参考,具体如下:(1)装饰器含参数,被装饰函数不含(含)参数实例代码如下:im
-   MySQL行转列,对经常处理数据的同学们来说,一定是不陌生的,甚至是印象深刻,因为它大概率困扰过你,
- 用下面这个函数:Function CheckStringLength(txt) &n
- 介绍我编写了一个快速且带有斑点的python脚本,以可视化nmap和masscan的结果。它通过解析来自扫描的XML日志并生成所扫描IP范围
- BN与Dropout共同使用出现的问题BN和Dropout单独使用都能减少过拟合并加速训练速度,但如果一起使用的话并不会产生1+1>2
- str字符串s = '中文' # s: <type 'str'>s是个str对象,中
- 在已有的shapefile文件的基础上增加字段: # -*- coding:gb2312 -*-import shapefiler=shap
- 平时学生交上机作业的时候经常有人相互复制,直接改文件名了事,为了能够简单的检测这种作弊行为,想到了检测文件的MD5值,虽然对于抄袭来说作用不
- --相信大家肯定经常会把数据导入到数据库中,但是可能会有些记录行的所有列的数据是null,这为null的数据是我们不需要 --现在需要一个简
- 说明:我这里要把MySql数据库存放目录/var/lib/mysql下面的pw85数据库备份到/home/mysql_data里面,并且保存
- 1、流程控制流程控制在编程语言中是最伟大的发明了,因为有了它,你可以通过很简单的流程描述来表达很复杂的逻辑。流程控制包含分三大类:条件判断,
- 场景:购物车增加商品数量同时更新bridge标志上的总商品个数,如果只是加上当前变化后的数量的话则之前原有的数量会被重新添加一遍造成计算错误
- MYSQL模块暂时还不支持python3.0以上的版本,由于我下载的python是3.0版本的,所以想要连接数据库只能利用其它的方法。Pyt