Свифт тригонометрических функций (COS, загар, арксинуса, Аркос, равенства arctg)
Привет, я должен различать вычисления в градусах, и у меня есть следующий код, но я не возвращаю мне точные значения. Единственное право-это значение sin90 в степени = 1
//////***** DEGREES ******//////
var sinus = sin(90.0 * M_PI / 180)
var cosinus = cos(90 * M_PI / 180)
var tangent = tan(90 * M_PI / 180)
var arcsinus = asin(90 * M_PI / 180)
var arcosinus = acos(90 * M_PI / 180)
var arctangent = atan(90 * M_PI / 180)
какова правильная операция для возврата точного значения для каждой операции в градусах для cos, tan и их функций дуги?
2 ответов
это больше математическая задача, чем быстрая задача:
let sinus = sin(90.0 * Double.pi / 180)
print("Sinus \(sinus)")
let cosinus = cos(90 * Double.pi / 180)
print("Cosinus \(cosinus)")
let tangent = tan(90 * Double.pi / 180)
print("Tangent \(tangent)")
печать
Sinus 1.0
Cosinus 6.12323399573677e-17
Tangent 1.63312393531954e+16
синус 90 градусов - 1 (Правильно)
Косинус 90 градусов равен 0. Значение 6e-17 является очень очень маленьким значением, любое разумное округление будет считать его равным нулю (правильно). Тот факт, что вы не можете получить ровно ноль, объясняется ошибками округления в расчете.
тангенс 90 градусов не определен (sin / tan = 1/0, деление на ноль нет определенный.) Если бы у нас были точные расчеты, вы, вероятно, получили бы бесконечность. В этом случае у нас есть 1
разделить на 6e-17
, которое становится большим числом 1.6e16
. Результат правильный.
Что касается обратных функций, обратите внимание на одну вещь - их параметры не находятся ни в градусах, ни в радианах. Их результат в градусах/радианах, например:
let arcsinus = asin(1.0) * 180 / Double.pi
print("Arcsinus \(arcsinus)")
печать
Arcsinus 90.0
Swift 4 работает с измененным синтаксисом:
let sinus = sin(90.0 * Double.pi / 180)
let cosinus = cos(90 * Double.pi / 180)
let tangent = tan(90 * Double.pi / 180)
let arcsinus = asin(1) * 180/ Double.pi
let arcosinus = acos(0) * 180/ Double.pi
let arctangent = atan(1) * 180/ Double.pi