Alles Java
Programme und Sourcen
$\newcommand{\I}{\:{\rm i}}$

Java Programme

Hier befinden sich die Java-Programme, die z.T. auf den anderen Seiten von erwähnt werden. Alle jar-Dateien können frei heruntergeladen und benutzt werden. Die Programme wurden unter Linux und Windows getestet. Leider steht mir kein Mac zur Verfügung, so dass ich über die Lauffähigkeit auf dieser Plattform keine Aussage machen kann. Teilweise stelle ich die Sourcen zur Verfügung. Diese dürfen ebenfalls heruntergeladen, compiliert und ggf. modifiziert werden.

Die Programme sind von ganz unterschiedlicher Qualität. Oft sind es nur primitive Konsol-Anwendungen, die ad hoc  geschrieben wurden, um ein bestimmtes numerisches Resultat zu verifizieren, mal wurde mehr Aufwand – z.B. für eine grafische Oberfläche – spendiert.

Zum Ablauf der Java-Programme muss das Java® SE Runtime Environment (JRE) auf dem Rechner installiert werden. Leider ist bei vielen Linux-Distributionen ein sog. openjdk vorinstalliert, das meist veraltet ist. Man sollte dieses mit sudo apt-get remove --purge openjdk* deinstallieren und auf ein aktuelles Original-JRE von Oracle® zurückgreifen, das man z.B. vom webupd8team beziehen kann.

Komplexe Abbildungen

Die Anregung zu diesem Programm kam aus dem Buch Algebra von Michael Artin. In dem Kapitel über den Fundamentalsatz der Algebra wird dort ein sehr anschaulicher Beweis skizziert:

Abb.1: Snapshot Polynome
[Bild in neuem Tab anzeigen]

Man betrachtet das Bild eines Kreises in der komplexen Zahlenebene unter einem nicht konstanten Polynom mit nicht verschwindendem konstanten Term. Für sehr große Urbild-Kreise dominiert die höchsten Potenz des Polynoms die Abbildung - der Kreis wird auf eine geschlossene Kurve abgebildet, die sich in sehr großem Abstand mehrfach um den Ursprung wickelt. Für sehr kleine Urbild-Kreise dominiert der konstante Term. Der Kreis wird auf eine geschlossene Kurve abgebildet, die sich in sehr geringem Abstand mehrfach um den Punkt wickelt, der dem konstanten Term entspricht.

Um das einzusehen, schreibe man die komplexe Zahl $z$ in Polarkoordinaten auf: $$ z = r e^{\I\varphi} $$ Dann ist $r \ge 0$, $r \in \mathbb{R}$ und man hat für die Potenzen: $$ z^n = r^n e^{n\I\varphi} $$ Das Potenzieren streckt also für $r \gt 1$ den Radius (ein Kreis wird größer) bzw. schrumpft den Radius für $r \lt 1$ (ein Kreis wird kleiner). Auf den Term $e^{\I\varphi}$ wirkt das Potenzieren in der Weise, dass ein Kreis $n$-fach um den Ursprung gewickelt wird (bzw. um den konstanten Term).

Wenn man den sehr großen Urbild-Kreis stetig zu dem sehr kleinen Kreis zusammenzieht, gehen auch die Bildkurven stetig ineinander über. Dabei muss die Bildkurve, wenn sie sich von ganz weit draußen auf die kleine Kurve um den konstanten Term zusammenzieht, irgendwann den Ursprung überstreichen [1] – und voila!  Wir haben den Fundamentalsatz der Algebra bewiesen.

Das ist natürlich wirklich nur eine Beweisskizze. In dem o.g. Buch wird die Angelegenheit wesentlich genauer betrachtet. U.a. muss man den Einfluss der Potenzen $a_kz^k$ mit $0 \lt k \lt n$ auf das Bild eines Kreises untersuchen.

Das Programm erlaubt nun das Bild verschiedener geometrischer Figuren (Kreise, Gitter, Geraden etc.) in der komplexen Ebene unter beliebigen Polynomen zu betrachten. Die Figuren lassen sich mit der Maus vergrößern, verkleinern und bewegen, so dass man das Zusammenziehen der Bildkurve und das Überstreichen des Ursprungs anschaulich vorgeführt bekommt.

Zur Installation genügt es, die Datei Polynome.zip in ein beliebiges Verzeichnis zu entpacken. Wenn man das JRE korrekt installiert hat, lässt sich das Programm anschließend mit Doppelklick auf die jar-Datei starten (unter Linux muss man evtl. vorher einen entsprechenden progam starter erstellen oder das Programm von einer Console aus starten). Die Sourcen (Polynome.java, Complex.java) werden ebenfalls frei zur Verfügung gestellt, aber nicht weiter erläutert.

Polygon-Konstruktionen

Es handelt sich eigentlich um zwei Programme, nämlich Hermes und Kompressor, wobei das zweite Programm nur dazu dient, die Ausgaben des ersten Programms zu komprimieren.

Das Programm Hermes berechnet die für die Konstruktion des 5-Ecks, des 17-Ecks, des 257-Ecks und des 65537-Ecks erforderlichen Quadratwurzelausdrücke. Die Grundlagen dieses Programms werden in einer Art eBook auf diesen Seiten unter dem Titel Gauß auf Java ausführlich beschrieben. Insbesondere werden in Kap.6 die verwendeten Algorithmen detailliert erläutert. Dort ist auch beschrieben, wie die Programmes installiert und bedient werden.

Die Sourcen und jar-Files finden sich hier:

