Wissenschaft
Menschen Wissenschaft Politik Mystery Kriminalfälle Spiritualität Verschwörungen Technologie Ufologie Natur Umfragen Unterhaltung
weitere Rubriken
PhilosophieTräumeOrteEsoterikLiteraturAstronomieHelpdeskGruppenGamingFilmeMusikClashVerbesserungenAllmysteryEnglish
Diskussions-Übersichten
BesuchtTeilgenommenAlleNeueGeschlossenLesenswertSchlüsselwörter
Schiebe oft benutzte Tabs in die Navigationsleiste (zurücksetzen).

Division durch Null

193 Beiträge ▪ Schlüsselwörter: Null, Division ▪ Abonnieren: Feed E-Mail

Division durch Null

28.03.2013 um 00:23
Hallo zusammen

Ich hab mal eine etwas absurde Frage, es handelt sich eigentlich um Grundschulmathematik und ich komme einfach nicht recht dahinter. Angenommen folgende vereinfachte Situation:

1 Tag.
Ein Stück Kuchen à 600 Gramm wird verteilt an 3 Personen:
Wie viel Gramm erhält jeder? Antwort: 200g.

2 Tag.
Dieselbe Situation wie am ersten Tag aber nur 2 Personen anwesend.
Wie viel Gramm erhält jeder? Antwort: 300g.

3.
Eine weitere Situation:
Es sind 3 Personen anwesend aber nun ist der Kuchen vergiftet!
Also nimmt keiner von denen ein Stück davon.
Wie viel Gramm erhält jeder? Antwort: 0g.

Jetzt komm ich aber zu meinem eigentlichen Problem.
Mathematisch wären die Gleichungen ja wie folgt:

1 Tag. => 600 / 3 = 200
2 Tag. => 600 / 2 = 300
3 Tag. => 600 / 0 = 600 oder etwa 600 / 0 = 0?

Die Aussage der letzten Gleichung sollte in etwa wie folgt interpretiert werden:
1 Stück Kuchen 600g, niemand will aber davon (0), also bleibt der Kuchen wie er ist: 600g.
Anders gesagt, alle beteiligten Personen erhalten 0g.

Es ist mir bewusst, dass durch Null nicht geteilt werden darf,
aber genau das ist ja mein Problem. Wie löst man eine solche Gleichung?
Denn wenn man den Term umkehren würde, würde er wie folgt lauten:
600 * 0 = 0, was ja in der Mathematik dann ein Wiederspruch wäre.

Ich stelle diese Frage vor allem deshalb, weil es mich als Programmierer einfach nervt, wenn ich bei Divisionen immer zuerst auf null Prüfen muss um keine Exception zu erhalten. (Egal ob nun Sql, C#, CrystalReports, ABAP, JavaScript, etc.)
Beispiel: a = x/y => BAZINGA - DivideByZeroException, also von vorne: if (x == 0) { ... }

Es muss doch einen logischen Weg geben, oder?

Wiki sagt ja folgendes:
Es ist nicht möglich, diese Frage zu beantworten, da niemand da ist, der die Kuchen bekommen könnte.

Ich finde diese Antwort leider ziemlich Philosophisch denn, theoretisch wären nun 600g Kuchen zur Verfügung, oder?

Ist das Problem wirklich ein Philosophisches Abstraktum oder gilt letztendlich einfach a = 42?

afk

Anzeige
15x zitiertmelden

Division durch Null

28.03.2013 um 00:38
@C
Das ganze Dilemma haben wir hier schon in beide Richtungen aufgedröselt:

1:unendlich


melden

Division durch Null

28.03.2013 um 00:53
Ich finde, dass die Situation an deinem drittem Tag eher so ist:
0g Kuchen (da vergiftet) durch x Personen - so ist x immer 0.
In Wiki ist der Kuchen aber nicht vergiftet - es ist keiner da der ihn essen koennte.


melden

Division durch Null

28.03.2013 um 01:21
Zitat von CC schrieb:ch stelle diese Frage vor allem deshalb, weil es mich als Programmierer einfach nervt, wenn ich bei Divisionen immer zuerst auf null Prüfen muss um keine Exception zu erhalten.
komm, die paar zeilen mehr... ;D


melden

Division durch Null

28.03.2013 um 02:13
Zitat von CC schrieb:1 Stück Kuchen 600g, niemand will aber davon (0), also bleibt der Kuchen wie er ist: 600g.
Anders gesagt, alle beteiligten Personen erhalten 0g.
Ich glaube das Problem ist, dass du die Frage nicht mathematisch genug betrachtest :)

