Sunteți pe pagina 1din 12

Erori

0. Erori

0.1. Tipuri i surse de erori


De regul, n matematic, prin eroare se nelege diferena dintre valoarea exact a unui numr i valoarea sa aproximativ. Se disting trei tipuri de erori. 1. Erorile inerente sunt cele care provin din simplificarea modelului fizic, pentru a putea fi descris printr-un model matematic. n aceast categorie intr i erorile de date (aparatele de msur lucreaz inevitabil cu anumite abateri) . 2. Erorile de metod (trunchiere) apar datorit faptului c formulele i ecuaiile exacte se nlocuiesc cu formule i ecuaii aproximative, pentru a permite calculul printr-un numr finit de operaii aritmetice. De exemplu, numrul e este suma seriei 1 1 1 1 + + + ... + + ... , care nu poate fi calculat exact. nsumnd numai un numr 1! 2! n! finit de termeni apare n mod inevitabil o eroare de trunchiere. 3. Erorile de rotunjire se datoreaz faptului c n calcule, numerele cu un numr infinit de zecimale se aproximeaz prin numere cu un numr finit de zecimale. Pe de alt parte, orice calculator opereaz doar cu un numr finit de numere reale (evident cu un numr finit de zecimale), n timp ce mulimea numerelor reale este infinit. Apare astfel o aproximare inevitabil a numerelor reale care intervin n calcule cu numerele reprezentate n calculator. n acest capitol sunt analizate erorile inerente i erorile de rotunjire, urmnd ca erorile de trunchiere s fie studiate pe parcursul crii, odat cu prezentarea metodelor numerice respective.

Bazele Analizei Numerice

0.2. Reprezentarea numerelor n calculator


La baza construciei majoritii tipurilor de calculatoare numerice stau elementele bistabile i de aceea se folosete ca baz de reprezentare a numerelor n calculator baza 2, ale crei cifre sunt 0 i 1. Este cunoscut c orice numr real x se poate reprezenta n baza 2 sub forma: x = ( n 2 n + n 1 2 n 1 + ... + 0 2 0 + 1 2 1 + 2 2 2 + ...) , cu i = 0 sau 1 . De exemplu numrul 13.5 n baza 10 se poate scrie n baza 2 sub forma:

13.5 = 1 2 3 + 1 2 2 + 0 2 + 1 2 0 + 1 2 1 = 1101.1 Reprezentarea numerelor n calculator (reprezentarea intern) se face pe un numr finit de poziii, n , numit lungimea cuvntului, care este fixat la construcia calculatorului. Pentru precizii mai bune, unele calculatoare au posibilitatea reprezentrii numrului pe 2n, 3n , poziii (reprezentare pe dublu cuvnt, triplu cuvnt, ). Pe cele n poziii ale unui cuvnt, un numr poate fi reprezentat n virgul fix (proprie numerelor ntregi sau numerelor subunitare) sau n virgul mobil. Majoritatea tipurilor de calculatoare numerice folosesc pentru calcule tiinifice reprezentarea numerelor n virgul mobil. n aceast reprezentare, poziia virgulei zecimale nu este fix. Orice numr real x se poate scrie sub forma x = a 10b sau x = a 2b cu a < 1 i b Z ; a se numete mantisa numrului real x, iar b exponentul. Reprezentarea n virgul mobil este normalizat dac prima cifr a mantisei este nenul, deci dac a 10 1 , respectiv a 2 1 . n acest caz reprezentarea este unic. Cifrele semnificative ale unui numr sunt cifrele mantisei, nelund n seam zerourile care le preced.
Exemplul Reprezentarea normalizat, n virgul mobil a numrului n baza 10 x = 13.5 este: 0.135 10 2 = 0.13510 2 , indicele 10 artnd c reprezentarea este n baza 10. n acest caz mantisa este a = 0.135, iar exponentul b =2. n baza 2, acelai numr are reprezentarea normalizat n virgul mobil 0.110112100 = 0.11011 2 4 , avnd mantisa a = 0.11011 i exponentul b = 100.

Pentru orice calculator numeric exist numerele fixe t i e care reprezint numrul de cifre ale mantisei, respectiv ale exponentului unui numr real ce poate fi reprezentat n calculatorul respectiv (n = t + e). Numerele t i e determin

