高压锅炖整只鸡的做法:计算器准确度测试

来源:百度文库 编辑:九乡新闻网 时间:2024/05/03 05:12:56
查看文章   计算器准确度测试2008-02-06 20:19 Forsenics Evaluation Algorithm 是一个简单测试科学计算器的计算准确度的方法。说穿了其实很简单,那就是利用科学计算器计算下面的数式。

sin-1 cos-1 tan-1 tan cos sin 9          ( 使用 Degree 度数模式 )

这个数式的正确数值是 9,但是因为各计算机的内部设计不同,准确度也有分别,所以会导致出现不同的结果。计算的结果愈接近 9,表示计算机的计算愈准确。

计算机 计出答案 差别 内部小数位数
Casio FX-3600PV / 3900PV 9.000125246 1.252458 × 10-4 11
Casio FX-3800P 9.000015718 1.57179 × 10-5 11
Casio FX-50F / 4500PA 9.000015685 1.568547 × 10-5 12
Casio FX-5000F / 5500LA 9.000015685 1.568547 × 10-5 12
Casio FX-570W / 991W 8.999998637 -1.36296 × 10-6 12
Casio FX-570MS / 991MS 8.999998637 -1.36296 × 10-6 12
Casio FX-3650P / 3950P 8.999998637 -1.36296 × 10-6 12
Casio FX-82ES / 991ES 9.000000007 7.33338 × 10-9 15
Casio FX-4800P / 5800P 9.000000007 7.33338 × 10-9 15
Casio CFX-9850 / 9950 GB Plus 9.000000007 7.33343 × 10-9 15
Casio Algebra FX 2 Plus 8.999999998 -2.40532 × 10-9 15
Casio FX-9860G / 9860G SD 8.999999998 -2.40532 × 10-9 15
Casio FC-100V / 200V 9.000000007 7.33338 × 10-9 15

3600PV / 3900PV 的准确度是最差的 ,这2种是出口中国工程用最多的工程计算器。可见日本的险恶用心。

-----------------------------------
Casio         系列程式计算机计算误差问题

Casio 的程式计算机 ( FX-3600PV / 3800P / 3900PV ) 在某些计算上最后的小数位或数位会有错误出现 ( 但 FX-50F 却似乎没有这个问题,很明显它的内部设计和其他叁部计算机是不同的 )。最出名的例子莫过于 2的32次方 计出的答案 4294967295 竟然是单数 ( 正确答案应是 4294967296,但计算 4的16次方 的答案 4294967296 却是正确的 )。

其实这个问题 ( 关于截断误差 Rounding Error ) 存在了已经很久,不过,以前那个时候的人 ( 包括我自己在内 ) 对这个问题都不太在意,原因我相信是因为很少使用它们的人会真正经常需要 9 个小数位或以上的准确度,到了现在情况我相信也没有多大改变。还有就是认为计算器不会计算错误。

但是,其实 Casio 是绝对应该有能力、资源及技术去改善这个情况的,可惜的是,在没有受到外间压力要求下,它似乎并无意去改善这个情况。小日本还死不承认,大家可以在网上寻找相关的报道,FX-50F 及 Casio 出产的较高级程式计算机或较新的计算机例如 FX-4500PA、FX-570MS / 991MS、FX-991ES 和 FX-3650P / 3950P 都是没有这问题的,这更加使我相信 Casio 并非不能,而是无意去改善。我拥有的其他计算机如 Sharp EL-506R、Sharp EL-506V、Hewlett Packard HP-20S 或是较近期购得的 Citizen SRP-285II 及 Hewlett Packard HP-30S 也都没有这问题,所以我认为这问题很明显是计算机基本的设计上出现问题所致。而这2种是90年代出口到我们工程用最多的工程计算器。可见日本的险恶用心。

我在出于好奇之下想比较一下我手上的一些科学计算机及财务计算机 ( 不包括图像计算机 ) 看看究竟有多少部会有这样的问题,所以就进行了一些简单测试,结果如下:大家可以用下面的方法测试自己手上的计算器。

测试一:直接计算 2^32 ( 正确答案应是 4294967296 )

测试二:先计算 32 log 2 ,再计算反对数 ( 正确答案应是 232 = 4294967296 )

测试叁:先计算 32 ln 2 ,再计算反对数 ( 正确答案应是 232 = 4294967296 )

测试四:计算 60! ( 正确答案至 10 个有效数字应是 8.320987113 × 1081 )

测试五:先计算 (6 ÷ 2 ÷ 9)2 ,再减去 1 ÷ 9          ( 正确答案应是 0 )

测试六:计算 30003 – 29993           ( 正确答案应是 26991001 )

测试七:计算 (1 + 1 ÷ 7500)7500          ( 正确答案准确至 9 位小数应是 2.718100632 )

测试八:计算 (4 ÷ 3)2,再减去 4 × 4 ÷ 9          ( 正确答案应是 0 )


由上面的测试结果,看得出 Casio FX-3600PV / 3800P / 3900PV 在很多较复杂的计算里都有明显的误差。大家可以想像到在程式计算中,要进行很多计算步骤时,这些细微的错误就会逐渐累积,最后可能会令到最终结果出现错误。虽然这是一般计算机或电脑都会遇到的问题 ( 程式编写员亦要留意这些问题以避免导致程式计算出现重大错误 ),但 Casio 的这叁部计算机问题就比较严重了。

-------------------------------------------
各计算机的内部计算使用的小数位数

这个现象和各计算机的内部计算使用的小数位数 ( Number of internal digits ) 看来有些关系。如果内部小数位数越多,应该表示计算的结果越准确,请看下表:
计算机 内部小数位数
Casio FX-3600PV / 3800P / 3900PV 11
Casio FX-50F / Truly SC-111 12
Casio FX-3650P / 3950P / Truly SC-185 12
Sharp EL-506W / 520W / 5250 14
Sharp EL-5020 / 546L / 506R / 506V 12
Casio FX-570W / 991W / 570MS / 991MS 12
Casio FX-82ES / 991ES 15
Casio FX-5000F / FX-4500PA / 5500LA 12
Casio FC-100 / 200 12
Casio FC-1000 13
Casio FC-100V / 200V 15
Texas Instruments TI-30X IIB 13
Texas Instruments TI-68         13
Texas Instruments BAII Plus 13
Hewlett Packard HP-20S / 32SII / 33S 12
Hewlett Packard HP-30S / 9G 24
Hewlett Packard HP-12C Platinum 10
Hewlett Packard HP-17BII+ 12
Hewlett Packard HP-11C / 15C 10
Hewlett Packard HP-22S / 42S 12
Citizen SRP-285         14
Citizen SRP-280 / 285II / 300 24
Citizen SRP-175 / Canon F-803P 12
Citizen SR-260 / Canon F-604 12
Casio FX-500A 12