metode de calcul numeric matriceal. algoritmi fundamentali
metode de calcul numeric matriceal. algoritmi fundamentali
metode de calcul numeric matriceal. algoritmi fundamentali
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).