快速三角函数(cos、tan、arcsin、arccos、arctan)

标签 swift degrees trigonometry radians

你好,我必须以度数来区分计算,我有以下代码,但我没有返回确切的值。唯一对的就是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)

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

最佳答案

与其说是 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)")

打印

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

关于快速三角函数(cos、tan、arcsin、arccos、arctan),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35770399/

相关文章:

ios - Swift:检测 bodyAtPoint。始终为零

algorithm - 带度约束的最小生成树

c# - 将一个数旋转 180 度,得到相同的数

3d - 需要帮助正确直线投影等距柱状全景图像

c++ - 角度命中比较 : Fails to detect hit

swift - 根据登录的用户从 firebase 加载数据

swift - 在 Swift 中哪些变量应该使用weak var?我如何找出泄漏点?

swift - swift 中的线程安全单例

在C中计算正弦曲线

python - 在 Numpy 中从一个音高到另一个音高的正弦波滑音