2017-03-01 3 views
2

erstelle ich einen Punkt mit einem zufälligen rho und Theta mit dem folgenden Code:Convert x und y Winkel in Radianten

set.seed(1) 
rho <- sqrt(runif(1, 0.0, 1.0)) 
theta <- runif(1, 0, 2*pi) 

rho=0.515 und theta=2.338 Erhalten

Ich kann die x- und y-Werte erhalten tun x=rho*cos(theta) und y=rho*sin(theta) mit -0.358 und 0.371 bzw.

wenn ich jedoch

der inversen Prozedur mache
r<-sqrt(x^2+y^2) 

, die die gleiche wie rho führt aber

a<-atan(y/x) 

tun erhalte ich ein anderes Ergebnis als Theta.

Können Sie mir sagen, was ich falsch mache?

+0

Die Funktion Tangens einen Zeitraum von 'pi' hat. Sie müssen also die Zeichen von "x" und "y" prüfen, um den Quadranten des Punktes zu finden. Es ist ein mathematisches (bzw. logisches) Problem. – jogo

+0

Sie wollen überprüfen, ob sie positiv oder negativ sind? Wie mache ich das in diesen Fällen? –

Antwort

2

Sie haben x < 0 und y/x = -1.036811 < 0. Jetzt bedeutet es, dass Theta nur im 2. oder 4. Quadranten sein kann.

Lassen tan(-z)=-tan(z)=tan(2*pi-z)=tan(pi-z)=w, dann -z, pi-z, 2*pi-z alle gleich atan(w), die Lösung in z nicht eindeutig ist.

atan(y/x) 
#[1] -0.8034692 

-0,8034692 ist eine Lösung

pi+atan(y/x) 
#[1] 2.338123 

und

2*pi+atan(y/x) 
#[1] 5.479716 

Lösungen sind ebenso bedeutet.

c(tan(atan(y/x)), tan(pi+atan(y/x)), tan(2*pi+atan(y/x))) 
# [1] -1.036811 -1.036811 -1.036811 

Wenn wir Interesse Lösung finden 0<theta<pi dann der einzige Kandidat Lösung ist pi+atan(y/x)=2.338123

Verwandte Themen