Я столкнулся с чем-то весьма интересным, пока я играю с модулем math
для тригонометрических вычислений с использованием , sin
и cos
.Триггерные функции Python не возвращают согласованные результаты
Как сказано это все математические учебники, источник онлайн, и курсы, верно следующее:
tan(x) = sin(x)/cos(x)
Хотя я наткнулся на несколько точных ошибках при использовании трех тригонометрических функций следующим:
from math import tan, sin, cos
theta = -30
alpha = tan(theta)
omega = sin(theta)/cos(theta)
print(alpha, omega)
print(alpha == omega)
>>> (6.405331196646276, 6.4053311966462765)
>>> (False)
Я пробовал пару разных значений для theta
, и последняя цифра результатов была удалена крошечным битом.
Есть ли что-то, что мне не хватает?
[Что каждый программист должен знать о арифметике с плавающей точкой] (http://floating-point-gui.de/) – MattDMo
Выбирать разумную минимальную ошибку, которую вы хотите принять (1E-14), вероятно, разумно для 64- бит с плавающей запятой) и сравнить разницу между двумя значениями против этого максимума. –