• Nie Znaleziono Wyników

Metody numeryczne dla fizyków

N/A
N/A
Protected

Academic year: 2021

Share "Metody numeryczne dla fizyków"

Copied!
79
0
0

Pełen tekst

(1)

Metody numeryczne dla fizyków

Krzysztof Golec–Biernat

(1 maja 2015)

Wersja robocza nie do dystrybucji

Kraków

2007-15

(2)
(3)

Spis treści

1 Liczby i ich reprezentacje 7

1.1 Systemy liczbowe . . . 7

1.2 System dwójkowy . . . 7

1.3 Konwersja do systemu dwójkowego . . . 9

1.3.1 Konwersja liczby całkowitej . . . 9

1.3.2 Konwersja liczby ułamkowej . . . 10

1.4 Reprezentacja liczb całkowitych . . . 10

1.5 Reprezentacja zmiennoprzecinkowa . . . 12

1.5.1 Podział bitów . . . 12

2 Błe¸dy i ich źródła 14 2.1 Dokładność zapisu . . . 14

2.2 Błąd bezwględny i względny . . . 15

2.2.1 Przyklad . . . 16

2.3 Źródła bł¸edów . . . 16

2.3.1 Błędy wejściowe. . . 16

2.3.2 Bł¸edy obci¸ecia. . . 17

2.3.3 Bł¸edy zaokr¸agleń. . . 18

2.3.4 Przyklad . . . 18

2.4 Odejmowanie małych liczb . . . 19

3 Algorytmy 21 3.1 Algorytmy stabilne . . . 21

3.2 Algorytmy niestabilne . . . 22

3.3 Złożoność obliczeniowa . . . 24

(4)

4 Macierze 25

4.1 Układ równań liniowych . . . 25

4.2 Metoda eliminacji Gaussa . . . 26

4.3 Rozkład LU macierzy . . . 28

4.4 Metoda Doolittle’a . . . 30

4.5 Wyznacznik macierzy . . . 31

5 Interpolacja 33 5.1 Wielomian interpolacyjny Lagrange’a . . . 33

5.2 Interpolacja Lagrange’a znanej funkcji . . . 35

5.3 Interpolacja przy pomocy funkcji sklejanych . . . 36

6 Interpolacja optymalna 38 6.1 Wielomiany Czebyszewa . . . 38

6.2 Optymalny wybór w¸ezłów interpolacji . . . 39

6.3 Wzory dla dowolnego przedziału . . . 40

7 Aproksymacja 42 7.1 Regresja liniowa . . . 42

7.2 Aproksymacja średniokwadratowa . . . 43

8 Przykłady aproksymacji 46 8.1 Aproksymacja Czebyszewa . . . 46

8.2 Aproksymacja Czebyszewa w dowolnym przedziale . . . 48

8.3 Aproksymacja trygonometryczna . . . 49

8.4 Wzory dla dowolnego okresu . . . 51

9 Różniczkowanie 52 9.1 Metoda z aproksymacj¸a . . . 52

9.2 Metody z rozwini¸eciem Taylora . . . 52

9.2.1 Wi¸eksza dokładność . . . 53

9.3 Wyższe pochodne . . . 54

(5)

10 Zera funkcji 55

10.1 Metoda połowienia . . . 55

10.2 Metoda Newtona . . . 57

10.3 Metoda siecznych . . . 59

10.4 Metoda fałszywej prostej (falsi) . . . 60

11 Całkowanie 62 11.1 Kwadratury . . . 62

11.2 Metoda prostokatów . . . 63

11.3 Metoda trapezów . . . 63

11.4 Metoda parabol Simpsona . . . 64

11.5 Bł¸ad przybliżeń . . . 65

12 Kwadratury Gaussa 66 12.1 Rz¸ad kwadratury . . . 67

12.2 Wielomiany ortogonalne . . . 68

12.3 Kwadratura Gaussa . . . 69

12.4 Współczynniki kwadratury Gaussa . . . 70

12.5 Przykład kwadratury Gaussa . . . 71

13 Równania różniczkowe 72 13.1 Równania zwyczajne pierwszego rz¸edu . . . 72

13.2 Układ równań różniczkowych . . . 73

13.3 Równania wyższych rz¸edów . . . 73

13.4 Metody Eulera . . . 74

13.5 Metoda przewidź i popraw . . . 75

13.6 Stabilność numeryczna rozwi¸azań . . . 76

13.7 Równania typu stiff . . . 77

14 Metoda Rungego-Kutty 78 14.1 Metoda drugiego rz¸edu . . . 78

14.2 Metoda czwartego rz¸edu . . . 80

15 Metody Monte Carlo 81 15.1 Zmienna losowa i rozkład prawdopodobieństwa . . . 81

15.2 Przykłady rozkładów prawdopodobieństwa . . . 83

15.3 Generowanie liczb losowych . . . 84

15.4 Całkowanie metod¸a Monte Carlo . . . 85

(6)

Wykład 1

Liczby i ich reprezentacje

1.1 Systemy liczbowe

Przypomnijmy zapis liczby całkowitej w systemie dziesie

tnym, na przykład (1234)10 = 4 · 100+ 3 · 101+ 2 · 103+ 1 · 104.

Do zapisu używamy dziesie

ć cyfr {0, 1, 2, . . . , 9}, a 10 to podstawa systemu liczbowego. Wartość cyfry zależy od pozycji w liczbie.

W ogólności, dowolna

liczbe

całkowita

można zapisać w systemie pozycyj- nym o podstawie p przy pomocy cyfr ci∈ {0, 1, . . . , p − 1} w następujacy sposób (ck. . . c1c0)p = c0· p0+ c1· p + . . . + ck· pk (1.1) Podobnie, dowolna

liczbe

ułamkowa

z przedziału (0, 1) możemy zapisać przy pomocy (na ogół nieskończonego) rozwinie

cia w ujemnych potęgach podstawy p,

(0. c−1c−2. . . c−n)p = c−1· p−1+ c−2· p−2+ . . . + c−n· p−n (1.2)

1.2 System dwójkowy

Szczególnie ważna

role

odgrywa system dwójkowy o podstawie p = 2 i cyfrach ci∈ {0, 1}. Znaczenie tego systemu dla komputerów wynika z faktu, że pod- stawowa

jednostka

informacji jest bit przyjmuja

cy jedna

z dwóch możliwych wartości: 0 lub 1. Przyjęło się nazywać

1 bajt = 8 bitów

Przykładowy zapis liczby całkowitej w systemie dwójkowym to (11010)2= 0 · 20+ 1 · 21+ 0 · 22+ 1 · 23+ 1 · 24 = 2 + 8 + 16 = (26)10.

(7)

Podobnie dla liczby ułamkowej

(0.1101)2 = 1 ·12+ 1 ·14+ 0 ·18+ 1 ·161 =1316

10.

Załóżmy, że dysponujemy n bitami do zapisu liczby całkowitej. Pozwala- ją one zapisać 2n liczb. Najmniejsza

liczba

całkowita

dodatnia

zapisana

przy

pomocy n bitów jest zero

(00 . . . 00)2= 0 , (1.3)

natomiast najwie

ksza

liczba

jest

(11 . . . 11)2 = 1 · 20+ 1 · 21+ . . . + 1 · 2n−1 = 2n− 1 . (1.4) Wykorzystaliśmy tutaj wzór na sume

skończonej liczby wyrazów szeregu geo- metrycznego o ilorazie a 6= 1:

1 + a + a2+ . . . + aN −1=1 − aN

1 − a (1.5)

Podsumowuja

c, dysponuja

c n bitami możemy zapisać 2n liczb całkowitych z przedziału

[0, 2n− 1] . (1.6)

Podobnie, przy pomocy n bitów możemy zapisać 2n− 1 liczb ułamkowych z przedziału (0, 1). Najmniejsza

z nich jest

(0.00 . . . 01)2 = 1 · 2−n = 1

2n (1.7)

natomiast najwie

ksza to

(0.11 . . . 11)2 = 1 · 2−1+ 1 · 2−2+ . . . + 1 · 2−n= 1 − 1

2n. (1.8) Podsumowując, przy pomocy n bitów zapiszemy (2n− 1) (brak zera) liczb z przedziału

 1

2n, 1 − 1 2n



, (1.9)

Wygodnie jest zapamie

tać naste

puja

ca tabelke

ułatwiaja

ca

zmiane

zapisu liczb w systemie dwójkowym na system dziesie

tny.

(8)

n 2n 2−n

0 1 1

1 2 1/2

2 4 1/4

3 8 1/8

4 16 1/16

5 32 1/32

6 64 1/64

7 128 1/128

8 256 1/256

9 512 1/512

10 1024 1/1024 11 2048 1/2048 12 5096 1/5096

1.3 Konwersja do systemu dwójkowego

1.3.1 Konwersja liczby całkowitej Konwersje

odwrotna

z systemu dziesiętnego na dwójkowy dla liczb całkowitych realizuje sie

zauważaja

c, że zachodzi

x = c0+ c1· 21+ . . . + ck· 2k = c0+ 2 · (c1+ . . . + ck· 2k−1) (1.10) Tak wie

c c0 to reszta z dzielenia x przez 2. Podobnie c1 jest reszta

z dzielenia (c1+ . . . + ck· 2k−1) przez 2, itd.

Przykładowo, konwertuja

c liczbę 30 otrzymamy 30 = 2 · 15 + 0 15 = 2 · 7 + 1

7 = 2 · 3 + 1 3 = 2 · 1 + 1 1 = 2 · 0 + 1 Odczytuja

c reszty od dołu do góry otrzymujemy:

30 = (11110)2. (1.11)

1.3.2 Konwersja liczby ułamkowej Dla liczby ułamkowej,

x = c−1· 2−1+ c−2· 2−2+ . . . + c−n· 2−n (1.12)

(9)

po pomnożeniu przez dwa, otrzymujemy

2x = c−1+ (c−2· 2−1+ . . . + c−n· 2−n+1)

| {z }

r

(1.13)

Jak łatwo zauważyć c−1 jest cze

ścia

całkowita

liczby 2x (równa

0 lub 1) nato- miast r < 1 jest cze

ścia

ułamkowa

. Aby wydobyć c−2 mnożymy wtedy r przez dwa, itd.

Przykładowo, dla 0.375 otrzymujemy

0.375 × 2 = 0. 750 0.750 × 2 = 1. 500 0.500 × 2 = 1. 000 Odczytuja

c cze

ści całkowite liczb po prawej stronie równości od góry do dołu, dostajemy

0.375 = (0.011)2. (1.14)

Otrzymana reprezentacja dwójkowa jest skończona. Rozwinie

cie dwójkowe ułam- ków może być jednak nieskończone, podobnie jak w systemie dziesie

tnym.

Łacza

c dwie przedstawione metody konwersji, możemy znaleźć reprezentacje

dwójkowa

dowolnej liczby rzeczywistej, na przykład:

30.375 = 30 + 0.375 = (11110.011)2 (1.15)

1.4 Reprezentacja liczb całkowitych

Załóżmy, że przeznaczamy n bitów do zapisu liczby całkowitej w komputerze.

