Professional Documents
Culture Documents
Metody Numeryczne
Wykład i zadania
2018/19, UKSW
ii Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19
Spis treści
iii
iv Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19
Rozdział 1
Arytmetyka komputerów
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
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
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 12 Niech
x = a · 2n ,
y = b · 2n ,
x = a · 2n ,
y = b · 2m ,
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
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>
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
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
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ą.
& %
{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
= 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
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.
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
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
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)
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:
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
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
#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
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
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
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
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;
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),
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
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
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
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 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 |
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
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
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 |
φ : 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
cond(x)
0 2 4 6
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
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
φ : 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 + σ)
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
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.
de2 − d2 = (d − d)
e 2 − 2d(d − d),
e
42 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19
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
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
Odpowiedzi
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. zbiór E, który zawiera się w F , gdzie ~y = [y1 , y2 , . . . , yn ] oraz dla ułatwienia zapisu przyj-
T
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
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.
r(A) = sup ka − gA k,
a∈A
0 1
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 ).
φ
> d(A(~0))
= sup |a1 − a2 |
a1 , a2 ∈A(~
0)
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.
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 .
2. p = 1,
3. p = ∞.
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
53
54 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19
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.
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
1, x, x2 , x3 .
56 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19
∀x∈R Tn (−x) = −Tn (x). Dodatkowo, na krańcach przedziału [−1, 1] funkcja też
przyjmuje wartości 1 lub −1
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
ss ss -
−1 0 1
Węzły po wykonaniu jednokładności:
s s s s -
− b−a 0 b−a
2 2
s s s s -
0 − b−a + a+b b−a
+ a+b
2 2 2 2
k · k[a,b] : C[a, b] → R,
kf k[a,b] = sup |f (x)|.
x∈[a,b]
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).
• 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 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 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 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π
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;
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
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
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
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
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
Odpowiedzi
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
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
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.
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
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
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
.. (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
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
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 ),
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
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
3.3.4 Baza Czebyszewa → baza naturalna 3.3.7 Baza Newtona → baza naturalna
3.3.10 Zadania
Zadanie 131 Dane są węzły
(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
Interpolacja wielomianowa
81
82 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19
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
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.
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.
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
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ę.
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
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
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
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 π
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:
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
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
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-
x0 , . . . , x0 , x1 , . . . , x1 , . . . , xm−1 , . . . , xm−1 , xm , . . . , xm .
| {z } | {z } | {z } | {z }
k0 k1 km−1 km −1
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
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
wniosek. k1 = 2
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 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
f (x) = cos x
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
R 6 4
3
Zadanie 184 w(x) = x2 + 3x2 (x − 1) + 4x2 (x − 1)2
103
104 Dorota Dąbrowska, UKSW, Metody Numeryczne 2018/19
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.
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
x−k < . . . < x−1 < x0 < x1 < . . . < xn < xn+1 < . . . < xn+k
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
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)
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.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
splajnów w punkcie x0 , x1 , . . . , xn
i
S(x) = (x − 1)2 .
Przedstawmy splajn S w lokalnych bazach potęgowych.
Mamy do czynienia z dwoma przedziałami
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].
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.
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
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
f (x) = ai + bi (x − xi ) + ci (x − xi )2 + di (x − xi )3 ,
dla x ∈ [xi , xi+1 ), i = 0, 1, ..., n − 1.
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(x0 ) = f (x0 ),
S(xn ) = f (xn ).
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
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
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
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
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
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.
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.
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
f (x) = 0,
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
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.
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
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
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 → ∞.
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
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
2f (xk )
xk+1 = xk − ,
f 0 (xk ) + sk (f 0 (xk )2 − 2f (xk )f 00 (xk )
p
Odpowiedzi
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
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).
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
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
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
to współczynniki wi i = 1, . . . , n wielomianu
v(x) = w1 + w2 x + . . . + wn xn−1
wn = an ,
wi = ai + wi+1 α, i = n − 1, n − 2, . . . , 0.
w0 = 0,
wi+1 = (wi − ai )/α, i = 0, 1, . . . , n − 1.
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 ,
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;
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)
143