怎么可能立即给出5 ^ 5 ^ 5 ^ 5(= 2.351 * 10 ^ 87)这样的计算结果?
我发现了有关the speed for matrix computations(this article)的一些结果,但没有发现其他问题.而this并不是解释(我的Python天真的实现现在运行了大约5分钟).
解决方法:
毕竟5 ^ 5 ^ 5 ^ 5不需要那么多操作.例如,在每个功率步长(例如a ^ b),您都可以计算exp(log(a)* b),得出相同的结果.
我并不是说这一定是Matlab的工作方式,并且可能存在数值精度问题.但这表明,多次幂运算并不像直接计算所表明的那么难.
至于数值精度:
>> format long
>> 5^5^5^5
ans =
2.350988701644576e+087
>> exp(log(exp(log(exp(log(5)*5))*5))*5)
ans =
2.350988701644561e+087
相对误差是
>> 1 - (5^5^5^5 / exp(log(exp(log(exp(log(5)*5))*5))*5))
ans =
-6.661338147750939e-015
离eps
不太远.