
                          Gleichung
                          =========


Rechtliches
-----------

Gleichung ist ShareWare, d.h. wer es regelmäßig benutzt, der muß eine
Gebühr an den Autor entrichten. Dafür schlage ich DM 20,- vor, wer mehr
zahlen will darf das gerne tun.... (Adresse am Ende dieser Anleitung).


!!!!!
Ich übernehme keine Haftung für Schäden, die aus der sach- oder unsach-
gemäßen Benutzung des Programms entstehen !!!!
!!!!!


Dieses Programm darf (und soll) in Mailboxen und sonstige elektronische 
Netze eingespielt werden. Das Programm darf (und soll) in PD-Disk-Serien
aufgenommen werden, solange der Verkaufspreis je Diskette DM 5,-- 
(oder einen äquivalenten Betrag einer anderen Währung) nicht übersteigt.
Dieses Programm darf (und soll) auf CD's mit PD-Software aufgenommen
werden, solange der Preis je CD DM 60,- (oder einen äquivalenten Betrag 
einer anderen Währung) nicht übersteigt.
Falls jemand dieses Programm auf Disketten/CD's zu einem höheren Preis
vertreiben will, so ist dafür meine schriftliche Erlaubnis erforderlich.


Einleitung
==========

Aufgabe
-------
GLEICHUNG ist ein Programm zum Lösen linearer Gleichungssysteme. Im
Gegensatz zu ähnlichen Programmen ist GLEICHUNG nicht auf Systeme mit
drei Gleichungen und drei Unbekannten beschränkt, auch muß das System
nicht quadratisch oder eindeutig lösbar sein. GLEICHUNG bearbeitet
Systeme, deren Größe (fast) nur vom Speicher abhängt (in dieser Version
ist die Eingabe auf maximal 9999 Gleichungen mit 9999 Unbekannten beschränkt.
Theoretisch sind bis zu ca. 32000 Gleichungen mit 32000 Unbekannten möglich.
Bei solchen Dimensionen verliert man aber leicht den Überblick).

Rechneranforderungen
--------------------
GLEICHUNG benötigt einen Amiga mit Kickstart/Workbench 2.0. Das
Programm sollte mit 512kB laufen, benötigt für größere Gleichungssysteme
aber deutlich mehr Speicher. In LIBS: muß sich die ASL.LIBRARY befinden.


Das Programm
============

Starten des Programms
---------------------
Das Programm wird einfach durch einen Doppelclick auf sein Icon gestartet.
Ein Start von der Shell ist zwar möglich, aber nicht empfehlenswert,
da auf diese Art keine weiteren Informationen an das Programm übertragen
werden können.
Das Programm meldet sich sofort nach dem Starten mit einem Fenster, in
dem die Anzahl der Gleichungen und die Anzahl der Variablen abgefragt wird.
Hier gibt man die gewünschten Werte wie gewohnt ein. Wird im oberen Stringgadget
die RETURN-Taste gedrückt, so wird automatisch das zweite Gadget aktiviert.
Wird in diesem die RETURN-Taste gedrückt, so ist das gleichbedeutend mit
der Anwahl von OK.

Aufbau des Bildschirms
----------------------
Im oberen Teil des Bildschirms befindet sich ein Text- und ein Stringgadget.
Das Textgadget zeigt an, was gerade auf dem Bildschirm dargestellt wird (Lösung
des Gleichungssystems, Zeilenstufenform oder Eingabe). Wenn das Stringgadget
eingeschaltet ist, kann hier ein Zahlenwert eingegeben werden.

Darunter befindet sich die Fläche, auf der die Werte dargestellt werden.
Unten und rechts sind zwei Rollbalken mit Pfeilen, mit denen durch
größere Systeme gefahren werden kann. Links wird die Nummer der Zeile
angezeigt, oben die Nummer der Spalte oder B für den rechten Teil
der Gleichung.

Ein Feld auf der Fläche ist invers hervorgehoben. Dieses Feld kann mit der
Maus und den Cursortasten (auch Shift-Cursor) bewegt werden. Das Ankli"cken
eines Feldes mit der Maus funktioniert natürlich auch. Wenn man sich
im Eingabemodus befindet, dann wird der Wert, der unter dem Kasten steht
auch noch im Eingabegadget oben rechts dargestellt. Wird dann die
RETURN-Taste gedrückt, so wird das Eingabegadget aktiviert und man kann
den Zahlenwert verändern. Wird statt der RETURN-Taste eine Zifferntaste,
Plus, Minus oder der Punkt gedrückt, so wird der angezeigte Wert im Eingabegadget
gelöscht und das gewählte Zeichen als ersten angezeigt. Wird bei aktivierten
Eingabegadget RETURN gedrückt, so wird der veränderte Wert übernommen und
das inverse Feld springt um eins weiter nach rechts (oder in die nächste Zeile,
falls es schon ganz rechts ist).
Befindet man sich nicht im Eingabemodus, so kann man die angezeigten
Werte nicht verändern.

Anzeigenmodi
------------
Das Programm merkt sich das eingegebene Gleichungssystem und kann es jederzeit
wieder darstellen. Außerdem ist es möglich, das Gleichungssystem in
Zeilenstufenform darzustellen. Schließlich kann man sich noch die
Lösung anzeigen lassen. Beim Anzeigen der Lösung wird in der obersten
Zeile (gekennzeichnet als Lsg) eine spezielle Lösung des Gleichungssystems
dargestellt, die weiteren Zeilen geben eine Basis des Lösungsraums für
das homogene System wieder.

Der Darstellungsmodus kann mit dem zweiten Menu gewählt werden. Der jeweils
aktive Modus wird markiert und zusätzlich im Textgadget dargestellt. Sollte
das System nicht lösbar sein, so wird dies gemeldet und in den Modus
Zeilenstufenform umgeschaltet.

Sollte beim Berechnen der Lösung ein Rechenfehler aufgetreten sein (meistens,
weil die Zahlen zu groß/klein geworden sind), so wird dies ebenfalls
angezeigt und in den Eingabemodus geschaltet.


Die Menus
---------
 Projekt
 -------
  Neue Gleichungen
  ----------------
Hier erscheint das gleiche Fenster wie direkt nach dem Start und fragt
nach der neuen Dimension des neuen Gleichungssystems. Mit CANCEL kann
man das alte System noch einmal zurück bekommen.

  Anzeigenformat
  --------------
Zum Anzeigen der Werte stehen einem drei Modi zur Verfügung:

[Normal : ] Die Zahlen werden in normaler Darstellung ausgegeben. Dabei
werden immer alle Vorkommastellen und die gewünschte Anzahl Nachkommastellen
ausgegeben. Nur für Zahl geeignet, deren Absolutwert etwa zwischen
0.001 und 9999 liegt.
[Exponential : ] Alle Zahlen werden in Exponentialdarstellung
ausgegeben. Die Anzahl der Nachkommastellen entspricht dem gewünschten Wert.
Für kleine Zahlen (>1) ist diese Darstellung unpraktisch.
[Gemischt : ] Kleine Zahlen werden normal dargestellt, große (bzw.
Zahlen zwischen 0 und 1 mit vielen Nullen nach dem Komma) in Exponentialdarstellung.
Die gewünschte Anzahl Nachkommastellen gibt nicht nur die tatsächliche
Anzahl der Nachkommastellen an (es wird immer eine Stelle weniger angezeigt
als ausgewählt wurde), sondern bestimmt auch, wann eine
Zahl in Exponentialdarstellung dargestellt wird oder nicht.

Diese drei Modi kann man in dem erscheinenden Fenster mit dem Cyclegadget
einstellen. Weiterhin kann in diesem Fenster eingegeben werden, wieviele
Stellen insgesamt dargestellt werden sollen (bestimmt die Breite jedes
Feldes auf dem Bildschirm) und wieviele davon als Nachkommastellen. Die
Anzahl Nachkommastellen kann nicht größer werden als die Gesamtzahl.
Sollte durch besonders große Zahlen der Bildschirmaufbau zerstört werden
(passiert leicht im Modus Normal) kann jederzeit dieses Fenster aufgerufen
werden um z.B. die Gesamtzahl neu einzugeben. Das eingegebene Gleichungssyste
geht dadurch NICHT verloren.

  Gleichungen laden/speichern
  ---------------------------
Es erscheint der Standart-Filerequester um nach dem Namen des Files
zu fragen. Wird ein Name angegeben, so wird dieses System geladen bzw. das
aktuelle System unter dem Namen abgespeichert. Wird CANCEL angewählt, so
passiert nichts.

  Iconify
  -------
Der Bildschirm des Programms wird geschlossen und auf der Workbench erscheint
das Icon des Programms. Durch einen Doppelclick auf das Icon wird der
Bildschirm wieder geöffnet und das alte Gleichungssystem wird wieder
angezeigt (Man landet immer im Eingabemodus).
Dieses Iconify funktioniert nur, wenn das Programm von der
Workbench aus gestartet wurde, da sonst die Information über das Icon
nicht vorhanden ist.

  Drucken
  -------
Mit diesem Menupunkt ist es möglich, das Gleichungssystem (jeweils in der
aktuell auf dem Bildschirm dargestellten Form, als Originalsystem, Zeilenstufenform
oder Lösung) auszudru"cken. Dazu erschein zuerst ein Fenster, in dem die
Anzahl Zeilen und Spalten abgefragt wird, die auf eine Seite des
Druckers passen. Danach erscheint das unter {Anzeigen}) beschriebene
Fenster, so daß man die (nur für den Ausdruck gültige) Art der Darstellung
jeder Zahl wählen kann. Schließlich erscheint noch eine Sicherheitsabfrage,
ob auch wirklich gedruckt werden soll. Sollte die Breite oder Höhe
des Blattes zu gering sein (so daß weniger als eine komplette Zahl auf das
Blatt paßt), so wird natürlich nicht ausgedruckt.

