三角函數的計算 (用 math 函式庫內的函數)

常見的三角函數,如 sin(x), cos(x), 和 tan(x),在 Python 裡,要使用這些函數,要先 import math 這個函式庫。

In [2]: import math

注意三角函數的運算,變數 x 是以弧度 (radian),而不是角度 (degree)。1 弧度的定義是圓弧長度等於半徑時的圓心角。弧度是實數,通常沒有單位,有時也會用 rad 來表示。一個圓的角度 360° (degree) 相當於弧度 2π (radian)。半個圓 180° 相當於 π。30° 就是 π/6。依此類推。

1 弧度 (rad) 相當於多少角度 (degree) 呢?

In [3]: 180/math.pi
Out[3]: 57.29577951308232

為了方便和畫面簡潔起見,我們在此先自定一個變數 Pi = 圓周率。

In [4]: Pi = math.pi

以下來計算幾個三角函數的例子:

In [5]: math.sin(Pi / 6)
Out[5]: 0.49999999999999994
#註:這裡應傳回 0.5,程式計算的結果是近似值。

In [6]: math.cos(Pi / 2)
Out[6]: 6.123233995736766e-17 
#註:這裡應傳回 0,而程式計算的結果是近似值,6.1232... 乘以 10 的負17次方。

In [7]: math.cos(0)
Out[7]: 1.0

In [8]: math.sin(0)
Out[8]: 0.0

In [9]: math.sin(Pi / 3)
Out[9]: 0.8660254037844386

In [10]: math.tan(Pi / 4)
Out[10]: 0.9999999999999999
#註:這裡應傳回 1.0,程式計算的結果是近似值。

In [11]: math.tan(Pi / 6)
Out[11]: 0.5773502691896257

In [12]: math.sin(2.3)
Out[12]: 0.7457052121767203

In [13]: math.cos(-3)
Out[13]: -0.9899924966004454

In [14]: math.tan(1.8)
Out[14]: -4.286261674628062

弧度 (radian) 和角度 (degree) 的轉換,可以用以下函數:
math.degrees(x) 可將弧度轉換成角度。
math.radians(x) 可將角度轉換成弧度。

In [16]: math.degrees(Pi)
Out[16]: 180.0

In [17]: math.radians(180)
Out[17]: 3.141592653589793

後記:如這篇文章所示,math 函式庫中的三角函數計算,有時會傳回近似值,使用者也能會覺得有點不安。我後來又寫了一篇用 SymPy 函式庫內的三角函數計算的文章,當用 SymPy 內的三角函數計算時,系統傳回的就是較正確的值了。甚至還可傳回正確的公式值呢。

參考閱讀:
https://docs.python.org/3.8/library/math.html