WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Eigenwerte und Eigenvektoren

 

Pu5h1
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 31.05.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.05.2015, 09:54     Titel: Eigenwerte und Eigenvektoren
  Antworten mit Zitat      
Hallo zusammen

Ich habe bald einmal eine Klausur und muss mit MATLAB an dieser Klausur Eigenwerte und Eigenvektoren berechnen können. Bis jetzt hat dies auch super funktioniert.
Bei einer Aufgabe bekam ich aber ein anderes Resultat als die eigentliche Lösung. Ich fragte also bei einem Kollegen nach, was er bekam und er kam mit meiner Eingabe auf das richtige Resultat.
Meine Frage ist jetzt:
Wie kann es sein, dass mein Kollege auf ein anderes Resultat kommt wie ich, wenn wir genau das Selbe eingeben?


Die Aufgabenstellung ist die folgende:

1. Bestimmen Sie alle Eigenwerte und die zugehörigen orthonomen Eigenvektoren der Matrix A=[6 10 2; 10 -15 -5; 2 -5 9]
2. Geben Sie die Resultate exakt an (mit Brüchen bzw. Wurzeln, ohne Rundung)


Meine Lösung zur 1:

% Aufg 1.)
A=[6 10 2; 10 -15 -5; 2 -5 9];
[v, w]=eig(A)



Mein Resultat, das ich bekomme:

Eigenwerte sind korrekt:
w=

-20.0000 0 0
0 10.0000 0
0 0 10.0000

Eigenvektoren stimmen nicht mit der Lösung überein:
v =

0.3651 -0.0845 0.9271
-0.9129 -0.2278 0.3388
-0.1826 0.9700 0.1603



Das Resultat, welches mein Kollege bekommt und auch in den Lösungen steht:

(Selber Eigenwert)

Eigenvektor:
v =

-0.3651 0.9153 -0.1702
0.9129 0.3879 0.1273
0.1826 -0.1089 -0.9771



Er versuchte es vor ein paar Sekunden noch auf dem Tablet aus und bekam da auch das falsche Resultat. An was liegt dies?
(Version beidem er das richtige Resultat bekam ist die Selbe wie bei meinem Laptop wo mir das falsche Ergebnis lieferte)

Vielen Dank für eure Hilfe!!
Pu5h1
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 31.05.2015, 16:32     Titel: Re: Eigenwerte und Eigenvektoren
  Antworten mit Zitat      
Hallo Pu5h1,

Ich verstehe noch nicht, mit welchen Methoden unter welcher Matlab-Version die falschen Ergebnisse erzeugt wurden.

Zitat:
2. Geben Sie die Resultate exakt an (mit Brüchen bzw. Wurzeln, ohne Rundung)

Dieses Detail tritt bei den gezeigten Lösungen noch nicht auf, oder?

Was genau bedeutet "das Ergebnis ist falsch"?

Code:
A=[6 10 2; 10 -15 -5; 2 -5 9];
[V, W]=eig(A);
D = diag(W);

A * V(:, 1) - D(1) * V(:, 1)
A * V(:, 2) - D(2) * V(:, 2)
A * V(:, 3) - D(3) * V(:, 3)

Welche Werte erhälst Du so?

Weclhe Möglichkeiten kann es denn für diese Beobachtung geben?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Pu5h1
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 31.05.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.05.2015, 18:46     Titel:
  Antworten mit Zitat      
Hallo Jan S

Die Versionen stimmen alle miteinander überein. (Version 8.3.0.532 (R2014a))

Die Aufgabe zwei habe ich nicht gelöst, es handelt sich nur um die Aufgabe eins.

Auf meinem Laptop und dem Tablet meines Kollegen bekommen wir folgende Lösung für die Eigenvektoren:

v =

0.3651 -0.0845 0.9271
-0.9129 -0.2278 0.3388
-0.1826 0.9700 0.1603


Auf seinem Computer und in den Lösungen (der Uni) stehen aber folgende Eigenvektoren:

v =

-0.3651 0.9153 -0.1702
0.9129 0.3879 0.1273
0.1826 -0.1089 -0.9771


