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.
|
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$](img634.gif) |
(12.24) |
- Knoten Q:
-
![$\displaystyle -i_1+i_2-i_3=0$](img635.gif) |
(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$](img636.gif) |
(12.26) |
- Linke Schleife:
-
![$\displaystyle 20 i_1 + 10 i_2 = U_2$](img637.gif) |
(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} \; .$](img638.gif) |
(12.28) |
Lösen Sie diese Gleichungssystem für
- a)
,
- b)
,
- c)
- Kann man dieses Gleichungssystem auch für mehrere Vektoren
![$\displaystyle \begin{bmatrix}0 U_1 U_2 \end{bmatrix}$](img643.gif) |
(12.29) |
zugleich lösen? Lösen Sie das System für die Vektoren aus a), b) und für
den Vektor mit
,
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
und ein Vektor
:
![$\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} \; .$](img646.gif) |
(12.30) |
Lösen Sie
- a)
-
- b)
-
Sind die Ergebnisse gleich?
12.9.3 Diagonalmatrix
Die Matrix
ist eine
Matrix, deren Hauptdiagonale aus
Einsen besteht und deren beiden Nebendiagonalen mit
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.$](img652.gif) |
(12.31) |
Der Vektor
ist durch
![$\displaystyle {\bf v}=\begin{bmatrix}0 1 0 2 0 3 \vdots 0 n \end{bmatrix}$](img654.gif) |
(12.32) |
gegeben. Erstellen Sie die Matrix
mit Hilfe der Befehle
eye
und diag, und den Vektor
mit Hilfe des
Befehls zeros
und der Doppelpunk Notation.
- a)
- Berechnen Sie die Lösung der Gleichung
für
.
- b)
- Machen Sie die Probe
. 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 \; .$](img658.gif) |
(12.33) |
Schnitte einer solchen Fläche mit einer Ebene (z.B.,
) bezeichnet
man als Kegelschnitte (Ellipse, Kreis, Hyperbel, Parabel) bzw. als entartete
Kegelschnitte (Gerade, Geradenpaar, Punkt).
Bei bekannten Datenpunkten
und
kann man
als
lineares Gleichungssystem für
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 \; .$](img664.gif) |
(12.34) |
In dieser Form ist es ein homogenes Gleichungssystem, das immer die triviale
Lösung
liefern würde. Man kann sich aber helfen und einen der
Koeffizienten
setzen und den entsprechenden Term auf die rechte Seite
bringen. Wählt man z.B. den dritten Term
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 \; ,$](img668.gif) |
(12.35) |
welches nun die Form
hat und mit MATLAB gelöst
werden kann. Da es nun fünf unbestimmte Koeffizienten gibt, genügen fünf
Datenpunkte
, um den Kegelschnitt genau zu bestimmen.
Gehen Sie nun im Skript kegelgl.m folgendermaßen vor:
- Erzeugen Sie zwei
-Vektoren xd und yd mit
gleichverteilten Zufallszahlen zwischen
und
(rand).
- Erzeugen Sie mit Hilfe dieser Vektoren die Hilfsmatrix
wobei
,
und
jeweils Spaltenvektoren gleicher Länge sein
müssen.
- Wählen Sie den Index einer Spalte aus, die auf die rechte Seite des
Gleichungssystems gebracht werden soll und erzeugen Sie damit die Matrix
und den Inhomogenitätsvektor
. Diese Auswahl kann man am
leichtesten mit Hilfe eines logischen Vektors (z.B.:
) und
seiner Negation treffen (logische Indizierung).
- Lösen Sie das entsprechende Gleichungssytem
und
fügen im so erhaltenen
an der richtigen Stelle
ein (logische
Indizierung). Damit ist das Problem gelöst und das Ergebnis muss nur noch
visualisiert werden.
- Erzeugen Sie dafür Vektoren
und
zwischen
und
mit
circa
Punkten. Alle Kombinationen von
- und
-Werten kann man
mit dem Befehl meshgrid
erzeugen und erhält damit die Matrizen
und
. Durch Auswertung von Gleichung 12.33
für diese Matrizen erhält man
.
- Diese Fläche kann man mit dem Befehl surf
graphisch
Darstellen. Die Farbe repräsentiert den Wert der Funktion und man kann
von Oben auf die Fläche schauen (view(2)). Verwendet man
eine Handle für diese ''Surface'', kann man die EdgeColor auf none setzen um die störenden schwarzen Linien zu beseitigen.
- Nun kann man in der gleichen Zeichnung die Datenpunkte einzeichen
(line) und den erhaltenen Kegelschnitt als Höhenschichtlinie
zeichnen. Dafür gibt es in MATLAB den Befehl
contour(X,Y,Z). In dieser Form wählt MATLAB die
-Werte für die Höhenschichtlinien automatisch aus. Man kann aber auch
einen weiteren Vektor v mit gewünschten Höhenwerten übergeben:
v = [0,0]; contour(X,Y,Z,v);
Will man nur einen Höhenwert muss man ihn seltsamerweise zweimal
übergeben. Vergessen Sie auch nicht die Verwendung von hold.
- Damit sollten nun die Höhe von
in Farbe dargestellt sein, die
Datenpunkte und der Kegelschnitt als Höhenschichtlinie eingezeichnet
sein. Der Kegelschnitt sollte genau durch die fünf Datenpunkte gehen und
entlang einer gleichen Farbe verlaufen.
Winfried Kernbichler
2005-04-26