Für diejenigen mit einem kleinen linearen Algebra-Hintergrund ist die Herausforderung so einfach: Bestimmen Sie die Eigenwerte und Eigenvektoren einer gegebenen komplexen 2x2-Matrix. Sie können mit The Challenge fortfahren, um E / A-Details usw. zu erhalten. Lesen Sie weiter, wenn Sie eine kleine Auffrischung der Eigensysteme benötigen.
Hintergrund
Die charakteristische Gleichung einer Matrix A ist definiert durch
det| A - λI | = 0
wobei λ ein komplexer (skalarer) Parameter ist, ist I die Identitätsmatrix und det | ... | ist die Determinante . Die linke Seite ergibt ein Polynom in λ , das charakteristische Polynom , das bei 2x2-Matrizen quadratisch ist. Die Lösungen dieser charakteristischen Gleichung sind die Eigenwerte von A , die wir als λ 1 und λ 2 bezeichnen werden .
Nun erfüllen die Eigenvektoren v i von A.
A vi = λi vi
Für jedes λ i erhalten Sie ein System aus zwei Gleichungen in zwei Unbekannten (den Komponenten von v i ), das recht einfach gelöst werden kann. Sie werden feststellen, dass das System tatsächlich unterbestimmt ist und die Größe der Eigenvektoren nicht durch die Gleichungen bestimmt wird. Wir wollen normalerweise, dass die Eigenvektoren normalisiert werden, dh √ (| x | 2 + | y | 2 ) = 1 , wobei x und y die Vektorkomponenten | x | sind 2 ist x multipliziert mit seinem komplexen Konjugat.
Es ist zu beachten, dass die Eigenwerte entartet sein können, dh λ 1 = λ 2 . In diesem Fall können Sie möglicherweise das einzelne Gleichungssystem mit zwei linear unabhängigen Eigenvektoren erfüllen oder nicht.
Die Herausforderung
Bestimmen Sie bei einer 2x2-Matrix mit komplexen Elementen ihre zwei (möglicherweise identischen) Eigenwerte und einen normalisierten Eigenvektor für jeden Eigenwert. Die resultierenden Zahlen müssen auf mindestens 3 (dezimale) signifikante Stellen genau sein. Sie können davon ausgehen, dass der Real- und Imaginärteil eines Matrixelements im Bereich [-1,1] liegt .
Sie können eine Funktion oder ein Programm schreiben und Eingaben über STDIN, Befehlszeilenargument, Eingabeaufforderung oder Funktionsargument vornehmen. Sie können das Ergebnis an STDOUT, ein Dialogfeld oder als Funktionsrückgabewert ausgeben.
Sie können für die Eingabe und Ausgabe ein beliebiges geeignetes (aber eindeutiges) Zeichenfolgen- oder Listenformat verwenden. Sie können auch zwischen Float-Paaren oder komplexen Typen wählen, um die einzelnen Zahlen darzustellen.
Sie dürfen keine integrierten Funktionen zum Lösen von Eigensystemen (wie Mathematica Eigenvectors
oder Eigensystem
) oder Gleichungslösern verwenden.
Dies ist Code Golf, daher gewinnt die kürzeste Antwort (in Bytes).
Beispiele
Jedes Beispiel besteht aus drei Zeilen: der Eingabe, den Eigenwerten und den entsprechenden Eigenvektoren in derselben Reihenfolge. Es ist zu beachten, dass die Eigenvektoren nur bis zu ihrer Phase bestimmt werden und dass im Fall von entarteten Eigenwerten die Eigenvektoren tatsächlich willkürlich sein können (wie im ersten Beispiel).
[[1.0, 0.0], [0.0, 1.0]]
[1.0, 1.0]
[[1.0, 0.0], [0.0, 1.0]]
[[0.0, 0.4], [-0.1, -0.4]]
[-0.2, -0.2]
[[0.894427, -0.447214], [0.894427, -0.447214]]
[[0.3, 0.1], [0.4, -0.9]]
[-0.932456, 0.332456]
[[-0.0808731, 0.996724], [0.951158, 0.308703]]
[[0.5, -1.0], [0.8, -0.5]]
[0.74162i, - 0.74162i]
[[0.745356, 0.372678 - 0.552771i], [0.745356, 0.372678 + 0.552771i]]
[[-0.0539222 + 0.654836i, -0.016102 + 0.221334i], [0.739514 - 0.17735i, -0.0849216 + 0.77977i]]
[0.238781 + 0.984333i, -0.377625 + 0.450273i]
[[0.313668 + 0.322289i, 0.893164], [-0.236405 - 0.442194i, 0.865204]]
[[-0.703107 - 0.331792i, 0.286719 - 0.587305i], [-0.418476 + 0.396347i, -0.885934 + 0.50534i]]
[-1.13654 - 0.32678i, -0.4525 + 0.500329i]
[[0.833367, -0.248208 - 0.493855i], [-0.441133 - 0.408236i, 0.799215]]
[[-0.156312 + 0.788441i, 0.045056 - 0.579167i], [0.130741 - 0.97017i, 0.049183 - 0.590768i]]
[-0.181759 + 1.11738i, 0.0746298 - 0.919707i]
[[0.86955, -0.493846 + 0.000213145i], [0.318856 - 0.0181135i, 0.94763]]
quelle