32

こんにちは、計算を度数で微分する必要があり、次のコードがありますが、正確な値が返されません。唯一の権利は、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、およびそれらの ARC 関数の度単位のすべての演算の正確な値を返す正しい演算は何ですか?

4

2 に答える 2

42

これは 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ます。結果は正しいです。

逆関数に関しては、1 つのことに注意してください。それらのパラメーターは度数でもラジアンでもありません。それらの結果は、度/ラジアンで表されます。次に例を示します。

let arcsinus = asin(1.0) * 180 / Double.pi
print("Arcsinus \(arcsinus)")

版画

Arcsinus 90.0
于 2016-03-03T12:14:37.460 に答える