Lanczos yaklaşımı - Lanczos approximation - Wikipedia

İçinde matematik, Lanczos yaklaşımı hesaplamak için bir yöntemdir gama işlevi sayısal olarak yayınlayan Cornelius Lanczos Daha popüler olana pratik bir alternatiftir. Stirling yaklaşımı gama işlevini sabit hassasiyetle hesaplamak için.

Giriş

Lanczos yaklaşımı aşağıdaki formülden oluşur

gama işlevi için

Buraya g bir sabit bu, keyfi olarak, Re kısıtlamasına tabi olarak seçilebilir (z) > 1/2.[1] Katsayılar pbağlı olan ghesaplaması biraz daha zordur (aşağıya bakın). Burada belirtilen formül yalnızca doğru kompleksteki argümanlar için geçerli olsa da yarım düzlem, tümüne genişletilebilir karmaşık düzlem tarafından yansıma formülü,

Seri Bir dır-dir yakınsak ve istenen hassasiyette bir yaklaşık değer elde etmek için kesilebilir. Uygun olanı seçerek g (tipik olarak küçük bir tamsayı), gamma fonksiyonunu tipik olarak hesaplamak için serinin sadece 5-10 terimine ihtiyaç vardır. tek veya çift kayan nokta hassas. Sabit ise g seçilirse, katsayılar önceden hesaplanabilir ve toplam aşağıdaki forma dönüştürülür:

Bu nedenle, gama fonksiyonunun hesaplanması, yalnızca az sayıda temel fonksiyonlar ve saklanan sabitlerle çarpma. Lanczos yaklaşımı tarafından popüler hale getirildi Sayısal Tarifler, hangi gama işlevinin hesaplanmasının "günah gibi kabul ettiğimiz diğer yerleşik işlevlerden çok daha zor olmadığına görex veya ex". Yöntem ayrıca GNU Bilimsel Kütüphanesi.

Katsayılar

Katsayılar şöyle verilir

nerede temsil etmek (n, m) the th öğesi matris için katsayıların Chebyshev polinomları hesaplanabilir tekrarlı bu kimliklerden:

Godfrey (2001) katsayıların nasıl elde edileceğini ve ayrıca kesilmiş serilerin değerini açıklar. Bir olarak matris çarpımı.[2]

Türetme

Lanczos formülü şu şekilde türetmiştir: Leonhard Euler 's integral

elde etmek için bir dizi temel manipülasyon yapmak

ve integral için bir dizi türetmek.

Basit uygulama

Aşağıdaki uygulama Python programlama dili karmaşık argümanlar için çalışır ve tipik olarak 15 doğru ondalık basamak verir.En küçük katsayıların çıkarılmasının daha hızlı ancak biraz daha az doğru bir uygulama ile sonuçlanmadığını unutmayın; Daha az terimli bir genişleme için katsayıların sıfırdan yeniden hesaplanması gerekir.

itibaren cmath ithalat günah, sqrt, pi, tecrübep = [676.5203681218851    ,-1259.1392167224028    ,771.32342877765313    ,-176.61502916214059    ,12.507343278686905    ,-0.13857109526572012    ,9.9843695780195716e-6    ,1.5056327351493116e-7    ]EPSİLON = 1e-07def drop_imag(z):    Eğer abs(z.hayal etmek) <= EPSİLON:        z = z.gerçek    dönüş zdef gama(z):    z = karmaşık(z)    Eğer z.gerçek < 0.5:        y = pi / (günah(pi * z) * gama(1 - z))  # Yansıma formülü    Başka:        z -= 1        x = 0.99999999999980993        için (ben, pval) içinde numaralandırmak(p):            x += pval / (z + ben + 1)        t = z + len(p) - 0.5        y = sqrt(2 * pi) * t ** (z + 0.5) * tecrübe(-t) * x    dönüş drop_imag(y)"""Yukarıdaki yansımanın kullanımı (dolayısıyla if-else yapısı) gereklidir. yaklaşıklığı z değerlerine genişletmeye izin verdiği için garip görünebilir. Re (z) <0.5, burada Lanczos yöntemi geçerli değildir."""Yazdır(gama(1))Yazdır(gama(5))   Yazdır(gama(0.5))

Ayrıca bakınız

Referanslar

  1. ^ Pugh Glendon (2004). Lanczos Gamma yaklaşımının analizi (PDF) (Doktora).
  2. ^ Godfrey, Paul (2001). "Gama işlevinin Lanczos uygulaması". Numericana.