Beide Programme sind Java-Konsol-Anwendungen, es gibt also keine aufwändige grafische Oberfläche. Beide Programme wurden bewusst spartanisch gehalten, damit das Wesentliche, nämlich der Algorithmus, nicht in einem Wust von Trivialitäten untergeht. So verzichten beide Programme sogar auf die Ausgabe in eine Datei und geben die Listen auf System.out aus (Kompressor kommt natürlich um eine Datei-Eingabe nicht herum). Es sollte daher tunlichst der Ausgabestrom auf eine Datei umgelenkt werden, wenn man die Berechnung für das 65537- Eck durchführen möchte.

Geschwister und Partner

Das Programm Mischpoke gehört definitiv zu den o.g. primitiven ad hoc  Programmen. Es wurde ursprünglich in Java geschrieben, um die Rechnungen aus dem Artkel Die Verlobungsfeier zu überprüfen. Weil es so primitiv ist, habe ich es nach JavaScript portiert, so dass man damit online experimentieren kann. Damit das JavaScript des Programms mit dem JavaScript von MathJax nicht in Konflikt kommt, wurde es auf eine eigene Seite ausgelagert und findet sich ⇒ hier.

Ein Sonnensystem Simulator

Das Programm Newton simuliert die Bewgung von Planeten im Sonnensystem. Allerdings gibt es keine Beschränkung auf die existierenden Objekte, sondern man kann auch fiktive Planeten hinzufügen und deren Bewegung beobachten, wie etwa einen zur Erde spiegelsymmetrischen Zwillingsplaneten (Wer die Marginalie Urmels Zwillingsplanet auf diesen Webseiten gelesen hat, weiß woher die Idee stammt).

Abb.1: Snapshot Newton
[Bild in neuem Tab anzeigen]

Im Lauf der Zeit wurden noch etliche andere Funktionen in diesem Programm realisiert, für ausführliche Informationen werfe man einen Blick auf die Hilfe-Datei (in Englisch). Natürlich ist das Programm kein ausgewachsenes Planetarium-Programm wie etwa Stellarium, dafür werden aber die Sourcen frei zur Verfügung gestellt, die bei bedarf kopiert, modifiziert und neu kompiliert werden dürfen.

Zur Installation lade man die Datei Newton.zip herunter und entpacke ihren Inhalt in einen beliebigen Ordner. Anschließend sollte das Programm mit Doppelklick auf Newton.jar zu starten sein (unter Linux muss man evtl. vorher einen entsprechenden progam starter erstellen oder das Programm von einer Console aus starten). Weitere Hinweise zur Installation und Bedienung erhält man in der genannten Hilfe-Datei. Die Sourcen finden sich hier:

Im Gegensatz zu dem folgenden Programm Scaliger existiert für Newton nur eine Englische Version (das betrifft auch die Hilfe-Datei). Grund ist einzig und allein meine Faulheit (bekanntlich ist den meisten Software-Entwicklern die öde Arbeit der Anpassung an andere Sprachen so zuwider, dass sie sogar das Wort internationalization vermeiden und stattdessen nur von i18n sprechen).

Ein Kalenderprogramm

Das Kalenderprogramm ScaligerFX [2] basiert auf der Julianischen Tageszählung, die von J. J. Scaliger eingeführt wurde, und erlaubt unterschiedlichste Berechnungen mit Kalenderdaten.

Abb.2: Snapshot ScaligerFX
[Bild in neuem Tab anzeigen]

Es lässt sich z.B. mit wenigen Klicks ermitteln, wann man selbst die Anzahl der Lebenstage Eulers überschritten hat oder man überrascht einen Freund, indem man ihm zum 25000ten Lebenstag gratuliert oder man staunt über die verblüffende Tatsache, dass das Lebensalter des Anfang 2017 verstorbenen russischen Zahlentheoretikers Igor Rostislawowitsch Schafarewitsch 34230 Tage beträgt, was in Primfaktoren zerlegt $2 \cdot 3 \cdot 5 \cdot 7 \cdot 163$ ergibt (zur Bedeutung von 163 siehe den Artikel Heegner-Zahl in der Wikipedia).

Mehrere Dateien mit den Geburts- und Sterbetagen bedeutender Persönlichkeiten (aus der Wikipedia extrahiert) sind Bestandteil des Programms. Diese Dateien können nach eigenen Vorlieben editiert werden - je nachdem, wen man für bedeutend hält.

Das Programm verfügt über zwei umfangreiche Hilfedateien (deutsch und englisch) im PDF-Format, die man sich hier anschauen kann:

Für dieses Programm veröffentliche ich keine Sourcen, da es sich um ein ziemlich umfangreiches Projekt mit ca. 5100 lines of code  handelt. Außerdem steckt der mathematisch interessante Teil im neuen Java Date-Time-API sowie in dem package org.threeten.extra.chrono.JulianChronology, das zwar frei benutzt werden darf, für welches das Copyright aber nicht bei mir liegt: [(c) 2007-present, Stephen Colebourne & Michael Nascimento Santos]. Da das Progamm JavaFX nutzt, ist zum Ablauf ein aktuelles Java JRE (mindestens Java SE Runtime Environment 8u40) erforderlich.

Zur Installation lädt man die Datei Scaliger.zip herunter und entpackt alle Dateien in ein beliebiges Verzeichnis. Wenn man das JRE korrekt installiert hat, lässt sich das Programm anschließend mit Doppelklick auf die Datei Scaliger.jar starten (unter Linux muss man evtl. vorher einen entsprechenden progam starter erstellen oder das Programm von einer Console aus starten). Weitere Hinweise zur Konfiguration kann man den o.g. Hilfedateien entnehmen.