@DATABASE "Amatrix-Anleitung"

@NODE MAIN "Amatrix-Anleitung"

                               A m a t r i x
                           =====================

             *** Ein Amiga-Programm zur Matrizenberechnung ***

         (C) 1993-94 Nicolas Bassen. Alle Rechte liegen beim Autor

           Shareware (Bitte lesen Sie die @{" Nutzungsbedingungen " Link Nutzungsbedingungen}!)

-------------------------------------------------------------------------
@{" Überblick " Link Überblick}
@{" Wichtige Informationen " Link Wichtige_Informationen}
@{" Autor " Link Autor}
@{" INSTALLATION " Link INSTALLATION}
@{" Gebrauchsanweisung " Link Gebrauchsanweisung}
@{" Verschiedenes " Link Verschiedenes}
@{" Glossar " Link Glossar}
@ENDNODE

@NODE Überblick "Überblick"
Das Rechnen mit Matrizen gestaltet sich mit diesem Programm ebenso einfach
wie das Rechnen mit Zahlen auf dem Taschenrechner. Insbesondere sind
Kettenrechnungen wie (A*B)^T - ((1/5*C)^25)^-2  ohne Umstände durchzuführen.
Dies wird erst möglich mit Einführung der `Umgekehrt polnischen Notation`,
die weiter unten erklärt wird.
Dieses Programm vermag folgende grundlegenden Matrixoperationen anwender-
freundlich durchzuführen:

                                 Addition
                               Subtraktion
                              Multiplikation
                                Inversion
                              Determinanten
                              Transponieren
                         Konstantenmultiplikation
               Gleichungssysteme mit mehreren rechten Seiten
         Alle Funktionen auch für Matrizen mit komplexen Elementen

--------------------------------------------------------------------------
@ENDNODE

@NODE Wichtige_Informationen "Wichtige Informationen"

@{" Copyright " Link Copyright}
@{" Garantie " Link Garantie}
@{" Nutzungsbedingungen " Link Nutzungsbedingungen}
@ENDNODE

@NODE Copyright "Copyright"
                       Zur Weitergabe des Programms

   Dieses Programm darf und soll weitergegeben werden. Dabei darf aber
höchstens ein Betrag von insgesamt 5 DM (3$) je Diskette (inclusive Porto,
 Verpackung, Nebenkosten etc.) verlangt werden. Sollten Sie dies Programm
  auf einem Vertriebsweg bezogen haben, der diese Bedingungen verletzt,
      bitte ich Sie, mich mit entsprechenden Angaben zu informieren!

 Das Programm darf nur vollständig und unverändert weitergegeben werden.
    D.h. der gesamte Ordner /Amatrix/ muß mit vollständigem Inhalt
  weitergegeben werden. Wird der Ordner komprimiert (lha o.a), so sollte
            eine unverschlüsselte Nachricht darauf hinweisen!

 Falls das Programm in FD-Serien od. CD- bzw. anderen Programmsammlungen
  (z.B. Fish o.a.) aufgenommen werden soll, bedarf es der schriftlichen
                         Genehmigung des Autors.

 Jeder auf finanziellen Gewinn ausgelegte Vertrieb dieses Programmes ist
           ohne schriftliche Genehmigung des Autors untersagt!

              Bitte lesen Sie auch die @{" Nutzungsbedingungen " Link Nutzungsbedingungen}!

--------------------------------------------------------------------------
@ENDNODE

@NODE Garantie "Garantie"

 Der Autor kann keine Garantie geben, daß die in dieser Dokumentation be-
 schriebenen Programme 100% zuverlässig sind. Die Benutzung der Programme
  ist auf eigene Gefahr. Der Autor kann in keinem Fall für irgendwelche
  Schäden verantwortlich gemacht werden, die durch die Anwendung dieser
                           Programme entstehen.

                                   ***

              Bitte lesen Sie auch die @{" Nutzungsbedingungen " Link Nutzungsbedingungen}!

--------------------------------------------------------------------------
@ENDNODE

@NODE Nutzungsbedingungen "Nutzungsbedingungen"
Die Entwicklung des Programmes hat mehrere Monate gedauert. Um mir mein
schon sehr bemessenes Taschengeld (Student) aufzubessern, verlange ich für
das Programm einen Vergütungsbetrag.

                            Nutzungsbedingungen:

Die Demoversion soll nur über den Funktionsumfang des Programmes
informieren. Wer das Programm länger als einen Monat nutzt, muß sich
registrieren lassen. Für die rechtmaessige Nutzung des Programmes muß man
sich registrieren lassen. Dies geschieht durch Zusendung des ausgefüllten
"Registrationsblattes" und Bezahlung des Vergütungsbetrages. Das
Registrationsblatt erhalten sie, indem Sie die Datei `Registration`
ausdrucken! (Hierzu sehen Sie ggf. im Computerhandbuch nach)

Die Programme dürfen nicht zu Zwecken verwendet werden, die der
Forschung, Entwicklung, Konstruktion oder Produktion von militärischen
oder genmanipulierten Gütern dienen.

Das Programm und die damit zusammenhängenden Dateien dürfen weitergegeben
werden, wenn höchstens ein Betrag von insgesamt 5 DM (3$) je Diskette
(inclusive Porto, Verpackung, Nebenkosten etc.) verlangt werden. Sollten
Sie dies Programm auf einem Vertriebsweg bezogen haben, der diese
Bedingungen verletzt, bitte ich Sie, mich mit entsprechenden Angaben zu
informieren!

Das Programm darf nur vollständig und unverändert weitergegeben werden.
D.h. der gesamte Ordner `Amatrix` muß mit vollständigem Inhalt
weitergegeben werden. Wird der Ordner komprimiert (lha o.a), so sollte
eine unverschlüsselte Nachricht darauf hinweisen!

Falls das Programm in FD-Serien od. CD- bzw. anderen Programmsammlungen
(z.B. Fish o.a.) aufgenommen werden soll, bedarf es der schriftlichen
Genehmigung des Autors.

Jeder auf finanziellen Gewinn ausgelegte Vertrieb dieses Programmes ist
ohne schriftliche Genehmigung des Autors untersagt! Dies gilt
selbstverständlich auch für die kommerzielle Nutzung des Programmes.

