Wprowadzenie do metod numerycznych. Krzysztof Patan

Podobne dokumenty
BŁĘDY PRZETWARZANIA NUMERYCZNEGO

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

Met Me ody numer yczne Wykład ykład Dr inż. Mic hał ha Łan Łan zon Instyt Ins ut Elektr Elektr echn iki echn i Elektrot Elektr echn olo echn

BŁĘDY OBLICZEŃ NUMERYCZNYCH

Liczby zmiennoprzecinkowe i błędy

Metody numeryczne i statystyka dla in»ynierów

REPREZENTACJA LICZBY, BŁĘDY, ALGORYTMY W OBLICZENIACH

METODY NUMERYCZNE. Po co wprowadzamy liczby w formacie zmiennoprzecinkowym (floating point)?

REPREZENTACJA LICZBY, BŁĘDY, ALGORYTMY W OBLICZENIACH

Metody numeryczne I. Janusz Szwabiński. Metody numeryczne I (C) 2004 Janusz Szwabiński p.1/61

Podstawy Informatyki

EMN. dr Wojtek Palubicki

Technologie Informacyjne Wykład 4

Kod IEEE754. IEEE754 (1985) - norma dotycząca zapisu binarnego liczb zmiennopozycyjnych (pojedynczej precyzji) Liczbę binarną o postaci

Dokładność obliczeń numerycznych

Przedmiot: Urządzenia techniki komputerowej Nauczyciel: Mirosław Ruciński

Zwykle liczby rzeczywiste przedstawia się w notacji naukowej :

METODY NUMERYCZNE. Wykład 2. Analiza błędów w metodach numerycznych. Met.Numer. wykład 2 1

Metody numeryczne. Janusz Szwabiński. nm_slides.tex Metody numeryczne Janusz Szwabiński 2/10/ :02 p.

SYSTEMY LICZBOWE. SYSTEMY POZYCYJNE: dziesiętny (arabski): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 rzymski: I, II, III, V, C, M

Teoretyczne Podstawy Informatyki

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 5 Liczby w komputerze

Wielkości liczbowe. Wykład z Podstaw Informatyki dla I roku BO. Piotr Mika

Obliczenia Naukowe. O arytmetyce komputerów, Czyli jak nie dać się zaskoczyć. Bartek Wilczyński 29.

Wielkości liczbowe. Wykład z Podstaw Informatyki. Piotr Mika

Dane, informacja, programy. Kodowanie danych, kompresja stratna i bezstratna

Wstęp do programowania. Reprezentacje liczb. Liczby naturalne, całkowite i rzeczywiste w układzie binarnym

Metody Obliczeniowe w Nauce i Technice

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

W wielu obliczeniach w matematyce bądź fizyce wykonanie niektórych kroków zależy od spełnienia warunku.

Wstęp do informatyki- wykład 1 Systemy liczbowe

Liczby rzeczywiste są reprezentowane w komputerze przez liczby zmiennopozycyjne. Liczbę k można przedstawid w postaci:

Pracownia Komputerowa wykład VI

Arytmetyka stało i zmiennoprzecinkowa

Systemy zapisu liczb.

Metoda znak-moduł (ZM)

Metody numeryczne. Postać zmiennoprzecinkowa liczby. dr Artur Woike. Arytmetyka zmiennoprzecinkowa. Uwarunkowanie zadania.

METODY NUMERYCZNE. Wykład 1. Wprowadzenie do metod numerycznych

Arytmetyka binarna - wykład 6

Podstawy Informatyki. Wykład 2. Reprezentacja liczb w komputerze

Wymagania edukacyjne z matematyki dla klasy pierwszej zasadniczej szkoły zawodowej

Pracownia Komputerowa wyk ad VI

Plan wynikowy z wymaganiami edukacyjnymi z matematyki w zakresie podstawowym dla klasy 1 zsz Katarzyna Szczygieł

Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze

METODY NUMERYCZNE. Wykład 1. Wprowadzenie do metod numerycznych

Kod uzupełnień do dwóch jest najczęściej stosowanym systemem zapisu liczb ujemnych wśród systemów binarnych.

Wstęp do informatyki- wykład 1 Systemy liczbowe

LICZBY ZMIENNOPRZECINKOWE

Prefiksy binarne. kibibit (Kibit) mebibit (Mibit) gibibit (Gibit) tebibit (Tibit) pebibit (Pibit) exbibit (Eibit) zebibit (Zibit) yobibit (Yibit)

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =

W jaki sposób użyć tych n bitów do reprezentacji liczb całkowitych

Reprezentacja symboli w komputerze. Liczby całkowite i zmiennoprzecinkowe. Programowanie Proceduralne 1

Reprezentacja stałoprzecinkowa. Reprezentacja zmiennoprzecinkowa zapis zmiennoprzecinkowy liczby rzeczywistej

Naturalny kod binarny (NKB)

Technologie Informacyjne

Dane, informacja, programy. Kodowanie danych, kompresja stratna i bezstratna

Kod U2 Opracował: Andrzej Nowak

System liczbowy jest zbiorem reguł określających jednolity sposób zapisu i nazewnictwa liczb.

KADD Minimalizacja funkcji

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI

Podstawy opracowania wyników pomiarów z elementami analizy niepewności pomiarowych

Wykład z Technologii Informacyjnych. Piotr Mika

Stan wysoki (H) i stan niski (L)

Dodatek do Wykładu 01: Kodowanie liczb w komputerze

Kodowanie liczb całkowitych w systemach komputerowych

Adam Korzeniewski p Katedra Systemów Multimedialnych

METODY NUMERYCZNE. Wykład 1. Wprowadzenie do metod numerycznych. Wprowadzenie do metod numerycznych. Wprowadzenie do metod numerycznych

Ciągi liczbowe wykład 3

Adam Korzeniewski p Katedra Systemów Multimedialnych

Zapis liczb binarnych ze znakiem

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Pułapki liczb zmiennoprzecinkowych. Adam Sawicki asawicki.info

Architektura komputerów Reprezentacja liczb. Kodowanie rozkazów.

Wprowadzenie do metod numerycznych Wykład 1 Przybliżenia

Próbny egzamin z matematyki dla uczniów klas II LO i III Technikum. w roku szkolnym 2012/2013

Wstęp do metod numerycznych Zagadnienia wstępne Uwarunkowanie. P. F. Góra

RÓWNANIA NIELINIOWE Maciej Patan

METODY NUMERYCZNE. Wykład 1. Wprowadzenie do metod numerycznych

Algorytmy i struktury danych. wykład 9

ARCHITEKTURA KOMPUTERÓW Liczby zmiennoprzecinkowe

Wstęp do metod numerycznych Zagadnienia wstępne Uwarunkowanie. P. F. Góra

Ciagi liczbowe wykład 4

Egzamin z Metod Numerycznych ZSI, Egzamin, Gr. A

Metody numeryczne w przykładach

Zestaw 3. - Zapis liczb binarnych ze znakiem 1

Metody numeryczne II. Reprezentacja liczb

Wstęp do metod numerycznych Zagadnienia wstępne Uwarunkowanie. P. F. Góra

Algorytm. a programowanie -

Kształcenie w zakresie podstawowym. Klasa 1

Arytmetyka liczb wymiernych w języku C++

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 2 WSTĘP DO INFORMATYKI

LICZBY ZMIENNOPRZECINKOWE

Kodowanie informacji. Kody liczbowe

Egzamin z Metod Numerycznych ZSI, Grupa: A

Zad. 3: Układ równań liniowych

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Luty 2001 Algorytmy (7) 2000/2001

Mikroinformatyka. Koprocesory arytmetyczne 8087, 80187, 80287, i387

Transkrypt:

Wprowadzenie do metod numerycznych Krzysztof Patan

Metody numeryczne Dział matematyki stosowanej Każde bardziej złożone zadanie wymaga opracowania indywidualnej metody jego rozwiązywania na maszynie cyfrowej Metody rozwiązywania tego samego problemu mogą się różnić operowaniem na pamięci operacyjnej, użyciem podwójnej precyzji podczas obliczeń, czy stosowaniem różnych warunków zatrzymania algorytmu Wybór odpowiedniej metody dla danego problemu

Dlaczego modelujemy numerycznie? szybkie i efektywne narzędzia rozwiązywania problemów uniwersalność i szeroka użyteczność często, jedyna alternatywa dla nieistniejących rozwiązań analitycznych liczne istniejące efektywne programy i biblioteki idealne do nauki obsługi maszyn cyfrowych zmieniają rozumienie metod matematycznych (redukcja skomplikowanych technik do podstawowych operacji arytmetycznych)

Zadanie algorytmiczne

Rozwiązanie algorytmiczne

Algorytm definicja

Algorytm analiza

Definicje Metody numeryczne rozwiązywanie zadań matematycznych za pomocą skończonej liczby działań arytmetycznych i logicznych Zadanie numeryczne matematyczny opis powiązań pomiędzy danymi wejściowymi i wyjściowymi Algorytm numeryczny skończona sekwencja poprawnie sformułowanych operacji przekształcających dane wejściowe i wyjściowe operacja działanie arytmetyczne, logiczne lub odwołanie do istniejących algorytmów

Źródła błędów

1 Błędy pomiarowe, np. prędkość światła w próżni wynosi c = (2.997925 + ε) 10 8 m/sec, ε 3 10 6 2 Modelowanie matematyczne, np. najprostszy model przyrostu populacji N(t) = N 0 e kt jest prawidłowy tylko przy założeniu, że posiada nieograniczone zasoby 3 Błędy grube i pomyłki, np. błędy programistyczne 4 Błędy maszynowe, np. błędy zaokrąglania lub odrzucania w arytmetyce zmiennoprzecinkowej 5 Błędy przybliżania matematycznego, np. obliczając całkę 1 ( ) 1 I = e x2 dx 1 + x 2 + x4 2! + x6 3! + x8 dx 4! 0 0

Błąd względny i bezwzględny Błąd bezwzględny gdzie: e abs = α ˆα α wartość dokładna ˆα wartość przybliżona (obliczona) Błąd względny e rel = α ˆα α lub e rel = α ˆα α 100% Wniosek: α jest najczęściej niedostępna a priori, stąd e rel = α ˆα α

Przykład Rozważmy zadanie pomiaru długości mostu oraz nita użytego do jego budowy. W wyniku pomiaru otrzymano odpowiednio 9999 i 9 cm. Jeżeli prawdziwe wartości to 10000 oraz 10 cm, policzyć (a) błąd bezwzględny i (b) procentowy błąd względny w każdym z przypadków. a) Błąd bezwzględny dla długości mostu wynosi oraz dla długości nita e m abs = 10000 9999 = 1 cm e n abs = 10 9 = 1 cm b) Błąd względny dla długości mostu wynosi e m rel = 1 100% = 0.01% 10000 oraz dla nita e n rel = 1 100% = 10% 10

Cyfrowy zapis liczb całkowitych baza 10 konwersja baza 2 baza 8 baza 16 1 1=2 0 00000001 001 01 8 8=2 3 00001000 010 08 10 8 + 2=2 3 + 2 1 00001010 012 0C 27 16 + 8 + 2 + 1=2 4 + 2 3 + 2 1 00011010 033 1B 67 64 + 2 + 1=2 6 + 2 1 + 2 0 01000011 103 43 202 128 + 64 + 8 + 2=2 8 + 2 7 + 2 3 + 2 1 11001010 312 CA konwersja do systemu ósemkowego 27 (10) 24 + 3 = 3 8 1 + 3 8 0 33 (8) konwersja do systemu szestnastkowego 27 (10) 16 + 11 = 1 16 1 + 11 16 0 1B (16)

Reprezentacja Zapis stałopozycyjny n l = s e i 2 i (1) i=0 gdzie s { 1, 1} znak liczby, e i {0, 1} cyfry reprezentacji binarnej (e n 0, gdy l 0) s 0... 0 e n e n 1... e 0 znak d d bitów 1 Zakres liczby I = [ 2 d, 2 d 1] (2) Działania dokładne 1 dodawanie 2 odejmowanie 3 mnożenie

Przykład Określić zakres liczb całkowitych przy, które mogą być reprezentowane na 16-bitowym komputerze Pierwszy bit przechowuje znak. Pozostałe 15 bitów może służyć do przechowania liczb binarnych od 0 do 111111111111111. Stąd, górna granica wynosi 2 14 + 2 13 + + 2 1 + 2 0 = 2 15 1 = 32767 W ten sposób zakres to [-32 767,32 767] Uwaga! Istnieje nadmiarowość dla wartości zero, tj. 0000000000000000 oraz 1000000000000000, dlatego druga z kombinacji zazwyczaj jest używana do reprezentacji dodatkowej liczby ujemnej: 32768, stąd prawdziwy zakres jest od 32768 do 32767

