快速三角函数(cos,tan,arcsin,arcos,arctan)

kep*_*epi 20 trigonometry degrees radians swift

你好,我必须以度数区分计算,我有以下代码,但我没有返回确切的值.唯一的权利是sin90在degree = 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)
Run Code Online (Sandbox Code Playgroud)

为cos,tan及其ARC函数返回每个操作的精确值的正确操作是什么?

Sul*_*han 23

这比Swift问题更像是数学问题:

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)")
Run Code Online (Sandbox Code Playgroud)

版画

Sinus 1.0
Cosinus 6.12323399573677e-17
Tangent 1.63312393531954e+16
Run Code Online (Sandbox Code Playgroud)

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)")
Run Code Online (Sandbox Code Playgroud)

版画

Arcsinus 90.0
Run Code Online (Sandbox Code Playgroud)


Dar*_*kas 5

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
Run Code Online (Sandbox Code Playgroud)