Python中正弦波计算中出现意外/不需要的结果

时间:2016-11-30 19:27:06

标签: python math raspberry-pi waveform sine

作为大型项目的一部分,我希望更改波长类型模式中的某些值,而不是+1线性模式。

要说清楚,我不想尝试在图表或任何类型上绘制这些...我想使用这些值来控制Raspberry Pi中的某些颜色强度。

无论如何,回到手头的问题......

我有以下python脚本:

#!/usr/bin/python
from math import *
Fs=8000
f=500
i=0
while i<50:
    print ( sin(2*pi*f*i/Fs) )
    i+=1

这给了我以下输出(截断):

0.0
0.382683432365
0.707106781187
0.923879532511
1.0
0.923879532511
0.707106781187
0.382683432365
1.22464679915e-16
-0.382683432365
-0.707106781187
-0.923879532511
-1.0
-0.923879532511
-0.707106781187
-0.382683432365
-2.44929359829e-16
0.382683432365
0.707106781187
0.923879532511
1.0

正如你所看到的,每隔一段时间就会出现一个值得一去的价值:

1.22464679915e-16

-2.44929359829e-16

3.67394039744e-16

-4.89858719659e-16

2.38868023897e-15

-7.34788079488e-16

为什么我会得到这些奇怪的结果?我如何避免这些出路的价值观?我做错了什么?

1 个答案:

答案 0 :(得分:1)

这些值不是&#34;出路,&#34;它们与零到机器精度一致。 Python的精度通常为53位:

this plunker

这个二进制表示对应于~1e-16,这是您在正弦函数中应该与零对应的值中看到的顺序。