Erori

mpreun cu baza de numeraie (10 sau 2) o mulime finit de numere reale F R care pot fi reprezentate exact n calculator.

0.3. Erorile de rotunjire i calculele n virgul mobil


Deoarece mulimea F a numerelor reprezentabile ntr-un calculator este finit, se pune problema aproximrii unui numr real x F printr-un numr g F . Aceast problem apare nu numai n datele de intrare n calculator, ci i pentru rezultate intermediare sau finale n urma calculelor efectuate n calculator. x nu fac parte din Sunt frecvente cazurile cnd x, y F i x y sau x y sau y mulimea F. n mod natural, orice numr x F se aproximeaz printr-un numr din F, notat cu rd (x ) , care este cel mai apropiat numr de x ce aparine lui F. Numrul rd (x ) va satisface x rd ( x ) x g , g F , obinndu-se n multe cazuri prin rotunjire.
Exemplul 1. Fie un calculator cu t = 4 i e = 1. Atunci rd (0.1428510 0 ) = 0.142910 0 rd (3.1415910 0 ) = 0.3142101 rd (0.14284210 2 ) = 0.142810 2 .

n general, pentru t fixat, dac x F , rd (x ) se poate determina astfel. Se aduce x la forma normalizat x = a 10b , cu a 10 1 , adic a = 0.1 2 ... i i +1... , 0 i 9 , 1 0 . Se determin
def 0. ... , dac 0 t +1 4 a' = 1 2 t , t 0.1 2 ... t + 10 , dac t +1 5 adic t crete cu 1 dac t +1 5 i se renun la celelalte zecimale ncepnd cu t +1 .

n final, definim rd ( x ) = sign ( x ) a '10 b .

~ rd ( x ) x . Pentru orice numr real x 0 , eroarea relativ este raportul x

Deoarece a 10 1 , eroarea relativ admite urmtoarea margine

Bazele Analizei Numerice

~ rd ( x ) x 5 10 (t +1) 5 10 t . x a ~ Notm eps = 5 10 t . Dac rd ( x ) = x(1 + ) , atunci, din inegalitatea de mai sus

rezult eps . Numrul real eps se numete precizia calculatorului. Pentru rotunjirea n sistemul binar se procedeaz analog. Se aduce x F la forma normal x = a 2b cu 2 1 a < 1 i a = 0.1 2 ... i i +1... cu i = 0 sau 1 i 1 = 1 .

dac t +1 = 0 0.1 2 ... t , ~ , iar rd (x ) = sgn ( x ) a '2 b . n Se determin a' = t 0.1 2 ... t + 2 , dac t +1 = 1
~ ~ n cazul n care rd (x ) F , atunci rd (x ) este chiar rd (x ) . Deoarece numrul poziiilor pentru exponentul e este finit, exist , din pcate, numere ~ x F pentru care rd (x ) F .
Exemplul 2. Considerm t = 4 i e = 2. Atunci ~ a) rd (0.3179410110 ) = 0.317910110 F ~ b) rd (0.999971099 ) = 0.100010100 F ~ c) rd (0.01234510 99 ) = 0.123510 100 F ~ d) rd (0.5432110 110) = 0.543210 110 F n cazurile a) i b) exponentul pozitiv este prea mare ca s poat fi reprezentat pe spaiul alocat (e = 2). n situaiile acestea se spune c avem depire superioar a exponentului. n cazul b) depirea superioar a exponentului apare abia dup rotunjire. n exemplele c) i d) are loc depire de exponent inferioar, adic exponentul negativ este prea mic pentru a putea fi reprezentat pe spaiul alocat. n aceste dou situaii, depirea inferioar a exponentului poate fi prevenit definind rd (0.01234510 99 ) = 0.012310 99 F (reprezentarea nu mai este normalizat) i rd (0.5432110 110 ) = 0 F . Atunci rd nu satisface egalitatea rd (x ) = x(1 + ) , deci eroarea relativ poate fi mai mare ca eps. Situaiile de depire de exponent superioar sau inferioar sunt tratate de calculatoarele numerice ca fiind excepii. ~ n mod obinuit, rd (x ) se definete prin egalitatea rd ( x ) = rd (x ) .

acest caz eps = 2 t .