Pierwszy z nich przeznaczamy na znak liczby:

(0) = (+) (1) = (−) (1.16)

Pozostałe (n − 1) bitów posłuży do zapisu liczb całkowitych C z przedziału C ∈ [ −2n−1+ 1 , 2n−1− 1 ] . (1.17) Zauważmy, że poste

puja

c w ten sposób zero jest reprezentowane dwukrotnie ze wzgle

du na znak:

0 = (0) 0 . . . 0

| {z }

n−1

oraz 0 = (1) 0 . . . 0

| {z }

n−1

(1.18)

Przyjmuja

c tylko pierwszy sposób zapisu unikamy tej niejednozanczności zwal- niaja

c jednocześnie miejsce dla dodatkowej liczby, na przykład 2n−1. Tak wie

c, przy pomocy n bitów można zapisać 2nliczb całkowitych z przedziału

C ∈ [ −2n−1+ 1 , 2n−1] (1.19)

(10)

Podkreślmy, że liczby całkowite są reprezentowane dokładnie.

W praktyce, jednoznaczną reprezentację zera można zrealizować w następu- jący sposób. Przeznaczmy n bitów na zapis 2n nieujemnych liczb całkowitych C0 z przedziału

C0∈ [ 0 , 2n− 1 ] . (1.20) Przesuńmy następnie wszystkie liczby całkowite odejmując od każdej z nich liczbę E = 2n−1− 1. Otrzymujemy liczby

C = C0− E (1.21)

z przedziału (1.19). Zauważmy, że zero nie jest już reprezentowane przez pierw- szy ciąg bitów w reprezentacji (1.18). Jego reprezentacja odpowiada teraz dwój- kowej reprezentacji liczby E.

Współczesne procesory przeznaczają w pojedynczej precyzji 4 bajty czyli 32 bity do zapisu liczby całkowitej lub 8 bajtów czyli 64 bity w podwójnej precyzji. Poniższa tabelka pokazuje zakres liczb całkowitych w tych przypad- kach

Precyzja Liczba bitów Zakres Uwagi

Pojedyncza 32 [ −231+ 1 , 231] 231∼ 109

Podwójna 64 [ −263+ 1 , 263] 263∼ 1019

1.5 Reprezentacja zmiennoprzecinkowa

Przedyskutujemy teraz zapis liczb rzeczywistych w komputerze. Najbardziej efektywny zapis wykorzystuje reprezentacje

zmiennoprzecinkowa

. W repre- zentacji tej nie ustala sie

maksymalnej liczby cyfr po przecinku przy zapisie liczby.

Przykładowo, rozważmy liczbe

x = 0.00045. Możemy ja zapisać w naste

pu-

jacy sposób

x = 45 · 10−5 = 4.5 · 10−4 = 0.45 · 10−3. Liczba stoja

ca przez pote

ga

dziesia

tki to mantysa M , natomiast wykładnik potegi to cecha C. Dowolna

liczbe

rzeczywista

można wie

c zapisać w postaci

x = ± M · 10C. (1.22)

Przyjmujemy konwencje

, że mantysa należy do przedziału

M ∈ [1, 10) , (1.23)

(11)

natomiast cecha C jest liczbą całkowitą (dodatnią ujemna lub równą zeru). Dla przykładowej liczby x: M = 4.5 i C = −4.

Przyjmuja

c za podstawe

p = 2 dostajemy analogiczny zapis w systemie dwój- kowym

x = ± M · 2C, (1.24)

gdzie tym razem dla mantysy zachodzi:

M ∈ [1, 2) (1.25)

1.5.1 Podział bitów

Reprezentacja (1.24) jest podstawa

zapisu liczb rzeczywistych w komputerze.

W tym celu dzielimy n bitów przeznaczonych do zapisu liczby rzeczywistej,

x = S × M × 2C, (1.26)

w naste

puja

cy sposób

n = 1 + nM+ nC. (1.27)

W powyższej sumie

• pierwszy bit przeznaczamy na znak liczby S = ±1,

• naste

pne nM bitów służa

do zapisu cześci ułamkowej F mantysy

M = 1 + F . (1.28)

Ze względu na zawsze występująca jedynkę nie musimy jej kodować. Część ułamkowa mantysy należy więc do przedziału

F ∈

 1

2nM, 1 − 1 2nM



(1.29)

• pozostałe nC bitów przeznaczamy na zapis cechy C wraz ze znakiem.

Zgodnie z warunkiem (1.19)

C ∈ [ −2nC−1+ 1 , 2nC−1] . (1.30) Mantysę C można zapisać wykorzystując przesuniecie C = C0− E, gdzie E = 2nC−1− 1. Kodujemy wtedy liczbę całkowitą C0∈ [ 0 , 2nC− 1 ].

Oczywistym jest, że prawie wszystkie liczby rzeczywiste są reprezentowane w przybliżeniu.

Współczesne procesory reprezentują liczby zmiennoprzecinkowe w konwencji zgodnej ze standardem IEEE Standard 754-1985. Podział bitów dla cechy i mantysy dla tego standardu podany jest w tabelce.

(12)

Precyzja Liczba bitów nM nC Zakres C

Pojedyncza 32 23 8 [ -127 , 128 ]

Podwójna 64 52 11 [ -1023 , 1024 ]

Poniżej podajemy kilka zapisów liczb w pojedynczej precyzji.

0( 0 . . . 0

| {z }

23 zera

)(00000000) = + 1.0 × 20= 1.0

0( 0 . . . 0

| {z }

23 zera

)(00000001) = + 1.0 × 21= 2.0

1(1 0 . . . 0

| {z }

22 zera

)(10000001) = − (1.0 +12) × 2−1= −0.75

