Wszechnica Wszechwiedzy - Baner

Błędy obliczeń numerycznych – rodzaje, źródła i ocena dokładności

Wyniki uzyskiwane za pomocą metod numerycznych są najczęściej wynikami przybliżonymi. Różnią się one od wartości dokładnych wskutek niedokładności danych, uproszczeń modelu matematycznego, zastosowania przybliżonego algorytmu oraz ograniczonej precyzji obliczeń komputerowych.

Sam fakt, że wynik jest przybliżony, nie oznacza jednak, że jest on niewiarygodny. Najważniejsze jest określenie wielkości błędu, rozpoznanie jego źródła oraz sprawdzenie, czy otrzymana dokładność jest wystarczająca do danego zastosowania.

Analiza błędów jest jednym z podstawowych zagadnień metod numerycznych. Pozwala ocenić zarówno jakość danych i modelu, jak i zbieżność oraz stabilność zastosowanego algorytmu.

Wartość dokładna i wartość przybliżona

Załóżmy, że dokładna wartość pewnej wielkości wynosi \(x\), natomiast w wyniku pomiaru lub obliczeń otrzymano wartość przybliżoną \(\widetilde{x}\).

Możemy wówczas zapisać:

\[x=\widetilde{x}+e,\]

gdzie \(e\) oznacza błąd ze znakiem:

\[e=x-\widetilde{x}.\]

Jeżeli \(\widetilde{x}x\), błąd ma znak ujemny. W praktyce częściej interesuje nas jednak sama wielkość odchylenia, niezależnie od jego kierunku. Z tego powodu stosuje się błąd bezwzględny.

Błąd bezwzględny

Błąd bezwzględny jest modułem różnicy między wartością dokładną i przybliżoną:

\[\Delta x=\left|x-\widetilde{x}\right|.\]

Błąd bezwzględny ma tę samą jednostkę co analizowana wielkość. Jeżeli na przykład dokładna długość wynosi \(10\ \text{cm}\), a wynik pomiaru jest równy \(9{,}8\ \text{cm}\), to:

\[\Delta x=|10-9{,}8|=0{,}2\ \text{cm}.\]

Wynik można zapisać w postaci:

\[x\approx 9{,}8\ \text{cm},\qquad \Delta x=0{,}2\ \text{cm}.\]

Jeżeli nie znamy wartości dokładnej, często dysponujemy jedynie oszacowaniem maksymalnego błędu. Zapis

\[x=\widetilde{x}\pm\Delta x\]

oznacza wówczas, że poszukiwana wartość powinna należeć do przedziału:

\[x\in[\widetilde{x}-\Delta x,\ \widetilde{x}+\Delta x].\]

Błąd względny i procentowy

Sam błąd bezwzględny nie zawsze pozwala właściwie ocenić dokładność wyniku. Odchylenie równe \(0{,}1\) ma niewielkie znaczenie dla liczby \(1000\), ale jest bardzo duże w porównaniu z liczbą \(0{,}2\).

Błąd względny określa stosunek błędu bezwzględnego do modułu wartości dokładnej:

\[\delta x=\frac{\Delta x}{|x|}=\frac{|x-\widetilde{x}|}{|x|},\qquad x\ne 0.\]

Dla wcześniejszego przykładu:

\[\delta x=\frac{0{,}2}{10}=0{,}02.\]

Błąd procentowy otrzymujemy po pomnożeniu błędu względnego przez \(100\%\):

\[\delta_{\%}x=100\%\cdot\delta x.\]

W rozpatrywanym przypadku:

\[\delta_{\%}x=2\%.\]

Jeżeli wartość dokładna nie jest znana, w mianowniku stosuje się niekiedy wartość przybliżoną:

\[\widetilde{\delta}x=\frac{\Delta x}{|\widetilde{x}|}.\]

Należy wtedy wyraźnie zaznaczyć, że jest to jedynie oszacowanie błędu względnego.

