Mathematik-Grundbegriffe für Programmierer

Division durch Null, Unendlichkeit und Singularität

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Die Schulmathematik lehrt, dass man nicht durch 0 teilen darf. Ist das wirklich so? Und was passiert, wenn – etwa durch Anwendereingaben – solch eine "verbotene" Situation eintritt? Die Antwort führt zu den Schlagworten Unendlichkeit (Infinity), Singularität und Grenzwert (Limes).
07:21

Transkript

Es gibt eine ganze Menge an Halbwissen in der Mathematik, das darauf beruht, dass armen Schülern in der Grundschule etwas beigebracht wird nach dem Motto: das versteht ihr noch nicht und später wird nicht geklärt, was eigentlich wirklich dahinter liegt und wie es richtig ist. Und um eines dieser Themen möchte ich mich in diesem Video kümmern, Unendliche Weiten, es geht um Unendlichkeit. Aber um was es genau geht: Ist eigentlich das Teilen durch Null erlaubt, oder etwa verboten? Gibt es überhaupt verbotenen Dinge in der Mathematik, wenn man sie prinzipiell machen kann? Viele Leute lernen in der Schulmathematik, so in der Grundschule irgendwann, ja, man darf nicht durch Null teilen. Warum eigentlich nicht? Ist das wirklich so? Denn: man kann es ja machen. Ich zeige ihnen gleich, dass Sie das in einen Taschenrechner ja eingeben dürfen. Da kommt kein Stromschlag oder so. Aber was passiert - ist das denn nicht definiert? Oder was passiert sonst? Denn: man findet sehr oft - selbst in Literatur - dass sich zum Beispiel eine Programmiersprache komisch verhält. Komisch - wenn man durch Null teilt. Da ist gar nichts Komisches dabei. Ich habe hier mal ein kleines Java-Programm und wie sie sehen teile ich hier durch Null. 10,5 durch Null, ich hab davor eine Anweisung, ich habe danach eine Anweisung. Wir lassen das Programm mal laufen. Sie sehen die Ausgabe vor dem verbotenen Teilen durch Null. Dann kommt irgendein Wert und dann läuft das Programm ganz normal weiter. Dieses "da kommt irgendein Wert" - ja was steht denn da? Da steht "Infinity". Was heißt denn infinity - oder infinit? Unendlich - da ist die Unendlichkeit. Da, wo sich das Raumschiff befindet. Unendliche Weiten. Offensichtlich, was ergibt die Division durch Null? Unendlich. Das kann man jetzt so plakativ sagen und damit bewegt man sich auf ganz, ganz dünnem Eis. Im Grunde haben wir hier eine sogenannte Singularität vorliegen. Das ist auf der einen Seite eine Art Definitionslücke in einem System. Aber in der Mathematik versteht man das auch als eine Beschreibung der Unendlichkeit. Das ist wie gesagt sehr vage, aber so kann man argumentieren. Und die Programmierung spiegelt das natürlich über diese Token wieder. Wir nehmen uns mal einen Taschenrechner her. Acht geteilt durch Null, ist gleich - und dann sagt mir dieser Taschenrechner doch glatt: teilen durch Null ist nicht möglich. Wer hat nun recht? Taschenrechner, oder mein Java-Programm? "C-sharp"-Programm, "C"-Programm, welches auch immer. Naja, der Taschenrechner antwortet auf dem Niveau für einen Grundschüler. Man soll nicht durch Null teilen. In der Regel sinnvoll, aber extrem vereinfacht. Ich ändere das Programm jetzt hier ein bisschen und lass’ es wieder laufen und Sie sehen: jetzt wird hier eine sogenannte "exception" geworfen, eine Ausnahme, und das Programm erreicht nicht mehr diesen Part. Das heißt: hier wird das Programm beendet. Das ist ungefähr die gleiche Reaktion, die eben dieser Taschenrechner gezeigt hat. Ist ihnen aufgefallen, dass ich hier den Datentyp gewechselt habe? Denn das hier ist eine ganze Zahl, und Null, natürlich, im Grunde auch eine ganze Zahl. Wenn ich hier "0.0" hinschreibe und lass das wieder laufen, dann läuft das Programm wieder durch. Offensichtlich haben wir hier, programmiertechnisch, verschiedene Umsetzungen, was passiert bei der Division durch Null. Wir haben einmal die ganzen Zahlen, die natürlichen Zahlen, wie auch immer und wir haben dann die Gleitkommazahlen. Bei Gleitkommazahlen sagt mir Java - "C-sharp", "C", - wie auch immer: Da kann ich selbstverständlich durch Null teilen und das Ergebnis ist Unendlich; infinity, infinit - oder wie das auch immer dargestellt wird. Wenn wir mit ganzen Zahlen arbeiten, dann funktioniert das nicht. Das Ergebnis - infinit oder unendlich - ist kein Bestandteil der natürlichen Zahlen. Und deswegen macht es Sinn, hier zu sagen, das ist auch verboten. Aber es gibt Singularitäten in der Mathematik. "Unendlich" ist durchaus ein mathematisch fassbarer Begriff. Und diese Variante greift bei Gleitkommazahlen und deswegen setzen Programmiersprachen - zumindest die meisten - die explizit mit, richtigen Datentypen, festen Datentypen arbeiten, als Ergebnis der Division durch Null: unendlich. Wir haben hier den Fall, dass wir uns einem Grenzwert nähern, einem so genannten "Limes" und das habe ich hier mal programmiertechnisch umgesetzt, wobei ich da natürlich durch die Länge, die Größe der Datentypen, beschränkt bin. Das ist jetzt ein "C-sharp"-Programm. Was folgendes macht: Es nimmt die Zahl eins, und teilt sie durch einen immer kleiner werdenden Wert. Das heißt, dieser Wert hier strebt gegen Null. Und wir schauen uns mal an, was passiert: es ist relativ offensichtlich, - ich habe hier eine kleine Verzögerung - dass man das auch sieht: Es ist relativ offensichtlich, dass der Wert immer größer und größer wird und irgendwann aus dem Bereich der darstellbaren Zahlen hinausläuft. Wir lassen das mal so, dass dann das Fenster am Schluss auch offen bleibt. Und wir sehen, dass hier auch "C-sharp" wieder unendlich als Ergebnis liefert. Dieses Zeichen hier ist das umgedrehte "unendlich"-Zeichen. Das taucht in einigen Versionen von "Visual Studio", in einigen Konfigurationen so auf. Wie sie sehen, vom Quellcode her führe ich einen Test durch über eine Methode der Klasse "Double.IsInfinity" und die liefert "true", wenn das Ergebnis unendlich ist. Unendlich in Hinsicht, dass der Wertebereich des Datentyps des Datentyps überschritten ist. Das ist ungefähr genauso, als wenn sie ein Navi haben, wo irgendwann die Zielführung endet und eine Meldung kommt: "Das Ziel liegt in Richtung xyz". Ich möchte also zum Abschluss festhalten, dass die Division durch Null in der Regel kein sinnvoller Prozess ist im Rahmen eines Programms, aber im Rahmen der mathematischen Theorie durchaus definiert ist, wenn gleich das Ergebnis keine natürliche Zahl, sondern eben eine Singularität ist, und diese wird, vereinfacht gesagt, "unendlich" genannt.

Mathematik-Grundbegriffe für Programmierer

Lernen Sie die Themenbereiche und Verfahren aus der Mathematik kennen, die bei der täglichen Programmierarbeit zum Einsatz kommen.

2 Std. 54 min (40 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!