Metody numeryczne 1 (MEN331) - Ćwiczenia 2


Kalendarium, ZasadyĆw1, Ćw2, Ćw3, Ćw4, Ćw5, Ćw6, Ćw7, Ćw8, Ćw9, Ćw10, Ćw11, Ćw12, Ćw13
Prowadzący: Rafał Witkowski
Temat: Zaokrąglanie liczb, rachunek zmiennopozycyjny, arytmetyka fl

Zaokrąglanie liczb i cyfry znaczące

Cyfry istotne

Cyfry istotne są to wszystkie cyfry z wyjątkiem zer na początku liczby pomagające określić pozycję kropki.
Przykład 1
       0,0000123 posiada 3 cyfry istotne

Cyfry ułamkowe

Cyfry ułamkowe są to wszystkie cyfry po kropce.
Przykład 2
       0,0000123 posiada 7 cyfr ułamkowych
       32 posiada 0 cyfr ułamkowych
       0,12300 posiada 5 cyfr ułamkowych

Cyfra znacząca i poprawna



Cyfry istotne występujące w , aż do t-tej pozycji po kropce nazywamy cyframi znaczącymi.
np.  Zadanie określić liczbę cyfr poprawnych i znaczących, gdy 0.0123 +- 0.001

Rozwiązanie:

więc t = 2 , a więc 2 cyfyr poprawne ułamkowe a więc poprawnymi liczbami są liczby: 0,01 a więc jest tylko jedna cyfra znacząca.

       0032 posiada 2 cyfry znaczące
       0,12300 posiada 5 cyfr znaczących

Zadanie 1

Ile liczb istotnych, znaczących i poprawnych jest w liczbach:
a)  0.1234 +- 0,0001.
b) 0.0002367   +- 0.00007

Zaokrąglanie liczb ułamkowych

Reguła zaokrąglania mówi, że jeżeli cyfra na t+1-szej pozycji jest mniejsza niż 5 to wynik bez zmian, gdy jest większa od 5 to t-tą cyfrę zwiększamy o 1. Natomiast w przypadku gdy t+1-sza cyfra równa się 5 to gdy t-ta cyfra jest parzysta to bez zmian a jeżeli nieparzysta to zwiększamy o 1.
  
Zaokrąglanie jest powszechnie używane w przypadku wykonywania operacji na liczbach zmiennopozycyjnych na komputerze. Bowiem jeżeli zamierzamy dodać liczbę 0.75 do liczby 5 zauważamy, że wynik nie jest reprezentowany w naszym formacie. A więc po wykonaniu dodawania należy wykonać zaokrąglenie.
Przykład 3
  0.34567 zaokrąglamy do 0.3458 
  0.34565 zaokrąglamy do 0.3456

Zadanie 6

Obliczyć zaokrąglenie liczby oraz oblicz jaki jest błąd względny i bezwzględny tego zaokrąglenia:

a) 0.012345678  do 4 cyfr istotnych
b) 0.012345678  do 5 cyfr istotnych

Obcinanie liczb ułamkowych

Reguła obcinania mówi o odrzucaniu wszystkich cyfr leżących na prawo od t-tej liczby po przecinku.

Obcinanie daje większe błędy niż zaokrąglanie, jednak jest równie ważne, gdyż często z przyczyn technicznych jest ono o wiele łątwiejsze.

Zadanie 7

Obliczyć obcięcie liczby oraz oblicz jaki jest błąd względny i bezwzględny tego zaokrąglenia:

a) 0.012345678  do 4 cyfry
b) 0.012345678  do 5 cyfry

Rachunek zmiennopozycyjny

Sposób zapisu liczb w komputerze wymusza specjalny sposób wykonywania operacji matematycznych na tych liczach. Każda opracja (np. dodawnie, odejmowanie, mnożenie, dzielenie, pierwiastkowanie) jest wykonywana w szczególny sposób.

Dodawanie i odejmowanie

Niech:
a := maBca , b := mbBcb
Załóżmy także, że |a| > |b|. Wtedy, jeśli dodamy te dwie liczby mamy:
a + b = Bca ( ma + mb B-(ca – cb))

Zadanie 8

Wylicz sumę liczb:
a) 12,75 + 3
b) 1027 + 1
W rachunku zmiennopozycyjnym używając liczb zmiennoprzecinkowych dla długości s=1, c=6, m=5.
Wyznacz błąd względny i bezwzględny wyniku.

