PALMisLIFE 討論區

標題: 球面三角的反三角函數公式 [列印本頁]

作者: VoodooMark    時間: 2007-1-2 16:24
標題: 球面三角的反三角函數公式
問題跟寫程式有點關係,所以就貼到這個板來..

最近幫朋友寫了一個跟測量有關的程式,
算到最後,得出 cot A = X,
現在想要算出 A 角是多少。

只是 C Language 中的函數中,只有 sin, cos, tan,反三角只有 asin, acos, atan
並沒有 cot 及 acot 函數可用

本來我用平面三角的公式 cot A = 1/tan A 代入,
測試結果都不正確,
後來才想到可能是球面三角的公式與平面不同

在google上爬了幾天,越看越迷糊
因為高中唸的是社會組,當年都沒有唸這些東西

只好來此,請問各位:
已知 cot A = X ,
如何用 asin, acos, atan 求出 A 值呢?
作者: leox    時間: 2007-1-2 17:03
標題: Re: 球面三角的反三角函數公式
cotA=cosA/sinA
三角函數是沒有分球面或是平面的,它只是角度和邊長比值對應關係

補充一個網站http://mathworld.wolfram.com/
去這邊查比較快

[ 本文最後由 leox 於 2007-1-2 17:07 編輯 ]
作者: closer    時間: 2007-1-2 18:38
標題: Re: 球面三角的反三角函數公式
提醒一下,C library 裡的三角函數公式,使用的是「逕(?)度」而不是「角度」哦!
也就是說,如果你想算的是 cos60° ,那你應該要用 cos(PI/3),而不是 cos(60)。

同樣的,用反三角求回來的值,也必須乘上 360 / (2*PI) 才是角度值。
作者: VoodooMark    時間: 2007-1-2 20:10
標題: Re: 球面三角的反三角函數公式
感謝兩位的協助!

C Library 所使用的確實是「弳度量」─
謝謝提醒,不過已經來不及了   ─ 之前為了這個,抓了很久,才發現「陷阱」

我上了那個網頁去看:
得到的心得如下:

cot A = X =  1 / tan A

A = acot X = atan ( 1 / X )

atan X + acot X =  Pi / 2

不知是否正確?
作者: jedij    時間: 2007-1-2 20:23
標題: Re: 球面三角的反三角函數公式
我猜VoodooMark兄是要計算球面上弧長?

可能要用三角函數對極座標積分…
作者: VoodooMark    時間: 2007-1-2 20:24
標題: Re: 球面三角的反三角函數公式
補充說明一下:
朋友已經離開學校多年,相關的公式也忘得差不多不了,
他只說在 cot A = X 時,求 A 值有兩種公式:

公式一: A = atan (1/x)
公式二 : A = 90 - atan X 或 A = 90 - atan(1/X)

用這兩個公式算出來,會出現例如:A = 3.12  或 A=176.88

他會根據他自已的「實務」經驗,選擇「合理」的答案
問題是寫程式,必須寫入判斷式,無法判斷所謂的「合理」

所以,才來請問到底正確公式是什麼?
作者: jedij    時間: 2007-1-2 20:40
標題: Re: 球面三角的反三角函數公式
cot A = X
A = atan (π/2 - X)
的樣子…
作者: leox    時間: 2007-1-2 20:57
標題: Re: Re: 球面三角的反三角函數公式
原文由 VoodooMark 於 2007-1-2 20:24 發表
補補充說明一下:
朋友已經離開學校多年,相關的公式也忘得差不多不了,
他只說在 cot A = X 時,求 A 值有兩種公式:

公式一: A = atan (1/x)
公式二 : A = 90 - atan X 或 A = 90 - atan(1/X)

用這兩個公式算出來,會出現例如:A = 3.12  或 A=176.88

他會根據他自已的「實務」經驗,選擇「合理」的答案
問題是寫程式,必須寫入判斷式,無法判斷所謂的「合理」

所以,才來請問到底正確公式是什麼?


