为什么Matlab Mod与Wolfram Alpha不同

时间:2015-04-26 23:19:03

标签: matlab modulus wolframalpha

688 ^ 79 mod 3337 = 1570。

当我在wolfram alpha上尝试这个时,我得到了: enter image description here

但是当我在Matlab中输入相同内容时,我得到364作为答案。我做错了。

enter image description here

对此的任何启示都将受到赞赏。

2 个答案:

答案 0 :(得分:11)

原因是Matlab默认使用double浮点运算。大小为688 ^ 79的数字不能准确表示为double。 (可以准确表示为double的最大整数是of the order of 2^53)。

要获得正确的结果,您可以使用symbolic variables,以确保您不会失去准确性:

>> x = sym('688^79');
>> y = sym('3337');
>> mod(x, y)
ans =
1570

答案 1 :(得分:3)

我的计算器给我的答案与Wolfram相同,它也计算了688 ^ 79的值,所以我倾向于认为Wolfram是对的。 你可能已经超出了Matlab的容量这么大的数量,这就是它没有发出正确答案的原因。