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

2024-05-15 21:19:45 发布

您现在位置:Python中文网/ 问答频道 /正文

作为更大项目的一部分,我想更改波长类型模式中的一些值,而不是+1线性类型模式。你知道吗

说清楚一点,我不想把这些画在图表上或任何类似的东西上。。。我想用这些值来控制一些颜色强度通过我的树莓圆周率。你知道吗

总之,回到手头的问题上。。。你知道吗

我有以下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

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


Tags: 项目脚本类型颜色usr图表模式线性
1条回答
网友
1楼 · 发布于 2024-05-15 21:19:45

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

https://docs.python.org/2/tutorial/floatingpoint.html

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

相关问题 更多 >