Die Eigenwerte sind bei allen Situationen korrekt/stimmen überein und sind folgende:
w=

-20.0000 0 0
0 10.0000 0
0 0 10.0000



Ich weiss nicht wie diese zwei verschiedenen Resultate zustande kommen können, da die Version und die Eingaben genau dieselben sind...


Vielen Dank für deine Hilfe!
Pu5h1
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 01.06.2015, 00:20     Titel:
  Antworten mit Zitat      
Hallo Pu5h1,

Und auf welchen Prozessoren und Betriebssystem werden die Ergebnisse produziert?

EIG bestimmt ja nicht die Eigenwerte im mathematischen Sinn, sondern berechnet sie näherungsweise numerisch. Nun haben numerische Verfahren nur eine begrenzte Stabilität, so dass minimale Rundungsfehler zu unterschiedlichen Ergebnissen führen können.
Wenn man jetzt noch bedenkt, was die Eigenvektoren sind und einem auffällt, dass sie bei der Test-Matrix senkrecht aufeinander stehen und zwei Eigenwerte identisch sind, kommt man zu dem Schluss, dass beide Lösungen richtig sind. Versuche einfach mal den Code laufen zu lassen, den ich gepostet habe. Wenn die Eigenwert-Gleichungen gelöst werden (mit der gegebenen numerischen Toleranz), sind die Ergebnisse "richtig" - aber halt einfach nicht eindeutig.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Pu5h1
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 31.05.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.06.2015, 09:13     Titel:
  Antworten mit Zitat      
Guten Morgen Jan

Bei mir läuft es mit Windows 8.1 (64-Bit), auf einem Intel(R) Core(TM) i7-4700MQ CPU @ 2.40GHz
Bei meinem Kollegen müsste ich kurz nachfragen, auf dem Tablet hat er aber sicher auch Windows 8 und es ist das Surface Pro.


Ein Rundungsfehler wird es nicht sein denke ich. Sonst wäre die Matrix, die ich bekomme nicht so föllig daneben, oder?

Ich denke, senkrecht aufeinander stehen könnten diese zwei Lösungen. Aber ich liess dies kurz ploten (hoffentlich richtig) und sehe nichts senkrecht aufeinander:

Code:
A=[6 10 2; 10 -15 -5; 2 -5 9];
[V, W]=eig(A)
D = diag(W)

A * V(:, 1) - D(1) * V(:, 1)
A * V(:, 2) - D(2) * V(:, 2)
A * V(:, 3) - D(3) * V(:, 3)

plot3(V(:, 1), V(:, 2), V(:, 3), 'b')
hold on

Z=[-0.3651 0.9153 -0.1702; 0.9129 0.3879 0.1273; 0.1826 -0.1089 -0.9771] % Lösung der Uni


plot3(Z(:, 1), Z(:, 2), Z(:, 3), 'r')




Mit deinem Code erhalte ich folgende drei Werte:

ans =

1.0e-14 *

0.1776
-0.7105
-0.1776


ans =

1.0e-15 *

0
0.4441
0


ans =

1.0e-14 *

-0.5329
0.0444
-0.0444


Gruss
Pu5h1
Private Nachricht senden Benutzer-Profile anzeigen
 
Pu5h1
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 31.05.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.06.2015, 11:48     Titel: Antwort gefunden
  Antworten mit Zitat      
Hallo Jan

Nach abklärung mit dem Dozenten habe ich hier nun seine Antwort auf die Unklarheiten meinerseits. Folgend poste ich dir, falls es dich interessiert, seine Antwort:




Zunächst erkennen Sie ja richtig, dass Ihnen Matlab bei einer symmetrischen Matrix einen Satz von orthogonalen, normierten Vektoren liefert. Der Eigenwert 10 ist aber doppelt. Also gehört dazu eine ganze Ebene von Eigenvektoren, alles was senkrecht zu v1 (=w1) steht. Die von Matlab numerisch bestimmten Vektoren v2 und v3 liegen zwar in dieser Ebene, sehen aber nicht sehr appetitlich aus. Um "schönere" Komponenten zu erhalten, können Sie mit dem Eigenwert 10 das Eigenvektorproblem A*v=10*v lösen, bzw. (A-10*E)*v=0. Mit rref([A-10*eye(3)]) erhalten Sie die Bedingung x1-2.5x2-0.5x3=0, wobei zwei Parameter (x2 und x3) beliebig sind. Mit x2=2 und x3=0 finden Sie so den Vektor [5 2 0]'. Den dritten finden Sie entweder mit x2=0 und x3=2 und anschliessender Schmidt'scher Orthogonalisierung, oder einfacher aus dem Vektorprodukt von w1 und w2.