Jak widać przy niektórych obliczeniach w powodu niedokładoności reprezentaji można nie zauważyć wyniku dodawania, a liczba większa może być wchłonięta przez mniejszą. Aby to zaobserwować w praktycem, wykonaj poniższy program:

program niesk;

{$APPTYPE CONSOLE}

var x,y: single;

begin
x:=10000;
writeln(x);
y := x + 0.00001;
writeln(y);
if (x = y) then writeln('Liczby x i y są równe równe');
readln;
end.

Mnożenie

Niech a i b będą takie jak w przypadku definiowania dodawania.
Wtedy:
a*b = ma*mb*B(ca + cb)

Zadanie 9

Wylicz iloczyn liczb:
a) 12,75 * 2
b) 1027 * 0,1
W rachunku zmiennopozycyjnym używając liczb zmiennoprzecinkowych dla długości s=1, c=6, m=5.
Wyznacz błąd względny i bezwzględny wyniku.

Dzielenie

Niech a i b będą takie jak w przypadku definiowania dodawania.
Wtedy:
a/b = ma/mb * B(ca - cb)

Zadanie 10

Wylicz iloraz liczb:
a) 12,75 / 2
b) 1027 / 3
W rachunku zmiennopozycyjnym używając liczb zmiennoprzecinkowych dla długości s=1, c=6, m=5.
Wyznacz błąd względny i bezwzględny wyniku.

Arytmetyka fl

Ponieważ wszystkie liczby w komputerze są zaokrąglane lub obcinane, działania na takich liczbach są również obarczone pewnym błędem. Błąd ten możemy odpowiednio szacować biorąc pod uwagę błędy wszystkich interpretacji liczb oraz błędy wynikające z działań.
Działania wykonywane na liczbach zapisanych maszynowo w arytmetyce zmiennoprzecinkowej nazywamy arytmetyką fl. Każde działanie w tej arytmetyce jest obarczone pewnym błędem. Mamy:
fl(x op y) = (1 + e)
gdzie:
op  - oznacza dowolne działanie arytmetyczne (dodwania, odejmowanie, mnożenie, dzielenie)
e - oznacza błąd wywołany przez dokonanie działania arymetycznego.

Błąd każdego działania możemy zawsze oszacować z góry przez wartość, która nazywana jest dokładnością maszynową:

eps = 1/2 * B ^ (1-t)

gdzie:
B - oznacza podstawę rozwinięcia systemu w jakim zapisujemy liczby (w komputerach jest to 2)
t - liczba cyfr znaczących, które jesteśmy w stanie zapamiętać

Mając taką wiedzę można szacować błędy, które mogą powstać na skutek operacji arytmetycznych wykonywanych w komputerze.
Przykład 4
Oszacujmy błąd powstający podczas wyznaczania wartości: (a-b)(a+b), dla liczb a i b zapisanych w komputerze.
Rozwiązanie:

fl((a-b)(a+b)) = ((a-b)(1+e1)*(a+b)(1+e2))(1+e3) = (a-b)(a+b)*(1+e1)(1+e2)(1+e3) = (a-b)(a+b)*(1+e1+e2+e3)

Czyli błąd wynosi:
|e1+e2+e3| <= |e1|+|e2|+|e3| <= 3*eps


Zadanie 11

Oszacuj błąd powstający podczas wyznaczania w arytmetyce fl wartości (a2-b2). Porównaj wynik z wynikiem poprzednim. Który błąd jest mniejszy?

Zadanie 12

Oszacuj błąd powstający podczas wyznaczania w arytmetyce fl wartości :
a) (a+b)+c
b) a+(b+c)
c) (a*b)*c
d) a*(b*c)

Czy działanie dodawania w arytmetyce fl jest łączne? A działanie mnożenia?

Aby sprawdzić, że rzeczywiście, że to co liczymy nie jest bez znaczenia dla prawdziwych obliczeń wykonajmy następujące zadanie:

Zadanie 13 (zad. domowe)

Weźmy pod uwagę następujący szereg:


Napisz program liczący taką sumę najpierw "od dołu", a później "od góry". Porównaj oba wyniki.

Jakie wyniki otrzymano po wykonaniu takiego programu? Jak myślisz - dlaczego ???