Subsections


12.9 Lineare Gleichungssysteme

Ziel:
In dieser Übungseinheit soll der Umgang mit linearen Gleichungssystemen gelernt werden. Anzufertigen sind die MATLAB Script-Files ueblinear.m und kegelgl.m.
Voraussetzung:
Grundlegendes Wissen über lineare Algebra, wie sie im Kapitel 5 besprochen werden.


12.9.1 Netzwerk

Gegeben ist ein Netzwerk mit ohmschen Widerständen und Spannungsquellen (Abb. 12.1).

Figure 12.1: Netzwerk mit 4 ohmschen Widerständen und 2 Spannungsquellen.
\includegraphics[width=0.8\columnwidth]{GRAFIK.xfig/stromkreis}
Die sich einstellenden Ströme kann man bequem über die Kirchhoffschen Regeln bestimmen:
a)
Knotenregel: An jedem Knoten ist de Summe der einfließenden Ströme gleich der Summe der ausfließenden Ströme. In unserem Beispiel heißt das:
Knoten P:

$\displaystyle i_1-i_2+i_3=0$ (12.24)

Knoten Q:

$\displaystyle -i_1+i_2-i_3=0$ (12.25)

In diesem Fall sind das äquivalente Gleichungen, wovon nur eine benötigt wird.
b)
Schleifenregel: In jeder Schleife ist die Summe der Spannungsabfälle gleich der Summe der Spannungsquellen.
Rechte Schleife:

$\displaystyle 10  i_2 + (10+15)   i_3 = U_1$ (12.26)

Linke Schleife:

$\displaystyle 20  i_1 + 10  i_2 = U_2$ (12.27)

Wir können dieses lineare Gleichungssystem in Matrixform schreiben.

$\displaystyle \begin{bmatrix}1 & -1 & 1  0 & 10 & 25  20 & 10 & 0 \end{bmatrix}   {\bf x}= \begin{bmatrix}0  U_1  U_2 \end{bmatrix} \; .$ (12.28)

Lösen Sie diese Gleichungssystem für
a)
$ U_1=90$, $ U_2=80$
b)
$ U_1=125$, $ U_2=90$
c)
Kann man dieses Gleichungssystem auch für mehrere Vektoren

$\displaystyle \begin{bmatrix}0  U_1  U_2 \end{bmatrix}$ (12.29)

zugleich lösen? Lösen Sie das System für die Vektoren aus a), b) und für den Vektor mit $ U_1=150$, $ U_2=70$ mit einem Befehl.

Überlegen Sie, wie Sie dafür die Spaltenvektoren in einer Matrix anordnen müssen.


12.9.2 Vertauschung

Gegeben sind eine Matrix $ {\bf A}$ und ein Vektor $ {\bf b}$:

$\displaystyle {\bf A}=\begin{bmatrix}1 & 2 & -1  3 & 4 & 0  -2 & 3 & 1 \end{bmatrix} \; ,\qquad {\bf b}=\begin{bmatrix}3 15 11 \end{bmatrix} \; .$ (12.30)

Lösen Sie
a)
$ {\bf A}{\bf x}={\bf b}$
b)
$ {\bf x}{\bf A}={\bf b}^T$
Sind die Ergebnisse gleich?


12.9.3 Diagonalmatrix

Die Matrix $ {\bf M}$ ist eine $ 2n\times 2n$ Matrix, deren Hauptdiagonale aus Einsen besteht und deren beiden Nebendiagonalen mit $ 0.5$ gefüllt sind

$\displaystyle {\bf M}=\begin{bmatrix}1 & 0.5 & 0 & 0 & \ldots  0.5 & 1 & 0.5 ...
...& 1 & \ldots  \vdots & \vdots & \vdots & \vdots & \ddots \end{bmatrix} \quad.$ (12.31)

Der Vektor $ {\bf v}$ ist durch

$\displaystyle {\bf v}=\begin{bmatrix}0  1  0  2  0  3  \vdots  0  n \end{bmatrix}$ (12.32)

gegeben. Erstellen Sie die Matrix $ {\bf M}$ mit Hilfe der Befehle eye und diag, und den Vektor $ {\bf v}$ mit Hilfe des Befehls zeros und der Doppelpunk Notation.
a)
Berechnen Sie die Lösung der Gleichung $ {\bf M}{\bf y}={\bf v}$ für $ n=5$.
b)
Machen Sie die Probe $ {\bf M}{\bf y}-{\bf v}$. Kommt tatsächlich der Nullvektor heraus? Überlegen Sie sich, woher die Abweichungen herrühren!
Im letzten Punkt haben wir gesehen, dass durch die endliche Genauigkeit der Zahlen während der Berechnung Rundungsfehler entstehen.
Daher macht eine Probe in der Form

if all( (M*y - v) == 0 )
disp('Probe bestanden.');
else
disp('Probe nicht bestanden.');
end

keinen Sinn!

Die einzige Möglichkeit, die man hat, ist auf beinahe Gleichheit zu testen. Dazu bietet sich der absolute oder der relative Fehler an. Wir wollen hier den absoluten Fehler verwenden.

error_limit = 1.0e-8;
if all( abs(M*y - v) < error_limit )
disp('Probe bestanden.');
else
disp('Probe nicht bestanden.');
end

c)
Versuchen Sie diese Programmzeilen zu verstehen!!! Führen Sie auf diese Weise die Probe durch.


12.9.4 Kegelschnitt

Als verallgemeinerte quadratische Formen bezeichnet man Funktionen folgender Form:

$\displaystyle z(x,y) = s_1 x^2 + 2 s_2 x y + s_3 y^2 + s_4 x + s_5 y + s_6 \; .$ (12.33)

Schnitte einer solchen Fläche mit einer Ebene (z.B., $ z(x,y)=0$) bezeichnet man als Kegelschnitte (Ellipse, Kreis, Hyperbel, Parabel) bzw. als entartete Kegelschnitte (Gerade, Geradenpaar, Punkt).

Bei bekannten Datenpunkten $ x_d$ und $ y_d$ kann man $ z(x_d,y_d)=0$ als lineares Gleichungssystem für $ s_i$ auffassen

$\displaystyle s_1 x_d^2 + 2 s_2 x_d y_d + s_3 y_d^2 + s_4 x_d + s_5 y_d + s_6 = 0 \; .$ (12.34)

In dieser Form ist es ein homogenes Gleichungssystem, das immer die triviale Lösung $ s_i=0$ liefern würde. Man kann sich aber helfen und einen der Koeffizienten $ s_k=1$ setzen und den entsprechenden Term auf die rechte Seite bringen. Wählt man z.B. den dritten Term $ s_3=1$ lautet die das inhomogene Gleichungssystem

$\displaystyle s_1 x_d^2 + 2 s_2 x_d y_d + s_4 x_d + s_5 y_d + s_6 = -y_d^2 \; ,$ (12.35)

welches nun die Form $ {\bf D}{\bf s}= {\bf b}$ hat und mit MATLAB gelöst werden kann. Da es nun fünf unbestimmte Koeffizienten gibt, genügen fünf Datenpunkte $ (x_d,y_d)$, um den Kegelschnitt genau zu bestimmen.

Gehen Sie nun im Skript kegelgl.m folgendermaßen vor:

Image cont_ellipse Image cont_hyperbel Image cont_parabel

Winfried Kernbichler 2005-04-26