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˛