Beispiel 1 ¶
Gegeben sei die Matrix $A \in \mathbb{R}^{4 \times 4}$: $$A := \begin{pmatrix} 1 & 2 & 47 & 11\ 3 & 2 & 8 & 15\ 0 & 0 & 3 & 1\ 0 & 0 & 8 & 1 \end{pmatrix}$$
Jordannormalform bestimmen ¶
1. Charakteristisches Polynom berechnen: $p_A(\lambda) = (\lambda - 5) \cdot (\lambda - 4) \cdot (\lambda + 1)^2$.
(→ Wolfram|Alpha und „Wie berechnet man das charakteristische Polynom?“)
Daraus folgt:
- $\lambda = 5$ ist Eigenwert mit der algebraischen Vielfachheit 1.
- $\lambda = 4$ ist Eigenwert mit der algebraischen Vielfachheit 1.
- $\lambda = -1$ ist Eigenwert mit der algebraischen Vielfachheit 2.
Es gibt also genau drei Jordan-Blöcke in der Jordannormalform. Zwei davon haben die Kantenlänge 1 und deshalb nur ein Jordan-Kästchen.
2. Anzahl der Jordankästchen bestimmen:
\begin{align} \dim \text{Eig}(-1) &= \dim \text{Kern}(A +1 \cdot I) \ &= \dim \text{Kern} \begin{pmatrix} 2 & 2 & 47 & 11\ 3 & 3 & 8 & 15\ 0 & 0 & 4 & 1\ 0 & 0 & 8 & 2 \end{pmatrix}\ &= \dim \text{Kern} \begin{pmatrix} 1 & 1 & 1.5 & 0\ 1 & 1 & -3 & 13\ 0 & 0 & 1 & \frac{1}{4}\ 0 & 0 & 0 & 0 \end{pmatrix}\ &= \dim \text{Kern} \begin{pmatrix} 1 & 1 & 1.5 & 0\ 0 & 0 & -4.5 & 13\ 0 & 0 & 1 & \frac{1}{4}\ 0 & 0 & 0 & 0 \end{pmatrix}\ &= \dim \text{Kern} \begin{pmatrix} 1 & 1 & 1.5 & 0\ 0 & 0 & 0 & 14 \frac{1}{8}\ 0 & 0 & 1 & \frac{1}{4}\ 0 & 0 & 0 & 0 \end{pmatrix}\ &= \dim \text{Kern} \begin{pmatrix} 1 & 1 & 0 & 0\ 0 & 0 & 0 & 0\ 0 & 0 & 1 & 0\ 0 & 0 & 0 & 1 \end{pmatrix} = \dim \left [ \begin{pmatrix}1\-1\0\0 \end{pmatrix}\right ]\ &= 1 \end{align}
Es gibt im Jordanblock zu \begin{align} \dim \text{Eig}(1) &= \dim \text{Kern}(A-E)\ &= \dim \text{Kern }\begin{pmatrix} -2 & -2 & 2 & 2\ 2 & -1 & 1 & 1\ 2 & 1 & -1 & -1\ 0 & -2 & 2 & 0 \end{pmatrix}\ &= \dim \text{Kern }\begin{pmatrix} 1 & 1 & -1 & -1\ 0 & -3 & 3 & 3\ 0 & -1 & 1 & 1\ 0 & 1 & -1 & 0 \end{pmatrix}\ &= \dim \text{Kern }\begin{pmatrix} 1 & 0 & 0 & -1\ 0 & 1 & -1 & 0\ 0 & 0 & 0 & 0\ 0 & 0 & 0 & 1 \end{pmatrix} \ &= \dim \left [\begin{pmatrix}0\1\1\0\end{pmatrix} \right ] = 1 \end{align} $$J_B = \begin{pmatrix} -1 & 0 & 0 & 0\ 0 & -1 & 0 & 0\ 0 & 0 & 1 & 1\ 0 & 0 & 0 & 1 \end{pmatrix}$$ \begin{align}K_2(1) &= \text{Kern}(\Omega(1)^2) \ &= \text{Kern }\begin{pmatrix} -2 & -2 & 2 & 2\ 2 & -1 & 1 & 1\ 2 & 1 & -1 & -1\ 0 & -2 & 2 & 0 \end{pmatrix}^2 \ &= \text{Kern }\begin{pmatrix} 4 & 4 & -4 & -4\ -4 & 0 & 0 & 4\ -4 & -4 & 4 & 4\ 0 & 4 & -4 & 0 \end{pmatrix}\ &= \text{Kern }\begin{pmatrix}\ 1 & 0 & 0 & -1\ 0 & 1 & -1 & 0\ 0 & 0 & 0 & 0\ 0 & 0 & 0 & 0 \end{pmatrix} \ &= \left [ \begin{pmatrix}0\1\1\0\end{pmatrix}, \begin{pmatrix}1\0\0\1\end{pmatrix} \right ] \end{align}K_2(1)\begin{align} \Omega &= \begin{pmatrix} 0 & 0 & -1 & -1\ -1 & -1 & 0 & 0\ 0 & 0 & 1 & 1\ 1 & 1 & 0 & 0 \end{pmatrix}\ \Omega^2 &= \begin{pmatrix} -1 & -1 & -1 & -1\ 1 & 1 & 1 & 1\ 1 & 1 & 1 & 1\ -1 & -1 & -1 & -1 \end{pmatrix}\ \Omega^3 &= \begin{pmatrix} 0 & 0 & 0 & 0\ 0 & 0 & 0 & 0\ 0 & 0 & 0 & 0\ 0 & 0 & 0 & 0 \end{pmatrix} \end{align}.
\begin{align} \text{Eig}(1) &= K_1(1) = \text{Kern}(\Omega) \ &= \text{Kern} \begin{pmatrix} 1 & 1 & 0 & 0\ 0 & 0 & 0 & 0\ 0 & 0 & 1 & 1\ 0 & 0 & 0 & 0 \end{pmatrix}\ &= \left [ \begin{pmatrix}1\-1\0\0\end{pmatrix}, \begin{pmatrix}0\0\1\-1\end{pmatrix} \right ] \end{align} \begin{align} K_2(1) &= \text{Kern}(\Omega^2) \ &= \text{Kern} \begin{pmatrix} 1 & 1 & 1 & 1\ 0 & 0 & 0 & 0\ 0 & 0 & 0 & 0\ 0 & 0 & 0 & 0 \end{pmatrix}\ &= \left [ \begin{pmatrix}1\-1\0\0\end{pmatrix}, \begin{pmatrix}1\0\-1\0\end{pmatrix}, \begin{pmatrix}1\0\0\-1\end{pmatrix} \right ]\ K_3(1) &= \text{Kern}(\Omega^3) = \mathbb{R}^4\ \end{align}
$K_3(1) = \mathbb{R}^4$ ist das größte Jordankästchen von der Größe 3. Damit ergibt sich folgende Jordannormalform:
$$J = \begin{pmatrix} 1 & 0 & 0 & 0\ 0 & 1 & 1 & 0\ 0 & 0 & 1 & 1\ 0 & 0 & 0 & 1 \end{pmatrix}$$
Basiswechselmatrix bestimmen ¶
Für jedes Jordankästchen der Länge $i$ muss nun 1 Vektor gewählt werden und $i-1$ Vektoren müssen bestimmt werden. Dafür muss $\Omega(\lambda) := C - \lambda \cdot E$ bestimmt werden.
Eigenwert 1: Kästchengröße 3 $$b_1 \in K_3(1) \land b_1 \notin K_2(1) \Rightarrow b_1 \in \left [ \begin{pmatrix}1\0\0\0\end{pmatrix} \right ]$$ Wähle $$b_1 = \begin{pmatrix}1\0\0\0\end{pmatrix}$$
$$b_2 = \Omega(b_1) = \begin{pmatrix}0\-1\0\1\end{pmatrix}$$
$$b_3 = \Omega^2(b_1) = \Omega(b_2)= \begin{pmatrix}-1\1\1\-1\end{pmatrix}$$
Kästchengröße 1 $$b_4 = \begin{pmatrix}1\-1\0\0\end{pmatrix}$$
Das 1-er Kästchen soll zuerst kommen, also muss $b_4$ zuerst in die Basiswechselmatrix. Unsere gesuchte Matrix $S$ für die oben angegebene JNF ist also: $$S = \begin{pmatrix} b_4 & b_3 & b_2 & b_1 \end{pmatrix} = \begin{pmatrix} 1 & -1 & 0 & 1\ -1 & 1 & -1 & 0\ 0 & 1 & 0 & 0\ 0 & -1 & 1 & 0 \end{pmatrix}$$
Nun sollte $J = S^{-1} \cdot C \cdot S$ gelten. Also, Schritt für Schritt:
\begin{align} S^{-1} \cdot C \cdot S &= \begin{pmatrix} 0 & -1 & 0 & -1\ 0 & 0 & 1 & 0\ 0 & 0 & 1 & 1\ 1 & 1 & 1 & 1 \end{pmatrix} \cdot \begin{pmatrix} 1 & 0 & -1 & -1\ -1 & 0 & 0 & 0\ 0 & 0 & 2 & 1\ 1 & 1 & 0 & 1 \end{pmatrix} \cdot \begin{pmatrix} 1 & -1 & 0 & 1\ -1 & 1 & -1 & 0\ 0 & 1 & 0 & 0\ 0 & -1 & 1 & 0 \end{pmatrix}\ &= \begin{pmatrix} 0 & -1 & 0 & -1\ 0 & 0 & 2 & 1\ 1 & 1 & 2 & 2\ 1 & 1 & 1 & 1 \end{pmatrix} \cdot \begin{pmatrix} 1 & -1 & 0 & 1\ -1 & 1 & -1 & 0\ 0 & 1 & 0 & 0\ 0 & -1 & 1 & 0 \end{pmatrix} \ &= \begin{pmatrix} 1 & 0 & 0 & 0\ 0 & 1 & 1 & 0\ 0 & 0 & 1 & 1\ 0 & 0 & 0 & 1 \end{pmatrix} \end{align}
Programmierung ¶
Hier habe ich mal für Leute, die kein Python haben, als Kommentar das Ergebnis präsentiert. Ich denke damit ist klar, welchen Einfluss die Reihenfolge der Basisvektoren hat.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import numpy
from numpy import linalg
numpy.set_printoptions(precision=2, suppress=True, linewidth=120)
C = [[1, 0, -1, -1], [-1, 0, 0, 0], [0, 0, 2, 1], [1, 1, 0, 1]]
C = numpy.matrix(C)
b1 = [1, 0, 0, 0]
b2 = [0, -1, 0, 1]
b3 = [-1, 1, 1, -1]
b4 = [1, -1, 0, 0]
S = numpy.matrix([b4, b1, b2, b3]).transpose() # [[ 1 0 0 0]
print("4123") # [ 0 1 0 0]
print(linalg.inv(S) * C * S) # [ 0 1 1 0]
# [ 0 0 1 1]]
S = numpy.matrix([b4, b1, b3, b2]).transpose() # [[ 1 0 0 0]
print("4132") # [ 0 1 0 0]
print(linalg.inv(S) * C * S) # [ 0 0 1 1]
# [ 0 1 0 1]]
S = numpy.matrix([b4, b2, b1, b3]).transpose() # [[ 1 0 0 0]
print("4213") # [ 0 1 1 0]
print(linalg.inv(S) * C * S) # [ 0 0 1 0]
# [ 0 1 0 1]]
S = numpy.matrix([b4, b2, b3, b1]).transpose() # [[ 1 0 0 0]
print("4231") # [ 0 1 0 1]
print(linalg.inv(S) * C * S) # [ 0 1 1 0]
# [ 0 0 0 1]]
S = numpy.matrix([b4, b3, b1, b2]).transpose() # [[ 1 0 0 0]
print("4312") # [ 0 1 0 1]
print(linalg.inv(S) * C * S) # [ 0 0 1 0]
# [ 0 0 1 1]]
S = numpy.matrix([b4, b3, b2, b1]).transpose() # [[ 1 0 0 0]
print("4321") # [ 0 1 1 0]
print(linalg.inv(S) * C * S) # [ 0 0 1 1]
# [ 0 0 0 1]]
S = numpy.matrix([b3, b2, b1, b4]).transpose() # [[ 1 1 0 0]
print("3214") # [ 0 1 1 0]
print(linalg.inv(S) * C * S) # [ 0 0 1 0]
# [ 0 0 0 1]]