Hallo,
ich habe hier eine Stabilitätsmatrix und es geht um den Spektralradius von M(z). A-stabilität gilt bei dieser Stabilitätsmatrix wenn der Spektralradius (also betragsmäßig größter Eigenwert) von M(z)<1 ist für alle z aus mit Re(z)<0,welche also einen negativen Realteil haben. Nun habe ich hier eine 2x2 Matrix mit ein reellen Koeffizienten, außer dem komplexen Parameter z. Ich möchte berechnen, bzw. mit einer Mathematiksoftware berechnen, für welche Koeffizientenkombinationen von a und b die A-Stabilität gilt. Also sozusagen eine Art Plot von (a,b) Kombinationen, die diese Bedingung erfüllen, dass gerade der betragsmäßg größte Eigenwert der Matrix kleiner 1 ist für alle z mit negativem Realteil. Ich steh da im Moment leider auf dem Schlauch, hat jemand vielleicht eine Idee? a und b sind natürlich freie relle Parameter.
Grade kein Matlab zur Hand aber sollte sich doch relativ "einfach" damit lösen lassen: Formeln für die Eigenwertberechnung in Matlab einspeisen und losrechnen lassen. Dabei halt definieren, dass z=x+jy und fertig sollte das sein. Möglicherweise kriegt man das mit bissel Aufwand sogar von Wolfram Alpha gelöst, aber ich glaube mit Matlab kommt man am schnellsten zur Lösung.
Falls ich grade was essentielles übersehe, dann sry Arbeitstag war lang und ist schon 2-3 Jahre her, seitdem ich sowas im Studium hatte.
Hallo,
ich habe leider bisher keine Erfahrung mit Matlab sammeln können.
Aber auch so verstehe ich gerade leider nicht ganz wie du das genau meinst:
Also ich soll quasi eine Funktion schreiben die den Eigenwert berechnet oder ist diese nicht schon in Matlab vorhanden? Problem ist halt dass ich kein konkretes Ergebnis will. Ich will, dass Matlab sozusagen annimmt, dass der Realteil der komplexen Zahl z negativ ist und er mir raushaut für welche a und b der maximale Eigenwert kleiner als 1 ist. Ich darf ja dann quasi keine konkreten Werte in die Funktion eingeben. Hattest du das auch so verstanden? Weil dann steh ich evtl einfach auf dem Schlauch sry
Wenn ihr Matlab an der Uni habt, dann solltest du das einfach mal ausprobieren. Die Formel für den Eigenwert einer Matrix kannst du ja sicher aufstellen. Dabei die Matrix dann in der Form mit 4 Variablen deklarieren und diese 4 Variablen in der Formel verwenden. Dann kannst du diese 4 Variablen (nennen wir sie mal A,B,C und D) durch die Werte deiner Matrix definieren. Dann noch z als Komplexe Zahl definieren und a, b als reelle. Dann kannst du Matlab rechnen lassen und es gibt dir dann alles in Abhängigkeit der Variablen an.
Ohne Matlab bzw ein äquivalentes programm wüsste ich nicht, wie man da sonst rangehen soll. Ist halt hauptsächlich das aufstellen der Formel, diese dann in Matlab eingeben und die Variablen deklarieren.
Also erstmal vielen Dank dafür, dass du dir die Mühe machst mir zu helfen, das weiß ich zu schätzen.
Also wenn wir eine 2x2 Matrix haben (oben links a, oben rechts b, unten links c und unten rechts d),
dann sieht das allgemeine Charakteristische Polynom wie folgt aus:
lambda^2-(a+d)*lambda-cb=0 (hab es gleich null gesetzt wegen den Eigenwerten die man raushaben will)
darauf wird ja dann die pq formel angewendet um die Lösungen zu erhalten:
(a+d)/2 +- Wurzel aus (((a+d)/2)^2+cb)
nun haben wir aber natürlich komplexe einträge in der matrix und der eigenwert muss kleiner 1, also wird die pq formel etwas konkretisiert in dem wir den betrag darum setzen und <1 , also
| (a+d)/2 +- Wurzel aus (((a+d)/2)^2+cb) |<1 .... kann man das so programmieren? im grunde ist das ja mehr oder weniger eine optimierungsaufgabe wo zulässige lösungen in abhängigkeit von z berechnet werden sollen
Lässt sich in Matlab meiner Meinung nach alles problemlos so machen. Hab leider keines mehr zur Hand ums selbst mal fix zu machen (dachte ich hab noch eins auf meinem PC zu Hause), aber ich sehe nicht was dagegen sprechen sollte. Grade für sowas fand ich Matlab immer sehr praktisch, weil man sich halt viel Aufwand sparen kann, wenn die eigenen Ansätze stimmen.
Also ich habe die entsprechende Matrix definiert. a und b sind dabei reelle Koeffizienten und z natürlich komplex.
Nun gibt es ja die Funktion eig() in Matlab, die die Eigenwerte berechnet. Wenn ich diese Funktion auf M anwende, dann bekomme ich 2 Eigenwerte mit einer ziemlich langen Lösung, was ja nicht verwunderlich ist, da die Lösung in Abhängigkeit von den freien Variablen steht.
Nun weiß ich aber nicht wie ich für die Ungleichung "Eigenwerte kleiner 1" zulässige Lösungen von a und b bekomme wenn für z nur gilt, dass der Realteil negativ wird, also z keinen konkreten Wert haben darf.
Also das mit dem negativen Realteil von z kannst du ja so realisieren: z=x+jy; x<0 mit definieren. Das sollte dein Problem lösen oder?
Btw wenn es funktioniert, würde mich das Ergebnis interessieren, ist bissel her das ich mich konkret mit sowas beschäftigt habe ![]()
/edit: Mir fällt grade auf, dass es korrekt heißen müsste: z=x+iy; x<0, das mit dem j kommt durch die E-Technik
Danke, das mit dem realisieren vom negativen Realteil hat geklappt.
Aber ich weiß leider nicht mit welcher Funktion ich das Problem lösen kann.
Im Grunde ist das ja ein Optimierungsproblem.
Also jetzt mal ganz vereinfacht angenommen ich habe so eine Ungleichung wie diese hier:
|z+a+b|<1 ... dann ist die lösungsmenge natürlich leer, es gibt keine (a,b) Kombination, für die die Ungleichung gilt, wenn z für die komplexe linke Halbebene (realteil ist ja negativ) steht. Weißt du vielleicht mit welcher Funktion in Matlab solche Probleme berechnet werden?
Kannst du das nicht noch als Ungleichung mit Einfügen? Also eig(...) < 1 ? Bzw halt das Ergebnis als solches einfach kleiner 1 festsetzen?
Wobei ich mir unsicher bin inwiefern das ganze dadurch noch mehr aufgelöst wird. Dafür fehlen bei den paar Gleichungen halt Informationen, es gibt zu viele Unbekannte. Probieren würde ich es trotzdem.
leider klappt das nicht....aber mehr Informationen über die Ungleichung habe ich leider nicht zur Verfügung
Grade noch eine andere Idee. Wenn man sich 2 der Werte anschaut, kann man die als x und -x definieren. Möglicherweise kann man den letzten in eine ähnliche Form bringen (im Kopf viel mir auf die schnelle zwar nichts ein, aber mit ein bisschen umformen könnte da schon etwas ähnliches herauskommen).
Mehr fällt mir auf die schnelle jetzt auch nicht ein. Kannst ansonsten ja mal einen Screenshot posten, was Matlab bisher ausgespuckt hat, vielleicht kommt mir dann noch ne Idee.
