Wann immer ich hier über Experimente mit numerischen Lösungsverfahren für Differentialgleichungssysteme berichte, habe ich im Hinterkopf, dass diese Verfahren eigentlich völlig ungeeignet dafür sind, solche Systeme zu analysieren, da heutige Digitalcomputer bereits rationale Zahlen nicht exakt darstellen können - von irrationalen ganz zu schweigen...
Daher ist es so, dass jede Berechnung, die mit einem solchen Digitalcomputer ausgeführt wird, einen Fehler beinhaltet. Ich habe hier bereits über einen anderen interessanten Fakt beim Betreiben von Berechnungen mit gebrochenen Zahlen berichtet. Diese Fehler - wenn sie auch winzig und vernachlässigbar erscheinen - können für numerische Verfahren zur Lösung von Differentialgleichungsverfahren zu einem großen Problem werden - denn man berechnet ja jedes nächste ergebnis aus den vorangegangenen, bereits mit Fehlern behafteten, wodurch die Fehler - abhängig von der konkreten Aufgabe sehr schnell wachsen können. (Daher sollte man auch genau überlegen, ob man den hier vorgeschlagenen Performanzschub wirklich benötigt...)
Das ist auch einer der Gründe, warum heute noch manche Leute Analogrechner bauen - damit hat man dieses Problem schlicht und einfach nicht. Man bekommt natürlich andere - wie etwa die Unmöglichkeit, die Dimensionierung der Bauelemente beliebig genau prüfen zu können - außerdem spielt in Analogrechnern die Temperatur eine weit größere Rolle als in herkömmlichen Digitalrechnern - sie beeinflusst direkt die Ergebnisse - speziell wenn wir davon reden, besonders genau rechnen zu wollen.
Man könnte jetzt versucht sein zu sagen: "Hey, dann lasst uns doch einfach mit BigDecimal rechnen!". Und dann stellt man verblüfft fest - damit kann man nicht rechnen! Ich weiß nicht, warum Sun (Jaja - ich weiß, dass es schon lange her ist, dass Oracle Java gekauft hat!) sich damals entschieden hat, eine solche Klasse zu schaffen und zur Verfügung zu stellen, wenn man dann damit nichts tun kann. Naja - nichts bis auf die Grundrechenarten.
Allerdings findet man im Netz hin und wieder Ressourcen, die behaupten, diese Lücke zu füllen. Ein Hoch auf die Open Source Bewegung!! Allerdings ist mir bei weiteren Recherchen aufgefallen, dass solche Bibliotheken ja besonders streng getestet werden müssten - was nutzt es mir schließlich, wenn ich besonders genau rechnen kann und mein Ergebnis 200 Stellen nach dem Komma hat, aber der Algorithmus der Berechnung fehlerhaft implementiert wurde? Die verlinkte Bibliothek hat sehr viele Tests an Bord - aber man könnte hier natürlich wieder den Aluhut aufsetzen und fragen: Die erwarteten Testresultate stammen von Wolfram Alpha - wie sicher ist es, dass dieses System richtig rechnet? Und die Tests werden alle für nur eine feste Anzahl Nachkommastellen durchgeführt - und für einen Rundungsalgorithmus. Wie sicher ist es, dass damit der Algorithmus auch für andere Kombinationen aus Nachkommastellenanzahl und Rundungsalgorithmus korrekte ergebnisse liefert?
Mit diesen Fragen beende ich den heutigen Beitrag - ich werde wohl erst noch ein paar Mal darüber schlafen müssen, bevor ich die Energie aufwende, mein Framework für die numerische Behandlung von Differentialgleichungssystemen auf die Option der Benutzung von BigDecimal als unterliegenden Datentyp zu erweitern.
28.04.2022
Manchmal dauert es ein wenig länger von der Inspiration bis zur Umsetzung
26.02.2020
Nachdem ich mir in meinem früheren Artikel zum Thema der Mathematik mit beliebiger Präzision in Java noch nicht sicher war ob es Sinn machen würde, mein Framework für die numerische Behandlung von Differentialgleichungssystemen auf die Option der Benutzung von BigDecimal als unterliegenden Datentyp zu erweitern, habe ich nun doch damit experimentiert:
Multi-User-WebDAV, Docker, GitHub
17.11.2019
Nachdem ich mich in letzter Zeit verstärkt mit Docker und dem zugehörigen Ökosystem beschäftige, habe ich begonnen, verschiedenste Dienste in Containern zu testen um zu sehen, ob in manchen Fällen LXC oder KVM nicht doch die bessere Wahl wäre...
Weiterlesen...Android Basteln C und C++ Chaos Datenbanken Docker dWb+ ESP Wifi Garten Geo Go GUI Gui Hardware Java Jupyter Komponenten Links Linux Markdown Markup Music Numerik OpenSource PKI-X.509-CA Python QBrowser Rants Raspi Revisited Security Software-Test sQLshell TeleGrafana Verschiedenes Video Virtualisierung Windows Upcoming...
In eigener Sache...
Weiterlesen...Ich habe eine neue Java Swing Komponente erstellt: Es handelt sich um einen Wrapper für von JToolBar abgeleitete Klassen, die die Werkzeugleiste minimieren und sie nur dann einblenden, wenn der Mauszeiger über ihnen schwebt.
Weiterlesen...Ich habe bereits in einem früheren Artikel über meine ersten Erfolge berichtet, der sQLshell auf Basis des bestehenden Codes aus dem Projekt EBMap4D eine bessere Integration für Geo-Daten zu spendieren und entsprechende Abfragen, bzw. deren Ergebnisse auf einer Kartenansicht zu visualisieren.
Weiterlesen...Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.
Wer daran teilhaben und eventuell sogar davon profitieren möchte, muss damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.
Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...
PS: Meine öffentlichen Codeberg-Repositories findet man hier.