Springen naar inhoud

Gamma-functie, berekenen?


  • Log in om te kunnen reageren

#1

JWvdVeer

    JWvdVeer


  • >1k berichten
  • 1114 berichten
  • Ervaren gebruiker

Geplaatst op 12 augustus 2010 - 19:58

Dag allen,

Mijn probleem op dit moment is dat ik de gamma-functie aan het implementeren ben (in PHP). En dan wel enkel voor LaTeX .
Het probleem is echter dat ik niet meer wijs wordt uit de informatie over de gammafunctie. Hetgeen waar ik wel min of meer achter ben is dat deze gamma-functie niet uit elementaire functie bestaat, maar op een andere manier berekend dient te worden.

Alleen kom ik er niet uit wat de beste/handigste benaderingsformule is voor deze functie. Kunnen jullie mij hier een handje bij helpen?

Voor de duidelijkheid, ik bedoel deze: http://en.wikipedia..../Gamma_function.

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

Rogier

    Rogier


  • >5k berichten
  • 5679 berichten
  • VIP

Geplaatst op 12 augustus 2010 - 20:49

Heb je hier wat aan? http://algolist.manu...ma_function.php

Met name die Lanczos approximation (versimpelde variant) ziet er makkelijk doch doeltreffend uit.

Voor negatieve x kun je misschien iets met LaTeX ?
In theory, there's no difference between theory and practice. In practice, there is.

#3

JWvdVeer

    JWvdVeer


  • >1k berichten
  • 1114 berichten
  • Ervaren gebruiker

Geplaatst op 12 augustus 2010 - 21:13

Nou, eigenlijk niet zo zeer met de negatieve x-en. Maar door het noemen van die gelijkheid (die ik toch al verschillende keren onder ogen heb gezien), breng je me opeens wel op een geniaal idee.

Ik ben namelijk nu bezig met het implementeren van de students-t-verdeling, waarvoor ik deze functie dus nodig had. Bij de students-t-verdeling heb je echter dat het altijd is:
LaTeX


Als ik dan het omgekeerde van jouw stelling gebruik:
LaTeX

En daarbij de gelijkheid neem:
LaTeX

Dan geldt volgens mij:
LaTeX

Waarbij mod uiteraard modulo is (LaTeX )

Veranderd door JWvdVeer, 12 augustus 2010 - 21:15


#4

JWvdVeer

    JWvdVeer


  • >1k berichten
  • 1114 berichten
  • Ervaren gebruiker

Geplaatst op 12 augustus 2010 - 22:08

LaTeX

Moet natuurlijk zijn:
LaTeX

#5

Rogier

    Rogier


  • >5k berichten
  • 5679 berichten
  • VIP

Geplaatst op 13 augustus 2010 - 08:30

Voor natuurlijke getallen n geldt inderdaad dat LaTeX [/quote] klopt niet helemaal: voor even n bestaat hij niet (want (n mod 2)/2 wordt dan 0, en LaTeX (0) is niet gedefinieerd) en voor oneven n geldt dat LaTeX in plaats van LaTeX


Maar als het je om de student-t verdeling gaat dan heb je de Gamma functie alleen nodig voor x'en van de vorm n/2 met LaTeX . Dus dan kun je Gamma(x) vrij makkelijk zo uitrekenen:
function Gamma($x) { return ($x>1) ? ($x-1)*Gamma($x-1.0) : ($x<1 ? sqrt(pi()) : $x); }

Maar beter nog: ik weet niet tot hoeveel vrijheidsgraden je die t-verdeling nodig hebt, maar in de praktijk zal dat volgens mij niet meer dan een paar honderd zijn. En dan kun je alle daarvoor benodigde Gamma waarden (dwz van de eerste paar honderd n en n/2) beter in een tabelletje zetten en telkens daaruit halen. Sneller en nauwkeuriger kan niet ;)
In theory, there's no difference between theory and practice. In practice, there is.





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures