计算机的错误计算(二十二)

摘要  计算机的错误计算(十九)展示了计算机的一个错误计算:本应该为 0的算式的结果不为0. 那么,增加计算精度,能确定是0吗?不一定。

       计算机的错误计算(十九)展示了计算机对 20^{65}-e^{65\times\ln(20)} 的错误计算。那么,通过提高计算精度,可以确定准确值0吗?

       计算机的错误计算(二十)给出了出错原因:错误结果主要是由 exp(x) 函数的错误计算所引起。那么现在问题就成了:当提高计算精度时,exp(x) 函数会出错吗?很遗憾,由计算机的错误计算(七)知,x 有 3位整数,则 exp(x) 的结果中始终有约 3位错误数字。虽然这里有个大约的“约”,但是,根据理论与经验,99.99999%的概率,3 不会变成0;虽然可能变成2,甚至1,但是不会变为0,不会从“量变”到“质变”(关于这一点,建议再参考计算机的错误计算(十二)中文字 “...比如1000位,结果中也仍然含有20位错误数字”)。

       要提高精度?不妨在数学软件 Maple 中试试(将其中一个 20改为 20.0,以免系统用符号计算直接推导出0):

        从上看出,当计算精度或有效数字分别取 16,20,50,100,500,1000时,软件的输出分别是 5.3\times10^{70} , 1.21\times10^{67},  2.52\times10^{37}-6.5\times10^{-14}-1.41\times10^{-413},  8.0\times10^{-914}.

       这个结果与我们的分析非常吻合:总是最后 3位出错。比如,若取1000位,那么被减数 20^{65}与减数 e^{65\times\ln(20)} 除去前面的 85位整数后,它们应该均有 1000-85=915 位0. 而结果为

8.0\times10^{-914}=0.\overbrace{\underbrace{000...0}_{\textup{\textcolor{blue}{913} digits}}80}^{\textup{\textcolor{red}{915} digits}}

说明最后3位数字出错了。

       最后问一句:随着计算精度的提高,结果也越来越小。这能说明正确结果应该是0吗?

       不能!也许该式的正确结果是 0.1^{2000} 呢。

       那该怎么办呢?且听下回分解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值