你可以把兩個答案加起來....是不是等於180
然後看看http://mathworld.wolfram.com/Cotangent.html這裡cot的函數圖形
這函數的圖形週期是不是剛好就是180度(pi)
所以這兩個答案都是對的,因為cot 176.88(度)=cot 3.12 (度)
當然你再把176.88加上180或是3.12減掉180之後再取cot值答案也是會一樣的
所以最終的問題就是你要限定A值的定義域

[ 本文最後由 leox 於 2007-1-2 20:59 編輯 ]
作者: VoodooMark    時間: 2007-1-2 22:21
標題: Re: 球面三角的反三角函數公式
jedij 兄:

       那個公式好像有點問題,用 cot 45 = 1 代入後,反算的值算不出 A = 45


leoX 兄:

我用計算機算( tan ( 1/x) )有正負號的不同,
也就是 cot 176.88(度)=    - cot 3.12 (度)

也就是因為這樣,我一直都以為是在整個繁雜的計算過程中,有正負符號的錯用
查很久,卻查不到程式有錯誤的情形

如果 atan 無法求得唯一的解,那就只好想辦法找出   A 值的定義域了
作者: jedij    時間: 2007-1-2 23:16
標題: Re: Re: 球面三角的反三角函數公式
原文由 VoodooMark 於 2007-1-2 22:21 發表
也就是因為這樣,我一直都以為是在整個繁雜的計算過程中,有正負符號的錯用
查很久,卻查不到程式有錯誤的情形

如果 atan 無法求得唯一的解,那就只好想辦法找出   A 值的定義域了

不好意思,不知倒是不是真的錯了…
你可以到MS Excel裡函數的Help找到一些資訊。

另外,atan,acot都不是很好的函數,因為定義域是正、負無限。
Wiki-反三角函數
作者: leox    時間: 2007-1-2 23:47
標題: Re: Re: 球面三角的反三角函數公式
原文由 VoodooMark 於 2007-1-2 22:21 發表
jedij 兄:

       那個公式好像有點問題,用 cot 45 = 1 代入後,反算的值算不出 A = 45


leoX 兄:

我用計算機算( tan ( 1/x) )有正負號的不同,
也就是 cot 176.88(度)=    - cot 3.12 (度) ...


對...我少加了個負號....抱歉
所以我也看錯了
所以你的問題我也自以為很簡單....我再想一想蛤

=======================================
盜用MATHWORLD的圖


tan A和cot A互為倒數關係,基本上arc cot的圖就是上面對著x軸的鏡像
然後在y軸上也是有週期性,週期也是pi
所以還是一樣,必須找出原先設定的定義域
不然最後就只剩下用指數形式來表示的方法了,這邊會牽扯的虛數的運算...

[ 本文最後由 leox 於 2007-1-3 00:21 編輯 ]
作者: VoodooMark    時間: 2007-1-3 19:14
標題: Re: 球面三角的反三角函數公式
沒想到這麼複雜....

實在忍不住要抱怨一下,
在工程計算機上只有三個三角、反三角函數,
這畢竟是因為受限於計算機的體積

但是 C Library中似乎沒有必要如此自我設限吧?
何不把六個三角、反三角函數都列出來,讓生命簡單些?

抱怨完了,回到主題:
如果球面三角和平面三角的公式沒有不同,
那麼當 cot A = X ,
則 X = 1 / tan A
    tan A = 1/X,  
所以  A = atan 1/X

而 atan : ( - ∞ , ∞ )  -> (-Pi/2, Pi/2),  也就是 -90度 < A < 90 度
只有 A 在 90 度時不存在

這樣看來,只有唯一解啊! 真是搞不懂?

另外,回jedij兄的話:
我在Excel的 Help 裡找不到資料,可是我突然想到在奇摩知識找,找到以下的一段話:
原始網頁

  1. 在x是實數且x不等於0下,是否恆有
  2. arctanx=arccot1/x(否)(tanx為負值時.不合)
  3. arccotx=arctan1/x(否)(tanx為負值時.不合)

  4. 若tanx為負值.應修正為
  5. arctanx= arccot1/x - π
  6. arccotx= π + arctan1/x
複製代碼


謝謝各位大哥為小弟如此傷腦筋...




歡迎光臨 PALMisLIFE 討論區 (http://f.pil.tw/) Powered by Discuz! X2.5