Interpolacja

Transkrypt

Interpolacja
INTERPOLACJA
1. Wstęp
Załóżmy że dane są wartości funkcji f (x ) na zbiorze punktów x0 , x1 , ..., x n zwanych
węzłami interpolacji. Zadaniem interpolacji jest wyznaczenie przybliżonych wartości funkcji
f ( x ) zwanej funkcją interpolowaną w punktach nie będących węzłami interpolacji. Przy-
bliżoną wartość funkcji f ( x ) obliczamy za pomocą funkcji F ( x ) zwaną 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 lub funkcja sklejana.
Interpolację stosuje się najczęściej gdy nie znamy analitycznej postaci funkcji f ( x ) (jest
ona tylko stablicowana) lub gdy jej postać analityczna jest zbyt skomplikowana.
2. Interpolacja wielomianowa, wzory Lagrange’a i Newtona, schemat Aitkena
2.1. Sformułowanie problemu
Dane są węzły interpolacyjne x0 , x1 , ..., x n , parami różne tzn. xi ≠ x j ⇔ i ≠ j . Dane są
wartości funkcji interpolowanej w węzłach f 0 , f 1 , ..., f n gdzie f i = f ( xi ) , i = 0, 1, 2, ..., n .
Zadanie interpolacji polega na znalezieniu wielomianu Ln ( x ) stopnia co najwyżej n, by wartości tego wielomianu i funkcji interpolowanej w węzłach były sobie równe czyli
Ln ( xi ) = f i , i = 0, 1, 2, ..., n.
(1)
Twierdzenie 1. Zadanie interpolacji wielomianowej posiada jednoznaczne rozwiązanie,
czyli istnieje tylko jeden wielomian spełniający warunek (1).
Szukany wielomian ma postać:
n
Ln ( x ) = ∑ f i
i =0
n
x − xj
j = 0 j ≠i
xi − x j
∏
.
(2)
Wzór (2) nosi nazwę wzoru Lagrange’a.
Aby obliczyć wartość wielomianu Lagrange’a w punkcie x często stosuje się algorytm
iteracyjny Aitkena. Niech Pi ,i +1,...,i + j −1,i + j ( x ) oznacza wartość wielomianu interpolacyjnego
w punkcie x zbudowanego na węzłach xi , xi +1 ,..., xi + j −1 , xi + j . Można wykazać
Pi ,i +1,...,i + j −1,i + j ( x ) =
( x − xi ) Pi +1,...,i + j −1,i + j ( x ) − ( x − xi + j ) Pi ,i +1,...,i + j −1 ( x )
przy czym Pi ( x ) = f ( xi ) = f i .
xi + j − x i
(3)
Interpolacja
2
P0,1,... n ( x ) jest więc wartością wielomianu interpolacyjnego w punkcie x i zbudowanego
w oparciu o węzły x0 , x1 ,..., x n . Wyznacza się jego wartość wg następującego schematu
x0
x1
x2
M
xn − 2
xn −1
xn
P0 ( x)
P0,1 ( x)
P0,1, 2 ( x)
P1 ( x)
P1, 2 ( x)
P1, 2,3 ( x)
P2 ( x)
P2,3 ( x)
P2,3, 4 ( x)
M
M
M
Pn − 2 ( x) Pn − 2, n −1 ( x) Pn − 2, n −1, n ( x)
Pn −1 ( x) Pn −1, n ( x)
Pn ( x)
L P0,1,..., n − 2 ( x) P0,1,..., n −1 ( x) P0,1,..., n ( x)
L P1, 2,..., n −1 ( x) P1, 2,..., n ( x)
L P2,3,..., n ( x)
(4)
N
Wielomian w postaci wzoru Lagrange’a jest niewygodny zarówno do wyznaczania jego
wartości w dowolnym punkcie (stosuje się wzór Aitkena) jak i jego całkowania bądź
różniczkowania. Częściej wielomian interpolacyjny określa się w postaci wzoru Newtona
przy czym obydwa wzory są sobie równoważne ponieważ, zgodnie z twierdzeniem 1, istnieje
tylko jeden wielomian interpolacyjny dla węzłów x0 , x1 ,..., x n .
Wzór Newtona dla węzłów dowolnych ma postać
n
Ln ( x ) = ∑ aiω i ( x )
(5)
i =0
gdzie ω i (x ) jest wielomianem czynnikowym stopnia i-tego określonym następująco
⎧ω 0 ( x ) = 1
⎪
i −1
⎨ω ( x ) = ( x − x )( x − x )...( x − x ) =
( x − x j ) i = 1,2,..., n .
∏
0
1
i −1
⎪⎩ i
j =0
(6)
Zauważmy, że jeśli wielomiany Ln (x ) i Ln−1 ( x ) są zbudowane na węzłach odpowiednio
x0 , x1 ,..., x n i x0 , x1 ,..., x n −1 spełniają ważną zależność rekurencyjną
Ln ( x ) = Ln −1 ( x ) + a nω n ( x ) .
Porównując wzory (2) i (5), otrzymamy
n
an = ∑
i =0
fi
n
∏(x
j = 0 j ≠i
i
.
(7)
− xj)
Wyrażenie (7) nazywane jest ilorazem różnicowym rzędu n opartym na węzłach
x0 , x1 , ..., x n , często oznaczanym symbolicznie f [ x0 , x1 ,..., x n ] . Iloraz różnicowy rzędu zerowego oparty na węźle xi definiuje się jako wartość funkcji interpolowanej w tym punkcie,
czyli
f [ xi ] = f ( xi ) = f i .
(8)
Dowolny iloraz różnicowy rzędu j-tego oparty na węzłach xi , xi +1 , xi + 2 ,..., xi + j spełnia
zależność rekurencyjną
f [ xi , xi +1 ,..., xi + j −1 , xi + j ] =
f [ xi +1 ,..., xi + j −1 , xi + j ] − f [ xi , xi +1 ,..., xi + j −1 ]
xi + j − xi
.
(9)
Interpolacja
3
Współczynniki ai we wzorze Newtona [5] są równe ilorazom różnicowym rzędu i-tego
opartych na węzłach x0 , x1 ,..., xi czyli
a i = f [ x 0 , x1 ,..., x i ]
(10)
i można je wyliczyć wg następującego schematu:
x0
f [ x0 ]
x1
f [ x1 ]
f [ x0 , x1 ]
x2
f [ x2 ]
f [ x1, x2 ]
f [ x0 , x1, x2 ]
M
M
M
M
xn −1
f [ xn −1 ]
f [ xn − 2 , xn −1 ]
xn
f [ xn ]
f [ xn −1, xn ]
(11)
O
f [ xn −3, xn − 2 , xn −1 ] L f [ x0 , x1,..., xn −1 ]
f [ xn − 2, xn −1, xn ]
L
f [ x1, x2 ,..., xn ]
f [ x0 , x1,..., xn ]
Ilorazy różnicowe przedstawione wyżej wyznacza się na podstawie wzorów (8) i(9).
3. Błąd interpolacji wielomianowej i optymalny dobór węzłów
Jak zaznaczono we wstępie, za pomocą wielomianu interpolacyjnego można wyznaczyć
przybliżoną wartość funkcji interpolowanej w punktach nie będących węzłami. Jeśli funkcja
interpolowana f (x ) jest klasy Cn+1 (posiada ciągłą pochodną (n+1)-go rzędu) w przedziale
domkniętym 〈 a, b〉 oraz wszystkie węzły x0 , x1 ,..., x n też należą do tego przedziału to błąd
bezwzględny interpolacji wielomianem Lagrange’a można oszacować wzorem
Rn ( x ) = f ( x ) − Ln ( x ) ≤
M n +1
ω n +1 ( x )
( n + 1)!
(12)
gdzie M n +1 = max f ( n +1) ( x ) a ω n+1 ( x ) jest wielomianem czynnikowym określonym wzorem
x∈〈 a ,b 〉
(6).
Zauważmy, że błąd interpolacji zależy nie tylko od (n+1)-szej pochodnej funkcji interpolowanej ale również od wielomianu czynnikowego ω n+1 ( x ) , który z kolei zależy od doboru
węzłów interpolacji x0 , x1 ,..., x n . Problem optymalnego doboru węzłów interpolacyjnych rozwiązał Czebyszew. Wykazał, że wartości węzłów w przedziale 〈 a, b〉 , optymalnie dobranych
są określone wzorem
1
1
2i + 1
(a + b) − (b − a) cos(
π ) i = 0,1,...n .
2
2
2n + 2
Wtedy najmniejsze oszacowanie błędu interpolacji wynosi
xi =
(13)
M n +1 (b − a ) n +1
Rn ( x ) = f ( x ) − Ln ( x ) ≤
( n + 1)! 2 2 n +1
(14)
Optymalnie dobrane węzły wcale nie są równo odległe lecz zagęszczają się przy końcach
przedziału.
Interpolacja
4
4. Funkcje sklejane
W dotychczasowych rozważaniach funkcja była interpolowana jednym wielomianem.
Oczywiście, jeśli wzrasta liczba węzłów wzrasta również stopień wielomianu interpolacyjnego i może się okazać, że nie będzie on zbieżny do funkcji interpolowanej. Można inaczej
sformułować problem.
Niech dane będą węzły uporządkowane następująco a = x0 < x1 < x 2 < ... < x n −1 < x n = b .
W każdym z podprzedziałów 〈 xi , xi +1 ) i = 0,1,2,..., n − 1 będziemy funkcję interpolowaną
przybliżać wielomianem stosunkowo niskiego stopnia. Na ogół w każdym podprzedziale
wielomian będzie różny ale cała funkcja interpolująca powinna być ciągła wraz z odpowiednimi pochodnymi na odcinku 〈 a, b〉 .
Definicja 1. Funkcja S m (x ) jest funkcją sklejaną stopnia m, jeśli wraz z węzłami
a = x0 < x1 < x 2 < ... < x n −1 < x n = b spełnia dwa warunki:
df
•
•
df
w każdym podprzedziale 〈 xi , xi +1 ) , i = −1,0,1,..., n , gdzie x−1 = − ∞, xn +1 = + ∞ S m (x) , jest
wielomianem stopnia co najwyżej m,
jest klasy Cm−1 na całej osi rzeczywistej.
W najprostszym przypadku m=1 funkcja sklejana jest po prostu linią łamaną.
Definicja 2. Funkcja S 2 m−1 ( x ) jest naturalną funkcją sklejaną, jeśli w przedziałach
( −∞, x0 ) i ( x n ,+∞ ) jest wielomianem stopnia m−1 (a nie 2m−1).
Definicja 3. Funkcja S m (x ) jest interpolacyjną funkcją sklejaną jeśli w węzłach
interpolacji jej wartości i wartości funkcji interpolowanej są sobie równe.
4.1. Algorytm wyznaczania naturalnej, interpolacyjnej funkcji sklejanej stopnia 3
Niech w każdym podprzedziale 〈 xi , xi+1 ) funkcja sklejana ma postać:
S3 ( x) = ai + bi ( x − xi ) + ci ( x − xi ) 2 + di ( x − xi )3 , i = 0,1,2,..., n − 1
(15)
gdzie współczynniki ai , bi , ci , d i wyznacza się następująco:
A. Należy rozwiązać układ równań liniowych o postaci
⎡2
⎢u2
⎢0
⎢
⎢M
⎢0
⎢⎣ 0
w1
2
u3
M
0
0
0
w2
2
M
0
0
0
0
w3
M
0
0
L 0
L 0
L 0
O M
L un− 2
L 0
0
0
0
M
2
un−1
0 ⎤
0 ⎥
0 ⎥
⎥
M ⎥
wn−2 ⎥
2 ⎥⎦
⎡ c1* ⎤ ⎡ v1 ⎤
⎢ c* ⎥ ⎢ v ⎥
⎢ 2* ⎥ ⎢ 2 ⎥
v
⋅ ⎢ c3 ⎥ = ⎢ 3 ⎥
⎢ M ⎥ ⎢ M ⎥
⎢c* ⎥ ⎢vn − 2 ⎥
⎢ n*− 2 ⎥ ⎢ v ⎥
⎣ cn −1 ⎦ ⎣ n −1 ⎦
(16)
Interpolacja
5
gdzie:
hi
hi +1
⎧
⎪ui +1 = h + h , wi +1 = h + h
⎪
i
i +1
i
i +1
⎨
⎛ f i + 2 − f i +1 f i +1 − f i ⎞
⎪vi +1 = ⎜
⎟⎟ : (hi + hi +1 )
−
⎜ h
h
⎪⎩
i +1
i
⎝
⎠
i = 0,1,2,..., n − 2
hi = xi +1 − xi ,
i = 0,1,2,..., n − 1
f i = f ( xi ) ,
i = 0,1,2,..., n
z którego wyznacza się współczynniki ci* , i = 1,2,..., n − 1 .
B. Współczynniki ci są określone następująco
c0 = cn = 0, ci = 3ci* , i = 1,2,..., n − 1
(17)
a współczynniki: ai , bi , d i oblicza się wg wzorów:
⎧
⎪a = f
i
⎪ i
f i +1 − f i hi
⎪
− ( ci +1 + 2ci ) ,
⎨bi =
h
3
i
⎪
−
c
c
⎪d = i +1 i
⎪ i
3hi
⎩
i = 0,1,2,..., n − 1 .
(18)
5. Interpolacja trygonometryczna
Interpolacja trygonometryczna to przybliżanie funkcji okresowych wielomianem trygonometrycznym. Zakładać będziemy, że funkcja interpolowana jest funkcją okresową o okresie
2π, ( x ∈ 〈 0, 2π 〉 ) . Jeśli funkcja interpolowana g ( y ) ma okres o długości (b − a ) , y ∈ 〈 a, b〉 ) ,
to dokonując skalowania y = a + (b − a) ⋅ x /(2π ) otrzymamy funkcję o okresie 2π
f ( x) = g (a + (b − a) ⋅ x /(2π )) .
(19)
5.1. Sformułowanie problemu
Załóżmy, że funkcja interpolowana f (x ) jest funkcją okresową o okresie 2π, oraz jest
funkcją zmiennej rzeczywistej o wartościach zespolonych. Dane są węzły x0 , x1 ,..., x n parami
różne ( x k ≠ x j ⇔ k ≠ j ) oraz x k ∈ 〈 0,2π ) k = 0,1,2,..., n . Dane są wartości funkcji interpolowanej w węzłach f ( x0 ), f ( x1 ),..., f ( x n ) . Zadaniem interpolacji trygonometrycznej jest znalezienie wielomianu trygonometrycznego t n (x ) o postaci
n
t n ( x ) = ∑ c j exp(ijx ) , gdzie i = − 1 a exp( a ) = e a
j =0
(20)
Interpolacja
6
który w (n+1) różnych węzłach przyjmuje te same wartości co funkcja interpolowana f (x )
t n ( x k ) = f ( x k ) , k = 0,1,2,..., n .
(21)
Twierdzenie 2. Zadanie interpolacji ma jednoznaczne rozwiązanie.
Aby znaleźć współczynniki c j należy rozwiązać n+1 równań liniowych o n+1 niewiado-
mych o postaci
n
∑c
j =0
j
exp(ijxk ) = f ( xk ) , k = 0,1,2,..., n .
Macierz współczynników tego układu równań jest nieosobliwa ,a jej wyznacznik jest tzw.
wyznacznikiem Vandermonde’a.
Współczynniki c j można znaleźć nie rozwiązując układu równań, jeśli węzły będą równoodległe.
Twierdzenie 3. Jeśli węzły są równoodległe
2πk
, k = 0,1,2,..., n
n +1
to współczynniki wielomianu trygonometrycznego c j są określone wzorem
xk =
cj =
1 n
∑ f ( xk ) ⋅ exp(−ijxk ) , j = 0,1,2,..., n .
n + 1 k =0
(22)
(23)
Twierdzenie 4. Wielomian trygonometryczny interpolujący funkcję f (x ) zbudowany na
węzłach równoodległych [22] może być przedstawiony w postaci równoważnej wzorom (20)
i (23) jako
m
1
δ
t n ( x ) = a 0 + ∑{a j cos( jx ) + b j sin( jx )} + a m +1 cos((m + 1) x )
2
2
j =1
[24]
1
1
n , gdy n parzyste lub δ = 1, m = (n − 1) , gdy n nieparzyste, a współ2
2
czynniki wielomianu trygonometrycznego a j , b j wyznacza się
gdzie: δ = 0, m =
2 n
⎧
a
=
⎪⎪ j n + 1 ∑ f ( xk ) ⋅ cos( jxk )
k =0
(25)
⎨
n
2
⎪b j =
∑ f ( xk ) ⋅ sin( jxk ).
⎪⎩
n + 1 k =0
Postać wielomianu trygonometrycznego określona wzorami [24] i [25] jest szczególnie
przydatna przy interpolacji funkcji o wartościach rzeczywistych. Zauważmy, że współczynniki a j , b j mają wtedy wartości rzeczywiste.
Aby obliczyć współczynniki a j , b j należy wykonać 4n+3 mnożeń i 2n sumowań oraz
obliczyć aż 2n wartości funkcji trygonometrycznych. Stosując algorytm Goertzela można
zmniejszyć liczbę mnożeń.
Interpolacja
7
5.2. Algorytm Goertzela
Niech
2π
= xj
n +1
Współczynniki a j , b j oblicza się wg wzorów
βj = j
(26)
2
⎧
⎪a j = n + 1 ( f ( x0 ) + u1 cos( β j ) − u 2 )
⎨
2
⎪b j =
u1 sin( β j )
n +1
⎩
(27)
a dwa pierwsze wyrazy ciągu u1 , u 2 oblicza się ze wzoru na ciąg un
uk = f ( x k ) + 2u k +1 cos( β j ) − uk + 2
un + 2 = un +1 = 0 k = n, ( n − 1),...,1 .
(28)
Algorytm Goertzela jest „tańszy”. Obliczenie wartości współczynników a j , b j wymaga
bowiem tylko n+6 mnożeń i 2n+1 dodawań nie mówiąc o obliczeniach wartości funkcji
trygonometrycznych (tylko 2 razy!). Niestety algorytm ten może dawać bardzo niedokładne
wyniki dla małych β j . Modyfikacja algorytmu Goertzela zaproponowana przez Reinscha
pozwala uniknąć tego niebezpieczeństwa.
5.3. Algorytm Reinscha
Niech
2π
= xj .
n +1
Rozpatrujemy dwa przypadki
A. cos( β j ) ≥ 0
βj = j
w = −4 sin 2 (
βj
2
)
⎧uk +1 = vk +1 + uk + 2
⎨
⎩vk = wuk +1 + vk +1 + f ( xk )
k = n, ( n − 1),...,1,0
(29)
k = n, ( n − 1),...,1,0
(30)
przy czym un + 2 = vn +1 = 0 .
B. cos( β j ) < 0
w = 4 cos 2 (
βj
2
)
⎧uk +1 = vk +1 − uk + 2
⎨
⎩vk = wuk +1 − vk +1 + f ( xk )
przy czym un + 2 = vn +1 = 0 .
Interpolacja
8
i ostatecznie współczynniki a j , b j obliczamy
2
u1
⎧
(
)
a
v
w
=
−
j
0
⎪
2
n +1
⎨
2
⎪b j =
u1 sin( β j ).
n +1
⎩
(31)
6. Program ćwiczenia
1.
2.
3.
4.
Napisać program, który oblicza wartości wielomianu Lagrange’a dla dowolnych
punktów x, węzłów równoodległych lub dobranych optymalnie (13) i zadanej przez
prowadzącego funkcji interpolowanej.
Napisać program, który oblicza wartości wielomianu Newtona dla dowolnych
punktów x, węzłów równoodległych lub dobranych optymalnie (13) i zadanej przez
prowadzącego funkcji interpolowanej.
Napisać program, który oblicza wartości wielomianu wg schematu Aitkena dla
dowolnych punktów x, węzłów równoodległych lub dobranych optymalnie (13) i zadanej przez prowadzącego funkcji interpolowanej.
Napisać program, który oblicza wartości funkcji sklejanej stopnia 3 dla dowolnych
punktów x, węzłów równoodległych lub nierównoodległych i zadanej przez prowadzącego funkcji interpolowanej. Program powinien również obliczyć wartości współczynników ai , bi , ci , d i .
5.
Napisać program, który oblicza wartości wielomianu trygonometrycznego dla dowolnych punktów x, węzłów równoodległych i zadanej przez prowadzącego funkcji interpolowanej, okresowej (ewentualnie dokonać skalowania). Do obliczenia wartości
współczynników a j , b j wielomianu wykorzystać wzory (25).
6.
Napisać program, który oblicza wartości wielomianu trygonometrycznego dla dowolnych punktów x, węzłów równoodległych i zadanej przez prowadzącego funkcji interpolowanej, okresowej (ewentualnie dokonać skalowania). Do obliczenia wartości
współczynników a j , b j wielomianu wykorzystać algorytm Goertzela.
7.
Napisać program, który oblicza wartości wielomianu trygonometrycznego dla dowolnych punktów x, węzłów równoodległych i zadanej przez prowadzącego funkcji interpolowanej, okresowej (ewentualnie dokonać skalowania). Do obliczenia wartości
współczynników a j , b j wielomianu wykorzystać algorytm Reinscha.
8.
Napisać sprawozdanie zawierające:
a) tekst programu i wyniki przeprowadzonych obliczeń,
b) opis przeprowadzonych badań,
c) analizę uzyskanych wyników,
d) wnioski.
Interpolacja
9
7. Pytania kontrolne
1. Co to jest interpolacja i po co się ją stosuje?
2. Sformułuj problem interpolacji wielomianowej.
3. Podaj wzór Lagrange’a. Dla podanych przez prowadzącego węzłów i wartości funkcji
interpolowanej w tych węzłach znajdź wielomian interpolacyjny (zastosuj wzór
Lagrange’a).
4. Podaj wzór Newtona. Dla podanych przez prowadzącego węzłów i wartości funkcji
interpolowanej w tych węzłach znajdź wielomian interpolacyjny (zastosuj wzór
Newtona).
5. Podaj definicję ilorazu różnicowego stopnia n-tego. Jaką zależność rekurencyjną spełnia
iloraz różnicowy?
6. Podaj wzór na błąd interpolacji wielomianowej. Jak wygląda optymalny dobór węzłów
interpolacji?
7. Scharakteryzuj algorytm Aitkena, po co się go stosuje?
8. Podaj definicję funkcji sklejanej S m (x ) . Co to jest naturalna funkcja sklejana? Co to jest
interpolacyjna funkcja sklejana?
9. Sformułuj problem interpolacji trygonometrycznej.
10. Przedstaw rozwiązanie problemu iterpolacji trygonometrycznej dla węzłów nierównoodległych i równoodległych.
8. Rozwiązanie układu równań z macierzą trójdiagonalną
W przypadku zastosowania do interpolacji funkcji sklejanych należy rozwiązać układ
równań o postaci [16]. Można do tego celu wykorzystać jedną z metod dokładnych
prezentowanych w ćwiczeniu Układy Równań Liniowych albo zastosować prosty algorytm
przedstawiony niżej.
Dany jest układ równań liniowych z macierzą trójdiagonalną o postaci:
⎡ b1
⎢a
⎢ 2
⎢0
⎢
⎢M
⎢0
⎢
⎣⎢ 0
c1
0
K
0
b2
c2 K
0
a3
b3 K
0
M
0
M
0
O M
K bn−1
0
0
K
an
0 ⎤ ⎡ x1 ⎤ ⎡ d1 ⎤
0 ⎥⎥ ⎢⎢ x2 ⎥⎥ ⎢⎢ d 2 ⎥⎥
0 ⎥ ⎢ x3 ⎥ ⎢ d 3 ⎥
⎥⋅⎢ ⎥ = ⎢
⎥
M ⎥ ⎢ M ⎥ ⎢ M ⎥
cn−1 ⎥ ⎢ xn−1 ⎥ ⎢d n−1 ⎥
⎥ ⎢ ⎥ ⎢
⎥
bn ⎦⎥ ⎣⎢ xn ⎦⎥ ⎣⎢ d n ⎦⎥
(32)
Przewidujemy rozwiązanie o postaci:
xi = α i xi +1 + β i .
(33)
Wyznaczmy wartości współczynników α i i β i . Z równania pierwszego układu (32)
mamy:
Interpolacja
10
d
c
d
c1
x2 + 1 = α1 x2 + β1 , b1 ≠ 0 , gdzie α1 = − 1 , β1 = 1 .
b1
b1
b1
b1
x1 = −
Wstawiając to równanie do drugiego z układu (32) otrzymamy po przekształceniach:
d − a2 β1
c2
= α 2 x3 + β 2 , b2 + a2α1 ≠ 0
x3 + 2
b2 + a2α1
b2 + a2α1
x2 = −
gdzie: α 2 = −
c2
d − a2 β1
, β2 = 2
.
b2 + a2α1
b2 + a2α1
Wstawiając to równanie do trzeciego z układu [32] otrzymamy po przekształceniach:
c3
d − a3 β 2
x4 + 3
= α 3 x4 + β 3 , b3 + a3α 2 ≠ 0
b3 + a3α 2
b3 + a3α 2
x3 = −
gdzie: α 3 = −
c3
d − a3 β 2
, β3 = 3
.
b3 + a3α 2
b3 + a3α 2
Ostatecznie współczynniki α i i β i są określone:
αi = −
ci
d − ai β i −1
, βi = i
, i = 2,3,..., n − 1 .
bi + aiα i −1
bi + aiα i −1
Wstawiając xn−1 = α n−1 xn + β n−1 do ostatniego równania z układu [32] otrzymamy:
xn =
•
•
d n − an β n −1
= β n , bn + anα n −1 ≠ 0 .
bn + anα n −1
Reasumując, algorytm rozwiązania układu równań z macierzą trójdiagonalną jest:
Wyznacz wektory α i i β i i = 1,2,..., n wg wzorów:
α1 = −
c1
b1
αi = −
ci
bi + aiα i −1
β1 =
d1
b1
βi =
d i − ai β i −1
bi + aiα i −1
i = 2,3,..., n .
Znajdź składowe wektora rozwiązań x1 , x2 , ... , xn następująco:
xn = β n
xi = α i xi +1 + β i
i = n − 1, n − 2,...,2,1.

Podobne dokumenty