Infografika pokazująca błąd bezwzględny jako odległość między wartością dokładną i przybliżoną oraz błąd względny uwzględniający skalę wartości
Błąd bezwzględny określa różnicę między wartością dokładną i przybliżoną, natomiast błąd względny odnosi tę różnicę do wartości dokładnej.

Dokładność i precyzja

Pojęcia dokładności i precyzji bywają używane zamiennie, ale nie oznaczają tego samego.

Seria pomiarów może być bardzo precyzyjna, jeżeli otrzymane wartości są do siebie podobne, ale jednocześnie niedokładna, jeżeli wszystkie są przesunięte względem wartości właściwej.

Podobnie zapisanie wyniku z wieloma cyframi po przecinku nie gwarantuje jego dokładności. Jeżeli dane wejściowe są znane jedynie z dokładnością do dwóch cyfr znaczących, podawanie kilkunastu cyfr wyniku nie zwiększa rzeczywistej ilości informacji.

Główne źródła błędów obliczeń numerycznych

Błąd końcowego wyniku może powstawać na różnych etapach rozwiązywania problemu. Nie wszystkie błędy mają charakter czysto obliczeniowy. Część z nich pojawia się jeszcze przed rozpoczęciem działania algorytmu.

Infografika przedstawiająca błędy danych wejściowych, błędy modelu, metody, obcięcia i zaokrągleń jako główne źródła niedokładności obliczeń numerycznych
Na dokładność wyniku wpływają błędy danych wejściowych, modelu matematycznego, zastosowanej metody, obcięcia oraz zaokrągleń.

Błędy danych wejściowych

Dane używane w obliczeniach mogą pochodzić z pomiarów, obserwacji, wcześniejszych obliczeń albo tablic. Ich wartości są najczęściej znane tylko z ograniczoną dokładnością.

Źródłem błędu może być między innymi:

Nawet doskonały algorytm nie może na ogół odtworzyć informacji, której nie było w danych wejściowych.

Błędy modelu matematycznego

Model matematyczny jest zawsze uproszczonym opisem rzeczywistości. Podczas jego tworzenia pomija się zjawiska uznane za mniej istotne albo zastępuje skomplikowane zależności prostszymi równaniami.

Przykładowo w modelu ruchu można pominąć opór powietrza, w analizie konstrukcji przyjąć idealną sztywność podpór, a w modelu cieplnym założyć stałość parametrów materiałowych.

Jeżeli model nie opisuje badanego zjawiska wystarczająco dobrze, zwiększanie dokładności obliczeń numerycznych nie usunie błędu modelowania.

Błędy metody

Metoda numeryczna często zastępuje dokładny problem jego prostszym odpowiednikiem. Funkcję można przybliżyć wielomianem, pochodną ilorazem różnicowym, całkę sumą pól, a równanie różniczkowe układem zależności algebraicznych.

Różnica między rozwiązaniem problemu oryginalnego i rozwiązaniem problemu przybliżonego jest nazywana błędem metody lub błędem dyskretyzacji.

Przykładem może być przybliżenie pochodnej wzorem:

\[f'(x)\approx\frac{f(x+h)-f(x)}{h}.\]

Dla skończonego kroku \(h\) prawa strona nie jest na ogół dokładnie równa pochodnej. Błąd maleje zwykle wraz ze zmniejszaniem kroku, ale tylko do momentu, w którym istotne stają się błędy zaokrągleń.

Błędy obcięcia

Błąd obcięcia powstaje wtedy, gdy proces wymagający teoretycznie nieskończonej liczby składników lub iteracji zostaje przerwany po skończonej liczbie kroków.

Przykładowo funkcję wykładniczą można przedstawić za pomocą szeregu:

\[e^x=1+x+\frac{x^2}{2!}+\frac{x^3}{3!}+\ldots\]

W obliczeniach wykorzystuje się jednak jedynie skończoną liczbę początkowych składników:

\[e^x\approx 1+x+\frac{x^2}{2!}+\ldots+\frac{x^n}{n!}.\]

Odrzucona część szeregu stanowi źródło błędu obcięcia.

Błędy zaokrągleń

Komputer zapisuje liczby za pomocą skończonej liczby bitów. Nie wszystkie liczby rzeczywiste można więc przedstawić dokładnie. Wiele wartości zostaje zastąpionych najbliższą liczbą możliwą do zapisania.

Błędy te są szczegółowo związane z arytmetyką zmiennoprzecinkową. Przykładem jest zapis liczb \(0{,}1\) i \(0{,}2\), które mają nieskończone rozwinięcia w systemie binarnym.

Każde kolejne działanie może wprowadzać nowy błąd zaokrąglenia. Przy dużej liczbie operacji błędy mogą się kumulować lub wzajemnie częściowo znosić.

Propagacja błędów

Wielkości wykorzystywane w obliczeniach są często obarczone błędami. Jeżeli wynik zależy od jednej lub wielu takich wielkości, ich niedokładności wpływają na niedokładność wyniku końcowego. Zjawisko to nazywa się propagacją błędów.

Dodawanie i odejmowanie

Niech:

\[z=x\pm y.\]

Jeżeli maksymalne błędy bezwzględne argumentów wynoszą \(\Delta x\) i \(\Delta y\), to maksymalny błąd bezwzględny wyniku można oszacować jako:

\[\Delta z\leq\Delta x+\Delta y.\]

Przy odejmowaniu błędy bezwzględne również się sumują. Szczególnie niebezpieczne jest odejmowanie liczb prawie równych, ponieważ mały wynik może mieć bardzo duży błąd względny.

Mnożenie i dzielenie

Dla iloczynu:

\[z=xy\]

w przybliżeniu pierwszego rzędu otrzymujemy:

\[\delta z\approx\delta x+\delta y.\]

Podobna zależność obowiązuje dla ilorazu:

\[z=\frac{x}{y},\qquad \delta z\approx\delta x+\delta y.\]

W przypadku szacowania najgorszego możliwego błędu względnego dodaje się wartości bezwzględne poszczególnych wkładów.

Potęgowanie

Jeżeli:

\[z=x^\alpha,\]

to dla niewielkich błędów:

\[\delta z\approx|\alpha|\delta x.\]

Przykładowo względny błąd kwadratu jest w przybliżeniu dwukrotnie większy od względnego błędu podstawy:

\[\delta(x^2)\approx 2\delta x.\]

Propagacja błędów metodą różniczki zupełnej

Ogólny sposób szacowania wpływu niewielkich błędów danych na wynik opiera się na rachunku różniczkowym. Jeżeli:

\[y=f(x_1,x_2,\ldots,x_n),\]

to różniczka zupełna funkcji ma postać:

\[dy=\frac{\partial f}{\partial x_1}dx_1+\frac{\partial f}{\partial x_2}dx_2+\ldots+\frac{\partial f}{\partial x_n}dx_n.\]

Pochodna cząstkowa

\[\frac{\partial f}{\partial x_i}\]

określa wrażliwość wyniku na zmianę zmiennej \(x_i\), gdy pozostałe zmienne są traktowane jako stałe. Podstawowe znaczenie pochodnej zostało omówione w artykule Pochodna funkcji.

Maksymalny błąd bezwzględny

Jeżeli błędy argumentów są niewielkie, można zastąpić różniczki oszacowaniami błędów. W najgorszym możliwym przypadku przyjmujemy sumę modułów wszystkich składników:

\[\Delta y\approx \left|\frac{\partial f}{\partial x_1}\right|\Delta x_1+ \left|\frac{\partial f}{\partial x_2}\right|\Delta x_2+ \ldots+ \left|\frac{\partial f}{\partial x_n}\right|\Delta x_n.\]

Pochodne cząstkowe oblicza się dla przyjętych wartości argumentów. Moduły zapewniają, że poszczególne wkłady nie znoszą się podczas wyznaczania maksymalnego możliwego błędu.

Błąd względny funkcji wielu zmiennych

Po podzieleniu oszacowania przez moduł wartości funkcji otrzymujemy przybliżony błąd względny:

\[\delta y\approx \frac{1}{|f|} \sum_{i=1}^{n} \left|\frac{\partial f}{\partial x_i}\right| \Delta x_i.\]

Jeżeli błędy argumentów zapisujemy jako błędy względne:

\[\Delta x_i=|x_i|\delta x_i,\]

otrzymujemy:

\[\delta y\approx \sum_{i=1}^{n} \left| \frac{x_i}{f} \frac{\partial f}{\partial x_i} \right|\delta x_i.\]

Współczynniki

\[\left| \frac{x_i}{f} \frac{\partial f}{\partial x_i} \right|\]

pokazują, w jakim stopniu względny błąd danej zmiennej wpływa na względny błąd wyniku.

Iloczyny, ilorazy i potęgi

Dla funkcji:

\[y=Cx_1^{\alpha_1}x_2^{\alpha_2}\ldots x_n^{\alpha_n}\]

wzór na maksymalny błąd względny upraszcza się do postaci:

\[\delta y\approx |\alpha_1|\delta x_1+ |\alpha_2|\delta x_2+ \ldots+ |\alpha_n|\delta x_n.\]

Przykładowo dla:

\[y=\frac{x^2z}{w^3}\]

otrzymujemy:

\[\delta y\approx 2\delta x+\delta z+3\delta w.\]

Przykład propagacji błędu – pole prostokąta

Załóżmy, że zmierzono boki prostokąta:

\[a=10{,}0\pm 0{,}1\ \text{cm},\]

\[b=5{,}0\pm 0{,}05\ \text{cm}.\]

Pole wynosi:

\[P=ab.\]

Dla wartości przybliżonych otrzymujemy:

\[P=10{,}0\cdot 5{,}0=50{,}0\ \text{cm}^2.\]

Pochodne cząstkowe są równe:

\[\frac{\partial P}{\partial a}=b,\qquad \frac{\partial P}{\partial b}=a.\]

Maksymalny błąd bezwzględny pola szacujemy jako:

\[\Delta P\approx \left|\frac{\partial P}{\partial a}\right|\Delta a+ \left|\frac{\partial P}{\partial b}\right|\Delta b.\]

Po podstawieniu:

\[\Delta P\approx 5{,}0\cdot 0{,}1+ 10{,}0\cdot 0{,}05 =1{,}0\ \text{cm}^2.\]

Wynik można zapisać jako:

\[P=(50{,}0\pm 1{,}0)\ \text{cm}^2.\]

Maksymalny błąd względny wynosi:

\[\delta P=\frac{1{,}0}{50{,}0}=0{,}02=2\%.\]

Infografika przedstawiająca propagację błędów funkcji wielu zmiennych za pomocą różniczki zupełnej, pochodnych cząstkowych i przykładu pola prostokąta
Pochodne cząstkowe określają, w jakim stopniu błędy poszczególnych zmiennych wpływają na błąd wielkości obliczanej pośrednio.

Propagacja niezależnych niepewności

Suma modułów opisuje najgorszy możliwy przypadek, w którym wszystkie błędy działają jednocześnie w kierunku zwiększającym błąd wyniku. Jeżeli niedokładności wejściowe mają charakter losowy i są od siebie niezależne, zwykle stosuje się pierwiastek z sumy kwadratów.

Dla funkcji:

\[y=f(x_1,x_2,\ldots,x_n)\]

niepewność standardową wyniku można oszacować ze wzoru:

\[u(y)= \sqrt{ \left(\frac{\partial f}{\partial x_1}u(x_1)\right)^2+ \left(\frac{\partial f}{\partial x_2}u(x_2)\right)^2+ \ldots+ \left(\frac{\partial f}{\partial x_n}u(x_n)\right)^2 }.\]

Dla pola prostokąta:

\[u(P)= \sqrt{ \bigl(bu(a)\bigr)^2+ \bigl(au(b)\bigr)^2 }.\]

Jeżeli przyjmiemy:

\[u(a)=0{,}1\ \text{cm},\qquad u(b)=0{,}05\ \text{cm},\]

to:

\[u(P)= \sqrt{ (5\cdot 0{,}1)^2+ (10\cdot 0{,}05)^2 } \approx 0{,}71\ \text{cm}^2.\]

Wartość ta jest mniejsza od maksymalnego błędu \(1{,}0\ \text{cm}^2\), ponieważ nie zakładamy jednoczesnego wystąpienia wszystkich odchyleń w najbardziej niekorzystnym kierunku.

Wielkości skorelowane

Jeżeli zmienne wejściowe nie są niezależne, należy uwzględnić ich kowariancje. Pełny wzór ma postać:

\[u^2(y)= \sum_{i=1}^{n} \left(\frac{\partial f}{\partial x_i}\right)^2u^2(x_i) + 2\sum_{i<j} \frac{\partial f}{\partial x_i} \frac{\partial f}{\partial x_j} \operatorname{cov}(x_i,x_j).\]

Dodatnia korelacja może zwiększać niepewność wyniku, natomiast korelacja ujemna może powodować częściowe znoszenie wpływu błędów.

Kiedy metoda różniczkowa jest wiarygodna?

Propagacja błędów za pomocą różniczki zupełnej jest przybliżeniem liniowym. Daje dobre wyniki przede wszystkim wtedy, gdy:

Jeżeli niepewności są duże albo funkcja jest silnie nieliniowa, dokładniejsze wyniki można otrzymać przez obliczenie wartości skrajnych, rozwinięcie wyższego rzędu albo symulację Monte Carlo.

Uwarunkowanie zadania

Uwarunkowanie opisuje wrażliwość rozwiązania na niewielkie zmiany danych wejściowych. Jest właściwością samego problemu matematycznego, a nie zastosowanego algorytmu.

Dla funkcji jednej zmiennej:

\[y=f(x)\]

względną liczbę uwarunkowania można zapisać jako:

\[\kappa(x)= \left| \frac{x f'(x)}{f(x)} \right|.\]

W przybliżeniu:

\[\delta y\approx\kappa(x)\delta x.\]

Jeżeli \(\kappa(x)\) jest niewielka, małe względne zmiany danych powodują małe względne zmiany wyniku. Jeżeli liczba uwarunkowania jest bardzo duża, zadanie jest źle uwarunkowane.

Źle uwarunkowanego problemu nie można naprawić wyłącznie przez zastosowanie lepszego algorytmu. Można jednak próbować zmienić postać zadania, skalować dane albo zwiększyć precyzję obliczeń.

Stabilność algorytmu

Stabilność jest cechą konkretnego sposobu wykonywania obliczeń. Algorytm stabilny nie wzmacnia nadmiernie błędów zaokrągleń i niewielkich zaburzeń danych.

Należy więc odróżnić:

Dla dobrze uwarunkowanego problemu można zwykle znaleźć algorytm dający wiarygodne wyniki. Zastosowanie niestabilnej metody może jednak zniszczyć dokładność nawet wtedy, gdy samo zadanie nie jest szczególnie wrażliwe.

Utrata cyfr znaczących

Jednym z najważniejszych problemów numerycznych jest odejmowanie dwóch prawie równych liczb. Wspólne początkowe cyfry redukują się, a w wyniku pozostają cyfry, które mogły być wcześniej obarczone błędem zaokrąglenia.

Zjawisko to nazywa się utratą cyfr znaczących albo katastrofalnym odejmowaniem.

Rozważmy wyrażenie:

\[\sqrt{x+1}-\sqrt{x}.\]

Dla dużego \(x\) obie wartości podlegające odejmowaniu są do siebie bardzo podobne. Wyrażenie można jednak przekształcić:

\[\sqrt{x+1}-\sqrt{x} = \frac{(\sqrt{x+1}-\sqrt{x})(\sqrt{x+1}+\sqrt{x})} {\sqrt{x+1}+\sqrt{x}},\]

czyli:

\[\sqrt{x+1}-\sqrt{x} = \frac{1}{\sqrt{x+1}+\sqrt{x}}.\]

Druga postać jest matematycznie równoważna, ale zwykle znacznie stabilniejsza numerycznie.

Kumulowanie się błędów

Podczas wykonywania wielu działań błędy mogą się kumulować. Szczególne znaczenie ma kolejność obliczeń.

W arytmetyce liczb rzeczywistych dodawanie jest łączne:

\[(a+b)+c=a+(b+c).\]

W arytmetyce zmiennoprzecinkowej po każdym działaniu następuje zaokrąglenie, dlatego może wystąpić:

\[\operatorname{fl}(\operatorname{fl}(a+b)+c) \ne \operatorname{fl}(a+\operatorname{fl}(b+c)).\]

Przy sumowaniu wielu wartości można poprawić dokładność przez:

Błąd metody a błąd zaokrągleń

Zmniejszanie kroku metody numerycznej zwykle ogranicza błąd dyskretyzacji. Nie oznacza to jednak, że krok należy zmniejszać bez końca.

Bardzo mały krok może powodować:

Łączny błąd można schematycznie zapisać jako:

\[\text{błąd całkowity} \approx \text{błąd metody} + \text{błąd zaokrągleń}.\]

W wielu problemach istnieje więc optymalny zakres kroku, dla którego łączny błąd jest najmniejszy.

Cyfry znaczące i zapis wyniku

Wynik powinien być zapisywany w sposób zgodny z jego rzeczywistą dokładnością. Jeżeli otrzymano:

\[x=12{,}347826\pm 0{,}2,\]

podawanie wszystkich cyfr wartości przybliżonej jest nieuzasadnione. Właściwszy zapis to:

\[x=12{,}3\pm 0{,}2.\]

Zwykle niepewność zaokrągla się do jednej lub dwóch cyfr znaczących, a wartość przybliżoną do tego samego miejsca dziesiętnego.

Należy również odróżnić liczbę cyfr wyświetlanych przez kalkulator lub program od liczby cyfr, które są rzeczywiście wiarygodne.

Jak ograniczać błędy numeryczne?

Wynik numeryczny bez informacji o jego dokładności może wyglądać wiarygodnie, nawet jeżeli jest obarczony dużym błędem.

Błędy w aproksymacji i interpolacji

Analiza błędów jest istotna również podczas przybliżania danych za pomocą funkcji. W interpolacji należy uwzględnić błąd wynikający z wyboru węzłów i stopnia wielomianu, natomiast w aproksymacji ocenia się odchylenia funkcji przybliżającej od obserwowanych wartości.

Zagadnienia te zostały szerzej opisane w artykule Aproksymacja i interpolacja.

Podsumowanie

Błędy obliczeń numerycznych mogą wynikać z niedokładności danych wejściowych, uproszczeń modelu, zastosowanej metody, przerwania nieskończonego procesu oraz ograniczonej precyzji arytmetyki komputerowej.

Błąd bezwzględny określa odległość między wartością dokładną i przybliżoną, natomiast błąd względny odnosi tę różnicę do skali analizowanej wielkości.

Wpływ błędów argumentów na wynik funkcji wielu zmiennych można oszacować za pomocą różniczki zupełnej i pochodnych cząstkowych. Suma modułów opisuje maksymalny możliwy błąd, natomiast pierwiastek z sumy kwadratów jest stosowany dla niezależnych niepewności losowych.

Uwarunkowanie jest właściwością problemu matematycznego, a stabilność — właściwością algorytmu. Rozróżnienie tych pojęć jest niezbędne do właściwej oceny jakości wyników numerycznych.

Świadoma kontrola błędów pozwala dobierać odpowiednią metodę, precyzję i sposób zapisu wyniku oraz uniknąć sytuacji, w której długa liczba wyświetlana przez komputer jedynie pozornie oznacza dużą dokładność.

Powiązane artykuły

Masz problem z tym tematem?

Wszechwiedza.pl pomaga zrozumieć matematykę, statystykę, ekonometrię, badania operacyjne, analizę danych, mechanikę, rachunkowość i wiele innych przedmiotów — spokojnie, konkretnie i krok po kroku. 

Zapytaj o pomoc