# 指数(幂运算)
# 简介
指数,又称幂运算,表达式为 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 的重点,不再补充
# 其他
复数的幂,以及复数次幂,先不展开,以后再追加