Bledy zwiazane z obliczeniami numerycznymi, konwersje liczb

advertisement
Metody numeryczne
Instytut Sterowania i Systemów Informatycznych
Wydział Elektrotechniki, Informatyki i Telekomunikacji
Uniwersytet Zielonogórski
Elektrotechnika stacjonarne-dzienne pierwszego stopnia z tyt. inżyniera
Informatyka stacjonarne-dzienne drugiego stopnia z tyt. magistra inżyniera
Błędy związane z obliczeniami numerycznymi, konwersje liczb
Laboratorium, prowadzący: mgr inż. Błażej Cichy
Rok akademicki 2010/2011
1
Zadania
1. Zapisać1 w systemie dwójkowym, ósemkowym (oktalnym) i szesnastkowym (heksadecymalnym) liczby systemu dziesiętnego:
(a) 24
(b) 232
(c) 1025
(d) 46 − 1
(e) 125,625
(f) 0,325
2. Zmienić zapis z dziesiętnego na ósemkowy i szesnastkowym:
(a) 16
(b) 157
(c) 2044
3. Dokonać następujących konwersji:
(a) (101101110110)2 −→ (?)8
(b) (110101010110)2 −→ (?)16
(c) (2716)8 −→ (?)16
(d) (F 2A)16 −→ (?)8
4. Zapisać dziesiętnie:
(a) (100111)2
(b) (111001001101)2
1
W celu rozwiązania pierwszych ośmiu zadań, należy napisać własne funkcje Matlaba implementujace
algorytmy konwersji, pomocne mogą być standardowe funkcje konwertujace Matlaba: dec2bin, dec2base,
dec2hex, bin2dec, hex2dec, base2dec.
1
Błędy związane z obliczeniami numerycznymi, konwersje liczb
2
(c) (77)8
(d) (263)8
(e) (7F )16
(f) (F 8F E)16
(g) (1A6, E2)16
(h) (77, 44)8
(i) (111101, 101)2
5. Przygotować następujące tabelki dla działań:
(a) dodawania dla systemów o podstawie równej 5 i 6
(b) mnożenia dla systemów o podstawie równej 6 i 7
6. Wykonać następujące operacje:
(a) (24)6 + (1254)6
(b) (24)7 + (1254)7
(c) (121)6 · (335)6
(d) (121)7 · (335)7
7. Przy założeniu, że zapisujemy liczbę w pamięci operacyjnej binarnie w zapisie stałopozycyjnym ze znakiem, podać zakres liczb, które możemy przedstawić na 10 bitach.
Jaki będzie zakres dla zapisu zmiennopozycyjnego przy założeniu, że mantysa ma 5
bitów?
8. Przedstawić liczbę −245, 25 w zapisie stałopozycyjnym, a następnie zmiennnopozycyjnym przy założeniu, że baza systemu jest liczba 2. Ile wynosi minimalna liczba
bitów potrzebna do przechowania tej liczby w pamięci?
9. Jaką liczbę dziesiętną reprezentują liczby maszynowe (t=4, w=2, b=2, gdzie b baza, t- liczba cyfr mantysy, w - liczba cyfr cechy bez znaku):
(a) (1)1101(0)10
(b) (0)1001(0)00
(c) (0)1111(0)11
(d) (0)1000(1)11
(e) (1)1001(1)01
10. W wyniku wystąpienia zjawiska zaokrąglenia liczba 0, 2 została zapisana w pamięci maszynowej jako 0, 1875. Wyznaczyć popełniony błąd bezwzględny i względny.
Czy można oszacować na podstawie policzonych błędów dokładność reprezentacji
zmiennoprzecinkowej użytej maszyny cyfrowej (ilość bitów mantysy)?
11. Spontaniczna generacja cyfr nieznaczących.
Należy wykonać ciąg poleceń Matlaba:
Błędy związane z obliczeniami numerycznymi, konwersje liczb
>>
>>
>>
>>
>>
3
format long e
2.6 + 0.2
ans + 0.2
ans + 0.2
2.6 + 0.6
Wyjaśnić przyczynę pojawienia się błędnej cyfry na najmniej znaczącym miejscu.
12. Arytmetyka zmiennoprzecinkowa.
Należy porównać efekty wykonania dwóch ciągów poleceń Matlaba:
>> format long e
>> u=29/13
>> v=29-13*u
oraz
>> x=29/1300
>> y=29-1300*x
Z czego wynika różnica w wyniku dla pierwszego i drugiego przykładu? Następnie
wprowadzić i zinterpretować wyniki wykonania następujących poleceń Matlaba (jaka
jest przyczyna błędu?):
>>
>>
>>
>>
maks=realmax
maks=2*maks
minim=realmin
minim=minim/1e16
Czemu można wykonać bez wystąpienia błędu niedomiaru i jak zinterpretować wynik wykonania operacji:
>> realmin/1e14
>> realmin/1e15
13. Precyzja maszynowa
Wartość popełnionego błędu zaokrąglenia jest limitowana dostępna dla danej maszyny wartością precyzji ε, definowanej jako taka liczba ε, dla której ∀δ<ε 1 + δ = 1.
W programie Matlab wartość ta jest dostępna w zmiennej predefiniowanej:
>> eps
Wartość tę można również znaleźć interakcyjnie w sposób przybliżony, korzystając z
definicji - startujemy od pewnej wartości poszukiwanej zmiennej, np. epsilon = 1, a
następnie dzielimy ja na pół tak długo, aż po dodaniu do jedności wynik nie zmieni
się (tzn. 1 + epsilon = 1). Należy napisać skrypt Matlaba wyznaczający precyzję
maszynowa wykonywanych obliczeń.
14. Błąd obcięcia, błąd względny i bezwzględny
Przy mierzeniu pewnej wielkości uzyskano wynik p = 32.65. Wiedząc, iż maksymalny błąd względny tego pomiaru wynosi 0.5% znaleźć przedział, w którym zawarta
jest wielkość p.
Błędy związane z obliczeniami numerycznymi, konwersje liczb
4
15. Błąd obcięcia, błąd względny i bezwzględny
Rozwinięcie funkcji sin(x) w szereg Taylora ma postać:
sin(x) = x −
x3 x 5
+
+ ...
3!
5!
Dla małych wartości zmiennej x (x < 1) można aproksymować wartość funkcji
sin(x) ≈ x (szereg rozwinięcia ograniczamy do kilku pierwszych wyrazów). Należy
napisać skrypt Matlaba rysujący wykres błędu względnego i bezwzględnego popełnianego podczas takiej aproksymacji w zakresie x ∈ [−0.3..0..3] przy założeniu, że
bierzemy pod uwagę odpowiednio pierwsze 1, 2 i 3 człony rozwinięcia funkcji w
szereg. Wskazówka – błąd bezwzględny definiujemy jako ∆ = |α̂ − α|, gdzie α̂ .
wartość obliczona, α - wartość rzeczywista; błąd względny definiujemy jako δ = ∆
α
Dla obcięcia rozwinięcia funkcji sin(x) do pierwszego wyrazu:
∆ = x − sin(x) =
x3
3!
+
x5
5!
+ ...
δ=
x−sin(x)
sin(x)
=
x
sin(x)
−1
Literatura
[1] Bjärck Ake i Dahlquist Germund. Metody numeryczne. PWN, Warszawa, 1987.
[2] Jerzy Brzózka i Lech Dorobczyński. Programowanie w MATLAB. Warszawa,
Wydanie I, 1998.
[3] Zenon Fortuna, Bohdan Macukow i Janusz Wąsowski. Metody numeryczne. WNT,
Warszawa, 1995.
[4] Jerzy Klamka i in. Metody numeryczne. Politechnika Śląska, Gliwice, 1998.
[5] David Kincaid i Ward Cheney. Analiza numeryczna. WNT, Warszawa, 2006.
[6] Anna Kamińska i Beata Pańczyk. Matlab. Ćwiczenia z . . . , Przykłady i zadania.
Warszawa, Wydanie I, 2002.
[7] Wanat Kazimierz. Algorytmy numeryczne. Helion, Gliwice, 1994.
[8] Bogumiła Mrozek i Zbigniew Mrozek. MATLAB i Simulink. Poradnik użytkownika.
Wydanie II, 2004.
[9] Jurij Povstenko. Wprowadzenie do metod numerycznych. Akademicka Oficyna
Wydawnicza EXIT, Warszawa, Wydanie drugie poprawione i uzupełnione, 2005.
[10] Rudra Pratap. MATLAB 7 dla naukowców i inżynierów. PWN, 2007.
[11] Wiesława Regel. Wykresy i obiekty graficzne w MATLAB. Warszawa, Wydanie I,
2003.
[12] Marcin Stachurski. Metody numeryczne w programie Matlab. Warszawa, Wydanie I,
2003.
Download