Python math库 ln(x)运算的实现及原理
2019-07-17 11:08
1121 查看
这个是很有用的一个运算,除了本身可以求自然对数,还是求指数函数需要用到的基础函数。
实现原理就是泰勒展开,最简单是在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)
以上就是本文的全部内容,希望对大家的学习有所帮助
您可能感兴趣的文章:
相关文章推荐
- 关于十进制数取异或运算原理(Python实现)
- 构造正规式r1|r2(或运算)的NFA的程序实现(Python实现版本)、编译原理课程设计
- 决策树原理及Python代码实现
- GAN原理解析,公式推导与python实现
- 经典遗传算法(SGA)解01背包问题的原理及其python代码实现
- 蒙特.卡罗方法求解圆周率近似值原理与Python实现
- 数据挖掘基础:K-Means算法的原理与Python实现
- KD-tree的原理以及构建与查询操作的python实现
- python opencv 实现开闭运算
- python实现bitmap原理
- Atitit. servlet 与 IHttpHandler ashx listen 和HttpModule的区别与联系 原理理论 架构设计 实现机制 java php c#.net js javascript c++ python
- Python整数对象实现原理详解
- Python封装原理与实现方法详解
- KNN分类算法原理与Python+sklearn实现根据身高和体重对体型分类
- python实现随机漫步方法和原理
- 线程池原理及python实现
- 180123 PCA主成分分析的原理解释及python代码实现
- Holt-Winters模型原理分析及代码实现(python)
- ID3决策树原理分析及python实现
- 线性回归原理及python实现