Eigenwerte und Eigenvektoren

Methoden

Motivation

Der Effekt einer linearen Abbildung, also die Multiplikation eines Vektors \(x\) mit einer Matrix \(A\), ist im Allgemeinen unübersichtlich, d. h. der Output \(Ax\) hängt vom Input auf eine komplizierte Weise ab. Wäre der Effekt eine reine Skalarmultiplikation \(\lambda x\), so wäre der Output eine Umsaklierung (Streckung, Stauchung, Umkehrung) des Inputs \(x\) und deutlich einfacher zu handhaben.

Anwendungen:

  • Entkoppeln von Gleichungen: Dynamische Systeme, Differentialgleichungen (-> Eigenfrequenzen, etc.)
  • Nicht-lineare Optimierung: Kriterium für lokales Maximum bzw. Minimum
  • Hauptachsentransformation, Principal Component Analysis
  • PageRank-Algorithmus von Google
  • Quantenmechanik
  • etc.

Definitionen

Ein Eigenvektor (EV) einer quadratischen \(n\times n\)-Matrix \(A\) ist ein nicht-Null-Vektor \(x \in \mathbb{R}^n\), sodass \[ Ax = \lambda x \] für eine Zahl \(\lambda\) gilt. Die Zahl \(\lambda\) ist der Eigenwert (EW) von \(A\) zum Eigenvektor \(x\).

Achtung: Jedes Vielfache eines Eigenvektors ist wieder Eigenvektor zum selben Eigenwert: \(A(\alpha x) = \alpha Ax = \alpha \lambda x = \lambda (\alpha x)\).

Spektralzerlegung

Wenn man eine Basis des \(\mathbb{R}^n\) aus Eigenvektoren \(v_i \in \mathbb{R}^n, i=1,\ldots,n\) bilden kann, dann heißt \(A\) diagonalisierbar und die Basis Eigenbasis. Man bildet die Matrix \(V\), die die Basis-Eigenvektoren als Spalten hat, und die Diagonalmatrix \(D\) mit den zugehörigen Eigenwerten \(\lambda_i\) auf der Diagonalen. Dann gilt \(AV = A (v_1 | v_2 | \ldots | v_n) = (\lambda_1 v_1 | \lambda_2 v_2 | \ldots | \lambda_n v_n) = VD\), also \[ AV = VD \] und, weil \(V\) als Basisvektoren-Matrix invertierbar ist, durch Umformen \(A = V D V^{-1}\) und \(V^{-1}AV = D\).

Diese Formeln ergeben sich auch aus dem Basiswechsel (Koordinatentransformation) im In- und Outputraum der linearen Abbildung \(y = Ax\). Seinen \(x = Vc\) und \(y = Vd\) mit \(c\) und \(d\) die Koordinaten von \(x\) bzw. \(y\) bzgl. der Eigenbasis \(V\). Dann erhält man durch Einsetzen in \(y = Ax\) und Multiplikation mit \(V^{-1}\): \[ \begin{aligned} Vd & = AVc = VDc \\ d & = V^{-1}AVc = Dc. \end{aligned} \] Die Abbildung, die in Standardkoordinaten die Matrix \(A\) hat, hat bzgl. den angepassten Eigenkoordinaten die Diagonalmatrix \(D\).

Das Auffinden der EW und EV einer quadratischen Matrix \(A\) und die Diagonalisierung \(A = V D V^{-1}\) wird auch Spektralzerlegung von \(A\) genannt. Weitere wichtige Matrixzerlegungen sind

Berechnung

