Wer den Namen Riemann hört, denkt sogleich an den Mathematiker Bernhard Riemann, der diesem Programm den Namen gab. Riemann ist ein Programm für symbolische Algebra und Analysis.
Derartige Programme hat es auch schon früher gegeben. Manch einer der ST- bzw. CP/M-Freunde erinnert sich sicherlich an muMATH 83 und muSIMP-83, zu denen Riemann annähernd kompatibel ist. Damit ist eine Übernahme bestehender Routinen von muMATH und muSIMP möglich. Riemann-Routinen können allerdings nur dann wieder zu muMATH und muSIMP übertragen werden, wenn keine der zusätzlichen Riemann-Möglichkeiten (z.B. Numerik) verwandt werden.
Riemann erlaubt, wie gerade erwähnt, symbolisches Rechnen. Möchte man eine Lösung x von 5x = 3 wissen, so antwortet Riemann mit x = 3/5 und nicht, wie man es vielleicht von einem Mathematikprogramm erwartet hätte, mit x = 0.6. Dies ist natürlich nur ein sehr einfaches Beispiel. Bevor wir aber zu ausführlicheren Beispielen kommen, wollen wir das Programm selbst und den Lieferumfang betrachten.
Riemann wird auf einer doppelseitigen Diskette ausgeliefert. Die Diskette ist nicht kopiergeschützt, jedoch individuell codiert. Das Programm selbst hat eine Größe von fast 400 kB. Geschrieben ist es in Assembler. Ferner ist ein gut 300 Seiten starkes Handbuch beigefügt.
Das Programm läuft auf jedem ATARI ST oder kompatiblen Computer mit mindestens I MB RAM. TOS im ROM und einem Schwarzweißmonitor vom Typ SM 124. Ob der Dualmodus des ATARI TT unterstützt wird, ist nicht zu erfahren. Ein Test mit BigScreen (Ganzseitenbildschirmemulation) zeigte, daß Riemann nicht bereit ist, mit anderen Auflösungen als 640 mal 400 Pixeln zu arbeiten. TOS 1.4 verkraftet Riemann problemlos. Ferner ist Riemann nicht - wie man es von ST-Programmen erwarten könnte - GEM-unterstützt. Diverse Mausbeschleuniger, die manche sicherlich im AUTO-Ordner haben, werden schlicht ignoriert, weshalb die Handhabung der Maus im ersten Augenblick bzw. nach jedem Start von Riemann ungewohnt ist. Diese Mängel sollen laut Vertreiber von Riemann aber in naher Zukunft abgestellt sein, die nächste Version hat eine GEM-Oberfläche.
Es ist etwas unverständlich, warum Riemann in Assembler geschrieben wurde. Es ist zwar durchaus verständlich, daß geschwindigkeitskritische Teile in Assembler programmiert wurden, jedoch nicht das ganze Programm. Dadurch entsteht eine gewisse schlechte Wartbarkeit, wie sie quasi schon in der Anleitung bestätigt wird. Während des Tests arbeitete Riemann zuverlässig, was auf saubere Programmierung schließen läßt.
In der vorliegenden Version wird weder ein Blitter noch ein mathematischer Coprozessor unterstützt. Gerade im Hinblick auf die Numerikeigenschaften von Riemann ist es fraglich, warum der mathematische Coprozessor nicht unterstützt wird. Begründet wird dies mit dem genaueren Zahlenformat bei Riemann. Eine optionale Verwendung eines mathematischen Coprozessors wäre dennoch praktisch.
Das spiralgebundene Handbuch ist ausführlich und führt in alle Funktionen von Riemann ausführlich ein. Neben dem Stichwortverzeichnis vervollständigen Variablen-, Property- und Funktionenlisten das Handbuch.
Interessant bei Riemann ist das Kapitel “Wartung & Support”. Lobenswert ist die Einrichtung eines Wartungsabonnements. Mit der Zurücksendung der Servicekarte schickt man eine Diskette samt Freiumschlag ein. In der Servicekarte trägt man ein, wann man ein Update erhalten möchte. Ist ein Update fertig, so erhält man automatisch seine Diskette mit dem geänderten Programm zurück und kann dann das Abonnement verlängern, indem wieder eine Diskette mit Freiumschlag eingeschickt wird.
Nun aber zum Programm beziehungsweise der Bedienung des Programms. Zuerst wird alles auf Harddisk kopiert, die für den Betrieb jedoch nicht erforderlich ist. Nach dem Start des Programms meldet sich eine für GEM-Freunde ungewohnte Oberfläche, mit der man jedoch recht schnell umgehen kann. Ein Editor ist integriert, ein anderer kann hinzugeladen werden. Ungewohnt ist die Mausbedienung. Die Maus läßt sich für diverse (wenige) Dinge einsetzen, Riemann ist aber nicht voll mit der Maus steuerbar.
Für das Verlassen von Riemann werden beide Maustasten gedrückt oder alternativ die Tastenkombination <Alternate>+ <Insert>+<ClrHome>. Hierauf erscheint eine Sicherheitsabfrage, die man mit einem Tastendruck bestätigen muß. Wünscht man dann tatsächlich das Verlassen von Riemann, so erscheint wieder eine Sicherheitsabfrage. Nach dem Bestätigen dieser Abfrage wird Riemann endgültig verlassen.
Befindet man sich nun in der Riemann-Oberfläche, so erscheinen die Standardmenüs, eine Willkommen-Meldung und eine freie Fläche mit Cursor. Die Menütitel können mit der Maus angeklickt werden. Dort sind dann diverse Einstellungen vorzunehmen. Dazu gehört beispielsweise, welche Funktionen numerisch genähert werden sollen. Rechenbeispiel 4 zeigt eine Berechnung, bei der die trigonometrischen Funktionen Sinus und Cosinus nicht numerisch berechnet werden, weshalb auch häufiger sin(0), also 0, auftaucht. Läßt man die numerische Berechnung für die beiden Funktionen zu, so ist das Ergebnis kürzer. Die Terme, die gleich 0 sind, fallen weg. Ganze Zahlen werden hierbei übrigens bis zu einer Länge von etwa 315000 Ziffern dargestellt. Fließkommazahlen haben eine interne Genauigkeit von 23 Stellen.
Beginnen wir mit der ersten Berechnung: 2^2, dann das Semikolon als Ende-Marke. Prompt kommt das Ergebnis. Gleich nochmal: 3^3^3^3. Keine Antwort, keine Unterbrechung möglich. Nach 60 Minuten wurde die Berechnung abgebrochen. Ein zweiter Versuch, der über 150 Minuten dauerte, bringt auch kein Ergebnis. Eine Vorahnung, daß so etwas noch in anderen Fällen auftritt, war nicht ganz unbegründet, denn während des Tests fand sich noch eine weiteres Beispiel, welches nach 60 Minuten abgebrochen wurde. Allerdings muß man Riemann zugute halten, daß 3^3^3^3. die Rechenkapazitäten übersteigt und somit eine Feststellung der Nichtberechenbarkeit erst relativ spät festgestellt werden kann. (3^3^3^3 wird berechnet als 3^(3^(3^3)) = 3^(3^27) = 3^7625597484987; eine Zahl mit wesentlich mehr als 315000 Stellen.)
Weitere Versuche mit unbestimmten und bestimmten Integralen, Differentiation, Summen, Produkten, Grenzwerten und Taylor-Reihen laufen problemlos ab. Auch Berechnungen mit Vektoralgebra funktionieren prima. Riemann ist gerade vom mathematischen Standpunkt her sehr interessant. Es lassen sich zwar nicht alle Probleme lösen bzw. alle Berechnungen durchführen, was auch zuviel verlangt wäre, aber das, was sich machen läßt, ist sehr eindrucksvoll.
Als Probeberechnungen sind nebenstehend die Berechnung eines Binomialkoeffizienten mit Hilfe von selbst definierten Funktionen, die Berechnung einer Lösung einer Gleichung, die Berechnung von 100! (für die Nicht-Mathematiker unter uns: 100! sind die ganzen Zahlen von 1 bis 100 miteinander multipliziert), die Berechnung zweier Taylor-Reihen und die Berechnung der Lösung einer linearen Gleichung zu sehen.
Das in Riemann enthaltene “Formula modelling” erleichtert die Arbeit wesentlich. Soll eine Formel oder auch nur ein Teil der Formel aus einer vorigen Berechnung übernommen werden, so wird diese mit der Maus angeklickt und schon erscheint sie an der Stelle, an der der Cursor steht. Das geht zwar nicht so komfortabel wie bei dem in Turbo C integrierten Editor, ist aber eine arbeitserleichternde Hilfe.
Riemann enthält neben den Basisoperatoren - etwa den Operatoren für Grundrechenarten - und üblichen Grundfunktionen, die man auch von diversen Programmiersprachen her kennt, noch Funktionen zur Lösungsberechnung von Gleichungen bzw. Gleichungssystemen, zur Berechnung von Logarithmen, trigonometrischen und hyperbolischen Funktionen, zur Differentiation und Integration, zur Grenzwertberechnung, zur Summen- und Produktbildung und zur Vektoralgebra.
Enthalten sind ferner diverse numerische Funktionen und eine Möglichkeit, Graphen zu plotten. Riemann kann durch diverse mitgelieferte Zusatzpakete wie zur Vektoranalysis oder zu Differentialgleichungen noch erweitert werden.
Der Vollständigkeit halber sei noch erwähnt, daß Riemann eine eigene, umfangreiche LISP-ähnliche Programmiersprache enthält.
Die mathematische Leistungsfähigkeit ist so begeisternd, daß man von Riemann einfach fasziniert ist. Nach kurzer Zeit möchte man Riemann als mathematische Arbeitshilfe nicht mehr vermissen. Zusammenfassend kann Riemann als ein für Mathematikerinnen und Mathematiker sowie all die Leute, die Mathematik immer wieder gebrauchen, empfehlenswertes Programm bezeichnet werden. Insbesondere Studentinnen und Studenten (nicht nur der Mathematik) werden sich über ein solches Programmpaket sehr freuen, denn es erleichtert den mathematischen Alltag ungemein.
Riemann kostet 238,- DM, für Studentinnen und Studenten sowie Schülerinnen und Schüler 168,- DM. Eine Demo gibt’s gegen 10.- DM.
Bezugsadresse:
Begemann & Niemeyer Softwareentwicklung GbR
Schwarzenbrinker Straße 91
4930 Detmold
Es ist die Antwort auf die Frage gesucht, wieviele Möglichkeiten es gibt, 100 verschiedene Autos auf 100 Parkplätzen abzustellen.
100!;
0: 93326215 4439441526 8169923885 6266700490 7159682643
8162146859 2963895217 5999932299 1560894146 3976156518
2862536979 2082722375 8251185210 9168640000 0000000000
0000000000 ;
Berechnet werden soll die Anzahl der Möglichkeiten, beim Lotto 6 aus 49 Zahlen auszuwählen.
FUNCTION FAC(N),
N!,
ENDFUN $
FUNCTION BIN(N,K),
FAC(N)/(FAC(K) FAC(N-K)),
ENDFUN $
BIN (49,6);
0: 13983816 ;
Es sollen alle Lösungen x berechnet werden, für die 5x+3-4x^2=1 gilt.
EQN: 5X+3-4X^2 == 1;
0: 3 + 5 X - 4 X^2 == 1;
SOLVE(EQN.X);
0: (X == 5/8 - 57^(1/2)/8,
X == 5/8 + 57^(1/2)/8) ;
Die Funktion f(x)=sin(Pi x)/cos(Pi x) (Pi ist hierbei die Ludolph’sche Zahl) soll zum Zwecke einer einfachen numerischen Auswertung übereine Summe berechnet werden. Die Berechnung von Sinus und Cosinus soll von RIEMANN nicht vorgenommen werden.
TAYLOR( SIN(#PI X)/COS(#PI X), X, 0, 5 )
0: 3.1415926535897932384626 X +
3.1415926535897932384626 X * (SIN 0)^2/(COS 0)^2 +
19.739208802178717237669/2 X^2 (SIN 0)^3/(COS 0)^3 +
19.739208802178717237669/2 X^2 SIN 0/COS 0 +
186.03766008179892105286/6 X^3 (SIN 0)^4/(COS 0)^4 +
248.05021344239856140381/6 X^3 (SIN 0)^2/(COS 0)^2 +
2337.8181848160584936746/24 X^4 (SIN 0)^5/(COS 0)^5 +
3896.3636413600974894576/24 X^4 (SIN 0)^3/(COS 0)^3 +
1558.545456544038995783/24 X^4 SIN 0/COS 0 +
36722.362174233774391529/120 X^S (SIN 0)^6/(COS 0)^6 +
73444.724348467548783058/120 X^5 (SIN 0)^4/(COS 0)^4 +
41618.677130798277643733/120 X^5 (SIN 0)^2/(COS 0)^2 +
SIN 0/COS 0 +
62.012553360599640350952/6 X^3 +
4896.3149565645032522038/120 X^5 ;
Die Funktion f(x)=sin(x)/cos(x) soll zum Zwecke einer einfachen numerischen Auswertung über eine Summe berechnet werden. Die Berechnung von Sinus und Cosinus soll von RIEMANN übergenommen werden.
TAYLOR( SIN(X)/COS(X), X, 0, 5 )?
0: X + X^3/3 + 2/15 X^5
Wie lautet für ein beliebiges x die Lösung (x, y) des Gleichungssystems
z^2 + x + y = 3
x - y = 2 ?
LINEQN((Z*2+X+Y==3, X-Y==2), [X, Y] ) ;
@: [X == (5 - Z^2)/2, Y == (1 - 2^2)/2] ;
Berechnet werden soll eine Doppelsumme. #1 steht hierbei für die imaginäre Einheit. Die Berechnung erfolgt in zwei Schritten. Es ist auch möglich, die Doppelsumme in einem Schritt zu berechnen mit SIGMA( SIGMA( 2^N + #1 2^M + (2-#I)^(N M), M, 0, 10 ), N, 0, 10 ).
SIGMA( 2^N + #I 2^M + (2-#I)^(N M), M, 0, 10 ) ;
@: 1 + 2047 #I + 11 2^N + (2 - #I)^N +
(2 - #I)^(2 M) + (2 - #I)^(3 N) + (2 - #I)^(4 N) + (2 - #I)^(5 N) +
(2 - #I)^(6 H) + (2 - #I)^(7 N) + (2 - #I)^(8 N) + (2 - #I)^(9 N) +
(2 - #I)^(10 N) ;
SIGMA( @, N, 0, 10 );
@: -644674965609581120B2785163859527877 -
61088315103608700466509451664725228 #I ;
(Bemerkung: Die RIEMANS-Ergebnisse sind hier zur besseren Lesbarkeit für den Druck, etwas aufbereitet worden.)