Matlab 教材:Matlab 是一個工程型計算器---三角與反三角函數

Matlab 其實具備一般工程型計算器該有的基本功能, 這包括任意計算次方、指數與對數函數、三角與反三角函數、雙曲與反雙曲函數。 這裡我們介紹三角與反三角函數。

六個三角函數在 Matlab 中對應的函式是
正弦sin( )餘弦cos( )
正切tan( )餘切cot( )
正割sec( )餘割csc( )

它們的用法並無特殊,就跟 exp( ) 和 sqrt( ) 這些函式一樣。 就如大部分的工程型計算器,三角函數的運算元乃是以弧度來度量,而不是角度。 所以

sin(0)
是 0,而
sin(3.1416)
-7.3464e-06,那幾乎是 0,因為 3.1416 幾乎是圓周率。 讀者亦可實驗
cos(3.1416)
看到答案幾乎是 -1。Matlab 並不提供角度量的三角函數, 使用者必須自行轉換。

Matlab 提供一個函式 (而非常數),用來計算圓周率的值。 它就叫做 pi。雖然您下指令

pi
仍然得到 3.1416 但是它在機器內部是一個更準確的值,因此
sin(pi)
得到 1.2246e-16,更幾乎是正確答案 0 了, 而它之所以不是零,又是「數值計算無可避免的誤差」在作怪。不過
cos(pi)
真的是 -1,而
sin(pi/2)
真的是 1。

六個反三角函數在 Matlab 中對應的函式是
反正弦asin( )反餘弦acos( )
反正切atan( )
atan2( )
反餘切acot( )
反正割asec( )反餘割acsc( )

它們的用法並無特殊,就跟 log( ) 和 sqrt( ) 這些函式一樣。 也和 log( ) 或 sqrt( ) 一樣,在正常的定義域內, Matlab 會計算如預期的實數答案,而且答案在一般熟知的值域之內。 例如當輸入值介於 -1 與 1 之間時,asin( ) 算出介於 -pi/2 與 pi/2 之間的答案。 但是如果輸入值超出這個範圍,Matlab 的 asin( ) 會算出複數。 這是一般熟悉之反三角函數的推廣,可能超出許多讀者的數學知識範圍, 您只要知道 Matlab 沒做錯,就行了。

例如

asin(1)
得到 pi/2 而
acos(sqrt(3)/2)
得到 0.5236,也就幾乎是 pi/6,都是可預期的。 讀者亦可實驗
asin(2)
看看結果。

反正切函式有兩種,這符合工程師的工作習慣。 一種是 atan( ) 就如大部分數學課本上所述,它取值任意實數, 而計算出來的結果介於 -pi/2 與 pi/2 之間。

atan(1)
得到近似 pi/4 的結果,而
atan(-10000)
得到近似 -pi/2 的結果。

另一種反正切函式是 atan2( ),它需要兩個輸入值。 若輸入 atan2(y,x) 則 Matlab 計算平面上 (x,y) 點與原點所連之線段和 x 軸的夾角, 或者說是 x + yi 這個複數與實軸的夾角,此夾角以 -pi 到 pi 之間測量。例如

atan2(1, 1)
得到 pi/4,而
atan2(-1, 1)
因為 (-1,1) 在第四象限所以得到 -pi/4,但
atan2(-1, -1)
在第三象限而得到 -(3/4)*pi。

習題

  1. 試試看 pi/2 - atan(Inf) 答案如何?能解釋嗎?
  2. 試試看 pi/2 + atan(-Inf) 答案如何?能解釋嗎?
  3. 試試看 atan2(1,0) 答案如何?能解釋嗎?
單維彰 (03/03/06) --- [Prev] [Next] [Up]