# 指数(幂运算)

# 简介

指数,又称幂运算,表达式为 ,读作“ 次方”或“ 次幂”。其中, 称为底数, 称为指数,通常指数写成上标,当不能用上标时,例如在 Python 和 JS 中,通常写成 a ** n ,其他地方也有写做 a^n;也可视为超运算,记为a[3]n;亦可以用高德纳箭号表示法,写成

# 运算法则

  • 同底数幂相乘,底数不变,指数相加:

  • 同底数幂相除,底数不变,指数相减:

  • 同指数幂相除,指数不变,底数相除:

  • 分数次幂

  • 负数次幂

  • 非 0 的 0 次幂

  • 任意数的 1 次幂等于其本身

  • 非 0 的负一次幂等于其倒数

指数运算不满足交换率和结合律

0 的 0 次幂数学上还没有严格定义,但在 Python 和 JS 里,都实现为 0 ** 0 = 1,遵循 IEEE754 标准 (opens new window)

# 指数的极限

  • (-1, 1)间的数的幂趋于0:
  • 1 的幂永远都是 1:
  • -1 的幂不具有收敛性
  • 如果 a 左趋近于 1,而它的幂趋于无穷,注意这时候它的极限不是上面几个,而是自然常数

  • 如果 a 右趋近于 1,则它的极限是自然常数 的倒数

# Python 执行结果:

from sympy import *
n = symbols('n')
limit(1 ** n, n, oo)

limit(1.1 ** n, n, oo)

limit((1 + 1/n) ** n, n, oo)

limit((1 - 1/n) ** n, n, oo)

# JS 实现

这里先暂时只讲一下当 n 为自然数下的计算方法,至于分数幂和负数幂,先按下不表

const pow = (a, n) => {
  if (!Number.isInteger(n) || n < 0) throw Error
  if (n === 0) return 1
  let ret = a
  for (let i = 1; i <n; ++i) {
    ret *= a
  }
  return ret
}

更有意思的问题,至于乘法怎么实现,加法怎么实现,再往下推要到二进制和处理器实现,由于 JS 暂不支持运算符重载,也不是本 repo 的重点,不再补充

# 其他

复数的幂,以及复数次幂,先不展开,以后再追加