摘要 探讨 MATLAB中正弦、余弦的计算精度问题。当自变量为大数时,输出可能出错。
从 IEEE-754-2019 知,三角函数的定义域是实数域。
例1. 计算
直接贴图吧:
这样,MATLAB的输出均为错误结果,即没有正确有效数字。因为16位的正确值分别为0.4559851018218757 与 -0.8899874082909789e0(ISRealsoft 提供)。
点评:2010年,有国外学者指出当时软件存在的计算问题,并举例 (参看计算机的错误计算(五十一))。现在,对于 MATLAB能计算出正确结果。但是,若将2变成20,那么又出错了。说到底,MATLAB不知道如何正确计算。应该是仅仅简单地增加了计算精度。
即,要计算大数的三角函数,该增加多少精度?MATLAB不太清楚。也许不屑考虑。