如何理解对数结果
三种标准底数针对同一个数回答了不同的问题。下表以 x = 100 为例做了展示。
| 对数 | 底数 | x = 100 时的值 | 常见用途 |
|---|---|---|---|
| ln | e = 2.71828... | 4.60517 | 微积分、连续增长与衰减 |
| log10 | 10 | 2 | 科学计数法、分贝、pH 值、数量级 |
| log2 | 2 | 6.643856 | 计算机科学、信息论(比特数) |
- 对数对零和负数没有定义,底数必须为正且不能等于 1。
- 在任何底数下都有 log_b(1) = 0,因为 b⁰ = 1;同样 log_b(b) = 1,因为 b¹ = b。
- 当输入在 0 到 1 之间时,对数为负——例如 log_10(0.01) = −2。
- 不同领域的记法有所不同:在数学中,不带底数的「log」常常指 ln,而在工程学以及大多数计算器上,它指的是 log10。ISO 80000-2 标准推荐使用明确的记法 ln、lg 和 lb。
什么是对数?
以 b 为底 x 的对数,记作 log_b(x),是使 b 取该次幂等于 x 的指数:若 b^y = x,则 log_b(x) = y。例如,log_10(100) = 2,因为 10² = 100;log_2(8) = 3,因为 2³ = 8。对数是指数运算的逆运算。
实践中最常用的是三种底数。自然对数(ln)以 e(约等于 2.71828)为底,是微积分、增长与衰减模型以及各类科学研究中的标准工具。常用对数(log10)是科学计数法以及分贝、pH 值等度量尺度的基础。二进制对数(log2)广泛用于计算机科学,从算法分析到信息论,都用它来度量比特数。
对数只对正数有定义,底数必须为正且不能等于 1。不存在任何实数 y 能让 b^y 等于零或负数,这就是为什么 log(0) 以及负数的对数都没有定义;而底数为 1 也不成立,因为 1 的任意次幂始终等于 1。
如何使用这个对数计算器
- 输入你想求对数的数 x,它必须是正数。
- 输入底数 b,必须为正且不能等于 1;常见的取值有 10、2 和 e(约等于 2.71828)。
- 查看以 b 为底 x 的对数,它是用换底公式计算得到的。
- 对照同一个数的自然对数、常用对数和二进制对数,它们会一并显示出来。
换底公式
任意底数的对数都可以用另一种底数的对数计算出来:log_b(x) = ln(x) / ln(b)。这一换底恒等式正是计算器仅凭自然对数就能计算任意底数对数的原理。
演示:log_2(8)。计算 ln(8) = 2.079442,ln(2) = 0.693147;两者相除 2.079442 / 0.693147 = 3。验证:2³ = 8。再举一例:log_10(100) = 2,因为 10² = 100;对同一个输入,计算器还会给出 ln(100) = 4.60517 以及 log_2(100) = 6.643856。
几个关键的代数恒等式都源自定义:积的对数等于对数之和,log_b(xy) = log_b(x) + log_b(y);商的对数等于对数之差;幂的对数则是把指数提到前面,log_b(x^k) = k log_b(x)。这些法则把乘法转化为加法,这也正是对数表最初被发明的原因。
常见错误
- 对零或负数求对数——对数只对正数有定义。
- 以为 log(x + y) 等于 log(x) + log(y);求和法则适用于乘积,而不是求和:log(xy) = log(x) + log(y)。
- 把「log」指代的底数搞混:许多计算器和编程语言的约定并不相同(例如在 JavaScript 中,Math.log 是自然对数)。
- 把 log_b(x^k) 写成 (log_b x)^k——幂法则是把指数提到前面作为乘数,而不是作用在对数结果上。
- 使用底数为 1 的情形,这时对数根本不存在,因为 1 的任意次幂都等于 1。
常见问题
以 10 为底 100 的对数是多少?
log_10(100) = 2,因为 10 的 2 次方等于 100。常用对数计算的是 10 的因子个数,所以 log_10(1000) = 3,log_10(0.01) = −2。
如果我的计算器没有某个底数,怎样计算对数?
使用换底公式:log_b(x) = ln(x) / ln(b),或等价地 log_10(x) / log_10(b)。例如,log_5(125) = ln(125) / ln(5) = 4.828314 / 1.609438 = 3,验证 5³ 确实等于 125。
ln 和 log 有什么区别?
ln 始终表示以 e(约等于 2.71828)为底的自然对数。「log」则比较模糊:在纯数学中它常指自然对数,而在工程学、化学以及大多数手持计算器上,它指的是以 10 为底。ISO 80000-2 标准建议用 ln 表示以 e 为底、lg 表示以 10 为底、lb 表示以 2 为底,以避免歧义。
为什么不能对负数求对数?
因为正数底数的任何实数次幂都不可能是负数:当 b > 0 时,对任意实数 y,b^y 都是正的。因此当 x ≤ 0 时,log_b(x) 没有实数值。(在复分析中可以定义负数的对数,但它是多值的,超出了实值计算器的范围。)
log2 有什么用途?
二进制对数 log_2 衡量的是要经过多少次翻倍才能达到某个数,这使它在计算机科学中至关重要:对 n 个已排序的元素做二分查找,大约需要 log_2(n) 步;log_2 还给出了表示 n 个不同取值所需的比特数。例如,log_2(1024) = 10,说明 10 个比特可以表示 1024 个取值。
对数刻度是什么意思?
对数刻度按相等的比例(而不是相等的差值)来排列数值:每前进一步就乘以一个固定的倍数。分贝、里氏震级和 pH 值都是对数刻度——pH 值每增加 1 个单位,意味着氢离子浓度下降为原来的十分之一。对数刻度能让跨越多个数量级的数值在同一坐标轴上清晰可读。
参考文献
- Weisstein, Eric W. "Logarithm." MathWorld — A Wolfram Web Resource. mathworld.wolfram.com.
- ISO 80000-2:2019. Quantities and units — Part 2: Mathematics (standard notation for ln, lg, lb).
- Abramowitz M, Stegun IA (eds). Handbook of Mathematical Functions. National Bureau of Standards, 1964 (Chapter 4: elementary transcendental functions).