Moja sytuacja.
Mam funkcję zmiennej zespolonej zdefiniowanej przez skomplikowaną całkę. Interesuje mnie wartość tej funkcji na osi urojonej. Mam dostęp numeryczny do tej funkcji na następującej wstążce: z = ( x , y ) ∈ ( - ∞ , ∞ ) × [ - 1 , 1 ] . Formalnie integralne wyrażenie jest rozbieżne poza tą dziedziną, dlatego potrzebuję kontynuacji analitycznej. Podsumowując moją sytuację na zdjęciu,
Oto, co wiem o na tej wstążce z cyfr:
Jest jednocześnie symetryczny względem wyobrażonych i rzeczywistych osi.
To zanika do zera .
Wysadza w pobliżu . To może być biegun lub punkt rozgałęzienia, nie wiem. Podejrzewam, że charakter tej osobliwości (i ewentualnie wszystkie inne pojedyncze osobliwości analitycznej kontynuacja) zależy od konkretnego parametryzacji Ę tej funkcji (patrz integralną szczegóły poniżej)
W rzeczywistości wygląda bardzo podobnie do lub 1 / ( 1 + z 2 ) 2 n po wykreśleniu. Oto fabuła prawdziwej części:
Moje pytanie brzmi: biorąc pod uwagę ogrom informacji, jakie mam na temat funkcji (całkowity dostęp numeryczny do tej wstążki), czy jest jakiś sposób, abym mógł obliczyć liczbowo przybliżenie tej funkcji wzdłuż osi urojonej? Nawiasem mówiąc, używam Mathematica.
Powodem, dla którego interesują mnie wartości wzdłuż osi urojonej, jest to, że muszę ocenić następującą transformację Fouriera tej funkcji:
Co próbowałem.
W rzeczywistości próbowałem obliczyć ostateczną całkę wysoce oscylacyjną, równ. (1). Ocena ekw. (1) dla pojedynczej wartości „t” obliczenie zajmuje kilka godzin. Przeprowadziłem już kilka z tych całek i wyniki faktycznie mają sens, ale chciałbym zastosować alternatywne podejście.
Próbowałem symbolicznej integracji bezskutecznie. Próbowałem wmasować integrand w bardziej przyswajalną formę dla Mathematica, ale moje próby się nie powiodły.
Obrażająca całka.
Całka, którą mnie interesuje, jest następująca:
źródło
Odpowiedzi:
Uwaga: nieco martwię się w tym momencie, że wartości całkowite, które daje mi Mathematica, są fałszywe. Myślałem, że to działa, ponieważ dało to rozsądnie wyglądający wynik w krótkim czasie, ale może się zdarzyć, że metoda, której próbuje użyć, jest błędna lub że zrobiłem coś złego. Więc może być tak, że poniższy kod w ogóle nie działa, nie wiem, przepraszam.
Uwaga 2: Niepokoiło mnie to, dlatego napisałem inną wersję ( tutaj kod , przepraszam za jakość kodu), używając Julii i GSL, i ocenia
g
w 2 sekundy tę samą odpowiedź, którą daje Mathematica poniżej. Myślę więc, że kod jest prawdopodobnie w porządku.Moje wcześniejsze doświadczenia z integracją numeryczną doprowadziły mnie do przekonania, że bardziej wyszukane metody matematyczne mogą czasem być spektakularnie pomocne, ale także, że ocena liczbowych przekształceń Fouriera oraz integracja funkcji wymiernych i algebraicznych to podstawa algorytmów integracji numerycznej, więc często można robić postępy, starannie dobierając algorytmy i bawiąc się ich parametrami. Zazwyczaj jest to łatwiejsza opcja, jeśli trudno jest zrozumieć, jak sprawić, by technika matematyczna działała prawidłowo.
Wynik:
Sprawiłem, że Mathematica poświęciła zero czasu symbolicznemu przetwarzaniu całek, ponieważ w tym przypadku i tak nie byłby w stanie dowiedzieć się nic użytecznego. Powiedziałem też, aby specjalnie zastosował metodę kwadratury oscylacyjnej dla drugiej całki.
Domyślam się, dlaczego przypadkowe majsterkowanie ze strategiami integracji (patrz NIntegrateIntegrationStrategies ) w ogóle działa, że czasami Mathematica może przypadkowo automatycznie wybrać złą strategię, zabijając wydajność, podczas gdy wszystko, o co proszę, jest co najmniej trochę znaczące, nawet jeśli nie jest optymalne. Możesz również rozważyć pomoc na https://mathematica.stackexchange.com , mogą dowiedzieć się więcej o wewnętrznych elementach Mathematica.
źródło
g[t,e0]