Documente Academic
Documente Profesional
Documente Cultură
1.1
Rezolvarea diferitelor probleme cu ajutorul calculatorului numeric depinde, ntr-o prima instan, de posibilitatea de a reprezenta numerele n maina de calcul folosit. Aceast posibilitate depinde de tipul numerelor i de structura constructiv (hardware) a echipamentului de calcul, anume: baza de reprezentare a numerelor (baza mainii de calcul) i lungimea cuvntului de memorie. Ca urmare, se poate reprezenta un numr finit de cifre n sistemul de numeraie folosit. Din acest punct de vedere, numerele ntregi i cele reale sufer un tratament diferit, dup cum se detaliaz n continuare. Astfel, numerele ntregi reprezentabile n calculator, care formeaz mulimea notat cu I, constituie o submulime finit a mulimii numerelor ntregi Z: I Z . Reprezentarea acestor numere este exact, iar aritmetica cu aceste numere este de asemenea exact, excepie facnd operaia de mprire, n general. Astfel, domeniul valorilor ntregi reprezentabile n calculatorul numeric este:
I = {z Z / m I z M I } ,
unde mrimile m I i M I depind de urmtoarele: spaiul de memorie pus la dispoziie pentru acest tip de numere, baza de numeraie folosit, precum i modul de reprezentare a acestor numere. Notnd cu baza de reprezentare a numerelor ntregi i cu t I numrul de cifre n baza care pot fi reprezentate pe un cuvnt sau multiplu de cuvnt de memorie, se pot scrie relaiile: m I = t I 1 , M I = t I 1 1 . Dac baza de numeraie este doi i sunt t I = 16 cifre binare, atunci domeniul de reprezentare pentru numere ntregi este cuprins ntre 215 i 215 1 . Dac numrul de cifre binare este t I = 32 , atunci domeniul de reprezentare este cuprins ntre 2 31 i 2 31 1 . ncercarea de a opera cu numere care nu aparin domeniului I de reprezentare, determin, la majoritatea calculatoarelor numerice, emiterea unor
1.
mesaje de eroare fatal, programele implicate fiind abandonate: depire (binar) inferioar (dac z < m I ), respectiv depire (binar) superioar (dac z > M I ). Uzual este reprezentarea n baza de numeraie doi, alocndu-se o cifr binar pentru semn i t I 1 cifre pentru numr, anume reprezentarea n cod complementar fa de baza definit astfel:
z0 z , . z c = tI | z |, z < 0
Spre deosebire de numerele ntregi, n general numerele reale se reprezint aproximativ n calculatorul numeric. n continuare se definesc dou submulimi ale numerelor reale i anume: submulimea G care conine numerele reale care s-ar putea reprezenta n calculatorul numeric; submulimea F care conine numerele reale care se reprezint efectiv n calculatorul numeric. n timp ce mulimea G, ca i mulimea numerelor reale , are un numr infinit de elemente, mulimea F are un numr finit de elemente, relaia care se poate scrie ntre aceste mulimi fiind: F G . Metoda cea mai larg folosit pentru reprezentarea numerelor reale n calculator, numere care aparin mulimii F, este cea a virgulei mobile. Definiie:
Prin aritmetica virgulei mobile se neleg urmtoarele: (a) un model matematic de reprezentare a numerelor (definirea mulimii F); (b) o modalitate de reprezentare a numerelor din mulimea G n calculatorul numeric, altfel spus o modalitate de implementare n calculator a modelului (definirea operatorului de rotunjire, notat cu fl); (c) operaiile elementare: adunarea, scderea, nmulirea i mprirea definite cu numerele mulimii F. Acestea sunt detaliate n seciunile urmtoare ale acestui subcapitol. 1.1.1 Numere n virgul mobil
1.1
Corespunztor ultimei forme scrise, se denumesc i se noteaz urmtoarele elemente: mantis (fracie), notat cu f, reprezentnd numrul fracionar; exponent, notat cu e, reprezentnd exponentul la care este ridicat baza de numeraie folosit; baza de numeraie, notat cu , n cazul de fa egal cu 10;
numrul cifrelor mantisei, notat cu litera t. Rezult, aadar, c poziia virgulei poate fi modificat, cu adaptarea corespunztoare a exponentului. Din acest punct de vedere, se spune c numerele ntregi tratate anterior sunt reprezentate n virgul fix.
Definiie:
O mulime de numere n virgul mobil este definit prin urmtorii parametri: (a) - baza mainii de calcul; (b) t - numrul de cifre n baza utilizate pentru a reprezenta partea fracionar (precizia mainii de calcul); (c) L - cel mai mic exponent (limita de depire inferioar); (d) U - cel mai mare exponent (limita de depire superioar).
F = {x / x = f e } {0} , unde:
d1 f = + LeU
di
i
dt , 0 d i 1, i = 1, , t t
unde f este mantisa (fracia), e este exponentul, este baza mainii, t este numrul de cifre n baza i d i sunt cifrele bazei.
Dac pentru orice x F \ {0} , prima cifr a fraciei, d 1 , este diferit de zero, atunci se spune c sistemul de numere n virgul mobil este normalizat. n acest caz, poate fi scris relaia: 1 / | f |< 1 .
1.
Acestea se numesc: m cel mai mic numr real pozitiv reprezentabil, iar M cel mai mare numr real pozitiv reprezentabil. n acest caz, mulimea G se poate defini ca fiind: G = {x / m | x | M} {0} = [ M, m] {0} [m, M ] . ncercarea de a opera cu numere nenule care nu se ncadreaz ntre aceste limite conduce, pentru majoritatea calculatoarelor numerice, la emiterea unor mesaje de eroare fatal, care vor determina abandonarea programului: depire flotant inferioar (dac | x |< m ), respectiv depire flotant superioar (dac | x |> M ). n unele implementri, se atribuie valoarea zero pentru numerele din prima categorie menionat, fr emiterea mesajului de eroare, mpreun cu emiterea unui mesaj de avertizare.
Exemplul 1.2:
Se consider o mulime de numere n virgul mobil normalizat cu urmtorii parametri: = 2 , t = 3 , L = 1 , U = 2 . Rezult, conform relaiilor scrise mai sus: m = 1 / 4 i M = 7 / 2 . Elementele mulimii F sunt n acest caz:
.100 2 e , .101 2 e , .110 2 e , .111 2 e , e {1, 0, 1, 2} .
Numrul elementelor mulimii F este: card(F) = 33 . Elementele pozitive ale mulimii F sunt prezentate n Figura 1.1.
m= 1 4 M= 7 2
2-2
2-1
20
21
Fig. 1.1 Elementele pozitive ale mulimii numerelor n virgul mobil ( = 2 , t = 3 , L = 1 , U = 2 , reprezentare normalizat) Mulimea F este o mulime finit. ntre puterile succesive ale lui numerele din mulimea F sunt echidistante, numrul acestora fiind constant. Numrul de elemente ale lui F este dat de relaia: card(F) = 2 t 1 ( 1) ( U L + 1) + 1 ,
1.1
n care mrimea t 1 ( 1) = t t 1 reprezint numrul constant de elemente dintr-un interval definit de ctre dou puteri succesive ale bazei i U L + 1 reprezint numrul de intervale determinate de ctre puterile succesive ale lui . Produsul acestora este multiplicat cu 2 pentru a include att numerele pozitive, ct i pe cele negative. Valoarea 1 este adugat pentru elementul 0. Concluzii: (a) Numerele aparinnd mulimii F nu sunt echidistante n domeniul lor de existen; acestea sunt mai dese n apropierea originii (puterile lui scad) i mai rare spre extremitile mulimii F (puterile lui cresc). (b) Numerele sunt echidistante numai ntre puterile succesive ale lui . (c) Datorit faptului c mulimea F are un numr finit de elemente, nu se pot reprezenta continuu, n detaliu, toate numerele reale; mai mult, fiecare numr din mulimea F este asociat unui ntreg interval din mulimea G, deci unui ntreg interval de numere reale. Uzual este reprezentarea normalizat n baza de numeraie doi, alocndu-se o poziie binar pentru semn, un numr de poziii binare pentru exponent i t cifre binare pentru mantis. Deoarece tipul de semn al numrului este memorat, pentru fracie se realizeaz o reprezentare a ntregului d 1d 2 d t t (valoarea absolut a mantisei). De asemenea, pentru a nu se memora semnul i pentru exponent, se reprezint un numr ntreg pozitiv: C = e + E 0 , mrimea E numindu-se deplasament, iar mrimea C numindu-se caracteristic. Cum reprezentarea este normalizat, prima cifr a fraciei este d 1 = 1 i nu se mai reprezint. Astfel, se ctig nc o poziie binar pentru fracie. Se spune c se realizeaz o reprezentare normalizat cu poziie binar ascuns (n limba englez, hidden bit).
Exemplul 1.3:
Pentru = 2 i 32 de poziii binare pentru un numr real, reprezentarea se realizeaz n simpl precizie, iar pentru 64 de poziii binare pentru un numr real, reprezentarea se realizeaz n dubl precizie. Dup standardul IEEE (abreviere din limba englez, the Institute of Electrical and Electronics Engineers Inc. USA), pentru = 2 rezult t = 24 , L = 126 i U = 127 pentru reprezentarea n simpl precizie i t = 53 , L = 1022 , U = 1023 pentru reprezentarea n dubl precizie. Rezult, de asemenea, pentru reprezentarea n simpl precizie: m 10 38 i M 10 +38 , iar pentru reprezentarea n dubl precizie: m 10 308 i M 10 +308 .
absolut a mantisei). De asemenea, pentru a nu se memora semnul i pentru exponent, se reprezint un numr ntreg pozitiv: C = e + E 0 , mrimea E numindu-se deplasament, iar mrimea C numindu-se caracteristic. Cum reprezentarea este normalizat, prima cifr a fraciei este d 1 = 1 i nu se mai reprezint. Astfel, se ctig nc o poziie binar pentru fracie. Se spune c se realizeaz o reprezentare normalizat cu poziie binar ascuns (n limba englez, hidden bit).
Exemplul 1.3:
Pentru = 2 i 32 de poziii binare pentru un numr real, reprezentarea se realizeaz n simpl precizie, iar pentru 64 de poziii binare pentru un numr real, reprezentarea se realizeaz n dubl precizie. Dup standardul IEEE (abreviere din limba englez, the Institute of Electrical and Electronics Engineers Inc. USA), pentru = 2 rezult t = 24 , L = 126 i U = 127 pentru reprezentarea n simpl precizie i t = 53 , L = 1022 , U = 1023 pentru reprezentarea n dubl precizie. Rezult, de asemenea, pentru reprezentarea n simpl precizie: m 10 38 i M 10 +38 , iar pentru reprezentarea n dubl precizie: m 10 308 i M 10 +308 .
1.1.1 Reprezentarea aproximativ a numerelor. Scheme de rotunjire
Oricare ar fi un numr x G , x 0 , acesta poate fi scris sub forma: x = f e + g et . Se vor considera fraciile normalizate, deci sunt ndeplinite relaiile: 1 / | f |< 1, 0 | g |< 1 . (1.1)
1.
Nu toate numerele din mulimea G se pot reprezenta exact, datorit faptului c numai t cifre n baza pot fi reinute pentru fracie. n aceste condiii, se spune c numrul este reprezentat aproximativ (rotunjit). Se definete operatorul de rotunjire fl: fl : G F . Exist mai multe modaliti de definire a acestuia i anume: (a)
rotunjirea prin tiere (trunchiere): fl(x) este cel mai apropiat element c F , de x G , cu proprietatea | c || x | .
Aceast modalitate de rotunjire este ilustrat n Figura 1.2. Astfel, oricare ar fi numrul x [c 2 , c 3 ) , acesta va fi reprezentat prin elementul c 2 . Expresia aproximantului pentru numrul real x este: fl( x ) = f e .
x c1 c2 c3 F
Fig. 1.2 Principiul rotunjirii prin tiere (trunchiere): fl( x ) = c 2 , x [c 2 , c 3 ) Exemplul 1.4:
Se consider un sistem de numere n virgul mobil cu = 10 , t = 4 . Fie numrul x = 12945,734 . Numrul x se poate scrie sub forma (1.1):
x = 0,12945734 10 5 = 0,1294 10 5 + 0,5734 10 5 4 , unde f = 0,1294; e = 5; g = 0,5734 . Rezult, aadar, valoarea reinut pentru
reprezentare i rotunjit prin tiere: fl( x ) = 0,1294 10 5 . Aceasta corespunde numrului 12940 x . (b)
rotunjirea simetric: fl(x) este cel mai apropiat element c F , de x G (a se vedea Figura 1.3).
Analiznd Figura 1.3, rezult c oricare ar fi numerele x i y din intervalul definit de elementele aflate la mijlocul intervalelor (c1 , c 2 ) i, respectiv, (c 2 , c 3 ) , acestea vor fi reprezentate prin elementul c 2 al mulimii F, expresia pentru fl(x) fiind n acest caz:
f e , | g |< 0, 2. fl( x ) = f e e t , | g | 0, 2
1.2
n ultima expresie, semnul + se consider pentru f > 0 i semnul - se consider pentru f < 0 .
x c1 c2 y c3 F
Neajunsul acestei maniere de reprezentare const n faptul c dac numrul x este situat la jumtatea distanei dintre dou numere consecutive din mulimea F, atunci fl(x) poate lua oricare din cele dou valori nvecinate. (c) rotunjirea uniform (metoda cifrei pare) n acest caz, fl(x) are urmtoarea expresie: f f fl( x ) = f f e , e e t , e e t , e , 2 | g |> 0, 2 . | g |= 0, , ultima cifra f impara 2 | g |= 0, , ultima cifra f para 2 | g |< 0,
n aceast expresie de definiie, semnul + se consider pentru f > 0 i semnul - se consider pentru f < 0 . Aceast modalitate de reprezentare este adoptat i de standardul IEEE.
Exemplul 1.5:
x = 12944,9942 = 0,1294 10 5 + 0,4994 10 5 4 . Se observ c |g| este mai mic dect 0.5, deci: fl( x ) = 0,1294 10 5 (= 12940 x ) . x = 129551 = 0,1295 10 6 + 0,51 10 64 . Se observ c |g| este mai mare dect 0.5, deci: fl( x ) = 0,1295 10 6 + 10 6 4 (= 129600 x ) . x = 1297,5 = 0,1297 10 4 + 0,5 10 4 4 .
(b)
(c)
1.
Se observ c |g| este egal cu 0.5 i ultima cifr a lui f este impar, deci: fl( x ) = 0,1297 10 4 + 10 4 4 (= 1298 x ) . (d)
x = 1296,5 = 0,1296 10 4 + 0,5 10 4 4 . Se observ c |g| este egal cu 0.5 i ultima cifr a lui f este par, deci: fl( x ) = 0,1296 10 4 (= 1296 x ) .
Se definesc operaiile elementare care au loc cu elementele unei mulimi F de numere n virgul mobil. Aceste modaliti de definire sunt implementate uzual n calculatoarele numerice.
A. Adunarea
Oricare ar fi dou numere x i y din mulimea G, pentru care exist fl(x) i fl(y) aparinnd mulimii F, numrului x + y i se asociaz numrul fl( x + y ) obinut prin aplicarea urmtorului algoritm: Pas 1: se reprezint intern numerele x i y prin fl(x) i, respectiv, fl(y). Pas 2: dac numerele au exponent diferit, atunci numrul cu exponent mai mic se aduce la o form n care exponentul s fie egal cu cel al celuilalt termen, operaiune care se numete denormalizare. Acest lucru se realizeaz prin deplasarea mantisei spre dreapta, insernd zerouri dup virgul.Astfel, se deplaseaz mantisa attea poziii cte sunt necesare pentru a crete exponentul la valoarea exponentului celuilalt termen. Pas 3: se adun mantisele i din rezultat se pstreaz t cifre. Pas 4: dac este necesar, se normalizeaz rezultatul. Observaii: 1. Deplasarea mantisei spre dreapta determin creterea exponentului, iar deplasarea spre stnga a mantisei determin scderea exponentului. 2. Scderea se realizeaz la fel ca adunarea, cu deosebirea c mantisele se scad. n fapt, scderea reprezint o adunare n care scztorul are semn schimbat.
Consecina esenial a acestui mod de definire este aceea c, spre deosebire de aritmetica real, adunarea n virgul mobil nu este asociativ. Exemplul 1.6:
Se consider o aritmetic a virgulei mobile cu = 10 , t = 3 , reprezentare normalizat i rotunjire prin tiere. Fie calculul: 0,001 + 1 1 . Asociind primii
1.2
doi termeni, se ajunge la rezultatul fl(fl(10 3 + 1) 1) = 0 , care este eronat. n cazul asocierii ultimilor doi termeni se obine: fl(10 3 + fl(1 1)) = 10 3 , care este rezultatul corect.
Exemplul 1.7:
Se consider o aritmetic a virgulei mobile cu = 10 , t = 3 , reprezentare normalizat i rotunjire prin tiere. Fie calculul: 1,001 1 . Se obine: fl(1,001 1) = 0 , rezultat eronat.
Exemplele 1.6 i 1.7 pun n eviden dou fenomene nedorite i generatoare de erori, care pot apare la efectuarea unei adunri n virgul mobil:
(a)
omiterea catastrofal: apare atunci cnd se adun doi termeni i valoarea absolut a unui termen este mai mic dect precizia de reprezentare a celuilalt termen; n acest caz, rezultatul este dat de termenul cu valoare absolut mai mare (aceast situaie este ilustrat n Exemplul 1.6). neutralizarea termenilor: apare atunci cnd se adun numere cu semne diferite i cu valori absolute apropiate; n acest caz, n mod eronat, rezultatul este nul (aceast situaie este ilustrat n Exemplul 1.7).
(b)
Precizia calculelor numerice este caracterizat de dou mrimi constante a cror valoare este dependent de tipul mainii de calcul folosite. Cele dou valori menionate, numite i constante de main, sunt introduse prin urmtoarea definiie. Definiie: Epsilonul main pentru adunare (notat + m ) reprezint cel mai mic numr real pozitiv reprezentabil care schimb, prin adunare, unitatea mainii de calcul: fl(1 + + m ) >1. Epsilonul main pentru scdere (notat m ) reprezint cel mai mic numr real pozitiv reprezentabil care schimb, prin scdere, unitatea mainii de calcul: fl(1 m ) < 1.
n Figura 1.4 sunt ilustrate cele dou definiii. Conform Figurii 1.4, sunt ndeplinite relaiile: adunare: fl(1 + + m ) > 1, fl(1 + c) = 1 ;
1.
c F
m-
m+
Exemplul 1.8:
Valorile celor dou constante de main, n standardul IEEE, sunt urmtoarele: pentru reprezentarea n simpl precizie:
+ m = 5.96 10 8 ; m = 1.19 10 7 ;
Urmtorul algoritm, descris n limbaj pseudocod (a se vedea Anexa B), descrie modul de calcul al epsilonului main pentru adunare, rezultatul final gasindu-se n variabila eps_p: atribuie eps_p 1 ct timp ( 1 + eps _ p > 1 ) execut
atribuie eps_p 0.5*eps_p atribuie eps_p 2*eps_p. B. nmulirea
Oricare ar fi x i y, dou numere din mulimea G, pentru care exist fl(x) i, respectiv, fl(y) aparinnd multimii F, numrului x y i se asociaz numrul fl( x y) , care se determin cu algoritmul urmtor: Pas 1: se reprezint intern numerele x i y prin fl(x) i, respectiv, fl(y). Pas 2: se nmulesc fraciile i se adun exponenii. Pas 3: din fracia rezultat se opresc t cifre. Pas 4: dac este necesar, se normalizeaz rezultatul. Observaii: 1. nmulirea nu este asociativ.
1.2
Se consider o aritmetic a virgulei mobile cu = 10 , t = 3 , reprezentare normalizat i rotunjire prin tiere. Fie x = 22,547 i y = 0,43936 . Rezult fl( x y) = 9,900 .
1.2
n general, n cursul rezolvrii unei probleme cu ajutorul calculatorului numeric, precizia calculelor este influenat de mai muli factori. Astfel, eroarea total dintr-un calcul numeric este generat de trei surse principale de erori: (a) (b) (c) erori inerente; erori de metod (de calcul); erori de reprezentare.
Erorile inerente provin din datele iniiale ale problemei de rezolvat (date care pot fi rezultatele unor msurtori experimentale sau ale altor calcule anterioare) i/sau erorile provenite din faptul c se lucreaz cu un model aproximativ al fenomenului real implicat n problema de rezolvat. Erorile de metod (sau de trunchiere) sunt datorate metodei numerice utilizate. n general, este necesar un numr mare de operaii pentru a putea ajunge la soluia exact (de regul, atunci cnd o expresie de calcul conine o infinitate de termeni) i calculele sunt oprite, n funcie de un anumit criteriu, atunci cnd se ajunge la o anumit precizie acceptabil (aadar contientizat). Erorile de reprezentare sunt datorate posibilitii efective de a reprezenta numerele n calculatorul numeric. Acest tip de erori se manifest n datele iniiale, intermediare i n cele de ieire care constituie rezultatele finale.
1.1
n general, n cursul rezolvrii unei probleme cu ajutorul calculatorului numeric, precizia calculelor este influenat de mai muli factori. Astfel, eroarea total dintr-un calcul numeric este generat de trei surse principale de erori: (a) (b) (c) erori inerente; erori de metod (de calcul); erori de reprezentare.
Erorile inerente provin din datele iniiale ale problemei de rezolvat (date care pot fi rezultatele unor msurtori experimentale sau ale altor calcule anterioare) i/sau erorile provenite din faptul c se lucreaz cu un model aproximativ al fenomenului real implicat n problema de rezolvat. Erorile de metod (sau de trunchiere) sunt datorate metodei numerice utilizate. n general, este necesar un numr mare de operaii pentru a putea ajunge la soluia exact (de regul, atunci cnd o expresie de calcul conine o infinitate de termeni) i calculele sunt oprite, n funcie de un anumit criteriu, atunci cnd se ajunge la o anumit precizie acceptabil (aadar contientizat). Erorile de reprezentare sunt datorate posibilitii efective de a reprezenta numerele n calculatorul numeric. Acest tip de erori se manifest n datele iniiale, intermediare i n cele de ieire care constituie rezultatele finale.
1.2
1.2.1 Natura problemelor de calcul Se consider o anumit problem de calcul. Din punctul de vedere al matematicii reale, problema lucreaz cu datele exacte notate cu D. Se noteaz generic cu G ceea ce se dorete a calcula, implicnd anumite relaii matematice exacte. Aceasta poate fi scris sub forma unei aplicaii: D G (D) , cum este
prezentat principial n Figura 1.6. Aadar, G(D) reprezint soluia matematic exact, obinut lucrnd cu datele exacte D. Se consider D ca fiind datele D afectate de eroare (datele D perturbate). n acest caz, soluia exact matematic a problemei de calcul corespunztoare
1.
G D G(D)
D* G
spaiul datelor spaiul soluiilor
G(D )
*
Altfel spus, o problem este bine condiionat dac mici perturbaii n una sau toate datele iniiale ale problemei conduc la mici perturbaii n datele de ieire (rezultate sau soluii). Observaie: Pentru a caracteriza apropierea sau ndeprtarea dintre D i D , respectiv G (D) i G (D ) , trebuie cunoscute dou elemente: natura datelor D i natura soluiilor G (D) . Dac D i G (D) aparin mulimii numerelor complexe, atunci se va folosi funcia modul
pentru
aprecia
diferenele
| D D |
i,
respectiv,
| G ( D) G ( D ) | . Dac D i G (D) sunt elementele unui spaiu liniar finit dimensional (vectori, matrice), se vor folosi, corespunztor, norme vectoriale, respectiv matriciale. n cele ce urmeaz, se noteaz generic erorile absolute ale mrimilor implicate cu:
1.2
e D =| D D | i e G =| G (D) G (D ) | . Se poate defini numrul de condiie al problemei G ca fiind raportul dintre eroarea absolut n soluiile problemei de calcul i eroarea absolut n datele de intrare ale problemei de calcul:
k (G ) = e G / e D .
Dac acest numr de condiie este egal cu 1 sau are valori apropiate de 1, se spune c problema este bine condiionat. Dac numrul de condiie este mare sau foarte mare, atunci erorile n datele iniiale sunt amplificate n soluia problemei de calcul exact matematic, problema de calcul fiind prost condiionat.
Exemplul 1.13:
Rezolvarea ecuaiilor polinomiale este o problem prost condiionat. Fie Pn ( x ) un polinom de gradul n: Pn ( x ) = a 0 x n + a 1 x n 1 + + a n 1 x + a n , unde a i , i = 1,..., n; a 0 0 sunt coeficienii polinomului. Se dorete determinarea valorilor lui x pentru care Pn ( x ) = 0 . n cele ce urmeaz, se va demonstra c mici variaii n coeficienii polinomului conduc la variaii mari n soluiile calculate reprezentnd rdcinile polinomului. Se consider, n continuare, o alt problem i anume cea a calculului valorilor proprii ale unei matrice reale ptratice, pe baza ecuaiei caracteristice ataate. Se consider matricea A i varianta perturbat a acesteia, A p , de forma:
a 1 0 0 a 1 0 0 0 a 1 0 a 1 A= 0 , A p = 0 . 1 1 nxn 0 a nxn 0 0 a
Ecuaia caracteristic ataat matricei A p este: p n ( ) = det( I n A p ) = 0 , unde I n este matricea unitate de ordinul n. Rezult: p n () = ( a ) n (1) n . Ecuaia p n ( ) = 0 conduce la ( a ) n = (1) n . Aadar, o perturbaie n
1.
| | n soluiile calculate.
Se consider n = 10 i a = 1 . Pentru cazul n care = 0 , rezult valorile proprii i = a = 1, i = 1, ,10 . Pentru cazul n care 0, = 10 10 , atunci valorile proprii sunt
Rezult:
e D = 10 10 i e G = 10 1 . Dac = 10 10 , atunci se obin 10 valori proprii complex conjugate, dispuse n planul complex pe un cerc cu centrul n punctul de coordonate (a,0) i de raz egal cu 10 10 10 = 0.1 . Cu valorile numerice considerate, n cazurile particulare ale unei perturbaii nenule, numrul de condiie al acestei probleme este: k = e G / e D = 10 1 / 10 10 = 10 9 , deci eroarea din datele iniiale ale problemei de calcul a fost amplificat de 10 9 ori n soluiile calculate. n practic, datorit acestui fapt, nu se calculeaz valorile proprii ale unei matrice prin aducerea matricei la forma canonic Jordan, utilizat n cadrul acestui exemplu, pentru c pot apare perturbaii cel puin de genul celor prezentate.
1.2.2 Caracterizarea algoritmilor
Se consider o problem de calcul oarecare care lucreaz cu setul de date exacte D. Soluia exact matematic a acestei probleme este dat de funcia G. Se consider, n plus, datele perturbate ale problemei, D . La implementarea funciei G pe un calculator numeric, practic se lucreaz cu un algoritm G (a se vedea Figura 1.7).
G D* G(D*)
D G*
spaiul datelor spaiul soluiilor
G (D)
*
1.2
De exemplu, considernd c G este o problem bine condiionat i c G implementeaz exact soluia G, totui G (D) G (D) datorit aritmeticii n virgul mobil. Natura algoritmului este teoretic caracterizat de urmtoarele dou mrimi: (a) soluia matematic exact a problemei de calcul corespunztoare setului de date perturbate, G (D ) ; (b) soluia algoritmului G corespunztoare setului de date exacte, G (D) .
Definiie: Un algoritm G se numete stabil numeric, dac datele exacte i datele perturbate ale problemei de calcul G fiind apropiate ntr-un anumit sens, atunci i soluia exact matematic corespunztoare setului de date perturbate G(D*) este apropiat, ntr-un anumit sens, de soluia algoritmului corespunztoare setului de date exacte G*(D). Altfel, algoritmul se spune c este instabil din punct de vedere numeric.
Altfel spus, erorile din datele de intrare sunt micorate de un algoritm stabil numeric, un algoritm instabil numeric amplificndu-le. Observaii: (a) Nu se poate atepta ca un algoritm stabil numeric s rezolve o problem prost condiionat cu o precizie mai mare dect a datelor de intrare. (b) Un algoritm instabil numeric furnizeaz, de regul, rezultate eronate chiar pentru probleme bine condiionate.
Definiie: Un algoritm numeric se spune c este general dac este aplicabil pentru un domeniu larg de date de intrare. Definiie: Un algoritm se spune c este sigur n funcionare, dac are prevzut un mecanism care s avertizeze atunci cnd erorile au crescut excesiv de mult.
Observaie: Un algoritm instabil numeric poate fi sigur n funcionare, dac este capabil s detecteze instabilitatea numeric.
1.
Concluzie: Rolul calculului numeric (al analizei numerice) este de a analiza natura problemelor de calcul i de a realiza o proiectare optim a algoritmilor. Dac problema de calcul este prost condiionat, atunci aceasta se reformuleaz, echivalent, obinnd o problem bine condiionat. Mai departe, pentru problema bine condiionat rezultat, se proiecteaz un algoritm care s fie stabil numeric, general i sigur n funcionare. Exemplul 1.14:
Un exemplu de algoritm instabil numeric este cel folosit pentru calculul integralei definite: I n = x n e x 1 dx ,
0 1
Se consider un calculator cu = 10 i t = 6 . Vor rezulta urmtoarele valori: I1 0.367879 I 9 0.068400 < 0 ! dar, pentru I 9 , integrandul x 9 e x 1 este pozitiv pentru x (0,1) . Aadar, s-a obinut pentru I 9 o valoare eronat. Singura eroare comis a fost cea n estimarea lui 1 / e , care determin o eroare n evaluarea lui I 1 egal cu e1 = 4.412 10 7 . Pentru evaluarea lui I 2 , eroarea comis este e 2 ( 2) e1 ; pentru I 3 eroarea comis este e 3 ( 3) e 2 i aa mai departe pn la I 9 cnd I 9 + e 9 = 0.0916 , ceea ce reprezint se obine o eroare e 9 = 9!e1 = 0.1601 . rezultatul exact cu patru cifre zecimale. Aceste rezultate arat c algoritmul utilizat este instabil numeric. Stabilizarea algoritmului se poate realiza rescriind relaia de recuren sub forma:
I n 1 = (1 I n ) / n = 1 / n I n / n , n = , 3, 2 .
1.2
I n = x n e x 1 dx x n dx =
0 0
1 , n +1
deoarece | e x 1 |< 1 pentru x (0,1) . Aadar, I n n 0 . Pentru diverse valori ale lui n se obin urmtoarele erori comise la calculul integralei definite, considernd I 20 = 0 :
n = 20 n = 19
e 20 1 / 21 ; e19 e 20 / 20 ;
n = 15 n =9
1.
2.1
Formularea problemei
A x = b, A nn , b n1 . (2.1)
Problema de calcul este determinarea unei soluii x n1 a sistemului de ecuaii (2.1) sau, altfel spus, determinarea unui vector care s satisfac ecuaia dat.
Definiie: Oricare ar fi matricea A nn , aceasta se numete inversabil (nesingular) dac exist o matrice X nn astfel nct s fie ndeplinit relaia: A X = X A = I n .
n relaia anterioar, I n este notaia pentru matricea unitate de ordinul n. n continuare, se noteaz cu A 1 matricea X care satisface relaia din definiia anterioar.
Teorem de existen i unicitate: Dac matricea A nn este inversabil, atunci oricare ar fi vectorul b n1 exist i este unic soluia x a ecuaiei (2.1).
Soluia se poate scrie sub forma: x = A 1 b . (2.2) Observaii: 1. A 1 este notaia pentru inversa matricei A. n practic nu se recomand calculul matricei inverse i apoi aplicarea relaiei (2.2). Un exemplu care s ilustreze aceasta este urmtorul: se consider ecuaia a x = b , n care a = 7 i b = 21 . Se mai consider o aritmetic a virgulei mobile cu = 10 , t = 6 i
2.1
Formularea problemei
rotunjire prin tiere. Atunci soluia ecuaiei este: x = a 1 b = (7) 1 21 = 0.142857 21 = 2.99997 . Acelai sistem se poate rezolva direct i anume: x = 21 / 7 = 3 , aceasta reprezentnd soluia exact. 2. Nu se recomand rezolvarea ecuaiei prin regula Cramer: x i = i / , i = 1,..., n , unde reprezint determinantul matricei A, iar
i
reprezint
determinanii matricelor obinute prin nlocuirea coloanei numrul i a matricei A cu termenul liber asociat ecuaiei (2.1). Un exemplu pentru aceast situaie este acela n care considernd n = 20 , rezult c trebuie estimai 21 de determinani care, dac sunt calculai dup definiie, necesit calculul a 20! termeni care implic 19 nmuliri/termen, deci 19 20! operaii n virgul mobil. O operaie n virgul mobil nseamn o nmulire i o adunare: q = v w z . Pentru un calculator cu 100000 nmuliri/secund, rezult c numai pentru efectuarea nmulirilor sunt necesari 3 10 8 ani, la care se adaug erorile de rotunjire!
Exemplul 2.1:
Problemele de tipul (2.1) sunt foarte des ntlnite n practic. Ca exemplu generic, se consider un proces dinamic cu n mrimi de intrare ( u 1 , ..., u n ) i o mrime de ieire (y). Corespunztor funcionrii acestuia n regim staionar sau n regim dinamic, pentru care se realizeaz o liniarizare a modelului neliniar dup un punct de funcionare, modelul intrare-ieire al procesului poate fi descris de o ecuaie de forma:
y( u 1 , , u n ) = c1 u 1 + + c n u n .
(2.3)
Se consider un numr de n experimente prin care se impun anumite valori mrimilor de intrare i se msoar valorile pe care le ia mrimea de ieire a procesului. Rezultatele obinute pot fi tabelate astfel: nr. experiment 1 u1 a11 un a1n y b1
ai1
ain
bi
10
1.
an1
ann
bn
Notnd cu A matricea format din valorile pe care le iau mrimile de intrare ale procesului, A = [a ij ]1i n i cu b = [ b i ]1i n vectorul valorilor mrimii de
1 j n
ieire, relaia (2.3) se poate rescrie sub forma A x = b, A nn , b n1 . (2.1(2.1), unde x = [c1 c 2 c n ] T , T fiind notaia pentru operaia de transpunere vectorial. Rezolvarea ecuaiei rezultate constituie, n acest caz, o identificare a modelului pentru regimul static de funcionare a procesului. Problema aceasta va avea o soluie, dac i numai dac liniile sau coloanele matricei experimentelor [A | b ] sunt vectori liniari independeni, dup cum se va specifica ulterior.
Metodele numerice de rezolvare a unui sistem de ecuaii algebrice liniare se mpart n urmtoarele dou categorii: metode directe i metode iterative (indirecte). Metodele directe se bazeaz pe reducerea sistemului (2.1) la un sistem echivalent, direct rezolvabil prin mijloace elementare. Principial, aceasta folosete eliminarea progresiv a necunoscutelor, numit i eliminare gaussian. Practic, prin transformri elementare de echivalen, se aduce matricea A a sistemului la anumite forme tipice: a) forma superior triunghiular: u 11 u 1n 0 ; U= 0 0 u nn b) forma inferior triunghiular: l11 0 0 . L= 0 l n1 l nn Procedura de transformare se numete triangularizare. Astfel, se furnizeaz soluia exact a sistemului de ecuaii (2.1), n cazurile (ideale) n care erorile de rotunjire sunt absente. Numrul de operaii n virgul mobil, necesare triangularizrii unei matrice ptratice de ordin n, este de ordinul lui n 3 . De aceea, aceste metode se recomand pentru rezolvarea unor sisteme de ecuaii algebrice liniare de ordin mai mic dect 10 2 .
2.2
11
Metodele iterative au la baz construirea unui ir de aproximaii pentru [k ] soluia sistemului (2.1), x , k = 0,1, care s fie convergent pentru k la soluia adevrat, x :
k
lim || x x
[k ]
|| = 0 .
Practic, calculele se opresc la un index de iterare [s], atunci cnd este ndeplinit o condiie de forma: [s ] [ s 1] || x x || impus , sau, altfel spus, x constituie o aproximare satisfctoare a soluiei calculate. Avnd n vedere faptul c pentru o singur iteraie numrul de operaii n virgul mobil este de ordinul lui n 2 , asemenea metode se folosesc pentru sisteme de ordin mare i anume 10 2 10 4 .
[s]
2.2
sau minori principali directori. Teorem: Dac matricea A nn are toate submatricele principale inversabile (nesingulare), atunci exist matricele L, D, U nn astfel nct:
A =LDU
(2.4)
unde L este o matrice inferior triunghiular, D este o matrice diagonal i U este o matrice superior triunghiular.
Se pot face, n cele ce urmeaz, urmtoarele observaii: 1. relaia (2.4) se numete factorizare L-D-U a matricei A; 2. uzuale sunt factorizrile: A = L U ; 3. demonstraia teoremei enunate este constructiv, constituind nsui algoritmul de descompunere L-U a matricei A;
12
1.
4. algoritmul de descompunere este n fond procedeul de eliminare gaussian, prin care matricea A este adus la forma superior triunghiular n urma unui ir de transformri de asemnare. Transformrile efectuate asupra matricei A se acumuleaz ntr-o matrice inferior triunghiular, cu elementele de pe diagonala principal egale cu 1. Acest tip de descompunere se numete descompunere Doolittle. 5. considernd descompunerea L-U a matricei sistemului A, A = L U , atunci rezolvarea sistemului (2.1) implic dou subetape: a. rezolvarea sistemului L y = b , etap numit i substituie nainte, obinnd soluia intermediar y. Determinarea componentelor vectorului y = [ y i ]1i n are loc din aproape n aproape: se ncepe cu y1 (prima ecuaie), se nlocuiete n a doua ecuaie determinnd pe y 2 i aa mai departe. rezolvarea sistemului U x = y , n care necunoscuta este x , etap numit i substituie invers. n acest caz, determinarea componentelor vectorului x are loc pornind de la ultima ecuaie. Aceast manier de descompunere i de rezolvare se ncadreaz n aanumita rezolvare a sistemelor determinate de ecuaii algebrice liniare prin triangularizare simpl (direct).
b.
2.1
Formularea problemei
A x = b, A nn , b n1 .
(2.1)
Problema de calcul este determinarea unei soluii x n1 a sistemului de ecuaii (2.1) sau, altfel spus, determinarea unui vector care s satisfac ecuaia dat.
Definiie: Oricare ar fi matricea A nn , aceasta se numete inversabil (nesingular) dac exist o matrice X nn astfel nct s fie ndeplinit relaia: A X = X A = I n .
n relaia anterioar, I n este notaia pentru matricea unitate de ordinul n. n continuare, se noteaz cu A 1 matricea X care satisface relaia din definiia anterioar.
Teorem de existen i unicitate: Dac matricea A nn este inversabil, atunci oricare ar fi vectorul b n1 exist i este unic soluia x a ecuaiei (2.1).
Soluia se poate scrie sub forma: x = A 1 b . Observaii: 1. A 1 este notaia pentru inversa matricei A. n practic nu se recomand calculul matricei inverse i apoi aplicarea relaiei (2.2). Un exemplu care s ilustreze aceasta este urmtorul: se consider ecuaia a x = b , n care a = 7 i b = 21 . Se mai consider o aritmetic a virgulei mobile cu = 10 , t = 6 i (2.2)
36
2.
rotunjire prin tiere. Atunci soluia ecuaiei este: x = a 1 b = (7) 1 21 = 0.142857 21 = 2.99997 . Acelai sistem se poate rezolva direct i anume: x = 21 / 7 = 3 , aceasta reprezentnd soluia exact. 2. Nu se recomand rezolvarea ecuaiei prin regula Cramer: x i = i / , i = 1,..., n , unde reprezint determinantul matricei A, iar i reprezint determinanii matricelor obinute prin nlocuirea coloanei numrul i a matricei A cu termenul liber asociat ecuaiei (2.1). Un exemplu pentru aceast situaie este acela n care considernd n = 20 , rezult c trebuie estimai 21 de determinani care, dac sunt calculai dup definiie, necesit calculul a 20! termeni care implic 19 nmuliri/termen, deci 19 20! operaii n virgul mobil. O operaie n virgul mobil nseamn o nmulire i o adunare: q = v w z . Pentru un calculator cu 100000 nmuliri/secund, rezult c numai pentru efectuarea nmulirilor sunt necesari 3 10 8 ani, la care se adaug erorile de rotunjire!
Exemplul 2.1:
Problemele de tipul (2.1) sunt foarte des ntlnite n practic. Ca exemplu generic, se consider un proces dinamic cu n mrimi de intrare ( u 1 , ..., u n ) i o mrime de ieire (y). Corespunztor funcionrii acestuia n regim staionar sau n regim dinamic, pentru care se realizeaz o liniarizare a modelului neliniar dup un punct de funcionare, modelul intrare-ieire al procesului poate fi descris de o ecuaie de forma: y( u 1 , , u n ) = c1 u 1 + + c n u n . (2.3)
Se consider un numr de n experimente prin care se impun anumite valori mrimilor de intrare i se msoar valorile pe care le ia mrimea de ieire a procesului. Rezultatele obinute pot fi tabelate astfel: nr. experiment 1 u1 a11 un a1n y b1
ai1
ain
bi
2.1
Formularea problemei
37
an1
ann
bn
Notnd cu A matricea format din valorile pe care le iau mrimile de intrare ale procesului, A = [a ij ]1i n i cu b = [b i ]1i n vectorul valorilor mrimii de
1 j n
ieire, relaia (2.3) se poate rescrie sub forma A x = b, A nn , b n1 . (2.1(2.1), unde x = [c1 c 2 c n ] T , T fiind notaia pentru operaia de transpunere vectorial. Rezolvarea ecuaiei rezultate constituie, n acest caz, o identificare a modelului pentru regimul static de funcionare a procesului. Problema aceasta va avea o soluie, dac i numai dac liniile sau coloanele matricei experimentelor [A | b] sunt vectori liniari independeni, dup cum se va specifica ulterior.
Metodele numerice de rezolvare a unui sistem de ecuaii algebrice liniare se mpart n urmtoarele dou categorii: metode directe i metode iterative (indirecte). Metodele directe se bazeaz pe reducerea sistemului (2.1) la un sistem echivalent, direct rezolvabil prin mijloace elementare. Principial, aceasta folosete eliminarea progresiv a necunoscutelor, numit i eliminare gaussian. Practic, prin transformri elementare de echivalen, se aduce matricea A a sistemului la anumite forme tipice: a) forma superior triunghiular: u 11 u 1n 0 ; U= 0 0 u nn b) forma inferior triunghiular: l11 0 0 . L= 0 l n1 l nn Procedura de transformare se numete triangularizare. Astfel, se furnizeaz soluia exact a sistemului de ecuaii (2.1), n cazurile (ideale) n care erorile de rotunjire sunt absente. Numrul de operaii n virgul mobil, necesare triangularizrii unei matrice ptratice de ordin n, este de ordinul lui n 3 . De aceea, aceste metode se recomand pentru rezolvarea unor sisteme de ecuaii algebrice liniare de ordin mai mic dect 10 2 .
38
2.
Metodele iterative au la baz construirea unui ir de aproximaii pentru [k ] soluia sistemului (2.1), x , k = 0,1, care s fie convergent pentru k la soluia adevrat, x :
k
lim || x x
[k]
|| = 0 .
Practic, calculele se opresc la un index de iterare [s], atunci cnd este ndeplinit o condiie de forma: [s] [ s 1] || x x || impus , sau, altfel spus, x
[s]
Avnd n vedere faptul c pentru o singur iteraie numrul de operaii n virgul mobil este de ordinul lui n 2 , asemenea metode se folosesc pentru sisteme de ordin mare i anume 10 2 10 4 .
2.2
sau minori principali directori. Teorem: Dac matricea A nn are toate submatricele principale inversabile (nesingulare), atunci exist matricele L, D, U nn astfel nct:
A =LDU
(2.4)
unde L este o matrice inferior triunghiular, D este o matrice diagonal i U este o matrice superior triunghiular.
Se pot face, n cele ce urmeaz, urmtoarele observaii: 1. relaia (2.4) se numete factorizare L-D-U a matricei A; 2. uzuale sunt factorizrile: A = L U ; 3. demonstraia teoremei enunate este constructiv, constituind nsui algoritmul de descompunere L-U a matricei A;
2.2
39
4. algoritmul de descompunere este n fond procedeul de eliminare gaussian, prin care matricea A este adus la forma superior triunghiular n urma unui ir de transformri de asemnare. Transformrile efectuate asupra matricei A se acumuleaz ntr-o matrice inferior triunghiular, cu elementele de pe diagonala principal egale cu 1. Acest tip de descompunere se numete descompunere Doolittle. 5. considernd descompunerea L-U a matricei sistemului A, A = L U , atunci rezolvarea sistemului (2.1) implic dou subetape: a. rezolvarea sistemului L y = b , etap numit i substituie nainte, obinnd soluia intermediar y. Determinarea componentelor vectorului y = [ y i ]1i n are loc din aproape n aproape: se ncepe cu y1 (prima ecuaie), se nlocuiete n a doua ecuaie determinnd pe y 2 i b. aa mai departe. rezolvarea sistemului U x = y , n care necunoscuta este x , etap numit i substituie invers. n acest caz, determinarea componentelor vectorului x are loc pornind de la ultima ecuaie. Aceast manier de descompunere i de rezolvare se ncadreaz n aanumita rezolvare a sistemelor determinate de ecuaii algebrice liniare prin triangularizare simpl (direct). n continuare se prezint cteva rezultate referitoare la algebra matricelor triunghiulare.
Definiie: Se numete matrice triunghiular unitate o matrice inferior sau superior triunghiular care are elementele de pe diagonala principal egale cu 1.
n ceea ce privete matricele triunghiulare, sunt valabile urmtoarele rezultate. R1: Inversa unei matrice superior (inferior) triunghiular este o matrice superior (inferior) triunghiular. R2: Produsul a dou matrice superior (inferior) triunghiulare este o matrice superior (inferior) triunghiular. R3: Inversa unei matrice superior (inferior) triunghiular unitate este o matrice superior (inferior) triunghiular unitate. R4: Produsul a dou matrice superior (inferior) triunghiulare unitate este o matrice superior (inferior) triunghiular unitate. n cele ce urmeaz, se enun i demonstreaz urmtorul rezultat esenial.
Propoziie:
40
2.
Dac matricea A admite o descompunere L-U, atunci aceast descompunere este unic.
Demonstraia se realizeaz prin reducere la absurd, presupunnd c matricea A admite dou descompuneri L-U i anume: A = L1 U 1 , A = L 2 U 2 . De aici rezult c L1 U 1 = L 2 U 2 , ceea ce conduce la:
1 1 L 2 L1 = U 2 U 1 , 1 adic o matrice inferior triunghiular unitate ( L 2 L 1 ) este identic cu o
ambele matrice sunt diagonale i au diagonala principal unitar, adic: 1 1 L 2 L 1 I n i U 2 U 1 I n , ceea ce implic L1 L 2 , U 1 U 2 . Procedura de triangularizare direct necesit un numr de operaii n virgul mobil de ordinul lui n 3 / 3 . Numrul total de operaii n virgul mobil pentru rezolvarea unui sistem determinat de ecuaii algebrice liniare, folosind triangularizarea simpl, este de ordinul lui (n 3 / 3) + n 2 , n 2 operaii fiind necesare pentru parcurgerea celor dou etape din rezolvarea propriu-zis a sistemului, anume substituia nainte i substituia napoi. Dac matricea A este simetric ( A = A T ) i pozitiv definit T T ( x n1 , x 0 n , x A x > 0 i x A x = 0 x 0 n ), atunci A se descompune sub forma A = L LT . Aceasta se numete descompunerea Cholesky. n acest caz, algoritmul necesit mai puine operaii n virgul mobil i anume n 3 / 6 , exploatnd faptul c matricea A este simetric.
2.2.2 Procedura de triangularizare direct a unei matrice
Principiul triangularizrii simple poate fi prezentat prin urmtorul algoritm, descris principial n limbajul pseudocod: atribuie A 1 A pentru k = 1, n 1 execut * determinare matrice M k astfel nct matricea A k +1 = M k A k s
atribuie A k +1 M k A k
2.2
41
n final se obine matricea A n = U . Acest algoritm parcurge (n 1) etape, la fiecare etap zerorizndu-se elementele de sub diagonala principal i pstrnd nealterate transformrile care s-au efectuat n coloanele anterioare ale matricei A. Notnd cu vectorul coninnd elementele coloanei k a matricei A k , anume: = [ 1 k s aib elementele: M k = [ 1 k Se consider vectorul m k de forma: 0 0] T .
[k ] ] k +1 n ] T = [a 1 a [kk,k ,k
a [kk+]1,k
] T a [nk,k ] ,
m k = [0 0 k +1,k
n ,k ]T ,
elementele i, k , i = k + 1,..., n numindu-se multiplicatori. Vectorul m k se numete vector Gauss sau vector de multiplicatori. Subvectorul care conine strict numai multiplicatorii se numete subvector Gauss: t k = [ k +1, k n ,k ] T .
Definiie: Matricea M k se numete matrice de transformare elementar de ordin n i indice k sau matrice Gauss i este definit prin: T Mk = In mk ek , n care e k = [0 0 1 0 0] T , elementul egal cu 1 fiind n poziia k.
T
Definit astfel, matricea M k este o matrice inferior triunghiular unitate, este nesingular i deci admite invers. Inversa acesteia este de forma:
1 Mk = In + mk ek . T
(2.5)
42
2.
Dac
la
etapa
triangularizrii,
] a [kk,k
elementul
] a [kk, k 0
0 0] T ,
n care c k (A k ) reprezint notaia pentru coloana k a matricei A k . Acest rezultat evideniaz faptul c primele k elemente din coloana k a matricei A k rmn neschimbate, iar ultimele n k elemente devin zero. Elementul ] k = a [kk,k se numete pivot. Observaii: 1. n practic, pe calculator, etapa k descris mai sus se poate realiza testnd condiia: ] | a [kk, k |> ,
] n loc de a verifica a [kk, k 0 , unde este o constant impus, de valoare
mic sau foarte mic. De exemplu, constanta poate fi egal cu epsilonulmain. Aceasta se realizeaz datorit faptului c, dac n aritmetica real (exact) pivotul este nul, n aritmetica virgulei mobile, datorit erorilor de calcul, aceast situaie este echivalent cu: ] | a [kk, k | . 2. Cnd pivotul este n modul mai mic sau egal cu , eliminarea gaussian eueaz. Aceasta corespunde situaiei cnd matricea iniial A are submatricea principal de ordin k singular, deci conform teormei enunate anterior, descompunerea L-U a matricei A nu exist. Efectul aplicrii transformrii M k asupra celorlaltor coloane ale matricei A k este urmtorul. Se consider un vector de forma = [1 n ] T . Aplicnd transformarea M k vectorului , se obine: M k = [1 k
Concluzii:
k +1 k +1, k k
n n ,k k ]T .
a) Matricea M k las nemodificate primele k 1 coloane ale matricei A k . Considernd vectorul ca fiind coloana numrul j a matricei A k : = c j (A k ) = [* *
1 j j+1
0 0] T ,
k n
j < k , j = 1,..., k 1 ,
atunci se obine:
2.2
43
M k c j (A k ) = [* *
1 j
j+1
0 0 k +1,k 0 0 n ,k 0] T
k k +1 n
= c j (A k ) b) Matricea M k transform coloana k a matricei A k , zeroriznd liniile k + 1,..., n . c) Matricea M k transform coloanele k + 1,..., n ale lui A k n liniile k + 1,..., n . Considernd vectorul ca fiind coloana j a matricei A k : = c j (A k ), j = k + 1,..., n , atunci se obine: M k c j (A k ) = [* * a [kk+]1, j k +1, k a [kk, ]j a [nk, ]j n , k a [kk, ]j ] T , notaia * semnificnd faptul c elementele implicate rmn nemodificate. Sumariznd, asupra matricei iniiale A se aplic transformrile M 1 , ..., M n 1 , obinndu-se n final forma superior triunghiular U:
M n 1 M 2 M 1 A = U .
1 1 1 nmulind la stnga relaia (2.6) cu M 1 M2 M n 1 , se obine: 1 1 1 M A = M1 2 M n 1 U .
(2.6)
(2.7)
1 1 1 M2 M Notnd produsul M 1 n 1 cu L, atunci relaia (2.7) devine: A =LU . 1 innd cont de forma matricelor M k , k = 1,..., n 1 dat de relaia (2.5), atunci matricea L este egal cu:
1 1 1 L = M1 M2 M n 1 = I n + m k e k . T k =1
n 1
Matricea L este inferior triunghiular unitate i conine n fiecare coloan, sub elementul unitar de pe diagonala principal, subvectorii Gauss. Prima sub-etap de rezolvare a sistemului (2.1) este substituia nainte aplicat sistemului de ecuaii L y = b . Vectorul y rezultat este, de fapt, vectorul care se obine aplicnd la stnga, n aceeai ordine, transformrile elementare care s-au aplicat matricei A: y = L1 b = M n 1 M 2 M 1 b .
Exemplul 2.2:
44
2.
unde x a reprezint soluia adevrat a sistemului. Rezult, aadar, erori mari n soluia calculat, x . Cauza care a determinat apariia acestor erori este aceea c la pasul al doilea al triangularizrii s-a lucrat cu un pivot foarte mic n modul ( 1 10 3 ), pentru aritmetica virgulei mobile folosite. Multiplicatorul corespunztor este 3, 2 = 2.5 /(10 3 ) = 2.5 10 3 , deci are o valoare foarte mare n modul pentru aceeai aritmetic. Aceasta a condus, mai departe, la apariia fenomenului de omitere catastrofal n calculele care s-au efectuat pentru obinerea vectorilor y i x .
Concluzie:
La triangularizarea simpl, unde elementele matricei A se modific corespunztor relaiei: k] a [ijk +1] = a [ijk ] ik a [kj , i = k + 1,..., n; j = k ,..., n , multiplicatorii ik pot avea, n principiu, orice valoare. Dac aceste valori sunt mari sau foarte mari, atunci pot apare fenomenele de omitere catastrofal i/sau de neutralizare a termenilor. Mai mult, dac aceti multiplicatori au valori k] , n supraunitare n modul, atunci ei amplific erorile prezente n termenii a [kj felul acesta triangularizarea simpl fiind instabil numeric, n general. Altfel spus, nu exist nici un control asupra stabilitii numerice a algoritmului triangularizrii simple.
2.3
prin
triangularizare
cu
n cazul triangularizrii cu pivotare parial (Figura 2.1), la pasul k se caut pivotul k printre elementele din coloana k, pornind de la elementul de pe
2.3
45
diagonala principal n jos, alegndu-se elementul care are cea mai mare valoare n modul: k] [k ] | a [i k , k |= max{| a i , k |} = k .
k i n
Ak =
0
ik n | k
Fig. 2.1 Principiul triangularizrii cu pivotare parial a unei matrice: pivotul se gsete n coloana k, liniile k n; k=1,...,n
Dac i k k , elementul maxim n modul nu se gsete pe diagonala principal, atunci se interschimb (permut) liniile k i i k . Lucrul acesta se realizeaz automat cu ajutorul unei matrice de permutare de linii Pk care multiplic la stnga matricea A k : Pk A k . Pentru matricea care rezult astfel, se determin apoi matricea de transformare M k ca i n cazul traingularizrii simple, obinnd matricea: A k +1 = M k (Pk A k ) . n felul acesta, multiplicatorii calculai sunt subunitari n modul | i , k | 1, i = k + 1,..., n , iar algoritmul triangularizrii devine stabil numeric. Matricea M k Pk se numete matrice de transformare elementar stabilizat. Matricea de permutare Pk se obine din matricea unitate de ordinul n, I n , schimbnd adecvat ntre ele liniile k i i k . Aceast matrice are urmtoarele proprieti: det(Pk ) = 1; Pk = Pk1 .
Teorem: Dac matricea A nn este nesingular, atunci exist o matrice P nn , numit matrice general de permutare de linii, astfel nct: P A = L' U ,
46
2.
n care U este o matrice superior triunghiular i L' este o matrice inferior triunghiular unitate. cu elementele | l i , j | 1, i > j .
Demonstraia acestei teoreme este constructiv, constituind nsui algoritmul de triangularizare cu pivotare parial a unei matrice. Se poate face observaia c matricea L' conine n coloana k, sub elementul de pe diagonala principal, subvectorul Gauss (de la triangulaizarea simpl) avnd liniile permutate. Algoritmul de triangularizare cu pivotare parial este urmtorul: atribuie A 1 A pentru k = 1, n 1 execut
k] [k] [k ] * determinare pivot k a [i k , k astfel nct | a i k , k |= max{| a i , k |} k i n
* calcul Pk A k * determinare matrice M k astfel nct matricea A k +1 = M k (Pk A k ) s ndeplineasc condiiile de la triangularizarea simpl atribuie A k +1 M k (Pk A k )
atribuie U A n n ansamblu, asupra matricei A sunt aplicate urmtoarele transformri:
M n 1 Pn 1 M 2 P2 M 1 P1 A = U .
(2.8)
Folosind faptul c Pk = Pk1 , sau altfel spus Pk Pk = I n , relaia (2.8) poate fi scris sub forma:
(M n 1 Pn 1 M 1 P1 P1 P2 Pn 1 ) (Pn 1 P2 P1 ) A = U
(2.9)
Matricea produs Pn 1 P2 P1 se noteaz cu P. Ea este numit matrice general de permutare de linii. Produsul din prima parantez din relaia (2.9) se noteaz cu L'1 . Relaia (2.9) se scrie sub forma: P A = L' U , n care matricea 1 1 1 L' = Pn 1 P2 M 1 P2 M este o matrice inferior 2 Pn 1 M n 1 triunghiular unitate avnd n fiecare coloan, sub diagonala principal, subvectori Gauss cu liniile permutate.
2.3
47
Definiie: Matricea A nn se numete diagonal dominant pe coloane dac n fiecare coloan a sa elementul de pe diagonala principal este, n modul, mai mare dect suma modulelor celorlaltor elemente:
| a j, j | | a i , j |, j = 1,..., n .
i =1 i j
P A = L' U ,
n care P = I n i elementele matricei L' sunt n modul subunitare.
Altfel spus, nu este implicat permutarea de linii n cazul traingularizrii unei matrice diagonal dominante pe coloane. Rezolvarea sistemului A x = b, A nn , b n1 se realizeaz n dou etape: a) descompunerea L' -U a matricei A: P A = L' U b) rezolvarea propriu-zis a sistemului care comport trei subetape, i anume: b.1.) calculul vectorului c = P b ; b.2.) b.3.) rezolvarea sistemului L' y = c prin substituie nainte; rezolvarea sistemului U x = y prin substituie napoi.
Se consider problema de la Exemplul 2.2. Se aplic, de aceast dat, triangularizarea cu pivotare parial. n acest caz, permutarea de linii intervine la pasul al doilea al triangularizrii, permutndu-se liniile 2 i 3: P = P2 . Se obine, n final: 0 7 10 7 0 y = 2.5 ; U = 0 2.5 5 ; x = 1 . 0 6.002 6.002 0 1
48
2.
Dac algoritmul de triangularizare cu pivotare parial eueaz, n sensul c pivotul gsit la o anumit etap [k] este nul sau foarte mic n modul, aceasta corespunde situaiei cnd n aritmetica real primele k coloane ale matricei A sunt liniar dependente. Dac ns pivotul gsit este n modul foarte mic n sensul preciziei dorite (mai mic dect un anumit parametru impus), atunci se recurge la traingularizarea matricei sistemului prin pivotare total, ceea ce implic att permutri de linii ct i de coloane.
2.4
prin
triangularizare
cu
n cazul triangularizrii cu pivotare total (Figura 2.2), la pasul [k] al triangularizrii se alege drept pivot elementul maxim n modul din submatricea format din liniile de la k la n, coloanele de la k la n: k] [k ] | a [i k , jk |= max{| a i , j |} .
k i n k j n
Dac acest element nu se afl n linia i/sau coloana k, atunci are loc permutarea adecvat de linii i/sau coloane n scopul aducerii acelui element pe diagonala principal, anume n linia k i coloana k.
Ak =
0
ik n | k | jk
Fig. 2.2 Principiul triangularizrii cu pivotare total a unei matrice: pivotul se gsete n submatricea determinat de coloanele k n i liniile k n; k=1,...,n
2.4
49
unde U este o matrice superior triunghiular, iar L' este o matrice inferior triunghiular unitate avnd elementele | l i , j | 1, i j , n fiecare coloan a matricei L, sub elementul de pe diagonala principal, gsindu-se subvectori Gauss avnd liniile permutate ntre ele. Matricele generale de permutare P i S sunt: P = Pn 1 P2 P1 ; S = S1 S 2 S n 1 , unde matricele Pk , S k , k = 1,..., n 1 sunt matrice de permutare de linii i, respectiv, de coloane.
Demonstraia teoremei este constructiv, reprezentnd nsui algoritmul triangularizrii cu pivotare total a matricei A. Acesta este descris n limbajul pseudocod, dup cum urmeaz: atribuie A 1 A pentru k = 1, n 1 execut
k] [k] [k ] * determinare pivot k a [i k , jk care satisface: | a i k , jk |= max{| a i , j |} k i n k j n
dac (i k k ) atunci * determinare Pk (permutarea liniilor i k i k) altfel atribuie Pk I n dac ( j k k ) atunci * determinare S k (permutarea coloanelor j k i k) altfel atribuie S k I n atribuie A 'k +1 Pk A k S k * traingularizare matrice A 'k +1 :
atribuie U A n Tabloul general al transformrilor este: M n 1 Pn 1 M 2 P2 M 1 P1 A S1 S 2 S n 1 = U . (2.10) A k +1 M k A 'k +1 = M k (Pk A k S k )
n relaia (2.10) se noteaz cu S produsul S1 S 2 S n 1 i se ine cont de faptul c Pk Pk = I n . Atunci relaia (2.10) devine:
50
2.
(M n 1 Pn 1 M 2 P2 M 1 P1 P1 P2 Pn 1 ) (Pn 1 P1 ) A S = U
(2.11)
Matricea Pn 1 P2 P1 se noteaz cu P, iar cu (L' ) 1 se noteaz produsul M n 1 Pn 1 M 2 P2 M 1 P1 P1 P2 Pn 1 . n felul acesta, relaia (2.11) devine: P A S = L' U . Observaii: 1. Matricea de permutare de linii, Pk , se obine din matricea unitate I n schimbnd adecvat ntre ele liniile k i i k . Deoarece se schimb linii ntre ele, matricea Pk se aplic la stnga matricei A k . Matricea Pk are proprietile: det(Pk ) = 1; Pk = Pk1 . 2. Matricea de permutare de coloane, S k , se obine din matricea unitate I n schimbnd adecvat ntre ele coloanele k i j k . Deoarece se schimb coloane ntre ele, matricea S k se aplic la dreapta matricei A k . Matricea S k are proprietile: 1 det(S k ) = 1; S k = S k . Pentru nelegerea etapelor rezolvrii sistemului (2.1), se nmulesc ambii membri ai ecuaiei, la stnga, cu matricea P i se insereaz ntre A i x produsul S S 1 = I n , obinndu-se: P A S S 1 x = P b . Aadar, rezolvarea sistemului comport urmtoarele etape: a) triangularizarea cu pivotare total a matricei siatemului A: P A S = L' U ; b) rezolvarea propriu-zis a sistemului (2.12), cu urmtoarele subetape: b.1.) calculul vectorului c = P b ; b.2.) rezolvarea sistemului L' y = c prin substituie nainte; b.3.) rezolvarea sistemului U z = y prin substituie napoi; b.4.) determinarea soluiei: x = S z . Observaii: 1) Permutrile de linii efectuate asupra matricei A implic permutri de linii asupra termenului liber b . (2.12)
2.5
51
2) Permutrile de coloane efectuate asupra matricei A implic permutri de linii n soluia calculat a sistemului z . 3) Triangularizarea cu pivotare total asigur, la fiecare iteraie a sa, pivoii cei mai mari n valoare absolut. Astfel, multiplicatorii vor fi subunitari n modul, de valoarea cea mai mic posibil, | i , k | 1 , iar elementele care se transform devin: a [i ,kj+1] a [i ,kj] i ,k a [kk, ]j , j = k ,..., n; i = k + 1,..., n .
Ca urmare, triangularizarea cu pivotare total reprezint procedura de triangularizare cea mai precis i stabil numeric. Dezavantajul ei este acela c necesit un timp de calcul mai mare. De regul, se folosete triangularizarea cu pivotare parial, recurgndu-se la triangularizarea cu pivotare total numai cnd cea parial eueaz. 4) Dac A este o matrice singular, atunci pivotarea total va eua. n aritmetica real exact aceasta corespunde situaiei cnd pivotul este nul, matricea A avnd rangul egal cu k-1, daca algoritmul eueaz la iteraia k. n aritmetica n virgul mobil, datorit erorilor de rotunjire, un pivot nul nseamn ndeplinirea condiiei: k] | a [i k , jk | , i se spune c matricele A, ca i A k , sunt algoritmic singulare. 5) Dac matricea A este diagonal dominant pe linii i pe coloane i n plus elementele de pe diagonal satisfac relaiile: | a 11 || a 22 | | a nn | , atunci descompunerea L' -U cu pivotare total este: P A S = L' U; unde : P = I n ; S = I n .
2.5
Considernd o matrice A nn nesingular, pentru care s-a calculat una din descompunerile de tip L-U, calculul determinantului acesteia poate fi fcut dup cum urmeaz.