Zapis zmiennopozycyjny Reprezentacja x = s 2 c m (3) gdzie s { 1, 1} znak liczby, c cecha liczby (liczba całkowita reprezentacja stałopozycyjna), m mantysa liczby ( 1 2 m < 1) s s c e d t 2... e 1 e 0 e 1 e 2... e t znak d t bitów cechy t bitów mantysy Mantysa e 1 = 1, e i = 0 lub 1 dla i > 1 dla t bitów t decyduje o dokładności reprezentacji Zakres liczby m min 2 c min x m max 2 cmax 1 2 2d t 1 x 2t 1 2 2 t 2 2d t 1 1

Przykład Podać wartość liczby o reprezentacji zmiennoprzecinkowej 10101101 wiedząc, że dokładność reprezentacji t = 4 Pierwszy bit określa znak liczby 1 liczba ujemna Cztery ostatnie bity to mantysa, stąd m = 1 2 1 + 1 2 2 + 0 2 3 + 1 2 4 = 1 2 + 1 4 + 1 16 = 13 16 Bity od drugiego do czwartego to cecha, ale bit drugi to znak, stąd c = +1 2 1 + 0 2 0 = 2 Ostatecznie x = m 2 c = 13 16 22 = 13 4 = 3, 25

Przykład Podać reprezentację zmiennopozycyjną liczb 0, 2 i 6, 25 dla d = 7 i t = 4 Liczbę 0, 2 można przybliżyć liczbą 0, 1875, która ma reprezentację 00101100 W tym przypadku błąd bezwzględny e abs = 0, 2 0.1875 = 0.0125 Liczbę 6, 25 można przybliżyć liczbą 6, 5, która ma reprezentację 10111101 W tym przypadku błąd bezwzględny e abs = 6, 25 + 6, 5 = 0, 25 Bezwzględny błąd reprezentacji jest silnie zależy od t i od wielkości liczby!

Cyfrowy zapis liczb zmiennoprzecinkowych Standardy IEEE formatów liczb zmiennoprzecinkowych Precyzja Sign Bity mantysy Bity cechy Suma Single 1 23 8 32 Double 1 52 11 64 Quadruple 1 113 14 128 t bitów decyduje o precyzji reprezentacji d t bitów decyduje o zakresie reprezentacji

Zbiór liczb zmiennoprzecinkowych Rzeczywiste Zakres Nieskończony: istnieją dowolnie duże i dowolnie małe liczby rzeczywiste. Zmiennoprzecinkowe Skończony: liczba bitów cechy ogranicza amplitudę liczb zmiennoprzecinkowych. Precyzja Nieskończona: jest nieskończenie wiele liczb rzeczywistych pomiędzy dwoma dowolnymi l. rzeczywistymi. Skończona: istnieje skończona liczba (czasami nawet równa zero) liczb zmiennoprzecinkowych pomiędzy dwoma dowolnymi l. zmiennoprzecinkowymi. Wniosek: Linia liczb zmiennoprzecinkowych jest podzbiorem linii liczb rzeczywistych

Arytmetyka zmiennopozycyjna Wyniki operacji arytmetycznych pomiędzy dwoma liczbami zmiennoprzecinkowymi: najczęściej nie może być reprezentowana przez inną wartość zmiennoprzecinkową, ma ograniczony zakres i precyzję. Reprezentacja zmiennopozycyjna liczby x x = x(1 ε) gdzie ε jest błędem względnym reprezentacji W arytmetyce zmiennopozycyjnej fl(a op b) = a op b(1 + ε op ) gdzie f l jest operacją zmiannoprzecinkową (ang. floating point operation), ε op jest błędem względnym działania w tej arytmetyce

Przykłady 1. fl(a + b) = a(1 + ε a ) + b(1 + ε b ) = (a + b)(1 + ε d ) gdzie ε d = aε a + bε b a + b 2. fl(a b) = a(1 + ε a ) b(1 + ε b ) = a b(1 + ε m ) gdzie ε m = ε a + ε b + ε a ε b 3. fl((a b)(a + b)) = ((a b)(1 + ε o )(a + b)(1 + ε d )) (1 + ε m ) = (a b)(a + b)(1 + ε o )(1 + ε d )(1 + ε m ) = (a b)(a + b)(1 + ε h ) gdzie ε h = ε o + ε d + ε m + ε o ε d + ε o ε m + ε d ε m + ε o ε d ε m

Przykłady cd 4. fl(a 2 b 2 ) = (a a(1 + ε ma ) b b(1 + ε mb ))(1 + ε o ) ( = (a 2 + b 2 ) 1 + a2 ε ma b 2 ) ε mb a 2 b 2 (1 + ε o ) = (a 2 + b 2 )(1 + ε r ) ( gdzie ε r = ε o + (1 + ε o ) 1 + a2 ε ma b 2 ) ε mb a 2 b 2