Die mit einer `Registration` erhaltene `Schlüsseldatei` darf unter keinen
Umständen anderen zugänglich gemacht werden. Schlüsseldateien dienen
ausschließlich dem Zweck, dem registrierten Benutzer die
uneingeschraenkte Nutzung des Programmes zu ermöglichen. Sie enthalten
die persönlichen Daten des registrierten Anwenders.
--------------------------------------------------------------------------

@ENDNODE

@NODE Autor "Autor"
Informationen zum Autor:

Nicolas Bassen  
Grafeler Damm 64
D-27356 Rotenburg

                     FidoNet: 2:241/1120.6 (bevorzugt)  
                     Internet: k14k@zfn.uni-bremen.de

Ich bin am 21.04.68 geboren, wohne in Rotenburg Wümme und studiere zur
Zeit an der Universität Bremen Elektrotechnik. In meiner Freizeit
beschäftige ich mich mit Solartechnik, Elektromobilen, Regelungstechnik
und Mikrocontrollern. Wer hier auch Interesse hat, der kann mir ja mal
schreiben.

--------------------------------------------------------------------------

@ENDNODE

@NODE INSTALLATION "INSTALLATION"
Festplatte

Kopieren Sie den Ordner `Amatrix` einfach in das Verzeichnis, von
dem Sie es starten möchten. Das Programm kann nun mit einem Doppelklick
gestartet werden.

Diskette

Formatieren Sie eine Diskette und kopieren Sie anschließend den Ordner
`Amatrix` auf die Diskette. Nachdem Sie nun Ihren Amiga mit der
Workbench Diskette gestartet haben, legen Sie die Diskette ein
und starten das Programm mit einem Doppelklick.

@{" Systemanforderungen " Link Systemanforderungen}
@ENDNODE

@NODE Systemanforderungen "Systemanforderungen"
Die Rechenleistung kann nie hoch genug sein:
Für eine 10x10 Matrix benötigt man eine Anzahl an Rechenoperationen in der
Größenordnung von 10^8. (Cramers Rule)
Auch mit geeigneteren Rechenverfahren kann man die Zahl nicht bedeutend
verringern, so daß man auch auf leistungsstarken Rechnern keine Mühe hat
Wartezeiten zu erzeugen, wenn man nur die Matrizen groß wählt. 
In erster Linie wurde bei der Programmentwicklung Wert auf einfache 
Bedienung gelegt. Geschwindigkeitsoptimierungen wurden noch nicht
durchgeführt.

Amatrix wurde getestet und lief ohne Probleme auf folgenden Rechnern:

A4000/30  Workbench 3.0

Speicher: 1 MB sollte ausreichen.

--------------------------------------------------------------------------
@ENDNODE

@NODE Gebrauchsanweisung "Gebrauchsanweisung"
@{" Bemerkungen " Link Bemerkungen}
@{" Statusfeld " Link Statusfeld}
@{" Polnisch umgekehrte Notation " Link Polnisch_umgekehrte_Notation}
@{" Menus " Link Menus}
@{" Knöpfe " Link Knöpfe}
@{" Matrizeneingabe " Link Matrizeneingabe}
@{" Schnellkurs " Link Schnellkurs}
@ENDNODE

@NODE Bemerkungen "Bemerkungen"
         Da ich nicht abschätzen kann, welche Berechnungen mit dem
 Programm durchgeführt werden, weise ich an dieser Stelle darauf hin, daß
die Ergebnisse, die dieses Programm angibt, kritisch zu betrachten sind. 
        Es sollten, wenn möglich immer Proben durchgeführt werden!

                                Siehe dazu:

                            @{" Rechengenauigkeit " Link Rechengenauigkeit}
                        @{" Mathematische Grundregeln " Link Mathematische_Grundregeln}
                             @{" Probleme|Fehler " Link Probleme|Fehler}
                                @{" Beispiele " Link Beispiele}
                             @{" Literaturliste " Link Literaturliste}

--------------------------------------------------------------------------
@ENDNODE

@NODE Statusfeld "Statusfeld"
Nach dem Starten öffnet sich ein Fenster auf der Workbench.
Zuerst führt das Programm eine Prüfroutine aus, die ein paar Dinge abcheckt.
Unter anderen wird dazu der Originalname des Programms benötigt. Dieser
sollte aus diesem Grunde nicht verändert werden. Neben dem
Anzeigefenster befinden sich 6 Knöpfe. Jeder dieser Knöpfe steht für
einen Matrixspeicherplatz. Unter diesen Knöpfen befinden sich die
Operator-Knöpfe mit denen Rechenoperationen ausgeführt werden können. Am
unteren Ende des Fensters befindet sich ein Statusfeld. In diesem Feld
teilt Ihnen das Programm Informationen zum Programmablauf mit und nimmt
Eingaben entgegen.

Wichtig: Die führenden 2 Ziffern im Statusfeld geben die zuvorletzt und
         die zuletzt aktivierte Matrix an !!
         12 bedeutet: 2 ist zuletzt aktiviert ; 1 ist zuvorletzt aktiviert
         Würde jetzt `+` aktiviert, würde 1+2 berechnet !

`AKTIVIEREN` HEIßT AUCH TATSÄCHLICH ANKLICKEN !!!!

--------------------------------------------------------------------------
@ENDNODE

@NODE Polnisch_umgekehrte_Notation "Polnisch umgekehrte Notation"
Der Ausdruck A+B soll berechnet werden:

Die Addition ist eine Operation die 2 Elemente verknüpfen kann. Man gehe
nun wie folgt vor:

 1. `A` aktivieren
 2. `B` aktivieren
 3. `+` Additionsoperator aktivieren

Das Ergebnis von A+B ist nun zwischengespeichert.

Das heißt, daß bei der umgekehrt polnischen Notation erst beide Elemente
aktiviert werden und dann der Operator. (statt A+B eben AB+)

Dieses Verfahren wird bei allen Verknüpfungsoperationen verwendet, die 2
Elemente verknüpfen (*,+,...)
Während die Operatoren, die nur auf ein Element angewendet werden, sich
immer auf das zuletzt aktivierte beziehen. (^,^T,DEL,...)

--------------------------------------------------------------------------
@ENDNODE

@NODE Menus "Menus"

@{" Projekt " Link Projekt}
@{" Edit " Link Edit}
@{" Option " Link Option}
@ENDNODE

@NODE Projekt "Projekt"

@{" Info " Link Info}
@{" Laden " Link Laden}
@{" Speichern " Link Speichern}
@{" Ende " Link Ende}
@ENDNODE

@NODE Info "Info"
Gibt einen Infotext aus

@ENDNODE

@NODE Laden "Laden"
Hiermit können Matrizen geladen werden, die vorher mit dem Programm 
abgespeichert wurden. Die Matrix wird in den aktuellen Matrixspeicherplatz
geladen.

@ENDNODE

@NODE Speichern "Speichern"
Hiermit kann die aktuelle Matrix gespeichert werden. Es wird ein internes
Format verwendet.

@ENDNODE

@NODE Ende "Ende"
Beendet das Programm ohne Sicherheitsabfrage!


@ENDNODE

@NODE Edit "Edit"

@{" Matrix editieren " Link Matrix_editieren}
@{" Komplex -> Reell " Link Komplex_->_Reell}
@{" Reell -> Komplex " Link Reell_->_Komplex}
@{" Realteil -> Null " Link Realteil_->_Null}
@{" Imaginäteil -> Null " Link Imaginäteil_->_Null}
@{" Matrix -> Einheitsmatrix " Link Matrix_->_Einheitsmatrix}
@{" Alle löschen " Link Alle_löschen}
@ENDNODE

@NODE Matrix_editieren "Matrix editieren"
Die Matrix wird zum Editieren übergeben

@ENDNODE

@NODE Komplex_->_Reell "Komplex -> Reell"
Löscht den Imaginaerteil der aktuellen Matrix

@ENDNODE

@NODE Reell_->_Komplex "Reell -> Komplex"
Fügt zu jedem Matrixelement einen Imaginaerteil an und setzt diesen auf
Null

@ENDNODE

@NODE Realteil_->_Null "Realteil -> Null"
Setzt den Realteil aller Matrixelemente auf Null

@ENDNODE

@NODE Imaginäteil_->_Null "Imaginäteil -> Null"
Setzt den Imaginaerteil aller Matrixelemente auf Null

@ENDNODE

@NODE Matrix_->_Einheitsmatrix "Matrix -> Einheitsmatrix"
Wenn die Matrix quadratisch ist, wird sie in eine Einheitsmatrix
umgewandelt. D.h. alle Diagonalelemente werden zu 1,alle anderen zu 0.

@ENDNODE

@NODE Alle_löschen "Alle löschen"
Die Matrizen 1-6 werden ohne Sicherheitsabfrage gelöscht.


@ENDNODE

@NODE Option "Option"

@{" Anzeige " Link Anzeige}
@{" Darstellung " Link Darstellung}
@ENDNODE

@NODE Anzeige "Anzeige"
 -alle Matrizen werden angezeigt

 -nur die aktuelle Matrix wird angezeigt. Diesen Modus
  sollte man bei langsamen Rechnern aktivieren.

@ENDNODE

@NODE Darstellung "Darstellung"
Hier kann die Anzeigegenauigkeit bestimmt werden. Um bei der Anzeige noch
die Zeilen und Spalten der Matrix erkennen zu können, muß eine Formatierung
der Elemente vorgenommen werden. Die in der Anzeige dargestellten Werte
sind immer gerundet. Intern wird aber ständig die genauen Werte verwendet.

                +000.000  Jedem Element stehen 8 Stellen zur Verfügung.
                          Bei Bedarf wird eine wissenschaftliche Anzeige
                          verwendet. (+10e+3 = +10 * (10*10*10))
                          Dieses Darstellung ist die informativste und
                          wird deswegen auch bei Ergebnisanzeigen
                          eingeschaltet. Bei den anderen Einstellungen ist
                          Vorsicht geboten:

                +000      Jedem Element stehen 4 Stellen zur Verfügung.
                          0.009 wird als 0 dargestellt.
                          10000 wird als *** dargestellt

                +0        Jedem Element stehen 2 Stellen zur Verfügung.
                          0.1 wird als 0 dargestellt
                          100 wird als *** dargestellt

@ENDNODE

@NODE Knöpfe "Knöpfe"

@{" Def. " Link Def.}
@{" Name " Link Name}
@{" <-> " Link <->}
@{" a*Matrix " Link a*Matrix}
@{" Transponieren " Link Transponieren}
@{" Invertieren " Link Invertieren}
@{" Det " Link Det}
@{" Ax=B " Link Ax=B}
@{" +,- " Link +,-}
@{" * " Link *}
@{" ^ " Link ^}
@{" DEL " Link DEL}
@{" Zeigen " Link Zeigen}
@{" Stat " Link Stat}
@{" 1-6 " Link 1-6}
@{" (7) " Link (7)}
@{" (8) " Link (8)}
@{" --> " Link -->}
@{" TXT->RAM " Link TXT->RAM}
@ENDNODE

@NODE Def. "Def."
Die aktuelle Matrix wird definiert. Das Matrizeneingabefenster wird
geöffnet.

@ENDNODE

@NODE Name "Name"
Es kann ein Name für die aktuelle Matrix eingegeben werden.

@ENDNODE

@NODE <-> "<->"
Die Inhalte der aktivierten Matrixspeicherplätze werden vertauscht.

@ENDNODE

@NODE a*Matrix "a*Matrix"
Die Matrix wird mit der eingegebenen Konstanten multipliziert. Im
Statusfeld können auf logische Ausdrücke eingegeben werden. (z.B.: 1+2) Ist
die Matrix komplex, so wird nach Real- und Imaginaerteil der Konstanten
gefragt. Um eine reelle Matrix mit einer komplexen Konstanten zu
multiplizieren, muß die Matrix also erst komplex gemacht werden. (Siehe
Menu @{" Reell -> Komplex " Link Reell_->_Komplex})

@ENDNODE

@NODE Transponieren "Transponieren"
Die aktuelle Matrix wird transponiert. (Zeilen werden zu Spalten)

@ENDNODE

@NODE Invertieren "Invertieren"
Die aktuelle Matrix wird invertiert wenn dies möglich ist. (Die
Matrizeninversion ist nur für quadratische Matrizen definiert. D.h.
Zeilenzahl = Spaltenzahl)

@ENDNODE

@NODE Det "Det"
Die Determinante der aktuellen Matrix wird berechnet.
(Nur quadratische Matrizen!)

@ENDNODE

@NODE Ax=B "Ax=B"
Löst das Gleichungssystem A * x = B, wobei B die zuletzt angeklickte Matrix
und A die zuvorletzt angeklickte Matrix bezeichnet. Es wird versucht eine
Matrix x zu finden, die Multipliziert mit A dann B ergibt. Die Theorie der
Gleichungssysteme sagt das es entweder

                -eine eindeutige Lösung
                -keine Lösung
                -unendlich viele Lösungen

gibt. Letzgenannte Möglichkeit wird auch mit n-parametriger Lösungsschar
bezeichnet. Ist eine n-parametrige Lösungsschar Lösung des
Gleichungssystems, so wird in 7 eine Lösungsmatrix übergeben. In 8 wird
eine mögliche Basis übergeben. Da es je nach Gleichungssystem z.B. auch
 5-parametrige Lösungen gibt, sind in 8 immer alle Basisvektoren
nebeneinander zusammengefasst. (Siehe @{" Beispiele " Link Beispiele})

@ENDNODE

@NODE +,- "+,-"
Die aktuelle Matrix wird zu/von der vorher aktuellen Matrix
addiert/subtrahiert. Beide Matrizen müssen gleiche Zeilen- und Spaltenzahl
haben.

@ENDNODE

@NODE * "*"
Die aktuelle Matrix wird mit der vorher aktuellen Matrix multipliziert.
Merke: Die Matrizenmultiplikation ist im Allgemeinen nicht kommutativ:
A*B<>B*A

@ENDNODE

@NODE ^ "^"
Die aktuelle Matrix wird mit sich selbst multipliziert. Der Exponent muß
ganzzahlig und größer als 1 sein.

@ENDNODE

@NODE DEL "DEL"
Die aktuelle Matrix wird ohne Sicherheitsabfrage gelöscht, wenn dieser
Knopf mit einem Doppelklick aktiviert wird.

@ENDNODE

@NODE Zeigen "Zeigen"
Zeigt alle bzw. nur die aktuelle Matrix in der gewählten
@{" Darstellung " Link Darstellung} in der Anzeige an.

@ENDNODE

@NODE Stat "Stat"
Gibt den Status der Matrizenspeicher an.

@ENDNODE

@NODE 1-6 "1-6"
Dies sind 6 Speicherplätze für die Matrizen. Jeweils zwei können mit der
Maus auf einmal aktiviert werden. Der Knopf , welcher zuletzt aktiviert
wurde bezeichnet die aktuelle Matrix. (Diese Information kann auch der
@{" Statusfeld " Link Statusfeld} entnommen werden.)

@ENDNODE

@NODE (7) "(7)"
                Dieser Speicherplatz ist für Ergebnisse reserviert.
                Bei Aktionen, die eine Matrix erzeugen, wird das Ergebnis
                in diesen Speicherplatz geschrieben. Danach wird
                automatisch `7` zur aktuellen Matrix und `6` zur vorher
                aktuellen Matrix. Dies hat den Zweck, daß

                1. durch Aktivieren von `<->` sofort das Ergebnis
                   gesichert werden kann, ohne viel herumzuklicken.

                2. durch Aktivieren eines anderen Matrixspeicherplatzes und
                   aktivieren von `<->` ebenfalls das Ergebnis gesichert
                   ist.

                3. durch Aktivieren eines anderen Operators sofort
                   weitergerechnet werden kann, da `7` ja aktuelle Matrix
                   ist. (Stichwort Kettenrechnung)

                4. durch Aktivieren eines anderen Matrixspeicherplatzes
                   und eines Verknüpfungsoperators (+,-,...) ohne
                   Verzögerung weiter gerechnet werden kann.

@ENDNODE

@NODE (8) "(8)"
                Der Inhalt von `7` wird mit `-->` nach `8` kopiert.
                Dieser Matrixspeicherplatz wurde auf Wunsch einiger
                Anwender dieses Programms entworfen, die vom
                Taschenrechner das Zwischenspeichern (STO) gewohnt sind.
                Es ist hiermit möglich, eine Matrix zu vervielfältigen.

@ENDNODE

@NODE --> "-->"
siehe @{" (8) " Link (8)}

@ENDNODE

@NODE TXT->RAM "TXT->RAM"
Der Inhalt des Anzeigefensters wird in der RamDisk abgelegt.

@ENDNODE

@NODE Matrizeneingabe "Matrizeneingabe"
In diesem Fenster können Matrizen definiert werden. Die unterstrichenen
Buchstaben informieren über Funktionen, die auch über die Tastatur
erreichbar sind, wenn kein Eingabefeld aktiviert ist. Dies ist nützlich,
damit man nicht ständig zu Maus greifen muß.
Dieses Fenster kennt 2 Modi. Im Definitionsmodus können nur die
matrixspezifischen Daten verändert werden. Ist dies geschehen, kann mit
`Eingabe starten` in den Eingabemodus gewechselt werden. Hier können
die Matrixelemente eingegeben werden.


@{" Menus. " Link Menus.}
@{" Definitionsmodus " Link Definitionsmodus}
@{" Eingabemodus " Link Eingabemodus}
@{" Fensterschließsymbol " Link Fensterschließsymbol}
@ENDNODE

@NODE Menus. "Menus."
     Laden:     Es kann eine Matrix geladen werden, die vorher mit diesem
                Programm abgespeichert wurde.

 Speichern:     Eine vollständig definierte Matrix kann gespeichert
                werden. Es wird ein programmeigenes Format verwendet.


@ENDNODE

@NODE Definitionsmodus "Definitionsmodus"
Felder, die im Definitionsmodus aktiv sind:

`Name`          Der hier eingetragene Name wird als Matrixname verwendet.

`Zeilenanzahl`  Zeilenanzahl der Matrix (natürlich positiv und ganzahlig)

`Spaltenanzahl` Spaltenanzahl der Matrix (ganzahlig und positiv)

`Eingabe starten`       Hiermit wird vom Definitionsmodus in den
                        Eingabemodus gewechselt.

`Typ`           Hiermit wird bestimmt, ob die Elemente der Matrix reelle
                oder komplexe Zahlen darstellen. Wer nicht weiß, was
                komplexe Zahlen sind, sollte immer reell wählen (und
                darüber nachdenken, welche Zahl man mit sich selbst
                multiplizieren muß, damit `-1` heraus kommt. Was ergibt
                Wurzel aus `-1`?)

@ENDNODE

@NODE Eingabemodus "Eingabemodus"
Felder, die im Eingabemodus aktiv sind:

`Neu Definieren`        Hiermit wird in den Definitionsmodus gewechselt.
                        Nur dort können die matrixspezifischen Daten
                        verändert werden.

`Matrix anzeigen`       Zeigt die Matrixelemente an. (Gerundet, damit man
                        Spalten und Zeilen erkennen kann. Intern werden
                        natürlich die tatsächlich eingegebenen Werte
                        verwendet)

`Eingabefeld`           Hier können die Elemente eingegeben werden. (1+2
                        wird als 3 erkannt)

Die beiden Felder über dem Eingabefeld geben Auskunft über das derzeit
aktuelle Matrixelement im Eingabefeld. 

`OK`                    Wenn alle Matrixelemente definiert sind kann die
                        Matrix mit diesem Knopf an das Hauptprogramm
                        übergeben werden.

`Cursortaten`           Wenn kein Eingabefeld aktiv ist, kann mit den
                        Cursortasten durch die Matrix "gefahren" werden.
                        Dies ist besonders bei großen Matrizen angenehm,
                        um sich im Eingabefeld von dem tatsächlichem Wert
                        der Elemente zu überzeugen, da dieser Wert in der
                        Anzeige möglicherweise durch das Runden nicht
                        genau genug ablesen läßt. Diese Möglichkeit kann
                        auch verwendet werden, wenn eine Ergebnismatrix im
                        Hauptprogramm näher betrachtet werden soll. Dazu
                        muß die Matrix abgespeichert werden und dann aus
                        diesem Fenstern neu geladen werden.

@ENDNODE

@NODE Fensterschließsymbol "Fensterschließsymbol"
Abbruch der Eingabe nach 2-maligem anklicken.

--------------------------------------------------------------------------
@ENDNODE

@NODE Schnellkurs "Schnellkurs"

 1. `1` aktivieren  (@{" Statusfeld " Link Statusfeld})
 2. @{" Def. " Link Def.} für definieren aktivieren
    nun öffnet sich das Matrizeneingabefenster.

    @{" Matrizeneingabe " Link Matrizeneingabe}:

   a. Name:             In diesem Feld wird der Matrixname eingegeben
   b. Zeilenanzahl      Zeilenanzahl der Matrix
   c. Spaltenanzahl     Spaltenanzahl der Matrix

   Unsere Matrix soll `Erste` heißen und 2 Zeilen und 2 Spalten haben. Bitte
   geben Sie in den entsprechenden Feldern diese Werte ein.
   Ist dies erfolgt aktivieren Sie mit der Maus den `Eingabe starten` Knopf
   oder drücken die `e`-Taste, wenn kein Textfeld aktiv ist.
   Nun können die Elemente der Matrix eingegeben werden.

                        Erste = 1 2
                                3 4
   Dazu werden die
   Werte im Textfeld eingegeben und mit der Eingabetaste bestätigt.
   Nachdem das letzte Element eingegeben wurde, erscheint die Matrix im
   Anzeigefeld. Dieses wird nun aktiviert, indem Sie mit der Maus darauf
   klicken. Versuchen Sie jetzt einmal die
   `CURSOR`- Tasten zu verwenden. Mit deren Hilfe kann man nun leicht zu
   einem Element fahren.
   Aktivieren Sie nun `OK`.

   Die Matrizeneingabe für Matrix `Erste` ist nun abgeschlossen.

 3. Aktivieren Sie @{" Zeigen " Link Zeigen} (Die definierten Matrizen werden angezeigt)
 4. Aktivieren Sie @{" Det " Link Det} (Es wird die Determinante berechnet)
 5. Aktivieren Sie @{" Invertieren " Link Invertieren} (Die Inverse Matrix wird berechnet)
   Das Ergebnis dieser Operation wird im Matrixspeicherplatz 7 abgelegt,
   um nicht eine schon vorhandene Matrix in 1-6 zu überschreiben.
   Automatisch wird nun 6 und 7 aktiviert. Dies hat den Vorteil, daß Sie
   jetzt die Möglichkeit haben, die Matrix einfach in den Speicherplatz zu
   tauschen, in den Sie wünschen.
   Wir wollen die Inverse in den Speicherplatz 2 tauschen:

   a) Aktivieren Sie `2` (@{" Statusfeld " Link Statusfeld} zeigt `72`)
   b) Aktivieren Sie @{" <-> " Link <->} (Inhalt von 2 und 7 werden vertauscht)

Bemerkung: Die meisten Operationen, die eine Matrix als Ergebnis haben,
           geben der Ergebnismatrix einen passenden Namen. Dieser sollte
           aber angepaßt werden, wenn umfangreichere Rechnungen
           durchgeführt werden sollen, da sonst Verwirrung entsteht. (Dem
           Programm sind die Namen egal)

 6. Aktivieren Sie @{" Name " Link Name} und geben Sie als neuen Namen "Erste^-1" ein!
 7. Aktivieren Sie `1`, dann `2` (@{" Statusfeld " Link Statusfeld} zeigt "12" )
 8. Aktivieren Sie @{" * " Link *} (Es wird 1*2 ausgeführt)
 9. Als Ergebnis entsteht eine Einheitsmatrix, was eine gute Probe für
    unsere vorherige Aufgabe darstellt.
 10. Aktivieren Sie `1` dann @{" a*Matrix " Link a*Matrix} und geben Sie `2`ein u. drücken Sie
     anschließend die @{" Eingabetaste " Link Eingabetaste}. (Die Matrix wird mit 2 multipliziert)
 11. Aktivieren Sie `3` und @{" <-> " Link <->} (Inhalt von 3 und 7 werden vertauscht)
 12. Aktivieren Sie `1` und `3` und `-` (1-3 wird berechnet/siehe @{" +,- " Link +,-})
 13. Aktivieren Sie `3` und @{" <-> " Link <->} (Inhalt von 3 und 7 werden vertauscht)
 14. Aktivieren Sie `1` und `3` und `+` (1+3 wird berechnet)
     Das Ergebnis ist eine Nullmatrix.
 15. Aktivieren Sie `1` und @{" ^ " Link ^} und geben Sie `3` ein. (1 hoch drei wird
     berechnet.)
 16. Aktivieren Sie `3` und @{" <-> " Link <->} (Inhalt von 3 und 7 werden vertauscht)
 17. Aktivieren Sie @{" Transponieren " Link Transponieren} (Die Matrix in 3 wird transponiert,
     d.h. die Zeilen und Spalten werden vertauscht)
 18. Aktivieren Sie `3` und @{" <-> " Link <->} (Inhalt von 3 und 7 werden vertauscht)
 19. Aktivieren Sie @{" --> " Link -->} (Inhalt von 7 wird nach 8 kopiert)
 20. Aktivieren Sie `2` und @{" DEL " Link DEL} mit einem Doppelklick (2 wird gelöscht)

--------------------------------------------------------------------------

@ENDNODE

@NODE Verschiedenes "Verschiedenes"
@{" Warum entstand dieses Programm " Link Warum_entstand_dieses_Programm}
@{" Mathematische Grundregeln " Link Mathematische_Grundregeln}
@{" Rechengenauigkeit " Link Rechengenauigkeit}
@{" Probleme|Fehler " Link Probleme|Fehler}
@{" Beispiele " Link Beispiele}
@{" Danke " Link Danke}
@{" Sprachkundige gesucht " Link Sprachkundige_gesucht}
@{" Literaturliste " Link Literaturliste}
@ENDNODE

@NODE Warum_entstand_dieses_Programm "Warum entstand dieses Programm"

Jeder kennt sie und scheut davor, mit ihnen konfrontiert zu werden. Diese
Scheu kommt nicht von ungefähr, denn wer mit Matrizen zu tun hat, der muß
viel rechnen. Wenn die Rechnung beendet ist, fängt man wiederum an
nachzurechnen ob das Ergebnis stimmt.

Das muß nicht sein, denn die Matrizenalgebra ist bestens dafür geeignet,
um einen Rechenknecht damit zu beauftragen.
Dies ist schon auf allen Rechnersystemen und in den verschiedensten Pro-
grammiersprachen geschehen. Mich stört dabei jedoch, daß die mir bekannten
Lösungen nicht anwenderfreundlich sind. In einigen Lösungen muß man sein
Matrizenproblem erst umständlich formalisieren, aber muß man für jedes
Problem das programmieren anfangen?
Hingegen fehlte in anderen Lösungen die Möglichkeit Kettenrechnungen, wie
etwa
                           (A*B)^T - ((1/5*C)^25)^-2

ohne großen Aufwand zu berechnen. Also entschloß ich mich eine Lösung zu
entwerfen, welche ein komfortables Matrizenmanagement bietet und obigen
Ausdruck quasi per Maus lösen kann.

Matrizen werden in vielen Fällen gebraucht:

- Beschreibung/Lösung linearer Gleichungssysteme
- Koordinatentransformation
- Lösen von Differentialgleichungen
- Lösen von Differentialgleichungssystemen
- Systembeschreibungen
- Beschäftigungstherapie für Schüler und Studenten
- ...

Ferner trifft man auf Matrizen in der

- Elektrotechnik
- Physik
- Chemie
- Regelungstechnik
- Wirtschaft
- Statistik
- Schule
- ...

--------------------------------------------------------------------------
@ENDNODE

@NODE Mathematische_Grundregeln "Mathematische Grundregeln"
Eine (m x n)-Matrix ist eine rechteckiges Zahlenschema, das aus m*n Zahlen
- Elemente genannt - besteht, die in m Zeilen (Zeilenvektoren) und n
(Spaltenvektoren) angeordnet sind.

Die Division ist unter Matrizen nicht definiert.

Das Matrizenprodukt ist im allgemeinen nicht kommutativ => A*B <> B*A
A*A^-1 =A^-1*A=Einheitsmatrix (E)

Es können nur Matrizen multipliziert werden, wenn die Spaltenanzahl der
ersten Matrix n1 gleich der Zeilenanzahl m2 der zweiten Matrix ist. Die
Ergebnismatrix ist dann eine m1 x n2 Matrix.

Addition und Subtraktion ist nur unter gleichen Matrizen definiert:
m1 x n1 = m2 x n2

Siehe auch @{" Literaturliste " Link Literaturliste}...


--------------------------------------------------------------------------
@ENDNODE

@NODE Rechengenauigkeit "Rechengenauigkeit"
Dieses Programm führt Berechnungen im doppelt genauen IEEE
Fließkomma-Operationmodus durch. Wenn das Programm Matrizen anzeigt, so
sind diese aber stets gerundet und in ein Format gepreßt, da man sonst
nicht den geringsten Nutzen einer @{" Darstellung " Link Darstellung} hätte. Da nach vielen
Berechnungen die Genauigkeit von Digitalrechnern "verschwimmt", werden
alle Werte nach der 12 Nachkommastelle gerundet.

D.h. aus einer 0.0000000000001 wird eine 0 gerundet

--------------------------------------------------------------------------
@ENDNODE

@NODE Probleme|Fehler "Probleme|Fehler"
Natürlich ist das Programm nicht fehlerfrei!

Wenn Sie der Meinung sind, daß das Programm fehlerhafte Matrizen berechnet,
machen Sie (wenn möglich) erst eine mathematische Probe und vergewissern
sich, daß der gewählte Darstellungsmodus auch den richtigen Wert anzeigen
kann. Im Zweifelfalle immer +000.000 einstellen.
(Siehe Menu: @{" Darstellung " Link Darstellung} bzw. @{" Eingabemodus " Link Eingabemodus} `Cursortasten`)

Wenn Sie der Meinung sind, das Programm `hängt`, dann beachten Sie, daß die
von Ihnen gewählten Berechnungen einige Zeit in Anspruch nehmen können.
Bevor Sie einen `Reset` ausführen, sollten Sie versuchen das Multitasking
des Amiga zu nutzen. Lassen Sie das Matrizenprogramm rechen und erledigen
in der Zeit etwas anderes. (Schreiben Sie einem Freund oder mir)
Wenn sich nach einiger Zeit tatsächlich gar nichts tut, schreiben Sie mir
auch und beschweren sich, indem Sie mir das ausgefüllte Formular
`Fehlerreport` schicken. Ich werde dann versuchen den Fehler zu
beseitigen.

Das Programm ist nicht besonders fontsensitiv, kann aber mit gewissen
Einschränkungen problemlos betrieben werden. (Topaz 8 einstellen)
(Deutscher Zeichensatz)

Eventuell müssen die Farben angepaßt werden, um im Dateiauswahlrequester
angenehmer arbeiten zu können.

Fehler?
Bei der Umgebungsvielfalt von Programmen bezüglich verschiedener
Kickstart- und Workbenchversionen zusammen mit diversen Erweiterungen
werden sich mit Sicherheit Konstellationen ergeben, die Probleme bereiten.

Wer Fehler entdeckt, der schicke mir das ausgefüllte Formular
`Fehlerreport`, welches sich beim Programm befindet.

Wer Funktionen vermißt, schreibe mir dies!
Wer Anregungen hat, schreibe mir dies!
Wer Fragen hat, schreibe mir dies!
Wer Danke sagen möchte, schreibe mir eine nette Postkarte! (Briefe oder
Anerkennungen in einer Art und Weise in der Sie gedenken mich für meine
Mühe zu entlohnen sind keinesfalls verboten. B-)

Bei entsprechender Resonanz sollten weitere Versionen denkbar sein.

--------------------------------------------------------------------------
@ENDNODE

@NODE Beispiele "Beispiele"
Ausgewählte Beispiele: (nicht mit der Demoversion ausführbar)

@{" Gleichungssystem ohne Ax=B-Knopf " Link Gleichungssystem_ohne_Ax=B-Knopf}
@{" LGS eindeutig lösbar " Link LGS_eindeutig_lösbar}
@ENDNODE

@NODE Gleichungssystem_ohne_Ax=B-Knopf "Gleichungssystem ohne Ax=B-Knopf"
Lösen eines eindeutigen linearen Gleichungssystems (LGS) mit n rechten
Seiten:

Bemerkung: Nach Einführung des @{" Ax=B " Link Ax=B}-Knopfes können beliebige
Gleichungssysteme einfacher berechnet werden, als es in diesem Beispiel
angegeben wird. Es is aber trotzdem ein lehrreiches Beispiel ab und ist
deswegen hier erhalten geblieben.

Eindeutige LGS haben genau eine Lösung. Wenn ein LGS nicht genau eine
Lösung hat, hat es immer unendlich viele Lösungen, welche hier nicht näher
betrachtet werden sollen. (Das Programm kann sie aber berechnen!)


Gegeben sei folgendes Gleichungssystem:

-1a + 2b + 3c = 10
 4a + 5b + 6c = 28
 7a + 8b + 9c = 46

D.h.: Matrix A ist Koeffizientenmatrix und B Ergebnismatrix(vektor) =>

   -1 2 3             10
A = 4 5 6         B = 28
    7 8 9             46

Gesucht sind nun a,b,c die das LGS erfüllen.

Um eine eindeutige Lösung zu erhalten, muß A eine quadratische Matrix
sein, d.h. die Zeilenanzahl muß der Spaltenanzahl entsprechen.

                                                            a
Die zugehörige Matrixgleichung lautet: A * X = B   mit  X = b
                                                            c

Sei A^-1 die inverse zu A, dann folgt: A^-1 * A * X = A^-1 * B
Mit   A^-1*A = Einheitsmatrix folgt  :        E * X = A^-1 * B
Mit E * X = X folgt                  :            X = A^-1 * B

D.h. zur Lösung benötigen wir immer die inverse Matrix der
Koeffizientenmatrix. Diese müssen wir dann von links mit dem Lösungsvektor
multiplizieren. So erhalten wir die Lösung X. Die Probe kann dann leicht
durchgeführt werden. Falls A nicht invertierbar ist, kann heir keine
Lösung berechnet werden. Falls B auch eine Matrix ist, bedeutet
dies, daß man mehrere rechte Seiten hat und für jede Spalte von B die
zugehörigen a,b,c sucht. Dies ändert nichts am oben beschriebenen
Verfahren, da A^-1*B auch für B mit mehreren Spalten berechenbar bleibt.
Jede Spalte von X stellt dann den Lösungsvektor (a,b,c) zur entsprechenden
Spalte in B dar.

Lösung:

    -1 2 3             10
A =  4 5 6         B = 28
     7 8 9             46

 1. Sie definieren die beiden Matrizen und legen A in `1` und B in `2` ab!
 2. Sie aktivieren `1` und `Invertieren` und tauschen das Ergebnis nach 3
    indem Sie `3` und dann `<->` aktivieren.
 3. Sie aktivieren erst `3` dann `2` und dann `*` und erhalten die Lösung.
 4. Aktivieren Sie `4` und dann `<->` (Das Ergebnis X steht nun in `4`)
 5. Probe A*X=B
                        0
                    X = 8
                       -2

@ENDNODE

@NODE LGS_eindeutig_lösbar "LGS eindeutig lösbar"
Lineares Gleichungssystem mit konstanten Koeffizienten (Eindeutig lösbar)


Gegeben:

     -1  8  3       2
 A =  2  4 -1   B = 1
     -2  1  2      -1

Gesucht: Eine Matrix X die  A*X=B erfüllt!

Lösungsweg:

  1. Amatrix starten und Matrixspeicherplatz `1` aktivieren
  2. @{" Def. " Link Def.} anklicken (Fenster @{" Matrizeneingabe " Link Matrizeneingabe}-erscheint
  3. Matrix A eingeben und `ok`-anklicken
  4. Matrixspeicherplatz `2` aktivieren
  5. @{" Def. " Link Def.} anklicken (Fenster @{" Matrizeneingabe " Link Matrizeneingabe}-erscheint
  6. Matrix B eingeben und `ok`-anklicken
  7. @{" Zeigen " Link Zeigen}-anklicken. Matrizen überprüfen
  8. `1`-anklicken
  9. `2`-anklicken (Im @{" Statusfeld " Link Statusfeld} steht links `12`)
 10. @{" Ax=B " Link Ax=B}-anklicken (Berechnung beginnt...)                  5
 11. Als eindeutige Lösung schlägt das Programm die Matrix x =-1  vor.
                                                               5
 12. Zur Überprüfung tauschen wir die Ergebnismatrix, die das Programm in
     Matrixspeicherplatz `7` abgelegt hat mit @{" <-> " Link <->} nach `6` und klicken
     @{" Zeigen " Link Zeigen} an.

 13. Probe: A*x soll B ergeben. D.h. für uns:
     `1`-anklicken
     `6`-anklicken
     @{" * " Link *}-anklicken -Matrix A in `1` wird mit Matrix x in `6` multipliziert
     Das Ergebnis dieser Multiplikation wird nun nach 3 getauscht, indem
     wir nun
     `3`-anklicken
     `<->`-anklicken
     Die Matrix `1*6` muß der Matrix B entsprechen. Deshalb müssen wir nun
     die beiden Matrizen vergleichen. Dies tun wir dadurch, daß wir sie
     voneinander abziehen:
     `2`-anklicken
     `3`-anklicken
     `-`-anklicken                          0
     Das Ergebnis muß eine Nullmatrix sein: 0
                                            0

Dieses Beispiel hat verdeutlicht, wie man eine mathematische Probe
durchführt.

--------------------------------------------------------------------------
@ENDNODE

@NODE Danke "Danke"
An die Entwickler des Amiga, für diesen wundervollen Computer.

An Carl Friedrich Gauß, für die Algorithmen und die Gauß`sche Zahlenebene

An meine verständnisvolle Verlobte, für die Unterstützung

An alle, die mit konstruktiver Kritik halfen, das Programm zu verbessern.

An Stephan Sürken, für sein Programm Text2Guide, mit dem die 
Guide-Erstellung vorgenommen wurde.

--------------------------------------------------------------------------
@ENDNODE

@NODE Sprachkundige_gesucht "Sprachkundige gesucht"
Da dieses Programm sicherlich auch in anderen Ländern gebraucht werden
kann, habe ich vor, das Programm sprachlich anzupassen. Wer Lust hat,
Übersetzungen anzufertigen oder jemanden kennt, der Lust dazu hat, der
melde sich bei mir.

Zu übersetzen sind 2 catalog files (siehe englische Version) und diese
Anleitung. Als Belohnung gibt es ein freies keyfile.

--------------------------------------------------------------------------
@ENDNODE

@NODE Literaturliste "Literaturliste"
[1]     Merziger,Wirth: Repetitorium der höheren Mathematik ca. 29.80 DM
        Feldmann Verlag, Am Bergfelde 28, 3257 Springe ISBN 3-923923-33-3
        Gutes Nachschlagewerk mit zahlreichen Beispielen:
        Integral-, Differential-, Vektorrechnung, Matrizen, Determinanten,
        Folgen, Reihen, Lineare Abbildungen, Determinanten. Dieses Buch
        eignet sich für interessierte Schüler und Studenten

[2]     Howard Anton: Elementary Linear Algebra 5e, (Englischsprachig)
        John Wiley & Sons, Inc. 605 Third Avenue, New York 10158
        ISBN 0-471-85223-6
        In diesem Buch werden viele Bereiche der Matrizen-, Determinanten-
        und Vektoralgebra beschrieben und in zahlreichen Theoremen
        zusammengefaßt. Es eignet sich für den Studenten, dem Englisch
        keine Probleme bereitet.

--------------------------------------------------------------------------

@ENDNODE

@NODE Glossar "Glossar"
@{" Eingabetaste " Link Eingabetaste}
@{" *** " Link ***}
@{" Virus " Link Virus}
@{" Demo " Link Demo}
@{" Schlüsseldatei " Link Schlüsseldatei}
@{" Registration " Link Registration}
@ENDNODE

@NODE Eingabetaste "Eingabetaste"
Mit dieser Taste wird eine Meldung erzeugt, die dem Computer/Programm
mitteilt fortzufahren. Sie wird oft auch als RETURN-Taste bezeichnet und
ist die größte Taste der Tastatur. Sie ist mit einem nach links
abknickendem Pfeil bezeichnet. (G L O T Z) :-))

@ENDNODE

@NODE *** "***"
Diese Anzeige erscheint wenn ein Matrixelement nicht in das gewählte Format
paßt. (Siehe Menu: @{" Darstellung " Link Darstellung})

@ENDNODE

@NODE Virus "Virus"
Falls die programmeigene Prüfroutine keine Vierenfreiheit garantiert kann
es auch daran liegen, daß der Programmname verändert wurde. Versuchen Sie
es mit dem Originalnamen. Sollte dann immer noch keine Vierenfreiheit
gegeben sein, füllen Sie das beiliegende Formular "Fehlerreport" aus und
senden Sie mir die Diskette mit dem verseuchten Programm. Ich werde mich
bemühen, der Ursache auf den Grund zu gehen. Vielleicht hilft Ihnen auch
ein Viruserkennungsprogramm weiter.

@ENDNODE

@NODE Demo "Demo"
Das Programm arbeitet ohne @{" Schlüsseldatei " Link Schlüsseldatei} in einem
DEMONSTRATIONS-Modus, in den nur 2x2-Matrizen bearbeitet werden können.
Mit einer @{" Registration " Link Registration} erhalten sie eine persönliche Schlüsseldatei,
die es Ihnen ermöglicht das Programm in der Vollversion zu nutzen. Dann
können `beliebig` große Matrizen bearbeitet werden. Zur Registration
lesen Sie bitte auch die `Lies_mich_zuerst`-Datei!

@ENDNODE

@NODE Schlüsseldatei "Schlüsseldatei"
Eine Datei, die es ermöglicht, das Programm ohne Einschränkungen
(@{" Demo " Link Demo}-Version) zu verwenden. Man bekommt diese Datei beim @{" Autor " Link Autor}, wenn
man sich registrieren läßt. Siehe dazu auch: @{" Nutzungsbedingungen " Link Nutzungsbedingungen},

@ENDNODE

@NODE Registration "Registration"
Um das Programm ohne Einschränkungen rechtmäßig zu verwenden muß man sich
beim Autor registrieren lassen. Siehe dazu auch: @{" Nutzungsbedingungen " Link Nutzungsbedingungen},

------------------------------E N D E-------------------------------------



@ENDNODE