Falls \(x\) ein Eigenvektor von \(A\) zum Eigenwert \(\lambda\) ist, dann gelten: \[ \begin{aligned} Ax & = \lambda x \\ Ax - \lambda x & = 0 \\ Ax - \lambda I x & = 0 \\ (A - \lambda I) x & = 0. \end{aligned} \] Da \(x\) laut Annahme ein nicht-Null-Vektor ist, hat das letzte Gleichungssystem neben der trivialen Lösung des Nullvektors mit \(x\) eine zweite und somit nicht eindeutige Lösung. Daher muss die Determinante der Koeffizientenmatrix Null sein: \[ \det(A - \lambda I) = 0. \] Andernfalls hätte das letzte Gleichungssystem den Nullvektor als eindeutige Lösung. Aus der Bedingung \(\det(A - \lambda I) = 0\) lassen sich alle Eigenwerte berechnen, die auch komplex sein können. Anschließend kann zu jedem Eigenwert \(\lambda\) ein Eigenvektor berechnet werden, indem eine nicht-triviale Lösung von \((A - \lambda) x = 0\) bestimmt wird. Die Bedingung \(\det(A - \lambda I) = 0\) heißt charakteristische Gleichung von \(A\).

Beispiel: \(A = \begin{pmatrix} -2 & -5\\ 1 & 4 \end{pmatrix}\), \(\det(A - \lambda I) = \det\begin{pmatrix} -2 - \lambda & -5\\ 1 & 4 - \lambda \end{pmatrix} = (-2 - \lambda)(4 - \lambda) - (-5) = \lambda^2 - 2\lambda - 3 = 0\) hat die Lösungen \(\lambda_1 = -1\) und \(\lambda_2 = 3\). Das sind die Eigenwerte von \(A\).

  • Eigenwert \(\lambda_1 = -1\): \((A - \lambda_1 I) x = \begin{pmatrix} -1 & -5\\ 1 & 5 \end{pmatrix} x = 0\) hat unendlich viele Lösungen, z. B. \(v_1 = \begin{pmatrix} 5\\ -1 \end{pmatrix}\). \(v_1\) ist ein Eigenvektor von \(A\) zum Eigenwert \(\lambda_1 = -1\).
  • Eigenwert \(\lambda_2 = 3\): \((A - \lambda_2 I) x = \begin{pmatrix} -5 & -5\\ 1 & 1 \end{pmatrix} x = 0\) hat unendlich viele Lösungen, z. B. \(v_2 = \begin{pmatrix} 1\\ -1 \end{pmatrix}\). \(v_2\) ist ein Eigenvektor von \(A\) zum Eigenwert \(\lambda_2 = 3\).

Python

Die zentrale Python-Funktion ist numpy.linalg.eig. Sie liefert die Eigenwerte und Eigenvektoren einer Matrix. Die Eigenwerte werden in einem Vektor und die Eigenvektoren als Matrix mit den zugehörigen Eigenvektoren als Spalten zurückgegeben. Die Eigenvektoren sind auf die Länge 1 normiert, d. h. sie sind Einheitsvektoren.

Für die Beispiele und Aufgaben verwenden wir folgende Python-Bibliotheken, siehe Kapitel Python Tutorial:

Code
import numpy as np
import scipy as sp
import matplotlib.pyplot as plt

Beispiele

Berechnung von EW und EV

Für \(A = \begin{pmatrix} 0.8 & 0.3 \\ 0.2 & 0.7 \end{pmatrix}\) liefert die Bedingung \(\det(A - \lambda I) = 0\) die quadratische Gleichung \(\lambda^2 - 1.5\lambda + 0.5=0\). Deren Lösungen \(\lambda_1=1\) und \(\lambda_2=\frac{1}{2}\) sind die Eigenwerte von \(A\).

  • Die Eigenvektoren zum Eigenwert \(\lambda_1\) sind die Lösungen von \((A - \lambda_1 I)x = 0\), in unserem Beispiel ist das \(\begin{pmatrix} -0.2 & 0.3 \\ 0.2 & -0.3 \end{pmatrix}\begin{pmatrix} x_1 \\ x_2 \end{pmatrix} = \begin{pmatrix} 0 \\ 0 \end{pmatrix}\). Die Eigenvektoren sind alle Vielfachen von z. B. \(\begin{pmatrix} 3 \\ 2 \end{pmatrix}\).
  • Die Eigenvektoren zum Eigenwert \(\lambda_2\) sind die Lösungen von \((A - \lambda_2 I)x = 0\), in unserem Beispiel ist das \(\begin{pmatrix} 0.3 & 0.3 \\ 0.2 & 0.2 \end{pmatrix}\begin{pmatrix} x_1 \\ x_2 \end{pmatrix} = \begin{pmatrix} 0 \\ 0 \end{pmatrix}\). Die Eigenvektoren sind alle Vielfachen von z. B. \(\begin{pmatrix} 1 \\ -1 \end{pmatrix}\).
