You are on page 1of 147

Dorota Dąbrowska

Metody Numeryczne
Wykład i zadania

2018/19, UKSW
ii Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19
Spis treści

1 Arytmetyka komputerów 1 4.1 Różne sformułowania zadania interpolacji . . 81


1.1 Dwójkowy system liczenia . . . . . . . . . . . 1 4.2 Interpolacja Lagrange’a . . . . . . . . . . . . 85
1.2 Liczby zmiennopozycyjne . . . . . . . . . . . 8 4.3 Interpolacja Hermite’a . . . . . . . . . . . . . 97
1.3 Błędy zaokrągleń . . . . . . . . . . . . . . . . 17
5 Splajny i interpolacja splajnami 103
2 Zadanie numeryczne i algorytm 29 5.1 Splajny . . . . . . . . . . . . . . . . . . . . . 103
2.1 Uwarunkowanie zadania . . . . . . . . . . . . 29 5.2 Algorytmy obliczania wartości splajnów w
2.2 Jakość algorytmu . . . . . . . . . . . . . . . . 38 punkcie . . . . . . . . . . . . . . . . . . . . . 109
2.3 Analityczna złożoność obliczeniowa . . . . . . 45
5.3 Interpolacja splajnami kubicznymi . . . . . . 114
3 Wielomiany 53
3.1 Bazy wielomianowe . . . . . . . . . . . . . . . 53 6 Równania nieliniowe i układy równań nielinio-
3.2 Algorytmy obliczania wartości wielomianu . . 63 wych 125
3.3 Algorytmy zamiany bazy . . . . . . . . . . . . 69 6.1 Równania nieliniowe . . . . . . . . . . . . . . 125
6.2 Wyznaczanie zer wielomianów . . . . . . . . . 133
4 Interpolacja wielomianowa 81 6.3 Układy równań nieliniowych . . . . . . . . . 138

iii
iv Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19
Rozdział 1

Arytmetyka komputerów

1.1 Dwójkowy system liczenia


Oznaczenia Jeśli n jest liczbą naturalną bądź zerem
System dziesiętny jest przykładem tzw. systemu pozycyjnego. oraz d0 , d1 , . . . dn oznaczają cyfry w systemie dwójkowym,
W systemie dziesiętnym podstawą liczenia jest liczba 10, czyli przy czym dn 6= 0, to zapis (dn dn−1 . . . d0 )2 oznacza liczbę
zachodzi poniższa reguła.
dn · 2n + dn−1 · 2n−1 + . . . + d1 · 21 + d0 · 20 .
Dziesięć jednostek rzędu niższego daje jedną jednostkę
rzędu wyższego. n
Powyższą sumę można też zapisać w postaci di 2i .
P
i=0
System dwójkowy (inaczej binarny) jest również systemem
pozycyjnym. Podstawa liczenia wynosi 2. Oba systemy porównuje poniższa tabela.
Dwie jednostki rzędu niższego dają jedną jednostkę rzędu system dziesiętny system dwójkowy
wyższego. 103 102 101 100 23 2 2 21 20
7 2 8 3 1 0 1 1
10n 10n−1 101 100 2n 2n−1 21 20
Posługiwanie się system dwójkowym jest analogiczne do dn dn−1 . . . d1 d0 dn dn−1 . . . d1 d0
posługiwania się system dziesiętnym.
W obu systemach liczby powyższych postaci może poprze-
dzać znak − dla oznaczenia liczb ujemnych.
1.1.1 Liczby całkowite w dwójkowym sys-
temie liczenia
1.1.2 Liczby wymierne o skończonym roz-
Zapisując liczbę całkowitą w systemie dziesiętnym posługu- winięciu dwójkowym
jemy się cyframi 0, 1, . . ., 9 oraz znakami + i −. Znaczenie
cyfry zależy nie tylko od jej kształtu, ale również od pozycji, W systemie dwójkowym można zapisywać liczby wymierne,
którą cyfra zajmuje w liczbie: cyfra stojąca najbardziej na czyli używać przecinka i cyfr po przecinku.
prawo oznacza ilość jedności, a ta która stoi obok niej ilość Fakt 1 Rozwinięcia liczb wymiernych w dowolnym sys-
dziesiątek i tak dalej: temie liczenia charakteryzują się tym, że są skończone
lub okresowe.
1264 = 1 · 1000 + 2 · 100 + 6 · 10 + 4 · 1
= 1 · 103 + 2 · 102 + 6 · 101 + 4 · 100 . Podkreślmy, że fakt ten dotyczy dowolnego systemu liczenia.
Nie wynika jednak z niego, że jeśli liczba ma skończone
Ogólnie można napisać, że jeśli n jest liczbą naturalną bądź rozwinięcie w jednym systemie, to również będzie miała
zerem oraz d0 , d1 , . . . dn oznaczają cyfry w systemie dzie- skończone rozwinięcie w każdym innym systemie, np.
siętnym, przy czym dn 6= 0, to zapis dn dn−1 . . . d0 oznacza
liczbę 1
= 0, 110
10
dn dn−1 . . . d0 = dn ·10 +dn−1 ·10
n n−1
+. . .+d1 ·10 +d0 ·10 .
1 0
= (0, 0001100110011001100 . . .)2 .
Co więcej, nawet gdy ograniczymy się do jednego systemu,
Liczby w systemie dwójkowym zapisujemy analogicznie jak np. dziesiętnego, to ta sama liczba może posiadać dwa
w dziesiętnym. Używamy teraz cyfr 0 i 1, np. 100102 , indeks rozwinięcia: jedno skończone, a drugie okresowe:
dolny 2 wskazuje, że mamy do czynienia z systemem dwój-
kowym, a nie innym. Cyfra stojąca na pozycji najbardziej 1 = 0, (9).
na prawo oznacza ilość jedności, ta która stoi obok niej ilość
dwójek, następna ilość czwórek, potem ilość ósemek i tak rozwinięcia liczb wymiernych
dalej: w dowolnym systemie liczenia

100112 = = 1 · 16 + 0 · 8 + 0 · 4 + 1 · 2 + 1 · 1
= 1 · 24 + 0 · 23 + 0 · 22 + 1 · 21 + 1 · 20 . skończone nieskończone okresowe

1
2 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Zajmiemy się najpierw tylko rozwinięciami skończonymi. celu wystarczy odpowiednio pogrupować składniki:
Przypomnijmy, że w systemie dziesiętnym cyfry po prze-
cinku oznaczają kolejno ilość części dziesiątych, setnych, 2, 45(31) = 2, 45 +(3 · 10 + 1 · 10 )
−3 −4

tysięcznych i tak dalej: +(3 · 10 + 1 · 10−6 )


−5

+(3 · 10−7 + 1 · 10−8 ) + . . .


100 10−1 10−2 10−3
4 , 8 9 3 = 4 · 100 + 8 · 10−1 + 9 · 10−2 + 3 · 10−3 . = 2, 45 +(3 · 10 + 1) · 10−4
+(3 · 10 + 1) · 10−6
Analogicznie dzieje się w systemie dwójkowym:
+(3 · 10 + 1) · 10−8 + . . .
20 2−1 2−2 2−3 = 2, 45 +31 · (10−4 + 10−6 + 10−8 + . . .)
1 , 1 0 1 = 1 · 20 + 1 · 2−1 + 0 · 2−2 + 1 · 2−3 .
= 2, 45 +31 · (100−2 + 100−3 + 100−4 + . . .)
X∞
= 2, 45 +31 · 100−i .
Oznaczenia Jeśli n jest liczbą naturalną bądź zerem, k i=2
liczbą naturalną oraz d0 , d1 , . . . dn , d−1 , d−2 , . . . d−k ozna-
czają cyfry w systemie dwójkowym, przy czym dn 6= 0 gdy Szereg
n > 0, to zapis (dn dn−1 . . . d0 , d−1 d−2 . . . d−k )2 oznacza ∞
X
liczbę 100−i = 100−2 + 100−3 + 100−4 + . . .
i=2
dn ·2n +dn−1 ·2n−1 +. . .+d0 ·20 +d−1 ·2−1 +. . .+d−k ·2−k .
jest szeregiem geometrycznym o wyrazie pierwszym równym
n 100−2 i ilorazie 100−1 = 10−2 , stąd jego suma wynosi
Powyższą sumę można też zapisać w postaci di 2i .
P
i=−k 100−2 10−4 10−4 · 104
= =
1 − 10−2 1 − 10−2 (1 − 10−2 ) · 104
Porównajmy oba systemy w tabeli. 1 1
= = .
system dziesiętny system dwójkowy 104 − 102 9900
101 100 10−1 10−2 21 20 2−1 2−2
7 2 , 8 3 1 0, 1 1 Zatem rozwinięcie 2, 45(31) można przedstawić w postaci
10n 101 100 10−1 10−k 2n 21 20 2−1 2−k ułamka zwykłego
dn . . . d1 d0 , d−1 . . . d−k dn . . . d1 d0 , d−1 . . . d−k
1 24255 31 24286
2, 45(31) = 2, 45 + 31 · = + = .
W obu systemach liczby powyższych postaci może poprze- 9900 9900 9900 9900
dzać znak − dla oznaczenia liczb ujemnych. Analogiczna sytuacja zachodzi w systemie dwójkowym. Dla
przykładu zamieńmy rozwinięcie okresowe w systemie dwój-
1.1.3 Liczby wymierne o okresowym rozwi- kowym (1, 0(101))2 na ułamek zwykły w systemie dziesięt-
nym. Ponieważ
nięciu dwójkowym
(1, 0(101))2 = (1, 0101101101 . . . )2 ,
W systemie dziesiętnym rozwinięcia okresowe oznaczamy
przez ujęcie w nawias cyfr powtarzających się nieskończenie to
wiele razy, np. (1, 0(101))2 = 1, 02 +1 · 2−2 + 0 · 2−3 + 1 · 2−4
2, 45(31) = 2, 45313131313131 . . . . +1 · 2−5 + 0 · 2−6 + 1 · 2−7
+1 · 2−8 + 0 · 2−9 + 1 · 2−10 + . . . .
Taki zapis rozumiemy jako sumę pewnego szeregu:
Grupujemy składniki tak, by uzyskać szereg geometryczny:
2, 45(31) = 2, 45 +3 · 10−3 + 1 · 10−4
(1, 0(101))2 =1 +(1 · 2−2 + 0 · 2−3 + 1 · 2−4 )
+3 · 10−5 + 1 · 10−6
+(1 · 2−5 + 0 · 2−6 + 1 · 2−7 )
+3 · 10−7 + 1 · 10−8 + . . .

X +(1 · 2−8 + 0 · 2−9 + 1 · 2−10 ) + . . .
= 2, 45 + di 10−i , =1 +(1 · 22 + 0 · 21 + 1) · 2−4
i=3
+(1 · 22 + 0 · 21 + 1) · 2−7
gdzie ( +(1 · 22 + 0 · 21 + 1) · 2−10 + . . .
3 dla i nieparzystych, =1 +5 · (2−4 + 2−7 + 2−10 + . . .).
di =
1 dla i parzystych.
Pozostaje obliczyć sumę szeregu geometrycznego o pierw-
Okazuje się, że obliczenie sumy tego szeregu można sprowa- szym wyrazie równym 2−4 i ilorazie 2−3 . Wynosi ona
dzić do obliczenia sumy szeregu geometrycznego. W tym
2−4 2−4 · 24 1 1
= = 4 = .
1−2 −3 (1 − 2 ) · 2
−3 4 2 −2 14
Zatem
1 19
(0, 1(101))2 = 1 + 5 · = .
14 14
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 3

1.1.4 Liczby niewymierne w dwójkowym w lewo i brakujące pozycje uzupełnić zerami:


systemie liczenia 3
1100, 1112 : 2 = 1, 1001112 ,
Fakt 2 Rozwinięcia liczb niewymiernych w dowolnym 1100, 1112 : 26 = 0, 0011001112 ,
systemie liczenia charakteryzują się tym, że są nieskoń- 11012 : 23 = 1, 1012 ,
czone i nieokresowe. 11012 : 25 = 0, 011012 .
Mając dane rozwinięcie liczby łatwo zatem stwierdzić, czy Mnożenie i dzielenie przez potęgi dwójki w systemie dwójko-
jest ona wymierna, czy niewymierna. wym odpowiada mnożeniu i dzieleniu przez potęgi dziesiątki
rozwinięcia w systemie dziesiętnym.
w dowolnym systemie liczenia
1.1.6 Wykonywanie działań arytmetycz-
liczb liczb nych w systemie dwójkowym sposo-
wymiernych niewymiernych bem pisemnym

nieskończone nieskończone Działania arytmetyczne w systemie dwójkowym sposobem


skończone pisemnym wykonuje się analogicznie jak w systemie dziesięt-
okresowe nieokresowe
nym.
Rozwinięcia dwójkowe liczb niewymiernych są nieskończone
i nieokresowe.
Dodawanie
Oznaczenia Jeśli n jest liczbą naturalną bądź zerem system dziesiętny: system dwójkowy:
oraz dn , dn−1 , . . . , d0 , d−1 , d−2 . . . oznaczają cyfry w sys- 1112
temie dwójkowym, przy czym dn = 6 0 gdy n > 0, to zapis 2 5 4 6, 8 1111111 1
1 1 0 0 1 0, 0 1
(dn dn−1 . . . d0 , d−1 d−2 . . .)2 oznacza liczbę 2 4 3 8, 9 5
+ 1 1 1 1 1 1, 1 1 1
+ 3 1 4 3, 6
1 1 1 0 0 1 0, 0 0 1
dn ·2n +dn−1 ·2n−1 +. . .+d0 ·20 +d−1 ·2−1 +d−2 ·2−2 +. . . , 8 1 2 9, 3 5
n Algorytm dodawania liczb sposobem pisemnym jest nastę-
którą zapisujemy też w postaci d i 2i lub
P
pujący.
i=−∞

P
d−i 2 .
−i 1. Podpisz liczby jedna pod drugą tak, aby jedności były
i=−n pod jednościami, rząd dwójek pod rzędem dwójek itd.,
oraz przecinek pod przecinkiem.
Szereg nieskończony występujący powyżej jest zawsze 2. Zacznij od najniższego rzędu. Dodaj odpowiednie cy-
zbieżny. Rozwinięcia dwójkowego liczby niewymiernej nie da fry. Jeśli wynik wynosi 0 lub 1, to napisz go w tym
się zapisać w pamięci żadnego komputera, gdyż wymagałoby rzędzie (pod kreską). Gdy wynik jest większy, to jedno-
to nieskończenie wielkiej pamięci. Obliczenia komputerowe ści wyniku zapisz w tym rzędzie pod kreską i dokonaj
posługują się przybliżeniami liczb niewymiernych. przeniesienia do rzędu wyższego. Kontynuuj takie postę-
powanie z kolejnymi rzędami. Nie zapominaj dodawać
przeniesień.
1.1.5 Mnożenie i dzielenie przez potęgi
dwójki liczb w systemie dwójkowym
Odejmowanie
Mnożenie i dzielenie liczb w systemie dwójkowym przez system dziesiętny: system dwójkowy:
naturalne potęgi dwójki polega na odpowiednim przesunięciu 3 9 13 16 7 10 021201 202
przecinka. Dokładniej, aby pomnożyć liczbę w systemie 4 0 4 6, 8 1 1 0 0 1 0, 0 1
dwójkowym przez 2p , gdzie p jest liczbą naturalną, należy − 3 1 4 8, 6 5 − 1 1 1 0 1, 1 0 1
przesunąć przecinek o p pozycji w prawo, a brakujące pozycje 8 9 8, 1 5 1 0 1 0 0, 1 0 1
uzupełnić zerami. Przykładowo Algorytm odejmowania liczb sposobem pisemnym jest na-
stępujący.
1100, 1112 · 2 = 110011, 12 ,
2

1100, 1112 · 25 = 1100111002 , 1. Podpisz liczby jedna pod drugą tak, aby jedności były
pod jednościami, rząd dwójek pod rzędem dwójek itd.,
11012 · 23 = 11010002 .
oraz przecinek pod przecinkiem.
Aby podzielić liczbę w systemie dwójkowym przez 2p , gdzie p 2. Zacznij od cyfr najniższego rzędu. Jeśli to możliwe,
jest liczbą naturalną, należy przesunąć przecinek o p pozycji odejmij od cyfry górnej liczby cyfrę dolnej liczby. Jeśli
nie jest to możliwe, to znajdź najbliższy rząd (wśród
wyższych), w którym liczba górna ma cyfrę 1. Zamień
tę cyfrę na zero (napisz to nad rzędem), a następnie
przesuwaj się w prawo: nad każdym kolejnym rzędem
4 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

postaw 1, za wyjątkiem ostatniego, gdzie postaw 102 = system dziesiętny: system dwójkowy:
2. Odejmij od dopisanej 102 = 2 cyfrę dolnej liczby. 1, 9 5 1 1 0, 1 1 1
4 0, 9 7 1 : 2 1 1 0 0 0, 1 0 1 : 1 1
3. Kontynuuj takie postępowanie z kolejnymi rzędami. Je- 21 11
śli są napisane jakieś liczby nad rzędami, to bierz je pod 19 9 == 1 0 1
uwagę, a nie cyfry górnej liczby. 18 9 11
=1 0 7 = 1 0 0

Mnożenie 1 05 11
== 2 1 == 1 1
system dziesiętny: system dwójkowy:
21 11
3 84 00 1 11 00
== ==
× 5,6 ×1 0,1
1 11 1 Algorytm dzielenia liczb sposobem pisemnym w systemie
23 04 1 11 dwójkowym jest następujący.
+1 92 0 +1 11
2 1 5 0 4 0, 0 1 0 0 0 1 1 0, 0 1. Napisz liczby obok siebie, nad pierwszą postaw kreskę.
Algorytm mnożenia liczb sposobem pisemnym w systemie 2. Dzielenie wykonuj od lewej strony. Weź minimalną ilość
dwójkowym jest następujący. cyfr dzielnej, aby powstała liczba większa od dzielnika.
Nad ostatnią z nich napisz 1. Podpisz dzielnik pod tymi
1. Podpisz obie liczby tak, by ostanie niezerowe cyfry obu cyframi i wykonaj odejmowanie.
liczb znalazły się pod sobą.
3. Dopisz do różnicy minimalną cyfr dzielnej, aby powstała
2. Przepisz pod kreską górną liczbę (z pominięciem prze- liczba większa od dzielnika. Nad dopisanymi cyframi na-
cinka i końcowych zer) tyle razy, ile jest jedynek w pisz 0, za wyjątkiem ostatniej — tam napisz 1. Podpisz
dolnej liczbie. Przepisywanie zaczynaj z prawej strony dzielnik pod tymi cyframi i wykonaj odejmowanie.
i dokładnie od rzędu, w którym stoi kolejna jedynka
dolnej liczby. Na koniec narysuj dolną kreskę. 4. Kontynuuj postępowanie z poprzedniego punktu tak
długo, aż wyczerpiesz wszystkie cyfry dzielnej. Pamię-
3. Dodaj liczby znajdujące się między kreskami, wynik taj, aby napisać przecinek nad przecinkiem dzielnej.
zapisz pod dolną kreską. Jeśli cyfry dzielnej się wyczerpią, a ostatnio obliczona
4. Do wyniku dopisz z prawej strony tyle zer, ile było różnica nie jest zerem, to dopisuj zera zamiast cyfr dziel-
łącznie końcowych zer w obu liczbach. nej (pamiętaj o postawieniu wcześniej przecinka, o ile
się jeszcze nie pojawił).
5. Ustal pozycję przecinka. Odlicz tyle miejsc od pra-
wej strony wyniku, ile wynosi łączna ilość miejsc po Opisane postępowanie wcale nie musi w skończonej liczbie
przecinku obu mnożonych liczb. kroków dać ostatniej różnicy równej 0. Dzieje się tak, gdy
wynik ma okresowe rozwinięcie dwójkowe. Wtedy należy
zauważyć, które cyfry się powtarzają i zakończyć zaznaczając
Dzielenie Przez przystąpienia do dzielenia należy obie w wyniku okres.
liczby pomnożyć przez tą samą i najmniejszą
• potęgę dziesiątki (w systemie dwójkowym) lub
1.1.7 Zamiana liczby całkowitej zapisanej
• potęgę dwójki (w systemie dwójkowym) w systemie dziesiętnym na system
tak, aby dzielnik był liczbą całkowitą. Jeśli zaś dzielnik dwójkowy
kończy się zerami, to można obie liczby podzielić przez tą
samą potęgę odpowiednio dziesiątki lub dwójki tak, aby tych Poniżej przedstawię trzy sposoby znalezienia rozwinięcia
zer nie było, np.: dwójkowego liczby całkowitej. Każdy z nich jest skuteczny,
ale nie w każdej sytuacji jednakowo wygodny.
40, 971 : 0, 21 = 40, 971 : 21,
Sposób
4097, 1 : 2100 = 40, 971 : 21,
10, 001012 : 0, 112 = 1000, 1012 : 112 ,
100010, 12 : 11002 = 1000, 1012 : 112 .
1. 2.
Dopiero teraz wykonujemy dzielenie. wygodny wygodny dla
dla liczb liczb, które 3.
mniejszych są niewiele najbardziej
niż znane mniejsze „mechaniczny”
na pamięć od pewnej
potęgi dwójki potęgi dwójki

Sposób 1
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 5

1. Przedstaw liczbę w postaci sumy potęg dwójki jak po- 90 0


niżej. 45 1
22 0
• Znajdź największą potęgę dwójki nie przekracza- 11 1
jącą danej liczby, np. dla liczby 90 jest to 64 = 26 . 5 1
• Przedstaw daną liczbę jako sumę znalezionej potęgi 2 0
i dopełnienia, np. 90 = 26 + 26. 1 1
0
• Powtarzaj powyższe dwa punkty dla dopełnień
tak długo, aż dopełnienie będzie równe 0, tego Zatem 90 = 10110102 .
dopełnienia nie pisz, np.

90 = 26 + 26 1.1.8 Zamiana liczby wymiernej zapisanej


= 26 + 24 + 10 w systemie dziesiętnym na system
= 26 + 2 4 + 2 3 + 2 1 . dwójkowy

Algorytm zamiany sprowadza się do wykonania dzielenia


2. Napisz kolejno od lewej strony wagi kończąc na naj- pisemnego.
większej znalezionej potędze dwójki. Pod wagami, które
występują w rozkładzie liczby na sumę potęg dwójki 1. Przedstaw liczbę wymierną w postaci nieskracalnego
napisz 1, pod pozostałymi napisz 0. ułamka zwykłego, np.
37
26 25 24 23 22 21 20 1, 85 = .
1011010 20

Jest to wynik: 2. Licznik i mianownik powstałego ułamka przedstaw w


90 = 10110102 . systemie dwójkowym:
37 1001012
= .
Sposób 2 Jeśli liczba jest bliska pewnej potędze dwójki, 20 101002
ale nieznacznie mniejsza od niej, wygodnie jest postąpić
inaczej. Przedstawimy to na poniższym przykładzie. 3. Wykonaj dzielenie licznika przez mianownik sposobem
pisemnym.
Przypuśćmy, że chcemy zamienić na system dwójkowy liczbę
1021. Jest ona nieco mniejsza niż 210 = 1024, dokładniej 1001012 : 101002 = 1001, 012 : 1012 ,

1021 = 1024 − 3 = 210 − (21 + 22 ). 1, 1 1 0(1 1 0 0)


1 0 0 1, 0 1 : 1 0 1
Zapiszmy odjemną i odjemnik w systemie dwójkowym:
101
= 1 0 0 0
1021 = 100000000002 − 112
101
i wykonajmy odejmowanie sposobem pisemnym: == 1 1 1
101
01111111112 = 1 0 0 0
10000000000
10 1
− 11
== 1 10
1111111101
1 01
Stąd = =10 0

1021 = 11111111012 . Otrzymujemy wynik


1, 85 = (1, 110(1100))2 .
Sposób 3
Często wygodnie jest przedstawić liczbę wymierną w
1. Podziel daną liczbę przez 2. Wynik dzielenia zapisz pod postaci liczby mieszanej i osobno zamieniać części cał-
liczbą, a resztę z dzielenia po prawej stronie (oddziel kowitą i ułamkową.
kreską).
2. Postępuj tak dalej z wynikami dzielenia, aż wynik będzie
równy 0. 1.1.9 Postać wykładnicza w systemie dwój-
kowym
3. Reszty z dzielenia czytane od dołu do góry dają rozwi-
nięcie liczby w systemie dwójkowym (początkowych zer Przypomnijmy najpierw czym jest postać wykładnicza w sys-
nie należy pisać). temie dziesiętnym i dlaczego jest używana. Gdy posługujemy
się bardzo dużymi liczbami albo bliskimi zeru, np.
0, 00000000000000000000035
6 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

lub 2. Co oznacza zapis (dn dn−1 . . . d0 , d−1 d−2 . . . d−k )2 ? Po-


35000000000000000000000, daj odpowiednie założenia. Odpowiedź sformułuj na
dwa sposoby: stosując notację z wielokropkiem i w
to „tradycyjny” zapis nie jest wygodny. Patrząc na przy-
postaci sumy uogólnionej.
kładowe liczby nie można od razu stwierdzić ich wielkości —
trzeba policzyć zera (w obu przykładach jest ich 21). Dlatego 3. Co oznacza zapis (dn dn−1 . . . d0 , d−1 d−2 . . .)2 ? Podaj
używa się tzw. postaci wykładniczej: odpowiednie założenia. Odpowiedź sformułuj na dwa
sposoby: stosując notację z wielokropkiem i w postaci
0, 00000000000000000000035 = 3, 5 · 10−22 , sumy uogólnionej.
35000000000000000000000 = 3, 5 · 1022 .
4. Czym charakteryzują się rozwinięcia liczb wymiernych
Do jej zapisu wykorzystujemy odpowiednią potęgę liczby w dowolnym systemie liczenia, a czym niewymiernych?
10 tak, by przecinek stał za pierwszą niezerową cyfrą liczby 5. Podaj definicję postaci wykładniczej w systemie dwój-
licząc od lewej strony. kowym.
Definicja 1 Postać wykładnicza liczby niezerowej x to
jej zapis w postaci iloczynu odpowiedniej potęgi liczby 10
i liczby powstałej ze wszystkich cyfr liczby x przez przesu- 1.1.11 Ćwiczenia sprawdzające zrozumie-
nięcie przecinka tak, by stał za pierwszą niezerową cyfrą nie tematu
liczby licząc od lewej strony. Jest to zatem przedstawienie
x w postaci Zadanie 1 Zapisz poniższe liczby w systemie dziesięt-
x = s · a · 10n , nym. Wynik przedstaw w postaci liczby całkowitej,
gdzie a jest liczbą z przedziału [1, 10), a n liczbą całkowitą, ułamka niewłaściwego lub liczby mieszanej.
zaś s ∈ {−1, 1} oznacza znak liczby. 1. 101012 ,
2. −10000002 ,
W analogiczny sposób definiuje się postać wykładniczą liczby
w systemie dwójkowym. Należy jedynie pamiętać, że przesu- 3. 111, 0112 ,
waniu przecinka odpowiada tu mnożenie przez potęgi dwójki.
4. −0, 000012 .
Definicja 2 Postać wykładnicza w systemie dwójkowym
liczby niezerowej x to jej zapis w postaci iloczynu odpo-
wiedniej potęgi liczby 2 i liczby powstałej ze wszystkich Zadanie 2 Zapisz poniższe liczby w postaci rozwinięcia
cyfr liczby x przez przesunięcie przecinka tak, by stał w systemie dwójkowym (bez użycia potęg).
za pierwszą niezerową cyfrą liczby licząc od lewej strony. 1. 1100112 · 23 ,
Jest to zatem przedstawienie x w postaci
2. 1100112 · 2−7 ,
x = s · a · 2n ,
3. −11, 00112 · 22 · 2,
gdzie a jest liczbą z przedziału [1, 2), a n liczbą całkowitą, 4. 11001, 12 · 43 .
zaś s ∈ {−1, 1} oznacza znak liczby. Zarówno a, jak i n
są zapisane w systemie dwójkowym.
Zadanie 3 Wykonaj poniższe działania sposobem pi-
Zazwyczaj znak liczby zapisujemy tradycyjnie, a nie poprzez semnym w systemie dwójkowym. Wynik zapisz w syste-
mnożenie przez 1 lub −1. Poniższe liczby zostały zapisane mie dwójkowym.
w postaci wykładniczej w systemie dwójkowym 1. 11, 01112 + 1, 00111112 ,
1 2. 1, 00111002 − 100, 11002 ,
−3 = −1, 12 · 21 , = 1 · 2−112 .
8
3. 11, 0112 · 1001001002 ,
Zwróćmy uwagę, że liczba zero nie ma postaci wykładniczej
w obu systemach liczenia. 4. 11010010002 : 111002 ,

Na liczbach zapisanych w postaci wykładniczej, można w 5. 0, 012 : 10, 102 .


zwykły sposób wykonywać działania arytmetyczne. Trzeba
jedynie zachowywać reguły arytmetyki. Zwykle wymagane
jest, by wynik końcowy był też zapisany w postaci wykład- Zadanie 4 Zapisz liczby 77 i 777 w systemie dwójko-
niczej, więc jest to dodatkowy krok do wykonania. wym. Zastosuj sposób 1 (przedstawienie liczby w postaci
sumy potęg dwójki).

1.1.10 Pytania powtórzeniowe


Zadanie 5 Zapisz liczby 1020 i 506 w systemie dwój-
1. Co oznacza zapis (dn dn−1 . . . d0 )2 ? Podaj odpowied- kowym. Zastosuj sposób 2 (przedstawienie liczby w
nie założenia. Odpowiedź sformułuj na dwa sposoby: postaci różnicy potęgi dwójki i liczby całkowitej).
stosując notację z wielokropkiem i w postaci sumy uogól-
nionej.
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 7

Zadanie 6 Zapisz liczby 88 i 888 w systemie dwójko- Zadanie 14 Dane są dwie liczby zapisane w postaci
wym. Zastosuj sposób 3 (obliczania reszt z dzielenia). wykładniczej w systemie dwójkowym

x = a · 2n ,
Zadanie 7 Zapisz liczby 1, 1875 i 0, 2 w systemie dwój- y = b · 2m ,
kowym.
gdzie a, b ∈ [1, 2), m, n ∈ Z. Zapisz w postaci wykładni-
czej w systemie dwójkowym liczbę x : y.
Zadanie 8 Zapisz poniższe liczby w notacji wykładni-
czej w systemie dwójkowym.
Odpowiedzi
1. 1101, 11012 ,
2. −0, 000112 , Zadanie 1 1. 21, 2. −64, 3. 7 38 , 4. − 32 1
Zadanie 2
1. 1100110002 , 2. 0, 01100112 , 3. −11001, 12 , 4. 110011000002
3. 0, 01 · 23 ,
Zadanie 3 1. 100, 10101112 , 2. −11, 100012 , 3. 1111011001, 12 ,
4. 110011 · 4−2 4. 111102 , 5. (0, 0(0011))2 Zadanie 4 1. 10011012 ,
2. 11000010012 Zadanie 5 1. 1020 = 1024 − 4 = 11111111002 ,
2. 506 = 512 − 6 = 1111110102 Zadanie 6 1. 10110002 ,
Zadanie 9 Wykonaj poniższe działania. Wynik zapisz 2. 11011110002 Zadanie 7 1. 1, 00112 , 2. (0, (0011))2
w postaci wykładniczej w systemie dwójkowym. Zadanie 8 1. 1, 10111012 · 2112 , 2. 1, 1 · 2−1002 , 3. 1 · 21 ,
1. 1, 012 · 2102 + 1, 0012 · 2−1 , 4. 1, 10011 · 21 Zadanie 9 1. 1, 0110012 · 2102 , 2. 1, 0112 · 2102 ,
3. −1, 0001 · 21 , 4. 1, 011012 · 21 , 5. 1, 01012 · 20 ,
2. 1, 12 · 21 + 1, 012 · 2−1 , 6. (1, (000111))2 · 2112 Zadanie 11 1. 10 12 , 2. 1 23 Zadanie 12
3. 1, 012 · 2−102 − 1, 001112 · 21 ,

(ab) · 2n+m gdy ab ∈ [1, 2),
Nie. Zadanie 13 ab n+m+1 Zadanie 14
·2 gdy ab ∈ [2, 4).
4. [1, 012 · 2102 ] · [1, 0012 · 2−1 ], a 2

b
· 2n−m gdy a
b
∈ [1, 2),
5. [1, 12 · 20 ] · [1, 112 · 2−1 ], 2a
· 2n−m−1 gdy a
∈ [ 21 , 1).
b b
6. [1, 012 · 2102 ] : [1, 0012 · 2−1 ]

1.1.12 Zadania

Zadanie 10 Udowodnij, że 0, (9) = 1 i (0, (1))2 = 1.

Zadanie 11 Zapisz liczby (1010, 0(1))2 i (1, (10))2 w


systemie dziesiętnym. Wynik przedstaw w postaci liczby
całkowitej, ułamka niewłaściwego lub liczby mieszanej.

Zadanie 12 Niech

x = a · 2n ,
y = b · 2n ,

gdzie a, b ∈ [1, 2), n ∈ Z. Czy liczba x + y zapisana jako


+1 · (a + b) · 2n jest w postaci wykładniczej w systemie
dwójkowym?

Zadanie 13 Dane są dwie liczby zapisane w postaci


wykładniczej w systemie dwójkowym

x = a · 2n ,
y = b · 2m ,

gdzie a, b ∈ [1, 2), m, n ∈ Z. Zapisz w postaci wykładni-


czej w systemie dwójkowym liczbę x · y.
8 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

1.2 Liczby zmiennopozycyjne zmiennopozycyjne, uzyskujemy wyniki często nie będące licz-
bami zmiennopozycyjnymi. Następuje wówczas zaokrąglenie
do liczby zmiennopozycyjnej lub, gdy moduł wyniku jest
Zbiory liczb całkowitych, wymiernych i rzeczywistych są zbyt duży, przypisywany jest symbol +∞ lub −∞.
nieskończone. Ponieważ komputery mają skończoną pamięć,
liczba liczba wynik nie musi być
to jedynie nieliczne spośród tych liczb mogą być używane w zmiennopozycyjna zmiennopozycyjna liczbą zmiennopozycyjną
obliczeniach komputerowych. W przypadku liczb rzeczywi- R
@
PP
q
P
stych i wymiernych sytuacja przedstawia się dużo trudniej
-
0 x y x+y
niż w przypadku liczb całkowitych. Powodem jest poniższa
własność. Nie zawsze wynik działania arytmetycznego jest dobrze okre-
ślony w zbiorze liczb rzeczywistych. Przykładem może być
Fakt 3 Niech a i b będą dowolnymi liczbami spełniają-
próba obliczenia pierwiastka kwadratowego z liczby ujemnej.
cymi warunek a < b.
Twórcy standardu arytmetyki zmiennopozycyjnej przyjęli
1. W przedziale (a, b) znajduje się skończenie wiele liczb zasadę, że każde działanie musi mieć wynik, dlatego wpro-
całkowitych. wadzono specjalną wartość oznaczaną przez NaN, która jest
zwracana w takich wypadkach.
2. W przedziale (a, b) znajduje się nieskończenie wiele
liczb wymiernych i nieskończenie wiele liczb niewy- jest liczbą
ta liczba
miernych. zmiennopozycyjną
Dokładniej: liczb wymiernych jest przeliczalnie wiele,
a niewymiernych nieprzeliczalnie wiele.
bliski liczbie zaokrąglenie
zmiennopozycyjnej do tej liczby
skończenie wiele liczb całkowitych
wynik
e e działania
?
-
a 6 b o bardzo
+∞ lub −∞
dużym module
nieskończenie wiele liczb wymiernych i niewymiernych

W przypadku liczb całkowitych komputery udostępniają


wszystkie wartości z pewnego przedziału. W przypadku jest źle
NaN
liczb rzeczywistych komputer zapamiętuje tylko wybrane określony
liczby z pewnego przedziału. Operuje on jedynie skończo-
nym podzbiorem liczb wymiernych nazywanym zbiorem liczb Osoby pierwszy raz spotykające się z błędami zaokrągleń
zmiennopozycyjnych (albo zmiennoprzecinkowych). mogą mieć błędne wrażenie, że błędy te choć istnieją, to
są na tyle małe, że nie dotyczą „ładnych” liczb typu 0.1.
' R $ zbiór nieskończony Poniższe programy pokazują, że tak nie jest. Uruchomiono
' Q $

 (nieprzeliczalny) je przy użyciu 64 bitowych liczb zmiennopozycyjnych.


liczby zmiennopozycyjne Przykład Program
zbiór nieskończony



(przeliczalny) #include<stdio.h>
HH
Y
& %
HH
HH main() {
& % zbiór skończony double wynik = (4.0/3.0 - 1.0)*3.0 - 1.0;
Skutkiem takiego modelu są błędy reprezentacji liczb. Dla printf("%.17lg\n", wynik);
większości liczb z pewnego zakresu jest zagwarantowany nie- }
wielki błąd względny — typowe jego wielkości to 2−24 czy
2−53 . Pewne problemy stwarza otoczenie zera, gdzie błąd powinien wypisać 0. Zamiast tego na ekranie pojawia się
względny może być dowolnie duży — mówimy wtedy o zjawi- liczba -2.2204460492503131e-16. 
sku niedomiaru. Również próba reprezentacji liczby o zbyt Przykład Obliczony licznik i wartość ułamka w poniższym
dużym module prowadzi do kłopotów, zwykle generowana programie
jest informacja o nadmiarze i przypisana zostaje specjalna
wartość oznaczająca nieskończoność. #include<stdio.h>

nadmiar może wystąpić niedomiar nadmiar main() {


?  ?  ? double licznik = 3.0*0.1 - 0.3;
   
-
double mianownik = 2.0*0.1 - 0.3 + 0.1;
@
I 0  printf("%.17lg\n", licznik / mianownik);
@
@ }
gwarantowany mały błąd względny

Wykonując działania arytmetyczne, których argumenty są powinny wynosić 0. Jednak tak nie jest. Zostaje wypisana
liczba 2. 
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 9

Przykład Program Configurations z wersji Debug na Release, to generowany


przez kompilator kod podlega automatycznej optymaliza-
#include<stdio.h>
cji. Można ustawiać różne opcje tej optymalizacji. Gdy
dla projektu dokonamy zmian jego właściwości (Properties)
main() {
rozwijając listę Configuration Properties → C/C++ →
printf("Warunek␣0.7*4.0==0.4*7.0␣jest␣");
Code Generation i zmieniając opcję Floating Point Model
if (0.7*4.0 == 0.4*7.0)
na Fast, to program wypisze p = 1075. 
printf("prawdziwy.\n");
else
W dalszej części opiszę obecnie stosowane arytmetyki zmien-
printf("falszywy.\n");
nopozycyjne oraz ich własności.
}

wypisuje kumunikat Warunek 0.7*4.0==0.4*7.0 jest


1.2.1 Standardy IEEE 754 i 854
falszywy. 

Przykład Poniższa pętla Przez długi czas, bo aż do początku lat osiemdziesiątych


ubiegłego wieku, komputery realizowały arytmetyki zmien-
#include<stdio.h>
nopozycyjne istotnie różniące się między sobą. Nie zawsze
#include<math.h>
używano systemu dwójkowego.1
main() { Nawet jeśli podstawa liczenia była ta sama, to posługiwano
double A = pow(2.0, 54.0); się innymi sposobami kodowania (czyli zapisu liczby jako
double i; ciągu bitów). Ten sam program uruchamiany na różnych
for (i = A; i <= A + 1; i++) { komputerach mógł dawać odmienne wyniki. Niektóre aryt-
printf("%.17lf\n", i); metyki wymagały „sztuczek”, np. używania wyrażeń typu
} (x+x)-x, by wyniki były sensowne.
}
W drugiej połowie lat 70–tych rozpoczęto rozmowy zmierza-
jest nieskończona. jące do ujednolicenia sposobu przechowywania liczb zmien-

nopozycyjnych. Brali w nich udział m.in. przedstawiciele
Przykład Bardzo podobna do poprzedniej pętla firm Intel, DEC, Motorola, Zilog, National Semiconductors,
#include<stdio.h> IBM. Dużą rolę odegrał William Kahan2 (reprezentował on
#include<math.h> Intel3 ). Po 7 latach prac, w 1985 r. ogłoszono standard
IEEE 754-1985.4 Był on dość trudny do realizacji oraz, tak
main() { jak wszystkie standardy IEEE, nieobowiązkowy. Mimo to
double A = pow(2.0, 54.0); został od razu (nawet przed rokiem 1984) zaimplementowany
double i; przez główne firmy.
for (i = A; i < A + 1; i++) { W 1987 roku ukazał się standard IEEE 854-1987. Dołą-
printf("%.17lf\n", i); czono tu arytmetykę dziesiętną, ale zrezygnowano z opisu
} kodowania. Trzymano się zasady, że każda arytmetyka speł-
} niająca standard poprzedni wypełnia i ten, ale niekoniecznie
na odwrót.
nie wykona się ani razu. Warunek okazuje się być fałszywy
przy wejściu do pętli. Oba standardy tworzone były z myślą nie tylko o producen-

tach sprzętu, ale również twórcach języków programowania
Przykład Sytuacja może być bardziej subtelna. W poniż-
1 Na początku lat sześćdziesiątych ubiegłego wieku na Uniwersy-
szym programie pętla wydaje się być nieskończona, ale tak
tecie Moskiewskim skonstruowano komputer (nazwany Setun), któ-
nie jest. rego najmniejsza jednostka pamięci była trójstanowa („trit” za-
miast bitu). Wszystkie obliczenia przeprowadzano w systemie trój-
#include<stdio.h> kowym. Model wszedł na krótko do produkcji: do 1965 roku wy-
konano 50 egzemplarzy, po czym zrezygnowano z niego. Badania
int main() { uniwersyteckie prowadzono dalej do lat siedemdziesiątych. Histo-
double x = 1.0; ria tego komputera jest opisana przez jego współtwórców na stronie
www.computer-museum.ru/english/setun.htm.
int p = 0; 2 Za swój wkład w tworzenie standardu został w 1989 roku uhonoro-
while (x + 1.0 != 1.0) wany nagrodą Turinga.
3 Intel w 1976 r. rozpoczął projekt nowego koprocesora dla mikropro-
{
x /= 2; cesorów i8086/8 i i432. Firmie tej zależało na ustanowieniu standardu,
zanim prace zostaną ukończone. Pierwszy szkic standardu w dużej mie-
p++; rze korzystał z ustaleń tego projektu. Oczywiście nie zdradzano, w jaki
} sposób zbudować koprocesor, a jedynie jak wygląda jego arytmetyka i
printf("p␣=␣%d\n", p); dlaczego (https://people.eecs.berkeley.edu/~wkahan/ieee754status/
} 754story.html).
4 IEEE jest skrótem od The Institute of Electrical and Electronics

Engineeres, USA
Co dziwniejsze program daje różne wyniki w zależności od
opcji kompilacji. Przy typowych ustawieniach dla Visual Stu-
dio 2017 program wypisuje p = 53. Jeśli zmienimy Solution
10 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

i kompilatorów. Jednak w 1997 roku William Kahan pisał o 4. wykładnik jest liczbą całkowitą, również zapisaną w
błędnym kole, w które wpadł standard IEEE 754.5 systemie wyznaczonym przez bazę.
wiele cech standardu nie Rozwinięcie zawiera wszystkie cyfry znaczące liczby x wzglę-
ma dostatecznego wsparcia dem ustalonej bazy, wykładnik zaś reguluje położenie prze-
ze strony języków progra- cinka. Następujące liczby są w powyższej postaci.
mowania i kompilatorów
+1 · 1, 5678231 · 10−2 ,
−1 · 1, 1010012 · 2(11)2 ,
cechy te są niemal nieznane +1 · 3, 333 . . . · 101 .
i rzadko zgłaszane jest
na nie zapotrzebowanie Pierwsza i ostatnia liczba zapisana jest w systemie dziesięt-
nym, środkowa w dwójkowym. Przypomnijmy, że zapis ten
nie jest jednoznaczny, na przykład

cech tych praktycz- +1 · 9, 999 . . . · 10−1 = +1 · 1 · 100 ,


nie nie da się użyć +1 · 1, 12 · 20 = +1 · (1, 0111 . . .)2 · 20 .

W sierpniu 2008 roku, po siedmiu latach pracy, ogłoszono


nowy standard: IEEE 754-2008. Jest on rozszerzeniem i uści- 1.2.3 Zbiór wartości zmiennopozycyjnych
śleniem poprzednich, m.in. włączono do niego arytmetykę
dziesiętną wraz z opisem kodowania. We wstępie pojawia Standard IEEE 754-2008 definiuje zbiór wartości zmienno-
się życzenie, by stał się on podstawą dyskusji między środo- pozycyjnych posługując się czterema parametrami:
wiskiem związanym z analizą numeryczną, a projektantami • b — baza, może ona wynosić 2 albo 10,
języków programowania. W 2018 roku powinna powstać
nowa wersja standardu (każdy standard co 10 lat jest prze- • p — liczba naturalna oznaczająca ilość cyfr rozwinięcia,
glądany pod kątem koniecznych zmian), prawdopodobnie • emax — liczba naturalna oznaczająca maksymalny wy-
nie będzie się istotnie różniła od poprzedniej. kładnik,
• emin = 1 − emax — liczba naturalna oznaczająca mini-
1.2.2 Reprezentacja liczb rzeczywistych malny wykładnik.
Czwarty parametr nie jest konieczny, bo da się go obliczyć
Notacja matematyczna dopuszcza wiele różnych sposobów
znając trzeci, ale używamy go da wygody. Standard podaje
zapisu liczb rzeczywistych, nawet jeśli ograniczymy się do
kilkanaście zestawów poprawnych parametrów (zamieszczam
jednego systemu liczenia. Obok ułamków zwykłych posłu-
je dalej). Najmniejsza używana wartość p wynosi 7, a emax
gujemy się rozwinięciami (−34, 98696...), pozycję przecinka
jest nie mniejszy niż 15.
można regulować mnożnikiem będącym całkowitą potęgą
podstawy systemu liczenia (7, 765 · 10−2 ), niektóre liczby Definicja 3 Załóżmy, że dane są poprawne parametry
mają swoje przedstawienie symboliczne (e, π), dozwolona b, p, emax i emin. Elementami zbioru wartości zmienno-
jest notacja zawierająca
√ pierwiastkowanie lub inne działania pozycyjnych są:
arytmetyczne ( 2+1). Taka różnorodność jest przeszkodą w
1. liczby zmiennopozycyjne, czyli liczby postaci
przypadku komputerów — tam konkretnemu ciągowi bitów
ma odpowiadać dokładnie jedna liczba i dwa różne ciągi (−1)s · (d0 , d1 d2 . . . dp−1 )b · bE ,
bitów powinny reprezentować dwie różne wartości.
Wśród wielu zapisów podstawą modelu komputerowego stała gdzie
się postać wykładnicza. Przypomnijmy, że polega ona na (a) s wynosi 0 lub 1,
przedstawieniu dowolnej liczby rzeczywistej x 6= 0 w postaci
(b) di dla i = 0, 1, . . . , p − 1 jest dowolną cyfrą w
x = znak · rozwinięcie · bazawykładnik , systemie liczenia zdefiniowanym przez bazę,
(c) E ∈ {emin, emin + 1, . . . , emax},
gdzie
2. −∞ i +∞,
1. znak może przyjmować wartości +1 lub −1,
3. symbole oznaczane przez NaN (od ang. Not a Num-
2. baza to ustalona liczba naturalna większa od 1 wyzna-
ber), służące do reprezentacji wyników niepopraw-
czająca system liczenia (np. 2 dla dwójkowego, 10 dla √
nych działań (np. −1).
dziesiętnego),
3. rozwinięcie jest liczbą postaci d0 , d1 d2 d3 . . . zapisaną w Zwróćmy uwagę, że postać liczby zmiennopozycyjnej umiesz-
systemie wyznaczonym przez bazę, przy czym zakła- czona w punkcie pierwszym definicji nie jest tożsama z po-
damy, że cyfra d0 6= 0, stacią wykładniczą liczby rzeczywistej. Po pierwsze brakuje
5 https://people.eecs.berkeley.edu/~wkahan/ieee754status/ założenia, że d0 6= 0. Po drugie, „sztywno” została ustalona
754story.html liczba miejsc po przecinku.
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 11

Wśród liczb zmiennopozycyjnych wyróżniono liczby nor- powtarzają się. Nie jest więc to zapis jednoznaczny. Aby
malne i podnormalne. Liczb normalnych jest znacznie więcej uzyskać jednoznaczność, trzeba dodać założenia i dlatego
niż podnormalnych. Te drugie skupione są wokół zera. Po- wprowadzam pojęcie postaci standardowej.
dział na dwie grupy jest uzasadniony różnym poziomem
Definicja 5 Postacią standardową liczby zmiennopozy-
błędów powstających na skutek zaokrągleń.
cyjnej x należącej do arytmetyki o parametrach b, p,
Definicja 4 Liczba normalna jest to każda liczba zmien- emax, emin nazywamy jej zapis
nopozycyjna, której moduł jest większy bądź równy bemin .
x = (−1)s · (d0 , d1 . . . dp−1 )b · bE ,
Liczba podnormalna jest to każda niezerowa liczba zmien-
nopozycyjna, której moduł jest mniejszy niż bemin . który spełnia warunki:
1. jeśli x = +0 lub x = −0, to
Położenie obu grup na osi liczbowej przedstawia poniższy
rysunek. E = emin,
d0 = d1 = . . . = dp−1 = 0,
nadmiar liczby podnormalne nadmiar

 
b 

bBN  
B
?
b
? 2. jeśli x jest liczbą podnormalną, to
  
  
-
@
I 0 bemin 
@ E = emin,
@
liczby normalne d0 = 0,
∃i∈{1,2,...,p−1} di 6= 0,
Standard odróżnia +0 i −0, by móc sensownie przeprowadzać
działania rozumiane w sensie granic, np.
3. jeśli x jest liczbą normalną, to
1
= +0,
+∞ E ∈ {emin, emin + 1, . . . emax}
1 d0 6= 0.
= −∞.
−0
W większości przypadków „zwykłych” działań liczby +0 i We wszystkich przypadkach
−0 są utożsamiane. (
0 gdy x = +0 lub x > 0
Zbiór liczb zmiennopozycyjnych można przedstawić zatem s=
jako sumę trzech rozłącznych zbiorów: liczb normalnych, 1 gdy x = −0 lub x < 0.
podnormalnych oraz dwuelementowego {+0, −0}. Liczby
zmiennopozycyjne są liczbami wymiernymi.
Poniższy fakt i poprzednia definicja umożliwiają m. in.
' R $ policzenie ile jest wszystkich liczb zmiennopozycyjnych albo
łatwe ich wypisanie unikające powtórek.
liczby zmiennopozycyjne 
normalne podnormalne 0
Fakt 4 Każda liczba zmiennopozycyjna ma dokładnie
jedną postać standardową.
 
& %

1.2.5 Rozmieszczenie liczb zmiennopozy-


1.2.4 Postać standardowa liczby zmienno- cyjnych na osi liczbowej
pozycyjnej
Arytmetyka zmiennopozycyjna zgodna z opisywanym stan-
Przyjrzyjmy się definicji 3. Wynika z niej, że liczbą zmienno- dardem oferuje skończenie wiele liczb, które są symetrycznie
pozycyjną jest każda liczba, którą można zapisać w postaci położone względem zera. Narysujmy obecnie ich rozmiesz-
czenie na osi liczbowej. Ze względu na symetrię ograniczmy
(−1)s · (d0 , d1 d2 . . . dp−1 )b · bE , się jedynie do półosi dodatniej. Ponadto założymy, że b = 2.
W przypadku b = 10 należy postępować analogicznie.
gdzie s, di , E spełniają odpowiednie warunki. Niech b = 2,
p > 2, emax > 1. Rozważmy przykładowo dwie liczby: Rysując oś będziemy rozpatrywać tylko postacie standar-
dowe liczb zmiennopozycyjnych. W ten sposób, zgodnie z
x = (−1)0 · (1, |00 {z . . . 0})2 · 20 , poprzednim faktem, każdą liczbę rozpatrzymy tylko jeden
p−1 raz.
y = (−1)0 · (0, 1 |00 {z . . . 0})2 · 21 . Zajmijmy się najpierw liczbami normalnymi. W ich rozwinię-
p−2 ciach przecinek znajduje się tuż za pierwszą cyfrą znaczącą,
Obie są liczbami zmiennopozycyjnymi, bo spełniają warunki która w przypadku systemu dwójkowego wynosi 1. Po prze-
definicji. Co więcej, x = y. Wynika stąd, że wśród liczb cinku stoi p − 1 dowolnych cyfr i wszystkie je należy pisać,
postaci opisanej w punkcie pierwszym definicji 3 niektóre nawet stojące na końcu zera. Wykładnik jest liczbą ze zbioru
12 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

{emin, emin+1, . . . emax}, jest więc emax −emin+1 różnych • w przedziale [2k MIN, 2k+1 MIN) liczby normalne są
wykładników. rozmieszczone równoodlegle z krokiem 2k h, jest ich
2p−1 , wykładnik wynosi emin + k, przy czym k =
Najmniejszą dodatnią liczbą normalną jest 2emin . Oznaczmy
0, 1, . . . , (emax − emin).
ją przez MIN. Jej postacią standardową jest
Zwróćmy uwagę, że k numeruje wszystkie przedziały. Prze-
+1 · (1, 00 . . 000})2 · 2emin .
| . {z działów jest tyle, ile jest różnych wykładników odpowiadają-
p−1 cych liczbom normalnym. Wykładników jest emax −emin+1,
Poniżej przedstawiamy kolejne liczby normalne, bezpośred- stąd k = 0, 1, . . . , (emax − emin).
nio z nią sąsiadujące. Ich wykładnik w postaci standardowej Liczby normalne tworzą następującą siatkę.
jest równy emin:
h 2h 4h
(1, 00 . . . 000)2 · 2emin = MIN, r r r r r... r r r r r ... r r . .-
.
0 MIN 2MIN 4MIN
(1, 00 . . . 001)2 · 2emin = MIN +h,
(1, 00 . . . 010)2 · 2emin = MIN +2h, Największą wśród liczb normalnych jest ta, dla której cyfry
(1, 00 . . . 011)2 · 2 emin
= MIN +3h, di są jedynkami oraz E = emax. Oznaczmy ją przez MAX i
.. policzmy jej wartość
.
. . . 1})2 · 2emax .
MAX = (1, |11 {z
(1, 11 . . . 110)2 · 2emin , p−1
(1, 11 . . . 111)2 · 2emin .
Gdybyśmy do liczby
Nietrudno stwierdzić, że liczby te są rozmieszczone równo-
(1, 11 . . . 1})2
odlegle z krokiem | {z
p−1

h = (1, 00 . . . 001)2 · 2 emin


− (1, 00 . . . 000)2 · 2
emin
dodali
= [(1, 00 . . . 001)2 − (1.00 . . . 000)2 ] · 2emin (0, 00 . . . 0} 1)2 = 2−(p−1)
| {z
= (0, 00 . . . 001)2 · 2emin p−2

= 2 −(p−1)
·2
emin to otrzymalibyśmy
102 = 2.
= 2 −p+1
· MIN .
Stąd
Pozostając przy postaci standardowej następne liczby nor- (1, 11 . . . 1})2 = 2 − 2−(p−1)
malne muszą mieć większy wykładnik:
| {z
p−1

i
(1, 00 . . . 000)2 · 2emin+1 = 2 MIN,
MAX = (2 − 2−(p−1) ) · 2emax .
(1, 00 . . . 001)2 · 2emin+1 = 2 MIN +2h,
Zauważmy, że pierwszy czynnik należy do przedziału [1, 2),
(1, 00 . . . 010)2 · 2emin+1 = 2 MIN +4h, a drugi szybko rośnie wraz ze wzrostem parametru emax.
(1, 00 . . . 011)2 · 2emin+1 = 2 MIN +6h,
Zajmijmy się teraz liczbami podnormalnymi dodatnimi.
..
. Mają one postacie standardowe typu
(1, 11 . . . 110)2 · 2emin+1 , +1 · (0.d1 d2 . . . dp−1 )2 · 2emin ,
(1, 11 . . . 111)2 · 2emin+1
.
gdzie przynajmniej jedna cyfra po przecinku jest różna od 0.
Są one dwa razy większe od swych odpowiedników z pierwszej Poniżej przedstawiamy kolejne liczby podnormalne, zaczy-
grupy, krok też uległ podwojeniu. Zauważmy ponadto, że nając od najmniejszej:
ostatnia liczba z wykładnikiem emin i pierwsza z emin + 1
(0, 00 . . . 001)2 · 2emin = h,
są odległe o h:
(0, 00 . . . 010)2 · 2emin = 2h,
(1, 00 . . . 000)2 · 2 emin+1
− (1, 11 . . . 111)2 · 2emin
(0, 00 . . . 011)2 · 2emin = 3h,
= [(10)2 − (1, 11 . . . 111)2 ] · 2emin ..
.
= (0, 00 . . . 001)2 · 2 emin
= h.
(0, 11 . . . 110)2 · 2emin ,
Podsumowując: (0, 11 . . . 111)2 · 2emin .
• w przedziale [20 MIN, 21 MIN) liczby normalne są roz- Liczby te są rozmieszczone równoodlegle z krokiem h. Tyle
mieszczone równoodlegle z krokiem h, jest ich 2p−1 , też wynosi odległość między największą z nich a MIN oraz
wykładnik wynosi emin, między zerem a najmniejszą z nich. Cała siatka liczb zmien-
• w przedziale [2 MIN, 2 MIN) liczby normalne są roz- nopozycyjnych nieujemnych ma zatem poniższą postać.
1 2

mieszczone równoodlegle z krokiem 2h, jest ich 2p−1 ,


wykładnik wynosi emin + 1. h h 2h
r r r r ... r r r r r... r r r r r ... r
4h
r . .-
.
W ogólności 0 MIN 2MIN 4MIN
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 13

1.2.6 Formaty liczb zmiennopozycyjnych Parametry oraz sposób kodowania formatów nieprzenośnych
mogą zależeć od implementacji. Formaty te podzielono na
Standard wprowadza szereg formatów, czyli arytmetyk rozszerzone i rozszerzalne. Każdy format rozszerzony odpo-
zmiennopozycyjnych różniących się wartościami parametrów. wiada jednemu z podstawowych i musi mieć odpowiednio
Formaty mogą być implementowane sprzętowo lub progra- większe parametry. Standard nie wymaga obowiązkowej im-
mistycznie. Zostały one podzielone na przenośne i nieprze- plementacji tych formatów, ale zaleca, by języki programowa-
nośne, w każdej z grup wydzielono dwie podgrupy tak jak nia dostarczały format będący rozszerzeniem największego
na schemacie poniżej. z dostępnych formatów podstawowych dla każdego zaim-
plementowanego systemu liczenia. Tabela zawiera wymogi
podstawowe: dotyczące parametrów formatów rozszerzonych.
binary32,
binary64, Formaty rozszerzone
binary128, b p> emax >
decimal64, extended binary32 2 32 1023
decimal128 extended binary64 2 64 16383
przenośne
extended binary128 2 128 65535
dodatkowe: extended decimal64 10 22 6144
binary16, extended decimal128 10 40 24576
binary{k},
decimal32, Formaty rozszerzalne, to takie, w których wielkość parame-
decimal{k} trów p i emax może być kontrolowana przez użytkownika.
Znowu nie są one obowiązkowe, ale zalecane.
formaty
rozszerzone:
extended binary32, 1.2.7 Kodowanie binarnych formatów prze-
extended binary64, nośnych
extended binary128,
extended decimal64, Termin kodowanie oznacza tu sposób przedstawienia war-
extended decimal128 tości zmiennopozycyjnej jako ciągu bitów. W tym punkcie
nieprzenośne
zajmujemy się tylko binarnymi formatami przenośnymi. Ko-
dowanie dziesiętne jest trudniejsze.
Na zapis jednej wartości zmiennopozycyjnej przeznacza się
rozszerzalne
k = m + p bitów. Pierwszy bit jest bitem znaku, w na-
Występująca w nazwach arytmetyk liczba k musi być stępnych m bitach zapisany jest wykładnik, a ostatnie p − 1
większa niż 128 i być wielokrotnością liczby 32. bitów przeznaczonych jest na rozwinięcie.

Formaty przenośne mogą służyć do wymiany danych między


platformami. Opisano dla nich dokładnie sposób kodowania s cm−1 cm−2 . . . . . . c2 c1 c0 d1 d2 . . . . . . dp−2 dp−1
liczb w postaci ciągu bitów i są one w pełni identyfikowane 6 | {z } | {z }
bit bity wykładnika bity rozwinięcia
przez podanie łącznej liczby bitów przeznaczonych na zako- znaku
dowanie jednej wartości. Wyróżniono tu pięć podstawowych:
trzy binarne o długościach 32, 64, 128 bitów i dwa dzie- Liczba k, która oznacza liczbę bitów przeznaczonych na ko-
siętne 64- i 128-bitowe, oraz dodatkowe: 16-bitowy binarny, dowanie pojawia się zawsze w nazwie arytmetyki. Parametr
32-bitowy dziesiętny oraz k-bitowe binarne i dziesiętne dla p jest ustalony dla każdej arytmetyki. Liczbę m można więc
k > 128 będących wielokrotnością 32. Parametry zawarte obliczyć następująco
są w tabeli niżej. Standard wymaga, by zaimplementować
m = k − p.
przynajmniej jeden z formatów podstawowych. Dotyczy to
również języków programowania. Łatwo sprawdzić, że dla wszystkich formatów przenośnych
Formaty przenośne zachodzą równości:

b p emax emax = 2m−1 − 1,


binary16 2 11 15 emin = 1 − emax = 2 − 2m−1 .
binary32 2 24 127
binary64 2 53 1023
binary128 2 113 16383 Sposób interpretacji ciągu bitów nie jest określony jedną
binary{k} 2 k − [4 log2 k] + 13 2(k−p−1) − 1 regułą — wyróżniamy pięć przypadków. Kodowanie zostało
decimal32 10 7 96 tak opracowane, by na ustalonej liczbie bitów zapisać jak
decimal64 10 16 384 najwięcej liczb. Zwróćmy np. uwagę, że w przypadku 4 i 5
decimal128 10 34 6144 cyfra stojąca przed przecinkiem nie jest w ogóle zapisywana
decimal{k} 10 9k/32 − 2 3 · 2(k/16+3) w pamięci komputera.

Uwaga: [x] oznacza najbliższą do x liczbę całkowitą.


14 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Przypadek 1: bity wykładnika zawierają same jedynki, Ciąg bitów 0000 0011 0000 0000 reprezentuje liczbę podnor-
a bity rozwinięcia same zera. malną o wartości
W zależności od bitu znaku taki ciąg bitów koduje symbol
specjalny +∞ lub −∞. (−1)0 · 0, 112 · 2−14 = 3 · 2−16 .

Przypadek 2: bity wykładnika zawierają same jedynki, a Ciągi 1111 1100 0000 0000 i 0111 1111 0000 0000 mają w bi-
bity rozwinięcia nie zawierają samych zer. tach wykładnika same jedynki, reprezentują zatem symbole
Każdy taki ciąg bitów koduje NaN. specjalne. Pierwszy z nich to −∞, gdyż bity rozwinięcia
są zerami, a znak ujemny. Drugi to NaN, bo wśród bitów
Przypadek 3: bity wykładnika i rozwinięcia zawierają ułamka niektóre mają wartość 1. 
same zera.
W zależności od bitu znaku taki ciąg bitów koduje albo +0 Pozostaje udowodnić, że kodowanie jest poprawne, czyli że
albo −0. każdej wartości zmiennopozycyjnej odpowiada pewien kod i
każdemu kodowi wartość zmiennopozycyjna. Zauważmy, że
Przypadek 4: bity wykładnika zawierają same zera, a wystarczy rozpatrzyć jedynie liczby zmiennopozycyjne.
bity rozwinięcia nie zawierają samych zer. Dowód Zacznijmy od Przypadku 5. Największą wartość
Taki ciąg bitów reprezentuje liczbę podnormalną o wartości wykładnika E uzyskamy, gdy wszystkie bity ci zawierają
jedynki, z wyjątkiem najmłodszego (w tym przypadku wy-
(−1)s · (0, d1 d2 . . . dp−1 )2 · 2emin .
kładnik z samymi jedynkami nie jest dozwolony)

Przypadek 5: bity wykładnika nie zawierają ani samych (111 . . . 10)2 − emax = 2m − 2 − emax
zer, ani samych jedynek. = 2(2m−1 − 1) − emax
Taki ciąg bitów reprezentuje liczbę normalną o wartości
= 2emax − emax = emax.
(−1) · (1, d1 d2 . . . dp−1 )2 · 2 ,
s E
Najmniejszą wartość wykładnika E otrzymamy, gdy odpo-
gdzie E = (cm−1 cm−2 . . . c2 c1 c0 )2 − emax. wiadające wykładnikowi bity wypełnione są zerami, znów
oprócz najmłodszego
Zauważmy, że w przypadku 4 przed przecinkiem stoi zawsze
0, a w przypadku 5 zawsze 1. W ostatnim przypadku sposób (000 . . . 01)2 − emax = 1 − emax = emin.
obliczenia wykładnika E pozwala na uzyskanie zarówno
wartości dodatnich jak i ujemnych przy uniknięciu podwójnej Zatem możliwe do otrzymania są dokładnie te wykładniki
reprezentacji wykładnika równego zeru. E, które należą do zbioru

Co jest w bitach wykładnika? {emin, emin + 1, . . . , emax − 1, emax}.


 PP

 B PP
P Liczby normalne są z definicji nie mniejsze niż 2emin , każdą
 można zatem przedstawić w postaci
)
 BBN Pq
P
zera i
same jedynki same zera
jedynki
(−1)s · (1, d1 d2 . . . dp−1 )2 · 2E
? ?
Co jest w bitach Co jest w bitach dla emin 6 E 6 emax, E ∈ Z. Zatem zbiór liczb normal-
rozwinięcia? rozwinięcia? nych jest równy zbiorowi wartości, które można otrzymać w
 A  A Przypadku 5.
Liczby podnormalne są mniejsze od 2emin , zatem dają się
 A  A
 U
A
 U
A
same nie tylko same nie tylko
zera zera zera zera
przedstawić w postaci

? ? ? ? ? (−1)s · (0, d1 d2 . . . dp−1 )2 · 2emin ,


Przypadek 1 Przypadek 2 Przypadek 3 Przypadek 4 Przypadek 5
liczby liczby występującej w opisie Przypadku 4. 
+∞, −∞ NaN +0, −0
podnormalne normalne

Przykład Rozpatrzmy arytmetykę binary16. Wtedy


1.2.8 Pytania powtórzeniowe
p = 11, emax = 15,
m = 5, emin = −14. 1. Sformułuj twierdzenie dotyczące ilości liczb całkowitych,
wymiernych i niewymiernych w dowolnym niepustym
W ciągu bitów 1000 1111 0000 0000 pierwszy: 1 jest bi- przedziale otwartym.
tem znaku, następne pięć: 00011 są bitami wykładnika, a
pozostałe dziesięć: 1100000000 to bity rozwinięcia. Bity 2. Opisz parametry, które są używane w standardzie IEEE
wykładnika nie zawierają ani samych zer, ani samych jedy- 754-2008 do zdefiniowania zbioru wartości zmiennopo-
nek, jest to zatem liczba normalna. Wartość wykładnika zycyjnego. Podaj odpowiednie założenia.
wynosi 000112 − 15 = −12, a całej liczby 3. Podaj definicję zbioru wartości zmiennopozycyjnych.

(−1)1 · 1, 112 · 2−12 = −7 · 2−14 . 4. Podaj definicje liczb normalnych i podnormalnych.


Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 15

5. Podaj definicję postaci standardowej liczby zmiennopo-


zycyjnej. Zadanie 19 Rozważmy fikcyjną arytmetykę o parame-
trach b = 2, p = 4, emax = 3. Zapisz postać standar-
6. Po co wprowadzono pojęcie postaci standardowej? dową poniższych liczb, o ile istnieje.
7. Narysuj, jak są rozmieszczone liczby zmiennopozycyjne 1. 2,
na osi liczbowej. Oznacz krańce przedziałów i odpo-
wiednie odległości. Napisz, co oznaczają użyte symbole. 2. 2,
1

8. Niech k ∈ {0, 1, . . . , emax − emin}. Opisz, wraz z poda- 3. 2−3 · 0, 12 ,


niem wielkości liczbowych, jak rozmieszczone są liczby 4. 2−3 · 0, 00012 ,
zmiennopozycyjne w przedziale [2k MIN, 2k+1 MIN).
5. 2−3 · 10002 ,
6. 2−3 · 100012
1.2.9 Ćwiczenia sprawdzające zrozumienie
tematu
Zadanie 20 Rozważmy fikcyjną arytmetykę o parame-
Zadanie 15 Rozważmy fikcyjną arytmetykę o parame- trach b = 2, p = 4, emax = 3. Oblicz, ile wynosi
trach b = 2, p = 2, emax = 2. 1. MIN,
1. Korzystając z definicji zbioru wartości zmiennopo- 2. MAX,
zycyjnych wypisz wszystkie wartości zmiennopozy-
cyjne. 3. h.

2. Które z wypisanych wartości są liczbami normal-


nymi, a które podnormalnymi? Zadanie 21 Sprawdź korzystając z informacji o całko-
witej liczbie bitów oraz wartościach parametrów p = 24
3. Ile jest różnych liczb zmiennopozycyjnych, ile nor- i emax = 127, że dla arytmetyki binary32 zachodzą
malnych, ile podnormalnych? równości emax = 2m−1 − 1 i emin = 2 − 2m−1 .
4. Narysuj na osi liczby zmiennopozycyjne nieujemne.
Zadanie 22 Rozpatrzmy arytmetykę zmiennopozy-
Zadanie 16 Rozważmy fikcyjną arytmetykę o parame- cyjną binary16 (p = 11, emax = 15). Jak interpre-
trach b = 2, p = 4, emax = 3. Czy poniższe liczby są towane są następujące ciągi bitów?
liczbami zmiennopozycyjnymi tej arytmetyki? 1. 0111 1111 1000 0000
1. 0 · 2 1012
,
2. 1100 0111 0100 0000
2. 1 · 2 1012
,
3. 0111 1100 0000 0000
3. 0, 012 · 21012 ,
4. 1000 0000 0000 0000
4. 10002 · 2−1012 ,
5. 1000 0010 0000 0000
5. 1000002 · 2−1012 ,
6. 1, 1111012 · 2102
1.2.10 Zadania

Zadanie 17 Podaj postać standardową poniższych Zadanie 23 Dla arytmetyki o parametrach b = 2, p,


liczb zmiennopozycyjnych w arytmetyce decimal32 (p = emax oblicz ile jest liczb normalnych i ile podnormal-
7, emax = 96). nych.
1. 0, 00011,
2. − 14 , Zadanie 24 Dana jest binarna arytmetyka zgodna ze
standardem IEEE 754-2008. Policz ile jest dodatnich
3. 5
4 liczb normalnych mniejszych od 2 i ile jest liczb nor-
malnych większych lub równych 2. Wynik uzależnij od
Zadanie 18 Podaj postać standardową poniższych parametrów emax i p.
liczb zmiennopozycyjnych w arytmetyce binary16 (p =
11, emax = 15).
Zadanie 25 Rozważmy fikcyjną arytmetykę o parame-
1. 0, 000112 , trach b = 2, p = 4, emax = 3. Podaj zmiennopozycyj-
nych sąsiadów poniższych liczb normalnych.
2. − 14 ,
1. 11, 012 ,
3. 5
4
16 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

2. −1, 112 , 2. Podaj ile wynosi odległość r między x i y.


3. 1, 1112 , 3. Oblicz 2r oraz x + r
2 = x+y
2 i zapisz je w postaci
(d0 , d1 d2 . . .)2 · 23 .
4. 11112
4. Podaj regułę (dotyczącą rozwinięcia liczby przy
wykładniku równym 3) jaką powinny spełniać cyfry
Zadanie 26 Dana jest binarna arytmetyka zgodna ze liczby rzeczywistej z ∈ (x, y) leżącej bliżej y niż x
standardem IEEE 754-2008 o zadanych parametrach p, oraz liczby rzeczywistej w ∈ (x, y) leżącej bliżej x
emax > p, emin. niż y.
1. Ile wynosi najmniejsza i największa liczba całkowita
k taka, że 2k jest liczbą normalną? Odpowiedzi
2. Ile wynosi najmniejsza i największa liczba całkowita
k taka, że 2k jest liczbą podnormalną? Zadanie 15 1. symbole ±∞, symbole NaN, liczby zmienno-
pozycyjne ±0, ± 14 , ± 12 , ± 34 , ±1, ± 32 , ±2, ±3, ±4, ±6 , 2. licz-
3. Ile wynoszą największa i najmniejsza liczba zmien-
bami normalnymi są wszystkie za wyjątkiem 0, − 14 , 14 , licz-
nopozycyjna, która jest liczbą całkowitą?
bami podnormalnymi są − 14 , 14 3. 16 liczb normalnych i
2 podnormalne Zadanie 16 1. tak, 2. nie, 3. tak, 4. tak,
5. tak, 6. nie Zadanie 17 1. (−1)0 · 1, 100000 · 10−4 ,
Zadanie 27 Rozważmy arytmetykę binary64 (p = 53,
2. (−1) · 2, 500000 · 10−1 , 3. (−1)0 · 1, 250000 · 100 Zadanie 18
1
emax = 1023). Oblicz, ile wynosi odległość między
1. (−1)0 · 1, 10000 000002 · 2−1002 , 2. (−1)1 · 1, 00000 000002 · 2−102 ,
sąsiednimi liczbami zmiennopozycyjnymi z przedziału
3. (−1)0 · 1, 01000 000002 · 20 Zadanie 19 1. (−1)0 · 1, 0002 · 21 ,
[1, 2].
2. (−1)0 · 1, 0002 · 2−1 , 3. (−1)0 · 0, 0102 · 2−102 , 4. nie ist-
nieje postać standardowa 5. (−1)0 · 1, 0002 · 20 , 6. nie ist-
1
Zadanie 28 Dana jest arytmetyka zgodna ze standar- nieje postać standardowa Zadanie 20 1. 0, 25, 2. 15, 3. 32
1 −15
dem IEEE 754-2008. Udowodnij, że liczba Zadanie 22 1. NaN. 2. −7 4 , 3. +∞. 4. −0, 5. −2
Zadanie 23 1. emax · 2p+1 , 2. 2p − 2 Zadanie 24 W obu
1 1−p
 
emax grupach jest tyle samo liczb: emax · 2p−1 . Zadanie 25
b b− b
2 1. L = (−1)0 · 1, 1002 · 21 , P = (−1)0 · 1, 1102 · 21 ,
2. P = (−1)1 · 1, 1012 · 20 , L = (−1)1 · 1, 1112 · 20 ,
jest równa MAX + H
2 , gdzie H jest odległością między 3. L = (−1)0 · 1, 1102 · 20 , P = (−1)0 · 1, 0002 · 21 ,
dwiema największymi liczbami zmiennopozycyjnymi. 4. L = (−1)0 · 1, 1102 · 23 , prawego brak Zadanie 26 1. naj-
mniejsze emin, największe emax, 2. najmniejsze 2 − emax − p,
największe −emax. 3. największa 2emax · (2 − 2p−1 ), naj-
Zadanie 29 Narysuj rozmieszczenie liczb zmiennopo- mniejsza −2emax · (2 − 2p−1 ) Zadanie 27 2−52 Zadanie 30
zycyjnych na osi liczbowej w przypadku arytmetyki −1 : 1|011 11|00 0000 0000 −2 : 1|100 00|00 0000 0000
dziesiętnej zgodnej ze standardem IEEE 754-2008. −3 : 1|100 00|10 0000 0000 . −1 : 1|011 . . . 11|00 . . . 00 −2 :
1|100 . . . 00|00 . . . 00 −3 : 1|100 . . . 00|10 . . . 00 Zadanie 31
gdy c4 = 0 s 0111c3 c2 c1 c0 d1 d2 . . . d10 00 . . . 0 , gdy
Zadanie 30 Rozpatrzmy arytmetykę zmiennopozy- c4 = 1 s 1000c3 c2 c1 c0 d1 d2 . . . d10 00 . . . 0 Zadanie 32
cyjną binary16 (m = 5, p = 11). Podaj ciągi bitów, y = (−1)0 (1, 00001 00010)2 · 23 , r = (0, 00000 00001)2 · 23
które reprezentują liczby −1, −2, −3. Skorzystaj z zależ- r
= (0, 00000 00000 1)2 · 23 , x + r2 = (1, 00001 00001 1)2 · 23 , z
ności emax = 2m−1 − 1. Uogólnij wyniki dla arytmetyk 2
są postaci (1, 00001 00001 1d1 d2 . . .)2 · 23 , gdzie di są dowolne,
przenośnych o dowolnych parametrach m i p. ale przynajmniej jedna z nich jest różna od zera, w są po-
staci (1, 00001 00001 0d1 d2 . . .)2 · 23 , gdzie di są dowolne, ale
przynajmniej jedna z nich jest różna od zera
Zadanie 31 Rozpatrzmy arytmetyki przenośne
binary16 (p = 11, emax = 15) i binary32 (p = 24,
emax = 127). Niech x będzie liczbą normalną o
następującym kodzie bitowym w arytmetyce binary16
s c4 . . . c1 c0 d1 d2 . . . d10 .
Jaki jest kod bitowy tej samej liczby x w arytmetyce
binary32?

Zadanie 32 Rozpatrzmy arytmetykę zmiennopozy-


cyjną binary16 (p = 11, emax = 15). Dana jest liczba
normalna x = (−1)0 (1, 00001 00001)2 · 23 .
1. Wyznacz liczbę normalną y, która jest prawym
zmiennopozycyjnym sąsiadem x.
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 17

1.3 Błędy zaokrągleń Standard definiuje pięć sposobów zaokrąglania liczb rzeczy-
wistych do wartości zmiennopozycyjnych:
Na stronie www.cs.berkeley.edu/~wkahan znajduje się sze- 1. do najbliższej z wyborem parzystej cyfry,
reg artykułów autorstwa Williama Kahana, które poruszają 2. do najbliższej z wyborem większego modułu,
tematy związane z arytmetyką zmiennopozycyjną. Począ-
tek artykułu www.cs.berkeley.edu/~wkahan/Mindless.pdf 3. w kierunku +∞,
wyjaśnia po co uczyć się szczegółów arytmetyki zmiennopo- 4. w kierunku −∞,
zycyjnej.
5. w kierunku zera.
„Dane zmiennopozycyjne pojawiają się w niezmiernych ilo-
ściach, a programy numeryczne jak nigdy dotąd rosną, stają Arytmetyki dziesiętne muszą realizować wszystkie pięć spo-
się ambitne i skomplikowane, podczas gdy ich użytkownicy sobów, binarne mogą pominąć zaokrąglanie do najbliższej
(uśredniając) coraz mniej wiedzą o numerycznej analizie z wyborem większego modułu. Domyślnym sposobem w
błędów, chociaż ich wiedza nie jest mniejsza niż ich poprzed-przypadku arytmetyk binarnych jest zaokrąglanie do naj-
ników w dziedzinach, o które dbają, by się ich nauczyć. Kon- bliższej z wyborem parzystej cyfry. Ten sam sposób jest
sekwencją jest to, że anomalie numeryczne zwykle pozostają zalecany dla arytmetyk dziesiętnych, ale ostateczna decy-
niezauważone, a jeśli już, to na ogół błędnie zdiagnozowane. zja jest pozostawiona twórcom implementacji. Sposoby nie
Na szczęście większość z nich nie ma znaczenia. W ogóle będące domyślnym mają być dostępne dla użytkownika po-
większość obliczeń nie ma znaczenia. przez ustawianie parametru, który jest specjalnie ku temu
przeznaczony. Parametr nie musi mieć wartości stałej dla
Obliczenia zmiennopozycyjne stały się tak tanie, że czę- całego programu, ale może być zmieniany dla pewnych jego
sto nie są wiele warte. Powiększający się ogrom, głównie części.
przypadkowych użytkowników, wykorzystuje je zwykle w
rozrywce i grach. Anomalie powodowane błędami zaokrągleń Sposób Arytmetyki
zamigoczą przed oczami zbyt szybko, by zostały zauważone,
a jeśli zostaną, to jedynie awansują do „cech” opisanych być zaokrąglania binarne dziesiętne
może na jakimś forum tak
do najbliższej z wyborem obowiązkowy obowiązkowy
«Nie trzeba szukać i składać w ofierze żadnej parzystej cyfry domyślny zalecany domyślny
dziewicy wiedźmie strzegącej bramy do poziomu
siedemnastego: wiedźmę dotknie katatonia, gdy do najbliższej z wyborem nieobowiązkowy obowiązkowy
zaoferujemy jej dokładnie 13, 875 dolarów.» większego modułu
Powiększa się jednak liczba obliczeń, które są ważne i to w kierunku +∞ obowiązkowy obowiązkowy
bardzo, choć nie przybywa ich tak szybko jak gier. Ale
coraz mniejszej liczbie programistów i użytkowników wy- w kierunku ∞ obowiązkowy obowiązkowy
kształcenie i doświadczenie umożliwia znalezienie i usunięcie w kierunku 0 obowiązkowy obowiązkowy
numerycznych anomalii. Są one niewidoczne w tekście pro-
gramu, gdyby tak nie było, ich nazwy zalałyby wszystko W trakcie omawiania tych sposobów będę używać oznacze-
inne. Widzimy je umysłem i w modelu obliczeń zbudowanym nia MAX na największą liczbę zmiennopozycyjną oraz H na
dla celów analizy błędów zaokrągleń. odległość między dwiema największymi liczbami zmiennopo-
zycyjnymi.
Analiza błędów przyciąga coraz mniej studentów i rzadziej
staje się ścieżką kariery naukowej. Dlatego prawie wszyscy dwie największe liczby zmiennopozycyjne
użytkownicy i programiści obliczeń zmiennopozycyjnych wy-
r Rr
@ c
magają pomocy nie tyle w przeprowadzaniu analizy błędów
-
MAX − H MAX + 2
H
MAX
(nie będą tego robić), jak w ustaleniu, który błąd zaokrągleń
jest przyczyną ich zgryzoty i gdzie. Potem nastąpi, o ile to
6
to nie jest liczba zmiennopozycyjna
możliwe, przypisanie winy i pozbycie się problemu.”
Można obliczyć, że

MAX = bemax b − b1−p ,



1.3.1 Reprezentacja liczb rzeczywistych w
arytmetyce zmiennopozycyjnej H = bemax · b1−p ,

gdzie b oznacza podstawę systemu liczenia, a p liczbę cyfr


Arytmetyka zmiennopozycyjna ma za zadanie modelować
rozwinięcia. Przypomnijmy, że postacią standardową liczby
arytmetykę liczb rzeczywistych. Dysponując siatką opisaną
zmiennopozycyjnej jest jej zapis
wcześniej możemy sensownie aproksymować liczby jedynie z
pewnego przedziału, przy czym różnica między liczbą x ∈ R (−1)s (d0 , d1 d2 . . . dp−1 )2 · bE ,
a jej przybliżeniem może rosnąć wraz ze wzrostem |x|.
Oznaczenia Dane jest x ∈ R. Przez rd (x) będziemy który spełnia pewne dodatkowe założenia o rozwinięciu i
oznaczać wartość zmiennopozycyjną, która przybliża x. wykładniku.
Może to być liczba zmiennopozycyjna, +∞ lub −∞.
18 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Zaokrąglenie do najbliższej Zaokrąglenie w kierunku +∞


z wyborem parzystej cyfry
Wartością rd (x) jest liczba zmiennopozycyjna, która speł-
Wartość rd (x) wyznaczamy następująco. nia oba poniższe warunki
1. Jeśli |x| przekracza zakres arytmetyki, a dokładniej 1. jest większa lub równa x,
|x| > MAX + H2 , to
2. jest najmniejsza ze wszystkich liczb spełniających
( warunek 1,
+∞ gdy x > MAX + H2 ,
rd (x) = 3. jeśli x > MAX to nie istnieje żadna liczba zmien-
−∞ gdy x < − MAX − H2 .
nopozycyjna spełniająca warunek pierwszy i wtedy
przyjmujemy rd (x) = +∞.
2. Jeśli |x| < MAX + H2 to rd (x) jest równe najbliższej
do x liczbie zmiennopozycyjnej. Można nieformalnie powiedzieć, że zaokrąglanie w kierunku
3. W przypadku, gdy x leży w połowie odległości mię- +∞ polega na wybraniu najbliższej na prawo liczby zmien-
dzy dwiema sąsiednimi liczbami zmiennopozycyj- nopozycyjnej, a jeśli takie nie ma, to wynikiem jest +∞.
nymi, to wybierana jest ta, której ostatnia cyfra

sąsiednie liczby zmiennopozycyjne
rozwinięcia w postaci standardowej (czyli dp−1 ) jest
r Rr
@
parzysta.
-
x y rd (x)
q
Poniższe rysunki ilustrują różne przypadki położenia liczb rd (y)
x, y ∈ R oraz odpowiadające im wartości rd (x), rd (y).


największa liczba zmiennopozycyjna
dwie największe liczby zmiennopozycyjne r
? -
r Rr
@ c - MAX x
MAX − H MAX x MAX + H
2 y rd (x) = +∞
rd (x) rd (y) = +∞


najmniejsza liczba zmiennopozycyjna
sąsiednie liczby zmiennopozycyjne r
? -
x −MAX
r @r
R - q
rd (x) x y rd (y) rd (x)

Zaokrąglenie w kierunku −∞
Następny sposób różni się od poprzedniego jedynie w przy-
padku, gdy x leży w połowie odległości między dwiema
sąsiednimi liczbami zmiennopozycyjnymi. Wartością rd (x) jest liczba zmiennopozycyjna, która speł-
nia oba poniższe warunki
Zaokrąglenie do najbliższej
z wyborem większego modułu 1. jest mniejsza lub równa x,
2. jest największa ze wszystkich liczb spełniających
Wartość rd (x) wyznaczamy następująco. warunek 1,
1. Jeśli |x| przekracza zakres arytmetyki, a dokładniej 3. jeśli x < − MAX to nie istnieje żadna liczba zmien-
|x| > MAX + H2 , to nopozycyjna spełniająca warunek pierwszy i wtedy
( przyjmujemy rd (x) = −∞.
+∞ gdy x > MAX + H2 ,
rd (x) =

−∞ gdy x < − MAX − H2 . sąsiednie liczby zmiennopozycyjne
r Rr
@ -
rd (x) x y
2. Jeśli |x| < MAX + H2 to rd (x) jest równe najbliższej
q
do x liczbie zmiennopozycyjnej. rd (y)

3. W przypadku, gdy x leży w połowie odległości mię-



największa liczba zmiennopozycyjna
dzy dwiema sąsiednimi liczbami zmiennopozycyj-
r
?
nymi, to wybierana jest ta, która ma większy moduł.
-
MAX x
q
Sposób ten daje czasami niespodziewane wyniki. Przypu- rd (x)
śćmy, że używamy arytmetyki binarnej i chcemy podzielić


najmniejsza liczba zmiennopozycyjna
najmniejszą dodatnią liczbę zmiennopozycyjną h przez 2.
Dokładny wynik wynosi x = h2 i nie jest liczbą zmienno- r
? -
pozycyjną. Przy zaokrąglaniu tym sposobem otrzymamy x −MAX
rd (x) = h. Stąd wynikiem dzielenia h przez 2 będzie h. rd (x) = −∞
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 19

Kolejny sposób dla x > 0 działa jak zaokrąglanie w kierunku • liczby z przedziału (l, s) są postaci (1, 11111000000 0...)2 ·
−∞, a dla x < 0 jak zaokrąglanie w kierunku +∞. 22 , wielokropek zastępuje dowolny ciąg cyfr, który nie
jest stale równy 0.
Zaokrąglenie w kierunku 0
W przypadku ogólnym wystarczy więc spojrzeć na 12 cyfrę
Wartością rd (x) jest liczba zmiennopozycyjna, która speł- znaczącą liczby x:
nia oba poniższe warunki • jeśli byłaby ona równa 0, to wynikiem przybliżenia
1. moduł tej liczby jest mniejszy lub równy |x|, byłoby l,

2. leży najbliżej x ze wszystkich liczb spełniających • jeśli ta cyfra wynosi 1 i wśród dalszych cyfr jest choć
warunek 1. jedna jedynka, to wynikiem jest p,
• jeśli ta cyfra wynosi 1 i wszystkie następne wynoszą zero,
sąsiednie liczby sąsiednie liczby
to wynik zależy od tego, czy zaokrąglamy z wyborem

 
zmiennopozycyjne zmiennopozycyjne
parzystej cyfry czy z wyborem większego modułu. 
r @Rr r @
Rr -
x y rd (y) 0 rd (w) w z
q q Przykład Rozważmy arytmetykę taką, jak w poprzednio.
rd (x) rd (z) Wyznaczmy rd (x) dla
najmniejsza liczba największa liczby x = 1, 11111000000 12 · 22

 
zmiennopozycyjna zmiennopozycyjna
r? r? - stosując oba rodzaje zaokrąglenia do najbliższej. Tym razem
x −MAX 0 MAX y x leży dokładnie pośrodku dwóch sąsiednich liczb zmienno-
q
rd (x)
q
rd (y) pozycyjnych:

Zauważmy, że przy zaokrągleniu w kierunku 0 nigdy nie l = 1, 11111000002 · 22


otrzymujemy w wyniku ani +∞, ani +∞. p = 1, 11111000012 · 22 .
Przykład Rozpatrzmy arytmetykę binary16 (p = 11, Jeśli stosujemy zaokrąglenie do najbliższej z wyborem parzy-
emax = 15, emin = −14). Znajdźmy rd (x) dla stej cyfry, to wynikiem będzie mniejsza z nich l, bo jej cyfra
d10 jest parzysta. W przypadku zaokrąglenia do najbliższej
x = 111, 11100000112
z wyborem większego modułu rd (x) będzie równe większej
stosując jeden ze sposobów zaokrąglania do najbliższej. W p, bo ma ona większy moduł. 
tym celu przekształćmy najpierw liczbę x do postaci takiej,
w której rozwinięcie ma dokładnie jedną niezerową cyfrę
przed przecinkiem:
1.3.2 Błędy przyporządkowania

x = +1, 11111000000 112 · 22 . Zbadamy obecnie jak dobrze rd (x) przybliża x. Będziemy
używać dwóch wielkości do pomiaru błędów.
Liczba x nie jest liczbą normalną, bo ma za dużo cyfr zna-
Definicja 6 Błąd bezwzględny jest to wielkość
czących. Kreskę 0 postawiono po 11 cyfrach znaczących.
Zauważmy, że x leży pomiędzy liczbami normalnymi rB (x) = x − rd (x).
l = 1, 11111000002 · 2 2
Błąd względny jest określony dla x 6= 0 następująco
p = 1, 11111000012 · 22 ,
|rd (x) − x| | rB (x)|
rW (x) = = .
które są sąsiednimi liczbami zmiennopozycyjnymi. Jeśli |x| |x|
stosujemy zaokrąglenie do najbliższej (jedno z dwóch opisa-
nych), to aby wyznaczyć rd (x) musimy stwierdzić, czy x jest
mniejsze, czy też nie od liczby leżącej dokładnie pośrodku Istotniejszą miarą jest błąd względny. Jeśli np. wiemy,
tamtych, czyli że błąd bezwzględny nie przekracza 10−5 , to znaczy, że
możemy ufać wszystkim cyfrom do czwartej po przecinku.
1 Jeśli liczba jest duża, np. 25000000, to taka dokładność jest
s = (l + p) = 1, 11111000000 12 · 22 .
2 bardzo dobra, może nawet zanadto. Jeśli jednak liczba jest
Porównując x i s zauważamy, że x > s, więc niewielka, np. 0, 00000125, to taka dokładność kompletnie
nic nie daje. Zatem bez określenia wielkości liczby błąd
rd (x) = p = +1, 11111000012 · 2 .
2 bezwzględny nie niesie istotnej w praktyce informacji.

Okazuje się, że obliczanie liczby s nie jest w ogóle potrzebne. Błąd względny skupia się na cyfrach znaczących. Jeśli np.
Zauważmy bowiem, że wiemy, że błąd bezwzględny nie przekracza 10 −5
, to zna-
czy, że możemy ufać pięciu cyfrom znaczącym. Dotyczy to
• liczby z przedziału (s, p) są postaci (1, 11111000000 1...)2 · zarówno liczb dużych, jak i małych. W przypadku liczby
22 , gdzie wielokropek zastępuje dowolny ciąg cyfr, który 25000000 ufamy początkowym pięciu cyfrom 25000, a pozo-
nie jest stale równy 0, stałe trzy 000 mogą być niedokładne. W przypadku liczby
20 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

0, 000001250000 ufamy pięciu cyfrom 12500 począwszy od


szóstej pozycji po przecinku (i stojącym na lewo od nich Definicja 7 Liczbę 2−p nazywamy precyzją arytmetyki.
zerom), a cyfry od pozycji 11 mogą być niedokładne. Będziemy ją oznaczać przez ν.

Oszacujemy teraz oba błędy dla różnych x przy założeniu, Precyzję arytmetyki można też zdefiniować w inny, równo-
że posługujemy się zaokrągleniem do najbliższej (obojętnie ważny sposób, co jest przedmiotem jednego z zadań. Pre-
czy z wyborem parzystej cyfry, czy większego modułu) i cyzja arytmetyki określa maksymalny błąd względny, który
arytmetyką binarną. Inne sposoby zaokrąglania rozpatruje może się pojawić, gdy dochodzi do zaokrąglenia liczby rze-
się analogicznie. Rozpatrzymy trzy przypadki. czywistej x leżącej na osi pomiędzy liczbami normalnymi.
Liczb normalnych jest znacznie więcej niż podnormalnych
Przypadek 1: x = 0
i zajmują one znacznie większy obszar osi niż liczby pod-
Liczba x = 0 jest reprezentowana dokładnie, czyli rd (0) = 0 normalne. Podczas obliczeń komputerowych dużo częściej
i wtedy rB (0) = 0, a błąd względny nie jest określony. operujemy liczbami normalnymi niż podnormalnymi, stąd
kluczowe jest zachowanie błędów w przypadku 3.
Przypadek 2: 0 < |x| < MIN
Zwróćmy uwagę, że przedstawione zostały jedynie oszacowa-
Błąd bezwzględny można oszacować przez nia górne błędów. Poniższy przykład ma na celu ukazać, że
te oszacowania są realne, czyli istnieje liczba x ∈ R i speł-
h
| rB (x)| 6 = 2emin 2−p = MIN 2−p . niająca założenia przypadku 3, dla której błąd bezwzględny
2 wynosi prawie |x|·2−p = |x|ν, a błąd względny wynosi prawie
Jest on bardzo mały, przykładowo dla arytmetyki binary32 2−p = ν.
wynosi 2−150 , a dla binary64 2−1075 . Natomiast błąd Przykład Weźmy liczbę x = MIN + h . Wtedy błąd bez-
względny może być dowolnie duży. Dla liczb bliskich 0, względny wynosi 2

a dokładniej takich x 6= 0, że rd (x) = 0 (czyli spełniających h


nierówność |x| < h2 ) wynosi 1 — cała informacja o liczbie x | rB (x)| = .
2
ulega zniszczeniu.
Ponieważ 2 = MIN ν, to |x| = MIN(1 + ν) i
h

Przypadek 3: MIN 6 |x| < MAX + H2


| rB (x)| = MIN ν
Oszacujmy maksymalny błąd bezwzględny, jaki może się MIN
pojawić. Niech |x| ∈ [2k MIN, 2k+1 MIN) dla pewnego = |x| ν
|x|
k = 0, 1, . . . , emax − emin. Zgodnie z tym, co zostało na-
MIN
pisane w punkcie dotyczącym rozmieszczenia liczb zmien- = |x| ν
nopozycyjnych na osi liczbowej, w tym przedziale liczby MIN(1 + ν)
zmiennopozycyjne są rozmieszczone z krokiem 2k · h. Mak- 1
= |x| ν.
symalny błąd bezwzględny, jaki może się pojawić jest równy 1+ν
połowie tego kroku:
Błąd względny ma zatem wartość
2k · h
| rB (x)| 6 .
2 1
rW (x) = ν,
1+ν
Ponieważ h = 2−p+1 MIN oraz 2k MIN 6 |x|, to
która tylko nieznacznie różni się od ν, bo dla używanych
| rB (x)| 6 2k · MIN ·2−p 6 |x| · 2−p . arytmetyk 1+ν
1
≈ 1. Przykład ten wykazuje, że w przypadku
3 oszacowania błędów bezwzględnego i względnego są bardzo
Błąd względny można więc oszacować następująco
dokładne. 
| rB |
rW (x) = 6 2−p .
|x|
1.3.3 Operacje
Jego maksymalna wielkość zależy od parametru p — im więk-
sze p tym mniejszy „najgorszy” błąd względny, jaki może się Duża część standardu poświęcona jest opisowi operacji, które
pojawić. Ponieważ p jest dość dużą liczbą to błąd względny powinny być udostępnione. Wprowadzony jest ich podział
jest zawsze mały w przypadku MIN 6 |x| < MAX + H2 . W ze względu na pewne cechy, co zostanie tu pominięte. Każda
sensie względnym utrata informacji o liczbie x jest niewielka. operacja jest dokładnie zdefiniowana dla wszystkich wartości
Natomiast błąd bezwzględny może być bardzo duży. Im argumentów, w szczególności jeśli argument jest zmienno-
dalej x leży od 0 tym większy może się pojawić. pozycyjny, to wynik operacji musi być określony zarówno
wtedy, gdy jest on liczbą zmiennopozycyjną, jak i wtedy,
nadmiar Przypadek 2: błąd względny może być duży nadmiar gdy jest jednym z symboli +∞, −∞, qNaN, sNaN.
 
b 

b   Podstawową zasadę dotyczącą wykonywania operacji można
BBN
b
? ?
 
  
-
sformułować jak następuje.
@
I 0 MIN 
@
@
Przypadek 3: gwarantowany mały błąd względny
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 21

#include<stdio.h>
Jeżeli wynikiem operacji jest liczba, to powinna być ona
#include<math.h>
wyznaczona w taki sposób, jakby najpierw była obli-
czona dokładnie (nieskończony zakres i nieskończenie
main() {
wiele cyfr rozwinięcia), a następnie zaokrąglona zgodnie
float x = pow(2,-148);
z obowiązującym sposobem do liczby zmiennopozycyjnej
x = x / 8;
(ewentualnie do +∞ lub −∞).
if (x == 0.0)
printf("ZERO");
W praktyce wystarczy najpierw obliczyć wynik z dosta- else
tecznie dużą dokładnością, a nie nieskończoną. Sprzętowo printf("NIE_ZERO");
wykorzystuje się do tego odpowiednio „większej” arytmetyki. }
Następnie konwertuje się go do arytmetyki docelowej.
Oznaczenia Przez fl (wyrażenie) będę oznaczać wartość Liczby
wyrażenia obliczonego w konkretnej arytmetyce zmien-
2−148 = 0, 000000000000000000000102 · 2−126 ,
nopozycyjnej, przy czym jeśli wyrażenie zawiera wiele
operacji, to są one wykonywane po kolei zgodnie z zapisem 8 = 1, 000000000000000000000002 · 23
i wynik każdej z nich jest zaokrąglany do wartości zmien-
nopozycyjnej. Wyrażenie może być zapisane zgodnie z są niezerowymi liczbami zmiennopozycyjnymi (pierwsza pod-
konwencją matematyczną albo regułami stosowanymi w normalna, druga normalna). Są zatem przechowywane w
ustalonym języku programowania. pamięci dokładnie. Wynik dzielenia 2−148 /23 wynosi

√ 2−151 = 0, 000000000000000000000000 012 · 2−126 ,


Przykład Napis fl (2/3 + 2) oznacza liczbę zmiennopozy-
cyjną c, którą otrzymamy gdybyśmy i ponieważ leży pomiędzy 0 i h2 , to będzie reprezentowany
1. obliczyli dokładnie 2/3 i wynik zaokrąglili do liczby przez 0. Na ekranie pojawi się napis ZERO. 

zmiennopozycyjnej a,
√ Nie przedstawię wszystkich definicji operacji i reguł nimi
2. obliczyli dokładnie 2 i wynik zaokrąglili do liczby rządzących. Są one zawarte w standardzie. Dla przykładu
zmiennopozycyjnej b, uczynię to w przypadku dodawania dla formatów binarnych,
3. obliczyli dokładnie a + b i wynik zaokrąglili do liczby aby ukazać jak szczegółowy jest standard.
zmiennopozycyjnej c. Przykład Operator dodawania jest dwuargumentowy. Ar-
Ten sam rezultat otrzymamy pisząc fl (2/3+sqrt(2)) zgodnie gumenty i wynik nie muszą być tego samego formatu, co
z konwencją w C. więcej dodawanie ma być zaimplementowane dla wszystkich

możliwych kombinacji formatów o tej samej podstawie li-
Standard wymaga, by realizowane były operacje arytme- czenia. Jeśli argumenty są liczbami zmiennopozycyjnymi,
tyczne dodawania, odejmowania, mnożenia, dzielenia, wy- to wynik jest definiowany przez podstawową regułę (wiersz
ciągania pierwiastka kwadratowego, połączonego mnożenia pierwszy w tabeli). Wszystkie inne przypadki są zawarte w
z dodawaniem. Ostatnia operacja jest trójargumentowa, pozostałych wierszach tabeli. Symbol z oznacza, że argu-
będę ją oznaczać przez FMA od ang. FusedMultiplyAdd. ment lub wynik jest liczbą zmiennopozycyjną. Wystąpienie
Z definicji FMA(x, y, z) = x ∗ y + z. Operacja ta nie jest ∞ bez znaku oznacza +∞ lub −∞, podobnie NaN zastępuje
równoważna następującym po sobie operacjom mnożenia i qNaN lub sNaN.6 Przecinek zastępuje spójnik „lub”. Dolna
dodawania, bo FMA generuje tylko jeden błąd zaokrągleń. część tabeli zawiera przypadki symetryczne do tych, które
umieszczono w środkowej części.
Poprawna arytmetyka zmiennopozycyjna w myśl pod-
stawowej zasady spełnia dla x, y, z będących liczbami arg1 arg2 wynik arg1+arg2
zmiennopozycyjnymi równości: z z z, +∞, −∞
z, +∞ +∞ +∞
fl (x + y) = rd (x + y),
z, −∞ −∞ −∞
fl (x − y) = rd (x − y),
+∞ −∞ qNaN
fl (x ∗ y) = rd (x ∗ y),
z, ∞, NaN NaN qNaN
fl (x/y) = rd (x/y) dla x 6= 0,
√ +∞ z, +∞ +∞
fl (sqrt(x)) = rd ( x) dla x > 0,
−∞ z, −∞ −∞
fl (FMA(x, y, z)) = rd (x ∗ y + z). −∞ +∞ qNaN
NaN z, ∞, NaN qNaN
Przykład Poniższy program w języku C ilustruje różnice Pierwszą linię odczytujemy tak: gdy oba argumenty są
pomiędzy arytmetyką rzeczywistą i zmiennopozycyjną. Za- liczbami zmiennopozycyjnymi, to wynikiem dodawania może
kładamy, że zastosowano zaokrąglanie do najbliższej oraz, że być liczba zmiennopozycyjna, +∞ lub −∞. Natomiast
typ float jest zgodny z formatem podstawowym binary32 6 W standardzie zdefiniowano dwa rodzaje wartości NaN. Jedną na-
(co nie musi zachodzić, język C tego nie precyzuje). Zmienna zywa się „cichą”(qNaN), a drugą „głośną” (sNaN). Druga powoduje
x początkowo zawiera liczbę zmiennopozycyjną 2−148 . zwykle dodatkowe akcje.
22 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

drugą: jeśli do liczby zmiennopozycyjnej lub +∞ dodamy 7. operatory sprawdzające, zapamiętujące i zmieniające
+∞, to wynikiem będzie +∞. stan flag, które informują o zajściu sytuacji wyjątkowej.
Dodatkowo sformułowane są zasady dotyczące znaku zera, Oprócz tych standard zaleca dodatkowe operacje, nie są one
gdy oba argumenty są zerami. obowiązkowe. Mają one realizować:
arg1 arg2 wynik arg1+arg2 1. funkcje wykładnicze,
+0 +0 +0 2. funkcje logarytmiczne,
−0 −0 −0
( 3. funkcje potęgowe,
−0 przy zaokr. w kier. − ∞,
+0 −0 4. funkcje trygonometryczne i odwrotne do trygonome-
+0 w p.p.
( trycznych,
−0 przy zaokr. w kier. − ∞,
−0 +0 5. funkcje hiperboliczne,
+0 w p.p. √
6. funkcję obliczającą 1/ x,
Podobne reguły dotyczą sytuacji, gdy przynajmniej jeden
z argumentów jest niezerowy, ale wynikiem jest zero. Jeśli 7. funkcję obliczającą x2 + y 2 ,
p

argumenty i wynik są różnych formatów, to niekoniecznie ar-


8. funkcję obliczającą (1 + x)n ,
gumenty muszą mieć przeciwne znaki (na przykład dodajemy
dwie bardzo bliskie zeru, ale niezerowe liczby w binary64, 9. funkcje obliczające sumę, sumę modułów, sumę kwadra-
ale wynik zapisujemy w binary32). Wtedy wynikiem jest tów, iloczyn elementów wektora,
zero z takim samym znakiem, co argumenty. Gdy argumenty
10. funkcje obliczające różne kombinacje sum i iloczynów
są przeciwnych znaków, to wynikiem jest +0, z wyjątkiem
elementów dwóch wektorów,
sytuacji, gdy stosowane jest zaokrąglanie w kierunku −∞.
Podsumowuje to poniższa tabela. Obejmuje ona również 11. funkcje pozwalające w trakcie działania programu zmie-
przypadek obu argumentów zerowych. Zakładamy jedynie, niać sposoby zaokrągleń.
że argumenty są takie, by wynikiem dodawania było zero.
znak znak wynik arg1+arg2 1.3.4 Wyjątki i ich obsługa
arg1 arg2 (będący zerem)
+ + +0 Wyjątkiem nazywamy nietypowe zdarzenie, które może być
− − −0 związane z pewnym błędem lub nie, jest wykrywalne przez
( sprzęt albo oprogramowanie i wymaga często specjalnej ob-
−0 przy zaokr. w kier. − ∞, sługi. Przykładem takiego zdarzenia jest dzielenie przez zero
+ −
+0 w p.p. lub wyciąganie pierwiastka kwadratowego z liczby ujemnej,
albo napotkanie końca pliku podczas odczytu. W momen-
(
−0 przy zaokr. w kier. − ∞,
− + cie rozpoznania podejmowane są specjalne kroki. Może to
+0 w p.p.
 być zakończenie działania bieżącego programu i wygenero-
wanie odpowiedniego sygnału przerwania wewnętrznego, co
Na koniec wymienię, jakiego typu operacje są zdefiniowane spowoduje obsługę przez program z systemu operacyjnego.
w standardzie: To rozwiązanie jest typowe dla starszych języków progra-
1. operacje arytmetyczne: dodawanie, odejmowanie, mno- mowania. Innym sposobem jest dostarczenie specjalnego
żenie, dzielenie, wyciąganie pierwiastka kwadratowego, podprogramu (lub podprogramów do wyboru) przez twórcę
FMA, wyznaczanie reszty z dzielenia, kompilatora, albo twórcę programu, o ile język jest wyposa-
żony w odpowiednie narzędzia. Kolejną możliwość polega
2. operacje konwersji z i do różnych typów całkowitych, for- na zignorowaniu wyjątku.
matów zmiennopozycyjnych, ciągów znaków; możliwy
jest wybór rodzaju zaokrągleń, Standard definiuje pięć rodzajów wyjątków.

3. operatory kopiowania wartości z zachowaniem znaku, z niedokładny wynik


zamianą znaku na przeciwny, z opuszczeniem znaku, z
zamianą znaku ta taki sam, jaki ma drugi argument, dzielenie przez zero

4. operatory porównania (jest ich 22), różnią się między wyjątki niepoprawna operacja
innymi tym, jak traktowane są symbole specjalne,
5. operatory sprawdzające, który standard spełnia aryt- nadmiar
metyka (z 1985 r. czy z 2008 r.),
niedomiar
6. operatory pozwalające sprawdzić z jaką wartością mamy
do czynienia (liczbą normalną, podnormalną, zerem, Mogą być one obsługiwane w sposób domyślny lub inny.
symbolem specjalnym), jaka jest podstawa liczenia, jaki Z każdym z nich związana jest flaga, czyli zmienna, która
jest znak wartości, przyjmuje dwa stany, umownie nazywane podniesieniem i
opuszczeniem flagi. Domyślnie, zgłoszenie wyjątku powoduje
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 23

podniesienie flagi. Opuszczenie flagi jest możliwe tylko na Niedomiar


życzenie użytkownika.
Do niedomiaru dochodzi wówczas, gdy otrzymano bardzo
Program rozpoczyna działanie z opuszczonymi flagami chyba,
mały niezerowy wynik. W formatach binarnych stwierdzone
że „odziedziczył” flagi po innym programie. Standard wy-
to może być na jeden z poniższych sposobów:
maga, by użytkownik miał możliwość sprawdzania i zapa-
miętywania stanu flag oraz opuszczania i podnoszenia ich. 1. po zaokrągleniu — rozszerzamy siatkę liczb zmienno-
Ponadto reguluje wiele innych szczegółów związanych z fla- pozycyjnych do nieskończenie wielu wartości poprzez
gami. rezygnację z ograniczenia wartości wykładnika E; dla
ustalonej liczby x obliczamy reprezentację x dysponu-
jąc taką siatką (postępujemy zgodnie z obowiązującym
Niedokładny wynik sposobem zaokrąglania); jeśli tak uzyskany wynik jest
niezerowy i mniejszy co do modułu od bemin , to wykry-
Zgłaszany jest wtedy, gdy uzyskany po zaokrągleniu wynik wamy niedomiar,
jest różny od wyniku dokładnego. Domyślna obsługa polega
na podniesieniu odpowiedniej flagi. Jest to bardzo często 2. przed zaokrągleniem — niedomiar jest wykrywany, jeśli
zgłaszany wyjątek. dokładny wynik jest niezerowy i mniejszy co do modułu
od bemin .

Dzielenie przez zero Wymaga się, by wybrany sposób był konsekwentnie używany
w przypadku wszystkich formatów binarnych i wszystkich ro-
Wyjątek jest zgłaszany w przypadku operacji o argumentach dzajów zaokrągleń. Jeśli format jest dziesiętny, to niedomiar
będących liczbami zmiennopozycyjnymi i dokładnym wyniku jest stwierdzany przed zaokrągleniem.
równym +∞ lub −∞. Przykładam jest działanie 1/ + 0. Domyślna obsługa tego zdarzenia jest następująca. Jeśli
Domyślna obsługa polega na podniesieniu odpowiedniej flagi. po stwierdzeniu niedomiaru dokładny wynik nie jest liczbą
zmiennopozycyjną (czyli musi być zaokrąglony), to podno-
szona jest odpowiednia flaga i dodatkowo zgłaszany wyjątek
Niepoprawna operacja
niedokładny wynik. Jeśli jest liczbą zmiennopozycyjną, to
nic nie jest robione (flaga pozostaje opuszczona). To je-
Zgłoszenie następuje wtedy i tylko wtedy, gdy nie można
dyny przypadek, kiedy rozpoznanie wyjątku nie powoduje
dostarczyć żadnego użytecznego wyniku. Dzieje się tak, gdy
podniesienia flagi.
argumenty nie są poprawne dla danej operacji. Wynikiem
(jeśli jest zmiennopozycyjny) jest qNaN. Oto przykłady
1. działania arytmetyczne, w których jednym z argumen- Alternatywne sposoby obsługi wyjątków
tów jest sNaN,
Twórcy standardu sugerują, by języki programowania do-
2. 0 ∗ ∞, ∞ ∗ 0 przy dowolnej kombinacji znaków, starczały oprócz domyślnego inne sposoby obsługi wyjątków.
3. +∞ + (−∞), +∞ − (+∞), Wymienione takie, które

4. 0/0, ∞/∞, 1. działają tak jak domyślne, ale bez podnoszenia żadnych
√ flag,
5. x dla x < 0.
2. działają tak jak domyślne, ale twórcy języka decydują,
Domyślna obsługa polega na podniesieniu odpowiedniej flagi. kiedy flagi są podnoszone,
3. działają tak jak domyślne i dodatkowo zapamiętują
Nadmiar informację o wyjątku,
4. zastępują wynik operacji wyrażeniem podanym przez
Podczas zaokrąglania może być zgłoszony wyjątek nadmiaru.
użytkownika,
Występuje on w następujących sytuacjach. Wyobraźmy so-
bie, że siatka liczb zmiennopozycyjnych została rozszerzona 5. w przypadku niedomiaru zastępują wynik zerem lub
do nieskończenie wielu wartości poprzez rezygnację z ogra- bemin lub −bemin według pewnych reguł, równocześnie
niczenia wartości wykładnika E. Dla ustalonej liczby x podnosząc flagę i zgłaszając wyjątek niedokładny wynik.
obliczamy reprezentację x dysponując taką siatką (postę-
pujemy zgodnie z obowiązującym sposobem zaokrąglania).
Nie pojawią się wtedy wartości +∞ lub −∞, lecz zawsze 1.3.5 Pytania powtórzeniowe
będzie to pewna liczba. Jeśli tak obliczona reprezentacja
przekroczy co do modułu MAX to dochodzi do nadmiaru. 1. Co oznacza napis rd (x) oraz fl (wyrażenie)?

Domyślnie program obsługi podnosi odpowiednią flagę i 2. Podaj formalne reguły zaokrąglania do najbliższej z
dodatkowo zgłasza wyjątek „niedokładny wynik”. wyborem parzystej cyfry i wykonaj stosowne rysunki.
3. Podaj formalne reguły zaokrąglania do najbliższej z
wyborem większego modułu i wykonaj stosowne rysunki.
24 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

4. Podaj formalne reguły zaokrąglania w kierunku +∞ i


wykonaj stosowne rysunki. BŁĘDY WZGLĘDNE
5. Podaj formalne reguły zaokrąglania w kierunku −∞ i x rW1 (x) rW2 (x) rW3 (x) rW4 (x) rW5 (x)
wykonaj stosowne rysunki. „parzysta „większy „kierunek „kierunek „kierunek
cyfra” moduł” +∞” −∞” 0”
6. Podaj formalne reguły zaokrąglania w kierunku 0 i 0
wykonaj stosowne rysunki. 15, 5
7. Podaj definicję błędu bezwzględnego i względnego. 15
14, 75
8. Wyjaśnij dlaczego błąd względny jest bardziej istotny
14, 5
w praktyce niż bezwzględny.
14, 25
9. Podaj definicję precyzji arytmetyki. Co oznacza precy- −14, 25
zja arytmetyki?
10. Podaj podstawową regułę dotyczącą wykonywania ope-
racji w arytmetyce zmiennopozycyjnej. Zadanie 35 Rozpatrzmy arytmetyki binary32 (p =
24, emax = 127) i binary64 (p = 53, emax = 1023).
11. Napisz równości dotyczące wyników dodawania, odej- Załóżmy, że odpowiadają im odpowiednio typy float i
mowania, mnożenia, dzielenia, pierwiastkowania, FMA double w C. Jaki będzie wynik działania następującego
w poprawnej arytmetyce zmiennopozycyjnej dla argu- programu przy domyślnym sposobie zaokrąglania? Czy
mentów zmiennopozycyjnych. ulegnie on zmianie, gdy float zostanie zastąpiony przez
12. Wymień wyjątki zdefiniowane przez standard. double?
#include<stdio.h>
#include<math.h>
1.3.6 Ćwiczenia sprawdzające zrozumienie
tematu main() {
float x = pow(2.0,-75.0);
Zadanie 33 Niech b = 2, p = 4, emax = 3. Można float y = x * x;
obliczyć, że wtedy MAX = 15 oraz H = 1. Dla wartości if (y == 0.0)
x zamieszczonych w tabeli, oblicz rd (x) przy różnych printf("ZERO");
sposobach zaokrąglania. else
printf("NIE_ZERO");
x rd 1 (x) rd 2 (x) rd 3 (x) rd 4 (x) rd 5 (x) }
„parzysta „większy „kierunek „kierunek „kierunek
cyfra” moduł” +∞” −∞” 0”
16
15, 5 Zadanie 36 Jaki będzie wynik działania programu za-
pisanego w języku C
15
14, 75 #include<stdio.h>
14, 5
14, 25 main() {
−14, 25 float x = 1.0 / 8192.0;
float y = x / 8192.0;
if (y == 0.0)
Zadanie 34 Niech b = 2, p = 4, emax = 3. Można printf("ZERO");
obliczyć, że wtedy MAX = 15 oraz H = 1. Dla liczb else
zamieszczonych w tabelach, oblicz błędy bezwzględne i printf("NIE_ZERO");
względne przy różnych sposobach zaokrąglania. }
BŁĘDY BEZWZGLĘDNE
jeśli obliczenia dokonywane są w binarnej arytmetyce fl
x rB1 (x) rB2 (x) rB3 (x) rB4 (x) rB5 (x) z p = 24 i emax = 127, a jaki, gdy p = 11 i emax = 15?
„parzysta „większy „kierunek „kierunek „kierunek
cyfra” moduł” +∞” −∞” 0”
0 Zadanie 37 Załóżmy, że w języku C typowi float od-
15, 5 powiada binarna arytmetyka zmiennopozycyjna z para-
15 metrami p = 11 i emax = 15. Jaki będzie wynik dzia-
14, 75 łania poniższego programu w zależności od dodatniej
14, 5 wartości zmiennej n? Rozpatrz dwa przypadki sposobu
zaokrąglania
14, 25
−14, 25 1. do najbliższej z wyborem większego modułu,
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 25

2. do najbliższej z wyborem parzystej cyfry. Zadanie 42 Przetestuj działanie następującego pro-


gramu dla czterech wartości zmiennej x równych kolejno
#include<stdio.h>
2−p , 2−(p−1) , 2p , 2p+1 . Jeśli double jest arytmetyką
binary64, to p = 53, emax = 1023 i testowane wartości
main() {
można obliczyć tak, jak zostało to zrobione w zakomen-
int n = ... //tu wstawiamy dodatnie wartosci
towanych fragmentach. Wyjaśnij wyniki, przy założeniu,
int i;
że stosowane jest zaokrąglanie do najbliższej z wyborem
float w = 1.0;
parzystej cyfry.
for (i = 1; i <= n; i++)
w = w / 2; #include<stdio.h>
printf("%.17g",w); #include<math.h>
}
main() {
//double x = pow(2.0,-53.0);
//double x = pow(2.0,-52.0);
Zadanie 38 Czy możliwe jest jednoznaczne stwierdze-
//double x = pow(2.0,53.0);
nie przy pomocy obliczeń przeprowadzonych w arytme-
//double x = pow(2.0,54.0);
tyce zmiennopozycyjnej, czy dane dwa wektory [x1 , y1 ]
double y = x + 1;
i [x2 , y2 ] są prostopadłe?
double z = y - 1;
if (y > x)
Zadanie 39 Czy możliwe jest jednoznaczne stwierdze- printf("dobrze\n");
nie przy pomocy obliczeń przeprowadzonych w arytme- else
tyce zmiennopozycyjnej, czy zdana liczba α ∈ R jest printf("zle\n");
miejscem zerowym danego wielomianu if (z == x)
printf("dobrze\n");
w(x) = a0 + a1 x + a2 x2 ? else
printf("zle\n");
}
1.3.7 Zadania
Zadanie 43 Dana jest binarna arytmetyka przenośna
Zadanie 40 Rozpatrzmy arytmetykę zmiennopozy-
o parametrach p i emax i domyślnym sposobie zaokrą-
cyjną binary16 (emax = 15, p = 11). Wyznacz rd (x)
glania. Czy istnieją dodatnie liczby zmiennopozycyjne
dla następujących wartości x przy różnych sposobach
x, dla których zachodzi
zaokrągleń.
1. x = 216 · 0, 111110 111110 111110 111112 , fl (x + 1, 0) = 1,

2. x = 20 · 0, 011110 111110 1112 , Jeśli tak, opisz dokładnie wszystkie wartości x, dla któ-
3. x = 11111 012 · 2 ,
0 9 rych ta własność zachodzi.

4. x = 2−15 · 0, 12 ,
Zadanie 44 Dana jest binarna arytmetyka przenośna
5. x = 2−25 , o parametrach p i emax i domyślnym sposobie zaokrą-
6. x = −2−25 . glania. Znajdź najmniejszą dodatnią liczbę zmiennopo-
zycyjną a taką, że dla wszystkich liczb zmiennopozycyj-
nych x > a zachodzi
Zadanie 41 Dana jest binarna arytmetyka przenośna
o parametrach p i emax. Czy istnieją liczby zmiennopo- fl (x + 1, 0) = x.
zycyjne x, dla których zachodzi
Czy istnieje liczba zmiennopozycyjna y taka, że
1. fl (x · x) < 0,
2. fl (x · x) = 0, fl (y + 1, 0) = +∞?

3. fl (x · x) = +∞?
Jeśli tak, opisz dokładnie wszystkie wartości x, dla któ- Zadanie 45 Dana jest binarna arytmetyka przenośna
rych dana własność zachodzi. Zakładamy, że stosowane o parametrach p i emax i domyślnym sposobie zaokrą-
jest zaokrąglanie do najbliższej z wyborem parzystej glania. Rozpatrzmy liczby zmiennopozycyjne x należące
cyfry. do przedziału
2 ,2
 p p+1 
,
Oblicz, ile wynosi fl (x + 1, 0).
26 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Zadanie 46 Dana jest binarna arytmetyka zgodna ze Zadanie 50 Załóżmy, że double w C oznacza binarną
standardem IEEE 754-2008 oraz, że stosowane jest do- arytmetykę przenośną o parametrach p, emax oraz, że
myślne zaokrąglanie. Udowodnij, że jeśli x jest naj- stosowane jest zaokrąglanie do najbliższej z wyborem
większą dodatnią liczbą zmiennopozycyjną taką, że parzystej cyfry. Wprowadźmy oznaczenia
fl (1, 0 + x) = 1, 0, to x równa się ν. ( r )
h
a = min 2 ,
−p
,
2
Zadanie 47 Dana jest binarna arytmetyka przenośna ( r )
zgodna ze standardem IEEE 754-2008 oraz, że stoso- H
b = max 2 , MAX +
p+1
.
wane jest zaokrąglanie do najbliższej z wyborem pa- 2
rzystej cyfry. Wyznacz najmniejszą dodatnią liczbą
zmiennopozycyjną x taką, że fl (1.0 + x) 6= 1.0. i rozważmy poniższy program.
#include<stdio.h>
Zadanie 48 Załóżmy, że double w C oznacza binarną
arytmetykę przenośną o parametrach p, emax oraz, że main() {
stosowane jest zaokrąglanie do najbliższej z wyborem double A = ...//tu wstawiamy dodatnie liczby
parzystej cyfry. Rozważmy poniższy program. double x = A * A;
double y = (A + 1) - 1;
#include<stdio.h> double z = x / y;
printf("x=%lg,␣y=%lg,␣z=%lg\n\n",x,y,z);
main() { }
double A = ...//tu wstawiamy dodatnie liczby
double i; Jakie wartości będą zawierać zmienne x, y i z podczas
for(i = A; i < A+1; i++) wykonania instrukcji printf, jeśli zmienna A przecho-
printf("%lf␣",i); wuje liczbę zmiennopozycyjną z przedziału
}
1. (0, a],
Ile razy wykona się pętla jeśli zmienna A przechowuje 2. [b, MAX]?
liczbę zmiennopozycyjną z przedziału
1. (0, 2−p ],
Zadanie 51 Niech a, b, c będą liczbami zmiennopozy-
2. [2p , 2p+1 ), cyjnymi. Czy zawsze fl ((a + b) + c) = fl (a + (b + c))?
3. [2p+1 , MAX]?
Zadanie 52 Czy następujące pary (a) i (b) poleceń
języka C są równoważne? Jeśli nie to podaj przykłady
Zadanie 49 Załóżmy, że double w C oznacza binarną
zachodzących różnic. Zmienne x oraz y są typu zmien-
arytmetykę przenośną o parametrach p, emax oraz, że
nopozycyjnego zgodnego z pewną przenośną arytmetyką
stosowane jest zaokrąglanie do najbliższej z wyborem
binarną.
parzystej cyfry. Rozważmy poniższy program.
1. (a) tmp = x * x, y = sqrt(tmp);
#include<stdio.h>
(b) y = fabs(x);
main() {
2. (a) tmp = 4-x, y = 2 - sqrt(tmp);
double A = ...//tu wstawiamy dodatnie liczby
double i; (b) tmp = 4-x, y = x / (2+sqrt(tmp));
for(i = A; i <= A+1; i++){
3. (a) tmp = x * x, y = tmp / x;
printf("%.17lf\n",i);
if (i == A+2) (b) y = x;
break;
4. (a) tmp = exp(x), y = log(tmp)
}
} (b) y = x;

Ile razy wykona się pętla jeśli zmienna A przechowuje


liczbę zmiennopozycyjną z przedziału Zadanie 53 Czy instrukcje
1. (0, 2−p ], • y = 1111 + (x*x)/x - 1111;
2. [2p , 2p+1 ), • y = x;
3. [2p+1 , MAX]? są równoważne? Jeśli nie, to opisz jak najwięcej różnic.
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 27

Zakładamy, że zmienne x oraz y są typu zmiennopozycyj- binary64 (p = 53, emax = 1023) z zaokrąglaniem do
nego zgodnego z pewną przenośną arytmetyką binarną. najbliższej z wyborem parzystej cyfry?
1. fl (1.0/3.0),
Zadanie 54 Dana jest funkcja 2. fl (1e300 ∗ 1e300),
√ x
f (x) = 1 − 1−x= √ . 3. fl (1.0/0.0),
1+ 1−x
4. fl (1e − 400 ∗ 1e − 400),
Którym wzorem lepiej się posłużyć projektując algorytm
5. fl (sqrt(−1.0)),
obliczający f (x) dla wartości x bliskich zeru?
6. fl (+∞ ∗ 0),

Zadanie 55 Niech MIN i MAX oznaczają najmniejszą 7. fl (+∞/0)?


i największą dodatnią liczbę normalną, a h najmniej-
szą dodatnią liczbę podnormalną w pewnej binarnej
Zadanie 61 Dany jest ciąg bitów
arytmetyce przenośnej. Czy prawdziwe są równości i
stwierdzenia 0000 0000 1010 0000 0000 0000 0000 0000
1. fl (1/ MAX) = 0, oraz zmienne x i y zadeklarowane w C następująco
2. fl (1/h) powoduje nadmiar, float x;
unsigned long y;
3. fl (MAX +1) powoduje nadmiar,
4. fl (MIN · MIN) = 0, Zakładamy, że typ float jest zgodny z arytmetyką
binary32 (p = 24, emax = 127) i stosowane jest za-
5. fl (h · h) = 0?
okrąglanie do najbliższej z wyborem parzystej cyfry.
Zakładamy, że stosowane jest zaokrąglanie do najbliższej Typ unsigned long zajmuje 32 bity.
z wyborem parzystej cyfry.
1. Jaką liczbę reprezentuje dany ciąg bitów, jeśli prze-
chowuje wartość zmiennej x?
Zadanie 56 Dana jest arytmetyka przenośna binary32 2. Jaką liczbę reprezentuje dany ciąg bitów, jeśli prze-
(p = 24, emax = 127). Wyznacz najmniejszą dodatnią chowuje wartość zmiennej y? W typie unsigned
liczbę zmiennopozycyjną x taką, że fl (x/ MAX) > 0. long bity są interpretowane jako cyfry w systemie
Zakładamy, że stosowane jest zaokrąglanie do najbliższej dwójkowym.
z wyborem parzystej cyfry.
3. Podaj ciąg bitów, który koduje wynik działania
x=y+x, gdzie początkowe wartości x i y są zapisane
Zadanie 57 Jakie są wady algorytmu sqrt(a*a+b*b)? przy pomocy danego ciągu bitów.
Podaj algorytm unikający ich.
Zadanie 62 W pewnym programie w C zadeklarowano
Zadanie 58 Niech a oraz b będą niezerowymi liczbami zmienne x,y,z w następujący sposób:
zmiennopozycyjnymi. Jakie są wady algorytmu oblicza- unsigned long x;
nia wartości wyrażenia float y,z;
a+b
, Przyjmujemy, że zmienne typu unsigned long oraz
a2 + b2
float są przechowywane na 16 bitach. Typ float jest
który jest zaprogramowany zgodnie z powyższym zapi- zgodny z arytmetyką binary16 (emax = 15, p = 11). W
sem. Podaj algorytm unikający ich. typie unsigned long bity są interpretowane jako cyfry
w systemie dwójkowym. Jaki ciąg bitów reprezentuje
wartość zmiennej z po wykonaniu instrukcji przypisania
Zadanie 59 Zapisz algorytm obliczający iloczyn n z=x*y; jeśli przed jej wykonaniem w komórkach pamięci
liczb zmiennopozycyjnych. Algorytm ma unikać nad- odpowiadającym zmiennym x i y znajdowały się ciągi
miaru i niedomiaru. bitów:
Wskazówka: Opracuj niestandardowy sposób przechowywa-
nia wyniku. x: 1000 1000 1000 0000 , y: 0100 0100 0100 0000 ?
Zakładamy, że stosowane jest zaokrąglanie w kierunku
Zadanie 60 Jakie wyjątki będą zgłaszane podczas +∞.
wykonywania następujących działań w arytmetyce
28 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

x rW1 (x) rW2 (x) rW3 (x) rW4 (x) rW5 (x)
Zadanie 63 Napisz dwie funkcje w języku C, który 0 nieokreślone
wyznaczą parametry p i m arytmetyki double dostępnej
1 1
15, 5 +∞ +∞ +∞ 31 31
w Twoim komputerze. Nie używaj w tym programie 15 0 0 0 0 0
1 1 1 3 3
biblioteki float.h. Przetestuj je. 14, 75 59 59 59 59 59
1 1 1 1 1
14, 5 29 29 29 29 29
1 1 3 1 1 1
14, 25 57 57 57
= 19 57 57
1 1 1 3 1 1
Zadanie 64 Napisz w języku C funkcje o poniższych −14, 25 57 57 57 57
= 19 57
nagłówkach. Zadanie 35 binary64 NIE_ZERO, binary32 ZERO Zadanie 36
„mniejsza” ZERO,„większa” NIE_ZERO Zadanie 37 z wyborem
/* 2−n dla n = 1, 2, 3, . . . , 24,
wczytuje wektor z pliku, zwraca ilosc parzystej cyfry z wyborem więk-
0 w p.p.,
wspolrzednych lub -1 w przypadku bledu
2−n dla n = 1, 2, 3, . . . , 24,

*/ szego modułu Zadanie 38 nie
2−24 w p.p.
int wczytaj_wektor(FILE *plik, double wekt[]);
Zadanie 39 nie Zadanie 40
1. L = MAX = (−1)0 · 1, 111110 111112 215
/*
pc wm +∞ −∞ 0
wypisuje wektor wekt o n wspolrzednych
+∞ +∞ +∞ L L
*/
2. L = (−1) · 1, 11111 111112 · 2−2 ,
0 0
void wypisz_wektor(double wekt[], int n);
P = (−1)0 · 1, 000000 000002 · 2−1
pc wm +∞ −∞ 0
/* P P P L L
oblicza iloczyn skalarny wektorow w1 i w2,
pc wm +∞ −∞ 0
oba maja po n wspolrzednych 3.
x x x x x
*/
pc wm +∞ −∞ 0
double il_skal(double w1[], double w2[],int n); 4.
x x x x x
5. L = +0, P = (−1)0 · 0, 000000 000012 · 2−14
Wykorzystaj te funkcje do stwierdzenia, czy dwa wek- pc wm +∞ −∞ 0
tory są ortogonalne. Przetestuj program, a następnie L P P L L
zaproponuj cztery zestawy danych tak, by zilustrować 6. L = (−1)1 · 0, 000000 000012 · 2−14 , P = −0
następujące zachowania programu: pc wm +∞ −∞ 0
Zadanie 41 1. nie istnieją
1. wektory są ortogonalne i program to stwierdza, P L P
p
L
p
P
h
liczby 2. |x| 6 3. |x| > MAX + H
2. wektory nie są ortogonalne i program to stwierdza, 2 2
Zadanie 42
3. wektory są ortogonalne, ale program stwierdza, że x napis na ekranie
nie są, 2−(p−1) dobrze, dobrze
2−p dobrze, zle
4. wektory nie są ortogonalne, ale program stwierdza, 2p zle, zle
że są. 2p+1 zle, dobrze
Zadanie 43 [−2−p−1 , 2−p ] Zadanie 44 a = 2p+1 , nie
Odpowiedzi Zadanie 45 
x gdy ostatnia cyfra x jest parzysta
fl (x + 1.0) =
x + 2 w p.p.
Zadanie 33
Zadanie 47 2−p (1 + 21−p ) Zadanie 48 1. pętla wykona
x rd 1 (x) rd 2 (x) rd 3 (x) rd 4 (x) rd 5 (x) się jeden raz 2. gdy fl (A + 1) = A, to nie wykona ani jednego
16 +∞ +∞ +∞ 15 15 obrotu gdy fl (A + 1) = A + 2, to pętla wykona się jeden raz
15, 5 +∞ +∞ +∞ 15 15 3. pętla nie wykona ani jednego obrotu Zadanie 49 1. 2, 2. gdy
15 15 15 15 15 15 fl (A+1) = A, to pętla będzie nieskończona, gdy fl (A+1) = A+2, to
14, 75 15 15 15 14 14 pętla wykona się dwa razy. 3. gdy fl (A+2) = A+4, to pętla będzie
14, 5 14 15 15 14 14 nieskończona, dla pozostałych liczb przy pierwszym wykonaniu
14, 25 14 14 15 14 14 pętla zostanie przerwana instrukcją break Zadanie 50 1. x i y
−14, 25 -14 -14 -14 -15 -14 zawierają liczbę 0, z zawiera NaN, 2. x zawiera +∞, y zawiera
Zadanie 34 A,z zawiera +∞. Zadanie 51 nie zawsze Zadanie 52 nie
są równoważne Zadanie 53 nie są równoważne Zadanie 54
x rB1 (x) rB2 (x) rB3 (x) rB4 (x) rB5 (x)
drugim Zadanie 55 1. nieprawdziwa 2. prawdziwe 3. nie-
0 0 0 0 0 0
15, 5 −∞ −∞ −∞ 0.5 0.5 prawdziwe 4. prawdziwa 5. prawdziwa Zadanie 56 x = 22−p
15 0 0 0 0 0 Zadanie 60 1. niedokładny wynik, 2. nadmiar, 3. dzielenie
14, 75 −0.25 −0.25 −0.25 0.75 0.75 przez 0, 4. niedomiar, niedokładny wynik, 5. niepoprawna opera-
14, 5 0.5 −0.5 −0.5 0.5 0.5 cja, 6. niepoprawna operacja, 7. dzielenie przez 0 Zadanie 61
14, 25 0.25 0.25 −0.75 0.25 0.25 1. 5·2−128 2. 5·221 3. 0|100 1011 0|010 0000 0000 0000 0000 0000
−14, 25 −0.25 −0.25 −0.25 0.75 −0.25 Zadanie 62 0|111 11|00 0000 0000
Rozdział 2

Zadanie numeryczne i algorytm

2.1 Uwarunkowanie zadania • wybrać wśród podobnych algorytmów ten, który najle-
piej pasuje do rozwiązywanego problemu,
Analiza numeryczna zajmuje się oszacowaniem dokładności • interpretować otrzymane wyniki.
wyników obliczeń obarczonych błędami. Źródłami błędów Studiowanie metod numerycznych pozwala też nabrać na-
są m.in. wyku uważnego spojrzenia na z pozoru proste zadania in-
• błędy modelu (konieczność zastąpienia zbyt złożonych formatyczne, np. wystrzegać się sytuacji prowadzących do
rzeczywistości uproszczonym modelem matematycz- nadmiaru, unikać niepotrzebnych działań arytmetycznych.
nym), Przykład Gdy chcemy wyznaczyć odległość punktu (x, y)
• błędy aproksymacji (konieczność zastąpienia zbyt dłu- od początku układu współrzędnych i zastosujemy algorytm
giego procesu procesem dostatecznie krótkim, np. za- sqrt(x*x+y*y)
stąpienie szeregu nieskończonego sumą skończoną).
• niedokładności danych wejściowych (np. pomiarów), to dość łatwo wyjdziemy poza zakres arytmetyki. Wystarczy,
że rd (x2 ) = +∞ lub rd (y 2 ) = +∞ Stosując inny algorytm
• błędy zaokrągleń (liczby rzeczywiste reprezentowane są możemy tego uniknąć.

przez skończoną ilość bitów),
Szczególny nacisk kładzie się na badanie
2.1.1 Błędy zaokrągleń
• czy zadanie nadaje się do rozwiązania w arytmetyce
komputera, Przypomnijmy, że jeśli reprezentujemy liczbę rzeczywistą
• oraz jak zachowują się algorytmy realizowane w aryt- x w arytmetyce zmiennopozycyjnej, to może zajść jeden z
metyce zmiennopozycyjnej. przypadków zamieszczonych w poniższej tabeli. Zakładamy,
że zastosowano zaokrąglanie do najbliższej.
Badanie, czy zadanie nadaje się do rozwiązania w arytmetyce
komputera nazywa się badaniem uwarunkowania zadania. Błąd
Gdy odpowiedź jest negatywna podejmuje się próby prze-
bezwzględny względny
formułowania zadania i ponowne jego badanie. Dopiero dla
„dobrych” zadań (czyli dobrze uwarunkowanych) szuka się x = 0 rB (0) = 0 nieokreślony
wiarygodnych algorytmów pod względem dokładności pro-
dukowanych wyników oraz dobrych ze względu na koszty |x| ∈ (0, MIN) | rB (x)| 6 MIN ν może być dowol-
czasowy i pamięciowy. nie duży
|x| ∈ [MIN, MAX + 2 ) | rB (x)| 6 |x|ν, rW (x) 6 ν
H
Czy zadanie nadaje się do rozwiązania
może być bardzo
w arytmetyce komputera?
duży
(badanie uwarunkowania)
|x| ∈ [MAX + H2 , +∞) | rB (x)| = +∞ rW (x) = +∞
NIE Przypomnijmy też, że arytmetyka zmiennopozycyjna spełnia
TAK
Należy próbować dla x, y, z będących liczbami zmiennopozycyjnymi równości
Można szukać
zastąpić zadanie
algorytmów.
innym zadaniem. fl (x + y) = rd (x + y),
fl (x − y) = rd (x − y),
Istnieje wiele pakietów programów numerycznych, mogłoby
się więc wydawać zbędne studiowanie tej dziedziny. Jednak fl (x ∗ y) = rd (x ∗ y),
nawet posługując się nimi potrzeba umieć fl (x/y) = rd (x/y), dla y 6= 0,

• przypisać zadaniu praktycznemu odpowiednie zadanie fl (sqrt(x)) = rd ( x), dla x > 0,
numeryczne, fl (FMA(x, y, z)) = rd (x ∗ y + z).
• ocenić, czy zadanie jest dobrze uwarunkowane,

29
30 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Analizy błędów przeprowadzane dla zadań i algorytmów 2.1.2 Zadania numeryczne


wykonywane są przy założeniu, że wszystkie pojawiające
się liczby x są takie, że |x| ∈ [MIN, MAX + H2 ), czyli ich Rozwiązanie zadania numerycznego polega na wyznacze-
reprezentacje są liczbami normalnymi. Nie uwzględnia się niu wyników w1 , w2 , . . . , wm ∈ R na podstawie danych
więc zjawiska nadmiaru, ani niedomiaru — są one zwykle d1 , d2 , . . . , dn ∈ R, przy czym zależność między danymi i
omawiane osobno, jako szczególne przypadki danych. W tym wynikami jest ustalona. Liczby n i m są naturalne i cha-
przypadku mamy gwarancję, że błąd względny jest bardzo rakteryzują odpowiednio rozmiary danych wejściowych i
mały, bo wyników.
rW (x) 6 ν. Wszystkie dane tworzą wektor
Okazuje się, że tą nierówność można zapisać w sposób rów-
 
d1
noważny w inny sposób, który będzie bardziej przydatny  d2 
podczas analiz.  ..  = [d1 d2 . . . dn ]T
 
.
Fakt 5 Niech x 6= 0. Nierówność dn
rW (x) 6 ν z przestrzeni Rn . Wszystkie wyniki tworzą wektor
 
jest równoważna stwierdzeniu, że w1
 w2 
∃|ε|6ν rd (x) = x(1 + ε).  ..  = [w1 w2 . . . wm ]T
 
 . 
wm
Dowód Przypuśćmy, że x 6= 0 i istnieje ε takie, że |ε| 6 ν i
z przestrzeni Rm . Dziedzina D zadania numerycznego φ
rd (x) = x(1 + ε). Z ostatniej równości wyznaczmy ε:
nie musi być równa całej przestrzeni Rn , może być jedynie
rd (x) = x(1 + ε) | : x podzbiorem tej przestrzeni, czyli D ⊂ Rn . Przypomnijmy,
rd (x) że zamiast pisać
=1+ε
x „φ jest to funkcja o dziedzinie zawartej w Rn i
rd (x) przeciwdziedzinie w Rm ”
ε= −1
x
rd (x) − x można posłużyć się skróconą notacją
ε= .
x φ : D → Rm , D ⊂ Rn .
Koniunkcja
rd (x) − x
|ε| 6 ν ∧ ε =
x Definicja 8 Zadanie numeryczne jest to funkcja
jest równoważna nierówności
rd (x) − x
φ : D → Rm , D ⊂ Rn ,
6 ν.
φ(d1 , d2 , . . . , dn ) = [w1 w2 . . . wm ]T ,

x

Korzystając z definicji błędu względnego ostatnią nierówność gdzie m i n są liczbami naturalnymi. Minimalnym zało-
zapisujemy w sposób równoważny, jako żeniem o funkcji φ jest jej ciągłość.
rW (x) 6 ν. 
Zwróćmy uwagę, że w definicji pojawił się uproszczony zapis
Dla celów analiz numerycznych przyjmuje się, że reprezen-
φ(d1 , d2 , . . . , dn ),
tacje wszystkich danych i wyników (łącznie z pośrednimi)
są liczbami normalnymi. Zatem dla rozpatrywanych w który zastępuje
analizach liczb x, y, z zachodzi φ([d1 d2 . . . dn ]T )
∃|ε|6ν rd (x) = x(1 + ε), wskazujący, że dane tworzą wektor z przestrzeni Rn .
∃|ε|6ν fl (x + y) = (x + y)(1 + ε), Założenie o ciągłości funkcji jest istotne, bo w przypadku
∃|ε|6ν fl (x − y) = (x − y)(1 + ε), funkcji nieciągłych niewielkie zaburzenie danych (z którym
∃|ε|6ν fl (x ∗ y) = (x ∗ y)(1 + ε), musimy się przecież liczyć, bo występują błędy zaokrągleń)
prowadziłoby do dużych zmian wyników. Wyniki byłyby
∃|ε|6ν fl (x/y) = (x/y)(1 + ε), dla x 6= 0,
√ niewiele warte.
∃|ε|6ν fl (sqrt(x)) = ( x)(1 + ε), dla x > 0,
Nie każde zadanie można rozwiązać przy pomocy komputera,
∃|ε|6ν fl (FMA(x, y, z)) = (x ∗ y + z)(1 + ε).
tzn. nie zawsze wynik, uzyskany nawet przy zastosowaniu
Pamiętajmy, że powyższe zdania logiczne oznaczają do- najlepszych algorytmów, będzie wiarygodny. Niektóre za-
kładnie tyle, że podczas obliczeń dochodzi do zaokrągleń dania są tak „wrażliwe” na zaburzenia danych, że nawet
obarczonych błędami względnymi nie większymi niż ν. niewielkie błędy danych mogą powodować, że wynik zmienia
się drastycznie.
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 31

Przykład (Wilkinson) Rozpatrzmy zadanie obliczania Rozpatrzmy pewne zadanie


wszystkich pierwiastków wielomianu w dwudziestego stopnia
φ : D → Rm , D ⊂ Rn ,
w(x) = a20 x20 + . . . + a1 x + a0 i pewne dane dokładne (będące liczbami rzeczywistymi)

na podstawie danych współczynników ai ∈ R dla i = d1 , d2 , . . . , dn .


0, 1, . . . , n. Zadanie można tu potraktować jako funkcję Gdy te dane zapiszemy w pamięci komputera, to zostaną one
zastąpione ich reprezentacjami zmiennopozycyjnymi, czyli
φ : R21 → R40 ,
danymi zaburzonymi
gdyż wielomian stopnia 20-go posiada dokładnie 20 pier- rd (d1 ), rd (d2 ), . . . , rd (dn )
wiastków zespolonych, o ile policzymy je z uwzględnieniem
spełniającymi zależności
krotności. Ponieważ potrzebujemy dwóch liczb rzeczywistych
do opisu jednej liczby zespolonej, to do opisu wszystkich rd (d1 ) = d1 (1 + ε1 ),
pierwiastków potrzeba 40 liczb i wszystkie je traktujemy rd (d2 ) = d2 (1 + ε2 ),
jako wyniki.
..
Dla zilustrowania problemu „wrażliwości” zadań na dane .
wybierzmy wielomian w, którego pierwiastkami są liczby rd (dn ) = dn (1 + εn ),
1, 2, . . . , 20 dla pewnych |εi | 6 ν, gdzie i = 1, 2, . . . , n. Badanie uwa-
runkowania polega na badaniu, jak te małe względne błędy
w(x) = (x − 1)(x − 2)(x − 3) . . . (x − 19)(x − 20)
danych wpłyną na wyniki, a dokładniej na błąd względny
= a20 x20 + a19 x19 + a18 x18 + . . . + a1 x + a0 . wyników. W przypadku, gdy mamy do czynienia z jednym
wynikiem, czyli
Jego współczynniki ai można obliczyć, w szczególności
φ : D → R, D ⊂ Rn ,
a19 = −(1 + 2 + . . . + 20) = −210.
to błąd względny wyniku opisany jest wyrażeniem
Zaburzymy teraz nieznacznie tylko jeden z jego współczyn- |wynik dla danych zaburzonych − wynik dla danych dokładnych|
ników: zamiast a19 = −210 weźmiemy af ,
19 = a19 (1 + ε) przy |wynik dla danych dokładnych|
ε = −(2 · 210) . Otrzymamy wielomian w
23 −1
czyli
e

w(x)
e = a20 x20 + af 19 x 19
+ a18 x 18
+ . . . + a1 x + a 0 . |φ(d1 (1 + ε1 ), . . . , dn (1 + εn )) − φ(d1 , d2 , . . . , dn )|
.
|φ(d1 , d2 , . . . , dn )|
niewiele różniący się od w, bo błąd względny tylko jednej z
danych wynosi zaledwie Jeśli wyników jest więcej
φ : D → Rm , D ⊂ Rn , m > 1,
|af19 − a19 | 1
= 23 < 0, 06 · 10 . −8
|a19 | 2 · 210 to wyniki są wektorami. Nie można obliczać wartości bez-
względnej z wektora. Zamiast niej stosuje się normy wek-
Okazuje się jednak, że ten nowy wielomian ma już miejsca torów. Jest wiele norm wektorów, ale na użytek badania
zerowe zespolone i najbliższymi liczbie 15 są pierwiastki uwarunkowania zadania zwykle stosuje się tzw. p–te normy.
13, 992358137 ± 2, 518830070i. Błąd względny wyniku dla
pierwiastka 15 wynosi zatem Definicja 9 Niech p ∈ [1, ∞]. Określamy p–tą normę
wektora ~x = [x1 , x2 , . . . , xn ]T ∈ Rn jako liczbę
|13, 992358137 ± 2, 518830070i − 15| s
|15| n
|xi |p dla p ∈ [1, ∞),
 P
p

1, 0076418632 + 2, 518830072 k~xkp =
p
i=1
= > 0, 05.
15  max |xi | dla p = ∞.


i=1,...,n
Błąd względny wyniku jest więc około 108 razy większy niż
błąd względny zaburzonej danej. Niewielki błąd względny
danej przeniósł się na wynik z mnożnikiem rzędu 108 .  Przykład Dla wektora ~ x = [2, −4, 2, 0]T ∈ R4 policzmy
kilka p–tych norm:
v
u 4 4
2.1.3 Błąd względny wyniku uX X
k~xk = t 1
|x |1 = 1 |x | i i
i=1 i=1
Jeśli niewielkie względne zmiany danych zadania powodują
niewielkie względne zmiany jego wyników to zadanie takie = |2| + | − 4| + |2| + |0| = 8,
nazywamy dobrze uwarunkowanym dla tych danych. Podczas
v
u 4
badania uwarunkowania zadania (jak już było powiedziane)
uX
= |x |2 = 2 |2|2 + | − 4|2 + |2|2 + |0|2
2
p
k~xk2 t
i
zakładamy zawsze, że reprezentacje danych i wyników są i=1
liczbami normalnymi. Nie dochodzi więc ani do nadmiaru, √ √
= 24 = 2 6,
ani niedomiaru, w szczególności wynik zadania nie jest równy
zeru. k~xk∞ = max |xi | = max{|2|, | − 4|, |2|, |0|} = 4. 
i=1,...,4
32 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Jeśli n = 1 to p–ta norma w R jest tożsama z wartością dla konkretnych wartości εi spełniających nierówności |εi | 6
bezwzględną niezależnie od wartości p ∈ [1, ∞]. Normy ν. Dla każdej liczby di można w zadanej arytmetyce zmien-
są uogólnieniem wartości bezwzględnej. Przypomnijmy, że nopozycyjnej wyznaczyć dokładnie liczbę εi . Podejście takie
wartość bezwzględna spełnia cztery podstawowe własności. jest jednak niepraktyczne, bo
Fakt 6 Wartość bezwzględną jest funkcją o dziedzinie R • dla każdej arytmetyki trzeba by przeprowadzać osobną
i przeciwdziedzinie R spełniającą poniższe warunki analizę,
1. ∀x∈R |x| > 0, • analiza byłaby zbyt szczegółowa i z tego powodu niemoż-
liwa do przeprowadzenia w przypadku większej liczby
2. |x| = 0 wtedy i tylko wtedy, gdy x = 0,
danych.
3. ∀x∈R ∀c∈R |c · x| = |c| · |x|,
Stosujemy zatem inne podejście. Polega ono na wyznacze-
4. ∀x,y∈R |x + y| 6 |x| + |y| (nierówność trójkąta). niu maksymalnego względnego błędu wyniku, gdy rozwa-
żymy dowolny błąd względny danych nieprzekraczający ν.
Nierówność trójkąta dla pewnych x i y staje się równością. Będziemy więc dopuszczać wszystkie możliwe zaburzenia
danych spełniające warunek |εi | 6 ν, czyli badać wielkość
Fakt 7 Równość |x + y| = |x| + |y| zachodzi dokładnie
wtedy, gdy x > 0 ∧ y > 0 lub x 6 0 ∧ y 6 0. kφ(d1 (1 + ε1 ), . . . , dn (1 + εn )) − φ(d1 , . . . , dn )kp
sup .
|εi |6ν kφ(d1 , d2 , . . . , dn )kp
Okazuje się, że takie same własności spełniają p–te normy.
Takie podejście jest uzasadnione również tym, że błędy mogą
Fakt 8 Norma p–tą jest funkcją o dziedzinie Rn i prze- pochodzić z innych źródeł niż reprezentacja liczb rzeczywi-
ciwdziedzinie R spełniającą poniższe warunki stych w pamięci komputera, np. mogą to być błędy pomia-
1. ∀~x∈Rn k~xkp > 0, rów. Występująca w nierówności |εi | 6 ν precyzja arytme-
tyki może być wtedy zastąpiona większą liczbą.
2. k~xkp = 0 wtedy i tylko wtedy, gdy ~x = 0,
Stosowaną miarą „jakości” zadania jest tzw. wskaźnik uwa-
3. ∀~x∈Rn ∀c∈R kc · ~xkp = |c| · k~xkp , runkowania. Jeśli jest on stosunkowo mały, to mówimy ,że
4. ∀~x,~y∈Rn k~x + ~y kp 6 k~xkp + k~y kp (nierówność trój- zadanie jest dobrze uwarunkowane, a jeśli nie, to że jest źle
kąta). uwarunkowane.
Definicja 10 Dane jest zadanie numeryczne
Często używając p–tej normy pomijamy p w zapisie kxkp
i stosujemy kxk, jeśli tylko z kontekstu wiadomo, o którą φ : D → Rm , D ⊂ Rn .
normę chodzi.
Oznaczmy przez U (d1 , d2 , . . . , dn ) maksymalny błąd
Teraz możemy określić błąd względny wyniku zadania nu-
względny wyniku jaki może się pojawić, gdy dane zostaną
merycznego w przypadku dowolnej liczby wyników
zaburzone z błędem względnym nie przekraczającym ν,
φ : D → Rm , D ⊂ Rn . czyli U (d1 , d2 , . . . , dn ) jest równe

Jest nim wyrażenie kφ(d1 (1 + ε1 ), . . . , dn (1 + εn )) − φ(d1 , . . . , dn )kp


sup .
kwynik dla danych zaburzonych − wynik dla danych dokładnychkp |εi |6ν kφ(d1 , d2 , . . . , dn )kp
,
kwynik dla danych dokładnychkp Liczbę
czyli
1
condp (d1 , d2 , . . . , dn ) = U (d1 , d2 , . . . , dn )
kφ(d1 (1 + ε1 ), . . . , dn (1 + εn )) − φ(d1 , d2 , . . . , dn )kp ν
,
kφ(d1 , d2 , . . . , dn )kp
nazywamy p-tym wskaźnikiem uwarunkowania zadania φ
gdzie p ∈ [1, ∞]. dla danych d1 , . . . , dn .

Przypomnijmy, że gdy zadanie ma tylko jeden wynik, czyli


2.1.4 Wskaźnik uwarunkowania m = 1, to zamiast p–tych norm używamy wartości bez-
względnej.
Zapisując dane dokładne
Wskaźnik uwarunkowania informuje o tym, z jakim maksy-
d1 , d2 , . . . , dn . malnie mnożnikiem błędy względne danych mogą się prze-
nieść na błędy względne wyniku. Jeśli condp dla danych
w pamięci komputera zastępujemy je reprezentacjami zmien-
d1 , d2 , . . . , dn przyjmuje niewielką wartość (np. 2, 10, 100),
nopozycyjnymi
to zadanie jest dobrze uwarunkowane. Określenie, kiedy
rd (d1 ) = d1 (1 + ε1 ), wskaźnik uwarunkowania jest niewielki zależy od precyzji
arytmetyki i żądanej dokładności wyników. Wskaźnik uwa-
rd (d2 ) = d2 (1 + ε2 ),
runkowania może być również pomocny przy wyborze aryt-
..
. metyki: sugerować użycie silniejszej, gdy jego wielkość nie
rd (dn ) = dn (1 + εn ),
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 33

jest bardzo mała. W sposób nieformalny liczbę Załóżmy, że |ε1 |, |ε2 | 6 ν, otrzymamy wtedy
log2 (ν) − log2 (condp (d1 , d2 , . . . , dn )) |d1 ||ε1 | + |d2 ||ε2 | |d1 |ν + |d2 |ν |d1 | + |d2 |
6 = ν.
|d1 + d2 | |d1 + d2 | |d1 + d2 |
można interpretować jako liczbę cyfr znaczących wyniku,
którym można ufać. Udowodniliśmy zatem, że dla dowolnych |ε1 |, |ε2 | 6 ν zacho-
Badanie uwarunkowania zadania polega na wyznaczeniu dzi
wskaźnika uwarunkowania zadania i ocenie, czy jest on |φ(d1 (1 + ε1 ), d2 (1 + ε2 )) − φ(d1 , d2 )| |d1 | + |d2 |
mały, czy duży. 6 ν,
|φ(d1 , d2 )| |d1 + d2 |
Dla wielu zadań dokładne wyznaczenie condp (d1 , d2 , . . . , dn ) stąd
jest bardzo trudne i wtedy zadowalamy się w miarę dokład- |d1 | + |d2 |
U (d1 , d2 ) 6 ν.
nymi oszacowaniami tej wielkości. Zatem staramy się znaleźć |d1 + d2 |
liczby A(d1 , . . . , dn ) i B(d1 , . . . , dn ) różniące się co najwyżej
Oszacowanie to jest dokładne, bo dla ε1 = sign(d1 )ν oraz
kilu- lub kilkudziesięciokrotnie od siebie takie, że
ε2 = sign(d2 )ν wszystkie nierówności stałyby się równo-
B(d1 , . . . , dn ) 6 condp (d1 , d2 , . . . , dn ) 6 A(d1 , . . . , dn ). ściami. Wystarczy bowiem zauważyć, że d1 sign(d1 ) = |d1 | i
d2 sign(d2 ) = |d2 |
Zdarza się często, że dla uproszczenia liczbę A(d1 , . . . , dn )
przyjmujemy za wskaźnik uwarunkowania. Jest to podyk- |φ(d1 (1 + ε1 ), d2 (1 + ε2 )) − φ(d1 , d2 )|
towane zwykle tradycją dotyczącą konkretnego zadania i |φ(d1 , d2 )|
wygodą. |d1 ε1 + d2 ε2 |
=
Podkreślmy, że uwarunkowanie jest cechą samego zadania, |d1 + d2 |
niezależną od metody jego rozwiązania. Przed przystąpie- |d1 sign(d1 )ν + d2 sign(d1 )ν|
niem do szukania algorytmów, badamy uwarunkowanie, by =
|d1 + d2 |
wiedzieć, czy w ogóle jest sens rozwiązywać zadanie przy |d1 |ν + |d2 |ν
pomocy komputera. Jeśli zadanie okaże się źle uwarunko- =
|d1 + d2 |
wane, to być może trzeba zawęzić dziedzinę zadania, albo
postarać się przeformułować zadanie tak, by uzyskać zadanie |d1 | + |d2 |
= ν.
równoważne matematycznie, ale dużo lepiej uwarunkowane. |d1 + d2 |

Przykład Układy równań Zatem


|d1 | + |d2 |
( ( U (d1 , d2 ) = ν
x + 10
1
y=1 x+ 10 y = 1
1
|d1 + d2 |
oraz
1
10 x + 1000 y = 100
1 1
x+ 100 y = 10
1 1
i
|d1 | + |d2 |
są równoważne, bo drugi powstał z pierwszego przez pomno- cond(d1 , d2 ) = .
|d1 + d2 |
żenie obu stron drugiego równania przez 10. Zadanie nume-
ryczne polegające na znalezieniu rozwiązania układu mając Uwarunkowanie zadania zależy od tego, czy cond(d1 , d2 ) jest
dany współczynniki przy niewiadomych i wyrazy wolne sto- duży, czy mały. Jeśli d1 oraz d2 są jednakowych znaków,
jące po prawych stronach okazuje się być lepiej uwarunko- to cond(d1 , d2 ) = 1. Zadanie jest wtedy bardzo dobrze
wanym w przypadku drugiego układu. uwarunkowane. Jeśli jednak d1 i d2 mają różne znaki, to
cond może być duży. Dzieje się to wtedy, gdy d1 i d2 są

stosunkowo duże i mają podobne wartości modułów, np. gdy
Przykład Zbadajmy uwarunkowanie zadania φ : R → R 2
d1 > 21 i d2 = −(d1 + ν). Wtedy
obliczania wartości wyrażenia φ(d1 , d2 ) = d1 + d2 . Ponie-
waż przeciwdziedziną funkcji φ jest R, to zamiast norm d1 + d1 + ν 2d1 + ν 1+ν
cond(d1 , d2 ) = = >
można użyć wartości bezwzględnej. Oszacujmy z góry błąd ν ν ν
względny wyniku:
i błąd względny wyniku może być rzędu 1 + ν, co oznacza
|φ(d1 (1 + ε1 ), d2 (1 + ε2 )) − φ(d1 , d2 )| utratę 100% informacji. Poniżej zamieszczam wykres funkcji
|φ(d1 , d2 )| cond(d1 , d2 ).
|d1 (1 + ε1 ) + d2 (1 + ε2 ) − (d1 + d2 )|
=
|d1 + d2 |
|d1 ε1 + d2 ε2 |
= .
|d1 + d2 |
Zastosujmy nierówność trójkąta dla licznika oraz własność,
że moduł iloczynu jest równy iloczynowi modułów:
|d1 ε1 + d2 ε2 | |d1 ε1 | + |d2 ε2 |
6
|d1 + d2 | |d1 + d2 |
|d1 ||ε1 | + |d2 ||ε2 |
= .
|d1 + d2 |
34 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

iloczynu oraz z założeń o αi i βi


40 n
|ai ||bi |(|αi | + |βi | + |αi ||βi |)
P
|Se − S| i=1
30 6 n
|S| P
ai bi

cond(d ,d )
2


i=1
1

20
n
P
|ai bi |
10
6 i=1 (2ν + ν 2 )
P n
ai bi
0
i=1
60
n
P
40
20
|ai bi |
d
0
-40
-60
= (2 + ν) i=1
n
ν.
1 -20 -20 P
-40 20
0
d
ai bi
40 2

-60
60 i=1

 Zatem
n
Przykład Zbadajmy uwarunkowanie zadania obliczania wy-
P
|ai bi |
rażenia U (a1 , . . . , an , b1 , . . . , bn ) 6 (2 + ν) i=1 ν.
Pn
ai bi
n

X
S = S(a1 , a2 , . . . , an , b1 , b2 , . . . , bn ) = ai bi , i=1

i=1
Z drugiej strony, biorąc αi = βi = sign(ai bi )ν otrzymujemy,
gdzie liczby ai , bi są rzeczywiste takie, że S 6= 0. Danymi że wszystkie wyrazy w sumie
dokładnymi są a1 , a2 , . . . , an , b1 , b2 , . . . , bn , a danymi zabu- n
rzonymi ai (1 + αi ), bi (1 + βi ) dla i = 1, 2, . . . , n, gdzie
X
ai bi (αi + βi + αi βi )
|αi | 6 ν, |βi | 6 ν. Wynik dla danych dokładnych to i=1

n
X są nieujemne. Dla tych konkretnych zaburzeń zachodzi
S= ai bi , zatem nierówność
i=1
n
ai bi (αi + βi + αi βi )
P
a dla danych zaburzonych


i=1
U (a1 , . . . , an , b1 , . . . , bn ) >


n Pn
X a b
Se = ai (1 + αi )bi (1 + βi ). i i


i=1
i=1 n
ai bi (αi + βi + αi βi )
P
Aby zbadać uwarunkowanie badamy błąd względny rozwią- = i=1
zania P n
| ai bi |
n n i=1
a b (1 + αi )(1 + βi ) −
P P
ai bi n
i=1 i i ai bi (2 sign(ai bi )ν + ν 2 )

|Se − S|
P
i=1
=


n i=1
|S| P
ai bi

=
P n

.

i=1
ai bi

i=1

n n
ai bi (1 + αi + βi + αi βi ) −
P P
ai bi

Ponieważ ai bi sign(ai bi ) = |ai bi | otrzymujemy

= i=1 n
P


i=1

ai bi n
(2|ai bi |ν + ai bi ν 2 )
P
i=1
i=1
U (a1 , . . . , an , b1 , . . . , bn ) >
n
ai bi (αi + βi + αi βi )
P n
P
ai bi

= i=1

i=1
n
P
ai bi n
(2|a b |ν − |a b |ν 2 )
P
i=1 i i i i
i=1
>
Korzystamy teraz z nierówności trójkąta i własności modułu
n
P
ai bi

i=1
n
P
|ai bi |
= (2 − ν) i=1
n
ν.

P ai bi

i=1

Ponieważ oszacowania górne i dolne są bliskie sobie, to za


Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 35

wskaźnik uwarunkowania można przyjąć 7. Podaj cztery podstawowe własności p–tej normy wek-
n
tora.
P
|ai bi | 8. Zapisz błąd względny wyniku zadania numerycznego w
cond(a1 , . . . , an , b1 , . . . , bn ) = 2 i=1
Pn . przypadku dowolnej liczby wyników.
ai bi

9. Podaj „uproszczoną” definicję wskaźnika uwarunkowa-

i=1
nia.
Małe błędy względne αi , βi danych mogą się przenieść na
wynik z mnożnikiem cond(a1 , . . . , an , b1 , . . . , bn ). Jeśli wiel- 10. Podaj precyzyjną wersję definicji wskaźnika uwarunko-
kość ta będzie duża, to błąd względny rozwiązania będzie wania.
duży i nie ma sensu rozwiązywać zadania, o ile nie użyjemy
bardzo silnej arytmetyki.
2.1.6 Ćwiczenia sprawdzające zrozumienie
Zbadajmy wielkość cond(a1 , . . . , an , b1 , . . . , bn ). Jeśli skład- tematu
niki ai bi są jednakowego znaku, to

cond(a1 , . . . , an , b1 , . . . , bn ) = 2 Zadanie 65 Zapisz poniższe zadania w postaci funkcji


przyporządkowującej danym wyniki. Dla każdego określ
i zadanie jest bardzo dobrze uwarunkowane. Można jednak najpierw dziedzinę i przeciwdziedzinę.
tak dobrać składniki ai bi , że są one dużymi liczbami Pn co do 1. Zadanie obliczania wartości trójmianu kwadrato-
wartości bezwzględnej i mają takie znaki, że suma i=1 ai bi
wego w zadanym punkcie.
jest bliska zeru. Wtedy cond(a1 , . . . , an , b1 , . . . , bn ) może
być bardzo duży i zadanie jest źle uwarunkowane.  2. Zadanie obliczania wyznacznika macierzy 2 × 2.
3. Zadanie obliczania pola trójkąta mając daną dłu-
Przedstawiona w tym punkcie definicja wskaźnika uwarun-
gość podstawy i spuszczonej nań wysokości.
kowania nie jest najlepszą, choć w prostych przypadkach
wystarczającą. Poniżej przedstawiam bardziej precyzyjną 4. Zadanie obliczania iloczynu skalarnego dwóch wek-
wersję. torów z R2 .
Definicja 11 Dane jest zadanie numeryczne
Zadanie 66 Dla zadania
φ : D → Rm , D ⊂ Rn .
φ : Rn → R
Niech
d~ = [d1 , d2 , . . . , dn ]T ∈ D zapisz ułamek
oznacza wektor danych dokładnych różny od ~0 i taki, że |φ(d1 (1 + ε1 ), . . . , dn (1 + εn )) − φ(d1 , d2 , . . . , dn )|
~ 6= ~0. Liczbę
φ(d)
|φ(d1 , d2 , . . . , dn )|
 
~
 kφ(de)−φ(
 d)k
e ~
 przy założeniu, że mianownik jest różny od 0. Następnie
~
~ ∧ kd − dk < ν

kφ(d)k
sup : e ∈ D \ {d}
d przekształć licznik, zredukuj wyrazy podobne, ewentual-
 kde−dk ~ ~
kdk nie uprość ułamek. Zadanie rozwiąż dla następujących
 

~
kdk
funkcji φ.
nazywamy wskaźnikiem uwarunkowania zadania φ dla
danych d~ i oznaczamy przez cond(d).
~ Występujące w 1. φ : R2 → R, φ(d1 , d2 ) = d21 − d2 ,
definicji normy mogą być dowolne i mogą być różne dla 2. φ : R2 → R, φ(d1 , d2 ) = d1 d2 + d1 ,
wektorów danych i wyników.
3. φ : R2 → R, φ(d1 , d2 ) = d1 d2 .

2.1.5 Pytania powtórzeniowe Zadanie 67 Udowodnij, że


1. ∀x,y∈R |x − y| > |x| − |y|,
1. Podaj cztery źródła błędów danych.
2. Zapisz w sposób równoważny nierówność rW (x) 6 ν i 2. ∀x,y∈R |x − y| > |x| − |y| ,

podaj dowód.
3. ∀x,y∈Rn kx − yk > kxk − kyk,
3. Podaj założenia dotyczące reprezentacji danych i wyni-
ków działań, jakie przyjmuje się dla celów analiz nume- 4. ∀x,y∈Rn kx − yk > kxk − kyk .

rycznych.
Norma jest dowolną p–tą normą w Rn .
4. Co to jest zadanie numeryczne?
5. Podaj definicję p–tej normy wektora.
6. Podaj cztery podstawowe własności wartości bezwzględ-
nej. Kiedy w nierówności trójkąta zachodzi równość?
36 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

2.1.7 Zadania
Zadanie 74 Zbadaj uwarunkowanie zadania oblicza-
nia iloczynu n liczb rzeczywistych przy założeniu, że n
Zadanie 68 Czy zadanie obliczania
spełnia nierówność nν < 0, 1.
1. pierwiastka wielomianu w(x) = ax + b, gdzie a =
6 0,
Wskazówka: skorzystaj z zadania 73.
2. wyznacznika
0
 
a
det , Zadanie 75 Zbadaj uwarunkowanie następujących za-
0 b
dań
3. wartości wielomianu dwóch zmiennych w(x, y) = 1. f (x) = sin x, x ∈ [0, 2π],
7x2 y w punkcie (x, y),
2. f (x) = cos x, x ∈ [0, 2π],
4. pola trójkąta o podstawie a oraz wysokości h  π
3. f (x) = tg x, x ∈ 0, ,
jest dobrze uwarunkowane ze względu na dane a, b, x, 2
y, h? 4. f (x) = ctg x, x ∈ (0, π),
5. f (x) = ex , x ∈ (−5, 5).
Zadanie 69 Dane jest wyrażenie f (a, b, c) = abc , gdzie
c 6= 0 oraz algorytmy obliczające jego wartość Odpowiedzi
A1: (a*b)/c, A2: (a/c)*b.
|2ε1 d21 + ε21 d21 − ε2 d2 |
1. Zbadaj uwarunkowanie zadania obliczania wartości Zadanie 66 1.
|d21 − d2 |
,
wyrażenia f (a, b, c). |ε1 d1 d2 + ε2 d1 d2 + ε1 ε2 d1 d2 + ε1 d1 |
2. , 3. |ε1 + ε2 + ε1 ε2 |
2. Czy algorytmy A1 oraz A2 zrealizowane zgodnie z |d1 d2 + d1 |
2
Zadanie 68 1. cond(a, b) 6 1−ν ≈ 2, zadanie b. dobrze
zapisem są równoważne?
uwarunkowane, 2. cond(a, b) 6 2 + ν ≈ 2, zadanie b. dobrze
uwarunkowane, 3. cond(x, y) 6 3 + 3ν + ν 2 ≈ 3, zadanie b.
Zadanie 70 Zbadaj uwarunkowanie zadania obliczania dobrze uwarunkowane, 4. cond(a, h) 6 2 + ν ≈ 2, zadanie b.
3+ν
wyznacznika  
dobrze uwarunkowane Zadanie 69 cond(a, b, c) 6 1−ν ≈ 3,
a a zadanie b. dobrze uwarunkowane, alg. nie są równoważne
det , 1 + a(2 + ν)
−a 1 Zadanie 70 cond(a) 6 ≈ 2, zadanie b. dobrze
1+a
dla danej dodatniej liczby rzeczywistej a. (2 + ν)d21 + |d2 |
uwarunkowane Zadanie 71 cond(d1 , d2 ) =
|d21 − d2 |

Zadanie 71 Zbadaj uwarunkowanie zadania

φ : R2 → R,
120
φ(d1 , d2 ) = d21 − d2 .
100

80
cond(d ,d )
2
1

60
Zadanie 72 Zbadaj uwarunkowanie zadania obliczania
wyrażenia w(a, b) = ab + a. Liczby a, b są rzeczywiste. 40

-20
20
-10
0
0
Zadanie 73 Dane są liczby rzeczywiste εi 6 R, i = 15
10
d
20
1, 2, . . . , n spełniające nierówności |εi | 6 ν. Definiujemy
10 2
5
0 30
-5
δ równością
d -10 40
1
-15
n
Y |b|(2 + ν) + 1 2|b| + 1
1+δ = (1 + εi ). Zadanie 72 cond(a, b) = ≈
|b + 1| |b + 1|
i=1 Zadanie 74 cond(d1 , d2 , . . . , dn ) ≈ 1, 06n, zadanie b. dobrze
Udowodnij, że |δ| 6 Kν, gdzie uwarunkowane dla małych n, wraz ze wzrostem n zadanie jest co-
raz gorzej uwarunkowane Zadanie 75 1. cond(x) = |x| · | ctg(x)|
1. K = n + n2 ν + n3 ν 2 + . . . + n
ν n−1 ,
  
n

2. jeśli nν < 2 to
n
K6 ,
1 − nν
2

3. jeśli nν < 0, 1 to K 6 1, 06n ≈ n.


Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 37

cond(x)

0 2 4 6

2. cond(x) = |x| · | tg(x)|

cond(x)

0 2 4 6
|2x| |2x|
3. cond(x) = | sin(2x)|
4. cond(x) == | sin(2x)|

4
6

cond(x) 4

2
1

cond(x)
1 0 2
38 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

2.2 Jakość algorytmu 1. zamiast zadania o dokładnych danych, będziemy roz-


wiązywali zadanie o danych zaburzonych przez błędy
reprezentacji,
2.2.1 Algorytmy numerycznie poprawne
2. gdybyśmy nawet znali dokładne rozwiązanie dla tych
danych, to w arytmetyce fl byłoby ono reprezentowane
Jeśli po zbadaniu uwarunkowania zadania wiemy, że jest
na ogół w sposób przybliżony.
sens go rozwiązywać w dostępnej arytmetyce, przystępujemy
do opracowania algorytmu. Algorytm, podobnie jak zadanie, Z tych względów za numerycznie najwyższej jakości uznamy
jest funkcją. takie algorytmy, dla których obliczone w arytmetyce fl roz-
wiązanie jest nieco zaburzonym rozwiązaniem zadania o nieco
Definicja 12 Dane jest zadanie numeryczne
zaburzonych danych. Takie algorytmy nazywamy numerycz-
φ : D → Rm , D ⊂ Rn , nie poprawnymi. Zakładamy przy tym, że nie dochodzi ani do
nadmiaru, ani do niedomiaru, a zaburzenia charakteryzują
gdzie m i n są liczbami naturalnymi. Algorytm rozwiązu- się małymi błędami względnymi.
jący to zadanie jest funkcją Dla ułatwienia zajmiemy się najpierw przypadkiem, gdy
zadanie ma tylko jeden wynik.
A : D1 → Rm , D1 ⊂ D.
Definicja 13 Dane jest zadanie numeryczne
Dodatkowo przyjmujemy, że dla algorytmu znana jest
kolejność wykonywania wszystkich działań i że jest ich φ : D → R, D ⊂ Rn ,
skończenie wiele.
i algorytm je rozwiązujący
Traktowanie algorytmu tylko jako funkcji przyporządkowu-
jącej danym wyniki jest niewystarczające. Jednak formalne A : D1 → R, D1 ⊂ D.
ujęcie całej definicji wraz z włączeniem kolejności działań
bardzo by ją skomplikowało. Niech fl (A(d1 , . . . , dn )) oznacza wynik algorytmu A dla
danych (d1 , . . . , dn ) obliczony w arytmetyce zmiennopo-
Jeśli algorytm A ma rozwiązywać zadanie φ, to najlepiej, zycyjnej.
by A = φ. Nie zawsze jest to jednak możliwe. Przykładem
może być zadanie, w którym chcemy dla danego x obliczyć Algorytm A jest numerycznie poprawny jeśli dla każdego
sumę szeregu wektora danych z jego dziedziny można dobrać liczby σ,
∞ δi tak, by spełniona była zależność
X xi
.
i=1
i! fl (A(d1 , . . . , dn )) = (1 + σ)φ(d1 (1 + δ1 ), . . . , dn (1 + δn )),
Używając komputera sumę nieskończoną musimy zastąpić
skończoną i wtedy A ≈ φ. Zwróćmy również uwagę, że w przy czym muszą zachodzić nierówności
definicji dopuszczono, by algorytm miał mniejszą dziedzinę
|σ| 6 Cν, |δi | 6 Ki ν
niż zadanie (D1 ⊂ D).
Formułując algorytm posługujemy się arytmetyką rzeczywi- dla niewielkich stałych C, Ki niezależnych od danych.
stą. Jeśli więc zastosujemy go dla danych d1 , d2 , . . . , dn , to Liczby C,, Ki te nazywamy wskaźnikami kumulacji.
zapis
A(d1 , d2 , . . . , dn ) Przyjrzyjmy się powyższej równości. Dane
rozumiemy jako wynik algorytmu obliczony w arytmetyce d1 , . . . , dn
rzeczywistej. Jeśli jednak algorytm zostanie wykonany przez
komputer, to arytmetyka rzeczywista zostanie zastąpiona są danymi dokładnymi, a
arytmetyką zmiennopozycyjną i podczas wykonywania dzia- d1 (1 + δ1 ), . . . , dn (1 + δn )
łań będą pojawiały się błędy zaokrągleń. Przez zapis
są danymi nieco zaburzonymi, czyli obarczonymi niewielkimi
fl (A(d1 , d2 , . . . , dn )) błędami względnymi. To, że zaburzenia są niewielkie wy-
będziemy rozumieć wynik algorytmu obliczony w arytmetyce nika z postawionego w definicji żądania, by |δi | 6 Ki ν dla
zmiennopozycyjnej. Zwykle niewielkich stałych Ki . Zatem

A(d1 , d2 , . . . , dn ) 6= fl (A(d1 , d2 , . . . , dn )) . φ(d1 (1 + δ1 ), . . . , dn (1 + δn ))


Posługując się arytmetyką zmiennopozycyjną musimy się jest dokładnym wynikiem zadania dla nieco zaburzonych
liczyć z błędami i pogodzić się z tym, że niemożliwe jest danych. Prawą stronę pojawiającej się w definicji równości
uzyskanie dokładnego wyniku. Powstaje pytanie, czy błędy można zatem przeczytać następująco
te nie „zniszczą” wyniku. Każdy algorytm ocenić, czy pro- nieco zaburzony wynik zadania dla nieco zaburzo-
dukuje on dopuszczalne wyniki po uwzględnieniu błędów nych danych:
zaokrągleń.
Zastanówmy się jak dokładny może być dla danego zada- z
nieco zaburzone dane
}| {
nia wynik obliczony w arytmetyce zmiennopozycyjnej. Za- (1 + σ) · φ(d1 (1 + δ1 ), . . . , dn (1 + δn )) ,
uważmy, że
| {z }
wynik zadania dla nieco zaburzonych danych
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 39

To, że wynik zadania jest zaburzony opisuje mnożnik (1 + σ). Wykonujemy teraz mnożenie
Ponieważ w definicji pojawia się żądanie, by |σ| 6 Cν dla
4y(1 + εy ) · y(1 + εy ).
niewielkiej stałej C, to mamy gwarancję, że zaburzenie (czyli
błąd względny) jest niewielkie. Pojawi się błąd zaokrągleń, zatem wynikiem tego mnożenia
w arytmetyce zmiennopozycyjnej będzie
Prawa strona nie zawiera pojęcia algorytmu. Pojawia się ono
jedynie po lewej — zgodnie z definicją fl (A(d1 , . . . , dn )) ozna- 4y(1 + εy ) · y(1 + εy )(1 + ε2 ) = 4y(1 + εy )2 (1 + ε2 )
cza wynik algorytmu A dla danych (d1 , . . . , dn ) obliczony w dla pewnego |ε2 | 6 ν. Na koniec zostanie wykonane do-
arytmetyce fl . dawanie, którego wynik znów zostanie obarczony błędem.
Całą równość występującą w definicji można zatem przeczy- Ostatecznie obliczonym w arytmetyce zmiennopozycyjnej
tać tak: wynikiem algorytmu jest

wynik algorytmu obliczony w arytmetyce zmienno- fl (A(x, y))


= [x(1 + εx )]2 (1 + ε1 ) + 4y(1 + εy )2 (1 + ε2 ) (1 + ε3 ),

pozycyjnej jest nieco zaburzonym wynikiem zada-
nia dla nieco zaburzonych danych: gdzie |εx |, |εy |, |ε1 |, |ε2 |, |ε3 | 6 ν.
Kolejny krok to konstrukcja pozornych zaburzeń, czyli takie
fl (A(d1 , . . . , dn )) = (1 + σ)φ(d1 (1 + δ1 ), . . . , dn (1 + δn )), przegrupowanie nawiasów (1 + εi ), by identyczny zestaw
| {z } | {z }
wynik algorytmu nieco zaburzony nawiasów pojawił się przy każdym wystąpieniu x, tak by
obliczony wynik zadania zestaw ten móc oznaczyć przez (1 + δ1 ). To samo też trzeba
w arytmetyce dla nieco zaburzonych danych zrobić dla y. Również część nawiasów może zostać wyłączona
zmiennopozycyjnej poza nawias zewnętrzny i zostanie ona oznaczona przez
(1 + σ):
Własność numerycznej poprawności algorytmów udowadnia fl (A(x, y)) =
się stosując technikę zwaną konstrukcją pozornych zaburzeń.  
Sprowadza się ona do wykazania, że błędy wytworzone w 
 √ √


poszczególnych krokach algorytmu są równoważne skonstru- = [x (1 + εx ) 1 + ε 1 ] 2
+ 4[y (1 + ε y ) 1 + ε 2 ]2
(1 + ε3 ) .
owanym sztucznie błędom danych początkowych.

 | {z } | {z }   | {z }
(1+δ1 ) (1+δ2 ) 1+σ

Przykład Rozpatrzmy zadanie numeryczne Po wprowadzeniu oznaczeń

φ : R2 → R, 1 + σ = 1 + ε3 ,

φ(x, y) = x2 + 4y 2 . 1 + δ1 = (1 + εx ) 1 + ε1 ,

1 + δ2 = (1 + εy ) 1 + ε2 .
Do jego rozwiązania się posłużymy się algorytmem
otrzymujemy, że
A : R → R,
2
fl (A(x, y)) = [x(1 + δ1 )]2 + 4[y(1 + δ2 )]2 (1 + σ)


A(x, y) = (x ∗ x) + ((4 ∗ y) ∗ y). = (1 + σ) · φ (x(1 + δ1 ), y(1 + δ2 )) .

Zakładamy, że nie powstanie nadmiar ani niedomiar, a działa- Otrzymaliśmy zatem równość występującą w definicji algo-
nia są wykonywane od lewej do prawej i zgodnie z nawiasami. rytmu numerycznie poprawnego. By udowodnić numeryczną
poprawność algorytmu pozostaje jeszcze wykazać, że
Zanim zacznie się wykonywać algorytm najpierw dane do-
kładne x oraz y zostaną zapisane w pamięci komputera. |σ| 6 Cν,
Zastąpią je liczby rd (x) = x(1 + εx ) i rd (y) = y(1 + εy ) dla |δ 1 | 6 K1 ν,
pewnych |εx |, |εy | 6 ν. |δ2 | 6 K2 ν,
Pierwszym działaniem, które zostanie wykonane jest mnoże- dla niewielkich stałych C, K1 i K2 .
nie
Ponieważ
rd (x) · rd (x) = x(1 + εx ) · x(1 + εx ) = [x(1 + εx )] .
2 1 + σ = 1 + ε3 i |ε3 | 6 ν,
to
Po zapisaniu wyniku w pamięci komputera pojawi się błąd σ = ε3 i |σ| 6 ν,
zaokrągleń, czyli faktycznym wynikiem tego mnożenia będzie
stąd C = 1. Oszacujmy√ teraz wielkość |δ1 |. Ponieważ
[x(1 + εx )] (1 + ε1 )
2 1 + δ 1 = (1 + ε x ) 1 + ε 1 , to

δ1 = (1 + εx ) 1 + ε1 − 1
dla pewnego |ε1 | 6 ν. √ √
(1 + εx ) 1 + ε1 − 1 · (1 + εx ) 1 + ε1 + 1
   

Następnym działaniem będzie mnożenie = √


(1 + εx ) 1 + ε1 + 1
4 · rd (y) = 4y(1 + εy ). (1 + εx )2 (1 + ε1 ) − 1 (1 + 2εx + ε2x )(1 + ε1 ) − 1
= √ = √
(1 + εx ) 1 + ε1 + 1 (1 + εx ) 1 + ε1 + 1
Mnożenie i dzielenie przez potęgi dwójki jest wykonywane 1 + 2εx + ε2x + ε1 + 2ε1 εx + ε1 ε2x − 1
dokładnie, bo polega jedynie na zmianie wykładnika w re- =  √ .
(1 + εx ) 1 + ε1 + 1
prezentacji liczby.
40 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Zatem Po przeprowadzeniu przekształceń otrzymujemy


n
X
fl (A(a1 , . . . , an , b1 , . . . , bn )) = ai bi (1 + Ei ),
|2εx + ε2x + ε1 + 2ε1 εx + ε1 ε2x |
|δ1 | = √ i=1
|(1 + εx ) 1 + ε1 + 1|
gdzie
2|εx | + |εx |2 + |ε1 | + 2|ε1 ||εx | + |ε1 ||εx |2 n
6 √ Y
|(1 + εx ) 1 + ε1 + 1| 1 + Ei = (1 + εi ) (1 + δi ), δ1 = 0.
j=i
3ν + 3ν 2 + ν 3
6 3 Można udowodnić, że
(1 − ν) 2 + 1
3 + 3ν + ν 2 |Ei | 6 Mi (n − i + 2)ν,
= ν 3 .
(1 − ν) 2 + 1
dla stałych Mi bliskich jedności. Obliczony wynik da się
Biorąc interpretować jako dokładne rozwiązanie zadania dla trochę
3 + 3ν + ν 2 3 zaburzonych danych, czyli
K1 = ≈
3
(1 − ν) 2 + 1 2
S(a1 , a2 , . . . an , b1 (1 + E1 ), b2 (1 + E2 ), . . . bn (1 + En )).
otrzymujemy, że |δ1 | 6 K1 ν. Analogicznie można udowodnić,
że K2 ≈ 32 . Stałe kumulacji wynoszą Ki = Mi (n − i + 2). Aby algorytm
był numerycznie poprawny, to liczba danych nie może być
Zastąpiliśmy faktyczne błędy zaokrągleń εx , εy , ε1 , ε2 i zbyt duża. Nie jest to jednak bardzo silne ograniczenie,
ε3 pozornymi zaburzeniami danych δ1 i δ2 oraz wyniku σ. bo przykładowo, dla arytmetyki binary64 algorytm będzie
Zaburzenia te są niewielkie. Przedstawiona analiza pozwala numerycznie poprawny nawet dla n = 106 . Zauważmy na
stwierdzić, że obliczony powyższym algorytmem wynik jest koniec, że błędy zaokrągleń mogą być inaczej „podzielone”
nieco zaburzonym rozwiązaniem zadania sąsiedniego, czyli pomiędzy dane a i b .
i i 
zadania o nieco zaburzonych danych. Tak więc algorytm jest
numerycznie poprawny.  Przedstawiona wcześniej definicja algorytmu numerycznie

poprawnego nie jest definicją ogólną. Zakłada m.in., że


Zwróćmy uwagę, na to że jeśli w powyższym przykładzie jest tylko jeden wynik. Poniżej podaję definicję o szerszym
założylibyśmy, że dane są reprezentowane dokładnie, czyli zastosowaniu.
εx = εy = 0, to wskaźniki kumulacji byłyby mniejsze o
1. Jest to ogólna reguła i przy dowodach numerycznej po- Definicja 14 Dane jest zadanie numeryczne
prawności często dla uproszczenia zakłada się, że dane nie
są obarczone błędami reprezentacji. Tak też uczynimy w φ : D → R m , D ⊂ Rn ,
następnym przykładzie.
i algorytm je rozwiązujący
Przykład Przeanalizujmy jeden z algorytmów rozwiązują-
cych zadanie A : D1 → Rm , D1 ⊂ D.

S : R2n → R, ~ oznacza wynik algorytmu A dla danych d~


Niechfl (A(d)))
n
X obliczony w arytmetyce zmiennopozycyjnej.
S(a1 , a2 , . . . , an , b1 , b2 , . . . , bn ) = ai bi
Algorytm A jest numerycznie poprawny jeśli dla każdego
i=1
wektora danych d~ można dobrać wektor danych de tak, by
dla danych ai i bi , i = 1, 2, . . . , n. Posłużymy się algorytmem spełniona była zależność
A:
~ − φ(d)k
kfl (A(d))) e
S = 0.0; 6 Kν,
for(i = 1; i <= n; i++) kφ(d)k
e
S = S + ai *bi ;
przy czym de musi spełniać nierówność
Algorytm został zapisany w pseudokodzie przypominającym
kd~ − dk
język C. Zamiast tablic użyto indeksów dolnych po to, by
e
6 Cν.
~
kdk
uniknąć przeindeksowania.
Przyjmujemy, że dane są umieszczone w tablicach a i b, Liczby K, C są niezależnymi od danych niewielkimi sta-
oraz zakładamy, że są reprezentowane dokładnie. Wykona- łymi, nazywamy je wskaźnikami kumulacji. Zakładamy
nie mnożenia i dodawania wewnątrz pętli powoduje błędy przy tym, że w powyższych nierównościach nie dochodzi
zaokrągleń, zatem do dzielenia przez zero. Oznaczone tu wspólnym symbo-
lem normy w przestrzeniach zawierających odpowiednio
fl (A(a1 , . . . , an , b1 , . . . , bn )) = {. . . {{a1 b1 (1 + ε1 ) przeciwdziedzinę i dziedzinę zadania φ nie muszą być
+a2 b2 (1 + ε2 )}(1 + δ2 ) takie same.
+a3 b3 (1 + ε3 )}(1 + δ3 ) + . . .
Niektórzy przyjmują, że algorytm jest numerycznie po-
+an bn (1 + εn )}(1 + δn ). prawny, gdy można znaleźć dostatecznie silną arytmetykę
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 41

(czyli dostatecznie małe ν) taką, że powyższa definicja za-


Definicja 16 Dane jest zadanie numeryczne
chodzi. Im silniejsza arytmetyka, tym stałe kumulacji mogą
być większe. φ : D → Rm , D ⊂ Rn ,

i algorytm je rozwiązujący
2.2.2 Algorytmy numerycznie stabilne
A : D1 → Rm , D1 ⊂ D.
Algorytmy numerycznie poprawne są najlepszej możliwej
jakości. Więcej nie można wymagać. Nie każdy jednak ~ oznacza wynik algorytmu A dla danych d~
Niechfl (A(d)))
algorytm jest tak dobry. Należy więc ustalić jakie algorytmy obliczony w arytmetyce zmiennopozycyjnej.
są do zaakceptowania, czyli podać minimalną własność, która
Algorytm A jest numerycznie stabilny jeśli dla każdego
musi być spełniona. Jest nią numeryczna stabilność.
d~ ∈ D1 , błąd bezwzględny przezeń wytworzony jest jedy-
Definicja 15 Dane jest zadanie numeryczne nie K–krotnie większy niż OPB(d),~ gdzie K jest niezbyt
dużą stałą. Można to zapisać następująco
φ : D → Rm , D ⊂ Rn ,
∀d∈D
~
~ − φ(d)k
kfl (A(d)) ~ 6 K · OPB(d).
~
Optymalnym poziomem błędu zadania φ dla danych d~
1

nazywamy wielkość
~ = νkφ(d)k
~ + ~ − φ(d)k. Znów jak w przypadku algorytmów numerycznie poprawnych
OPB(d) sup kφ(d)
często przyjmuje się, że algorytm jest numerycznie stabilny,
e
~ d
kd− ~
ek6νkdk
gdy można znaleźć dostatecznie silną arytmetykę (czyli do-
Normy są dowolne i mogą być różne dla przestrzeni da- statecznie małe ν) taką, że powyższa definicja zachodzi. Im
nych oraz wyników. silniejsza arytmetyka, tym stała K może być większa.
Błąd bezwzględny w algorytmie numerycznie stabilnym jest
Co wyraża optymalny poziom błędu? Pierwszy jego skład- na poziomie nieuniknionego błędu rozwiązania wynikającego
nik odpowiada za maksymalny błąd bezwzględny, jaki może z przybliżonej reprezentacji danych i wyniku. Wielkość stałej
powstać podczas reprezentacji wyników. Obliczone wyniki K służy do oceny jakości algorytmu — im mniejsza, tym
muszą być przecież reprezentowane w pamięci komputera. algorytm lepszy.
Ponieważ zakładamy, że nie zachodzi zjawisko nadmiaru ani
niedomiaru, to wiemy, że dla liczby rzeczywistej x błąd bez- Można udowodnić poniższe twierdzenie.
względny reprezentacji nie przekracza ν|x| (porównaj punkt Twierdzenie 1 Każdy algorytm numerycznie poprawny
2.1.1). Ta nierówność jest prawdziwa dla każdego wyniku jest numerycznie stabilny. Istnieją algorytmy numerycz-
z osobna, jednak zamiast sumować maksymalne błędy wy- nie stabilne, które nie są numerycznie poprawne.
ników, co odpowiadałoby zastosowaniu normy wektorowej
dla p = 1, stosujemy podejście ogólniejsze i dopuszczamy
dowolną normę wektorową. Dla niektórych zadań zmiana algorytmy numerycznie stabilne
normy ułatwia analizę.
algorytmy numerycznie poprawne
Drugi składnik określa, jak w najgorszym przypadku błędy
danych mogą przenieść się na wynik zadania. Rozpatrujemy
znowu błąd bezwzględny. Wielkość kφ(d) ~ − φ(d)k
e wyraża
odległość w sensie normy między wynikami dla danych do-
kładnych d~ i wynikami dla danych zaburzonych d. e Wśród
takich odległości szukamy największej rozpatrując dane za-
~ Za dane „bliskie” uważamy te, Przykład Rozpatrzmy zadanie obliczania kwadratu liczby
burzone, które leżą blisko d.
które są obarczone błędem na tym samym poziomie, co błąd rzeczywistej d,
reprezentacji w pamięci komputera. Tę bliskość rozpatru- φ(d) = d2 .
jemy znów w sensie normy: bierzemy takie d,e które spełniają
Do jego rozwiązania posłużymy się algorytmem:
~ ~
nierówność kd − dk 6 νkdk. Tym razem odległość nie jest
e
bezwzględna, lecz względna, bo dla d~ 6= 0 A(d) = d ∗ d.

kd~ − dk
e Sprawdźmy, czy jest on numerycznie stabilny. W tym celu
kd~ − dk ~ ⇐⇒
e 6 νkdk 6 ν.
~
kdk wyznaczmy optymalny poziom błędu.

OPB(d) = ν|φ(d)| + sup |φ(d) − φ(d)|


e
Błąd, który jest rzędu OPB(d) musi się pojawić podczas |d−d
e|6ν|d|
rozwiązywania zadania dowolną metodą. Zauważmy, że
OPB(d) nie zależy od algorytmu. = νd2 + sup |d2 − de2 |.
|d−d
e|6ν|d|
Jeśli algorytm nie produkuje błędu znacząco większego niż
OPB(d), to nazywamy go numerycznie stabilnym. Obliczmy wartość supremum. Ponieważ

de2 − d2 = (d − d)
e 2 − 2d(d − d),
e
42 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

to stosując nierówność trójkąta mamy 2.2.4 Pytania powtórzeniowe


sup |d2 − de2 | 6 sup (|d − d|
e 2 + 2|d||d − d|)
e
1. Podaj definicję algorytmu rozwiązującego zadanie nu-
|d−d
e|6ν|d| |d−d
e|6ν|d| meryczne.
= ν 2 d2 + 2νd2
2. Wyjaśnij dlaczego nie zawsze algorytm jest równy zada-
= ν(ν + 2)d2 niu.

Z drugiej strony jeśli de = d+νd to |d2 − de2 | = ν(ν +2)d2 oraz 3. Podaj definicję algorytmu numerycznie poprawnego w
e 6 ν|d|. Zatem powyższe supremum wynosi ν(ν + 2)d2
|d − d| przypadku, gdy zadanie ma jeden wynik.
oraz 4. Podaj ogólną definicję algorytmu numerycznie popraw-
OPB(d) = ν(3 + ν)d2 . nego.

Teraz należy dokonać oszacowania błędu bezwzględnego 5. Podaj definicję optymalnego poziomu błędu.
wytworzonego podczas obliczeń algorytmu. 6. Podaj definicję algorytmu numerycznie stabilnego.

|fl (A(d)) − φ(d)| = |(d(1 + ε1 )d(1 + ε1 ))(1 + ε2 ) − d2 | 7. Podaj twierdzenie dotyczące zależności pomiędzy nume-
ryczną poprawnością i stabilnością.
= d |2ε1 + ε2 +
2
ε21 + 2ε1 ε2 + ε21 ε2 |
6 d ν(3 + 3ν + ν )
2 2 8. Co oznaczają: ops, opm, opsqrt, opp?
= K1 · OPB(d),
2 2.2.5 Ćwiczenia sprawdzające zrozumienie
dla K1 = 3+3ν+ν
3+ν ≈ 1. Algorytm A jest numerycznie
stabilny dla wszystkich danych. tematu


Zadanie 76 Dane są liczby rzeczywiste ε1 , ε2 , ε3 , ε4


2.2.3 Efektywność algorytmu spełniające nierówności |ε1 |, |ε2 |, |ε3 |, |ε4 | 6 ν. Definiu-
jemy δ1 , δ2 , δ3 , δ4 , δ5 , δ6 δ7 , δ8 poniższymi równościami
Dla wielu zadań znane są różne metody ich rozwiązywania.
Spośród nich chcielibyśmy wybrać najlepszą. Powstaje pro- 1 + δ1 = (1 + ε1 )(1 + ε2 ),
blem, jakich kryteriów używać. Oczywiście jednym z nich, i 1 + δ2 = (1 + ε1 )(1 + ε2 )(1 + ε3 ),
zwykle najważniejszym, jest jakość algorytmu. Drugim jest 1
koszt danej metody (czasowy i pamięciowy). 1 + δ3 = ,
1 + ε1
Za operacje dominujące przy analizie algorytmów numerycz- 1 + ε1
1 + δ4 = ,
nych przyjmuje się zazwyczaj działania zmiennopozycyjne: 1+ε
√ 2
dodawanie, odejmowanie, mnożenie, dzielenie i pierwiastko- 1 + δ 5 = 1 + ε1 ,
wanie. Zwykle oblicza się trzy wielkości √
1 + δ6 = (1 + ε1 ) 1 + ε2 ,
1. liczbę dodawań i odejmowań, (1 + ε1 )(1 + ε2 )
1 + δ7 = ,
2. liczbę mnożeń i dzieleń, 1 + ε3
(1 + ε1 )(1 + ε2 )
3. liczbę pierwiastkowań. 1 + δ8 = .
(1 + ε3 )(1 + ε4 )
Okazuje się bowiem, że czas wykonania dodawania/odej-
mowania jest istotnie krótszy niż mnożenia/dzielenia, a ten Udowodnij, że |δi | 6 Ki ν (i = 1, 2, . . . , 8), gdzie
znów krótszy niż pierwiastkowania. Chociaż technicznie nic
nie stoi na przeszkodzie, by niemal zrównać czasy tych dzia- K1 = 2 + ν ≈ 2,
łań, to wielu producentów sprzętu tego nie robi. Stosują oni K2 = 3 + 3ν + ν 2 ≈ 3,
prostsze procesory tłumacząc, że zwykle komputer wykonuje 1
K3 = ≈ 1,
mniej mnożeń/dzieleń niż dodawań/odejmowań i nie warto 1−ν
przepłacać. 2
K4 = ≈ 2,
1−ν
W dalszej części będę stosować następujące oznaczenia.
1 1
K5 = √ ≈ ,
Oznaczenia 1−ν+1 2
• Koszt jednego dodawania lub odejmowania ozna- 3 + 3ν + ν 2
3
czamy przez ops. K6 = ≈ ,
3
(1 − ν) 2 + 1 2
• Koszt jednego mnożenia lub dzielenia oznaczamy 3+ν
K7 = ≈ 3,
przez opm. 1−ν
4 + 2ν
• Koszt jednego pierwiastkowania oznaczamy przez K8 = ≈ 4.
opsqrt. (1 − ν)2

• Koszt jednego porównania oznaczamy przez opp.


Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 43

2.2.6 Zadania
Zadanie 82 Wskaż numerycznie poprawny algorytm
rozwiązania układu równań
Zadanie 77 Niech liczby rzeczywiste x, y będą tego
samego znaku, a ε1 , ε2 ∈ R spełniają nierówności a b 0 1
    
x1
0 a c  x2  = 1 .
|ε1 | 6 K1 ν, |ε1 | 6 K2 ν 0 0 a x3 1
dla pewnych dodatnich stałych K1 i K2 . Udowodnij, że Liczby a, b i c są rzeczywiste. Odpowiedź uzasadnij.
istnieje δ taka, że |δ| 6 ν sup{K1 , K2 } oraz

x(1 + ε1 ) + y(1 + ε2 ) = (x + y)(1 + δ).


Zadanie 83 Dane są liczby x, y ∈ R takie, że x2 + y 2 >
0. Podaj numerycznie poprawny algorytm obliczania
wielkości
Zadanie 78 Dla każdego poniższego wyrażenia wskaż c = cos 2φ, s = sin 2φ,
numerycznie poprawny algorytm obliczania jego warto- gdzie φ jest zdefiniowany zależnościami
ści
p x y
1. a2 + b, r = x2 + y 2 , cos φ = , sin φ = .
r r
2. a − b2 , Odpowiedź uzasadnij.
3. ab + b.
Liczby a i b są rzeczywiste. Odpowiedź uzasadnij. Zadanie 84
1. Zbadaj uwarunkowanie zadania obliczania warto-
ści wyrażenia f (a, b) = a2 b + ab2 ze względu na
Zadanie 79 Dla każdego poniższego wyrażenia wskaż
małe względne zmiany danych a i b rzeczywistych
numerycznie poprawny algorytm obliczania jego warto-
dodatnich.
ści
a−b−c 2. Zaproponuj możliwie tani numerycznie poprawny
1. y(a, b, c) = , a, b, c 6= 0, algorytm obliczania f (a, b).
abc
2. y(a, b) = a3 + a2 b, 3. Oszacuj błąd wytworzony w tym algorytmie.
a2 − b2 2
3. y(a, b) = , a + b2 6= 0,
a2 + b2 Zadanie 85 Napisz program porównujący czasy wy-
Liczby a, b, c są rzeczywiste. Odpowiedź uzasadnij. konania działań: dodawania, odejmowania, mnożenia,
dzielenia, pierwiastkowania, potęgowania. Możesz go
zacząć jak niżej.
Zadanie 80
#include<stdio.h>
1. Czy zadanie obliczania wartości wielomianu dwóch
#include<math.h>
zmiennych w(x, y) = x2 − 2xy w punkcie (x, y) jest
#include<time.h>
dobrze uwarunkowane ze względu na dane x i y?
#define N 50000000
2. Czy algorytmy x*x-2*x*y oraz x*(x-2*y) zrealizo-
wane zgodnie z powyższym zapisem mogą dać różne main() {
wyniki? long i;
clock_t czas1,czas2;
3. Czy algorytmy x*x-2*x*y oraz x*(x-2*y) zrealizo-
clock_t czas = 0;
wane zgodnie z powyższym zapisem są numerycznie
double x;
poprawne? Który z algorytmów jest tańszy?
// czas obslugi petli
Odpowiedź uzasadnij. czas1 = clock();
for (i = 0; i < N; i++)
x = (double)i;
Zadanie 81 Podaj numerycznie poprawny algorytm czas2 = clock();
obliczania wyznacznika czas = czas2 - czas1;
// test dodawania
a − b2 a + b
 2 
det ]. printf("Dodawanie:\t");
bd c czas1 = clock();
for (i = 0; i < N; i++)
Liczby a, b, c i d są rzeczywiste. Odpowiedź uzasadnij.
x = (double)i + 2.5;
czas2 = clock();
...
44 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Odpowiedzi

2|x − y| + |x|ν + 2|y|(1 + ν)


Zadanie 80 1. cond(x, y) =
|x − 2y|
2|x − y| + 2|y|

|x − 2y|

30

25

20
cond(x,y)

15

10

-15
0
-10
-20 -5
-10 0
0
10 5 x
y 20 10
30
40 15

2. tak, 3. są, drugi Zadanie 84 cond(a, b) = 3 + 3ν + ν 2 ≈ 3,


błąd względny wytworzony przez algorytm A(a, b) = (a + b)ab
można oszacować przez 6ν
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 45

2.3 Analityczna złożoność oblicze- Wektor ~y = N (f ) będziemy nazywać informacją o f .

niowa Przybliżanie wielkości S(f ) dla f ∈ E, polega na budowie


funkcji
φ : Y → G,
2.3.1 Przestrzeń unormowana która nazywamy algorytmem. Funkcja ta dla każdego f ∈ E
powinna w miarę możliwości zapewnić dobre przybliżenie
Przypomnijmy, że definiując uwarunkowanie zadania wpro-
wielkości S(f ). Dążymy więc do tego, aby φ(N (f )) ≈ S(f ).
wadziliśmy pojęcie p–tej normy w przestrzeni Rn . Zauwa-
żyliśmy, że jest ono uogólnieniem wartości bezwzględnej. Przykład Niech
Okazuje się, że można dokonać jeszcze dalej idącego uogól-
1. F będzie przestrzenią wszystkich funkcji rzeczywistych
nienia i zdefiniować normę dla dowolnej przestrzeni liniowej.
ciągłych o dziedzinie [0, 1],
Definicja 17 Niech G będzie przestrzenią liniową nad R.
2. E = F ,
Funkcję o dziedzinie G i przeciwdziedzinie R+ oznaczaną
przez k · k nazywamy normą, jeśli spełnia własności 3. G = R,
1. ∀~x∈G k~xk > 0, 4. Y = Rn , gdzie n jest ustaloną liczbą naturalną.
2. k~xk = 0 wtedy i tylko wtedy, gdy ~x = 0, Rozważmy zadanie obliczania całki oznaczonej. Operatorem
rozwiązania będzie zatem funkcja
3. ∀~x∈G ∀c∈R kc · ~xk = |c| · k~xk,
4. ∀~x,~y∈G k~x + ~y k 6 k~xk + k~y k (nierówność trójkąta). S : F → R,
Z 1
Jeśli na przestrzeni G zdefiniowano normę, to mówimy, S(f ) = f (t) dt.
że G jest przestrzenią unormowaną. 0

Informacja o funkcji f składa się z n wartości tej funkcji w


Przykład Przestrzenią unormowaną jest ustalonych punktach 0 < t1 < t2 < . . . < tn = 1. Zatem
operator informacji to funkcja
1. R z normą równą wartości bezwzględnej,
N : F → Rn ,
2. Rn z dowolną p–tą normą. 
N (f ) = [f (t1 ), f (t2 ), . . . , f (tn )]T .
Do rozwiązania tego zadania posłużymy się algorytmem
2.3.2 Rozwiązanie, informacja i algorytm
φ : Rn → R,
n
Dane są dwie przestrzenie oraz dwa zbiory: X
φ(~y ) = yi (ti − ti−1 ),
1. przestrzeń liniowa F nad R, i=1

2. zbiór E, który zawiera się w F , gdzie ~y = [y1 , y2 , . . . , yn ] oraz dla ułatwienia zapisu przyj-
T

3. przestrzeń liniowa unormowana G nad R, muję t0 = 0.

4. zbiór Y wektorów rzeczywistych, być może różnej dłu- Na cały problem można tu spojrzeć następująco. Wiemy, że
S∞
gości, dokładniej Y ⊂ k=1 R .
k naszym zadaniem jest obliczenie całki oznaczonej wybranej
funkcji ciągłej f . Niestety funkcja ta nie jest znana dokład-
nie. Dysponujemy jedynie informacją o jej wartościach w
punktach ti , czyli znamy wektor
N (f ) = [f (t1 ), f (t2 ), . . . , f (tn )]T .
Obliczamy przybliżenie całki algorytmem φ, zatem będzie
to liczba
Xn
φ(N (f )) = f (ti )(ti − ti−1 ).
i=1

Powstaje pytanie, czy ∀f ∈F φ(N (f )) ≈ S(f ). 

Ponadto dana jest funkcja 2.3.3 Błąd algorytmu


S:F →G
Definicja 18 Błędem algorytmu φ nazywamy liczbę
zwana operatorem rozwiązania. Dla każdego elementu f ∈ E
chcemy przybliżać wielkość S(f ) mając do dyspozycji zwykle e(N, φ) = sup kS(f ) − φ(N (f ))k.
niepełną informację o f . f ∈E

Operatorem informacji nazywamy ustaloną funkcję Jeśli taka skończona liczba nie istnieje, to przyjmujemy
błąd równy +∞.
N : F → Y.
46 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Błąd algorytmu mierzy największą różnicę między S(f ) iBłąd algorytmu φ wynosi więc +∞. Nie oznacza to, że
φ(N (f )) jaka może się zdarzyć, gdy rozpatrzymy wszyst-
algorytm ten dla każdej funkcji daje złe przybliżenie całki.
kie elementy f ∈ E. Opisuje więc najgorsze zachowanie Dla niektórych nawet oblicza całkę dokładnie (np. dla funkcji
algorytmu na zbiorze E. stałych). Niemniej istnieją funkcje, dla których różnica
między wynikiem policzonym przez algorytm a dokładną
Naszym celem jest znalezienie algorytmu o minimalnym
wartością całki może być dowolnie duża.
błędzie. Taki algorytm nazywamy algorytmem optymalnym. 

Definicja 19 Algorytm φopt jest optymalny, jeśli


2.3.4 Promień i średnica zbioru
e(N, φopt ) = inf e(N, φ).
φ
Okazuje się, że błąd optymalnego algorytmu jest silnie zwią-
zany z pojęciami promienia i średnicy zbioru.
Przykład Rozważmy zadanie i algorytm takie jak w po- Definicja 20 Promieniem zbioru A będącego podzbio-
przednim przykładzie. Obliczymy błąd algorytmu φ. Za- rem przestrzeni unormowanej G nazywamy liczbę
uważmy, że dla funkcji f algorytm φ oblicza pole zakreskowa-
nej na rysunku figury. Dla uproszczenia rysunek wykonano r(A) = inf sup ka − gk.
g∈G a∈A
dla n = 5.
Jeżeli istnieje taki element gA ∈ G, że

r(A) = sup ka − gA k,
a∈A

to gA nazywany jest środkiem zbioru A.

Promień zbioru nazywa się też promieniem Czebyszewa


zbioru, a środek zbioru — środkiem Czebyszewa zbioru.

Dokładniej, pole zakreskowanej figury to φ(N (f )). Pole


figury ograniczonej wykresem funkcji f , osią OX i prostymi
x = 0, x = 1 to wartość szukanej całki, czyli wielkość S(f ).
Dla niektórych funkcji zakreskowane pole będzie stanowić
dość dobre przybliżenie S(f ).
Są jednak funkcje, dla których |S(f ) − φ(N (f ))| może być
dowolnie duże. Wyobraźmy sobie taką funkcję fα dla pew-
nego α > 0, której wartość w każdym z punktów ti wynosi Definicja 21 Średnicą zbioru A będącego podzbiorem
zero: przestrzeni unormowanej G nazywamy liczbę
fα (ti ) = 0 dla i = 1, 2, . . . , n
d(A) = sup ka1 − a2 k.
oraz a1 , a2 ∈A
Z 1
S(fα ) = fα (t) dt = α.
0
Średnicę zbioru nazywa się też średnicą Czebyszewa zbioru.

0 1

Taką funkcję ciągłą zawsze daje się skonstruować. Wtedy


n
X Pojęcia promienia i średnicy zbioru są ze sobą powiązane.
φ(N (fα )) = fα (ti )(ti − ti−1 ) = 0,
Średnica nie może być mniejsza od promienia i nie może
i=1
przekraczać jego dwukrotności.
i stąd
|S(fα ) − φ(N (fα ))| = α. Fakt 9 Dla dowolnego zbioru A będącego podzbiorem
przestrzeni unormowanej G zachodzi
Zauważmy teraz, że
r(A) 6 d(A) 6 2r(A).
e(N, φ) = sup kS(f ) − φ(N (f ))k
f ∈E
> sup kS(fα ) − φ(N (fα ))k
α>0
= sup α = +∞.
α>0
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 47

2.3.5 Promień i średnica informacji Następne twierdzenie jest jednym z kluczowych dla analitycz-
nej złożoności obliczeniowej. Charakteryzuje ono istnienie
Oznaczmy przez Y0 obraz zbioru E przy funkcji N , czyli algorytmu optymalnego oraz jego błąd.
zbiór tych elementów ~y zbioru Y , dla których istnieje element
Twierdzenie 2
f ∈ E taki, że ~y = N (f ):
1. Dla dowolnej informacji N zachodzi, że
Y0 = N (E) = {~y ∈ Y : ∃f ∈E ~y = N (f )}.
inf e(N, φ) = rad(N ).
φ

2. Algorytm optymalny istnieje wtedy i tylko wtedy, gdy


równość
r(A(~y )) = rad(N )
implikuje, że zbiór A(~y ) ma środek.
3. Jeśli dla każdego ~y istnieje środek g~y zbioru A(~y ), to
algorytm
φctr (~y ) = g~y
jest optymalny.
Dla każdego ~y ∈ Y0 określimy zbiór E(~y ) tych elementów ze
Algorytm z powyższego twierdzenia nazywa się algorytmem
zbioru E, które posiadają tę samą informację ~y , tzn.
centralnym. Twierdzenie pozwala na zastąpienie wyznacza-
E(~y ) = {f ∈ E : ~y = N (f )}. nia błędu algorytmu optymalnego przez obliczenie promienia
informacji.
Ponadto, niech A(~y ) będzie obrazem zbioru E(~y ) przy prze-
kształceniu S, czyli Przykład Rozważmy problem postawiony w poprzednich
przykładach. Oznaczmy przez g funkcję ze zbioru E stale
A(~y ) = S(E(~y )) = {S(f ) : f ∈ E(~y )}. równą zeru. Zatem S(g) = 0. Niech fα dla α > 0 oznacza tę
samą funkcję, co w poprzednim przykładzie (przypomnijmy,
że S(fα ) = α). Zauważmy, że obie funkcje należą do zbioru
E(~0), bo informacja o nich jest wektorem zerowym. Wtedy
zachodzi

diam(N ) = sup d(A(~y ))


y ∈Y0
~

> d(A(~0))
= sup |a1 − a2 |
a1 , a2 ∈A(~
0)

= sup |S(h1 ) − S(h2 )|


h1 , h2 ∈E(~
0)

Definicja 22 Promieniem informacji N nazywamy > sup |S(fα ) − S(g)|


α>0
liczbę = sup α = +∞.
rad(N ) = sup r(A(~y )). α>0
y ∈Y0
~
Z powyższego wynika, że diam(N ) = +∞, a ponieważ
Średnicą informacji N nazywamy liczbę rad(N ) > 12 diam(N ), to również rad(N ) = +∞. Korzy-
stając z twierdzenia przedstawionego wyżej otrzymujemy,
diam(N ) = sup d(A(~y )).
y ∈Y0
~ że błąd algorytmu optymalnego wynosi +∞, więc każdy
algorytm jest optymalny.
Nie oznacza to, że w praktyce każdy algorytm jest jednakowo
Średnica informacji mierzy największą odległość pomiędzy dobry lub jednakowo zły. Jeśli rad(N ) = +∞, to jedynie
elementami zbioru S(E), które nie mogą być rozróżnione wiemy, że nie ma algorytmu „uniwersalnego”, który dla do-
na podstawie posiadanej informacji o odpowiadających im wolnej funkcji ciągłej obliczałby przybliżenie całki w sposób
elementom ze zbioru E. satysfakcjonujący. Dla każdego algorytmu zawsze znajdą się
Poniższy fakt pozwala stwierdzić, że znajomość średnicy po- funkcje, dla których ten algorytm nie zadziała, choć być może
zwala z dokładnością do mnożnika z przedziału [1, 2] określić będzie działał dobrze dla innych funkcji. Zbiór E jest „zbyt
wielkość promienia informacji. duży”. Trzeba rozpatrywać zbiory E, w których nałożone są
pewne założenia na funkcje (np. ograniczoność pewnej liczby
Fakt 10 Dla dowolnej informacji N pochodnych) i dla takich zbiorów szukać algorytmów. 

rad(N ) 6 diam(N ) 6 2 rad(N ).


48 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

2.3.6 Model obliczeń Opisy stałych i zmiennych nazywamy deklaracjami. De-


klarację stałych poprzedza słowo kluczowe constants, a
deklaracje zmiennych słowo variables. Deklaracja stałych
nie zawiera w programie ich wartości, podane są jedynie
ich nazwy oraz typ. Jest to wygodne z dwóch powodów.
Po pierwsze, analiza złożoności programu często nie zależy
od wartości stałych, lub tę zależność wyrażamy używając
symboli stałych. Po drugie opis wartości np. stałej będącej
funkcją ze zbioru Λ trudno sformalizować w sposób gwaran-
tujący czytelność programu. Można to uczynić przed lub po
programie.
Składnię deklaracji przedstawia poniższy przykład. Zwróćmy
uwagę na notację dopuszczającą wielokropki, indeksy dolne
Przypomnijmy, że operator informacji N jest funkcją lub górne i inne oznaczenia stosowane w matematyce.

[ constants:
N : F → Y, gdzie Y ⊂ Rk . n: Integer;
k=1 L1 , L2 , ..., Ln : Lambda_type;
g1 , g2 , ..., gn : G_type;
Przy ustalonym elemencie f ∈ F wektor ~y = N (f ) jest
variables:
informacją o f . Oznaczmy liczbę jego współrzędnych przez
y1 , y2 , ..., yn : Real;
nf . Możemy zatem zapisać, że
g: G_type;
~y = N (f ) = [L (f ), L (f ), . . . , L (f )] ,
T i: Integer;
1 2 nf

gdzie Li są pewnymi funkcjami o dziedzinie F i przeciwdzie- Opis akcji, które mają być wykonane przez program nazy-
dzinie R. Oznaczmy przez Λ zbiór wszystkich takich funkcji wamy instrukcjami. Mamy trzy instrukcje proste (instrukcja
Li , które są używane do opisu operatora informacji. pusta, instrukcja informacji i instrukcja przypisania) oraz
trzy sterujące (instrukcja złożona, instrukcja warunkowa,
Model obliczeń jest oparty na dwóch postulatach: instrukcja while). Oprócz tego przy pomocy dopuszczal-
1. jest możliwe uzyskanie informacji ~y = N (f ) dla dowol- nych operacji (zwanych operacjami podstawowymi) można
nego f ∈ E, budować wyrażenia.

2. używając pewnych dopuszczalnych operacji jest możliwe Operacjami podstawowymi są


na podstawie informacji ~y o elemencie f ∈ E obliczenie 1. operacje arytmetyczne w zbiorze R (zmiany znaku na
wartości algorytmu φ(~y ). przeciwny, dodawania, odejmowania, mnożenia, dziele-
Aby opisać proces obliczania wartości algorytmu posłużymy nia),
się pojęciem programu. Program będzie składał się z dwóch 2. operacje porównania w zbiorze R (=, 6=, <, 6, >, >),
części:
3. operacje arytmetyczne w zbiorze N (zmiany znaku na
1. opisu używanych obiektów, przeciwny, dodawania, odejmowania, mnożenia, dziele-
2. opisu akcji, które mają być wykonane. nia całkowitego, obliczenia reszty z dzielenia),

Obiektami w programie mogą być 4. operacje porównania w zbiorze N (=, 6=, <, 6, >, >),

1. stałe, czyli liczby rzeczywiste, elementy przestrzeni G, 5. operacje w przestrzeni G (zmiany znaku na przeciwny,
wartości true i false oraz funkcje ze zbioru Λ, dodawania, odejmowania, mnożenia przez liczbę rzeczy-
wistą),
2. zmienne, które mogą mieć jeden z czterech typów:
6. operacje boolowskie (or, and).
• Real — zmienne tego typu mogą przyjmować do-
wolne wartości rzeczywiste, Wyrażeniem jest

• Integer — zmienne tego typu mogą przyjmować 1. pojedyncza zmienna lub stała,
dowolne wartości całkowite, 2. napis zbudowany z wcześniej utworzonych wyrażeń oraz
• G_type — zmienne tego typu mogą przyjmować operacji podstawowych.
dowolne wartości ze zbioru G, Dysponujemy poniższymi instrukcjami.
• Lambda_type — zmienne tego typu mogą przyjmo- 1. Instrukcja pusta
wać dowolne wartości ze zbioru Λ,
;
• Boolean — zmienne tego typu mogą przyjmować
wartości true lub false. Nie zostaje wykonana żadna akcja.
Wartości początkowe zmiennych nie są określone. 2. Instrukcja informacji
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 49

I(y,L) variables:
y1 , y2 , ..., yn : Real;
gdzie y jest zmienną typu Real, L ∈ Λ. Po wykonaniu g: G_type;
tej instrukcji zostaje obliczona wartość L(f ) i umiesz- i: Integer;
czona w zmiennej y. Element f ∈ E jest tym, dla begin
którego chcemy policzyć przybliżenie wielkości S(f ). i := 1;
Element f niekoniecznie jest znany, zakładamy jedynie, g := 0;
że instrukcja informacji jest w stanie dostarczyć L(f ). while i <= n do
begin
3. Instrukcja przypisania
I(yi ,Li );
v := E; g := g + yi * gi ;
i := i + 1;
gdzie v jest zmienną, a E wyrażeniem. Wartość wyraże- end
nia zostaje obliczona przy aktualnym stanie zmiennych i end
zapisana w zmiennej v. Wymagane jest, by typ zmiennej
i wyrażenia był taki sam.
4. Instrukcja złożona 2.3.7 Koszt wykonania programu
begin Określimy teraz, czym jest koszt wykonania programu. Przyj-
S1 ; mujemy następujące założenia.
S2 ;
... 1. Wykonanie instrukcji I(y,L) dla dowolnego L ∈ Λ
Sm ; kosztuje cI , gdzie cI > 0.
end 2. Wykonanie każdej z operacji arytmetycznych oraz
każdego porównania w R kosztuje 1.
gdzie S1 , S2 , . . ., Sm są instrukcjami. Oznacza kolejne
wykonanie tych instrukcji. 3. Wykonanie każdej z operacji w przestrzeni G kosztuje
cG , gdzie cG > 0.
5. Instrukcja warunkowa
4. Wykonanie każdej z operacji boolowskich kosztuje 0.
if E then
S1 ; 5. Wykonanie każdej z operacji arytmetycznych oraz
else każdego porównania w N kosztuje 0.
S2 ;
Koszt wykonania programu uwzględnia zarówno koszt uzy-
gdzie S1 , S2 są instrukcjami, albo oznaczają napisy puste, skania informacji (tzw. koszt informacji) oraz koszt wykona-
a E wyrażeniem o wartości true lub false. Instrukcja nia operacji podstawowych (tzw. koszt kombinatoryczny).
ta odpowiada następującym czynnościom. Najpierw Definicja 23 Niech P będzie programem. Kosztem wy-
wartość wyrażenia E zostaje obliczona przy aktualnym konania programu P nazywamy sumę wszystkich kosztów
stanie zmiennych. Jeśli wartością jest true, to zostaje instrukcji informacji oraz wszystkich operacji podstawo-
wykonana instrukcja S1 . Jeśli wartością jest false, to wych wykonanych przez program. Koszt ten oznaczamy
zostaje wykonana instrukcja S2 . przez c(P, ~y ).
6. Instrukcja while
Zauważmy, że koszt wykonania programu zależy jedynie od
while E do
uzyskanej informacji ~y oraz od samego programu.
S;
Definicja 24 Kosztem obliczenia aproksymacji przez
gdzie S jest instrukcją, a E wyrażeniem o wartości true program P nazywamy liczbę
lub false. Instrukcja ta powoduje wielokrotne wykona-
nie instrukcji S — tak długo, aż E będzie miało wartość cost(P ) = sup c(P, ~y ).
y ∈Y0
~
false. Wartość E jest każdorazowo obliczana przed
kolejnym wykonaniem S.
Cały program składa się z deklaracji i jednej instrukcji zło- Koszt obliczenia aproksymacji przez program P wyraża naj-
żonej. Zakładamy, że program zawiera deklarację specjalnej gorszy koszt wykonania programu rozpatrywany dla wszyst-
zmiennej g, która jest typu G-type. Po wykonaniu programu kich możliwych do otrzymania wektorów informacji.
wynik jest zapisany w tej zmiennej. Poprawny program musi
Przykład Rozpatrzmy przedstawiony wcześniej program.
zawierać przynajmniej jedno przypisanie tej zmiennej warto-
Jego koszt wykonania jest taki sam dla każdej uzyskanej
ści. Poniżej podano przykładowy program.
informacji ~y . Zatem
constants:
cost(P ) = c(P, ~y ),
n: Integer;
L1 , L2 , ..., Ln : Lambda_type; dla dowolnego ~y ∈ Y0 . Zauważmy, że program n razy wyko-
g1 , g2 , ..., gn : G_type; nuje instrukcję informacji, n razy operację dodawania w G,
50 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

n razy operację mnożenia przez skalar w G, ponadto n razy przy tym, że wszystkie rozpatrywane algorytmy korzystają
operacje dodawania oraz porównania w N. Zatem z operatora informacji N .

cost(P ) = n(cI + 2cG ). 


Definicja 27 Jeśli istnieje algorytm φε ∈ Φ(N, S, ε)
taki, że
comp(N, φε ) = Comp(N, S, ε),

2.3.8 Złożoność algorytmu to nazywamy go optymalnym ze względu na ε-złożoność


S z informacją N .
Zauważmy, że każdemu programowi P odpowiada pewien
operator informacji N oraz algorytm φ. Mówimy wtedy, że Zauważmy, że φε ∈ Φ(N, S, ε) nie musi być optymalny w
program P jest realizacją algorytmu φ używającego opera- sensie wcześniejszej definicji. Niemniej, w niektórych przy-
tora informacji N . padkach tak może być, np. jeśli ε = rad(N ).

Przykład Program P podany wyżej jest realizacją algo-


rytmu 2.3.10 Złożoność problemu S w klasie infor-
macji Ψ
φ : Rn → G,
n
X Rozpatrzymy teraz sytuację, gdy informacja nie jest z góry
φ(~y ) = φ([y1 , y2 , . . . , yn ]T ) = yi gi ,
ustalona, ale można ją wybrać spośród pewnej klasy infor-
i=1
macji.
używającego operatora informacji
Definicja 28 Niech Ψ oznacza zbiór operatorów infor-
N :F →R , n macji, które mogą być używane podczas znajdowania
aproksymacji problemu S. Liczbę
N (f ) = [L1 (f ), L2 (f ), . . . , Ln (f )]T . 
Comp(Ψ, S, ε) = inf Comp(N, S, ε)
N ∈Ψ
Zwykle algorytm posiada więcej niż jedną realizację. Zdarza
się jednak, że algorytm nie posiada żadnej realizacji. nazywamy ε-złożonością problemu S w klasie informacji
Jesteśmy zainteresowani taką realizacją P algorytmu, która Ψ.
ma najmniejszy koszt cost(P ). Taki minimalny koszt reali-
Zdefiniowana ε-złożonością problemu S w klasie informacji
zacji będziemy nazywać złożonością algorytmu używającego
Ψ wyraża złożoność najtańszego z algorytmów aproksymują-
informacji N i oznaczać comp(N, φ).
cych S wśród tych, których błąd nie przekracza ε, przy czym
Definicja 25 Złożonością algorytmu używającego infor- rozpatrujemy algorytmy korzystające z różnych operatorów
macji N nazywamy liczbę informacji należących do zbioru Ψ.
[
comp(N, φ) = inf{cost(P ) : P jest realizacją φ Definicja 29 Jeśli istnieje algorytm φε ∈ Φ(N, S, ε)
używającegoN }. N ∈Ψ
taki, że
Jeśli φ używające N nie posiada realizacji, to przyjmu- comp(N, φε ) = Comp(Ψ, S, ε),
jemy comp(N, φ) = +∞. to nazywamy go optymalnym ze względu na ε-złożoność
S w klasie informacji Ψ.

2.3.9 Złożoność problemu S z informacją N


2.3.11 Cele analitycznej złożoności oblicze-
Definicja 26 Niech ε > 0. Oznaczmy przez Φ(N, S, ε) niowej
zbiór wszystkich algorytmów używających informacji N
aproksymujących problem S takich, że Analityczna złożoność obliczeniowa zajmuje się znajdowa-
niem algorytmów optymalnych (m. in. w wyżej wymie-
e(N, φ) 6 ε. nionych znaczeniach) dla konkretnych problemów lub klas
problemów. Różni się od złożoności algebraicznej m.in. tym,
Liczbę
że zwykle uzyskany algorytm nie będzie rozwiązywał zada-
Comp(N, S, ε) = inf comp(N, φ) nia dokładnie. Jedną z przyczyn może być posiadanie tylko
φ∈Φ(N,S,ε) informacji częściowej, tzn. takiej, która może być identyczna
dla wielu różnych elementów zbioru F .
nazywamy ε-złożonością problemu S z informacją
N . Jeśli zbiór Φ(N, S, ε) jest pusty, to przyjmujemy Zadania rozważane przez złożoność algebraiczną mogą sta-
Comp(N, S, ε) = +∞. nowić podzadania analitycznej złożoności obliczeniowej.

Zdefiniowana ε-złożoność problemu S z informacją N wyraża


złożoność najtańszego z algorytmów aproksymujących S
wśród tych, których błąd nie przekracza ε. Zakładamy
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 51

2.3.12 Inne modele 2.3.14 Ćwiczenia sprawdzające zrozumie-


nie tematu
Przedstawiony model jest najprostszym z rozważanych w
analitycznej złożoności obliczeniowej. Nazywany jest mode-
lem najgorszego przypadku z informacją dokładną. Zwykle Zadanie 86 Dla poniższego problemu określ wzorem
jest on zbyt słaby, by dobrze opisywać zadania praktyczne. operator rozwiązania, operator informacji i algorytm
(wraz z ich dziedzinami i przeciwdziedzinami).
Przede wszystkim błąd algorytmu definiowany jest tu jako
odległość między wynikiem poprawnym S(f ), a obliczonym Problem polega na obliczeniu całki oznaczonej na prze-
przez algorytm φ(N (f )) dla „najgorszego” elementu f ∈ E. dziale [a, b]. Chcemy wyznaczać całki dla dowolnych
Jeśli takie „najgorsze” elementy pojawiają się sporadycz- funkcji rzeczywistych, które są ciągłe na przedziale [a, b].
nie, to dla wielu zastosowań otrzymany wynik jest zbyt Do rozwiązania problemu posłużymy się algorytmem,
pesymistyczny. Lepiej wtedy przejść do modelu przypadku który dla funkcji f oblicza liczbę
średniego, który używa metod probabilistycznych. 
a+b

(b − a) · f
Przedstawiony model nie uwzględnia też błędów, które poja- 2
wiają się podczas uzyskiwania informacji o elemencie f ∈ E.
Błędy te mogą być traktowane na różne sposoby: można zastępującą szukaną całkę.
założyć, że nie przekraczają pewnej wartości, albo założyć,
że mają pewien rozkład losowy.
Zadanie 87 Dla poniższego problemu określ operator
rozwiązania, operator informacji i algorytm (wraz z ich
2.3.13 Pytania powtórzeniowe dziedzinami i przeciwdziedzinami).
Problem polega na przybliżaniu funkcji ciągłej na prze-
1. Podaj definicję normy i przestrzeni unormowanej. dziale [−1, 1] wielomianem stopnia co najwyżej n, gdzie
2. Podaj definicję rozwiązania, informacji i algorytmu. n jest liczbą naturalną. Chcemy, by funkcja f i wie-
lomian w, który ją przybliża nie różniły się znacznie.
3. Podaj definicję błędu algorytmu oraz algorytmu opty- Dokładniej chodzi o to, by wielkość
malnego.
kf − wk = sup |f (x) − w(x)|
4. Podaj definicję promienia i średnicy zbioru. Jaka zależ- x∈[−1,1]
ność zachodzi pomiędzy tymi wielkościami?
była jak najmniejsza. Do tego celu wybieramy algo-
5. Podaj definicję promienia i średnicy informacji. Jaka rytm działający następująco. Wybieramy najpierw różne
zależność zachodzi pomiędzy tymi wielkościami? punkty xi , i = 0, 1, . . . , n z przedziału [−1, 1]. Teraz
6. Podaj twierdzenie charakteryzujące zależności pomiędzy szukamy wielomianu w, który spełnia równości
algorytmem optymalnym i promieniem informacji. Co
to jest algorytm centralny? f (x0 ) = w(x0 ),
f (x1 ) = w(x1 ),
7. Jakich obiektów można używać w programie? Jak wy-
glądają ich deklaracje? ...
f (xn ) = w(xn ).
8. Wymień operacje podstawowe.
9. Co to jest wyrażenie? Okazuje się, że taki wielomian istnieje i to dokładnie
jeden. Można go opisać wzorem
10. Opisz wszystkie dostępne instrukcje.
n
11. Jakie założenia przyjmujemy odnośnie kosztu wykona-
X
w(x) = f (xi )li (x),
nia programu? i=0

12. Co to jest koszt wykonania programu i koszt obliczenia gdzie


aproksymacji przez program? Yn
x − xj
li (x) = .
13. Co to jest złożoność algorytmu używającego informacji j=0
x i − xj
N? j6=i

14. Co to jest ε-złożoność problemu S z informacją N ?


Czym jest algorytm optymalny ze względu na tę złożo-
2.3.15 Zadania
ność?
15. Co to jest ε-złożoność problemu S w klasie informacji Zadanie 88 Oblicz promień i średnicę zbioru K bę-
Ψ? Czym jest algorytm optymalny ze względu na tę dącego kwadratem, którego współrzędnymi są punkty
złożoność? (0, 0), (1, 0), (0, 1) i (1, 1). Rozważ przestrzeń R2 z p–tą
normą, gdzie
1. p = 2,
52 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

2. p = 1,
3. p = ∞.

Zadanie 89 Dla problemu i algorytmu opisanego w


zadaniu 86 wyznacz błąd algorytmu. Czy przedstawiony
algorytm jest algorytmem optymalnym?

Zadanie 90 Dla problemu i algorytmu opisanego w


zadaniu 87 wyznacz błąd algorytmu. Czy przedstawiony
algorytm jest algorytmem optymalnym?

Odpowiedzi
√ √
Zadanie 88 1. r(K) = 22 , d(K) = 2 2. r(K) = 1, d(K) = 2
3. r(K) = 12 , d(K) = 1 Zadanie 89 e(N, φ) = +∞, jest opty-
malny Zadanie 90 e(N, φ) = +∞, jest optymalny
Rozdział 3

Wielomiany

3.1 Bazy wielomianowe


Fakt 12 Niech w i v będą wielomianami takimi, że
3.1.1 Przestrzeń wielomianów w(x) = an xn + an−1 xn−1 + . . . + a1 x + a0 ,
W analizie numerycznej wielomiany mają liczne zastosowa- v(x) = bm xn + bm−1 xm−1 + . . . + b1 x + b0 .
nia — np. w interpolacji, aproksymacji, czy całkowaniu
Dla uproszczenia przyjmijmy, że n > m. Wtedy
numerycznym. Przypomnijmy ich definicję.
Definicja 30 Wielomian rzeczywisty jest funkcją, którą (w + v)(x) = cn xn + cn−1 xn−1 + . . . + c1 x + c0 ,
można zapisać w postaci (c · w)(x) = (c · an )xn + . . . + (c · a1 )x + (c · a0 ),

w:R→R gdzie c ∈ R oraz


w(x) = an x + an−1 x
n n−1
+ . . . + a1 x + a0 , (
ai + bi dla i 6 m,
ci =
gdzie ai ∈ R, i = 0, . . . , n. Jeśli an 6= 0 to n jest stopniem ai dla m < i 6 n.
wielomianu. Liczby ai nazywamy współczynnikami wielo-
mianu. Wielomian, który jest funkcją stałą o wartościach
równych zeru nazywamy wielomianem zerowym. Przykład Niech

Głównymi operacjami, jakie się na wielomianach wykonuje w(x) = 3x2 − 4,


są: obliczanie wartości i pochodnej wielomianu w punkcie, v(x) = 7x.
dodawanie wielomianów, mnożenie przez liczbę. Kluczowym
Wtedy wielomian w ma stopień 2, a v jest wielomianem
problemem jest dobry sposób przechowywania wielomianów,
pierwszego stopnia. Ponadto
tzn. taki, by łatwo było dokonywać operacji oraz by jakość
otrzymanych wyników była zadowalająca. (w + v)(x) = 3x2 + (0 + 7)x + (−4 + 0)
Fakt 11 = 3x2 + 7x − 4,
1. Zbiór wielomianów rzeczywistych stopnia nie więk- (6w)(x) = (6 · 3)x2 + (6 · 0)x + (6 · (−4))
szego niż n ze zwyczajowymi działaniami dodawania = 18x2 − 24. 
wielomianów i mnożenia wielomianu przez liczbę two-
rzy przestrzeń liniową nad ciałem R. Przestrzenie wielomianów oraz funkcji ciągłych będą często
używane, dlatego wprowadzamy poniższe oznaczenia.
2. Jest ona podprzestrzenią przestrzeni liniowej wszyst-
kich wielomianów rzeczywistych. Oznaczenia Przez Πn oznaczamy przestrzeń liniową
wielomianów rzeczywistych stopnia nie większego niż n.
3. Przestrzeń liniowa wszystkich wielomianów rzeczy-
wistych jest podprzestrzenią przestrzeni liniowej rze- Przez Π oznaczamy przestrzeń liniową wszystkich wielo-
czywistych funkcji ciągłych o dziedzinie R. mianów rzeczywistych.
Przez C(R) oznaczamy przestrzeń liniową wszystkich
Przypomnijmy, że zwyczajowe działania dodawania wielo- rzeczywistych funkcji ciągłych o dziedzinie R.
mianów i mnożenia wielomianu przez liczbę są określone
tak, jak dla dowolnych funkcji, czyli następująco. Niech w Przez C[a, b] oznaczamy przestrzeń liniową wszystkich
i v będą dowolnymi wielomianami, a c liczbą rzeczywistą. rzeczywistych funkcji ciągłych o dziedzinie [a, b], gdzie
Wtedy wielomian u będący sumą w i v spełnia warunek a, b ∈ R.

∀x∈R u(x) = w(x) + v(x),


C(R)
Πn Π
a wielomian t będący wynikiem mnożenia w przez c

∀x∈R t(x) = c · w(x).

53
54 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Kluczowym pojęciem związanym z przestrzeniami liniowymi Wektor


3
 
jest baza.
~v = −1 ,
Definicja 31 Niech V będzie przestrzenią liniową. Bazą 2
przestrzeni V nazywamy zbiór wektorów B ⊂ V spełnia-
jący warunki ma w tej bazie współrzędne 3, −1, 2, bo

3 1 0 0
       
1. jest on liniowo niezależny,
~v = −1 = 3 · 0 + (−1) · 1 + 2 · 0 .
2. generuje on przestrzeń V , tj. każdy wektor z prze- 2 0 0 1
strzeni V może być zapisany jako kombinacja liniowa
wektorów ze zbioru B. W R3 można też wybrać inną bazę, np.

Przypomnijmy podstawowe fakty dotyczące baz.  1 3 1 


     
1 , 0 , −1 .
Twierdzenie 3
0 0 1
 
1. Każda przestrzeń liniowa posiada bazę.
Ten sam wektor
2. Wszystkie bazy jednej przestrzeni liniowej mają tyle 3
 
samo elementów. ~v = −1 ,
2
Ilość elementów bazy jest zatem cechą przestrzeni liniowej.
ma w tej bazie współrzędne 1, 0, 2, bo
Definicja 32 Liczbę elementów bazy przestrzeni linio-
3 1 3 1
       
wej nazywamy wymiarem przestrzeni. Jeśli wymiar jest
skończony, to przestrzeń nazywamy skończenie wymia- ~v = −1 = 1 · 1 + 0 · 0 + 2 · −1 .
rową. 2 0 0 1 

Bazy przestrzeni liniowej używa się po to, by łatwiej repre-


zentować wektory — w sposób, który przypomina układ kar-
3.1.2 Miejsca zerowe wielomianów
tezjański. Dla ułatwienia zapisu w dalszej części ograniczymy
się do rzeczywistych przestrzeni skończenie wymiarowych,
Przypomnijmy, że miejscem zerowym wielomianu w (inaczej
ale odpowiednie twierdzenia i definicje mają zastosowanie
pierwiastkiem) nazywamy taki argument α, że w(α) = 0.
dla wszystkich przestrzeni.
Fakt 13 Liczba α jest pierwiastkiem wielomianu wtedy i
Twierdzenie 4 Niech V będzie przestrzenią skończenie
tylko wtedy, gdy wielomian jest podzielny przez jednomian
wymiarową nad R o wymiarze n oraz zbiór
(x − α).
{~v1 , ~v2 , . . . , ~vn }
Dla każdego pierwiastka określa się tzw. krotność pier-
będzie jej bazą. Wtedy każdy wektor ~v ∈ V można jedno- wiastka.
znacznie zapisać w tej bazie, co oznacza, że dla ~v istnieje
Definicja 33 Pierwiastek α jest k-krotny jeśli wielomian
dokładnie jeden zestaw liczb rzeczywistych
jest podzielny przez (x − α)k , a nie jest podzielny przez
α1 , α2 , . . . , αn (x − α)k+1 . Liczba k musi być naturalna.

taki, że Wielomiany nie mogą mieć dowolnie wiele pierwiastków, o


czym mówi poniższe twierdzenie.
~v = α1 · ~v1 + α2 · ~v2 + . . . + αn · ~vn
Xn Twierdzenie 5 Niech n będzie liczbą naturalną. Wielo-
= αi · ~vi . mian rzeczywisty stopnia n ma co najwyżej n pierwiast-
i=1 ków rzeczywistych.

Liczby α1 , α2 , . . . , αn nazywamy współrzędnymi wektora Suma krotności wszystkich pierwiastków rzeczywistych


v w bazie ~v1 , ~v2 , . . . , ~vn . wielomianu rzeczywistego wynosi co najwyżej n.
Wielomian stopnia nieparzystego ma co najmniej jeden
Zatem baza i współrzędne wektora w bazie jednoznacznie pierwiastek rzeczywisty.
określają wektor. Po wybraniu bazy przestrzeni liniowej
każdy wektor możemy zapisać np. w pamięci komputera
jako ciąg liczb, które są jego współrzędnymi.
3.1.3 Wybrane bazy wielomianowe
Przykład Bazą R3 jest zbiór
Jak w każdej przestrzeni, w Πn możemy wybrać bazę i to na
 1 0 0 
     
nieskończenie wiele sposobów. Gdy dokonamy wyboru, to
0 , 1 , 0 .
każdy wielomian można jednoznacznie zapisać w bazie, czyli
0 0 1
 
wyznaczyć jego współrzędne. Są one liczbami rzeczywistymi
i możemy je zapisać w pamięci komputera.
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 55

Z punktu widzenia matematyki jest właściwie wszystko Baza Czebyszewa


jedno, którą bazę wybierzemy — to tylko kwestia zapisu,
wielomian przedstawiony w tej, czy innej bazie pozostaje tym Definicja 36 Bazą Czebyszewa przestrzeni Πn jest ze-
samym wielomianem, choć ma różne współrzędne. Okazuje staw wielomianów
się, że zachodzą istotne różnice, związane z jakością i wygodą
obliczeń, gdy rozważamy obliczenia komputerowe. Przedsta- T0 , T1 , . . . , Tn
wię poniżej przykładowe cztery bazy mające zastosowania
praktyczne. nazywanych wielomianami Czebyszewa, które zdefinio-
wane są w sposób rekurencyjny
Zamiast sformułowania współrzędne w stosunku do wielo-
mianów będę często używać słowa współczynniki. T0 (x) = 1,
T1 (x) = x,
Baza naturalna (inaczej potęgowa) Tk (x) = 2xTk−1 (x) − Tk−2 (x), dla k = 2, 3, . . .

Definicja 34 Bazą naturalną przestrzeni Πn jest zestaw


wielomianów Współczynniki
1, x, x2 , x3 , . . . , xn . c0 , c1 , . . . , cn
wyznaczają w tej bazie wielomian
Współczynniki n
X
a0 , a1 , . . . , an w(x) = c0 T0 (x) + c1 T1 (x) + . . . + cn Tn (x) = ci Ti (x).
i=0
wyznaczają w tej bazie wielomian
n
w(x) = a0 + a1 x + a2 x2 . . . + an xn =
X
ai xi . Baza Lagrange’a
i=0
Definicja 37 Niech x0 , x1 , . . . , xn będą dowolnymi róż-
nymi liczbami rzeczywistymi. Bazę Lagrange’a o węzłach
Baza Newtona x0 , x1 , . . . , xn przestrzeni Πn tworzą funkcje Lagrange’a:

Definicja 35 Niech x1 , x2 , . . . , xn będą dowolnymi (nie- l0 , l1 , . . . , ln ,


koniecznie różnymi) liczbami rzeczywistymi. Bazę New-
tona o węzłach x1 , x2 , . . . , xn przestrzeni Πn tworzą wie- które są zdefiniowane równościami
lomiany n
Y x − xj
N0 , N1 , N2 , . . . , Nn li (x) = i = 0, 1, . . . , n.
xi − xj
gdzie
j=0
j6=i

N0 (x) = 1,
N1 (x) = x − x1 , Współczynniki
N2 (x) = (x − x1 )(x − x2 ), d0 , d1 , . . . , dn
..., wyznaczają w tej bazie wielomian
Nn (x) = (x − x1 )(x − x2 ) · . . . · (x − xn ) w(x) = d0 l0 (x) + d1 l1 (x) + . . . + dn ln (x)
Xn
= di li (x)
Często wygodnie jest zapisać k-ty element bazy Newtona i=0
używając uogólnionego iloczynu n n
X Y x − xj
= di .
k
Y i=0 j=0
x i − xj
Nk (x) = (x − xi ), dla k = 0, 1, . . . , n. j6=i

i=1
Ta baza istotnie różni się od pozostałych — wszystkie funk-
Współczynniki cje bazowe są dokładnie stopnia n, a poprzednio stopnie
b0 , b1 , . . . , bn wielomianów bazowych rosły od 0 do n.
definiują w tej bazie wielomian Przykład Dany jest wielomian

w(x) = b0 + b1 (x − x1 ) + b2 (x − x1 )(x − x1 ) + . . . w(x) = 1 − 2x2 + 4x.


+ bn (x − x1 )(x − x2 ) . . . (x − xn ) Znajdźmy jego współczynniki w wybranych bazach prze-
n
X k
Y strzeni Π3 .
= bk (x − xi ).
k=0 i=1 1. Bazę naturalną przestrzeni Π3 tworzą wielomiany

1, x, x2 , x3 .
56 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Zauważmy, że Jego rozwiązaniem są liczby

w(x) = 1 · 1 + 4 · x + (−2) · x2 + 0 · x3 . c3 = 0, c2 = −1, c1 = 4, c0 = 0.


Zatem współczynnikami w tej bazie są liczby Są one współczynnikami wielomianu w w rozpatrywanej
bazie.
a0 = 1, a1 = 4, a2 = −2, a3 = 0.
4. Bazę Lagrange’a zdefiniowaną węzłami −1, 1, −2, 2
2. Bazę Newtona o węzłach x1 = −1, x2 = 0, x3 = 1 tworzą funkcje
tworzą wielomiany (x − 1)(x + 2)(x − 2)
l0 (x) = ,
N0 (x) = 1, (−1 − 1)(−1 + 2)(−1 − 2)
N1 (x) = x + 1, (x + 1)(x + 2)(x − 2)
l1 (x) = ,
N2 (x) = (x + 1)x, (1 + 1)(1 + 2)(1 − 2)
(x + 1)(x − 1)(x − 2)
N3 (x) = (x + 1)x(x − 1) = x(x2 − 1). l2 (x) = ,
(−2 + 1)(−2 − 1)(−2 − 2)
Szukamy współczynników b0 , b1 , b2 , b3 spełniających (x + 1)(x − 1)(x + 2)
dla dowolnego x ∈ R równość l3 (x) = .
(2 + 1)(2 − 1)(2 + 2)
w(x) = b0 · 1 + b1 (x + 1) + b2 (x + 1)x + b3 x(x2 − 1). Szukamy współczynników takich, że
Po uporządkowaniu otrzymujemy równość w(x) = d0 l0 (x) + d1 l1 (x) + d2 l2 (x) + d3 l3 (x).
1 + 4x − 2x = b0 + b1 + (b1 + b2 − b3 )x + b2 x + b3 x .
2 2 3
Obliczanie współczynników dla bazy Lagrange’a wy-
Porównując współczynniki przy odpowiednich potęgach daje się dość pracochłonne (gdybyśmy chcieli do po-
zmiennej x uzyskujemy układ równań wyższego równania wstawiać wzory opisujące funkcje
bazowe Lagrange’a, uporządkować równanie i porównać
odpowiednie współczynniki). Można jednak współczyn-
b0 + b1 = 1,


b + b − b = 4,
 niki wyznaczyć znacznie szybciej. Nie zdradzę w tym
1 2 3
miejscu jak — proszę o zastanowienie się. Trzeba zna-
b2 = −2,

 leźć szczególną własność bazy Lagrange’a związaną z
b3 = 0,

węzłami. Uzyskanie rozwiązania tego przykładu wy-
maga jedynie 6 mnożeń i 8 dodawań. Wynikami są
którego rozwiązaniem są liczby
d0 = −5, d1 = 3, d2 = −15, d3 = 1.
b3 = 0, b2 = −2, b1 = 6, b0 = −5. 

Są one współczynnikami wielomianu w w rozpatrywanej


bazie.
3.1.4 Własności wielomianów Czebyszewa
3. Bazę Czebyszewa w Π3 tworzą wielomiany
Wielomiany Czebyszewa mają liczne własności. Poniżej
T0 (x) = 1, przedstawiam niektóre z nich.
T1 (x) = x,
Skorzystajmy z definicji wielomianów Czebyszewa i wypiszmy
T2 (x) = 2xT1 (x) − T0 (x) = 2x2 − 1, kilka ich początkowych
T3 (x) = 2xT2 (x) − T1 (x) = 4x3 − 3x.
T0 (x) = 1,
Szukamy współczynników c0 , c1 , c2 i c3 takich, że
T1 (x) = x,
w(x) = c0 T0 (x) + c1 T1 (x) + c2 T2 (x) + c3 T3 (x), T2 (x) = 2x2 − 1,
T3 (x) = 4x3 − 3x,
czyli spełniających dla każdego x ∈ R równość
T4 (x) = 8x4 − 8x2 + 1.
1 + 4x − 2x = c0 + c1 x + c2 (2x − 1) + c3 (4x − 3x).
2 2 3

Łatwo zauważyć, że zachodzi poniższy fakt.


Po uporządkowaniu prawej strony otrzymujemy równość
Fakt 14 Stopień wielomianu Tn wynosi n.
1 + 4x − 2x2 = (c0 − c2 ) + (c1 − 3c3 )x + 2c2 x2 + 4c3 x3 .
Współczynniki wielomianów Czebyszewa w bazie natural-
Porównując współczynniki przy odpowiednich potęgach nej są liczbami całkowitymi.
x otrzymujemy układ równań Dla n > 1 współczynnik przy najwyższej potędze x wielo-
mianu Tn wynosi 2n−1 .
c0 − c2 = 1,


c − 3c = 4,

1 3 Te własności można udowodnić stosując proste rozumowanie
2c2 = −2,
 indukcyjne. Stosowanie bazy naturalnej do zapisu wielomia-
nów Czebyszewa w pamięci komputera nie ma sensu — po

4c3 = 0.

Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 57

pierwsze po co, a po drugie, dla stosunkowo niewielkich n


Fakt 19 Niech n > 0. Wielomian Tn posiada dokładnie
doszłoby do nadmiaru.
n − 1 ekstremów lokalnych: po jednym pomiędzy sąsied-
Dla n parzystego wykres Tn jest symetryczny względem osi nimi miejscami zerowymi. Są nimi liczby
OY , a nieparzystego symetryczny względem punktu (0, 0).
Wynika to z poniższego faktu. kπ
cos dla k = 1, . . . , n − 1.
n
Fakt 15 Wielomiany Tn są dla n parzystych funkcjami
parzystymi, czyli W tych ekstremach funkcja przyjmuje naprzemiennie war-
tości 1 i −1
∀x∈R Tn (−x) = Tn (x),  

Tn cos = (−1)k dla k = 1, . . . , n − 1.
a dla n nieparzystych nieparzystymi, czyli n

∀x∈R Tn (−x) = −Tn (x). Dodatkowo, na krańcach przedziału [−1, 1] funkcja też
przyjmuje wartości 1 lub −1

Istnieją wzory nierekurencyjne opisujące wielomiany Cze- Tn (−1) = (−1)n , Tn (1) = 1.


byszewa. Pierwszy ma dość nieintuicyjną postać. Należy
pamiętać, że obowiązuje on jedynie dla argumentów z prze-
działu [−1, 1]. Wykresy kilku wielomianów Czebyszewa zamieszczono poni-
żej. Zauważmy, że im większe n, tym Tn częściej oscyluje.
Fakt 16 (postać trygonometryczna) Proszę też zwrócić uwagę na wspomniane wcześniej symetrie.
Dla x ∈ [−1, 1] wielomian Tn można przedstawić wzorem

Tn (x) = cos(n arccos x).

Istnieje też inny nierekurencyjny wzór opisujący Tn , tym


razem działający dla dowolnego x ∈ R. Jednak, gdy |x| < 1,
to część obliczeń trzeba wykonać posługując się liczbami
zespolonymi.
Fakt 17 Dla dowolnego x ∈ R
√ √
(x + x2 − 1)n + (x − x2 − 1)n
Tn (x) = .
2

Poprawność obu wzorów można udowodnić przez indukcję.


Ci, którzy znają teorię równań rekurencyjnych mogą drugi
wyprowadzić bezpośrednio. Zauważmy bowiem, że podsta-
wiając do definicji wielomianów Czebyszewa an = Tn (x)
otrzymujemy równianie jednorodne o stałych współczynni-
3.1.5 Węzły równoodległe i Czebyszewa
kach
Bazy Newtona i Lagrange’a w Πn wymagają ustalenia wę-
a0 = 1, złów — dla bazy Newtona potrzeba n zupełnie dowolnych, a
Lagrange’a n + 1 różnych punktów. Wśród wielu możliwych
a1 = x,
wyborów dwa sposoby są szczególne.
ak = 2xak−1 − ak−2 , dla k = 2, 3, . . . .
Definicja 38 Węzłami równoległymi w przedziale [a, b]
Kolejna własność dotyczy miejsc zerowych. nazywamy liczby x0 < x1 < x2 . . . < xn takie, że x0 = a,
xn = b, a pozostałe dzielą przedział [a, b] na n równych
Fakt 18 Niech n > 0. Wielomian Tn posiada dokładnie
części.
n różnych pierwiastków rzeczywistych, wszystkie leżą w
przedziale (−1, 1). Są nimi liczby
Poniższy rysunek przedstawia 10 węzłów równoodległych w
(2k + 1)π przedziale [a, b]. Zauważmy, że wtedy n = 9.
cos dla k = 0, 1, . . . , n − 1.
2n s s s s s s s s s s -
a b

Miejsca zerowe rozmieszczone są symetrycznie względem Definicja 39 Węzłami Czebyszewa w przedziale [a, b] na-
zera i im bliżej zera, tym rzadziej. Okazuje się, że pomiędzy zywamy liczby x0 < x1 < x2 . . . < xn , które są przeska-
sąsiednimi miejscami zerowymi znajduje się dokładnie jedno lowanymi pierwiastkami wielomianu Tn+1 do przedziału
ekstremum lokalne. [a, b], czyli takimi, które są wynikiem złożenia operacji
58 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

1. jednokładności względem 0 z czynnikiem 2 ,


b−a

2. przesunięcia o wektor (jednowymiarowy) 2 .


a+b

Poniżej przedstawiam jak wyznaczyć 4 węzły Czebyszewa w


przedziale [a, b].
Pierwiastki T4 :

ss ss -
−1 0 1
Węzły po wykonaniu jednokładności:

s s s s -
− b−a 0 b−a
2 2

Węzły po wykonaniu przesunięcia:

s s s s -
0 − b−a + a+b b−a
+ a+b
2 2 2 2

Fakt 20 Węzły Czebyszewa są pierwiastkami (n + 1)–go


przeskalowanego wielomianu Czebyszewa
!
x − a+b
Tn+1 (x) = Tn+1
e 2
. b−a
2

3.1.6 Norma supremum w przestrzeni


C[a, b]

Rozważmy przestrzeń C[a, b] wszystkich funkcji ciągłych o


dziedzinie [a, b]. W przestrzeni tej można zdefiniować normę
następująco.
Definicja 40 Normą supremum w przestrzeni C[a, b] na-
zywamy funkcję

k · k[a,b] : C[a, b] → R,
kf k[a,b] = sup |f (x)|.
x∈[a,b]

Norma ta przyporządkowuje każdej funkcji f jej największą


wartość co do modułu.1
Zauważmy, że każdy wielomian jest funkcją ciągłą, zatem
jeśli ograniczymy jego dziedzinę do przedziału [a, b], to należy
on do przestrzeni C[a, b]. Można więc dla niego obliczać
normę supremum.
Przykład Rozpatrzmy funkcję f (x) = x3 − 3x − 1. Na
rysunkach poniżej przedstawiono wykres tej funkcji oraz jej
modułu. Dla różnych przedziałów [a, b] zaznaczono najwięk-
sze wartości funkcji |f (x|. Z rysunków możemy odczytać,
że

kf k[−2,2] = 3, kf k[−2,0] = 3, kf k[−1,0] = 1.


1 Przypomniejmy,
że na stronie 45 znajduje się ogólna definicja
normy. Można udowodnić, że norma supremum spełnia tą definicję.
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 59

Zadanie obliczenia normy sprowadza się do zadania znalezie- Ponieważ


nia maksimum globalnego funkcji na przedziale domkniętym. n
Przypomnijmy, że jeśli funkcja f jest różniczkowalna, to
X
|w(x) − w(x)| = ((1 + εi )ai − ai ) ui (x)

„kandydatami” na maksimum globalne są:
e

i=0
n
1. maksima lokalne (szukamy ich wśród punktów, gdzie X
= ε a u (x)

f się zeruje),
0
i i i

i=0
2. punkty z brzegu zbioru, czyli w przypadku przedziału n
X
[a, b] punkty a i b. 6 |εi | · |ai | · |ui (x)|
i=0
Dla każdego z „kandydatów” obliczamy wartość funkcji f i n
wybieramy ten, dla którego jest ona największa.
X
6 ν |ai | · |ui (x)|,
Jeśli szukamy maksimum globalnego funkcji |f |, to nawet, i=0

gdy f jest różniczkowalna, to |f | już nie musi. Niemniej za- to Pn


danie nadal łatwo rozwiązać — szukamy zarówno maksimum kw − wk e [a,b] k i=0 |ai | · |ui (x)| k[a,b]
6ν .
jak i minimum globalnego funkcji f , a następnie wybieramy
Pn
kwk[a,b] k i=0 ai ui (x)k[a,b]
ten z dwóch punktów, dla którego moduł wartości f jest
Ułamek
większy. Szukanie minimum odbywa się analogicznie do mak- Pn
k i=0 |ai | · |ui (x)| k[a,b]
simum i można te dwa obliczenia połączyć. W tym wypadku Pn
k i=0 ai ui (x)k[a,b]
najłatwiej postąpić tak. Kandydatami na na maksimum
globalne |f | są: przyjmuje się za wskaźnik uwarunkowania zadania obliczania
wartości wielomianu w przedziale [a, b] zapisanego w bazie
1. punkty, gdzie f 0 się zeruje,
u0 , u1 , . . . , un . Jeśli chcemy porównać dwie bazy, to możemy
2. punkty z brzegu zbioru, czyli w przypadku przedziału rozważyć przy ustalonej bazie wszystkie wielomiany i wybrać
[a, b] punkty a i b. najgorszy wskaźnik uwarunkowania.
Dla każdego z „kandydatów” obliczamy wartość funkcji f i Definicja 41 Wielkość
wybieramy ten, dla którego jest ona największa.  Pn
k i=0 |ai | · |ui (x)| k[a,b]

Należy również pamiętać, że gdy funkcja jest rosnąca lub sup Pn : ai ∈ R, i = 0, 1, . . . , n
k i=0 ai ui (x)k[a,b]
malejąca, to jej maksimum globalne znajduje się na krańcach
przedziału. nazywa się miarą skośności bazy u0 , u1 , . . . , un . Ozna-
czamy ją przez C({ui }, [a, b], n).
3.1.7 Miary skośności baz
Poniżej podaję wartości miary skośności dla przykładowych
baz przestrzeni Πn .
Każda z przedstawionych baz wielomianowych ma inne wła-
sności numeryczne. Jeśli będziemy badać uwarunkowanie baza przedział miara skośności
zadania obliczania wartości wielomianu we wszystkich punk- {ui } [a, b] C({ui }, [a, b], n)
tach z pewnego przedziału [a, b], to okaże się, że dla różnych √
potęgowa („centralna”) [−a, a] Dn (1 + 2)n
baz jest ono bardzo odmienne. W tym zadaniu danymi są
(a > 0)
współczynniki wielomianu, przedział [a, b] jest ustalony. √ n
potęgowa („lokalna”) [0, a] En (1 + 2)2
Aby zbadać uwarunkowanie tego zadania postąpimy nieco (a > 0)
√ √
inaczej, niż było to omówione wcześniej. Będziemy bowiem
 n
( 1+a+ 2)2
potęgowa [a, 1] Fn
analizować wielkość 1−a
(a > 0,
kw − wk
e [a,b] a < 1)
, √
kwk[a,b] Czebyszewa [−1, 1] 6 2n + 1
Lagrange’a [a, b]
gdzie w ∈ Πn jest wielomianem zapisanym w bazie węzły równoodległe (a < b) ∼ c2n
u0 , u1 , . . . , un , czyli dla pewnych liczb ai węzły Czebyszewa ∼ c1 + c2 ln(n)
n
w(x) =
X
ai ui (x). Stałe c, c1 , c2 są niewielkie. Liczby Dn , En i Fn spełniają
i=0
nierówności

Wielomian we tylko nieznacznie różni się od w, ma nieco 0, 5 6 Dn 6 1, 1,


zaburzone współczynniki 0, 5 6 En 6 1, 02,
n
X 0, 5 6 Fn 6 1, 02.
w(x) = (1 + εi )ai ui (x), dla |εi | 6 ν.
Ponadto
e
i=0

1+ 2 ≈ 2, 4142,
√ 2
(1 + 2) ≈ 5, 8284.
60 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Skośność bazy potęgowej nie jest zadowalająca dla nawet Jakie relacje zachodzą między nimi?
niezbyt dużych n — miara skośności rośnie tu w tempie
3. Podaj definicję dodawania wielomianów i mnożenia wie-
wykładniczym. Gdybyśmy chcieli spełnić warunek
lomianu przez liczbę.
C({xi }, [a, b], n) 6 100, 4. Podaj fakt opisujący współczynniki wielomianu, który
jest wynikiem dodawania wielomianów i mnożenia wie-
to dla baz „centralnych” możemy posługiwać się tylko wielo- lomianu przez liczbę.
mianami stopnia co najwyżej 6 (n 6 6), a „lokalnych” jedynie
stopnia nie przekraczającego 3 (n 6 3). Stosowanie baz po- 5. Co to jest baza przestrzeni liniowej?
tęgowych ze względu na możliwość sporej wrażliwości na 6. Podaj twierdzenie dotyczące istnienia i liczebności bazy.
zaburzenia współczynników powinno być ograniczone jedy- Co to jest wymiar przestrzeni i przestrzeń skończenie
nie dla wielomianów niskich stopni. Należy jednak pamiętać, wymiarowa?
że miara skośności bada przypadek najgorszego wielomianu,
więc nie zawsze musi być tak źle. 7. Podaj twierdzenie dotyczące zapisywania wektora w
bazie. Co to są współrzędne wektora w bazie?
Baza Czebyszewa jest wyjątkowo dobra. Jeśli chcemy, by
8. Co to jest miejsce zerowe wielomianu? Co to znaczy, że
C({Ti }, [a, b], n) 6 100, pierwiastek jest k-krotny?

to mamy to zagwarantowane dla wszystkich n 6 5000. Po- 9. Podaj twierdzenie dotyczące ilości pierwiastków rzeczy-
sługując się bazą Czebyszewa na dowolnym przedziale [a, b] wistych wielomianu rzeczywistego.
należy przeskalować wielomiany Czebyszewa — posłużyć się 10. Zdefiniuj bazę naturalną i Newtona w przestrzeni Πn .
funkcjami ! 11. Zdefiniuj bazę Czebyszewa w przestrzeni Πn .
x − a+b
Tn+1 (x) = Tn+1 2
12. Zdefiniuj bazę Lagrange’a w przestrzeni Πn .
e
b−a
2

i możliwe jest uzyskanie podobnej skośności jak w przypadku 13. Podaj fakt dotyczący stopnia wielomianu Czebyszewa
przedziału [−1, 1]. oraz jego współczynników w bazie naturalnej.

Baza Lagrange’a może być bardzo podatna na zaburzenia 14. Podaj fakt dotyczący parzystości wielomianu Czeby-
współczynników — jeśli wybierzemy węzły równoodległe. szewa.
Ale dla węzłów Czebyszewa sytuacja się zmienia ogromnie 15. Podaj postać trygonometryczną wielomianu Czeby-
— tu miara skośności jest jedna z najlepszych, jaki dotąd szewa.
zostały wyliczone.
16. Scharakteryzuj ilość i rozmieszczenie pierwiastków wie-
Skośność bazy Newtona zależy od uporządkowania węzłów. lomianów Czebyszewa (nie musisz podawać wzorów).
Jeśli są w porządku rosnącym lub malejącym, to miara
skośności jest duża i zawsze gorsza niż dla bazy Lagrange’a. 17. Scharakteryzuj ilość i rozmieszczenie ekstremów lokal-
Dużo lepiej się dzieje, gdy wybiera się specjalne węzły w nych wielomianów Czebyszewa (nie musisz podawać
odpowiednim porządku (np. węzły Czebyszewa w pewnym, wzorów).
na pozór chaotycznym ustawieniu). 18. Co to są węzły równoodległe?
Miara skośności bazy wielomianowej pozwala ocenić jak 19. Co to są węzły Czebyszewa?
bardzo zaburzenia współczynników wpływają na wartość
wielomianu. Ocena odbywa się w najgorszym przypadku. 20. Co to jest przeskalowany wielomian Czebyszewa i jaki
ma związek z węzłami Czebyszewa?
Miara skośności bazy jest funkcją wymiaru przestrzeni.
Dla przestrzeni niewielkich wymiarów (1-5) każda z za- 21. Co to jest norma supremum w przestrzeni C[a, b]?
prezentowanych baz jest akceptowalna. Dla wymiarów 22. Co można powiedzieć maksimum globalnym funkcji, gdy
większych zdecydowanie lepszymi niż inne są baza Cze- jest ona rosnąca lub malejąca?
byszewa oraz Lagrange’a z węzłami Czebyszewa.
23. Podaj najważniejsze informacje dotyczące miary skośno-
ści baz wielomianowych (ostatnia ramka).

3.1.8 Pytania powtórzeniowe


3.1.9 Ćwiczenia sprawdzające zrozumienie
1. Co to jest wielomian rzeczywisty, jego stopień i współ- tematu
czynniki? Co to jest wielomian zerowy?
2. Jakie przestrzenie oznaczają symbole Zadanie 91 Czy następujące funkcje są wielomianami?
• P in , Jeśli tak, to podaj ich stopnie.

• Π, 1. w(x) = 2x2 − 3x−1 ,

• C(R), 2. f (x) = 2x2 + 2,

• C[a, b]?
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 61

3. g(x) = ln(x2 + 1) + 4x3 − ln(x2 + 1), Zadanie 100 Udowodnij, że wielomiany Czebyszewa
Tn są dla n parzystych funkcjami parzystymi, a dla n
4. v(x) = 24 + 3x4 + 2x − 3x4 + 1, nieparzystych nieparzystymi
5. h(x) = 2x2 · x6 · x,
6. u(x) = (2x − 7)(x3 − x2 ). Zadanie 101 Udowodnij, że dla dowolnego x ∈ [−1, 1]
i n > 0 wielomiany Czebyszewa Tn spełniają równość

Zadanie 92 Dane są wielomiany w(x) = 2x2 − 3 oraz Tn (x) = cos(n arccos x).
v(x) = 4x + x3 . Oblicz wielomiany
1. w + v,
2. 3 · w, Zadanie 102 Udowodnij, że dla dowolnego x ∈ R i
n > 0 wielomiany Czebyszewa Tn spełniają równość
3. 2 · w + (−1) · v.
√ √
(x + x2 − 1)n + (x − x2 − 1)n
Tn (x) = .
2
Zadanie 93 Czy wielomiany w(x) = (x−2)(x−1) oraz
v(x) = 2 + x2 − 3x są równe?

Zadanie 103 Udowodnij, że wielomiany Czebyszewa


Zadanie 94 Korzystając ze wzoru rekurencyjnego w przedziale [−1, 1] przyjmują wartości z przedziału
oblicz 5 pierwszych wielomianów Czebyszewa (tzn. [−1, 1].
T0 , T1 , T2 , T3 , T4 ).

Zadanie 104 Wyznacz miejsca zerowe n–tego wielo-


Zadanie 95 Dla przestrzenie Π2 wypisz jej mianu Czebyszewa dla n > 1.
1. bazę naturalną,
2. bazę Newtona o węzłach x1 = 1, x2 = 2, Zadanie 105 Wyznacz ekstrema lokalne n–tego wielo-
mianu Czebyszewa dla n > 1. Na koniec oblicz wartości
3. bazę Newtona o węzłach x1 = 1, x2 = 1, Tn w wyznaczonych ekstremach oraz wartości Tn (−1) i
4. bazę Czebyszewa, Tn (1).
5. bazę Lagrange’a o węzłach x0 = 1, x1 = 2, x2 = 3.
Zadanie 106 Udowodnij, że wśród wszystkich wielo-
mianów postaci
Zadanie 96 Pewien wielomian ma w bazie naturalnej
kolejne współczynniki równe 2, 3, 4, 5. Zapisz ten wielo- n−1
X
mian. 2n−1 xn + ai xi
i=0

Zadanie 97 Pewien wielomian ma w bazie Czebyszewa wielomian Czebyszewa Tn ma najmniejszą normę supre-
kolejne współczynniki równe 2, 3, 4, 5. Zapisz ten wielo- mum na przedziale [−1, 1]. Ile wynosi ta norma?
mian.

Zadanie 107 Oblicz wartości wielomianów bazowych


Zadanie 98 Dana jest funkcja f (x) = (x − 1)(x − 2). Lagrange’a w węzłach.
Oblicz
1. kf k[0,1] , Zadanie 108 Dany są wielomiany
2. kf k[1,2] ,
w(x) = 3x2 − 1, v(x) = 2x2 + x.
3. kf k[1,3] .
Zapisz je w bazie

3.1.10 Zadania 1. Czebyszewa w Π3 ,


2. Lagrange’a zdefiniowanej węzłami 0, 1, 2,
Zadanie 99 Udowodnij, że stopień wielomianu Czeby- 3. Newtona zdefiniowanej węzłami 0, 1.
szewa Tn wynosi n oraz, że dla n > 1 współczynnik przy
najwyższej potędze x wielomianu Tn wynosi 2n−1 . Jakie współczynniki w tych bazach będzie miał wielo-
mian w + v?
62 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19


Zadanie 109 Zapisz wielomian w(x) = 2x2 + 2x + 2 Zadanie 118 Niech w(x) = V0 (x) + a1 V1 (x) + . . . +
w bazie Newtona w Π2 zdefiniowanej węzłami, które an Vn (x), gdzie Vi = αi Ti (x) i αi są tak dobrane, by
są pierwiastkami drugiego wielomianu Czebyszewa upo- współczynnik przy najwyższej potędze wielomianu Vi
rządkowanymi rosnąco. wynosił 1. Udowodnij, że jeśli liczby rzeczywiste ai dla
i = 1, 2, . . . , n spełniają warunek |ai | 6 13 , to zadanie ob-
liczania wartości w(x) jest bardzo dobrze uwarunkowane
Zadanie 110 Oblicz współczynniki wielomianu dla x ∈ [−1, 1] ze względu na dane ai , i = 1, 2, . . . , n.
1
w(x) = x2 −
4 Zadanie 119 Danych jest n + 1 różnych punktów
w bazie Lagrange’a w Π2 zdefiniowanej węzłami, które x0 , x1 , . . . , xn na osi rzeczywistej. Definiujemy
są pierwiastkami trzeciego wielomianu Czebyszewa upo- n
x − xj
rządkowanymi malejąco.
Y
lk (x) = , k = 0, 1, . . . , n.
j=0
x k − xj
j6=k

Zadanie 111 Dany jest wielomian n


Udowodnij, że jeśli N (x) = (x − xj ), to
Q
w(x) = a(x + 1) + b + c(x2 − 1), j=0

gdzie a, b i c są pewnymi liczbami rzeczywistymi. N (x)



 gdy x 6= xk ,
(x − xk )N 0 (xk )


1. Podaj współczynniki tego wielomianu w bazie New- lk (x) =
tona zdefiniowanej węzłami −1 i 1.


1 w p.p,

2. Dobierz tak liczby a, b i c, by wszystkie współczyn-
niki w bazie Lagrange’a zdefiniowanej węzłami −1,
0 i 1 wynosiły 1.
Odpowiedzi

Zadanie 112 Niech wielomian w posiada n pojedyn- Zadanie 92 1. (w+v)(x) = x3 +2x2 +4x−3, 2. (3·w)(x) = 6x2 −9,
czych miejsc zerowych x1 , x2 , . . . , xn oraz 3. (2 · w + (−1) · v)(x) = −x3 + 4x2 − 4x − 6. Zadanie 93 Tak.
Zadanie 94 T4 (x) = 8x4 − 8x2 + 1 Zadanie 98 kf kπ[0,1] = 
2,
w(xn + 1) = 1. + kπ
kf k[1,2] = 14 , kf k[1,3] = 2 Zadanie 104 cos 2
n
Napisz algorytm wyznaczania współczynników wie- kπ
 
lomianu w w bazie Newtona zdefiniowanej węzłami dla k ∈ {0, 1, . . . , n − 1} Zadanie 105 cos dla
n
x1 , x2 , . . . , xn .


k ∈ {1, 2, . . . , n − 1}, Tn cos n = (−1) , Tn (−1) = (−1)n ,
k

1 dla k = i,
Tn (1) = 1 Zadanie 107 li (xk ) = Zadanie 108
0 6 i.
dla k =
Zadanie 113 W przedziale [−2, 7] wyznaczono 6 wę- 1 3
złów równoodległych. Podaj ich wartości. 1. w(x) = · 1 + 0 · x + (2x2 − 1) + 0 · (4x3 − 3x),
2 2
v(x) = 1 · 1 + 1 · x + 1 · (2x2 − 1) + 0 · (4x3 − 3x),
(x − 1)(x − 2) x(x − 1)
2. w(x) = − + 2x(2 − x) + 11 ,
Zadanie 114 Podaj wzory opisujące n + 1 węzłów rów- 2 2
noodległych w przedziale [a, b]. (x − 1)(x − 2) x(x − 1)
v(x) = 0 · + 3x(2 − x) + 9 ,
2 2
3. w(x) = −1 · 1 + 6x + 3x(x − 1), v(x)  =√ 0 · 1+ 5x + 2x(x − 1)
2 1
 
Zadanie 115 W przedziale [−2, 7] wyznaczono 3 węzły Zadanie 109 w(x) = 1 + 2 x + + 2 x2 −
2 2
Czebyszewa. Podaj ich wartości.  √ 
2 3 4 3
 
Zadanie 110 l0 (x) = x x + , l1 (x) = − x2 − ,
3 2 3 4
 √ 
Zadanie 116 Podaj wzory opisujące n + 1 węzłów Cze- l2 (x) =
2
x x−
3
, w(x) =
1 1
l0 (x) − l1 (x) + l3 (x)
1
byszewa w przedziale [a, b]. Wyprowadź je na dwa spo- 3 2 2 4 2
soby. Skorzystaj z faktu, że miejscami zerowymi wielo- Zadanie 111 1. b, a i c, 2. b = 1, a = c = 0 Zadanie 113
1 8 17 26 b−a
mianu Tk są liczby −2, − , , , , 7 Zadanie 114 a + i Zadanie 115
5 5 5 √5 √n
10 − 9 3 5 10 + 9 3
(2i + 1)π x0 = , x1 = , x2 = Zadanie 116
cos dla i = 0, 1, . . . , k − 1. 4 2 4
2k b−a (2k + 1)π a+b
cos + dla k = 0, 1, . . . , n Zadanie 118
P2 n 2n + 2 2
k i=0 |ai | · |Vi (x)| k[−1,1]
Pn 65
k i=0 ai Vi (x)k[−1,1]
Zadanie 117 Udowodnij, że norma supremum na prze-
dziale [a, b] jest rzeczywiście normą w Πn .
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 63

3.2 Algorytmy obliczania wartości Przy każdym obrocie pętli wykonujemy jedno dodawanie i
jedno mnożenie, pętla obraca się n razy. Zatem całkowity
wielomianu koszt czasowy wynosi n ops +n opm. Udowodniono, że jest
to najtańszy algorytm służący do wyznaczania w(α) dla
Niech w ∈ Πn . Rozpatrzmy zadanie wyznaczenia w(α) na wielomianu danego w bazie naturalnej.
podstawie danych współczynników wielomianu w w pewnej Zauważmy, że zamiast użycie tablicy w nie jest konieczne:
bazie oraz punktu α ∈ R. wystarczy użyć pojedynczej zmiennej.
w = a[n];
3.2.1 Algorytm Hornera dla bazy natural- for(i = n-1; i >= 0; i--)
nej w = a[i] + alfa * w;

Niekiedy jednak użycie tablicy w jest użyteczne, bo liczby


Dane: a0 , a1 , . . . , an współczynniki wielomianu w w wi mają swoją interpretację. Są one współczynnikami w
bazie naturalnej, bazie naturalnej wielomianu v powstałego przez podzielenie
α punkt, w którym obliczamy w przez jednomian x − α. Reszta z dzielenia wynosi w0 :
wartość wielomianu w
Wynik: w(α) w(x) = v(x)(x − α) + w0 ,
Wielomian w zapisany w bazie naturalnej ma postać v(x) = w1 + w2 x + . . . wn xn−1 .

w(x) = a0 + a1 x + . . . + an−1 xn−1 + an xn . Numeryczne własności tego algorytmu opisuje poniższe twier-
dzenie.
Korzystając bezpośrednio z powyższego wzoru można zapisać
algorytm obliczający w(α). Jednak jego koszt jest wyższy Twierdzenie 6 Niech (2n + 1)ν 6 0, 1. Wtedy algorytm
niż algorytmu poniżej. Hornera jest numerycznie poprawny z największą stałą
kumulacji równą w przybliżeniu 2n + 1. Dokładniej jeśli
Zauważmy, że w(α) możemy zapisać następująco oznaczymy zadanie przez
w(α) = a0 + α(a1 + a2 α + . . . + an−1 αn−2 + an αn−1 ) φ : Rn+2 → R
= a0 + α(a1 + α(a2 + . . . + an−1 α n−3
+ an α n−2
)) φ(α, a0 , a1 , . . . , an ) = w(α),
..
.
a przez
= a0 + α(a1 + α(a2 + . . . + α(an−1 + α(an )) . . .) ) . A(α, a0 , a1 , . . . , an )
|{z}
wn
| {z } wynik zadania wyznaczony algorytmem Hornera, to za-
wn−1 chodzi
| {z }
w2
fl A(α, a0 , . . . , an ) = φ α, a0 (1 + σ0 ), . . . , an (1 + σn ) ,
| {z }  
w1
| {z }
w0 gdzie |σi | 6 Ki ν i Ki ≈ 2i + 1.
Wprowadźmy oznaczenia
Stałe kumulacji można uznać za niewielkie, bo zwykle n nie
wn = an , jest duże. Algorytm jest więc bardzo dobrej jakości.
wn−1 = an−1 + αwn ,
wn−2 = an−2 + αwn−1 , 3.2.2 Uogólniony algorytm Hornera dla
..
. bazy Newtona
w1 = a1 + αw2 ,
Dane: x1 , x2 , . . . , xn węzły definiujące bazę New-
w0 = a0 + αw1 .
tona
Zauważmy, że w0 jest równe w(α). Powyższe zależności b0 , b1 , . . . , bn współczynniki wielomianu w w
można zapisać zwięźlej: bazie Newtona,
α punkt, w którym obliczamy
wn = an , wartość wielomianu w
wi = ai + αwi+1 dla i = n − 1, n − 2, . . . , 0. Wynik: w(α)
Wielomian w zapisany jest w bazie Newtona, czyli
Prowadzą one do algorytmu nazywanego schematem Hornera.
n
W tablicy a zapisane są współczynniki wielomianu w w Y
bazie naturalnej, a w zmiennej alfa punkt α. Wielkości wi w(x) = b 0 +b1 (x−x 1 )+b2 (x−x 1 )(x−x 2 )+. . .+b n (x−xi ).
przechowywane są w tablicy w, element w[0] zawiera w(α). i=1

Postępując podobnie jak dla bazy naturalnej zapisujemy


w[n] = a[n];
w(α) następująco
for(i = n-1; i >= 0; i--)
w[i] = a[i] + alfa * w[i+1]; b0+(α−x1 )[b1+(α−x2 )[b2 +. . .+(α−xn−1 )[bn−1 +(α−xn )bn ]]]
64 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Analogicznie też wyprowadzamy algorytm, oznaczając W każdej pętli wykonujemy 2 mnożenia i 2 sumowania, pę-
uprzednio nawiasy kwadratowe przez wi i wyprowadzając tla obraca się n − 1 razy, zatem jej koszt wynosi 2(n −
zależność między wi a wi+1 1) ops +2(n − 1) opm. Przed pętlą jest dodatkowa jedna
operacja sumowania i dwie mnożenia. Całkowity koszt algo-
wn = bn , rytmu wynosi (2n − 1) ops +2n opm.
wi = bi + (α − xi+1 ) · wi+1 dla i = n − 1, n − 2, . . . , 0. Jakość algorytmu jest dobra, ale w pewnym szczególnym

Zapisując algorytm w języku C należy zwrócić uwagę na sensie. Twierdzenie ją


to, że x[i] będzie przechowywać węzeł xi+1 , bo tablice są
numerowane od 0. Algorytm II ( Clenshaw’a) Okazuje się, że można skon-
w = b[n]; struować algorytm tańszy od poprzedniego. We wzorze
for(i = n-1; i >= 0; i--)
w(α) = c0 T0 (α)+. . .+cn−2 Tn−2 (α)+cn−1 Tn−1 (α)+cn Tn (α)
w = b[i] + (alfa-x[i]) * w;
zastąpmy korzystając z definicji wielomianów Czebyszewa
Koszt wynosi 2n ops +n opm. Własności numeryczne za- wyraz T (α) wyrażeniem 2αT
n n−1 (α) − Tn−2 (α):
warte są w poniższym twierdzeniu.
Twierdzenie 7 Niech (3n + 1)ν 6 0, 1. Uogólniony al- w(α) = c0 T0 (α) + . . . + cn−3 Tn−3
gorytm Hornera jest numerycznie poprawny z największą + cn−2 Tn−2 (α) + cn−1 Tn−1 (α)
stałą kumulacji równą w przybliżeniu 3n + 1. + cn [2αTn−1 (α) − Tn−2 (α)].

Pogrupujmy wyrazy względem Tk . Otrzymamy


3.2.3 Algorytmy dla bazy Czebyszewa w(α) = c0 T0 (α) + . . . + cn−3 Tn−3 (α)

Dane: c0 , c1 , . . . , cn współczynniki wielomianu w w + c] T (α) + c]


n−2 n−2 ]T (α),
n−1 n−1
bazie Czebyszewa,
α punkt, w którym obliczamy war- gdzie
tość wielomianu w
Wynik: w(α) n−1 = cn−1 + 2α · cn ,
c]
]
n−2 = cn−2 − cn ,
c]
Będziemy obecnie obliczać w(α), gdzie w jest zapisany w
bazie Czebyszewa, zatem
Uzyskana suma jest tej samej postaci, co wyjściowa, ale
w(α) = c0 T0 (α) + c1 T1 (α) + . . . + cn−1 Tn−1 (α) + cn Tn (α). ma o jeden mniej składników. Postępując analogicznie mo-
żemy kolejno skracać sumę, aż będzie się składała z dwóch
składników zawierających T0 (α) i T1 (α).
Algorytm I (obliczający sumy częściowe) Korzysta-
jąc z definicji wielomianów Czebyszewa otrzymujemy, że Schemat działania algorytmu można ująć w tabeli.

T0 (α) = 1, k T0 T1 T2 . . . Tn−4 Tn−3 Tn−2 Tn−1 Tn


c0 c1 c2 c3 . . . cn−4 cn−3 cn−2 cn−1 cn
T1 (α) = α,
n − 2 c0 c1 c2 c3 . . . cn−4 cn−3 c] ]
n−2 c
]n−1
Tk (α) = 2αTk−1 (α) − Tk−2 (α), dla k = 2, 3, . . .
n − 3 c c c c ... c
0 1 2 3 c] c] ]
n−4 n−3 n−2
Algorytm kolejno oblicza sumy częściowe, które zapamiętuje n−4 c0 c1 c2c3 . . . c] ]
n−4 c
]n−3
w zmiennej w. W każdym kroku potrzeba obliczyć Tk (α), .. .. .. .. ..
co wymaga trzech zmiennych, bo aby obliczyć Tk (α) trzeba . . . . .
też mieć zapamiętane Tk−1 (α) i Tk−2 (α). Niech będą to 1 c0 c1 ce2 ce e3
zmienne T, T1 i T2. Cały algorytm ma poniższą postać. 1 c0 ce1 ce2
e

if (n == 0) return c[0]; 0 ce0 ce


e1
T2 = 1.0;
W kroku o numerze k = n − 2 obliczamy dwa nowe współ-
T1 = alfa;
czynniki dane zależnościami
dwa_alfa = 2 * alfa;
w = c[0] + c[1] * alfa;
c]
]
n−1 = cn−1 + 2α · cn ,
for(i = 2; i <= n; i++) {
T = dwa_alfa * T1 - T2; c]
n−2 = cn−2 − cn .
w = w + c[i] * T;
T2 = T1; W kroku o numerze k = n − 3 obliczamy
T1 = T;
} c]
]
n−2 = c]n−2 + 2α · c
]
]n−1 ,
return w; c]
n−3 = c − c]
n−3 ]. n−1
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 65

W ogólności, w kroku k, gdzie k = n − 3, n − 4, . . . , 0, obli- to


n
czamy X
w(xk ) = di li (xk ) = dk ,
cg
k+1
g = cg
k+1 + 2α · cg
k+2 ,
g i=0

zatem dla α = xk wynik od razu jest znany i nie trzeba go


cek = ck − cg
k+2 .
obliczać.
g

Jeśli wprowadzimy oznaczenia Niech teraz α nie będzie węzłem. Wtedy


en = cn ,
ce n n
X Y α − xj
n−1 = cn−1 ,
c] w(α) = di
i=0 j=0
xi − xj
to powyższa reguła będzie również prawdziwa dla k = n − 2. j6=i
n
(α − xj )
Q
Każdy wiersz tabeli odpowiada sumie, której wartością jest n j=0
w(α). Sumy te są coraz krótsze. Z ostatniego wiersza otrzy-
X
=
j6=i
di Q
n
mujemy, że i=0 (xi − xj )
w(α) = ce0 + ce
e1 · α. j=0
j6=i

Możemy obecnie zapisać algorytm. Współczynniki wielo- n


(α − xi ) (α − xj )
Q
mianu w bazie Czebyszewa będą umieszczone w tablicy c. n j=0
Zmienne cff, cf będą zawierać współczynniki stojące przy
X
=
j6=i
di n
dwóch wielomianach Czebyszewa które w danym kroku mają i=0 (α − xi )
Q
(xi − xj )
najwyższe stopnie, tak jak w tabeli. Zmienna w zawiera ob- j=0
j6=i
liczoną wartość w(α). n
(α − xj )
Q
dwa_alfa = 2 * alfa; n
X j=0
cff = c[n]; = di n .
(α − xi ) (xi − xj )
Q
cf = c[n-1]; i=0
j=0
for(k = n-2; k >= 0; k--) { j6=i

pom = c[k] - cff;


Przed znak sumy możemy obecnie wyciągnąć czynnik
cff = cf + dwa_alfa * cff;
cf = pom; n
Y
} π(α) = (α − xj ),
w = cf + cff * alfa; j=0

Jeden obrót pętli kosztuje 2 ops +1 opm, pętla obraca się bo nie zależy on od i. Wtedy
n − 1 razy. Dodatkowo poza pętlą wykonane są 2 mnożenia n
X di 1
i 1 sumowanie. Zatem całkowity koszt algorytmu wynosi w(α) = π(α) · n · .
(2n − 1) ops +(n + 1) opm. α − xi
(xi − xj )
Q
i=0
j=0
Jakość jest podobna do jakości algorytmu poprzedniego. W j6=i

literaturze spotyka się też inne sposoby zapisu algorytmu Jeśli dla i = 0, 1, . . . , n wprowadzimy oznaczenie
Clenshaw’a. Ponadto ma on uogólnienie dla baz złożonych
z tzw. wielomianów ortogonalnych. di
zi = Qn ,
(xi − xj )
j=0
3.2.4 Algorytm dla bazy Lagrange’a j6=i

to
n
Dane: x0 , x1 , . . . , xn węzły definiujące bazę La- X zi
w(α) = π(α) · .
grange’a α − xi
i=0
d0 , d1 , . . . , dn współczynniki wielomianu w w
bazie Lagrange’a, Ostatecznie możemy zapisać, że
α punkt, w którym obliczamy
w(α) = π(α) · σ(α),
wartość wielomianu w
Wynik: w(α) gdzie
Obecnie wielomian w zapisany jest w bazie Lagrange’a, n
Y
n
X π(α) = (α − xi ),
w(α) = di li (α). i=0
i=0 n
zi X
σ(α) = .
Zajmijmy się najpierw przypadkiem, gdy α = xk dla pew- α − xi
i=0
nego k = 0, 1, . . . n. Ponieważ
( Powyższa postać sugeruje algorytm. Wielkości zi , które nie
1 gdy i = k, zależą od punktu α, należy policzyć najpierw i umieścić w
li (xk ) =
0 w p.p., tablicy z.
66 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

for(i = 0; i <= n; i++) { Numeryczna poprawność nie oznacza, że na pewno uzyskamy


z[i] = d[i]; mały błąd względny wyniku. Wszystko zależy od skośności
for(j = 0; j <= n; j++) bazy. Przy bazach o dużej mierze skośności nawet niewielkie
if(j != i) zaburzenie współczynników może znacznie zaburzyć wynik.
z[i] /= x[i] - x[j]; Stąd bardzo istotny jest wybór węzłów — węzły Czebyszewa
} są bardzo dobre, a równoodległe dopuszczalne tylko przy
niewielkich n.
Następnie w jednej pętli obliczamy równocześnie wielkości
π(α) i σ(α) i zapisujemy je w zmiennych pi oraz sigma. W
zmiennej w zapisany jest wynik. 3.2.5 Pytania powtórzeniowe
sigma = 0.0;
1. Wyprowadź algorytm Hornera dla bazy naturalnej. Wy-
pi = 1.0;
prowadzenie powinno zawierać przekształcenie wzoru,
for(i = 0; i <= n; i++) {
wprowadzenie pomocniczych oznaczeń i kod algorytmu.
h = alfa - x[i];
pi *= h; 2. Wyprowadź uogólniony algorytm Hornera dla bazy New-
sigma += z[i] / h; tona. Wyprowadzenie powinno zawierać przekształcenie
} wzoru, wprowadzenie pomocniczych oznaczeń i kod al-
w = pi * sigma; gorytmu.
3. Opisz dokładnie co oznaczają wyniki pośrednie wi w
Aby kod był kompletny należy dodać w odpowiednim miejscu
algorytmie Hornera.
warunki, które pozwolą obliczyć wynik w przypadku, gdy α
jest węzłem. Mimo, że algorytm wygląda elegancko jednak 4. Co można powiedzieć o koszcie algorytmu Hornera?
programując go należy uważać, by nie wystąpił ani nadmiar, O ile droższy od algorytmu Hornera jest uogólniony
ani niedomiar. Występują tu bowiem iloczyny i ilorazy wielu algorytm Hornera?
czynników. Problem ten można rozwiązać, gdy zastosujemy
5. Zapisz algorytm obliczający wartość wielomianu w zada-
specjalną reprezentację wyniku takiego iloczynu bądź ilorazu:
nym punkcie zapisanego w bazie Czebyszewa. Zastosuj
w postaci d · 2E , gdzie d ∈ [ 12 , 1], a E jest liczbą całkowitą2 .
algorytm I wyznaczający sumy częściowe. Oblicz jego
Policzmy koszt przedstawionej tu wersji.3 Obliczenie warto- koszt.
ści wszystkich zi wymaga (n2 + n) ops +(n2 + n) opm. Wy-
6. Opisz główną zasadę działania algorytmu Clenshaw’a.
znaczenie π(α) oraz σ(α) to (2n + 2) ops +(2n + 3) opm.
Wykonaj pierwszy krok wyprowadzenia tego algorytmu.
Drogo, ale zauważmy, że najdroższa część, czyli obliczenie zi
nie zależy od α, wyznaczając wartości wielomianu w różnych 7. W przypadku wielomianu zapisanego w bazie La-
punktach ten koszt ponosimy tylko raz. Pozostała część jest grange’a i α nie będącego węzłem, zapisz przekształce-
tania. Ponadto, gdybyśmy operowali kilkoma wielomianami nia, które prowadzą do rozkładu w(α) = π(α) · σ(α).
opartymi na tych samych węzłach, to warto zmodyfikować al-
gorytm, tak by osobno policzyć mianowniki liczb zi wspólne
dla wszystkich wielomianów. 3.2.6 Ćwiczenia sprawdzające zrozumienie
tematu
Jakość algorytmu jest bardzo dobra.
Twierdzenie 8 Niech 3nν 6 0.1. Przedstawiony algo-
Zadanie 120 Dany jest wielomian w(x) = 4x2 −2x+1.
rytm A jest numerycznie poprawny z największą stałą
kumulacji równą w przybliżeniu 3n. Dokładniej jeśli ozna- 1. Dokonaj takich przekształceń wyrażenia w(α) dla
czymy zadanie przez tego wielomianu, które są wykonywane podczas
wyprowadzenia algorytmu Hornera.
φ : R2n+3 → R
φ(α, x0 , x1 , . . . , xn , d0 , d1 , . . . , dn ) = w(α), 2. Dla α = 3 oblicz liczby wi użyte w opisie algorytmu.

a przez 3. Zapisz wielomian v, który jest wynikiem dzielenia


w przez jednomian x − 3. Ile wynosi reszta z tego
A(α, x0 , x1 , . . . , xn , d0 , d1 , . . . , dn ) dzielenia?
wynik zadania wyznaczony tym algorytmem, to zachodzi
fl A(α, x0 , x1 , . . . , xn , d0 , d1 , . . . , dn )
 3.2.7 Zadania
= (1 + σ)φ α, x0 , . . . , xn , d0 (1 + δ0 ), . . . , dn (1 + δn ) ,

Zadanie 121 Zapisz algorytm obliczania wartości
gdzie |δi | 6 Ki ν i Ki ≈ 2n oraz |σ| 6 Kν i K ≈ 3n. w(β), gdzie w jest wielomianem zapisanym w postaci
2 Przyjmujemy
n
założenie, że posługujemy się arytmetyką binarną. W X
1
przypadku dziesiętnej należałoby użyć postaci d · 10E , gdzie d ∈ [ 10 , 1]. w(x) = ai (x − α)i .
3 Wersja unikająca nadmiaru i niedomiaru jest nieco droższa. Mogą i=0
tam bowiem występować wielokrotnie działania mnożenia i dzielenia
przez 2. Są one jednak tańsze niż mnożenie czy dzielenie przez liczby,
Liczba całkowita nieujemna n oraz liczby rzeczywiste ai
które nie są potęgami dwójki — polegają jedynie na modyfikacji wy- dla i = 0, . . . , n oraz α i β są dane. Podaj koszt.
kładnika i są wykonywane dokładnie.
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 67

Zadanie 122 Zapisz uogólniony algorytm Hornera dla Zadanie 127 Zaprogramuj w języku C oba algorytmy
bazy Newtona zdefiniowanej przez węzły: obliczania wartości wielomianu zapisanego w bazie Cze-
byszewa. Każdy z nich ma być zaprogramowany jako
1, 1, . . . , 1, 2, 2, . . . , 2 (n jedynek i n dwójek). osobna funkcja. Użyj poniższych nagłówków
Algorytm ma działać w czasie 2n(ops + opm) + C, gdzie float sumy_czesc(float *c, int n, float alfa);
C jest niewielką stałą, n ∈ N. Rozwiąż to samo zadanie float clenshaw(float *c, int n, float alfa);
dla układu węzłów:
Przetestuj algorytmy dla wielomianu
1, 0, 1, 0, 1, 0, . . . , 1, 0 (n zer i n jedynek).
10
X
w(x) = Ti (x)
i=0
Zadanie 123 Niech m będzie liczbą całkowitą nie-
oraz punktów z gęstej siatki na przedziale [ 78 , 1]. Siatka
ujemną. Dane są liczby rzeczywiste x0 , x1 , . . . , xm oraz
ma być równomierna i dzielić zadany przedział na 212
liczby naturalne k0 , k1 , . . . , km . Wielomian w jest zapi-
podprzedziałów. Wyniki obu algorytmów powinny być
sany w bazie Newtona o węzłach
podobne.
x0 , . . . , x0 , x1 , . . . , x1 , . . . xm , . . . , xm . Następnie dla każdego punktu siatki oblicz błąd nastę-
pująco
| {z } | {z } | {z }
k0 k1 km

Napisz algorytm obliczania wartości wielomianu w w wynik_pierwszego_alg − wynik_drugiego_alg



.
danym punkcie α ∈ R. Podaj jego koszt.

wynik_pierwszego_alg

Wyniki działania programu z dokładnością do 17 miejsc


Zadanie 124 Zaproponuj algorytm dzielenia wielo- po przecinku zapisz w pliku tekstowym. Jeden wiersz
mianu zapisanego w bazie naturalnej przez trójmian pliku ma zawierać 4 liczby oddzielone średnikami:

(x − α)(x − β), • punkt α, dla którego obliczane są wartości obu


algorytmów,
gdzie liczby rzeczywiste α i β są dane. Podaj koszt.
• wartość obliczoną pierwszym algorytmem,
• wartość obliczoną drugim algorytmem,
Zadanie 125 Niech m będzie liczbą całkowitą nie-
ujemną. Napisz algorytm obliczania wartości w punkcie • błąd.
α ∈ R wielomianu w ∈ Π2m , gdzie Wartości wielomianów obliczaj w arytmetyce float —
m po każdym działaniu trzeba dokonać rzutowania na
float, bo inaczej całe wyrażenie będzie liczone w double,
X
w(x) = ai T2i (x)
i=0
a tylko wynik zapisywany do float. Błąd obliczaj w
double.
Algorytm ma kolejno obliczać sumy częściowe
Następnie skopiuj wyniki z pliku do arkusza kalkulacyj-
k
X nego i posortuj je wg kolumny zawierającej błędy. Kiedy
wk (x) = ai T2i (x), 0 6 k 6 m. mamy do czynienia z największymi błędami?
i=0

Współczynniki wielomianu należy zapisać w tablicy a o Zadanie 128 Zaprogramuj w języku C algorytm ob-
(m + 1) elementach. Nie wolno używać tablicy pomocni- liczania wartości wielomianu zapisanego w bazie La-
czej. Zminimalizuj koszt i podaj ile wynosi. grange’a. Program ma być podzielony na funkcje tak,
by uniknąć zbędnych operacji podczas obliczania war-
tości wielomianu dla wielu punktów. Pamiętaj aby tak
Zadanie 126 Niech m będzie liczbą całkowitą nie-
zaprogramować algorytm, by obliczał wartość wielo-
ujemną. Dostosuj algorytm Clenshaw’a tak, by obliczał
mianu również w węzłach. Przetestuj jego działanie dla
wartość w punkcie α ∈ R wielomianu postaci
wielomianu
m
X w(x) = −2x2 + 3x − 1,
w(x) = ai T2i (x).
węzłów −2, 0, 1, 2, oraz 17 punktów tworzących równo-
i=0
mierną siatkę w przedziale [−2, 2]. Poprawność dzia-
Współczynniki wielomianu należy zapisać w tablicy a o łania sprawdź przez porównanie wyników z wynikami
(m + 1) elementach. Nie wolno używać tablicy pomocni- obliczonymi algorytmem Hornera w bazie naturalnej.
czej. Zminimalizuj koszt i podaj, ile wynosi.
68 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Zadanie 129
1. Niech {ui }ni=0 będzie bazą Πn , a [a, b] ustalonym
przedziałem. Dane są wielomiany
n
X n
X
w(x) = ai ui (x) , w(x)
e = ai (1+εi )ui (x),
i=0 i=0

gdzie |εi | 6 Kν dla pewnej stałej K. Załóżmy,


że inf x∈[a,b] |w(x)| > 0. Wykaż, że dla każdego
x ∈ [a, b]

|w(x)− w(x)| kwk[a,b]


6KνC({ui },[a, b],n)
e
.
|w(x)| inf x∈[a,b] |w(x)|

2. Na podstawie punktu 1., tabeli z miarami skośno-


ści oraz twierdzeń dotyczących jakości algorytmów
oszacuj błędy względne na przedziale [−1, 1] wytwo-
rzone przez algorytm Hornera podczas obliczania
wartości wielomianu w(x) = 2x10 + 1.

Odpowiedzi

Zadanie 120 reszta wynosi 31 Zadanie 121 koszt wynosi (n +


1) ops +n opm Zadanie 122 koszt dla pierwszego układu węzłów
wynosi 2n(opm + ops) + 2 ops, a dla drugiego 2n(opm + ops) +
1 ops Zadanie 123 koszt wynosi (m + 1) ops +n(ops + opm)
Zadanie 124 koszt wynosi (2n − 1)(ops + opm) Zadanie 125
koszt wynosi (3m − 1) ops +3m opm Zadanie 126 koszt wynosi
3m ops +(2m + 1) opm
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 69

3.3 Algorytmy zamiany bazy Idea jest taka, by kolejne przepermutowane węzły zapełniały
duże luki. Dla n = 16 permutacja jest przedstawiona na
poniższym rysunku.
Podsumujmy w tabeli koszty posługiwania się omówionymi
bazami, czyli obliczenia w(α) dla danego α. x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15-
Baza Koszt
xp(0) xp(1)
ops opm
potęgowa xp(2) xp(3)
— algorytm Hornera n n xp(4) xp(5)
Newtona xp(6) xp(7)
— uogólniony algorytm Hornera 2n n
xp(8) xp(9)
Czebyszewa
— algorytm sum częściowych 2n − 1 2n xp(10) xp(11)
— algorytm Clenshaw’a 2n − 1 n+1 xp(12) xp(13)
Lagrange’a xp(14) xp(15)
— algorytm rozkładu π(α)σ(α)
część niezależna od α: n2 + n n2 + n Zwróćmy uwagę, że dobre ustawienie węzłów odbywa się fak-
część zależna od α: 2n + 2 2n + 3 tycznie w dwóch krokach: najpierw węzły trzeba posortować,
a potem zastosować permutację van der Corput’a.
Gdy wielokrotnie trzeba obliczać wartość wielomianu bywa
sensowne, by mając wielomian zapisany np. w bazie La- nieuporządkowane
grange’a, przedstawić go w innej, tańszej bazie. Należy przy
tym szczególnie uważać, gdy wielomian jest wysokiego stop-
nia. Wtedy część tanich baz nie nadaje się do użycia ze
względu na ich dużą skośność. uporządkowane rosnąco

3.3.1 O skośności bazy Newtona


permutacja van der Corput’a
W punkcie 3.1.7 zostało wspomniane, że skośność bazy New-
tona zależy od uporządkowania węzłów. Jest ona duża, gdy
np. węzły są ustawione rosnąco lub malejąco. Pamiętajmy Przykład Dane są węzły
jednak, że miara skośności zależy od n — w praktyce dla
n 6 10 każde uporządkowanie będzie dopuszczalne. 22, 4, 2, 14, 9, 6, 12, 40, 38, 35, 8, 30, 25, 15, 28, 19.

Gdy zachodzi potrzeba posługiwania się wielomianami wyż- Chcemy ustawić je tak, by zdefiniowana nimi baza Newtona
szych stopni niż 10, to trzeba węzły odpowiednio uporządko- miała stosunkowo małą skośność.
wać. Poniżej zostanie przedstawione dobre uporządkowanie
Najpierw sortujemy węzły rosnąco i numerujemy je.
przy założeniu, że n jest potęgą dwójki.
x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15
Definicja 42 Niech n = 2k dla pewnej liczby naturalnej 2 4 6 8 9 12 14 15 19 22 25 28 30 35 38 40
k. Ciągiem van der Corput’a nazywamy ciąg
Wyznaczamy ciąg van der Corput’a. Liczba węzłów n = 16
p(0), p(1), . . . , p(n − 1),
jest potęgą dwójki, k = 4. Z definicji
gdzie p : {0, 1, . . . , n − 1} → {0, 1, . . . , n − 1} jest permu-
p(0) = 0.
tacją van der Corput’a wyrażoną zależnościami
Aby wyznaczyć pozostałe wyrazy zauważamy, że wzór
p(0) = 0,
p(i) = p(i − 2j ) + 2k−j−1 , p(i) = p(i − 2j ) + 2k−j−1
j = 0, 1, . . . , k − 1, = p(i − 2j ) + 24−j−1
i = 2 , 2 + 1, . . . , 2
j j j+1
− 1.
należy zastosować dla j = 0, 1, 2, 3. Dla każdej wartości j
dostajemy „nowy” wzór, który „działa” dla i podanych w
Zdefiniowana wyżej permutacja służy do przestawienia wę- definicji, czyli i = 2 , 2 + 1, . . . , 2 − 1:
j j j+1

złów. Gdy dla n będącego potęgą dwójki mamy dane węzły


j=0: p(i) = p(i − 1) + 8, dla i = 1,
x0 < x1 < . . . < xn−1 , j=1: p(i) = p(i − 2) + 4, dla i = 2, 3,
które są uporządkowane rosnąco, to aby definiowały one j=2: p(i) = p(i − 4) + 2, dla i = 4, 5, 6, 7,
bazę Newtona o stosunkowo małej skośności należy je po- j=3: p(i) = p(i − 8) + 1, dla i = 8, 9, . . . , 15.
przestawiać stosując permutację van der Corput’a:

xp(0) , xp(1) , . . . , xp(n−1) .


70 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Należy po kolei zastosować te wzory, pamiętając, że p(0) = 0: Elementy ciągu van der Corput’a wyznaczamy pisząc cyfry
wspak.
dla j = 0, i = 1 : p(1) = p(0) + 8 = 8,
dla j = 1, i = 2 : p(2) = p(0) + 4 = 4, p(0) = (0000)2 = 0, p(8) = (0001)2 = 1,
i=3: p(3) = p(1) + 4 = 12, p(1) = (1000)2 = 8, p(9) = (1001)2 = 9,
dla j = 2, i=4: p(4) = p(0) + 2 = 2, p(2) = (0100)2 = 4, p(10) = (0101)2 = 5,
i=5: p(5) = p(1) + 2 = 10, p(3) = (1100)2 = 12, p(11) = (1101)2 = 13,
i=6: p(6) = p(2) + 2 = 6, p(4) = (0010)2 = 2, p(12) = (0011)2 = 3,
i=7: p(7) = p(3) + 2 = 14, p(5) = (1010)2 = 10, p(13) = (1011)2 = 11,
dla j = 3, i=8: p(8) = p(0) + 1 = 1, p(6) = (0110)2 = 6, p(14) = (0111)2 = 7,
i=9: p(9) = p(1) + 1 = 9, p(7) = (1110)2 = 14, p(15) = (1111)2 = 15. 

i = 10 : p(10) = p(2) + 1 = 5,
i = 11 : p(11) = p(3) + 1 = 13, Jeśli n nie jest potęgą dwójki, to też istnieją dobre permu-
tacje węzłów, tzn. takie, dla których miara skośności bazy
i = 12 : p(12) = p(4) + 1 = 3, Newtona jest niezbyt szybko rosnącą funkcją n.
i = 13 : p(13) = p(5) + 1 = 11,
Pamiętajmy, że w praktyce występują głównie wielomiany
i = 14 : p(14) = p(6) + 1 = 7, niskich stopni i uporządkowanie węzłów nie ma wtedy zna-
i = 15 : p(15) = p(7) + 1 = 15. czenia.

Zapiszmy obliczoną permutację w tabeli:


i 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 3.3.2 Baza Lagrange’a → baza Newtona
p(i) 0 8 4 12 2 10 6 14 1 9 5 13 3 11 7 15
Dane: x0 , x1 , . . . , xn węzły definiujące bazę La-
i zastosujmy ją do przestawienia węzłów: grange’a
d0 , d1 , . . . , dn współczynniki wielomianu w
x0 x8 x4 x12 x2 x10 x6 x14 x1 x9 x5 x13 x3 x11 x7 x15 w bazie Lagrange’a,
2 19 9 30 6 25 14 38 4 22 12 35 8 28 15 40 Wyniki: b0 , b1 , . . . , bn współczynniki wielomianu w
w bazie Newtona o węzłach
Węzły w kolejności takiej, jak w powyższej tabeli definiują
x0 , x1 , . . . , xn−1
szukaną bazę Newtona. 
Algorytmy realizujące zadanie zamiany bazy Lagrange’a na
Ciąg van der Corput’a można wyznaczyć też w inny sposób, Newtona są m.in. używane przy interpolacji Lagrange’a, o
korzystając z następującego faktu. której będzie mowa później.

Fakt 21 Niech n = 2k dla pewnej liczby naturalnej k Mamy zatem dane n + 1 różnych węzłów x0 , x1 , . . . , xn
oraz i ∈ {0, 1, . . . , n − 1}. Zapiszmy i w systemie dwójko- oraz współczynniki d0 , d1 , . . . , dn wielomianu w w bazie La-
wym używając dokładnie k cyfr, w razie potrzeby uzupeł- grange’a, więc
n
niając brakujące z lewej strony pozycje zerami: w(x) =
X
di li (x).
i=0
i = (dk dk−1 . . . d1 d0 )2 .
Ten sam wielomian chcemy przedstawić w bazie Newtona z
Wtedy wartością permutacji van der Corput’a dla i jest węzłami x0 , x1 , . . . , xn−1 . Zwróćmy uwagę, że tu jest o jeden
mniej węzeł niż w bazie Lagrange’a i że numerujemy węzły
p(i) = (d0 d1 . . . dk−1 dk )2 . od 0, a nie jak w definicji bazy Newtona od 1. Wielomian
ma być opisany wzorem postaci

Przykład Wyznaczmy ciąg van der Corput’a dla n = 16. w(x) = b0 N0 (x) + b1 N1 (x) + . . . + bn Nn (x),
Wtedy k = 4. Zapiszmy liczby od 0 do 15 w systemie
dwójkowym używając dokładnie czterech cyfr: gdzie
k
0 = (0000)2 , 8 = (1000)2 , Y
Nk (x) = (x − xj−1 )
1 = (0001)2 , 9 = (1001)2 , j=1
2 = (0010)2 , 10 = (1010)2 , k−1
Y
3 = (0011)2 , 11 = (1011)2 , = (x − xj )
4 = (0100)2 , 12 = (1100)2 , j=0

5 = (0101)2 , 13 = (1101)2 , dla k = 0, 1, . . . , n. Zauważmy, ponadto że zachodzi własność


6 = (0110)2 , 14 = (1110)2 ,
N0 (x) = 1,
7 = (0111)2 , 15 = (1111)2 .
Nk (x) = (x − xk−1 )Nk−1 (x) dla k = 1, 2, . . . , n.
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 71

Algorytm pierwszy (z pomocniczą tablicą z) Dowód Ustalmy 1 6 k 6 n oraz 0 6 i 6 k − 1. Z definicji


wielomianów bazowych Lagrange’a mamy, że
Udowodnię najpierw twierdzenie pomocnicze, które pozwoli k k−1
wyprowadzić algorytm. Dotyczy ono ni jednej konkretnej (k) (k−1)
Y x − xj Y x − xj
li (x) − li (x) = − .
bazy Lagrange’a, ale ciągu baz. Każda następna baza jest j=0
xi − xj j=0
xi − xj
zdefiniowana przez węzły poprzedniej bazy i jeden dodat- j6=i j6=i

kowy. Ponieważ zwiększamy liczbę węzłów, to zwiększa się k k−1


x − xj x − xk Y x − xj
też liczba elementów bazy i zmieniają się ich wzory. Dla Ponieważ
Y
= · , to
odróżnienia kolejnych baz stosujemy indeksy górne. j=0
xi − xj xi − xk j=0 xi − xj
j6=i j6=i

k węzły elementy bazy Lagrange’a   k−1


0 x0 l0
(0) (k) (k−1) x − xk Y x − xj
li (x) − li (x) = −1
1 x0 , x1
(1) (1)
l0 , l1 xi − xk j=0
xi − xj
j6=i
(2) (2) (2)
2 x0 , x1 , x2 l0 , l1 , l2 k−1
.. .. .. x − xi Y x − xj
. . . = .
xi − xk j=0
xi − xj
(n) (n) (n) (n)
n x0 , x1 , x2 , . . . , xn l0 , l1 , l2 , . . . , ln j6=i

Twierdzenie podaje zależność między wielomianem wk ∈ Πk Gdy zmienimy kolejność wykonywania działań i zapiszemy
zapisanym w bazie z k-go wiersza powyższej tabeli: iloczyn osobno w liczniku i mianowniku, to otrzymamy
(k) (k) (k)
wk (x) = d0 l0 (x) + d1 l1 (x) + . . . + dk lk (x) k−1
Y
k
(x − xi ) (x − xj )
(k) j=0
X
= di li (x), (k)
li (x) − li
(k−1)
(x) =
j6=i

i=0 k−1
Y
(xi − xk ) (xi − xj )
a wielomianem wk−1 ∈ Πk−1 zapisanym w bazie z (k − 1)-go
j=0
wiersza i mającym te same współczynniki (z pominięciem j6=i

ostatniego) k−1
Y
(k−1) (k−1) (k−1)
(x − xj )
wk−1 (x) = d0 l0 (x) + d1 l1 (x) +. . .+ dk−1 lk (x) j=0 Nk (x)
k
= k
= k
.
(k−1)
X
= (x).
Y Y
di li (xi − xj ) (xi − xj )
i=0 j=0 j=0
j6=i j6=i

Twierdzenie 9 Dana jest liczba naturalna n > 1, węzły Ponadto


k−1
x0 , x1 , . . . , xn Y
(x − xj )
k
parami różne i współczynniki (k)
Y x − xj j=0 Nk (x)
lk (x) = = k−1 = k−1 .
j=0
x k − xj Y Y
d0 , d1 , . . . , dn . j6=k (xk − xj ) (xk − xj )
j=0 j=0
Niech
(k) Zatem
li gdzie k = 0, 1, . . . , n, "k−1 #
k
i = 0, 1, . . . , k X (k)
X (k) (k)
wk (x) = di li (x) = di li (x) + dk lk (x)
oznacza i-ty wielomian bazowy Lagrange’a dla węzłów i=0

i=0

x0 , x1 , . . . , xk  
k−1
(x)
 
oraz X  (k−1) N k  + dk l(k) (x)
= (x) + k

di li

 k
k i=0
Y
(xi − xj ) 
 
(k)
X
wk (x) = di li (x) dla k = 0, 1, . . . , n.

j=0
i=0 j6=i

Wtedy dla dowolnego 1 6 k 6 n zachodzi k−1


X di Nk (x) dk Nk (x)
= wk−1 (x) + k
+ k−1
wk (x) = wk−1 (x) + bk Nk (x) i=0
Y Y
(xi − xj ) (xk − xj )
gdzie j=0
j6=i
j=0

k k−1 k
X di Y di Nk (x)
bk = Nk (x) = (x − xi ).
X
k
, = wk−1 (x) + k
i=0 i=0
Y i=0
(xi − xj )
Y
(xi − xj )
j=0 j=0
j6=i j6=i

= wk−1 (x) + bk Nk (x). 


72 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Udowodnione twierdzenie jest podstawą budowy algorytmu. w ogólności dla k = 1, 2, . . . , n oraz i = 0, 1, . . . , k − 1


Stosując je bowiem wielokrotnie otrzymujemy
(k−1)
(k) di zi
wn (x) = wn−1 (x) + bn Nn (x) zi = = ,
k−1
Y xi − xk
= wn−2 (x) + bn−1 Nn−1 (x) + bn Nn (x) (xi − xk ) (xi − xj )
= wn−3 (x) + bn−2 Nn−2 (x) + bn−1 Nn−1 (x) + bn Nn (x)
j=0
j6=i

.. (k) dk dk
. zk = k−1
= k−1
.
Y Y
= w0 (x) + b1 N1 (x) + b2 N2 (x) + . . . + bn Nn (x) (xk − xj ) (−(xj − xk ))
= b0 N0 (x) + b1 N1 (x) + b2 N2 (x) + . . . + bn Nn (x), j=0 j=0

gdzie Algorytm używa poniższych tablic:


k
X di float x[n+1]; tu są węzły x0 , x1 , . . . , xn ,
bk = k
dla k = 0, 1, . . . , n. float d[n+1]; tu są współczynniki d0 , d1 , . . . , dn ,
i=0 float b[n+1]; tu będą wyniki b0 , b1 , . . . , bn ,
Y
(xi − xj ) (k)
j=0 float z[n+1]; tu będą liczby pomocnicze zi .
j6=i

i składa się z n kroków. W k-tym kroku obliczany jest


Można więc sformułować poniższe twierdzenie. (k)
wynik bk . W tym celu najpierw wyznaczamy liczby zi
Twierdzenie 10 Dana jest liczba naturalna n i węzły dla i = 0, 1, . . . , k i zapisujemy w tablicy z. Zastępują one
(k−1)
umieszczone tam wcześniej liczby zi .
x0 , x1 , . . . , xn
(0)
parami różne. Niech wielomian w będzie zapisany w bazie z0 = d0
Lagrange’a zdefiniowanej powyższymi węzłami:
1
↓ · x0 −x
n
X 1

w(x) = di li (x). (1) (1)


i=0 z0 z1 = d1
x1 −x0

Wtedy jego współczynniki w bazie Newtona zdefiniowanej 1


↓ · x0 −x 1
↓ · x1 −x
2 2
węzłami
x0 , x1 , . . . , xn−1 (2) (2) (2)
z0 z1 z2 = d2
(x2 −x0 )(x2 −x1 )
wynoszą
1 1 1
k
↓ · x0 −x 3
↓ · x1 −x 3
↓ · x2 −x 3
X di
bk = k
dla k = 0, 1, . . . , n.
(3) (3) (3) (3)
i=0
Y z0 z1 z2 z3 = d3
(xi − xj ) (x3 −x0 )(x3 −x1 )(x3 −x2 )
j=0
j6=i
(k)
Podczas obliczania zi dla i = 0, 1, . . . , k od razu można
(k)
wyliczyć zk . Zmienna h pełni rolę pomocniczą — przecho-
Algorytm oblicza kolejno liczby bk dla k = 0, 1, 2, . . . , n. wuje kolejno liczby, przez które trzeba podzielić z (k−1) by
i
Zauważmy, że b0 = d0 . Jeśli wprowadzimy oznaczenie (k)
otrzymać zi .
(k) di
zi = k dla k = 0, 1, . . . , n,
Y i = 0, 1, . . . , k, b[0] = z[0] = d[0];
(xi − xj ) for(k = 1; k <= n; k++) {
j=0
j6=i z[k] = d[k]; //obliczenie liczb z[i]
for(i = 0; i < k; i++) {
to otrzymamy
h = x[i] - x[k];
k
X (k) z[i] = z[i] / h;
bk = zi dla k = 0, 1, . . . , n. z[k] = -z[k] / h;
i=0 }
b[k] = 0.0; //obliczenie liczby b[k]
Zauważmy, że for(i = 0; i <= k; i++)
(0) b[k] = b[k] + z[i];
z0 = d0 , }
(0)
(1) z0 (1) d1
z0 = ,z = , Zauważmy, że dwie pętle wewnętrzne można zastąpić jedną.
x0 − x1 1 x1 − x0
(1) (1) Ze względu na różne zakresy zmiennej i w instrukcjach for,
z0 z1 d2
, jedno zdziałań trzeba wykonać poza pętlą.
(2) (2) (2)
z0 = , z1 = , z2 =
x0 − x2 x1 − x2 (x2 − x0 )(x2 − x1 )
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 73

b[0] = z[0] = d[0]; Algorytm drugi (różnic dzielonych)


for(k = 1; k <= n; k++) {
z[k] = d[k]; Czy można omawiane zadanie rozwiązać taniej? Okazuje
b[k] = 0.0; się że tak, niemniej z algorytmem przedstawionym poniżej
for(i = 0; i < k; i++) { wiążą się pewne problemy związane z jakością, o czym będzie
h = x[i] - x[k]; później. Rozpatrzmy następującą tabelę.
z[i] = z[i] / h;
z[k] = -z[k] / h; x0 wx0
b[k] = b[k] + z[i]; wx0 ,x1
} x1 wx1 wx0 ,x1 ,x2
b[k] = b[k] + z[k]; wx1 ,x2
} x2 wx2 wx1 ,x2 ,x3
.. ..
. . wx2 ,x3
Jeśli n jest duże, to warto przy obliczaniu elementów tablicy .. .. .. ..
z zastosować specjalną ich reprezentację: w jednej zmiennej . . . . · · · wx0 ,...,xn
przechowywać rozwinięcie r ∈ [ 12 , 1), a w drugiej wykładnik .. ..
. . wxn−3 ,xn−2
E ∈ Z, wartością liczby jest r · 2E . Pozwoli to unikać
xn−2 wxn−2 wxn−3 ,xn−2 ,xn−1
nadmiaru i niedomiaru.
wxn−2 ,xn−1
Obliczmy koszt algorytmu. Pętla wewnętrzna jest wykony- xn−1 wxn−1 wxn−2 ,xn−1 ,xn
wana k razy, jej treść kosztuje 2 ops +2 opm, zatem cały jej wxn−1 ,xn
koszt to 2k ops +2k opm. W k-tym wykonaniu pętli głównej xn wxn
mamy (2k + 1) ops +2k opm. Zatem całkowity koszt to
Jej elementy nazywane są różnicami dzielonymi i zdefinio-
n
X n
X wane są następująco
(2k + 1) ops + 2k opm
k=1 k=1 wxk = w(xk ) = dk ,
= (3 + 5 + 7 + (2n + 1)) ops +(2 + 4 + 6 + 2n) opm wxk+1 − wxk
wxk ,xk+1 = ,
= n(n + 2) ops +n(n + 1) opm . xk+1 − xk
wxk+1 ,xk+2 − wxk ,xk+1
Algorytm można nieco przyspieszyć, jeśli wiadomo, że wę- wxk ,xk+1 ,xk+2 = ,
xk+2 − xk
zły są równoodległe. Poniższe twierdzenie dotyczy jakości
..
algorytmu. .
wxk+1 ,...,xk+l − wxk ,...,xk+l−1
Twierdzenie 11 Niech wxk ,xk+1 ,...,xk+l = ,
xk+l − xk
φ : R2n+2 → Rn+1 ,
przy czym wzory są prawdziwe dla takich k ∈ N ∪ {0} oraz
φ(x0 , x1 , . . . , xn , d0 , d1 , . . . , dn ) = (b0 , b1 , . . . , bn ), l ∈ N, które wyznaczają poprawne indeksy węzłów. Liczby
gdzie xi , di , bi mają znaczenie opisane wyżej. Wtedy wxk ,xk+1 ,...,xk+l
przedstawiony algorytm A : R2n+2 → Rn+1 rozwiązujący
zadanie φ jest prawie numerycznie poprawny, tzn. nazywamy różnicami dzielonymi l-tego rzędu 4

Xk (k)
di (1 + δi ) Definicję łatwo zapamiętać przy pomocy powyższej tabeli.
fl (bk ) = k
dla k = 0, 1, . . . , n, Każda różnica dzielona (z wyjątkiem tych z pierwszej ko-
i=0
Y
(xi − xj ) lumny) jest wyrażona ułamkiem, w którego liczniku są odej-
j=0
mowane różnice dzielone stojące na lewo, a w mianowniku
j6=i
odpowiednie węzły.
(k)
gdzie |δi | 6 3kν. Można wykazać, np. przez indukcję poniższe twierdzenie.
Twierdzenie 12 Dane są różne węzły x0 , x1 , . . . , xn .
Sformułowanie „prawie numerycznie poprawny” oznacza tu, Różnicę dzieloną l-tego rzędu można wyrazić wzorem
że algorytm jest numerycznie poprawny ze względu na każdy
wynik z osobna, ale nie na wszystkie razem. Gdyby dla k+l
X di
każdego i = 0, 1, . . . , n zachodziło, że wxk ,xk+1 ,...,xk+l = k+l
,
i=k
Y
(0) (1) (i)
(xi − xj )
δi = δi = . . . = δi , j=k
j6=i

to algorytm byłby numerycznie poprawny, ale tak nie jest.


gdzie k ∈ N∪{0} oraz l ∈ N wyznaczają poprawne indeksy
Niemniej jakość jest dobra. Można udowodnić, że jeśli algo-
węzłów.
rytm jest prawie numerycznie poprawny, to jest stabilny.
4 Różnice dzielone oznacza się również przez w[xk , xk+1 , . . . , xk+l ].
74 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Na podstawie tego twierdzenia i twierdzeń, które były dowo- for(i = n; i >= 2; i--)
dzone na początku omówienia algorytmu pierwszego stwier- y[i] = (y[i]-y[i-1]) / (x[i]-x[i-1];
dzamy, że szukane współczynniki w bazie Newtona spełniają
równość Cały algorytm przedstawia się następująco.
bi = wx0 ,...,xi dla i = 0, 1, . . . , n,
for(k = 1; k <=n ; k++)
czyli zapisane są w pierwszym (ukośnym) wierszu tabeli. for(i = n; i >= k; i--)
y[i] = (y[i]-y[i-1]) / (x[i]-x[i-k];
Przykład Dane są węzły −1, 1, 2 oraz wielomian w o
współczynnikach −11, 9 i 13 w bazie Lagrange’a, czyli
Policzmy koszt. Treść pętli wewnętrznej kosztuje
w(x) = −11l0 (x) + 9l1 (x) + 13l2 (x). 2 ops +1 opm, Jest ona wykonywana n − k + 1 razy.
Cały koszt pętli wewnętrznej zależy od k i wynosi
Szukamy jego współczynników w bazie Newtona zdefiniowa- 2(n − k + 1) ops +(n − k + 1) opm. Pętla zewnętrzna
nej węzłami −1 i 1, czyli w bazie wykonuje się dla k = 1, 2, . . . , n, zatem cały koszt algorytmu
to
N0 (x) = 1, N1 (x) = x + 1, N2 (x) = (x + 1)(x − 1). n
X
[2(n − k + 1) ops +(n − k + 1) opm]
Budujemy tabelę różnic dzielonych. k=1
1
−1 −11 = n(n + 1) ops + n(n + 1) opm .
9−(−11) 2
1−(−1) = 10
1 9 4−10
= −2 Jakość zależy od uporządkowania węzłów. Jeśli są uporząd-
2−(−1)
13−9
=4 kowane rosnąco lub malejąco, to algorytm jest numerycznie
2−1
2 13 poprawny ze względu na każdy iloraz różnicowy osobno.
Twierdzenie 13 Niech
Szukane współczynniki zapisane są w pierwszym, ukośnym
wierszu tabeli, czyli są to liczby −11, 10 i −2. Zatem φ : R2n+2 → Rn+1 ,
w(x) = −11N0 (x) + 10N1 (x) − 2N2 (x). φ(x0 , x1 , . . . , xn , d0 , d1 , . . . , dn ) = (b0 , b1 , . . . , bn ),


gdzie xi , di , bi mają znaczenie opisane wyżej. Wtedy algo-


W algorytmie różnic dzielonych Newtona kolejno obliczamy rytm różnic dzielonych A : R2n+2 → Rn+1 rozwiązujący
kolumny tabeli. Używamy w tym celu tablicy y, która zadanie φ jest prawie numerycznie poprawny, tzn.
zawiera początkowo wartości di , oraz tablicy x przeznaczonej
do przechowywania węzłów. Ponumerujmy kolumny tabeli Xk (k)
di (1 + δi )
różnic dzielonych w kierunku od lewej do prawej zaczynając fl (bk ) = k
dla k = 0, 1, . . . , n,
od 0, przy czym nie liczymy kolumny z węzłami. Zauważmy, i=0
Y
(xi − xj )
że j=0
j6=i

1. Wyznaczenie k-tej kolumny tabeli wymaga znajomości


(k)
jedynie kolumny (k − 1)-ej oraz węzłów. Nie będzie gdzie |δi | 6 3kν.
zatem potrzebna tablica kwadratowa — będziemy nad-
pisywać tablicę y. Tak dobrze jest jedynie dla węzłów w kolejności rosnącej
2. Kolumna k-ta jest o jeden krótsza od (k − 1)-ej — zwal- lub malejącej. W innych wypadkach nie musi być nawet
nia się jedno miejsce, które możemy przeznaczyć na numerycznie stabilny.
zapamiętanie bk . Zauważmy, że mamy tu pewną sprzeczność — algorytm jest
3. Każdą kolumnę należy obliczać „od dołu” — wtedy nie dobry wtedy, gdy węzły generują bazę Newtona o dużej
nadpiszemy potrzebnych jeszcze danych, a obliczone skośności i na odwrót. Można więc go stosować dla małej
współczynniki będą kolejno pojawiały się w górnej czę- liczby węzłów (n 6 10), wtedy należy wcześniej uporządko-
ści. wać węzły. W innych przypadkach trzeba stosować pierwszy,
droższy algorytm z węzłami uporządkowanymi zgodnie z
permutacją van der Corput’a.
0 wx0 = b0 b0 b0 · · · b0
1 wx1 wx0 ,x1 = b1 b1 · · · b1 liczba węzłów
2 wx2 wx1 ,x2 wx0 ,x1 ,x2 = b2 · · · b2
.. .. .. ..
. . . . ··· niewielka duża
n−2 wxn−2 wxn−3 ,xn−2 wxn−4 ,xn−3 ,xn−2 · · · bn−2
n−1 wxn−1 wxn−2 ,xn−1 wxn−3 ,xn−2 ,xn−1 · · · bn−1 uporządkować węzły zastosować permutację
n wxn wxn−1 ,xn wxn−2 ,xn−1 ,xn · · · bn rosnąco lub malejąco van der Corput’a
i↑ k→ 0 1 2 ··· n

Zerowa kolumna jest dana. Obliczenie pierwszej kolumny stosować algorytm stosować algorytm
(k = 1) można przeprowadzić tak. różnic dzielonych pierwszy
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 75

Algorytm różnic dzielonych w przypadku węzłów Szukane współczynniki bi wyrażają się więc wzorem
równoodległych ωx ,x ,...,x
bi = 0 1 i i dla i = 0, 1, . . . , n.
i!h
Przypuśćmy, że obecnie węzły są równoodległe, czyli
Zapisanie algorytmu pozostawiam jako ćwiczenie. Ta wersja
xi = a + ih, algorytmu jest znacznie tańsza: koszt wynosi

dla pewnego a ∈ R i h > 0. Wtedy 1


n(n + 1) ops +3n opm .
2
wxk = w(xk ) = dk , Jakość też jest lepsza niż wersji ogólnej. Okazuje się, że
wxk+1 − wxk w zadaniach praktycznych liczby di oraz di+1 niewiele się
wxk ,xk+1 = ,
h różnią. Wtedy nierzadko ich różnica jest wyliczana dokładnie
wxk+1 ,xk+2 − wxk ,xk+1 — bez błędów zaokrągleń. Błędy powstają dopiero przy
wxk ,xk+1 ,xk+2 = ,
2h dzieleniu podczas obliczania bi . Jeśli h jest potęgą dwójki, to
.. i dzielenie przez hi jest wykonane dokładnie. W naturalnych
.
wxk+1 ,...,xk+l − wxk ,...,xk+l−1 przypadkach mamy do czynienia z bardzo dobrą stabilnością
wxk ,xk+1 ,...,xk+l = . tego algorytmu.
lh
Idea algorytmu polaga na tym, by konstruować nieco inną
tabelę różnic dzielonych — bez wykonywania dzieleń. 3.3.3 Baza naturalna → baza Czebyszewa
x0 ωx0 Dane: a0 , a1 , . . . , an współczynniki wielomianu w w
ωx0 ,x1 bazie naturalnej,
x1 ωx1 ωx0 ,x1 ,x2 Wyniki: c0 , c1 , . . . , cn współczynniki wielomianu w w
ωx1 ,x2 bazie Czebyszewa
x2 ωx2 ωx1 ,x2 ,x3
.. .. Obecnie wielomian dany jest w bazie naturalnej
. . ωx2 ,x3
n
.. .. .. .. X
. . . . · · · ωx0 ,...,xn w(x) = ai xi .
.. .. i=1
. . ωxn−3 ,xn−2
xn−2 ωxn−2 ωxn−3 ,xn−2 ,xn−1 Szukamy takich współczynników ci , by miał on postać
ωxn−2 ,xn−1 n
X
xn−1 ωxn−1 ωxn−2 ,xn−1 ,xn w(x) = ci Ti (x).
ωxn−1 ,xn i=1
xn ωxn
Wiadomo z definicji, że
Wielkości występujące powyżej nazywane są progresywnymi
różnicami dzielonymi i są zdefiniowane przez zależności Tk+1 (x) = 2xTk (x) − Tk−1 (x) dla k = 1, 2, . . . .

Gdy przeniesiemy Tk−1 (x) na drugą stronę i obie strony


ωxk = w(xk ) = dk ,
podzielimy przez 2 otrzymamy, że
ωxk ,xk+1 = ωxk+1 − ωxk ,
Tk−1 (x) + Tk+1 (x)
ωxk ,xk+1 ,xk+2 = ωxk+1 ,xk+2 − ωxk ,xk+1 , xTk (x) = , dla k = 1, 2, . . . .
2
..
. Zależność ta będzie używana przy wyprowadzeniu algorytmu.
ωxk ,xk+1 ,...,xk+l = ωxk+1 ,...,xk+l − ωxk ,...,xk+l−1 . Będziemy również stosować skrót notacyjny

Tk = Tk (x).
Można udowodnić, np. przez indukcję poniższe twierdzenie.
Zacznijmy od przedstawienia w w sposób podobny do tego,
Twierdzenie 14 Dane są węzły równoodległe
który jest podstawą schematu Hornera,
x0 , x1 , . . . , xn ,takie, że
w(x) = a0 +x[a1 +x[a2 +...+x[an−3 +x(an−2 +xan−1 +x2 an )]]].
xi = x0 + ih, dla i = 0, 1, . . . , n.
Przekształcimy obecnie wielomian w nawiasie okrągłym tak,
Różnicę dzieloną l-tego rzędu można wyrazić przy pomocy by został on zapisany w bazie Czebyszewa:
progresywnej różnicy dzielonej l-tego rzędu wzorem
ωx ,x ,...,x an−2 + xan−1 + x2 an
wxk ,xk+1 ,...,xk+l = k k+1 l k+l . = an−2 T0 + an−1 T1 + an xT1
l!h
T0 + T2
gdzie k ∈ N∪{0} oraz l ∈ N wyznaczają poprawne indeksy = an−2 T0 + an−1 T1 + an
2
węzłów.  an  an
= an−2 + T0 + an−1 T1 + T2 .
2 2
76 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Jest to początkowy krok algorytmu. W następnych coraz gdzie


większe fragmenty wielomianu w będą zapisywane w bazie
Czebyszewa — począwszy od najbardziej zagnieżdżonych ˆk = âk + âk+2 ,

nawiasów. Dla wygody będziemy numerować kroki od k = 2
n − 2 do k = 0. W k-tym kroku będziemy generować nowe ˆk+1 = âk+1 + âk+3 ,

współczynniki na podstawie tych z kroku k + 1 (faktycznie 2
zmieniać się będą tylko współczynniki o wyższych indeksach). ˆk+2 = â k+2 âk+4
â + ,
2 2
krok współczynniki
a0 a1 . . . an−4 an−3 an−2 an−1 an ˆk+3 = âk+3 + âk+5 ,

2 2
k k k k ...
n − 2 ã0 ã1 . . . ãn−4 ãn−3 ãn−2 ãn−1 ãn ˆn−3 = ân−3 + ân−1 ,

k k k 2 2
˜0
n − 3 ã ˜1
ã ˜n−4 ã
. . . ã ˜n−3 ã
˜n−2 ã
˜n−1 ã
˜n ân−2 ân
ˆ
ân−2 = + ,
k k 2 2
˜
n − 4 ã0 ˜ ˜ ˜ ˜ ˜ ˜
ã1 . . . ã n−4 ãn−3 ãn−2 ãn−1 ãn ˆn−1 = ân−1 ,

... 2
ˆ ân
Zatem po wykonaniu kroku k = n − 2 otrzymujemy ân = .
2
w(x) = ã0 +x[ã1 +...+x[ãn−3 +x(ãn−2 T0 +ãn−1 T1 +ãn T2 )]]],
Okazuje się, że w algorytmie wystarczy użyć tylko jednej
gdzie
tablicy a. Początkowo zapisane są w niej współczynniki ai
ãi = ai dla i = 0, 1, . . . , n − 3, wielomianu w bazie naturalnej. Krok k-ty można zaprogra-
an mować następująco
ãn−2 = an−2 + ,
2 1. najpierw wszystkie współczynniki o indeksach
ãn−1 = an−1 ,
an i = k + 2, k + 3, . . . , n
ãn = .
2
dzielimy przez 2 i zapamiętujemy wyniki w tej samej
tablicy a,
W następnym kroku dokonujemy przekształcenia najbardziej
zagnieżdżonego nawiasu kwadratowego: 2. potem poprawiamy współczynniki o indeksach

ãn−3 + x(ãn−2 T0 + ãn−1 T1 + ãn T2 ) i = k, k + 1, . . . , n − 2,


= ãn−3 T0 + ãn−2 xT0 + ãn−1 xT1 + ãn xT2
czyli do współczynnika a[i] dodajemy a[i+2].
T0 + T2 T1 + T3
= ãn−3 T0 + ãn−2 T1 + ãn−1 + ãn
2 2 Oto cały algorytm
˜n−3 T0 + ã
= ã ˜n−2 T1 + ã
˜n−1 T2 + ã
˜n T3 ,
for(k = n-2; k >=0; k--) {
for(i = k+2; i <= n; i++)
gdzie a[i] = a[i] / 2;
for(i = k; i <= n-2; i++)
˜n−3 = ãn−3 + ãn−1 ,
ã a[i] = a[i] + a[i+2];
2
ã }
˜n−2 = ãn−2 +

n
,
2
Można też go zapisać nieco inaczej, łącząc pętle wewnętrzne
˜n−1 = ãn−1 ,
ã w jedną.
2
˜n = ãn
ã .
2 for(k = n-2; k >= 0; k--)
for(i = k+2; i <= n; i++) {
W ogólności w kroku k-tym mamy a[i] = a[i] / 2;
a[i-2] = a[i-2] + a[i];
âk + x(âk+1 T0 + âk+2 T1 + . . . + ân Tn−k−1 ) }
= âk T0 + âk+1 xT0 + âk+2 xT1 + . . . + ân xTn−k−1
T0 + T2 Koszt wynosi 12 n(n − 1) ops + 12 n(n − 1) opm. Ze względu
= âk T0 + âk+1 T1 + âk+2 + ... na dużą skośność bazy naturalnej konieczne jest trzymanie
2
Tn−k−2 + Tn−k danych współczynników ai w arytmetyce o dużej precyzji.
+ân
2
ˆk T0 + â
= â ˆk+1 T1 + â
ˆk+2 T2 + . . . + â
ˆn Tn−k ,
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 77

3.3.4 Baza Czebyszewa → baza naturalna 3.3.7 Baza Newtona → baza naturalna

Dane: c0 , c1 , . . . , cn współczynniki wielomianu w w Dane: x1 , x2 , . . . , xn węzły definiujące bazę New-


bazie Czebyszewa, tona’a
Wyniki: a0 , a1 , . . . , an współczynniki wielomianu w w b0 , b1 , . . . , bn współczynniki wielomianu w
bazie naturalnej w bazie Newtona’a
Wyniki: a0 , a1 , . . . , an współczynniki wielomianu w
Należy obecnie rozwiązać zadanie odwrotne do poprzedniego.
w bazie naturalnej,
Wielomian dany jest w bazie Czebyszewa
n
Należy odpowiednio i wielokrotnie zastosować schemat Hor-
X nera.
w(x) = ci Ti (x)
i=1

i szukamy takich współczynników ai , by miał on postać 3.3.8 Pytania powtórzeniowe


n
X 1. Podaj założenie dotyczące ilości wyrazów ciągu van der
w(x) = ai xi . Corput’a oraz zależność określającą wartość elementu
i=1
ciągu na podstawie reprezentacji dwójkowej jego nu-
Zauważmy, że aby rozwiązać to zadanie wystarczy poprzedni meru.
algorytm wykonać „od końca”. 2. Sformułuj zadanie zamiany bazy Lagrange’a na New-
for(k = 0; k <= n-2; k++) tona.
for(i = n; i >= k+2; i--){ 3. Podaj twierdzenie, które mówi jak można obliczyć współ-
a[i-2] = a[i-2] - a[i]; czynniki wielomianu w bazie Newtona na podstawie jego
a[i] = a[i] * 2; współczynników w bazie Lagrange’a.
}
4. Podaj definicję różnic dzielonych.
Tablica a zawiera początkowo współczynniki ci w bazie Cze- 5. Podaj definicję progresywnych różnic dzielonych.
byszewa, a po zakończeniu algorytmu będzie przechowywać
szukane współczynniki ai w bazie naturalnej. Koszt jest 6. Jaki jest związek pomiędzy różnicami dzielonymi i pro-
identyczny jak poprzednio: 12 n(n − 1) ops + 12 n(n − 1) opm. gresywnymi różnicami dzielonymi? Podaj odpowiednie
twierdzenie.
7. Opisz, w jakich przypadkach należy stosować algorytm
3.3.5 Baza naturalna → baza Lagrange’a pierwszy (z pomocniczą tablicą z), a w jakich algorytm
drugich (różnic dzielonych) do rozwiązania zadania za-
Dane: x0 , x1 , . . . , xn węzły definiujące bazę La- miany bazy Lagrange’a na Newtona. Jak powinny być
grange’a uporządkowane węzły.
a0 , a1 , . . . , an współczynniki wielomianu w
w bazie naturalnej,
Wyniki: d0 , d1 , . . . , dn współczynniki wielomianu w 3.3.9 Ćwiczenia sprawdzające zrozumienie
w bazie Lagrange’a tematu
Należy odpowiednio i wielokrotnie zastosować schemat Hor-
nera. Zadanie 130 Dane są węzły
x0 = −4, x1 = −1, x2 = 0, x3 = 2,
3.3.6 Baza naturalna → baza Newtona x4 = 5, x5 = 6, x6 = 9, x7 = 11.
Podaj taką ich permutację
Dane: x1 , x2 , . . . , xn węzły definiujące bazę New-
tona’a xp(0) , xp(1) , xp(2) , xp(3) ,
a0 , a1 , . . . , an współczynniki wielomianu w xp(4) , xp(5) , xp(6) , xp(7) ,
w bazie naturalnej,
że ciąg
Wyniki: b0 , b1 , . . . , bn współczynniki wielomianu w
w bazie Newtona’a p(0), p(1), p(2), p(3), p(4), p(5), p(6), p(7)
Należy odpowiednio i wielokrotnie zastosować schemat Hor- jest ciągiem van der Corput’a. Zastosuj definicję per-
nera. mutacji van der Corput’a:
p(0) = 0,
p(i) = p(i − 2j ) + 2k−j−1 ,
j = 0, 1, . . . , k − 1,
i = 2j , 2j + 1, . . . , 2j+1 − 1.
78 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

3.3.10 Zadania
Zadanie 131 Dane są węzły

x0 = −4, x1 = −1, x2 = 0, x3 = 2, Zadanie 134 Niech n = 2k oraz p(0), p(1), . . . , p(n − 1)


będzie ciągiem van der Corput’a. Napisz funkcję, która
x4 = 5, x5 = 6, x6 = 9, x7 = 11.
w tablicy p umieszcza wartości p(i) dla i = 0, 1, . . . , n−1.
Podaj taką ich permutację Użyj poniższego nagłówka funkcji.
// wyznacza ciag van der Corputa i zapisuje go
xp(0) , xp(1) , xp(2) , xp(3) , // w tablicy p, ktora ma 2^k elementow
xp(4) , xp(5) , xp(6) , xp(7) , void wyznacz_perm(int *p,int k);

że ciąg Podczas kodowania staraj się unikać zbędnych działań,


w szczególności wielokrotnego wywoływania funkcji pow.
p(0), p(1), p(2), p(3), p(4), p(5), p(6), p(7)
Przetestuj działanie funkcji dla k = 0, 1, 2, 3, 4, 5 wypi-
jest ciągiem van der Corput’a. Zastosuj fakt dotyczący sując tablice w main().
reprezentacji w systemie dwójkowym elementów ciągu
van der Corput’a.
Zadanie 135 Zbuduj tabelę różnic dzielonych dla wie-
lomianu
Zadanie 132 Dla węzłów x0 = 2, x1 = −1, x2 = 0 w(x) = x2 − 4x
wypisz funkcje N0 , N1 , N2 , N3 , gdzie oraz węzłów x0 = 2, x1 = 3, x2 = 5, x3 = 6. Wskaż w
k−1
niej różnice dzielone zerowego, pierwszego, drugiego i
Y trzeciego rzędu.
Nk (x) = (x − xj ).
j=0

Zadanie 136 Zbuduj tabelę różnic dzielonych dla wie-


lomianu
Zadanie 133 Dane są węzły x0 = 2, x1 = −1 oraz w(x) = x2 − 2x
współczynniki d0 = 1, d1 = −2. oraz węzłów x0 = −1, x1 = 0, x2 = 1, x3 = 2. Zastosuj
1. Wypisz poniższe funkcje algorytm różnic dzielonych dla węzłów równoodległych.

(0)
l0 ,
Zadanie 137 Zapisz w odpowiedniej bazie Newtona
(1) (1)
l0 , l 1 , poniższy wielomian

(k)
Yk
x − xj w(x) = 7l0 (x) + 5l1 (x) − 3l2 (x) + 9l3 (x),
gdzie li (x) = .
x i − xj
j=0
j6=i
gdzie l0 , l1 , l2 , l3 są wielomianami bazowymi Lagrange’a
dla węzłów x0 = 2, x1 = 4, x2 = 6, x3 = 8. Zastosuj
2. Korzystając ze wzoru
algorytm różnic dzielonych dla węzłów równoodległych.
k
(k)
X
wk (x) = di li (x)
i=0
Zadanie 138 Danych jest n + 1 różnych punktów
x0 , x1 , . . . , xn na osi rzeczywistej. Niech
wypisz wielomiany w0 , w1 .
n
x − xj
3. Korzystając ze wzoru
Y
lk (x) = , k = 0, 1, . . . , n.
j=0
x k − xj
k j6=k
X di
bk = k Udowodnij, że dla dowolnego x ∈ R
i=0
Y
(xi − xj )
n
j=0 X
j6=i lk (x) = 1.
k=0
oblicz liczby b0 , b1 .
4. Sprawdź, że dla k = 1 zachodzi równość

wk (x) = wk−1 (x) + bk Nk (x), Zadanie 139 Oblicz wx0 ,x1 ,...,xp dla wielomianu

gdzie Nk (x) =
Qk−1 w(x) = (x − x0 ) · (x − x1 ) · . . . · (x − xn ),
j=0 (x − xj ).
gdzie p ∈ {0, 1, . . . , n}. Liczby rzeczywiste
x0 , x1 , . . . , xn są różne.
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 79

Zadanie 140 Zapisz algorytm znajdowania progresyw- Zadanie 146 Zapisz algorytm przejścia z postaci potę-
nych różnic dzielonych ωx0 , . . . , ωx0 ,...,xn . Algorytm ma gowej wielomianu stopnia n do postaci w bazie
działać in–situ, tzn. początkowo w (n + 1)-elementowej
tablicy w mają być umieszczone wartości w(xi ), a na 1, x − α, (x − α)2 , . . . , (x − α)n .
końcu różnice dzielone. Podaj koszt.
Algorytm ma działać in situ, tzn. dane wejściowe umiesz-
czane są w tablicy (n + 1)–wymiarowej, tam też mają
Zadanie 141 Dane są różne węzły x0 , x1 , . . . , xn . być umieszczone wyniki. W algorytmie można posłu-
Niech wxk ,xk+1 ,...,xk+l oznacza różnicę dzieloną l-tego giwać się jedynie kilkoma zmiennymi pomocniczymi —
rzędu, gdzie k ∈ N ∪ {0} oraz l ∈ N są takie, że wy- koszt pamięciowy zatem ma wynosić O(n). Oblicz koszt
znaczają one poprawne indeksy węzłów. Udowodnij, czasowy algorytmu.
że
k+l
X di
wxk ,xk+1 ,...,xk+l = k+l
. Zadanie 147 Dany jest wielomian stopnia n w postaci
i=k
Y
(xi − xj ) naturalnej. Wyznacz jego współczynniki w bazie New-
j=k
tona. Podaj algorytm i oblicz jego koszt.
j6=i

Zadanie 148 Dany jest wielomian stopnia n w bazie


Zadanie 142 Dane są różne węzły x0 , x1 , . . . , xn . Newtona. Wyznacz jego współczynniki w bazie natural-
Niech wxk ,xk+1 ,...,xk+l oznacza różnicę dzieloną l-tego nej. Podaj algorytm i oblicz jego koszt.
rzędu, gdzie k ∈ N ∪ {0} oraz l ∈ N są takie, że
wyznaczają one poprawne indeksy węzłów. Niech
Zadanie 149 Przypuśćmy, że mamy l–krotnie obliczyć
p(k), p(k + 1), . . . , p(k + l) będzie dowolną permutacją
wartość w(x) danego w postaci Newtona wielomianu w
liczb k, k + 1, . . . , k + l. Udowodnij, że
stopnia n. Dla jakiego l bardziej opłaca się przejść do
wxk ,xk+1 ,...,xk+l = wxp(k) ,xp(k+1) ,...,xp(k+l) . bazy naturalnej i tam l–krotnie obliczać w(x) algoryt-
mem Hornera. Przyjmij, że jedno działanie mnożenia
jest wykonywane p–krotnie dłużej, niż jedno działanie
dodawania lub odejmowania. Koszt algorytmu zamiany
Zadanie 143 Udowodnij, że dla węzłów równoodle- bazy Newtona na naturalną wynosi
głych xi = a + ih, gdzie h > 0, i = 0, 1, . . . , n zachodzi
n(n + 1)
ωx ,x ,...,x (ops + opm).
wxk ,xk+1 ,...,xk+l = k k+1 l k+l . 2
l!h
dla poprawnych indeksów k i l.
Odpowiedzi

Zadanie 144 Znane są współczynniki d0 , d1 , . . . , dn Zadanie 130,131


wielomianu zapisanego w bazie Lagrange’a: x0 x1 x2 x3 x4 x5 x6 x7
−4 −1 0 2 5 6 9 11
w(x) = d0 l0 (x) + d1 l1 (x) + . . . + dn ln (x), x0 x4 x2 x6 x1 x5 x3 x7
−4 5 0 9 −1 6 2 11
gdzie li są funkcjami bazowymi Lagrange’a opartymi (0) (1) (1)
Zadanie 133 l0 (x) = 1, l0 (x) = 13 (x + 1), l1 (x) = − 13 (x − 2),
na węzłach xi = a + i(i + 1), i = 0, 1, . . . , n. Napisz w0 (x)1, w1 (x) = x − 1, b0 = b1 = 1, zachodzi
algorytm znajdujący współczynniki b0 , b1 , . . . , bn tego Zadanie 135 2 −4 Zadanie 136 −1 3
samego wielomianu zapisanego w bazie Newtona o wę- 1 −3
złach xi = a + i(i + 1), i = 0, 1, . . . , n − 1. Postaraj się 3 −3 1 0 0 2
zminimalizować koszt. 4 0 −1 0
5 5 1 1 −1 2
7 1
Zadanie 145 Znane są współczynniki a0 , a1 , . . . , an 6 12 2 0
wielomianu zapisanego w bazie naturalnej Zadanie 137
w(x) = 7 − (x − 2) − 34 (x − 2)(x − 4) + 13 (x − 2)(x − 4)(x − 6)
w(x) = a0 + a1 x + . . . + an xn . 24
Zadanie 140 koszt wynosi 12 n(n + 1) ops Zadanie 145
Napisz algorytm znajdujący współczynniki koszt wynosi (n + 1)n(ops + opm) Zadanie 146 koszt
d0 , d1 , . . . , dn tego samego wielomianu zapisanego wynosi n(n+1)2
ops + n(n+1)
2
opm Zadanie 147 koszt wy-
w bazie Lagrange’a: nosi n(n+1)
2
ops + n(n+1)
2
opm Zadanie  148 koszt wynosi
n(n+1)
ops + n(n+1) opm Zadanie 149 l = n+1 (1 + p)
w(x) = d0 l0 (x) + d1 l1 (x) + . . . + dn ln (x), 2 2 2

gdzie li są funkcjami bazowymi Lagrange’a opartymi na


węzłach 0, −1, −2, . . . , −n. Oblicz koszt.
80 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19
Rozdział 4

Interpolacja wielomianowa

4.1 Różne sformułowania zadania


interpolacji

Wiele zjawisk fizycznych jest opisywanych przez funkcje,


których dokładnie nie znamy, lecz potrafimy mierzyć wartości
tych funkcji lub ich pochodnych dla określonych wartości
argumentu. Przykładem może być położenie, prędkość i
przyspieszenie poruszającego się obiektu. Zdarza się też,
że funkcja jest precyzyjnie opisana, lecz wyznaczanie jej
wartości jest dla danego zastosowania zbyt czasochłonne.
W obu przypadkach chcielibyśmy na podstawie wartości
funkcji w pewnych punktach (zwanych węzłami) znaleźć
inną, „prostą” funkcję dobrze przybliżająca oryginalną. Ta Tradycyjnie dane zapisuje się w tzw. tabelce interpolacyjnej,
tematyka jest podstawą zadań interpolacji i aproksymacji. której górny wiersz zawiera węzły, a dolny wartości funkcji:
Należy zdać sobie sprawę, że nie ma uniwersalnej i zawsze do- x0 x1 ... xn
.
brej metody przybliżania funkcji. Niezbędna jest dodatkowa f (x0 ) f (x1 ) ... f (xn )
wiedza dotycząca opisywanego zjawiska, np. zachowanie się
Od wyboru przestrzeni V zależy rodzaj i jakość interpola-
pochodnych, by móc wybrać właściwą metodę. Poza tym
cji dla konkretnej funkcji f ∈ F , lub wszystkich funkcji z
przybliżenia są zadowalające jedynie dla punktów niezbyt od-
przestrzeni F . Jeśli V jest przestrzenią wielomianową, to
ległych od punktów pomiarowych — dalekosiężne prognozy
mówimy o interpolacji wielomianowej Lagrange’a. W przy-
niekoniecznie będą prawdziwe.
padku V będącego przestrzenią splajnów — o interpolacji
splajnami, wielomianów trygonometrycznych — interpola-
4.1.1 Klasyczne zadanie interpolacji cji trygonometrycznej, funkcji wymiernych — interpolacji
wymiernej.
Dana jest przestrzeń F funkcji rzeczywistych lub zespolo- Przestrzeń F musi być odpowiednio „mała”. Dopuszczenie,
nych („trudnych”), które chcemy przybliżać oraz przestrzeń by zawierała dowolne funkcje ciągłe powoduje, że zadanie
V funkcji odpowiednio rzeczywistych lub zespolonych („ła- interpolacji traci sens: dla dowolnej tabelki interpolacyjnej
twych”), którymi będziemy przybliżać. Elementami prze- można dobrać funkcję ciągłą ją spełniającą, która w punk-
strzeni V powinny być funkcje, dla których tanio można tach znajdujących się pomiędzy węzłami przyjmuje wartości
obliczać wartości. dowolnie duże.
Wybierzmy f ∈ F . Niech
x0 , x1 , . . . , xn 4.1.2 Uogólnione klasyczne zadanie inter-
oznaczają różne punkty z dziedziny funkcji f , będziemy polacji
nazywali je węzłami. Szukamy funkcji v ∈ V spełniającej
zależności Niektóre zastosowania wymagają, by funkcja interpolująca
nie tylko dobrze przybliżała samą funkcję interpolowaną,
f (xi ) = v(xi ) dla i = 0, 1, . . . , n, ale też jej pochodne. Prowadzi to do uogólnienia zadania
nazywane równaniami interpolacyjnymi. Funkcję v nazy- interpolacji.
wamy funkcją interpolującą f , a f funkcją interpolowaną. Tak jak poprzednio dane są przestrzenie F i V , funkcja f
Dane: x0 , x1 , . . . , xn różne węzły oraz różne węzły
f(x0 ), f(x1 ),. . ., f(xn ) wartości funkcji w węzłach x0 , x1 , . . . , xm
Wynik: v ∈ V funkcja spełniająca równa- należące do dziedziny funkcji f . Z każdym węzłem związana
nia f (xi ) = v(xi ) jest jego krotność, czyli liczba naturalna informująca, ile
dla i = 0, 1, . . . , n kolejnych wartości pochodnych musi zachowywać szukana

81
82 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

funkcja v. Przyjmujemy tu umowę, że pochodne numeru- 4.1.3 Zadanie interpolacji przedziałowej


jemy od zera i zerowa pochodna oznacza wartość funkcji.
Krotności będziemy oznaczać przez Wartości funkcji, które mierzymy lub obliczamy są zwykle
obarczone błędami. Nie można też zawsze zakładać, że dane
k0 , k1 , . . . , km , są dokładne węzły — one też są wyznaczane przez urządzenia
pomiarowe (np. zegary) lub są skutkiem obliczeń. Zadanie
a ich sumę przez n + 1 interpolacji przedziałowej uwzględnia te fakty.
n + 1 = k0 + k1 + . . . + km . Jak wcześniej, dane są przestrzenie funkcji F , V oraz funkcja
f ∈ F . Węzły będą reprezentowane przez przedziały
Funkcja v, która interpoluje f musi spełniać równania inter-
polacyjne: [xi , xi ] dla i = 1, 2, . . . , n,

f (j) (xi ) = v (j) (xi ), dla i = 0, 1, . . . , m, które opisują wszystkie dopuszczalne wartości, jakie mogą
j = 0, 1, . . . , ki − 1. się pojawić po uwzględnieniu błędów pomiarów lub obliczeń.
Zakłada się, że przedziały są rozłączne.
Dane: x0 , x1 , . . . , xm różne węzły Podobnie reprezentowane są wartości funkcji: przez prze-
k0 , k1 , . . . , km krotności węzłów działy [yi , yi ], niekoniecznie rozłączne. Do przedziału [yi , yi ]
należą wszystkie wartości funkcji f dla punktów przedziału
f(x0 ), f (1)(x0 ), . . . , f (k0−1)(x0 ) wartości funkcji [xi , xi ] obarczone dopuszczalnymi błędami.
f(x1 ), f (1)(x1 ), . . . , f (k1−1)(x1 ) i pochodnych Rozpatrzmy obecnie wszystkie funkcje v ze zbioru V speł-
... w węzłach niające warunki
f(xm ), f (1)(xm ), . . . , f (km−1)(xm )
∀i=1,2,...,n ∃xi ∈[xi ,xi ] ∃yi ∈[yi ,yi ] v(xi ) = yi .
Wynik: v ∈ V funkcja spełniająca
równania Oznaczmy zbiór takich funkcji przez W .
f (j) (xi ) = v (j) (xi )
dla i = 0, 1, . . . , m, Zadanie interpolacji rozumiane jest jako wyznaczenie dla
j = 0, 1, . . . , ki − 1 dowolnego przedziału [x, x] zbioru

I([x, x]) = {v(x) : x ∈ [x, x], v ∈ W }.

Zwykle zadowalamy się przedziałem, który jest dobrym przy-


bliżeniem tego zbioru.
Dane: [x0 , x0 ], [x1 , x1 ],. . ., [xn , xn ] rozłączne przedziały
reprezentujące węzły
[y0 , y0 ], [y1 , y1 ], . . . , [yn , yn ] przedziały reprezentują-
ce wartości funkcji w wę-
złach
Wynik: I([x, x]) przedział reprezentujący
wartość funkcji inter-
polującej dla pewnego
przedziału argumentów

Postać tabelki interpolacyjnej jest następująca. W wierszu


górnym każdy węzeł wypisujemy tyle razy, ile wynosi jego
krotność. W dolny wierszu pod xi znajdują się kolejno
wartość funkcji i wartości pochodnych od 1 do ki − 1:
x0 x0 ... x0 x1 ...
.
f (0) (x0 ) f (1) (x0 ) ... f (k0 −1) (x0 ) f (0) (x1 ) ...
Zauważmy, że jeśli wszystkie krotności wynoszą 1, to zadanie
sprowadza się do klasycznego zadania interpolacji. Zadanie
uogólnionej interpolacji wielomianowej nosi miano interpola-
cji Hermite’a.
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 83

4.1.4 Istnienie i jednoznaczność, jakość roz- 4.1.5 Problem zbieżności metod interpola-
wiązania cji klasycznej

Analiza zadań interpolacji wymaga odpowiedzi na następu- Rozpatrzmy obecnie sytuację, gdy przy ustalonym sposobie
jące pytania. interpolacji klasycznej zwykłej lub uogólnionej będziemy za-
gęszczać siatkę węzłów. Dokładniej, dany jest ciąg układów
1. Czy istnieje rozwiązanie zadania interpolacji?
węzłów z przedziału [a, b] takich, że
2. Kiedy zadanie ma jednoznaczne rozwiązanie?
• n–ty element ciągu ma składa się z n + 1 węzłów,
3. Jaka jest jakość interpolacji dla konkretnej funkcji f ?
• maksymalna odległość między
4. Czy dla wszystkich funkcji z przestrzeni F jakość roz-
– sąsiednimi węzłami,
wiązań zadania interpolacji jest zadowalająca?
– oraz skrajnymi węzłami i sąsiadującymi krańcami
5. Jak opisać przestrzeń F albo jej podzbiór, dla których
przedziału,
jakość rozwiązań zadania interpolacji jest zadowalająca?
dla k–go układu jest większa niż dla (k + 1)–go układu.
Ponieważ V jest przestrzenią liniową, to równania inter-
polacyjne zadania klasycznego sprowadzają się do układu
równań liniowych, w którym niewiadomymi są współczynniki układ 3 s s s s -
v w pewnej bazie przestrzeni V . W uogólnionym zadaniu a x0 x1 x2 x3 b
układ również będzie liniowy, o ile pochodne funkcji z prze-
strzeni V również należą do V . Wtedy odpowiedź na dwa
układ 2 s s s
pierwsze pytania sprowadza się do analizy zbioru rozwiązań
-
a x0 x1 x2 b
odpowiedniego układu równań liniowych. Zauważmy, że
warunkiem koniecznym jednoznaczności rozwiązania jest, by
liczba równań interpolacyjnych była nie mniejsza niż wymiar układ 1 s s -
przestrzeni V . a x0 x1 b
Jakość interpolacji klasycznej (zwykłej lub uogólnionej) dla Metoda interpolacji jest wyznaczona przez wybór przestrzeni
konkretnej funkcji f mierzymy przy użyciu pojęć reszty funkcji F , V , funkcji f ∈ F , oraz ciągu układu węzłów i
interpolacyjnej i błędu interpolacji. polega na wyznaczeniu ciągu funkcji vn ∈ V interpolujących
f w kolejnych układach węzłów.
Definicja 43 Niech B będzie domkniętym i ograniczo-
nym podzbiorem dziedziny funkcji f . Resztą interpola- Intuicja podpowiada, że im gęstsza siatka, tym jakość inter-
cyjną nazywamy funkcję polacji powinna być lepsza. Niemniej nie zawsze tak jest. W
opisanym przypadku jakość mierzymy pojęciem zbieżności.
r(x) = f (x) − v(x),
Definicja 44 Dany jest ciąg układów węzłów. Niech
gdzie v interpoluje f , a x należy do dziedziny f . vn ∈ V oznacza funkcję interpolującą f dla n-go układu
węzłów. Mówimy, że metoda interpolacji jest zbieżna jeśli
Błędem interpolacji na zbiorze B nazywamy
∀x∈[a,b] lim vn (x) = f (x).
R = sup |r(x)|. n→∞
x∈B
Mówimy, że metoda interpolacji jest zbieżna jednostajnie
na [a, b] jeśli ciąg vn zbiega jednostajnie do f na [a, b].
Zwykle zbiór B jest przedziałem domkniętym. Reszta inter-
polacyjna wyraża punktową odległość między f i v. Błąd Najbardziej „wartościowe” są metody zbieżne jednostajnie.
interpolacji wskazuje najgorsze zachowanie reszty interpola- Gwarantują one uzyskanie dobrej jakości interpolacji dla
cyjnej na zbiorze B. dostatecznie dużych n.

W prosty sposób pojęcia reszty i błędu interpolacji można


uogólnić dla interpolacji przedziałowej. Można przyjąć na 4.1.6 Pytania powtórzeniowe
przykład
r([x, x]) = sup sup (f (x) − y), 1. Sformułuj klasyczne zadanie interpolacji.
x∈[x,x] y∈I([x,x])
2. Sformułuj uogólnione klasyczne zadanie interpolacji.
Rε = sup |r([x, x])|.
[x,x]⊂B 3. Jakie pytania należy postawić analizując konkretne za-
danie interpolacji?
x−x<ε

Parametr ε mierzy „dokładność”, z jaką opisywany jest


4. Co to jest reszta i błąd interpolacji?
punkt dziedziny.
5. Jakie warunki musi spełniać ciąg układu węzłów?
Ocena jakości interpolacji dla całej przestrzeni F lub wska-
zanie takiej F , że jakość jest zadowalająca jest zadaniem 6. Co to znaczy, że metoda interpolacji jest zbieżna? Co to
najtrudniejszym i wymaga odrębnych analiz dla każdego znaczy, że metoda interpolacji jest zbieżna jednostajnie?
rodzaju interpolacji.
84 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

4.1.7 Ćwiczenia sprawdzające zrozumienie


tematu

Zadanie 150 Przeczytaj poniższy opis zadania inter-


polacji i wskaż
1. przestrzeń F funkcji „trudnych”,
2. przestrzeń V funkcji „łatwych”,
3. funkcję interpolowaną i interpolującą,
4. węzły interpolacyjne,
5. tabelkę interpolacyjną,
6. równania interpolacyjne.
Pewnego dnia dokonano 6 pomiarów temperatury. Pierw-
szy pomiar odbył się o godzinie 0:00 i następne dokładnie
co cztery godziny. Otrzymano kolejno poniższe wyniki.

5, 5◦ C, 4, 5◦ C, 4, 5◦ C, 4, 2◦ C, 5, 5◦ C, 8, 4◦ C.
Funkcję T (x) określającą wartość temperatury w ciągu
tego dnia przybliżono wielomianem w(x) stopnia co naj-
wyżej 5 w taki sposób, że wartości funkcji T (x) i wie-
lomianu w(x) dla argumentów odpowiadającym czasom
pomiarów są identyczne.

Zadanie 151 Przeczytaj poniższy opis zadania inter-


polacji i wskaż
1. przestrzeń F funkcji „trudnych”,
2. przestrzeń V funkcji „łatwych”,
3. funkcję interpolowaną i interpolującą,
4. węzły interpolacyjne i ich krotności,
5. tabelkę interpolacyjną,
6. równania interpolacyjne.
Obserwowano ruch ciała po torze będącym linią pro-
stą. Dokonano pięciu pomiarów odległości od punktu po-
czątkowego oraz prędkości chwilowych ciała w odstępach
sekundowych czasu. Położenie, w którym ciało znala-
zło się podczas pierwszego pomiaru przyjęto za punkt
początkowy. Otrzymano kolejno poniższe wyniki.

0mm 130mm 200mm 380mm 500mm


0, 15 m
s 0, 095 m
s 0, 11 m
s 0, 12 m
s 0, 14 m
s

Funkcję s(t) wyrażającą zależność odległości względem


punktu początkowego od czasu przybliżono wielomianem
p(t) stopnia co najwyżej 9 w taki sposób, że wartości
funkcji s(t) i wielomianu p(t) dla argumentów odpowia-
dającym czasom pomiarów są identyczne oraz wartości
pochodnej p0 (t) w czasach pomiaru są równe zanotowa-
nym prędkościom.
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 85

4.2 Interpolacja Lagrange’a interpolacyjne

w(xi ) = f (xi ) = v(xi ), i = 0, 1, . . . , n,


4.2.1 Sformułowanie zadania interpolacji
Lagrange’a to wielomian h = w − v byłby również elementem przestrzeni
Πn i nie byłby tożsamościowo równy zero. Zauważmy, że
h(xi ) = 0 dla i = 0, 1, . . . , n, zatem h ma n + 1 różnych
Interpolacja Lagrange’a jest zadaniem interpolacji klasycznej,
miejsc zerowych, co daje sprzeczność, bo niezerowy wielo-
które zostało sformułowane i rozwiązane około 200 lat temu.
mian stopnia co najwyżej n może mieć co najwyżej n miejsc
Dana jest przestrzeń F funkcji rzeczywistych („trudnych”),
zerowych.
które chcemy przybliżać oraz przestrzeń V = Πn wielomia-
nów stopnia co najwyżej n (przestrzeń funkcji „prostych”),
którymi będziemy przybliżali elementy f ∈ F . 4.2.3 Numeryczne rozwiązanie zadania in-
Wybierzmy f ∈ F . Niech x0 , x1 , . . . , xn oznaczają różne terpolacji Lagrange’a
punkty z dziedziny funkcji f , będziemy nazywali je węzłami.
Szukamy wielomianu w ∈ Πn spełniającego zależności Numerycznie rozwiązuje się to zadanie na dwa sposoby:1
f (xi ) = w(xi ) dla i = 0, 1, . . . , n, 1. zapisać wielomian interpolacyjny Lagrange’a w bazie
Lagrange’a i w niej wyznaczać wartości tego wielomianu,
które nazywane są równaniami interpolacyjnymi. Funkcję
2. przejść do bazy Newtona przy pomocy jednego z omó-
w nazywamy wielomianem Lagrange’a interpolującym f w
wionych algorytmów, następnie posługiwać się uogólnio-
węzłach x0 , x1 , . . . , xn .
nym schematem Hornera.
Dane: x0 , x1 , . . . , xn różne węzły
Przykład Dana jest funkcja f (x) = sin(x). Chcemy ją
f(x0 ), f(x1 ),. . ., f(xn ) wartości funkcji w węzłach
interpolować wielomianem Lagrange’a w punktach
Wynik: w ∈ Πn wielomian spełniający
równania f (xi ) = w(xi ) π π
x0 = − , x1 = 0, x2 = .
dla i = 0, 1, . . . , n 2 2
Zatem szukany wielomian w ∈ Π2 musi spełniać zależności
 π  π
w − = sin − = −1,
2 2
w(0) = sin(0) = 0,
π π
w = sin = 1.
2 2

Metoda 1. Rozwiązaniem jest

w(x) = −1 · l0 (x) + 0 · l1 (x) + 1 · l2 (x)

gdzie
Tradycyjnie dane zapisuje się w tabelce interpolacyjnej, której
górny wiersz zawiera węzły, a dolny wartości funkcji: 2  π
l0 (x) = x x − ,
π2 2
x0 x1 ... xn 4
. π  π
 
f (x0 ) f (x1 ) ... f (xn ) l1 (x) = − 2 x + x− ,
π 2 2
2  π 
l2 (x) = x x+ ,
4.2.2 Istnienie i jednoznaczność rozwiązań π2 2
czyli
Pierwsze pytanie, które należy postawić, to czy dla dowol- 2
w(x) = x.
nej funkcji f ∈ F istnieje wielomian Lagrange’a w ∈ Πn π
interpolujący f w węzłach x0 , x1 , . . . , xn . Odpowiedź jest Zauważmy, że otrzymaliśmy wielomian pierwszego stopnia.
twierdząca bo Jest on elementem przestrzeni Π2 .
Xn
w(x) = f (xi )li (x), 1 Teoretycznie można takich sposobów generować więcej. Wystarczy

i=0 równania interpolacyjne zapisać w postaci układu równań liniowych,


w którym niewiadomymi są współczynniki wielomianu w jakiejś bazie.
gdzie li są funkcjami Lagrange’a, spełnia warunki interpola- Następnie zastosować znany (np. Gaussa) algorytm rozwiązywania
cyjne w(xi ) = f (xi ) dla i = 0, 1, . . . , n. układów równań. Takie podejście ma dwie poważne wady — jest
kosztowne (Θ(n3 ) operacji, gdy układ jest pełny) i może być złej jakości,
Drugim pytaniem jest, czy taki wielomian jest wyznaczony gdy miara sko??ności bazy jest duża lub zadanie rozwiązywania układu
jednoznacznie. Znów odpowiedź jest pozytywna. Aby to równiań źle uwarunkowane.
udowodnić zastosujemy rozumowanie nie wprost. Gdyby ist-
niały dwa różne wielomiany w, v ∈ Πn spełniające równania
86 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Metoda 2. Zastosujmy algorytm różnic dzielonych dla Gdy z poważnych przyczyn nie można wybrać węzłów Cze-
węzłów równoodległych byszewa, to można poprzestawiać je stosując permutację van
π der Corput’a i zastosować algorytm pierwszy (z pomocniczą
− 2 −1
tablicą z) przejścia do bazy Newtona. W bazie tej stoso-
1
wać uogólniony algorytm Hornera do obliczania wartości
0 0 0
wielomianu.
1
π
2 1 duża liczba węzłów i z ważnych
przyczyn nie można wybrać
i zapiszmy w w bazie Newtona o węzłach − π2 i 0. Odległość węzłów Czebyszewa lub podobnych
między sąsiednimi węzłami wynosi π2 . Współczynniki w tej
bazie są równe
1 2 0 zastosować// permu-
b0 = 1, b1 = = , b2 = = 0, tację van der Corput’a
1!h π 2!h2
zatem
2 przejść do bazy Newtona
w(x) = −1 · N0 (x) + N1 (x) + 0 · N2 (x),
π algorytmem pierwszym
gdzie
π  π
N0 (x) = 1, N1 (x) = x + , N2 (x) = x x + , obliczać wartości wielomianu
2 2
uogólnionym algorytmem Hornera
czyli
2
w(x) = x.
π 
4.2.4 Reszta i błąd interpolacji
Jeśli węzłów jest mało (n 6 10), to najtaniej i z zadowalającą
jakością jest zastosować metodę drugą. Aby algorytm róż- Jakość interpolacji dla konkretnej funkcji f mierzymy przy
nic dzielonych miał dobrą jakość, to węzły należy najpierw pomocy pojęć reszty interpolacyjnej i błędu interpolacji.
posortować rosnąco lub malejąco. Przypomnijmy ich definicję.

mała liczba węzłów


Definicja 45 Niech f będzie funkcją interpolowaną, a
w wielomianem Lagrange’a ją interpolującym.
Resztą interpolacyjną nazywamy funkcję
uporządkować je
r(x) = f (x) − w(x),
rosnąco lub malejąco
gdzie x należy do dziedziny f .
zastosować algorytm Błędem interpolacji na przedziale [a, b] nazywamy liczbę
różnic dzielonych
R = sup |r(x)|,
x∈[a,b]

obliczać wartości wielomianu zakładamy, że [a, b] jest podzbiorem dziedziny funkcji f .


uogólnionym algorytmem Hornera

Reszta interpolacyjna wyraża punktową odległość między f


Gdy węzłów jest dużo powinniśmy użyć węzłów Czebyszewa.
i w. Błąd interpolacji wskazuje najgorsze zachowanie reszty
Wtedy skośność bazy Lagrange’a jest niewielka. Należy po-
interpolacyjnej na przedziale [a, b]. Zauważmy, że
zostać w tej bazie i zastosować algorytm obliczania wartości
wielomianu w tej bazie. R = krk[a,b] ,
duża liczba węzłów gdzie k · ka,b oznacza normę supremum na przedziale [a, b].
i dobra jakość Czasami będziemy pisać kf k zamiast kf k[a,b] , o ile z kontek-
stu wiadomo, o jaki przedział chodzi.
W dalszej części będziemy często odnosić się do przestrzeni
wybrać węzły Czebyszewa funkcji ciągłych o dziedzinie [a, b] posiadających pewną ilość
ciągłych pochodnych. Dlatego wprowadzam poniższe ozna-
czenie.
pozostać Oznaczenia Przez C n [a, b] będziemy oznaczać prze-
w bazie Lagrange’a
strzeń rzeczywistych funkcji ciągłych o dziedzinie [a, b]
posiadających n ciągłych pochodnych.
obliczać wartości wielomianu Zapis f ∈ C n [a, b] oznacza, że funkcja ma dziedzinę [a, b],
algorytmem dla bazy Lagrange’a wartości rzeczywiste i posiada n ciągłych pochodnych.
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 87

4.2.5 Oszacowania reszty i błędu dla funk- Można zastanawiać się, czy wyprowadzone oszacowanie na
cji z przestrzeni C n+1 [a, b] błąd interpolacji nie jest zbyt „zgrubne”, czyli czy rzeczy-
wiście prawa strona oddaje zachowanie błędu interpolacji.
Poniższe twierdzenia pozwalają oszacować wartości reszty i Okazuje się, że istnieją funkcje (nietrywialne), dla których
błędu interpolacji. Wszystkie dotyczą funkcji, które posia- to oszacowanie jest dokładne.
dają tyle ciągłych pochodnych, ile jest węzłów i tylko dla Twierdzenie 16 Dany jest przedział [a, b] zawierający
takich funkcji można je stosować. Aby skrócić zapis, w tym wszystkie węzły x , x , . . . , x . Dla dowolnej liczby M > 0
0 1 n
punkcie k · k oznacza zawsze normę supremum na [a, b]. istnieje funkcja f ∈ C n+1 [a, b] taka, że
Twierdzenie 15 (o reszcie interpolacyjnej) Dany
jest przedział [a, b] zawierający punkt x i wszystkie kf (n+1) k = M
węzły interpolacyjne x0 , x1 , . . . , xn . Załóżmy, że
oraz
f ∈ C n+1 [a, b]. kf (n+1) k
R= kNn+1 k,
Wtedy istnieje punkt ηx ∈ [a, b] zależny od x taki, że (n + 1)!
n
f (n+1) (ηx )
Y
r(x) = Nn+1 (x), gdzie Nn+1 (x) = (x − xi ).
(n + 1)! i=0

n
gdzie Nn+1 (x) =
Y
(x − xi ). Funkcję, o której mowa w twierdzeniu można wskazać — jest
i=0
nią np.
xn+1
f (x) = M .
Z twierdzenia wiadomo, że punkt ηx istnieje, ale nie ma żad- (n + 1)!
nych wskazówek, jak go obliczyć. Znamy jedynie przedział,
Następne twierdzenie pozwala oszacować wielkość błędu in-
do którego należy. Zwróćmy uwagę, że dla każdego x ∈ [a, b]
terpolacji bez obliczania kNn+1 k. Dokładne oszacowanie
może być on inny.
kNn+1 k często nie jest zadaniem łatwym. W twierdzeniu
Zauważmy, że dla dowolnego x ∈ [a, b] zachodzi nierówność zastosowano dość „grube” oszacowanie, ale za to dające się
łatwo policzyć. Występujące założenie o uporządkowaniu
|f (n+1) (ηx )| 6 sup |f (n+1) (y)| = kf (n+1) k
y∈[a,b] węzłów nie jest istotne (funkcja Nn+1 nie zmieni się, gdy
przestawimy węzły) — pozwala jedynie w zgrabny sposób
zatem wyrazić użytą tam wielkość h. Oznacza ona długość naj-
|f (n+1) (ηx )| dłuższego przedziału wyznaczonego przez sąsiednie na osi
|r(x)| = |Nn+1 (x)| liczbowej węzły. Istotne jest natomiast założenie, że prze-
(n + 1)!
dział [a, b] jest wyznaczony przez skrajne węzły.
kf (n+1) k
6 |Nn+1 (x)| .
(n + 1)! Twierdzenie 17 Dany jest przedział [a, b] i węzły inter-
polacyjne a = x0 < x1 < . . . < xn = b. Załóżmy, że
Zauważmy dalej, że dla dowolnego x ∈ [a, b] zachodzi f ∈ C n+1 [a, b].
|Nn+1 (x)| 6 sup |Nn+1 (y)| = kNn+1 k Niech
y∈[a,b] h= max (xi+1 − xi ).
i=0,1,...,n−1
więc
kf (n+1) k Wtedy
|r(x)| 6 kNn+1 k.
(n + 1)! n
n!hn+1 Y
Ponieważ prawa strona powyższej nierówności nie zależy od kNn+1 k 6 , gdzie Nn+1 (x) = (x − xi )
4
x, czyli jest wspólnym ograniczeniem dla wszystkich x z i=0

przedziału [a, b], to i stąd


kf(n+1)
k kf (n+1) k n+1
R = sup |r(x)| 6 kNn+1 k. R6 h .
x∈[a,b] (n + 1)! 4(n + 1)

Poczynione spostrzeżenia podsumowuje poniższy wniosek.


Dotychczas węzły traktowaliśmy jako z góry dane. Zdarza
Wniosek 1 Dany jest przedział [a, b] zawierający wszyst- się, że sposób ich wyboru zależy od osoby implementującej al-
kie węzły interpolacyjne x0 , x1 , . . . , xn . Załóżmy, że gorytm. Wtedy powstaje pytanie, które są najlepsze. Pełna
f ∈ C n+1 [a, b]. odpowiedź zależy zarówno od funkcji f , jak i przedziału
Wtedy [a, b] i nie da jej się wyrazić w sposób prosty analitycznie.
kf (n+1) k Ponadto f nie musi być znana.
R6 kNn+1 k,
(n + 1)! Zastanówmy się więc, przy jakim wyborze węzłów oszaco-
n wanie z Wniosku 1 jest najlepsze. Po prawej jego stronie
jedynie czynnik kNn+1 k zależy od węzłów, zatem szukamy
Y
gdzie Nn+1 (x) = (x − xi ).
i=0
88 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

węzłów, dla których jest on najmniejszy. Okazuje się, że Posługując się Twierdzeniem 17 otrzymalibyśmy gorsze osza-
rozwiązaniem są węzły Czebyszewa. cowanie:
Twierdzenie 18 Dany jest przedział [a, b] zawierający kf (3) k  π 3 π3
węzły interpolacyjne x0 , x1 , . . . , xn . Niech R6 = ≈ 0, 32.
4·3 2 12 · 8
n
Gdybyśmy wybrali węzły Czebyszewa w przedziale [a, b],
Y
Nn+1 (x) = (x − xi ). √ √
i=0 czyli x0 = − 4 , x1 = 0, x2 = 4 , to z Wniosku 2
π 3 π 3

otrzymalibyśmy oszacowanie
Wielkość
kNn+1 k kf (3) k  π 3 1  π 3
R6 = ≈ 0, 16.
jest najmniejsza dla węzłów Czebyszewa w [a, b] i jego 22 · 3! 2 24 2 
wartością jest wtedy
n+1
1

b−a
. 4.2.6 Zjawisko Rungego
2n 2
Rozważmy funkcję f (x) = 1
1+8x2 o wykresie
Podkreślmy jeszcze raz, że wcale nie minimalizujemy błędu
interpolacji na [a, b], lecz jedynie jego oszacowanie. Przypo-
mnijmy, że wybór węzłów Czebyszewa jest dobry również z
tego powodu, że daje małą miarę skośności bazy Lagrange’a.
Znając wartość kNn+1 k możemy zapisać oszacowanie błędu
interpolacji dla węzłów Czebyszewa.
Wniosek 2 Dany jest przedział [a, b]. Załóżmy, że
x0 , x1 , . . . , xn są węzłami Czebyszewa w [a, b] oraz in-
terpolujemy w nich funkcję f ∈ C n+1 [a, b].
Wtedy Będziemy ją interpolować przy użyciu węzłów, które są
n+1
kf (n+1) k

b−a
R6 n . 1. węzłami równoodległymi dla n = 4, 8, 16,
2 (n + 1)! 2
2. węzłami Czebyszewa dla n = 4, 8, 16.

Przykład Rozpatrzmy funkcję f (x) = sin(x) oraz węzły Za każdym razem wyznaczany jest błąd interpolacji w prze-
x0 = − π2 , x1 = 0, x2 = π2 . Oszacujmy wartość błędu dziale [−1, 1], czyli wielkość R = supx∈[−1,1] |r(x)|.
interpolacji w przedziale [a, b] = [− π2 , π2 ]. Ponieważ Pięć węzłów równoodległych (n = 4)
f 0 (x) = cos(x),
f 00 (x) = − sin(x),
f (3) (x) = − cos(x),

to
kf (3) k = 1.
Z Wniosku 1
kf (3) k 1
R6 kN3 k = kN3 k,
3! 6
Dziewięć węzłów równoodległych (n = 8)
2
gdzie N3 = x(x2 − π4 ). Obliczmy kN3 k, czyli znajdźmy
maksimum globalne funkcji |N3 | na zbiorze [a, b]. W tym
celu wyznaczmy miejsca zerowe w przedziale [a, b] funkcji
N30 . Ponieważ
√  √ 
π2 π 3 π 3

N30 (x) = 3x2 − =3 x− x+
4 6 6
√ √
to jej miejscami zerowymi π 6 3 i − π 6 3 . Wartość funkcji
3√
|N3 | jest w obu punktach równa i wynosi π36 3. Wartości
3√
na brzegach przedziału wynoszą 0, zatem kN3 k = π36 3 i
stąd
π3 √
R6 3 ≈ 0, 25.
216
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 89

Siedemnaście węzłów równoodległych (n = 16) Siedemnaście węzłów Czebyszewa (n = 16)

Na ostatnim wykresie z racji na zbyt małą skalę wydaje


się, że f i wielomian interpolacyjny są równe. Tak nie jest.
Oto tabela z przybliżonymi wartościami błędów dla węzłów
Wbrew intuicji, zwiększanie liczby węzłów powoduje po- Czebyszewa.
gorszenie jakości interpolacji. Duża reszta interpolacyjna n supx∈[−1,1] |r(x)| supx∈[− 34 , 43 ] |r(x)|
nie dotyczy na szczęście całego przedziału, lecz tylko jego 4 1, 8 · 10−1 1, 8 · 10−1
krańców. W tabeli zamieszczam przybliżone wartości błędu 8 4, 2 · 10−2 4, 2 · 10−2
liczonego na przedziale [−1, 1] oraz [− 34 , 34 ]. 16 2, 7 · 10−3 2, 7 · 10−3
n supx∈[−1,1] |r(x)| supx∈[− 34 , 34 ] |r(x)| 32 1, 1 · 10 −5
1, 1 · 10−5
64 1, 6 · 10 −10
1, 6 · 10−10
4 2, 8 · 10−1 2, 6 · 10−1
8 3, 3 · 10−1 7, 1 · 10−2 Dobra jakość blisko krańców przedziału jest zasługą tego, że
16 9, 2 · 10 −1
1, 4 · 10−2 węzły Czebyszewa są tam gęściej rozmieszczone niż w okolicy
32 1, 3 · 101 8, 0 · 10−3 0. Proszę zwrócić uwagę, że nawet w przedziale [− 43 , 34 ] błąd
64 4, 6 · 10 3
2, 6 · 10 −6 jest istotnie mniejszy (dla n > 16) niż w przypadku węzłów
równoodległych.
Zjawisko pogarszania się jakości interpolacji, które obserwu-
jemy przy krańcach przedziału interpolacji, przy wzroście
liczby węzłów (zagęszczających się) nosi miano zjawiska Run- 4.2.7 Problem zbieżności
gego. Zauważmy, że węzły Czebyszewa pozwalają znacznie
zredukować błąd. Powstają obecnie pytania:
Pięć węzłów Czebyszewa (n = 4) 1. Czy dla danej funkcji f zwiększanie liczby węzłów (z
równoczesnym ich zagęszczeniem) poprawia jakość in-
terpolacji Lagrange’a?
2. Czy dla danej funkcji f można tak dobrać sposób zwięk-
szania liczby węzłów, by jakość interpolacji Lagrange’a
się poprawiała?
3. Czy istnieje „uniwersalny” (czyli niezależny od funkcji)
sposób zwiększania liczby węzłów, by jakość interpolacji
Lagrange’a się poprawiała?
Poniższe twierdzenie daje odpowiedź negatywną na pytanie
3. Zwróćmy uwagę, że dotyczy ono zbieżności jednostajnej.
Dziewięć węzłów Czebyszewa (n = 8)
Twierdzenie 19 Dla dowolnego ciągu układów węzłów
istnieje funkcja ciągła, dla której metoda interpolacji La-
grange’a wyznaczona przez ten ciąg nie jest zbieżna jed-
nostajnie.

Niemniej, jeśli zawęzimy klasę funkcji do tak zwanych funkcji


całkowitych,2 to odpowiedź się zmienia.
Twierdzenie 20 Dla dowolnej funkcji całkowitej i do-
wolnego ciągu układów węzłów metoda interpolacji La-
grange’a wyznaczona przez ten ciąg jest zbieżna jedno-
stajnie.
2 Funkcjecałkowite są to funkcje, które są nieskończenie wiele razy
różniczkowalne, ale w sensie silniejszym, bo zespolonym. Klasa ta
zawiera wiele użytecznych w praktyce funkcji.
90 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Twierdzenie powyższe jest również spełnione dla klasy szer- Zauważmy, że


szej, do której należą funkcje rozwijalne w otoczeniu punktu
f (x) − wn (x) = (f (x) − wn∗ (x)) + (wn∗ (x) − wn (x)).
2 w nieskończony szereg Taylora o promieniu zbieżności
a+b

większym niż e(b−a) .


2 Ponieważ wn interpoluje f w ustalonych węzłach, a wn∗
Kolejne twierdzenie dotyczy pytania 2. interpoluje sam siebie, to
Twierdzenie 21 Dla dowolnej funkcji ciągłej istnieje n
X
ciąg układów węzłów, dla którego metoda interpolacji wn (x) = f (xi )li (x),
Lagrange’a jest zbieżna jednostajnie. i=0
Xn
wn∗ (x) = wn∗ (xi )li (x),
Mimo odpowiedzi pozytywnej twierdzenie to ma niewielkie
i=0
znaczenie praktyczne. Nie istnieje łatwa metoda wyznacza-
nia ciągu układów, o którym mowa w twierdzeniu. Ponadto
dla zastosowań ważne jest, by nie tylko uzyskać zbieżność, stąd
ale by zbieżność była dostatecznie szybka. n
X n


X
Pozostaje odpowiedź na pytanie pierwsze. Tym razem mamy |wn∗ (x) − wn (x)| = wn∗ (xi )li (x) − f (xi )li (x)


daną zarówno funkcję f jak i ciąg układów węzłów. Odpo-

i=0 i=0

wiedź nie jest jednoznaczna — dla pewnych funkcji (np. tych



X n
z Twierdzenia 20) można dla żądanej jakości zawsze znaleźć = (wn∗ (xi ) − f (xi )) li (x)


n, by ją zagwarantować. Są też ciągi układów i funkcje „nie-

i=0
n
dobrane” do siebie i wtedy jakość może nawet się pogarszać X
6 |wn∗ (xi ) − f (xi )| · |li (x)|
wraz ze wzrostem n — tak jak przy zjawisku Rungego.
i=0
Ostatnie twierdzenie w tym punkcie jeszcze raz uwypukli n
X
zalety węzłów Czebyszewa. Przedstawione zostanie ono w 6 kwn∗ − f k · |li (x)|
postaci ogólnej — dla dowolnych węzłów, a wcześniej omówię i=0
n
używane tam pojęcie wielomianu optymalnego. X
= kwn∗ − f k |li (x)|
Przypomnę najpierw znane z analizy matematycznej twier- i=0
dzenie Weierstrassa. = kwn∗ − f kΛn (x),
Twierdzenie 22 (Weierstrassa) Dla dowolnej funkcji gdzie Λn jest tak zwaną funkcją Lebesgue’a
ciągłej f : [a, b] → R istnieje ciąg wielomianów takich, że
zbiega on jednostajnie do f . n
X
Λn (x) = |li (x)|.
Daje ono gwarancje, że wielomiany mogą służyć do dobrego i=0

przybliżania dowolnej funkcji ciągłej. Nie jest jednak ono Otrzymujemy więc, że
podstawą do wyprowadzenia praktycznych metod znalezie-
nia tych wielomianów. Poza tym zastosowania narzucają kwn∗ − wn k 6 kwn∗ − f k · kΛn k
ograniczenia na dopuszczalny stopień wielomianów.
oraz
Można podejść do zagadnienia przybliżania funkcji przez
wielomian w inny sposób. Ustalmy teraz funkcję f i prze- kf − wn k = k(f − wn∗ ) + (wn∗ − wn )k
dział [a, b]. Wśród wszystkich wielomianów z przestrzeni Πn
6 kf − wn∗ k + kwn∗ − wn k
będziemy szukać wielomianu, który najlepiej przybliża f w
sensie normy supremum na przedziale [a, b]. Można udowod- 6 kf − wn∗ k + kwn∗ − f k · kΛn k
nić istnienie takiego wielomianu i są nawet praktyczne me- = kf − wn∗ k(1 + kΛn k).
tody jego wyznaczenia (lub przynajmniej jego przybliżenia).3

Wielomian ten nazywamy n-tym wielomianem optymalnym Uzyskany wynik jest treścią ostatniego twierdzenia.
dla f . Oznaczmy go przez wn∗ , zatem spełnia on Twierdzenie 23 Niech f : [a, b] → R będzie dowolną
kf − wn∗ k = inf kf − vk. funkcją ciągłą, wn wielomianem interpolującym f w wę-
v∈Πn złach x0 , x1 , . . . , xn , a wn∗ n-tym wielomianem optymal-
Ustalmy teraz węzły x0 , x1 , . . . , xn i rozpatrzmy wielomian nym dla f . Wówczas
wn z przestrzeni Πn , który interpoluje f w tych węzłach.
Występuje on oczywiście wśród wielomianów, po których kf − wn k 6 kf − wn∗ k(1 + kΛn k),
jest liczone infimum, zatem
gdzie Λn jest funkcją Lebesgue’a
kf − wn k > kf − wn∗ k. n
X
Powstaje pytanie: jak dużo razy wielkość kf − wn k może Λn (x) = |li (x)|.
być większa od kf − wn∗ k? i=0

3 O tych metodach będzie mowa później, przy omawianiu metod

aproksymacji, są one jednak kosztowne.


Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 91

Wiemy zatem, że norma kf −wn k jest co najwyżej (1+kΛn k) Funkcje Lebesgue’a dla węzłów Czebyszewa
razy większa niż kf − wn∗ k. Bez znajomości własności funkcji
Λn trudno powiedzieć, czy to dużo, czy mało. Dokład-
niej funkcje Lebesgue’a zostaną przedstawione w następnym
punkcie. Dla węzłów Czebyszewa zachodzi nierówność:
2
kΛn k 6 ln n + 4.
π
Wynika z niej, że jeśli wn interpoluje f w węzłach Czeby-
szewa, to
2
 
kf − wn k 6 kf − wn k 5 + ln n .

π
Zatem dla n 6 10 wielomian interpolujący f w węzłach
Czebyszewa jest co najwyżej 5, 5 razy gorszy niż wielomian Okazuje się, że przy węzłach równoodległych wartości funk-
optymalny, dla n 6 100 co najwyżej 8 razy gorszy, a dla cji szybko wzrastają wraz ze wzrostem n — dotyczy to
n 6 1000 co najwyżej 9, 4 razy.4 Można powiedzieć, że jest głównie krańców przedziałów. Węzły Czebyszewa powodują
prawie optymalny. Nie musi to wcale oznaczać zbieżności dużo wolniejszy i znacznie równomierniejszy wzrost warto-
kf − wn k do zera, ale zobaczymy później, że założenie o ści. Poniższe twierdzenie potwierdza złe własności węzłów
posiadaniu przez funkcję jednej ciągłej pochodnej wystarczy, równoodległych i dobre Czebyszewa.
by zagwarantować zbieżność, choć niezbyt szybką.
Twierdzenie 24 Dany jest przedział [a, b] oraz węzły
x0 , x1 , . . . , xn należące do niego.
4.2.8 Własności funkcji Lebesgue’a 1. Jeśli węzły są równoodległe, to
Zacznijmy od narysowania przykładowych wykresów funkcji kΛn k > Ce 2 ,
n

Lebesgue’a
n
X gdzie C jest pewną stałą.
Λn (x) = |li (x)|
i=0 2. Dla węzłów Czebyszewa
dla wybranych węzłów x0 , x1 , . . . , xn z przedziału [−1, 1]. 2
kΛn k 6 ln n + 4.
Funkcje Lebesgue’a dla węzłów równoodległych π

4.2.9 Jeszcze raz o mierze skośności bazy


Lagrange’a

Posiadając wiedzę o interpolacji Lagrange’a łatwo jest opisać


miarę skośności dla bazy Lagrange’a w terminach funkcji
Lebesguea. Zupełnie możliwe jest napisanie programu, który
dla zadanych węzłów wielkość tę wyznaczy.
Przypomnijmy, że miara skośności bazy Lagrange’a wyraża
się wzorem
Pn
k i=0 |ai | · |li (x)| k
C({li }, [a, b], n) = sup Pn ,
ai ∈R k i=0 ai li (x)k
i=0,1,...,n

gdzie k · k oznacza normę supremum na odcinku [a, b]. Ponie-


waż liczymy supremum po wszystkich możliwych zestawach
współczynników ai , to wiemy, że będzie ono większe lub
równe niż ułamek stojący po prawej stronie obliczony dla
konkretnych współczynników, powiedzmy wszystkich rów-
nych 1: Pn
k i=0 |li (x)| k
C({li }, [a, b], n) > Pn .
k i=0 li (x)k
4 Autorzy wykładów z Metod Numerycznych na mediawiki.ilab.pl Można udowodnić, że dla dowolnego x zachodzi
zamieszczają oszacowanie nieco lepsze:
n
2
  X

kf − wn k 6 kf − wn k 2+
π
ln(n + 1) . li (x) = 1,
i=0
92 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Pn Pn
więc k i=0 li (x)k = 1. Zauważmy, że i=0 |li (x)| to funkcja
Twierdzenie 26 (Jacksona) Niech s ∈ {2, 3, . . . , n}
Lebesgue’a, którą oznaczamy przez Λn . Zatem
oraz wn∗ będzie n-tym wielomianem optymalnym dla f .
C({li }, [a, b], n) > kΛn k. Wtedy

6 ω(f, 2n )
 b−a
dla f ∈ C[a, b],
Z
Pdrugiej strony dla dowolnych współczynników ai wielomian

n kf −wn k 6 3 n kf k
∗ b−a 0
dla f ∈ C 1 [a, b],
a l
i=0 i i (x) jest wielomianem interpolującym tabelkę  (s−1)s−1 b−a s (s)
6s (s−1)! kf k dla f ∈ C s [a, b],

n
x0 x1 ... xn
,
a0 a1 ... an gdzie ω(f, h) tzw. moduł ciągłości funkcji określony wzo-
więc w węźle xi przyjmuje wartość ai , stąd rem
n ω(f, h) = sup |f (x + t) − f (x)|.
t∈(0,h)
X [x,x+t]⊂[a,b]
ai li (x) > sup |ai |.


i=0,1,...,n
i=0
Wykorzystamy obecnie Twierdzenie 23, by w przypadku
Ponadto dla dowolnego x mamy funkcji niekoniecznie posiadających n + 1 ciągłych pochod-
n n   nych móc podać oszacowanie błędu interpolacji przy węzłach
x0 , x1 , . . . , xn .
X X
|ai | · |li (x)| 6 sup |ai | · |li (x)|
i=0,1,...,n
i=0 i=0
 n
X Twierdzenie 27 Niech f : [a, b] → R będzie dowolną
6 sup |ai | |li (x)| funkcją ciągłą, a wn wielomianem interpolującym f w
i=0,1,...,n
i=0 węzłach x0 , x1 , . . . , xn z przedziału [a, b]. Wówczas
 
= sup |ai | Λn (x). 1. jeśli f ∈ C[a, b], to
i=0,1,...,n  
b−a
Stąd R 6 6 ω f, (1 + kΛn k),
2n
n  
X

|ai | · |li (x)| 6

sup |ai | kΛn k 2. jeśli f ∈ C 1 [a, b], to
i=0,1,...,n
i=0
b−a 0
oraz R63 kf k(1 + kΛn k),
n
C({li }, [a, b], n) 6 kΛn k.
Otrzymane oszacowania górne i dolne pozwalają sformułować 3. jeśli s ∈ {2, 3, . . . , n} i f ∈ C s [a, b], to
następujące twierdzenie. s
(s − 1)s−1 b − a

Twierdzenie 25 Miara skośności bazy Lagrange’a jest R 6 6s kf (s) k(1 + kΛn k).
(s − 1)! n
równa normie supremum z funkcji Lebesgue’a:

C({li }, [a, b], n) = kΛn k[a,b] .


Zauważmy, że gdy f ∈ C 1 [a, b] oraz dokonamy interpolacji
w n + 1 węzłach Czebyszewa, to z punktu 2 mamy
Własności funkcji Lebesque’a zostały przedstawione wcze- 5 + π2 ln n
śniej. Algorytm, który oblicza wartości funkcji Λn można R 6 3(b − a)kf 0 k · .
n
skonstruować na bazie algorytmu obliczającego wartości wie-
lomianu zapisanego w bazie Lagrange’a — wystarczy w Ponieważ prawa strona nierówności dąży do 0 przy n → ∞,
odpowiednich miejscach wstawić moduły. Obliczenie przy- to metoda interpolacji Lagrange’a przy wyborze węzłów
bliżenia normy supremum może polegać obliczaniu wartości Czebyszewa jest zbieżna jednostajnie dla funkcji z C 1 [a, b].
funkcji na gęstej siatce i wyborze największej z nich.

4.2.11 Pytania powtórzeniowe


4.2.10 Błędy interpolacji dla funkcji nieko-
niecznie posiadających n+1 ciągłych 1. Sformułuj zadanie interpolacji Lagrange’a.
pochodnych 2. Czy dla dowolnej funkcji rzeczywistej istnieje wielomian
interpolacyjny Lagrange’a? Uzasadnij.
Poniższe twierdzenie pozwala oszacować normę kf − wn∗ k dla
funkcji f , jeśli wiemy, że należy ona do przestrzeni C s [a, b]. 3. Czy wielomian interpolacyjny Lagrange’a jest wyzna-
To z kolei umożliwi podanie pewnych ograniczeń górnych czony jednoznacznie? Uzasadnij.
błędu interpolacji. 4. Jakie algorytmy do wyznaczenia wielomianu interpola-
cyjnego Lagrange’a i obliczania jego wartości najlepiej
stosować, gdy liczba węzłów jest niewielka?
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 93

5. Jakie algorytmy do wyznaczenia wielomianu interpola-


cyjnego Lagrange’a i obliczania jego wartości najlepiej Zadanie 154 Funkcja ciągła f jest zadana tabelką
stosować, gdy liczba węzłów jest duża, ale możemy wy-
brać rozmieszczenie węzłów? 7 8 9 10
.
3 1 1 9
6. Jakie algorytmy do wyznaczenia wielomianu interpola-
cyjnego Lagrange’a i obliczania jego wartości najlepiej Oblicz przybliżenie f (9, 5) używając interpolacji La-
stosować, gdy liczba węzłów jest duża i są rozmieszczone grange’a. Do wyznaczenia wielomianu interpolacyjnego
równoodlegle? użyj algorytmu różnic dzielonych.
7. Podaj definicję błędu i reszty interpolacyjnej w przy-
padku interpolacji Lagrange’a. Jaka można wyrazić 4.2.13 Zadania
błąd interpolacji przy pomocy normy?
8. Co oznaczają symbole C n [a, b], f ∈ C n [a, b]? Zadanie 155 Niech n będzie liczbą całkowitą więk-
szą od zera. Czy wielomian interpolacyjny Lagrange’a
9. Podaj twierdzenie o reszcie interpolacyjnej w przypadku
oparty na n + 1 węzłach musi być stopnia n?
funkcji z przestrzeni C n+1 [a, b] oraz wniosek z niego
płynący dotyczący oszacowania błędu interpolacji.
10. Podaj twierdzenie dotyczące oszacowania kNn+1 k oraz Zadanie 156 Danych jest n + 1 różnych punktów
błędu interpolacji w przypadku funkcji z przestrzeni x0 , x1 , . . . , xn na osi rzeczywistej. Definiujemy
C n+1 [a, b] oraz dowolnych węzłów takich, że przedział, n
dla którego liczony jest błąd interpolacji jest wyznaczony
Y x − xj
lk (x) = , k = 0, 1, . . . , n.
przez skrajne węzły. j=0
xk − xj
j6=k

11. Podaj twierdzenie dotyczące oszacowania kNn+1 k dla


najlepszych węzłów. Udowodnij, że dla p ∈ {1, 2, . . . , n} oraz dowolnego
x ∈ R zachodzi
12. Podaj twierdzenie dotyczące oszacowania błędu inter-
polacji w przypadku węzłów Czebyszewa. n
X
xpk lk (x) = xp .
13. Opisz, co to jest zjawisko Rungego. k=0

14. Podaj dwa twierdzenia o zbieżności jednostajnej metody


interpolacji Lagrange’a dla funkcji ciągłych.
15. Podaj twierdzenie o zbieżności jednostajnej metody in- Zadanie 157 Danych jest n + 1 różnych punktów
terpolacji Lagrange’a dla funkcji całkowitych. x0 , x1 , . . . , xn na osi rzeczywistej. Definiujemy

16. Podaj twierdzenie Weierstrassa. Yn


x − xj
lk (x) = , k = 0, 1, . . . , n.
17. Co to są funkcje Lebesgue’a? Podaj twierdzenie doty- j=0
xk − xj
czące oszacowań normy tych funkcji dla węzłów równo-
j6=k

odległych i Czebyszewa. Udowodnij, że dla p = n + 1


18. Podaj twierdzenie ustalające związek pomiędzy miarą n
skośności bazy Lagrange’a i funkcją Lebesgue’a.
X
xpk lk (0) = (−1)n x0 · x1 · . . . · xn
k=0

4.2.12 Ćwiczenia sprawdzające zrozumie-


nie tematu
Zadanie 158 Wielomian

Zadanie 152 Rozpatrzmy zadanie interpolacji La- w(x) = (e − 1)x + 1


grange’a funkcji f (x) = log2 (x) w węzłach x0 = 1,
x1 = 2, x2 = 16. Zapisz to zadanie w postaci tabelki jest wielomianem Lagrange’a interpolującym funkcję
interpolacyjnej. Napisz równania interpolacyjne. f (x) = ex w węzłach x0 = 0, x1 = 1.
1. Wyznacz resztę interpolacyjną.
Zadanie 153 Dana jest tabelka interpolacyjna dla 2. Oblicz wartość reszty interpolacyjnej w punkcie
funkcji ciągłej f . x = 12 .
2 3 4 5 3. Oblicz błąd interpolacji na przedziale [0, 1].
.
1 0 0 0 4. Oblicz błąd interpolacji na przedziale [−1, 2].
Zapisz wielomian interpolacyjny w bazie Lagrange’a i
użyj go do obliczenia przybliżenia f (2, 5).
94 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Zadanie 159 Niech węzły x0 , x1 oraz x2 będą miej- Zadanie 166 Dana są liczby λ > 0 oraz ε > 0. Rozpa-
scami zerowymi trzeciego wielomianu Czebyszewa. trzmy zadanie interpolacji Lagrang’e funkcji f (x) = eλx ,
Funkcję w węzłach Czebyszewa. Podaj algorytm wyznaczania
możliwie najmniejszej liczby węzłów, tak by błąd in-
 
πx
f (x) = sin √
3 terpolacji na przedziale x ∈ [−1, 1] był mniejszy od
interpolujemy w tych węzłach. Podaj oszacowanie z ε.
góry wielkości |r( 12 )| stosując twierdzenie o reszcie inter-
polacyjnej. Zadanie 167 Dana jest funkcja f ∈ C 2 [a, b]. Prze-
dział [a, b] podzielono na N równych części przy pomocy
punktów
Zadanie 160 Z jaką dokładnością można policzyć
ln 100, 5 stosując interpolację Lagrange’a i mając dane x0 = a,
wartości ln 100, ln 101, ln 102, ln 103? Podaj oszacowanie
z góry i z dołu wielkości |r(100, 5)| stosując twierdzenie xj = hj + x0 ,
o reszcie interpolacyjnej.
gdzie h = N1 (b − a) oraz j = 1, . . . , N . Używając punk-
tów xj jako węzłów przybliżono funkcję f łamaną. Osza-
Zadanie 161 Znajdź wielomian interpolujący funkcję cuj błąd interpolacji na przedziale [a, b] w zależności od
h i normy supremum pochodnych funkcji f .
f (x) = sin(π(2x + 1))

w trzech równoodległych węzłach na przedziale [− 12 , 0]. Zadanie 168 Napisz algorytm wyznaczający przybli-
Korzystając z twierdzenia o reszcie interpolacyjnej osza- żenie kΛn k[a,b] przy zadanych węzłach z przedziału [a, b].
cuj z góry |r(0)| oraz |r(− 31 )|. Porównaj oszacowania z Funkcja Λn oznacza funkcję Lebesgue’a daną wzorem
dokładnymi

wartościami reszty. Skorzystaj z przybliże- n
nia 23 ≈ 0, 866.
X
Λn (x) = |li (x)|.
i=0

Zadanie 162 Wyznacz wielomian co najwyżej drugiego


stopnia interpolujący funkcję f (x) = sin 2x w trzech
węzłach Czebyszewa z przedziału [−1, 1]. Oszacuj z Zadanie 169 Funkcje
góry błąd interpolacji dla x ∈ [−1, 1]. (
cos x dla x ∈ [− π2 , 0],
f (x) =
1 dla x ∈ [0, π2 ],
Zadanie 163 Czy funkcję f (x) = cos 2x można przybli- (
żyć wielomianem interpolacyjnym Lagrange’a L stopnia cos x dla x ∈ [− π2 , 0],
g(x) =
nie większego niż n tak, aby 1 − π x dla x ∈ [0, π2 ]
2

sup |f (x) − L(x)| 6 0, 01? interpolujemy w przedziale [− π2 , π2 ] wielomianami La-


x∈[0,2] grange’a w węzłach
Jeśli tak, to ile wynosi n i jak należy wybrać węzły π π
x0 = − , x1 = 0, x2 = .
interpolacyjne? Jak zmieni się odpowiedź, gdy 0, 01 2 2
zastąpimy liczbą 10−6 ?
Zbuduj te wielomiany i podaj oszacowanie błędów.

Zadanie 164 Znajdź n oraz węzły interpolacji tak, aby


Zadanie 170 Dla funkcji
dla funkcji f (x) = 12 ln(x2 ) wielomian interpolacyjny
Lagrange’a Ln stopnia co najwyżej n spełniał warunek (
1 2
x dla x > 0,
f (x) = 2 1 2
kf − Ln k[−3,−1] < 10 −4
. −2x dla x < 0,

postanowiono zbudować wielomian interpolacyjny La-


grange’a oparty na czterech węzłach Czebyszewa w prze-
Zadanie 165 Czy wielomian interpolacyjny La- dziale [−1, 1]. Oszacuj błąd interpolacji.
grange’a L oparty na 7 równoodległych węzłach z
przedziału [−1, 1] i przybliżający funkcję f (x) = ex
spełnia nierówność Zadanie 171 Niech Lk−1 będzie wielomianem inter-
polacyjnym Lagrange’a pewnej funkcji dla węzłów
kf − Lk[−1,1] 6 5 · 10−5 ? x0 , . . . , xk−1 , zaś Lk dla węzłów x0 , . . . , xk−1 , xk . Podaj
zależność Lk od Lk−1 .
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 95

Zadanie 172 Udowodnij, że Zadanie 176 Niech m i n będą dodatnimi liczbami


całkowitymi. Udowodnij równości
1 x0 . . . xn−1
 
0 f0 n
1 x1 . . . xn−1 f1 
X (−1)k (−1)n (n − 1)!
1 1. = ,
det  . .. .. ..  k!(n − k)!(2n − k) (2n)!
 
 .. . . . k=0

1 xn ... xn−1 fn m m
1

n
wx0 ,...,xn =
X
, 2. (−1) m−k k
= ,
1 xn−1 xn0 m+1−k m+1

x0 ... 0 k=0
1 x1 ... xn−1 xn1 
1
det  . .. .. ..  m
(−1)k m
 n+m
1
 
 ..
X
. . .  3. k m
= .
n+k+1 n+m+1
1 xn ... xn−1
n xnn k=0

Wskazówki
gdzie f0 , f1 , . . . , fn oznaczają wartości funkcji f odpo-
wiednio w węzłach x0 , x1 , . . . , xn , a w jest wielomianem 1. Interpoluj funkcję f (x) = 1 w węzłach −1 + 2k
n .
interpolacyjnym Lagrange’a dla tych węzłów. Qn−1
2. Interpoluj funkcję f (x) = i=0 (i − x) w punkcie
x = n + m + 1 i równoodległych węzłach 0, 1, 2, . . ..
Zadanie 173 Dana jest tabelka różnic dzielonych 3. Weź funkcję oraz węzły jak w poprzednim punkcie
i x = −1.
x0 fx0
fx0 ,x1
x1 fx1 fx0 ,x1 ,x2 Zadanie 177 Dane są węzły a = x0 < x1 < . . . <
fx1 ,x2 xn = b. Niech
x2 fx2 fx1 ,x2 ,x3
.. .. n
. .
Y
fx2 ,x3 Nn+1 (x) = (x − xi )
.. .. .. .. i=0
. . . . · · · fx0 ,...,xn
.. .. oraz h oznacza maksymalną odległość między sąsiednimi
. . fxn−3 ,xn−2
węzłami h = max (xi+1 − xi ). Udowodnij, że
xn−2 fxn−2 fxn−3 ,xn−2 ,xn−1 i=0,1,...,n−1
fxn−2 ,xn−1
xn−1 fxn−1 fxn−2 ,xn−1 ,xn n!hn+1
kNn+1 k[a,b] 6 .
fxn−1 ,xn 4
xn fxn

Które z elementów tabelki są współczynnikami wie-


lomianu Lagrange’a w bazie Newtona interpolującego Zadanie 178 Dany jest przedział [a, b] zawierający
funkcję f przy następującym uporządkowaniu węzłów wszystkie węzły x0 , x1 , . . . , xn . Rozpatrujemy zadanie
xn−1 , xn−2 , . . . , x1 , x0 , xn ? interpolacji Lagrange’a dla tych węzłów. Udowodnij, że
błąd interpolacji w przedziale [a, b] dla funkcji

Zadanie 174 Wielomian postaci xn+1


f (x) = M ,
(n + 1)!
n
X
w(x) = xn+1 + ai xi gdzie M jest dowolną stałą dodatnią wyraża się wzorem
i=0
kf (n+1) k[a,b]
interpolujemy wielomianem opartym na n + 1 węzłach R= kNn+1 k[a,b] .
(n + 1)!
Czebyszewa w [−1, 1]. Pokaż, że dla |x| 6 1 moduł
reszty interpolacyjnej jest nie większy niż 2−n , a dla
|x| > 1 nie mniejszy niż (|x| − 1)n+1 .
Zadanie 179 Dany jest przedział [a, b] zawierający wę-
zły interpolacyjne x0 , x1 , . . . , xn . Udowodnij, że wyra-
Zadanie 175 Niech L będzie wielomianem interpo- żenie
lacyjnym Lagrange’a dla tabelki {xi , yi }ni=0 . Zakła-

Y n
damy, że węzły są równoodległe z krokiem h > 0, sup (x − xi )

czyli xk = x0 + kh, k = 0, 1, 2, . . . , n. Wykaż, że je- x∈[a,b]
i=0
śli x = x0 + th dla pewnej liczby rzeczywistej t, to jest najmniejsze dla węzłów Czebyszewa w [a, b] i jego
n n wartością jest wtedy
X (−1)n−k Y
L(x) = yk (t − j). n+1
1 b−a

k!(n − k)! j=0
k=0 .
j6=k 2n 2
96 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Odpowiedzi

5
Zadanie 153 f (2,5) ≈ 16 Zadanie 154 f (9, 5) ≈ 19
√ 8
Zadanie 158 r 12 = e − e+1
2
≈ −0, 210420, krk[0,1] =
|e − 2 − (e − 1) ln(e − 1)| ≈ 0, 211867, krk[−1,2] = e2 + 1 −
3
2e ≈ 2, 952492 Zadanie 159 |r(0, 5)| 6 72π√3 ≈ 0, 248632
15
 15

Zadanie 160 |r(100, 5)| ∈ 4·206 4 , 4·2004 , czyli w przybliże-

niu |r(100, 5)| ∈ 2, 08239 · 10−9 , 2.34375 · 10−9 Zadanie 161


 
    π3
4 x + 21 −16 x + 21 x + 14 , r − 13 6 162 ≈ 0, 1914,
w(x) =  
r − 1 = sin π − 8 ≈ 0, 023 Zadanie 162 w(x) =
3 3 9
√  √  √  √ 
− sin( 3) x + 2
3
+ 2 sin(

3
3)
x x+ 2
3
,R6 1
3
Zadanie 163
n > 5, n > 9 Zadanie 164 n > 10 Zadanie 165 tak
2
Zadanie 167 R 6 h8 kf 00 k[a,b] Zadanie 169 Rf 6 3π (1 +
√ 2
kΛ2 k) ≈ 10, 6, Rg 6 3 2(1 + kΛ2 k) ≈ 9, 5 Zadanie 170
R 6 10 + π4 ln 3 ≈ 11, 4 Zadanie 171 Lk (x) = Lk−1 (x) +
Qk−1
fx0 ,...,xk i=0 (x − xi )
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 97

4.3 Interpolacja Hermite’a Zauważmy, że jeśli wszystkie krotności wynoszą jeden, to


zadanie sprowadza się do interpolacji Lagrange’a. W in-
nym wypadku, wymagamy nie tylko zgodności wartości, lecz
4.3.1 Sformułowanie zadania również pochodnych.
Do zapisu zadania interpolacji Hermite’a stosuje się też
Zadanie interpolacji Hermite’a jest zadaniem ogólniejszym
tabelę interpolacyjną. Zwykle ma ona postać
niż interpolacji Lagrange’a. Danych jest obecnie m + 1
różnych węzłów x0 , x1 , . . . , xm oraz m + 1 liczb całkowitych x0 x0 .. x0 . . . xm xm .. xm
.
dodatnich k0 , k1 , . . . , km zwanych krotnościami. Liczbę n f (x0 ) f 0 (x0 ) .. f (k0 −1) (x0 ) . . . f (xm ) f 0 (xm ) .. f (km −1) (xm )
definiujemy równością
W pierwszym wierszu każdy węzeł występuje tyle razy, ile
Xm wynosi jego krotność. Z każdym jego wystąpieniem zwią-
n+1= ki . zana jest informacja o f w tym węźle — ma ona postać
i=0 wartości kolejnej pochodnej w tym węźle (od „zerowej”, czyli
zwykłej wartości funkcji, do (ki − 1) włącznie). Taka tabela
Zadanie polega na znalezieniu wielomianu w stopnia nie
pozwala łatwo napisać równania interpolacyjne — każda ko-
większego niż n takiego, że
lumna to jedno równanie określające równość odpowiednich
w (x ) = f (x ),
(j) (j)
dla i = 0, . . . , m, pochodnych funkcji i wielomianu w odpowiednim węźle.
i i
Przykład Dane są dwa węzły x0 = 0 i x2 = 2, pierwszy
j = 0, . . . , ki − 1,
dwukrotny, drugi jednokrotny. Zatem m = 1, k0 = 2, k1 = 1,
przy czym wartości występujące po prawej stronie są dane. n = 2. Ponadto znane są wartości
Zauważmy, że by to było możliwe f musi posiadać odpo-
wiednio wiele pochodnych. f (0) = 4, f 0 (0) = −2, f (2) = 0.
Dane: x0 , x1 , . . . , xm różne węzły Zadnie to można zapisać przy pomocy tabeli interpolacyjnej
k0 , k1 , . . . , km krotności węzłów
0 0 2
f(x0 ), f (x0 ), . . . , f
(1) (k0−1)
(x0 ) wartości funkcji 4 −2 0
f(x1 ), f (1)(x1 ), . . . , f (k1−1)(x1 ) i pochodnych Szukamy wielomianu w ∈ Π2 spełniającego równania inter-
... w węzłach polacyjne
f(xm ), f (1)(xm ), . . . , f (km−1)(xm )
w(0) = 4, w0 (0) = −2, w(2) = 0.
n
X
Wynik: w ∈ Πn , gdzie n+1 = ki funkcja spełniająca Niech w(x) = ax2 + bx + c. Dostajemy układ równań
i=0 równania
f (j) (xi ) = w(j) (xi )

c = 4,

dla i = 0, 1, . . . , m, b = −2,
j = 0, 1, . . . , ki − 1
4a + 2b + c = 0,

którego rozwiązaniem jest a = 0, b = −2, c = 4. Zatem


w(x) = −2x + 4. 

4.3.2 Numeryczne rozwiązywanie zadania


interpolacji Hermite’a

Sposób rozwiązania przedstawiony w poprzednim przykła-


dzie (przedstawienie wielomianu w bazie naturalnej) nie jest
używany w praktyce — jest kosztowny i ma złe własności nu-
meryczne. Okazuje się, że można algorytm różnic dzielonych
uogólnić tak, by rozwiązywał zadanie interpolacji Hermite’a.
Interesuje nas obecnie wyznaczenie współczynników wielo-
mianu w w bazie Newtona określonej węzłami

x0 , . . . , x0 , x1 , . . . , x1 , . . . , xm−1 , . . . , xm−1 , xm , . . . , xm .
| {z } | {z } | {z } | {z }
k0 k1 km−1 km −1

Proszę zwrócić uwagę, że węzeł xm nie występuje km razy


lecz tylko km − 1. Tabelę różnic dzielonych tworzymy po-
dobnie, jak w przypadku „zwykłym”.
Można udowodnić, że rozwiązanie tego zadania istnieje i jest
jednoznaczne.
98 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Stąd b0 = 4, b1 = −2, b2 = 0, czyli w(x) = 4 − 2x. 

x0 f (x0 )
f (x 0 )−f
 (x0 ) f 0 (x0 )
 
x0 −x0 1! 4.3.3 Oszacowanie reszty interpolacyjnej
f 00 (x0 )
x0 f (x0 ) 2!
.. .. f (x 0 )−f (x0 ) f 0 (x0 ) .. Pojęcia reszty i błędu interpolacji definiuje się tak jak po-
. .   .
x0 −x0 przednio:
 1!
f (x1 )−f (x0 ) f 0 (x )
− 1! 0
x0 f (x0 ) x1 −x0
x1 −x0
f (x1 )−f (x0 ) r(x) = f (x) − w(x),
x1 −x0
f 0 (x1 )

f (x1 )−f (x0 ) R = sup |f (x) − w(x)| = krk,
x1 f (x1 ) 1!
x1 −x0
x1 −x0 x∈[a,b]
f (x 1 )−f
 (x1 ) f 0 (x1 )
gdzie w jest wielomianem Hermite’a interpolującym f w

 x1 −x1 1!
f 00 (x1 )
x1 f (x1 ) 2!
węzłach z przedziału [a, b].
.. .. f 0 (x1 )
. . f (x
  1 )−f

x1 −x1
(x1 )
1!
Twierdzenia dotyczące reszty przy interpolacji Hermite’a są
.. uogólnieniem tych, które dotyczą interpolacji Lagrange’a.
x1 f (x1 ) . ...
f (x2 )−f (x1 ) Twierdzenie 28 (o reszcie interpolacyjnej) Dany
x2 −x1
.. .. .. .. jest przedział [a, b] zawierający punkt x i wszystkie
. . . . węzły interpolacyjne x0 , x1 , . . . , xm , których krotności
xm f (xm ) wynoszą k0 , k1 , . . . , km . Załóżmy, że f ∈ C n+1 [a, b],
.. .. f (xm 
)−f
(xm ) f 0 (xm )
m
. . 
X
xm −xm 1! gdzie n = ki − 1.
f 00 (xm )
xm f (xm ) 2!
i=0
f (x )−f
(xm ) f 0 (xm )
  m
xm −xm 1! Wtedy istnieje punkt ηx ∈ [a, b] zależny od x taki, że
xm f (xm )
f (n+1) (ηx ) e
1. Wypisujemy kolumnę zawierającą wszystkie węzły z r(x) = Nn+1 (x),
(n + 1)!
uwzględnieniem ich krotności.
gdzie
2. W sąsiedniej kolumnie wpisujemy wartości funkcji ob- m
liczone dla stojących obok węzłów (jest to kolumna
Y
en+1 (x) =
N (x − xi )ki ,
0). i=0

3. Obliczamy „zwykłe” różnice dzielone — tam gdzie się


da, czyli nie wystąpi dzielenie przez 0. Podobnie, jak w przypadku interpolacji Lagrange’a z tego
4. Jeśli nie da się policzyć „zwykłej” różnicy dzielonej twierdzenia wynika ponizszy wniosek.
(występuje dzielenie przez 0), to wpisujemy wielkość Wniosek 3 Dany jest przedział [a, b] zawierający punkt
1 (k)
k! f (xi ), gdzie x i wszystkie węzły interpolacyjne x0 , x1 , . . . , xm , któ-
(a) k jest numerem kolumny (kolumny z węzłami nie rych krotności wynoszą k0 , k1 , . . . , km . Załóżmy, że f ∈
m
numerujemy, a dalej numerujemy od 0), C n+1
[a, b], gdzie n =
X
ki − 1.
(b) xi jest tym węzłem, który występowałby w mianow- i=0
niku, gdybyśmy liczyli „zwykłą” różnicę dzieloną. Wtedy
Współczynniki szukanego wielomianu w bazie Newtona okre- kf (n+1) k e
R6 kNn+1 k.
ślonej węzłami (n + 1)!
gdzie
x0 , . . . , x0 , x1 , . . . , x1 , . . . , xm−1 , . . . , xm−1 , xm , . . . , xm m
Y
| {z } | {z }
k0 k1
| {z
km−1
} | {z
km −1
} en+1 (x) =
N (x − xi )ki ,
i=0
znajdują się w pierwszym („ukośnym”) wierszu tabeli różnic
dzielonych. O ile węzły są uporządkowane, to algorytm jest
prawie numerycznie poprawny. Zaprogramowanie algorytmu Problem doboru optymalnych węzłów ze względu na powyż-
pozostawiamy jako ćwiczenie. sze oszacowanie błędu jest obecnie bardziej skomplikowany.
Można go łatwo rozwiązać, gdy np. wszystkie węzły są tej
Przykład Zastosujemy algorytm różnic dzielonych do roz- samej krotności:
wiązania zadania z poprzedniego przykładu. Szukamy współ-
czynników b0 , b1 , b2 wielomianu w w bazie 1, x, x2 . k0 = k1 = . . . = km = k.

0 4 Wtedy
−2 !k
m m
0 4 −2+2
en+1 (x) =
Y Y
0−4
2−0
N (x − xi ) =
k
(x − xi ) = (Nm+1 (x))k ,
2−0 i=0 i=0
2 0
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 99

a zatem 4.3.4 Pytania powtórzeniowe


en+1 k = kNm+1 kk .
kN
Jak było stwierdzone przy interpolacji Lagrange’a, norma po 1. Sformułuj zadanie interpolacji Hermite’a.
prawej stronie będzie najmniejsza, gdy x0 , x1 , . . . , xm będą 2. Podaj twierdzenie o reszcie interpolacyjnej.
węzłami Czebyszewa w [a, b]. Wtedy
m+1 3. Podaj wniosek z twierdzenia o reszcie interpolacyjnej
1

b−a dotyczący oszacowania błędu interpolacji w przypadku
kNm+1 k = m .
2 2 dowolnych węzłów.
Przy takim wyborze węzłów błąd interpolacji Hermite’a 4. Podaj wniosek z twierdzenia o reszcie interpolacyjnej
można oszacować dotyczący oszacowania błędu interpolacji w przypadku
kf (n+1) k e węzłów Czebyszewa.
R 6 kNn+1 k
(n + 1)!
m+1 !k
kf (n+1) k 1 4.3.5 Ćwiczenia sprawdzające zrozumienie

b−a
=
(n + 1)! 2m 2 tematu
(m+1)k
kf (n+1) k 1

b−a
= Zadanie 180 Wyznacz wielomian interpolacyjny Her-
(n + 1)! 2mk 2
n+1 mite’a dla funkcji f oparty na danych węzłach.
(n+1)
1

kf k b−a
= . 1. f (x) = cos x, x0 = 0, x1 = 2,
π
k0 = k1 = 2,
(n + 1)! 2n+1−k 2
Powyższe spostrzeżenia pozwalają sformułować następujący 2. f (x) = e , x0 = 0, x1 = 1, x2 = 2, k0 = k2 = 1,
x

wniosek. k1 = 2

Wniosek 4 Dany jest przedział [a, b]. Załóżmy, że 3. f (x) = ln x, x0 = 1, x1 = e, k0 = 2, k1 = 3.


x0 , x1 , . . . , xm są węzłami Czebyszewa w [a, b] i wszyst-
kie mają krotność k. Interpolujemy w nich funkcję
Zadanie 181 Wyznacz wielomian interpolacyjny Her-
f ∈ C n+1 [a, b], gdzie n = (m + 1)k − 1.
mite’a stopnia nie większego niż 5 dla tabelki
Wtedy
kf (n+1) k

b−a
n+1 x f f0 f 00
R6 . 0 0 1 2
2n+1−k (n + 1)! 2 .
1 1 2 −
2 4 − −
Przykład Dana jest funkcja f (x) = sin x. Interpolujemy ją
na przedziale [− π2 , π2 ] w dwóch podwójnych (czyli o krotności
równej 2) węzłach x0 = − π2 , x1 = π2 . Oszacujmy błąd
interpolacji, w tym celu posłużmy się Wnioskiem 3.
4.3.6 Zadania
Zauważmy, że dla dowolnego n mamy tu kf n+1 k = 1. Pozo- 1
staje policzyć normę supremum funkcji Zadanie 182 Funkcję f (x) = interpolujemy
cos(πx)
2  π 2 h π i2
e4 (x) = x + π π na przedziale [− 13 , 13 ]

N x− = x+ x− .
2 2 2 2
• w dwóch pojedynczych węzłach − 61 , 16 ,
Zauważmy, że
kNe4 k = kN2 k2 , • w jednym podwójnym węźle 0.
gdzie 1. Korzystając z wzorów na resztę interpolacyjną
 π π
N2 (x) = x + x− . wskaż, który rodzaj interpolacji wydaje się lepszy.
2 2
Ponieważ wykresem N2 jest parabola, to jej ekstremum 2. Wyznacz oba wielomiany interpolacyjne, korzysta-
jąc z interpretacji geometrycznej.
2
lokalne znajduje się w wierzchołku x = 0 i wynosi − π4 .
W punktach brzegowych przedziału funkcja N2 ma wartość 3. Oblicz dokładnie błąd interpolacji w obu przypad-
zero, zatem kach.
π2
kN2 k = .
4
Otrzymujemy Zadanie 183 Znajdź wielomian stopnia co najwyżej
1π 2 2
π drugiego interpolujący funkcję
R6 = ≈ 0, 103.
4! 4 96 1
f (x) = ln(2x − 1)
Gdybyśmy dokonali interpolacji w dwóch podwójnych wę- 2
złach Czebyszewa w [− π2 , π2 ] to z Wniosku 4 otrzymalibyśmy w węźle x0 = 1 krotności 3. Podaj oszacowanie błędu
1  π 4 π4 interpolacji w przedziale [1, 2] korzystając z twierdzenia
R6 2 = ≈ 0, 0634. o reszcie interpolacyjnej lub wniosku.
2 4! 2 1536 
100 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Zadanie 184 Wyznacz wielomian interpolacyjny H dla Zadanie 189 Niech zi (p), i = 1, . . . , p oznacza i-te
funkcji f (x) = x5 spełniający warunki miejsce zerowe wielomianu Czebyszewa stopnia p w prze-
dziale [−1, 1]. Dane są dwie liczby całkowite m > 1 oraz
H(0) = f (0), H 0 (0) = f 0 (0), k > 2. Wyjaśnij, który z wielomianów interpolacyjnych
H(1) = f (1), H 0 (1) = f 0 (1), stopnia
H(2) = f (2). n = k(m + 1) − 1
funkcji f ∈ C n+1 [−1, 1] ma lepsze oszacowanie błędu
Korzystając z twierdzenia o reszcie interpolacyjnej oblicz na przedziale [−1, 1]:
z dokładnością do 0, 005 błąd interpolacji dla x ∈ [0, 2].
1. oparty na jednokrotnych węzłach xi = zi (k(m + 1))
Wskazówka: wykorzystaj fakt, że kN
e5 k[0,5] ≈ 0, 43 z
dla i = 1, 2, . . . k(m + 1),
dokładnością do 0, 005, gdzie
2. oparty na k-krotnych węzłach xi = zi (m + 1) dla
e5 (x) = x2 (x − 1)2 (x − 2).
N i = 1, 2, . . . , (m + 1).

Zadanie 190 Dany jest układ {xi , yi , yi0 }i=0,...,m , gdzie


Zadanie 185 Dana jest funkcja f (x) = cos x. xi , yi , yi0 ∈ R. Oznaczmy przez H wielomian interpo-
1. Znajdź wielomian interpolujący f w pojedynczych lacyjny Hermite’a stopnia 2n + 1 spełniający warunki
węzłach 0 i 2π. Oblicz dokładnie błąd interpolacji H(xi ) = yi , H 0 (xi ) = yi0 dla i = 0, . . . , m.
na przedziale [0, 2π]. 1. Napisz program wyznaczający współczynniki w ba-
2. Dobierz dwukrotny węzeł z przedziału [0, 2π] tak, zie Newtona wielomianu H.
by błąd interpolacji Hermite’a na przedziale [0, 2π], 2. Podaj postać reszty interpolacyjnej dla dowolnej
wielomianem interpolującym w tym dwukrotnym funkcji f ∈ C 2m+2 [a, b] na odcinku [a, b] oraz jej
węźle, był równy błędowi z punktu 1. Wskaż trzy oszacowanie w przypadku węzłów Czebyszewa z
możliwości wyboru węzła. [a, b].

Zadanie 186 Dla funkcji Zadanie 191 Wykaż, że dla dowolnych liczb
c0 , c1 , . . . , cn i dowolnych x0 , x1 , . . . , xn istnieje
f (x) = sin x dokładnie jeden wielomian H stopnia mniejszego lub
równego n, spełniający warunki H (k) (xk ) = ck dla
budujemy wielomian interpolacyjny Hermite’a H oparty
k = 0, 1, . . . , n.
na pojedynczych węzłach x0 = 0, x2 = 2 oraz węźle
x1 = 1 krotności k. Jak należy wybrać krotność k, aby
dla wielomianu H możliwie niskiego stopnia zachodził Odpowiedzi
warunek |H(x) − f (x)| < ε dla dowolnego x ∈ [0, 2]?
Skorzystaj z twierdzenia o reszcie interpolacyjnej. 8(2− π
2)
4 2

Zadanie 180 1. w(x) = 1 − π2
x + π3
x2 x − π
2

Zadanie 187 Dla funkcji

f (x) = cos x

znajdź wielomian interpolacyjny oparty na węzłach


x0 = 0, x1 = α ∈ (0, π] o krotnościach m0 = m1 = 2.
Jak dobrać α, by oszacowanie błędu interpolacji na
przedziale [0, π] było możliwie najlepsze? Skorzystaj z 2. w(x) = 1 − (e − 1)x + x(x − 1) + e2 −2e−1
2
x(x − 1)2
twierdzenia o reszcie interpolacyjnej.

Zadanie 188 Funkcję f (x) = sin x + cos x interpolu-


jemy wielomianem Hermite’a H stopnia nie większego
niż 5 spełniającym warunki
H (j) (xi ) = f (j) (xi ) dla i = 0, 1, 2, j = 0, 1,
gdzie 0 6 x0 < x1 < x2 6 2.
π

e2 −2e−1
1. Sprawdź, czy f (x) 6 H(x) dla x ∈ [0, π2 ]. 3. w(x) = (x − 1) + 2−e
(e−1)2
(x − 1)2 + e(e−1)3
(x − 1)2 (x − e)
3 2
2e −3e −6e+1 2 2
− (x − 1) (x − e)
2. Czy istnieje x∗ ∈ [0, π2 ] nie będący węzłem taki, że 2e2 (e−1)4

f (x∗ ) = H(x∗ )?
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 101

Zadanie 181 w(x) = x + x2 − x3 + 2x3 (x − 1) −


5 3 kf 00 k
4
x (x − 1)2 Zadanie 182 1. |r1 (x)| 6 2
1
· 12 ,
00 √ √
|r2 (x)| 6 kf2 k · 19 2. w1 (x) = 2 3 3 , w2 (x) = 1 3. R1 = 6−23 3 ,
R2 = 1 Zadanie 183 w(x) = x − 1 − (x − 1)2

R 6 4
3
Zadanie 184 w(x) = x2 + 3x2 (x − 1) + 4x2 (x − 1)2

R ≈ 0, 43 Zadanie 185 R = 2 Zadanie 186 najmniej-


 k2
2 k

sze k spełniające nierówność < ε
√ (k + 2)(k + 2)! k + 2
Zadanie 187 α = 2( 2 − 1)π Zadanie 188 tak, nie
Zadanie 189 oszacowanie dla węzłów jednokrotnych jest
lepsze
102 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19
Rozdział 5

Splajny i interpolacja splajnami

5.1 Splajny prawe Hooka tak, by zminimalizować energię potencjalną


sprężystości. Przyjmie ona kształt właśnie splajnu kubicz-
nego.
Splajny są funkcjami będącymi „sklejeniem” wielomianów.
Wymagane jest, by sklejenie zostało wykonane w sposób
gładki, czyli z zachowaniem ciągłości odpowiednio wielu
pochodnych. W zależności od maksymalnego stopnia wielo-
mianu oraz liczby ciągłych pochodnych mówimy o rzędzie
splajnu. Zacznę od przedstawienia splajnów trzeciego rzędu,
które nazywane są zwykle splajnami kubicznymi i mają Nazwa splajn pochodzi od ang. spline, co oznacza giętką
najwięcej zastosowań. listwę używaną przez budowniczych statków do wyznaczania
konturów poszycia łodzi. W języku polskim listwę tą określa
się rzeczownikiem giętka. Można w literaturze spotkać się z
5.1.1 Definicja splajnu kubicznego nazwami funkcje giętkie lub funkcje sklejane dla określenia
splajnów.
By móc zdefiniować splajn niezbędne jest podanie węzłów,
Przykład Sprawdźmy, czy funkcja
które muszą być uporządkowane.
(
Definicja 46 Niech n ∈ N. Splajnem kubicznym opar- x2 − 2x dla x > 0,
S1 (x) =
tym na węzłach x + x − 2x dla x < 0
3 2

a = x0 < x1 < . . . < xn = b jest splajnem kubicznym dla węzłów x0 = −3, x1 = 0, x2 = 2.


Jej dziedziną jest przedział [−3, 2]. Na podprzedziale [−3, 0]
nazywamy funkcję S : [a, b] → R taką, że funkcja S1 jest określona wzorem S1 (x) = x2 − 2x, czyli
1. w dziedzinie zawężonej do przedziału [xi , xi+1 ] dla jest wielomianem stopnia co najwyżej trzeciego. Podobnie
i = 0, . . . , n − 1, funkcja S jest wielomianem stopnia dzieje się na podprzedziale [0, 2]. Pozostaje sprawdzić, Czy
co najwyżej trzeciego, S1 posiada dwie ciągłe pochodne w punkcie 0. Ponieważ
2. S ∈ C 2 [a, b].
(
2x − 2 dla x > 0,
S1 (x) =
0
3x + 2x − 2 dla x < 0,
2
Na każdym podprzedziale wyznaczonym przez sąsiednie wę- (
zły splajn może być innym wielomianem. Przypomnijmy, że 2 dla x > 0,
druga własność jest skróconą formą zapisu, że w każdym S100 (x) =
6x + 2 dla x < 0,
punkcie przedziału [a, b] splajn S posiada dwie ciągłe po-
chodne na [a, b]. Zwróćmy uwagę, że dziedziną S jest [a, b]. oraz
Jest ona zawsze wyznaczona przez skrajne węzły.
S10 (0− ) = S10 (0+ ) = −2,
S100 (0− ) = S100 (0+ ) = 2,

to S1 posiada dwie pochodne na [−3, 2] i są one ciągłe.1


Funkcje S2 (x) = x, S3 (x) = x2 , S4 (x) = x3 są splajnami
kubicznymi przy dowolnym wyborze węzłów.
Funkcja f (x) = x4 nie jest splajnem kubicznym dla żadnego
układu węzłów. 
1 Symbole f (0− ) i f (0+ ) oznaczają odpowiednio lim
x→0− f (x) i
limx→0+ f (x).
W naturze występują funkcje będące splajnami kubicznymi.
Gdybyśmy w deskę wbili pewną liczbę gwoździ i pomiędzy
je włożyli elastyczną listwę, to odkształci się ona zgodnie z

103
104 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

5.1.2 Definicja splajnu k rzędu 5.1.3 Splajny kubiczne prawo- i lewostron-


nie swobodne oraz okresowe
Definicję splajnu kubicznego można uogólnić tak, by dopuścić
wielomiany innych stopni. Czasami istnieje potrzeba rozszerzenia dziedziny splajnu
Definicja 47 Niech k ∈ N. Splajnem k rzędu opartym kubicznego poza przedział [a, b] z zachowaniem ciągłości obu
na węzłach pochodnych. Można to zrobić na kilka sposobów.
Po pierwsze, można z prawej strony kontynuować splajn S
a = x0 < x1 < . . . < xn = b linią prostą.
nazywamy funkcję S : [a, b] → R taką, że
1. w dziedzinie zawężonej do przedziału [xi , xi+1 ] dla
i = 0, . . . , n − 1, funkcja S jest wielomianem stopnia
co najwyżej k-go,
2. S ∈ C k−1 [a, b].

W definicji tej przyjmuje się umowę, że C 0 [a, b] = C[a, b].


Zauważmy, że dla k = 3 otrzymujemy splajny kubiczne.
Przykład Funkcje S2 , S3 i S4 z poprzedniego przykładu są
splajnami trzeciego, czwartego, piątego itd. rzędu. Funkcja
S2 jest splajnem pierwszego rzędu. 
Aby to uzyskać z zachowaniem własności, że „przedłużony”
Przykład Oto przykładowe wykresy splajnów pierwszego i splajn jest klasy C 2 [a, +∞], muszą zachodzić równości
drugiego rzędu.
S(b) = w(b) = q,
Splajn pierwszego rzędu oparty na węzłach x0 , x1 , x2 , x3
S 0 (b) = w0 (b) = p,
S 00 (b) = w00 (b) = 0.
Warunki te są możliwe do spełnienia wtedy i tylko wtedy,
gdy S 00 (b) = 0. Analogicznie można rozważać przedłużenie
splajnu z lewej strony przedziału [a, b] lub z obu stron.
Definicja 48
1. Splajn kubiczny S spełniający warunek S 00 (b) = 0
nazywamy prawostronnie swobodnym.

Splajn drugiego rzędu oparty na węzłach x0 , x1 , x2 , x3 2. Splajn kubiczny S spełniający warunek S 00 (a) = 0
nazywamy lewostronnie swobodnym.
3. Splajn kubiczny, który jest równocześnie prawo- i
lewostronnie swobodny nazywamy nazywamy obu-
stronnie swobodnym lub naturalnym.

Innym sposobem jest rozszerzenie okresowe.

Przykład Dane są węzły x0 = 1, x1 = 2, x2 = 3. Funkcja


S1 (x) = x2 jest splajnem drugiego rzędu opartym na tych
węzłach, ale nie jest splajnem pierwszego rzędu. Funkcja
(
x − 3 dla x ∈ [1, 2],
S2 (x) =
−1 dla x ∈ [2, 3]
Okresem T jest tu długość przedziału [a, b]. Aby tak utwo-
jest splajnem pierwszego rzędu opartym na tych węzłach, rzona funkcja posiadała dwie ciągłe pochodne na całej prostej
ale nie jest splajnem drugiego rzędu.  R istotnym jest, by dobrze skleić splajn S i jego przesunięcie
w punkcie b. Musi być zatem spełnione, że
S(a) = S(b),
S 0 (a) = S 0 (b),
S 00 (a) = S 00 (b).
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 105

Definicja 49 Splajn kubiczny S nazywamy okresowym Definicja 50 Niech k ∈ N ∪ {0}. B–splajnami k rzędu
jeśli (k)
nazywamy funkcje Bi , które są zdefiniowane rekuren-
cyjnie (ze względu na rząd):
S(a) = S(b),
S 0 (a) = S 0 (b),
(
(0) 1 dla x ∈ [xi , xi+1 ),
Bi (x) =
S 00 (a) = S 00 (b). 0 w pp.
(p) (p−1) xi+p+1 −x (p−1)
Bi (x) = x−xi
xi+p −xi Bi (x) + xi+p+1 −xi+1 Bi+1 (x),
Zwróćmy uwagę, że w definicjach splajnów lewo- i prawo-
stronnych oraz naturalnych i okresowych nie jest wspomniane dla p = 1, 2, . . . , k.
o zmianie dziedziny, zatem nadal jest nią przedział [a, b].
Gwarantowana jest jedynie możliwość rozszerzenia dziedziny, Oto przykładowe wykresy B-splajnów.
tak by powstała funkcja, która ma dwie ciągłe pochodne.

5.1.4 B–splajny

Okazuje się, że wszystkie splajny k–tego rzędu oparte na


tych samych węzłach

x0 < x1 < . . . < xn

tworzą przestrzeń liniową. Dowodzi się, że ma ona wymiar


n + k. Można więc wybrać bazę tej przestrzeni i zrobić
to na nieskończenie wiele sposobów. Jeden z nich okazał
się szczególnie użyteczny w praktyce — jest to tzw. baza
B–splajnów.
Rozważmy przestrzeń splajnów k rzędu opartych na węzłach

x0 < x1 < . . . < xn .

Węzły te będę obecnie nazywać siatką podstawową. W celu


konstrukcji bazy rozszerzę siatkę o k węzłów w prawo i w
lewo:

x−k < . . . < x−1 < x0 < x1 < . . . < xn < xn+1 < . . . < xn+k

i będę ją nazywać siatką rozszerzoną. Dodanie węzłów może


odbywać się dowolnie, zwykle jednak przyjmuje się, że węzły

x−k < x−k+1 < . . . < x−1 < x0 < x1


Odpowiednie B–splajny tworzą bazę przestrzeni liniowej
są rozmieszczone równoodlegle z krokiem h0 = x1 − x0 , a splajnów k-tego rzędu opartych na węzłach x0 , x1 , . . . , xn .
węzły Twierdzenie 29 Niech k ∈ N. Zdefiniowane wyżej funk-
cje
xn−1 < xn < xn+1 < xn+2 < . . . < xn+k (k) (k) (k) (k)
B−k , B−k+1 , . . . , Bn−2 , Bn−1 ,
też równoodlegle, ale z krokiem hn−1 = xn − xn−1 . zawężone do przedziału [a, b]

0 h h
0 0 h hn−1 hn−1 hn−1
1. są splajnami k-tego rzędu opartymi na węzłach
- - - 
-- 
- x0 , x1 , . . . , xn ,
-
x−k x−k+1 . . . x−1 x0 x1 . . . xn−1 xn xn+1. . .xn+k−1 xn+k 2. tworzą bazę przestrzeni splajnów k-tego rzędu opar-
tych na węzłach x0 , x1 , . . . , xn .
| {z }
siatka podstawowa
| {z } Zwróćmy uwagę, że elementy bazy są nietypowo numerowane:
siatka rozszerzona od −k do n − 1. Łącznie jest ich n + k.
Węzły dodane pełnią rolę pomocniczą. Nadal przyjmujemy, W dalszej części będę używać pojęcia nośnika funkcji. Okre-
że dziedziną splajnu jest przedział [a, b] = [x0 , xn ]. śla ono zbiór, na którym funkcja przyjmuje wartość różną
od zera plus brzeg tego zbioru.
106 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

[xi+1 , xi+2 ). Poza tymi przedziałami obie funkcje się zerują.


Definicja 51 Dana jest funkcja f . Niech A oznacza
Podsumowując
zbiór tych wszystkich x, dla których f (x) 6= 0. Nośnikiem
funkcji f jest domknięcie zbioru A. 
dla x ∈ [i, i + 1),
x − i

(1)
(k) Bi (x) = i + 2 − x dla x ∈ [i + 1, i + 2),
Funkcje Bi posiadają szereg własności. Poniższe twier-
0

dzenie zawiera niektóre z nich. Dotyczą one wartości B– wpp.

splajnów.
Aby wyznaczyć splajny drugiego rzędu ponownie korzystamy
Twierdzenie 30 Niech k ∈ N ∪ {0}. z zależności rekurencyjnej
1. Dla dowolnego x zachodzi nierówność (2) (1) xi+3 −x (1)
Bi (x) = xi+2 −xi Bi (x)
x−xi
+ xi+3 −xi+1 Bi+1 (x)
(k)
0 6 Bi (x) 6 1. = x−i (1) i+3−x (1)
2 Bi (x) + 2 Bi+1 (x)

(k) Tym razem trzeba rozważyć osobno przedziały [xi , xi+1 ),


2. Nośnikiem funkcji Bi jest przedział [xi , xi+k+1 ].
[xi+1 , xi+2 ), [xi+2 , xi+3 ) i pozostałą część osi.
3. Dla dowolnego x ∈ [a, b) zachodzi
6 (1) (1)
n−1 1 Bi Bi+1
(k)
X
Bi (x) = 1. @ @
@ @
i=−k @ @
Własność ta zachodzi również dla x = b, o ile k > 1.
@ @ -
xi xi+1 xi+2 xi+3
(0)
Przykład Niech siatkę podstawową tworzą węzły Na podstawie wzoru opisującego Bi mamy

xi = i, i = 0, 1, 2. x − i − 1 dla x ∈ [i + 1, i + 2),

(1)
Bi+1 (x) = i + 3 − x dla x ∈ [i + 2, i + 3),
Wtedy n = 2. Wyznaczymy bazę B–splajnów przestrzeni
0

wpp.

splajnów drugiego rzędu opartych na węzłach x0 , x1 , x2 .
Przestrzeń ta ma wymiar n + k = 4, funkcjami bazowymi są Otrzymujemy zatem
(2) (2) (2) (2) 
B−2 , B−1 , B0 , B1 . (x−i)2
x∈[i,i+1] ,

 2

 (x−i)(i+2−x) +
 (i+3−x)(x−i−1)
By móc je zdefiniować tworzymy najpierw siatkę rozszerzoną (2) x∈[i+1,i+2] ,
Bi (x) = (x−i−3) 2
2
2
x∈[i+2,i+3] ,

2
xi = i, i = −2, 1, 0, 1, 2, 3, 4.



0 w pp.

Po kolei definiujemy B–splajny zerowego, pierwszego i dru- Funkcje te dla i = −2, −1, 0, 1 tworzą szukaną bazę, o ile
giego rzędu. Splajny zerowego rzędu to funkcje zawęzimy ich dziedzinę do przedziału [a, b] = [0, 2]. 
(
(0) 1 dla x ∈ [i, i + 1),
Bi (x) =
0 w pp. 5.1.5 Pytania powtórzeniowe
Splajny pierwszego rzędu wyznaczamy z zależności rekuren- 1. Podaj definicję splajnu kubicznego.
cyjnej
2. Podaj definicję splajnu k rzędu.
(1) (0) xi+2 −x (0)
Bi (x) = xi+1 −xi Bi (x)
x−xi
+ xi+2 −xi+1 Bi+1 (x) 3. Podaj definicję splajnu kubicznego lewo-, prawo- i obu-
= (x −
(0)
i)Bi (x) + (i + 2 −
(0)
x)Bi+1 (x) stronnie swobodnego.
4. Podaj definicję splajnu kubicznego okresowego.
(0) (0)
Nośnikiem funkcji Bi jest przedział [xi , xi+1 ], zaś Bi+1
5. Opisz typowy sposób tworzenia siatki rozszerzonej wę-
przedział [xi+1 , xi+2 ].
złów.
(0) (0)
Bi 6. Zdefiniuj B–splajny k rzędu.
c Bi+1 c
6
1
7. Co to jest nośnik funkcji? Co jest nośnikiem funkcji
(k)
Bi ? Z jakiego przedziału przyjmuje ta funkcja warto-
- ści?
xi xi+1 xi+2
8. Jaki wymiar ma przestrzeń splajnów k rzędu opartych
(0)
W przedziale [xi , xi+1 ) funkcja Bi+1 przyjmuje wartość na węzłach x0 < x1 < . . . < xn ? Które B–splajny
zero, a Bi
(0)
wartość jeden. Odwrotnie jest w przedziale tworzą bazę tej przestrzeni?
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 107

5.1.6 Ćwiczenia sprawdzające zrozumienie


tematu Zadanie 198 Dana jest funkcja
(
(x − 1)2 − 1 dla x > 0,
Zadanie 192 Dany jest splajn kubiczny S(x) = x f (x) =
−|x + 1| + 1 dla x < 0,
oparty na węzłach x0 = 1, x2 = 2, x3 = 3. Czy jest on
splajnem oraz pięć układów węzłów
1. lewostronnie swobodnym, (a) −2, −1, 0,
2. prawostronnie swobodnym, (b) 0, 1, 2,
3. okresowym? (c) −2, −1, 0, 1, 2,
(d) −1, − 21 , 0,
Zadanie 193 Dany jest splajn kubiczny S(x) = x2 (e) 0, 21 , 1.
oparty na węzłach x0 = −1, x2 = 0, x3 = 1. Czy jest
on splajnem Wskaż te układy węzłów (i uzasadnij dlaczego), dla
których funkcja f jest
1. lewostronnie swobodnym,
1. splajnem kubicznym,
2. prawostronnie swobodnym,
2. splajnem kubicznym prawostronnie swobodnym,
3. okresowym?
3. splajnem kubicznym okresowym.

5.1.7 Zadania
Zadanie 199 Jak można uogólnić pojęcie splajnu okre-
Zadanie 194 Niech S będzie splajnem k rzędu opar- sowego dla splajnów k-tego rzędu?
tym na węzłach x0 < x1 < . . . < xn . Jakie warunki
musi on spełniać, by był on równocześnie splajnem rzędu
Zadanie 200 Dana jest siatka podstawowa węzłów
(k + 1) opartym na tych samych węzłach?
x0 = 0, x1 = 2, x2 = 4.
Zadanie 195 Niech S będzie splajnem k rzędu opar- 1. Jaki jest wymiar przestrzeni V wszystkich splajnów
tym na węzłach x0 < x1 < . . . < xn , k > 1. Jakie pierwszego rzędu zdefiniowanych na tej siatce?
warunki musi on spełniać, by był on równocześnie splaj-
nem rzędu (k − 1) opartym na tych samych węzłach? 2. Podaj bazę B–splajnów przestrzeni V .
3. Zapisz w tej bazie splajn S(x) = x określony na
[0, 4].
Zadanie 196 Podaj przykład splajnu kubicznego,
który jest równocześnie okresowy i naturalny.
Zadanie 201 Dane są węzły równoodległe xi = 2i,
i = 0, 1, 2. Wyprowadź wzory na B–splajny drugiego
Zadanie 197 Dane są funkcje
rzędu zdefiniowane na tej siatce.
(
x2 − 2x dla x > 0,
f (x) =
x3 + x2 − 2x dla x < 0, Zadanie 202 Udowodnij, że splajny k-tego rzędu
( oparte na węzłach x0 < x1 < . . . < xn tworzą prze-
x2 − 2x dla x > 0,
g(x) = strzeń liniową.
x − x − 2x dla x < 0.
3 2

1. Czy obie funkcje f oraz g są splajnami kubicznymi Zadanie 203 Niech k > 0. Udowodnij, że nośnikiem
z węzłami −4, −3, −2, −1, 0, 1, 2, 3, 4? (k)
funkcji Bi jest przedział [xi , xi+k+1 ] oraz, że dla dowol-
(k)
2. Czy obie funkcje f oraz g są splajnami kubicznymi nego x ∈ (xi , xi+k+1 ) zachodzi nierówność Bi (x) > 0.
z węzłami −4, −3, −2, −1, 1, 2, 3, 4?
3. Czy dla funkcji f można tak dobrać węzły oraz Zadanie 204 Udowodnij, że
dziedzinę, by była ona splajnem kubicznym lewo-
stronnie swobodnym? n−1
(k)
X
∀x∈(x0 ,xn ) Bi (x) = 1.
4. Czy dla funkcji g można tak dobrać węzły oraz
i=−k
dziedzinę, by była ona splajnem kubicznym lewo-
stronnie swobodnym?

Odpowiedzi
108 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Zadanie 205 1. tak, 2. tak, 3. nie Zadanie 193 1. nie, 2. nie,


3. nie Zadanie 197 1. f tak, g nie 2. obie nie, 3. tak, 4. nie
Zadanie 198 1. (a) nie, (b) tak, (c) nie, (d) tak, (e) tak, 2. (a) nie,
(b) nie, (c) nie, (d) tak, (e) nie, 3. (a) nie, (b) nie, (c) nie, (d) nie,
 x+2
 2 dla x ∈ [−2, 0),
(1)
(e) nie Zadanie 200 1. 3, 2. B−1 (x) = 2−x dla x ∈ [0, 2),
 2
0 w p.p.,
x x−2

2 dla x ∈ [0, 2),  2 dla x ∈ [2, 4),
(1) 4−x (1)
B0 (x) = dla x ∈ [2, 4), B1 (x) = 6−x dla x ∈ [4, 6),
 2  2
0 w p.p., 0 w p.p..
3. 0, 2, 4 Zadanie 201
2

(x−2i)

 8 x∈[2i,2i+2] ,
 (x−2i)(2i+4−x)+(2i+6−x)(x−2i−2)

(2) 8 x∈[2i+2,2i+4] ,
Bi (x) = (2i+6−x) 2

 8 x∈[2i+4,2i+6] ,

0

w p.p.
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 109

5.2 Algorytmy obliczania wartości na przechowanie współczynników oraz n + 1 liczb

splajnów w punkcie x0 , x1 , . . . , xn

do zapamiętania węzłów. Jeśli węzły są równoodległe, czyli


5.2.1 Przechowywanie splajnów dla pewnego h > 0 mamy xi = a + ih, i = 0, . . . , n, to
wystarczy zapamiętać x0 oraz h. Zatem
W praktyce obliczeniowej stosuje się dwa podstawowe spo-
soby przechowywania splajnów. Pierwszy polega na zapa-
(
4n + 2 dla węzłów równoodległych,
miętaniu wzorów wielomianów na każdym z podprzedziałów. koszt pamięciowy = 5n + 1 w p.p..
Drugi wykorzystuje fakt, że B–splajny tworzą bazę i przecho-
wuje się współczynniki splajnu w tej bazie. Sposób pierwszy, Reprezentacja powyższa pozwala łatwo wykonywać działania
aby uprościć zapis, przedstawię tylko dla splajnów kubicz- na splajnach — dodawać, mnożyć przez liczbę, obliczać
nych. Łatwo go uogólnić na dowolny rząd. wartość w punkcie.
Ma ona też wady. Przede wszystkim, jeśli przypiszemy
Przechowywanie splajnów kubicznych w lokalnych współczynnikom ai , bi , ci , di dowolne liczby, to tak powstała
bazach potęgowych funkcja zwykle nie będzie splajnem kubicznym. Nie zostaną
bowiem spełnione warunki ciągłości — te współczynniki nie
W każdym z przedziałów [xi , xi+1 ], i = 0, 1, . . . , n − 1 splajn są niezależne. Jeśli nawet zadbamy, by dane były poprawne,
jest wielomianem stopnia co najwyżej trzeciego. Można więc to ponieważ arytmetyka zmiennopozycyjna wprowadza błędy
zapamiętać cztery współczynniki dla każdego przedziału zaokrągleń, to niemal zawsze będziemy mieć do czynienia
osobno, uprzednio wybrawszy bazę wielomianową. Nie musi z funkcją, która nie jest splajnem, ale „prawie” splajnem —
być ona jednakowa dla każdego przedziału. Najtańsze są jest „prawie” ciągła i ma „prawie” ciągłe dwie pochodne.
bazy potęgowe, lecz charakteryzują się dużą skośnością. Na
szczęście tu mamy do czynienia z wielomianami tylko trze- Drugą wadą — jak się okaże później — jest stosunkowo
ciego stopnia i tzw. lokalne bazy potęgowe są wystarczająco wysoki koszt pamięciowy.
dobre. Będziemy w przedziale [xi , xi+1 ] zapamiętywać współ- Przykład Niech
czynniki w bazie 1, x − xi , (x − xi )2 , (x − xi )3 , czyli w bazie
Newtona o węzłach xi , xi , xi . x0 = 0, x1 = 1, x2 = 3

i
S(x) = (x − 1)2 .
Przedstawmy splajn S w lokalnych bazach potęgowych.
Mamy do czynienia z dwoma przedziałami

[x0 , x1 ] = [0, 1],


[x1 , x2 ] = [1, 3].

W każdym z nich splajn będzie przedstawiony w innej bazie,


w pierwszym będzie to baza

1, x, x2 , x3 ,

a w drugim
1, x − 1, (x − 1)2 , (x − 1)3 .
Można sprawdzić, że
(
1 − 2x + x2 + 0x3 , x ∈ [0, 1],
S(x) =
0 + 0(x − 1) + 1(x − 1)2 + 0(x − 1)3 , x ∈ [1, 3].

Informacja o splajnie składa się zatem z 11 liczb


Zatem dla x ∈ [xi , xi+1 ] splajn S ma postać
S(x) = ai + bi (x − xi ) + ci (x − xi )2 + di (x − xi )3 . węzły : x0 = 0, x1 = 1, x2 = 3,
współczynniki
Zwróćmy uwagę, że ze względu na ciągłość S przedział w [0, 1] : a0 = 1, b0 = −2, c0 = 1, d0 = 0,
[xi , xi+1 ] może być obustronnie domknięty. Pełna informacja w [1, 3] : a1 = 0, b1 = 0, c1 = 1, d1 = 0.
o splajnie składa się z 4n liczb 
a0 , b0 , c0 , d0 ,
a1 , b1 , c1 , d1 ,
.. .. .. ..
. . . .
an−1 , bn−1 , cn−1 , dn−1
110 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Reprezentacja splajnów w bazie B–splajnów Dla x ∈ [1, 2] mamy


2 2
Ustalmy węzły x0 < x1 < . . . < xn . Ponieważ funkcje (x − 1)2 = b−1 (x−2)
2 + b0 x(2−x)+(3−x)(x−1)
2 + b1 (x−1)
2 ,
(k)
Bi dla i = −k, −k + 1, . . . , n − 1 co jest równoważne równaniom
2 2 2
tworzą bazę przestrzeni splajnów rzędu k opartych na tych (x − 1)2 = b−1 x −4x+4
2 + b0 −2x +6x−3
2 + b1 x −2x+1
2 ,
węzłach, to każdy splajn S z tej przestrzeni można jedno- (x − 1)2 = b−1 −2b0 +b1 2
x + −4b−1 +6b0 −2b1
x+ 4b−1 −3b0 +b1
znacznie przedstawić w tej bazie 2 2 2

n−1
Równości na obu przedziałach zachodzą dla dowolnych x
S(x) =
X (k)
bi Bi (x). z tych przedziałów, zatem są one spełnione wtedy i tylko
i=−k
wtedy, gdy odpowiednie współczynniki przy potęgach x są
równe. Otrzymujemy zatem układ
Zatem w celu przechowania S wystarczy zapamiętać n + k  b−2 −2b−1 +b0
liczb b−k , b−k+1 , . . . , bn−1 oraz węzły, stąd 
 2 = 1,


( 
n+k+2 dla węzłów równoodl.,


 −2b−2 +2b−1 = −2,

koszt pamięciowy =

2
2n + k + 1 w p.p..






 b−2 +b−1
Dla splajnów kubicznych mamy = 1,


2


(
n+5 dla węzłów równoodległych, b−1 −2b0 +b1
= 1,

koszt pamięciowy =


2
2n + 4 w p.p.,







−4b−1 +6b0 −2b1
czyli niemal czterokrotnie taniej niż poprzednio w przypadku = −2,



 2
węzłów równoodległych i 2, 5–krotnie przy węzłach innych




(dla dużych n).

 4b−1 −3b0 +b1
= 1,

2
Obecnie każdy zestaw danych gwarantuje, że mamy do czy-
który jest układem równań liniowych z czterema niewia-
nienia ze splajnem. Zmiana współczynników na skutek błę-
domymi. Musi być on niesprzeczny i posiadać dokładnie
dów zaokrągleń powoduje, że otrzymamy trochę inny splajn
jedno rozwiązanie, bo jest wynikiem analizy zadania przed-
(„sąsiedni”), ale nadal splajn.
stawienia splajnu w bazie, a to zadanie ma jednoznaczne
Przykład Rozpatrzmy węzły rozwiązanie. Wystarczy wybrać cztery równania i je rozwią-
zać. Pozostałe dwa mogą służyć do sprawdzenia wyniku.
x0 = 0, x1 = 1, x2 = 2 Łatwo sprawdzić, że rozwiązaniem jest
oraz splajn b−2 = b1 = 2, b−1 = b0 = 0. 
S(x) = (x − 1)2 .
Jest to splajn drugiego rzędu, zapiszemy go w bazie
(2) (2)
B−2 , B−1 , B0 , B1 .
(2) (2) 5.2.2 Obliczanie wartości splajnu w punk-
cie
W jednym z poprzednich przykładów obliczyliśmy, że

(x−i)2
W tym punkcie zajmiemy się zadaniem obliczenia wartości
x∈[i,i+1] , splajnu S(α) dla pewnego α ∈ [a, b]. Rozważymy dwa przy-


 2
 (x−i)(i+2−x) + (i+3−x)(x−i−1)
padki, w zależności od tego, jak splajn jest przechowywany w

(2) x∈[i+1,i+2] ,
Bi (x) = (x−i−3) 2 2
pamięci komputera. Pierwszy będzie dotyczył tylko splajnów
2
x∈[i+2,i+3] ,

2
kubicznych, choć łatwo go uogólnić.



0 w pp.

gdzie i = −2, −1, 0, 1. Szukamy współczynników b−2 , b−1 ,


Przypadek reprezentacji splajnu kubicznego w lokal-
b0 i b1 takich, że
nych bazach potęgowych
(2) (2) (2) (2)
(x − 1)2 = b−2 B−2 (x) + b−1 B−1 (x) + b0 B0 (x) + b1 B1 (x).
Dane: x0 , x1 , . . . , xn różne i uporządkowane rosnąco
Rozbijmy zadanie na podprzedziały [0, 1] i [1, 2], których węzły,
suma daje dziedzinę splajnu. Dla x ∈ [0, 1] powyższa równość a0 , a1 , . . . , an−1
przyjmuje postać b0 , b1 , . . . , bn−1
2 2 c0 , c1 , . . . , cn−1
(x − 1)2 = b−2 (x−1)
2 + b−1 (x+1)(1−x)+(2−x)x
2 + b0 x2 , d0 , d1 , . . . , dn−1 współczynniki S w lokalnych ba-
zach potęgowych,
którą można przekształcić następująco
α ∈ [x0 , xn ] punkt, w którym chcemy obliczać
(x − 1)2 = b−2 x
2
−2x+1 2
+ b−1 −2x +2x+1
2
+ b0 x2 , wartość splajnu,
2 2
x2 − 2x + 1 = b−2 −2b−1 +b0 2
x + −2b−22+2b−1 x + b−2 +b −1 Wynik: S(α) wartość splajnu w punkcie α
2 2
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 111

Rozwiązanie dzieli się na dwie części. Po pierwsze trzeba Przypadek reprezentacji splajnu w bazie B–
znaleźć j ∈ 0, 1, . . . , n − 1 takie, że α ∈ [xj , xj+1 ). Jeśli splajnów
α = xn , to przyjmujemy j = n − 1.
α Tym razem rozważamy splajny k-tego rzędu dla ustalonej
r - liczby naturalnej k.
x0 x1 x2 . . . xj xj+1 . . . xn
Dane: x0 , x1 , . . . , xn różne i uporządkowane ro-
Jeśli węzły są dowolne, to można znaleźć j metodą bisekcji
snąco węzły,
kosztem dlog2 ne. W metodzie tej obliczamy indeks
b−k , b−k+1 , . . . , bn−1 współczynniki S bazie B–

0+n
 splajnów,
s= α ∈ [x0 , xn ], punkt, w którym chcemy ob-
2
liczać wartość splajnu,
węzła i rozstrzygamy, czy α leży w przedziale [x0 , xs ), czy Wynik: S(α) wartość splajnu w punkcie α
w [xs , xn ). W ten sposób odrzucamy mniej więcej połowę
węzłów. Po dokonaniu rozstrzygnięcia stosujemy to samo Splajn S zapisany w bazie B–splajnów ma postać
postępowanie do przedziału, w którym jest α. Kontynuujemy n−1
tak długo, aż krańcami przedziału będą sąsiednie węzły. (k)
X
S(x) = bi Bi (x),
α i=−k
r -
α ∈ [x0 , x6 ) x0 x1 x2 x3 x4 x5 x6 zatem
n−1
(k)
X
α S(α) = bi Bi (α),
r -
i=−k
x0 x1 x2 x3 x4 x5 x6
α ∈ [x3 , x6 ) s=b 2 c=3
0+6 Podobnie jak poprzednio pierwszą czynnością będzie zloka-
lizowanie przedziału, w którym punkt α się znajduje, czyli
α znalezienie j takiego, że α ∈ [xj , xj+1 ). Jak poprzednio
r -
x0 x1 x2 x3 x4 x5 x6 przyjmujemy j = n − 1, gdy α = xn .
α ∈ [x4 , x6 ) s = b 3+6 c = 4 (k)
2 Ponieważ nośnikiem funkcji bazowej Bi jest przedział
α [xi , xi+k+1 ], to część składników sumy będzie równa zeru. Są
r (k)
to mianowicie te, dla których Bi (α) = 0, czyli dla indeksów
-
x0 x1 x2 x3 x4 x5 x6
α ∈ [x4 , x5 ) s = b 4+6 c = 5 i spełniających zależność
2
szukany indeks: j = 4 (xj , xj+1 ) ∩ (xi , xi+k+1 ) = ∅,
co daje warunki
W przypadku węzłów równoodległych xi = a + ih, i =
0, 1, . . . , n szukane j wynosi i > j + 1 lub i + k + 1 6 j.
Stąd
 
α−a
j= , j
h X (k)
S(α) = bi Bi (α).
co można obliczyć kosztem 1 ops +1 opm. i=j−k

Suma składa się jedynie z k + 1 składników.


 α−a -
Przedstawię poniżej algorytm de Boora służący do obliczania
h- α
r - wartość powyższej sumy. W jego wyprowadzeniu korzystamy
a=x0 x1 x2 x3 x4 x5 x6 x7 z definicji rekurencyjnej B–splajnów.
Po zlokalizowaniu przedziału, w którym mieści się α należy j
sięgnąć do odpowiedniej tabelki współczynników i obliczyć S(α) = (k)
X
bi Bi (α)
S(α) algorytmem Hornera kosztem 4 ops +3 opm. i=j−k

pom = alpha - x[j]; j


X  α − xi 
(k−1) xi+k+1 − α (k−1)
S = a[j] + pom * (b[j] + pom * (c[j] + pom*d[j])); = bi B (α) + B (α)
xi+k − xi i xi+k+1 − xi+1 i+1
i=j−k
Koszt obliczenia S(α) jest więc następujący j
X α − xi (k−1)
j
X xi+k+1 − α (k−1)
= bi B (α)+ bi B (α)
węzły koszt czasowy xi+k −xi i xi+k+1 −xi+1 i+1
i=j−k i=j−k
równoodległe 5 ops +4 opm ]
j j+1
dowolne ops +3 opm + dlog2 ne opp X α − xi (k−1)
X xi+k − α (k−1)
= bi Bi (α) + bi−1 B (α)
xi+k − xi xi+k − xi i
Przypominam, że opp oznacza koszt porównania. i=j−k i=j−k+1

Skorzystajmy znowu z własności nośników funkcji bazowych.


(k−1)
Ponieważ Bj+1 ma nośnik [xj+1 , xj+1+k ], to
(k−1)
Bj+1 (α) = 0.
112 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Podobnie Gdy węzły są równoodległe koszt można jeszcze nieznacz-


(k−1)
Bj−k (α) = 0. nie obniżyć (o k(k−1)
2 ops). Koszt dla splajnów kubicznych
Stąd w obu powyższych sumach zakresy sumowania można zawiera poniższa tabela
przyjąć od i = j − k + 1 do j. Po połączeniu sum otrzymamy węzły koszt czasowy
równoodległe 22 ops +19 opm
j
dowolne (24 ops +18 opm) + dlog2 ne opp
 
xi+k −α (k−1)
S(α) = α−xi
+ Bi+1 (α)
P
xi+k −xi bi xi+k −xi bi−1
i=j−k+1
Przy węzłach równoodległych mamy koszt niemal pięciokrot-
j
=
P
(βi bi + (1 −
(k−1)
βi )bi−1 ) Bi (α), nie wyższy niż w przypadku lokalnych baz potęgowych.
i=j−k+1
Przedstawiony algorytm de Boora jest numerycznie po-
gdzie prawny, wskaźniki kumulacji są tu rzędu k. Uwarunkowanie
α − xi zadania jest znacznie lepsze niż w przypadku lokalnych baz
βi = , potęgowych.
xi+k − xi
a ponieważ
α − xi xi+k − α
+ = 1, 5.2.3 Pytania powtórzeniowe
xi+k − xi xi+k − xi
to 1. Opisz, na czym polega sposób przechowywania splajnów
xi+k − α
= 1 − βi . kubicznych w lokalnych bazach potęgowych.
xi+k − xi
Zauważmy, że liczby βi zależą od α. Obecnie można już sfor- 2. Opisz, na czym polega sposób przechowywania splajnów
mułować algorytm — należy tak długo korzystać z definicji w bazie B–splajnów.
rekurencyjnej, aż dojdziemy do funkcji bazowych rzędu zero. 3. Dla zadanego układu węzłów x0 < x1 < . . . < xn oraz
W każdym kroku suma ulega skróceniu o 1. α ∈ [x0 , xn ) opisz algorytm bisekcji znajdowania takiego
j, że α ∈ [xj , xj+1 ).
współczynniki s
bj−k bj−k+1 bj−k+2 ... bj−2 bj−1 bj k 4. Dla zadanego układu węzłówx0 < x1 < . . . < xn , które
& ↓ & ↓ & ↓ & ↓ & ↓ są równoodległe oraz α ∈ [x0 , xn ] opisz algorytm oblicza-
bj−(k−1) bj−k+2 ... bj−2 bj−1 bj k−1 nia S(α), gdzie S jest splajnem kubicznym zapisanym
& ↓ & ↓ & ↓ & ↓ w lokalnych bazach potęgowych.
bj−(k−2) . . . bj−2 bj−1 bj k−2 5. Dany jest układ węzłów x0 < x1 < . . . < xn oraz
.. .. ..
. . . α ∈ [xj , xj+1 ) dla pewnego j. Które składniki sumy
bj−1 bj 1 n−1
& ↓ X (k)
S(α) = bi Bi (α)
bj 0
i=−k

Algorytm przebiega kolejne wiersze z góry na dół. Każdy są równe zeru i dlaczego?
wiersz obliczany jest od prawej do lewej, by móc posługiwać
się jedną tablicą do przechowywania kolejnych współczynni-
ków. Dla ułatwienia zapisu indeksy tablic nie są numerowane 5.2.4 Ćwiczenia sprawdzające zrozumienie
od zera. Zmienna beta zawiera kolejne wartości βi . tematu
for(s = k-1; s >= 0; s--)
for(i = j; i >= j-s; i--) { Zadanie 205 Zapisz splajn kubiczny S(x) = x oparty
beta = (alfa-x[i]) / (x[i+s+1]-x[i]); na węzłach −1, 0, 1 w lokalnych bazach potęgowych.
b[i] = b[i]*beta + b[i-1]*(1-beta);
}
wynik = b[j]; 5.2.5 Zadania

Wyznaczmy koszt tego algorytmu. W treści pętli wewnętrz- Zadanie 206 Niech n > 1 oraz punkty xi będą rów-
nej wykonywane są 4 dodawania i 3 mnożenia, koszt tej pętli noodległe w przedziale [x0 , xn ).Dane są współczynniki
to (s + 1)(4 ops +3 opm). Całkowity koszt algorytmu to ai , bi , ci , di dla i = 0, 1, ..., n − 1 splajnu kubicznego S
k−1
zapisanego w lokalnych bazach potęgowych:
X k(k + 1)
(s + 1)(4 ops +3 opm) = (4 ops +3 opm). = ai + bi (x − xi ) + ci (x − xi )2 + di (x − xi )3 ,
s=0
2 S(x)
dla x ∈ [xi , xi+1 ), i = 0, 1, ..., n − 1.
Należy pamiętać też o koszcie wyznaczenia j.
Zapisz możliwie tani algorytm obliczania wartości
węzły koszt czasowy
k(k+1)
splajnu S w punkcie x ∈ [x0 , xn ). Wykorzystaj schemat
równoodległe 2 (4 ops +3 opm) + ops + opm Hornera. Napisz w języku C funkcję, która ten algorytm
k(k+1)
dowolne 2 (4 ops +3 opm) + dlog2 ne opp realizuje i przetestuj ją w funkcji main.
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 113

Zadanie 207 Niech n > 1 oraz punkty xi będą równo-


odległe w przedziale [x0 , xn ). Dane są współczynniki ai ,
bi , ci , di dla i = 0, 1, ..., n − 1 funkcji f określonej na
przedziale [x0 , xn ) wzorem

f (x) = ai + bi (x − xi ) + ci (x − xi )2 + di (x − xi )3 ,
dla x ∈ [xi , xi+1 ), i = 0, 1, ..., n − 1.

Zapisz możliwie tani algorytm sprawdzania, czy f jest


splajnem kubicznym oraz jeśli jest, to jakiego rodzaju
(okresowy, prawo-, lewostronnie swobodny, inny). Na-
pisz w języku C funkcję, która ten algorytm realizuje i
przetestuj ją w funkcji main.

Zadanie 208 Zapisz algorytm de Boora w przypadku


węzłów równoodległych. Czy zmieni się jego koszt?
114 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

5.3 Interpolacja splajnami kubicz- przy czym niewiadomych jest n + 3, a równań n + 1. Jest to
układ niesprzeczny, zatem ma nieskończenie wiele rozwiązań.
nymi Aby miał on jedyne rozwiązanie warunkiem koniecznym jest
dodanie dwóch równań. Okazuje się, że jeśli zrobi się to na
5.3.1 Sformułowanie zadania jeden z poniższych sposobów, to S będzie wyznaczony jed-
noznacznie.2 Wybrane sposoby są używanymi w zadaniach
praktycznych.
Dany jest układ węzłów x0 < x1 < . . . < xn , oraz wartości
funkcji f w tych węzłach. Chcemy interpolować f splajnem 1. S 00 (x0 ) = 0, S 00 (xn ) = 0
kubicznym S opartym na zadanych węzłach. Ma on zatem Rozwiązaniem zadania interpolacji będzie wtedy splajn
spełniać równania interpolacyjne naturalny.

S(xi ) = f (xi ), dla i = 0, . . . , n. 2. S 00 (x0 ) = 0, S 0 (x0 ) = f 0 (x0 )


Uzyskamy splajn lewostronnie swobodny z narzuconym
warunkiem na pochodną w lewym krańcu (czyli współ-
Dane: x0 , x1 , . . . , xn różne i uporządkowane ro- czynnikiem kierunkowym prostej, która może przedłu-
snąco węzły żyć splajn w kierunku −∞ z zachowaniem dwóch cią-
f(x0 ), f(x1 ),. . ., f(xn ) wartości funkcji w węzłach głych pochodnych).
Wynik: S splajn kubiczny oparty na
danych węzłach spełniający 3. S 00 (xn ) = 0, S 0 (xn ) = f 0 (xn )
równania f (xi ) = S(xi ) Splajn prawostronnie swobodny z warunkiem na po-
dla i = 0, 1, . . . , n chodną w prawym krańcu.
4. S 0 (x0 ) = f 0 (x0 ), S 0 (xn ) = f 0 (xn )
Uzyskamy tzw. splajn hermitowski. Węzły wewnętrzne
są jednokrotne, zaś brzegowe dwukrotne.
5. S(x0 ) = S(xn ), S 0 (x0 ) = S 0 (xn ), S 00 (x0 ) = S 00 (xn )
Uzyskamy splajn okresowy. Choć widoczne są trzy
dodatkowe równania, to faktycznie są dwa. Pierwsze
stanowi jedynie opis, kiedy można taki sposób dodania
równań zastosować. Mianowicie wśród równań interpo-
lacyjnych są

S(x0 ) = f (x0 ),
S(xn ) = f (xn ).

Podobnie jak przy interpolacji Lagrange’a do zapisu danych


można stosować tabelkę interpolacyjną Z nich i równania S(x0 ) = S(xn ) wynika, że f (x0 ) =
f (xn ). Jeśli tak nie będzie, to interpolacja splajnem
x0 x1 ... xn okresowym nie będzie możliwa.
.
f (x0 ) f (x1 ) ... f (xn )
6. S(x−1 ) = f (x−1 ), S(xn+1 ) = f (xn+1 )
Przed przystąpieniem do opracowania algorytmu należy od- Ten sposób stosuje się jedynie przy reprezentacji w bazie
powiedzieć na dwa pytania. B–splajnów. Węzły x−1 oraz xn+1 pochodzą z siatki
1. Czy istnieje taki splajn S? rozszerzonej.
2. Czy S jest wyznaczony jednoznacznie?
Okazuje się, że istnieje, ale nie jedyny. Przestrzeń splajnów 5.3.2 Wyznaczenie współczynników w lo-
kubicznych jest wymiaru n + 3, czyli aby wyznaczyć splajn kalnych bazach potęgowych splajnu
S wystarczy znać jego n + 3 współczynniki w dowolnej naturalnego interpolującego funkcję
bazie. Ustalmy zatem bazę u1 , u2 , . . . , un+3 . Szukamy takich
a1 , a2 , . . . , an+3 ∈ R, że Dane: x0 , x1 , . . . , xn różne i uporządkowane ro-
snąco węzły
S(x) = a1 u1 (x) + a2 u2 (x) + . . . an+3 un+3 (x). f(x0 ), f(x1 ),. . ., f(xn ) wartości funkcji w węzłach
Równania interpolacyjne prowadzą do układu równań linio-
Wyniki: a0 , a1 , . . . , an−1 współczynniki w lokalnych
wych
b0 , b1 , . . . , bn−1 bazach potęgowych
c , c , . . . , c splajnu naturalnego S
a1 u1 (x0 ) + a2 u2 (x0 ) + . . . + an+3 un+3 (x0 ) = f (x0 ),

0 1 n−1
interpolującego f

a1 u1 (x1 ) + a2 u2 (x1 ) + . . . + an+3 un+3 (x1 ) = f (x1 ),

 d 0 , d 1 , . . . , d n−1

.. 2 Za dowody można uznać wyprowadzenia algorytmów w następnych




 . punktach. Obejmą one dwa przypadki, ale reszta przebiega podobnie.
a1 u1 (xn ) + a2 u2 (xn ) + . . . + an+3 un+3 (xn ) = f (xn ),


Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 115

Układ równiań Wzory obowiązujące z lewej i prawej strony węzła wewnętrz-


nego xi+1 muszą dać te same wartości dla x = xi+1 . Stąd z
Przypomnijmy, że splajn S reprezentowany w lokalnych ciągłości S
bazach potęgowych wyraża się dla x ∈ [xi , xi+1 ] wzorem
ai + bi (xi+1 − xi ) + ci (xi+1 − xi )2 + di (xi+1 − xi )3 = ai+1 ,
S(x) = ai + bi (x − xi ) + ci (x − xi ) + di (x − xi ) .
2 3

z ciągłości pierwszej pochodnej


Korzystając z tego przedstawienia i z równań interpolacyj-
nych bi + 2ci (xi+1 − xi ) + 3di (xi+1 − xi )2 = bi+1 ,
S(xi ) = f (xi ), i = 0, 1, . . . , n − 1,
z ciągłości drugiej pochodnej
otrzymujemy
a = f (x ), i = 0, 1, . . . , n − 1. 2ci + 6di (xi+1 − xi ) = 2ci+1 ,
i i

gdzie i = 0, 1, . . . , n − 2. Podstawiając hi = xi+1 − xi i


W ostatnim przedziale [xn−1 , xn ] splajn S ma postać porządkując te równania otrzymujemy
S(x) = an−1 + bn−1 (x − xn−1 ) + cn−1 (x − xn−1 )2 + bi hi + ci h2i + di h3i = ai+1 − ai ,
+dn−1 (x − xn−1 ) , 3
2ci hi + 3di h2i = bi+1 − bi ,
3di hi = ci+1 − ci , i = 0, 1, . . . , n − 2.
z której należy skorzystać by napisać ostatnie równanie
interpolacyjne S(xn ) = f (xn ). Aby skrócić zapis stosuję
Wszystkie równania w ramkach dają układ 4n równań z
oznaczenie hn−1 = xn − xn−1
4n niewiadomymi. Po podstawieniu ai = f (xi ) dla i =
an−1 + bn−1 hn−1 + cn−1 h2n−1 + dn−1 h3n−1 = f (xn ). 0, 1, . . . , n − 1 otrzymamy układ

bi hi + ci hi + di hi = f (xi+1 ) − f (xi ), i = 0, 1, . . . , n − 1,



2 3
Wiemy, że S jest naturalny, czyli S 00 (x0 ) = S 00 (xn ) = 0. 
2ci hi + 3di hi = bi+1 − bi , i = 0, 1, . . . , n − 2,
 2
Obliczmy pierwszą i drugą pochodną splajnu S w [xi , xi+1 ]: 


3d h = c

i = 0, 1, . . . , n − 2,
i i i+1 − ci ,
S 0 (x) = bi + 2ci (x − xi ) + 3di (x − xi )2 ,
3dn−1 hn−1 = 0 − cn−1 ,
S 00 (x) = 2ci + 6di (x − xi ).



c = 0,


 0


Dwa następne równania wyrażają zerowanie się drugich po- ai = f (xi ), i = 0, 1, . . . , n − 1.
chodnych w krańcowych węzłach
Zauważmy, że równania z trzeciej i czwartej linii są podob-
2c0 = 0, nej postaci. Układ da się zapisać bardziej elegancko, jeśli
2cn−1 + 6dn−1 (xn − xn−1 ) = 0. wprowadzimy pomocnicze oznaczenie cn = 0 i połączymy
te dwie linie. Przy okazji przekształćmy pierwszą grupę
Po uproszczeniu i podstawieniu hn−1 = xn − xn−1 otrzymu-
równań. Podzielmy je przez hi (odpowiednio) i zauważmy,
jemy
że
c0 = 0, f (xi+1 ) − f (xi ) f (xi+1 ) − f (xi )
= = fxi ,xi+1
cn−1 + 3dn−1 hn−1 = 0. hi xi+1 − xi
jest różnicą dzieloną pierwszego rzędu. Zatem mamy układ
Jak dotąd napisaliśmy n + 3 równania (te w ramkach), a
bi + ci hi + di hi = fxi ,xi+1 , i = 0, 1, . . . , n − 1,

2
niewiadomych jest 4n. Brakujące równania opiszą tzw. wa- 
runki dobrego sklejenia. Przypomnijmy, że wzięcie dowol- 2ci hi + 3di h2i = bi+1 − bi , i = 0, 1, . . . , n − 2,



nych współczynników ai , bi , ci , di nie gwarantuje uzyskania

3d h = c

i = 0, 1, . . . , n − 1,
i i i+1 − ci ,
funkcji, która jest splajnem, bo może ona nie mieć dwóch
c0 = 0,
ciągłych pochodnych. Ciągłość jest zagrożona w węzłach



cn = 0,

wewnętrznych x1 , x2 , . . . , xn−1 , gdyż z lewej i prawej strony



ai = f (xi ), i = 0, 1, . . . , n − 1.

każdego takiego węzła mamy do czynienia z różnymi wielo-

mianami.
' $ Przykład Napiszemy równania pozwalające wyznaczyć
S(x) = ai+1 + bi+1 (x − xi+1 ) + ci+1 (x − xi+1 )2 + współczynniki splajnu kubicznego obustronnie swobodnego
+di+1 (x − xi+1 )3 , interpolującego funkcję f (x) = ln x w węzłach 1, e, e2 .
S (x) = bi+1 + 2ci+1 (x − xi+1 ) + 3di+1 (x − xi+1 ) ,
0 2

S 00
(x) = 2ci+1 + 6di+1 (x − xi+1 ) Mamy trzy węzły definiujące splajn, zatem dwa przedziały,
& % w lokalnych bazach potęgowych S ma postać
(
S1 (x) dla x ∈ [1, e],
?
S(x) =
z }| { -
S2 (x) dla x ∈ [e, e2 ],
| {z }
xi xi+1 xi+2
6
' $
S(x) = ai + bi (x − xi ) + ci (x − xi )2 + di (x − xi )3 , gdzie
S (x) = bi + 2ci (x − xi ) + 3di (x − xi ) ,
0 2
S1 (x) = A + B(x − 1) + C(x − 1)2 + D(x − 1)3 ,
S 00 (x) = 2ci + 6di (x − xi )
& % S2 (x) = E + F (x − e) + G(x − e)2 + H(x − e)3 .
116 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Szukamy współczynników A, B, C, D, E, F, G, H. W dalszej Stąd obliczamy bi dla i = 0, 1, . . . , n − 1


części przydadzą się wzory na pochodne
ci+1 − ci
bi = fxi ,xi+1 − ci hi − hi
S1 (x) = B + 2C(x − 1) + 3D(x − 1) ,
0 2 3
ci+1 + 2ci
S20 (x) = F + 2G(x − e) + 3H(x − e)2 , = fxi ,xi+1 − hi .
3
S1 (x) = 2C + 6D(x − 1),
00
Wstawiamy bi oraz di do drugiej grupy równań
S200 (x) = 2G + 6H(x − e).
ci+2 + 2ci+1
Splajn ma interpolować funkcję f , zatem 2ci hi + (ci+1 − ci )hi = fxi+1 ,xi+2 − hi+1
3
ci+1 + 2ci
S(1) = f (1), −fxi ,xi+1 + hi .
3
S(e) = f (e),
Po uporządkowaniu otrzymujemy
S(e2 ) = f (e2 ).
ci ci+1 ci+2
hi + 2 (hi+1 + hi ) + hi+1 = fxi+1 ,xi+2 − fxi ,xi+1 .
Aby powyższe wzory opisywały splajn trzeba zagwarantować, 3 3 3
by S był klasy C 2 , czyli Zauważmy, że gdy obie strony podzielimy przez hi+1 + hi ,
to z prawej mamy
S1 (e) = S2 (e),
S10 (e) = S20 (e), fxi+1 ,xi+2 − fxi ,xi+1 fx ,x − fxi ,xi+1
= i+1 i+2 = fxi ,xi+1 ,xi+2 .
S100 (e) = S200 (e). hi+1 + hi xi+2 − xi
Ponadto, ponieważ z lewej strony wszystkie wyrazy ci , ci+1 ,
Ponadto splajn ma być obustronnie swobodny, czyli ci+2 są dzielone przez 3, to warto wprowadzić pomocnicze
niewiadome e ci = c3i dla i = 0, 1, . . . , n. Notacja będzie krót-
S 00 (1) = 0, hi+1
sza, gdy przyjmiemy Pi+1 = hi+1hi+hi oraz Ri+1 = hi+1 +hi .
S (e )
00 2
= 0.
Wtedy otrzymamy
Możemy zatem napisać osiem równań z ośmioma niewiado-
ci Pi+1 + 2eci+1 + e ci+2 Ri+1 = fxi ,xi+1 ,xi+2
mymi:
e
 dla i = 0, 1, . . . , n − 2. Po uwzględnieniu, że c0 =

 A = 0, cn = 0 powstaje układ równań liniowych z niewiadomymi
E = 1,



 c
e1, e
c2 , . . . , e
cn−1
E + F (e2 − e) + G(e2 − e)2 + H(e2 − e)3 = 2,


2ec1 + e c2 R1 = fx0 ,x1 ,x2 ,

 
A + B(e − 1) + C(e − 1)2 + D(e − 1)3 = E,
 

+ 2e
c2 + e
c3 R2 = fx1 ,x2 ,x3 ,

 c P
B + 2C(e − 1) + 3D(e − 1)2 = F, 1 2

 e
 
c P + 2e c3 + e
c4 R3 = fx2 ,x3 ,x4 ,

 

2C + 6D(e − 1) = 2G,  2 3

 
 e
..


2C = 0, .



 
2G + 6H(e2 − e) = 0. cn−4 Pn−3 + 2e cn−3 + e cn−2 Rn−3 = fxn−4 ,xn−3 ,xn−2 ,

 

 e
 

cn−3 Pn−2 + 2e cn−2 + e cn−1 Rn−2 = fxn−3 ,xn−2 ,xn−1 ,



 e

cn−2 Pn−1 + 2e cn−1 = fxn−2 ,xn−1 ,xn ,

e
Rozwiązanie układu równań
W postaci macierzowej zapisujemy go następująco
Naszym obecnym zadaniem jest rozwiązanie układu 2 R1 0
  
c1
e
P2 2 R2
  c2 
 e 
+ + = = 0, 1, 1,

2
b c h d h f , i . . . , n − 2


 i i i i i x ,x
i i+1
 P 3 R 3 c
 3 
  e 
2ci hi + 3di hi = bi+1 − bi , i = 0, 1, . . . , n − 2, . . . .
 
2
.. .. ..   .. 

    

 
3d h = c

i = 0, 1, . . . , n − 1,
i+1 − ci , 2
  
i i  Pn−3 Rn−3  cn−3 
 e 
c0 = 0, 2


  Pn−2 Rn−2  e
cn−2 
0 2

c = 0, P cn−1

n−1

 n e

ai = f (xi ), i = 0, 1, . . . , n − 1.

  
fx0 ,x1 ,x2
 fx1 ,x2 ,x3
Odbywa się to częściowo metodą podstawień. Z trzeciej

 
 fx2 ,x3 ,x4
grupy równań wyznaczamy di

.
 
=
 .. .

ci+1 − ci
di = , i = 0, . . . , n − 1
 
fxn−4 ,xn−3 ,xn−2 
3hi

 
fxn−3 ,xn−2 ,xn−1 
i podstawiamy do pierwszej grupy fxn−2 ,xn−1 ,xn

ci+1 − ci Jest on specjalnej postaci: z tzw. macierzą trójdiagonalną.


bi + ci hi + hi = fxi ,xi+1 . Oznacza to, że oprócz głównej diagonali i dwóch sąsiednich
3
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 117

kodiagonali reszta macierzy jest wypełniona zerami. Ponadto


Po wykonaniu tego kroku
ma własność dominującej diagonali czyli, że wartości stojące
na głównej przekątnej są co do modułu większe niż suma fx0 ,x1 jest w f[1]
modułów pozostałych wyrazów wiersza. Rzeczywiście fxi−2 ,xi−1 ,xi jest w f[i] dla i = 2, 3, . . . , n
hi jest w h[i] dla i = 0, 1, . . . , n − 1
hi hi+1
Pi+1 + Ri+1 = + = 1 < 2, hi + hi−1 jest w R[i] dla i = 1, 2, . . . , n − 1
hi+1 + hi hi+1 + hi
dla i = 2, . . . , n − 2, również for (i = n; i >= 1; i--) {
R1 < 2, h[i-1] = x[i] - x[i-1];
f[i] = (f[i] - f[i-1]) / h[i-1];
Pn−1 < 2. }
Można udowodnić, że taka macierz jest nieosobliwa oraz for (i = n; i >= 2; i--) {
zadanie rozwiązania układu równań z nią jest dobrze uwa- R[i-1] = x[i] - x[i-2];
runkowane. Numerycznie poprawny algorytm rozwiązywania f[i] = (f[i] - f[i-1]) / R[i-1];
tego układu przedstawię później. }

Po obliczeniu wszystkich współczynników e


ci należy po kolei Krok 3
obliczać
Oblicz równocześnie kodiagonale, umieść wyniki w tabli-
ci+1 − e ci
di = , i = 0, 1, . . . , n − 1, cach P i R.
e
hi
ci = 3e
ci , i = 1, 2, . . . , n − 1, R[1] = h[1] / R[1];
potem bi . Wzorem bi = warto się jedynie for (i = 2; i <= n-2; i--) {
fxi ,xi+1 − ci+13+2ci hi
posłużyć dla i = 0, natomiast taniej będzie pozostałe wyrazy P[i] = h[i-1] / R[i];
obliczyć z zależności rekurencyjnej, która dana jest przez R[i] = h[i] / R[i];
drugą grupę równań }
P[n-1] = h[n-2] / R[n-1];
2ci hi + 3di h2i = bi+1 − bi , i = 0, 1, . . . , n − 2.
Stąd dla i = 0, 1, . . . , n − 2 Krok 4
Rozwiąż układ równań z macierzą trójdiagonalną o do-
bi+1 = bi + 2ci hi + 3di h2i
minującej przekątnej. Kodiagonala dolna jest zapisana w
= bi + 2ci hi + (ci+1 − ci )hi tablicy P (indeksy od 2 do n − 1), kodiagonala górna w R
= bi + (ci+1 + ci )hi . (indeksy od 1 do n − 2), wektor prawej strony w tablicy
f (indeksy od 2 do n). Rozwiązanie umieść w tablicy
c na pozycjach od indeksu 1 do n − 1 (są to liczby e ci ).
Przypisz c[0] = 0.0; c[n] = 0.0;.
Algorytm wyznaczenia współczynników splajnu
Krok 5
Algorytm będzie posługiwał się poniższymi tablicami.
Oblicz
x, f — węzły i wartości funkcji (indeksy od 0 do n), di = (e ci )/hi
ci+1 − e
a, b, c, d — współczynniki (indeksy od 0 do n − 1),
h — robocza przechowująca hi (indeksy od 0 do i umieść w d[i] dla i = 0, 1, . . . , n − 1. Oblicz
n − 1),
P — robocza, do zapamiętania dolnej kodiagonali b0 = fx0 ,x1 − e
c1 h0
(indeksy od 2 do n − 1),
i zapisz w b[0].
R — robocza, do zapamiętania górnej kodiagonali
(indeksy od 1 do n − 1)
Krok 6
Krok 1 Wykonaj c[i] = c[i] * 3; dla i = 1, 2, . . . , n − 1.
Wykonaj a[i] = f[i] dla i = 0, 1, . . . , n − 1.
Krok 7
Krok 2 Dla i = 0, 1, . . . , n − 2 oblicz bi+1 przy pomocy zależności
Oblicz różnice dzielone bi+1 = bi + (ci+1 + ci )hi . Wyniki zapisz w tablicy b.

fx0 ,x1 Tablica h nie jest konieczna — można nadpisać tablicę x, ale
fxi−2 ,xi−1 ,xi dla i = 2, 3, . . . , n trzeba wówczas zmienić sposób obliczania R[i] w algorytmie
różnic dzielonych.
przez wykonanie dwóch kroków algorytmu różnic dzielo- Poniższa tabela zawiera koszt czasowy całego algorytmu.
nych. Przy okazji zapamiętaj w h[i] różnicę xi+1 − xi ,
a w R[i] wielkość hi + hi−1 = xi+1 − xi−1 .
118 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

ops opm Odejmijmy od drugiego pierwsze pomnożone przez q1 .


Krok p2

1 – –
2 4n − 2 2n − 1
(
q1 x1 + r1 x2 = b1
3 – 2n − 4 (q2 − r1 pq12 )x2 + r2 x3 = b2 − b1 pq12
4 3n − 6 5n − 9
5 n+1 n+1 Wyrugowaliśmy w ten sposób niewiadomą x1 z drugiego
6 – n−1 równania. Podobnie postępujemy z równaniem drugim („no-
7 2n − 2 n−1 wym”) i trzecim
Razem 10n − 9 12n − 15 (
Jeśli użyjemy węzłów równoodległych, to koszt obniży się do qe2 x2 + r2 x3 = eb2 | · p3
q2
e
(8n−8) ops +(8n−7) opm. Dla dużych n przedstawiony algo- p3 x2 + q3 x3 + r3 x4 = b3
rytm jest tańszy niż jakikolwiek stosowany przy interpolacji
Lagrange’a. Nie będzie tak jednak dla np. 5 węzłów. po wyrugowaniu x2 z trzeciego (przez odjęcie od trzeciego
drugiego pomnożonego przez p3 ) mamy
Algorytmy dla innych sposobów dodania dwóch brakujących q2
e
równań wyprowadza się podobnie. (
qe2 x2 + r2 x3 = eb2
(q3 − r2 p3 )x3 + r3 x4 = b3 − eb2 p3 .
q2 q2
Algorytm rozwiązywania układów równań z macie-
e e
rzą trójdiagonalną o dominującej przekątnej Tak postępujemy m − 1 razy biorąc kolejne równania. Za-
uważmy, że elementy ri nie ulegają zmianie, a wszystkie pi
Zajmiemy się obecnie krokiem piątym, czyli zadaniem roz- staną się zerami.
wiązania układu równań z macierzą trójdiagonalną o domi-
for (i = 2; i <= m; i++) {
nującej przekątnej. Rozwiążemy zadanie w ogólnej postaci.
mnoz = p[i] / q[i-1];
Załóżmy, że dana jest macierz
q[i] = q[i] - mnoz * r[i-1];

q1 r1 0
 b[i] = b[i] - mnoz * b[i-1];
p2 q2 r2  }
 
 p3 q3 r3 

. . .
 Po wykonaniu tej fazy układ ma postać
A=
 .. .. .. 

    b 
pm−2 qm−2 rm−2 0
 



 q1 r1 x1 1
pm−1 qm−1 rm−1   eb 
  q
e2 r 2 x
 2  
   2 
0

pm qm q3 r 3 x b
 e 
 3   3 
 e   
.. ..   ..  =  .. 
.

przy czym . .  .   . 
 
   

qem−1 rm−1  xm−1  ebm−1 
  
|pi | + |ri | < |qi |, dla i = 2, 3, . . . , m − 1, 0 qem xm ebm
|r1 | < |q1 |,
|p | < |q |. Z ostatniego równania
m m

Naszym zadaniem jest rozwiązanie układu równań qem xm = ebm

wyznaczamy
A~x = ~b, ebm
xm = .
przy zadanym wektorze prawej strony ~b ∈ R . m qem
Dane: p2 , p3 , . . . , pm dolna kodiagonala, Z przedostatniego
q1 , q2 , . . . , qm diagonala,
qem−1 xm−1 + rm−1 xm = ebm−1
r1 , r2 , . . . , rm−1 górna kodiagonala,
b0 , b1 , . . . , bm wektor prawej strony, obliczamy xm−1 (bo xm jest już znane)
Wyniki: x1 , x2 , . . . , xm wektor rozwiązania
ebm−1 − rm−1 xm
xm−1 = ,
Algorytm działa w dwóch fazach. Pierwsza polega na takim qem−1
przekształceniu układu równań, by otrzymać równoważny
z macierzą dwudiagonalną. W tym celu wielokrotnie wy- i tak dalej, aż otrzymamy x1 .
konamy operację odjęcia od równania innego równania po- x[m] = b[m] / q[m];
mnożonego przez stałą. Druga faza to rozwiązanie układu z for (i = m - 1; i >= 1; i--)
macierzą dwudiagonalną. x[i] = (b[i] - r[i] * x[i+1]) / q[i]
Rozważmy dwa pierwsze równania.
Można udowodnić, że algorytm jest numerycznie poprawny.
Koszt fazy pierwszej to (2m−2) ops +(3m−3) opm, a drugiej
(
q1 x1 + r1 x2 = b1 |· p2
q1
(m − 1) ops +(2m − 1) opm. Całkowity koszt algorytmu
p2 x1 + q2 x2 + r2 x3 = b2 wynosi (3m − 3) ops +(5m − 4) opm.
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 119

5.3.3 Wyznaczenie współczynników ku- Jeśli zastosujemy pomocnicze oznaczenia


bicznego splajnu interpolacyjnego re-
hi = xi+1 − xi , i = −2, −1, . . . , n + 1,
prezentowanego w bazie B–splajnów
gi = xi+2 − xi , i = −3, −1, . . . , n,
Nasze rozważania zawęzimy do przypadku splajnów kubicz- Gi = xi+3 − xi , i = −3, −1, . . . , n,
nych. Można je uogólnić dla innych rzędów. Przypomnijmy,
że brakujące dwa równania dodajemy poprzez nałożenie
warunku zgodności wartości funkcji i splajnu w dwóch do- to możemy zapisać
datkowych punktach.
hi
dla j = i − 3,

Dane: x0 , x1 , . . . , xn różne i uporządkowane hi Gi−2 gi−1

(3) hi−1
rosnąco węzły B j (x i ) = gi Gi−1 gi−1 + g hi
i−2 Gi−2 gi−1 dla j = i − 2,
f(x−1 ), f(x0 ),. . ., f(xn+1 ) wartości funkcji w wę- hi−1
dla j = i − 1.

hi−1 Gi−1 gi−1

złach, przyjmujemy, że
x−1 = x0 −(x1 −x0 ) oraz Zatem zadanie wyznaczenia współczynników b−3 , . . . bn−1
xn+1 = xn + (xn − xn−1 ) sprowadza się do rozwiązania układu równań A~b = f~, gdzie
Wyniki: b−3 , b−2 , . . . , bn−1 współczynniki splajnu
0
 
interpolacyjnego w bazie q−3 r−3
p−1 q−1 r−1
B–splajnów

 
 p0 q0 r0 
.. .. ..
 
Warunki interpolacyjne S(xi ) = f (xi ) dla i = −1, 0, . . . , n+1 A= . . .
 

dają równania
 

 p n−3 qn−3 r n−3


n−1
 p n−2 qn−2 r n−2

(3) 0 p q
X
b B (x ) = f (x ) dla i = −1, 0, . . . , n + 1.
j j i i
n−1 n−1

j=−3
(3) (3) (3)
pi = Bi−3 (xi ), qi = Bi−2 (xi ), pi = Bi−1 (xi ),
Większość składników powyższej sumy jest zerami, bo nośnik    
(3) (3) b−3 f−1
funkcji Bj to [xj , xj+4 ], zatem Bj (xi ) 6= 0 jedynie dla  b−2   f0 
j = i − 1, i − 2, i − 3. Stąd powyższe równania redukują się  
 b−1 

 f1 

do
.   . 
   
~b =  ..  f~ =  .. 
(3) (3)
b−3 B−3 (x−1 ) + b−2 B−2 (x−1 ) = f (x−1 ),
   
bn−3  fn−1 
   
(3) (3) (3) bn−2   fn 
bi−3 Bi−3 (xi ) + bi−2 Bi−2 (xi ) + bi−1 Bi−1 (xi ) = f (xi ),
bn−1 fn+1
i = 0, 1, . . . , n
(3)
bn−2 Bn−2 (xn+1 ) +
(3)
bn−1 Bn−1 (xn+1 ) = f (xn+1 ), Jeśli zastosujemy pomocnicze tablice (wystarczą dwie do
zapamiętania hi i gi ), to wyliczenie elementów macierzy
kosztuje (4n + 15) ops +(8n + 22) opm. Macierz jest trójdia-
Należy obliczyć odpowiednie wartości Bj (xi ). Można tego gonalna z dominującą przekątną, koszt rozwiązania układu
(3)

dokonać stosując definicję rekurencyjną B–splajnów. Pozo- równań wynosi (3n + 6) ops +(5n + 11) opm. Całkowity
stawiam jako ćwiczenie udowodnienie, że koszt algorytmu to (7n + 21) ops +(13n + 33) opm, zatem
porównywalny z tym dla reprezentacji w lokalnych bazach
potęgowych.
(
(0) 1 dla j = i,
Bj (xi ) =
0 w p.p., Dla węzłów równoodległych układ się znacznie upraszcza,
( otrzymujemy macierz
(1) 1 dla j = i − 1,
Bj (xi ) =
4 1 0
 
0 w p.p.,
 xi+1 −xi 1 4 1 
 xi+1 −xi−1 dla j = i − 2, 1 4 1
 
1
  
(2) i −xi−1 ·
Bj (xi ) = xxi+1 dla = 1, . . . ,
 
j i − 6 . . .
 −x i−1  . . . 
0 w p.p.,

1 4 1
 
 
0 1 4
 2
(x −x )
 i+1 i
 (xi+1 −xi−2 )(xi+1 −xi−1 )
 dla j = i − 3,
(x −x )(x −x )
−xi−2 )(xi+1 −xi−1 ) +

 (xi+1i+1 i i i−2
a koszt redukuje się do (3n + 6) ops +(6n + 14) opm (taniej



(3) (xi −xi−1 )(xi+2 −xi )
Bj (xi ) = + (xi+2 −xi−1 )(xi+1 −xi−1 ) dla j = i − 2, niż dla lokalnych baz potęgowych).
(xi −xi−1 )2

dla j = i − 1,


(xi+2 −xi−1 )(xi+1 −xi−1 )



0

w p.p., 5.3.4 Reszta interpolacyjna

Podobnie jak przy interpolacji wielomianowej wprowadzamy


pojęcie reszty i błędu.
120 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

rozważać punkty płaszczyzny di ∈ R2 i otrzymać krzywą na


Definicja 52 Niech f będzie funkcją interpolowaną, a
płaszczyźnie
S splajnem ją interpolującym. n−1
(k)
X
Resztą interpolacyjną nazywamy funkcję s(x) = di Bi (x).
i=−k
r(x) = f (x) − S(x), Węzły są określone jak poprzednio. Parametr x należy do
przedziału [x0 , xn ]. Punkty di nazywają się punktami kon-
gdzie x należy do dziedziny f i S. trolnymi.
Błędem interpolacji na przedziale [a, b] nazywamy liczbę Algorytm de Boora działa tu dokładnie tak samo: wewnątrz
pętli obliczamy kombinację wypukłą dwóch punktów, należy
R = sup |r(x)|,
x∈[a,b] napisać osobne instrukcje dla obu współrzędnych.
Zastosowania w grafice krzywe B–sklejane zawdzięczają
zakładamy, że [a, b] jest podzbiorem dziedziny funkcji f i
swym zaletom. Mają one między innymi możliwość wpro-
S.
wadzania lokalnych zmian: przesunięcie jednego punktu
Zauważmy, że kontrolnego nie powoduje zmiany całej krzywej, lecz jedy-
R = krk[a,b] . nie okolicy tego punktu. Można stosunkowo tanio dorzucać
dodatkowe punkty, zagęszczając siatkę w miejscach o bar-
Poniższe twierdzenie podaje oszacowanie błędu interpolacji dzo skomplikowanych kształtach. Pozwala to konstruować
w przypadku, gdy funkcja posiada dwie ciągłe pochodne. krzywe metodą kolejnych przybliżeń. Krzywa leży w otoczce
wypukłej punktów kontrolnych (można sformułować nawet
Twierdzenie 31 Niech f będzie klasy C [a, b] oraz S
2
silniejszą własność), dzięki temu konstruowane krzywe inter-
będzie kubicznym splajnem naturalnym interpolującym f
polacyjne mają kształt zgodny z intuicyjnym oczekiwaniem.
w węzłach
Płaty powierzchni uzyskuje się wprowadzając dwa parame-
a = x0 < x1 < . . . < xn = b. try u, v, dwa ciągi węzłów i prostokątną tablicę punktów
kontrolnych. Osoby zainteresowane odsyłam do książki Prze-
Wtedy mysława Kiciaka „Podstawy modelowania krzywych i po-
R 6 5kf 00 k[a,b] max h2i , wierzchni z zastosowaniami w grafice komputerowej”.
i=0,...,n−1

gdzie hi = xi+1 − xi .
5.3.6 Pytania powtórzeniowe
Zauważmy, że oszacowanie reszty jest najmniejsze dla węzłów
równoodległych na przedziale [a, b]. 1. Opisz 6 sposobów dodawania brakujących dwóch rów-
Przykład Wyznaczmy oszacowanie reszty dla zadania in- nań tak, by zadanie interpolacji splajnami kubicznymi
terpolacji funkcji f (x) = ln x w węzłach 1, e, e2 . miało jednoznaczne rozwiązanie.

Korzystamy z powyższego twierdzenia 2. Co to znaczy, że macierz jest trójdiagonalna z dominu-


jącą diagonalą?
|r(x)| 6 R 6 5kf 00 kh2 , 3. Podaj definicję reszty i błędu w przypadku interpolacji
splajnami.
gdzie h oznacza maksymalną odległość między sąsiednimi
węzłami. Tutaj h = e2 − e. Ponieważ 4. Podaj twierdzenie dotyczące oszacowania błędu w przy-
padku interpolacji kubicznym splajnem naturalnym.
1 Jak wybrać węzły, by oszacowanie reszty było najmniej-
f 00 (x) = −
x2 sze?
to
kf 00 k[1,e2 ] = 1
5.3.7 Ćwiczenia sprawdzające zrozumienie
i tematu
|r(x)| 6 5e2 (e − 1)2 . 

Zadanie 209 Dana jest siatka węzłów


5.3.5 Zastosowania B–splajnów w grafice x0 = 0, x1 = 2, x2 = 4.
komputerowej
Czy splajn S(x) = x interpoluje funkcję
B–splajny znalazły zastosowanie w modelowaniu krzywych (
i powierzchni. Można mianowicie zamiast współczynników 2 sin( π4 x) dla x ∈ (−∞, 2],
f (x) =
rzeczywistych bi w przedstawieniu 2 sin( 4 x − π) + 4 dla x ∈ [2, ∞)
π

n−1
X (k) w węzłach tej siatki?
S(x) = bi Bi (x)
i=−k
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 121

5.3.8 Zadania
Zadanie 214 Niech zależności
Zadanie 210 S(t) = A + Bt + Ct2 + Dt3 , 0 6 t 6 1,
1. Napisz równania pozwalające wyznaczyć kubiczną, S(1 + u) = E + F u + Gu + Hu3 ,2
0 6 u 6 1,
okresową funkcję sklejaną opartą na węzłach
przedstawiają reprezentacje (w lokalnych bazach potę-
{0, 1, 2} gowych) prawostronnie swobodnego splajnu kubicznego
na przedziale [0, 2] spełniającego prawostronny warunek
i interpolującą w tych węzłach odpowiednio warto-
Hermite’a S 0 (2) = 1 i interpolującego tabelkę
ści
{0, 5, 0}. 0 1 2
.
Funkcję sklejaną przedstaw w lokalnych bazach 1 0 1
potęgowych.
1. Zapisz układ równań liniowych, jakie muszą speł-
2. Rozwiąż otrzymany układ równań i zapisz wyzna- niać niewiadome A, B, C, D, E, F , G, H.
czoną funkcję sklejaną.
2. Rozwiąż otrzymany układ równań i zapisz wyzna-
czony splajn.
Zadanie 211
1. Napisz równania pozwalające wyznaczyć kubiczną, Zadanie 215 Czy istnieje splajn kubiczny S oparty na
obustronnie swobodną funkcję sklejaną opartą na węzłach −2, −1, 0, 1, 2 spełniający warunki
węzłach
{−1, 0, 1} S (p) (−2) = S (p) (2) = 0 dla p = 0, 1, 2,
i interpolującą w tych węzłach tabelkę wartości S(0) = 1.

{1, 3, 2}. Czy ten splajn jest wyznaczony jednoznacznie?

Funkcję sklejaną przedstaw w lokalnych bazach


potęgowych. Zadanie 216 Dana jest funkcja
2. Rozwiąż otrzymany układ równań i zapisz wyzna- 1
f (x) = x 3 + ln x − 23 .
czoną funkcję sklejaną.
Ile węzłów wystarczy, by splajn kubiczny obustronnie
swobodny przybliżał funkcję f na przedziale [1, 32 ] z błę-
Zadanie 212 dem nie większym niż ε = 36
1
? Skorzystaj z twierdzenia
1. Napisz równania pozwalające wyznaczyć kubiczny o błędzie interpolacji.
splajn okresowy interpolujący funkcję

Zadanie 217 Funkcję f (x) = x+1 interpolujemy na



x
 2
dla x ∈ [0, 1), x

f (x) = (x − 2) dla x ∈ [1, 3),


2 przedziale [9, 19] naturalnym splajnem kubicznym w wę-
złach równoodległych. Wyznacz liczbę węzłów takich, by
(x − 4)2 dla x ∈ [3, 4],


oszacowanie reszty interpolacyjnej było nie większe niż
w węzłach {0, 1, 2, 3, 4}. Splajn przedstaw w lokal- ε = 13 . Skorzystaj z twierdzenia o błędzie interpolacji.
nych bazach potęgowych.
2. Rozwiąż otrzymany układ równań i zapisz wyzna- Zadanie 218 Napisz równania pozwalające wyznaczyć
czony splajn. współczynniki splajnu kubicznego obustronnie swobod-
nego interpolującego funkcję f (x) = ln x w węzłach 1, e,
e2 . Oszacuj wielkość błędu interpolacyjnego. Skorzystaj
Zadanie 213 z twierdzenia o błędzie interpolacji.
1. Napisz równania pozwalające wyznaczyć hermitow-
ski splajn kubiczny S interpolujący tabelkę
Zadanie 219 Funkcję f (x) = ln(x + 1, 5) chcemy przy-
−1 0 1
bliżyć z błędem maksymalnym nie większym niż 10−2 w
1 3 2 przedziale [−1, 1] funkcją interpolacyjną opartą na moż-
spełniający warunki S 0 (−1) = S 0 (1) = 0. Splajn liwie małej liczbie węzłów. Czy lepiej użyć do tego wielo-
przedstaw w lokalnych bazach potęgowych. mianu interpolacyjnego, czy interpolacyjnej, kubicznej,
naturalnej funkcji sklejanej? Skorzystaj z twierdzeń o
2. Rozwiąż otrzymany układ równań i zapisz wyzna- błędzie interpolacji.
czony splajn.
122 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

a0 = 0,

Zadanie 220 Funkcję f (x) = x10 chcemy przybliżyć z a1 = 5,



błędem maksymalnym nie większym niż 10−6 w prze- 
a1 + b1 + c1 + d1 = 0,


dziale [−1, 1] funkcją interpolacyjną opartą na możliwie 

a0 + b0 + c0 + d0 = a1 ,
małej liczbie węzłów. Czy lepiej użyć do tego wielomianu b0 + 2c0 + 3d0 = b1 ,
interpolacyjnego Lagrange’a, czy naturalnego splajnu



 c0 + 3d0 = c1 ,
kubicznego? Wyznacz zalecane węzły oraz funkcję inter-



b 0 = b1 + 2c1 + 3d1 ,

polującą. Skorzystaj z twierdzeń o błędzie interpolacji.




c0 = c1 + 3d1

15x2 − 10x3 , x ∈ [0, 1]
S(x) =
Zadanie 221 Dana jest funkcja f (x) = e 2x
oraz węzły 5 − 15(x − 1)2 + 10(x − 1)3 , x ∈ [1, 2].
x0 = − 12 , x1 = 0 i x2 = 12 . Zadanie
 211
a0 = 1,
1. Napisz równania pozwalające wyznaczyć współczyn-


a1 = 3,


niki wielomianu Lagrange’a L interpolującego funk-



 a1 + b1 + c1 + d1 = 2,
cję f w węzłach x0 , x1 i x2 .



a0 + b0 + c0 + d0 = a1 ,

2. Napisz równania pozwalające wyznaczyć współczyn-
b0 + 2c0 + 3d0 = b1 ,

niki wielomianu Hermite’a H interpolującego funk- 
c0 + 3d0 = c1 ,


cję f w pojedynczym węźle x0 oraz podwójnym 
c0 = 0,


węźle x1 .



c1 + 3d1 = 0
3. Napisz równania pozwalające wyznaczyć współczyn- 
1 + 11 (x + 1) − 34 (x + 1)3 x ∈ [−1, 0].
4
niki splajnu kubicznego S (w lokalnych bazach potę- S(x) =
3 + 21 x − 94 x2 + 43 x3 x ∈ [0, 1]
gowych), obustronnie swobodnego, interpolującego Zadanie 212
funkcję f w węzłach x0 , x1 i x2 .

 a0 = 0,

4. Podaj oszacowania błędów dla powyższych zadań in- a1 = 1,




terpolacji w najmniejszym przedziale zawierającym



 a1 + b1 + c1 + d1 = 0,
wszystkie węzły x0 , x1 i x2 . Skorzystaj z twierdzeń

a0 + b0 + c0 + d0 = a1 ,

o błędzie interpolacji. 
 b0 + 2c0 + 3d0 = b1 ,

c0 + 3d0 = c1 ,
Równania zapisz używając symboli L, H, S.




b0 = b1 + 2c1 + 3d1 ,




c0 = c1 + 3d1
Zadanie 222 Dla danych węzłów x0 < x1 < . . . < xn  2
3x − 2x3 x ∈ [0, 1]
i wartości f (xi ), i = 0, 1, . . . , n budujemy wielomian

 2 3
1 − 3(x − 1) + 2(x − 1) x ∈ [1, 2]

interpolacyjny Lagrange’a Ln zapisany w bazie Newtona S(x) =
3(x − 2)2 − 2(x − 2)3 x ∈ [2, 3]
i naturalny splajn kubiczny Sn zapisany w bazie B–


1 − 3(x − 3) + 2(x − 3)3
2

x ∈ [3, 4]
splajnów.
Zadanie
 213
1. Co jest tańsze (dla dużych n): budowa Ln czy Sn ? 
 a0 = 1,
a1 = 3,


2. Co jest tańsze (dla dużych n): obliczanie wartości



 a1 + b1 + c1 + d1 = 2,
Ln (x) czy Sn (x) dla zadanego x?



a0 + b0 + c0 + d0 = a1 ,

b0 + 2c0 + 3d0 = b1 ,



Zadanie 223 Niech n > 2. Przypuśćmy, że na pew-

c0 + 3d0 = c1 ,


nym komputerze 1 opm trwa dwa razy dłużej niż 1 ops.

b0 = 0,



Dokonujemy interpolacji funkcji w n + 1 węzłach: raz


b1 + 2c1 + 3d1 = 0
stosując interpolację Lagrange’a i algorytm różnic dzie- 
1 + 21 (x + 1)2 − 13 (x + 1)3 x ∈ [−1, 0]
lonych, a drugi interpolację splajnami kubicznymi i al-
4 4
S(x) =
3 + 43 x − 92 x2 + 11 x3 x ∈ [0, 1]
gorytm dla lokalnych baz potęgowych. Podaj wszystkie Zadanie 214
4

n, dla których algorytm różnic dzielonych będzie działał



A = 1,
szybciej niż algorytm znajdujący splajn. Jak zmieni się


E = 0,


wynik, gdy przyjmiemy, że cztery podstawowe działania



 E + F + G + H = 1,
arytmetyczne wykonywane są w jednakowym czasie?



A + B + C + D = E,

B + 2C + 3D = F,

Odpowiedzi 
C + 3D = G,



F + 2G + 3H = 1,




Zadanie 209 tak Zadanie 210 
G + 3H = 0

S(t) = 1 − 5t + 6t2 − 2t3 , 0 6 t 6 1,
S(1 + u) = u, 0 6 u 6 1,
Zadanie 215 istnieje i jest wyznaczony jednoznacznie
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 123

0 + 0·(x+2) + 0·(x+2)2 + 14 (x+2)3 , x ∈ [−2,−1]





1 3 3 2 3 3
4
+ 4 (x+1) + 4 (x+1) − 4 (x+1) , x ∈ [−1, 0]
S(x) =

 1 + 0·x − 23 x2 + 34 x3 , x ∈ [0, 1]
2 3
1 3 3 1
4
− 4
(x−1) + 4
(x−1) − 4
(x−1) , x ∈ [1, 2].
Zadanie 216 wystarczy 9 węzłów Zadanie 217 wystarczą 3
węzły Zadanie 218

a0 = 0,

a1 = 1,




a1 + b1 (e2 − e) + c1 (e2 − e)2 + d1 (e2 − e)3 = 2,





a0 + b0 (e − 1) + c0 (e − 1)2 + d0 (e − 1)2 = a1 ,


 b0 + 2c0 (e − 1) + 3d0 (e − 1)2 = b1 ,



 c0 + 3d0 (e − 1) = c1 ,

c0 = 0,




c1 + 3d1 (e2 − e)2 = 0

R 6 5e2 (e − 1)2
Zadanie 219 na podstawie porównania oszacowań błędów
lepsza będzie interpolacja splajnami Zadanie 220 Na podsta-
wie porównania oszacowań błędów lepsza będzie interpolacja
Lagrange’a. Wybieramy 11 węzłów w sposób dowolny. Funkcją √
interpolującą będzie w(x) = x10 . Zadanie 221 RL 6 e273 ,
RH 6 3e , RS 6 5e Zadanie 222 1. tańsze jest wyznaczenie
splajnu, 2. tańsze jest obliczanie wartości splajnu Zadanie 223
Algorytm różnic dzielonych jest tańszy dla n 6 14. Jeśli
1 opm = 1 ops to algorytm różnic dzielonych jest tańszy dla
n 6 12.
124 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19
Rozdział 6

Równania nieliniowe i układy równań


nieliniowych

6.1 Równania nieliniowe kolejnych krokach mając obliczone przybliżenie xk generu-


jemy następne przybliżenie xk+1 . W tym celu wyznaczamy
styczną do wykresu funkcji f w punkcie (xk , f (xk )). Na-
6.1.1 Sformułowanie zadania stępnie obliczamy jej miejsce zerowe i ono staje się liczbą
xk+1 .
Dział ten zajmuje się rozwiązywaniem w sposób przybliżony
równań nieliniowych.Zadanie jest sformułowane następująco.
Definicja 53 Dana jest funkcjaf : D → R, gdzie D ⊂ R.
Równaniem nieliniowym nazywamy równanie postaci

f (x) = 0,

gdzie f nie jest funkcją liniową. Rozwiązaniem równania


nazywamy każdą liczbę α ∈ D, taką że

f (α) = 0. Równanie stycznej można wyznaczyć następująco. Wiemy,


że współczynnikiem kierunkowym stycznej do wykresu funk-
cji f w punkcie (xk , f (xk )) jest f 0 (xk ). Szukana styczna jest
Jeśli nie zakładalibyśmy nic o funkcji f , to niemożliwe by- więc równoległa do prostej y = f 0 (xk ) · x.
łoby podanie jakichkolwiek metod. Zazwyczaj wymaga się,
by funkcja była regularna (czyli ciągła lub kilkakrotnie róż-
niczkowalna) przynajmniej w otoczeniu miejsca zerowego.
Rodzaj regularności zależy od stosowanej metody.
Rozwiązanie równania nieliniowego jest miejscem zero-
wym funkcji f . Miejsca zerowe nazywa się również zerami
funkcji lub jej pierwiastkami. Te terminy stosuje się też
do równania f (x) = 0.

Większość metod polega na poprawianiu kolejnych przy-


bliżeń pierwiastka. Startują one z jakiegoś początkowego
przybliżenia x0 rozwiązania i generują ciąg xk zbieżny do Aby otrzymać styczną trzeba prostą y = f 0 (xk )x przesunąć
miejsca zerowego. Kolejne przybliżenie oblicza się wykorzy- o wektor ~v = [xk , f (xk )] . Zatem równaniem stycznej jest
T

stując wartości ostatniego lub kilku ostatnich przybliżeń. W y = f 0 (xk )(x − xk ) + f (xk )
drugim przypadku potrzeba kilku punktów startowych.
Obliczmy miejsce zerowe stycznej (przy założeniu, że ono
Metody te często dają ciągi zbieżne do miejsca zerowego istnieje).
jedynie wtedy, gdy zaczynamy od „dobrego” punktów starto-
wych. Nie dla każdego zadania potrafimy te „dobre” punkty f 0 (xk )(x − xk ) + f (xk ) = 0
wyznaczyć. f 0 (xk )(x − xk ) = −f (xk )
f (xk )
x − xk = − 0
6.1.2 Metoda stycznych f (xk )
f (xk )
x = xk − 0
Metoda ta nazywana jest również metodą Newtona. Jej dzia- f (xk )
łanie jest następujące. Wybieramy startowy punkt x0 . W Zauważmy, że obliczone miejsce zerowe istnieje wtedy i tylko
wtedy, gdy f 0 (xk ) 6= 0. Punkt xk+1 jest z definicji tym

125
126 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

miejscem zerowym, więc Jeśli promień zbieżności wynosi R i x0 ∈ [α − R, α + R], to


mamy gwarancję, że metoda znajdzie rozwiązanie α.
f (xk )
xk+1 = xk − . Klasę F ustala się osobno dla każdej metody. Na przykład F
f 0 (xk )
może być klasą funkcji posiadających dwie ciągłe pochodne.
Do obliczenia xk+1 potrzeba znać wartość funkcji i pochodnej Ustalenie klasy jest równoznaczne z podaniem założeń o
w punkcie xk . funkcji f takich, by można było zastosować daną metodę.
Metoda ma zastosowanie jedynie dla funkcji, dla których po- Wyznaczenie promienia zbieżności jest trudne dla większości
trafimy wyznaczyć wartość pochodnej. Dodatkowo musi być metod. Dlatego zadowalamy się jego oszacowaniami.
zagwarantowane, że w każdym kroku xk należy do dziedziny
funkcji f oraz f 0 (xk ) 6= 0. Metoda ta nie zawsze jest zbieżna
— tzn. nie dla każdego przybliżenia początkowego. 6.1.4 Wykładnik zbieżności

Wykładnik zbieżności metody opisuje szybkość zbieżności


6.1.3 Kula i promień zbieżności ciągów generowanych przez daną metodę.

Okazuje się, że tylko nieliczne metody mają własność, że Definicja 55 Wykładnikiem zbieżności metody nazy-
startując z dowolnego przybliżenia początkowego x0 generują wamy największą liczbę p spełniającą nierówność
ciąg xk zbieżny do rozwiązania α. Jeśli metoda posiada
taką cechę to mówimy, że jest zbieżna globalnie. W innych |xk+1 − α| 6 A|xk − α|p ,
przypadkach określa się warunki, jakie powinno spełniać
dla pewnej stałej A (być może zależnej od f i α) i wszyst-
przybliżenie początkowe i mówimy wówczas o metodach
kich dostatecznie dużych k.
zbieżnych lokalnie.

METODA ZBIEŻNA Jeśli p = 1 to


|xk − α| 6 A|xk−1 − α| 6 A2 |xk−2 − α| 6 . . . 6 Ak |x0 − α|.
GLOBALNIE LOKALNIE Gdy dodatkowo A < 1, to
dla dowolnego x0 tylko dla niektórych x0
metoda generuje metoda generuje lim Ak = 0,
k→∞
ciąg xk zbieżny ciąg xk zbieżny
do rozwiązania α do rozwiązania α zatem
lim xk = α.
k→∞
Dla metod zbieżnych lokalnie należy określić jak daleko od
miejsca zerowego mogą się znaleźć punkty startowe, by ciąg
Definicja 56 Mówimy, że metoda jest zbieżna liniowo
kolejnych przybliżeń zbiegał do tego miejsca zerowego. Tę
z ilorazem A jeśli p = 1 i A jest stałą występująca w
własność opisuje promień zbieżności.
definicji wykładnika zbieżności mniejszą od 1.
Definicja 54 Niech funkcja f należy do pewnej klasy
funkcji F , a α oznacza rozwiązanie równania Zauważmy, że jeśli A nie zależy od f to metoda jest zbieżna
globalnie.
f (x) = 0.
Jeśli p > 1, to otrzymujemy
Dla tej funkcji rozważmy wszystkie liczby r > 0 takie, że
|xk − α| 6 A|xk−1 − α|p 6 A(A|xk−2 − α|p )p
dla dowolnego przybliżenia początkowego 2
= A1+p |xk−2 − α|p
x0 ∈ [α − r, α + r], ...
2 k−1 k pk −1
ciąg kolejnych przybliżeń xk generowany daną metodą jest 6 A1+p+p +...+p |x0 − α|p = A p−1 |x0 − α|pk
zbieżny do α. Wybierzmy największe takie r i oznaczmy  1 pk −1
przez R. = A p−1 |x0 − α| |x0 − α|.

Przedział [α − R, α + R] nazywamy kulą zbieżności danej 1


Gdy A p−1 |x0 − α| < 1, to ciąg xk jest zbieżny do α. Zatem
metody dla funkcji f , a R promieniem zbieżności dla f . 1
promień zbieżności wynosi co najmniej A− p−1 .
Definicję można uogólnić dla metod posiadających kilka Wykładnik zbieżności bardzo często zależy od krotności wy-
punktów startowych. Wtedy wszystkie one są przybliżeniami znaczanego miejsca zerowego.
początkowymi.
Definicja 57 Mówimy, że α jest miejscem zerowym f o
Zwróćmy uwagę, że promień zbieżności może zależeć zarówno krotności m, jeśli f można przedstawić w postaci
od f , jak i α.
f (x) = (x − α)m g(x),

gdzie g(α) 6= 0 i g jest ograniczona w pewnym otoczeniu


punktu α.
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 127

W przypadku funkcji posiadających odpowiednią ilość po-


chodnych w otoczeniu miejsca zerowego można łatwo wy-
znaczyć jego krotność licząc pochodne.
Twierdzenie 32 Niech f posiada m ciągłych pochod-
nych. Liczba α jest miejscem zerowym f o krotności m
wtedy i tylko wtedy, gdy

f (α) = f 0 (α) = . . . = f (m−1) (α) = 0

oraz
f (m) (α) 6= 0.
Równanie siecznej wyznaczmy następująco. Z zaznaczo-
nego poniżej trójkąta odczytujemy współczynnik kierunkowy
siecznej, który wynosi tan(β).
6.1.5 Wykładnik zbieżności dla metody
stycznych

Poniższe twierdzenie opisuje szybkość zbieżności metody


Newtona w przypadku, gdy szukane miejsce zerowe jest
jednokrotne.
Twierdzenie 33 Niech funkcja f posiada dwie ciągłe
pochodne w przedziale P zawierającym jednokrotne miej-
sce zerowe α funkcji f oraz

inf |f 0 (x)| > 0.


x∈P
f (xk−1 ) − f (xk ) f (xk ) − f (xk−1 )
tan(β) = =
Niech r oznacza wielkość xk−1 − xk xk − xk−1
inf x∈P |f 0 (x)|
r=2 . Aby otrzymać sieczną trzeba prostą
supx∈P |f 00 (x)|
f (xk ) − f (xk−1 )
Wtedy jeśli |x0 − α| < r to ciąg xk generowany przez y = tan(β) · x = ·x
xk − xk−1
metodę Newtona jest zbieżny do α i
przesunąć o wektor ~v = [xk , f (xk )]T .
1
|xk+1 − α| 6 |xk − α|2 .
r
Wykładnik zbieżności metody Newtona wynosi 2, a pro-
mień zbieżności co najmniej r.

Z nierówności
1
|xk+1 − α| 6 |xk − α|2
r
wynika, że jeśli xk jest przybliżeniem α, które ma n cyfr
znaczących dokładnych, to xk+1 ma mniej więcej 2n cyfr
znaczących dokładnych. Gdy więc x0 ma 1 cyfrę znaczącą Zatem równaniem siecznej jest
dokładną, to po wykonaniu czterech kroków możemy się spo-
dziewać, że x4 będzie miało 16 cyfr znaczących dokładnych. f (xk ) − f (xk−1 )
y= (x − xk ) + f (xk ).
Jest to bardzo szybka zbieżność. xk − xk−1

Obliczmy miejsce zerowe siecznej (przy założeniu, że ono


6.1.6 Metoda siecznych istnieje).

Metoda siecznych pozwala uniknąć obliczania pochodnych f (xk ) − f (xk−1 )


(x − xk ) + f (xk ) = 0
funkcji. Przybliżenie xk+1 konstruuje się na podstawie przy- xk − xk−1
bliżeń xk oraz xk−1 , jest ono miejscem zerowym siecznej f (xk ) − f (xk−1 )
przechodzącej przez punkty (xk , f (xk )) i (xk−1 , f (xk−1 )). (x − xk ) = −f (xk )
xk − xk−1
xk − xk−1
x − xk = − · f (xk )
f (xk ) − f (xk−1 )
xk − xk−1
x = xk − · f (xk )
f (xk ) − f (xk−1 )
128 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Otrzymujemy więc, że Jeśli więc f na krańcach [a, b] ma różne znaki, to biorąc w


twierdzeniu c = 0 otrzymujemy, że istnieje α ∈ (a, b) takie,
xk − xk−1
xk+1 = xk − f (xk ) że
f (xk ) − f (xk−1 ) f (α) = 0.
xk−1 f (xk ) − xk f (xk−1 )
= . Zauważmy, że f może mieć kilka miejsc zerowych w (a, b).
f (xk ) − f (xk−1 )
Metoda bisekcji konstruuje ciąg xk następująco.
Poniższe twierdzenie charakteryzuje wykładnik i promień
zbieżności metody siecznych w przypadku zer jednokrotnych. lewy = a;
prawy = b;
Twierdzenie 34 Niech funkcja f posiada dwie ciągłe
for (k = 0; . . . ; k++) {
pochodne w przedziale P zawierającym jednokrotne miej-
xk = (lewy + prawy) / 2;
sce zerowe α funkcji f oraz
if (znak(f(xk )) == znak(f(lewy)))
inf |f (x)| > 0.
0 lewy = xk ;
x∈P else
prawy = xk ;
Niech r oznacza wielkość
}
inf x∈P |f 0 (x)|
r=2 . Brakujący warunek zatrzymania pętli należy uzupełnić sto-
supx∈P |f 00 (x)|
sując jedno lub kilka opisanych dalej kryteriów stopu.
Wtedy jeśli |x0 − α| < r i |x1 − α| < r to ciąg xk genero-
wany przez metodę siecznych jest zbieżny do α i istnieje
A > 0 takie, że

1+ 5
|xk+1 − α| 6 A|xk − α| 2 .

1+ 5
Wykładnik zbieżności metody Newtona wynosi 2 ≈
1, 618, a promień zbieżności co najmniej r.

Z twierdzenia wynika, że jeśli xk jest przybliżeniem α, które


ma n cyfr znaczących dokładnych, to xk+1 ma mniej więcej
1, 618n cyfr znaczących dokładnych. Gdy więc x0 ma 1
cyfrę znaczącą dokładną, to po wykonaniu czterech kroków
możemy się spodziewać, że x4 będzie miało 6 lub 7 cyfr
znaczących dokładnych, a żeby uzyskać 15 cyfr dokładnych Zauważmy, że w każdym kroku α ∈ [lewy, prawy], przy
trzeba wykonać około 6 kroków. Zbieżność jest wolniejsza czym za każdym razem długość przedziału [lewy, prawy]
niż w metodzie Newtona, ale wykonanie pojedynczego kroku zmniejsza się o połowę. Zatem
jest szybsze, bo nie trzeba obliczać pochodnych. Szacuje się,
1
że jeśli koszt policzenia pochodnej przewyższa 0, 44 kosztu |xk+1 − α| 6 |xk − α|.
obliczenia wartości funkcji, to bardziej opłacalna czasowo 2
będzie metoda siecznych. Stąd wynika poniższe twierdzenie.
Twierdzenie 36 Metoda bisekcji jest zbieżna liniowo z
6.1.7 Metoda bisekcji ilorazem A = 12 .

Jeśli funkcja f jest ciągła i umiemy znaleźć przedział [a, b]


taki, że f na jego krańcach ma różne znaki, to do wyzna- 6.1.8 Metody Dekkera oraz Brenta
czenia miejsca zerowego α leżącego wewnątrz [a, b] możemy
zastosować metodę bisekcji. Korzysta ona z twierdzenia o Metody te łączą metodę siecznych i bisekcji. Dzięki temu
przyjmowaniu wartości pośrednich. są one zbieżne globalnie i jednocześnie istotnie szybciej niż
Twierdzenie 35 (o przyjmowaniu wartości po- liniowo. Tak jak w metodzie bisekcji trzeba podać przedział
średnich) Niech f będzie funkcją ciągłą określoną na [a, b] tak, że f (a) i f (b) mają przeciwne znaki. Metoda
przedziale [a, b]. Dekkera pochodzi z 1969 roku. Metoda Brenta jest cztery
lata młodsza i jest modyfikacją metody Dekkera.
1. Jeśli f (a) < c < f (b), to istnieje x ∈ (a, b) taki, że
Funkcja fzero pakeitu obliczeniowego Octave’a implemen-
f (x) = c. tuje metodę Brenta. Opis metody można znaleźć na stronie
en.wikipedia.org/wiki/Brent’s_method.
2. Jeśli f (b) < c < f (a), to istnieje x ∈ (a, b) taki, że

f (x) = c.
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 129

6.1.9 Metody interpolacyjne krotność miejsca zerowego α. Jeśli taką informacją nie
dysponujemy, możemy zamiast f użyć funkcji
Definicja 58 Metoda nazywana jest interpolacyjną, jeśli
kolejne przybliżenie xk jest miejscem zerowym pewnego f (x)
v(x) = .
wielomianu Lagrange’a, jak lub Hermite’a interpolującego f 0 (x)
funkcję f .
Z definicji krotności wynika bowiem, że f 0 ma zero (m − 1)
krotne i stąd v ma zero jednokrotne. Ta druga metoda jest
Wielomiany powinny być niskich stopni, tak aby łatwo można
droższa.
było wyznaczyć ich pierwiastki — stąd praktycznie ogra-
niczamy się do wielomianów pierwszego i drugiego stopnia.
Zauważmy, że metody siecznych i stycznych są metodami 6.1.11 Własności numeryczne metod roz-
interpolacyjnymi:
wiązywania równań nieliniowych
• metoda stycznych — xk+1 jest zerem wielomianu Her-
mite’a interpolującego funkcję f w podwójnym węźle Dla omawianego zadania precyzuje się pojęcia uwarunko-
xk . wania zadania, numerycznej poprawności i stabilności algo-
rytmów. Okazuje się m.in., że w przypadku pojedynczego
• metoda siecznych — xk+1 wyznaczamy jako miejsce
równania nieliniowego pojęcia numerycznej stabilności i po-
zerowe wielomianu Lagrange’a interpolującego f w wę-
prawności są równoważne, tzn. jeśli algorytm jest nume-
złach xk oraz xk−1 .
rycznie stabilny to można udowodnić, że jest numerycznie
Inną metodą interpolacyjną jest np. metoda Mullera. Punkt poprawny. Własność taka jest rzadko spotykana. Można
xk+1 oblicza się jako miejsce zerowe wielomianu Lagrange’a udowodnić, poniższe twierdzenie.
opartego na węzłach xk , xk−1 , xk−2 interpolującego f . Jest
Twierdzenie 37 Algorytmy realizujące metodę stycz-
to wielomian drugiego stopnia, ma zatem dwa pierwiastki,
nych i siecznych zgodnie z przedstawionym zapisem są
być może zespolone. Należy wybrać ten pierwiastek, który
numerycznie poprawne.
jest bliższy punktowi xk . Należy zwrócić uwagę na reali-
zację tego algorytmu przy obliczaniu pierwiastka równania
kwadratowego. Metoda Mullera ma wykładnik zbieżności Z metodami iteracyjnymi (tzn. takimi, które generują ciągi
co najmniej 1,84 dla zer jednokrotnych. kolejnych przybliżeń rozwiązania) wiąże się pojęcie maksy-
malnej granicznej dokładności. Przypomnijmy, że wykonując
obliczenia w arytmetyce zmiennopozycyjnej nie uzyskujemy
6.1.10 Uwagi o obliczaniu zer wielokrot- wyników dokładnych, lecz zaburzone. Zatem każdy algo-
nych rytm realizujący pewną metodę daje zamiast x1 wielkość x e1
nieco zaburzoną. Następny krok startuje zatem już z innego
punktu niż powinien i znów obarcza go błędami obliczeń.
Jeśli szukane miejsce zerowe jest zerem wielokrotnym, to
Otrzymujemy zatem ciąg x ek zamiast xk . Błędy się kumulują
opisane metody nie muszą być zbieżne, a jeśli są zbieżne, to
i ciąg x
ek zazwyczaj nie jest zbieżny do α. Tak na prawdę w
zazwyczaj mają mniejszy wykładnik zbieżności. Niech dalej
ogóle nie musi być zbieżny — może „błądzić” w okolicy roz-
m oznacza krotność pierwiastka α funkcji f .
wiązania α. Na szczęście często istnieje najmniejsza liczba η
Przykład Jeśli metodę stycznych zastosujemy do wyzna- taka, że dla dużych k zachodzi |e xk − α| 6 η.
czenia pierwiastka m–krotnego dla m > 1, to w klasie funkcji
Definicja 59 Dla pewnej metody niech xk będzie k–tym
mających (m + 2) pochodnych ciągłych wykładnik zbieżności
przybliżeniem miejsca zerowego α. Oznaczmy przez x
wynosi co najwyżej 1, a iloraz zbieżności A = 1 − m → 1,
1 fk
wartość tego przybliżenia obliczonego w arytmetyce fl :
gdy m → ∞. 

Przykład Jeśli metodę siecznych zastosujemy do wyznacze- fk = fl (xk ).


x
nia pierwiastka m–krotnego dla m > 1, to w klasie funkcji
mających (m + 2) pochodnych ciągłych zbieżność nie jest Najmniejszą liczbę η taką, że dla dużych k zachodzi
zagwarantowana, nawet dla bliskich punktów startowych.
|e
xk − α| 6 η
Wykładnik zbieżności wynosi co najwyżej 1. 

nazywamy maksymalną graniczną dokładnością.


Aby uniknąć osłabienia zbieżności wynikającego z krotności
zera stosuje się znane metody nie do funkcji f , lecz do innej,
Żądanie osiągnięcia wyższej dokładności na ogół kończy się
dla której α jest zerem jednokrotnym. Przypomnijmy, że
niepowodzeniem. Programując metodę należy przerwać obli-
jeśli α jest zerem m–krotnym, to f można zapisać w postaci
czenia, jeśli tą dokładność osiągniemy. Ponieważ nie znamy
f (x) = (x − α) g(x), g(α) 6= 0.
m α (często wielkość ε też nie jest wyznaczona dokładnie),
sytuację osiągnięcia maksymalnej granicznej dokładności
Zatem funkcja wykrywa się w inny sposób — obserwując zachowanie ciągu
u(x) = m f (x), kolejnych przybliżeń. Np. jeśli zaczyna „błądzić”, to jest to
p
najczęściej sygnał do przerwania obliczeń.
o ile m jest nieparzyste, ma jednokrotne zero α. Zamiast
stosować metody dla f , stosujemy je dla funkcji u. Poważną
niedogodnością tego podejścia jest fakt, że musimy znać
130 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

6.1.12 Kryteria stopu Poszukiwania metod zbieżnych globalnie mogą iść w kie-
runku zmniejszenia klasy zadań lub wzbogacenia informacji
W omawianych metodach został podany sposób generowania niezbędnej do wyznaczenia kolejnego przybliżenia. Przykła-
ciągu xk przybliżeń rozwiązania α. Nie zostało jednak wska- dem klasy zadań, dla której istnieje zbieżna globalnie metoda
zane kryterium zatrzymania procesu. W pewnym bowiem jest klasa funkcji ciągłych f określonych na odcinku [a, b]
momencie należy stwierdzić, że albo rozwiązanie zostało takich, że f (a) oraz f (b) mają przeciwne znaki. Metodą
uzyskane, albo, że nie da się obliczyć miejsca zerowego. Kry- zbieżną globalnie jest tu np. metoda bisekcji. Metoda ta jest
terium stopu zwykle formułuje się nie przy pomocy jednego, zbieżna jedynie liniowo. Stosuje się ją zatem do otrzymania
lecz kilku warunków. dobrego przybliżenia początkowego dla metod lokalnie, ale
szybciej zbieżnych.
Pierwszym z nich może być kryterium liczby kroków. Określa
się wtedy z góry, że poszukiwanie rozwiązania jest przery-
wane po pewnej liczbie kroków. Uznajemy, że metoda nie 6.1.14 Pytania powtórzeniowe
znalazła rozwiązania (przyczyną może być np. złe przy-
bliżenie początkowe, zły dobór metody dla funkcji, brak 1. Co to jest równanie nieliniowe i jego rozwiązanie?
rozwiązań równania). Znając szybkość zbieżności metody
możemy mieć pewne przesłanki do ustalenia maksymalnej 2. Wyprowadź wzór opisujący przybliżenie xk+1 w meto-
liczby kroków. Przykładowo szukając rozwiązania w arytme- dzie stycznych. W celu napisania równania stycznej
tyce, w której reprezentowane jest dokładnie 16 cyfr dziesięt- przesuń odpowiednią prostą przechodzącą przez począ-
nych i stosując metodę Newtona spodziewamy się, że o ile tek układu współrzędnych o pewien wektor.
startowaliśmy z punktu początkowego posiadającego jedną 3. Wyprowadź wzór opisujący przybliżenie xk+1 w meto-
cyfrę dokładną, to rozwiązanie powinniśmy uzyskać w 4–5 dzie siecznych. W celu napisania równania stycznej
krokach. Rozsądnym wydaje się więc ustalenie maksymalnej przesuń odpowiednią prostą przechodzącą przez począ-
liczby kroków na 7–8. tek układu współrzędnych o pewien wektor.
Drugim z kryteriów stopu jest kryterium residualne. Spraw- 4. Co to znaczy, że metoda jest zbieżna globalnie, a co, że
dzamy tu nierówność jest zbieżna lokalnie?
|f (xk )| 6 ε, 5. Podaj definicję kuli i promienia zbieżności.
gdzie ε > 0 jest małą liczbą. Jeśli warunek jest spełniony, 6. Podaj definicję wykładnika zbieżności.
to uznajemy xk za rozwiązanie i przerywamy obliczenia.
7. Co to znaczy, że metoda jest zbieżna liniowa z pewnym
Kolejne kryterium, przyrostowe, powoduje zakończenie obli- wykładnikiem?
czeń, gdy zostanie spełniony warunek
8. Podaj definicję m–krotnego miejsca zerowego funkcji.
|xk+1 − xk | 6 δ,
9. Podaj twierdzenie charakteryzujące m–krotne miejsce
dla pewnej małej liczby δ > 0. zerowe funkcji w przypadku funkcji posiadających m
ciągłych pochodnych.
Sygnałem do przerwania obliczeń jest również „błądzenie”
przybliżeń wokół pewnej liczby. Może to bowiem oznaczać 10. Podaj twierdzenie opisujące wykładnik i promień zbież-
osiągnięcie maksymalnej granicznej dokładności. ności metody Newtona w przypadku zer jednokrotnych.

Oprócz wymienionych kryteriów czasami należy przerwać 11. Podaj twierdzenie opisujące wykładnik i promień zbież-
generowanie ciągu ze względu na to, że nie jest możliwe ności metody siecznych w przypadku zer jednokrotnych.
zdefiniowanie następnego przybliżenia. Dzieje się tak np. 12. Podaj twierdzenie o przyjmowaniu wartości pośrednich.
w metodzie stycznych, gdy pochodna funkcji w punkcie Co wynika z niego, gdy na krańcach przedziału funkcja
xk jest równa zeru lub bliska zeru. Odpowiednia styczna ma wartości o różnych znakach?
nie przecina wówczas osi OX, albo przecina w miejscu tak
odległym, że nie ma sensu dalszego stosowania metody. 13. Zapisz w pseudokodzie metodę bisekcji. Ile wynosi
wykładnik zbieżności ten metody?

6.1.13 Uwagi o metodach zbieżnych global- 14. Co to znaczy, że metoda jest interpolacyjna? Czy me-
tody stycznych i siecznych są interpolacyjne?
nie
15. Na czym polega metoda Mullera?
Wszystkie twierdzenia o zbieżności omawianych metod in- 16. Czy wykładnik zbieżności metody może być różny dla
terpolacyjnych zakładały znajomość dostatecznie dobrego zer jedno- i wielokrotnych? Jakimi funkcjami można
przybliżenia początkowego. Otrzymaliśmy zatem lokalną zastąpić funkcję f posiadającą zero wielokrotne α, tak
zbieżność generowanych ciągów. Nie jest to przypadkowe, by uzyskana funkcja posiadała zero jednokrotne α?
gdyż można udowodnić, że dla klasy funkcji regularnych
(czyli posiadających pewną liczbę ciągłych pochodnych) i 17. Jakie własności numeryczne posiadają metody stycz-
mających pojedyncze miejsca zerowe, nie istnieje zbieżna nych i siecznych?
globalnie metoda, która do wyznaczenia kolejnego przybliże- 18. Co to jest maksymalna graniczna dokładność?
nia wykorzystuje jedynie wartości funkcji i jej pochodnych
w punktach poprzednich przybliżeń. 19. Opisz kryteria stopu.
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 131

6.1.15 Ćwiczenia sprawdzające zrozumie-


nie tematu Zadanie 228 Udowodnij, że jeśli x0 = 0, to metoda
stycznych zastosowana dla równania

Zadanie 224 x = − cos x


1. Wykaż, że równanie sin x+x−1 = 0 ma pierwiastek
α w przedziale [0, 1]. zbiega do rozwiązania tego równania.

2. Niech xk , k = 1, 2, . . . oznacza przybliżoną wartość


xk pierwiastka α obliczoną w k-tym kroku metodą Zadanie 229
bisekcji startującą z przedziału [0, 1]. Ie wynosi 1. Udowodnij, że równanie
najmniejsze k takie, że |xk − α| < 0, 5 · 10−3 ?
x2 + tg x = 1
6.1.16 Zadania ma rozwiązanie α w przedziale P = [0, π4 ].
2. Udowodnij, że jeśli x0 = 12π
i x1 = π
6 metoda
Zadanie 225 wygeneruje ciąg zbieżny do α.
1. Udowodnij, że równanie f (x) = 0, gdzie
Rozwiąż to samo zadanie dla równania ln x = e1−x ,
( przedziału P = [1, 2] oraz punktów startowych x0 = 43 ,
x2 − 2x + 4 dla x > 0,
f (x) = x1 = 53 .
x3 + x2 − 2x + 4 dla x 6 0,

ma rozwiązanie na półosi ujemnej. Zadanie 230 W języku C zapisz funkcję realizującą


2. Zapisz metodę Newtona dla tego równania. jeden krok procesu Newtona dla równania
3. Wykonaj dwa kroki, gdy x0 = 0. x4 + 3x3 + 4x − 8 = 0.
4. Czy gdy x0 = 0, to uzyskany ciąg będzie zbieżny?
Przy projektowaniu algorytmu wykorzystaj schemat Hor-
nera.
Zadanie 226
1. Udowodnij, że równanie f (x) = 0, gdzie Zadanie 231 Rozwiązujemy równanie f (x) = 0 o zerze
1
α. Stosujemy metodę interpolacyjną taką, że jeśli xk−1
f (x) = x 3 + ln x − 3
2 oraz xk są kolejnymi przybliżeniami α, to następne
przybliżenie xk+1 jest równe pierwiastkowi wielomianu
ma rozwiązanie α w przedziale P = [1, 32 ]. Lagrange’a interpolującego funkcję f w węzłach xk−1
i xk . Wyprowadź wzór określający xk+1 korzystając z
q
Wskazówka: ln 32 ∈ ( 100
40 41
, 100 ), 3 32 ∈ (1 100
14
, 1 100
15
).
tabeli różnic dzielonych. Jak nazywa się ta metoda?
2. Jakiej krotności jest szukany pierwiastek α?
3. Oblicz wielkość Zadanie 232 Rozwiązujemy równanie f (x) = 0 o zerze
inf x∈P |f (x)|
0 α. Stosujemy metodę interpolacyjną, taką, że jeśli xk
r=2 . jest przybliżeniem α, to następne przybliżenie xk+1 jest
supx∈P |f 00 (x)|
równe pierwiastkowi wielomianu Hermite’a’a interpolu-
jącego funkcję f w podwójnym węźle xk . Wyprowadź
4. Udowodnij, że jeśli x0 ∈ P , to metoda stycznych wzór określający xk+1 korzystając z tabeli różnic dzielo-
zbiega do α. nych. Jak nazywa się ta metoda?

Zadanie 227 Udowodnij, że równanie sin x = 4 ln x ma Zadanie 233 Rozwiązujemy równanie f (x) = 0 o ze-
rozwiązanie α w przedziale P = [1, 32 ] i jeśli x0 ∈ P , to rze α. Stosujemy metodę interpolacyjną taką, że jeśli
metoda stycznych zastosowana do tego równania zbiega xk jest przybliżeniem zera α, to następne przybliżenie
do α. xk+1 równe jest pierwiastkowi wielomianu Lagrange’a
Rozwiąż to samo zadanie dla równania ex = sin x i interpolującego funkcję f w węzłach xk i xk + f (xk ).
przedziału P = [− 54 π, −π]. Wyprowadź wzór określający xk+1 korzystając z tabeli
różnic dzielonych.
Wskazówka:
3

40 41

3

7 8
 Uwaga: Jest to metoda Steffensena. Rząd zbieżności tej
ln ∈ , , cos ∈ , , metody wynosi dwa dla zer jednokrotnych, ale ma ona
2 100 100 2 100 100
złe własności numeryczne.
4 5 1 2
   
5
e−3 ∈ , , e− 4 π ∈ , .
100 100 100 100
132 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Zadanie 234 Rozwiązujemy równanie f (x) = 0 o zerze


α. Korzystając z tabeli różnic dzielonych wyprowadź
wzór metody

2f (xk )
xk+1 = xk − ,
f 0 (xk ) + sk (f 0 (xk )2 − 2f (xk )f 00 (xk )
p

gdzie sk = sign(f 0 (xk )) wiedząc, że jest ona metodą


interpolacyjną taką, że jeśli xk jest przybliżeniem zera
α, to przybliżenie xk+1 równe jest zeru wielomianu Her-
mite’a’a interpolującego funkcję f w potrójnym węźle
xk .
Uwaga: Metoda ta nazywa się metodą Mullera.

Zadanie 235 Odwrotność liczby N można obliczyć za


pomocą algorytmu iteracyjnego xk+1 = xk (2 − N xk ).
Wyprowadź ten wzór stosując metodę Newtona do od-
powiedniej funkcji.

Zadanie 236 Dlaczego metody bisekcji nie można sto-


sować do parzystych krotności pierwiastka?

Odpowiedzi

Zadanie 224 Należy wykonać  Zadanie 225 x1 = 2,


 11 iteracji.
6 2
 32
x2 = 0 Zadanie 226 11
· 3
+2 Zadanie 233
f (xk )
xk+1 = xk − f (xk +f (xk ))−f (xk )
· f (xk ).
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 133

6.2 Wyznaczanie zer wielomianów Przypomnę, że nawet jeśli wielomian ma wszystkie współ-
czynniki rzeczywiste, to może mieć pierwiastki zespolone,
np. w(x) = x3 + x. Może również się zdarzyć, że nie posiada
Wielomiany stopnia większego niż 1 są funkcjami nielinio- żadnego pierwiastka rzeczywistego, np. v(x) = x2 + 1. W
wymi, zatem zadanie wyznaczenia ich miejsc zerowych jest przypadku wielomianów stopnia nieparzystego mamy jednak
szczególnym przypadkiem rozwiązywania równań nielinio- zagwarantowane, że jest choć jeden pierwiastek rzeczywisty.
wych. Przypomnijmy, że nie jest to proste zadanie algebra-
iczne — ogólne metody znajdowania pierwiastków istnieją Twierdzenie 39 Wielomian rzeczywisty stopnia niepa-
jedynie dla wielomianów stopnia pierwszego, drugiego i trze- rzystego ma co najmniej jeden pierwiastek rzeczywisty.
ciego.
Następne dwa twierdzenia pozwalają czasami określić, ile jest
miejsc zerowych w zadanym przedziale. Na ich podstawie
6.2.1 Uwarunkowanie zadania wyznacza- można napisać program dający pewne informacje o liczbie
nia zer wielomianów pierwiastków.
Twierdzenie 40 (Fouriera)
Rozważmy zadanie wyznaczenia miejsc zerowych α1 , . . . , αn
Niech w będzie wielomianem rzeczywistym stopnia n > 0,
wielomianu rzeczywistego w zapisanego w bazie naturalnej:
a przedział (a, b) będzie taki, że w(a), w(b) 6= 0. Dopusz-
w(x) = a0 + a1 x + . . . + an xn , an 6= 0. czamy tu przypadek przedziałów nieograniczonych i wtedy
w(a) i w(b) (oraz pochodne w a i b) są rozumiane jako
Danymi są współczynniki wielomianu ai . odpowiednie granice.
Zadanie to dla wielu danych jest bardzo źle uwarunkowane. Określmy wielkość M (x) jako liczbę zmian znaku w ciągu
Przykład (Wilkinson) Zerami wielomianu:
w(x), w0 (x), w00 (x), . . . , w(n) (x).
w(x) = a20 x 20
+ . . . + a1 x + a0
= (x − 1)(x − 2)(x − 3) . . . (x − 19)(x − 20) Jeśli w ciągu występują zera, to je pomijamy.
Wtedy liczba zer wielomianu w w przedziale (a, b) wy-
są liczby 1, 2, . . . , 20. Jeśli zaburzymy tylko jeden ze współ-
nosi M (a) − M (b) lub jest od tej liczby mniejsza o liczbę
czynników: zamiast a19 = 210 weźmiemy a˜19 = a19 (1 − ε)
parzystą.
przy ε = 223 ·210 , to nowy wielomian ma już pierwiastki
1

zespolone i najbliższymi pierwiastkowi 15 wielomianu w(x)


są Przykład Niech w(x) = x3 − x2 − 4x + 3. Wyznaczamy
13, 992358137 ± 2, 518830070i. pochodne tego wielomianu:

Błąd względny wyniku jest tu większy niż 0, 05: w0 (x) = 3x2 − 2x − 4,


|15 − (13, 992358137 ± 2, 518830070i)| w (x)
00
= 6x − 2,
> 0, 05
|15| w (x)
000
= 6.
choć błąd względny danych wynosi jedynie Obliczmy teraz M (−∞), M (0), M (1), M (3), M (+∞).
1 Utwórzmy w tym celu tabelę.
< 0, 06 · 10−8 .
2 · 210
23 
x = −∞ x = 0 x = 1 x = 3 x = +∞
Można udowodnić, że zera o większej krotności są nawet w(x) − + − + +
bardziej wrażliwe na zmiany współczynników ai wielomianu w0 (x) + − − + +
niż zera o krotnościach mniejszych. w00 (x) − − + + +
w000 (x) + + + + +
Pokreślmy, że uwarunkowanie zależy od tego, jakie wielkości
uznamy za dane. Zadanie obliczania zer wielomianu zapisa- M (x) 3 2 1 0 0
nego w różnych bazach może być różnie uwarunkowane.
Z twierdzenia Fouriera można np. wywnioskować, że ponie-
waż M (−∞) − M (∞) = 3, to w ma w przedziale (−∞, ∞)
6.2.2 Liczba pierwiastków rzeczywistych jeden lub trzy pierwiastki rzeczywiste. To jednak wiadomo
również bez twierdzenia Fouriera.
Pierwsza grupa twierdzeń służy do określenia liczby zer
rzeczywistych wielomianu. Zero m-krotne liczymy m razy. Gdy wybierzemy inny przedział, np. (−∞, 0) dostaniemy
Zacznę od przypomnienia twierdzenia określającego maksy- konkretniejszą informację. Ponieważ M (−∞) − M (0) = 1,
malną liczbę pierwiastków. to wnioskujemy, że w ma jeden pierwiastek ujemny.

Twierdzenie 38 Niech n będzie liczbą naturalną. Wie- W przedziale (0, 1) wielomian w ma jeden pierwiastek, bo
lomian rzeczywisty stopnia n ma co najwyżej n pierwiast- M (0) − M (1) = 1.
ków rzeczywistych. Również w przedziale (1, 3) wielomian w ma jeden pierwia-
Suma krotności wszystkich pierwiastków rzeczywistych stek, bo M (1) − M (3) = 1.
wielomianu rzeczywistego wynosi co najwyżej n.
134 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Z twierdzenia Fouriera możemy określić, że w ma trzy pier- Z powyższej reguły można też skorzystać w celu znalezie-
wiastki: jeden ujemny, jeden w przedziale (0, 1) oraz jeden nia liczby ujemnych zer wielomianu w(x). Należy wówczas
w przedziale (1, 3).  zastosować ją do wielomianu w(−x).

Przykład Z reguły Kartezjusza otrzymujemy, że wielomian


Twierdzenie Fouriera wymaga obliczenia tylu pochodnych
w(x) = x3 − x2 − 4x + 3 ma dwa lub zero pierwiastków
wielomianu, ile wynosi stopień. Jest to dość kosztowne.
dodatnich oraz jeden pierwiastek ujemny.
Poniższe twierdzenie jest pozbawione tej niedogodności. 

Twierdzenie 41 (Laguerre’a) Znane jest też twierdzenie Sturma pozwalające dokładnie


Niech w będzie wielomianem rzeczywistym stopnia n > 0, wyznaczyć liczbę zer wielomianu w pewnym przedziale. Wy-
a przedział (a, b) będzie taki, że w(a), w(b) 6= 0. Dopusz- maga ono jednak bardziej uciążliwych obliczeń, tzn. dzieleń
czamy tu przypadek przedziałów nieograniczonych i wtedy wielomianów przez wielomiany.
w(a) i w(b) są rozumiane jako odpowiednie granice.
Dla wielomianu w(x) = a0 + a1 x + . . . + an xn i liczby x 6.2.3 Liczba pierwiastków zespolonych
utwórzmy ciąg wk (x) następująco:
Liczba pierwiastków zespolonych jest dużo łatwiejsza do
wn (x) = an ,
określenia, niż liczba pierwiastków rzeczywistych.
wn−1 (x) = an x + an−1 ,
Twierdzenie 42 (zasadnicze twierdzenie algebry)
wn−2 (x) = an x2 + an−1 x + an−2 ,
Suma krotności wszystkich pierwiastków zespolonych
.. wielomianu rzeczywistego lub zespolonego stopnia n > 0
.
wynosi n.
w0 (x) = w(x).

Niech L(x) oznacza liczbę zmian znaku w powyższym


ciągu. Jeśli w ciągu występują zera, to je pomijamy. 6.2.4 Lokalizacja zer rzeczywistych
Wtedy liczba zer wielomianu w w przedziale (a, b) wynosi
Ponieważ większość metod rozwiązywania równań nielinio-
L(a)−L(b) lub jest od tej liczby mniejsza o liczbę parzystą.
wych wymaga dobrego przybliżenia początkowego przydatne
są twierdzenia umożliwiające w sposób przybliżony określe-
Przykład Niech w(x) = x3 − x2 − 4x + 3. Wyznaczamy
nie lokalizacji zer wielomianów. W przypadku wielomianów
pochodne wielomiany występujące w twierdzeniu Laguerre’a:
takie twierdzenia istnieją.
w3 (x) = 1, Aby wyznaczyć przedział, w którym mieszczą się wszystkie
w2 (x) = x − 1, pierwiastki rzeczywiste wielomianu w wystarczy umieć zna-
w1 (x) = x − x − 4,
2 leźć dobre ograniczenie górne Mw pierwiastków dodatnich.
Zauważmy bowiem, że ograniczenie
w0 (x) = x3 − x2 − 4x + 3.
1. dolne ujemnych pierwiastków wielomianu w(x) wynosi
Obliczmy teraz L(−∞), L(0), L(1), L(3), L(+∞). −Mu , gdzie Mu jest ograniczeniem górnym dodatnich
Utwórzmy w tym celu tabelę. pierwiastków wielomianu u(x) = w(−x),
x = −∞ x = 0 x = 1 x = 3 x = +∞ 2. dolne dodatnich pierwiastków wielomianu w(x) wynosi
w3 (x) + + + + +
Mv , gdzie Mv jest ograniczeniem górnym dodatnich
1

w2 (x) − − 0 + + pierwiastków wielomianu v(x) = xn w( x1 ) (można też


w1 (x) + − − + + wziąć v(x) = (−x)n w( x1 )),
w0 (x) − + − + +
3. górne ujemnych pierwiastków wielomianu w(x) wynosi
M (x) 3 2 1 0 0 − M1t , gdzie Mt jest ograniczeniem górnym dodatnich
pierwiastków wielomianu t(x) = (−x)n w(− x1 ) (można
Dokładnie tek, jak w poprzednim przykładzie s twierdzenia też wziąć t(x) = xn w(− x1 )).
Laguerre’a możemy wywnioskować, że w ma trzy pierwiastki:
jeden ujemny, jeden w przedziale (0, 1) oraz jeden w prze-
dziale (1, 3).


Twierdzenie Laguerre’a zastosowane dla przedziału (0, ∞)


daje regułę Kartezjusza.
Udowodnimy, że rzeczywiście tak jest.
Wniosek 5 (reguła Kartezjusza)
Liczba zer dodatnich wielomianu rzeczywistego w(x) = 1. Niech 0 < x0 , x1 , . . . , xk 6 Mu będą wszystkimi dodat-
a0 + a1 x + . . . + an xn jest równa liczbie zmian znaków w nimi miejscami zerowymi wielomianu u(x) = w(−x).
ciągu współczynników an , an−1 , . . . , a1 , a0 lub jest od tej Wtedy dla i = 0, 1, . . . , k
liczby mniejsza o liczbę parzystą.
u(xi ) = 0 ⇐⇒ w(−xi ) = 0.
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 135

Liczby 0 > −x0 , −x1 , . . . , −xk > −Mu są wszystkimi Przykład Z twierdzenia Lagrange’a wyznaczymy prze-
ujemnymi miejscami zerowymi wielomianu w. Liczba działy zawierające wszystkie zera rzeczywiste wielomianu
−Mu jest szukanym ograniczeniem dolnym pierwiast-
ków ujemnych wielomianu w. w(x) = 2x9 + x7 − x5 + 6x3 − 12x2 + 9.

2. Niech 0 < x0 , x1 , . . . , xk 6 Mv będą wszystkimi dodat- 1. Liczba k z twierdzenia wynosi 5, zaś A = 12. Zatem
nimi miejscami zerowymi wielomianu v(x) = xn w( x1 ). pierwiastki dodatnie są nie większe niż
Wtedy dla i = 0, 1, . . . , k √
Mw = 1 + 6 < 2, 565.
9−5

1 1
   
v(xi ) = 0 ⇐⇒ xi w n
= 0 ⇐⇒ w = 0.
xi xi 2. Niech u(x) = w(−x), czyli

Liczby u(x) = −2x9 − x7 + x5 − 6x3 − 12x2 + 9.


1 1 1 1
, ,..., > >0 Teraz k = 7, A = 12. Czyli ograniczenie dolne ujemnych
x0 x1 xk Mv
pierwiastków w wynosi
są wszystkimi dodatnimi miejscami zerowymi wielo-
mianu w. Liczba M1v jest szukanym ograniczeniem r !
12
dolnym pierwiastków dodatnich wielomianu w. Ana- −Mu = − 1 + > −3, 4495.
2
logicznie dowód przeprowadza się dla drugiej postaci
funkcji v.
3. Rozpatrzmy wielomian v(x) = x9 w( x1 ). Zatem
3. Niech 0 < x0 , x1 , . . . , xk 6 Mt będą wszystkimi
dodatnimi miejscami zerowymi wielomianu t(x) = v(x) = 9x9 − 12x7 + 6x6 − x4 + x2 + 2.
(−x)n w(− x1 ). Wtedy dla i = 0, 1, . . . , k
Znów k = 7 oraz A = 12. Czyli ograniczenie dolne
t(xi ) = 0 ⇐⇒ dodatnich pierwiastków w wynosi
1
 
(−xi )n w − =0 ⇐⇒ 1 1
xi = q > 0, 464.
Mv 1 + 12
1
 
9
w − = 0.
xi
4. Przyjmijmy t(x) = x9 w(− x1 ) = −v(−x). Zatem
Liczby
t(x) = 9x9 − 12x7 − 6x6 + x4 − x2 − 2.
1 1 1 1
− ,− ,...,− 6− <0
x0 x1 xk Mv Znów k = 7 oraz A = 12. Czyli ograniczenie górne
ujemnych pierwiastków w wynosi
są wszystkimi ujemnymi miejscami zerowymi wielo-
mianu w. Liczba − M1v jest szukanym ograniczeniem 1 1
− =− q < −0, 464.
górnym pierwiastków ujemnych wielomianu w. Ana- Mt 1 + 12
logicznie dowód przeprowadza się dla drugiej postaci 9

funkcji t.
Podsumowując wszystkie przypadki otrzymujemy, że pier-
Wobec tego dalej zajmiemy się jedynie zadaniem wyznacza- wiastki rzeczywiste w, o ile istnieją, leżą w zbiorze
nia ograniczenia górnego dodatnich zer wielomianu. (−3, 4495, −0, 464) ∪ (0, 464, 2, 565). 

Twierdzenie 43 (Lagrange’a)
Niech w(x) = an xn + an−1 xn−1 + . . . + a1 x + a0 będzie
6.2.5 Lokalizacja zer zespolonych
wielomianem rzeczywistym stopnia n. Niech k będzie
takie, że
Istnieje szereg twierdzeń pozwalających oszacować moduł
ai > 0 dla i = n − 1, . . . , k + 1, oraz ak < 0. zespolonych zer wielomianów lub stwierdzających, w których
ćwiartkach płaszczyzny mogą się znajdować. Oto niektóre z
Ponadto niech A oznacza maksimum modułu ujemnych nich.
współczynników wielomianu. Twierdzenie 44 Niech
Wtedy wszystkie dodatnie pierwiastki wielomianu są
mniejsze niż w(z) = z n + an−1 z n−1 + an−2 z n−2 + . . . + a0 ,
s
A gdzie ai ∈ C. Wybierzmy dowolną liczbę dodatnią β.
Mw = 1 + n−k
.
|an | Wtedy wszystkie pierwiastki wielomianu w (rzeczywiste i
Jeżeli wszystkie współczynniki wielomianu są nieujemne, zespolone) są do modułu nie większe niż
to nie ma on zer dodatnich. ( n−1 )
1 X
M = max , |ak |β n−k−1
.
Twierdzenie nie gwarantuje istnienia zer rzeczywistych. Okre- β
k=0
śla jedynie przedziały, gdzie ich na pewno nie ma.
136 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Twierdzenie można stosować do wielomianów rzeczywistych, wielomianu lub jego pochodnej w punktach xk należy prze-
bo R ⊂ C. prowadzić stosując schemat Hornera.
Przykład Niech w(z) = z 4 + 2z 3 + 3z 2 + 5z + 1. Moduł Szczególnie dobrą okazuje się metoda Mullera. W klasie
pierwiastków można oszacować z góry przez zadań o zerze prostym metoda ta ma wykładnik zbieżności
równy 3. Konstruuje ona ciąg xk zgodnie z regułą:
1 3
 
M = max , β + 5β 2 + 3β + 2 .
β 2f (xk )
xk+1 = xk − ,
f 0 (x
k ) + sk (f 0 (xk )2 − 2f (xk )f 00 (xk )
p
Ponieważ β jest dowolne to można przyjąć np. β = 0, 3.
Wtedy uzyskujemy gdzie sk = sign(f 0 (xk )).
M = 3, 375.  Jeszcze wyżej ocenianą metodą jest metoda Laguerre’a. Jest

ona zdefiniowana wzorem


Twierdzenie 45 Niech
nf (xk )
xk+1 = xk − ,
w(z) = an z + an−1 z
n n−1
+ . . . + a0 , f (xk ) + sk H(xk )
p
0

gdzie ai ∈ C i an 6= 0. Wtedy wszystkie pierwiastki gdzie jak poprzednio sk = sign(f 0 (xk )), n jest stopniem
wielomianu w (rzeczywiste i zespolone) są do modułu nie wielomianu, a
większe niż
|ak | H(x) = [(n − 1)f 0 (x)]2 − n(n − 1)f (x)f 00 (x).
M = 1 + max .
06k6n−1 |an | Udowodniono, że w przypadku wielomianów o zerach rzeczy-
wistych metoda ta jest zbieżna globalnie. Dodatkowo, jeśli
Przykład Niech w(z) = z 4 + 2z 3 + 3z 2 + 5z + 1. Moduł zerami wielomianu są
pierwiastków można oszacować z góry przez α1 6 α2 6 . . . 6 αn ,
M = 1 + max {2, 3, 5, 1} = 6.
to jeśli punkt startowy x0 znajduje się w przedziale


(αk , αk−1 ) to ciąg xk zbiega do jednego z krańców prze-


Następne twierdzenie dotyczy wielomianów o dodatnich działu. Jeśli zaś x > α to x zbiega do a . Analogicznie,
0 n k n
współczynnikach rzeczywistych. dla x0 < α1 ciąg xk zbiega do α1 .
Twierdzenie 46 Niech Obie powyższe metody mogą być użyte również do znajdo-
wania zer zespolonych — wtedy są zbieżne lokalnie.
w(z) = z n + an−1 z n−1 + . . . + a0 ,

gdzie ai ∈ R i ai > 0. Wtedy wszystkie pierwiastki


6.2.7 Deflacja
wielomianu w (rzeczywiste i zespolone) są do modułu nie
mniejsze niż
W praktyce często musimy wyznaczać nie jedno zero wie-

an−1 an−2 a0
 lomianu, ale kilka lub wszystkie (tzn. szukamy rozkładu
m = min , ,..., , wielomianu na czynniki liniowe). Wydaje się celowe, aby po
an an−1 a1
obliczeniu każdego zera obniżyć stopień wielomianu dzieląc
oraz nie większe niż go przez odpowiedni czynnik liniowy (bo jeśli α jest zerem
  wielomianu w, to w(x) = (x − α)v(x), gdzie v jest wielo-
M = min
an−1 an−2
, ,...,
a0
. mianem stopnia o jeden mniejszego niż w). Nazywamy to
an an−1 a1 deflacją. Kolejne zera wyznaczamy wówczas z równań wie-
lomianowych coraz to niższych stopni. Jest to oczywiście
tańsze niż obliczanie tych zer zawsze z oryginalnego równa-
Przykład Niech w(z) = z 4 +2z 3 +3z 2 +5z+1. Oszacowanie nia. Ponadto każdorazowo likwidujemy obliczone zera i nie
dolne modułu pierwiastków wynosi musimy się obawiać, że wyznaczymy je powtórnie.
2 3 5 1 1 O tym, czy otrzymany w procesie deflacyjnym iloraz może
 
m = min , , , = ,
1 2 3 5 5 być zaakceptowany ze względów numerycznych decyduje ja-
kość obliczonego zera, które służy do deflacji oraz dokładność
a górne wynosi
samego procesu deflacyjnego.
2 3 5 1
 
m = max , , , = 2. Jeśli zastosujemy do procesu deflacyjnego algorytm Hornera,
1 2 3 5  to proces deflacji może być niestabilny — daje on dobre

wyniki jedynie jeśli zera wyznaczane są w kolejności wzra-


stających modułów. W 1971 r. opracowano numerycznie
6.2.6 Metody przybliżonego wyznaczania stabilny algorytm deflacyjny. Poniżej przedstawiam jego
zer wielomianów zarys.
Jeśli α jest dokładnym zerem wielomianu w oraz
Do wyznaczania zer można zastosować znane metody —
np. metodę stycznych lub siecznych. Obliczenia wartości w(x) = (x − α)v(x),
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 137

to współczynniki wi i = 1, . . . , n wielomianu

v(x) = w1 + w2 x + . . . + wn xn−1

możemy wyznaczyć algorytmem Hornera:

wn = an ,
wi = ai + wi+1 α, i = n − 1, n − 2, . . . , 0.

Wtedy w0 = w(α) = 0. Możemy to wykorzystać, o ile


α 6= 0 i obliczać liczby wi w odwrotnej kolejności. Zauważmy
mianowicie, że

w0 = 0,
wi+1 = (wi − ai )/α, i = 0, 1, . . . , n − 1.

Algorytm zrealizowany wg powyższego zapisu nazywany jest


odwrotnym algorytmem Hornera.
Okazuje się, że dopiero „sklejenie” algorytmu Hornera i
odwrotnego algorytmu Hornera w odpowiednim miejscu daje
dobre rezultaty. Należy współczynniki wn , wn−1 , . . . , wk+1
obliczyć algorytmem Hornera, zaś w1 , w2 , . . . , wk odwrotnym
algorytmem Hornera. Liczba k jest ściśle określona i można
ją obliczyć.

6.2.8 Pytania powtórzeniowe

1. Podaj twierdzenie określające maksymalną liczbę pier-


wiastków rzeczywistych wielomianu rzeczywistego.
2. Podaj twierdzenie określające liczbę pierwiastków ze-
spolonych wielomianu rzeczywistego.
3. Co można powiedzieć o pierwiastkach rzeczywistych
wielomianu stopnia nieparzystego.
4. Podaj twierdzenie Fouriera.
5. Podaj twierdzenie Laguerre’a.
6. Podaj regułę Kartezjusza.
7. Jeśli znany jest sposób wyznaczenia ograniczenia gór-
nego Mw pierwiastków dodatnich wielomianu w, to jak
można wyznaczyć ograniczenie dolne dodatnich pier-
wiastków w oraz ograniczenie górne i dolne ujemnych
pierwiastków w?
8. Podaj twierdzenie Lagrange’a.
9. Na czym polega proces deflacji? Czy można do deflacji
używać algorytmu Hornera?
138 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

6.3 Układy równań nieliniowych Przykład Rozważmy funkcję

f~ : R2 → R2
6.3.1 Sformułowanie zadania f1 (x1 , x2 )
   
~ x1
f = ,
x2 f2 (x1 , x2 )
Dany jest układ równań
gdzie
f1 (x1 , x2 , . . . , xn ) = 0

f1 (x1 , x2 ) = −2x21 + 3x1 x2 + 4 sin(x2 ) − 6,


f (x , x , . . . , x ) = 0

2 1 2 n
f2 (x1 , x2 ) = 3x21 − 2x1 x22 + 3 cos(x1 ) + 4.


 ...
fn (x1 , x2 , . . . , xn ) = 0,

Aby obliczyć pochodną cząstkową ∂f∂x 1 (~
1
x)
traktujemy na
gdzie przynajmniej jedna z funkcji f1 , f2 , . . . , fn nie jest chwilę funkcję f 1 tak, jakby była funkcją tylko zmiennej
liniowa. Wszystkie te funkcje muszą mieć wspólną dziedzinę. x 1 , a zmienną x 2 traktujemy jak stałą i liczymy „zwykłą”
Oznaczmy ją przez D. Zakładamy, że D ⊂ R jest zbiorem
n pochodną.
wypukłym. Przeciwdziedziną tych funkcji jest zbiór R. f (x , x ) = −2x 2 + 3x x + 4 sin(x ) − 6,
1 1 2 1 1 2 2
Układ taki można zapisać również w postaci: ∂f1 (~x)
= −4x1 + 3x2 .
∂x1
f1 (~x) = 0



f (~x) = 0
Podobnie, aby obliczyć pochodną cząstkową ∂f∂x x)
1 (~
traktu-

2
2
 . . . jemy na chwilę funkcję f1 tak, jakby była funkcją tylko
zmiennej x2 , a zmienną x1 traktujemy jak stałą i liczymy


fn (~x) = 0,

„zwykłą” pochodną.
gdzie ~x ∈ Rn . Czasami stosuje się jeszcze bardziej zwięzły
zapis: f1 (x1 , x2 ) = −2x21 + 3x1 x2 + 4 sin(x2 ) − 6,
f~(~x) = ~0, ∂f1 (~x)
= 3x1 + 4 cos(x2 ).
gdzie ∂x2
f1 (~x)
 
∂f2 (~
x)
 f2 (~x)  Analogicznie obliczamy pochodną ∂x1
f (~x) =  .  .
 
 ..  f2 (x1 , x2 ) = 3x1 2 − 2x1 x22 + 3 cos(x1 ) + 4,
fn (~x) ∂f2 (~x)
= 6x1 − 2x22 − 3 sin(x1 ),
∂x1
W dalszym ciągu przez wektor
∂f2 (~
x)
 
α1 oraz ∂x2
 α2 
~ =  . .
α
  f2 (x1 , x2 ) = 3x21 − 2x1 x2 2 + 3 cos(x1 ) + 4,
 ..  ∂f2 (~x)
αn = −4x21 x2 .
∂x2
będę oznaczać rozwiązanie tego układu.
Macierzą Jacobiego funkcji f~ dla argumentu ~x jest zatem
" #
∂f1 (~
x) ∂f1 (~
x)
6.3.2 Macierz Jacobiego f~0 (~x) = ∂x1 ∂x2
∂f2 (~
x) ∂f2 (~
x)
∂x1 ∂x2
Opisana w następnym punkcie metoda Newtona wymaga −4x1 + 3x2 3x1 + 4 cos(x2 )
 
umiejętności obliczenia pochodnej funkcji f~ dla pewnego = .
6x1 − 2x22 − 3 sin(x1 ) −4x21 x2
argumentu ~x. Ponieważ f~ : R → R , to pochodna jest
n n

macierzą. Macierz ta nazywa się macierzą Jacobiego funkcji Jeśli wezmę konkretny argument, np. ~x = [0, π]T , to Macie-
f~ dla argumentu ~x. Będę ją oznaczać przez f~0 (~x). Aby rzą Jacobiego funkcji f~ dla tego argumentu wynosi
wyznaczyć elementy tej macierzy, trzeba policzyć pochodne
0 −4 · 0 + 3π 3 · 0 + 4 cos(π)
   
cząstkowe funkcji: f~0 =
 ∂f1 (~x) ∂f1 (~x) π 6 · 0 − 2π 2 − 3 sin(0) −4 · 02 · π
∂f1 (~
x)

∂x1 ∂x2 . . . ∂xn

3π −4

 ∂f2 (~x) ∂f2 (~x) ∂f2 (~
x)  = .
∂x1 ∂x2 . . . ∂xn  −2π 2
0 
f~0 (~x) = 
 
 .. .. ..  .
 . . . 
∂fn (~x) ∂fn (~x) ∂fn (~
x)
∂x1 ∂x2 . . . ∂xn
6.3.3 Metoda Newtona
Przypominam, że pochodną cząstkową ∂f∂x x)
i (~
j
obliczamy trak-
tując wszystkie zmienne poza xj tak, jakby były stałymi, Metoda ta polega na generowaniu ciągu wektorów
czyli na chwilę traktujemy funkcję fi jako funkcję jednej ~x(0) , ~x(1) , ~x(2) , ~x(3) . . . w sposób rekurencyjny, tzn. wek-
zmiennej xj i względem tej zmiennej liczymy pochodną. tor ~x(k+1) wyznaczamy na podstawie funkcji f~ i wektora
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 139

~ i f~(~x(k−n) ), dokładniej
~x(k) . Jeśli wystartujemy dostatecznie blisko rozwiązania α
~
funkcja f posiada odpowiednie własności, to ciąg ten będzie h i
do niego zbiegał. Fk = f~(~x(k−n+1) ) − f~(~x(k−n) ) . . . f~(~x(k) ) − f~(~x(k−1) )
Metoda Newtona definiuje wektor ~x(k+1) następującym wzo-
rem f1 (~x(k−n+1) )−f1 (~x(k−n) ) . . . f1 (~x(k) )−f1 (~x(k−1) )
 

~x(k+1) = ~x(k) − [f~0 (~x(k) )]−1 f~(~x(k) ).  f2 (~x(k−n+1) )−f2 (~x(k−n) ) . . . f2 (~x(k) )−f2 (~x(k−1) ) 
=  .. .. .
 
Macierz [f~0 (~x(k) )]−1 jest macierzą odwrotną do macierzy  . . 
Jacobiego f~0 (~x(k) ), czyli wartości pochodnej policzonej dla fn (~x(k−n+1) )−fn (~x(k−n) ) . . . fn (~x(k) )−fn (~x(k−1) )
argumentu ~x(k) .
Aby metoda była poprawnie zdefiniowana należy założyć, że Wektor ~x zdefiniowany jest wzorem
(k+1)

~
dla dowolnego k macierz f (~x ) istnieje i jest nieosobliwa.
0 (k)
~x(k+1) = ~x(k) − Xk F−1 ~ x(k) ).
k f (~
Realizacja komputerowa jednego kroku tej metody wygląda
następująco.
Aby metoda była poprawnie zdefiniowana należy założyć, że
1. Wyznacz wektor f~(~x(k) ). dla dowolnego k macierze Xk i Fk są nieosobliwe.
2. Wyznacz macierz A(k) = f~0 (~x(k) ). Realizacja komputerowa jednego kroku tej metody wygląda
następująco.
3. Rozwiąż układ równań liniowych
1. Wyznacz wektor f~(~x(k) ).
A(k) ~x = −f~(~x(k) ),
2. Wyznacz macierz Xk .
zapisz rozwiązanie w wektorze ~z (k)
. 3. Wyznacz macierz Fk .
4. Oblicz ~x(k+1) = ~x(k) + ~z(k) . 4. Rozwiąż układ równań liniowych
Kryterium zakończenia algorytmu formułuje się na podstawie
F(k) ~x = −f~(~x(k) ),
norm wektorów ~x(k) , f~(~x(k) ) i ~z(k) .
Podobnie jak dla równań nieliniowych, dla układów równań zapisz rozwiązanie w wektorze ~z(k) .
nieliniowych zdefiniuje się wykładnik zbieżności. Można 5. Oblicz ~x(k+1) = ~x(k) + Xk ~z(k) .
udowodnić, że dla metody Newtona wynosi on 2.
Można udowodnić, że dla metody siecznych wykładnik zbież-
ności zależy od funkcji f~ i należy do przedziału (1, 2).
6.3.4 Metoda siecznych

Metoda ta polega na generowaniu ciągu wektorów 6.3.5 Rozwiązywanie układów równań nie-
~x(0) , ~x(1) , ~x(2) , ~x(3) . . . w sposób rekurencyjny. Tym ra- liniowych w Octave
zem nie wystarczy posłużyć się jedynie poprzednim
wektorem, aby wyznaczyć następny. Do wyznacze- Do rozwiązywania układów równań nieliniowych można użyć
nia wektora ~x(k+1) używamy bowiem n + 1 wektorów pakietu Octave. Posiada on funkcję fsolve służącą do tego
~x(k) , ~x(k−1) , ~x(k−2) , . . . , ~x(k−n) . Potrzebujemy zatem n + 1 celu. Wymaga ona dwóch argumentów — funkcji f~ i wektora
wektorów początkowych. Jeśli wystartujemy dostatecznie startowego. Trzeci argument nie jest obowiązkowy i służy
blisko rozwiązania α ~ i funkcja f~ posiada odpowiednie do ustawienia opcji.
własności, to ciąg ten będzie do niego zbiegał.
Metoda ta nie wymaga obliczenia pochodnej funkcji Implementacja funkcji f~ w Octave
f~. Używa natomiast w każdym kroku dwóch ma-
cierzy Xk oraz Fk , obie rozmiaru n × n. Kolum- Aby móc podać argument pierwszy, czyli nazwę funkcji, naj-
nami macierzy Xk są różnice sąsiednich wektorów pierw trzeba tę funkcję napisać. Jeśli chcielibyśmy rozwiązać
~x(k) , ~x(k−1) , ~x(k−2) , . . . , ~x(k−n+2) , ~x(k−n+1) , ~x(k−n) , dokład- układ równań
niej (
−2x2 + 3xy + 4 sin(y) = 6
Xk = ~x(k−n+1)−~x(k−n) ~x(k−n+2)−~x(k−n+1) . . . ~x(k)−~x(k−1)
 
3x2 + 3 cos(x) + 4 = 2xy 2 ,

to najpierw przekształcamy go do postaci, w której wszystkie


 (k−n+1) (k−n) (k−n+2) (k−n+1) (k) (k−1)

x1 −x1 x1 −x1 . . . x1 −x1
. . . x2 −x2  prawe strony są równe 0.
 (k−n+1) (k−n) (k−n+2) (k−n+1) (k) (k−1) 
x2 −x2 x2 −x2
= .. .. .. . (
. . . −2x2 + 3xy + 4 sin(y) − 6 = 0
 
 
(k−n+1) (k−n) (k−n+2) (k−n+1) (k) (k−1)
x1 −xn xn −xn . . . xn −xn 3x2 − 2xy 2 + 3 cos(x) + 4 = 0.

Kolumnami macierzy Fk są różnice sąsiednich wektorów


f~(~x(k) ), f~(~x(k−1) ), f~(~x(k−2) ), . . ., f~(~x(k−n+2) ), f~(~x(k−n+1) ),
140 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19

Funkcja f~, która opisuje ten układ ma dwa argumenty i dwa • 0 — został przekroczony limit iteracji,
wyniki, czyli argumentem jest wektor o dwóch elementach
• −3 — metoda zbytnio zawęziła obszar poszukiwań
oraz wynikiem jest wektor o dwóch elementach,
nowego przybliżenia (stał się on zbyt mały).
f~ : R2 → R2 4. output — struktura zawierająca informacje o liczbie
f1 (x, y)
   
f~ x
= , iteracji oraz obliczeń wartości funkcji,
y f2 (x, y)
5. fjac — ostatnio obliczona macierz Jacobiego.
gdzie
Jeśli chcemy zobaczyć wyniki z większą dokładnością należy
f1 (x, y) = −2x2 + 3xy + 4 sin(y) − 6, przed wywołaniem fsolve wykonać
f2 (x, y) = 3x2 − 2xy 2 + 3 cos(x) + 4. format long;

Ponieważ w Octave będziemy używać wektorów do zapisania


argumentów i wyników, to lepiej zamiast nazw zmiennych x,
Rozwiązanie układu równań nieliniowych z podawa-
y używać x1 , x2
niem macierzy Jacobiego
f~ : R2 → R2
    Jeśli umiemy obliczać macierz Jacobiego, to przekazując
x1 y
f~ = 1 , ją do funkcji fsolve możemy zmniejszyć liczbę iteracji lub
x2 y2
obliczeń wartości funkcji f~. Przyspiesza to działanie funkcji
gdzie fsolve, bowiem gdy macierz Jacobiego nie jest znana, to
zastępowana jest przez jej przybliżenie.
y1 = f1 (x1 , x2 ) = −2x21 + 3x1 x2 + 4 sin(x2 ) − 6,
Aby przekazać macierz Jacobiego do funkcji fsolve trzeba
y2 = f2 (x1 , x2 ) = 3x21 − 2x1 x22 + 3 cos(x1 ) + 4.
po pierwsze zmienić implementację funkcji f~, a po drugie
Realizacja funkcji f~ w Octave wygląda następująco. ustawić odpowiednią opcję w fsolve.

function y = f(x) Macierz Jacobiego dla rozpatrywanego układu została już


y = zeros(2,1); wcześniej obliczona, jest nią
y(1) = -2*x(1)^2 + 3*x(1)*x(2) + 4*sin(x(2)) - 6;
−4x1 + 3x2 3x1 + 4 cos(x2 )
 
y(2) = 3*x(1)^2 - 2*x(1)*x(2)^2 + 3*cos(x(1)) +4; f~0 (~x) = .
6x1 − 2x22 − 3 sin(x1 ) −4x21 x2
endfunction

Polecenie zeros(2,1) tworzy macierz o 2 wierszach i jednej Implementacja funkcji f~ powinna obecnie nie tylko obliczać
kolumnie (czyli wektor o dwóch współrzędnych) wypełnioną wartość funkcji f~ dla zadanego wektora ~x, ale również ma-
zerami. cierz Jacobiego funkcji f~ dla argumentu ~x, tak jak poniżej.
function [y, jac] = f(x)
Rozwiązanie układu równań nieliniowych bez poda- y = zeros(2,1);
wania macierzy Jacobiego y(1) = -2*x(1)^2 + 3*x(1)*x(2) + 4*sin(x(2)) - 6;
y(2) = 3*x(1)^2 - 2*x(1)*x(2)^2 + 3*cos(x(1))+ 4;
Aby rozwiązać układ równań nieliniowych wystarczy teraz if (nargout == 2)
napisać poniższe polecenia. Przypominam, że metoda wy- jac = zeros(2,2);
maga podania wektora startowego. jac(1,1) = 3*x(2) - 4*x(1);
jac(1,2) = 4*cos(x(2)) + 3*x(1);
x0 = [1;2]; jac(2,1) = -2*x(2)^2 - 3*sin(x(1)) + 6*x(1);
[x, fvec, info, output, fjac] = fsolve ("f",x0) jac(2,2) = -4*x(1)*x(2);
endif
Funkcja fsolve zwraca następujące wartości
endfunction
1. x — wynik, który jest wektorem, jego współrzędne
oznaczają wartości kolejnych zmiennych, Funkcja zwraca dwa wyniki: y oraz jac. Instrukcja warun-
kowa if (nargout == 2) sprawdza, czy podczas wywołania f
2. fvec — wartość funkcji f~ dla obliczonego wyniku,
zostały zdefiniowane dwie zmienne na przechowanie wyników.
3. info — informacja o zbieżności procesu: Jeśli wywołanie f wygląda tak
• 1 — ciąg przybliżeń jest zbieżny do uzyska- [w,J] = f(x)
nego rozwiązania uzyskanego z zadaną dokładno-
ścią, dokładność jest zapisana w opcjach ”TolX”, to nargout będzie miało wartość 2, jeśli zaś wywołamy ją
”TolFun”, które można zmieniać, na jeden z poniższych sposobów
• 2 — osiągnięto pewien warunek stopu regulowany w = f(x)
opcją ”TolX”, f(x)
• 3 — osiągnięto pewien warunek stopu regulowany
to nargout będzie miało wartość 1. Sprawdzenie warunku
opcją ”TolFun”,
Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19 141

if (nargout == 2)

pozwala skrócić działanie f, gdybyśmy nie potrzebowali


dwóch wyników.
Po zmodyfikowaniu funkcji f ustawiamy opcje i wywołujemy
fsolve z wektorem startowym x0.
op = optimset("Jacobian", "on");
x0 = [1;2];
[x, fvec, info, output, fjac] = fsolve("f",x0,op)

Ustawianie dokładności i maksymalnej liczby itera-


cji

Funkcja optimset pozwala ustalić szereg opcji i parame-


trów, miedzy innymi dokładność obliczonego wyniku oraz
maksymalną liczbę iteracji. Można to zrobić jak poniżej.
op=optimset("TolFun",1e-9,"TolX",1e-9,"MaxIter",10)
Parametr ”TolX” dotyczy dokładności argumentów, a
”TolFun” dokładności wartości funkcji.
Gdy chcemy, by przy tych ustawieniach macierz Jacobiego
była przekazana lub nie, ustawiamy dodatkową opcję.
op=optimset("Jacobian", "on",
"TolFun",1e-9,"TolX",1e-9,"MaxIter",10)
op=optimset("Jacobian", "off",
"TolFun",1e-9,"TolX",1e-9,"MaxIter",10)
142 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19
Bibliografia

[1] M. Dryja, J. Jankowska, M. Jankowski. Przegląd metod


i algorytmów numerycznych. WNT, Warszawa, 1988.
[2] Z. Fortuna, B. Macukow, J. Wąsowski. Metody nume-
ryczne. WNT, Warszawa, 2015.
[3] J. Jankowska, M. Jankowski. Przegląd metod i algoryt-
mów numerycznych. WNT, Warszawa, 1988.
[4] P. Kiciak. Podstawy modelowania krzywych i po-
wierzchni: Zastosowania w grafice komputerowej. WNT,
Warszawa, 2005.
[5] A. Kiełbasiński, H. Schwetlick. Numeryczna algebra
liniowa: Wprowadzenie do obliczeń zautomatyzowanych.
WNT, Warszawa, 1994.
[6] D. Kincaid, E. W. Cheney, S. Paszkowski. Analiza
numeryczna. WNT, Warszawa, 2006.
[7] M. A. Kowalski, K. A. Sikorski, F. Stenger. Selected
topics in approximation and computation. Oxford Uni-
versity Press, New York, 1995.
[8] L. Plaskota. Noisy information and computational com-
plexity. Cambridge University Press, Cambridge, 2011.
[9] J. Stoer, R. Bulirsch, J. Cytowski. Wstęp do analizy
numerycznej. PWN, Warszawa, 1987.
[10] J. F. Traub, G. W. Wasilkowski, H. Woźniakowski.
Information, uncertainty, complexity. Addison-Wesley,
Reading, Mass. etc., 1983.
[11] J. F. Traub, G. W. Wasilkowski, H. Woźniakowski.
Information-based complexity. Academic Press, Boston
etc., 1988.
[12] J. F. Traub, H. Woźniakowski. A general theory of
optimal algorithms. Academic Press, New York etc.,
1980.

143

You might also like