数学 / 函数 · 从概念到零点与增长速度 / 指数函数 y = a^x:底是常数 待审核 8 / 12
exponential · y=axy = a^x · a>0, a1a > 0,\ a \ne 1

指数函数 y=axy = a^x:底是常数

指数函数(exponential function)形如 y=axy = a^x:底 aa 是常数,指数 xx 是自变量。它与幂函数 y=xαy = x^\alpha 恰好把底与指数的角色对调,是最容易混淆的一对。

1 · 底的取值范围

domain of aa · a>0a > 0 · a1a \ne 1

定义要求 a>0a > 0a1a \ne 1,两条各有各的理由。

a>0a > 0 是为了让定义域能取到全体实数。a<0a < 0axa^x 对多数实数指数无定义:(2)1/2(-2)^{1/2} 在实数范围内不存在,而 (2)1/3(-2)^{1/3}(2)2/6(-2)^{2/6} 又会因指数的写法不同而给出不同的值(见指数与对数的运算)。要保住一个处处有定义、且不依赖指数写法的函数,底只能取正。

a1a \ne 1 排除的是退化情形。1x1^x 恒等于 11,图象是一条水平直线,既不单调、值域也只有一个点,与指数函数的全部特征都不符。

2 · 图象的不变特征

(0,1)(0, 1) · 单调 · 渐近线 y=0y = 0

无论 aa 取何值,三条特征都不变。曲线恒过定点 (0,1)(0, 1),因为 a0=1a^0 = 1。定义域是全体实数,值域是 (0,+)(0, +\infty)xx 轴(即直线 y=0y = 0)是水平渐近线,曲线无限贴近它却不相交。

单调方向由 aa11 的大小裁定:a>1a > 1 时单调递增且 aa 越大上升越陡,0<a<10 < a < 1 时单调递减。两种情形的图象关于 yy 轴对称,因为 (1/a)x=ax(1/a)^x = a^{-x}

图 2-1 · 底 aa 变化时曲线的升降:a>1a > 1 递增、0<a<10 < a < 1 递减,曲线恒过 (0,1)(0, 1)xx 轴为水平渐近线。可拖动 aa 观察陡缓变化与对称关系。

同底的指数函数 axa^x 与对数函数 logax\log_a x 互为反函数,把这条曲线关于直线 y=xy = x 反射即得对数函数的图象。

3 · 值域为正在双精度下失效

underflow · 21075=02^{-1075} = 0

「指数函数的值永远为正」是一条数学结论,在代码里它不成立。双精度能表示的最小正数是 210742^{-1074}(约 4.94×103244.94 \times 10^{-324},一个次正规数),再往下就没有格子了。实测 2 ** -10744.94×103244.94 \times 10^{-324},而 2 ** -1075 精确地得 0——不是一个很小的正数,是零本身。

另一端同样有界。2 ** 1023 得约 8.99×103078.99 \times 10^{307}2 ** 1024Infinity。所以在 double 里,y=2xy = 2^x 的「值域」是 [0,+][0, +\infty] 的一个有限子集,xx 轴不再是渐近线而是被真正触到的一条线,x<1075x < -1075 的整段图象与 xx 轴重合。

注 · 这条边界对作图有直接后果:判断曲线是否与 xx 轴相交,不能用 f(x)=0f(x) = 0 作判据。同一条式子在 a=0.5a = 0.5 那一侧更早撞上边界——0.5 ** 1075 也返回 0,而 x=1075x = 1075 完全落在常见的绘图窗口之外的说法并不成立,只要横轴量程给得够宽就会看到那条并入 xx 轴的尾巴。相关的间距与判等口径见浮点数:实数在代码里的残影

4 · 参考文献

  1. Exponential function. Wikipedia. 指数函数的定义、性质与底的取值限制。https://en.wikipedia.org/wiki/Exponential_function
  2. Exponentiation. Wikipedia. 负底数配实指数为何无法一致定义。https://en.wikipedia.org/wiki/Exponentiation
  3. Subnormal number. Wikipedia. 次正规数与双精度的最小正数 210742^{-1074}https://en.wikipedia.org/wiki/Subnormal_number