Zasugerowano, że może to być lepsze miejsce na to pytanie niż Mathematics Stack Exchange, gdzie go wcześniej zadałem .
Załóżmy, że ktoś ma funkcję czarnej skrzynki, którą można ocenić w dowolnym miejscu (tanio) w określonym przedziale i nie ma hałasu (z wyjątkiem ziarnistości zmiennoprzecinkowej, powiedzmy). Jaki byłby najlepszy sposób na znalezienie nieciągłości tej funkcji? Nie wiem, ile może być nieciągłości i może ich nie być.
Mogę wymyślić kilka prostych metod (jednolite pobieranie próbek, doprecyzowanie, gdzie występują duże różnice między próbkami, ...), ale może jest lepszy sposób?
Funkcja jest „rozsądna”, ponieważ można założyć, że ma ona co najwyżej skończenie wiele nieciągłości, to samo dla wyższych pochodnych, nie mam nic przeciwko, jeśli pominięto małe patologiczne nieciągłości ... (aplikacja jest automatycznym wykreślaniem funkcji 1d) .
-
Dziękujemy wszystkim, którzy odpowiedzieli, szczególnie Pedro; metoda opisana w Pachón, Platte i Trefethen wydaje się być dla mnie najlepszym podejściem, więc idę teraz, aby ją wdrożyć
Odpowiedzi:
Jeśli korzystasz z Matlaba, możesz być zainteresowany projektem Chebfun . Chebfun przyjmuje funkcję, pobiera próbki i próbuje przedstawić ją jako interpolant wielomianowy. Jeśli Twoja funkcja ma nieciągłości, Chebfun powinien być w stanie ją wykryć za pomocą
splitting on
polecenia. Możesz znaleźć kilka przykładów tutaj .Jeśli interesują Cię podstawowe algorytmy, dobrym odniesieniem jest artykuł Pachóna , Platte i Trefethena „ Piecewise Smooth Chebfuns ”.
źródło
Podejrzewam, że algorytm chebfun musi wydawać się bardziej praktyczny, ale należy wspomnieć o jeszcze jednym sposobie wykrywania nieciągłości, a mianowicie o dyskretnej transformacie falkowej. Możesz dowiedzieć się, jak to działa, przeglądając tę stronę dokumentacji Mathematica , patrz sekcja> Aplikacje> Wykryj nieciągłości i krawędzie.
źródło
Metody ważone zasadniczo nieoscylacyjne (WENO) wykorzystują „wskaźniki gładkości” do wykrywania nieciągłości w metodach o skończonej objętości i różnicy. Z opisu Chebfuna, który podał Pedro, wydaje się, że ogólna idea jest taka sama: skonstruuj zestaw interpolujących wielomianów i użyj ich do obliczenia pewnej miary gładkości.
Patrz GS Jiang i CW Shu, Skuteczne wdrażanie ważonych schematów ENO, J.Comput.Phys., Vol. 126, s. 202--228, 1996.
źródło
Wraz z @Pedro przyjrzałbym się algorytmom wykrywania krawędzi. Nieciągłość jest nieskończonością pochodnej, więc zastanów się nad coraz bardziej drobną siatką i kierowaniem na interesujące regiony.
Przybliżenie skończonej różnicy do pochodnej funkcji ciągłej powinno zmniejszać się w miarę udoskonalania siatki. Porównanie wyniku skończonej różnicy dla pochodnej między siatkami może następnie ujawnić rozbieżności w gradiencie, które sygnalizują nieciągłości.
źródło