Lass dir doch einfach mal die Funktion 600 / x (oder der Einfachheit halber 1 / x) plotten für ein paar x im Intervall um 0. Dann sollte recht schnell klar werden, was da passiert, wenn man sich von Rechts oder Links der 0 annähert.


melden

Division durch Null

28.03.2013 um 02:19
Um beim Kuchen-Beispiel zu bleiben:

Wenn du einen Kuchen zwischen einer Person aufteilen willst, gibts du ihr den Kuchen.
Willst du einene Kuchen zwischen zwei Personen aufteilen, gibst du jedem einen halben Kuchen.

Nun die Preisfrage:
Wieviel Kuchen musst du 0 Personen geben, um einen Kuchen aufzuteilen?


melden

Division durch Null

28.03.2013 um 02:20
@C
Zitat von CC schrieb:Eine weitere Situation:
Es sind 3 Personen anwesend aber nun ist der Kuchen vergiftet!
Also nimmt keiner von denen ein Stück davon.
Wie viel Gramm erhält jeder? Antwort: 0g.
Damit bleibt der Kuchen in einem Stück.
Dein Beispiel ist also 600/1 und nicht 600/0.

Wie oft musst du ein 600g-Stück nehmen um einen 600g-Kuchen darzustellen?
Genau 1 Stück: 600/1=600

Wie oft musst du ein 0g-Stück nehmen, um einen 600g-Kuchen darzustellen?
Du kannst so viele 0g-Stücke nehmen, wie du willst, du kommst nie auf 600g.
600/0=unendlich (näherungsweise)


2x zitiertmelden

Division durch Null

28.03.2013 um 02:26
Zitat von Dr.ShrimpDr.Shrimp schrieb:600/0=unendlich
Unendlich ist nicht die richtige Antwort. Du kannst unendlich mal 0 von 600 abziehen, und hast immer noch 600. Da ändert auch die Unendlichkeit nichts dran.

Die einzig richtige Lösung ist "nicht definiert". Und zwar ist es nicht definiert, weil jede Definition auf irgendeine Weise Widersprüche aufwerfen würde.


melden

Division durch Null

28.03.2013 um 02:30
@Quimbo

Ich hab "näherungsweise" dazukorrigiert. Ist schon richtig, direkt bei 0 springt es.
In der Praxis arbeitet man aber sehr wohl mit dieser Näherung. ;)

@C

Das ist auch ein Grund warum Rechner das nicht verarbeiten können. Algorithmen müssen die Eigenschaften der Finitheit erfüllen.


1x zitiertmelden

Division durch Null

28.03.2013 um 02:30
P.S.: Ich nehme an, wir reden über den Körper der reellen Zahlen. Nur damit kein Mißverständnis entsteht, es mag durch aus Algebren geben, in denen x / 0 definiert ist.


melden

Division durch Null

28.03.2013 um 02:32
Zitat von Dr.ShrimpDr.Shrimp schrieb:Ich hab "näherungsweise" dazukorrigiert. Ist schon richtig, direkt bei 0 springt es.
In der Praxis arbeitet man aber sehr wohl mit dieser Näherung. ;)
Nein, 600 / 0 ist keine Näherung, weil es keine Funktion ist.

lim(+x -> 0) [600 / x]
Das ist was anderes, wobei die bei 0 auch unstetig ist.


melden

Division durch Null

28.03.2013 um 02:44
Zitat von CC schrieb:1 Tag. => 600 / 3 = 200
2 Tag. => 600 / 2 = 300
3 Tag. => 600 / 0 = 600 oder etwa 600 / 0 = 0?
Die 200g und 300g beziehen sich ja nicht auf die Personen oder ihren Magen.

Es sind die 200g und 300g die man dann in Stückchen auf dem Teller (noch) sieht, sowie auch die ungeteilten 600g.


melden

Division durch Null

28.03.2013 um 02:45
@Quimbo

Ich weiß das, aber anstatt jetzt den Besserwissermodus anzuschalten :D, weil ich dir irgendwas nicht formal genug aufgeschrieben habe, hättest du die Erklärung mit dem Grenzwert doch einfach direkt schreiben können, oder?

@C hätte sich gefreut.


1x zitiertmelden

Division durch Null

28.03.2013 um 02:45
@C
Zitat von CC schrieb:Es sind 3 Personen anwesend aber nun ist der Kuchen vergiftet!
Also nimmt keiner von denen ein Stück davon.
Wie viel Gramm erhält jeder? Antwort: 0g.
Das hat nichts, aber auch gar nichts mit '600/0=0' zu tun...


Es müsste nämlich so lauten:

3. Tag - eine Person anwesend, sie erhält 600g.

4. Tag - keine Person anwesend, wie viele g erhält sie? Alles? Nichts?

... die Frage macht keinen Sinn, denn da ist gar niemand.
Zitat von CC schrieb:Ich finde diese Antwort leider ziemlich Philosophisch denn, theoretisch wären nun 600g Kuchen zur Verfügung, oder?
Was ist daran philosophisch?

Beantworte einfach konkret die Frage: du verteilst 600g an niemanden. Wie viel erhält jeder?


melden

Division durch Null

28.03.2013 um 02:54
Zitat von Dr.ShrimpDr.Shrimp schrieb:Ich weiß das, aber anstatt jetzt den Besserwissermodus anzuschalten :D, weil ich dir irgendwas nicht formal genug aufgeschrieben habe, hättest du die Erklärung mit dem Grenzwert doch einfach direkt schreiben können, oder?
Würde ich den Besserwissermodus anschalten, dann würde ich dir jetzt erklären, dass selbst obiger Grenzwert auf dem Intervall nicht existiert, weil die Funktion bei 0 unstetig ist ;)

Es gibt aber z.B. Programmiersprachen, die als Ergebnis einer Division durch 0 Unendlich (oder -Unendlich) liefern. Das kann man machen, um das gerade nicht extra immer prüfen zu müssen, da sich mit Unendlich gut rechnen lässt. Ob das Endergebnis dann noch korrekt ist, dass muss sich der Programmierer vorher überlegen. ;)

Aber im Körper der reellen Zahlen ist das definitiv "nicht definiert". Und das ist auch ganz praktisch so, um logische Widersprüche zu vermeiden.


1x zitiertmelden

Division durch Null

28.03.2013 um 02:58
@Quimbo
Zitat von QuimboQuimbo schrieb:Es gibt aber z.B. Programmiersprachen, die als Ergebnis einer Division durch 0 Unendlich (oder -Unendlich) liefern. Das kann man machen, um das gerade nicht extra immer prüfen zu müssen, da sich mit Unendlich gut rechnen lässt. Ob das Endergebnis dann noch korrekt ist, dass muss sich der Programmierer vorher überlegen.
Das sind dann aber auch wieder Trickserein. Binär liegt natürlich kein richtiges Unendlich im Speicher.
Zitat von QuimboQuimbo schrieb:Aber im Körper der reellen Zahlen ist das definitiv "nicht definiert".
Vollkommen korrekt. Hab dem nie widersprochen.


1x zitiertmelden

Division durch Null

28.03.2013 um 03:46
Zitat von CC schrieb:Ich stelle diese Frage vor allem deshalb, weil es mich als Programmierer einfach nervt, wenn ich bei Divisionen immer zuerst auf null Prüfen muss um keine Exception zu erhalten. (Egal ob nun Sql, C#, CrystalReports, ABAP, JavaScript, etc.)
Beispiel: a = x/y => BAZINGA - DivideByZeroException, also von vorne: if (x == 0) { ... }
Als Programmierer schreibst du doch Funktionen, die eine Eingabe erhalten und fuer diese eine Ausgabe produzieren. also:

ausgabe = func( eingabe )

Hierbei ist die Eingabemenge und die Ausgabemenge klar definiert. In deinem Fall mit dem Kuchen bedeutet das, du hast

stueckgroesse = aufteilen( kuchen, anzahl_leute )

wobei kuchen >= 0, anzahl_leute >= 1, und stueckgroesse >= 0 ist. Der Fehler passiert hierbei von ausserhalb, also in dem Moment wo du versuchst

aufteilen( 600, 0 )

zu berechnen weil die Funktion hierfuer nicht definiert ist. Genauso ist die Funktion nicht fuer eine negative Anzahl Leute definiert obwohl die Division durch eine negative Zahl selbst kein Problem darstellt. Dass hier eine Exception kommt ist durchaus sinnvoll.

Der logische Weg waere vorher zu garantieren, dass die Funktion niemals mit 0 aufgerufen wird. Alles laeuft im Grunde darauf hinaus dass man Eingabe/Ausgabemengen korrekt definiert und auch garantieren kann. Und wenn moegliche Eingaben 0 enthalten muss hier auch ein alternativer Rechenweg erfolgen, da sich die Situation grundlegend geandert hat. Das ist sozusagen ein fundamentales Wenn/Dann.


melden

Division durch Null

28.03.2013 um 05:16
Zitat von Dr.ShrimpDr.Shrimp schrieb:Das sind dann aber auch wieder Trickserein. Binär liegt natürlich kein richtiges Unendlich im Speicher.
Das ist halt eine Frage der Repräsentation. So gibt es auch eine für Unendlich.
Du schreibst ja auch nicht unendlich Zahlen aufs Papier, sondern repräsentierst Unendlich durch ein Symbol.

Mathematisch gesehen ist es auch nichts besonderes, dass man sich was definiert, wo die Division durch 0 definiert ist. Das kann sinnvoll sein, aber unter Umständen im Alltag beim Kuchenverteilen weniger zu gebrauchen ;)


melden

Division durch Null

28.03.2013 um 09:27
@C

Nimm mal nicht nur Ganze Zahlen und näher dich dann mal 0 an.

1/1
1/0,5
1/0,1
1/0,05


Dann wird dir auffallen, dass es für 0 gegen Unendlich geht.

Das gleiche machst du nochmal mit

1/-1
1/-0,5
...

und siehst, dass es gegen MINUS Unendlich geht.

Es ist also nicht definiert. 1/0 ist noch nichtmal unendlich. Es ist nicht definiert.
Zitat von Dr.ShrimpDr.Shrimp schrieb:600/0=unendlich (näherungsweise)
>.<

schreib doch bitte nicht sowas. Schreib doch bitte lieber 600/x für x -> Unendlich. y/0 ist einfach nicht definiert - es ist nicht "näherungsweise irgendwas".


2x zitiertmelden

Division durch Null

28.03.2013 um 10:56
Zitat von CC schrieb:Es ist mir bewusst, dass durch Null nicht geteilt werden darf,
aber genau das ist ja mein Problem. Wie löst man eine solche Gleichung?
Es wird doch gar nicht geteilt. Verwechsele "nicht" nicht mit Null.


Anzeige

melden