Czy jest możliwe analityczne całkowanie

10

Po pierwsze, poprzez integrację analityczną, mam na myśli, czy istnieje reguła integracji, która rozwiązuje to w przeciwieństwie do analiz numerycznych (takich jak reguły trapezoidalne, Gaussa-Legendre'a lub Simpsona)?

Mam funkcję gdzie to funkcja gęstości prawdopodobieństwa rozkładu logarytmicznego z parametry i \ sigma . Poniżej skrócę notację do g (x) i użyję G (x) dla funkcji rozkładu skumulowanego.f(x)=xg(x;μ,σ)

g(x;μ,σ)=1σx2πe12σ2(log(x)μ)2
μσg(x)G(x)

Muszę obliczyć całkę

abf(x)dx.

Obecnie robię to z integracją numeryczną za pomocą metody Gaussa-Legendre'a. Ponieważ muszę to uruchamiać wiele razy, wydajność jest ważna. Zanim przejdę do optymalizacji analiz numerycznych / innych elementów, chciałbym wiedzieć, czy istnieją jakieś reguły integracji, które to rozwiązują.

Próbowałem zastosować regułę integracji według części i doszedłem do tego, w którym utknąłem ponownie,

  1. udv=uvvdu .

  2. u=xdu=dx

  3. dv=g(x)dxv=G(x)

  4. uvvdx=xG(x)G(x)dx

Utknąłem, ponieważ nie mogę ocenić G(x)dx .

To jest dla pakietu oprogramowania, który buduję.

Rosz
źródło
@Rosh przez chodziło Ci o gęstości prawdopodobieństwa rozkładu logarytmiczno-normalnego? lognormal
mpiktas,
1
Można to wyrazić jako stałą razy różnicę dwóch normalnych plików cdf. Normalne pliki PDF są efektywnie obliczane przy użyciu racjonalnej aproksymacji W. Cody'ego Czebyszewa. Nie powinieneś potrzebować i, prawie bez wątpienia, nie preferować alternatyw integracji numerycznej. Jeśli potrzebujesz więcej informacji, mogę je opublikować.
kardynał
@mpiktas, Tak, lognormal to funkcja gęstości prawdopodobieństwa, a lognormalCDF to funkcja gęstości skumulowanej.
Rosz
3
@Rosh ma lognormalny rozkład, co oznacza, że jest zwykle dystrybuowany. Zatem zamień w oryginalnej całce. Całka jest wykładniczą, której argument jest kwadratową funkcją . Wypełnienie kwadratu zamienia go w wielokrotność normalnego pliku PDF, więc twoja odpowiedź jest zapisana w kategoriach normalnego CDF i wykładniczych pierwotnych punktów końcowych. Istnieje wiele dobrych przybliżeń normalnego CDF (wielokrotność funkcji błędu). log ( x ) x = exp ( y ) yxlog(x)x=exp(y)y
whuber
1
Tak, @whuber i ja opisywaliśmy to samo. Powinieneś dostać coś takiego jak gdzieβ=(log(b)-(μ+σ2))/σiα=(log(a)-(μ+σ2))/σiΦ()eμ+12σ2(Φ(β)Φ(α))β=(log(b)(μ+σ2))/σα=(log(a)(μ+σ2))/σΦ()oznacza normalny plik cdf. Zauważ, że w zależności od wartości , b , μ i σ istnieją sposoby na przepisanie tego wyrażenia, aby było bardziej stabilne numerycznie. abμσ
kardynał

Odpowiedzi:

15

Krótka odpowiedź : nie, nie jest to możliwe, przynajmniej pod względem funkcji elementarnych. Istnieją jednak bardzo dobre (i dość szybkie!) Algorytmy numeryczne do obliczania takiej wielkości i w tym przypadku powinny być one preferowane w stosunku do dowolnej techniki integracji numerycznej.

Ilość odsetek pod względem normalnego cdf

Ilość, którą jesteś zainteresowany, jest ściśle związana ze średnią warunkową logarytmicznej zmiennej losowej. Oznacza to, że jeśli jest dystrybuowane jako logarytm normalny o parametrach μ i σ , to używając notacji b a f ( x ) d x = b a 1Xμσ

zabfa(x)rex=zab1σ2)πmi-12)σ2)(log(x)-μ)2)rex=P.(zaXb)mi(XzaXb).

Aby uzyskać wyrażenie na tę całkę, wykonaj podstawienie z=(log(x)-(μ+σ2)))/σx=miμ+σ2)miσz

zabfa(x)rex=miμ+12)σ2)αβ12)πmi-12)z2)rez,
α=(log(za)-(μ+σ2)))/σβ=(log(b)-(μ+σ2)))/σ

zabfa(x)rex=miμ+12)σ2)(Φ(β)-Φ(α)),
Φ(x)=-x12)πmi-z2)/2)rez

Przybliżenie numeryczne

Φ(x)

Zatem pozostaje nam zastosować algorytm numeryczny do przybliżenia pożądanej ilości. Można tego dokonać w obrębie zmiennoprzecinkowego punktu podwójnej precyzji IEEE za pomocą algorytmu WJ Cody'ego. Jest standardowy algorytm dla tego problemu, stosując racjonalne i wyrażeń z dość niskiego rzędu, to dość skuteczne, zbyt.

Oto odniesienie omawiające przybliżenie:

WJ Cody, Rational Chebyshev Approximations for the Error Function , Math. Komp. , 1969, s. 631--637.

R

Oto powiązane pytanie, na wypadek gdybyś był zainteresowany.

kardynał
źródło