首页 > 解决方案 > python的sin函数中的错误

问题描述

我有一个关于使用正弦函数的问题。当我输入数字 4、8、.. 等时,我真的应该在非常接近零的地方得到数字,但不完全是(例如 0.001、0.0003 等)。但是,当 x = 4 时,我得到数字 y = 1.224,而当 x = 8 时,我得到数字 y = -2.449。这应该是不正确的。我不明白这里的问题。有谁知道这里发生了什么?

[我的代码和罪图的照片 - 链接] https://ibb.co/6YCWW90

[代码]

导入数学导入 matplotlib.pyplot 作为 plt 导入 numpy 作为 np

x = [0, 1, 2, 3, 4, 5, 6, 7, 8] y = [math.sin(0.25 * math.pi * i) for i in x] print(y)

plt.plot(x, y) plt.show()

标签: functiontrigonometry

解决方案


一切正常。

当 i 为 0 时,“0.25 * math.pi * i”正好为 0,当你计算正弦时,你得到的正是 0.0。

当 i 为 4 时,计算“0.25 * math.pi * i”会得到一个非常接近 PI 的数字,但精度有限。如果你计算正弦,你会得到一个非常非常接近于零的数字,但由于精度有限,并不完全是零。结果是 1.2246467991473532e-16。注意:它是 0.00000000000000012246467991473532,而不是您在问题中写的 1.224。

类似地,舍入误差会导致 -2.4492935982947064e-16,因为 i 等于 8。参数不完全是 2 PI,舍入误差会导致值略微不同于 0.0。同样 -2.4492935982947064e-16 是 -0.00000000000000024492935982947064 而不是您在问题中写的 -2.449。


推荐阅读