Italia
Fonte/ Codesnippets

Eulersche Gamma-Funktion

 

p.specht

Die Funktion "Faktorielle"ist nur per 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 per 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 per 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


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

1.387 Views

Untitledvor 0 min.
Sven Bader31.08.2023
p.specht21.11.2021
R.Schneider20.11.2021
Uwe Lang20.11.2021
Di più...

Themeninformationen

Dieses Thema hat 1 subscriber:

p.specht (1x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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