View
1
Download
0
Category
Preview:
Citation preview
Metody numeryczne
1
Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2015/2016
Prof. Alicja Konczakowska alkon@eti.pg.gda.pl p. 449
Metody numeryczne
Dział matematyki
Metody rozwiązywania problemów matematycznych za pomocą operacji na liczbach. Otrzymywane tą drogą wyniki są na ogół przybliżone, jednak dokładność obliczeń może być z góry określona
i dobiera się ją zależnie od potrzeb.
Wykorzystywane są wówczas gdy badany problem nie ma w ogóle rozwiązania analitycznego (danego wzorami),
lub korzystanie z takich rozwiązań jest uciążliwe ze względu na ich złożoność.
2
3
Skrypt Szatkowski A., Cichosz J.: Metody numeryczne, Wydawnictwo Politechniki Gdańskiej, Gdańsk 2010.
Kalkulator, komputer -> maszyna cyfrowa
Jakość maszyny cyfrowej
• wielkość pamięci operacyjnej,
• szybkość wykonywania operacji matematycznych i logicznych,
• zakres liczb podczas obliczeń,
• dokładność wykonywania podstawowych działań arytmetycznych na
liczbach rzeczywistych Zastosowanie do obliczeń w elektronice np.:
- analiza obwodów (Spice)
- analiza sygnałów 4
5
Zagadnienia omawiane na wykładzie:
1. Zapis liczb w komputerach 2. Metody rozwiązywania układów równań liniowych: - metody dokładne: dekompozycji LU, - metody iteracyjne: Jacobiego, Gaussa-Seidla 3. Wybrane metody przybliżonego wyznaczania
rozwiązań równania algebraicznego: bisekcji, regula falsi, siecznych, stycznych, iteracji prostej 4. Aproksymacja funkcji: interpolacja, aproksymacja
6
Zapis liczb w komputerach
Sem. 2 EiT, 2015/2016
Każdą liczbę zastosowaną do obliczeń w komputerach należy przedstawić w postaci dogodnej do wykonywania operacji matematycznych
Jest to system dwójkowy, p = 2
Liczba 10 zapisana w systemie dziesiętnym,
w systemie dwójkowym zostanie zapisana jako:
1 0 1 0
1 ∙ 23 + 0 ∙ 22 + 1 ∙ 21 + 0 ∙ 20 = 8 + 2 = 10
Przyjęto, że każdy element zapisany w maszynie cyfrowej jest nazywany „bitem”. 7
Przyjmujemy, że zapiszemy liczby w postaci określonych wartości, które będą występować lub nie, w zależności od pewnej „wagi”. Jako wagę można zastosować wartości:
0 (nie) lub 1 (tak). Wartości, które wybierzemy do reprezentacji liczb, powinny stanowić jakiś logiczny ciąg, np. 2𝑛, 2𝑛−1, 2𝑛−2, 2𝑛−3 , … , 20
Czy mogę zapisać 2,5?
Jaką największą liczbę mogę zapisać? Jaką najmniejszą liczbę mogę zapisać?
Konieczne jest ustalenie, co w danym rejestrze jest „zapisane”, oczywiście symbolicznie,
w maszynie cyfrowej występuje tylko zapis wartości: 0 i 1
8
Zapisanie liczby o większej wartości, liczby ułamkowej, liczby ujemnej wymaga stworzenia odpowiedniego systemu zapisu liczb.
W naszym przykładzie, przy 4 bitach, można zapisać liczby od 0 do 15, ale co 1.
Większy zakres liczb możemy uzyskać zwiększając liczbę bitów.
Liczby ułamkowe możemy uzyskać wprowadzając zapis dla części całkowitej i ułamkowej.
Liczby dodatnie i ujemne można uzyskać wprowadzając dodatkowy bit na znak.
Co zrobić, żeby uzyskać odpowiednią dokładność? Od czego ona zależy?
9
Liczby w komputerach są zapisywane w postaci:
stałopozycyjnej (stałoprzecinkowej),
zmiennopozycyjnej (zmiennoprzecinkowej).
Reprezentacja stałopozycyjna
𝑆 = 𝑠 𝑐𝑛−1 ∙∙∙ 𝑐 1 𝑐0 𝑐−1 𝑐−2 ∙∙∙ 𝑐−𝑚+1 𝑐−𝑚 𝑐𝑖 ∈ 0,∙∙∙, 𝑝 − 1 , 𝑠 ∈ +,−
Przyjmujemy, że p = 2, więc 𝑐𝑖 ∈ 0,1 i = n-1, n – 2, …. , - m + 1, - m
Do zapisu liczby stałoprzecinkowej przeznaczamy z góry określoną liczbę bitów, a pozycję przecinka ustala się arbitralnie, w zależności od wymaganej dokładności:
Zapis liczby w komputerze – w postaci bitów, np. słowo 32-bitowe, 16-bitowe,….
Słowo 7-bitowe możemy zapisać w postaci: część całkowita 4 bity (n = 4), 1 bit na znak, część ułamkowa 2 bity (m = 2)
p – podstawa, s – znak System dziesiętny p = 10, system dwójkowy (binarny) p = 2
0 znak”+”, 1 znak „–”.
10
𝑆 = 𝑠 𝑐𝑛−1 ∙∙∙ 𝑐 1 𝑐0 𝑐−1 𝑐−2 ∙∙∙ 𝑐−𝑚+1 𝑐−𝑚 𝑐𝑖 ∈ 0, 1 , 𝑠 ∈ 0, 1
𝑆 = 0(𝑐𝑛−12𝑛−1 + 𝑐𝑛−2 2
𝑛−2 + ⋯+ 𝑐020 + 𝑐−12
−1 + 𝑐−22−2 + ⋯+𝑐−𝑚2−𝑚)
Liczba dodatnia
część całkowita część ułamkowa Przykład
Na część całkowitą przeznaczono 4 bity (n = 4), na część ułamkową 2 bity (m = 2)
Liczba dodatnia s = 0, wartość maksymalna to: 0 1111 11 czyli
0(1 ∙ 23 + 1 ∙ 22 + 1 ∙ 21 + 1 ∙ 20 + 1 ∙ 2−1 + 1 ∙ 2−2) = +15,75
Symbol reprezentuje przecinek
𝑆 = 𝑠 𝑐3 ∙∙∙ 𝑐 1 𝑐0 𝑐−1 𝑐−2 𝑐𝑖 ∈ 0, 1 , 𝑠 ∈ 0, 1
11
0(0 ∙ 23 + 0 ∙ 22 + 0 ∙ 21 + 0 ∙ 20 + 0 ∙ 2−1 + 1 ∙ 2−2)= + 0,25
Przykładowa liczba: s = 1 1011 10
1 (1 ∙ 23 + 0 ∙ 22 + 1 ∙ 21 + 1 ∙ 20 + 1 ∙ 2−1 + 0 ∙ 2−2)= – 11,50
Podziału na część całkowitą i ułamkową dokonuje programista.
Przy ustalonej liczbie bitów trzeba bardzo precyzyjnie określić: część całkowitą (liczbę bitów na część całkowitą) i część ułamkową (liczbę bitów na część ułamkową), żeby uzyskać we wszystkich obliczeniach (operacjach matematycznych) wymagany zakres liczb. Przy ustalonej liczbie bitów Zwiększanie części ułamkowej powoduje zmniejszenie zakresu liczb, natomiast zwiększanie części całkowitej, to zmniejszanie dokładności (precyzji).
Liczba dodatnia s = 0, najmniejsza wartość większa od zera to: 0000 01 czyli
Wniosek: można zapisać liczby od – 15,75 do + 15,75, ale tylko co 0,25
12
Reprezentacja zmiennopozycyjna
Do zapisu liczby zmiennopozycyjnej stosujemy następujący zapis:
𝑠 ∈ 0,1
gdzie: M - mantysa, W - cecha, s – znak, 0 znak”+”, 1 znak „–”.
Mantysa M jest znormalizowana, liczba ułamkowa. Jeżeli M jest stałe, a zmienia się W, to „przesunięciu” ulega przecinek
stąd nazwa tej reprezentacji liczb.
𝑍 = (−1)𝑠 ∙ 𝑀 ∙ 𝑊
13
Mantysa Przeznaczamy na mantysę n bitów
część ułamkowa
s = 0 znak „+”, s = 1 znak „–”
Cecha Przeznaczamy na cechę m bitów
𝑚𝑖 ∈ 0, 1
𝑊 = 𝑤 𝑚−1 2𝑚−1 + 𝑤𝑚−2 2
𝑚−2 + 𝑤𝑚−3 2𝑚−3 … + 𝑤0 2
0
𝑀 = 1 + 𝑚𝑛−1 2−1 + 𝑚𝑛−2 2
−2 + 𝑚𝑛−3 2−3 … + 𝑚1 2
−𝑛+1 + 𝑚0 2−𝑛
𝑤𝑖 ∈ 0, 1
𝑍 = (−1)𝑠 ∙ 𝑀 ∙ 𝑊
14
Reprezentacja zmiennopozycyjna Należy zapisać liczbę 99,00 (system dziesiętny) w systemie binarnym (p = 2) zmiennopozycyjnym:
Sposób zamiany
Najbliższa potęga 2, o wartości mniejszej od 99, to 26 = 64, 𝑠 = 0, znak " + "
Obliczamy ułamek: 99
64= 1,546875 będziemy zapisywać liczbę w postaci:
(1 + 0,546875) ∙ 64,
M = 1 + 0,546875 cecha W = 26
Zapis mantysy (6 bitów): 0,546875 x 2 = 1,09375 1 0,09375 x 2 = 0,1875 0 0,1875 x 2 = 0,375 0 0,375 x 2 = 0,75 0 0,75 x 2 = 1,5 0 1 0,5 x 2 = 1,0 1
Zapis cechy (7 bitów): 64:2 = 0 32:2 = 0 16:2 = 0 8:2 = 0 4:2 = 0 2:2 = 0 1 1
𝑀 = 1 + 𝑚5 2−1 + 𝑚4 2
−2 + 𝑚3 2−3 + 𝑚2 2
−4 + 𝑚1 2−5 + 𝑚0 2
−6 = 1,546875 𝑊 = 𝑤 6 2
6 + 𝑤5 25 + 𝑤4 2
4 … + 𝑤0 20 = 64
𝑠 ∈ 0,1
𝑍 = 0 1 + 1 ∙ 2−1 + 0 ∙ 2−2 + 0 ∙ 2−3 + 0 ∙ 2−4 + 1 ∙ 2−5 + 1 ∙ 2−6 ∙ [(1 · 26 +
+ 0 · 25 + 0 · 24 + 0 · 23 + 0 · 22 + 0 · 21 + 0 · 20)] == +1,546875 ∙ 64 = +99
0 100011 1000000
𝑍 = (−1)𝑠 ∙ 𝑀 ∙ 𝑊
znak mantysa cecha
Zapis liczby
W =26
15
Na zapisanie liczby 99 przeznaczono: 1 bit na znak, sześć bitów na mantysę, siedem bitów na cechę.
Przy ograniczaniu liczby bitów, zapis liczby będzie niedokładny, z błędem. Przykładowo: 1 bit na znak, pięć bitów na mantysę, siedem bitów na cechę, wtedy:
𝑍 = 0 1 + 1 ∙ 2−1 + 0 ∙ 2−2 + 0 ∙ 2−3 + 0 ∙ 2−4 + 1 ∙ 2−5 ∙ (26) == 1,53125 ∙ 64 = + 𝟗𝟖
0 10001 1 000000
Błąd bezwzględny: ∣99-98∣ = 1, błąd względny 1/99 = 1,01%
A co spowoduje ograniczanie liczby bitów na cechę?
1 bit na znak, cztery bity na mantysę, siedem bitów na cechę, wtedy: 0 10000 1000000
𝑍 = 0 1 + 1 ∙ 2−1 + 0 ∙ 2−2 + 0 ∙ 2−3 + 0 ∙ 2−4 ∙ (26) == 1,5 ∙ 64 = 𝟗𝟔
Błąd bezwzględny: ∣99-96∣ = 3, błąd względny 3/99 = 3,03%
16
Dokładność zapisu liczby w systemie zmiennopozycyjnym zależy od mantysy, a zakres liczby od cechy.
17
Błędy w obliczeniach
BŁĘDY W OBLICZENIACH
Błąd bezwzględny definiuje się w obliczeniach jako różnicę między dokładną (na ogół nieznaną) wartością liczbową x a jej wartością przybliżoną otrzymaną jako wynik
rozwiązania pewnego zadania obliczeniowego,
W celu określenia dokładności obliczeń określa się zwykle graniczny
(tzn. maksymalny) błąd bezwzględny
wyrażany w jednostkach wielkości obliczanej, lub graniczny błąd względny
wyrażany w postaci ułamka lub procentu wartości
obliczanej wielkości. 18
𝛿 = 𝑥 − 𝑥
𝛿𝑀 = 𝑚𝑎𝑥 𝑥 − 𝑥
휀𝑀 = 𝑥 − 𝑥
𝑥
Rozpatruje się trzy główne przyczyny powstawania niedokładności w trakcie realizacji obliczeń:
• błędy danych wejściowych,
• błędy obcięcia,
• błędy zaokrągleń.
Błędy danych wejściowych powodowane są przez
skończoną długość słowa stosowanego w maszynie cyfrowej
(skończoną dyskretną reprezentację liczb stosowanych w obliczeniach komputerowych)
i związaną z tym w konsekwencji niemożliwością przedstawienia
wartości rzeczywistej w postaci dokładnego zapisu liczbowego.
19
Na dokładność obliczeń ma również wpływ kolejność działań matematycznych
20
𝑆 = 𝑠 𝑐𝑛−1 ∙∙∙ 𝑐 1 𝑐0 𝑐−1 𝑐−2 ∙∙∙ 𝑐−𝑚+1 𝑐−𝑚 𝑐𝑖 ∈ 0, 1 , 𝑠 ∈ 0, 1
𝑆 = 0 (𝑐𝑛−12𝑛−1 + 𝑐𝑛−2 2
𝑛−2 + ⋯+ 𝑐020 + 𝑐−12
−1 + 𝑐−22−2 + ⋯+𝑐−𝑚2−𝑚)
Liczba dodatnia
część całkowita część ułamkowa
Przykład
Na część całkowitą przeznaczono 4 bity (n = 4), na część ułamkową 2 bity (m = 2)
Liczba dodatnia s = 0, wartość maksymalna to: 1111 11 czyli
0 (1 ∙ 23 + 1 ∙ 22 + 1 ∙ 21 + 1 ∙ 20 + 1 ∙ 2−1 + 1 ∙ 2−2) = +15,75
Symbol reprezentuje przecinek
Reprezentacja stałopozycyjna
Do zapisu liczby stałoprzecinkowej przeznaczamy z góry określoną liczbę bitów, a pozycję przecinka ustala się arbitralnie, w zależności od wymaganej dokładności
Powtórka
21
Należy zapisać liczbę 0,48 (system dziesiętny) w systemie binarnym, jako liczbę stałopozycyjną:
Sposób zamiany
Zapis liczby w systemie binarnym p = 2 1 bit na znak, cztery bity na część całkowitą, 2 bity na część ułamkową
Część całkowita: 0000
0 0000 01
0,48 x 2 = 0,96 0 0,96 x 2 = 1,92 1 0,92 x 2 = 1,84 1 0,84 x 2 = 1,68 1
Część ułamkowa
Wartość w systemie dziesiętnym: 0 0 ∙ 2−1 + 1 ∙ 2−2 = 0,25
Wniosek: nie ma możliwości zapisania „dokładnie” wartości 0,48 w przyjętym systemie zapisu: znak, 4 bity na część całkowitą i 2 bity na część ułamkową Błąd bezwzględny │0,48 – 0,25│= 0,23, błąd bezwzględny │0,23/0,48 │ = 47,9%
Błąd danych wejściowych
Reprezentacja stałopozycyjna
Założenie
Zapis liczby w systemie binarnym
22
Należy zapisać liczbę 16,50 (system dziesiętny) w systemie binarnym stałopozycyjną:
Sposób zamiany
Część całkowita:
16:2 reszta 0 8:2 reszta 0 4:2 reszta 0 2:2 reszta 0 1 reszta 1
Zapis: 10000
Część ułamkowa:
0,50 x2 = 1,0 1 0,0 x 2= 0 0
Zapis: 10
Zapis liczby w systemie binarnym 1 bit na znak, cztery bity na część całkowitą, 2 bity na część ułamkową
Nie można zapisać tej liczby w założonym systemie zapisu (cztery bity na mantysę), liczba „wymaga” pięciu bitów na mantysę.
Reprezentacja stałopozycyjna
Założenie
Można zapisać tylko liczbę 15,75
Błąd bezwzględny │16,50 – 15,75│= 0,75, błąd bezwzględny │0,75/16,50 │ = 4,5%
Błąd danych wejściowych
23
Należy zapisać liczbę (system dziesiętny) w systemie binarnym stałopozycyjną: 11,60
Sposób zamiany
Część całkowita:
11:2 reszta 1 5:2 reszta 1 2:2 reszta 0 1 reszta 1
Zapis: 1011
Część ułamkowa:
0,60 x2 = 1,2 1 0,2 x 2= 0,4 0
Zapis: 10
Zapis liczby w systemie binarnym Znak, cztery bity na mantysę, 2 bity na cechę
Reprezentacja stałopozycyjna
Założenie
Zapis liczby w systemie binarnym: 1011 10
1 ∙ 23 + 0 ∙ 22 + 1 ∙ 21 + 1 ∙ 20 + 1 ∙ 2−1 + 0 ∙ 2−2 = 11,50
Wartość w systemie dziesiętnym:
Wniosek: nie ma możliwości zapisania „dokładnie” wartości 11,60 w przyjętym systemie zapisu, znak, 4 bity na część całkowitą i 2 bity na część ułamkową Błąd bezwzględny │11,60 – 11,50│= 0,10, błąd bezwzględny │0,10/11,60│ = 0,86% Błąd danych wejściowych
24
Działania na liczbach w systemie dwójkowym
1 + 0 = 1 1 + 1 = 10 1 * 0 = 0 1 * 1 = 1 10 – 1 = 1
25
Dodawanie liczb stałopozycyjnych
Należy dodać liczby 11,5 i 3,5 w systemie dziesiętnym i binarnym
System dziesiętny: 11,5 + 3,5 = 15
Zamiana liczb na binarne, przyjmujemy, że liczby zostaną zapisane : W formacie 1 bit na znak, 4 bity na część całkowitą, 2 bity na część ułamkową
Liczba 11 11:2 1 5:2 1 2:2 0 1 1
Część ułamkowa 0,50 0,50 x 2 = 1 1 0,00 0
Liczba 11,5 0 1011 10
Liczba 3 3:2 1 1 1 0 0 0 0
Liczba 3,5 0 0011 10
11,5 = 0 1 ∙ 23 + 0 ∙ 22 + 1 ∙ 21 +1 ∙ 20 + (1 ∙ 2−1 + 0 ∙ 20)
3,5 = 0 0 ∙ 23 + 0 ∙ 22 + 1 ∙ 21 +1 ∙ 20 + (1 ∙ 2−1 + 0 ∙ 20)
Zasady dodawania:
0+0 = 0, 1+0 = 1, 0+1 = 1, 1+1 = 10
Część całkowita
26
Liczba 11,5 0 1011 10
Liczba 3,5 0 0011 10 Suma 0 1111 00
11,5 + 3,5 = 0 1 ∙ 23 + 1 ∙ 22 + 1 ∙ 21 +1 ∙ 20 + (0 ∙ 2−1 + 0 ∙ 20) = +15
Dodawanie
Liczby zostały dodane prawidłowo, nie występuje błąd
27
Zadanie Należy dodać liczby zapisane w systemie dziesiętnym (jest to przeliczenie skali):
𝑇𝐹 = 32 + 9
5𝑇𝐶
W systemie binarnym liczby te należy zapisać jako liczby całkowite: Przeliczamy temperaturę Tc = 100.
9/5 = 1,8 1,0 obcięcie
2,0 zaokrąglenie
𝑇𝐹 = 32 + 9
5𝑇𝐶
132
232 Wynik poprawny 212
Jeżeli zmienimy kolejność działań, czyli 𝑇𝐹 = 32 +9 ∙𝑇𝐶
5, to wynik będzie poprawny
9 · 100 = 900 900/5 = 180
𝑇𝐹 = 32 +180 = 212
28
Wniosek W czasie wykonywania operacji matematycznych występują
błędy danych wejściowych, błędy zaokrąglenia i obcięcia,
które zależą od reprezentacji liczby w maszynie cyfrowej
Na dokładność obliczeń wpływa również kolejność wykonywanych operacji matematycznych.
Dodawanie liczb o dużych wartościach i małych wartościach - kolejność
29
Standardy zapisu liczb w maszynach cyfrowych
30
Liczba w reprezentacji zmiennopozycyjnej o pojedynczej lub podwójnej precyzji (IEEE 754) jest zapisywana w rejestrach komputera jako liczba o podstawie p = 2 w postaci:
Reprezentacja zmiennopozycyjna, pojedyncza precyzja (32 bity):
znak cecha mantysa (1 bit) (8 bitów) (23 bity)
numer bitu: 31 30 22
Reprezentacja zmiennopozycyjna, podwójna precyzja (64 bity):
znak cecha mantysa (1 bit) (11 bitów) (52 bity)
numer bitu: 63 62 51
31
𝑍 = (−1)𝑠∙ 𝑀 ∙ 2𝐸−𝑤𝑎𝑟𝑡𝑜ść 𝑠𝑡𝑎ł𝑎 Zapis liczby Z w standardzie IEEE 754
s – znak, jeżeli s = 0, to jest to liczba dodatnia, jeżeli s = 1, to jest to liczba ujemna, M – mantysa, składa się z określonej liczby bitów, zapisywana jako ułamek binarny, E - cecha, składa się z określonej liczby bitów, zapisywana jako liczba.
Pojedyncza precyzja:
𝑍 = (−1)𝑠∙ 𝑀 ∙ 2𝐸−127
𝑀 = 1.𝑚22𝑚21 ⋯𝑚2𝑚1𝑚0 Zajmuje 23 bity: 0 (LSB), 22 (MSB)
𝑀 = 1 + 𝑚222−1 + 𝑚212
−2 + ⋯+ 𝑚12−22 + 𝑚02
−23
m przyjmuje wartości 0 lub 1
E zajmuje 8 bitów: 23 (LSB), 30 (MSB)
32
s 30 29 28 27 26 25 24 23
znak, 1 bit
cecha, 8 bitów
22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
mantysa, 23 bity
2−23 2−1
0 albo 1 27 20 Cecha, maksymalna wartość E = 255, czyli 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128, minimalna E = 0, czyli wykładnik może zmieniać się od -127 do +128 (2−127 do 2128)
Mantysa, jeżeli wszystkie m są równe 0, to M = 1, jeżeli wszystkie m są równe 1, to M = 2 – 2−23
33
Przykład:
0 00000111 11000000000000000000000
+
7 0,75
+ 1,75 ∙ 27−127 = +1,316554 ∙ 10−36
znak cecha mantysa (1 bit) (8 bitów) (23 bity)
numer bitu: 31 30 22
34
Recommended