METODY NUMERYCZNE W ELEKTROTECHNICE Metody numeryczne dział matematyki stosowanej, zajmujący się opracowywaniem i badaniem metod przybliżonego rozwiązywania problemów obliczeniowych w modelach matematycznych innych dziedzin nauki Przykładowe zastosowania: elektrotechnika obliczanie parametrów obwodów elektrycznych medycyna tomografia komputerowa, opracowywanie nowych leków chemia konstruowanie nowych cząsteczek inżynieria przemysł samochodowy i lotniczy informatyka konstruowanie nowych procesorów W obrębie klasycznych metod numerycznych możemy wyróżnić m.in. takie zagadnienia jak: analiza błędów zaokrągleń interpolacja aproksymacja rozwiązywanie równań i układów równań nieliniowych całkowanie i różniczkowanie numeryczne rozwiązywanie układów równań liniowych obliczanie wartości własnych i wektorów własnych macierzy rozwiązywanie zagadnień dla równań różniczkowych zwyczajnych i cząstkowych rozwiązywanie równań całkowych i układów równań całkowych (każdy wynik musi podlegać weryfikacji!) Reprezentacja liczb w maszynie cyfrowej Liczby całkowite (stałopozycyjne = stałoprzecinkowe): n l = znak 2i , gdzie ei = 0 lub 1 ei i=0 Jeżeli rejestr ma d-bitów, wówczas liczba całkowita n może zawierać się w przedziale -2d-1 < n < 2d-1-1 przykład: Zapisać liczbę 18 w systemie dwójkowym: l =1 24 + 0 23 + 0 22 +1 21 + 0 20, może być zatem przechowywana w słowie o długości D + 1 > 5 bitów jako 0 004243 { 1...0010010 4 4 znak d cyfr rozwiniecia Liczby rzeczywiste (zmiennopozycyjne): x = zn m 2c , gdzie < m < 1, m-mantysa, i-cecha Ą m = 2-i e-i i=1 2 W maszynie cyfrowej mantysa zapisywana jest w t-bitach mt t mt = e-(t+2) 2-t + 2-i e-i i=1 w wyniku zaokrąglenia do t-bitów mantysy 1 m - mt Ł 2-t 2 Zmiennopozycyjna reprezentacja liczby rzeczywistej x oznaczana jest symbolem rd(x) i jest równa rd(x) = zn 2c mt rd(x) - x Ł 2-t x Gdy elementy macierzy są rzędu m lub n musimy dokonać przekształcenia całego ! układu. Uciekamy się od operacji na małych liczbach. Nie prowadzi się operacji na małych liczbach, co oznacza, że: rd(x) = x(1+ e), gdzie e Ł 2-t liczbę 2-t nazywamy dokładnością maszynową przykład: Liczba 18,5 daje się przedstawić w postaci: 2 x = 2(12 +021+120 )(1 2-1 + 0 2-2 + 0 2-3 +1 2-4 + 0 2-5 +1 2-6) może być więc przechowywana w słowie o długości d + 1 > 11 bitów o t > 6 bitach mantysy: 0 0 000...001011001010...0 { { 14243 14243 znak znakc d-t bitów t bitów cechy mantysy 0,5781525 W sytuacji, gdy elementy macierzy są < 1, np. mV, musimy wtedy dokonać przeskalowania całego układu (np. poprzez pomnożenie macierzy przez jakąś liczbę). Błędy obliczeń Przy obliczeniach wykonywanych na maszynach cyfrowych spotyka się trzy podstawowe rodzaje błędów: błędy wejściowe (danych wejściowych) występujące, gdy dane wprowadzane do pamięci maszyny cyfrowej odbiegają od dokładnych wartości tych danych. yródłem 3 tych błędów jest najczęściej skończona długość słów binarnych reprezentujących liczby i w związku z tym nieuniknione jest wstępne ich zaokrąglenie błędy odcięcia powstają podczas obliczeń na skutek zmniejszenia liczby działań, na przykład przy obliczaniu sum nieskończonych. Chcąc obliczyć wartość wyrażenia ex 1 1 równego szeregowi: 1+ x + x2 + ... + xN + ... zastępuje je sumą częściową o 2 N! 1 1 odpowiednio dobranej wartości N: 1+ x + x2 +...+ xN 2 N! Jeżeli liczba N będzie niedostatecznie duża, to uzyskana w ten sposób wartość liczby ex będzie obliczona niedokładnie, a popełniony w ten sposób błąd jest właśnie błędem odcięcia. Błędy tego typu powstają też często przy obliczaniu wielkości będących granicami. Podobnie zastąpienie wartości pochodnej funkcji jej ilorazem różnicowym powoduje powstanie błędu odcięcia. W wielu przypadkach daje się uniknąć błędu wejściowego i odcięcia przez ograniczenie danych. Lemat Wilkinsona: Błędy zaokrągleń powstające podczas wykonywania działań zmiennopozycyjnych są równoważne zastępczemu zaburzeniu liczb, na których wykonujemy działania. W przypadku działań arytmetycznych otrzymujemy: fl(x1 ą x2) = x1(1+ e1) ą x2(1+ e2) fl(x1 x2) = x1 x2(1+ e3) e3 = e1 + e2 ć x1 x1(1+ e4) x1 e1 e2
fl = = e4 = e5 = x2 x2 x2(1+ e5) e2 e1 Ł ł gdzie są co do modułu niewiększe niż dokładność maszyny . Przedrostek fl oznacza, że są i to wyniki działań wyznaczone przy użyciu maszyny cyfrowej. Oszacowanie błędów w obliczeniach iteracyjnych: Wiele algorytmów obliczeniowych polega na wyznaczeniu ciągu liczb zbieżnego do poszukiwanej wartości. Przykład: wyznaczyć wartość funkcji y = x , przekształcając do równania iteracyjnego. Można to uczynić obliczając ciąg y0, y1, y2..., gdzie y0 jest dowolnie wybraną liczbą, natomiast każdy element ciągu yi jest dany wzorem: ć 1 x
yi = yi-1 + , dla i = 1, 2, 3, ...
2 yi-1 Ł ł (niewiadoma musi być po obu stronach równania) 2 y = x y2 = x y y = x x y =1 , współczynnik przed funkcją (tutaj 1) musi być < 1 dlatego: y x 2y - y = y 4 x 2y = + y : 2 y ć 1 x
yi = + yi-1 - iteracja i-ta
2 yi-1 Ł ł ć 7x 1 7x
np. y2 = 7x (2y - y) = yi = + yi-1 takiego równania nie da się rozwiązać
y 2 yi-1 Ł ł bo 7/2 ale można zrobić tak: ć 7x 1 7x
(8y - 7y) = yi = + 7yi-1
y 8 yi-1 Ł ł jeśli założyć, że działania wykonywane są dokładnie, to ciąg y0, y1, y2, ... będzie zbieżny do liczby x, ponieważ yi = pi x , to ć 1 1
yi+1 = + x , a ciąg po > 0 pi 2 pi Ł ł ć 1 1
pi+1 = + , przy i = 1, 2, 3, ... jest zbieżny do 1 pi 2 pi Ł ł Przykład: rozwiązanie iteracyjne x + 7y = 3 8x - 7x + 7y = 3
wszystkie składniki przy niewiadomych są < 1 (7/8, -7/8, 3/5)
yi+1 = ć2xi + 4yi - 5 1
2 5 Ł ł
przyjmujemy dowolnie xi = 1, yi = 2 Działania potrzebne do wyznaczania kolejnych wartości ciągu y0, y1, y2, ... nazywamy iteracją. Informację o tym czy w kolejnej iteracji nastąpiło przybliżenie do rozwiązania uzyskujemy obliczając wyrażenie: yi+1 - x qi = yi x pi -1 W przypadku dokładnych działań, gdy yi = pi x i qi = , więc qi < 0 dla i = 1, 2, 3, ... 2pi jeśli pi>1/3. Oznacza to, że maleje wartość bezwzględna różnicy y1 - x odpowiednio dużego numeru iteracji i. 5 Dla obliczeń wykonywanych na maszynie cyfrowej, mamy: ł 1 x(1+ ei )(1+ ei )ś , gdzie ei Ł 3 , k = 1, 2, 3, ... i 2 3 fl(yi+1) = (1+ e1)+ i ęy k 2 yi
y' - x ' ' i+1 Dla liczby yi+1 = fl(yi+1) uzyskamy qi = yi - x Jeżeli yi jest już dostatecznie dobrym przybliżeniem liczby x , a więc pi jest bliskie jedności, to pierwszy składnik powyższego wyrażenia ma pomijalnie małą wartość, natomiast drugi ze składników wynika z błędów zaokrągleń i może mieć tym większą wartość im bliższe jedności jest pi. Przykład: dla liczby 4 x=4 1 4 1 ć 4 1 ć 4 ć4 y0 = 1 y1 = + = 2,5 y2 = 2,5 + = 2,05 y3 = 2,05 + = 2,000609
2 4 2 2,5 2 2,05 Ł ł Ł ł Ł ł Algorytm: zmienne rzeczywiste x, y, eps y:= x/4; {pierwsze przybliżenie} repeat y:= 0,5*(y+(x/y)); until abs (x-sqr(y))<=eps {eps jest zakładaną dokładnością obliczeń) Uwarunkowanie zadania i stabilność algorytmów. Załóżmy, że mamy skończoną liczbę danych rzeczywistych, x = ( x1, x2, ... xn ), na ich podstawie chcemy obliczyć skończenie wiele wyników rzeczywistych y = ( y1, y2, ... ym ). Będziemy więc chcieli określić wartość y według odwzorowania y = Ć (x), gdzie j: D Rm jest ciągłym odwzorowaniem i D Rm. Algorytm to jednoznaczny przepis obliczania wartości odwzorowania Ć (x) składający się ze skończonej liczby kroków. Jeśli zadanie rozwiązujemy numerycznie to zamiast dokładnymi wartościami x1, x2, ... xn posługujemy się reprezentacjami rd (x1), rd (x2), ..., rd (xn). Operacje elementarne nie są więc realizowane dokładnie tylko przez odwzorowanie zastępcze fl. Ta niewielka zmiana danych powoduje, że różne algorytmy rozwiązania tego samego zadania dają na ogół niejednakowe wyniki. Dużą rolę odgrywa tu przenoszenie błędów zaokrągleń. Często niewielkie zmiany danych powodują duże względne zmiany rozwiązania zadania. Zadanie takie nazywamy zle uwarunkowanym. Wielkości charakteryzujące wpływ zaburzeń danych na zaburzenia rozwiązania nazywamy wskaznikami uwarunkowania zadania. Przykład: 20 w(x) = a x20 + a19x19 + ... + a1x + a0 = - k) 20 (x k=1 6 Zerami tego wielomianu będą liczby naturalne 1, 2, ..., 20. Gdy zakłócimy np. a19 = - 210 i jego wartość wynosi a19() = - (210 + 2-23), czyli a19 () = a19 (1+). Otrzymujemy wtedy wielomian w(x) = w (x) 2-23, który posiada już pierwiastki zespolone i np. najbliższe pierwiastkowi 15 wielomianu w(x) są pierwiastki 13,992358137 ą 2,518830070j. Metodę badania przenoszenia błędów można rozbudować do analizy różniczkowej błędów algorytmu. Niech x1 = rd (xi) xi dla i = 1, 2, ..., n n śjj(x) dyi = j(rd(x))- j(x)- dxi dla j = 1, 2, ..., m
śxi i=1 We wzorze tym, czynnikiem określającym wrażliwość yj na bezwzględną zmianę xi jest śjj(x) śxi Analogiczny wzór można wyprowadzić dla przenoszenia się błędów względnych. Jeśli yj ą 0dla j = 0,1, 2, ..., m i xi ą 0 dla i = 1, 2, ..., n to n xj śjj(x) xj śjj(x) ey = ex , gdzie nazywamy wskaznikiem uwarunkowania. j (x) j i śxi jj(x) śxi i=1 j Jeśli wskazniki uwarunkowania co do wartości bezwzględnej są duże to zadanie jest zle uwarunkowane. Przykład: Badamy uwarunkowanie sumy y = a + b + c (a,b,c R) a(1+ e1)+ b(1+ e2)+ c(1+ e3)- a - b - c = a + b + c ae1 + be2 + ce3 ć a b c Ł e + + , gdzie jest
a + b + c a + b + c a + b + c a + b + c Ł ł a b c największą z wartości 1, 2 i 3, gdzie + + jest wskaznikiem a + b + c a + b + c a + b + c uwarunkowania zadania. Stabilność numeryczna algorytmów Algorytm jest stabilny, jeżeli posiada tę własność, że małe błędy powstałe w pewnym kroku algorytmu nie są powiększane w innych krokach oraz nie powodują poważnego ograniczenia dokładności wszystkich obliczeń. Oznacza to, że algorytm jest numerycznie stabilny, gdy zwiększając dokładność obliczeń można wyznaczyć (z dowolną dokładnością) istniejące rozwiązanie zadania. Numeryczną stabilność zadania łatwo sprawdzić rozwiązując zadanie raz z dokładnością np. 10-6, a potem z dokładnością 10-12. 7 INTERPOLACJA: Dana jest funkcja y = f (x), x[x0, xn], dla której znana jest tablica wartości w punktach zwanych węzłami interpolacji. Należy wyznaczyć taką funkcję W(x), aby: W(x0) = Y0, W(x1) = Y1, ..., W(xn) = Yn interpolacja funkcji f(x) Zadaniem interpolacji jest wyznaczenie przybliżonych wartości funkcji zwanej funkcją interpolową w punktach nie będących węzłami interpolacji. Przybliżoną wartość funkcji obliczamy za pomocą funkcji zwanej funkcją interpolującą, która w węzłach ma te same wartości co funkcja interpolowana. Funkcja interpolująca jest funkcją pewnej klasy. Najczęściej będzie to wielomian algebraiczny, wielomian trygonometryczny, funkcja wymierna i funkcja sklejana. Interpolację stosuje się najczęściej, gdy nie znamy analitycznej postaci funkcji (jest ona tylko stablicowana) lub gdy jej postać analityczna jest zbyt skomplikowana. Najczęściej stosowaną metodą wyznaczania funkcji W(x) jest jej dobór w postaci kombinacji n liniowej n+1 funkcji bazowych j0(x),j1(x),j2(x),...,jn (x) W (x) = ji (x) ai i=0 wyrażenie to nazywamy wielomianem uogólnionym. Wprowadzając macierz bazową a0 ł ęa ś 1 ę ś F = [j0(x),j1(x),...,jn (x)] i macierz współczynników A = ę ś M ęa ś n mamy W(x) = F(x) A warunek W(x0) = Y0, W(x1) = Y1, ..., W(xn) = Yn można zapisać w postaci układu równań liniowych X A = Y, gdzie 8 j0(x0) j1(x0) L jn (x0) Y0 ł ł ęj (x1) j1(x1) L jn (x1)ś ęY ś 0 1 ę ś ę ś X = Y = ę ś ę ś M M M M M ę ęY ś (xn ) j1(xn ) L jn (xn )ś j0 n Jeśli macierz X nie jest osobliwa (da się odwrócić), to: A = X-1Y co ostatecznie daje W(x) = Ś(x) X-1 Y Interpolacja wielomianowa W praktyce często używa się bazy złożonej z jednomianów j0(x) =1,j1(x) = x,K,jn(x) = xn, Baza dla funkcji ciągłych na odcinku skończonym [xo, xn] jest bazą zamkniętą, tzn., że każda funkcja tej klasy może być przedstawiona w postaci szeregu złożonego z funkcji bazowych. Wielomian interpolacyjny ma w tym przypadku postać: W(x) = a0 + a1x + a2x2 +K+ anxn dodatkowo musi być spełniony warunek: a0 + a1x0 +K+ anx0n = y0 a0 + a1x1 +K+ anx1n = y1 K K K K K K a0 + a1xn +K+ anxn n = yn Powyższy układ równań ma jedyne rozwiązanie względem a1, jeżeli wartości x0, x1, ..., xn są od siebie różne 1 x0 K x0n 1 x1 K x1n det X = M M M M 1 xn K xn n Macierz X-1 dla bazy wielomianowej j0(x) =1, j1(x) = x, K, jn(x) = xn, nazywana jest macierzą Lagrange a Zauważyć należy, że każdy zbiór węzłów równoodległych xi+1 xi = h = const. można x - x0 sprowadzić do zbioru podstawowego podstawiając q = , wówczas q[0,n], a macierz h Ś przyjmuje postać F =[1, q, q2, K, qn] 9 Interpolacja Lagrange a Przedstawiony powyżej sposób podejścia do interpolacji nie jest zbyt efektywny, ponieważ macierz X jest macierzą pełną i nie zawsze dobrze uwarunkowaną, co oznacza, że numeryczna procedura jej odwracania może być obarczona dużym błędem. W interpolacji wielomianowej Lagrange a dla n+1 węzłów interpolacji (x0, y0), (x1, y1),K, (xi, yi),K, (xn, yn) przyjmuje się funkcje bazowe w postaci j0(x) = (x - x1)(x - x2)(x - x3)K(x - xn ) j1(x) = (x - x0)(x - x2)(x - x3)K(x - xn ) K ji(x) = (x - x0)(x - x1)(x - x2)(x - x3)K(x - xi-1)(x - xi+1)K(x - xn ) K jn (x) = (x - x0)(x - x1)(x - x2)(x - x3)K(x - xn -1) Funkcje te są wielomianami stopnia n zbudowanymi w ten sposób, że w funkcji bazowej Ć1 brakuje czynnika (x-xi). Zatem wielomian interpolacji wyraża się następującym wzorem: W(x) = a0(x - x1)(x - x2)K(x - xn) + a1(x - x0)(x - x2)K(x - xn) + ... + an(x - x0)(x - x1)K(x - xn-1) współczynniki a0 ... an tego wielomianu wyznaczamy z równania: X A = Y, przy czym macierz X ma postać: (x0 - x1)...(x0 - xn) 0 L 0 ł ę ś 0 (x1 - x0)...(x1 - xn) L 0 ę ś X = ę ś M M M M ę 0 0 L (xn - x0)...(xn - xn -1)ś
Macierz posiada tylko główną przekątną niezerową w związku z tym układ równań X A = Y rozwiązuje się natychmiastowo y0 a0 = (x0 - x1)(x0 - x2)K(x0 - xn ) y1 a1 = (x1 - x0)(x1 - x2)K(x1 - xn ) L yn an = (xn - x0)(xn - x1)K(xn - xn -1) 10 Można więc wielomian interpolacyjny Lagrange a zapisać w postaci ułamka: n (x - x0)(x - x1)K(x - xi-1)(x - xi+1)K(x - xn ) W(x) = yi (xi - x0)(xi - x1)K(xi - xi-1)(xi - xi+1)K(xi - xn ) i=1 lub krócej n (x - xj) W(x) = yi(x - xj) , j = 0, 1, ..., n i=1 jąi i Przykład: Wyznaczyć wielomian interpolacyjny Lagrange a funkcji f (x) = ex w przedziale [0,2 ; 0,5] mając dane: f (0,2) = 1,2214, f (0,4) = 1,4918, f (0,5) = 1,6487 (x - 0,4)(x - 0,5) (x - 0,2)(x - 0,5) (x - 0,2)(x - 0,4) W (x) = 1,2214 +1,4918 +1,6487 = - 0,2 (-0,3) 0,2 (-0,1) 0,3 0,1 = 0,724x2 + 0,91x +1,009 algorytm do wyznaczania wielomianu Lagrange a dla podanego punktu: begin fx:=0; for i:=0 to n do begin p:=1; for k:=0 to n do if k<>i then p:=p*(xx-x[k])/(x[i]-x[k]); fx:=fx+f[i]*p end; end; Należy pamiętać, ze przed przystąpieniem do obliczeń należy sprawdzić czy w wektorze x wartości się nie powtarzają, ponieważ grozi to wystąpieniem błędu dzielenia przez zero. Różnice skończone Dla funkcji stabelaryzowanej przy stałym kroku h = xi+1 xi można wyprowadzić pojęcie różnicy skończonej rzędu k Dyi = yi+1 - yi D2yi = D[Dyi]= Dyi+1 - Dyi = yi+2 - 2yi+1 + yi ... k j k Dkyi = D[Dk-1yi]= Dk-1yi+1 - Dk-1yi = ( )yi+k-1 (-1) j j=0 11 Przykład: Dla funkcji danej w postaci tablicy zbudować tablicę różnic skończonych. NR x y "y "2y "3y "4y "5y 0 1,2 1,728 0,469 0,078 0,006 0 0 1 1,3 2,197 0,547 0,084 0,006 0 2 1,4 2,744 0,631 0,090 0,006 3 1,5 3,375 0,721 0,096 4 1,6 4,096 0,817 5 1,7 4,913 Wzory interpolacyjne dla argumentów równoodległych Dla zbioru węzłów tworzących ciąg arytmetyczny x0, x1 = x0 + h, x2 = x0 + 2h, ..., xn = x0 + nh dane są wartości funkcji f(x0), f(x1), ..., f(xn). Szukany wielomian interpolacyjny zapisać możemy w następujący sposób: W(x) = a0 + a1q + a2q(q 1) + a3q(q 1)(q 2) + ... + anq(q 1)(q 2)...(q n +1), x - x0 gdzie q = h Dla: x = x0: q = 0 x = x1: q = 1 x = x2: q = 2 ... x = xn: q = n Funkcje bazowe dla wielomianu W(x) przyjęto w postaci: Ś0(x) = 1 Ś1(x) = q Ś2(x) = q(q 1) Ś3(x) = q(q 1)(q 2) Śn(x) = q(q 1)(q 2)...(q n + 1) Otrzymujemy następujący układ równań: 1 0 0 0 L 0 a0 y0 ł ł ł ę1 1 0 0 L 0ś ęa1 ś ęy1 ś ę ś ę ś ę ś ę ś ę ś ę ś 1 2 2 0 L 0 a2 y2 = ę1 3 6 6 L 0ś ęa3 ś ęy3 ś ę ś ę ś ę ś ęM M M ś ęLś ęLś M L M ę ś ę ś ę ś ę ś 1 n n(n -1) n(n -1)(n - 2) L n! ę ś ę ś an yn z którego wyznacza się wartości nieznanych współczynników a0, a1, a2, ..., an 12 a0 = y0 a0 + a1 = y1 a1 = Dy0 D2y0 a0 + 2a1 + 2a2 = y2 a2 = 2! D3y0 a0 + 3a1 + 6a2 + 6a3 = y3 a3 = 3! ... ... Dny0 a0 + na1 + n(n -1)a2 + ... + n!an = yn an = n! Ostatecznie otrzymujemy I wzór interpolacyjny Newtona w postaci q(q -1) q(q -1)...(q - n +1) W(x) = y0 + qDy0 + D2y0 + ... + Dny0 2! n! Przykład: Dla zależności f(T)=T log p znalezć wielomian interpolacyjny stopnia 3 i obliczyć odchyłki w węzłach interpolacji T 0,8 1,0 1,2 1,4 1,6 1,8 T log p 0,3566 0,9383 1,5598 2,2169 2,9059 3,6229 Tablica: T T log p " "2 "3 błąd [%] 0,8 0,3566 0,5817 0,0398 -0,0042 0 1,0 0,9383 0,6215 0,0356 -0,0037 0 1,2 1,5598 0,6571 0,0319 -0,0039 0 1,4 2,2169 0,6890 0,0280 0 1,6 2,9059 0,7170 1,9 1,8 3,6229 4,2 T - 0,8 przyjmijmy T0 = 0,8 -q = = 5T - 4 0,2 W(T) = 0,3566 + 0,5817q + 0,0189q(q -1) - 0,0007q(q -1)(q - 2) W(T) = -0,075T3 + 0,7225T2 +1,791T -1,5002 Zauważmy, że I wzór Newtona daje dobrą dokładność w pobliżu punktu T0, natomiast dla punktów leżących niżej w tabeli błąd wzrasta. Jeśli chcielibyśmy wyzerować odchyłki we wszystkich węzłach tabeli trzeba by podwyższyć rząd interpolacji i w efekcie wzór empiryczny staje się wtedy praktycznie mało przydatny. Wzory interpolacyjne stosuje się też do obliczania wartości funkcji w punktach pośrednich tabeli (do zagęszczenia). Aby obliczyć T log p dla T = 1,3 z dokładnością do "2 wystarczy przyjąć T0 = 1,2, a wówczas q = 0,5 i znajdujemy W(1,3) =1,5598 + 0,5 0,6571- 0,25 0,0319 =1,88437 . 13 Zadanie takich wartości T = 1,65 byłoby już niewykonalne, ponieważ brakuje różnic. Widać tu ograniczenie tzw. interpolacji w przód, określonej I wzorem Newtona. Do interpolacji wstecz służy II wzór Newtona. Szukamy wielomian interpolacyjny W(x) = a0 + a1q + a2q(q + 1) + a3q(q + 1)(q + 2) + ... + anq(q + 1)(q + 2)...(q + n 1), x - xn gdzie q = h Współczynniki a0, a1, a2, ..., an wyznaczamy jak poprzednio i dochodzimy do wzoru: q(q +1) q(q +1)...(q + n -1) W (x) = y0 + qDyn-1 + D2 yn-2 + ... + Dn y0 2! n! Przykład: Obliczyć T log p dla T = 1,65 z dokładnością do "2 T -1,8 Tn =1,8 q = = -0,75 0,2 W(1,65) = 3,6229-0,75*0,717-0,75*0,25*0,028=3,0825 for j:=1 to 2 do for i:=1 to n-j do z[i,j]:=z[i+1,j-1]-z[i,j-1]; q0:=(x-x0)/h; k:=int(q,0); q:=q0-k; if k>=n then write ( Brak danych ) else wart:=z[k,0]+q*z[k,1]+0.5*q*(q-1)*z[k,2]; Interpolacja trygonometryczna Załóżmy, że znamy wartości pewnej ciągłej i okresowej funkcji f(x) o okresie 2Ą w 2n+1 węzłach. Jako bazę interpolacji przyjmujemy zbiór funkcji trygonometrycznych 1
F = ,sin(x),cos(x),sin(2x),cos(2x),...,sin(nx),cos(nx)ł ę ś 2
Otrzymujemy zatem wielomian interpolacyjny w postaci a0 W(x) = + b1 sin(x) + a1 cos(x) + b2 sin(2x) + a2 cos(2x) +...+ bn sin(nx) + an cos(nx) 2 zawierający 2n+1 nieznanych parametrów. Ze względu na uproszczenie obliczeń najistotniejszy jest przypadek interpolacji funkcji określonej na zbiorze równoodległych węzłów xi[0,2Ą] dobranych według następującej zależności 14 2ip xi = , gdzie i = 0, 1, ..., 2n 2n +1 Czyli 2p 4np x0 = 0, x1 = , ..., xn = 2n +1 2n +1 Warunek interpolacji prowadzi do układu równań liniowych w postaci 1 ł ł ł 0 1 ... 0 1 a0 y0 ę ś ę ś ę ś 2 ę ś ę ś ę ś 1 ę sin(x1) cos(x1) ... sin(nx1) cos(nx1)ś ę b1 ś ę y1 ś = ę ś ę ś ę ś 2 ę ś ę ś ę ś ... ... ... ... ... ... ... ... ę ś ę ś 1 sin(x2n) cos(x2n) ... sin(nx1) cos(nx1)ś ę an ś ę yn ś ę ś ę 2
Współczynniki pierwszego wiersza macierzy X wynikają z wartości funkcji sin(hx) i cos (hx) dla x0 = 0. Przedstawiony układ równań rozwiązuje się natychmiastowo, ponieważ macierz X- 1 można wyznaczyć z zależności 2 X-1 = XT 2n +1 Przykład: Daną funkcję f(x) = 7x x2 przybliżyć wielomianem trygonometrycznym przyjmując n = 3. Współrzędne węzłów interpolacji obliczamy ze wzoru: 2iĄ xi = 2n +1 x 0 0,898 1,795 2,693 3,590 4,488 5,386 y 0 5,478 9,344 11,598 12,242 11,274 8,695 Baza interpolacji zbiór funkcji: 1 F = ,sin(x),cos(x),sin(2x),cos(2x),sin(3x),cos(3x)ł ę ś 2