Я борюсь с простой задачей вычисления.
По теории для произвольного угла:
Если
- это
Если я реализую это в python или Matlab:
import numpy as np
alpha = -89.999961
alpha_rad = np.deg2rad(alpha)
result = np.arccos(np.sin(alpha_rad)**2 + np.cos(alpha_rad)**2)
print('%.16f' % result)
ведет к
0.0000000149011612
, тогда как
alpha = -89.9999601
приводит к
0.0000000000000000
Это также практически 0 при использовании -89,9999962 °,но это снова 1.49011612e-08 для альфа = -89.9999 °
Кто-нибудь знает причину этого и какие углы приведут к результатам больше 0. Я не большой специалист по численной математике, ноинтервал с плавающими числами значительно меньше (2.220446049250313e-16). Я хочу умножить результат на большое число, поэтому было бы здорово, если бы результат был равен 0 с точки зрения расстояния между числами с плавающей запятой.
Любая помощь и объяснения приветствуются!