昨天講了反正弦,那大家一定知道今天要講什麼吧!
沒錯!!就是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)
反推回去應該要得到0
orπ
吧?
正確來說,會有無限多個x
會使得sinx = 0
,因為他的圖形會是一個無限在-1
跟1
之間震盪的波浪(可以去看看前幾天的文章),回到問題,為什麼只會回傳一個值呢?
拿前面的圖來解釋一下吧~
其實這張圖就包含了一個函數最基本而且很重要的定義:
每個輸入值只能對應一個輸出值
所以一個函數是不能回傳一個以上的值的喔~
想想看你唸出一個咒語應該也只能使出一個魔法吧!((?
至於反三角函數應用的部分我想就跳過吧!因為我腦袋只能想到在一些證明或化簡公式的時候可以利用,所以今天就到這邊吧!
參考資料:
維基百科-函數
維基百科-反函數
MDN-Math.acos()
ECMAScript-Math.acos()
蠻像DNA雙股螺旋的嗄,而且有好好表現出major跟minor groove的結構,讚
搞不好可以把這個圖形延伸製造出DNA的效果!