|
|
Drehachse über Eigenvektor bestimmen |
|
Inori |
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 21.04.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 21.04.2015, 11:30
Titel: Drehachse über Eigenvektor bestimmen
|
|
|
|
|
Hallo, ich stehe gerade vor einem Problem und weiß nicht wie ich es lösen könnte. Bitte entschuldigt, falls ich mich irgendwie nicht richtig ausdrücke, das ist mein erster Beitrag.
Ich möchte mit Hilfe von Matlab die Drehachse einer Matrix bestimmen. Dazu berechne ich die Eigenvektoren. Nun, ich weiß, dass die Drehachse der normierte Eigenvektor zum Eigenwert 1 ist. Wie kann ich nun mir den dazugehörigen Vektor ausgeben lassen, wenn ich die Eigenwerte bestimme?
Ich habe es zunächst über [Q,D] = eig(R) versucht. Q ist dann die Matrix mit den Eigenvektoren und D mit dazugehörigen Eigenwerten. Ich habe es dann über eine for-Schleife probiert in dem ich nach einem Eigenwert == 1 gesucht habe und dann den dazugehörigen Eigenvektor abgespeichert. Das hat zunächst funktioniert, aber leider musste ich dann feststellen, dass es nicht immer funktioniert. Ich habe teilweise imaginäre Eigenwerte rausbekommen und irgendwie lief dann etwas schief bei dem Vergleich, ob der Eigenwert gleich 1 ist.
Ich wäre euch sehr dankbar, wenn ihr einen guten Tipp für mich hättet.
|
|
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 21.04.2015, 15:25
Titel: Re: Drehachse über Eigenvektor bestimmen
|
|
Hallo Inori,
Dann poste doch mal den Code und erkläre im Detail, was genau schief gelaufen ist.
Gruß, Jan
|
|
|
Inori |
Themenstarter
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 21.04.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 21.04.2015, 18:38
Titel: Re: Drehachse über Eigenvektor bestimmen
|
|
Hallo Jan,
mein Code ist folgender:
Das Problem ist nun, das ich zwar ein Eigenwert 1 bekomme, aber bei der if-Abfrage findet er diesen nicht und somit bleibt meine Drehachse leer. Mittlerweile habe ich aber rausgefunden, dass es daran liegt, dass weil die Einträge in der D Matrix in Format float sind, der Eigenwert 1 an irgendeiner Nachkommastelle ungleich 0 ist. Um das zu lösen, runde ich nun die Zahl ab. Somit sieht mein Code so aus:
Ich frage mich aber, ob das auch ohne Runden irgendwie gehen könnte? Ich befürchte es nämlich, dass ich vielleicht irgendwann zwei solcher Eigenwerte hätte, die zwar gleich 1 sind, aber eine ist vielleicht 1.00000001 und die andere 1.0000000001, somit kommen beide in Frage, aber die zweite wäre die richtige. Oder aber vielleicht ist die Zahl auch 1.00001 und ich runde viel zu weit hinten ab. Vielleicht habe ich auch irgendwo einen Denkfehler.
Liebe Grüße
Inori
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 22.04.2015, 09:42
Titel: Re: Drehachse über Eigenvektor bestimmen
|
|
Hallo Inori,
Statt mit SINGLEs solltest Du besser mit DOUBLEs rechnen:
Es ist immer möglich, dass die Matrix mehrere Eigenwerte mit dem Wert 1 hat. Diesen Fall sollte man mit einer Meldung anzeigen lassen, damit man eine Chance hat darauf zu reagieren.
Die Bestimmung der Eigenwerte geschieht numerisch. Dabei kommt es immer zu Rundungsfehlern. Dies muss man unbedingt berücksichtigen, denn verhindern kann man es nicht. Zudem kann es noch sehr schlecht konditionierte Probleme geben, bei dem die Bestimmung des Eigenwertes bedeutende Rundungfehler geben kann.
Gruß, Jan
|
|
|
Inori |
Themenstarter
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 21.04.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 23.04.2015, 08:53
Titel:
|
|
Hallo Jan,
vielen Dank für deine Hilfe. Allerdings habe ich jetzt trotzdem noch ein Problem bzw. ich verstehe es noch nicht ganz. In meinem Beispiel bekomme ich drei Eigenwerte raus:
-1.665334536937735e-16 + 9.999999999999998e-01i
-1.665334536937735e-16 - 9.999999999999998e-01i
9.999999999999997e-01 + 0.000000000000000e+00i
Eigentlich kommt ja nur der letzte Eigenwert in frage, die anderen sind doch komplex. Aber es kommt eine Warnung, dass es mehrere Eigenwerte mit dem Wert 1 gibt.
Liebe Güße
Inori
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|