Przykład Błędy zaokrąglenia w obliczeniach Obliczyć r = x 2 y 2, gdzie x = 4.005 oraz y = 4.004 z 4-cyfrową precyzją Przez bezpośrednie podstawienie mamy r = x 2 y 2 = 16.04(0025) 16.03(2016) = 0.01 Prawdziwa wartość r to 0.008009. Zatem błąd względny wynosi e rel = 0.008009 0.01 0.008009 100% = 24.859%!!! Z drugiej strony, stosując znany wzór skróconego mnożenia r = (x y)(x + y) mamy: r = (4.005 4.004)(4.004 + 4.005) = 0.001 8.009 = 0.008009 Wynik jest dokładny i błąd względny e rel = 0%!!!

Podsumowanie ograniczona precyzja prowadzi do zaokrągleń w pojedynczych kalkulacjach efekty zaokrągleń akumulują się powoli błędy zaokrągleń są nieuniknione, sposobem jest tworzenie lepszych algorytmów odejmowanie niemal równych wartości prowadzi do poważnych strat precyzji

Błędy kasowania Dla dodawania: Błędy w będą duże kiedy a b lub a b Przykład c = a + b i c = a b Rozważmy c = a + b z a = x.xxx... 10 0, b = y.yyy... 10 8 oraz z = x + y < 10. osiągalna precyzja {}}{ x.xxx xxxx xxxx xxxx + 0.000 0000 yyyy yyyy yyyy yyyy = x.xxx xxxx zzzz zzzz yyyy yyyy }{{} stracone cyfry

Dla odejmowania: Błąd w c = a b będzie znaczny dla a b Przykład Wyznaczyć c = a b w arytmetyce zmiennoprzecinkowej dla a = x.xxxxxxxxxxxxxx1 oraz b = x.xxxxxxxxxxxxxxx0 osiągalna precyzja {}}{ x.xxx xxxx xxxx xxx1 x.xxx xxxx xxxx xxx0 = 0.000 0000 0000 0001 } uuuu uuuu {{ uuuu uuu } nieokreślone cyfry = 1.uuu uuuu uuuu uuuu 10 15 Wynik posiada tylko jedną (!) cyfrę znaczącą.

Podsumowanie występują w dodawaniu: a + b kiedy a b lub a b występują w odejmowaniu: a b kiedy a b ogromne błędy w pojedynczych operacjach, a nie powolna akumulacja często mogą zostać zminimalizowane przez algebraiczne przekształcenie wrażliwej formuły

Precyzja maszyny Amplituda błędów zaokrąglania jest określona przez tzw. precyzję maszyny ε m, tzn. 1 + δ = 1, δ ε m Dla podwójnej precyzji (64 bity) ε m = 2.2204 10 16 Wyznaczanie precyzji maszyny eps=1 do if (eps+1 <= 1) exit eps = eps/2 end do eps=2*eps Porównywanie liczb zmiennoprzecinkowych if x==y % błędnie!!! if abs(x-y) < eps

Błąd obcięcia Rozważmy rozwinięcie w szereg sin(x) sin(x) = x x3 3! + x5 5!... Dla małych x, tylko kilka wyrazów szeregu jest potrzebnych do dokładnego przybliżenia sin(x). Wyrazy wyższego rzędu są obcinane (ang. truncated) f true = f sum + błąd obcięcia Rozmiar błędu obcięcia zależy od x oraz liczby wyrazów włączonych w f sum.

Uwarunkowanie zadania algorytmicznego Niech y = f(x) y = f(x + x) y Zadanie jest źle uwarunkowane jeśli y y x >> x Jeżeli niewielka zmiana parametrów problemu wpływa znacząco na jego rozwiązanie to problem jest źle uwarunkowany Zadanie jest stabilne jeśli dla każdedo x D oraz lim f(x + x) = f(x) x 0 x + x D

Przykład Rozważmy liniowe układy równań { 2x + 6y = 8 2x + 6, 000000001y = 8, 000000001 { 2x + 6y = 8 2x + 5, 999999999y = 8, 000000002 x = 1, y = 1 x = 10, y = 2 dla rozwiązania 9 1 = 9 i 3 1 = 3 dla parametrów 0, 000000002 6, 000000001 3 10 10 i Problem jest źle uwarunkowany (źle postawiony) 0, 000000001 1, 3 10 10 8, 000000001