摘要 回复网友的疑问:用错数解释计算机的错误计算(六十四)中的错误计算原因。
计算机的错误计算(六十四)到(六十九),以及(七十一)与(七十三)分别阐述了不同三角函数在 或 附近数的 计算精度问题。
有网友问:能否用错数解释这些三角函数的错误计算原因?
答:本节以(六十四)中案例为例,用错数解释其出错原因。
首先,该案例为计算 sin(x), 其中 并且,Python 与 Java的输出均有 7位错误数字。
下面用错数解释该出错原因。
要计算 sin(x), 那么需要将自变量转换为小于或等的值,实际是绝对值越小越好。这样,下面的变换也许是一种比较好的选择:
此时,我们从计算 sin(x)就转向了计算 (暂不考虑是否另加负号)。
事实上,可以验证,不论是Python 与 Java,在计算后者时,均不会出错。
那么,问题来了:是哪儿出了错?
这时候,需要用到错数了。自变量具有误差,并且该误差导致变换后,结果的误差更大。具体是:对于自变量 与 函数 来说,自变量、函数值、导数的扩展整数位数分别为 因此,错数为 这样,自变量的一点误差,会导致函数值有8位或7位错误数字。
不妨在Python中验证:
上图显示,17位的自变量与函数值分别为 40.840699999999998与-0.0000044966673158342019(红颜色数字是错误数字)。 所以,函数值的错误位数比自变量的错误位数多7位。当然,若只考虑前16位,那么自变量的错误位数为0位,而函数值的错误位数是7位,这时,结论仍然成立。
最后说一句,上述过程实际是发生相减相消了。
标签:七十四,计算机,错误,错误计算,位数,错数,自变量,函数 From: https://blog.csdn.net/zaim1/article/details/141339872