Teraz zajmiemy się następującym problemem: dla ustalonej funkcji rzeczywistej f należy dobrać taki wielomian g⋆ stopnia co najwyżej n, aby błąd aproksymacji w normie maksimum w przedziale [a, b] był najmniejszy. Nieco uogólniając zadanie, rozważymy problem aproksymacji przez określone w przedziale [a, b] funkcje, które są elementami ustalonej przestrzeni V o wymiarze k; zatem, mając taką przestrzeń, chcemy w niej znaleźć element najlepiej przybliżający daną funkcję f, o której założymy, że jest ciągła.
Def. Przestrzeń liniowa V o wymiarze k, której elementami są rzeczywiste funkcje ciągłe określone w przedziale [a, b],
spełnia warunek Haara (albo: ma własność Haara), jeśli z faktu, że funkcja g ∈ V ma k różnych miejsc zerowych w przedziale [a, b]
wynika, że jest to funkcja zerowa.
. . 397 . .
Własność Haara, dla dowolnie wybranego przedziału [a, b], ma zatem przestrzeń liniowa R[x]n, której elementy są wielomianami stopnia co najwyżej n, ale nie tylko: weźmy przestrzeń wielomianów
trygonometrycznych stopnia co najwyżej n i ustalmy dowolny przedział [a, b] krótszy niż 2π (tj. krótszy niż okres wszystkich tych funkcji). Przestrzeń ta ma wymiar 2n + 1, i jak wiemy, zadanie interpolacji Lagrange’a dla 2n + 1 dowolnie wybranych
w przedziale [a, b] (parami różnych) węzłów ma w tej przestrzeni jednoznaczne rozwiązanie. Jeśli więc pewien wielomian
trygonometryczny stopnia n ma 2n + 1 miejsc zerowych
w przedziale [a, b], to jest on funkcją zerową. Natomiast nie mają własności Haara przestrzenie, których elementami są funkcje sklejane:
istnieją niezerowe funkcje sklejane, które mają nieskończenie wiele miejsc zerowych.
. . 398 .
Twierdzenie Czebyszewa o alternansie: Jeśli przestrzeń V o wymiarze k spełnia warunek Haara, to dla dowolnej funkcji ciągłej f zadanie aproksymacji jednostajnej ma w przestrzeni V jednoznaczne rozwiązanie, g⋆. Funkcja f − g⋆, opisująca błąd aproksymacji, ma w przedziale [a, b] co najmniej k + 1 punktów, w których przyjmuje maksymalną wartość bezwzględną, przy czym znaki wartości funkcji f − g⋆ w kolejnych punktach z tego zbioru są przeciwne.
Dowód twierdzenia Czebyszewa, który pominiemy, jest podobny do przeprowadzonego wcześniej dowodu stwierdzenia, że wielomian qk ma najmniejszą normę k · k∞ dla przedziału [a, b] wśród wszystkich wielomianów stopnia k o współczynniku wiodącym 1 (i jest to jedyny taki wielomian).
Zbiór punktów, w których funkcja f − g⋆ przyjmuje na przemian minimalną i maksymalną wartość (wszystkie o tej samej wartości bezwzględnej kf − g⋆k∞) nazywany jest alternansem. Rozwiązanie zadania aproksymacji polega na znalezieniu takiego wielomianu g⋆ stopnia co najwyżej n, aby funkcja f − g⋆ przyjmowała w n + 2 punktach przedziału [a, b] wartości ekstremalne o zmieniających się znakach. Jeśli funkcja f jest wypukła albo wklęsła i poszukujemy optymalnego wielomianu stopnia 1, to alternans składa się z trzech punktów, z których dwa są końcami przedziału [a, b], dzięki czemu zadanie jest dosyć łatwe.
Jeśli poszukujemy optymalnego wielomianu wyższego stopnia, to możemy użyć opisanego niżej algorytmu Remeza, w którym
konstruuje się pewien ciąg wielomianów (g(j))j∈Nstopnia n, zbieżny do poszukiwanego wielomianu g⋆.
Za g(0)można przyjąć wielomian interpolacyjny Lagrange’a z n + 1 węzłami Czebyszewa w przedziale [a, b]. Istotne jest, aby funkcja f − g(0) miała w przedziale [a, b] co najmniej n + 2 lokalne minima i maksima, rozmieszczone na przemian (wartości bezwzględne tych ekstremów mogą być różne), i taki wybór funkcji g(0)to zapewnia:
funkcja f − g(0)ma minimum lub maksimum między każdymi dwoma węzłami interpolacyjnymi, a także przed pierwszym i za ostatnim węzłem, a jeśli znaki kolejnych ekstremów są takie same (o co jest bardzo trudno), to zamiast jednego z nich można przyjąć węzeł między nimi.
. . 401 . .
Na podstawie wielomianu g(j−1)należy skonstruować g(j). W tym celu trzeba znaleźć wszystkie ekstrema funkcji f − g(j−1) w przedziale [a, b]. To może być bardzo trudnym zadaniem obliczeniowym. Mając pewne informacje o funkcji f, możemy ustalić gęstość, z jaką
wystarczy stablicować tę funkcję i wielomian g(j−1)
w przedziale [a, b], aby nie „zgubić” żadnego ekstremum (to może być np. 100, 1000, lub nawet więcej punktów), potem trzeba zastosować jakąś metodę numeryczną znajdowania punktów ekstremalnych z dużą dokładnością. Następnie tworzymy j-te przybliżenie alternansu:
wybieramy n + 2 punkty w przedziale [a, b], w których
funkcja f − g(j−1)przyjmuje wartości ekstremalne, przy czym jeśli lokalnych ekstremów jest więcej niż n + 2, to trzeba wybrać punkty, w których ekstrema mają największe wartości bezwzględne,
z zachowaniem warunku zmieniających się znaków. Oznaczmy wybrane punkty symbolami y(j)0 , . . . , y(j)n+1 (lub lepiej w skrócie y0, . . . , yn+1). Założymy, że są one uporządkowane monotonicznie.
. . 402 .
Wielomian g(j) ma spełniać następujący warunek: dla i = 0, . . . , n + 1 ma być f(yi) − g(j)(yi) = (−1)irj, gdzie rj jest niewiadomą liczbą.
Zatem, zachodzi równość f(x) − g(j)(x) = rjh(j)(x) dla pewnej
funkcji h(j), takiej że h(j)(yi) = (−1)idla i = 0, . . . , n + 1. Obliczając różnicę dzieloną rzędu n + 1, otrzymamy
f[y0, . . . , yn+1] = rjh(j)[y0, . . . , yn+1],
bo różnica dzielona rzędu n + 1 wielomianu g(j) stopnia n jest zerem.
Ale stąd możemy obliczyć rj = f[y0, . . . , yn+1]
h(j)[y0, . . . , yn+1],
a następnie użyć rj do obliczenia wartości wielomianu g(j) w punktach yii znaleźć ten wielomian przez rozwiązanie zadania interpolacyjnego Lagrange’a (mamy tu o 1 węzeł i warunek interpolacyjny za dużo, ale to nie szkodzi).
Ciąg wielomianów g(j) zwykle dość szybko zbiega do wielomianu g⋆, który przybliża funkcję f z najmniejszym błędem w przestrzeni R[x]n, przy czym ciąg liczb |rj|zbiega do normy błędu, tj. maksymalnej wartości bezwzględnej różnicy f(x) − g⋆(x) w przedziale [a, b].
Jak widać z opisu (który jest dosyć uproszczony), to jest kosztowny algorytm, którego stosowanie może być opłacalne tylko wtedy, gdy wartości wielomianu g⋆ mają być obliczane bardzo wiele razy.
Przykład 1. Przybliżamy funkcję f(x) = exw przedziale [0, 1].
Symbolem hnoznaczymy wielomian interpolacyjny stopnia n oparty na węzłach Czebyszewa, a symbolem g⋆nwielomian optymalny znaleziony przy użyciu algorytmu Remeza. W ostatniej kolumnie tabeli podana jest liczba wykonanych iteracji (w każdej iteracji zostało znalezione nowe przybliżenie alternansu); punktem początkowym w każdym przypadku był wielomian hn.
n kf − hnk∞ kf − g⋆nk∞ k 1 1.24· 10−1 1.06· 10−1 2 2 9.87· 10−3 8.76· 10−3 2 3 6.00· 10−4 5.45· 10−4 2 4 2.95· 10−5 2.72· 10−5 2 5 1.21· 10−6 1.13· 10−6 2 6 4.28· 10−8 4.03· 10−8 2
. . 405 . .
0 1
+3· 10−5
−3· 10−5
ex− g⋆4(x)
ex− h4(x)
. . 406 .
Przykład 2. W przedziale [0, 1] przybliżamy funkcję
E(x)def= Z1
0 v u u
t1 − x2t2 1 − t2 dt.
Jest to tak zwana zupełna całka eliptyczna drugiego rodzaju;
występuje ona w różnych zastosowaniach (m.in. w mechanice).
Funkcja ta maleje monotonicznie w przedziale [0, 1], przyjmując na jego końcach wartości E(0) =π2, E(1) = 1. Podobnie jak dla funkcji wykładniczej, nie istnieje wzór umożliwiający obliczanie E(x) dla danego x ∈ (0, 1) przy użyciu skończenie wielu działań
arytmetycznych, co więcej, całek eliptycznych nie można wyrazić za pomocą funkcji wykładniczych i trygonometrycznych i ich
odwrotności. Mając dane x, można konstruować rozmaite ciągi nieskończone, których granicą jest E(x). W eksperymencie został użyty podprogram obliczający pewien wyraz takiego ciągu, przybliżający wartość funkcji E z błędem mniejszym niż 10−6.
Możemy zauważyć, że funkcja E jest znacznie trudniejsza do
aproksymacji — błędy przybliżeń znacznie wolniej maleją ze wzrostem stopnia niż w przypadku funkcji ex. Powód jest taki, że funkcja E ma w przedziale [0, 1) nieograniczoną pochodną; jest limx→1E′(x) = −∞.
n kE − hnk∞ kE − g⋆nk∞ k 1 1.54· 10−1 9.49· 10−2 2 2 5.43· 10−2 2.41· 10−2 3 3 3.00· 10−2 1.18· 10−2 3 4 1.88· 10−2 6.81· 10−3 3 5 1.30· 10−2 4.42· 10−3 3 6 9.48· 10−3 3.09· 10−3 4
0 1 +5· 10−3
−5· 10−3
E(x) − g⋆5(x)
E(x) − h5(x)
. . 409 . .
Wielomiany interpolacyjne funkcji E z węzłami Czebyszewa i wielomiany optymalne w przedziale [0, 0.9] przybliżają funkcję E z błędami pokazanymi w następnej tabelce i (dla n = 5) na rysunku.
n kE − hnk∞ kE − g⋆nk∞ k 1 7.82· 10−2 5.92· 10−2 2 2 1.33· 10−2 7.85· 10−3 3 3 4.10· 10−3 2.34· 10−3 3 4 1.34· 10−3 7.23· 10−4 3 5 4.90· 10−4 2.57· 10−4 3 6 1.88· 10−4 9.60· 10−5 3
. . 410 .
0 1
+3· 10−4
−3· 10−4
E(x) − g⋆5(x)
E(x) − h5(x)
Praktyczne wnioski z eksperymentów podobnych do powyższych dwóch są takie: jeśli funkcja, której przybliżenie wielomianowe należy skonstruować, ma pochodne wspólnie ograniczone, to zwykle nie sprawia kłopotów, ale zastąpienie wielomianu interpolacyjnego z węzłami Czebyszewa przez wynik działania algorytmu Remeza niewiele poprawia aproksymację; skuteczniejszym sposobem zmniejszenia błędu jest zwykle znalezienie wielomianu
interpolacyjnego wyższego stopnia (z węzłami Czebyszewa). Jeśli funkcja ma w rozpatrywanym przedziale osobliwość, to żaden z tych sposobów nie jest dobry.
Dobrym sposobem na pokonanie trudności jest zwykle podzielenie przedziału na krótsze podprzedziały i poszukiwanie wielomianów aproksymacyjnych w tych podprzedziałach. Wynikiem takiego postępowania jest aproksymacyjna funkcja sklejana. Jeśli jednak w pewnym podprzedziale jest osobliwość (np. nieciągła pochodna), to warto się zastanowić nad innym sposobem przybliżania funkcji, niż za pomocą wielomianów. Jedna z możliwości to użycie funkcji
wymiernych. Aby skutecznie aproksymować, zawsze należy wiedzieć, jakie (jakiego rodzaju) osobliwości ma dana funkcja.
. . 413 . .