Niepewność bywa czasem gorsza niż brak uzbrojonej straży.

Metody numeryczne 6.4. Stabilno algorytmw Wiemy ju, e kada operacja arytmetyczna na liczbach typu REAL moe wprowa- dzi bdy spowodowane zaokrgleniami argumentw i wynikw dziaa. Zada- nia numeryczne wymagaj na og wykonania setek tysicy dziaa. Jeli kade z nich lub przynajmniej znaczna ich cz wprowadza bdy zaokrgle, to mog si one kumulowa (tzn. sumowa) i powodowa powstawanie zauwaalnych znie- ksztace wynikw. W takim przypadku mwimy, e algorytm jest niestabilny. Natomiast algorytm jest stabilny, jeli w trakcie jego wykonywania nie dochodzi do niekontrolowanej kumulacji bdw zaokrgle. Obliczenia numeryczne maj sens jedynie w przypadku stosowania algorytmw stabilnych. 6.4.1. Pierwiastki rwnania kwadratowego Zakadajc, e a ^ 0 moemy sprowadzi rwnanie (1), tj. ax2 + bx + c = 0 do ~2 postaci px + q = 0 (12) wygodniejszej w dalszych rozwaaniach. Jeli rwnanie (12) ma dwa rne pier- wiastki, to oblicza si je ze znanych wzorw (13) Przyjmijmy, e obliczenia s wykonywane w arytmetyce 4-cyfrowej (tzn. z 4- cyfrow mantys), a wspczynniki rwnania s rwne p = 6.433 i q = 0.009474. Obliczanie pierwiastka x\ moe przebiega nastpujco: 1. a = fl[(6.433)2] = 41.38, 2. (3 = fl[4 (0.009474)] = 0.03790, 3. 7 = fl(a -P) = 41.34, 4. a = fl(/y) = 6.430, 5.

0, to pierwiastek x\ jest liczony z wiksz dokadnoci ni X2, natomiast dla p < 0 dokadniej bdzie obliczony X2- Otrzy- mujemy std stabilny algorytm znajdowania pierwiastkw rwnania kwadrato- wego, ktry zapiszemy poniej w postaci procedury w jzyku Pascal. W pro- cedurze tej uwzgldniamy take przypadek, gdy rwnanie nie ma pierwiastkw rzeczywistych. PROCEDUR Rownanie2(p,q:REAL;VAR Del:B00LEAN;VAR xl,x2:REAL); {Procedura oblicza z jednakowa dokadnoci pierwiastki rzeczywiste rwnania kwadratowego (12). Zmienna Del przyjmuje warto TRUE, jeli rwnanie ma pierwiastki rzeczywiste, i FALSE - w przeciwnym przypadku.} VAR Delta:REAL; BEGIN Delta:=p*p-4*q; Del:=Delta>=0; IF NOT Del THEN EXIT; Delta:=SQRT(Delta); IF p<0 THEN BEGIN x2:=(-p+Delta)/2; xl:=q/x2 END ELSE BEGIN 200 6. Metody numeryczne xl:=(-p-Delta)/2; x2:=q/xl END END; {Rownanie2} Uwaga: Tekst procedury Rownanie2 znajduje si na dyskietce w pliku RWNANIE.PAS umieszczonym w kartotece R0ZDZ6. Procedura EXIT dziaa podobnie jak procedura STOP w jzyku Logo. W zadaniu 6.6 zachcamy do napisania procedury bdcej bezporedni rea- lizacj wzorw (13) i porwnania wartoci pierwiastkw otrzymanych obydwoma sposobami rozwizywania rwnania kwadratowego. 6.4.2. Ukad dwch rwna liniowych Omwimy teraz inne zadanie, by pokaza, e mimo uycia algorytmu stabil- nego mona otrzyma rozwizanie do powanie znieksztacone bdami. rdo bdw ley teraz nie w uytej metodzie rozwizywania a w samym zadaniu. Naley znale rozwizanie ukadu = a2ja\ i odejmijmy od - b2y = c2. W tym celu pomnmy pierwsze rwnanie przez di drugiego rwnania. Otrzymamy wwczas (14) Dla wspczynnikw a\ = 3.000, bx = 4.127, ci = 15.41, a2 = 1.000, b2 = 1.374, c2 = 5.147 dokadnym rozwizaniem s liczby x = 13.6658 i y = 6.2. Podobnie jak w poprzednim przykadzie warto y wyznaczymy wykonujc obliczenia w arytmetyce 4-cyfrowej: 1. a = fl(15.41/3) = 5.137, 2. /? = fl(5.147-ev) = 0.010, 3. 7 = fl(4.127/3) = 1.376, 4. a = fl(1.374 - 7) = -0.002, y = fl(/?/