Um diese Programme auszuführen brauchen Sie einen TI-82 Taschenrechner und ein TI Graph Link Kabel mit Software für den seriellen Anschluß auf Ihrem PC. Wenn Ihr PC keinen seriellen Port hat, sollte es auch ein USB-Seriell Konverter tun. Da die TI Graph Link Software nur unter Windows und Mac läuft, habe ich sie unter Qemu/WindowsXP installiert. In diesem Setup habe ich das schwarze Kabel an COM Port 1 angeschlossen, wie man in der Software beides auswählen muß, Kabelfarbe und Portnummer. Wenn Sie kein Kabel haben, dann müßten Sie die Programme händisch in ihren TI-82 eingeben, so wie sie in den .AS2 Dateien zu finden sind. Damit im Qemu auch der Seriellport geht, schauen Sie sich im Downloadbereich an mit welchen Parametern ich Qemu aufgerufen habe. Zu der Zeit als ich diesen Beitrag geschrieben habe, ist die TI Graph Link Software nämlich nicht mit Wine unter Linux gelaufen. Es ist unwahrscheinlich, daß es noch einmal so weit kommt, obwohl ich einen Fehlerbericht an die Wine Entwickler geschrieben habe, da der Fehler den NTOSKRNL betrifft.
Laden Sie TI-82-progs-elstel.org.tar herunter um alle Programme als Textdatei .AS2 oder im internen Format .82P für die Übertragung über das Kabel zu erhalten. Die Dateien A/B/C.TXT und A/B/C.82M enthalten Matrices, die ich zum Testen der Algorithmen verwendet habe. Lineare Gleichungen löst der Gauss Algorithmus. Wenn man 1→E zuweist, rechnet das Programm nur mit ganzen Zahlen, sonst mit Kommazahlen. Ganze Zahlen sind gut, wenn man Rundungsfehler ausschließen möchte. Wenn Sie für jede und nicht nur die letzte Variable die endgültige Lösung gleich haben wollen, ohne rückwärts hinauf einzusetzen, dann führen Sie nach dem Gauss noch den Jordan Algorithmus aus. GJNorm normalisiert das Ergebnis von Gauss oder Jordan, indem jede Variable eine Koeffizienten von eins bekommt. GJGGTDIV vereinfacht ein solches Ergebnis ohne Zahlen mit Nachkommastellen zu produzieren; es teilt jede Zeile der Matrix durch ihren größten gemeinsamen Teiler. Wenn ihre Matrix aus n linear unabhängigen Vektoren der Größe n besteht, dann existiert eine inverse Matrix. Um diese zu ermitteln rufen Sie GETINV für [A] oder JXTRINV nach Jordan und GJNorm auf. GETINV ruft bequem nacheinander alle Unterprogramme für Sie auf, die Sie brauchen um das Inverse der Matrix [A] in [E] zu speichern. Alle diese Programme ändern das Feld/ die Liste L6. Alle anderen Programme außer GETINV arbeiten nur auf der Matrix [E]. Die Variable M enthält die Anzahl der linearen Gleichungen, also die Zeilenzahl der Matrix, währen N die Anzahl der Spalten vom Anfang weg enthaltet, die Koeffizienten von Variablen enthalten. Dahinter (Position N+1…) können Festwerte oder die Einheitsmatrix stehen. Indices zählen am TI-82 immer ab eins, nie ab null. Wenn Sie nicht gleich GETINV aufrufen, machen Sie klar, daß die Variablen M, N und D gültige Werte enthalten. Ist D eins, so zeigen die Programme das Ergebnis jedes Zwischenschrittes an (sonst nullsetzen). Die Variable E enthält null für das Rechnen mit Kommazahlen und eins für ganzzahlige Berechnungen. Sie mögen erstaunt sein, daß GETINV auch dann ein Resultat liefert, wenn gar keine inverse Matrix existiert. In diesem Fall ist die Zeilenzahl der Pseudoinversen [E] kleiner als die der Ausgangsmatrix, da nicht alle Vektoren linear unabhängig waren. Wenn Sie dann [E]*[A] berechnen, bekommen Sie immer noch etwas das der Einheitsmatrix zumindest ähnlich schaut.
Wir haben auch ein Programm um den GGT (größten gemeinsamen Teiler) und das KGV (kleinstes gemeinsames Vielfaches) einer Liste von Ganzzahlen zu berechnen. Diese werden dabei in L6 gespeichert. Seien Sie sich dessen bewußt, daß die Programme aus diesem Abschnitt auch bestehende skalare Variablen ändern können und diese nicht wie die Matrixprogramme vorübergehend in L6 abspeichern (außer GJGGTDIV daß dafür zusätzlich L5 benutzt). Das GGT0 Programm benutzt etwa G und F, während das KGV Programm noch mehr Variablen ändert (schauen Sie hierfür in den Sourcen nach). Das Programm PRIM faktorisiert Primzahlen und speichert das Ergebnis in der Matrix [E]. Das Programm TTBOOL wertet die boolsche Funktion Y0 für alle Belegungen von A, B, C und D aus. Daraufhin gibt es die Wahrheitstabelle von Y0 aus. So können Sie etwa vergleichen, ob zwei boolsche Funktionen äquivalent sind. Es gibt auch Programme zur Berechnung des 3D-Kreuzproduktes und des Einheitsvektors mit Eingabe und Ergebnis in L6. Der Unterschied zwischen den Programmen GGT und GGT0 ist, daß GGT die Eingabe vom Benutzer entgegennimmt, während GGT0 intern vom Programm GJGGTDIV aufgerufen wird.
Genießen Sie zum Schluß einen in Polarkoordinaten gezeichneten Pfau (Programm ZPFAU). Das funktioniert alleine mit den sechs Funktionen r1-r6. Wenn Sie den Quellcode zum Programm lesen um den Pfau etwa auch ohne TI-82 darzustellen, dann müssen Sie den Klammeraffen “@” als griechisches Theta interpretieren.
TI-82 Programme | als Tar Archiv; extrahieren mit tar -xvf xy.tar |
inverse Matrix berechnen | diesen Quellcode aus der .tar-Datei oben ansehen |
Gauss Algorithmus | diesen Quellcode aus der .tar-Datei oben ansehen |
runWinXP | Bash script, das Qemu für Windows XP mit verbundenem seriellen Port aufruft |