gauss_algorithm(33) Sprache: Deutsch


Gauss Algorithm

Beschreibung

Das C-Programm Gauss Algorithm konnte den Gauss-Algorithmus anwenden, um aus n gegebenen Punkten ein Polynom n-1-ten Gerades zu berechnen oder als Eingabe eine Gauss-Matrix verwenden. Dabei wurden in der Eingabe nur ganze Zahlen aktzeptiert, wodurch das Programm genau arbeitete und keine Fließkomma-Fehler machen konnte. Das Programm konnte die Ausgabe auch als LaTeX-Tabelle machen, um die Ergebnisse in ein ausdruckbares Dokument einzubinden. Bei der Angabe von Punkten gab man immer drei Zahlen an: Die Ableitung, in die der Punkt eingesetzt werden soll, den X-Wert des Punktes und den (Ableitungs-)Funktionswert an dieser Stelle. Damit konnte das Programm zu den meisten Schulaufgaben mit nur wenigen Zeilen Eingabe sofort eine Lösung ausspucken, sodass man die fehlerträchtige Rechnung nicht selbst durchführen musste. Das Programm hatte den kleinen Schönheitsfehler, dass die vom Programm durchgeführte Rechenoperation immer in der Zeile angezeigt wurde, wo das Ergebnis stand: Wenn die erste Zeile mit 2 multipliziert worden war, stand hinter dem Ergebnis die dazu verwendete Rechenoperation *2.

Beispiel für eine direkte Eingabe von Punkten und die zugehörige Ausgabe auf dem Terminal:

/data/main/development/c/gauss_alg$ ./gauss_alg
0,2,4
0,-2,4
0,0,0
    4       2       1       4
    4      -2       1       4
    0       0       1       0
----------------------------------------
    4       2       1       4   * (1)
   -4       2      -1      -4   * (-1)
    0       0       1       0
----------------------------------------
    4       2       1       4
    0       4       0       0   + I
    0       0       1       0
----------------------------------------
    4       2       1       4
    0       4       0       0   * (1)
    0       0       1       0
----------------------------------------
    4       2       1       4
    0       4       0       0
    0       0       1       0
----------------------------------------

Result: f(x) = (1/1)*x^2

Man sieht deutlich, dass die durchgeführten Rechenoperationen hinter dem Ergebnis stehen. Für die gleiche Eingabe erhält man als Ergebnis mit dem Parameter --tex die Ausgabe unten und den korrekten Ergebnisterm fx=11x2 (ebenfalls vom Programm schon LaTeX-kompatibel generiert).

\toprule
a       & b       & c       & y       & Aktion \\
\midrule
$    4$ & $    2$ & $    1$ & $    4$ &  \\
$    4$ & $   -2$ & $    1$ & $    4$ &  \\
$    0$ & $    0$ & $    1$ & $    0$ &  \\
        &         &         &         &  \\
$    4$ & $    2$ & $    1$ & $    4$ & $\cdot (1)$ \\
$   -4$ & $    2$ & $   -1$ & $   -4$ & $\cdot (-1)$ \\
$    0$ & $    0$ & $    1$ & $    0$ &  \\
        &         &         &         &  \\
$    4$ & $    2$ & $    1$ & $    4$ &  \\
$    0$ & $    4$ & $    0$ & $    0$ & $+ $I \\
$    0$ & $    0$ & $    1$ & $    0$ &  \\
        &         &         &         &  \\
$    4$ & $    2$ & $    1$ & $    4$ &  \\
$    0$ & $    4$ & $    0$ & $    0$ & $\cdot (1)$ \\
$    0$ & $    0$ & $    1$ & $    0$ &  \\
        &         &         &         &  \\
$    4$ & $    2$ & $    1$ & $    4$ &  \\
$    0$ & $    4$ & $    0$ & $    0$ &  \\
$    0$ & $    0$ & $    1$ & $    0$ &  \\
\bottomrule

Zur Direkten Eingabe einer Matrix konnte man den Paramter --raw verwenden, die Ausgabe unterschied sich dabei nicht. Die Ma_Sys.ma Implementation hatte noch einige kleine Schwächen: Das Programm führte nur anfangs eine mehr oder weniger auf Plausibilität basierende Vertauschung von Zeilen durch, damit die Eingabe gelöst werden konnte, was in allen vom Ma_Sys.ma getesteten Fällen zwar klappte, aber noch nicht sicher ist. Außerdem versuchte das Programm nicht, die Zahlen in der Matrix kleinzuhalten, sodass bei großen Eingabezahlen und komplexen Termen eventuell der 64-bit Integer überlaufen könnte.


Zum Seitenanfang