Deutsch
Quelltexte/ Codesnippets

Eulersche Gamma-Funktion

 

p.specht

Die Funktion "Faktorielle"ist nur für positive GANZE Zahlen definiert: 5 ! = 1 * 2 * 3 * 4 * 5 = 120. Was aber ist z.B. 5.2 ! Wie soll man das rechnen? Auch darüber hat sich Herr Leonard Euler schon A.D. 1729 Gedanken gemacht: Er fand eine Funktion, die ähnlich wie die Fakultät funktioniert, aber im gesamten (im nachstehenden Programm nur positiven) Float-Zahlenbereich Ergebnisse liefert:

Gamma( x+1 ) ergibt dann genau x ! . Will man also die Fakultät von 5.2 wissen, berechne man die Gamma-Funktion für 6.2: Die Antwort: 5.2! = Gamma(6.2) = 169.406099462... Klar, sie mußte ja größer als 120 und kleiner als 6!=720 sein...

Verwendet wird das z.B. in der Versicherungsmathematik zur Bestimmung kleiner und mittlerer Schadenswahrscheinlichkeiten, oder in der Nachrichtentechnik, wo sie die Grundlage der sog. Gammaverteilung darstellt, die in Verkehrsauslastungsgleichungen (Netzwerkkapazitäts-Dimensionierung) zur Anwendung kommt. Die Gammafunktion-1 steht übrigens auch im Google-Sucheingabefeld zur Verfügung: Einfach ' 5.2 ! ' eingeben...
WindowTitle "Gamma-Funktion für Reelle Werte > 0 "
' Fortran90-Source: https://jean-pierre.moreau.pagesperso-orange.fr/Fortran/gamma_f90.txt
' Migriert nach XProfan11.2a 2014-10 by P.Specht, Wien; Ohne jedwede Gewähr!
' Details: https://de.wikipedia.org/wiki/Gammafunktion   bzw.
' https://en.wikipedia.org/wiki/Stirling%27s_approximation#Versions_suitable_for_calculators
WindowStyle 24:font 2:randomize
Window %maxx/4,%maxy/4-%maxx/2,%maxy/2
Main:
Test_Gamma
Waitinput
End
'*********************************************
'* Program to demonstrate the Gamma Function *
'* ----------------------------------------- *
'* Reference:                                *
'* "Numerical Recipes, by W.H. Press, B.P.   *
'*  Flannery, S.A. Teukolsky and T. Vetter-  *
'*  ling, Cambridge University Press, 1986"  *
'*  [BIBLI 08].                              *
'* ----------------------------------------- *
'* SAMPLE RUN:                               *
'*                                           *
'*       X        Gamma(X)                   *
'*  -------------------------                *
'*    0.5000    1.772453851                  *
'*    1.0000    1.000000000                  *
'*    1.5000    0.886226925                  *
'*    2.0000    1.000000000                  *
'*    2.5000    1.329340388                  *
'*    3.0000    2.000000000                  *
'*    3.5000    3.323350970                  *
'*    4.0000    5.999999999                  *
'*    4.5000   11.631728395                  *
'*    5.0000   23.999999996                  *
'*                                           *
'*********************************************

PROC Test_Gamma

    declare x!,y!
    declare i&
    print
    print  "      X        Gamma(X)    "
    print  "  __________________________________ "
    x!=0

    whileloop 100

        x!=x!+0.1
        y! = Gamma(x!)
        Print "\n";format$("     ##0.0####",x!),tab(14);format$("%g",round(y!,15))
        case %csrlin>20:waitinput

    endwhile

    print
    waitinput

endproc

proc Gamma :parameters xx!

    '*******************************************
    '*           FUNCTION  GAMMA(X)            *
    '* --------------------------------------- *
    '* Returns the value of Gamma(x) in double *
    '* precision as EXP(LN(GAMMA(X))) for X>0. *
    '*******************************************
    case xx!<=0:return 0
    declare cof![6],x!,tmp!,ser!,stp!,half!,one!,fpf!,j&,gamma!
    cof![1]=76.18009173:cof![2]=-86.50532033:cof![3]=24.01409822
    cof![4]=-1.231739516:cof![5]=0.00120858003:cof![6]=-0.00000536382
    stp!=2.50662827465:half!=0.5:one!=1.0:fpf!=5.5
    x!=xx!-one!
    tmp!=x!+fpf!
    tmp!=(x!+half!)*LN(tmp!)-tmp!
    ser!=one!

    whileloop 6:j&=&Loop

        x!=x!+one!
        ser!=ser!+cof![j&]/x!

    endwhile

    Gamma! = EXP(tmp!+LN(stp!*ser!))
    return Gamma!

endproc

 
XProfan 11
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
15.05.2021  
 



Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

1.374 Betrachtungen

Unbenanntvor 0 min.
Sven Bader31.08.2023
p.specht21.11.2021
R.Schneider20.11.2021
Uwe Lang20.11.2021
Mehr...

Themeninformationen

Dieses Thema hat 1 Teilnehmer:

p.specht (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie