如何用度数而不是弧度计算切线?

时间:2018-01-26 16:04:20

标签: python python-3.x radiant

我正在尝试制作一个基本工具,让我的日常生活更轻松,为我解决一些任务。不幸的是,当使用切线时,我无法弄清楚如何以度数计算。

我的代码:

import math


class Astro():
    def start(self):
        velocity = input("What is the galaxy's velocity? (m/s) \n")
        peculiar = (float(velocity) - 938600) ** 2
        mass = (3 * float(peculiar) * (10 ** 11) * 50 * (10 ** 6) * (8 * (180 / math.pi))
                * 9.46 * (10 ** 15)) / (2 * 6.67 * (10 ** -11))
        print("The galaxy's mass is " + str(mass) + " kg. \n")


if __name__ == '__main__':
    sup = Astro()
    sup.start()
编辑:抱歉缺乏背景;这是关于使用2个函数计算星系质量,第一个是第7行获得特殊速度,第二个是第8-9行来获得所考虑星系的实际质量。

求助:math.tan(8 * pi / 180)

感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

计算机以弧度工作。尝试

answer = tan(angle * pi / 180)

将您的角度(以度为单位)用于trig函数。或者尝试

answer = atan(number) * 180 / pi  

以学位获得答案。

答案 1 :(得分:2)

math包具有radians and degrees功能,但这些只是:

def radians(deg):
    return deg * pi / 180

def degrees(rad):
    return rad * 180 / pi

这是一个包装器,你可以使用它来制作使用度数的触发器功能(虽然我使用numpy代替math,但它只是躺在某处)

import math
import itertools
import functools

def _use_deg(f, arc = False):
    if not arc:
        def df(*args):
            args = list(args)
            for index, value in enumerate(args):
                try:
                    args[index] = math.radians(value)
                except TypeError:
                    pass
            return f(*args)
    else:
        def df(*args):
            return math.degrees(f(*args))
    return functools.wraps(f)(df)


sind = _use_deg(math.sin)
cosd = _use_deg(math.cos)
tand = _use_deg(math.tan)
arcsind = _use_deg(math.asin, True)
arccosd = _use_deg(math.acos, True)
arctand = _use_deg(math.atan, True)
arctan2d = _use_deg(math.atan2, True)

答案 2 :(得分:0)

你不想和数学库发生争执。让数学库以弧度为单位给出答案,然后将其180/math.pi的答案乘以得到度数。