当前位置: 首页 > 工具软件 > Loglog > 使用案例 >

对数(log)的换算公式

邢星波
2023-12-01

对数公式的换算,对于算法复杂度的推导非常重要。但是我总忘,这次特地总结一下常用的对数公式,以备后用。

名称公式
和差 log ⁡ α M N = log ⁡ α M + l o g α N \log_\alpha MN=\log_\alpha M+log_\alpha N logαMN=logαM+logαN
换底公式 log ⁡ α x = log ⁡ β x log ⁡ β α \log_\alpha x=\frac{\log_\beta x}{\log_\beta\alpha} logαx=logβαlogβx
次方公式 log ⁡ a n x m = m n log ⁡ a x \log_{a^n}x^m=\frac{m}{n}\log_ax loganxm=nmlogax
互换 M log ⁡ a N = N log ⁡ a M M^{\log_aN}=N^{\log_aM} MlogaN=NlogaM
倒数 log ⁡ a b = ln ⁡ b ln ⁡ a = 1 log ⁡ b a \log_ab=\frac{\ln b}{\ln a}=\frac{1}{\log_ba} logab=lnalnb=logba1
链式 log ⁡ γ β log ⁡ β α = ln ⁡ β ln ⁡ γ ln ⁡ α ln ⁡ β = ln ⁡ α ln ⁡ γ = log ⁡ γ α \log_\gamma \beta\log_\beta\alpha=\frac{\ln \beta}{\ln \gamma}\frac{\ln \alpha}{\ln \beta}=\frac{\ln \alpha}{\ln \gamma}=\log_\gamma\alpha logγβlogβα=lnγlnβlnβlnα=lnγlnα=logγα
还原 α log ⁡ α x = x = log ⁡ α α x \alpha^{\log_\alpha x}=x=\log_\alpha \alpha^x αlogαx=x=logααx

注:公式总结自维基百科:https://zh.wikipedia.org/wiki/%E5%AF%B9%E6%95%B0

基底是 e e e还是2的问题

在一些计算机相关的领域,书写 log ⁡ \log log函数时经常会省略基底(base),例如时间复杂度 O ( log ⁡ N ) O(\log N) O(logN),或者在机器学习领域用来做多分类的交叉熵损失函数: L c e ( x , y ) = − ∑ c = 1 M y o , c log ⁡ ( p o , c ) L_{ce}(x,y)=-\sum^M_{c=1}y_{o,c}\log(p_{o,c}) Lce(x,y)=c=1Myo,clog(po,c),这个时候我们会想知道这些 log ⁡ \log log函数的基底到底是数学常数 e e e还是2?

一般情况下,算法复杂度和信息论领域(例如交叉熵)的 log ⁡ \log log计算都是以2为底,但也有少部分以 e e e为底的情况。其实我们对 log ⁡ \log log的基底无需过分担心,因为以 e e e为底得出的结果与以2为底得出的结果比值是个常数,使用换底公式即可求得:
log ⁡ e N log ⁡ 2 N = log ⁡ k N log ⁡ k e / log ⁡ k N log ⁡ k 2 = log ⁡ k 2 log ⁡ k e = log ⁡ e 2. \frac{\log_eN}{\log_2N}=\frac{\log_kN}{\log_ke}/\frac{\log_kN}{\log_k2}=\frac{\log_k2}{\log_ke}=\log_e2. log2NlogeN=logkelogkN/logk2logkN=logkelogk2=loge2.
因此,我们不应该过分关注 log ⁡ \log log函数的基底是 e e e还是2的问题,它们计算结果的比值总是一个常数,采用任何一个基底都不会对要解决的问题本身产生影响。

 类似资料: