突然有个需求,我需要对数据取对数,然后进行统计等相关操作。
对数的公式都忘记了,然后就自己推导了一下。先上一段数学公式的证明过程:
* 证明:loga(b)=logc(b)/logc(a)。
用到的公式:(x^m)^n=x^(m*n)。
设:a^n=b,c^y=b,c^x=a,则:n=loga(b),y=logc(b),x=logc(a)。
则:c^y=b=a^n=(c^x)^n=c^(x*n)=c^y。即:x*n=y,即:n=y/x。
有:loga(b)=logc(b)/logc(a)。
* 证明:loga(b)*logb(a)=1。
设:a^n=b,b^m=a,则:n=loga(b),m=logb(a)。
则:b=a^n=(b^m)^n=b^(m*n)=b^1,即:m*n=1。
有:loga(b)*logb(a)=1。
* 证明:a^loga(b)=b。
略。证明见下方。
* 证明:logc(a^n)=n*logc(a)。
令:c^y=b,则有:logc(b)=y,则有:c^logc(b)=b。
假设结论成立,则有:a^n=c^(n*logc(a))=(c^logc(a))^n=a^n。
可得:a^n=a^n,推论成立,所以假设成立。
我们可以用pyplotlib将底数和对数的关系用图形画出来。
http://www.labri.fr/perso/nrougier/teaching/matplotlib/matplotlib.html#quick-references
下面是python调用matplotlib画图的代码:
import math
import matplotlib.pyplot as plt
if __name__ == "__main__":
base = 1 + 9.8 / 100
l_x = [x for x in range(1, 20, 1)]
l_y = [base**x for x in l_x]
ly2 = [math.log10(y) for y in l_y]
ly3 = [x * math.log10(base) for x in l_x]
plt.plot(l_x, l_y, label="power(base, x)", color='red', linewidth=1)
plt.plot(l_x, ly2, "-", label='log10(base^x)', color="g", lw=1)
plt.plot(l_x, ly3, ".", label='x*log10(base)', color='b', lw=4)
plt.legend()
plt.show()
画出的图形如下:
未完待续。