Matlab数值误差及如何得到正确答案

Matlab数值误差及如何得到正确答案,matlab,rounding-error,symbolic-computation,Matlab,Rounding Error,Symbolic Computation,我以某种方式在Matlab中获得了以下表达式(W764B上的R2014a) 其中k最初是一个符号变量。然后我设置k=10,并使用long输出格式得到结果37037118237528。但是如果我把同样的表达式放在Mathematica上(用19代替prod(1:19)),我会得到3703771188237525,我相信这是正确的答案。这似乎是一个舍入错误描述多次在这个网站(是正确的?)。如何避免使用或不使用Matlab符号工具箱?有一个类。将其添加到路径后,您只需编写k=hpf(10)在计算表达式

我以某种方式在Matlab中获得了以下表达式(W764B上的R2014a)

其中k最初是一个符号变量。然后我设置k=10,并使用long输出格式得到结果37037118237528。但是如果我把同样的表达式放在Mathematica上(用19代替prod(1:19)),我会得到3703771188237525,我相信这是正确的答案。这似乎是一个舍入错误描述多次在这个网站(是正确的?)。如何避免使用或不使用Matlab符号工具箱?

有一个类。将其添加到路径后,您只需编写
k=hpf(10)在计算表达式之前。结果将是

370371188237525.0106290979251578332118698122510380699168308638036
我会用符号数学工具箱来写

syms k
expr = 1/1034591578977116160000*prod(1:19)*(29576428208904825-17729494921579950*k - 20479697577410832*k^2 + 13867226524449248*k^3 - 836937224095392*k^4 - 869194297188672*k^5 + 163710902234880*k^6 + 2589894827520*k^7 - 2476912838400*k^8 + 144848704000*k^9);
subs(expr, k, 10);

它的计算结果是
3150006955960150124/8505=3703771188237525

天哪!我不知道这是怎么回事!我希望我能+10。在重新启动Matlab之前,我不能重复结果(我从subs(expr,k,10)得到2962969505900221/8)。我想知道为什么。。但现在没事了。谢谢。
syms k
expr = 1/1034591578977116160000*prod(1:19)*(29576428208904825-17729494921579950*k - 20479697577410832*k^2 + 13867226524449248*k^3 - 836937224095392*k^4 - 869194297188672*k^5 + 163710902234880*k^6 + 2589894827520*k^7 - 2476912838400*k^8 + 144848704000*k^9);
subs(expr, k, 10);