4 wxMaxima |
Gleichungssysteme mit eindeutiger Lösung |
Gleichungssystem mit unendlich vielen Lösungen |
Koeffizientenmatrix aus Gleichungen gewinnen |
Eliminierung von Variablen |
Mit
solve([Gleichungen], [Variablen]);
wird ein Gleichungssystem nach den vorgegebenen Variablen
aufgelöst.
Ist das Flag globalsolve gesetzt, werden gebundene Symbole
für die Lösungsvariablen angelegt. Andernfalls werden die Lösungen
nur angezeigt.
Im Beispiel sind für das Gleichungssystem
die Größen a, b, c, d, e, f, g, h, i, j, k und l gegeben. Berechnet werden soll x+y.
Für die Berechnung von x+y werden die
Lösungsgleichungen für x und y gebraucht, daher wird
das globalsolve-Flag gesetzt.
Die Gleichungen könnten zwar auch direkt in der ersten
Argument-Liste von solve() angegeben werden, die im Beispiel
gezeigte Verwendung gebundener Symbole für die Gleichungen sorgt
für eine übersichtlichere Darstellung.
globalsolve: true; gl1: a*x+b*y+c*z=d; gl2: e*x+f*y+g*z=h; gl3: i*x+j*y+k*z=l; solve([gl1, gl2, gl3], [x, y, z]); disp("Loesung:")$ fullratsimp(x+y);
Mit
echelon(Matrix);
wird die Echelon-Form einer Tableau-Schema-Matrix erzeugt. Dabei wird Eliminierung nach Gauß angewandt.
Als Matrix wird die erweiterte Koeffizienten-Matrix angegeben.
Im Beispiel wird zunächst das Gleichungssystem
umgestellt zu
um anschließend die erweiterte Koeffizientenmatrix M zu gewinnen:
acmtx: matrix( [2, 6, 0, 0, -36], [3, 1, 0, 0, -14], [0, 0, 3, 5, -8], [2, 5, 6, 10, -47] ); disp("Echelon-Matrix gewinnen:")$ echelon(acmtx);
Die letzte Zeile der Echelon-Matrix enthält lauter Nullen. Dies
bedeutet, dass eine Gleichung eine Linearkombination mehrer anderer
Gleichungen ist und somit unendlich viele Lösungen existieren.
Zeilen, bei denen alle Elemente mit Ausnahme des letzten den Wert 0
haben und das letzte Element ungleich 0 ist, würden auf unlösbare
Gleichungssysteme hindeuten (Widerspruch 0≠0). Dies ist hier jedoch
nicht der Fall.
Wir verwenden die Funktion echelonplus() aus der Datei
echelonp.mac,
um die Elemente oberhalb der Hauptdiagonale soweit wie möglich zu
bereinigen.
Hinweis: Diese Funktion führt nur zum gewünschten Ergebnis,
wenn die Matrix ausschließlich Zahlenwerte enthält.
load("echelonp.mac"); acmtx: matrix( [2, 6, 0, 0, -36], [3, 1, 0, 0, -14], [0, 0, 3, 5, -8], [2, 5, 6, 10, -47] ); disp("Ergebnis-Matrix gewinnen:")$ echelonplus(acmtx);
Das Tableau-Schema
stellt das Gleichungssystem dar:
Dieses kann umgestellt werden zu:
Die einzelnen Gleichungen lauten:
Wir substituieren x4=t:
Trennung der nicht mit t multiplizierten und der mit t multiplizierten Terme ergibt den Lösungsvektor:
Die erweiterte Koeffizientenmatrix muss nicht manuell bestimmt werden, mit
augcoefmatrix([Gleichungen], [Variablen]);
kann sie automatisch aus den Gleichungen gewonnen werden.
gl1: a*x+b*y+c*z=d; gl2: e*x+f*y+g*z=h; disp("Erweiterte Koeffizientenmatrix gewinnen:")$ acmtx: augcoefmatrix([gl1, gl2, 0=0], [x, y, z]);
Mit
eliminate([Gleichungen], [Variable(n)]);
werden Variablen eliminiert.
Für jede der angegebenen Variablen wird eine der
Gleichungen nach der Variablen umgestellt, das Ergebnis wird
dann in die verbleibenden Gleichungen eingesetzt.
Das Ergebnis ist eine Liste von Termen, die die verbleibenden
Gleichungen repräsentieren (Term=0).
Im Beispiel wird ein Gleichungssystem mit den beiden
Gleichungen
a*x+b*y=c
d*x+e*y=f
verwendet. Zunächst wird die Variable y eliminiert. Es
verbleibt eine Gleichung, diese wird einmal nach x und
einmal nach a umgestellt.
gl01: a*x+b*y=c$ gl02: d*x+e*y=f$ disp("Eliminierung von y")$ elres: eliminate([gl01, gl02],[y]); disp("Umstellung nach x")$ solve(elres, x); disp("Umstellung nach a")$ solve(elres, a);