Ewa Pabisek Adam Wosatko Piotr Pluciński Matematyka stosowana i metody numeryczne Konspekt z wykładu 8 Interpolacja Interpolacja polega na budowaniu tzw. funkcji interpolujących ϕ(x) na podstawie zadanych wartości f(x) zapamiętanych w postaci dyskretnej. Postać dyskretną tworzą dwa zbiory liczbowe: węzły interpolacji: X = {x 0, x 1,..., x n } wartości funkcji interpolowanej (odpowiadające tym węzłom): gdzie: f i f(x i ). F = {f 0, f 1,..., f n } Obie funkcje, interpolowana f(x) i interpolująca ϕ(x), mają na zbiorze węzłów X dokładnie takie same wartości liczbowe. Są zatem spełnione warunki: ϕ(x i ) = f(x i ), i = 0, 1,..., n, na podstawie których konstruuje się funkcję interpolującą ϕ(x i ). Funkcja ϕ(x i ) w przypadku ogólnym jest przedstawiana najczęściej w postaci wielomianu uogólnionego: ϕ(x) = a o φ 0 (x) + φ 1 (x) +... + a n φ n (x) = a i φ i (x) = Φ(x) a, (1) utworzonego z odpowiednio dobranych tzw. funkcji bazowych Φ(x) = [φ 0 (x), φ 1 (x),..., φ n (x) i wektora współczynników (mnożników) a = [a 0,,..., a n T. W celu utworzenia konkretnej funkcji interpolującej ϕ(x) należy: przyjąć odpowiednią bazę Φ(x), wyznaczyć wartości liczbowe wszystkich jej współczynników a i, i = 0, 1,..., n, sformułować wielomian ϕ(x i ). 1
Przykład: Zbudować uogólniony wielomian interpolacyjny o postaci ϕ(x) = a 0 + x + a 2 cos x + a 3 sin x Węzły interpolacji: X = {x 0, x 1, x 2, x 3 } = {0, 1.5, 3, 4}. Wartości funkcji: F = {f 0, f 1, f 2, f 3 } = {2, 3, 1, 3}. Baza interpolacyjna: Φ(x) = [1, x, cos x, sin x. Rozwiązanie: Budujemy macierz U: U = 1 x 0 cos x 0 sin x 0 1 x 1 cos x 1 sin x 1 1 x 2 cos x 2 sin x 2 1 x 3 cos x 3 sin x 3 = 1 0.0 1.00000 0.00000 1 1.5 0.07074 0.99749 1 3.0 0.98999 0.14112 1 4.0 0.65364 0.75680 Otrzymujemy układ równań U a = f, którego rozwiązanie pozwala zapisać poszukiwany wielomian w postaci: 1.6210 ϕ(x) = Φ(x) a = [1, x, cos x, sin x 2.0046 3.6210 1.3615 8.1 Interpolacja wielomianowa (algebraiczna) Przyjmujemy bazę jednomianową: i budujemy wielomianową funkcję interpolującą: 8.2 Interpolacja Lagrange a Φ(x) = [ 1, x, x 2, x 3,..., x n ϕ(x) = a 0 + x + a 2 x 2 + a 3 x 3 +... + a n x n. (2) Przyjmujemy postać funkcji interpolującej stopnia n jako tzw. wielomian interpolacyjny Lagrange a: ϕ(x) = f 0 L n 0(x) + f 1 L n 1(x) +... + f n L n n(x). (3) gdzie f i (i = 0, 1,..., n) są wartościami funkcji interpolowanej, a funkcje bazowe Lagrange a mają postać: L n i = (x x 0) (x x 1 )... (x x i 1 ) (x x i+1 )... (x x n ) (x i x 0 ) (x i x 1 )... (x i x i 1 ) (x i x i+1 )... (x i x n ) czyli: L n i = j=n j=0 j i x x j x i x j. (4) 2
Przykład: Zbudować wielomian interpolacyjny Lagrange a stopnia n = 2. Węzły interpolacji: X = {x 0, x 1, x 2 }. Wartosci funkcji: F = {f 0, f 1, f 2 }. Baza Lagrange a: L 2 (x) = [L 2 0(x), L 2 1(x), L 2 2(x). Wielomian interpolacyjny: ϕ(x) = L 2 (x) f = f 0 L 2 0(x) + f 1 L 2 1(x) + f 2 L 2 2(x). L 2 i (x) = j=2 j=0 j i x x i x i x j : L 2 0(x) = (x x 1)(x x 2 ) (x 0 x 1 )(x 0 x 2 ), L 2 1(x) = (x x 0)(x x 2 ) (x 1 x 0 )(x 1 x 2 ), L 2 2(x) = (x x 0)(x x 1 ) (x 2 x 0 )(x 2 x 1 ). Dla węzłów X = {x 0, x 1, x 2 } = { 1, 2, 3} i wartości F = {f 0, f 1, f 2 } = {1, 4, 9 } wielomian interpolacyjny Lagrange a przyjmuje postać ϕ(x) = 1 x 2. 8.3 Interpolacja Hermite a Istnieje możliwość zastosowania interpolacji, zaproponowanej przez Hermite a, w której istotę stanowi budowanie funkcji interpolujących spełniających warunki: ϕ (k) (x i ) = f (k) i, i = 0, 1,..., n, k = 0, 1,..., m n. (5) w których indeks (k) oznacza rząd pochodnych funkcji ϕ i f. Najprostszym, ale najczęściej stosowanym wariantem interpolacji Hermite a jest przypadek, kiedy funkcje ϕ(x) są wielomianami algebraicznymi spełniającymi warunki (5). Liczba warunków ϕ (k) (x i ) = f (k) i wynosi (n + 1)(m + 1) i dlatego w celu posłużenia się interpolacją globalną należy stosować wielomiany stopnia (n + 1)(m + 1) 1. Przykład: Zbudować wielomian interpolacyjny Hermite a dla n = m = 1 na zbiorze węzłów X = {x 0, x 1 }. Rozwiązanie: Stopień wielomianu wynosi (n + 1)(m + 1) 1 = 3. Skorzystamy z następujących wielomianów: ϕ(x) = a 0 + x + a 2 x 2 + a 3 x 3, ϕ (x) = + 2 a 2 x + 3 a 3 x 2. 3
Układ równań U a = f ma postać: 1 x 0 x 2 0 x 3 0 0 1 2 x 0 3 x 2 0 1 x 1 x 2 1 x 3 1 0 1 2 x 1 3 x 2 1 a 0 a 2 a 3 = Jeżeli przyjmiemy, że x 0 = 0, a x 1 = L, to: 1 0 0 0 0 1 0 0 1 L L 2 L 3 a = f U a = f a = U 1 f 0 1 2L 3L 2 gdzie lokalna baza Hermite a: ϕ(x) =Φ(x) a = [1, x, x 2, x 3 a = [1, x, x 2, x 3 U 1 f = f 0 f 1 f 2 f 3 [H 1 (x), H 2 (x), H 3 (x), H 4 (x) f = H(x) f, H 1 (x) = 1 3 ξ 2 + 2 ξ 3, ξ [0, 1, H 2 (x) = L (ξ 2 ξ 2 + ξ 3 ), H 3 (x) = 3 ξ 2 2 ξ 3, H 4 (x) = L ( ξ 2 + ξ 3 ). Stosując interpolację Hermite a do obliczenia f(1.25) dla danych: x f(x) f (x) x 0 = 1.1 0.4860 2.910 x 1 = 1.3 0.8616 4.918 otrzymujemy rozwiązanie: a 0 = 169.09, = 428.59, a 2 = 361.46, a 3 = 101.80 ϕ(x) = 169.09 + 428.59 x 361.46 x 2 + 101.80 x 3 ϕ(x = 1.25) = ϕ(ξ = 0.75) = 0.6919. W tym celu możemy posłużyć się wykorzystaniem transformacji i lokalnej bazy Hermite a: x ξ, L = x 1 x 0 = 0.2 ξ = x x 0 = x 1.1 x 1 x 0 1.3 1.1 = x 1.1 0.2 ϕ(x = 1.25) = ϕ(ξ = 0.75) = = H 1 (ξ = 0.75) 0.4860 + H 2 (ξ = 0.75) 2.910+ + H 3 (ξ = 0.75) 0.8616 + H 4 (ξ = 0.75) 4.918 = 0.6919 4
8.4 Interpolacja 2D Interpolacja 2D jest złożeniem interpolacji 1D wzdłuż dwóch osi x i y L nm (x, y) = m j=0 f ij L nm ij (x, y) gdzie k=n L nm ij (x, y) = k=0 k i l=m x x k x i x k l=0 l j f ij = f(x i, y j ) y y l y j y l Interpolacja biliniowa 1, 0 x L 11 00(x, y) = (x x 1)(y y 1 ) (x 0 x 1 )(y 0 y 1 ) 1 0, 0 1, 1 L 11 10(x, y) = (x x 0)(y y 1 ) (x 1 x 0 )(y 0 y 1 ) L 11 01(x, y) = (x x 1)(y y 0 (x 0 x 1 )(y 1 y 0 ) 0, 1 0, 0 1 0, 1 y y 1, 0 x 1, 1 L 11 11(x, y) = (x x 0)(y y 0 ) (x 1 x 0 )(y 1 y 0 ) x 1, 0 1 0, 0 0, 0 0, 1 y 1, 1 0, 1 y 1, 0 x 1 1, 1 5
9 Aproksymacja Aproksymacja różni się od interpolacji funkcji tym, że dla wyznaczania współczynników wielomianu aproksymacyjnego nie korzysta się z warunków ϕ i (x) = f i. Oznacza to, że wielomian aproksymacyjny na zbiorze X nie musi przyjmować wartości funkcji aproksymowanej. Stopień wielomianu aproksymacyjnego nie ma więc związku z liczbą elementów zbioru X, a wyznaczanie niewiadomych a k jest realizowane np. przy pomocy aproksymacji optymalnej. Rozwiązanie problemu takiej aproksymacji wymaga: przyjęcia odpowiedniej bazy funkcyjnej, ustalenia kryterium oceny jakości aproksymacji, które służy do jednoznacznego określenia wartości a k. Najprostsza postać kryterium oceniającego jakość aproksymacji jest następująca: min R = min [f(x i ) ϕ(x i ) 2 (6) Wartość funkcji R jest pewną miarą odchylenia funkcji aproksymującej ϕ(x) od aproksymowanej f(x). Ten sposób postępowania nosi nazwę metody najmniejszych kwadratów. Obliczenie wartości a k polega na wykorzystaniu warunków stacjonarności funkcji R: R a k = 0, k = 0, 1, 2,..., m. (7) 9.1 Aproksymacja wielomianami algebraicznymi Wielomian aproksymacyjny stopnia m ma postać: ϕ(x) = a 0 + x + a 2 x 2 +... + a m x m = Obliczając pochodne cząstkowe funkcji R otrzymujemy ostatecznie: gdzie: S = s 0 s 1 s 2 s m s 1 s 2 s 3 s m+1 s 2 s 3 s 4 s m+2........................... s m s m+1 s m+2 s 2m s k = m a k x k (8) k=0 S a = t (9) a 0 t 0, a = a 2..., t = t 1 t 2... a m t m x k i, t k = Powyższy układ równań moża też zapisać następująco: f i x k i [s k, s k+1,..., s k+m a = t k, k = 0, 1, 2,..., m (10) 6
Przykład: Zbudować wielomian aproksymacyjny stopnia m = 1 dla funkcji: i 0 1 2 3 x π/2 π/3 π/3 π/2 f 3 10 20 3 Rozwiązanie: Wielomian aproksymacyjny ma postać ϕ(x) = a 0 + x. Funkcja R: R = (a 0 + x i f i ) 2. Układ równań S a = t przyjmuje postać: n + 1 x i Dla powyższych danych: [ 4 0 0 7.128 x i x 2 i [ a0 [ a0 = [ = f i f i x i 10 40.841 Rozwiązanie tego układu równań daje: a 0 = 2.5, = 5.7296, zatem ostatecznie wielomian aproksymacyjny ma postać: ϕ(x) = 2.5 + 5.7296 x... 9.2 Aproksymacja wielomianami uogólnionymi Poszukujemy wielomianu uogólnionego ϕ(x), będącego najlepszym przybliżeniem średniokwadratowym funkcji f(x) na zbiorze X, tj. funkcji: ϕ(x) = a 0 φ 0 (x) + φ 1 (x) +... + a m φ m (x) = m a k φ k (x). (11) Współczynniki a k są tak określone, aby wyrażenie: R = f(x i ) ϕ(x i ) 2. (12) było minimalne. k=0 Dla funkcji: korzystamy z warunków: R = [ f(x i ) m 2 a k φ k (x i ). (13) k=0 R a k = 0, k = 0, 1,..., m, (14) 7
W zapisie macierzowym układ równań przyjmuje postać: D T D a = D T f (15) gdzie: D = φ 0 (x 0 ) φ 1 (x 0 )... φ m (x 0 ) φ 0 (x 1 ) φ 1 (x 1 )... φ m (x 1 ) φ 0 (x 2 ) φ 1 (x 2 )... φ m (x 2 )............ φ 0 (x n ) φ 1 (x 0 )... φ m (x n ) a = a 0 a 2... a m f = f(x 0 ) f(x 1 ) f(x 2 )... f(x n ). (16) Przykład: Znaleźć równanie krzywej najlepiej aproksymującej poniższą funkcję w sensie najmniejszych kwadratów: i 0 1 2 3 x π/2 π/3 π/3 π/2 f 3 10 20 3 Przyjąć funkcje bazowe: Rozwiązanie: φ 0 (x) = 3x π, φ 1(x) = cos(x). Funkcja aproksymująca: ϕ(x) = a 0 φ 0 (x) + φ 1 (x) gdzie: D = φ 0 (x 0 ) φ 1 (x 0 ) φ 0 (x 1 ) φ 1 (x 1 ) φ 0 (x 2 ) φ 1 (x 2 ) φ 0 (x 3 ) φ 1 (x 3 ) Po wymnożeniu otrzymujemy układ równań: [ 13/2 0 0 1/2 Po jego rozwiązaniu mamy: a 0 = 6, = 10. Wielomian aproksymacyjny ma postać: D T Da = D T f a = [ a0 [ a0 = [ 39 5 ϕ(x) = 6φ 0 (x) + 10 φ 1 (x). f = f 0 f 1 f 2 f 3. 8