26.12.2014 Views

metode de calcul numeric matriceal. algoritmi fundamentali

metode de calcul numeric matriceal. algoritmi fundamentali

metode de calcul numeric matriceal. algoritmi fundamentali

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

16 CAPITOLUL 0. CONCEPTE FUNDAMENTALE<br />

De regulă, numărul <strong>de</strong> operaţii N op al unui algoritm e funcţie <strong>de</strong> dimensiunea<br />

problemei care, <strong>de</strong> multe ori, poate fi apreciată prin numărul datelor <strong>de</strong> intrare,<br />

N op = f(n). În <strong>calcul</strong>ul <strong>numeric</strong>, <strong>de</strong> obicei f este un polinom (<strong>de</strong> grad mic),<br />

f(n) = a 0 n k + a 1 n k−1 + . . . + a k . Pentru că f poate avea o expresie complicată, se<br />

păstrează doar termenul cel mai semnificativ şi se scrie N op ≈ a 0 n k . O astfel <strong>de</strong><br />

aproximare este cu atât mai bună cu cât n este mai mare. Pentru aprecieri pur<br />

calitative, vom omite a 0 şi vom scrie 3 N op = O(n k ).<br />

• Memoria ocupată. Pentru execuţia unui algoritm (program) este necesară<br />

memorarea datelor <strong>de</strong> intrare, rezultatelor, precum şi a altor valori intermediare.<br />

Numărul <strong>de</strong> elemente în FVM necesare în acest scop se numeşte memoria ocupată<br />

<strong>de</strong> algoritm.<br />

În majoritatea cazurilor, datele <strong>de</strong> intrare nu mai sunt necesare la terminarea algoritmului.<br />

Spaţiul <strong>de</strong> memorie ocupat <strong>de</strong> ele poate fi utilizat pe parcursul execuţiei<br />

algoritmului pentru a memora rezultate parţiale şi/sau finale. În acest caz se spune<br />

că efectuăm <strong>calcul</strong>ele pe loc.<br />

• Stabilitatea <strong>numeric</strong>ă, discutată în paragraful anterior, arată acurateţea rezultatelor<br />

obţinute <strong>de</strong> algoritmul <strong>numeric</strong> (în ipoteza că datele iniţiale sunt exacte).<br />

Aceste trei criterii trebuie corelate cu viteza <strong>calcul</strong>atorului, memoria disponibilă,<br />

numărul <strong>de</strong> cifre semnificative al FVM utilizat.<br />

Desigur, nu trebuie uitată nici un moment condiţionarea problemei, care influenţează<br />

şi ea acurateţea rezultatului. Interesează în special performanţele algoritmului<br />

pentru probleme rău condiţionate, adică atunci când erorile datelor <strong>de</strong> intrare sunt<br />

mult amplificate. În orice caz, <strong>calcul</strong>ul soluţiei e bine a fi însoţit <strong>de</strong> <strong>de</strong>terminarea<br />

(sau estimarea) condiţionării problemei, adică <strong>de</strong> <strong>calcul</strong>ul unei cantităţi <strong>de</strong> tip (0.11).<br />

Putem adăuga astfel un al patrulea criteriu <strong>de</strong> apreciere a unui algoritm:<br />

• Siguranţa în funcţionare – capacitatea <strong>de</strong> a semnala situaţiile în care rezultatul<br />

poate fi afectat <strong>de</strong> erori importante datorate relei condiţionări a problemei. Decizia<br />

<strong>de</strong> a utiliza sau nu un astfel <strong>de</strong> rezultat revine utilizatorului sau unui program<br />

expert.<br />

0.6 Implicaţiile arhitecturii <strong>calcul</strong>atoarelor asupra<br />

organizării <strong>algoritmi</strong>lor<br />

În consi<strong>de</strong>raţiile din secţiunea prece<strong>de</strong>ntă am presupus <strong>calcul</strong>atorul pe care se vor<br />

implementa <strong>algoritmi</strong>i ca având arhitectura clasică von Neumann, schiţată în figura<br />

0.4a; pe un astfel <strong>de</strong> <strong>calcul</strong>ator, în principiu, pentru fiecare operaţie aritmetică<br />

se aduc operanzii din memoria M în unitatea centrală UC, se execută operaţia şi<br />

rezultatul este <strong>de</strong>pus înapoi în M. Cu acest mod <strong>de</strong> operare, timpul <strong>de</strong> execuţie<br />

e dictat esenţialmente <strong>de</strong> numărul <strong>de</strong> operaţii în virgulă mobilă, durata traficului<br />

între M şi UC fiind proporţională cu numărul <strong>de</strong> flopi.<br />

În ultimele două <strong>de</strong>cenii au apărut numeroase tipuri <strong>de</strong> arhitecturi pe care timpul<br />

<strong>de</strong> execuţie a unui algoritm nu mai este proporţional cu numărul <strong>de</strong> operaţii în<br />

3 Se scrie f(n) = O(g(n)) dacă există două constante c 1 , c 2 astfel încât c 1 g(n) ≤ f(n) ≤ c 2 g(n).

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!