取对数的作用:压缩数值、变非线性为线性
取对数的作用:压缩数值、变非线性为线性
在数学的世界里,对数是一个神奇的工具。它不仅能将巨大的数字压缩到更易处理的范围,还能将复杂的非线性关系转化为简单的线性关系。本文将带你走进对数的世界,揭示这个数学工具的奥秘。
图 01. 朱诺号木星探测器携带物品之一:意大利太空署提供的伽利略铝质纪念牌(宽 2.8 英寸,高 2 英寸,重 6 克)。该纪念碑镌刻有伽利略的自画像,以及他于 1610 年发现木星卫星的亲笔记录字迹。来源:wikipedia.org
意大利物理学家、数学家和天文学家伽利略曾经说过:“给我空间、时间及对数,我就可以创造一个宇宙。”这句话道出了对数在数学和科学中的重要地位。在我们学习数学或者使用数学的时候,也常常会遇到“对数”。但是,取对数到底有什么用呢?让我们一起来揭开对数的“神秘”面纱。
压缩数值
图 02. 通过对数函数 $y = \ln x$, 可以将相距较大的两个数字 $A$ 和 $B$ 转换为相距较小的数字 $a$ 和 $b$, 并且,当 $A$ 和 $B$ 的值越大的时候,转换得到的 $a$ 和 $b$ 的值差距越小。
对数的其中一个作用就是可以“压缩”数值,或者说,对数可以反应较大数字的“量级”。例如,对于数字 $123456$ 和 $654321$ 是两个相差特别大的数字,如果要比较这样的数字的大小,或者将其绘制在坐标图上,都不是很好表示,但如果我们对其取对数,就可以在减少这样的差异,并且不改变原有的大小关系(因为对数函数是一个单调递增的函数,可以保留原有的相对大小关系):
$$
\log_{10}^{123456} \simeq 5.0915
$$
$$
\log_{10}^{654321} \simeq 5.8158
$$
在上面做数值压缩的过程中,我们使用的是底数为 $10$ 的“常用对数”,因为常用的数字就是十进制的,用底数为 $10$ 的对数可以很方便的显示出原有数字的量级(一个“量级”就是十进制的一个“位”,即千位、百位和十位等),例如:
$$
\log_{10}^{6 \times 10^{\textcolor{springgreen}{8}}} \simeq \textcolor{springgreen}{8}.7782
$$
$$
\log_{10}^{9 \times 10^{\textcolor{springgreen}{8}}} \simeq \textcolor{springgreen}{8}.9542
$$
$$
\log_{10}^{2 \times 10^{\textcolor{orangered}{9}}} \simeq \textcolor{orangered}{9}.3010
$$
当然,用其他底数也可以大致反映出不同十进制数字的相对大小,但不能反映出十进制数字原本的量级:
$$
\log_{\mathrm{e}}^{6 \times 10^{\textcolor{pink}{8}}} \simeq \textcolor{tan}{20}.2124
$$
$$
\log_{\mathrm{e}}^{9 \times 10^{\textcolor{pink}{8}}} \simeq \textcolor{tan}{20}.6179
$$
$$
\log_{\mathrm{e}}^{2 \times 10^{\textcolor{pink}{9}}} \simeq \textcolor{tan}{21}.4164
$$
在实际应用中,至少下面的数值或者表示方法都使用了对数:
⁕ 里氏地震震级(用于描述地震烈度)
⁕ 分贝(用于音量)
⁕ 奈培(用于电功率)
⁕ 音分、小二度、全音及纯八度等(用于音乐中的相对音高)
⁕ Logit(用于统计学的发生比)
⁕ 巴勒莫撞击危险指数(用于表示近地天体撞击地球的危险几率)
⁕ 对数时间线
⁕ 焦比(用于计算摄影中的曝光量)
⁕ 熵(用于热力学)
⁕ 信息(用于信息论)
⁕ 土壤的颗粒尺寸分布的曲线
⁕ 对数星图(用于表示星体之间的相对位置)
⁕ 能量密度(用于铀和化石燃料能量密度的比较)
⁕ pH 值(用于表示酸性)
⁕ 视星(用于表示恒星亮度)
⁕ 克伦宾尺度(用于地质学中表示粒径)
⁕ 吸光度(用于描述物体的透光性能)
变非线性为线性
此外,取对数的另一个作用就是将非线性的式子转换为线性的式子。例如,当 $Z$ 为变量,$n$ 为常数的时候,”$Z^{n}$” 不是一个线性表达式,但是,对其取对数之后,就可以转变为线性表达式 “$n \log Z$”:
$$
\log Z^{n} = n \log Z
$$
同样的,当 $x$ 和 $y$ 为变量的时候,”$xy$” 不是一个线性表达式,但是对其取对数之后,就可以转变为线性表达式 “$\log x$ $+$ $\log y$”:
$$
\log (xy) = \log x + \log y
$$
线性表达式在计算上更加简单,在人工智能领域有着广泛且深入的应用。