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.

#6

bats

    bats


  • >250 berichten
  • 412 berichten
  • Ervaren gebruiker

Geplaatst op 05 januari 2017 - 01:21

Kan mij iemand vertellen hoe de berekening van de gamma-functie nu in z'n werk gaat.

 

Ik zie dan dat gamma(z)=de integraal tussen 0 en oneindig over t^z-1.e^-t dx.

Nu vraag ik mij af wat is "z" en wat is "t"?

e weet ik wel, dat is ongeveer 2,718

 

Hoe bereken je met deze formule de faculteit van bijv. 0,5 , 1,5 en 2,5?

 

Wat ik t.n.t. heb opgezocht wordt ik niet veel wijzer van.

 


#7

TD

    TD


  • >5k berichten
  • 24095 berichten
  • VIP

Geplaatst op 05 januari 2017 - 10:03

Ik zie dan dat gamma(z)=de integraal tussen 0 en oneindig over t^z-1.e^-t dx.
Nu vraag ik mij af wat is "z" en wat is "t"?

 

Die x in de integraal moet een t zijn; die t is dus de integratievariabele en dat is een 'dummy': die verdwijnt door te integreren en kan je gerust (overal!) vervangen door een andere variabele naar keuze.

 

De z is de variabele van de (gamma)functie. Wil je de waarde van bijvoorbeeld 2,5 weten, dan vervang je z door 2,5.
 

Hoe bereken je met deze formule de faculteit van bijv. 0,5 , 1,5 en 2,5?

 

In het algemeen niet, of toch niet eenvoudig, 'met de hand'. Je laat het uitrekenen door een computer, grafische rekenmachine ...

"Malgré moi, l'infini me tourmente." (Alfred de Musset)





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures