iT邦幫忙

2024 iThome 鐵人賽

DAY 12
1
Modern Web

如何詠唱JavaScript的Math咒語系列 第 12

[Day12]-甜甜的滋味,相反餘弦鹹的淚水Math.acos()

  • 分享至 

  • xImage
  •  

昨天講了反正弦,那大家一定知道今天要講什麼吧!

沒錯!!就是log函數~~

開玩笑的,有了arcsin接下來肯定是arccos,來看看他是什麼意思。

來唸一下咒語Math.acos()

「寐偲,阿摳賽!!!」

數學課

arccos

就如同反正弦arcsin,反餘弦arccos函數也就是cos函數的反函數,原先cos函數得到的結果丟進arccos函數,就會得到當初傳進cos的角度,直接看看例子吧!

之前cos好觀察的點:

  • cos0°(cos0) = 1
  • cos90°(cosπ/2) = 0
  • cos180°(cosπ) = -1

將結果放到arccos中,得到的結果會介於0π(含)之間:

  • arccos(1) = 0
  • arccos(0) = π/2
  • arccos(-1) = π

y = arccosx的圖形:
image
很清楚可以觀察到定義域介於-11之間;值域介於0π之間呢!

y = arcsinxy = arccosx的圖形放在一起:
image
雖然說不出個所以然,但是不是真的有那麼一點「奇妙」呢?

Math.acos()

反餘弦函數,通常會用arccos或是 cos^-1^表示。

所以Math.acos()Math.cos()的反函數,給一個cos值回傳一個對應的角度值。
image

--MDN

語法

Math.acos(x)

參數

傳入一個數字介於-11之間(含),這個數字會是一個cos值。

回傳值

他會回傳x的 cos^-1^ 值,回傳值介於0π(含),如果傳入的x小於-1或大於1,回傳NaN

規範

image

用看看,轉成角度比較好觀察!

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,是因為前面提到過sincos的值只會介於-11之間,所以反回來傳入的值也就被限制在這個範圍了!

為什麼要限制回傳的範圍呢?

相信大家一定很好奇,不好奇請離開謝謝。

Math.asin()回傳的範圍會在-π/2π/2之間
Math.acos()回傳的範圍會在0π之間
你可能會覺得,sin(0)sin(π)的時候都是0,所以arcsin(0)反推回去應該要得到0orπ吧?

正確來說,會有無限多個x會使得sinx = 0,因為他的圖形會是一個無限在-11之間震盪的波浪(可以去看看前幾天的文章),回到問題,為什麼只會回傳一個值呢?

拿前面的圖來解釋一下吧~
day7_1
其實這張圖就包含了一個函數最基本而且很重要的定義:

每個輸入值只能對應一個輸出值

所以一個函數是不能回傳一個以上的值的喔~

想想看你唸出一個咒語應該也只能使出一個魔法吧!((?

至於反三角函數應用的部分我想就跳過吧!因為我腦袋只能想到在一些證明或化簡公式的時候可以利用,所以今天就到這邊吧!

參考資料
維基百科-函數
維基百科-反函數
MDN-Math.acos()
ECMAScript-Math.acos()


上一篇
[Day11]-這球投進了耶!arcsin到的啦~Math.asin()
下一篇
[Day13]-反三角尚未成功,阿天卷仍須努力Math.atan()
系列文
如何詠唱JavaScript的Math咒語30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
橘子
iT邦新手 4 級 ‧ 2024-09-26 10:34:59

蠻像DNA雙股螺旋的嗄,而且有好好表現出major跟minor groove的結構,讚

jeremykuo iT邦新手 5 級 ‧ 2024-09-26 23:40:27 檢舉

搞不好可以把這個圖形延伸製造出DNA的效果!

我要留言

立即登入留言