In einer Ebene ist es immer möglich, bei einem Vektor mindestens eine Komponente zu 0 zu machen.







Ich danke dir vielmals, dass du dir für mich Zeit genommen hast und dich meiner Frage gewidmet hast!

Freundliche Grüsse
Pu5h1
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 06.06.2015, 14:23     Titel:
  Antworten mit Zitat      
Hallo Pu5h1,

Zitat:
Ein Rundungsfehler wird es nicht sein denke ich. Sonst wäre die Matrix, die ich bekomme nicht so föllig daneben, oder?

Doch, genau das können Rundungsfehler bewirken, wenn das Problem im mathematischen Sinne nicht eindeutig ist. Wenn es verschiedene gültige Lösungen gibt können kleinste Rundungen dazu führen, dass verschieden Lösungen berechnet werden.

Wie die Gegenprobe ergab, ist Deine Lösung ja richtig! Die Ergebnisse der Residuen in der Größenordnung 1e-14 zeigen klar, dass die gefundenen Eigenvektoren das Problem lösen.

Man kann an diesem Beispiel viel über Numerik lernen: Zu dem mehrfachen Eigenwert gehörte eine Ebene von Eigenvektoren. Also sind die eigentlichen vektoen gar nicht mehr eindeutig bestimmt. Wenn man nun einfach nur EIG verwendet und dies nicht bedenkt, kann man sich sehr wundern, dass zwei verschieden Rechner unterschiedliche "Lösungen" bestimmen. In diesem Fall lässt sich das Problem noch leicht analysieren. Wenn man aber z.B. an eine Gesamt-Fahrzeug-Simulation denkt, bei der komplexe Systeme mechanisch und dynamisch zusammen wirken, kann es zu sehr verblüffenden Ergebnissen führen.
Genau das ist das Kern-Problem der Numerik. Man löst mal eben eine Differentialgleichung mit einem Integrator und vergisst die Natur der DGL zu analysieren. Vielleicht gibt es Unstetigkeiten, die DGL kann steif sein, oder sehr empfindlich gegenüber den Anfangswerten. Man bekommt trotzdem ein "Ergebnis", aber das ist nicht unbedingt eine realistische "Lösung". Man kann z.B. einen Bleistift simulieren, der stundenlang stabil auf seiner Spitze steht. Mit der Realität hat das dann nichts mehr zu tun! Es ist also keine validierbare Integration, sondern bei der Idealisierung als mathematisches Modell sind wichtige physikalische Hintergründe verloren gegangen.

Das Beispiel mit dem Integrator und der Gesamt-Fahrzeug-Simulation ist übrigens real: Ein großer deutscher Automobil-Produzent hat für einen Integrator einen Schrittweiten-Schätzer verwendet, der nicht zur Natur des Problems passte und deshalb über längere Zeit groben Unfug zusammen simuliert. Leider merkt man das den "Lösungen" nicht an. Und deshalb ist Numerik eine Wissenschaft und nicht nur ein großer Taschenrechner.

Insofern war diese Aufgabe also sehr gut, gerade weil unterschiedliche Ergebnisse dabei heraus kamen!

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Pu5h1
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 31.05.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.06.2015, 15:35     Titel:
  Antworten mit Zitat      
Was für mich trotzdem immer noch nicht klar erscheint ist, dass wir auf zwei verschiedenen Rechnern zwei verschiedene Resultate bekamen.
Matlab sollte doch das selbe Resultat ausspucken?
Die Einstellungen des Matlabs wurden nicht geändert, es laufen beide auf dem Windows 8, 64 Bit, etc.

Gruss
Pu5h1
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.