Как я могу вычислить тангенс с градусами вместо радианов?
Я пытаюсь сделать основной инструмент, чтобы сделать мою повседневную жизнь проще, решая некоторые задачи для меня. К сожалению, я не могу понять, как заставить его вычислять в градусах при использовании тангенса.
Мой код:
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, чтобы получить фактическую массу рассматриваемой галактики.
Решено: математика (8 * пи / 180)
Спасибо за твою помощь!
3 ответа
Компьютеры работают в радианах. Пытаться
answer = tan(angle * pi / 180)
использовать свой угол в градусах в функцию триггера. Или попробуй
answer = atan(number) * 180 / pi
получить ответ в градусах.
math
пакет имеет функции radians
а также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)
Вы не хотите драться с математической библиотекой. Пусть математическая библиотека даст вам ответ в радианах, затем умножьте его на 180/math.pi
чтобы получить степени.