✖️ 乘法之所以能变成加法,本质上是通过一种变换,把“数值的倍增关系”转换为“指数的累加关系”。最常用的工具是对数。
一、核心公式
对于正数 a>0、b>0,有:
logb(xy)=logbx+logby
这里左边原本是 x 和 y 的乘法,取对数以后变成了右边的加法。
反过来:
xy=blogbx+logby
如果使用自然对数 ln,对应的反函数是指数函数 ex:
xy=elnx+lny
因此,使用对数计算乘法可以分成三步:
- 分别对两个因子取对数。
- 把两个对数相加。
- 对结果取反对数,恢复原来的乘积。
二、为什么对数能把乘法变成加法
设:
x=bm,y=bn
那么:
xy=bm⋅bn=bm+n
根据对数的定义:
m=logbx,n=logby
所以:
logb(xy)=m+n=logbx+logby
关键是同底数幂的规则:
bm⋅bn=bm+n
对数记录的不是数本身,而是“底数需要乘自己多少次”。 两个数相乘时,它们的指数相加,因此在对数空间里,乘法自然表现为加法。
三、具体例子
计算:
100×1000
以 10 为底取对数:
log10100=2
log101000=3
把乘法变成加法:
2+3=5
再取反对数:
105=100000
因此:
100×1000=100000
四、推广到多个数
对于任意一组正数 x1,x2,…,xn:
ln(x1x2⋯xn)=lnx1+lnx2+⋯+lnxn
所以:
x1x2⋯xn=exp(i=1∑nlnxi)
原来的连续乘法被转换成了连续加法。
五、除法、乘方和开方也会被简化
| 原运算 | 取对数后 |
|---|
| xy | logx+logy |
| x/y | logx−logy |
| xn | nlogx |
| nx | n1logx |
这意味着:
- 乘法变加法;
- 除法变减法;
- 乘方变乘法;
- 开方变除法。
这也是历史上对数表和计算尺能够简化复杂计算的原因。
六、负数和零怎么处理
在实数范围内,lnx 只对 x>0 有定义,所以不能直接对负数或零取自然对数。
可以把符号和绝对值分开处理:先计算绝对值的对数之和,再根据负因子的数量恢复符号。
i∏xi=(i∏sgn(xi))exp(i∑ln∣xi∣)
只要乘积中存在一个零,整个乘积就是零。由于 ln0 没有有限值,实际计算时通常先单独检查零。
七、计算机中的实际用途
当大量很小的数相乘时,结果可能小到超出浮点数可表示的范围,发生下溢。例如:
P=p1p2⋯pn
可以改到对数空间:
lnP=lnp1+lnp2+⋯+lnpn
程序只需要累加对数,既更稳定,也更容易处理极大或极小的数。因此,对数似然、交叉熵、Softmax 和许多概率算法都会使用对数空间。
八、更抽象的理解
“把乘法变成加法”是在寻找一种函数 f,满足:
f(xy)=f(x)+f(y)
在正实数上,如果要求 f 具有连续性等常见条件,这类函数本质上就是对数函数:
f(x)=clnx
因此,对数是连接正数乘法结构与实数加法结构的自然桥梁:
(R>0,×) ln (R,+)
一句话总结:乘法在原始数值空间中发生,而加法在对数空间中发生;取对数进入对数空间,取指数返回原始空间。