n continuare, innd seama c depirile de exponent superioare i/sau inferioare nu sunt frecvente, vom considera cazul ideal e = i

Erori

rd : R F prin rd (x ) = x(1 + ) cu eps , () x R .

Se poate ntmpla ca rezultatul operaiilor aritmetice x y , x y ,

x s y

nu fie elemente ale mulimii F, chiar dac operanzii x i y F . Vom nota cu + , , , / operaiile n virgul mobil corespunztoare operaiilor aritmetice care sunt definite astfel:

x + y = rd ( x + y ) , x y = rd ( x y ) , x y = rd ( x y ) , x / y = rd ( x / y ) , deci x + y = ( x + y )(1 + 1 ) , x y = ( x y )(1 + 2 ) , cu i eps, i = 1,4 . x y = ( x y )(1 + 3 ) , x / y = ( x / y )(1 + 4 ) . Aceste operaii n virgul mobil nu au proprietile binecunoscute ale operaiilor aritmetice. De exemplu: eps x , unde x, y F , iar B este baza de 1) x + y = x , dac y < B numeraie. Precizia mainii eps ar putea fi definit ca fiind cel mai mic numr g F pentru care 1 + g > 1 , adic eps = min{ g F 1 + g > 1, g > 0} . 2) Asociativitatea nu se mai pstreaz, aa cum va rezulta din urmtorul exemplu.
Exemplul 3. Fie a = 0.2337125810 4 , b = 0.33678429 10 2 , c = 0.3367781110 2 .
def def def

def

pentru orice x, y F

ntr-un calculator cu t = 8 i e = , operaia

a + b + c = 0.2337125810 4 + 0.61800000 10 3 =

+ conduce la:

(a + b)+ c = (0.2337125810 4 + 0.3367842910 2) 0.3367781110 2 = = (0.0000002310 2 + 0.3367842910 2 ) 0.3367781110 2 =


= 0.3367845210 2 0.3367781110 2 = 0.6410000010 3 Rezultatul exact al adunrii este:

= 0.0233712610 3 + 0.6180000010 3 = 0.6413712610 3

Bazele Analizei Numerice

a + b + c = 0.0000002337 125810 2 + 0.33678429 10 2 0.3367781110 2 = = 0.641371258 10 3 .

Dac E este o expresie aritmetic, va rezulta din context cum se evalueaz E. Dac este nevoie se pot folosi paranteze care s precizeze ordinea operaiilor. Vom nota cu fl (E ) valoarea expresiei E obinut din calculul n virgul mobil. De exemplu:
fl (x + y ) = x + y
def

fl ( x + ( y + z )) = x + y + z fl ((x + y ) + z ) = x + y + z
def

def

0.4. Propagarea erorilor


Aa cum am vzut n Exemplul 3 din paragraful precedent, n funcie de schema aleas pentru evaluarea unei expresii am obinut rezultate diferite n calcule n aritmetica virgulei mobile. De aceea este necesar s distingem ntre diferitele scheme de calcul, chiar dac din punct de vedere matematic ele sunt echivalente. Desemnm cu termenul algoritm o secven finit de operaii elementare care descriu cum se calculeaz soluia unei probleme. n cele ce urmeaz vom formaliza noiunea de algoritm, pentru a putea descrie propagarea erorilor. Presupunem c numerele y1 , y 2 ,..., y m constituie soluia unei probleme ale crei date de intrare sunt x1 ,..., x n . Dac introducem vectorii coloan

x1 y1 x2 y2 x= , y = , atunci algoritmul pentru rezolvarea problemei de mai sus M M x y n m


revine la determinarea funciei vectoriale y = (x ) , : D R m , D R n , fiind dat de m funcii i : D R , yi = i ( x1 ,..., x n ) , i = 1, m . La fiecare etap de calcul exist o mulime operand de numere, care sunt fie numerele de intrare xi sau au rezultat din operaii anterioare. O operaie elementar calculeaz un nou numr din unul sau mai multe elemente ale mulimii operand. Acest nou numr este, fie un rezultat intermediar, fie unul final i se adaug mulimii operand, care este curat de datele care nu mai sunt necesare

Erori

elementar astfel: (i ) : Di R ni +1 , Di R ni astfel nct (i ) x (i ) = x (i +1) cu