Code
import numpy as np

A = np.array([[0.8, 0.3],
              [0.2, 0.7]])
L, V = np.linalg.eig(A)
print(f"eigenvalues: {L}")
print(f"matrix with eigenvectors in columns:\n{V}")
eigenvalues: [1.  0.5]
matrix with eigenvectors in columns:
[[ 0.83205029 -0.70710678]
 [ 0.5547002   0.70710678]]

Bevölkerungswachstum

Die Population einer Region zerlegt sich in die Altersgruppen

  • jünger als 20 Jahre
  • 20 bis 39 Jahre und
  • über 40 Jahre.

Dynamisches System: Anfangs ist der Generationenstand durch den Vektor \(x = \begin{pmatrix} x_1\\ x_2 \\ x_3 \end{pmatrix}\) gegeben. Eine Generation später ist die Population durch zwei Effekte verändert:

  • Reproduktion: \(x_1^{\text{neu}} = F_1 x_1 + F_2 x_2 + F_3 x_3\) mit den Fertilitätsraten \(F_k\).
  • Überlebensrate: \(x_2^{\text{neu}} = P_1 x_1\) and \(x_3^{\text{neu}} = P_2 x_2\) mit den Überlebenswahrscheinlichkeiten \(P_k\).

Die Leslie Matrix \(A\) liefert \(x^{\text{neu}}\) für \(x\) via \(x^{\text{neu}}= Ax\). Betrachten Sie folgendes Beispiel: \[ x^{\text{neu}} = \begin{pmatrix} x_1\\ x_2 \\ x_3 \end{pmatrix}^{\text{neu}} = \begin{pmatrix} F_1 & F_2 & F_3 \\ P_1 & 0 & 0 \\ 0 & P_2 & 0 \end{pmatrix}\begin{pmatrix} x_1\\ x_2 \\ x_3 \end{pmatrix} = \begin{pmatrix} .04 & 1.1 & .01 \\ .98 & 0 & 0 \\ 0 & .92 & 0 \end{pmatrix}\begin{pmatrix} x_1\\ x_2 \\ x_3 \end{pmatrix} \]

Aufgaben:

  1. Der Generationenstand sei zu Beginn durch \(x = \begin{pmatrix} .6\\ 1 \\ .8 \end{pmatrix}\) [Mio. Menschen] gegeben. Benutzen Sie Python, um die absoluten und relativen Populationsgrößen aller drei Gruppen für die nächsten 30 Generationen zu berechnen und zu plotten.
  2. Berechnen Sie die Eigenwerte und Eigenvektoren der Leslie Matrix mithilfe des Python Befehls eig, und interpretieren Sie das Resultat. Welcher Eigenwert ist weshalb für die Bevölkerungsentwicklung entscheidend? Wie kann ein zugehöriger Eigenvektor zu diesem Eigenwert zur Prognose der sich abzeichnenden relativen Populationsgrößen verwendet werden?

Lösung:

Code
A = np.array([[0.04, 1.1 , 0.01],
              [0.98, 0   , 0   ],
              [0   , 0.92, 0   ]])
print(A)
(L, V) = np.linalg.eig(A)

for k in range(len(L)):
  print(f"Der Eigenwert {L[k]:.2f} hat den Eigenvektor\n {V[:,[k]]}")

x0 = np.array([[0.6, 1, 0.8]]).T
# x0 = -V[:,[0]]
# x0 = V[:,[1]]
# x0 = V[:,[2]]

N = 50
X = np.zeros((3, N))
X[:,[0]] = x0

