Polyeig() vs eig() in Matlab

Erste Frage Aufrufe: 154     Aktiv: 22.07.2024 um 22:37

1

Hallo zusammen,

meine Frage ist vielleicht eher aus der Richtung Ingenieurwesen. Ich möchte die Eigenwerte eines Masse-Feder System berechnen, mit den folgenden Matrizen: 

M = 
1000 0 0

0 3000 0

0 0 1000

C=

70 -1000 0

-70 1140 -70
0 -1000 70

Mit der funktion polyeig(), welches ein polynomielles Eigenwertproblem löst, wurde mir beigebracht, der korrekte code sei:
[EV,EW] = polyeig(C, zeros(3),M);

Mit der funktion eig(), sollte der code ohne eine Nullmatrix anstelle der Dämpfermatrix zu lösen sein:
[V,W] = eig(C,M);
W = sqrt(diag(W)) %Wurzel, weil quadrierte Eigenwerte zurückgegeben.

Vielleicht kann mir jemand von euch erläutern, wieso hier die folgenden Eigenwerte der beiden Methoden heraus kommen ?
W = 0.7006 + 0.0000i 0.2646 + 0.0000i 0.0000 + 0.2022i EW = -0.2022 + 0.0000i -0.0000 + 0.2646i 0.0000 + 0.7006i

Wie ihr seht sind imaginär und Realteil, je nachdem welche Methode ich benutze, vertauscht. Wieso passiert das?
Wende ich eine falsche Methode an? Über Hilfe währe ich sehr dankbar :)

Viele Grüße

 

gefragt

Punkte: 17

 
Kommentar schreiben
1 Antwort
1
Ohne Deine Gleichung zu kennen ist es schwierig was zu sagen.
In der MATLAB-Hilfe für polyeig wird
$My''+Cy'+Ky$ betrachtet, mit Massenmatrix $M$, Dämpfungsmatrix $C$, Steifigkeitsmatrix $K$.
Dafür sei der richtige Befehl $\tt polyeig(K,C,M)$. Probiere das mal mit $K=0$ und überprüfe Deine Bezeichnungen.
Für weiteres bitte die Gleichung hochladen (oben "Frage bearbeiten"). Und nächstes Mal gerne auch die Matrizen in MATLAB-Notation.
Diese Antwort melden
geantwortet

Lehrer/Professor, Punkte: 39.94K

 

Hallo Mikn,

die Gleichung sieht genauso aus, wie du sie beschrieben hast, bis auf den Unterschied, dass mein C dein K ist und dein C eine Matrix B, also: My'' + By' + Cy = 0. Mir wurde eben nur gesagt, dass wenn ich die Eigenwerte des ungedämpften System (B = 0) mit polyeig() berechnen möchte, ich anstelle von B, zeros(3) einsetzen müsse, sodass polyeig() auch drei Matrizen übergeben bekommt. In diesem Fall sollte dann das Gleiche herauskommen wie mit eig(C,M). Das tut es aber nicht und daher meine Frage, ob das überhaupt sein kann, was von meinem Dozenten behauptet wird.
  ─   maschbauer2024 22.07.2024 um 20:46

Ok, hab's jetzt: Für Deine Anwendung brauchst Du polyeig(C,0,M), das sagt auch die MATLAB-Hilfe, das passt also. D.h. es gilt für die EV/EW: $(M\lambda^2+C)x=0$. Vergleichen wir das nun mit eig(-C,M) (Achtung: -C!), das bedeutet: $-Cx=\lambda Mx$, also: $(M\lambda +C)x=0$. D.h. die Wurzeln der EW aus eig(-C,M) sind die EW aus polyeig(M,0,C).
Und das kann man auch mit MATLAB so nachrechnen (hab ich gemacht).
Danke für die Frage, hab auch was gelernt dabei.
  ─   mikn 22.07.2024 um 21:37

Vielen Dank, das passt bei mir auch so. Das Minus haben meine Dozenten nicht erwähnt.
Viele Grüße
  ─   maschbauer2024 22.07.2024 um 22:37

Kommentar schreiben