Analyse
Lassen Sie uns raten und dann systematisch verbessern, bis es richtig ist.
Beginnen Sie mit der Vermutung, dass die Antwort . Das ist natürlich falsch. Um zu sehen, wie falsch es ist, beschriften Sie einen Partner in jedem Paar mit "Rot" und den anderen mit "Blau". Aus der Sicht eines roten Individuums besteht eine Chance, dass sein (blauer) Partner ihnen gegenüber sitzt. Da es rote Individuen gibt, subtrahieren wir von dieser anfänglichen Vermutung.1 / ( 2 n - 1 ) n n × 1 / ( 2 n - 1 )11 / ( 2 n - 1 )nn × 1 / ( 2 n - 1 )
Aber warten - die noch nicht ganz richtig ist, denn alle Paare der Paare wurden doppelt gezählt. Wenn ein Paar gegenüber sitzt, bleiben Paare, Plätze und aus der Sicht eines roten Individuums beträgt die Wahrscheinlichkeit, dass sie Teil eines zweiten Paares sind, . Daher müssen wir erneut hinzufügen .2 n - 2 1 / ( 2 n - 3 ) ( nn - 12 n - 21 / ( 2 n - 3 )( n2) ×1/(2n-1)×1/(2n-3)
Aber jetzt haben wir die Beiträge von Dreifachpaaren zum Ergebnis unterzählt , die wir korrigieren müssen. Und so geht es weiter, bis wir endlich alle Paare in der Formel untergebracht haben. (Dies ist natürlich nur das Prinzip von Inklusion-Exklusion in Aktion.) n
Die resultierende Formel lautet
∑i = 0n( - 1 )ich( nich) 1( 2 n - 1 ) ( 2 n - 3 ) … ( 2 n - 2 i + 1 )=1F.1( - n , - n + 12, - 12) .(1)
Berechnung
Für positive ganze Zahlen ist die konfluente hypergeometrische Kummer-Funktion ein Polynom vom Grad in . Aus der Kummer-Transformation1 F 1 ( - n , - n + 1n nz1F.1( - n , - n + 12, z)nz
1F.1( - n , - n + 12, - 12) = e- 1 / 2 1F.1( 12, - n + 12, 12)
Es ist einfach zu schließen, dass der Grenzwert der Wahrscheinlichkeit, wenn groß wird, . Die Konvergenz ist langsam: Sie müssen mit multiplizieren , um eine zusätzliche Dezimalstelle zu erhalten. Trotzdem können genaue Werte (mit doppelter Genauigkeit) für jedes schnell berechnet werden, indem festgestellt wird, dass die Terme in der linken Summe von langsamer wachsen als Potenzen von . Wenn erreicht , sind die neuen Werte im Vergleich zu im Wesentlichen Null (und tatsächlich legt eine genauere Analyse nahe, dass die Summierung um gestoppt wirde - 1 / 2 ≈ 0,6065306597 ... n 10 n ( 1 ) - 1 / 2 i 52 e - 1 / 2 i = 45ne- 1 / 2≈ 0,6065306597 …n10n( 1 )- 1 / 2i52e−1/2i=45 wird funktionieren).
Diese Formel wird in bestimmten Computerumgebungen aufgrund von Ungenauigkeiten in der log-Gamma-Funktion für größer als 10.000.000 aufgeschlüsselt . Das Problem ergibt sich aus der Aufhebung der Unterschiede, die sich bei der Berechnung der Begriffe in der Reihe ergeben. Eine ausgezeichnete Annäherung an diese Unterschiede, wenn ausreichend groß ist, kann in Form von , wobei die Ableitung von (der Digammafunktion ) ist. Dies wird im folgenden Code mit geringem Rechenaufwand implementiert.n ψ ( n - 1 / 4 ) & Psi; log Γnnψ(n−1/4)ψlogΓ
Implementierung
Der folgende RCode berechnet ungefähr 20.000 Werte mit doppelter Genauigkeit pro Sekunde.
f <- function(n) {
h <- function(n) {
ifelse(n < 1e6, lfactorial(n) - lfactorial(n-1/2), digamma(n+3/4)/2)
}
m <- min(n, 46)
k <- 0:m
x <- exp(h(n) - h(n-k) - lfactorial(k) - k*log(2)) * (-1)^k
sum(x)
}
Lassen Sie uns als Beispiel verfolgen, wie nahe es log(f(n))an seinem Grenzwert von für großes . Wie oben behauptet, addiert jeder Faktor von in eine Dezimalstelle der Grenzgenauigkeit. Schauen wir uns daher die Dezimalstelle im Logarithmus des Verhältnisses von zu für ganze Potenzen von von bis :n 10 n n th f ( n ) e - 1 / 2 10 n = 10 1 n = 10 14−1/2n10nnthf(n)e−1/210n=101n=1014
> round(sapply(1:14, function(n) 10^n * (log(f(10^n)) + 1/2)), 3)
[1] -0.255 -0.251 -0.250 ... -0.250 -0.249 -0.249 -0.400
(Sieben Werte wurden in der Mitte weggelassen, alle gleich -0.250.) Das konstante Muster ist klar. Am Ende beginnt es mit zusammenzubrechen, was auf einen Genauigkeitsverlust hinweist. Eine Verbesserung würde wahrscheinlich eine hochpräzise Arithmetik erfordern.n=1014