Uwarunkowanie zadania

Numeryczne uwarunkowanie zadania, to parametr pozwalający ocenić wpływ drobnych zmian parametrów wejściowych na wynik działania. Zainteresowani jesteśmy taką sytuacją, w której niewielkie zmiany (błędy) parametrów wejściowych będą powodowały niewielkie jedynie fluktuacje wyników obliczeń.

Okazuje się, że nawet w całkiem prostych przypadkach nie można liczyć na dobre uwarunkowanie problemu obliczeniowego. Co gorsza może ono zależeć od danych wejściowych.

Do oszacowania uwarunkowania obliczeniowego używa się metod bardzo podobnych do tych używanych przy określaniu stabilności układów. Po szczegóły odsyłam do [1].

Tu będą tylko przykłady.

Rozpatrzmy wielomian o postaci [1] :

$$\begin{split} w(x) & =\prod_{i=1}^{20} (x-i)= \sum_{i=0}^{20} a_ix^i=x^{20}-210 x^{19}+20615 x^{18}-1256850 x^{17}\\ &+53327946 x^{16}-1672280820 x^{15}+40171771630 x^{14}-756111184500 x^{13}\\ &+11310276995381 x^{12}-135585182899530 x^{11}+1307535010540395 x^{10}\\ & -10142299865511450 x^9+63030812099294896 x^8-311333643161390640 x^7\\ &+1206647803780373360 x^6-3599979517947607200 x^5\\ &+8037811822645051776 x^4-12870931245150988800 x^3+13803759753640704000 x^2\\ &-8752948036761600000 x+2432902008176640000 \end{split}$$

Pierwiastkami tego wielomianu są liczby $1, 2,\ldots, 20$.

Zaburzmy jeden ze współczynników (patrz również [1]). Normalnie wartość współczynnika $a_{19}$ wynosi $-210$. Zastąpimy go współczynnikiem o wartości $-(210+2^{-23})$. Można to symbolicznie zapisać tak: $a_{19}(\varepsilon)=a_{19}(1-\varepsilon)$, gdzie $\varepsilon=(2^{23}*210)^{-1} < 2^{-30}$. Tak niewielka zmiana jednego tylko parametru powoduje, że wielomian ma zespolone miejsc zerowe.

Gdy niewielkie względne zmiany danych zadania powodują duże względne zmiany jego rozwiązania, to zadanie takie nazywamy źle uwarunkowanym .

Kolejnym problemem, który może być źle uwarunkowany jest zadanie liczenia iloczynu skalarnego dwu wektorów :

$$S=\sum_{i=1}^n a_ib_i \ne 0.$$

Aby oszacować uwarunkowanie zadania zastąpimy dokładne wartości parametrów ${\boldsymbol a}=(a_1,a_2,\ldots,a_n)$ i ${\boldsymbol b}=(b_1,b_2,\ldots,b_n)$ przez wartości przemnożone przez $1+\alpha_i$ i $1+\beta_i$ odpowiednio. Założymy przy tym, że iloczyny $\alpha_i\beta_i$ są zaniedbywalnie małe. Aby oszacować zmienną zmianę wyniku liczymy iloraz

$$\begin{split} \left|\frac{\displaystyle\sum_{i=1}^n a_i(1+\alpha_i)b_i(1+\beta_i)-\sum_{i=1}^n a_ib_i}{\displaystyle\sum_{i=1}^n a_ib_i}\right|& \approx \left|\frac{\displaystyle\sum_{i=1}^n a_ib_i(\alpha_i+\beta_i)}{\displaystyle\sum_{i=1}^n a_ib_i}\right|\\ & \le \max_i|\alpha_i+\beta_i| \frac{\displaystyle\sum_{i=1}^n |a_ib_i|}{\displaystyle\left|\sum_{i=1}^n a_ib_i\right|} \end{split}$$

Jeżeli określimy $\mathop{\mathrm{cond}}({\boldsymbol a},{\boldsymbol b})=\sum_{i=1}^n |a_ib_i|/|\sum_{i=1}^n a_ib_i|$ wskaźnikiem uwarunkowania (największy błąd przenosi się na wynik z takim mnożnikiem) to gdy wszystkie współczynniki mają taki sam znak — niewielki błąd ma bardzo niewielki wpływ na wynik. Gdy $\sum_{i=1}^n a_i b_i$ jest bliskie zeru — sytuacja jest znacznie gorsza.

Literatura

  1. J. Jankowscy, Przegląd metod i algorytmów numerycznych. Cz. 1. Wydawnictwa Naukowo-Techniczne, 1988.
Poprzedni
Następny