breakplaining: (Elementare) Zahlen //2907

In diesem Beitrag möchte ich diesmal das Konzept der Zahlen vorstellen. Was sind das eigentlich für Objekte? Wie kann man damit rechnen? Lässt sich 1 + 1 = 2 überhaupt beweisen?
Es geht mir dabei darum, die dahinterliegenden Ideen verständlich zu vermitteln, ohne detailliert in die mathematischen Grundlagen einzudringen.
Unsere arabischen Ziffern sind dabei lediglich Symbole oder Tokens, das Dezimalsystem eine bestimmte Darstellungsweise (nämlich als Summe über a_i*10^i, wobei die a_i Ziffern in {0, 1, .. 9} sind). Man könnte Zahlen auch völlig anders repräsentieren, beispielsweise mit römischen Ziffern schreiben. Die Eigenschaften sind unabhängig von der Darstellung.

Die Peano-Axiome gehen davon aus, dass jede (natürliche) Zahl n einen eindeutigen Nachfolger hat. [Der „Nachfolger“ ist das, was man in manchen Programmiersprachen durch den Doppelplusoperator berechnet n++.]
Beginnt man mit der 0 als initialer Zahl und inkrementiert sie, erhält man die 1. Wenn man auch von dieser wieder den Nachfolger sucht, findet man die 2, und so weiter und so fort. Induktionsartig werden sämtliche natürliche Zahlen durchiteriert und enumeriert. Dieses „Zählen“ oder „Abzählen“ ist die einfachste Art der Arithmetik. [Laut meiner Mutter habe ich schon im Kinderwagen meine Finger gezählt. Die Nachbarsmädchen hatten mir mit vier Jahren nicht geglaubt, dass ich bis Tausend zählen konnte.]
Zahlen kann man miteinander vergleichen oder verknüpfen, bzw. (binäre) Operatoren auf sie anwenden.

Vom Zählen kommt man zur Addition, indem man die Null als neutrales Element bestimmt (n + 0 = n) und von da aus rekursiv n + m++ = (n + m)++ definiert. Diese Addition ist kommutativ n + m = m + n und assoziativ (n + m) + k = n + (m + k).
Die Umkehrung der Addition (also von der Summe und einem der Summanden auf den anderen zu schließen) führt zur Subtraktion, welche negative Zahlen notwendig macht.

Die wiederholte Anwendung der Addition mit gleichen Summanden lässt sich zur Multiplikation verallgemeinern. Hier ist die 1 das neutrale Element. Es gelten weitere Regeln, auf die ich jetzt nicht weiter eingehen will. Das ist üblicher Schulstoff, an den ihr euch sicher noch alle gut erinnert.
Die Umkehrung der Multiplikation ist die Division. Bemerkenswert ist dabei, dass die Division durch 0 nicht möglich ist. Da die ganzen Zahlen für Divisionsergebnisse (also Quotienten bzw. Brüche) nicht ausreichen, erweitert man den Zahlenraum auf rationale Zahlen.

Auch Multiplikationen lassen sich mehrfach ausführen. So kommen wir zur Potenzierung. Diese ist jedoch nicht kommutativ a^b != b^a. Deshalb gibt es zwei verschiedene Umkehrungen: Wurzeln und Logarithmen.
Es stellt sich heraus, dass die rationalen Zahlen nicht ausreichen, um allen Werten von Wurzeln zu entsprechen. Irrationale Zahlen wie sqrt(2), sqrt(3) oder auch der Goldene Schnitt kommen hinzu. Andererseits findet man es auch hilfreich, Wurzeln negativer Zahlen zu definieren sqrt(-1) = i, was zu den imaginären Zahlen führt, und schließlich als Linearkombination mit den reellen zu den komplexen Zahlen. Diese haben keine unmittelbar anschauliche Entsprechung mehr, sind aber für viele Berechnungen in Natur und Technik sehr nützlich.
Algebraische Zahlen sind Nullstellen von Polynomen mit rationalen Koeffizienten.
Aber auch mit den algebraischen Zahlen ist unser reeller Zahlenraum noch nicht vollständig. Transzendente Zahlen (wie pi oder e) füllen die unendlich vielen Lücken zwischen den algebraischen Zahlen beliebig dicht auf. Zwischen zwei berechenbaren Zahlen sind überabzählbar unendlich viele unberechenbare.

