Lösen linearer Gleichungssysteme

Problemstellung

Lösen von linearen Gleichungssystemen (lGS) mit bis zu 8 Variablen unter Verwendung des Additionsverfahrens.
download als ZIP --- Beispiele --- zurück

Begründung

Einführung der Lösung von lGS in der 9. Klasse und ihre weitere Anwendung in der Sekundarstufe II.

Vorteile des Additionsverfahrens gegenüber dem Gleichsetzungs-, dem Einsetzungsverfahren und dem Multiplizieren der inversen Koeffizientenmatrix [A]-1 mit der Matrix der Absolutglieder [B] des Gleichungssystems sind:

  1. Die anderen, den SchülerInnen bekannten Verfahren sind nicht programmierbar.
  2. Den SchülerInnen sind Rechenregeln für Matrizen unbekannt Das Additionsverfahren kennen sie bereits.
  3. Das Programmieren des Algorithmus ist mit wenig Aufwand möglich.
  4. Es ist für die SchülerInnen möglich, sich jeden Rechenschritt im Display anzeigen zu lassen. Damit können sie die Berechnung des lGS auch schriftlich dokumentieren. Die LehrerIn merkt nur noch an dem Verfahren, ob der Taschenrechner verwendet wurde, oder ob die SchülerIn von Hand rechnete. (Natürlich besteht darin auch eine Gefahr.)

