Python Matlab或倍频程怎么会这么快?
我真的对or的计算速度感到困惑 如何能够立即给出像Python Matlab或倍频程怎么会这么快?,python,performance,matlab,math,computation,Python,Performance,Matlab,Math,Computation,我真的对or的计算速度感到困惑 如何能够立即给出像5^5^5^5(=2.351*10^87)这样的计算结果 我在()中找到了一些结果,但在其他方面没有发现任何结果。这不是解释(我的Python(naive)实现现在正在运行大约5分钟)。5^5^5^5毕竟不需要这么多操作。例如,在每个功率步,比如说a^b,您可以计算exp(log(a)*b),这会给出相同的结果 我并不是说这一定是Matlab所做的,可能存在数值精度问题。但这表明,多重幂运算并不像直接计算那样困难 关于数值精度: >>
5^5^5^5
(=2.351*10^87
)这样的计算结果
我在()中找到了一些结果,但在其他方面没有发现任何结果。这不是解释(我的Python(naive)实现现在正在运行大约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
这离我们不远。可能的答案太多,或者好的答案对于这种格式来说太长。请添加详细信息以缩小答案集或隔离可以在几个段落中回答的问题。是否要计算
5^(5^(5^5))
或((5^5)^5)^5=2.351*10^87
?乘法使用哪种算法?卡拉祖巴,学校方法,使用FFT?@Jornsharpe:我知道你的评论,但也许有可能给出一些线索或其他什么?我不知道如何减少我的问题。你认为专注于权力是个好主意吗?5^5^5不是2.351*1087。大约是1.3357*102184。求幂是右关联的。5^5^5^5是5^(5^(5^5))的缩写。((5^5)^5^5是一个更容易计算的数字。这只是55*5*5=5125。你的意思可能是“不需要”。@MrAzzaman Woops!非常感谢。