Wprowadzenie do metod numerycznych Krzysztof Patan
Metody numeryczne Dział matematyki stosowanej Każde bardziej złożone zadanie wymaga opracowania indywidualnej metody jego rozwiązywania na maszynie cyfrowej Metody rozwiązywania tego samego problemu mogą się różnić operowaniem na pamięci operacyjnej, użyciem podwójnej precyzji podczas obliczeń, czy stosowaniem różnych warunków zatrzymania algorytmu Wybór odpowiedniej metody dla danego problemu
Dlaczego modelujemy numerycznie? szybkie i efektywne narzędzia rozwiązywania problemów uniwersalność i szeroka użyteczność często, jedyna alternatywa dla nieistniejących rozwiązań analitycznych liczne istniejące efektywne programy i biblioteki idealne do nauki obsługi maszyn cyfrowych zmieniają rozumienie metod matematycznych (redukcja skomplikowanych technik do podstawowych operacji arytmetycznych)
Zadanie algorytmiczne
Rozwiązanie algorytmiczne
Algorytm definicja
Algorytm analiza
Definicje Metody numeryczne rozwiązywanie zadań matematycznych za pomocą skończonej liczby działań arytmetycznych i logicznych Zadanie numeryczne matematyczny opis powiązań pomiędzy danymi wejściowymi i wyjściowymi Algorytm numeryczny skończona sekwencja poprawnie sformułowanych operacji przekształcających dane wejściowe i wyjściowe operacja działanie arytmetyczne, logiczne lub odwołanie do istniejących algorytmów
Źródła błędów
1 Błędy pomiarowe, np. prędkość światła w próżni wynosi c = (2.997925 + ε) 10 8 m/sec, ε 3 10 6 2 Modelowanie matematyczne, np. najprostszy model przyrostu populacji N(t) = N 0 e kt jest prawidłowy tylko przy założeniu, że posiada nieograniczone zasoby 3 Błędy grube i pomyłki, np. błędy programistyczne 4 Błędy maszynowe, np. błędy zaokrąglania lub odrzucania w arytmetyce zmiennoprzecinkowej 5 Błędy przybliżania matematycznego, np. obliczając całkę 1 ( ) 1 I = e x2 dx 1 + x 2 + x4 2! + x6 3! + x8 dx 4! 0 0
Błąd względny i bezwzględny Błąd bezwzględny gdzie: e abs = α ˆα α wartość dokładna ˆα wartość przybliżona (obliczona) Błąd względny e rel = α ˆα α lub e rel = α ˆα α 100% Wniosek: α jest najczęściej niedostępna a priori, stąd e rel = α ˆα α
Przykład Rozważmy zadanie pomiaru długości mostu oraz nita użytego do jego budowy. W wyniku pomiaru otrzymano odpowiednio 9999 i 9 cm. Jeżeli prawdziwe wartości to 10000 oraz 10 cm, policzyć (a) błąd bezwzględny i (b) procentowy błąd względny w każdym z przypadków. a) Błąd bezwzględny dla długości mostu wynosi oraz dla długości nita e m abs = 10000 9999 = 1 cm e n abs = 10 9 = 1 cm b) Błąd względny dla długości mostu wynosi e m rel = 1 100% = 0.01% 10000 oraz dla nita e n rel = 1 100% = 10% 10
Cyfrowy zapis liczb całkowitych baza 10 konwersja baza 2 baza 8 baza 16 1 1=2 0 00000001 001 01 8 8=2 3 00001000 010 08 10 8 + 2=2 3 + 2 1 00001010 012 0C 27 16 + 8 + 2 + 1=2 4 + 2 3 + 2 1 00011010 033 1B 67 64 + 2 + 1=2 6 + 2 1 + 2 0 01000011 103 43 202 128 + 64 + 8 + 2=2 8 + 2 7 + 2 3 + 2 1 11001010 312 CA konwersja do systemu ósemkowego 27 (10) 24 + 3 = 3 8 1 + 3 8 0 33 (8) konwersja do systemu szestnastkowego 27 (10) 16 + 11 = 1 16 1 + 11 16 0 1B (16)
Reprezentacja Zapis stałopozycyjny n l = s e i 2 i (1) i=0 gdzie s { 1, 1} znak liczby, e i {0, 1} cyfry reprezentacji binarnej (e n 0, gdy l 0) s 0... 0 e n e n 1... e 0 znak d d bitów 1 Zakres liczby I = [ 2 d, 2 d 1] (2) Działania dokładne 1 dodawanie 2 odejmowanie 3 mnożenie
Przykład Określić zakres liczb całkowitych przy, które mogą być reprezentowane na 16-bitowym komputerze Pierwszy bit przechowuje znak. Pozostałe 15 bitów może służyć do przechowania liczb binarnych od 0 do 111111111111111. Stąd, górna granica wynosi 2 14 + 2 13 + + 2 1 + 2 0 = 2 15 1 = 32767 W ten sposób zakres to [-32 767,32 767] Uwaga! Istnieje nadmiarowość dla wartości zero, tj. 0000000000000000 oraz 1000000000000000, dlatego druga z kombinacji zazwyczaj jest używana do reprezentacji dodatkowej liczby ujemnej: 32768, stąd prawdziwy zakres jest od 32768 do 32767
Zapis zmiennopozycyjny Reprezentacja x = s 2 c m (3) gdzie s { 1, 1} znak liczby, c cecha liczby (liczba całkowita reprezentacja stałopozycyjna), m mantysa liczby ( 1 2 m < 1) s s c e d t 2... e 1 e 0 e 1 e 2... e t znak d t bitów cechy t bitów mantysy Mantysa e 1 = 1, e i = 0 lub 1 dla i > 1 dla t bitów t decyduje o dokładności reprezentacji Zakres liczby m min 2 c min x m max 2 cmax 1 2 2d t 1 x 2t 1 2 2 t 2 2d t 1 1
Przykład Podać wartość liczby o reprezentacji zmiennoprzecinkowej 10101101 wiedząc, że dokładność reprezentacji t = 4 Pierwszy bit określa znak liczby 1 liczba ujemna Cztery ostatnie bity to mantysa, stąd m = 1 2 1 + 1 2 2 + 0 2 3 + 1 2 4 = 1 2 + 1 4 + 1 16 = 13 16 Bity od drugiego do czwartego to cecha, ale bit drugi to znak, stąd c = +1 2 1 + 0 2 0 = 2 Ostatecznie x = m 2 c = 13 16 22 = 13 4 = 3, 25
Przykład Podać reprezentację zmiennopozycyjną liczb 0, 2 i 6, 25 dla d = 7 i t = 4 Liczbę 0, 2 można przybliżyć liczbą 0, 1875, która ma reprezentację 00101100 W tym przypadku błąd bezwzględny e abs = 0, 2 0.1875 = 0.0125 Liczbę 6, 25 można przybliżyć liczbą 6, 5, która ma reprezentację 10111101 W tym przypadku błąd bezwzględny e abs = 6, 25 + 6, 5 = 0, 25 Bezwzględny błąd reprezentacji jest silnie zależy od t i od wielkości liczby!
Cyfrowy zapis liczb zmiennoprzecinkowych Standardy IEEE formatów liczb zmiennoprzecinkowych Precyzja Sign Bity mantysy Bity cechy Suma Single 1 23 8 32 Double 1 52 11 64 Quadruple 1 113 14 128 t bitów decyduje o precyzji reprezentacji d t bitów decyduje o zakresie reprezentacji
Zbiór liczb zmiennoprzecinkowych Rzeczywiste Zakres Nieskończony: istnieją dowolnie duże i dowolnie małe liczby rzeczywiste. Zmiennoprzecinkowe Skończony: liczba bitów cechy ogranicza amplitudę liczb zmiennoprzecinkowych. Precyzja Nieskończona: jest nieskończenie wiele liczb rzeczywistych pomiędzy dwoma dowolnymi l. rzeczywistymi. Skończona: istnieje skończona liczba (czasami nawet równa zero) liczb zmiennoprzecinkowych pomiędzy dwoma dowolnymi l. zmiennoprzecinkowymi. Wniosek: Linia liczb zmiennoprzecinkowych jest podzbiorem linii liczb rzeczywistych
Arytmetyka zmiennopozycyjna Wyniki operacji arytmetycznych pomiędzy dwoma liczbami zmiennoprzecinkowymi: najczęściej nie może być reprezentowana przez inną wartość zmiennoprzecinkową, ma ograniczony zakres i precyzję. Reprezentacja zmiennopozycyjna liczby x x = x(1 ε) gdzie ε jest błędem względnym reprezentacji W arytmetyce zmiennopozycyjnej fl(a op b) = a op b(1 + ε op ) gdzie f l jest operacją zmiannoprzecinkową (ang. floating point operation), ε op jest błędem względnym działania w tej arytmetyce
Przykłady 1. fl(a + b) = a(1 + ε a ) + b(1 + ε b ) = (a + b)(1 + ε d ) gdzie ε d = aε a + bε b a + b 2. fl(a b) = a(1 + ε a ) b(1 + ε b ) = a b(1 + ε m ) gdzie ε m = ε a + ε b + ε a ε b 3. fl((a b)(a + b)) = ((a b)(1 + ε o )(a + b)(1 + ε d )) (1 + ε m ) = (a b)(a + b)(1 + ε o )(1 + ε d )(1 + ε m ) = (a b)(a + b)(1 + ε h ) gdzie ε h = ε o + ε d + ε m + ε o ε d + ε o ε m + ε d ε m + ε o ε d ε m
Przykłady cd 4. fl(a 2 b 2 ) = (a a(1 + ε ma ) b b(1 + ε mb ))(1 + ε o ) ( = (a 2 + b 2 ) 1 + a2 ε ma b 2 ) ε mb a 2 b 2 (1 + ε o ) = (a 2 + b 2 )(1 + ε r ) ( gdzie ε r = ε o + (1 + ε o ) 1 + a2 ε ma b 2 ) ε mb a 2 b 2
Przykład Błędy zaokrąglenia w obliczeniach Obliczyć r = x 2 y 2, gdzie x = 4.005 oraz y = 4.004 z 4-cyfrową precyzją Przez bezpośrednie podstawienie mamy r = x 2 y 2 = 16.04(0025) 16.03(2016) = 0.01 Prawdziwa wartość r to 0.008009. Zatem błąd względny wynosi e rel = 0.008009 0.01 0.008009 100% = 24.859%!!! Z drugiej strony, stosując znany wzór skróconego mnożenia r = (x y)(x + y) mamy: r = (4.005 4.004)(4.004 + 4.005) = 0.001 8.009 = 0.008009 Wynik jest dokładny i błąd względny e rel = 0%!!!
Podsumowanie ograniczona precyzja prowadzi do zaokrągleń w pojedynczych kalkulacjach efekty zaokrągleń akumulują się powoli błędy zaokrągleń są nieuniknione, sposobem jest tworzenie lepszych algorytmów odejmowanie niemal równych wartości prowadzi do poważnych strat precyzji
Błędy kasowania Dla dodawania: Błędy w będą duże kiedy a b lub a b Przykład c = a + b i c = a b Rozważmy c = a + b z a = x.xxx... 10 0, b = y.yyy... 10 8 oraz z = x + y < 10. osiągalna precyzja {}}{ x.xxx xxxx xxxx xxxx + 0.000 0000 yyyy yyyy yyyy yyyy = x.xxx xxxx zzzz zzzz yyyy yyyy }{{} stracone cyfry
Dla odejmowania: Błąd w c = a b będzie znaczny dla a b Przykład Wyznaczyć c = a b w arytmetyce zmiennoprzecinkowej dla a = x.xxxxxxxxxxxxxx1 oraz b = x.xxxxxxxxxxxxxxx0 osiągalna precyzja {}}{ x.xxx xxxx xxxx xxx1 x.xxx xxxx xxxx xxx0 = 0.000 0000 0000 0001 } uuuu uuuu {{ uuuu uuu } nieokreślone cyfry = 1.uuu uuuu uuuu uuuu 10 15 Wynik posiada tylko jedną (!) cyfrę znaczącą.
Podsumowanie występują w dodawaniu: a + b kiedy a b lub a b występują w odejmowaniu: a b kiedy a b ogromne błędy w pojedynczych operacjach, a nie powolna akumulacja często mogą zostać zminimalizowane przez algebraiczne przekształcenie wrażliwej formuły
Precyzja maszyny Amplituda błędów zaokrąglania jest określona przez tzw. precyzję maszyny ε m, tzn. 1 + δ = 1, δ ε m Dla podwójnej precyzji (64 bity) ε m = 2.2204 10 16 Wyznaczanie precyzji maszyny eps=1 do if (eps+1 <= 1) exit eps = eps/2 end do eps=2*eps Porównywanie liczb zmiennoprzecinkowych if x==y % błędnie!!! if abs(x-y) < eps
Błąd obcięcia Rozważmy rozwinięcie w szereg sin(x) sin(x) = x x3 3! + x5 5!... Dla małych x, tylko kilka wyrazów szeregu jest potrzebnych do dokładnego przybliżenia sin(x). Wyrazy wyższego rzędu są obcinane (ang. truncated) f true = f sum + błąd obcięcia Rozmiar błędu obcięcia zależy od x oraz liczby wyrazów włączonych w f sum.
Uwarunkowanie zadania algorytmicznego Niech y = f(x) y = f(x + x) y Zadanie jest źle uwarunkowane jeśli y y x >> x Jeżeli niewielka zmiana parametrów problemu wpływa znacząco na jego rozwiązanie to problem jest źle uwarunkowany Zadanie jest stabilne jeśli dla każdedo x D oraz lim f(x + x) = f(x) x 0 x + x D
Przykład Rozważmy liniowe układy równań { 2x + 6y = 8 2x + 6, 000000001y = 8, 000000001 { 2x + 6y = 8 2x + 5, 999999999y = 8, 000000002 x = 1, y = 1 x = 10, y = 2 dla rozwiązania 9 1 = 9 i 3 1 = 3 dla parametrów 0, 000000002 6, 000000001 3 10 10 i Problem jest źle uwarunkowany (źle postawiony) 0, 000000001 1, 3 10 10 8, 000000001