Vorüberlegungen

  1. Die SchülerInnen lernen das Additionsverfahren neu kennen. Es gelten für die äquivalenten Umformungen von einzelnen Zeilen des Gleichungssystems nur folgende Regeln:
    eine Zeile darf mit einer Konstanten multipliziert werden, *row(Wert, Matrix, Zeile)
    eine Zeile darf um eine zweite Zeile vermehrt werden ,row+(Matrix, ZeileA, ZeileB)
    eine Zeile darf um das Vielfache einer anderen Zeile vermehrt werden.
    *row+(Wert, Matrix, ZeileA, ZeileB)
    Ziel der äquivalenten Umformungen ist es, soweit möglich eine Einheitsmatrix zu erzeugen, d. h. auf der Hauptdiagonalen den Faktor 1 sonst den Faktor 0 zu erzeugen. Dabei ist es günstig spaltenweise vorzugehen und dabei die Schritte das Element der Hauptdiagonalen zu 1" - die restlichen Spaltenelemente zu 0 umwandeln" befolgt bzw. herausgearbeitet werden sollte.
  2. Die Schülerinnen und Schüler rechnen einige Aufgaben selbst und schriftlich.
  3. Die Schülerinnen und Schüler rechnen Aufgaben mit dem Taschenrechner unter Verwendung der Matrix [A] und der Befehle row+(, *row( und *row+( aus dem Menü Matrix|Math.
  4. Der Algorithmus wird schrittweise als Programm und eventuell als Struktogramm formuliert:
  5. es wird die erste Zeile mit dem Ziel, in der ersten Spalte eine 1 zu erzeugen, bearbeitet,

Hinweise

Im Handbuch des GTR wird im Kapitel 10 "Matrizen" auf das Lösen von linearen Gleichungssystemen eingegangen.

Erarbeitung des Programmes

Voraussetzungen

erste Spalte bearbeiten

Bedeutung der verwendeten Variablen:

D - Anzahl der zu ermittelnden Werte, d.h. Dimension des lGS

Z - jeweils zu bearbeitende Zeile der Matrix [A]

PROGRAM:LINGAUSS
1. :dim [A]: Ans(1)->D ermittle die Dimension des Gleichungssystems
2. :*row([A](1,1)-1,[A],1)->[A] erzeuge für Zeile 1, Spalte 1 den Wert 1
3. :For(Z,2,D):

*row+(-[A](Z,1),[A],1,Z)->[A]

:End

bearbeite für die 1. Spalte die restlichen Zeilen

erzeuge jeweils den Wert 0

Verallgemeinerung - alle weiteren Spalten bearbeiten

Bedeutung der verwendeten Variablen: S - zu bearbeitende Spalte.

Die Zeilen 1, 3, 4 liegen bereits vor. An einigen Stellen muß Spalte 1 durch Spalte S ersetzt werden.
Beispiele --- zurück --- #oben

PROGRAM:LINGAUSS
1. :dim [A]: Ans(1)->D
2. :For(S,1,D) NEU: für alle Spalten
3. :*row([A](S,S)-1,[A],S)->[A] erzeuge für Zeile s, Spalte s den Wert 1
4. :For(Z,1,D): *row+(-[A](Z,S),[A],S,Z)->[A]

:End

bearbeite für die s-te Spalte die restlichen Zeilen;

erzeuge jeweils den Wert 0

5. :End schließe For(S,1,D) ab
6. :ClrHome:Disp "DAS ERGEBNIS IST",[A]>Frac gib Ergebnismatrix aus

(Zahlen als Brüche dargestellt, um einen möglichst großen Bereich der Matrix anzuzeigen.)

Nach einer Überprüfung am Beispiel, merkt man, daß sich noch schwerwiegende Fehler im Programm verstecken.

4. :For(Z,1,D):

:If Z<>S:Then:*row+(-[A](Z,S) ,[A],S,Z)->[A]:End:

:End

GEÄNDERT: die z-te Zeile wird nur geändert, wenn auch wirklich der Wert 0 in dieser Spalte erscheinen soll
4. :For(Z,1,D):

:If ZS:Then:*row+(-[A](Z,S) ,[A],S,Z)->[A]:If abs([A](Z,S ))< E-9:Then:0->[A](Z,S):End: End

:End

GEÄNDERT
5. :If S<>D:Then:ClrHome:Disp "WEITER MIT ENTER",[A]>Frac: Pause:End

:End

GEÄNDERT: wurde eine Spalte komplett bearbeitet, so erscheint ein Zwischenergebnis auf dem Display, falls nicht schon das Endergebnis vorliegt (S=D)

der vollständige Programmtext

PROGRAM:LINGAUSS
1. :dim [A]: Ans(1)->D
2. :For(S,1,D)
3. :*row([A](S,S)-1,[A],S)->[A]
4. :For(Z,1,D):*row+(-[A](Z,S),[A],S,Z)->[A]:End
5. :If S<>D:Then:ClrHome:Disp "WEITER MIT ENTER",[A]>Frac: Pause:End
6. :End
7. :ClrHome: Disp "DAS ERGEBNIS IST",[A]>Frac

Kritik

Die Rechenschritte werden zwar angezeigt, aber sie sind bei größeren Gleichungssystemen aufgrund des kleinen Displays oft nicht vollständig zu erkennen. Abhilfe schafft hier nur das Unterbrechen des Programms mit der ON-Taste und dem anschließenden Editieren der Matrix [A] über das Menü| Matrix| Edit. Danach kann das Programm ohne Probleme erneut gestartet werden. Es werden dann oft ein paar Rechenschritte erneut unternommen bzw. angezeigt, die bereits im ersten Programmaufruf durchgeführt wurden, aber das schadet nichts.

Das Programm ist nur für bestimmt lösbare lineare Gleichungssysteme ausreichend. Es reagiert noch nicht auf die beiden weiteren noch denkbaren Fälle: Das Auftreten von keiner bzw. unendlich vielen Lösungen. Darin könnte eine Anregung zur weiteren Verbesserung des Programms gesehen werden.

Das Programm ist nicht optimal für die Arbeit mit einem Kleincomputer eingestellt. Fehler die durch die Rechenungenauigkeit auftreten können z. B. bei kleinen Determinanten der Koeffizientenmatrix oder bei besonders unterschiedlichen Koeffizienten werden nicht vermieden.
Beispiele --- zurück --- #oben

ein erweitertes Programm

Disp "LOESUNG LINEARER", "GLEICHUNGSSYSTEME", "", "KOEFFIZIENTENMA-", "TRIX EINGEBEN?", "JA=1 NEIN=0"
0->E: Repeat E=102 or E=92: getKey->E: End:
If E=102:
Then: 1
dim [A]->L6: L6(1)->D:
If L6(1)+1<>L6(2):
Then: Disp "EINGABE [A]", "FALSCH - STOP": Stop: End
[A]->[B]: {D,D}->dim [B]: {D,1}->dim [C]:
For(I,1,D): [A](I,D+1)->[C](I,1): End
Goto F:
End:
If E=92: Then: 2 Disp "EINGABE D. KOEFF": Input "DIMENSION?", D:
If D>8: Then: Disp "DIMENSION>8 FALSCH": Stop: End
If D<2: Then: Disp "DIMENSION<2 FALSCH": Stop: End
{D, D+1}->dim [A]: {D, D}->dim [B]: {D, 1}->dim [C]
For (Z,1,D):
ClrHome: Disp "ZEILE": Output (1,7,Z):
For (S, 1, D): Input "SPALTE ",A: A->[B](Z,S): End:
Input "ABSOLUT B",A: A->[C](Z,1):
End:
augment([B],[C])->[A]:
End
Lbl F 3
If det [B]=0: Then: Disp "KEINE LSG. MGL.": Stop: End
{D, 1}->dim [D]
Menu("LOESUNG LIN. GLEI.-SYS.", "INVERSE MATRIX", A, "GAUSS-ALGORITHMUS", B, "GAUSS MIT LSG.-WEG", C)
Lbl A 4
Disp "BILDE [A]-1": [B]-1[C]->[D]: Goto D
Lbl B 0->A: 5
Lbl E
For(S,1,D)
*row([A](S,S)-1,[A],S)->[A]
For(Z,1,D)
If Z<>S: Then: *row+(-[A](Z,S),[A],S,Z)->[A]:
If abs([A](Z,S))<E-10: Then: 0[A](Z,S):End
End:
End:
If A and D<>S:
Then: ClrHome: Disp "WEITER MIT ENTER", [A]>Frac: Pause: End
End:
For(I,1,D): [A](I,D+1)->[D](I,1): End
Goto D
Lbl C 6
1->A: Goto E
Lbl D
ClrHome: Disp [A]>Frac, "ERGEBNIS", [D]>Frac

Programmbeschreibung

Das obenstehende Programm soll ermöglichen, dass der Nutzer das lGS sowohl im Programm eingeben kann als auch ein bereits eingegebenes lGS nutzen kann. Außerdem kann er unter verschiedenen Lösungsmethoden wählen:

  1. Berechnung der inversen Matrix - dient der schnellen Berechnung, ohne den Lösungsweg zu beachten,
  2. Durchführung des Gauß-Algorithmus ohne Beachtung des Lösungsweges
  3. Durchführung des Gauß-Algorithmus mit Anzeige des Lösungsweges

Es werden dazu die Matrizen A, B, C und D verwendet. Matrix A ist in erster Linie zur Durchführung des Gauß-Algorithmus vorgesehen. Sie trägt das gesamte Gleichungssystem. Matrix B ist die Koeffizientenmatix und C nimmt die Absolutglieder auf. D erhält die Ergebnisse und wird abschließend auf dem Diplay dargestellt.

1 Soll das lGS nicht erst eingegeben werden, so arbeitet das Programm unter der Voraussetzung, dass die Angaben vollständig in Matrix A enthalten sind. Es wird überprüft, ob die Dimension D der Matrix richtig ist, da sie das gesamte Gleichungssystem trägt, muss die Spaltenzahl also die Zeilenzahl D um Eins übertreffen.

2 Die Eingabe des lGS im Programm erfolgt zeilenweise. Die erstmalige Aufforderung "Spalte 1" ist also so zu verstehen, dass jetzt der Koeffizient der ersten Zeile in der ersten Spalte erwartet wird.

3 Hier wird die Lösbarkeit des Gleichungssystems ermittelt. Sollte es nicht lösbar sein, so wird die Meldung "Keine Lösung möglich" ausgegeben und die Abarbeitung des Programms gestoppt.

4 Berechnung der Inversen und Ermittlung der Ergebnismatrix D.

5 Durchführung der Berechnung des lGS unter Verwendung des Gauß-Algorithmus. Weiter oben ist beschrieben, wie die einzelnen Befehle zustande kommen. Die Variable A wird als Wahrheitswert für die Darstellung des ausführlichen Lösungsweges verwendet. Ist A null, so werden die Lösungsschritte nicht angezeigt.

6 Hier wird der Variablen A der Wert 1 zugewiesen. Die Lösungsschritte werden angezeigt. Ansonsten wird der Programmtext unter 5 abgearbeitet.


Seitenanfang - home

Finden Sie Fehler oder haben Sie Fragen? mathe@org.dz.shuttle.de