(13)

Wykład 2

Błe ¸dy i ich źródła

2.1 Dokładność zapisu

Miara

przybliżonego zapisu liczby rzeczywistej jest epsilon maszynowy, zdefi- niowany w naste

puja

cy sposób.

Rozważmy najmniejszą liczbe

możliwa

do zapisu w komputerze wie

ksza od 1 i oznaczny ja

przez x. Epsilon maszynowy to różnica:

m= x − 1 . (2.1)

W przykładzie z podziałem 8 = 1 + 3 + 4 bitów najmniejsza

zapisana

liczba

wieksza

od 1 jest

(0)001(0)000 = (1 + 0 · 2−1+ 0 · 2−2+ 1 · 2−3) · 20 = 1 +18 (2.2) i sta

d m= 2−3= 0.125.

W ogólności, przeznaczaja

c nM bitów do zapisu mantysy (z wyła

czeniem znaku), zachodzi

m = 1

2nM (2.3)

Liczba

p = nM (2.4)

nazywana jest precyzjai jest liczba

bitów przeznaczonych do zapisu mantysy z wyłaczeniem znaku.

Zwiekszaja

c liczbe

bitów mantysy nM zwie

kszamy precyzje

. Odbywa sie to kosztem zmniejszenia maksymalnej liczby możliwej do zapisania, gdyż przy

ustalonej całkowitej liczbie bitów n, mniej bitów można przeznaczyć do zapisu cechy:

nC= n − 1 − nM. (2.5)

Jest to ilustracja wymienności pomie

dzy dokładnościa a zakresem reprezento- wanych liczb zmiennoprzecinkowych w komputerze.

(14)

Tabelka poniżej precyzję i epsilon maszynowy dla używanych powszechnie precyzji zapisu liczby rzeczywistej.

Precyzja Liczba bitów nM p m

Pojedyncza 32 23 23 2−23∼ 10−7

Podwójna 64 52 52 2−52∼ 10−15

2.2 Błąd bezwględny i względny

Jak widzimy, na ogół dowolona liczba zmiennoprzecinkowa x nie może być re- prezentowana w komputerze dokładnie.

Jeżeli najbliższa

liczba

reprezentującą x w komputerze jest x0, to bład bez- wgledny zapisu liczby x jest zdefiniowany jako różnica

δx = x0− x (2.6)

Bład wzgledny to stosunek błe

du bezwzgle

dnego do wartości dokładnej liczby

 = x0− x

x (2.7)

Z powyższego wzoru wynika. że liczbę przybliżoną x0 można traktować ja- ko zaburzenie liczby dokładnej x przez czynnik multiplikatywny zawierający wartość błędu względnego ,

x0= x (1 + ). (2.8)

Można pokazć, że moduł błe

du względnego zapisu liczby zmiennoprzecinkowej jest mniejszy od epsilona maszynowego

|| ¬ m (2.9)

2.2.1 Przyklad Zapiszmy liczbe

0.48 = 12/25 przy pomocy 8 = 1 + 3 + 4 bitów. Epsilon maszy- nowy w tym przypadku to

m=18= 0.125 . (2.10)

(15)

W reprezentacji cecha-mantysa otrzymujemy

0.48 = 1.92/4 = (1.92) · 2−2. Mantysa zapisana w systemie dwójkowym to

1.92 = (1.111010 . . .)2. (2.11) W przyje

tej reprezentacji pozostawiamy pierwsze trzy bity w rozwinie

ciu dwój- kowym mantysy, sta

d

0.48 ≈ (0)111(1)010 = (1 + 1 · 2−1+ 2−2+ 2−3) · 2−2=1532= 0.46875 . Jest to ilustracja zaokraglania, polegaja

cego na odrzuceniu cyfr w rozwinie

- ciu dwójkowym mantysy wykraczaja

cych poza przyje

ta

liczbe

bitów (w tym przypadku trzech). Powstały w ten sposób bła

d wzgle

dny to

|| =

15 321225

12 25

= 964 ≈ 0.04 . Jak widać || < m, zgodnie z warunkiem (2.9).

2.3 Źródła błe ¸dów

Przy obliczeniach komputerowych mamy do czynienia z trzema rodzajami błe

dów.

2.3.1 Błędy wejściowe.

Sa one spowodowane tym, że dane wprowadzane do komputera sa

obarczone błedem. Moga

to być dane eksperymentalne, które ze swej natury sa

obarczone błedem. Najcze

ściej jednak błe

dy te wynikaja

z zaokra

glania liczb rzeczywi- stych, reprezentowanych w komputerze przez słowa binarne o skończonej dłu- gości.

2.3.2 Błe¸dy obcie¸cia.

Błedy obcie

cia powstaja

podczas obliczeń wymagaja

cych nieskończonej liczby działań, np. podczas nieskończonych sumowań lub ścisłych przejść granicznych.

Dla przykładu, obliczaja

c wartość funkcji przy pomocy rozwinie

cia Taylora, f (x) = f (x0) +f0(x0)

1! h +f00(x0)

2! h2+ . . . +f(N )(x0)

N ! hN+ RN +1(ξ) (2.12) gdzie h = x − x0, popełniamy bła

d zadany przez odrzucana

reszte

RN +1(ξ) = f(N +1)(ξ)

(N + 1)! hN +1, (2.13)

(16)

gdzie punkt ξ ∈ [min{x0, x}, max{x0, x}].

W szczególności, dla kilku podstawowych funkcji używamy naste

puja

cych

przybliżonych rozwinie

ć wokół x0= 0:

exp x ≈ 1 + x +x2

2! + . . . +xN