pentru restul calculelor. Mulimea operand final va consta din rezultatele dorite y1 , y 2 ,..., y m . n concluzie, o operaie corespunde unei transformri a mulimii operand. Scriind mulimile operand consecutive ca vectori coloan x (i ) 1 (i ) (i ) x 2 x = R ni , putem asocia fiecrei operaii elementare o funcie vectorial M (i ) xn i

x (0 ) = x , unde x (i +1) este o reprezentare vectorial a mulimii operand transformate. Fiind dat un algoritm, irul su de operaii elementare d natere unei descompuneri a lui ntr-un ir de funcii elementare (i ) : Di Di +1 , i = 0, r ,
Dj R
nj

( )

, = (r ) o (r 1) o ... o (0 ) , D0 = D , Dr +1 R nr +1 = R m .

Exemplul 1. Pentru (a, b, c ) = a + b + c s evideniem doi algoritmi: a) Fie = a + b i y = c + . Atunci, descompunerea de mai sus este:

(0 ) (a, b, c ) =

a + b (1) (0 ) (1) 2 R , (u , v ) = u + v R , (a, b, c ) = (a, b, c ) . c b) Fie = b + c i y = a + . n acest caz: a (1) (0 ) (1) 2 R , (u , v ) = u + v R , (a, b, c ) = (a, b, c ) . b + c

(0 ) (a, b, c ) =

Un argument pentru alegerea unui algoritm l constituie propagarea erorilor n aritmetica virgulei mobile. S analizm algoritmii a) i b) din exemplul de mai sus pentru intrrile numerice din Exemplul 3 al seciunii precedente. n cazul a) = fl ( a + b) = ( a + b)(1 + 1 ) , ~ y = fl ( + c ) = ( + c )(1 + 2 ) = [( a + b)(1 + 1 ) + c](1 + 2 ) =

a+b = (a + b + c) 1 + 1 (1 + 2 ) + 2 . + + a b c ~ y y + a b = 1 (1 + 2 ) + 2 , sau, dup y , y = Eroarea relativ a lui ~ y a+b+c a+b 1 + 1 2 . renunarea la termenii neliniari n avem y a+b+c

Bazele Analizei Numerice

Coeficienii lui 1 i 2 msoar efectul erorilor de rotunjire 1 i 2 asupra erorii y a rezultatului.

a+b este critic; n funcie de care dintre numerele a + b a+b+c sau b + c este mai mic, este mai bine s se procedeze via (a+b)+c dect a+(b+c) pentru a calcula a+b+c. Metoda de mai sus, de studiu a propagrii erorilor, neglijnd termenii de ordin superior, se poate extinde, conducnd la analiza diferenial a erorilor unui algoritm , pentru a calcula ( x) , dac = (r ) o (r 1) o ... o (0 ) . Pentru aceasta vom investiga cum erorile x asupra datelor de intrare, ca i erorile de rotunjire acumulate de-a lungul algoritmului afecteaz rezultatul final y = (x ) . 1 ( x1 ,..., x n ) m M Fie : D R , ( x) = , D fiind o submulime deschis ( x ,..., x ) n m 1 n a lui R . Presupunem c funciile , i = 1, m , au derivate continue pe D. Fie ~ x o
Factorul
i

valoare aproximativ pentru x. Notm x = ~ x x , x i = ~ xi xi erorile absolute ale lui ~ x i respectiv ~ xi . ~ x i xi , dac xi 0 erorile relative. Fie ~ xi = xi x , obinem ~ nlocuind datele de intrare x cu ~ y = (~ x ) n loc de y = ( x ) . Dezvoltnd n serie Taylor i renunnd la termenii neliniari n xi obinem: n n i (x ) = i (x ) x j , i = 1, m . y i y i = i (~ x ) i (x ) = ~ xj xj yi = ~ x j j =1 j =1 x j

Matriceal putem scrie:

y = D (x )x , unde D (x ) este matricea jacobian a funciei ,

Cantitile

i (x ) semnific modul n care x j

1 1 ( x) ... ( x) x x 1 n ... ... . D ( x) = ... m m ( x) ... ( x) x1 x n


yi

sunt afectai de erorile

absolute x j ale lui x j .

Erori

