JMiS wykład
Transkrypt
JMiS wykład
Arytmetyka zmiennoprzecinkowa w standardzie IEEE MC Co to jest Matlab? Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej Arytmetyka zmiennopozycyjna w standardzie IEEE Nadmiar i Niedomiar NaN i Inf Działania arytmetyczne na liczbach zmiennoprzecinkowych Utrata cyfr znaczacych ˛ Odejmowanie bliskich wielkości Algorytmy stabilne i niestabilne Uwarunkowania problemów numerycznych Jezyki ˛ Modelowania i Symulacji Arytmetyka zmiennoprzecinkowa w standardzie IEEE Marcin Ciołek Katedra Systemów Automatyki WETI, Politechnika Gdańska 3 października 2011 Arytmetyka zmiennoprzecinkowa w standardzie IEEE MC Co to jest Matlab? Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej Arytmetyka zmiennopozycyjna w standardzie IEEE Nadmiar i Niedomiar NaN i Inf Działania arytmetyczne na liczbach zmiennoprzecinkowych Utrata cyfr znaczacych ˛ Odejmowanie bliskich wielkości Algorytmy stabilne i niestabilne Uwarunkowania problemów numerycznych Literatura: 1. D. Kincaid, W. Cheney: „Analiza numeryczna”, Wydawnictwo Naukowo Techniczne, 2006. 2. P. Davis, W.: „Differential Equations - Modelling with MATLAB”, Prentice Hall, 1999. 3. Dokumentacja MATLABA i SIMULINKA. Arytmetyka zmiennoprzecinkowa w standardzie IEEE O czym bedziemy ˛ dziś mówili? MC Co to jest Matlab? Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej Arytmetyka zmiennopozycyjna w standardzie IEEE Nadmiar i Niedomiar 1 Co to jest Matlab? 2 Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej 3 Arytmetyka zmiennopozycyjna w standardzie IEEE 4 Nadmiar i Niedomiar 5 NaN i Inf NaN i Inf Działania arytmetyczne na liczbach zmiennoprzecinkowych Utrata cyfr znaczacych ˛ Odejmowanie bliskich wielkości Algorytmy stabilne i niestabilne Uwarunkowania problemów numerycznych 6 Działania arytmetyczne na liczbach zmiennoprzecinkowych 7 Utrata cyfr znaczacych ˛ 8 Odejmowanie bliskich wielkości 9 Algorytmy stabilne i niestabilne 10 Uwarunkowania problemów numerycznych Arytmetyka zmiennoprzecinkowa w standardzie IEEE MC Co to jest Matlab? Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej Arytmetyka zmiennopozycyjna w standardzie IEEE Nadmiar i Niedomiar NaN i Inf Działania arytmetyczne na liczbach zmiennoprzecinkowych Utrata cyfr znaczacych ˛ Odejmowanie bliskich wielkości Algorytmy stabilne i niestabilne Uwarunkowania problemów numerycznych MATLAB (MATrix LABoratory) jest interakcyjnym środowiskiem do wykonywania naukowych i inżynierskich obliczeń oraz do ich wizualizacji. Zalety MATLABA: • możliwość szybkiego uzyskania rezultatów złożonych obliczeń, • przedstawienie rezultatów w postaci wykresów dwu- lub trójwymiarowych, • łatwość stosowania gotowych funkcji MATLAB-a, zarówno numerycznych jak i graficznych. Arytmetyka zmiennoprzecinkowa w standardzie IEEE Gdzie jest problem? MC Co to jest Matlab? Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej Arytmetyka zmiennopozycyjna w standardzie IEEE Nadmiar i Niedomiar NaN i Inf Działania arytmetyczne na liczbach zmiennoprzecinkowych Utrata cyfr znaczacych ˛ Odejmowanie bliskich wielkości Algorytmy stabilne i niestabilne Uwarunkowania problemów numerycznych • Problem 1. : Jaki jest wynik działania w arytmetyce zmiennoprzecinkowej stosowanej w maszynach komputerowych? • 10 × (7.1 − 7) − 1 = • 10 × 2.01 − 2 ???? = ???? Arytmetyka zmiennoprzecinkowa w standardzie IEEE Gdzie jest problem? MC Co to jest Matlab? Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej Arytmetyka zmiennopozycyjna w standardzie IEEE • Problem 1. : Jaki jest wynik działania w komputerze? • 10 × (7.1 − 7) − 1 = • 10 × 2.01 − 2 ???? = Nadmiar i Niedomiar NaN i Inf format long Działania arytmetyczne na liczbach zmiennoprzecinkowych >> 10*(7.1-7)-1 ans = -3.5527e-015 Utrata cyfr znaczacych ˛ Odejmowanie bliskich wielkości Algorytmy stabilne i niestabilne Uwarunkowania problemów numerycznych >> 10*2.01-2 ans = 18.099999999999998 ???? Arytmetyka zmiennoprzecinkowa w standardzie IEEE MC Co to jest Matlab? Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej Arytmetyka zmiennopozycyjna w standardzie IEEE Nadmiar i Niedomiar NaN i Inf Działania arytmetyczne na liczbach zmiennoprzecinkowych Utrata cyfr znaczacych ˛ Odejmowanie bliskich wielkości Algorytmy stabilne i niestabilne Uwarunkowania problemów numerycznych • Problem 2.: Ile miejsc zerowych funkcji y (x) jest wykrywanych dla bardzo małego kroku? • y1 (x) = (x − 1)4 • y2 (x) = (x − 1)4 = x 4 − 4x 3 + 6x 2 − 4x + 1 Arytmetyka zmiennoprzecinkowa w standardzie IEEE • Problem 2.: Ile miejsc zerowych funkcji y (x) jest wykrywanych dla bardzo małego kroku? MC Co to jest Matlab? Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej • y1 (x) = (x − 1)4 • y2 (x) = (x − 1)4 = x 4 − 4x 3 + 6x 2 − 4x + 1 Arytmetyka zmiennopozycyjna w standardzie IEEE x=0:0.00001:2; n=length(x); Nadmiar i Niedomiar y1= zeros(n,1); NaN i Inf for i=1:n y1(i)=(x(i)-1)^4; y2(i)=x(i)^4-4*x(i)^3+6*x(i)^2-4*x(i)+1; end Działania arytmetyczne na liczbach zmiennoprzecinkowych Utrata cyfr znaczacych ˛ Odejmowanie bliskich wielkości Algorytmy stabilne i niestabilne Uwarunkowania problemów numerycznych y2= zeros(n,1); plot(x,y1,x,y2,'r') xlabel('\itx') ylabel('\ity') axis([0.9998 1.0002 -1e-15 1e-15]) legend('y = (x-1)^4','y = x^4-4x^3+6x^2-4x+1',... 'Location','NorthOutside') Arytmetyka zmiennoprzecinkowa w standardzie IEEE y = (x−1)4 MC −15 Co to jest Matlab? 1 Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej NaN i Inf Działania arytmetyczne na liczbach zmiennoprzecinkowych x 10 0.8 0.6 0.4 Arytmetyka zmiennopozycyjna w standardzie IEEE 0.2 y Nadmiar i Niedomiar 0 −0.2 −0.4 Utrata cyfr znaczacych ˛ −0.6 Odejmowanie bliskich wielkości −0.8 Algorytmy stabilne i niestabilne Uwarunkowania problemów numerycznych y = x4−4x3+6x2−4x+1 −1 0.9998 0.9999 1 x 1.0001 1.0002 Arytmetyka zmiennoprzecinkowa w standardzie IEEE Przypomnienie MC Co to jest Matlab? Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej Arytmetyka zmiennopozycyjna w standardzie IEEE Nadmiar i Niedomiar NaN i Inf Działania arytmetyczne na liczbach zmiennoprzecinkowych Utrata cyfr znaczacych ˛ Odejmowanie bliskich wielkości Algorytmy stabilne i niestabilne Uwarunkowania problemów numerycznych • reprezentacja liczby w układzie dziesietnym ˛ 9.90625 = 9 · 100 + 9 · 10−1 + 6 · 10−3 + 2 · 10−4 + 5 · 10−5 • reprezentacja liczby w układzie binarnym 9.90625 = (1001.11101)2 = 1 · 23 + 0 · 22 + 0 · 21 + 1 · 20 + +1 · 2−1 + 1 · 2−2 + 1 · 2−3 + 0 · 2−4 + 1 · 2−5 Arytmetyka zmiennoprzecinkowa w standardzie IEEE Przypomnienie MC Co to jest Matlab? Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej Arytmetyka zmiennopozycyjna w standardzie IEEE Nadmiar i Niedomiar • reprezentacja liczby w układzie dziesietnym ˛ 9.90625 = 9 · 100 + 9 · 10−1 + 6 · 10−3 + 2 · 10−4 + 5 · 10−5 • reprezentacja liczby w układzie binarnym 9.90625 = (1001.11101)2 = 1 · 23 + 0 · 22 + 0 · 21 + 1 · 20 + +1 · 2−1 + 1 · 2−2 + 1 · 2−3 + 0 · 2−4 + 1 · 2−5 NaN i Inf Działania arytmetyczne na liczbach zmiennoprzecinkowych • Uwaga! liczba 0.1 ma nieskończone rozwiniecie ˛ w układzie binarnym Utrata cyfr znaczacych ˛ Odejmowanie bliskich wielkości Algorytmy stabilne i niestabilne Uwarunkowania problemów numerycznych 0.1 => (00011001100110011 . .}. . . . )2 ≈ | {z 30 ≈ 0.100000001490116119384765625000 Arytmetyka zmiennoprzecinkowa w standardzie IEEE MC Co to jest Matlab? Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej Arytmetyka zmiennopozycyjna w standardzie IEEE Nadmiar i Niedomiar NaN i Inf Działania arytmetyczne na liczbach zmiennoprzecinkowych Utrata cyfr znaczacych ˛ Odejmowanie bliskich wielkości Algorytmy stabilne i niestabilne Uwarunkowania problemów numerycznych Reprezentacja zmiennopozycyjna liczb • postać zmiennopozycyjna liczby x 6= 0 w układzie dwójkowym (sc1 . . . cp f1 . . . ft )2 x = s · 2(c−b) · m s ∈ {−1, 1} − znak m ∈ [1, 2) − mantysa (c − b) − cecha m =1+f ≡1+ ∞ X fj · 2−j = (1.f1 f2 f3 . . . )2 j=1 fj ∈ {0, 1} Arytmetyka zmiennoprzecinkowa w standardzie IEEE MC Co to jest Matlab? Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej Arytmetyka zmiennopozycyjna w standardzie IEEE Nadmiar i Niedomiar NaN i Inf Działania arytmetyczne na liczbach zmiennoprzecinkowych Utrata cyfr znaczacych ˛ Standard IEEE Standard IEEE definiuje dwa zasadnicze formaty reprezentacji zmiennoprzecinkowej liczb rzeczywistych oraz określa reguły wykonywania działań arytmetycznych. Typ IEEE Liczba bitów cechy Liczba bitów mantysy Bias (liczba b powyżej) Orientacyjny zakres Orientacyjna precyzja MATLAB wykorzystuje podwójna˛ precyzje˛ w arytmetyce zmiennoprzecinkowej ε = 2.2204 · 10−16 . Odejmowanie bliskich wielkości Algorytmy stabilne i niestabilne Uwarunkowania problemów numerycznych Precyzja Pojedyńcza Podwójna 8 11 23 52 127 1023 10−38 . . . 1038 10−308 . . . 10308 6 · 10−8 10−16 >>help eps >>eps >>ans = 2.2204e-016 Arytmetyka zmiennoprzecinkowa w standardzie IEEE MC Co to jest Matlab? Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej Arytmetyka zmiennopozycyjna w standardzie IEEE Liczby zapisane przy użyciu takiej sekwencji bitów (sc1 . . . cp f1 . . . ft )2 należa˛ do zbioru liczb maszynowych Ψ. Sa˛ to jedyne dokładnie zapisywalne w komputerze liczby rzeczywiste, pozostałe bed ˛ a˛ musiały zostać wyrażone z wykorzystaniem liczb maszynowych. Niech x > 0 i x = m · 2q gdzie 1 ≤ m < 2 x = (1.f1 f2 . . . )2 · 2q Nadmiar i Niedomiar NaN i Inf Działania arytmetyczne na liczbach zmiennoprzecinkowych Utrata cyfr znaczacych ˛ Odejmowanie bliskich wielkości Algorytmy stabilne i niestabilne Uwarunkowania problemów numerycznych • obciecie ˛ x− = (1.f1 f2 . . . ft )2 · 2q • zaokraglenie ˛ w góre˛ x+ = [(1.f1 f2 . . . ft )2 + 2−t ] · 2q x+ − x− = 2q−t Arytmetyka zmiennoprzecinkowa w standardzie IEEE MC Niech fl(x) oznacza liczbe˛ maszynowa˛ najbliższa˛ wzgledem ˛ x: Co to jest Matlab? Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej Arytmetyka zmiennopozycyjna w standardzie IEEE • bład ˛ bezwzgledny ˛ zaokraglenia ˛ |x − fl(x)| ≤ • bład ˛ wzgledny ˛ zaokraglenia ˛ Nadmiar i Niedomiar x − fl(x) 2q−t−1 1 ≤ = 2−t−1 ≤ 2−t−1 q x 2 m q NaN i Inf Działania arytmetyczne na liczbach zmiennoprzecinkowych Utrata cyfr znaczacych ˛ Odejmowanie bliskich wielkości Algorytmy stabilne i niestabilne Uwarunkowania problemów numerycznych 1 |x+ − x− | = 2q−t−1 2 fl(x) = x(1 + δ), gdzie|δ| ≤ ε −t−1 ε=2 - precyzja arytmetyki δ = (fl(x) − x)/x Arytmetyka zmiennoprzecinkowa w standardzie IEEE MC Co to jest Matlab? Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej Arytmetyka zmiennopozycyjna w standardzie IEEE Nadmiar i Niedomiar NaN i Inf Działania arytmetyczne na liczbach zmiennoprzecinkowych Rozważmy system, w którym zarówno na ceche, ˛ jak i na mantyse, ˛ przeznaczono po dwa bity (p = 2, t = 2). Przyjmujemy b = 1, dzieki ˛ czemu −1 ≤ c − b ≤ 2 Niech x > 0 i x = m · 2q gdzie 1 ≤ m < 2 m ∈ {(1.00)2 , (1.01)2 , (1.10)2 , (1.11)2 } = {1, 1.25, 1.5, 1.75} 2q ∈ {0.5, 1, 2, 4} m · 2q ∈ {0.5, 0.625, 0.75, 0.875, 1.0, 1.25, 1.5, 1.75, 2.0, 2.5, 3.0, 3.5, 4.0, 5.0, 6.0, 7.0} Utrata cyfr znaczacych ˛ Odejmowanie bliskich wielkości Algorytmy stabilne i niestabilne Uwarunkowania problemów numerycznych Co powiesz o rozkładzie liczb? Ile wynosi precyzja arytmetyki ε ? Arytmetyka zmiennoprzecinkowa w standardzie IEEE Nadmiar i Niedomiar MC Co to jest Matlab? Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej Zjawisko nadmiaru powstaje, gdy dla liczby x, c > cmax , wtedy liczba x jest reprezentowana przez specjalna˛ wartość, nieskończoność ze znakiem ±∞. Arytmetyka zmiennopozycyjna w standardzie IEEE Nadmiar i Niedomiar NaN i Inf Działania arytmetyczne na liczbach zmiennoprzecinkowych Utrata cyfr znaczacych ˛ Odejmowanie bliskich wielkości Algorytmy stabilne i niestabilne Uwarunkowania problemów numerycznych Zjawisko niedomiaru powstaje, gdy dla liczby x, c < cmin , wtedy liczba x jest reprezentowana przez zero. Arytmetyka zmiennoprzecinkowa w standardzie IEEE Nadmiar i Niedomiar MC Co to jest Matlab? Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej Arytmetyka zmiennopozycyjna w standardzie IEEE Nadmiar i Niedomiar Wyznaczanie normy euklidesowej wektora x = (x1 , . . . , xn )T ∈ R n q kxk2 = x12 + · · · + xn2 . Jeśli x = (x1 , x2 )T to zjawisko nadmiaru wystapi, ˛ gdy x1 = 10200 i x2 = 1. Rozwiazaniem ˛ problemu może być wstepna ˛ normalizacja danych tak, by wszystkie nie było wieksze ˛ od 1. NaN i Inf Działania arytmetyczne na liczbach zmiennoprzecinkowych Utrata cyfr znaczacych ˛ Odejmowanie bliskich wielkości Algorytmy stabilne i niestabilne Uwarunkowania problemów numerycznych Niech M = max{|xi | : i = 1, . . . , n} s kxk2 = q x12 + ··· + xn2 =M· x1 M 2 + ··· + xn M 2 . Arytmetyka zmiennoprzecinkowa w standardzie IEEE NaN i Inf MC Co to jest Matlab? Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej Arytmetyka zmiennopozycyjna w standardzie IEEE Nadmiar i Niedomiar NaN i Inf Działania arytmetyczne na liczbach zmiennoprzecinkowych Utrata cyfr znaczacych ˛ Odejmowanie bliskich wielkości Algorytmy stabilne i niestabilne Uwarunkowania problemów numerycznych Wartości specjalne (NaN - Not a Number, Inf - Infinity) propaguja˛ sie˛ w obliczeniach zgodnie z poniższymi regułami: działanie 1+NaN NaN+NaN NaNNaN 1 >NaN 1 ==NaN NaN==NaN NaN6=NaN NaN>=NaN 2 6=NaN wynik NaN NaN NaN 0 0 0 1 0 1 działanie Inf−Inf Inf+Inf Inf∗Inf Inf>= 1 Inf< 0 Inf∗(−Inf) Inf/Inf Inf==Inf −Inf<Inf wynik NaN Inf Inf 1 0 −Inf NaN 1 1 Arytmetyka zmiennoprzecinkowa w standardzie IEEE MC Co to jest Matlab? Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej Arytmetyka zmiennopozycyjna w standardzie IEEE Nadmiar i Niedomiar Działania arytmetyczne na liczbach zmiennoprzecinkowych Wyniki działań arytmetycznych w komputerze spełniaja˛ zwiazki: ˛ • Niech liczby x, y ∈ Ψ, a symbol ∈ {+, −, ×, ÷} fl(x y ) = (x y )(1 + δ), przy czym |δ| ≤ ε NaN i Inf Działania arytmetyczne na liczbach zmiennoprzecinkowych Utrata cyfr znaczacych ˛ Odejmowanie bliskich wielkości Algorytmy stabilne i niestabilne Uwarunkowania problemów numerycznych • Niech liczby x, y ∈ / Ψ, a symbol ∈ {+, −, ×, ÷} fl(fl(x) fl(y )) = (x(1 + δ1 ) y (1 + δ2 ))(1 + δ3 ), |δi | ≤ ε Arytmetyka zmiennoprzecinkowa w standardzie IEEE MC Co to jest Matlab? Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej Arytmetyka zmiennopozycyjna w standardzie IEEE Nadmiar i Niedomiar NaN i Inf Działania arytmetyczne na liczbach zmiennoprzecinkowych Działania arytmetyczne na liczbach zmiennoprzecinkowych • Niech liczby x, y , z ∈ Ψ fl(x(y + z)) = (x · fl(y + z))(1 + δ1 ) = = (x(y + z))(1 + δ1 )(1 + δ2 ) = Algorytmy stabilne i niestabilne Uwarunkowania problemów numerycznych |δ2 | ≤ ε = (x(y + z))(1 + δ1 + δ2 + δ1 δ2 ) ≈ ≈ (x(y + z))(1 + δ1 + δ2 ) = = (x(y + z))(1 + δ3 ) Utrata cyfr znaczacych ˛ Odejmowanie bliskich wielkości |δ1 | ≤ ε Dlaczego usunieto ˛ iloczyn δ1 δ2 ? |δ3 | ≤ 2ε Arytmetyka zmiennoprzecinkowa w standardzie IEEE Utrata cyfr znaczacych ˛ MC Co to jest Matlab? Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej Arytmetyka zmiennopozycyjna w standardzie IEEE Nadmiar i Niedomiar Jako przykład sytuacji rozważamy odejmowanie dwóch bliskich liczb: x = 0.3721478693, y = 0.3720230572, x − y = 0.0001248121 Jeśli te obliczenia byłyby wykonane na komputerze dziesietnym ˛ z pieciocyfrowymi ˛ mantystami, to mielibyśmy takie równości: NaN i Inf Działania arytmetyczne na liczbach zmiennoprzecinkowych Utrata cyfr znaczacych ˛ Odejmowanie bliskich wielkości Algorytmy stabilne i niestabilne Uwarunkowania problemów numerycznych fl(x) = 0.37215, fl(y ) = 0.37202, fl(x) − fl(y ) = 0.00013 Czy otrzymany bład ˛ wzgledny ˛ jest duży czy mały? x − y − [fl(x) − fl(y )] 0.0001248121 − 0.00013 = ≈ 0.04 x −y 0.0001248121 Arytmetyka zmiennoprzecinkowa w standardzie IEEE Odejmowanie bliskich wielkości MC Co to jest Matlab? Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej Arytmetyka zmiennopozycyjna w standardzie IEEE Gdy tylko to jest mozliwe, powinniśmy unikać ryzykownego odejmowania bliskich sobie liczb: y= p x2 + 1 − 1 dla małych x odejmowanie bliskich sobie liczb spowoduje zmniejszenie liczby cyfr znaczacych, ˛ rozwiazanie: ˛ Nadmiar i Niedomiar NaN i Inf Działania arytmetyczne na liczbach zmiennoprzecinkowych Utrata cyfr znaczacych ˛ Odejmowanie bliskich wielkości Algorytmy stabilne i niestabilne Uwarunkowania problemów numerycznych √ p x 2 + 1 + 1) x2 2 y = ( x + 1 − 1) √ =√ x 2 + 1 + 1) x 2 + 1 + 1) Oszacowanie błedu ˛ wzglednego ˛ przy odejmowaniu dwóch bliskich liczb x − y , dla komputera dwójkowego, wynosi: y |δ| ≈ 1 − x Arytmetyka zmiennoprzecinkowa w standardzie IEEE Algorytmy stabilne i niestabilne MC Co to jest Matlab? Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej Arytmetyka zmiennopozycyjna w standardzie IEEE Nadmiar i Niedomiar NaN i Inf Działania arytmetyczne na liczbach zmiennoprzecinkowych Utrata cyfr znaczacych ˛ Odejmowanie bliskich wielkości Algorytmy stabilne i niestabilne Uwarunkowania problemów numerycznych Algorytm numeryczny określamy jako niestabilny, jeśli małe błedy ˛ popełnianane w jakimś etapie obliczeń rosna˛ w nastepnych ˛ etapach i poważnie zniekształcaja˛ ostateczne wyniki. Przykład: rozważmy ciag ˛ liczb rzeczywistych określony wzorem rekurencyjnym: 4 1 13 xn − xn−1 , x0 = 1, x1 = , n ≥ 1 xn+1 = 3 3 3 Łatwo sprawdzić, że te zwiazki ˛ generuje ciag ˛ o elementach n 1 xn = 3 Arytmetyka zmiennoprzecinkowa w standardzie IEEE Algorytmy stabilne i niestabilne MC Co to jest Matlab? Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej Arytmetyka zmiennopozycyjna w standardzie IEEE Nadmiar i Niedomiar Algorytm numeryczny określamy jako niestabilny, jeśli małe błedy ˛ popełnianane w jakimś etapie obliczeń rosna˛ w nastepnych ˛ etapach i poważnie zniekształcaja˛ ostateczne wyniki. Przykład: rozważmy ciag ˛ liczb rzeczywistych określony wzorem rekurencyjnym: 4 1 13 xn − xn−1 , x0 = 1, x1 = , n ≥ 1 xn+1 = 3 3 3 NaN i Inf Działania arytmetyczne na liczbach zmiennoprzecinkowych Utrata cyfr znaczacych ˛ Łatwo sprawdzić, że te zwiazki ˛ generuje ciag ˛ o elementach n 1 xn = 3 Odejmowanie bliskich wielkości Algorytmy stabilne i niestabilne Uwarunkowania problemów numerycznych xn+1 = n n−1 n−1 n+1 13 1 4 1 1 13 4 1 − = − = 3 3 3 3 3 9 3 3 Arytmetyka zmiennoprzecinkowa w standardzie IEEE Algorytmy stabilne i niestabilne MC Co to jest Matlab? Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej Arytmetyka zmiennopozycyjna w standardzie IEEE Nadmiar i Niedomiar NaN i Inf Działania arytmetyczne na liczbach zmiennoprzecinkowych Utrata cyfr znaczacych ˛ Odejmowanie bliskich wielkości Algorytmy stabilne i niestabilne Uwarunkowania problemów numerycznych x1 = zeros(42,1); x2 = zeros(42,1); x1(1) = 1; x1(2)=(1/3); x2(1) = 1; x2(2)=(1/3); for i=2:25 x1(i+1)= (13.0/3.0)*x1(i)-(4.0/3.0)*x1(i-1); x2(i+1)= (1/3)^(i+1); display([ 'x1_' num2str((i)) ' ' num2str(x1(i+1)) ' 'x2_' num2str((i)) ' ' num2str(x2(i+1))]) end '... Arytmetyka zmiennoprzecinkowa w standardzie IEEE MC Co to jest Matlab? Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej Arytmetyka zmiennopozycyjna w standardzie IEEE Nadmiar i Niedomiar NaN i Inf Działania arytmetyczne na liczbach zmiennoprzecinkowych Utrata cyfr znaczacych ˛ Odejmowanie bliskich wielkości Algorytmy stabilne i niestabilne Uwarunkowania problemów numerycznych x1(2) x1(3) x1(4) x1(5) x1(6) x1(7) x1(8) x1(9) x1(10) x1(11) x1(12) x1(13) x1(14) x1(15) x1(16) x1(17) x1(18) x1(19) x1(20) x1(21) x1(22) x1(23) x1(24) x1(25) 0.11111 0.037037 0.012346 0.0041152 0.0013717 0.00045725 0.00015242 5.0805e-005 1.6935e-005 5.645e-006 1.8815e-006 6.2639e-007 2.0575e-007 5.6399e-008 -2.9941e-008 -2.0494e-007 -8.4816e-007 -3.4021e-006 -1.3612e-005 -5.4447e-005 -0.00021779 -0.00087116 -0.0034846 -0.013939 x2(2) 0.037037 x2(3) 0.012346 x2(4) 0.0041152 x2(5) 0.0013717 x2(6) 0.00045725 x2(7) 0.00015242 x2(8) 5.0805e-005 x2(9) 1.6935e-005 x2(10) 5.645e-006 x2(11) 1.8817e-006 x2(12) 6.2723e-007 x2(13) 2.0908e-007 x2(14) 6.9692e-008 x2(15) 2.3231e-008 x2(16) 7.7435e-009 x2(17) 2.5812e-009 x2(18) 8.6039e-010 x2(19) 2.868e-010 x2(20) 9.5599e-011 x2(21) 3.1866e-011 x2(22) 1.0622e-011 x2(23) 3.5407e-012 x2(24) 1.1802e-012 x2(25) 3.9341e-013 Arytmetyka zmiennoprzecinkowa w standardzie IEEE Uwarunkowania MC Co to jest Matlab? Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej Arytmetyka zmiennopozycyjna w standardzie IEEE Nadmiar i Niedomiar NaN i Inf Działania arytmetyczne na liczbach zmiennoprzecinkowych Utrata cyfr znaczacych ˛ Odejmowanie bliskich wielkości Algorytmy stabilne i niestabilne Uwarunkowania problemów numerycznych Zadanie jest źle uwarunkowane, jeśli małe zmiany tych danych wywołuja˛ duże zmiany wyników. Wskaźnik uwarunkowania determinuje w znacznej mierze przebieg rozwiazania ˛ danego zadania niezależnie od użytej w tym celu metody. Arytmetyka zmiennoprzecinkowa w standardzie IEEE Uwarunkowania MC Co to jest Matlab? Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej Arytmetyka zmiennopozycyjna w standardzie IEEE Nadmiar i Niedomiar NaN i Inf Działania arytmetyczne na liczbach zmiennoprzecinkowych Utrata cyfr znaczacych ˛ Odejmowanie bliskich wielkości Algorytmy stabilne i niestabilne Uwarunkowania problemów numerycznych Zadanie polega na obliczeniu wartości funkcji f w punkcie x. Pytanie: Jak małe zaburzenie wartości x wpływa na f (x)? f (x + h) − f (x) ≈ hf 0 (x) wielkość wzgledna ˛ zaburzenia wartości funkcji jest równa 0 hf 0 (x) xf (x) h f (x + h) − f (x) ≈ = f (x) f (x) f (x) x wskaźnik uwarunkowania wynosi 0 xf (x) f (x) Arytmetyka zmiennoprzecinkowa w standardzie IEEE Uwarunkowania MC Co to jest Matlab? Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej Arytmetyka zmiennopozycyjna w standardzie IEEE Nadmiar i Niedomiar NaN i Inf Działania arytmetyczne na liczbach zmiennoprzecinkowych Utrata cyfr znaczacych ˛ Rozważmy klasyczny przykład podany przez Wilkinsona f (x) = 20 Y (x − k ) = (x − 1)(x − 2) . . . (x − 20), k =1 Jak wpływa na pierwiastek r = 20 zaburzenie funkcji f (x) składnikiem εg (czyli zmiana współczynnika przy x 20 z 1 na 1 + ε)? h ≈ −ε Odejmowanie bliskich wielkości Algorytmy stabilne i niestabilne Uwarunkowania problemów numerycznych g(x) = x 20 . Jaki wniosek? g(r ) g(20) 2020 = −ε = −ε ≈ −109 ε f 0 (r ) f 0 (20) 19! Arytmetyka zmiennoprzecinkowa w standardzie IEEE Uwarunkowania MC Co to jest Matlab? Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej Arytmetyka zmiennopozycyjna w standardzie IEEE Nadmiar i Niedomiar NaN i Inf Działania arytmetyczne na liczbach zmiennoprzecinkowych Utrata cyfr znaczacych ˛ Odejmowanie bliskich wielkości Algorytmy stabilne i niestabilne Uwarunkowania problemów numerycznych Rozwiazywanie ˛ układów równań liniowych. Jeśli rozwiazanie ˛ równania Ax = b jest niezbyt czułe na małe zmiany macierzy A i prawej strony b, to mówimy, że macierz A jest dobrze uwarunkowana. Wskaźnik uwarunkowania macierzy A ν(A) = kAk · A−1 kAk - norma macierzy A Macierz Hiliberta n-tego stopnia ,Hn , o elementach hij = 1 i +j −1 dla i ≤ i ≤ n i i ≤ j ≤ n jest przykładem macierzy źle uwarunkowanej. Arytmetyka zmiennoprzecinkowa w standardzie IEEE MC Co to jest Matlab? Problemy numeryczne napotykane w arytmetyce zmiennoprzecinkowej Arytmetyka zmiennopozycyjna w standardzie IEEE Nadmiar i Niedomiar NaN i Inf Działania arytmetyczne na liczbach zmiennoprzecinkowych Utrata cyfr znaczacych ˛ Odejmowanie bliskich wielkości Algorytmy stabilne i niestabilne Uwarunkowania problemów numerycznych Dziekuj ˛ e˛ za uwage˛