N ! (−∞ < x < ∞) (2.14)

sin x ≈ x −x3 3! +x5

5!+ . . . + (−1)N x2N +1

(2N + 1)! (−∞ < x < ∞) (2.15) cos x ≈ 1 −x2

2! +x4

4!+ . . . + (−1)N x2N

(2N )! (−∞ < x < ∞) (2.16) 1

1 − x ≈ 1 + x + x2+ . . . + xN, (−1 < x < 1) (2.17) Ponadto, do obliczenia logarytmu dowolnej dodatniej liczby rzeczywistej dodat- niej stosujemy wzór

ln1 + x

1 − x ≈ 2 x + x3 3 + x5

5 + . . . + x2N +1 2N + 1

!

, (−1 < x < 1) (2.18) Zauważmy bowiem, że podstawiaja

c x ∈ (−1, 1), liczba w =1 + x

1 − x (2.19)

przebiega zakres wartości dziedziny logarytmu: w ∈ (0, +∞). Sta

d metoda by licza

c ln w najpierw odwrócić powyższa

relacje

: x =(w − 1)

(w + 1), (2.20)

a naste

pnie podstawić ja

po prawej stronie wzoru (2.18).

2.3.3 Błe¸dy zaokra¸gleń.

To błe

dy wynikaja

ce z zaokra

gleń wykonywanych w trakcie wielokrotnych dzia- łań arytmetycznych.

Oznaczmy przez fl(x) wynik obliczeń numerycznych różnia

cy sie

od dokład- nej wartości x na skutek błe

dów zaokra

gleń. Zgodnie z (2.7) dla pojedynczej liczby mamy:

fl(x) = x (1 + ) . (2.21)

W przypadku działań arytmetycznych obowia

zuje:

Lemat Wilkinsona Błedy zaokra

gleń powstaja

ce przy wykonywaniu działań zmiennoprzecinkowych

(17)

sarównoważne zaste

pczemu zaburzaniu liczb, na których wykonujemy działania.

W przypadku pojedynczych działań zachodzi

fl(x1± x2) = x1(1 + 1) ± x2(1 + 2) (2.22) fl(x1· x2) = x1(1 + 3) · x2 = x1· x2(1 + 3) (2.23)

fl(x1/x2) = x1(1 + 4)/x2 = x1/(x2(1 + 5)) , (2.24) Wszystkie zaburzenia można wybrać tak by ich moduł był mniejszy od epsilona maszynowego

|i| < m. (2.25)

2.3.4 Przyklad

Zilustrujmy lemat Wilkinsona dodaja

c do siebie dwie liczby w reprezentacji jednobajtowej z podziałem 8 = 1 + 3 + 4,

0.48 + 0.24 =1225+1250= 0.72 . Dostajemy

0.48 = 1.92 · 2−2 ≈ (0)111(1)010 = (1 + 1 · 2−1+ 2−2+ 2−3) · 2−2=1532 0.24 = 1.92 · 2−3 ≈ (0)111(1)110 = (1 + 1 · 2−1+ 2−2+ 2−3) · 2−3=1564. gdyż

1.92 = (1.111010 . . .)2≈ (1.111)2. Po dodaniu numerycznym otrzymujemy

fl(0.48 + 0.24) =1532+1564=4564= 1.40625 · 2−1≈ (0)011(1)100 =1116= 0.6875 , gdyż

1.40625 = (1.01101)2≈ (1.011)2.

Zgodnie z lematem Wilkinsona, ten sam wynik można otrzymać zaburzaja

c dodawane do siebie liczby

12

25(1 + 1) +1250(1 + 2) =1116, skad wynika relacja

21+ 2= −1396. Wybór liczb i nie wie

c jest jednoznaczny. Można je jednak wybrać tak by zachodziło: |i| ¬ m= 1/8. Na przykład: 1= −1/16 oraz 2= −1/96.

(18)

2.4 Odejmowanie małych liczb

Obliczmy bła

d wzgle

dny różnicy dwóch liczb

|| =

fl(x1− x2) − (x1− x2) x1− x2 .

(2.26) Zgodnie z lematem Wilkinsona

fl(x1− x2) = x1(1 + 1) − x2(1 + 2) . (2.27) Podstawiając do pierwszego wzoru, otrzymujemy

|| =

x1· 1− x2· 2 x1− x2 .

. (2.28)

Załóżmy, ze dwie liczby różnią się mało od siebie

x1= x2(1 + δ) , δ → 0 (2.29)

Podstawiając powyżej, znajdujemy

|| ' |1− 2|

|δ| → ∞ dla δ → 0 . (2.30)

Błąd względny odejmowania może być bardzo duży dla liczb niewiele różniących się od siebie. Należy wiec unikać odejmowania mało różniacych sie od siebie liczb.

Nieograniczony wzrost (2.30) nie jest sprzeczny z warunkiem (2.25) w le- macie Wilkinsona, gdyż epsilony w tym lemacie to zaburzenia indywidualnych liczb, a nie bła

d wzgle

dny (2.26) wyniku działań arytmetycznych.

Jako przykład, obliczmy jeden z pierwiastków równania kwadratowego dla b2 4ac,

x =−b +

b2− 4ac

2a . (2.31)

W tym celu należy wykorzystać równoważna

postać x =−b +

b2− 4ac

2a ·(−b −

b2− 4ac) (−b −

b2− 4ac) = −2c b +

b2− 4ac, (2.32) gdyz dodajemy wtedy dwie wielkości tego samego rze

du w mianowniku, zamiast odejmować dwie bliskie liczby w liczniku.

(19)

Wykład 3

Algorytmy

