MN03LAB
Własności arytmetyki zmiennoprzecinkowej
<<< Powrót do strony głównej przedmiotu Metody numeryczne
Oglądaj wskazówki i rozwiązania __SHOWALL__
Ukryj wskazówki i rozwiązania __HIDEALL__
Ćwiczenie: Równe i równiejsze
Wyjaśnij, dlaczego w arytmetyce podwójnej precyzji IEEE 754 mamy
Oczywiście, "teoretycznie" wszystkie trzy liczby powinny być sobie równe (i niezerowe).
Ćwiczenie: Szeregi zbieżne(?)
Podaj przykłady zbieżnych szeregów postaci
, których -te sumy częściowe obliczone w arytmetyce pojedynczej precyzji algorytmemsuma = 0.0; for n = 1..N suma += <math>\displaystyle a_n</math>;
będą
- ograniczone niezależnie od , albo
- numerycznie rozbieżne, to znaczy takie, że dla bardzo dużych
suma == Inf
. zachodzi
Wykonaj to samo zadanie, ale podając przykłady szeregów rozbieżnych (w arytmetyce dokładnej).
Ćwiczenie
Dla kolejnych
, wyznacz -tą sumę częściową szeregu Taylora dla funkcji wykładniczej, gdy :korzystając z algorytmu podanego w poprzednim zadaniu. Oblicz błąd względny
i bezwzględny wyznaczonego przybliżenia, w porównaniu
do wartości wyznaczonej z wykorzystaniem funkcji bibliotecznej exp()
. Powtórz następnie dla .
Czy --- zgodnie z teorią matematyczną --- sumy te dążą do wartości
. Objaśnij dokładnie, co się stało.Ćwiczenie
Już wcześniej stwierdziliśmy, że wyznaczanie
dla dużego nie jest dobrym pomysłem. Przeprowadź eksperyment numeryczny potwierdzający to stwierdzenie i objaśnij jego wyniki.Ćwiczenie
Jak wiadomo, szereg harmoniczny
jest rozbieżny. Spróbuj przewidzieć, jaki będzie efekt numerycznego wyznaczenia tej sumy w arytmetyce podwójnej precyzji przy użyciu poniższego kodu.int dlicznik; double dsuma, dstarasuma; double dskladnik; dstarasuma = 0.0; dsuma = 1.0; dlicznik = 1; while(dstarasuma != dsuma) { dskladnik = 1.0/dlicznik; dstarasuma = dsuma; dsuma += dskladnik; dlicznik++; } printf("Suma = %e. Liczba składników = %d, składnik = %e\n", dsuma, dlicznik-1, dskladnik);
Ćwiczenie: Zadanie o wyznaczaniu odwrotności bez dzielenia metodą Newtona
Należy wyznaczyć przybliżenie double
. Ile iteracji wystarczy, by osiągnąć -zadowalające przybliżenie?
Ćwiczenie
Niech
. Czy z punktu widzenia błędów w lepiej jest policzyć sumę tych liczb w kolejności od najmniejszej do największej, czy odwrotnie?Ćwiczenie
Dlaczego w algorytmie bisekcji rozwiązywania równania
, sprawdzając warunek różnych znaków w krańcach przedziału , używamy kryteriumif ( sign(f(x)) != sign(f(xl)) ) ...
a nie, matematycznie równoważnego, wyrażenia
if ( f(x)*f(lewy) < 0 ) ...