Elementy Metod Numerycznych 2 Fixed-Point versus Floating-Point sign bit ± ±𝑚 ∗ 2𝑐 8 bit exponent c (excess 127) 23+1 bit normalized Mantissa (𝑚) 32 bit Floating-Point (IEEE): Fixed-Point: sign bit integer part fractional part • Wyznacz wszystkie dodatnie liczby zmiennopozycyjne (w systemie binarnym) dla mantysy 3-bitowej oraz cechy z zakresu −𝟏 ≤ 𝒄 ≤ 𝟐 . Błędy numeryczne • Błąd zaokrąglania: skończona dokładność liczb zmiennopozycyjnych • Błąd metody: obliczanie musi się skończyć Błędy numeryczne • Precyzja liczb jest skończona •błędy się zwiększają •celem analizy numerycznej jest uzyskanie oszacowań błędów • Rzeczywiste liczby x można za reprezentować: fl(x) = x·(1+) : zmiennopozycyjnej liczby na komputerze | fl(x)-x| = x | fl(x)-x|/x = błąd bezwzględny (lub x) błąd względny • Poprawne jeżeli |fl(x)-x |≤ 0.5 ∙ 10−𝑡 to mówimy ze fl(x) ma t poprawnych cyfr ułamkowych • Znaczące – cyfry istotne (nie-zerowe) występujące w fl(x) do pozycji t po kropce • Poprawne jeżeli |fl(x)-x |≤ 0.5 ∙ 10−𝑡 to mówimy ze fl(x) ma t poprawnych cyfr ułamkowych • Znaczące – cyfry istotne (nie-zerowe) występujące w fl(x) do pozycji t po kropce 0.0025624 ± 0.000004 0.0011995 ± 0.00003 0.002223 ± 0.00006 • Napisz program obliczający wartość tego samego wielomianu różnymi sposobami: a) (x - 1)8 b) x8 - 8x7 + 28x6 - 56x5 + 70x4 -56x3 + 28x2 - 8x + 1 c) (((((((x - 8)x + 28)x - 56)x + 70)x - 56)x + 28)x - 8)x + 1 dla x od 0.99 do 1.01 z krokiem 0.001. Błędy numeryczne • Precyzja liczb jest skończona •błędy się zwiększają •celem analizy numerycznej jest uzyskanie oszacowań błędów • Rzeczywiste liczby x można za reprezentować: fl(x) = x·(1+) : zmiennopozycyjnej liczby na komputerze | fl(x)-x| = x | fl(x)-x|/x = błąd bezwzględny (lub x) błąd względny Aproksymacja błędu maszynowego epsilon = 1.0; while (1.0 + 0.5 * epsilon) ≠ 1.0: epsilon = 0.5 * epsilon Zadanie • Dla całki prawdziwa jest zależność rekurencyjna: • Przyjmując przybliżoną wartość y0 ~ 0.182 oblicz wartości y1, y2, …, y8 stosując wzór rekurencyjny • Przyjmując przybliżoną wartość y8 ~ 0.019 oblicz wartości y0, y1, …, y7 stosując wzór rekurencyjny Matematyczne wyprowadzenie błędu • Dla liczb fl x, y, i z oblicz: fl(x*y + z2) Co możemy obliczać? • Chcemy wynik f(x) obliczać za pomocą idealnego algorytmu mamy liczbę FL x+x z błędem bezwzględnym x f(x) = f(x+x)-f(x) f’(x)x (jak f ma pochodna) błąd względny wtedy: f(x ) xf '(x ) x f(x ) f(x ) x Definicja: wskaźnik uwarunkowania wtedy: xf'(x) (x) f(x) • >>1 : problem źle uwarunkowany • mały: problem dobrze uwarunkowany Dobrze i źle uwarunkowane metody • Przykład: 99-70*sqrt(2) (0.00505) • Aproksymujemy 2 za pomocy liczby 1.4 • Mamy dwie równoważne metody obliczania: f1: 99-70*2 f1(1.4) = 1 f2: 1/(99+70*2) f2(1.4) 0.0051 Wskaźniki uwarunkowania : f1(x)= 99-70 x f1(x)= 1/(99+70 x) Dobrze i źle uwarunkowane metody • Przykład: 99-70*sqrt(2) (0.00505) • Aproksymujemy 2 za pomocy liczby 1.4 • Mamy dwie równoważne metody obliczania: f1: 99-70*2 f1(1.4) = 1 f2: 1/(99+70*2) f2(1.4) 0.0051 Wskaźniki uwarunkowania : f1(x)= 99-70 x f1(x)= 1/(99+70 x) 2 20000 2 0.5 Co się stało? f1: 99-70*2 f2: 1/(99+70*2) • Wskaźniki uwarunkowania, subtrakcja i addycja : f(x)=x-a f(x)=x+a • Wskaźniki uwarunkowania, multyplikacja i dywizja: f(x)=ax f(x)=1/x Co się stało? f1: 99-70*2 f2: 1/(99+70*2) • Wskaźniki uwarunkowania, subtrakcja i addycja : f(x)=x-a f(x)=x+a = |-x/(x-a)| = |x/(x+a)| źle uwarunkowany dla x-a≈0 źle uwarunkowany dla x+a≈0 • Wskaźniki uwarunkowania, multyplikacja i dywizja: f(x)=ax f(x)=1/x = |xa/(ax)| =1 = |xx-2/(x-1)| =1 dobrze uwarunkowany dobrze uwarunkowany • F(x) = x2 -1 • F(x) = x • F(x) = 2x2 – y • Iloczyn skalarny a=[1,2,3] i b=[4,5,-5] W przypadku funkcji wielu zmiennych wskaźnik uwarunkowania: Wartości wielomianów w punkcie x0 • Zastosuj algorytm Hornera • a) w(x) = 5x2 + 2x + 3, • b) w(x) = 7x3 + 12x2 - x + 1, • c) w(x) = -x3 + 2x2 - 4x - 2, x0 = 2, x0 = 1, x0 = -3. P(x) = a1x + a2 1.5 = a1(1.5) + a2 P(x) = a1 + a2x + a3x2 Lagrange Interpolation Lagrange Interpolation (𝑥 − 2)(𝑥 − 3)(𝑥 − 4) Lagrange Interpolation (𝑥 − 2)(𝑥 − 3)(𝑥 − 4) (1 − 2)(1 − 3)(1 − 4) Lagrange Interpolation 𝑥−2 𝑥−3 𝑥−4 𝑃1 𝑥 = 1−2 1−3 1−4 P1(x) Lagrange Interpolation 𝑥−2 𝑥−3 𝑥−4 𝑃1 𝑥 = 1−2 1−3 1−4 𝑥−1 𝑥−3 𝑥−4 𝑃2 𝑥 = 2−1 2−3 2−4 P2(x) P1(x) P1(x) Lagrange Interpolation 𝑥−2 𝑥−3 𝑥−4 𝑃1 𝑥 = 1−2 1−3 1−4 𝑥−1 𝑥−3 𝑥−4 𝑃2 𝑥 = 2−1 2−3 2−4 𝑥−1 𝑥−2 𝑥−4 𝑃3 𝑥 = 3−1 3−2 3−4 P2(x) P1(x) P1(x) P3(x) Lagrange Interpolation 𝑥−2 𝑥−3 𝑥−4 𝑃1 𝑥 = 1−2 1−3 1−4 𝑥−1 𝑥−3 𝑥−4 𝑃2 𝑥 = 2−1 2−3 2−4 𝑥−1 𝑥−2 𝑥−4 𝑃3 𝑥 = 3−1 3−2 3−4 𝑥−1 𝑥−2 𝑥−3 𝑃4 𝑥 = 4−1 4−2 4−3 P2(x) P4(x) P1(x) P1(x) P3(x) 𝑃 𝑥 𝑃 𝑥 = 0 ∙ 𝑃1 𝑥 + 1 ∙ 𝑃2 𝑥 + 1 ∙ 𝑃3 𝑥 + 1 ∙ 𝑃4 𝑥 𝑃 𝑥 𝑃 𝑥 = 0 ∙ 𝑃1 𝑥 + 1 ∙ 𝑃2 𝑥 + 1 ∙ 𝑃3 𝑥 + 1 ∙ 𝑃4 𝑥 = 13 3 2 1 3 = −3 + 𝑥 − 𝑥 + 𝑥 3 2 6 Lagrange Interpolation