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:
-
|
(12.24) |
- Knoten Q:
-
|
(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:
-
|
(12.26) |
- Linke Schleife:
-
|
(12.27) |
Wir können dieses lineare Gleichungssystem in Matrixform schreiben.
|
(12.28) |
Lösen Sie diese Gleichungssystem für
- a)
- ,
- b)
- ,
- c)
- Kann man dieses Gleichungssystem auch für mehrere Vektoren
|
(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 :
|
(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
|
(12.31) |
Der Vektor ist durch
|
(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:
|
(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
|
(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
|
(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