Omówimy po krótce problem stabilności i efektywności algorytmów. Zagad- nienie to dotyczy wpływu błe

dów zaokra

gleń lub błe

dów obcie

ć na stabilność algorytmów numerycznych. Wynikaja

ce sta

d problemy przedstawimy na przy- kładzie algorytmów realizowanych przy pomocy relacji rekurencyjnych.

3.1 Algorytmy stabilne

Przykładem algorytmu stabilnego jest relacja rekurencyjna służa

ca do oblicze- nia kolejnych przybliżeń liczby√

2:

xn+1=1 2

 xn+ 2

xn



, n ­ 0 (3.1)

Zaczynaja

z x0= 2 otrzymujemy kolejne przybliżenia

x1= 1.5 , x2= 1.416667 , x3= 1.414216 Zakładaja

c, że istnieje granica

tego cia

gu otrzymujemy jako granice

x=√

2, gdyż z relacji (3.1) wynika

x=x

2 + 1 x

=> x=

2 . (3.2)

Istnienie granicy wynika z faktu, że bład wzgle

dny kolejnych przybliżeń szybko zmierza do zera. Zaczynaja

c od n = 1, otrzymujmy x1=

2 (1 + ) . (3.3)

gdzie  < 1. W kolejnym przybliżeniu otrzymujemy x2 = x1

2 + 1 x1 = 1

√ 2



1 +  + 1 1 + 



= 1

√2

n1 +  + (1 −  + 2+ . . .)o≈√ 2

( 1 +2

2 )

(3.4)

(20)

Teraz bła

d wzgle

dny jest kwadratem poprzedniego. W naste

pnych krokach bład ten maleje jak kolejne pote

gi 2ktak, że wystarczy niewiele iteracji do osia

gniecia z góry założonej dokładności Algorytm znajdowania pierwiastka jest wie

c szyb- ko zbieżny (efektywny).

Przykładem mało efektywnego algorytmu jest sposób obliczania liczby ln 2 przy pomocy rozwinie

cia w szereg Taylora ln(1 + x) ≈ x −x2

2 +x3

3 + . . . + (−1)N −1xN

N , (3.5)

dla x = 1. Bła

d bezwgle

dny to |RN +1| < 1/(N + 1) i chca

c na przykład osia

gna

c dokładność równa

10−8, musimy wysumować N ≈ 108 wyrazów. Znacznie lepiej jest tutaj skorzystać ze wzoru (2.18)

ln1 + x

1 − x≈ 2 x + x3 3 +x5

5 + . . . + x2N +1 2N + 1

!

(−1 < x < 1) dla x = 1/3, który jest dużo szybciej zbieżny ze wzgle

du na szybko maleja

ce kolejne nieparzyste pote

gi tej liczby.

3.2 Algorytmy niestabilne

Rozważmy trójczłonowa

relacje

rekurencyjna

xn+2 = xn− xn+1, n ­ 0 (3.6)

z warunkiem pocza

tkowym

x0= 1 , x1=

√5 − 1

2 . (3.7)

Łatwo sie przekonać, że rozwia

zaniem tej rekurencji jest xn=

√ 5 − 1

2

!n

. (3.8)

W oczywisty sposób xn→ 0 dla n → ∞, gdyż (

5 − 1)/2 ≈ 0.618 < 1 Obliczaja

c jednak kolejne wartości xn z warunku (3.6) dostajemy od pewnego n szyb- ko rosna

ce wartości. Jest to spowodowane nieuniknionym błe

dem zaokra

glenia liczby niewymiernej (√

5 − 1)/2.

Aby to zrozumieć, rozważmy relacje

rekurencyjna

(3.6) podstawiaja

c roz- wiazanie próbne w postaci

xn= λn, (3.9)

Otrzymujemy wtedy równanie

λ2+ λ − 1 = 0 . (3.10)

(21)

Ma ono dwa rozwia

zania λ1=

√5 − 1

2 , λ2= −

√5 + 1

2 , (3.11)

spełniaja

ce warunki: λ1< 1 oraz |λ2| ≈ 1.618 > 1. Sta

d ogólne rozwia

zanie re- kurencji w postaci

xn = A (λ1)n+ B (λ2)n. (3.12) Współczynniki A i B wyznaczymy korzytaja

c z warunków pocza

tkowych (3.7) A + B = 1

A λ1+ B λ2 = λ1+  , (3.13) gdzie dodaliśmy mały czynnik  6= 0 po prawej stronie. Zdaje on sprawe

z tego, że liczba λ1 jest zawsze reprezentowana w komputerze w sposób przybliżony ze wzgle

du na bła

d zaokra

glenia nieskończonego rozwinie

cia dwójkowego tej liczby. Rozwia

zaniem układu równań (3.13) jest A = 1 + 

√5, B = − 

√5. (3.14)

Stad ostateczne rozwia

zanie rekurencji xn =

 1 + 

√ 5



1)n

52)n. (3.15) Tak wiec, niezależnie od tego jak mały jest bła

d , drugi wyraz be

dzie do- minował w sumie od pewnej wartości n, gdyż |(λ2)n| → ∞ dla n → ∞. Relacja rekurencyjna (3.6) z warunkiem pocz¸atkowym (3.7) jest wie

c niestabilna ze wzgle

du na małe zaburzenia wartości pocza

tkowych.

Łatwo sprawdzić, że relacja rekurencyjna (3.6) z warunkiem

x0= 1 , x1= λ2, (3.16)

który prowadzi do rozwia

zania xn= (λ2)n, jest stabilna ze wzgle

du na małe zaburzenia warunku pocza

tkowego.

3.3 Złożoność obliczeniowa

Złożoność obliczeniowa jest określona przez liczbe

