python-Matlab或Octave如何这么快?

我真的对MatlabOctave的计算速度感到困惑.

怎么可能立即给出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不太远.

上一篇:使用RxJava(ReactiveX)运行Observable需要多长时间?


下一篇:使用Python进行计算和编程简介