小心数学软件中的幂函数和n次方根

三次根号 -8 等于多少?

看到这个简单的计算题,大概大多数人都会下意识地给出 -2 这个结果吧?不过像AIR20这样计算能力比较弱的,不用Mathematica这样的软件验算一下总是不放心,这下倒好,果真是出错了(狂汗-_-|||)。

MATLAB告诉我们\((-8)^\frac{1}{3}=1+i\sqrt{3}\),如下图:
cube_root_matlab

感觉有点不太对劲儿,难道真的是最近计算能力又下滑了吗?于是又再用用WolframAlpha试了试,结果相同,也是\(1+i\sqrt{3}\)。后来告诉朋友,他用Mathematica也算了一遍,结果也是不出意外的\(e^{\frac{i\pi}{3}}\)。开负数的奇数次根,结果都不是实数。
Wolfram Alpha中的结果

唯独Maxima的结果比较靠谱,如下图:
Maxima的结果

这到底是怎么回事呢?能找到的相关的资料很少,Wolfram Alpha的官方博客上有一个有关的说明但感觉讲得不太靠谱,以下说法仅供参考。我们知道在复数范围内,N 次方等于 x 的数应当有 N 个,然而作为一个函数,只能返回这 N 个根中的 1 个,于是就需要一个从 N 个根中选取一个主根作为返回值。比较传统的方法是选取这 N 个根中有非负虚部的那些中虚部最小的那一个作为主根,例如Maxima的做法。而MATLAB和Mathematica的做法是,将 x 写成如下的极坐标形式:\[x=re^{i\theta}(0\leq\theta<2\pi)\]
并选择以下这个根作为主要根\[\sqrt[N]{x}=\sqrt[n]{r}e^{\frac{i\theta}{n}}\]

但不论采用哪种方法来把n次开根号的函数拓展到复数范围内,函数的性质都不是很完美,比如在正实数范围内恒成立的\(\sqrt[N]{ab}=\sqrt[N]{a}\cdot\sqrt[N]{b}\)就不一定再成立,否则就将有很荒谬的 -1 = 1 的结果出现:\[-1 = i\cdot i = \sqrt{-1}\cdot\sqrt{-1}=\sqrt{1}=1\]

总之,大家在用数学软件进行幂运算或是开方运算时,一定要注意这类问题,尤其有时候函数中出现莫名其妙地出现虚部时,很可能是这个问题引起的。当需要传统的 N 次根时,可以使用MATLAB中的nthroot函数或者Wolfram Alpha中的surd命令代替幂函数。

3 thoughts on “小心数学软件中的幂函数和n次方根

  1. I am so proud of knowing a geek!

Leave a Reply

Your email address will not be published. Required fields are marked *