Diskussion:Binomialkoeffizient

Letzter Kommentar: vor 2 Tagen von Googolplexian1221 in Abschnitt Gaußsche Pifunktion?
Archiv
Archiv
Wie wird ein Archiv angelegt?

Problem mit dem "Algorithmus zur effizienten Berechnung" Bearbeiten

Wenn man den Pseudocode "naiv" in eine Programmiersprache überträgt, die bei Ganzzahlwerten (als solche wird man n und k i.d.R. deklarieren) nach jeder Operation (relevant ist hier die Division) das (Zwischen-)Ergebnis erforderlichenfalls zu einer Ganzzahl rundet (was u.a. auf C/C++ und Java zutrifft), erhält man falsche Ergebnisse.

#include <iostream>

unsigned int binomialkoeffizient (unsigned int n, unsigned int k) {
    if (k == 0) return 1;
    if (2*k > n) return binomialkoeffizient(n, n-k);
    return (n+1-k) / k * binomialkoeffizient(n, k-1);
}

unsigned int binomialkoeffizient_korrekt (unsigned int n, unsigned int k) {
    if (k == 0) return 1;
    if (2*k > n) return binomialkoeffizient_korrekt(n, n-k);
    return binomialkoeffizient_korrekt(n, k-1) * (n+1-k) / k;
}

int main () {
    std::cout << "4 ueber 2: " << binomialkoeffizient(4, 2) << ' ' << binomialkoeffizient_korrekt(4, 2) << '\n'; // 4 6
}

Ich habe den Pseudocode angepaßt, damit das Problem nicht mehr auftritt und auch sonst etwas verändert. --(nicht signierter Beitrag von 212.29.34.233 (Diskussion) 17:45, 27. Jul. 2017 (CEST))Beantworten

  1. Es ist mir völlig unerklärlich, wie man in einem ausdrücklich als „Pseudocode“ deklarierten Text einen Slash / nicht als „normalen“ Divisionsoperator interpretieren kann (also z. B. wie Du glauben kann, 9 / 2 sollte nicht zu 4,5 ausgewertet werden, sondern zu 4.
  2. Darüber hinaus ist Deine Lösung des „Problems“ durch Faktorenvertauschung untauglich: Bei Deinem Beispiel   würde das neue Programm zunächst mit (  und)   aufgerufen, dann (bevor die folgende Multiplikation mit   auch nur erkannt, geschweige denn ausgeführt wird) mit   dann mit   und schließlich mit   Bis jetzt ist noch überhaupt nichts gerechnet worden, erst dieser letzte Aufruf des Programms führt (weil nun   ist) zur Rückgabe 1. Ich würde meinen, daß das Programm mit dieser Rückgabe 1 sogar stoppt, aber auch eine andernfalls noch erfolgende (einmalige und abschließende) Multiplikation mit   würde nichts daran ändern, daß das Programm nicht die beabsichtigte Rückgabe liefert (ja, wegen einer Division durch 0 sogar abstürzen würde, weil die interne Variable k nun ja schon mit dem Wert 0 belegt ist).
Ich werde Deine Änderung daher (der Einfachheit halber komplett) zurücksetzen. Dabei lasse ich aber ausdrücklich offen, ob (a) Deine Vertauschung der ersten zwei Codezeilen und/oder (b) Deine Zusatzbemerkung über Iteration nicht doch wieder aufgenommen werden sollten. Du kannst diese beiden Punkte jedenfalls gerne hier zur Diskussion stellen, und ich werde mich in die Entscheidung über diese beiden Detailfragen dann nicht mehr einmischen. Gruß, Franz 00:38, 28. Jul. 2017 (CEST)Beantworten
Der 2. Punkt ist sicherlich kein Problem. Das kriegt der Compiler schon auf die Reihe ;-) Der deutliche Vorteil der Reihenfolge binomialkoeffizient(n, k-1) * (n+1-k) / k scheint mir aber zu sein, dass dabei ausschließlich Rechenoperationen mit ganzen Zahlen ausgeführt werden (wenn n ganz ist). Das war im Artikel wohl auch so gedacht, denn ein paar Zeilen weiter oben steht „Zusätzlich sind auch alle Zwischenergebnisse natürliche Zahlen.“ Grüße -- HilberTraum (d, m) 19:47, 28. Jul. 2017 (CEST)Beantworten

Ich habe den Revert und Beitrag von FranzR erst jetzt gesehen. Hättest Du meinen Beitrag in der Diskussion genau gelesen, wäre Dir aufgefallen, daß ICH nicht glaube, der / im Pseudocode wäre ein Ganzzahl-Divisionsoperator (wie z.B. in C), aber die Gefahr sehe, daß andere Personen, die den Artikel zu Rate zu (z.B. Schüler, die den Binomialkoeffizienten in einer Programmiersprache implementieren wollen/sollen), ihn dahingehend mißverstehen. Außerdem möchte ich Dir empfehlen (ich erlaube mir einmal, deinen latent überheblichen Sprachduktus zu übernehmen), Dich etwas mit Rekursion in der Informatik zu beschäftigen. Dann würde Dir nämlich auffallen, daß es keine "interne Variable k" gibt, die "schon belegt" sein könnte, sondern daß der Parameter k bei jedem (rekursiven) Aufruf der Funktion unabhängig einen anderen Wert annehmen kann (in imperativen Sprachen typischerweise durch einen eigenen Stackframe implementiert). Und deshalb liefert der Aufruf binomialkoeffizient_korrekt(10, 3) auch den korrekten Wert von 120 (ausprobiert mit gcc). -- 212.29.34.233 17:34, 2. Aug. 2017 (CEST)Beantworten

