Algorytm numerycznie stabilny
Algorytm numerycznie stabilny to taki, który dla nieznacznie zmienionych danych generuje również nieznacznie zmienione wyniki.
Można to zobrazować w następujący sposób:
Dane wejściowe:
a
1
{\displaystyle a_{1}}
Rzeczywista reprezentacja danych –
r
d
(
a
1
)
{\displaystyle rd(a_{1})}
Obliczanie danych pośrednich:
f
1
(
r
d
(
a
)
)
=
a
2
{\displaystyle f_{1}(rd(a))=a_{2}}
Rzeczywista reprezentacja:
a
2
=
r
d
(
a
2
)
{\displaystyle a_{2}=rd(a_{2})}
f
2
(
r
d
(
a
)
)
=
a
3
{\displaystyle f_{2}(rd(a))=a_{3}}
Rzeczywista reprezentacja:
a
3
=
r
d
(
a
3
)
{\displaystyle a_{3}=rd(a_{3})}
…
f
n
(
r
d
(
a
)
)
=
a
n
{\displaystyle f_{n}(rd(a))=a_{n}}
Rzeczywista reprezentacja wyniku ostatecznego:
a
n
=
r
d
(
a
n
)
{\displaystyle a_{n}=rd(a_{n})}
W rezultacie, na każdym etapie obliczeń możemy potencjalnie tracić dokładność. Algorytm stabilny numerycznie to taki, który nie pozwala na sytuacje, w których kumulacja błędów prowadzi do otrzymania silnie zafałszowanego wyniku (często pozbawionego cech poprawnego rozwiązania). Może to być spowodowane na przykład utratą cyfr znaczących.
W związku z tym uzyskujemy wynik „lekko zaburzony”, co oznacza, że błąd jest jedynie efektem ograniczonej reprezentacji danych w komputerze.
== Zobacz też ==