Gammafunktionen

Från Rilpedia

(Omdirigerad från Gammafunktion)
Hoppa till: navigering, sök
Wikipedia_letter_w.pngTexten från svenska WikipediaWikipedialogo_12pt.gif
rpsv.header.diskuteraikon2.gif
Absolutvärdet av gammafunktionen i det komplexa talplanet.

Gammafunktionen är den matematiska funktion som generaliserar fakulteten n!, det vill säga heltalsprodukten 1 · 2 · 3 · ... · n, till de reella talen och även de komplexa. Den definierades 1729 av Leonhard Euler och betecknas Γ(z). Gammafunktionen används inom många områden av matematiken, bland annat för lösningar till integraler och räknas som en av de viktigaste speciella funktionerna.

Innehåll

Bakgrund

Fakulteten av ett naturligt tal n, betecknad n!, är produkten av alla tal mindre än eller lika med talet självt. Således är

1! = 1,
2! = 1 · 2 = 2,
3! = 1 · 2 · 3 = 6,
4! = 1 · 2 · 3 · 4 = 24 och så vidare.

Om man betraktar grafen av punkterna, verkar det troligt att man skulle kunna rita en mjuk kurva som binder ihop dem. Att bestämma den matematiska funktion som svarar mot en sådan kurva är dock inte helt enkelt. Problemet fick sin lösning först 1729, då den schweiziske matematikern Leonhard Euler i ett brev till Christian Goldbach daterat den 13 oktober beskrev den oändliga produkten

\Gamma(x)\,\! = \lim_{r \to \infty} \frac{r!r^x}{x(1+x)(2+x) \cdots (r+x)}
= \lim_{r \to \infty} \frac{r^x}{(1+\frac{x}{1})(1+\frac{x}{2}) \cdots (1+\frac{x}{r})}.

Den 8 januari året därpå angav Euler i korrespondens med Goldbach även funktionen i form av den ekvivalenta integralen

\Gamma(z)=\int_0^1 (-\log t)^{z-1} dt (z > 0).

Det kan visas att Eulers funktion precis som fakulteten uppfyller den rekursiva identiteten

\Gamma(z) = z\,\Gamma(z-1)

för alla z. Eftersom Γ(1) = 1 generaliserar gammafunktionen därmed fakulteten. Speciellt gäller att

\Gamma(n+1) = \,n! (n heltal)

Förskjutningen med 1 gentemot fakulteten infördes av Adrien-Marie Legendre, som även introducerade beteckningen Γ (gamma) år 1809. En alternativ notation som undviker förskjutningen är i form av Π-funktionen (ej att förväxla med π-funktionen för primtalen) införd av Carl Friedrich Gauss så att

\Pi(x) =\,\! \Gamma(x+1),

och

\Pi(n) =\,\! n!

Både Legendre och Gauss gjorde betydande insatser i studiet av gammafunktionen. Funktionen har även undersökts ingående av bland andra Christoph Gudermann, Joseph Liouville, Karl Weierstrass och Charles Hermite.

Med tanke på gammafunktionens komplicerade definition i jämförelse med fakulteten är en naturlig fråga huruvida det finns någon annan, möjligtvis enklare funktion som generaliserar fakulteten. Enligt Bohr–Mollerups sats (1922) är gammafunktionen dock unik att ha den egenskapen, om man lägger till kravet att den sökta funktionens logaritm ska vara konvex.

Definitioner och egenskaper

Graf av gammafunktionen längs den reella tallinjen.

Gammafunktionen är transcendent och kan inte uttryckas på sluten form i termer av elementära funktioner. För z med en positiv realdel definieras den i modern litteratur vanligtvis som den generaliserade integralen

\Gamma(z)=\int_0^\infty t^{z-1}e^{-t}dt.

Den här integralen kan med hjälp av variabelsubstitution visas vara identisk med Eulers ursprungliga definition. Att den uppfyller den rekursiva egenskapen kan visas genom partiell integration.

Negativa värden fås genom Eulers reflektionsformel:

\Gamma(1-z) \; \Gamma(z) = {\pi \over \sin \pi z}

Gammafunktionen är analytisk i hela det komplexa talplanet, förutom i punkterna {0, −1, −2...} där den har enkla poler.

Specifika värden

På grund av sambandet med fakulteten antar gammafunktionen heltalsvärden för positiva heltalsargument:

\Gamma(1) = 0! =\,\! 1
\Gamma(2) = 1! =\,\! 1
\Gamma(3) = 2! =\,\! 2
\Gamma(4) = 3! =\,\! 6
\Gamma(5) = 4! =\,\! 24
\Gamma(6) = 5! =\,\! 120
\Gamma(n) = \,\! (n-1)!

Värden av gammafunktionen kan även härledas för vissa rationella argument. För udda n är

\Gamma\left(\frac{n}{2}\right) = \sqrt{\pi} \cdot \frac{(n-2)!!}{2^{(n-1)/2}}

där !! betecknar semifakultet, eller likvärdigt (n > 0)

\Gamma(n-1/2)=\sqrt{\pi}\cdot \prod_{k=0}^{n-2} {2k + 1 \over 2}.

Speciellt gäller

\Gamma(1/2) = \sqrt{\pi}\,
\Gamma(3/2) = \frac {\sqrt{\pi}} {2} \,
\Gamma(5/2) = \frac {3 \sqrt{\pi}} {4} \,
\Gamma(7/2) = \frac {15\sqrt{\pi}} {8}.\,

Relaterade funktioner

Numerisk beräkning

Eftersom gammafunktionen ofta dyker upp i uttryck som används vid vetenskapliga beräkningar, är det av intresse att kunna beräkna den numeriskt med god precision.

För heltalsargument kan gammafunktionen beräknas exakt utifrån motsvarande fakultet. Även värdet för halvtalsargument kan bestämmas exakt, så när som den irrationella faktorn \sqrt{\pi}. För godtyckliga reella och komplexa argument kan gammafunktionens värde dock endast approximeras. Detta är i sin tur inte enkelt, eftersom exempelvis framställning i form av en Maclaurinserie inte konvergerar. Mer avancerade metoder har dock härletts. En av de mest välkända är Lanczos approximation

\Gamma(z+1) = \sqrt{2\pi} {\left( z + g + \begin{matrix} \frac{1}{2} \end{matrix} \right)}^{z + \frac{1}{2} } e^{-\left(z+g+\frac{1}{2}\right)} A(z),

där konstanten g kan väljas godtyckligt och A(z) är en snabbt konvergerande summa med koefficienter som kan beräknas i förväg. Beroende på valet av g kan godtycklig precision erhållas.

Nackdelen med Lanczos metod är att koefficienterna är tidskrävande att beräkna. Ett alternativ är att använda Spouges approximation, som använder ett liknande grunduttryck men enklare koefficienter för summeringen. Dock konvergerar Spouges approximation långsammare, och eftersom koefficienter som är giltiga för alla z kan beräknas i förväg om en fix precision önskas, är Lanczos metod att föredra. Lanczos approximation, med lagrade koefficienter, rekommenderas av Numerical Recipes och används till exempel av GNU Scientific Library.

Ytterligare en metod är Stirlings approximation. Den lämpar sig särskilt väl för mycket stora argument, men fungerar i gengäld inte alls för mycket små argument.

Oberoende av metod, finns några allmängiltiga anmärkningar för numerisk beräkning av gammafunktionen. Till att börja med, är det ofta mer praktiskt att arbeta med gammafunktionens logaritm, eftersom gammafunktionen växer så snabbt att resultatet kan skapa overflow. En annan är att negativa argument enklast (och i vissa fall endast kan) hanteras via reflektionsformeln. Slutligen räcker det i princip att kunna approximera gammafunktionen på ett intervall, eftersom såväl större som mindre argument tack vare gammafunktionens multiplikativa egenskap kan hanteras genom upprepad multiplikation respektive division över skillnaden mellan det valda intervallet och argumentet (detta är dock inte nödvändigtvis praktiskt).

Exempel på implementation

Följande enkla implementation av Lanczos metod i Python tar såväl reella som komplexa argument och ger upp till cirka 15 korrekta decimaler:

from cmath import *

# Koefficienter från GNU Scientific Library
g = 7
C = [0.99999999999980993, 676.5203681218851, -1259.1392167224028,
     771.32342877765313, -176.61502916214059, 12.507343278686905,
     -0.13857109526572012, 9.9843695780195716e-6, 1.5056327351493116e-7]

def gamma(z):
    z = complex(z)
    # Reflektionsformeln
    if z.real < 0.5:
        return pi / (sin(pi*z)*gamma(1-z))
    else:
        z -= 1
        x = C[0]
        for i in range(1, g+2):
            x += C[i]/(z+i)
        t = z + g + 0.5
        return sqrt(2*pi) * t**(z+0.5) * exp(-t) * x

Se även


Källor

Personliga verktyg