Ich habe den Code durch die Version vom 24. Oktober ersetzt. Sie ist in vielerlei Hinsicht sinnvoller und passt besser zum Text drumherum (klar: es wurde am 27. Oktober ja nur der Code geändert ;) ). --Daniel5Ko (Diskussion) 00:27, 3. Aug. 2017 (CEST)Beantworten

Summe verschobener Binomialkoeffizienten Bearbeiten

Ich glaube, in dem Abschnitt ist ein Fehler. Auf der rechten Seite dürfte im unteren Term des Binonialkoeffizienten nicht n+1 sondern der obere Index m stehen, oder? Richtig wäre meiner Meinung nach:   Steht zumindest so in Graham, Concrete Mathematics Seite 161 und Wolfram Alpha rechnet es auch so aus. --Sascha Laing (Diskussion) 13:34, 27. Apr. 2022 (CEST)Beantworten

Ne, ist identisch, denn
 
ist ja gültig, siehe Abschnitt Symmetrie der Binomialkoeffizienten. --Bnottelm (Diskussion) 17:49, 28. Apr. 2022 (CEST)Beantworten
Ach ja, danke dir! --Sascha Laing (Diskussion) 13:34, 9. Mai 2022 (CEST)Beantworten

Summen von Binomialkoeffizienten mit geraden bzw. ungeraden Anzahlen ausgewählter Objekte Bearbeiten

Ist denn nun die obere oder die untere Gaußklammer gemeint? (Und man sollte vielleicht \left und \right verwenden, aber das nur nebenbei.) --2A02:8108:50BF:C694:99B:FBDC:9F83:F23C 12:08, 15. Sep. 2022 (CEST)Beantworten

Kontinuierliche Definition Bearbeiten

Ich bin etwas verwirrt bzgl. der kontinuierlichen Definition. Zuerst ist von Zahlenpaaren a und b (was streng genommen überhaupt kein Zahlenpaar ist) die Rede, aber im weiteren werden die Symbole überhaupt nicht verwendet. Gehe ich richtig in der Annahme, dass n und k in der Definition durch a und b ausgetauscht werden müssten? --Mathze (Diskussion) 14:38, 15. Dez. 2023 (CET)Beantworten

Oder umgekehrt. Ich weiß nicht, welche Bezeichnungen im kontinuierlichen Fall üblich sind. --Digamma (Diskussion) 22:32, 15. Dez. 2023 (CET)Beantworten

Gaußsche Pifunktion? Bearbeiten

In dem Artikel ist die Rede von der "Gaußschen Pifunktion", die angeblich von Euler definiert wurde. Mal angenomme, das stimmt so, warum

  • heißt die dann eigentlich Gaußsche Pifunktion und nicht Eulersche Pifunktion?
  • steht in dem verlinkten Artikel zur Fakultät nichts zu dieser Funktion.
  • hat sich eine Bezeichnung etabliert, die leicht mit der Primzahlfunktion   zu verwechseln ist?

Und warum liefert mir google gerade mal 10 Treffer? Die sich auch noch alle irgendwie auf Wikipedia zu beziehen scheinen? Dies scheint mir eine Hinterlassenschaft von RB zu sein. Die Frage ist, wie lange wird akzeptiert, dass solche Dinge hier stehen bleiben. Meines Erachtens sollten die Beiträge von RB gänzlich rausgenommen werden. Es sei denn, man engagiert einen hauptberuflichen Lektor, der sich schnellstmöglich aller Beiträge von RB annimmt und in mühseliger Fleißarbeit herausfindet, was stehenbleiben kann und was nicht. So wie es jetzt ist, strotzt die deutsche Wikipedia im Bereich Mathematik nur so von Fantasiebeiträgen. Das ist jedenfalls mein Eindruck. --Mathze (Diskussion) 22:21, 3. Mai 2024 (CEST)Beantworten

Hallo Mathze, der Abschnitt trägt definitiv RB's Handschrift. Aber Fun Fact: Diese Schreibweise von Gauß gab es wirklich. Jedoch ist mir (bisher) keine sinnvolle Quelle bekannt, die das Gaussche Pifunktion nennt. Der wichtigste Grund hierfür dürfte sein, dass sich, was Fakultäten anbelangt, der Widersacher Legendre mit der Notation der Gammafunktion flächendeckend durchgesetzt hat (ich vermute auch durch Beiträge von Mellin u.a.). Nur sehr wenige Ausnahmen in der Literatur nutzen  ; bis auf Gauß selber und vielleicht ein paar jahrhunderte alte Schriften (etwa in Riemann's Über die Anzahl der Primzahlen unter einer gegebenen Grösse) noch H. M. Edwards in seinem Buch Riemann's Zeta Function (wo er versucht, Gauß' Notation zu „retten“). In der Fachwelt nutzen aber alle Gamma. Und was den eigentlichen Inhalt anbelangt: Ja, der Abschnitt sollte entfernt oder zumindest umgeschrieben werden. Liebe Grüße -- Googolplexian (Diskussion) 11:25, 4. Mai 2024 (CEST)Beantworten
Ah cool, danke für Deine Antwort, Du steckst mehr in der Geschichte der Mathematik als ich :). Sehr erhellend! Was das umschreiben oder Löschen anbelangt: Würdest Du Dich drum kümmern? Liebe Grüße Mathze --Mathze (Diskussion) 20:20, 4. Mai 2024 (CEST)Beantworten
Bin dabei. Leider muss ich glaube ich nochmal sorgfältig durch alle Abschnitte gehen, RB hat ganze Arbeit geleistet. Liebe Grüße -- Googolplexian (Diskussion) 11:56, 5. Mai 2024 (CEST)Beantworten