0

Ich benutze den polyeig Befehl in Matlab, um ein Polynomeigenwertproblem der Ordnung 2 in Matlab zu lösen. Ich weiß, dass das System einen einzigen Eigenwert hat (dies liegt an der Form der Nullkoeffizientenmatrix, bei der jedes Diagonalelement -1 mal die Summe der Elemente in derselben Zeile ist, also der Vektor (1 1 1 ... 1)) hat 0 Eigenwert).Erhöhung der Präzision von Polyeig in Matlab

Größe des Systems ist etwa 150 bis 150 Als ich die polyeig die niedrigste Eigenwert I der Bestellung erhalten Befehl ist 1E-4 (die 0 Eigenwert sein soll) und die zweite am niedrigsten ist der Bestellung 1E-1. Wenn die Systemgröße abnimmt, nimmt der niedrigste Eigenwert auf etwas von der Größenordnung 1E-14 ab, was vernünftig ist, aber 1E-4 ist zu viel.

Gibt es trotzdem eine bessere Genauigkeit oder irgendeine andere Bibliothek, die Sie vorschlagen würden? Ich könnte das polynomiale Eigenwertproblem auch auf ein verallgemeinertes Eigenwertproblem in höheren Dimensionen (2 mal die gegebene Dimension) drehen, aber ich bin mir nicht sicher, wie sich dies auf Geschwindigkeit und Genauigkeit auswirkt. Ich würde gerne sehen, ob es eine einfachere Lösung vor der Neuformulierung des Problems gibt. Ich würde daher alle Vorschläge zu diesen Fragen begrüßen.

EDIT: Das Problem ist gelöst, es war eigentlich über die Genauigkeit der INPUT-Datei, die ich verwendet wurde, die nur bis zu 4 Ziffern gedruckt wurde. Wenn man bessere gefunden hat, hat die Präzision zugenommen. Danke auf jeden Fall.

+0

Gute Arbeit! Ich finde oft, dass das Aufschreiben einer detaillierten Frage für StackOverflow mir hilft, das Problem zu finden. Können Sie Ihre Lösung als Antwort posten und akzeptieren? –

Antwort

0

Das Problem stellte sich heraus, dass es sich bei der von mir verwendeten Eingabedatei um nur bis zu 4 Dezimalstellen handelte. Jetzt auch mit Matrizen von 800x800 bekomme ich nur Genauigkeitsprobleme bis e-11, was gut ist.