Python math庫 ln(x)運算的實現(xiàn)及原理
這個是很有用的一個運算,除了本身可以求自然對數(shù),還是求指數(shù)函數(shù)需要用到的基礎(chǔ)函數(shù)。
實現(xiàn)原理就是泰勒展開,最簡單是在x=1處進行泰勒展開:

但該函數(shù)離1越遠越難收斂,同時大于2時無法收斂,所以需要進行換元,然后重新展開:


但是該換元在接近0時或者接近無窮大時收斂困難,處在1到10范圍內(nèi)收斂快且精度高,所以對大于10或小于1的值進行分解如下:
ln(55000)=ln(5.5)+4ln10
ln(0.0015)=ln(1.5)-4ln10
ln10為算好的值,可直接由ln_h1(10)得到
Epsilon 為精度控制
輸出的i可以檢測收斂次數(shù)。
Epsilon = 10e-16
ln10 = 2.30258509299404568401
def ln_h(x):
'''
ln函數(shù)泰勒換元展開
: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)
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python深度學習albumentations數(shù)據(jù)增強庫
下面開始albumenations的正式介紹,在這里我強烈建議英語基礎(chǔ)還好的讀者去官方網(wǎng)站跟著教程一步步學習,而這里的內(nèi)容主要是我自己的一個總結(jié)以及方便英語能力較弱的讀者學習2021-09-09
Python自動修改電腦靜態(tài)IP地址的實現(xiàn)示例
通過Python自動修改電腦的靜態(tài)IP地址可以極大地提高我們的工作效率,減少手動修改IP地址帶來的錯誤,本文就來介紹一下Python自動修改電腦靜態(tài)IP地址的實現(xiàn)示例,感興趣的可以了解一下2023-11-11
Django admin管理工具TabularInline類用法詳解
這篇文章主要介紹了Django admin管理工具TabularInline類用法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05
pytorch?tensor按廣播賦值scatter_函數(shù)的用法
這篇文章主要介紹了pytorch?tensor按廣播賦值scatter_函數(shù)的用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06
基于MATLAB和Python實現(xiàn)MFCC特征參數(shù)提取
這篇文章主要介紹了基于MATLAB和Python實現(xiàn)MFCC特征參數(shù)提取,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-08-08