for k in range(1, N):
    X[:,[k]] = A@X[:,[k-1]]

plt.figure(figsize=(6, 4))
plt.title('Absoluter Generationenstand')
plt.plot(X[0,:], 'g', label='Alter < 20')
plt.plot(X[1,:], 'r', label='Alter 20 bis 39')
plt.plot(X[2,:], 'k', label='Alter > 40')
plt.xlabel('Generation')
plt.ylabel('Generationenstand absolut')
plt.legend()
plt.grid(True)
[[0.04 1.1  0.01]
 [0.98 0.   0.  ]
 [0.   0.92 0.  ]]
Der Eigenwert 1.06 hat den Eigenvektor
 [[-0.63392495]
 [-0.58468167]
 [-0.50624747]]
Der Eigenwert -1.01 hat den Eigenvektor
 [[ 0.6083396 ]
 [-0.58784241]
 [ 0.53325813]]
Der Eigenwert -0.01 hat den Eigenvektor
 [[ 7.76398245e-05]
 [-9.09394695e-03]
 [ 9.99958646e-01]]

Jeder Anfangszustand \(x\) kann in der Eigenbasis darstellt werden: \(x = V y\), wobei \(y\) die Koordinaten von \(x\) in der Eigenbasis sind. Im Detail bedeutet das, dass \[ x = \sum_{i=1}^3 y_i v_i \] mit den Eigenvektoren \(v_i\) und den Koordinaten \(y_i\). Um den Zustand \(n\) Generationen später zu berechnen, wendet man die Leslie-Matrix \(A\) \(n\)-mal auf \(x\) an: \[ x^{(n)} = A^n x = \sum_{i=1}^3 y_i A^n v_i = \sum_{i=1}^3 y_i \lambda_i^n v_i. \] Der Zustand \(x^{(n)}\) ist also eine Linearkombination der Eigenvektoren \(v_i\) mit den Faktoren \(\lambda_i^n y_i\). Der Eigenvektor \(v_i\) mit dem größten Eigenwert \(\lambda_i\) bestimmt das langfristige Verhalten der Population.

Umskalieren des Eigenvektors mit größten Eigenwert:

Code
E = V/np.sum(V, axis=0)
e1 = E[:,[0]]*100  # rescale the first eigenvector to percentage
print(f"rescaled the first eigenvector:\n{e1}")

plt.figure(figsize=(6, 4))
plt.title('Relative Generationenstände')
plt.plot(X[0,:]/np.sum(X, axis = 0)*100, 'g', label='Alter < 20')
plt.plot(X[1,:]/np.sum(X, axis = 0)*100, 'r', label='Alter 20 bis 39')
plt.plot(X[2,:]/np.sum(X, axis = 0)*100, 'k', label='Alter > 40')
plt.hlines(e1[0,0], 0, N, color='g')
plt.hlines(e1[1,0], 0, N, color='r')
plt.hlines(e1[2,0], 0, N, color='k')
plt.legend()
plt.xlabel('Generation')
plt.ylabel('Generationenstand in Prozent')
plt.grid(True)
rescaled the first eigenvector:
[[36.75238138]
 [33.89745683]
 [29.3501618 ]]

Aufgaben

Verständnisfragen und kurze Aufgaben

  1. Beschreiben Sie die Rechenschritte zur Bestimmung der Eigenvektoren einer Matrix.
  2. Welche Eigenwerte hat die Matrix \(\begin{pmatrix} 1 & 3\\ 0 & -2 \end{pmatrix}\)?
  3. Welche Eigenwerte hat die Matrix \(\begin{pmatrix} 1 & -2\\ 1 & 4 \end{pmatrix}\)?

Ergebnisse:

  1. Siehe Abschnitt Berechnung
  2. \(\lambda_1 = 1, \lambda_2 = -2\)
  3. \(\lambda_1 = 2, \lambda_2 = 3\)

Eigenwerte und -vektoren

