
Ich möchte diese Repräsentation der regularisierten Betafunktion implementieren. Jede der von mir durchgegangenen Varianten -selbst im Iterationsverfahren- liefert für z = 0.5, a = 2.5 und b = 5 den Wert 0.2772238763345327. Das richtige Ergebnis lautet jedoch 0.83580505... .
Dies ist mein aktueller Stand:
Code: Alles auswählen
import math as ma
def betafunktion(x, y):
return (ma.gamma(x)*ma.gamma(y))/ma.gamma(x+y)
def regbeta(z,a,b,c1=0,k=0):
if c1 == 0:
const = ((z**a)*((1-z)**b))/(a*betafunktion(a,b))
var = 1+regbeta(z,a,b,c1+1,k+1)
#print(const, var)
return const/var
elif c1 == 1:
c1 = 2
zaehler = -1*(((a+k)*(a+b+k)*z)/((a+2*k)*(a+2*k+1)))
nenner = 1+regbeta(z,a,b,c1,k+1)
#print("U: ", zaehler, nenner, zaehler/nenner, k)
return zaehler/nenner
else:
if k == 200:
return 10**-10
else:
c1 = 1
zaehler = (k*(b-k)*z)/((a+2*k-1)*(a+2*k))
nenner = 1+regbeta(z,a,b,c1,k+1)
#print("G: ", zaehler, nenner, zaehler/nenner, k)
return zaehler/nenner