Dac y i 0, i = 1, m i x j 0, j = 1, n atunci formula pentru propagarea erorilor relative devine: n xj i ( x) yi = xj (1) xj j =1 i ( x) Cantitile

x j i se numesc numere de condiionare. i x j

Dac numerele de condiionare au valori (absolute) mari se spune c respectiva problem este ru condiionat, altfel problema este bine condiionat. Pentru problemele ru condiionate, erori relative mici n datele de intrare x, pot cauza erori relative mari n rezultatele y , y = ( x ) .
Exempul 3. Pentru y = (a, b, c) = a + b + c avem: a b c y = a + b + c . a+b+c a+b+c a+b+c Aceast problem este bine condiionat dac termenii a, b, c sunt mici n comparaie cu suma lor a+b+c .

Eroarea relativ (1) pentru cteva operaii elementare, n care operanzii x i y sunt nenuli, este dat n tabelul:

x+y xy x y

y x x + y , dac x + y 0 x+ y x+ y
x y x y , dac x y 0 x y x y x +y

x/ y
x

x y
1 x 2

Se observ c la nmulire, mprire i extragere de rdcin ptrat erorile relative ale operanzilor nu se propag puternic n rezultate. Acelai lucru se ntmpl i n cazul adunrii dac cei doi operanzi au acelai semn. Atunci x y numerele de condiionare sunt n (0,1) i o margine a erorii i x+ y x+ y relative este x + y max{ x , y } .

10

Bazele Analizei Numerice

Dac operanzii care se adun au semne diferite, atunci cel puin unul dintre x y este mai mare ca 1 i erorile relative numerele de condiionare , x+ y x+ y

x , y sunt amplificate. Dac

x y atunci se abandoneaz calculele (apare

cancelarea rezultatului). Pentru descrierea propagrii erorilor de rotunjire ntr-un algoritm dat , vom apela tot la formula y = D ( x) x .
Presupunem c admite reprezentarea = ( r ) o ( r 1) o .... o ( 0) i c rezultatele calculelor pornind de la vectorul datelor de intrare, x = x (0) sunt date de relaiile:

x = x (0) , x (1) = (0) ( x (0) ) ,, y = x ( r +1) = ( r ) ( x ( r ) ) , (i ) C 1 ( Di ) , i = 0, r .


Notm (i ) = ( r ) o .... o (i ) : Di R m , i = 0, r i (0) = . Erorile din datele de intrare i erorile de rotunjire vor perturba rezultatele intermediare exacte x(i), obinndu-se n aritmetica virgulei mobile aproximrile ~ x (i ) date de relaiile : ~ x (i +1) = fl ( (i ) ( ~ x (i ) )) . Atunci erorile absolute se pot evalua astfel: Dar

x (i +1) = [ fl ( ( i ) ( ~ x ( i ) )) ( i ) ( ~ x ( i ) )] + [ ( i ) ( ~ x ( i ) ) ( i ) ( x ( i ) )] .
(i ) ( ~ x ( i ) ) ( i ) ( x ( i ) ) D ( i ) ( x ( i ) ) x ( i )
fl ( (i ) (u )) = rd ( (i ) (u )) ,

(2) (3).

Cum (i ) este o funcie elementar, evaluarea sa n virgul mobil va fi care pe componente devine:

fl ( (ji ) (u )) = rd ( (ji ) (u )) = (1 + j ) (ji ) (u ) cu j eps, j = 1, ni +1 .


Aici j este eroarea de rotunjire generat n timpul calculului n virgul mobil a componentei a j-a, a lui (i ) . Relaiile de mai sus se scriu matriceal sub forma fl ( (i ) (u )) = ( I + E i +1 ) (i ) (u ) , unde I este matricea unitate de ordinul ni+1 , iar Ei+1 este matricea diagonal a erorilor: 0 1 0 ... ... 0 0 2 0 ... cu j eps . E i +1 = ... ... ... ... ... 0 0 ... ... n i +1 Prima parantez dreapt din x (i +1) devine:

Erori

11

fl ( (i ) ( ~ x ( i ) )) ( i ) ( ~ x ( i ) ) = Ei +1 ( i ) ( ~ x ( i ) ) Ei +1 (i ) ( x ( i ) ) = Ei +1 x ( i +1) = i +1 . Vectorul coloan i +1 poate fi interpretat ca eroarea absolut de rotunjire aprut