Berechnen Sie Eigenwerte und Eigenvektoren der Matrix \(\begin{pmatrix} 3 & 0.25 \\ 1 & 3 \end{pmatrix}\), und überprüfen Sie Ihr Ergebnis in Python.

Ergebnisse: Die Eigenwerte sind \(\lambda_1 = 3.5\) und \(\lambda_2 = 2.5\). Die Eigenvektoren sind z. B. \(v_1 = \begin{pmatrix} 1\\ 2 \end{pmatrix}\) und \(v_2 = \begin{pmatrix} 1\\ -2 \end{pmatrix}\).

Diskrete Dynamische Systeme, Eigenwerte und -vektoren

Jedes Jahr ziehen etwa 10 % der Bevölkerung einer Stadt in die umliegenden Vororte, und etwa 20 % der Vorstadtbevölkerung in die Stadt. Im Jahr 2016 gibt es 10 Millionen Menschen in der Stadt und 8 Millionen Menschen in den Vororten, was wir mit dem Zustandsvektor \(x_0 = \begin{pmatrix} 10 \\ 8 \end{pmatrix}\) modellieren.

  1. Bestimmen Sie die Übergangsmatrix \(M\), so dass \(Mx\) der Einwohnerverteilung ein Jahr nach \(x\) entspricht.
  2. Analysieren Sie das Langzeitverhalten des dynamischen Systems mit Hilfe der Eigenwerte und -vektoren von \(M\), d. h. wohin tendiert der Zustandsvektor für große Zeiten?

Ergebnisse: Die Übergangsmatrix ist \(M = \begin{pmatrix} 0.9 & 0.2\\ 0.1 & 0.8 \end{pmatrix}\). Der Zustand tendiert für große Zeiten gegen \(x = \begin{pmatrix} 12\\ 6 \end{pmatrix}\).

Ein Räuber-Beute-System

Tief in den Redwood-Wäldern von Kalifornien liefern die Dunkelfuß-Buschratten bis zu 80 % der Nahrung für den Fleckenkauz, den Hauptfeind der Buschratten. Wir verwenden ein lineares dynamisches System, um die Dynamik des Eulen- und Rattenbestands zu modellieren. Das Modell ist in mehrfacher Hinsicht unrealistisch, aber es kann als Ausgangspunkt für die Untersuchung komplizierterer nichtlinearer Modelle verwendet werden. Mit \(x_t = \begin{pmatrix} f_t \\ b_t \end{pmatrix}\) bezeichnen wir für den Monat \(t\) den Bestand des Fleckenkauzes sowie den Bestand an Buschratten gemessen in Tausenden. Ein Monat später sei der Bestand gegeben durch \[ \begin{aligned} f_{t+1} & = 0.5 f_t + 0.4 b_t, \\ b_{t+1} & = -0.104 f_t + 1.1 b_t. \end{aligned} \] Der Term \(0.5 f_t\) in der ersten Gleichung besagt, dass ohne Buschratten als Nahrung nur die Hälfte der Fleckenkauz jeden Monat überleben wird, während der Term \(1.1 b_t\) in der zweiten Gleichung besagt, dass ohne Fleckenkauz als Räuber die Buschrattenpopulation um 10 % pro Monat zunehmen wird. Wenn es viele Buschratten gibt, führt der Term \(0.4 b_t\) zu einem Anstieg der Fleckenkauzpopulation, während der negative Term \(-0,104 f_t\) den Tod von Buschratten durch den Fleckenkauz beschreibt. Ein Fleckenkauz frisst also pro Monat im Schnitt 104 Buschratten.

Wir beschreiben die Bestandsdynamik kann durch die Vektorgleichung \(x_{t+1} = M x_t\). Die Übergangsmatrix \(M\) lautet \[ M = \begin{pmatrix} 0.5 & 0.4 \\ -0.104 & 1.1 \end{pmatrix}. \]

  1. Bestimmen Sie in Python die Eigenwerte und Eigenvektoren von \(M\). Skalieren Sie die Eigenvektoren sinnvoll.
  2. Bestimmen Sie daraus den langfristigen Bestand der Eulen und Buschratten.
  3. Plotten Sie die Bestandsentwicklung der Eulen und Buschratten für die nächsten Monate für unterschiedliche Anfangsbedingungen in der \(f\)-\(b\)-Ebene.

