计算机的错误计算(八十五)

摘要  计算机的错误计算(八十一)(八十四)介绍了双曲正弦、余弦、正割以及余割函数的计算精度问题。本节说明导致这些计算错误的主要原因。

       首先,双曲正弦、余弦、正割以及余割函数主要包括 e^x与 e^{-x} 的计算,以及它们之间的加减运算,并加减运算后的除法运算,或与2之间的除法运算。

       其次,对于加法(注:两数的符号相同)与除法运算,一般不考虑其误差,即对这个误差忽略不计。

       然后,对于两数相减,也不会发生相减相消现象。因为对于 e^x与 e^{-x},一般不相等。若相等了,说明自变量接近于0.  这时,由

e^x=1+x+\frac{x^2}{2!}+\frac{x^3}{3!}+\frac{x^4}{4!}+\dots

e^{-x}=1-x+\frac{x^2}{2!}-\frac{x^3}{3!}+\frac{x^4}{4!}+\dots

可推出

e^x-e^{-x}=2(x+\frac{x^3}{3!}+\frac{x^5}{5!}+\dots)

所以,这时直接返回第1项 2x\,.  当然,对于 sinh(x) ,  可以直接返回 x\,.  这样,既提高计算效率,又提高计算精度。

       最后,只剩下 e^x(或 e^{-x})的计算误差。 计算机的错误计算(七)阐述了:exp(x) 函数中有约 x 的整数位数位错误数字(亦可参考(二十七)(二十八))。所以,(八十一)(八十四)的输出中均有3位错误数字。这就是主要原因。

       当然,若自变量有其它位整数,比如2位,那么很大概率,这些双曲函数亦有2位或1位错误数字。比如,sinh(34.567) 或 cosh(-45.678):

在Python输出的前16位数字中,分别有1位与2位错误数字。

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值