Hallo,
ich habe folgendes Problem: ich muss ein MatrixExponential einer 3x3 Matrix ausrechnen; das ist einfach die Exponentialfunktion mit einer Matrix als Argument. Mathematica schafft es nicht, weil es die Eigenwerte dieser Matrix nicht herausbekommt.
Vieleicht hat jemand von euch Matlab oder ein and. math. Programm.
Bei Mathematica lautet der Befehl: MatrixExp[A]. A, die 3x3 Matrix, hat die Form:
Der Versuch mit der symbol. Math Toolbox von Matlab schlägt im 1. Anlauf fehl, dann nachgesehen bei: http://mathworld.wolfram.com/MatrixExponential.html
==> Matrix erst diagonalisieren !!!:
Die Diagonalmatrix zu A sei AD:
Hallo,
also, wenn ich diese Matrix versuche zu diagonalisieren, dann kommt etwas anderes heraus, nähmlich eine viel grössere; ich habe sie diagonalisiert mit der JordanDecompostion, dann sieht man auch gleich, ob die Eigenwerte einfach sind, und dort sind die Eigenwerte viel grösser; wie hast du denn diese Matrix diagonalisiert?
viele Grüsse
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo,
die Diagonalmatrix habe ich mit dem Matlab-Kommando erzeugt
AD = diag(diag(A)).
Zitat: „DIAG(X) is the main diagonal of X. DIAG(DIAG(X)) is a diagonal matrix.“ Die Hilfe sagt nichts über den Formalismus, der diag zugrunde liegt.
Der Rang der Matrix A ist lt. Matlab 3.
Die MatrixExponential-Funktion wird via Pade approximation berechnet (Zitat:„See Golub and Van Loan, Matrix Computations, Algorithm 11.3-1.“)
Ratlose Grüsse
Albert
Hallo,
also, wenn ich diese Matrix versuche zu diagonalisieren, dann
kommt etwas anderes heraus, nähmlich eine viel grössere; ich
habe sie diagonalisiert mit der JordanDecompostion, dann sieht
man auch gleich, ob die Eigenwerte einfach sind, und dort sind
die Eigenwerte viel grösser; wie hast du denn diese Matrix
diagonalisiert?
viele Grüsse
die Diagonalmatrix habe ich mit dem Matlab-Kommando erzeugt
AD = diag(diag(A)).
Zitat: „DIAG(X) is the main diagonal of X. DIAG(DIAG(X)) is a
diagonal matrix.“ Die Hilfe sagt nichts über den Formalismus,
der diag zugrunde liegt.
Ich glaube fast ihr zwei redet aneinander vorbei. Was Du hier machst (sofern ich die Erklärung richtig verstehe), die Matrix zu konstruieren, die aus der Diagonale der ursprünglichen Matrix besteht. Das meint man aber mit Diagonalisieren nicht. Diagonalisieren einer quadratischen Matrix bedeutet, dass man eine invertierbare Matrix S „konstruiert“ so dass D := SMS-1 eine Diagonalmatrix ist. Die Einträge sind (falls solch ein S existiert, was nicht immer der Fall ist) genau die Eigenwerte der ursprünglichen Matrix.
Im Zusammenhang mit dem Berechnen des Exponentials einer Matrix ist die diagonalisierte Matrix hilfreich, weil exp(M>:wink:=S-1 exp(D) S gilt. Das Exponential einer Diagonalmatriz lässt sich leicht berechnen, denn man muss einfach die das Exponential der Diagonaleinträge nehmen. Für diagonalisierbare Matrizen erübrigen sich dann oft Approximationsverfahren, wie unten erwähnt:
Der Rang der Matrix A ist lt. Matlab 3.
Die MatrixExponential-Funktion wird via Pade approximation
berechnet (Zitat:„See Golub and Van Loan, Matrix Computations,
Algorithm 11.3-1.“)
Hallo Urs,
Danke für die Aufklärung.
Ich habe jetz versucht, den beschriebenen Weg zu gehen, aber meine Studentenversion von Matlab bricht bei der Berechnung der Eigenwerte der Matrix A ab, weil nur Matrizen bis 16384 Elemente möglich sind !!??
Vielleicht kann es die Vollversion