在math
模块中,我只能找到math.cos(x)
带有cos / sin / tan / acos / asin / atan的。这将返回以弧度为单位的答案。如何获得度数的答案?
这是我的代码:
import math
x = math.cos(1)
y = x * 180 / math.pi
print(y)
30.9570417874
我的度数计算器为我提供:
cos(1)
0.9998476...
在math
模块中,我只能找到math.cos(x)
带有cos / sin / tan / acos / asin / atan的。这将返回以弧度为单位的答案。如何获得度数的答案?
这是我的代码:
import math
x = math.cos(1)
y = x * 180 / math.pi
print(y)
30.9570417874
我的度数计算器为我提供:
cos(1)
0.9998476...
1
在您的示例中,cos函数在一个角度上作为输入操作。在您的计算器上,该角度在减小,在Python中,该角度必须以弧度给出。x
在您的示例中,返回值是一个无量纲的数字。在您的计算器上,您已经计算出1度的cos。在您的Python示例中,您已经计算了1个弧度的cos,相当于57.296度。
cos
以角度作为输入并产生比率作为输出。像您在示例中所做的那样,尝试将输出转换为度数根本没有任何意义。您需要将输入1
从度转换为弧度。如果您使用的acos
是相反的方法,则输入为比率,输出为弧度。
Answers:
Python在math
包中包括两个函数;radians
将度数转换为弧度,degrees
并将弧度转换为度。
要匹配计算器的输出,您需要:
>>> math.cos(math.radians(1))
0.9998476951563913
请注意,所有的三角函数都在角度和三角形两侧的比率之间转换。cos,sin和tan以弧度表示的角度作为输入并返回比率;acos,asin和atan以比率作为输入并以弧度返回角度。您只转换角度,而不转换比例。
numpy
也有那些功能,可以一次转换整个数组。它还以更明确的名称rad2deg
和包含它们deg2rad
。
什么是弧度,它可以解决什么问题?:
弧度和度是两个独立的度量单位,可以帮助人们表达和传达方向的精确变化。Wikipedia的图表非常直观地说明了如何相对于度数定义一个Radian:
https://zh.wikipedia.org/wiki/弧度
使用库通过弧度计算度的Python示例:
>>> import math
>>> math.degrees(0) #0 radians == 0 degrees
0.0
>>> math.degrees(math.pi/2) #pi/2 radians is 90 degrees
90.0
>>> math.degrees(math.pi) #pi radians is 180 degrees
180.0
>>> math.degrees(math.pi+(math.pi/2)) #pi+pi/2 radians is 270 degrees
270.0
>>> math.degrees(math.pi+math.pi) #2*pi radians is 360 degrees
360.0
使用库从度数计算弧度的Python示例:
>>> import math
>>> math.radians(0) #0 degrees == 0 radians
0.0
>>> math.radians(90) #90 degrees is pi/2 radians
1.5707963267948966
>>> math.radians(180) #180 degrees is pi radians
3.141592653589793
>>> math.radians(270) #270 degrees is pi+(pi/2) radians
4.71238898038469
>>> math.radians(360) #360 degrees is 2*pi radians
6.283185307179586
来源:https : //docs.python.org/3/library/math.html#angular-conversion
数学符号:
如果使用自己的度数/弧度转换器,则必须编写自己的代码来处理极端情况。
这里的错误很容易造成,并且会像1999年的火星轨道飞行器的开发人员一样遭受伤害,因为在这里,由于不直观的边缘情况,他们沉没了1.25亿美元,使它坠入火星。
让我们撞毁该轨道飞行器,并将我们自己的弧度滚动到一定程度:
无效弧度作为输入返回垃圾输出。
>>> 0 * 180.0 / math.pi #0 radians is 0 degrees
0.0
>>> (math.pi/2) * 180.0 / math.pi #pi/2 radians is 90 degrees
90.0
>>> (math.pi) * 180.0 / math.pi #pi radians is 180 degrees
180.0
>>> (math.pi+(math.pi/2)) * 180.0 / math.pi #pi+(pi/2) radians is 270 degrees
270.0
>>> (2 * math.pi) * 180.0 / math.pi #2*pi radians is 360 degrees
360.0
度到弧度:
>>> 0 * math.pi / 180.0 #0 degrees in radians
0.0
>>> 90 * math.pi / 180.0 #90 degrees in radians
1.5707963267948966
>>> 180 * math.pi / 180.0 #180 degrees in radians
3.141592653589793
>>> 270 * math.pi / 180.0 #270 degrees in radians
4.71238898038469
>>> 360 * math.pi / 180.0 #360 degrees in radians
6.283185307179586
用度和弧度表示多次旋转
单旋转有效弧度值在0到2 * pi之间。单旋转度值在0到360之间。但是,如果要表达多次旋转,则有效弧度和度值在0到无穷大之间。
>>> import math
>>> math.radians(360) #one complete rotation
6.283185307179586
>>> math.radians(360+360) #two rotations
12.566370614359172
>>> math.degrees(12.566370614359172) #math.degrees and math.radians preserve the
720.0 #number of rotations
折叠多次旋转:
通过针对一个旋转的值进行修改,可以将多个度/弧度旋转折叠为一个旋转。对于度数,您乘以360,对于弧度,则乘以2 * pi。
>>> import math
>>> math.radians(720+90) #2 whole rotations plus 90 is 14.14 radians
14.137166941154069
>>> math.radians((720+90)%360) #14.1 radians brings you to
1.5707963267948966 #the end point as 1.57 radians.
>>> math.degrees((2*math.pi)+(math.pi/2)) #one rotation plus a quarter
450.0 #rotation is 450 degrees.
>>> math.degrees(((2*math.pi)+(math.pi/2))%(2*math.pi)) #one rotation plus a quarter
90.0 #rotation brings you to 90.
专家提示
汗学院拥有巩固三角学和角数学的直觉的出色内容:https : //www.khanacademy.org/math/algebra2/trig-functions/intro-to-radians-alg2/v/introduction-to-radians
math.cos(math.radians(1))
ValueError: math domain error
有效的弧度值。
我还喜欢定义自己的函数,这些函数以度而不是弧度来接受和返回参数。我敢肯定有些最纯正的大写字母不喜欢我的名字,但是我只是在自定义函数中使用首字母大写。定义和测试代码如下。
#Definitions for trig functions using degrees.
def Cos(a):
return cos(radians(a))
def Sin(a):
return sin(radians(a))
def Tan(a):
return tan(radians(a))
def ArcTan(a):
return degrees(arctan(a))
def ArcSin(a):
return degrees(arcsin(a))
def ArcCos(a):
return degrees(arccos(a))
#Testing Code
print(Cos(90))
print(Sin(90))
print(Tan(45))
print(ArcTan(1))
print(ArcSin(1))
print(ArcCos(0))
请注意,我已经使用以下命令将数学(或numpy)导入名称空间:
from math import *
还要注意,我的函数位于定义它们的名称空间中。例如,
math.Cos(45)
不存在。
-fix-,因为要从弧度更改为度,所以实际上是rad = deg * math.pi / 180,而不是deg * 180 / math.pi
import math
x=1 # in deg
x = x*math.pi/180 # convert to rad
y = math.cos(x) # calculate in rad
print y
在1行中可以像这样
y=math.cos(1*math.pi/180)
cos
以角度作为输入,而不是输出。