0

我以某种方式在 Matlab 中获得了以下表达式(R2014a on W7, 64b)

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) 

其中 k 最初是一个符号变量。然后我设置 k=10 并使用 LONGG 输出格式得到结果 370371188237528。但是,如果我对 Mathematica 使用相同的表达式(用 19 代替 prod(1:19)!),我会得到 370371188237525,我相信这是正确的答案。这似乎是本网站多次描述的舍入错误(是否正确?)。无论有或没有 Matlab 符号工具箱,我如何避免它?

4

1 回答 1

1

高精度浮点 类。将其添加到路径后,您可以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 = 370371188237525

于 2014-11-28T12:27:39.713 回答