W tym zaawansowanym kursie na temat zastosowań teorii funkcji złożonych w jednym punkcie ćwiczenia całka silnie oscylacyjna
należy aproksymować dla dużych wartości stosując metodę punktu siodłowego w płaszczyźnie złożonej.
Ze względu na bardzo oscylacyjny charakter całka ta jest bardzo trudna do oceny przy użyciu większości innych metod. Są to dwa fragmenty wykresu całki dla w różnych skalach:
Wiodącym asymptotycznym przybliżeniem rzędu jest
a kolejne (znacznie mniejsze) udoskonalenie dodaje termin
Wykres przybliżonych wartości w funkcji wygląda następująco:
Teraz pojawia się moje pytanie: aby wizualnie zobaczyć, jak dobre jest przybliżenie, chciałbym porównać je z „rzeczywistą wartością” całki, a dokładniej z dobrym przybliżeniem do tej samej całki przy użyciu niezależnego algorytmu. Ze względu na niewielką korektę subleadingową spodziewałbym się, że będzie to naprawdę bliskie.
Próbowałem oszacować całkę dla niektórych przy użyciu innych algorytmów, ale z bardzo małym powodzeniem: Mathematica i Matlab przy użyciu domyślnego integratora numerycznego nie są w stanie wygenerować znaczącej wartości (i podać to jawnie), mpmath przy użyciu zarówno podwójnie wykładniczej podstawienie i metoda Gaussa-Legendre'a daje bardzo głośne wyniki, chociaż ma niewielką tendencję do oscylowania wokół wartości, które daje metoda punktu siodłowego, ponieważ ten wykres może pokazywać:
W końcu spróbowałem szczęścia z integratorem Monte-Carlo, wykorzystując próbkę ważności, którą zaimplementowałem, ale nie udało mi się też uzyskać stabilnych wyników.
Czy ktoś ma pojęcie o tym, jak tę całkę można niezależnie oszacować dla dowolnej stałej wartości lub więcej?
źródło
Odpowiedzi:
Użyj twierdzenia Plancherela, aby ocenić tę całkę.
Podstawową ideą jest to, że dla dwóch funkcjifa, g ,
gdziefa, G są transformatami Fouriera fa, g . Obie funkcje mają stosunkowo niewielkie wsparcie w dziedzinie spektralnej. Tutaj grzechx / x → rect ( k ) i sałata( λ cosx ) powinny mieć analityczną transformację Fouriera (lub szereg), podobnie jak rozszerzenie Jacobi-Anger . Możesz obciąć nieskończoną serię o wartości około λ ze względu na nadwykładniczy rozkład funkcji Bessela | jotn( x ) | dla n > | x | . Mam nadzieję że to pomoże.
Edycja : Właściwie powinieneś użyć tutaj reprezentacji serii Fouriera zamiast transformacji. Ścieżka transformacji prowadzi do uzyskania asymptotycznej reprezentacji, którą już masz (okazuje się, że jest to tylkoπjot0( λ ) ). Powyższe twierdzenie Plancherela działa również dla szeregów Fouriera z domeną integracji [ 0 , 2 π] na ostatniej całce.
źródło
Kluczem do oceny całek oscylacyjnych jest obcięcie całki w odpowiednim punkcie. W tym przykładzie musisz wybrać górną granicę formyπN + π2)
Zanim wyjaśnię, dlaczego to powinno działać, pozwól mi najpierw pokazać, że faktycznie przynosi dobre wyniki.
Asymptotyki
Łatwo zgadnąć, że szereg asymptotyczny ma postaćja( λ ) ∼ 2 πλ---√[ cos( λ - π4) + c1grzech( λ - π4)λ+ c2)sałata( λ - π4)λ2)+ c3)grzech( λ - π4)λ3)+ … ]
Aby sprawdzić liczbowo, żedo1= 18 wystarczy wykreślić różnicę między całkową i wiodącą ekspresją asymptotyczną.
Jako wynik otrzymujesz całkiem niezły sinus, który pokrywa się z tym, który wyprowadziłeś powyżej.
Jeśli chcesz znaleźć następujące współczynniki, w razie potrzeby nieco bardziej zaawansowany fragment kodu. Poniższy kod ma na celu przyjęcie kilku wysokich górnych wartości granicznych i „uśrednienie” ich wyników.
Wyjaśnienie
Prosty przykład
Twój problem
źródło
Działa tutaj metoda Ooury dla całek sinusoidalnych Fouriera, patrz:
Ooura, Takuya i Masatake Mori, Solidna formuła podwójnie wykładnicza dla całek typu Fouriera. Journal of obliczeniowej i stosowanej matematyki 112.1-2 (1999): 229-241.
Napisałem implementację tego algorytmu, ale nigdy nie wkładałem pracy, aby uzyskać go szybko (powiedzmy, buforowanie węzłów / wag), ale mimo to otrzymuję spójne wyniki we wszystkim poza precyzją zmiennoprzecinkową:
Oto kod:
źródło