Pojęcia wstępne Izolda Gorgol wyciąg z prezentacji O czym będziemy mówić? Metody numeryczne to dziedzina wiedzy zajmująca się problemami obliczeniowymi i konstrukcją algorytmów rozwiązywania zadań matematycznych. Najczęściej, zadania obliczeniowe postawione są w dziedzinie rzeczywistej (lub zespolonej) i dlatego mówimy o zadaniach obliczeniowych matematyki ciągłej. O czym będziemy mówić? W zależności od tego, na jaki aspekt metod obliczeniowych jest położony największy nacisk, wyróżniamy: — metody numeryczne — główny nacisk idzie na aspekty algorytmiczne; — analiza numeryczna — przede wszystkim badanie właściwości algorytmów, ich optymalności oraz wpływu arytmetyki zmiennopozycyjnej na jakość uzyskanych wyników; — matematyka obliczeniowa — głównie teoretyczna analiza możliwości taniej i dokładnej aproksymacji rozwiązań zadań matematycznych; — obliczenia naukowe — nacisk na praktyczne zastosowania metod numerycznych, symulacje, realizacje na komputerach o dużej mocy obliczeniowej. Źródła błędów 1. 2. 3. 4. 5. błędy błędy błędy błędy błędy zagadnienia; początkowe; obcięcia; dyskretyzacji; zaokrąglenia. Rodzaje błędów x – liczba dokładna x̃ – liczba przybliżona (z różnych powodów) DEFINICJA Liczbę ∆ = x̃ − x nazywamy błędem bezwzględnym liczby x̃. x̃ = x + ∆ DEFINICJA Liczbę δ = x̃ = x(1 + δ) x̃−x x nazywamy błędem względnym liczby x̃. UWAGA W praktyce najczęściej posługujemy się oszacowaniami błędów, czyli liczbami ∆x̃ i δx̃ takimi, że |∆| 6 ∆x̃ i |δ| 6 δx̃ . UWAGA Jeśli x i x̃ są wektorami lub macierzami, to przy szacowaniu błędów posługujemy się normami. Działania arytmetyczne a błędy względne |x||δx | + |y||δy | ; |x + y| |x||δx | + |y||δy | 2. |δx−y | 6 ; |x − y| 3. |δxy | 6 |δx | + |δy |; 4. |δx/y | 6 |δx | + |δy |. 1. |δx+y | 6 Uwarunkowanie zadania obliczeniowego 1 Jest miarą wpływu względnych błędów danych na błąd względny wyniku. Niech f – zadanie obliczeniowe x – dane f (x) – wynik zadania f dla danych x x e – zaburzone dane f (e x) – wynik zadania f dla zaburzonych danych x e DEFINICJA Najmniejszy mnożnik cond(f, x) spełniający nierówność ||x − x e|| ||f (x) − f (e x)|| 6 cond(f, x) · ||f (x)|| ||x|| nazywamy współczynnikiem uwarunkowania (względnego) zadania obliczeniowego f dla danych x. Uwarunkowanie zadania obliczeniowego DEFINICJA Powiemy, że zadanie f (x) jest — dobrze uwarunkowane w punkcie x, gdy cond(f, x) ≈ 1, — źle uwarunkowane w punkcie x, gdy cond(f, x) 1, — źle postawione w punkcie x, gdy cond(f, x) = +∞. Analogicznie rozważa się uwarunkowanie bezwzględne. UWAGA Uwarunkowanie zadania dotyczy samego zadania, a nie metody jego rozwiązania. PRZYKŁAD Zadanie odejmowania liczb o jednakowych znakach i zbliżonych wartościach bezwzględnych jest zadaniem źle uwarunkowanym. Reprezentacja stałoprzecinkowa Dowolną liczbę całkowitą x 6= 0 można jednoznacznie przedstawić w postaci n X ei β i , x = s i=0 gdzie s ∈ {−1, 1} jest znakiem, liczby ei są cyframi liczby x. Wszystkie liczby całkowite z określonego zakresu są w pamięci komputera reprezentowane dokładnie, jak również działania wykonywane na takich reprezentacjach są dokładne (o ile wynik mieści się w określonym zakresie). Reprezentacja zmiennoprzecinkowa Dowolną liczbę rzeczywistą x 6= 0 można jednoznacznie przedstawić w postaci x = s · β c · m, 1 gdzie s ∈ {−1, 1} jest znakiem, liczba całkowita c cechą, a liczba rzeczywista m ∈ [1, β) (lub m ∈ [ , 1)) mantysą β liczby x. My posługujemy się β = 10. W pamięci komputera najczęściej β = 2 (ale również 8 lub 16). Mantysa ma w ogólności nieskończenie wiele cyfr binarnych fj w swoim rozwinięciu dwójkowym, ∞ X m=1+f ≡1+ fj 2−j = (1.f1 f2 f3 . . .)2 , j=1 gdzie fj ∈ {0, 1}. Liczby maszynowe W pamięci komputera jest przeznaczona określona liczba bitów na reprezentację liczby rzeczywistej. Zakładamy, że jeden spośród nich jest przeznaczony na znak liczby, p jest przeznaczonych na cechę i t na mantysę. DEFINICJA Liczbą maszynową nazywamy każdą liczbę rzeczywistą, która jest reprezentowana w pamięci komputera w sposób dokładny. Reprezentacja zmiennoprzecinkowa w pamięci komputera 2 Niech β = 2. DEFINICJA Reprezentacją zmiennoprzecinkową niezerowej liczby x nazywamy liczbę rdν (x) taką, że rdν (x) = (−1)s · (1 + f ) · 2c , gdzie f jest liczbą dwójkową postaci (0.f1 . . . ft )2 , natomiast c jest liczbą naturalną postaci (c1 . . . cp )2 . Wartości c i f dobiera się tak, żeby rdν (x) była tak bliska x jak to możliwe (zaokrąglenie lub obcięcie). x̃ = x(1 + δ) reprezentacji: Błąd względny rdν (x) − x 6 1 . 2t+1 x 1 Liczbę ν = t+1 nazywamy precyzją arytmetyki. (również oznaczana przez lub eps) 2 Precyzja arytmetyki zależy wyłącznie od liczby bitów przeznaczonych na reprezentację mantysy. Równoważnie: rdν (x) = x(1 + ), gdzie || 6 ν. Nadmiar i niedomiar Liczby maszynowe mają ograniczony zakres dopuszczalnych cech – c ∈ [cm , cM ]. 1 Ponatdo m ∈ [ , 1). β Liczby reprezentowalne spełniają zależność: MIN = β1 β cm 6 |x| 6 (1 − β −t )β cM = MAX. Liczby maszynowe nie są "równomiernie" rozmieszczone na "osi liczbowej". Nadmiar pojawia się przy próbie reprezentowania liczby rzeczywistej x takiej, że |x| > MAX. Jest on zazwyczaj sygnalizowany użytkownikowi i może zakończyć się awaryjnym przerwaniem obliczeń. Niedomiar pojawia się przy próbie reprezentowania liczby rzeczywistej x takiej, że |x| < MIN. Nie jest on zazwyczaj sygnalizowany użytkownikowi. Wówczas rd(x) = 0, a błąd względny tej reprezentacji jest równy 1. Słowa specjalne W zależności od przyjętego standardu pewne układy bitów są zarezerwowane dla sytuacji specjalnych: - +0 – liczba 0; - −0 – zero powstałe w wyniku niedomiaru; - +∞ (+Inf) – pojawia się przy próbie reprezentacji liczby większej od największej, która może być reprezentowana w danej arytmetyce; - −∞ (-Inf) – pojawia się przy próbie reprezentacji liczby mniejszej od najmniejszej, która może być reprezentowana w danej arytmetyce; - NaN - układ pojawiający się w przypadku próby wykonania operacji niedozwolonych (np. dzielenie przez 0, pierwiastkowanie liczb ujemnych itp.); najczęściej skutkuje awaryjnym przerwaniem obliczeń; Typ IEEE 754 Nazwa typu Liczba bitów cechy Liczba bitów mantysy Orientacyjny zakres Orientacyjna precyzja Standard IEEE 754 Pojedynczej precyzji single 8 23 10−38 . . . 10+38 6 · 10−8 Podwójnej precyzji double 11 52 10−308 . . . 10+308 10−16 Działania w arytmetyce zmiennoprzecinkowej Niech oznacza dowolne działanie arytmetyczne, zaś f lν (xy) wynik tego działania w arytmetyce zmiennoprzecinkowej o precyzji ν. DEFINICJA (działań arytmetycznych wg standardu IEEE) f lν (x y) = rdν ( rdν (x) rdν (y) ). (Do wykonania działania używa się rejestru o podwójnej liczbie bitów przeznaczonych na mantysę) Ogólnie dobrze określone działania w arytmetyce zmiennoprzecinkowej powinny zapewniać, że dla liczb maszynowych f lν (x y) = (x y)(1 + δ), gdzie |δ| < ν. UWAGA Tak określone działania mogą nie być łączne. 3 Wpływ błędu zaokrągleń na wyniki obliczeń Gdy x i y nie są liczbami maszynowymi: f lν (rdν (x) rdν (y)) = (x(1 + δ1 ) y(1 + δ2 )) (1 + δ3 ), gdzie |δi | < ν PRZYKŁAD Iloczyn Dla działania dokładnego mieliśmy przeniesienie błędu względnego danych na wynik zgodnie z zależnością: |δxy | 6 |δ1 | + |δ2 | 6 2ν Zatem |δf l(xy) | 6 (|δ1 | + |δ2 |)(1 + δ3 ) ≈ (|δ1 | + |δ2 |) 6 2ν Przy dużej precyzji arytmetyki, wykonywanie mnożenia wielu liczb, jest obarczone stosunkowo małym błędem względnym. Utrata cyfr znaczących |x||δx | + |y||δy | |x − y| Zadanie odejmowania dwóch liczb tego samego znaku jest źle uwarunkowane. W szczególności, gdy liczby mają zbliżoną wartość bezwzględną, może to doprowadzić do zjawiska zwanego utratą cyfr znaczących oraz dużego wzrostu względnego błędu wyniku (już nie na poziomie reprezentacji). W skrajnym przypadku otrzymujemy niedomiar. Podobnie może się zdarzyć, że f l(x + y) = x, gdy x y > 0. (Przy dodawaniu należy "wyrównać" cechy składników) |δx−y | 6 Numeryczna poprawność algorytmu DEFINICJA Mówimy,że algorytm A jest w klasie zadań {ϕ : D}, gdzie D ⊂ D0 , jeśli A oznacza algorytm obliczania (dokładnego) wyniku ϕ(d) = w dla dowolnych danych d ∈ D. Algorytm A rozwiązywania zadania nazywamy numerycznie poprawnym w klasie zadań {ϕ : D}, D ⊂ D0 , wtedy i tylko wtedy, gdy istnieją stałe Kd , Kw (wskaźniki e ∈ D0 takie, że kumulacji) takie, że dla każdego d ∈ D i dostatecznie silnej arytmetyki (tzn. małego ν) istnieje d e kd − dk 6 Kd cd ν kdk e k 6 Kw cw ν kϕ(d)k, e kf l(A(d)) − ϕ(d) przy założeniu, że dane i wyniki są reprezentowane z dokładnością kd − rd(d)k 6 cd νkdk oraz kw − rd(w)k 6 cw νkwk. Jest to najbardziej pożądana własność algorytmu. Numeryczna stabilność algorytmu DEFINICJA Algorytm A rozwiązywania zadania nazywamy numerycznie stabilnym w klasie zadań {ϕ : D}, D ⊂ D0 , wtedy i tylko wtedy, gdy istnieje stała K taka, że dla każdego d ∈ D i dostatecznie silnej arytmetyki zachodzi: e k 6 K · P (d, ϕ), kf l(A(d)) − ϕ(d) gdzie P (d, ϕ) = cw νkwk + max d0 :kd−d0 k6cd νkdk kϕ(d) − ϕ(d0 )k. Jest to minimalna własność, ktorej powinniśmy żądać od algorytmu. Można oszacować, że błąd względny rozwiązania uzyskanego algorytmem stabilnym wynosi: e )k kf l(A(d))−(ϕ(d) 6 Kν(cd cond(ϕ, d) + cw ) e )k k(ϕ(d) Zatem rozwiązywanie zadania źle uwarunkowanego przy pomocy algorytmu stabilnego może prowadzić do błędnych wyników. Numeryczna złożoność algorytmu - algorytmy skończone – liczba operacji arytmetycznych (logicznych, porównań) potrzebnych do uzyskania wyniku - algorytmy iteracyjne – liczba iteracji potrzebnych do uzyskania wyniku z żądaną dokładnością oraz liczba operacji arytmetycznych (logicznych, porównań) wykonywanych w jednym kroku; rząd zbieżności algorytmu 4