Wprowadzenie do metod numerycznychstaff.uz.zgora.pl/kpatan/materialy/letni/pwsz1/wyk1_mn.pdf ·...
Transcript of Wprowadzenie do metod numerycznychstaff.uz.zgora.pl/kpatan/materialy/letni/pwsz1/wyk1_mn.pdf ·...
Wprowadzenie do metod numerycznych
Krzysztof Patan
Metody numeryczne
Dział matematyki stosowanej
Każde bardziej złożone zadanie wymaga opracowaniaindywidualnej metody jego rozwiązywania na maszyniecyfrowej
Metody rozwiązywania tego samego problemu mogą sięróżnić operowaniem na pamięci operacyjnej, użyciempodwójnej precyzji podczas obliczeń, czy stosowaniemróż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 (redukcjaskomplikowanych technik do podstawowych operacjiarytmetycznych)
Zadanie algorytmiczne
Rozwiązanie algorytmiczne
Algorytm – definicja
Algorytm – analiza
Definicje
Metody numeryczne
rozwiązywanie zadań matematycznych za pomocą skończonejliczby działań arytmetycznych i logicznych
Zadanie numeryczne
matematyczny opis powiązań pomiędzy danymi wejściowymi iwyjściowymi
Algorytm numeryczny
skończona sekwencja poprawnie sformułowanych operacjiprzekształcających dane wejściowe i wyjściowe
operacja – działanie arytmetyczne, logiczne lub odwołanie doistniejących algorytmów
Źródła błędów
1 Błędy pomiarowe, np. prędkość światła w próżni wynosic = (2.997925 + ε) · 108m/sec, |ε| ¬ 3 · 10−6
2 Modelowanie matematyczne, np. najprostszy model przyrostupopulacjiN(t) = N0ekt jest prawidłowy tylko przy założeniu, że posiadanieograniczone zasoby
3 Błędy grube i pomyłki, np. błędy programistyczne4 Błędy maszynowe, np. błędy zaokrąglania lub odrzucania warytmetyce zmiennoprzecinkowej
5 Błędy przybliżania matematycznego, np. obliczając całkę
I =∫ 10ex2dx ≈
∫ 10
(1 + x2 +
x4
2!+x6
3!+x8
4!
)dx
Błąd względny i bezwzględny
Błąd bezwzględnyeabs = α− α̂
gdzie:
α− wartość dokładnaα̂− wartość przybliżona (obliczona)
Błąd względny
erel =α− α̂α
lub erel =α− α̂α· 100%
Wniosek: α jest najczęściej niedostępna a priori, stąd
erel ∼=α̃− α̂α̃
Przykład
Rozważmy zadanie pomiaru długości mostu oraz nita użytego do jegobudowy. W wyniku pomiaru otrzymano odpowiednio 9999 i 9 cm. Jeżeliprawdziwe 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
emabs = 10000− 9999 = 1 cm
oraz dla długości nita
enabs = 10− 9 = 1 cm
b) Błąd względny dla długości mostu wynosi
emrel =110000
· 100% = 0.01%
oraz dla nitaenrel =
110· 100% = 10%
Cyfrowy zapis liczb całkowitych
baza 10 konwersja baza 2 baza 8 baza 161 1=20 00000001 001 018 8=23 00001000 010 0810 8 + 2=23 + 21 00001010 012 0C27 16 + 8 + 2 + 1=24 + 23 + 21 00011010 033 1B67 64 + 2 + 1=26 + 21 + 20 01000011 103 43202 128 + 64 + 8 + 2=28 + 27 + 23 + 21 11001010 312 CA
konwersja do systemu ósemkowego
27(10) → 24 + 3 = 3 · 81 + 3 · 80 → 33(8)
konwersja do systemu szestnastkowego
27(10) → 16 + 11 = 1 · 161 + 11 · 160 → 1B(16)
Zapis stałopozycyjnyReprezentacja
l = sn∑i=0
ei2i (1)
gdzie s ∈ {−1, 1} – znak liczby, ei ∈ {0, 1} – cyfry reprezentacjibinarnej (en 6= 0, gdy l 6= 0)
s 0 . . . 0 en en−1 . . . e0znak d d bitów 1
Zakres liczbyI = [−2d, 2d − 1] (2)
Działania dokładne1 dodawanie2 odejmowanie3 mnożenie
Przykład
Określić zakres liczb całkowitych przy, które mogą być reprezentowane na16-bitowym komputerze
Pierwszy bit przechowuje znak. Pozostałe 15 bitów może służyć doprzechowania liczb binarnych od 0 do 111111111111111. Stąd, górnagranica wynosi
214 + 213 + · · ·+ 21 + 20 = 215 − 1 = 32767
W ten sposób zakres to [-32 767,32 767]
Uwaga! Istnieje nadmiarowość dla wartości zero, tj. 0000000000000000oraz 1000000000000000, dlatego druga z kombinacji zazwyczaj jestużywana do reprezentacji dodatkowej liczby ujemnej: −32768, stądprawdziwy zakres jest od −32768 do 32767
Zapis zmiennopozycyjny
Reprezentacjax = s · 2c ·m (3)
gdzie s ∈ {−1, 1} – znak liczby, c – cecha liczby (liczba całkowita –reprezentacja stałopozycyjna), m – mantysa liczby ( 12 6 m < 1)
s sc ed−t−2 . . . e1 e0 e−1 e−2 . . . e−tznak d− t bitów cechy t bitów mantysy
Mantysae−1 = 1, e−i = 0 lub 1 dla i > 1 dla t bitówt decyduje o dokładności reprezentacji
Zakres liczby
mmin2cmin 6 |x| 6 mmax2cmax
122−2
d−t−16 |x| 6
2t − 12t22d−t−1−1
Przykład
Podać wartość liczby o reprezentacji zmiennoprzecinkowej 10101101wiedząc, że dokładność reprezentacji t = 4Pierwszy bit określa znak liczby 1→ liczba ujemnaCztery ostatnie bity to mantysa, stąd
m = 1 · 2−1 + 1 · 2−2 + 0 · 2−3 + 1 · 2−4 = 12+14+116=1316
Bity od drugiego do czwartego to cecha, ale bit drugi to znak, stąd
c = +1 · 21 + 0 · 20 = 2
Ostateczniex = −m · 2c = 13
16· 22 = 13
4= 3, 25
Przykład
Podać reprezentację zmiennopozycyjną liczb 0, 2 i −6, 25 dla d = 7 it = 4
Liczbę 0, 2 można przybliżyć liczbą 0, 1875, która ma reprezentację00101100
W tym przypadku błąd bezwzględny eabs = 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 eabs = −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 SumaSingle 1 23 8 32Double 1 52 11 64Quadruple 1 113 14 128
t bitów decyduje o precyzji reprezentacji
d− t bitów decyduje o zakresie reprezentacji
Zbiór liczb zmiennoprzecinkowych
Rzeczywiste ZmiennoprzecinkoweZakres Nieskończony: istnieją dowolnie
duże i dowolnie małe liczby rze-czywiste.
Skończony: liczba bitów cechy ograni-cza amplitudę liczb zmiennoprzecinko-wych.
Precyzja Nieskończona: jest nieskończeniewiele liczb rzeczywistych pomię-dzy dwoma dowolnymi l. rzeczy-wistymi.
Skończona: istnieje skończona licz-ba (czasami nawet równa zero) liczbzmiennoprzecinkowych pomiędzy dwo-ma dowolnymi l. zmiennoprzecinkowy-mi.
Wniosek: Linia liczb zmiennoprzecinkowych jest podzbiorem liniiliczb rzeczywistych
Arytmetyka zmiennopozycyjna
Wyniki operacji arytmetycznych pomiędzy dwoma liczbamizmiennoprzecinkowymi:
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 fl jest operacją zmiannoprzecinkową (ang. floating pointoperation), ε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εba+ 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(a2 − b2) = (a · a(1 + εma)− b · b(1 + εmb))(1 + εo)
= (a2 + b2)(1 +a2εma − b2εmba2 − b2
)(1 + εo)
= (a2 + b2)(1 + εr)
gdzie εr = εo + (1 + εo)(1 +a2εma − b2εmba2 − b2
)
Błędy zaokrąglenia w obliczeniach
Przykład
Obliczyć r = x2 − y2, gdzie x = 4.005 oraz y = 4.004 z 4-cyfrową precyzją
Przez bezpośrednie podstawienie mamy
r = x2 − y2 = 16.04(0025)− 16.03(2016) = 0.01
Prawdziwa wartość r to 0.008009. Zatem błąd względny wynosi
erel =0.008009− 0.010.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
erel = 0%!!!
Podsumowanie
ograniczona precyzja prowadzi do zaokrągleń w pojedynczychkalkulacjach
efekty zaokrągleń akumulują się powoli
błędy zaokrągleń są nieuniknione, sposobem jest tworzenielepszych algorytmów
odejmowanie niemal równych wartości prowadzi do poważnychstrat precyzji
Błędy kasowania
Dla dodawania: Błędy w
c = a+ b i c = a− b
będą duże kiedy a� b lub a� b
Przykład
Rozważmy c = a+ b z a = x.xxx . . . · 100, b = y.yyy . . . · 10−8 orazz = 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 dlaa = 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� bwystępują w odejmowaniu: a− b kiedy a ≈ bogromne błędy w pojedynczych operacjach, a nie powolnaakumulacja
często mogą zostać zminimalizowane przez algebraiczneprzekształcenie wrażliwej formuły
Precyzja maszyny
Amplituda błędów zaokrąglania jest określona przez tzw. precyzjęmaszyny εm, tzn.
1 + δ = 1, ∀δ ¬ εmDla podwójnej precyzji (64 bity) εm ∼= 2.2204 · 10−16
Wyznaczanie precyzji maszyny
eps=1doif (eps+1 <= 1) exiteps = eps/2end doeps=2*eps
Porównywanie liczbzmiennoprzecinkowych
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 dodokładnego przybliżenia sin(x). Wyrazy wyższego rzędu są obcinane(ang. truncated)
ftrue = fsum + błąd obcięcia
Rozmiar błędu obcięcia zależy od x oraz liczby wyrazów włączonych wfsum.
Uwarunkowanie zadania algorytmicznego
Niechy = f(x) ∆y = f(x+∆x)− y
Zadanie jest źle uwarunkowane jeśli
∆yy>>∆xx
Jeżeli niewielka zmiana parametrów problemu wpływa znacząco na jegorozwiązanie to problem jest źle uwarunkowany
Zadanie jest stabilne jeśli dla każdedo x ∈ D
lim∆x→0
f(x+∆x) = f(x)
orazx+∆x ∈ D
Przykład
Rozważmy liniowe układy równań{2x+ 6y = 82x+ 6, 000000001y = 8, 000000001
⇒ x = 1, y = 1
{2x+ 6y = 82x+ 5, 999999999y = 8, 000000002
⇒ x = 10, y = −2
dla rozwiązania91= 9 i
31= 3
dla parametrów0, 0000000026, 000000001
≈ 3 · 10−10 i 0, 0000000018, 000000001
≈ 1, 3 · 10−10
Problem jest źle uwarunkowany (źle postawiony)