Code
import numpy as np
import scipy as sp
import matplotlib.pyplot as plt
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:
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)\).
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
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\).
EW und EV von speziellen Matrizen:
Eine quadratische \(n\times n\)-Matrix \(A\) heißt
für alle \(x \neq 0\) in \(\mathbb{R}^n\).
Eine quadratische, symmetrische Matrix ist genau dann
Die Definitheit der Hesse-Matrix spielt bei der Untersuchung von kritischen Stellen einer Funktion \(f\colon \mathbb{R} ^{n}\to \mathbb{R}\), also der Extremwertberechnung, eine entscheidende Rolle.
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:
import numpy as np
import scipy as sp
import matplotlib.pyplot as plt
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\).
import numpy as np
= np.array([[0.8, 0.3],
A 0.2, 0.7]])
[= np.linalg.eig(A)
L, V 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]]
Die Population einer Region zerlegt sich in die Altersgruppen
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:
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:
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:
= np.array([[0.04, 1.1 , 0.01],
A 0.98, 0 , 0 ],
[0 , 0.92, 0 ]])
[print(A)
= np.linalg.eig(A)
(L, V)
for k in range(len(L)):
print(f"Der Eigenwert {L[k]:.2f} hat den Eigenvektor\n {V[:,[k]]}")
= np.array([[0.6, 1, 0.8]]).T
x0 # x0 = -V[:,[0]]
# x0 = V[:,[1]]
# x0 = V[:,[2]]
= 50
N = np.zeros((3, N))
X 0]] = x0
X[:,[
for k in range(1, N):
= A@X[:,[k-1]]
X[:,[k]]
=(6, 4))
plt.figure(figsize'Absoluter Generationenstand')
plt.title(0,:], 'g', label='Alter < 20')
plt.plot(X[1,:], 'r', label='Alter 20 bis 39')
plt.plot(X[2,:], 'k', label='Alter > 40')
plt.plot(X['Generation')
plt.xlabel('Generationenstand absolut')
plt.ylabel(
plt.legend()True) plt.grid(
[[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:
= V/np.sum(V, axis=0)
E = E[:,[0]]*100 # rescale the first eigenvector to percentage
e1 print(f"rescaled the first eigenvector:\n{e1}")
=(6, 4))
plt.figure(figsize'Relative Generationenstände')
plt.title(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.plot(X[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.hlines(e1[
plt.legend()'Generation')
plt.xlabel('Generationenstand in Prozent')
plt.ylabel(True) plt.grid(
rescaled the first eigenvector:
[[36.75238138]
[33.89745683]
[29.3501618 ]]
Wir betrachten das folgende lineare, homogene Differentialgleichungssystem erster Ordnung: \[ \begin{aligned} \dot{x}_1 (t) & = x_1 (t) + x_2 (t) \\ \dot{x}_2 (t) & = 4x_1 (t) + x_2 (t). \end{aligned} \] Man sagt, das System ist gekoppelt, weil \(\dot{x}_1 (t)\) auch von \(x_2 (t)\) und \(\dot{x}_2 (t)\) auch von \(x_1 (t)\) abhängt. Gesucht sind Lösungsfunktionen \(x_1(t)\) und \(x_2(t)\), die wir zu einem Vektor \(x(t) = \begin{pmatrix} x_1(t)\\ x_2(t) \end{pmatrix}\) zusammenfassen. Dadurch können wir das Differentialgleichungssystem in der kompakten Form \(\dot{x}(t) = Ax(t)\) schreiben, wobei \(A = \begin{pmatrix} 1 & 1\\ 4 & 1 \end{pmatrix}\). Mit Hilfe der Eigenwerte und Eigenvektoren von \(A\) können wir das Differentialgleichungssystem entkoppeln:
= np.array([[1, 1],
A 4, 1]])
[= np.linalg.eig(A)
L, V print(f"eigenvalues: {L}")
print(f"matrix with eigenvectors in columns:\n{V}")
print(f"rescaled eigenvectors:")
= V[:,[0]]/V[0, 0]
v_1 = V[:,[1]]/V[0, 1]
v_2 print(" v_1 = \n", v_1)
print(" v_2 = \n", v_2)
eigenvalues: [ 3. -1.]
matrix with eigenvectors in columns:
[[ 0.4472136 -0.4472136 ]
[ 0.89442719 0.89442719]]
rescaled eigenvectors:
v_1 =
[[1.]
[2.]]
v_2 =
[[ 1.]
[-2.]]
Zur Entkopplung führen wir die Koordinatentransformation \(x = Vy\) durch, wobei die Matrix \(V\) die Eigenvektoren \(v_1\) und \(v_2\) als Spalten hat. Daher gilt \(AV = VD\), wobei \(D\) die Diagonalmatrix mit den Eigenwerten \(\lambda_1 = 3\) und \(\lambda_2 = -1\) auf der Diagonalen ist. Aus \(x = Vy\) folgt \(\dot{x} = V\dot{y}\), und \(\dot{x} = Ax\) wird durch Einsetzen zu \(V\dot{y} = AVy = VDy\), also \(\dot{y} = D y\), weil \(V\) invertierbar ist. Die letzte Gleichung \(\dot{y} = D y\) ist ein entkoppeltes System, d. h. die Gleichungen für \(y_1\) und \(y_2\) hängen nicht mehr voneinander ab und können separat gelöst werden: \[ \begin{aligned} \dot{y}_1 (t) & = 3y_1(t) \\ \dot{y}_2 (t) & = -y_2(t). \end{aligned} \] Die allgemeinen Lösungen sind \(y_1(t) = y_1(0) e^{3t}\) und \(y_2(t) = y_2 (0) e^{-t}\). In Vektorform: \(y(t) = \begin{pmatrix} y_1(t)\\ y_2(t) \end{pmatrix} = \begin{pmatrix} y_1(0) e^{3t} \\ y_2(0) e^{-t} \end{pmatrix}\). Die allgemeine Lösung für \(x(t)\) lautet nun durch Rücktransformation \[ x(t) = V y(t) = y_1(0) e^{3t} v_1 + y_2(0) e^{-t} v_2 = y_1(0) e^{3t} \begin{pmatrix} 1\\ 2 \end{pmatrix} + y_2(0) e^{-t} \begin{pmatrix} 1\\ -2 \end{pmatrix}. \] Wir sehen, dass der erste Summand exponentiell wächst, während der zweite exponentiell abfällt.
Wir lösen nun das Anfangswertproblem mit Anfangswert \(x(0) = \begin{pmatrix} 1 \\ -1 \end{pmatrix}\), indem wir die Anfangswerte \(y_1(0)\) und \(y_2(0)\) bestimmen und diese in die allgemeine Lösung einsetzen: \[ \begin{aligned} x(0) & = V y(0) \\ y(0) & = V^{-1} x(0) \end{aligned} \]
= np.array([1, -1])
x0 = np.linalg.solve(V, x0)
y0 print(f"y0 = {y0}")
= np.linspace(0, 1, 100)
t = np.array([y0[0]*np.exp(3*t),
y 1]*np.exp(-t)])
y0[= V@y
x
=(5, 3))
plt.figure(figsize0,:], label='$x_1(t)$')
plt.plot(t, x[1,:], label='$x_2(t)$')
plt.plot(t, x['t')
plt.xlabel(='best')
plt.legend(locTrue) plt.grid(
y0 = [ 0.55901699 -1.67705098]
Ein lineares Differentialgleichungssystem \(\dot{x} = Ax\) mit Anfangsbedingung \(x(0) = x_0\) kann auch direkt gelöst werden. Die Lösung lautet \(x(t) = e^{At}x_0\), wobei \(e^{At}\) ein Matrixexponential ist. Es ist analog zur Potenzreihe der Exponentialfunktion \[
e^x = \sum_{n=0}^\infty \frac{1}{n!} x^n
\] für Zahlen \(x\) durch die Matrix-Potenzreihe \[
e^{At} = \sum_{n=0}^\infty \frac{1}{n!} A^n
\] definiert. Zur effizienten Berechnung des Matrixexponentials verwendet man z. B. die Spektralzerlegung \(A = V D V^{-1}\): \[
\begin{aligned}
e^{At} & = \sum_{n=0}^\infty \frac{1}{n!} A^n \\
& = \sum_{n=0}^\infty \frac{1}{n!} (V D V^{-1})^n \\
& = \sum_{n=0}^\infty \frac{1}{n!} V D^n V^{-1} \\
& = V \left(\sum_{n=0}^\infty \frac{1}{n!} D^n\right) V^{-1} \\
& = V e^{Dt} V^{-1}
\end{aligned}
\] Da die Matrix \(D\) eine Diagonalmatrix von Eigenwerten \(\lambda_i\) ist, ist \(e^{Dt}\) einfach zu berechnen: \[
e^{Dt} = \begin{pmatrix} e^{\lambda_1 t} & 0 & \ldots & 0\\ 0 & e^{\lambda_2 t} & \ldots & 0\\ \vdots & \vdots & \ddots & \vdots\\ 0 & 0 & \ldots & e^{\lambda_n t} \end{pmatrix}.
\] Mit dieser Alternative können wir das Anfangswertproblem des vorherigen Beispiels lösen. Dabei verwenden wir den SciPy-Befehl scipy.linalg.expm
, der das Matrixexponential schon implementiert hat:
import scipy as sp
= np.zeros((2, 100))
x for k in range(100):
= sp.linalg.expm(A*t[k])@x0
x[:,k]
=(5, 3))
plt.figure(figsize0,:], label='$x_1(t)$')
plt.plot(t, x[1,:], label='$x_2(t)$')
plt.plot(t, x['t')
plt.xlabel(='best')
plt.legend(locTrue) plt.grid(
Ergebnisse:
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}\).
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.
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}\).
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}. \]
Ergebnisse:
Gegeben ist die Matrix \(A = \begin{pmatrix} 1 & 0 & 2 \\ 0 & 2 & 0 \\ 0 & 1 & 3 \end{pmatrix}\).
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:
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\).
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\).
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\).
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\).
Das radioaktive Isotop Jod zerfällt in das radioaktive Isotop Xenon, welches wiederum in etwas anderes (nicht wichtig) zerfällt. Die Halbwertszeiten von Jod und Xenon sind 6.7 h und 9.2 h, vgl. Halbwertszeit.
Quelle: Farlow, Stanley J.: An Introduction to Differential Equations and Their Applications. p. 353, Problem 31.
Ergebnisse: Die allgemeine Lösung des DGL-Systems lautet: \[ \begin{pmatrix} J(t) \\ X(t) \end{pmatrix} = y_1(0) e^{-c_1 t} \begin{pmatrix} 1 \\ \frac{c_1}{c_2 - c_1} \end{pmatrix} + y_2 (0) e^{-c_2 t} \begin{pmatrix} 0 \\ 1 \end{pmatrix}. \] mit \(c_1 = \frac{\ln(2)}{6.7}\) und \(c_2 = \frac{\ln(2)}{9.2}\). Die spezielle Lösung des DGL-Systems hat den in Abbildung 1 dargestellten Verlauf.
Ein bisschen weit hergeholt könnte das folgende System von zwei linearen Differentialgleichungen \[ \begin{aligned} \frac{\text{d}r}{\text{d}t}(t) & = -aj(t), \quad (a>0) \\ \frac{\text{d}j}{\text{d}t}(t) & = br(t), \quad (b>0) \end{aligned} \] die Zuneigung zweier Liebender, Romeo und Julia, darstellen, wobei die Werte \(r(t)\) und \(j(t)\) ihre jeweilige Liebe für den anderen zum Zeitpunkt \(t\) messen. Man beachte, dass Romeo, je mehr Julia ihn liebt, anfängt, sie nicht mehr zu mögen, aber wenn sie das Interesse verliert, erwärmen sich seine Gefühle für sie. Sie hingegen macht die gegenteilige Erfahrung. Ihre Liebe zu ihm wächst, wenn er sie liebt, und verwandelt sich in Hass, wenn er sie hasst.
Wie wird unter diesen Bedingungen die Lösung dieses Gleichungssystems qualitativ aussehen? Beschreiben Sie Ihre Meinung in Worten.
Lösen Sie das DGL-System für den Fall \(a = b = 1\) und \(r(0) = j(0) = 2\) durch Entkoppeln in Python.
Allgemeiner als bisher, könnte eine lineare Liebesbeziehung zwischen Romeo und Julia durch das folgende lineare DGL-System beschrieben werden: \[ \begin{aligned} \frac{\text{d}r}{\text{d}t}(t) & = a_{11}r(t) + a_{12}j(t) \\ \frac{\text{d}j}{\text{d}t}(t) & = a_{21}r(t) + a_{22}j(t) \end{aligned} \] Dabei können die “Liebe/Hass”-Parameter \(a_{ij}\) positiv oder negativ sein. Wenn z. B. \(a_{11} > 0\) und \(a_{12} > 0\) sind, dann wird Romeos Liebe zu Julia durch seine eigenen Gefühle und Julias Liebe zu ihm angespornt. In diesem Fall könnten wir Romeo als “Streberliebhaber” bezeichnen. Beschreiben Sie die folgenden anderen drei Liebhabertypen:
Ergebnisse: