Document Amatrix-Anleitung A m a t r i x ===================== *** Ein Amiga-Programm zur Matrizenberechnung *** (C) 1993-95 Nicolas Bassen. Alle Rechte liegen beim Autor Shareware (Bitte lesen Sie die `Nutzungsbedingungen'!) ------------------------------------------------------------------------- 1. Ü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 -------------------------------------------------------------------------- 2. Wichtige Informationen 2.1. 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'! -------------------------------------------------------------------------- 2.2. 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'! -------------------------------------------------------------------------- 2.3. 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. -------------------------------------------------------------------------- 3. 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. -------------------------------------------------------------------------- 4. 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. 4.1. 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. -------------------------------------------------------------------------- 5. Gebrauchsanweisung 5.1. 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' `Mathematische Grundregeln' `Probleme|Fehler' `Beispiele' `Literaturliste' -------------------------------------------------------------------------- 5.2. 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 !!!! -------------------------------------------------------------------------- 5.3. 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,...) -------------------------------------------------------------------------- 5.4. Menus 5.4.1. Projekt 5.4.1.1. Info Gibt einen Infotext aus 5.4.1.2. Laden Hiermit können Matrizen geladen werden, die vorher mit dem Programm abgespeichert wurden. Die Matrix wird in den aktuellen Matrixspeicherplatz geladen. 5.4.1.3. Speichern Hiermit kann die aktuelle Matrix gespeichert werden. Es wird ein internes Format verwendet. 5.4.1.4. Ende Beendet das Programm ohne Sicherheitsabfrage! 5.4.2. Edit 5.4.2.1. Matrix editieren Die Matrix wird zum Editieren übergeben 5.4.2.2. Komplex -> Reell Löscht den Imaginaerteil der aktuellen Matrix 5.4.2.3. Reell -> Komplex Fügt zu jedem Matrixelement einen Imaginaerteil an und setzt diesen auf Null 5.4.2.4. Realteil -> Null Setzt den Realteil aller Matrixelemente auf Null 5.4.2.5. Imaginäteil -> Null Setzt den Imaginaerteil aller Matrixelemente auf Null 5.4.2.6. Matrix -> Einheitsmatrix Wenn die Matrix quadratisch ist, wird sie in eine Einheitsmatrix umgewandelt. D.h. alle Diagonalelemente werden zu 1,alle anderen zu 0. 5.4.2.7. Alle löschen Die Matrizen 1-6 werden ohne Sicherheitsabfrage gelöscht. 5.4.3. Option 5.4.3.1. Anzeige -alle Matrizen werden angezeigt -nur die aktuelle Matrix wird angezeigt. Diesen Modus sollte man bei langsamen Rechnern aktivieren. 5.4.3.2. 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 5.5. Knöpfe 5.5.1. Def. Die aktuelle Matrix wird definiert. Das Matrizeneingabefenster wird geöffnet. 5.5.2. Name Es kann ein Name für die aktuelle Matrix eingegeben werden. 5.5.3. <-> Die Inhalte der aktivierten Matrixspeicherplätze werden vertauscht. 5.5.4. 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') 5.5.5. Transponieren Die aktuelle Matrix wird transponiert. (Zeilen werden zu Spalten) 5.5.6. Invertieren Die aktuelle Matrix wird invertiert wenn dies möglich ist. (Die Matrizeninversion ist nur für quadratische Matrizen definiert. D.h. Zeilenzahl = Spaltenzahl) 5.5.7. Det Die Determinante der aktuellen Matrix wird berechnet. (Nur quadratische Matrizen!) 5.5.8. 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') 5.5.9. +,- Die aktuelle Matrix wird zu/von der vorher aktuellen Matrix addiert/subtrahiert. Beide Matrizen müssen gleiche Zeilen- und Spaltenzahl haben. 5.5.10. * Die aktuelle Matrix wird mit der vorher aktuellen Matrix multipliziert. Merke: Die Matrizenmultiplikation ist im Allgemeinen nicht kommutativ: A*B<>B*A 5.5.11. ^ Die aktuelle Matrix wird mit sich selbst multipliziert. Der Exponent muß ganzzahlig und größer als 1 sein. 5.5.12. DEL Die aktuelle Matrix wird ohne Sicherheitsabfrage gelöscht, wenn dieser Knopf mit einem Doppelklick aktiviert wird. 5.5.13. Zeigen Zeigt alle bzw. nur die aktuelle Matrix in der gewählten `Darstellung' in der Anzeige an. 5.5.14. Stat Gibt den Status der Matrizenspeicher an. 5.5.15. 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' entnommen werden.) 5.5.16. (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. 5.5.17. (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. 5.5.18. --> siehe `(8)' 5.5.19. TXT->RAM Der Inhalt des Anzeigefensters wird in der RamDisk abgelegt. 5.6. 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. 5.6.1. 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. 5.6.2. 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`?) 5.6.3. 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. 5.6.4. Fensterschließsymbol Abbruch der Eingabe nach 2-maligem anklicken. -------------------------------------------------------------------------- 5.7. Schnellkurs 1. `1` aktivieren (`Statusfeld') 2. `Def.' für definieren aktivieren nun öffnet sich das Matrizeneingabefenster. `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' (Die definierten Matrizen werden angezeigt) 4. Aktivieren Sie `Det' (Es wird die Determinante berechnet) 5. Aktivieren Sie `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' zeigt `72`) b) Aktivieren Sie `<->' (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' und geben Sie als neuen Namen "Erste^-1" ein! 7. Aktivieren Sie `1`, dann `2` (`Statusfeld' zeigt "12" ) 8. Aktivieren Sie `*' (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' und geben Sie `2`ein u. drücken Sie anschließend die `Eingabetaste'. (Die Matrix wird mit 2 multipliziert) 11. Aktivieren Sie `3` und `<->' (Inhalt von 3 und 7 werden vertauscht) 12. Aktivieren Sie `1` und `3` und `-` (1-3 wird berechnet/siehe `+,-') 13. Aktivieren Sie `3` und `<->' (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 `^' und geben Sie `3` ein. (1 hoch drei wird berechnet.) 16. Aktivieren Sie `3` und `<->' (Inhalt von 3 und 7 werden vertauscht) 17. Aktivieren Sie `Transponieren' (Die Matrix in 3 wird transponiert, d.h. die Zeilen und Spalten werden vertauscht) 18. Aktivieren Sie `3` und `<->' (Inhalt von 3 und 7 werden vertauscht) 19. Aktivieren Sie `-->' (Inhalt von 7 wird nach 8 kopiert) 20. Aktivieren Sie `2` und `DEL' mit einem Doppelklick (2 wird gelöscht) -------------------------------------------------------------------------- 6. Verschiedenes 6.1. 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 - ... -------------------------------------------------------------------------- 6.2. 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'... -------------------------------------------------------------------------- 6.3. 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' 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 -------------------------------------------------------------------------- 6.4. 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' bzw. `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. -------------------------------------------------------------------------- 6.5. Beispiele Ausgewählte Beispiele: (nicht mit der Demoversion ausführbar) 6.5.1. Gleichungssystem ohne Ax=B-Knopf Lösen eines eindeutigen linearen Gleichungssystems (LGS) mit n rechten Seiten: Bemerkung: Nach Einführung des `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 6.5.2. 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.' anklicken (Fenster `Matrizeneingabe'-erscheint 3. Matrix A eingeben und `ok`-anklicken 4. Matrixspeicherplatz `2` aktivieren 5. `Def.' anklicken (Fenster `Matrizeneingabe'-erscheint 6. Matrix B eingeben und `ok`-anklicken 7. `Zeigen'-anklicken. Matrizen überprüfen 8. `1`-anklicken 9. `2`-anklicken (Im `Statusfeld' steht links `12`) 10. `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 `<->' nach `6` und klicken `Zeigen' an. 13. Probe: A*x soll B ergeben. D.h. für uns: `1`-anklicken `6`-anklicken `*'-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. -------------------------------------------------------------------------- 6.6. 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. -------------------------------------------------------------------------- 6.7. 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. -------------------------------------------------------------------------- 6.8. 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. -------------------------------------------------------------------------- 7. Glossar 7.1. 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) :-)) 7.2. *** Diese Anzeige erscheint wenn ein Matrixelement nicht in das gewählte Format paßt. (Siehe Menu: `Darstellung') 7.3. 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. 7.4. Demo Das Programm arbeitet ohne `Schlüsseldatei' in einem DEMONSTRATIONS-Modus, in den nur 2x2-Matrizen bearbeitet werden können. Mit einer `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! 7.5. Schlüsseldatei Eine Datei, die es ermöglicht, das Programm ohne Einschränkungen (`Demo'-Version) zu verwenden. Man bekommt diese Datei beim `Autor', wenn man sich registrieren läßt. Siehe dazu auch: `Nutzungsbedingungen', 7.6. Registration Um das Programm ohne Einschränkungen rechtmäßig zu verwenden muß man sich beim Autor registrieren lassen. Siehe dazu auch: `Nutzungsbedingungen', ------------------------------E N D E-------------------------------------