Wprowadzenie do metod numerycznychstaff.uz.zgora.pl/kpatan/materialy/letni/pwsz1/wyk1_mn.pdf ·...

Post on 28-Feb-2019

216 views 0 download

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)