Mathematica结果求测试求解释
ToString, InputForm]ToString, InputForm]
ToString, InputForm]
问题何在?
没看到问题呢 wayne 发表于 2014-10-26 17:28
问题何在?
没看到问题呢
最后一位 计算有误差,二进制内部首先有舍入,然后转化为十进制再次舍入 试一下这个命令
FullForm]
你会发现有一个小角标,这个小角标在Mathematica里面叫做 NumberMarks ,用来标记 Precision。
如果小角标后面没有跟数字,就表示默认的系统精度,MachinePrecision,即15.6位。
===
ToString函数的操作对象是 expr,即expr的FullForm形式,至于最后一位的舍入误差,为啥会是这么多,应该跟数的具体实现有关。
@mathe, mathe可否有兴趣挖掘出这个具体表达?
比如24/13,取小数点后16位(前15位是准确的,最后一位是带有误差),那么这个最后一位会是啥?
ToString,InputForm]
的输出是 1.8461538461538463,跟楼上的mathe的分析完全一致,我想这样算是彻底回答了楼主的问题了吧 不纠结这个,你想要准确就多保留小数 问题又来了
N)/4]
N)/4, 4]
结果是
0.03125
0.03816
N)/4]
等于以下结果
N - N[(128433317878965*Sqrt)/4]
而下面输出很规则。
Do)/4, i]], {i,20}]
是否意味着不指定精确度的N不可靠,而且还要故意让Mathematica多算几位再另行处理? zeroieme 发表于 2015-7-12 10:50
是否意味着不指定精确度的N不可靠,而且还要故意让Mathematica多算几位再另行处理?
这个我宁愿看成是Mathematica的bug 。
我担心Mathematica的N函数的内部实现 存在过早优化的问题:
当f,g都比较复杂的时候,Mathematica优化成了: N=N +N
-------------------------------
有空再深入追究一下 wayne 发表于 2015-7-14 11:34
这个我宁愿看成是Mathematica的bug 。
我担心Mathematica的N函数的内部实现 存在过早优化的问题:
自然是Mathematica的bug 。
作为D版使用者,也不好向Mathematica公司反馈。只能探讨自己写代码时如何绕开这个bug。
BTW wayne能帮忙反馈么;P
页:
[1]
2