Lineare Gleichungssysteme

Die Anwendung des Befehls LINSOLVE

Die hier verwendete Notation ist in einem gesonderten Beitrag zusammengestellt.

Das Lösen von linearen Gleichungssystemen war im Mathematikunterricht eine mühevolle Aufgabe. Die lineare Algebra brachte die Matrizen, wodurch der Lösungsansatz schematisiert wurde. Das Ermitteln von numerischen Lösungen, also der Zahlenwerte der Variablen (Unbekannten), ließ sich damit ganz gut durchführen. Wollte man jedoch eine allgemeine (symbolische) Lösung für jede Unbekannte,
z.B. x = <Formelausdruck>, dann artete es in viel Schreibarbeit aus.

Es gibt 3 Arten von linearen Systemen:

Das mit dem HP 49G mitgelieferte "HP 49G Benutzerhandbuch" beschreibt auf der Seite 6-7 diese Typen und gibt an, auf welche Weise der HP 49G die Lösungen dieser Typen bestimmt.

Auf den Seiten 6-8 und 6-9 gibt das Handbuch Beispiele für das Lösen eines linearen Gleichungssystems mit Matrizen.

Das Lösen solcher Systeme mittels Matrizen wird hier in diesem Beitrag nicht behandelt.
Es wird empfohlen, die angegebenen Seiten im Handbuch nachzulesen.
Siehe auch Beitag "Vektoren und Matrizen".

Für symbolische Lösungen steht der Befehl LINSOLVE zur Verfügung, mit dem sich unkompliziert und schnell symbolische Lösungen solcher Systeme ermitteln lassen, wenn man weiß wie es geht.

Dieser Beitrag soll durch ausführliche Beispiele den Lösungsvorgang mit LINSOLVE so beschreiben, daß die mechanischen Handgriffe (Tastendrücke) geübt werden können, um später bei der Anwendung des Befehls (z.B. bei Prüfungen) nicht mehr lange darüber nachdenken zu müssen

Für die nachfolgendenAusführungen gilt:

Die mathematischen Grundlagen der linearen Gleichungssysteme werden hier nicht erklärt.
Diese Kenntnisse werden beim Leser vorausgesetzt.

Der Befehl LINSOVE

Wie ging das mit LINSOLVE gleich wieder?

Die vorhandenen Handbücher beschreiben den Befehl LINSOLVE kurz und bündig. Beispiele fehlen ganz. Ab Flash-ROM-Version 1.19-3 bringt die Online-Hilfe ein kurzes Beispiel für den ALG-Mode.