kroków (działań), które na- leży wykonać w danym algorytmie by osia

gna

ć zamierzony wynik.

Jako przykład, rozważmy problem obliczenia wartości wielomianu stopnia n,

Wn(x) = a0+ a1x + a2x2+ . . . + anxn, (3.17)

(22)

dla pewnej wartości x. Licza

c "naiwnie" mamy do wykonania n dodawań oraz naste

puja

ca

liczbe

mnożeń

1 + 2 + . . . + (n − 1) + n = n(n + 1)

2 (3.18)

W sumie liczba działań zależy kwadratowo od stopnia wielomianu n.

Dla wielomianu stopnia 10 wykonujemy wie

c 55 ∼ O(102) działań, nato- miast dla wielomianu stopnia 100 to liczba 5050 ∼ O(104). Dobrze by było zna- leźć algorytm, w którym liczba wykonanych działań byłaby znacza

co mniejsza, chociażby ze wgle

du ma ryzyko kumulacji błe

dów zaokra

gleń.

Takim algorytmem jest algorytm Hornera. Obliczmy wartość wielomianu zapisuja

c go w naste

puja

cy sposób:

Wn(x) = (. . . ((anx + an−1) x + an−2) x + an−3) x + . . . + a1) x + a0) . (3.19) Tym razem wyste

puje tu n mnożeń oraz n dodawań. Liczba działań zależy wie

c liniowo od n. Na przykład, dla wielomianu stopnia 100 wykonujemy tylko 200 działań!

Algorytmy, w których liczba kroków do wykonania by osia

gna

c cel rośnie szybciej niż pote

gowo z wymiarem problemu n (w naszym przykładzie określo- nym przez stopień wielomianu) nie jest praktycznie obliczalny. Takim wzrostem jest wzrost wykładniczy en. Już dla n = 10 mamy e10≈ 104 kroków, podczas gdy dla n = 100 liczba kroków to e100≈ 1043!

Przykładem takiego problemu jest rozkład danej liczby naturalnej na ilo- czyn liczb pierwszych. Wszystkie algorytmy implementowane na komputerze klasycznym zależa

wykładniczo od długości liczby n, która określa wymiar problemu. Dopiero kwantowy algorytm Schora, implementowany na komputrze kwantowym, pozwala rozwia

zać ten problem w przy pomocy około (ln n)3 licz- by kroków. Problem tylko w tym, że jak dota

d nie skonstruowano stabilnie działaja

cego komputera kwantowego.

(23)

Wykład 4

Macierze

4.1 Układ równań liniowych

Macierze pojawiaja

sie

naturalnie w problemie rozwia

zywania układów równań liniowych

a11x1+ a12x2 + ... + a1nxn = y1 a21x1+ a22x2 + ... + a2nxn = y2

...

an1x1 + an2x2+ ... + annxn = yn. (4.1) Układ ten można zapisać w postaci macierzowej

a11 a12 . . . a1n

a21 a22 . . . a2n ... ... ... an1 an2 . . . ann

x1

x2 ... xn

=

y1

y2 ... yn

. (4.2)

lub w skróconej formie.

A x = y . (4.3)

Tak wie

c A jest macierza

kwadratowa

o wymiarze n × n. Rozwia

zanie układu (4.1) istnieje i jest ono jednoznaczne jeśli wyznacznik

det A 6= 0 . (4.4)

Istnieje wtedy macierz odwrotna A−1 i rozwia

zanie jest zadane przez

x = A−1y . (4.5)

Metoda ta wymaga wie

c znajomości metod odwracania macierzy A.

Alternatywnie, można skorzystać ze wzorów Cramera x1 = det A1

det A , x2 = det A2

det A , . . . xn = det An

det A . (4.6)

(24)

Macierze Ai w liczniku powstały poprzez zamiane

i-tej kolumny w macierzy A przez wektor y. Przykładowo

A1 =

y1 a12 . . . a1n y2 a22 . . . a2n

... ... ... yn an2 . . . ann

. (4.7)

Z punktu widzenia metod numerycznych wzory Cramera można zastosować jedynie dla macierzy o małych wymiarach. Obliczenie wyznacznika macierzy o wymiarze n × n wymaga bowiem wykonanie n! mnożeń oraz n! dodawań.

We wzorach (4.6) musimy policzyń (n + 1) wyznaczników macierzy, sta

d cał- kowita liczba działań potrzebnych do znalezienia rozwia

zania wynosi 2 (n + 1)!.

Korzystaja

c ze wzoru Stirlinga, słusznego dla dużych n, n! ≈ nne−n

2π n ∼ en ln n−n, (4.8)

widzimy, że liczba działań w metodzie Cramera rośnie wykładniczo z n i metoda szybko staje sie

bezużyteczna. Przykładowo, rozwia

zuja

c układ złożony z 15 równań musimy wykonać

2 · 16! ≈ 1013 (4.9)

działań.

Przykład ten ilustruje zagadnienie złożoności obliczeniowej. Wszystkie algorytmy, w których liczba działań do wykonania rośnie wykładniczo z wymia- rem problemu szybko staja

sie

bezużyteczne. Aby rozwia

zać problem musimy znaleźć bardziej wydajne algorytmy, w których liczba działań zależy na przy- kład pote

gowo od n.

4.2 Metoda eliminacji Gaussa

Metoda eliminacji Gaussa pozwala znaleźć rozwia

zanie układu równań linio- wych przy pote

gowo zależnej od n liczbie wykonanych działań. Pozwala ona sprowadzić układ (4.1) do równoważnej postaci z macierza

trójka

tna

, w której wszystkie składowe poniżej (lub powyżej) diagonali sa

