Przykład funkcji ciągłej, którą trudno jest aproksymować za pomocą wielomianów

16

Do celów dydaktycznych potrzebowałbym ciągłej funkcji pojedynczej zmiennej, która jest „trudna” do przybliżenia wielomianami, tj. Potrzebna byłaby bardzo duża moc w szeregu mocy, aby „dobrze” dopasować tę funkcję. Zamierzam pokazać moim uczniom „ograniczenia” tego, co można osiągnąć za pomocą serii mocy.

Myślałem o wymyśleniu czegoś „hałaśliwego”, ale zamiast toczenia własnego zastanawiam się tylko, czy istnieje rodzaj standardowej „trudnej funkcji”, z której ludzie korzystają do testowania algorytmów aproksymacji / interpolacji, podobnie jak te funkcje testowe optymalizacji, które mają wiele lokalne minima, w których naiwne algorytmy łatwo utkną.

Przepraszamy, jeśli to pytanie nie jest dobrze sformułowane; proszę, zmiłuj się nad nie-matematykiem.

Laryx Decidua
źródło

Odpowiedzi:

14

Dlaczego po prostu nie pokazać funkcji wartości bezwzględnej?

Zbliżenie z np. Ekspansją wielomianów Legendre'a działa, ale całkiem źle :

Sekwencyjne przybliżenie funkcji wartości bezwzględnej przez wielomiany

Ekspansja Taylora jest tu oczywiście całkowicie bezużyteczna, zawsze dając tylko funkcję liniową, zawsze malejącą lub zawsze rosnącą (w zależności od tego, czy punkt wokół którego się rozwijasz, jest ujemny czy dodatni).

po lewej stronie
źródło
Możesz interpolować | x | używając interpolacji Czebyszewa, patrz nbviewer.jupyter.org/github/cpraveen/na/blob/master/…, który zbiega się dość szybko. Np. Możesz zmienić N = 2 * i w kodzie na N = 15 + i i przetestować większy stopień. Nie jest to metoda ekspansji, ale nadal oparta na wielomianach.
cfdlab
@PraveenChandrashekar Chebyshev działa „lepiej”, ponieważ kładzie większy nacisk na zewnętrzne części przedziału, w których funkcja jest płynna. W ten sposób unika się nadmiernej oscylacji, ale powiedzenie, że lepiej przybliża funkcję, jest wątpliwe - w szczególności chwyta ostry zakręt przy nawet gorszy niż jednorodno-dyskretne punkty lub minimalizacja . Jeśli Twoim celem jest unikanie komponentów o wysokiej częstotliwości, lepiej użyj transformacji integralnej, która odpowiednio tłumi te komponenty. x=0L2
leftaroundabout
Zupełnie dobrze jest mieć nierównomierne punkty, jak w interpolacji Czebyszewa. Stopień około 20 daje o wiele dokładniejsze przybliżenie niż Legendre, które wyświetlasz w swoim poście. Zmierz błędy, aby były bardziej ilościowe. Możesz także wykonać przybliżenie serii x Czebyszewa | co jest dokładniejsze niż rozszerzenie Legendre.
cfdlab,
@PraveenChandrashekar chodzi o to, że wielomiany w zasadzie nie są w stanie aproksymować funkcji takiej jakprawidłowo. Istnieją różne metody, z których każda zawodzi nieco bardziej lub mniej spektakularnie, ale żadna z nich nie działa dobrze w sensie „tylko kilka terminów daje coś, co można pomylić z pierwotną funkcją”. Jeśli musisz użyć wielomianów, musisz rozważyć, które rodzaje błędów są bardziej problematyczne, zarówno Legendre, jak i Czebyshev mają swoje przypadki użycia, ale nie ma srebrnej kuli. Ostatecznie podejście z np. Splajnami jest zwykle bardziej skuteczne. x|x|
leftaroundabout
Wiemy, że nie ma doskonałej metody. Pytanie brzmi, jakie funkcje są trudne do przybliżenia przez wielomiany. Trzeba więc zobaczyć wszystkie możliwe metody obejmujące wielomiany, aby stwierdzić, że żadna z nich nie działa dobrze. Legendre nie jest najlepszym sposobem na przybliżenie | x | i stąd daje raczej fałszywe wrażenie, że wielomiany są zbyt złe dla | x |. Z Czebyszewem masz zbieżność i znacznie lepsze przybliżenia niż Legendre, nie oscylują tak mocno jak Legendre, choć powoli zbiegają się w pobliżu x = 0, gdzie funkcja nie jest wystarczająco gładka.
cfdlab
10

Jest to przypadek patologiczny, ale zawsze możesz skorzystać z funkcji potwora Weierstrass . Ilustruje to szerszy punkt, a mianowicie to, że funkcje, które nie są gładkie - np. Mają załamanie - są trudne do przybliżenia, ponieważ szacunki błędu interpolacji wymagają interpolacji funkcji kilka razy. Innymi słowy, jeśli nie podoba ci się zbytnio funkcja Weierstrass, zawsze możesz po prostu wybrać.|x|

Wolfgang Bangerth
źródło
Dzięki, dokładnie to miałem na myśli przez „Myślałem o czymś„ hałaśliwym ””. Bardzo dobry przykład IMO.
Laryx Decidua
6

Przybliżenie jest utrudnione nie tylko przez przybliżoną funkcję, ale także przez przedział czasu, w którym przybliżenie powinno być „dobrym dopasowaniem”. I powinieneś zdefiniować miarę „dobrego dopasowania”, tj. Jaki jest maksymalny błąd (absolutny lub względny), który chcesz tolerować?

exp(x)[0,10]sin(x)[0,2π]wprowadź opis zdjęcia tutajwprowadź opis zdjęcia tutaj

GertVdE
źródło
Pokazuję takie przykłady na swoim kursie, aby podkreślić, że ekspansja Taylora nie jest dobrą metodą aproksymacji funkcji.
cfdlab
6

Wielomiany są zaskakująco skuteczne w aproksymacji funkcji [1]. Jeśli masz przynajmniej ciągłość Lipschitza, przybliżenia Czebyszewa zbiegną się. Oczywiście konwergencja może być powolna i to jest cena, którą płacimy za radzenie sobie z funkcją nieładną.

Obecnie komputery są znacznie szybsze niż dni, w których napisano wiele książek do analizy numerycznej, a sprytne algorytmy jeszcze bardziej zwiększyły szybkość, dlatego użycie większej liczby terminów może nie być tak złe, jak kiedyś.

Patologiczne przykłady, takie jak funkcja potwora Weierstrass, są interesujące z teoretycznego punktu widzenia, ale nie są reprezentatywne dla większości rzeczywistych kontekstów aplikacji.

|x|x=0

Ważne jest nauczenie trudności w przybliżeniu wielomianów, ale ważne jest również, aby powiedzieć uczniom, że możemy budować szacunki błędów i algorytmy adaptacyjne, które mogą poradzić sobie z tymi problemami.

[1] https://people.maths.ox.ac.uk/trefethen/mythspaper.pdf

[2] http://www.chebfun.org

cfdlab
źródło
+1 za połączenie z „mitem” autorstwa Lloyda Trefethena, bardzo dobra ankieta na temat IMO, dzięki.
Laryx Decidua
2

f(x)=1x2+1

1x2+1=1x2+x4x6+x8x10+x12

-1<x<1x=0x=2)

Christopher Wells
źródło
0

y=sjan(x)

Aniruddha Acharya
źródło
y=grzech(1x)jeśli chcesz się rozerwać wokół pochodzenia.
sfmiller940