作为一名年轻的程序员,我一直在努力寻找我的技能的应用。
无论如何,我目前正在学习三角学,我们正在研究单位圆,从度数到坐标的转换公式是 (sinθ, cosθ)(据我所知)。
但是,我遇到的困难是我需要将值保留为分数。
基本上,我计划的算法是:
i = 0
while i < 360:
print(i, "=", calc(i))
i += 15
现在,calc 可以被赋予任何名称,并且将是一个返回 x 和 y 的坐标(可能作为元组)的函数,给定 x = sin θ 和 y = cos θ。
我遇到的问题是 Python 中的 sin 返回一个介于 -1 和 1 之间的 float ,但是,我需要找到一种方法让它返回一个分数。例如,在 this picture 中坐标为有理数。
我该怎么办?我应该编写自己的正弦和余弦函数吗?如果是,我应该怎么做?
请您参考如下方法:
看起来您需要第三方模块,例如 sympy :
>>> import sympy
>>> for i in range(0, 360, 15):
... print i, sympy.sin(sympy.Rational(i, 180) * sympy.pi)
...
0 0
15 sin(pi/12)
30 1/2
45 2**(1/2)/2
60 3**(1/2)/2
75 sin(5*pi/12)
90 1
105 sin(5*pi/12)
120 3**(1/2)/2
135 2**(1/2)/2
150 1/2
165 sin(pi/12)
180 0
195 -sin(pi/12)
210 -1/2
225 -2**(1/2)/2
240 -3**(1/2)/2
255 -sin(5*pi/12)
270 -1
285 -sin(5*pi/12)
300 -3**(1/2)/2
315 -2**(1/2)/2
330 -1/2
345 -sin(pi/12)