równe zeru

a110 a120 . . . a1(n−1)0 a1n0 0 a220 . . . a2(n−1)0 a2n0 ... ... ... ... 0 0 . . . a(n−1)(n−1)0 a(n−1)n0

0 0 . . . 0 ann0

x1

x2 ... xn−1

xn

=

y10 y20 ... yn−10

yn0

. (4.10)

Wyznacznik macierzy trójka

tnej jest iloczynem liczb na diagonali det A0 =

n

Y

i=1

aii0 . (4.11)

(25)

Warunkiem istnienia rozwia

zania układu (4.10) jest by det A06= 0. Sta

d wszyst- kie wyrazy na diagonali sa

rózne od zera. Łatwo już rowia

zać taki układ.

Zaczynaja

c od ostatniego równania dostajemy xn = 1

ann0 yn0

xn−1 = 1

a(n−1)(n−1)0

yn−10 − a(n−1)n0 xn

. . . xi = 1

aii0

yi0

n

X

k=i+1

aik0 xk

. (4.12)

Rozważmy równanie (4.1):

A x = y .

W pierwszym kroku metody eliminacji Gaussa mnożymy pierwsze równanie w tym układzie przez ai1/a11 i odejmujemy kolejno od i-tych równań, gdzie i = 2, 3, . . . , n. W wyniku tego otrzymamy układ równań:

A(1)x = y(1), (4.13)

lub w jawnej postaci

a(1)11 x1+ a(1)12 x2+ ... + a(1)1nxn = y1(1) a(1)22 x2+ ... + a(1)2nxn = y2(1) ...

a(1)n2x2+ ... + a(1)nnxn = yn(1). (4.14) Wyeliminowaliśmy w ten sposób pierwsza

niewiadoma

w równaniach o nume- rach i ­ 2.

Mnożymy naste

pnie drugie równanie w układzie (4.14) przez a(1)i2 /a(1)22 i odej- mujemy od i-tego równania dla i = 3, 4, . . . , n. Eliminujemy wie

c druga

niewia- doma x2 z równań o numerach i ­ 3, otrzymuja

c nowy układ:

A(2)x = y(2), (4.15)

lub

a(2)11 x1 + a(2)12 x2+ a(2)13 x3+ ... + a(2)1nxn = y(2)1 a(2)22 x2+ a(2)23 x3+ ... + a(2)2nxn = y(2)2

...

a(2)n2x3+ ... + a(2)nnxn = y(2)n . (4.16) Procedure

te

kontynuujemy aż do chwili otrzymania układu równań z macierza trójka

tna

:

A(n−1)x = y(n−1), , (4.17)

(26)

lub

a(n−1)11 x1 + a(n−1)12 x2+ a(n−1)13 x3+ ... + a(n−1)1n xn = y1(n−1) a(n−1)22 x2+ a(n−1)23 x3+ ... + a(n−1)2n xn = y2(n−1)

...

a(n−1)nn xn = yn(n−1)(4.18). Naste

pnie rozwia

zujemy ten układ korzystaja

c ze wzorów (4.12).

Do wyznaczenia ta

metoda

rozwia

zania wykonujemy, odpowiednio

1

3n3+ n213n , 13n3+12n256n (4.19) mnożeń i dzieleń oraz dodawań. Całkowita liczba działań zależy wie

c pote

gowo

od n.

4.3 Rozkład LU macierzy

Bardzo pożytecznym dla zastosowań numerycznych jest rozkład danej macierzy A na iloczyn dwóch macierzy trójka

tnych L i U:

A = L U (4.20)

takich, że

a11 a12 . . . a1n a21 a22 . . . a2n

... ... ... an1 an2 . . . ann

=

1 0 . . . 0 l21 1 . . . 0 ... ... ... ln1 ln2 . . . 1

u11 u12 . . . u1n 0 u22 . . . u2n

... ... ... 0 0 . . . unn

. (4.21)

W takim przypadku wyznaczenie rozwia

zania układu równań

A x = L(U x) = y (4.22)

polega na rozwia

zaniu dwóch układów równań liniowych z macierzami trójka

t- nymi

L w = y , U x = w , (4.23)

stosuja

c metode

z poprzedniego rozdziału.

Metoda eliminacji Gaussa prowadzi do rozkładu LU, gdyż kolejne jej kroki sa równoważne operacji mnożenia przez odpowiednie macierze L(i):

A(n−1) = L(n−1)L(n−2). . . L(1)A , (4.24) gdzie A(n−1) jest macierza

trójka

tna

typu U. Podobnie dla wektora y:

y(n−1) = L(n−1)L(n−2). . . L(1)y . (4.25)

Cytaty

Powiązane dokumenty

Pokaż, że niejawna metoda różnic skończonych zastosowana do równania przewodnictwa cieplnego jest stabilna.. Pokaż, że metoda Cranka-Nicolson do rozwiązywania

W wielu przypadkach program komputerowy generuje ciąg przybliżeń rozwiązania..

Meyer, Matrix Analysis and Applied Linear Algebra.. Karol Tarnowski

W wielu przypadkach program komputerowy generuje ciąg

Chcąc rozwiązać układ równań możemy przekształcić go do równoważnego prostszego układu. Równoważność układów

rok akademicki 2020/21 semestr letni.

Praktyczna weryfikacja poznanych metod numerycznych na wykładzie, wdrożenie umiejętności programowania podstawowych procedur numerycznych oraz właściwej interpretacji

Natomiast z mecenatu nad zespołami artystycznymi KUL i Studium Nauczycielskiego i Rada Okręgowa będzie musiała zrezygnować, ponieważ zespoły te od dłuższego czasu