2013-06-18 101 views
-1

我想知道如何從Matlab中的sqrt獲得正面和負面的解決方案。Matlab中的double sqrt解決方案?

例如,如果我有:

sin(a) = sqrt(1-cos(a)^2); 
+0

那麼,什麼是這一切髒活你期望在這個例子中得到的結果是什麼? –

回答

0

當調用sqrt(x)或同等函數時,MATLAB(以及我所知道的所有其他編程語言)僅返回principal square rootx

你會怎麼寫x數學的平方根,是

s = ±√x 

這僅僅是寫整個解決方案的簡寫設置

s = {+√x -√x} 

在MATLAB中,你會把它寫成與最後一種情況相同,但是語法略有不同,但是語法略有不同,但是

s = [+sqrt(x) -sqrt(x)] 

從而可以更加有效地計算,如果你 「分解出的」 sqrt

s = sqrt(x) * [1 -1] 

因此,對於你的情況,

s = sqrt(1-cos(a)^2) * [1 -1] 

,或者,如果你願意的話,

s = sin(acos(a)) * [1 -1] 

這是一個稍微慢點,但也許更可讀(實際上也更精確一點)。

現在當然,如果你能以某種方式找到其商數結果在您的餘弦值的成分,那麼你就不會要處理當然....

1

docs不說具體的關於總是隻提供正平方根,但它似乎是一個合理的假設在這種情況下,你可以得到負方什麼很容易地像這樣:

p = sqrt(1-cos(a)^2); 
n = -sqrt(1-cos(a)^2); 

BTW分配給sin(a)就像是要創建一個名爲sin變量,它會隱藏sin功能導致許多possib le錯誤,所以我強烈建議選擇一個不同的變量名稱。

+0

對不起,也許我是以錯誤的方式提出的。 我正在研究一個機器人的逆向運動學,並且已經有了cos_a(不是a!)的值 我必須找到 sin_a的值。 爲了表明它們不是函數而是變量,我重寫了它們,感謝Dan的註釋。 – Spyros

0

sqrt不解決方程式,只給出數值輸出。您需要根據需要制定公式,然後您可以使用sqrt(...)-1*sqrt(...)來給出正面和負面的輸出結果。