Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
23.10.2007, 16:49 (Dieser Beitrag wurde zuletzt bearbeitet: 04.12.2007 22:01 von jg.)
Hallo Leute, habe ein VI zur Umrechnung der XYZ Koordinaten in ellipsoidische GPS-Koordinaten erstellt, finde aber nicht wo der Fehler steckt. Wenn jemand Zeit und Lust hat, kann mal seine Mathekenntnisse bzw. LV-Kenntnisse ausprobieren.
' schrieb:Hallo Leute, habe ein VI zur Umrechnung der XYZ Koordinaten in ellipsoidische GPS-Koordinaten erstellt, finde aber nicht wo der Fehler steckt. Wenn jemand Zeit und Lust hat, kann mal seine Mathekenntnisse bzw. LV-Kenntnisse ausprobieren.
Es wäre da schon ein Erleichterung, wenn Du für wenigstens einen Inputwert [X,Y,Z] den dazugehörenden richtigen Ausgangswert [B,L,h] zur Verfügung stellen könntest.
23.10.2007, 21:04 (Dieser Beitrag wurde zuletzt bearbeitet: 23.10.2007 22:15 von eg.)
' schrieb:Es wäre da schon ein Erleichterung, wenn Du für wenigstens einen Inputwert [X,Y,Z] den dazugehörenden richtigen Ausgangswert [B,L,h] zur Verfügung stellen könntest.
Hab mirs mal zur Brust genommen, jetzt scheint es zu stimmen.
Die Fehler waren:[list=1]
[*]Die Formel (4.14) muß richtig heißen: L=atan(y/x)<>
[*]N(i) falsche Berechnung, es wurde sin(B^2) statt (sin(B))^2 verwendet<>
[*]Zur Berechnung von B(i) muß N(i) verwendet werden und nicht N(i-1)<>
[*]atan ist nicht eindeutig, Für X<0 sollte Pi addiert werden.<>
[st]Habe auch die For-Schleife durch while ersetzt. Hoffe damit geholfen zu haben
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
Wo steckt der Fehler???
Was mich interessiert ist, wieso am Anfang der Realteil von x und der Realteil von y in r umgewandelt werden (mit Re/Im to polar).
Gruß Markus
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
24.10.2007, 09:55 (Dieser Beitrag wurde zuletzt bearbeitet: 24.10.2007 09:59 von eg.)
' schrieb:Hab mirs mal zur Brust genommen, jetzt scheint es zu stimmen.
Die Fehler waren:[list=1]
[*]Die Formel (4.14) muß richtig heißen: L=atan(y/x)<>
[*]N(i) falsche Berechnung, es wurde sin(B^2) statt (sin(B))^2 verwendet<>
[*]Zur Berechnung von B(i) muß N(i) verwendet werden und nicht N(i-1)<>
[*]atan ist nicht eindeutig, Für X<0 sollte Pi addiert werden.<>
[st]
Ich kann nur eins sagen: ich bin kein Mathematiker, gut, daß sich jemand (Lucki) damit auskennt und Zeit dafür genommen hat. Ich glaube, man kann für atan atan2 nehmen um die Eindeutigkeit zu schaffen.
Zum Punkt 2 - echt peinlich für mich
Zum Punkt 3 - ich hätte viel Zeit gebraucht um drauf zu kommen.
' schrieb:Habe auch die For-Schleife durch while ersetzt. Hoffe damit geholfen zu haben
Und wie!!! Übrigens, die For-Schleife wollte ich später auch durch While ersetzen, ich wusste nur die Abbruchbedingug nicht, Ist denn Epsilon nicht zu klein dafür? Ist es eine sichere Abbruchbedingung, nicht daß, das Programm hier hängen bleibt?
Ich danke vielmals, eg
P.S. noch eine kurze Frage: wie kommst du auf die Verwendung von komplexen Zahlen hier?
' schrieb:Was mich interessiert ist, wieso am Anfang der Realteil von x und der Realteil von y in r umgewandelt werden (mit Re/Im to polar).
Gruß Markus
Ja, das ist etwas irritierend, da es ein "Missbräuchliche Verwendung" dieser Funktion ist. Vergiß die komplexen Zahlen, ich verwende sie einfach zur Berechnung von sqrt(x^2 + y^2). Für eine "normale" Berechnung (siehe eg) würde man dafür 3 Funktionssymbole verbrauchen müssen.
' schrieb:Ja, das ist etwas irritierend, da es ein "Missbräuchliche Verwendung" dieser Funktion ist. Vergiß die komplexen Zahlen, ich verwende sie einfach zur Berechnung von sqrt(x^2 + y^2). Für eine "normale" Berechnung (siehe eg) würde man dafür 3 Funktionssymbole verbrauchen müssen.
' schrieb:Ich glaube, man kann für atan atan2 nehmen um die Eindeutigkeit zu schaffen
Danke für den Hinweis, natürlich geht das, ich kannte die Funktion nur nicht. Wenn Du erreichen willst, daß die Werte im Bereich 0...359 und nicht im Bereich -180..+180 angezeigt werden, solltes Du aber danach noch die Operation if(winkel<0) then Winkel=Winkel+2*Pi ausführen.
Zitat:Ist denn Epsilon nicht zu klein dafür? Ist es eine sichere Abbruchbedingung, nicht daß, das Programm hier hängen bleibt?
Das hatte ich auch befürchtet, und wollte eigentlich als Abbruchbedingung nicht die Maschinenungenauigkeit, sondern z.B das 10fache davon verwenden. Dann habe ich aber gesehen, daß nicht mehr als 6 Iterationen gebraucht werden. Ich denke auch, daß NI diese Konstante genau für diesen Zweck geschaffen hat, so daß deshalb ein solcher Abbruch immer sauber funktioniert. Die Schleife bleibt glaube ich hängen bzw. läuft ewig, wenn für x,y,z Nullen eingegeben werden (Oder vielleicht wenn nur einer davon null ist) Das sollte man mal checken.
Zitat:wie kommst du auf die Verwendung von komplexen Zahlen hier?
Das hat mit komplexen Zahlen überhaupt nichts zu tun, man kann diese komplexen Funktionen auch ganz allgemein zur Umrechnung vom zweidimensionalen kartesischen Kooardinaten (x,y) in Polarkoordinaten (r, phi) und umgekehrt verwenden. Also denke Dir einfach die Eingangsnamen (re, im) durch die Bezeichnungen (x,y) ersetzt, und damit sollten dann alle Assoziationen zu komlexen Zahlen beseitigt sein.