今天整理一組三角函式,SIN、COS、TAN 和它們的反函數,外加負責角度與弧度轉換的 RADIANS、DEGREES、PI。
我在工作上用到的機會不多,通常是算斜坡或屋頂的高度,或是用兩地的經緯度估算直線距離,這兩個題目這篇最後都會做。其他情況當工具書查就好。
怎麼選
最容易踩的地方先講:Google 試算表的三角函式一律用弧度(radian),不是度。SIN(30) 不是 0.5,是 30 弧度的正弦,約 -0.9880。要用度,就先用 RADIANS 轉過去,結果是角度的函式(ASIN、ACOS、ATAN、ATAN2)再用 DEGREES 轉回來。
| 想做的事 | 用哪個 | 輸入 | 輸出 |
|---|---|---|---|
| 已知角度,求對邊比斜邊 | SIN | 弧度 | 比值 |
| 已知角度,求鄰邊比斜邊 | COS | 弧度 | 比值 |
| 已知角度,求對邊比鄰邊 | TAN | 弧度 | 比值 |
| 已知比值,求角度 | ASIN、ACOS、ATAN | 比值 | 弧度 |
| 已知座標,求角度 | ATAN2 | x、y | 弧度 |
| 角度與弧度互換 | RADIANS、DEGREES | 角度或弧度 | 弧度或角度 |
倒數的 SEC、CSC、COT 和雙曲函數另外整理在 倒數與雙曲三角函式,指數與對數在 指數、對數與特殊函式。輸入是複數(3+4i 這種格式)的話,要改用 IMSIN、IMCOS 這類函式,見 複數三角與雙曲函式。
角度與弧度
PI
傳回圓周率 π,不需要參數,括號仍要寫。
語法:
圓周率,取到小數 4 位
=TEXT(PI(), "0.0000")結果是 3.1416。半圓是 π 弧度,整圓是 2π,所以 就是整圓的弧度數。
RADIANS
把角度換成弧度。
語法:
- 角度:以度為單位的數字。
180 度剛好是 π 弧度:
180 度轉弧度
=TEXT(RADIANS(180), "0.0000")結果是 3.1416。手算的話是 角度 × π ÷ 180,所以 90 度就是 1.5708 弧度。
DEGREES
把弧度換成角度,RADIANS 的反方向。
語法:
π 弧度轉角度
=TEXT(DEGREES(PI()), "0.0000")結果是 180.0000。ASIN 這類函式算出來的弧度,我習慣直接包一層 DEGREES 再看,比較有感覺。
正弦、餘弦、正切
下面三個函式都以 A2 放斜坡的斜長 12.5 公尺、B2 放坡度角 17 度來示範。
SIN
傳回角度的正弦,也就是對邊比斜邊。
語法:
斜坡的高度 = 斜長 × SIN(坡度角):
斜長 12.5 公尺、坡度角 17 度的高度
=A2*SIN(RADIANS(B2))12.5 × sin(17°) 約 3.6546,所以高度大約 3.6546 公尺。
最容易漏掉的就是 RADIANS。直接寫 會把 17 當成 17 弧度,答案完全不對,也不會出現錯誤提示。
另外,SIN(PI()) 理論上是 0,電腦算出來是約 1.2E-16 的極小數,顯示時要小心。需要整齊的結果就包 ROUND,例如 得到 0。
COS
傳回角度的餘弦,也就是鄰邊比斜邊。
語法:
同一個斜坡的水平距離 = 斜長 × COS(坡度角):
斜長 12.5 公尺、坡度角 17 度的水平距離
=A2*COS(RADIANS(B2))結果約 11.9538 公尺。可以驗一下畢氏定理:3.6546 的平方加上 11.9538 的平方,開根號剛好回到 12.5。
TAN
傳回角度的正切,也就是對邊比鄰邊,工地上的「坡度百分比」就是它乘以 100。
語法:
坡度角 17 度的坡度比值
=TEXT(TAN(RADIANS(B2)), "0.0000")結果是 0.3057,也就是約 30.57% 的坡度。
TAN 在 90 度、270 度這些位置在數學上沒有定義。電腦的 π 只是近似值,所以 會得到約 1.6E+16 的極大數字,而不是錯誤,看到這種大到離譜的數就代表角度踩到了 90 度附近。
反三角函數
反函數是已知比值,求角度,結果是弧度,要轉成度就包 DEGREES。以下用量到的高 3.65 公尺、斜長 12.5 公尺、水平 11.95 公尺來反推坡度角。
ASIN
傳回反正弦,輸入必須在 -1 到 1 之間,結果落在 -π/2 到 π/2。
語法:
用高度與斜長反推坡度角
=TEXT(DEGREES(ASIN(3.65/12.5)), "0.0000")結果是 16.9777 度。輸入超過 1,例如 ,會得到 #NUM!。
ACOS
傳回反餘弦,輸入同樣是 -1 到 1,結果落在 0 到 π。
語法:
用水平距離與斜長反推坡度角
=TEXT(DEGREES(ACOS(11.95/12.5)), "0.0000")結果是 17.0596 度。跟 ASIN 的 16.9777 度有些差距,是因為 3.65 和 11.95 都是四捨五入後的量測值,量測值本身的誤差會被放大,這是正常的。
ATAN
傳回反正切,任何數字都能輸入,結果落在 -π/2 到 π/2。
語法:
用高度與水平距離反推坡度角
=TEXT(DEGREES(ATAN(3.65/11.95)), "0.0000")結果是 16.9847 度。三個反函數裡我最常用 ATAN,因為它不會有輸入超出範圍的問題,只要鄰邊不是 0 就能算。
ATAN2
由 x、y 座標算出該點的角度,結果落在 -π 到 π,能分辨在哪一個象限。
語法:
- x:點的 x 座標。
- y:點的 y 座標。
注意引數順序是 x 在前、y 在後,跟很多程式語言的 atan2(y, x) 相反,這是新手最常寫反的地方。
x 為 -1、y 為 1 的點,距離正 x 軸幾度
=TEXT(DEGREES(ATAN2(-1, 1)), "0.0000")結果是 135.0000 度。同一個點用 ATAN(1/-1) 只會得到 -45 度,因為 ATAN 只看比值,分不出 (1, -1) 和 (-1, 1)。ATAN2(0, 0) 會是 #DIV/0!。
實例:兩地經緯度算直線距離
最後一個題目,我想知道台北車站(緯度 25.0478、經度 121.5170)到高雄車站(緯度 22.6394、經度 120.3022)的直線距離。座標取小數 4 位的大約值。
地球是球體,不能直接用平面的畢氏定理,要用 haversine 公式。先把四個數字放進去,A2 是起點緯度、B2 是起點經度、C2 是終點緯度、D2 是終點經度。地球半徑取 6371 公里:
haversine 公式,算兩地球面距離(公里)
=2*6371*ASIN(
SQRT(
SIN(RADIANS(C2-A2)/2)^2 +
COS(RADIANS(A2))*COS(RADIANS(C2))*SIN(RADIANS(D2-B2)/2)^2
)
)拆開看,緯度差與經度差都先 RADIANS 轉成弧度並除以 2,SIN 平方之後依公式組合,SQRT 開根號、ASIN 還原成中心角,最後乘上 2 倍半徑。算出來是 294.9220 公里。
也有人把最後一步寫成 ATAN2(SQRT(1-a), SQRT(a)),在兩點非常接近或剛好在地球對面時比較穩。這個距離用 ASIN 的寫法就夠了,兩種寫法的結果相同。
這個距離是球面上的直線距離,不是公路或鐵路的里程。
需要的時候回來查一下,就這樣!
接下來可以
相關文章
查看所有文章複數三角與雙曲函式:IMSIN、IMCOS、IMTANH 與傳輸線輸入阻抗
整理 12 個複數三角與雙曲函式,IMSIN、IMCOS、IMTAN、IMSEC、IMCSC、IMCOT 與對應的雙曲版本。以短路傳輸線的輸入阻抗 Z0 乘 tanh 當實例,附 1+i 的對照表與倒數關係。
指數、對數與階乘:EXP、LN、LOG、FACT、GAMMALN 與 SERIESSUM
EXP、LN、LOG、LOG10 的指數對數家族,加上 FACT、FACTDOUBLE、MULTINOMIAL、GAMMALN、SQRTPI、SUMSQ、SERIESSUM、ERF、ERFC 等數學特殊函式。用連續複利和幾年翻倍當實例。
留言討論
共 0 則留言
