摘要 计算机的错误计算(八十一)至(八十四)介绍了双曲正弦、余弦、正割以及余割函数的计算精度问题。本节说明导致这些计算错误的主要原因。
首先,双曲正弦、余弦、正割以及余割函数主要包括 与 的计算,以及它们之间的加减运算,并加减运算后的除法运算,或与2之间的除法运算。
其次,对于加法(注:两数的符号相同)与除法运算,一般不考虑其误差,即对这个误差忽略不计。
然后,对于两数相减,也不会发生相减相消现象。因为对于 与 ,一般不相等。若相等了,说明自变量接近于0. 这时,由
可推出
所以,这时直接返回第1项 当然,对于 sinh(x) , 可以直接返回 这样,既提高计算效率,又提高计算精度。
最后,只剩下 (或 )的计算误差。 计算机的错误计算(七)阐述了:exp(x) 函数中有约 x 的整数位数位错误数字(亦可参考(二十七)、(二十八))。所以,(八十一)到(八十四)的输出中均有3位错误数字。这就是主要原因。
当然,若自变量有其它位整数,比如2位,那么很大概率,这些双曲函数亦有2位或1位错误数字。比如,sinh(34.567) 或 cosh(-45.678):
在Python输出的前16位数字中,分别有1位与2位错误数字。