20 Metody numeryczne w przykładach
Przyjmując y0 = 0.182321556, obliczamy kolejno: y, =l-5y0» 0.0884, y2 = 1/2 — 5y, «0.0580, y3 =l/3-5y2 » 0.0431,
y10 = 1/9 -5y9 » 0.0040,
yu «1/10 — 5y10 * -0.3071 (wynik błędny - wartość całki oznaczonej ujemna?).
Powodem otrzymania złego wyniku jest to, że błąd zaokrąglenia s wartości y0 jest mnożony przez -5 przy obliczaniu yx. Tak więc wartość yx jest obarczona błędem -5e. Ten błąd tworzy błąd 25s w y2, -125e w y3 itd. Nakładają się na to błędy zaokrąglenia popełniane w kolejnych krokach obliczeń, mające jednak stosunkowo małe znaczenie. Podstawiając ,y0 = ln6-ln5 popełniamy mniejszy błąd zaokrąglenia, który także powoduje duże zniekształcenie wyniku obliczeń y„ dla/'>16. Oczywiście otrzymywane wyniki zależą także od precyzji, z jaką przeprowadzano obliczenia. Dla podwójnej precyzji obliczeń (reprezentacja liczby na 8 bajtach), wyraźnie błędne wyniki występują dla i > 20.
Algorytm 2
Ten sam ciąg całek możemy wyznaczyć inaczej. Jeśli przekształcimy wzór na zależność rekurencyjną tak, żeby obliczać w kolejnych iteracjach elementy ciągu w drugą stronę, mamy:
1 1
y„-1 = -—
5n 5
Dzięki temu w każdym kroku błąd będzie dzielony przez -5. Ponieważ yn maleje gdy n rośnie, możemy przypuszczać, że dla dużych n, yn maleje wolno. Wobec tego przyjmując yl6 &yl7 i korzystając z wzoru:
1 1
*6_5-l7 V17’
otrzymujemy:
y,6 » —---y,6 =^> y,6 « — ■ - * 0.009803921.
16 5-17 5 16 16 5-17 6