Zahlen bilden die Schnittstelle in unsere physische Welt und Natur. Physikalische Größen sind das Produkt aus einem Zahlenwert und einer Einheit. Diese Größen lassen sich in der Experimentellen Physik (grundsätzlich) messen. In der Theoretischen Physik sind die Messergebnisse Grundlage zur Erstellung von Theorien und Modellen, die das Verhalten der Natur beschreiben und berechenbare Vorhersagen zulassen.

Über Anne Nühm (breakpoint)

Die Programmierschlampe.
Dieser Beitrag wurde unter Uncategorized abgelegt und mit , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

16 Antworten zu breakplaining: (Elementare) Zahlen //2907

  1. pirx1 schreibt:

    Die Sicht der Menschen ist schon sehr egozentrisch. Dezimal, weil zehn Finger … Willkür pur.

    Womöglich ist auch das, was wir anhand unserer Erlebniswelt diskret wahrnehmen (Bsp.: EIN Apfel) für die Erklärung der Welt gar nicht so relevant, wie wir annehmen und etwa die von uns zur Einteilung genutzte Abgrenzung eines Objekts völlig irrelevant, etwa, weil wir zur Wahrnehmung außerhalb von Raumzeit in anderen Dimensionen gar nicht in der Lage sind.

    Am Ende ist z. B. ein Energiequant (in unserer Zahlenvorstellung als Kommazahl mit einer willkürlich bestimmten Einheit dargestellt) die „wahre Eins“.

    Like

    • Dezimal, weil zehn Finger .. Willkür pur.

      Das Dezimalsystem ist ja nur eine bestimmte Darstellungsweise, das wir – freilich wegen unserer zehn Finger – besonders praktisch finden.
      Für Computer ist die binäre Darstellung zweckmäßiger. Da Menschen das bisweilen auch lesen können wollen, kann man dann – quasi als Kompromiss – Hex-Zahlen nutzen, die eine kompaktere Schreibweise bieten.

      Am Ende ist z. B. ein Energiequant (in unserer Zahlenvorstellung als Kommazahl mit einer willkürlich bestimmten Einheit dargestellt) die „wahre Eins“.

      Energie ist eine physikalische Größe, befindet sich also außerhalb der reinen Mathematik.
      Die natürlichen Zahlen sind ein naheliegender erster Ansatz, um ein Zahlenverständnis zu aufzubauen. Schon die Vormenschen erkannten wohl, dass ein Stein, ein Baum, ein Mensch, .. eine abgeschlossene, einzelne Entität ist, und dass es davon auch jeweils mehrere geben kann. Eine Nase, zwei Augen, .. zehn Finger, ..

      Like

      • pirx1 schreibt:

        Für den Alltag natürlich praktisch, weil man sich damit intuitiv im alltäglichen menschlichen Wahrnehmungsbereich bewegt. Wurmlochreisen u.ä. kommen darin ja nicht vor.

        Für ein gesamtphysikalisches Verständnis universeller Zusammenhänger aber vielleicht auch ein Hindernis?

        Ob man auf Vulkan, Romulus oder den Planeten um Alpha Centauri auch nur in den eigenen Dimensionen denkt oder vielleicht schon erweiterte Erkenntnisse hat?

        Gefällt 1 Person

        • In unserem Universum gelten einheitliche Naturgesetze.
          Wie es in anderen Universen sein könnte, ist jenseits aller Spekulation. Die Mathematik ist jedoch allgemein, umfassend und in jedem Universum gültig, da nicht an die Beschränkungen von Raumzeit und Materie gebunden.

          Like

          • pirx1 schreibt:

            Stimme ich dem ersten Satz noch zu, so ist der dritte doch eine contradictio in adjecto, denn wenn etwas außerhalb jeder Spekulation ist, wie kann man dann so sicher sein, dass Mathematik in der von uns erfahrbaren Form dort ebenso gültig ist?

            Like

  2. pingpong schreibt:

    Nerdalarm:

    Der Ausdruck n + m++ funktioniert nicht wie gewünscht, weil bei postfix increment zuerst der Ausdruck n+m ausgewertet wird, und erst nachher m um eins erhöht. Gemeint war vermutlich n + (++m), dann stimmt auch die andere Seite der gleichung.

    Gefällt 1 Person

    • Hoppela!
      Ich gehe davon aus, dass der Doppelplusoperator die höchste Priorität hat und deshalb vorrangig ausgewertet wird. Im Zusammenhang mit Operationen gleicher Priorität (z.B. Arrayzugriff) wäre das dann schiefgegangen. Aber eine simple Addition wird erst später durchgeführt.

      Aber danke für den Hinweis.

      Like

      • pingpong schreibt:

        Mein compiler ist anderer Meinung:


        #include

        int main(int argc, char *argv[])
        {
        int n=2;
        int m=3;
        int sum = n+m;
        sum++; // sum=(n+m)++ not possible, lvalue required as increment operand
        int r1 = n + m++; m=3;
        int r2 = n + ++m;

        printf("n + m++ == (n+m)++: %s\n"
        "n + ++m == (n+m)++: %s\n",
        r1==sum ? "true" : "false",
        r2==sum ? "true" : "false");

        return 0;
        }

        Ergebnis:

        n + m++ == (n+m)++: false
        n + ++m == (n+m)++: true

        Gefällt 1 Person

        • Na gut, dann ist das wohl von der Implementierung abhängig.
          Vor Jahren habe ich mich mal mit Compilerbau beschäftigt, erinnere mich aber nicht mehr an solche Details.
          Ich weiß aber jetzt wieder, warum ich in unseren Coding Guidelines solche Konstruktionen mit Postfix-Operatoren innerhalb weiterer Ausdrücke verbiete (in for-Schleifen oder standalone sind sie OK). Ggf. sind zusätzliche Hilfsvariablen zu benutzen.

          Mit dieser Schreibweise wollte ich eigentlich nur den springenden Punkt möglichst leicht verständlich rüberbringen. Darüber hinaus war es nicht zur Umsetzung in realen Code vorgesehen, Dass z.B „(n+m)++“ syntaktisch nicht erlaubt ist, war mir bewusst.
          Das nächste Mal nehme ich lieber succ(m).

          Like

          • pingpong schreibt:

            Sonntags-nerdalarm:

            Meine Erklärung oben ist wohl nicht ganz zutreffend, auch wenn es auf die beschriebene Reihenfolge hinausläuft.

            Bei postfix increment wird der Ausdruck n+m ausgewertet, erst nachher ist der neue Wert von m verfügbar. Nur hat die operator Priorität nichts damit zu tun, sondern die Art und Weise wie der c++ Standard den operator definiert. Es ist eine Funktion, und als solche hat sie eine Wirkung und einen Rückgabewert. Die Wirkung ist, dass der Wert um eins erhöht wird. Der Rückgabewert ist der alte Wert. Deshalb ist das Ergebnis des Ausdrucks n + m++ immer der Wert n+m. Und m ist nachher um eins größer. Das gilt unabhängig davon welche Priorität der ++ Operator hat, es folgt direkt daraus wie die Sprache den Operator definiert hat. Ist damit auch unabhängig von der Implementierung.

            coding standard verbietet postfix increment innerhalb weiterer Ausdrücke. Hilfsvariablen nutzen.

            Vernünftig. In Gebieten wo menschliche Fehler eine große Rolle spielen (zB programmieren) ist explizit besser als implizit.

            das nächste Mal nehme ich lieber succ(m)

            Finde ich eine gute Idee. Dann ist man fürs Verständnis nicht darauf angewiesen, mit Operatoren aus einer Programmiersprache vertraut zu sein. Macht den Text für ein größeres Publikum zugänglich, das ist immer eine gute Sache. 👍

            Like

  3. Pingback: Die Gräphin von Tsal //2924 | breakpoint

  4. Pingback: Tweets Numero m+39 //3001 | breakpoint

Hinterlasse einen Kommentar