Ergebnisse:

  1. Die Eigenwerte sind \(\lambda_1 = 0.58\) und \(\lambda_2 = 1.02\). Die Eigenvektoren sind z. B. \(v_1 = \begin{pmatrix} 1\\ 0.2 \end{pmatrix}\) und \(v_2 = \begin{pmatrix} 1\\ 1.3 \end{pmatrix}\).
  2. Langfristig gibt es pro Fleckenkauz 1300 Buschratten.

Eigenwerte und -vektoren, Invertierbarkeit, Eindeutigkeit der Lösung

Gegeben ist die Matrix \(A = \begin{pmatrix} 1 & 0 & 2 \\ 0 & 2 & 0 \\ 0 & 1 & 3 \end{pmatrix}\).

  1. Berechnen Sie von Hand und am Computer die Eigenwerte und Eigenvektoren von A.
  2. Ist die Matrix A invertierbar? Begründen Sie Ihre Antwort.
  3. Besitzt das Gleichungssystem \(Ax = b\) eine eindeutige Lösung? Begründen Sie Ihre Antwort.

Hinweis: \[ \det \begin{pmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33} \end{pmatrix} = a_{11} a_{22} a_{33} +a_{12} a_{23} a_{31} + a_{13} a_{21} a_{32} - a_{13} a_{22} a_{31} - a_{12} a_{21} a_{33} - a_{11} a_{23} a_{32}. \]

Ergebnisse:

  1. Eigenwerte von \(A\): \(\lambda_1 = 1, \lambda_2 = 2, \lambda_3 = 3\). Zugehörigen Eigenvektoren sind z. B. \(v_1 = (1, 0, 0)^T, v_2 = (1, 0, 1)^T, v_3 = (-2, 1, -1)^T\).
  2. Ja, denn die Determinante ist nicht Null.
  3. Ja, denn die Determinante ist nicht Null.

Eigenwerte und -vektoren

Bestimmen Sie von Hand und in Python alle Eigenwerte und -vektoren folgender Matrix. \[ \begin{pmatrix} 2 & 7 \\ 7 & 2 \end{pmatrix} \]

Ergebnisse: Eingenwerte von \(A\): \(\lambda_1 = -5, \lambda_2 = 9\). Zugehörige Eigenvektoren sind z. B. \(v_1 = (-1, 1)^T, v_2 = (1, 1)^T\).

Eigenwerte und -vektoren

Bestimmen Sie von Hand und in Python alle Eigenwerte und -vektoren folgender Matrix. \[ \begin{pmatrix} -2 & -5 \\ 1 & 4 \end{pmatrix} \] Quelle: Papula, Band 2, 7.2, S. 128 f.

Ergebnisse:

Eingenwerte von \(A\): \(\lambda_1 = -1, \lambda_2 = 3\). Zugehörige Eigenvektoren sind z. B. \(v_1 = (-5, 1)^T\), \(v_2 = (-1, 1)^T\).

Eigenwerte und -vektoren

Bestimmen Sie von Hand die Eigenwerte und Eigenvektoren von \(A = \begin{pmatrix} 5 & 1 \\ 4 & 2 \end{pmatrix}\).

Ergebnisse: \(\lambda_1 = 1, \lambda_2 = 6\), \(v_1 = (1, -4)^T\), \(v_2 = (1, 1)^T\).

Eigenwerte und -vektoren

Bestimmen Sie von Hand und am Computer die Eigenwerte und Eigenvektoren von \(A = \begin{pmatrix} -1 & 2 \\ 4 & 1 \end{pmatrix}\)?

Ergebnisse: \(\lambda_1 = 3, \lambda_2 = -3\), \(v_1 = (1, 2)^T\), \(v_2 = (1, -1)^T\).