Das deutsche "HP 49G Benutzerhandbuch für Fortgeschrittene" (gedruckte Ausgabe, Teilenummer F1633-90408, oder die im Internet verfügbare deutsche Version des AUG = Advanced User's Guide) beschreibt den Befehl LINSOLVE auf Seite 14-51 wie folgt:

LINSOLVE  
Typ: Befehl
Beschreibung: Löst ein lineares Gleichungssystem.
Zugriff Tastenfolge: [leftshift][S.SLV]
Eingabe: Ebene 2 / Argument 1: Ein Feld mit Gleichungen.
  Ebene 1 / Argument 2: Ein Vektor aus den Variablen, nach denen gelöst werden soll.
Ausgabe: Ebene 3 / Element 1: Das Gleichungssystem.
  Ebene 2 / Element 2: Die Liste der Pivotpunkte.
  Ebene 1 / Element 3: Die Lösung.
Flags: Der exakte Modus muß eingestellt sein (Flag -105 zurückgesetzt).
  Der numerische Modus darf nicht eingestellt sein (Flag -03 zurückgesetzt).

Erläuterung:

Zugriff:
Der Zugriff ist über die angegebene Tastenfolge, über die Katalogtaste [CAT] oder durch Eintippen des Befehls möglich.

Eingabe:
Die linke Angabe "Ebene" betrifft den Stack im RPN-Modus,
die rechte Angabe gilt für das "Argument" im ALG-Modus.

Ebene 2 / Argument 1: Die Angabe "Ein Feld mit Gleichungen" kann in der deutschen Übersetzung des Handbuchs zu Mißverständnissen führen, wenn der weniger mathematisch bewanderte Anwender das Wort "Feld" mißdeutet. In der englischen Originalausgabe steht dort "An array of equations".
Hier wird eine Aufreihung von echten Gleichungen in einer ARRAY-Klammer [ ] verlangt.

Ebene 1 / Argument 2: "Ein Vektor aus den Variablen, nach denen gelöst werden soll." Hier sind die Variablennamen in eckigen Klammern anzugeben. Bei der Eingabe über Tastatur sind diese in Hochkommas (Apostrophe) ' ' zu setzen.
Der Rechner unterscheidet bei eckigen Klammern [ ] zwischen Vektoren, Matrizen und Arrays (Feldern). Das sind verschiedene Zahlentypen:

Man darf also bei Objekten in eckigen Klammern den Zahlentyp nicht vernachlässigen, sonst meckert LINSOLVE. Im Beispiel unten wird dies deutlich gezeigt.

Ausgabe:
Die Berechnungsergebnisse werden im Stack angezeigt.

Mit LINSOLVE können symbolische Lösungen und auch numerische Lösungen berechnet werden. Dabei ist zu berücksichtigen, daß die angezeigte Lösung keine Zahlenobjekte, sondern Gleichungen im ARRAY enthält, die vor Weiterverarbeitung per Tastaturbefehl oder Programmbefehl erst in Zahlenobjekte umgewandelt werden müssen (Separieren von Zahlen aus den Gleichungen).

Was ist eine symbolische Lösung?

Die Lösung wird vom HP 49G mit Symbolen, also Variablenbezeichnungen, angezeigt. Dies kommt einer Umstellung der ursprünglichen Gleichungen nach den angegebenen Variablen gleich.

Was ist eine numerische Lösung?

Wenn die ursprünglichen Gleichungen außer den Variablennamen nur Zahlen enthalten, ergibt sich bei der Berechnung automatisch die numerische Lösung (als Sonderfall der symbolischen Lösung).

Beispiele

Die unten gezeigten Beispiele sind Gleichungssysteme vom TYP "Exakt bestimmte Systeme", weil sich dort eine vernünftige Lösung zeigen läßt. Unter- und überbestimmte Gleichungssysteme beherrscht der HP 49G auch, aber in diesen Fällen muß jeder Anwender wegen der Vielfalt der Aufgabenstellungen und Lösungen seine Aufgaben selbst ausprobieren und zu lösen versuchen. Hier wird nur der Weg zur Lösung beschrieben.

Voraussetzungen:

1. Beispiel:

Das Gleichungssystem (2 Gleichungen)

3x + 2y = 4
5x - 8y = 3

Ausführliche Anleitung für den RPN-Modus:
Zuerst muß das "Feld mit Gleichungen" (= array of equations) erzeugt werden.
Dazu werden die Gleichungen zuerst in den Stack eingegeben:

'3*x+2*y=4' (= Stackebene 2)
'5*x-8*y=3' (= Stackebene 1)

Bevor diese beiden Gleichungen in einen Array (Feld) umgewandelt werden können, muß in den Stack die Zahl 2 eingegeben, weil der Array zwei Elemente (Gleichungen) enthalten soll. Danach sieht der Stack so aus:

'3*x+2*y=4' (= Stackebene 3)
'5*x-8*y=3' (= Stackebene 2)
2 (= Stackebene 1

Jetzt wird der Array durch Aufruf des Befehls ->ARRY erzeugt

Der Befehl ->ARRY kann per Tastatur eingetippt werden, wobei der Pfeil durch die Tastenfolge [rightshift][0] erzeugt wird.
Man kann auch zum Aufruf des Befehls die Tastenfolge [leftshift][PRG][TYPE][->ARRY] aus dem Menü 33.01 wählen oder die Katalogtaste [CAT] benutzen.

Nach Aufruf von ->ARRY enthält der Stack den Array in Ebene 1:

['3*x+2*y=4' '5*x-8*y=3']

Das ist ein Feld mit 2 Gleichungen.

Jetzt werden noch die Variablen, nach denen aufgelöst werden soll, als Vektor ['x', 'y' ] in den Stack eingegeben:

Wenn alle in den Gleichungen vorhandenen Variablen im Array enthalten sein sollen, genügt es, den Befehl LVAR aufzurufen, dieser erzeugt mit dem Array in Stackebene 1 (hier in diesem Fall) ebenfalls den Vektor ['x', 'y'].

Nun müssen noch die Flags berichtigt werden (auf 0 setzen) mit {-2 -3 -79 -105} CF.

Der Aufruf von LINSOLVE erfolgt durch Eintippen oder mit Tastenfolge [leftshift][7][LINSO].
Die letzten 3 Buchstaben von LINSOLVE passen nicht in das angezeigte Menüfeld (siehe Bild 1).

Bild 1: Numerische Lösung Das Berechnungsergebnis ist im Bild 1 (siehe rechts) zu sehen. Die Zeilen in den Stackebenen 2 und 3 sind abgeschnitten, können aber durch Scrollen angezeigt werden.
([Cursor up], Stackebene auswählen und dann den Befehl VIEW mit Taste [F2] aktivieren, anschließend mit den Pfeiltasten den Inhalt horizontal verschieben).

Ergebnisse:

In Stackebene 3 steht das ursprüngliche Gleichungssystem im Array und der Vektor mit den Variablen (was vorher in Stackebene 3 und 2 stand), beide in einer Liste verpackt.

In Stackebene 2 unter "Specific:" stehen die Pivotpunkte in einer Liste.

In Stackebene 1 steht das eigentliche Ergebnis, wieder als Feld mit Gleichungen. Hier besteht das Ergebnis nur aus rationalen Zahlen (Brüchen), weil außer den Variablen (Unbekannten) keine symbolischen Koeffizienten vorhanden sind. Die Lösung wird als Feld mit Gleichungen ausgegeben, damit das Ergebnis wieder als Eingabe für die nächste Berechnungsstufe (falls mehrere erforderlich sein sollten) verwendet werden kann

Das numerische Ergebnis von linearen Gleichungssystemen mit ganzzahligen oder rationalen Koeffizienten besteht immer aus rationalen Zahlen, so daß mit dem exakten Modus gerechnet werden kann. Wenn die Koeffizienten aber in reellen Dezimalzahlen eingegeben werden, dann verlangt der Rechner nach Aufruf von LINSOLVE den Näherungsmodus, den man ihm gewähren muß.

2. Beispiel:

Das Gleichungssystem (3 Gleichungen)

5*x + 1*y + 3*z = 16
4*x + 2*y + 6*z = 26
3*x + 3*y + 2*z = 15

Zu diesem Beispiel wird keine ausführliche Anleitung mehr gegeben, sondern nur noch die Eingabe dargestellt:

Stackeingabe:

'5*x + 1*y + 3*z = 16'
'4*x + 2*y + 6*z = 26'
'3*x + 3*y + 2*z = 15'
3
->ARRY
['x' 'y' 'z']
LINSOLVE

Berechnungsergebnis (Bild 2):

Bild 2: Numerische Lösung

Um beim Ergebnis aus dem Array in Stackebene 1 die einzelnen Zahlenwerte herauszulösen, verwendet man mehrmals den Befehl OBJ->, wobei man dazwischen mehrmals mit dem Befehl DEL die überzähligen Stackinhalte löschen muß.

Nun noch ein Beispiel für eine rein symbolische Lösung

Das Gleichungssystem (2 Gleichungen):

a1*x + a2*y = A
b1*x + b2*y = B

 

Eingabe in den Stack:

'a1*x + a2*y = A'
'b1*x + b2*y = B'
2
->ARRY
['x' 'y']
LINSOLVE

Berechnungsergebnis (Bild 3):

Bild 3: Symbolische Lösung

Der Mathematiker erkennt im Nenner von x und y die Determinante.

Rechenzeit für symbolischen Lösungen

Für die Berechnung von symbolischen Lösungen braucht der Rechner etwas Zeit. Die in Bild 3 gezeigte Lösung benötigt auf dem HP 49G etwa 11 Sekunden Rechenzeit. Wenn das Gleichungssystem 3 oder mehr Gleichungen enthält, kann die Rechenzeit wesentlich höher werden (Minuten, bis zu einer Stunde).


Zur Beitragsübersicht
Copyright © 2002 Otto Praxl
Alle Rechte vorbehalten!