昨天講了反正弦,那大家一定知道今天要講什麼吧!
沒錯!!就是log函數~~
開玩笑的,有了arcsin接下來肯定是arccos,來看看他是什麼意思。
來唸一下咒語Math.acos():
「寐偲,阿摳賽!!!」
就如同反正弦arcsin,反餘弦arccos函數也就是cos函數的反函數,原先cos函數得到的結果丟進arccos函數,就會得到當初傳進cos的角度,直接看看例子吧!
之前cos好觀察的點:
將結果放到arccos中,得到的結果會介於0~π(含)之間:
y = arccosx的圖形:
很清楚可以觀察到定義域介於-1~1之間;值域介於0~π之間呢!
將y = arcsinx與y = arccosx的圖形放在一起:
雖然說不出個所以然,但是不是真的有那麼一點「奇妙」呢?
反餘弦函數,通常會用arccos或是 cos^-1^表示。
所以Math.acos()是Math.cos()的反函數,給一個cos值回傳一個對應的角度值。
--MDN
Math.acos(x)
傳入一個數字介於-1到1之間(含),這個數字會是一個cos值。
他會回傳x的 cos^-1^ 值,回傳值介於0到π(含),如果傳入的x小於-1或大於1,回傳NaN。

用看看,轉成角度比較好觀察!
console.log(Math.acos(1) * 180 / Math.PI); //0
console.log(Math.acos(0) * 180 / Math.PI); //90
console.log(Math.acos(-1) * 180 / Math.PI); //180
console.log(Math.acos(1 / Math.sqrt(2)) * 180 / Math.PI); //45.00000000000001
一樣要注意誤差~
這兩天講的兩個反三角函數的參數皆只能傳入-1~1(含),否則將回傳NaN,是因為前面提到過sin跟cos的值只會介於-1跟1之間,所以反回來傳入的值也就被限制在這個範圍了!
相信大家一定很好奇,不好奇請離開謝謝。
Math.asin()回傳的範圍會在-π/2到π/2之間Math.acos()回傳的範圍會在0到π之間
你可能會覺得,sin(0)跟sin(π)的時候都是0,所以arcsin(0)反推回去應該要得到0orπ吧?
正確來說,會有無限多個x會使得sinx = 0,因為他的圖形會是一個無限在-1跟1之間震盪的波浪(可以去看看前幾天的文章),回到問題,為什麼只會回傳一個值呢?
拿前面的圖來解釋一下吧~
其實這張圖就包含了一個函數最基本而且很重要的定義:
每個輸入值只能對應一個輸出值
所以一個函數是不能回傳一個以上的值的喔~
想想看你唸出一個咒語應該也只能使出一個魔法吧!((?
至於反三角函數應用的部分我想就跳過吧!因為我腦袋只能想到在一些證明或化簡公式的時候可以利用,所以今天就到這邊吧!
參考資料:
維基百科-函數
維基百科-反函數
MDN-Math.acos()
ECMAScript-Math.acos()
蠻像DNA雙股螺旋的嗄,而且有好好表現出major跟minor groove的結構,讚
搞不好可以把這個圖形延伸製造出DNA的效果!