Przenoszenie się błędów w obliczeniach numerycznych
Cel ćwiczenia
4. Powtórzyć obliczenie przybliżonej wartości pochodnej dla funkcji z punktu 3 połowiąc krok róż-
niczkowania. Na uzyskanych danych wykonać ekstrapolację Richardsona. Obliczenia wykonać
Utrwalenie i praktyczne sprawdzenie wiedzy n/t błędów reprezentacji, błędów zaokrągleń, błędów
dwukrotnie, zakładając taki krok początkowy, by w pierwszym przypadku wszystkie użyte dłu-
obcięcia i ich przenoszenia się w obliczeniach numerycznych. Praktyczne sprawdzenie skuteczności
gości kroku były większe, a w drugim mniejsze od wyznaczonego kroku optymalnego. Następnie
ekstrapolacji iterowanej Richardsona zastosowanej do zmniejszenia błędu obcięcia w zadaniu różnicz-powtórzyć eksperyment, zakładając większą (o 2–3 cyfry) dokładność reprezentacji wyników po-
kowania numerycznego.
średnich. Jako kryterium zatrzymania obliczeń przyjąć osiągnięcie przez ostatnią różnicę w obli-
Program ćwiczenia
czanym wierszu wartości, co do modułu 10 t razy mniejszej od ostatnio obliczonego przybliżenia, gdzie t jest długością mantysy użytą do obliczeń ilorazu różnicowego, lub przekroczenie 5 kroków
• prześledzenie wpływu wyboru jednej z równoważnych matematycznie postaci wyrażenia na do-ekstrapolacji. Całe postępowanie przeprowadzić powtórnie prowadząc obliczenia ilorazu różnico-
kładność wyniku,
wego z inną długością mantysy. Porównać wyniki, zestawić je z wynikami poprzedniego punktu
• analiza optymalnej długości kroku w różniczkowaniu numerycznym,
i wartością dokładną (można posłużyć się plikiem przykładowym rich.sc - UWAGA: w pliku
• zastosowanie ekstrapolacji Richardsona do poprawiania dokładności różniczkowania numerycznego tym stosowany jest inny wzór różniczkowania numerycznego, a w konsekwencji inne współczyni wpływ dokładności obliczeń na użyteczność tej metody.
niki w schemacie ekstrapolacji).
Instrukcja wykonawcza
Sprawozdanie powinno zawierać
Ćwiczenie wykonuje się przy pomocy programu SC Fix (plik wykonywalny SCFIX2P.EXE), który
• tabelaryczne i graficzne zestawienie wyników obliczeń z punktu 2. dla nieprzekształconego i prze-umożliwia ustawienie długości mantysy, z jaką są reprezentowane zmienne i wyniki pośrednie. Obsługę kształconego wyrażenia,
programu opisano oddzielnie.
• teoretyczne wyprowadzenie zależności optymalnej długości kroku różniczkowania od dokładności 1. Dla zapoznania się z obsługą programu
użytej reprezentacji zmiennoprzecinkowej dla badanej w ćwiczeniu funkcji oraz tabelaryczne i gra-
SC Fix wykonać kilka prostych eksperymentów nume-
rycznych, np.: Dla kilku różnych dokładności (t.j. długości mantysy) zaobserwować, dla jakich
ficzne zestawienie wyników obliczeń wykonanych z różnym krokiem i dokładnością (pożądany
niewielkich liczb naturalnych n, których odwrotność jest ułamkiem okresowym, dzięki zaokrą-
wykres błędu w funkcji długości kroku),
gleniu zachodzi f l( n ∗ f l(1 /n)) = 1.
• wyniki stosowania ekstrapolacji Richardsona w postaci kompletnych tablic i zestawienie (tabela-2. Dla podanego przez prowadzącego wyrażenia, sporządzić zestawienie wyników jego obliczania dla
ryczne) uzyskanych wyników z wynikami punktu 3.,
wskazanych wartości argumentów i różnych dokładności obliczeń (różnej długości mantysy – np.
• uwagi i wnioski.
3–, 6–, 9–, 12–, 15– cyfrowej). Przekształcić to wyrażenie tak, aby zmniejszyć wpływ błędów
Wymagana wiedza teoretyczna
zaokrągleń na wynik. Powtórzyć obliczenia dla przekształconego wyrażenia. Porównać błędy
wyników otrzymanych w obu przypadkach (w razie nieznajomości dokładnego wyniku, przyjąć
• pojęcia błędu bezwzględnego i względnego,
za taki wartość przekształconego wyrażenia obliczoną z maksymalną t.j. 17–cyfrową mantysą).
• wzory na przenoszenie się błędów (przypadek ogólny i przypadki szczególne dla podstawowych 3. Dla wskazanej przez prowadzącego funkcji i wartości argumentu wyznaczyć teoretycznie opty-operacji matematycznych),
malną długość kroku dla zadania numerycznego wyznaczania pochodnej przy pomocy wzoru
• reprezentacja zmiennoprzecinkowa liczb, błędy zaokrąglenia i ucięcia,
z różnicą centralną (założyć, że jedynym źródłem błędu przy obliczaniu wartości funkcji stan-
• zjawisko utraty cyfr znaczących,
dardowych są zaokrąglenia). Sprawdzić otrzymany wynik, przeprowadzając obliczenia z trzema
• metody różniczkowania numerycznego,
długościami mantysy i długością kroku zmieniającą się od 0 . 1 do 10 −t, gdzie t jest aktualną
• błąd obcięcia dla najprostszych metod różniczkowania numerycznego: wykorzystującej różnicę długością mantysy (najlepiej, aby długości kroku tworzyły ciąg geometryczny o ilorazie 0 . 1 ).
centralną i opartej na wykorzystaniu zwykłego ilorazu różnicowego (z różnicą progresywną),
• zależność błędu obcięcia i błędu zaokrąglenia od kroku obliczeń w różniczkowaniu numerycznym, definiuje funkcję dwuargumentową:
• istota i właściwości ekstrapolacji iterowanej Richardsona; zastosowanie ekstrapolacji Richardsona ( x, y) 7→ f ( x, y) = x cos y
do różniczkowania numerycznego.
Po zdefiniowaniu funkcji wyświetlany jest wynik 0. Definicji funkcji nie wolno zagnieżdżać.
Literatura
UWAGA: Mamy tu do czynienia w istocie z makrodefinicją – ewentualny błąd składniowy w definicji
[1] Germund Dahlquist, ˚
Ake Björck. Metody numeryczne, strony 10–19, 27–55, 257–268. PWN Warszawa,
ujawni się dopiero przy próbie wywołania zdefiniowanej funkcji.
1983.
Wartości wyrażeń wprowadzonych w jednej linii są wyświetlane (w miarę możliwości) także w jednej
[2] David Kincaid, Ward Cheney. Analiza numeryczna, strony 33–62, 448–457. WNT Warszawa, 2006.
linii. Dostęp do funkcji obliczeniowych możliwy jest po zaznaczeniu bloku w standardowy dla programu
[3] Anthony Ralston. Wstęp do analizy numerycznej, strony 13–25, 81–85. PWN Warszawa, 1983.
[4] Zenon Fortuna, Bohdan Macukow, Janusz Wąsowski. Metody numeryczne, strony 11–23, 172–175. WNT
systemu Windows sposób i wciśnięciu prawego klawisza myszy. W menu kontekstowym otwartym
Warszawa, 1995.
w ten sposób należy wybrać „Oblicz”. Można też zamiast menu kontekstowym posłużyć się ostatnią
[5] Jerzy Krupka, Roman Z. Morawski, Leszek J. Opalski. Metody numeryczne dla studentów elektroniki i tech-ikoną w pasku narzędziowym. Jeśli zaznaczono blok wewnątrz tekstu to zostanie on skopiowany na
nik informacyjnych, strony 22–43, 120–124. Oficyna Wydawnicza Politechniki Warszawskiej, Warszawa, koniec wraz z wynikiem, jeśli natomiast zaznaczony blok znajdował się na końcu tekstu to sam wynik 1997.
zostanie dopisany bezpośrednio za zaznaczonym fragmentem. Wynik obliczenia wyrażeń zakończonych
Opis programu
dwukropkiem zamiast średnika lub końca wiersza nie jest wyświetlany. Możliwe jest otwarcie wielu okien SC Fix wykorzystywanego w ćwiczeniu
edycyjnych. Zmienne i funkcje (makrodefinicje) są lokalne w oknie. Zapisanie zawartości okna na dysk Program SC Fix (plik wykonywalny SCFIXW2P.EXE) jest rodzajem kalkulatora o wybieranej w za-dotyczy tylko tekstu – zarówno wartości zmiennych, jak treść funkcji (makrodefinicji) są tracone po kresie 1 − 17 cyfr długości mantysy. Program oblicza wyrażenia matematyczne zapisane w standardowy zamknięciu okna, choć na ogół można je odtworzyć na podstawie zapisanego tekstu zaznaczając
sposób, oddzielone średnikami lub znakiem nowej linii i zaznaczone jako blok. Nietypowo traktowany i obliczając odpowiednie fragmenty we właściwej kolejności.
jest jedynie operator przypisania „=”. Podobnie jak w językach C i C++ zwraca on wynik równy
UWAGA: Zaleca się zapisywać zawartość okna edycyjnego na dysk po zakończeniu każdego etapu prawemu argumentowi, tak więc zapis
obliczeń ponieważ program nie jest w pełni zabezpieczony przed „załamaniem” w wypadku próby
a = b = sin(pi/3)
obliczania błędnie zapisanych wyrażeń oraz przepełnienia lub dzielenia przez zero, choć jego stabilność jest porównywalna z wieloma innymi programami pracującymi w środowisku Windows.
jest poprawny i spowoduje przypisanie obliczonej wartości sin π zarówno zmiennej b jak i a. Jeśli któraś 3
ze zmiennych nie istnieje, zostanie utworzona. Obok stałej „pi” równej π wstępnie zdefiniowano „e”
– podstawę logarytmów naturalnych. Należy uważać, gdyż nie są one zabezpieczone przed zapisem
i można im przypisać np. przez pomyłkę inną wartość. Zdefiniowano wstępnie następujące funkcje:
sqrt, sin, cos, tan, asin, acos, atan, sinh, cosh, tanh, exp, ln, log, pow, round, round2,
calcprec.
Funkcja pow oblicza potęgę o dowolnym wykładniku, round zaokrągla pierwszy argument do podanej
w drugim argumencie długości mantysy (zaokrąglenie „bankierskie”), round2 dokonuje zaokrąglenia
tak, by wszystkie cyfry wyniku były poprawne przy założeniu, że drugi argument zawiera oszacowanie błędu przed zaokrągleniem. Funkcja calcprec służy do sterowania dokładnością obliczeń – ustawia
ilość cyfr mantysy, do jakiej zaokrąglane są wyniki pośrednie w trakcie obliczeń na wartość swego argumentu i zwraca poprzednią wartość tego parametru. Program umożliwia definiowanie funkcji przez użytkownika. Argumenty oznaczane są w definicji znakiem $ z cyfrą wskazującą numer argumentu,
stąd maksymalną liczbą argumentów takiej funkcji jest 9; nie jest sprawdzana poprawność wywołania.
Składnię definicji ilustruje przykład:
f{$1*cos($2)}