Oracle SQL 関数 : COS,SIN,TAN : 三角関数
numberRet := COS( nRad ); /* 余弦関数 */ numberRet := SIN( nRad ); /* 正弦関数 */ numberRet := TAN( nRad ); /* 正接関数 */ COS,SIN,TAN関数はラジアンで表された角度[nRad]の余弦、正弦、正接値を戻します。 numberRet : 引数がBINARY_FLOATの場合、このファンクションはBINARY_DOUBLEを戻します。 それ以外の場合、引数と同じ数値データ型を戻します。
以下に COS,SIN,TAN 関数の例を示します。
SQL> SELECT 2 SIN(0) AS "SIN(0)" 3 ,SIN(3.14159265359 / 2) AS "SIN(PI / 2)" 4 ,SIN(3.14159265359) AS "SIN(PI)" 5 ,COS(0) AS "COS(0)" 6 ,COS(3.14159265359 / 2) AS "COS(PI / 2)" 7 ,COS(3.14159265359) AS "COS(PI)" 8 ,TAN(0) AS "TAN(0)" 9 ,TAN(3.14159265359 / 4) AS "TAN(PI / 4)" 10 FROM DUAL; SIN(0) SIN(PI / 2) SIN(PI) COS(0) COS(PI / 2) COS(PI) TAN(0) TAN(PI / 4) ---------- ----------- ---------- ---------- ----------- ---------- ---------- ----------- 0 1 -2.068E-13 1 -1.034E-13 -1 0 1
ラジアンで表された角度は「π」の倍数で表現され、Oracleには「π」を取得する関数が無いので、
近似値として「3.14159265359」を用いています。
「SIN(PI)」および「COS(PI / 2)」は数学的には「0」なのですが、内部的に近似計算なので「E-13」の値となりました。
これぐらいであれば、ほぼ「0」と考えてもいいと思います。
今までの経験では Oracle を使ったシステムで三角関数を使ったことが在りませんでした。
(数学的な計算が必要な場合には使うことが在るかもしれませんが、通常のシステムでは先ず使う機会がないのでは)
それでは、次は三角関数の逆関数について記します。
Oracle SQL 関数 : ACOS,ASIN,ATAN : 逆三角関数
numberRet := ACOS( n ); /* 逆余弦関数 */ numberRet := ASIN( n ); /* 逆正弦関数 */ numberRet := ATAN( n ); /* 逆正接関数 */ ACOS,ASIN,ATAN関数は引数[n]の(-1 ~ 1)の範囲に対応するラジアンで表された角度(0 ~ n)を戻します。 numberRet : 引数がBINARY_FLOATの場合、このファンクションはBINARY_DOUBLEを戻します。 それ以外の場合、引数と同じ数値データ型を戻します。
以下に ACOS,ASIN,ATAN 関数の例を示します。
SQL> SELECT 2 ASIN(-1/SQRT(2)) / 3.14159265359 AS "ASIN : -45°" 3 ,ASIN( 0) / 3.14159265359 AS "ASIN : 0°" 4 ,ASIN( 1/SQRT(2)) / 3.14159265359 AS "ASIN : 45°" 5 ,ACOS(-1) / 3.14159265359 AS "ACOS : -45°" 6 ,ACOS( 0) / 3.14159265359 AS "ACOS : 0°" 7 ,ACOS(-1) / 3.14159265359 AS "ACOS : 45°" 8 ,ATAN( 0) / 3.14159265359 AS "ATAN : 0°" 9 ,ATAN( 1) / 3.14159265359 AS "ATAN : 45°" 10 FROM DUAL; ASIN : -45° ASIN : 0° ASIN : 45° ACOS : -45° ACOS : 0° ACOS : 45° ATAN : 0° ATAN : 45° ------------ ---------- ----------- ------------ ---------- ----------- ---------- ----------- -.25 0 .25 1 .5 1 0 .25
ACOS,ASIN,ATAN関数で「-45°」「0°」「45°」となる値を引数に設定し、結果を見ています。
それぞれの関数の戻り値を「π = 3.14159265359」で割っていますので、ASIN(-1/SQRT(2))は
「-π/4」であることが分かります。