atunci cnd se evalueaz n aritmetica virgulei mobile (i ) , iar elementele diagonale ale matricei Ei+1 pot fi interpretate ca erori relative de rotunjire corespunztoare. innd seam de (2) i (3) rezult: x (i +1) = i +1 + D (i ) ( x (i ) ) x (i ) = E i +1 x (i +1) + D (i ) ( x (i ) ) x (i )
i 0, x (0) = x . Prin urmare:

x (1) = D (0) ( x) x + 1 x ( 2) = D (1) ( x1 )[ D (0) ( x) x + 1 ] + 2 . y = x ( r +1) = D ( r ) ...D (0) x + D ( r ) ...D (1)1 + ... + r +1 . Sau dac inem seama de ceea ce am notat cu avem:

y = D ( x)x + D (1) ( x (1) ) 1 + ... + D ( r ) ( x ( r ) ) r + r +1 = = D ( x)x + D (1) ( x (1) ) E1 x (1) + ... + D ( r ) ( x ( r ) ) E r x ( r ) + E r +1 y


Aceasta arat c matricea jacobian D ( i ) este important pentru efectul erorilor de rotunjire intermediare i sau Ei asupra rezultatului final.
Exemplul 5 . Fie de calculat expresia a 2 b 2 = ( a + b)(a b) . Vom prezenta 2 algoritmi: Algoritmul 1:

a2 , 1 = a a , 2 = b b , y = 1 2 . Atunci (0) (a, b) = b u ( 2) ( 2) o (1) o (0) . (1) (u , v) = v2 , ( s, t ) = s t , = Algoritmul 2: a ( 0) 1 = a + b , 2 = a b , y = 1 2 . Atunci (a, b) = b a + b

(1) (a, b, u ) =
n primul caz avem:

u ( 2) ( 2) (1) (0) ; ( s, t ) = s t , = o o . a b

2 2 a (1) 2 2 a ( 2) a (3) x = x ( 0) = b , x = , x = 2 , x = y = a b , b b

12

Bazele Analizei Numerice

(1) (u , v) = u v 2 , ( 2) (u , v ) = u v , D ( x) = ( 2a,2b) ,
D (1) ( x (1) ) = (1, 2b) , D ( 2) ( x ( 2) ) = (1, 1) ,

1 =

1a 2 1 0 , E1 = , 0 0 0

a a a 2 (eroarea de rotunjire n deoarece fl ( (0) ( x (0) )) (0) ( x (0) ) = b b virgul mobil apare doar pe prima poziie). Similar 0 0 0 2 2 2 = b2 , E 2 = 0 , 3 = 3 (a b ) , i eps, i = 1,3. 2 2
a 2 2 2 2 Dac x = b , y = 2aa 2bb + a 1 b 2 + ( a b ) 3 . n cazul algoritmului 2, avem: a (1) a + b ( 2) (1) 2 2 x = x (0) = b a b ,x = , x = y = a b ; (u , v) = u v ,

1 ( a + b) D ( x) = (2a,2b) , D (1) ( x (1) ) = ( a b, a + b) ; 1 = ( a b) , 2 1 0 2 = 3 (a 2 b 2 ) i E1 = 0 ; i eps . 2


Atunci y = 2a a 2b b + ( a 2 b 2 )( 1 + 2 + 3 ) . Se poate da o margine a efectului erorilor de rotunjire astfel: - n algoritmul 1:
a 21 b 2 2 + ( a 2 b 2 ) 3 ( a 2 + b 2 + a 2 b 2 ) eps

- n algoritmul 2:
( a 2 b 2 )(1 + 2 + 3 ) 3 a 2 b 2 eps.

Cnd selectm un anumit algoritm de calcul pentru un ( x ) (cu alte cuvinte, o anumit descompunere a lui n funcii elementare), D rmne neschimbat; matricele jacobiene D (i ) care msoar propagarea rotunjirilor vor fi totui diferite, efectul total al erorilor de rotunjire va fi: D (1) 1 + ... + D ( 2) 2 + r +1 . Un algoritm este numeric mai bun dect alt algoritm pentru calculul lui ( x ) , dac pentru o mulime de date x, efectul total al erorilor de rotunjire este mai mic n cazul primului algoritm.