Um größere Gleichungssysteme in übersichtlicher Form auszudrucken, empfiehlt
es sich, die Schriftart des Druckers so klein wie möglich einzustellen.
Auch sollte die Anzahl der Spalten (die man im ersten Fenster eingibt) nicht
größer sein als (Right Margin - Left Margin) in Prefs/Printer (es wird
über Preferences ausgedruckt, dabei werden die Werte von Preferences nicht
verändert. Der Anwender ist selbst dafür verantwortlich, daß der Drucker
auch so viele Zeichen je Zeile/Zeilen je Blatt darstellen kann, wie
angegeben).

  About
  -----
Es erscheint ein Fenster mit Informationen über das Programm und den Autor.
Durch Anwahlt von OK oder durch einen Tastendruck verschwindet das Fenster
wieder.

  Ende
  ----
Nach einer Sicherheitsabfrage wird das Programm evt. beendet.


 Zeige
 -----
Die Items dieses Menus wurden bereits weiter oben erklärt.

 Preferences
 -----------
Hier kann der gewünschte Bildschirmmodus (ScreenMode) gewählt werden.
Dies funktioniert nur bei Workbench 2.1 oder höher (es wird der
Screenmoderequester der asl.library benutzt).

 Abspeichern
 -----------
Der gewählte Bildschirmmodus wird im Icon abgespeichert.


Optionen beim Start
-------------------
Über den Workbench-Menupunkt Information können dem Programm
weitere Befehle erteilt werden. Das Programm kennt die folgenden
Schlüsselworte:

[WIDTH : ] Hier kann die Breite des zu öffnenden Screens angegeben werden,
z.B. WIDTH=640. Dies ist auch der Defaultwert.
[HEIGHT : ] Hier wird entsprechend die Höhe angegeben. Default 256.
[VIEW : ] Hier kann der gewünschte Darstellungsmodus angegeben werden.
Dazu können sinnvolle Werte aus der Tabelle {VIEWS} addiert werden.
Außerdem sollte man die passenden Chips haben, wenn man ECS-Modi wählt.
So erhält man mit VIEW=32804 einen Superhires-Screen im Interlacemodus. Die
Werte für Höhe und Breite sollte man dann entsprechend setzen.
Bei Verwendung von Workbench 2.1 oder höher sollte der entsprechende
Menupunkt benutzt werden.

Wird eine größere Breite angegeben als im gewählten Darstellungsmodus
dargestellt werden kann, so kann der geöffnete Screen horizontal mit der Maus
verschoben werden (so wie man Ihn sonst vertikal verschiebt). Wenn
auf der Workbench Text-Overscann eingeschaltet ist, dann kann das
Programm seinen Screen auch mit dieser maximalen Größe darstellen.
Interessant sind auch die NTSC-Modi, da man hier eine höhere Bildwiederholfrequenz
erhält.

{Einige Werte für ViewModes}
NTSC_MONITOR_ID     69632
PAL_MONITOR_ID      135168
HIRES_KEY           32768
SUPER_KEY           32800
INTERLACE           4
VGAPRODUCT_KEY      233508
VGAPRODUCTLACE_KEY  233509

Die Angabe eines zu ladenen Gleichungssystems kann beim Start von der
Workbench auch über die erweiterte Auswahl (Anklicken mit der Maus,
SHIFT-Doppelklick auf das Programmicon) oder durch Doppelclick auf eine
Datei geschehen, die als Default-Tool dieses Programm gesetzt hat
(evt. mit Pfad). Wird mehr als eine Datei übergeben, so wird nur eine
dieser Dateien bearbeitet, alle anderen werden ignoriert.

Speicherbedarf
--------------
Bei einem Gleichungssystem mit m-1 Variablen und n Gleichungen werden
alleine für die eingegebenen Werte etwa m*n*8 Bytes gebraucht. Für
die Verwaltung dieser Werte werden nochmals n*4 Bytes benötigt. Die
gleiche Speichermenge wird nochmals gebraucht, um das System in Zeilenstufenform
im Speicher zu halten. Zum Merken der Lösung werden nochmals (m-1)*m*8
Bytes benötigt. Vor allem dieser Speicher kann mit Systemen mit großer
Variablenzahl sehr schnell zu Speicherplatzproblemen führen.
Dieser Speicher muß aber nicht zusammenhängend zur Verfügung
stehen. Das Programm braucht so viel Speicher, um die Werte bei größeren
Systemen schnell genug zur Verfügung zu stellen (man stelle sich ein
System mit 100 Gleichungen und 100 Variablen vor, bei dem bei jeder
Scrollaktion beim Anzeigen der Lösung diese komplett neu berechnet wird...).
Normalgroße Systeme sollten aber auf jedem Amiga laufen.


Meine Anschrift:
----------------

Wer Vorschläge, Fehlermeldungen oder Geld loswerden will, hier ist meine
Adresse:

                Rüdiger Dreier
                Gustav-Winkler-Str. 40
          33699 Bielefeld 


Bis auf weiteres bin ich auch per EMail erreichbar:

ruediger.dreier@dave.hrz.uni-bielefeld.de




