Imho macht jeder Programmierer irgendwann die erhellende Erfahrung, daß es eben nicht egal ist, was in welcher Reihenfolge gerechnet wird. Ganz besonders bei Algorithmen, die in winzigsten Schritten von einem Wert zum nächsten hüpfen – bei mir wars vor langen Jahren ein Programm, das die Lösung mittels ballistischer numerischer Integration zu finden suchte. Und bei der Wahl der Randbedingungen für den nächsten Versuch eigentlich nur im Nebel stocherte, da die erste Runge-Kutta-Implementierung die Besonderheiten des Modells eben nicht berücksichtigte.
Als Ergänzung zu deinen Ausführungen sei noch ein komplexeres Beispiel erwähnt: die Berechnung der Nullstellen einer quadratischen Funktion.
Mathematisch liegen diese ja bei x1/2 = ( -b +/- wurzel(b^2-4ac) ) / 2a
Durch das Quadrat wird b innerhalb der Klammer aber gerne mal zu klein oder groß, wodurch Genauigkeitsverluste entstehen (bzw. im Extremfall die Wurzel imaginär wird). Viel gravierender ist aber der nicht unübliche Fall, dass a, b und c in ähnlicher Größenordnung liegen. Dann kann es passieren, dass b^2 gegenüber 4ac genügend groß wird, dass die Auslöschung greift und wurzel(b^2-4ac) ungefähr b wird. Hups 😀
Mit einer abgewandelten – komplexeren – Formel lässt sich das aber in den Griff bekommen.
Ein berühmter Programmierfehler ist auch, mit Gleitkomma zu rechnen (ggf. implizit bei automatischer Typkonvertierung, z.B. weil ein Zwischenergebnis nicht mehr in ein double passt) und dann auf Gleichheit zu testen. Hat auch mir schon manche Stunde Freude gemacht….
@berti
Das liegt dann aber nicht an mir…;)
Mein RSS-Feed geht für ganz SB.de, inklusive meines Blogges. Vielleicht einmal die Einstellungen überprüfen?
Keine Ahnung welchen er meint, doch die beiden sind unterschiedlich: Im globalen thread-feed tauchen Deine posts auf, aber im globalen comment-feed nicht die dazu gehörenden Kommentare (lokale feeds nutze ich nicht).
So bleibt nur zu-Fuß-abonnieren mit einem Kommentar/Artikel. Und selbst das muß ich bei Interesse manchmal ein zweites Mal unternehmen, was dann allerdings nicht mit der ‘üblichen’ nick-mail-combi funktioniert. Zum Abschluß die gute Nachricht: Dreimal war noch nie nötig 😉
btw: Eben beim Nachschauen stellte ich fest, daß dies blog zwar im Blog-Index, nicht aber in der rss-Liste der blogs auftaucht. Vielleicht ist dieser Lapsus dafür verantwortlich oder läßt zumindest auf eine gemeinsame Ursache schließen…
ooops, etwas Wichtiges zur Präzisierung fehlt: Der Bedarf an ‘Nachabonnieren’ besteht blogunabhängig auf ganz SB.de, nicht etwa ausschließlich bei Bits&Bytes. Obgleich, eine Strichliste habe ich nicht geführt…
Hallo Zusammen. Hab mal eine Frage. Vielleicht kann mir ja hier jemand helfen? Bei einer Excel Pivot Tabelle kommen 4 werte zustande welche 4 nachkommastellen aufweisen, und 12 mal null (nicht NULL) werte. Wenn man diese Werte miteinander summiert sollten sich die 4 werte aufheben und zusammen null ergeben. Allerdings komme ich sowohl wenn ich die werte markiere, als auch wenn ich mit vba rechne auf -0,00000000000000000045623…
ich habe bei jeder einzlnen zahl alle 30 möglichnen nachkommastellen eingeblendet, da sind abe einfach keine werte zu finden. Bin etwas ratlos, würde aber wirklich gerne wissen wie es zu sowas kommen kann, Ich hätte auch screenshots und die werte als excel file, falls jemand interesse hat.
danke. vIelmals
@Knorre
Da wird wohl vermutlich der hier genannte Effekt eintreten: bei der Summierung der Zahlen kommt es zu kleinen Rechenungenauigkeiten, in deren Folge ein kleiner Restwert ungleich 0 übrig bleibt. Was passiert denn, wenn die Reihenfolge der 4 Werte in der Summierung geändert wird – ändert das etwas am Ergebnis?
Die in Knorres Rest vorhanden 4e-19 entsprechen einem Bit in der 65.ten Stelle. Es reichen für solche Effekte ein paar vorzeichen-verschiedene <1e30-Werte (sein Nachkommastellen-Test) wohl aus, falls die Nullen Rechenergebnisse sind, sollte der Grund klar sein.
Sonst könnte ja auch spaßeshalber die Binär-Rechnung ‘zu Fuß’ nachvollzogen werden…
püh, noch kein breites Grinsen weit und breit: Da waren heute morgen wohl noch gewisse Gegenden des Brägens im Tiefschlaf… 1e-19 wäre die 63. Stelle, mithin 4e-19 die 61. Plus und Minus, oha^^
Marcus Frenkel hat Informatik an der HTWK Leipzig studiert und versucht sich derzeit an wissenschaftlicher Arbeit und einer Promotion im gleichen Fach an der FernUniversität in Hagen.
Kommentare (14)