Мне нужно сделать функцию, которая вычисляет горизонтальное расстояние и максимальную высоту параболического движения.
import math
def YX (a,vi):
t=(2*vi*math.sin(a))/9.8 #Вычисление время
x=(vi*math.cos(a))*t #Вычисление расстояния
ymax=math.tan(a)-0.5*9.8*(x**2 /(vi**2 * math.cos(a*2))) #Рассчет максимальной высоты
print("Значение горизонтального расстояния " ,x," м")
print("Значение максимальной высоты ", ymax, "м")
a=float(input("Введите значение угла ", ))
vi=float(input("Введите значение начальной скорости "))
YX(a,vi)
Code language: PHP (php)
Все формулы должны быть в порядке, но результаты, которые я получаю, непоследовательны. Примером этого является то, что горизонтальное расстояние отрицательное, я не знаю, потому что оно читается как градусы или как радианы.
Пример,
Введите значение угла 65
Введите значение начальной скорости 215.22
Значение горизонтального расстояния -4396.1408762651745 м
Значение максимальной высоты 5564.78819850982 м
Code language: CSS (css)
В результате должно получиться.
x=3600 ymax=1900
Решение.
Я бы рекомендовал прочитать документацию по math перед использованием этих функций. Похоже, что ваша первоначальная идея была верна: читая части sin, cos и tan, он просит вас ввести число в радианах.
И это так же просто, как преобразовать a в радианы:
def YX (a,vi):
a = a * math.pi / 180
# ...остальной код
Code language: PHP (php)
(В качестве альтернативы можно задать a = math.radians(a)).
В результате вы получите.
Введите значение угла 65
Введите значение начальной скорости 215.22
Значение горизонтального расстояния 3620.705026943353 м
Значение максимальной высоты 2159.638618712338 м
Code language: CSS (css)