09.08.2015 Views

Metode numerice în ingineria electrică

Convert JPG to PDF online - convert-jpg-to-pdf.net - Laboratorul de ...

Convert JPG to PDF online - convert-jpg-to-pdf.net - Laboratorul de ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

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

Gabriela Ciuprina, Mihai Rebican, Daniel Ioan<strong>Metode</strong> <strong>numerice</strong> <strong>în</strong> <strong>ingineria</strong><strong>electrică</strong>Îndrumar de laboratorpentru studenţii facultăţii de Inginerie Electrică2013


Cuprins0 Preliminarii asupra Laboratorului de <strong>Metode</strong> Numerice 10.1 Informaţii utile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2 Modul de desfăşurare a unei şedinţe de seminar sau laborator . . . . . . . 40.3 Programe demonstrative . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50.4 Implementare in C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60.4.1 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60.4.2 Vectori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100.4.3 Matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Implementarea structurilor de date şi a algoritmilor numerici 131.1 Caracterizarea lucrării . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.2 Descrierea pseudolimbajului . . . . . . . . . . . . . . . . . . . . . . . . . . 131.2.1 Structuri de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.2.2 Structuri de control . . . . . . . . . . . . . . . . . . . . . . . . . . . 161.3 Tipuri abstracte de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241.4 Complexitatea algoritmilor . . . . . . . . . . . . . . . . . . . . . . . . . . . 311.5 Chestiuni de studiat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331.6 Modul de lucru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331.7 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371.7.1 Exemple rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371.7.2 Exemple propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441.8Întrebări şi probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46i


viCUPRINS8.6 Modul de lucru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1668.6.1 Calculul integralei unor funcţii elementare . . . . . . . . . . . . . . 1668.6.2 Analiza erorii la integrarea numerică . . . . . . . . . . . . . . . . . 1678.6.3 Implementarea algoritmului . . . . . . . . . . . . . . . . . . . . . . 1678.6.4 Căutare de informaţii pe Internet . . . . . . . . . . . . . . . . . . . 1688.7 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1688.7.1 Exemple rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1688.7.2 Exemple propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1728.8 Probleme şi <strong>în</strong>trebări . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1749 Rezolvarea numerică prin metode iterative a ecuaţiilor neliniare 1779.1 Caracterizarea lucrării . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1779.2 Principiul lucrării . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1779.3 Pseudocodul algoritmilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1809.4 Analiza algoritmilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1829.5 Chestiuni de studiat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1849.6 Modul de lucru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1849.6.1 Rezolvarea unor ecuaţii neliniare prin diferite metode iterative . . . 1859.6.2 Analiza experimentală a erorilor şi a timpului de calcul . . . . . . . 1859.6.3 Implementarea algoritmilor de rezolvare a ecuaţiilor neliniare . . . . 1869.6.4 Căutare de informaţii pe Internet . . . . . . . . . . . . . . . . . . . 1879.7 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1879.7.1 Exemple rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1879.7.2 Exemple propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1929.8Întrebări şi probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19210 Rezolvarea ecuaţiilor diferenţiale ordinare prin metoda Euler 19510.1 Caracterizarea metodei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19510.2 Principiul metodei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19510.3 Pseudocodul metodei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196


CUPRINSvii10.4 Analiza algoritmului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19810.5 Chestiuni de studiat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20010.6 Mod de lucru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20010.6.1 Rezolvarea unor ecuaţii diferenţiale de ordin 1 . . . . . . . . . . . . 20110.6.2 Analiza experimentală a erorilor şi a timpului de calcul . . . . . . . 20210.6.3 Rezolvarea unei ecuaţii diferenţiale caracteristice unui circuit . . . . 20210.6.4 Implementarea algoritmului <strong>în</strong>tr-un limbaj de programare . . . . . . 20310.6.5 Căutare de informaţii pe Internet . . . . . . . . . . . . . . . . . . . 20410.7 Probleme şi <strong>în</strong>trebări . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204Bibliografie şi webografie 206


NotăAcest <strong>în</strong>drumar prezintă lucrările de laborator efectuate <strong>în</strong> prezent de studenţii Facultăţiide Inginerie Electrică, <strong>în</strong> cadrul disciplinei <strong>Metode</strong> <strong>numerice</strong>. Partea teoretică a acestorlucrări este preluată <strong>în</strong> cea mai mare parte din cartea <strong>Metode</strong> <strong>numerice</strong> <strong>în</strong> <strong>ingineria</strong><strong>electrică</strong> [1], <strong>în</strong> timp ce programele demonstrative la care se face referire, au fost rescriseintegral <strong>în</strong> Scilab (G. Ciuprina). De asemenea, <strong>în</strong> lucrarea de faţă au fost adăugateexerciţii explicative (G. Ciuprina şi M. Rebican) pentru a facilita <strong>în</strong>ţelegerea metodelorexplicate.


Lucrarea 0Preliminarii asupra Laboratorului de<strong>Metode</strong> Numerice0.1 Informaţii utileLista de lucrări1. Algoritmi si structuri de date2. Erori in calculele <strong>numerice</strong>i3. Metoda Gauss - fără şi cu pivotare4. <strong>Metode</strong> iterative pentru rezolvarea sistemelor liniare5. Rezolvarea circuitelor rezistive liniare6. Interpolarea numerică a funcţiilor7. Derivarea numerică a funcţiilor8. Integrarea numerică a funcţiilor9. Rezolvarea ecuaţiilor neliniare10. Rezolvarea ecuaţiilor diferenţialeCalendar• Săptămâna 1 (S1): Prezentarea laboratorului1


0.1. Informaţii utile 3La <strong>în</strong>ceputul unei şedinţe de laborator fiecare student trebuie să prezinte un prereferatal lucrării care urmează a fi efectuată, conform calendarului. Studenţii care nuau pre-referate nu vor fi primiţi să efectueze lucrarea. Pe parcursul şedinţei, studentulîşi completează pre-referatul cu date, grafice şi concluzii. Studenţii trebuie sa aibă la eihartie milimetrică pentru trasarea graficelor. Astfel, se realizează referatul, care trebuiepredat la <strong>în</strong>ceputul şedinţei din săptămâna următoare.Modul de notare al laboratoruluiFiecare temă de laborator (L*) este punctată cu o notă <strong>în</strong>tre 1 şi 10 pentru referat.Referatul va conţine:1. Numele studentului şi grupa din care face parte2. Numele cadrului didactic <strong>în</strong>drumator3. Titlul lucrarii4. Scopul lucrarii5. Rezultate experimentale, grafice, etc. (conform cerinţelor din <strong>în</strong>drumar)6. Observaţii şi concluziiPre-referatul va conţine punctele 1, 2, 3, 4 din referat.Foarte important:• Observaţiile şi, mai ales, concluziile au ponderea cea mai mare <strong>în</strong> nota primită pereferat. Un referat fără observaţii şi concluzii poate avea nota maximă 4 din 10.Două sau mai multe referate care conţin observaţii şi concluzii identice vor aveafiecare nota 1.• Referatul nu trebuie să conţină: descrierea lucrării, principiul algoritmilor, pseudocodulalgoritmilor.• Testele de aplicaţii <strong>numerice</strong> şi <strong>în</strong>trebări (din săptămânile 7 şi 14) vor fi realizate<strong>în</strong> scris şi constau <strong>în</strong> rezolvarea numerică a unor exemple cu ajutorul metodelorstudiate. Testele de aplicaţii şi <strong>în</strong>trebări vor fi punctate cu note <strong>în</strong>tre 1 şi 10.• Testul de implementare (din săptămâna 14) va consta <strong>în</strong> implementarea <strong>în</strong> limbajulde programare C sau limbajul Matlab (Scilab) a unuia din pseudocodurilelucrărilor studiate. Testul de implementare va fi punctat cu o notă <strong>în</strong>tre 1 şi 10.Pentru pregătirea acestui test, studenţii vor fi <strong>în</strong>curajaţi să exerseze implementareaalgoritmilor pe parcursul şedinţelor de laborator.


4 Capitolul 0. Preliminarii asupra Laboratorului de <strong>Metode</strong> Numerice• Nota de laborator reprezintă 50% din nota disciplinei <strong>Metode</strong> Numerice <strong>în</strong> IngineriaElectrică, şi se calculează astfel:– 15% pentru referate;– 30% pentru cele două teste de aplicaţii <strong>numerice</strong>;– 5% pentru testul de implementare.Modul de calcul al notei finale va fi prezentat la curs.0.2 Modul de desfăşurare a unei şedinţe de seminarsau laboratorFiecare şedinţă de seminar sau laborator durează 2 ore şi are o anumită tematică (vezisubcapitolul 0.1).În cadrul şedinţei de seminar sunt prezentate studenţilor de către cadrul didacticurmătoarele chestiuni despre lucrarea respectivă: aspecte teoretice şi exemple rezolvate.De asemenea, se vor prezenta pe scurt chestiunile de studiat si modul de lucru, aspectenecesare pentru efectuarea lucrării de laborator <strong>în</strong> săptămâna următoare.De menţionat că exemplele rezolvate la fiecare şedinţă de seminar sunt esenţiale pentrucele două teste de aplicaţii <strong>numerice</strong>.Activităţile propriu-zise pe care trebuie să le desfăşoare fiecare student <strong>în</strong>tr-o şedinţăde laborator sunt prezentate mai jos.Prima activitate constă <strong>în</strong> exploatarea unor programe demonstrative ce ilustreazătematica lucrării.Sistemul de operare sub care se lucrează este Linux (http://www.linux.org/). Programeledemonstrative sunt scrise in Scilab (http://www.scilab.org/) dar exploatarealornunecesităcunoaştereaacestuilimbajdeprogramare. Înurmaexploatăriiacestorprograme,studentul trebuie să redacteze un referat, conform cerinţelor fiecărei lucrări, şisă îl predea la sfârşitul şedinţei.Înmăsuratimpuluidisponibil, sevaimplementacelpuţinunuldinalgoritmiistudiaţi<strong>în</strong> cadrul temei respective. Implementarea se va efectua <strong>în</strong> limbajul C sau limbajul Scilab,<strong>în</strong> concordanţă cu pseudocodul prezentat <strong>în</strong> lucrare.


10 Capitolul 0. Preliminarii asupra Laboratorului de <strong>Metode</strong> NumericeVECTOR vector (int nl, int nh);IVECTOR ivector (int nl, int nh);MATRIX matrix (int nrl, int nrh, int ncl, int nch);IMATRIX imatrix (int nrl, int nrh, int ncl, int nch);void free_vector (VECTOR v, int nl, int nh);void free_ivector (IVECTOR v, int nl, int nh);void free_matrix (MATRIX m, int nrl, int nrh, int ncl, int nch);void free_imatrix (IMATRIX m, int nrl, int nrh, int ncl, int nch);0.4.2 VectoriÎnCexistăostrânsăcorespondenţă<strong>în</strong>treadrese(pointeri)şitablouri. Înacestparagrafvom considera tablourile unidimensionale.Valoarea reprezentată de a[j] este acelaşi lucru cu *(a+j) adică ”conţinutul adreseiobţinute incrementând pointer-ul a cu j. O consecinţă a acestei definiţii este aceea cădacă a este adresa unei locaţii valide, atunci a[0] este <strong>în</strong>totdeauna definit. Tablourileunidimenionale au <strong>în</strong> C, <strong>în</strong> mod natural, originea <strong>în</strong> 0. Un şir definit defloat b[4]are referinţele valide b[0], b[1], b[2] şi b[3], dar nu şi b[4].Problema este că mulţi algoritmi sunt descrişi <strong>în</strong> mod natural cu indici care <strong>în</strong>cep de la1. Cu siguranţă că aceşti algoritmi pot fi modificaţi, dar aceasta presupune o aritmeticăsuplimentară <strong>în</strong> operarea cu indici, lucru care nu este prea plăcut. Putem <strong>în</strong>să folosiputerea limbajului C pentru ca această problemă să dispară. Ideea este simplă:float b[4], *bb;bb = b - 1;Pointer-ul bb indică acum o locaţie <strong>în</strong>aintea lui b. În consecinţă, elementele bb[1],bb[2], bb[3] şi bb[4] există şi vectorul bb are indici ce pornesc de la 1.Uneori este convenabil să avem vectori care pornesc din 0, iar alteori este convenabil săavem vectori care pornesc din 1. De exemplu, coeficienţii unui polinom a 0 +a 1 x+...a n x nnecesită un vector cu indici ce <strong>în</strong>cep cu 0, pe când termenul liber al unui sistem de ecuaţiib i ,i = 1,...,n necesită un vector cu indici ce <strong>în</strong>cep din 1.Pentruaevitarescriereaalgoritmilor cesuntdeduşi<strong>în</strong> modnaturalcuindicicepornescde la 1, puteţi folosi o funcţie cu următoarea definiţie.typedef float *VECTOR;VECTOR vector (int nl, int nh){


0.4. Implementare in C 11VECTOR v;}v = (float *) malloc ((unsigned) (nh - nl + 1) * sizeof (float));if (!v)nrerror ("allocation failure in vector()");return v - nl;Această funcţie alocă un vector de variable de tip float, care vor fi accesate cu indicicuprinşi <strong>în</strong>tre nl şi nh.O utilizare tipică a acestei funcţii estefloat *b;b = vector(1,7);Această funcţie precum şi funcţii similare ce alocă vectori de <strong>în</strong>tregi se găsesc <strong>în</strong> fişierulnrutil lmn.c pe care îl puteţi descărca de la adresa http://mn.lmn.pub.ro/.Acest fişier conţine şi rutinele corespunzătoare de dealocare. De exemplu, pentrudealocarea memoriei ocupate de vectorul definit mai sus, instrucţiunea estefree_vector(b,1,7);0.4.3 MatriceProblema indicilor ce pornesc de la 0 sau de la 1 apare şi <strong>în</strong> cazul matricelor. Însintaxa C, lucrul cu tabele bidimensionale este puţin mai complicat. Să considerăm ovaloare reală a[i][j] unde i şi j sunt <strong>în</strong>tregi. Un compilator de C va genera codurimaşină diferite pentru această referinţă, aceasta depinzând de declaraţia pentru variabilaa. Dacă a a fost declarată de dimensiune fixă, de exemplu float a[2][4] atunci codulmaşină ar putea fi descris astfel: ”la adresa a adună de 4 ori i, apoi adună j şi <strong>în</strong>toarcevaloarea astfel adresată. Observaţi că valoarea constantă 4 trebuie cunoscută pentru aefectua <strong>în</strong> mod corect calculele.Să presupunem că a a fost declarat ca float **a. Atunci codul maşină a[i][j] este”la adresa a adună i, valoarea astfel adresată consider-o o nouă adresă, la care adună jşi <strong>în</strong>toarce valoarea astfel adresată.Ilustrarea celor două moduri de accesare a unei valori este dată <strong>în</strong> figura 2. Observaţică <strong>în</strong> al doilea caz nu este necesară cunoaşterea dimensiunii matricei şi că nu este nevoiede nici o <strong>în</strong>mulţire. O indirectare suplimentară <strong>în</strong>locuieşte aceste informaţii. Această adoua schemă o recomandăm pentru lucrul la laboratorul de metode <strong>numerice</strong>.


Lucrarea 1Implementarea structurilor de dateşi a algoritmilor numerici1.1 Caracterizarea lucrăriiRezolvarea problemelor ştiinţifice şi tehnice cu ajutorul calculatorului numeric presupuneidentificarea unei metode matematice de rezolvare şi apoi implementarea acesteiape un sistem de calcul.Înafaraalgoritmuluipropriu-zisderezolvare,unrollafeldeimportant<strong>în</strong>implementareîl are şi alegerea exactă a structurilor de date. În final, programul se bazează pe algoritm(descrierea operaţiilor ce vor fi efectuate pentru obţinerea soluţiei) şi pe structura dedate (modul <strong>în</strong> care se reprezintă datele de intrare, variabilele intermediare şi datele deieşire). Pentru descrierea structurilor de date şi a algoritmilor se poate utiliza un limbajde programare (Basic, FORTRAN, Pascal, C, etc.) sau un pseudolimbaj cu o sintaxă maipuţin rigidă. Pentru a evidenţia invarianţa algoritmilor la limbajul ales se preferă a douametodă.Scopulacesteilucrăriestedeafamiliarizautilizatoriicugândirea algoritmică structurată(prin folosirea pseudocodului), de a evidenţia metodele de implementare a pseudocodului<strong>în</strong>diferitelimbajedeprogramareşi,nu<strong>în</strong>ultimulrând,deaevidenţiaimportanţatipurilor abstracte de date cu caracter matematic (vectori, matrice, numere complexe,etc.).1.2 Descrierea pseudolimbajuluiPseudocodul (pseudolimbajul)esteometodăsimplăşieficientăpentrureprezentareaunui algoritm şi a structurilor de date asociate. Pseudocodul este de fapt un text alcătuit13


14 Capitolul 1. Implementarea structurilor de date şi a algoritmilor numericidin linii (rânduri), fiecare conţinând, de regulă, o declaraţie (al cărei scop principal constă<strong>în</strong> descrierea datelor) sau o instrucţiune (care descrie o operaţie ce va fi efectuată).Oliniedepseudocodestealcătuitădincuvinteşisimboluri(caracterespecialenealfa<strong>numerice</strong>).Anumite cuvinte, cu o semnificaţie bine determinată, independente de aplicaţie,se numesc cuvinte cheie şi pentru a fi deosebite de celelalte cuvinte, specifice aplicaţieisunt de obicei <strong>în</strong>groşate.Orice linie poate conţine precizări suplimentare, numite comentarii, care ajută la<strong>în</strong>ţelegerea pseudocodului, fără să facă parte din descrierea propriu-zisă a algoritmuluisau a structurii de date. Comentariile sunt plasate la sfârşitul liniei cu caracterul ”;”.1.2.1 Structuri de dateDeclaraţiile se referă la datele cu care se operează şi care pot fi de tip simplu (fundamental)sau structurate (agregate).Se consideră următoarele categorii de date fundamentale:• logic - date cu două valori (0 = fals şi 1 = adevărat);• <strong>în</strong>treg - date care pot avea valori <strong>în</strong>tregi;• real - aproximări ale numerelor reale;• caracter - literă, cifră sau semn special (aritmetic sau de punctuaţie).Exemple de declaraţii ale unor variabile de tip fundamental:logic l1,l2,l3<strong>în</strong>treg i,j,sreal a,m,x,jcaracter cSe constată că o declaraţie conţine cuvântul cheie ce specifică tipul, urmat de lista numelorvariabilelor de tipul respectiv, nume separate prin virgulă. Numele variabilelor suntcuvinte alcătuite din litere şi cifre (primul caracter trebuie să fie literă) şi au semnificaţialimitată la aplicaţia respectivă. Se recomandă ca numele variabilelor să fie sugestiv alese(de exemplu: ”masa”, ”volum”, ”curent”, etc.), iar pentru eliminarea ambiguităţilor,fiecare mărime cu care se operează <strong>în</strong>tr-o problemă să aibă propria sa declaraţie, eventual<strong>în</strong>soţită de un comentariu:real qreal i; sarcina corpului; intensitatea curentului


1.2. Descrierea pseudolimbajului 15Pentru rezolvarea unor probleme mai complicate, tipurile fundamentale de date nusunt suficiente, ci este necesară o ”agregare” a datelor. Acest lucru se realizează prinfolosirea cuvintelor cheie:• tablou - structură de date ce conţine un număr cunoscut de elemente de acelaşi tip;• <strong>în</strong>registrare - structură de date ce poate conţine elemente de tipuri diferite.O declaraţie de variabilă de tip tablou conţine cuvântul cheie tablou, numele tabloului(variabilei) şi dimensiunea acestuia.Exemple de declaraţii de tablou:• tablou real V[3] ; V este un tablou de trei elemente reale• tablou <strong>în</strong>treg a[5],b[7] ; a este un tablou de 5 intregi şi b este un tablou de 7 <strong>în</strong>tregiCu toate că tabloul are un singur nume pentru <strong>în</strong>treaga structură de date, elementeleacestuia se identifică folosind indexul (numărul de ordine al elementului), ca de exemplu:V(1), V(2), b(5), etc. În pseudocod se permite şi folosirea notaţiilor V 1,V 2 ,b 5 , etc. sauV i , cu condiţia ca i să fie cuprins <strong>în</strong>tre 1 şi dimensiunea tabloului (pentru tabloul V denau sus, 1 ≤ i ≤ 3).Exemplu de declaraţie a unei <strong>în</strong>registrări:<strong>în</strong>registrare punctlogic cartezianreal x 1real x 2Această <strong>în</strong>registrare se referă la conceptul de ”punct”, care este definit ca o agregare aunei variabile logice ”cartezian” şi a două variabile reale x 1 , x 2 . Punctul poate fi descrisprin coordonate carteziene (cartezian = adevărat, x 1 = x, x 2 = y) sau polare (cartezian= fals, x 1 = raza, x 2 = unghiul).Un alt exemplu îl constituie :<strong>în</strong>registrare monom<strong>în</strong>treg nreal a


16 Capitolul 1. Implementarea structurilor de date şi a algoritmilor numericicare reprezintă monomul ax n , descris de ordinul <strong>în</strong>treg n şi coeficientul real a.Referirea la un element al <strong>în</strong>registrării se face prin numele <strong>în</strong>registrării urmat de numelecâmpului (elementului), nume separate prin caracterul ”.”, de exemplu: monom.a,punct.cartezian, etc.În pseudolimbaj se admit mai multe niveluri de agregare, deci se pot construi tabelede tabele, tablou de <strong>în</strong>registrări sau alte combinaţii.Pentru a uşura astfel de construcţii se introduce cuvântul cheie tip, care atunci cândprecede o declaraţie are ca efect extinderea tipurilor standard logic, <strong>în</strong>treg, real, caracter,tablou, <strong>în</strong>registrare cu un nou tip de date definit de utilizator şi indicat de numele”variabilei” introdus prin declaraţia respectivă.De exemplu:tip tablou real vector[3] ; introduce tipul vector<strong>în</strong>registrare monom ; introduce tipul monom<strong>în</strong>treg nreal aDeclaraţia:tip tablou monom polinom[10]introduce tipul ”polinom” ca fiind un tablou de 10 elemente, fiecare element fiind de tipmonom.1.2.2 Structuri de controlInstrucţiunile unui pseudocod descriu operaţiile pe care le va efectua sistemul de calculcu datele descrise anterior prin declaraţii. Instrucţiunile sunt de două feluri: simple şistructurate.Instrucţiunile simple sunt:• de atribuire;• de intrare;• de ieşire.


1.2. Descrierea pseudolimbajului 17Instrucţiunea de atribuire are sintaxa:variabilă = expresie<strong>în</strong> care ”variabilă” este numele unei variabile a cărei valoare va fi modificată <strong>în</strong> urmainstrucţiunii, iar ”expresie” este o construcţie sintactică alcătuită din constante, variabile,operatori şi paranteze, după regulile uzuale din algebră. Efectul execuţiei instrucţiunii deatribuire constă <strong>în</strong> evaluarea expresiei şi modificarea <strong>în</strong> concordanţă a variabilei al căreinume se află la stânga semnului egal.Se consideră că operanzii care intervin <strong>în</strong> expresii au valori corespunzătoare unuia dintipurile fundamentale. Dacă operanzii sunt de tip logic, atunci se admit operatorii logicinu, sau, şi, ca <strong>în</strong> exemplele:logic l1, l2, l3l1 = nu (l2)l3 = l1 sau l2l3 = l1 şi l2Dacă operanzii sunt numerici (real sau <strong>în</strong>treg) se admit operatori aritmetici (+, -, *,/) sau de relaţie (=,≠,≤,≥,), ca <strong>în</strong> exemplele:real a, b, x, y;logic l1;y = (ax+b)/(2x−b)l1 = (x ≤ b) şi (x > a)În primul caz rezultatul este de tip numeric, iar <strong>în</strong> al doilea caz, de tip logic.Operanzii de tip caracter admit doar operatori de relaţie (se admite ordonarea lexicograficăconform codului ASCII), ca <strong>în</strong> exemplul:l2 = C > ′ A ′ ; caracterul conţinut de variabila C este ulterior literei ′ A ′Instrucţiunile de intrare-ieşire au sintaxa:citeşte variabilescrie variabile


18 Capitolul 1. Implementarea structurilor de date şi a algoritmilor numericiPrima instrucţiune are ca efect transferul pe canalul de intrare al unei valori (de exempluintroducerea ei de la tastatură), care modifică valoarea variabilei specificate, iar a douaare ca efect transferul valorii variabilei pe canalul de ieşire (de exemplu afişarea pe ecransau tipărirea la imprimantă).De exemplu, pseudocodul:real x,y,s,pciteşte x,ys = x+yp = xyscrie s,pstopreprezintă un program simplu, capabil să calculeze suma şi produsul a două numere reale.Programul se <strong>în</strong>cheie printr-o altă instrucţiune simplă, cu sintaxa:stopcare are ca efect terminarea execuţiei programului respectiv.Pentru realizarea unor operaţii mai complicate se folosesc <strong>în</strong> afara instrucţiunilor simple,instrucţiunile structurate, care sunt:• secvenţa;• decizia (cu sau fără alternativă);• ciclul (cu test iniţial, cu test final sau cu contor);• rutina (procedură sau funcţie).Secvenţa (sau blocul de instrucţiuni) reprezintă un şir de instrucţiuni simple sau structurate(scrisecâteunapelinie,<strong>în</strong>liniisuccesive), careseexecutăunadupăalta, <strong>în</strong>ordinea<strong>în</strong> care au fost scrise.Programul anterior este un exemplu de secvenţă.Decizia este o instrucţiune care permite controlul execuţiei şi are una din următoarelevariante de secvenţă:• decizia simplă


1.2. Descrierea pseudolimbajului 19dacă condiţie atuncisecvenţă• decizia cu alternativădacă condiţie atuncisecvenţă 1altfelsecvenţa 2<strong>în</strong> care ”condiţie” este o expresie de tip logic, iar ”secvenţa” este o secvenţă de una saumai multe instrucţiuni. Pentru a uşura <strong>în</strong>ţelegerea acestei instrucţiuni se constată căsecvenţele sunt scrise indentat (retrase faţă de cuvântul cheie dacă). În urma execuţieiacestei instrucţiuni se evaluează expresia logică ”condiţie”. Dacă valoarea rezultată esteadevărată, atunci se execută ”secvenţa” (respectiv ”secvenţa 1”), altfel se continuă cuinstrucţiunea următoare (respectiv se execută ”secvenţa 2”).Exemple de instrucţiuni de decizie:; funcţia matematică modul y = |x|dacă x ≥ 0 atunciy = xaltfely = −xPentru implementarea funcţiei definite pe porţiuni:⎧⎨ 0, x < −1y = 2x, −1 ≤ x ≤ 1⎩x 2 , x > 1se poate folosi pseudocodul:dacă x < −1 atunciy = 0altfel dacă (x ≥ −1) şi (x ≤ 1)y = 2xaltfely = x


20 Capitolul 1. Implementarea structurilor de date şi a algoritmilor numericiCiclul reprezintă o instrucţiune care permite repetarea unei secvenţe. Se deosebesc treifeluri de cicluri:• cu test iniţial;• cu test final;• cu contor.Ciclul cu test iniţial are sintaxa:cât timp condiţie repetăsecvenţaEfectulesteevaluareaexpresieilogice”condiţie”. Dacărezultatulesteafirmativ(adevărat),atunci se execută secvenţa şi ciclul se reia până când ”condiţie” devine falsă, după care sesare peste ”secvenţă” şi se continuă cu următoarea instrucţiune. Se constată că este posibilărepetarea infinită a ciclului dacă valoarea logică a condiţiei rămâne mereu adevărată.Este responsabilitatea programatorului să asigure caracterul finit al ciclului.În exemplul următor:k = 1s = 0cât timp a k > 0 repetăs = s+a kk = k +1scrie seste utilizat ciclul cu test iniţial pentru a aduna elementele unui tablou până la <strong>în</strong>tâlnireaprimului element negativ.Ciclul cu test final are sintaxa:repetăsecvenţăpână când condiţie”secvenţa” fiind executată repetat până când ”condiţie” devine adevărată. Spre deosebirede ciclul cu test iniţial, <strong>în</strong> acest caz corpul ciclului este executat cel puţin o dată.În exemplul următor se calculează cu eroare impusă suma seriei cu termenul general(−1) k /k!


1.2. Descrierea pseudolimbajului 21<strong>în</strong>treg kreal s, t, epst = 1k = 1s = 0repetăt = −tks = s+tk = k +1până când |t| < epsCiclul cu contor permite repetarea unei secvenţe de un număr determinat de ori. Sintaxaciclului cu contor este:pentru contor = val in, val fin, pas repetăsecvenţă<strong>în</strong> care ”contor” este numele unei variabile de tip <strong>în</strong>treg, ”val in”, ”val fin” şi ”pas” suntconstante sau expresii de tip <strong>în</strong>treg. Secvenţa de instrucţiuni din corpul ciclului esterepetată pentru valori succesive ale contorului, pornind de la valoarea iniţială ”val in”,incrementat cu pasul ”pas” până când acesta depăşeşte valoarea finală ”val fin”. Dacă <strong>în</strong>instrucţiune lipseşte valoarea ”pas” se presupune că aceasta are valoarea implicită ”1”.În exemplul următor:s = 0pentru k = 1,ns = s+a kscrie sse calculează suma primelor n elemente ale tabloului a.Se <strong>în</strong>tâlnesc des situaţii <strong>în</strong> care o anumită secvenţă de instrucţiuni trebuie executată demai multe ori, <strong>în</strong> momente diferite ale execuţiei unui program. Pentru a evita rescriereade mai multe ori a acestei secvenţe se foloseşte conceptul de rutină.O rutină reprezintă o secvenţă de declaraţii şi instrucţiuni căreia i se atribuie un nume.Dacă <strong>în</strong>tr-un program se face apel la o rutină, controlul se transferă rutinei, iar după<strong>în</strong>cheierea acesteia se revine <strong>în</strong> programul apelant. În consecinţă, o rutină presupunepe de o parte definiţia acesteia (prin specificarea declaraţiilor şi instrucţiunilor care o


22 Capitolul 1. Implementarea structurilor de date şi a algoritmilor numericialcătuiesc), iar pe de altă parte apelul ei. Utilizarea rutinelor este justificată chiar şi <strong>în</strong>cazul <strong>în</strong> care ele sunt apelate o singură dată <strong>în</strong> program, deoarece ele permit structurareamodulară a unui algoritm. Pentru a realiza aceasta, o rutină trebuie să aibă o anumităconsistenţă, să <strong>în</strong>deplinească o funcţie bine definită, ceea ce permite reutilizarea ei şi <strong>în</strong>alte programe.După modul de apelare, rutinele se împart <strong>în</strong> două categorii:• proceduri;• funcţii.Procedura este definită printr-o construcţie sintactică de forma:procedură nume(listă parametri formali)secvenţaretur<strong>în</strong> care ”nume” este numele procedurii alcătuit din caractere alfa<strong>numerice</strong>, iar ”lista parametrilorformali” conţine nume de variabile separate prin virgule. O parte din parametriiformali sunt parametrii de intrare (ai căror valori provin din programul apelant şi setransferă procedurii), iar restul sunt parametrii de ieşire (ai căror valori se determină <strong>în</strong>procedură şi se transferă programului apelant). Apelul unei proceduri astfel definite seface prin invocarea numelui ei urmat de lista parametrilor actuali:nume (lista de parametri actuali)Parametrii actuali trebuie să concorde ca număr, tip şi ordine cu cei formali (dar nuobligatoriu şi ca nume).În exemplul următor:citeşte a,bsumaprod (a,b,s,p)scrie s,psumaprod (s,p,s1,p1)scrie s1,p1se face apel la procedura definită astfel:


1.2. Descrierea pseudolimbajului 23procedură sumaprod (x,y,suma,prod)real x,y,suma,prodsuma = x+yprod = xyretur<strong>în</strong> care are x,y sunt parametri formali de intrare şi suma,prod sunt parametri formali deieşire. În urma primului apel al acestei proceduri (cu parametri actuali de intrare a,b) secalculează şi se afişează s = a+b, p = ab, iar <strong>în</strong> urma celui de al doilea apel se calculeazăşi se afişează s1 = s+p = a+b+ab, p1 = sp = (a+b)ab.În cazul unei proceduri, numărul parametrilor de intrare sau de ieşire este arbitrar(poate fi inclusiv nul).O altă variantă de rutină este funcţia, la care toţi parametrii formali sunt parametri deintrare, dar rutina de tip funcţie <strong>în</strong>toarce o valoare. Definiţia funcţiei se realizează princonstrucţia sintactică:funcţie nume (lista parametrii formali)secvenţa<strong>în</strong>toarce valoareFuncţia poate fi apelată ca operand <strong>în</strong>tr-o expresie, <strong>în</strong> particular <strong>în</strong>tr-o atribuire detipulvaloare = nume (lista de parametri actuali)Funcţia se aseamănă cu o procedură cu un singur parametru de ieşire dar, faţă deaceasta, are o flexibilitate suplimentară <strong>în</strong> apel. Exemplul următor:real a,b,xciteşte a,bx = min(a,b)/max(a,b)scrie xfoloseşte două funcţii max şi min definite prin:funcţie max(x,y)real x,y,m; valoare maximă


24 Capitolul 1. Implementarea structurilor de date şi a algoritmilor numericidacă x > y atuncim = xaltfelm = y<strong>în</strong>toarce mfuncţie min(x,y) ; valoare minimăreal x,y,mdacă x > y atuncim = yaltfelm = x<strong>în</strong>toarce mFuncţiileelementare(modul,radical,putere,exponenţială,logaritm,sin,cos,tg,sh,ch,th) se consideră predefinite <strong>în</strong> pseudocod, deoarece majoritatea limbajelor de programarede nivel <strong>în</strong>alt le au implementate.1.3 Tipuri abstracte de dateTipurile abstracte de date reprezintă concepte importante ale programării structuratemoderne.Un tip abstract dedate este o structurăde datedefinitădeutilizator (folosind cuvântulcheie tip) completată cu o serie de rutine (proceduri sau funcţii), care definesc operaţiilece pot fi executate cu date de acest tip. În acest fel se extind tipurile fundamentalede date (logic, <strong>în</strong>treg, real, care reprezintă algebra booleană, inelul Z şi corpul IR) prinimplementarea şi a altor structuri matematice (algebrice sau topologice) cum sunt spaţiilevectoriale, corpul numerelor complexe, inelul polinoamelor sau al matricelor.Aceste structuri de primă importanţă <strong>în</strong> matematică se <strong>în</strong>tâlnesc <strong>în</strong> rezolvarea pe calenumerică a multor probleme ştiinţifice sau tehnice. Ele nu sunt legate de o anumităaplicaţie ci au un caracter general.Încontinuaresuntprezentate<strong>în</strong>pseudocodcâtevadintipurileabstractededateuzuale.Spaţiul vectorial n-dimensional IR nUn element v = (v 1 ,v 2 ,...,v n ) al spaţiului IR n poate fi reprezentat ca un tablou cu ncomponente reale. Operaţiile algebrice caracteristice unui spaţiu vectorial sunt:


1.3. Tipuri abstracte de date 25• adunarea u,v ∈ IR nu+v = (u 1 ,...,u n )+(v 1 ,...,v n ) = (u 1 +v 1 ,...,u n +v n )• <strong>în</strong>mulţirea cu un scalar a ∈ IR, v ∈ IR nav = a(v 1 ,v 2 ,...,v n ) = (av 1 ,av 2 ,...,av n ).Elementul nul 0 = (0,0...0) ∈ IR n are toate componentele nule, iar opusul unui vector−v = (−v 1 ,...,−v n ) = −1·v. Implementarea acestui tip abstract de date este realizatăde pseudocodul:tip tablou real vector (n)procedură adv(u,v,w)vector u,vvector wpentru i = 1,nw i = u i +v iretur; adunarea vectorilor w = u + v; date de intrare; suma - data de ieşireprocedură inm(a,v,w)real avector vvector wpentru i = 1,nw i = av iretur; <strong>în</strong>multeşte vectorul v cu scalarul a; data de intrare; vector de intrare; rezultă w =avSpaţiul euclidianSpaţiul euclidian este un spaţiu vectorial <strong>în</strong>zestrat cu o normă care provine dintr-unprodus scalar:n∑u·v = (u 1 ,u 2 ,...,u n )·(v 1 ,v 2 ,...,v n ) = u i v iunde u,v ∈ IR n . Norma euclidiană este o aplicaţie pozitiv definită:‖·‖ : IR n → IR‖u‖ = √ u·ucunoscută şi sub numele de modulul vectorului.Pentru definirea unui spaţiu euclidian se foloseşte pseudocodul:i=1


26 Capitolul 1. Implementarea structurilor de date şi a algoritmilor numericitip vector euclidianfuncţie produs(u,v) ; produsul scalareuclidian u,v ; factorireal p ; produsul scalar p = uvp = 0pentru i = 1,np = p+u i v i<strong>în</strong>toarce pfuncţia norma (u) ; norma euclidiană a vectorului ueuclidian u,vreal normanorma = √ produs(u,u)<strong>în</strong>toarce normaInelul polinoamelorUn polinom algebric de gradul n este o construcţie de forma:P(x) = a 0 +a 1 x+a 2 x 2 +...+a n x ndefinită de coeficienţii p = (a 0 ,a 1 ,...,a n ), deci este reprezentabil printr-un tablou real.Un polinom este un element al unui spaţiu liniar (vectorial) deoarece suma a două polinoamese realizează prin suma coeficienţilor, iar produsul cu un scalar prin <strong>în</strong>mulţireatuturor coeficienţilor cu scalarul respectiv. Prin produsul a două polinoame de acelaşigrad se obţine un polinom de grad dublu. Dacă:n∑P(x) = a i x işiatunciQ(x) =i=0n∑b i x i ,i=0P(x)Q(x) =( n∑i=0a i x i )( n∑i=0b i x i )=right = a 0 b 0 +(a 0 b 1 +a 1 b 0 )x+(a 0 b 2 +a 1 b 1 +a 2 b 0 )x 2 +...O operaţie importantă este cea de evaluare a unui polinom. Pentru a micşora efortulde calcul, aceasta va fi efectuată sub forma:P(x) = a 0 +a 1 x+a 2 x 2 +..+a n x n = a 0 +x(a 1 +x(a 2 +x(a 3 +x(...))))


1.3. Tipuri abstracte de date 27care evită calculul puterilor x k .Următorul pseudocod permite implementarea acestui tip abstract de date:tip vector polinomprocedură prodp(n,r,q,p); <strong>în</strong>mulţirea polinoamelor p = rqintreg n; gradul factorilorpolinom r,q ; factoripolinom p ; rezultat<strong>în</strong>treg i,j,k ;variabile intermediarepentru i = 0,2np i = 0pentru i = 0,npentru j = 0,nk = i+j ; gradul monomului rezultatp k = p k +r i q jreturfuncţie evalp(n,p,x) ; evaluează polinomul p(x)intreg n ; gradul polinomuluipolinom p ; tabelul coeficienţilorreal x ; variabile independentăreal v ; valoare polinomv = p npentru i = n−1,0,−1v = p i +vx<strong>în</strong>toarce vInelul matricelor pătratice (IR n×n )O matrice pătrată A ∈ IR n×n este un tablou bidimensional:⎡ ⎤a 11 a 12 ··· a 1naA = [a ij ] i=1,n;j=1,n = 21 a 22 ··· a 2n⎢ ⎥⎣ ... ... ... ... ⎦ .a n1 a n2 ··· a nnSuma a două matrice: A = [a ij ],B = [b i,j ] ∈ IR n×n se realizează pe elemente:A+B = [a ij +b ij ],


28 Capitolul 1. Implementarea structurilor de date şi a algoritmilor numerici<strong>în</strong>mulţirea cu un scalar α ∈ IR este definită de:αA = [αa ij ],iar produsul a două matrice pătrate este o matrice de acelaşi tip:n∑AB = [a ij ][b ij ] = [ a ik b kj ] i=1,n;j=1,n .Pentru implementarea acestui tip abstract de date se foloseşte pseudocodul:k=1tip tablou real matrice (n,n)procedură adm(a,b,c) ; adunarea matricelor c = a + bmatrice a,b ; termenimatrice c ; rezultatpentru i = 1,npentru j = 1,nc ij = a ij +b ijreturprocedură inm(α,b,c)real αmatrice bmatrice cpentru i = 1,npentru j = 1,nc ij = αb ijretur; <strong>în</strong>mulţeşte matricea b cu scalarul α; termeni; rezultatprocedură prodm(a,b,c) ; <strong>în</strong>mulţirea matricelormatrice a,b ; factorimatrice c ; produspentru i = 1,npentru j = 1,nc ij = 0pentru k = 1,nc ij = a ik b kj +c ijretur


1.3. Tipuri abstracte de date 29Corpul numerelor complexe ICUn număr complex z = a+jb este reprezentat printr-o pereche de numere reale (a -partea reală, b - partea imaginară).Adunareanumerelorcomplexez 1 = a 1 +jb 1 , z 2 = a 2 +jb 2 serealizeazăconformrelaţiei:z 1 +z 2 = (a 1 +a 2 )+j(b 1 +b 2 ).Elementul neutru faţă de adunare este 0 = 0 + j0, iar opusul unui număr complex−z = −(a+jb) = −a−jb.Înmulţirea numerelor complexe z 1 = a 1 +jb 1 , z 2 = a 2 +jb 2 este realizată de operaţia:z 1 z 2 = (a 1 +jb 1 )(a 2 +jb 2 ) = a 1 a 2 −b 1 b 2 +j(a 1 b 2 +a 2 b 1 ).Elementul neutru faţă de <strong>în</strong>mulţire este 1 = 1+j0, iar inversul unui număr complex1/z = 1/(a+jb) = (a−jb)/(a 2 +b 2 ).O funcţie importantă este modulul unui număr complex, definit prin:|z| = |a+jb| = √ a 2 +b 2 .Următorul pseudocod implementează acest tip abstract de date:tip <strong>în</strong>registrare complexreal : rereal : improcedură sumac(u,v,w)complex u,vcomplex ww.re = u.re+v.rew.im = u.im+v.imretur; calculează suma numerelor complexe; termeni; w = u + vprocedură prodc(u,v,w) ; calculează produsul numerelor complexecomplex u,v ; termenicomplex w ; w = uvw.re = u.re·v.re−u.im·v.imw.im = u.re·v.im+u.im·v.reretur


30 Capitolul 1. Implementarea structurilor de date şi a algoritmilor numericiprocedură difc(u,v,w)complex u,vcomplex ww.re = u.re−v.rew.im = u.im−v.imretur; calculează diferenţa numerelor complexe; termeniprocedură rapc(u,v,w) ; calculează raportul numerelor complexecomplex u,v ; termenicomplex wreal v2v2 = v.re·v.re+v.im·v.imw.re = (u.re·v.re+u.im·v.im)/v2w.im = (u.im·v.re−u.re·v.im)/v2returfuncţia modulc(u) ; calculează modulul numărului complexcomplex ureal mm = √ (u.re·u.re+u.im·u.im)<strong>în</strong>toarce mUrmătorul exemplu de program:complex Z1,Z2,Z3,Z4,Zciteşte Z1,Z2prodc (Z1,Z2,Z3)sumac (Z1,Z2,Z4)rapc (Z3,Z4,Z)scrie Zstoppermitecalcululimpedanţeicomplexeechivalenteadouăelementecuimpedanţecomplexedate, conectate <strong>în</strong> paralel.


1.4. Complexitatea algoritmilor 311.4 Complexitatea algoritmilorCalitatea unui algoritm care se presupune că permite obţinerea soluţiei corecte esteapreciată prin eficienţa sa spaţială (memoria necesară datelor şi programului) şi temporală(timpul de calcul necesar obţinerii soluţiei).De exemplu, algoritmul pentru <strong>în</strong>mulţirea matricelor pătrate n dimensionale necesită3n 2 locaţii de memorie (<strong>în</strong> fiecare memorându-se un număr real, element al matricei A,Bsau C). Dacă dimensiunea n a matricei creşte de 10 ori, spaţiul necesar creşte de 100 ori,motiv pentru care se spune că algoritmul este de ordinul 2 şi se scrie M = O(n 2 ).Pentru evaluarea modului <strong>în</strong> care timpul de calcul depinde de dimensiunea problemeirezolvată de algoritm, se adoptă ca referinţă timpul necesar efectuării unei operaţii elementare(adunare sau <strong>în</strong>mulţire de numere reale) şi apoi se evaluează numărul acestoroperaţii. De exemplu, pentru calculul produsului scalar a doi vectori n dimensionali seefectuează n − 1 adunări şi n <strong>în</strong>mulţiri deci un total de 2n − 1 operaţii. Deoarece ladublarea dimensiunii se dublează practic numărul de operaţii, se spune ca acest algoritmare ordinul de complexitate liniar şi se notează T = O(n).În algoritmii numerici timpul de calcul este consumat mai ales <strong>în</strong> operaţiile repetateciclic. Ordinul de complexiate este <strong>în</strong> general dat de numărul ciclurilor incluse unul <strong>în</strong>altul, ca <strong>în</strong> exemplele:c = ab ; ordinul 0pentru i = 1,nc i = a i ·b i ; ordinul 1pentru i = 1,npentru j = 1,nc ij = a i −b j ; ordinul 2pentru i = 1,npentru j = 1,npentru k = 1,nc ij = a ik b kj ; ordinul 3În consecinţă, produsul scalar a 2 vectori este un algoritm de ordinul 1, T = O(n), iarprodusul a două matrice pătrate este de ordinul 3, T = O(n 3 ).


32 Capitolul 1. Implementarea structurilor de date şi a algoritmilor numericiAceeaşi problemă poate avea doi sau mai mulţi algoritmi de rezolvare cu ordine decomplexitate diferite. De exemplu, pentru evaluarea unui polinom se poate folosi procedura:funcţie evalpp (n,p,x)<strong>în</strong>treg n ; gradul polinomuluipolinom p ; coeficientii polinomuluireal x ; variabila independentăreal v ; valoarea polinomuluireal xk ; variabilă intermediarăv = p 0pentru i = 1,nxk = p ipentru k = 1,ixk = xk ·xv = v +xk<strong>în</strong>toarce vAcest algoritm are ordinul de complexitate T = O(n 2 /2), deci timpul de calcul creştepractic cu pătratul gradului polinomului, faţă de algoritmul folosit <strong>în</strong> procedura evalp,care are ordinul de complexitate liniar T = O(n) şi care este deci mai avantajos.O metodă eficientă pentru micşorarea timpului de calcul constă <strong>în</strong> scoaterea <strong>în</strong> afaraciclurilor a calculelor repetate, care au rezultate identice. De exemplu, dacă se doreştegenerarea matricei A = [a ij ] ∈ IR n×n cu a ij = f(x i )g(y j ) <strong>în</strong> care evaluările funcţiilor fşi g cer un efort de calcul mult mai mare decât o <strong>în</strong>mulţire, se poate folosi algoritmul”natural”:pentru i = 1,npentru j = 1,na ij = f(x i )·g(y j )cu ordinul de complexitate O(2n 2 ), <strong>în</strong> care s-a folosit ca operaţie de referinţă evaluareafuncţiei f sau g.Dacă evaluarea funcţiei f se face <strong>în</strong> afara ciclului interior:pentru i = 1,nfx = f(x i )pentru j = 1,n


1.5. Chestiuni de studiat 33a ij = fx·g(y j )timpul de calcul scade practic la jumătate, numărul de evaluări ale funcţiilor fiind n(n+1)şi ordinul de complexitate O(n 2 ). Acest ordin se reduce şi mai mult, dacă se adoptăalgoritmul:pentru i = 1,nfx i = f(x i )pentru j = 1,ngy j = g(y j )pentru i = 1,npentru j = 1,na ij = fx i ·gy jcu ordinul de complexitate liniar O(2n). Reducerea timpului de calcul s-a făcut pe seamacreşterii necesarului de memorie. În prima variantă M = O(n 2 + 2n), <strong>în</strong> a doua M =O(n 2 +2n+1), iar <strong>în</strong> a treia M = O(n 2 +4n). La dimensiuni mari ale lui n <strong>în</strong>să, necesarulde memorie suplimentar este nesemnificativ, astfel <strong>în</strong>cât varianta a treia, cu timp de calculliniar este cea mai bună.1.5 Chestiuni de studiat1. Analiza experimentală a complexităţii unui algoritm;2. Utilizarea tipurilor abstracte de date <strong>în</strong> electrotehnică;3. Utilizarea unor tipuri abstracte de date <strong>în</strong>tr-un limbaj de nivel <strong>în</strong>alt;4. Căutarea pe Internet a unor informaţii legate de implementarea unor structuri dedate.1.6 Modul de lucruPentru desfăşurarea lucrării se lansează programele demonstrative (clic pe pictogramaLMN) şi apoi se selectează lucrarea Implementarea structurilor de date şi a algoritmilornumerici din meniul principal afişat.Se afişează meniul lucrării care are două opţiuni:


34 Capitolul 1. Implementarea structurilor de date şi a algoritmilor numerici• Analiza algoritmilor• Calcule <strong>în</strong> complexUtilizatorul va selecta succesiv opţiunile dorite.a) Analiza experimentală a complexităţii unui algoritmSe selectează opţiunea Analiza algoritmilor din meniul lucrării. Aceasta are ca efectlansarea unui submeniu din care se pot apela următoarele proceduri:• produs scalar a doi vectori n dimensionali;• produsul a două polinoame de grad n;• produsul a două matrice pătrate de n×n elemente.Pentru fiecare din cele trei cazuri, utilizatorul trebuie să aleagă valorile lui n. De exemplu,pentru valoarea iniţială 0, valoare finală 100000 şi pas 10000, produsul scalar va fi apelat,succesiv pentru n = 10000,20000,30000,40000,50000,60000,70000,80000,90000,100000.Programul calculează produsul scalar a doi vectori aleatori de dimensiune n şi afişează <strong>în</strong>consola Scilab timpul de calcul.Datele trebuie trecute <strong>în</strong>tr-un tabel de tipuln 20000 40000 60000 80000 100000Timp CPU [s](produs scalar)Pentru produsul a două polinoame, dimensiunile recomandate sunt n = 50, 100, 150,200, 250, 300.Pentru produsul a două matrice, dimensiunile recomandate sunt n = 10, 20, 30, 40,50, 60, 70, 80..Se vor reprezenta grafic pe hârtie milimetrică cele trei curbe şi se vor compara rezultatelecu estimările teoretice.Indicaţie: se va verifica <strong>în</strong> cazul produsului scalar că raportul timp/dimensiune esteaproximativconstant,<strong>în</strong>cazulprodusuluiadouăpolinoamecăraportultimp/(dimensiunela pătrat) este aproximativ constant, etc..Din datele obţinute <strong>în</strong> cele trei cazuri se va estima timpul CPU al unei operaţii elementare(se consideră că timpul unei adunări este egal cu timpul unui <strong>în</strong>mulţiri).b) Utilizarea tipurilor abstracte de date <strong>în</strong> electrotehnică


1.6. Modul de lucru 35Se selectează opţiunea Calcule <strong>în</strong> complex, care are ca efect lansarea unui program cepermite efectuarea diferitelor calcule algebrice cu numere complexe. Programul emuleazăun calculator de buzunar, care foloseşte notaţia poloneză inversă (operand, operand, operator),dar care nu operează cu numere reale ci cu numere complexe.Introducerea operanzilor <strong>în</strong> stivă se face prin selectarea butonului:Stivă → Inserare element.Selectarea butonului Stivă permite şi apelul unor funţii utile ca:Stivă → Ştergere element sauStivă → Repetă v^arf stivăProgramul permite aplicarea unor operatori unari elementului care se află <strong>în</strong> vârfulstivei. Aceştia sunt:Operatori unari → OpusOperatori unari → InversOperatori unari → ConjugatProgramulpermiteşi aplicarea unoroperatoribinari, operanziifiind<strong>în</strong> acest cazpenultimulşi ultimul element (vârful) din stivă. Pentru aceasta selectaţi, respectiv:Operatori binari → AdunareOperatori binari → ScădereOperatori binari → ^InmulţireOperatori binari → ^ImpărţireStiva este vizualizată pe ecran pe cinci coloane (numar curent, parte reală, parteimaginară, modul şi argument exprimat <strong>în</strong> radiani. Operatorii unari acţionează asupraultimului element introdus <strong>în</strong> stivă, <strong>în</strong>locuindu-l cu valoarea obţinută <strong>în</strong> urma aplicăriioperatorului, iar stiva nu îşi modifică dimensiunea.Operatorii binari folosesc ca operanzi ultimele 2 elemente din stivă iar rezultatul<strong>în</strong>locuieşte aceste 2 elemente (stiva se micşorează cu un element).În consecinţă operatorii unari pot fi aplicaţi, dacă <strong>în</strong> stivă se află cel puţin un element,iar operatorii binari, dacă <strong>în</strong> stivă se află cel puţin 2 elemente.Stivaestealimentatăprinintroducereaunuinounumărcomplex(dimensiuneaeicreştecu un element).Pentru a facilita manipularea stivei sunt disponibili alţi 2 operatori cu caracter nenumeric(repetă vârful stivei, şterge vârful stivei), care modifică (incrementează respectivdecrementează) <strong>în</strong>ălţimea stivei.


36 Capitolul 1. Implementarea structurilor de date şi a algoritmilor numericiSe propune folosirea acestui program <strong>în</strong> rezolvarea unei probleme de electrotehnică şianume studiul unui circuit de curent alternativ format din trei impedanţe Z 1 = 10+5j,Z 2 = 3−7j, Z 3 = 5+2j conectate mixt (Z 1 <strong>în</strong> paralel cu Z 2 şi rezultatul <strong>în</strong> serie cu Z 3 )alimentat de la o sursă cu t.e.m reprezentată <strong>în</strong> complex ca E = 100j.Se vor calcula succesivZ 12 = (Z 1 Z 2 )/(Z 1 +Z 2 ) = 1/(1/Z 1 +1/Z 2 )Z = Z 12 +Z 3I = E/ZI 1 = IZ 2 /(Z 1 +Z 2 ) = I/(Z 1 /Z 2 +1)I 2 = IZ 1 /(Z 1 +Z 2 ) = I −I 1S g = EI ∗S 1 = Z 1 I 2 1S 2 = Z 2 I 2 2S 3 = Z 3 I 2S c = S 1 +S 2 +S 3i 1 (t) = I 1√2sin(ωt+φ1 )i 2 (t) = I 2√2sin(ωt+φ2 )c) Implementarea unor tipuri abstracte de date <strong>în</strong>tr-un limbaj de nivel <strong>în</strong>altDescărcaţi de la adresa http://mn.lmn.pub.ro/ fişierele complex.c, complex.h şielth.c. Fişierele complex.* sunt aceleaşi cuhttp://www.numerical-recipes.com/pubdom/complex.c.txt, respectivhttp://www.numerical-recipes.com/pubdom/complex.h.txt. Studiaţi modul de implementarecorpul numerelor complexe <strong>în</strong> limbajul C.În fişierul elth.c este <strong>în</strong>cepută rezolvarea problemei de electrotehnică de la punctulb). Comanda de compilare estegcc elth.c complex.c -lm -o elthProgramul obţinut se execută cu./elthContinuaţi scrierea programului care vă va permite să rezolvaţi aceeaşi problemă.Verificaţi rezultatele cu cele pe care le-aţi obţinut la punctul b.d) Căutarea pe Internet a unor informaţii legate de implementarea unor structuri dedate


1.7. Exemple 37Căutaţi pe Internet biblioteci informaţii legate de implementarea matricelor rare (matricecu multe elemente nule). Cuvinte cheie recomandate: Sparse Matrix CompressionFormats, Sparse Matrix Storage Format.1.7 Exemple1.7.1 Exemple rezolvate1. Fie pseudocodul de mai jos:; datele de intrare ale problemei<strong>în</strong>treg n ; dimensiunea problemeireal ctablou real a[n], b[n] ; indicele tabloului <strong>în</strong>cepe de la 1; datele de ieşire ale problemeireal s; variabile intermediare<strong>în</strong>treg i; introducerea datelor de intrareciteşte nciteşte cpentru i = 1,nciteşte a i , b i; iniţializarea soluţieis = 0; calculul soluţieipentru i = 1,ns = s+a i /b i ·c; afişarea soluţieiscrie sSe cer:(a) să se estimeze ordinul de complexitate al algoritmului din punct de vedere altimpului de calcul şi al necesarului de memorie. Se consideră ca operaţii elementare(dereferinţă)următoareleoperaţii:+, -, *, /, iarcalocaţieelementarăde memorie, locaţia ocupată de un numărul real;(b) să se scrie formula matematică de calcul a variabilei s, <strong>în</strong> funcţie de dateleproblemei;(c) să se optimizeze algoritmul <strong>în</strong> sensul reducerii timpului de calcul şi să se precizezenoul timp de calcul.


38 Capitolul 1. Implementarea structurilor de date şi a algoritmilor numericiRezolvare:(a) Algoritmul conţine un singur ciclu cu contor, <strong>în</strong> cadrul căruia se repetă de nori o instrucţiune de atribuire, <strong>în</strong> care se efectuează operaţii elementare. Dinacestemotive, neaşteptămcatimpuldecalculsădepindăliniardedimensiuneaproblemei, n (T ≈ O(n)).În continuare vom estima exact timpul de calcul. Pentru fiecare valoare acontorului i, <strong>în</strong> interiorul ciclului, se efectuează 3 operaţii elementare (+, /, *).Deoarece i ia valori de la 1 la n, numărul total de operaţii elementare efectuateeste 3n. Astfel, ordinul de complexitate al algoritmului din punct de vedereal timpului de calcul este T = O(3n) ∼ = O(n). De exemplu, dacă dimensiuneaproblemei creşte de 10 ori, timpul de calcul va creşte de 10 ori. Acest algoritmare ordinul de complexitate liniar (de ordinul 1).Pentru estimarea necesarului de memorie este necesar să se evalueze numărulde locaţii de memorie utilizate, mai precis, numărul de variabile reale declaratela <strong>în</strong>ceputul algoritmului. Astfel, sunt declarate 2 numere reale (s şi c) şi 2tablouri de numere reale de dimensiune n (a şi b), <strong>în</strong> total 2n + 2 numerelereale. Spunem că ordinul de complexitate al algoritmului din punct de vedereal necesarului de memorie este M = O(2n+2) ∼ = O(n). De exemplu, dacă secreşte de 10 ori dimensiunea tablourilor, spaţiul de memorie necesar creşte deaproximativ 10 ori. Din punct de vedere al necesarului de memorie, algoritmuleste de ordinul 1.(b) Se observă că algoritmul implementează următoarea formulă matematică:s =n∑i=1a ib i·c.(c) Pentru reducerea timpului de calcul, <strong>în</strong>mulţirea cu variabila c poate fi scoasă<strong>în</strong> afara ciclului:s = 0pentru i = 1,ns = s+a i /b is = s·cAceasta corespunde evaluării expresiei s cu formula s = c ∑ ni=1 a i/b i . Numărulde operaţii elementare efectuate este 2n + 1, iar ordinul de complexitate dinpunct de vedere al timpului de calcul devine T = O(2n+1) ∼ = O(n). Aceastăvariantă a algoritmului este mai rapidă decât varianta iniţială (de aproximativ1.5 ori).2. Fie pseudocodul de mai jos:


1.7. Exemple 39; declararea variabilelor<strong>în</strong>treg n, ireal stablou real a[n][n]; introducerea datelor de intrare...............; instrucţiunis = 0pentru i = 1,npentru j = 1,ns = s+a i,j ·v j ·√cscrie sSe cer:(a) să se declare variabilele j, c şi v;(b) să se estimeze ordinul de complexitate al algoritmului din punct de vedereal timpului de calcul şi al necesarului de memorie. Se consideră ca operaţiielementare (de referinţă) următoarele operaţii: +, -, *, /, √ , iar ca locaţieelementară de memorie, locaţia ocupată de un numărul real;(c) să se scrie formula matematică de calcul a variabilei s, <strong>în</strong> funcţie de dateleproblemei;(d) să se optimizeze algoritmul <strong>în</strong> sensul reducerii timpului de calcul şi să se precizezetimpul de calcul.Rezolvare:(a) Deoarece variabila j este un contor, cu valori de la 1 la n (variabilă intreagă),j trebuie declarat ca un <strong>în</strong>treg. Variabilele c şi v sunt utilizate la calcululrezultatului final, variabila reală s, astfel, c şi v sunt numere reale. Mai mult,<strong>în</strong> algoritm, referirea la variabila v se face prin v j , unde j = 1, n, ceea ce<strong>în</strong>seamnă că variabila v reprezintă un tablou de numere reale de dimensiune n.În concluzie, declaraţiile sunt:<strong>în</strong>treg jreal ctablou real v[n](b) Algoritmulconţinedouăcicluricucontor(dela1lan)imbricate. Instrucţiuneade atribuire din interiorul ciclurilor se repetă de n 2 ori şi conţine operaţii elementare.Ne aşteptăm ca ordinul de complexitate să fie T ≈ O(n 2 ).Pentru fiecare valoare a contoarelor i şi j, <strong>în</strong> interiorul ciclurilor, se efectuează4 operaţii elementare (+, *, *, √ ). Pentru fiecare valoare a lui i se efectuează


40 Capitolul 1. Implementarea structurilor de date şi a algoritmilor numerici4n operaţii. Cum sunt n valori posibile pentru i, numărul total de operaţii elementareefectuate va fi n∗(4n) = 4n 2 . Ordinul de complexitate al algoritmuluidin punct de vedere al timpului de calcul este T = O(4n 2 ) ∼ = O(n 2 ). Acestalgoritm are ordinul de complexitate pătratic (de ordinul 2). De exemplu, dacăn creşte de 10 ori, timpul de calcul creşte de 100 = 10 2 ori.În algoritm sunt declarate două variabile reale (s şi c), un tablou unidimensional(vector) de numere reale de dimensiune n (v) şi un tablou bidimensional(matrice) de numere reale de dimensiune n × n (a). În total, sunt declaraten 2 +n+2 numerele reale. Astfel, ordinul de complexitate al algoritmului dinpunct de vedere al necesarului de memorie este M = O(n 2 +n+2) ∼ = O(n 2 ).Se observă că, şi din punctul de vedere al necesarului de memorie, algoritmuleste de ordinul 2.(c) Algoritmul implementează următoarea formulă matematică:s =n∑ n∑a i,j ·v j ·√ci=1 j=1(d) Reducerea timpului de calcul se poate realiza prin scoaterea <strong>în</strong>mulţirii cu √ c<strong>în</strong> afara ciclurilor:s = 0pentru i = 1,npentru j = 1,ns = s+a i,j ·v js = s·√cAceasta corespunde implementării formulei matematice:s = √ cn∑i=1n∑a i,j ·v j .Acum, numărul de operaţii elementare efectuate este 2n 2 + 2, iar ordinul decomplexitatedinpunctdevederealtimpuluidecalculdevineT = O(2n 2 +2) ∼ =O(n 2 ).3. Fie pseudocodul de mai jos:; declaraţii variabile<strong>în</strong>treg n, ireal p, a, rez, termtablou real b[n]; introducere date de intrareciteşte nj=1


1.7. Exemple 41pentru i = 1,nciteşte b iciteşte a, p; iniţializare soluţierez = 0; calcul soluţiepentru i = 1,nterm = p+f(b i )term = term·f(a)rez = rez +term; afişare soluţiescrie rezSe cer:(a) să se estimeze ordinul de complexitate al algoritmului din punct de vedereal timpului de calcul şi al necesarului de memorie. Se consideră ca operaţieelementară (de referinţă) evaluarea funcţiei f, iar ca locaţie elementară dememorie, locaţia ocupată de un numărul real;(b) să se scrie formula matematică de calcul a rezultatului rez, <strong>în</strong> funcţie de dateleproblemei;(c) să se optimizeze algoritmul <strong>în</strong> sensul reducerii timpului de calcul şi să se precizezetimpul de calcul.Rezolvare:(a) Există un singur ciclu cu contor <strong>în</strong> interiorul căruia există operaţia de referinţă.Ne aşteptăm ca ordinul de complexitate din punct de vedere al timpului decalcul să fie T ∼ = O(n).Într-adevăr,pentrufiecarevaloarei,<strong>în</strong>interiorulcicluluiseefectuează2evaluăriale funcţiei, deci 2 operaţii elementare. Deoarece i poate lua n valori, rezultăcă numărul total de operaţii elementare este 2n. Deci, T = O(2n) ∼ = O(n).Pentru a estima necesarul de memorie, este util să se inspecteze declaraţiile ceconţin cuvântul cheie real. Sunt declaraţi 4 scalari reali şi un tablou de realicu n componente. În consecinţă, M = O(n+4) ∼ = O(n).(b) Se observă că algoritmul implementează următoarea formulă matematică:n∑rez = [p+f(b i )]·f(a).i=1(c) Algoritmul poate fi îmbunătăţit din punct de vedere al timpului de calculobservând că f(a) este evaluat <strong>în</strong> mod inutil de n ori, de fiecare dată când seschimbă valoarea contorului. Această evaluare poate fi scoasă <strong>în</strong> afara ciclului,astfel:


42 Capitolul 1. Implementarea structurilor de date şi a algoritmilor numericireal valrez = 0val = f(a)pentru i = 1,nterm = p+f(b i )term = term·valrez = rez +termAcum, avem T = O(n) şi M = O(n+5) ∼ = O(n).Această variantă este de 2 ori mai rapidă decât varianta iniţială. Costulîmbunătăţirii este nesemnificativ, memorarea unei noi variabile reale val.Această implementare corespunde evaluării rezultatului cu formula:n∑rez = f(a) [p+f(b i )].4. Fie pseudocodul de mai jos:<strong>în</strong>treg n, i, j, kreal p, rez, s, t 1 , t 2tablou real a[n], b[n]citeşte npentru i = 1,nciteşte a i , b iciteşte prez = 0pentru i = 1,nrez = rez +f(a i )t 1 = ppentru j = 1,nt 2 = g(b j )s = 0pentru k = 1,ns = s+f(a i )t 2 = t 2 +st 1 = t 1 ·t 2rez = rez +t 1scrie rezSe cer:(a) să se estimeze ordinul de complexitate al algoritmului din punct de vedereal timpului de calcul şi al necesarului de memorie. Se consideră ca operaţiielementare (de referinţă) evaluările funcţiilor f şi g, iar ca locaţie elementarăde memorie, locaţia ocupată de un numărul real;i=1


1.7. Exemple 43(b) să se scrie formula matematică de calcul a rezultatului rez, <strong>în</strong> funcţie de dateleproblemei;(c) să se optimizeze algoritmul <strong>în</strong> sensul reducerii timpului de calcul şi să se precizezetimpul de calcul.Rezolvare:(a) Sunt3cicluriimbricate,cicluldininteriorconţinândoperaţiaelementară,astfeleste de aşteptat să avem T = O(n 3 ).Într-adevăr,număruldeoperaţiielementarepentruvalorifixealecontorilori,j,k este 1 (o evaluare a funcţiei f); numărul de operaţii elementare pentru valorifixe ale contorilor i, j este n+1 (n evaluări ale funcţiei f şi o evaluare a funcţieig), numărul de operaţii elementare pentru i fixat este n(n+1)+1 = n 2 +n+1.Astfel, numărul total de operaţii elementare este n(n 2 +n+1) = n 3 +n 2 +n.Deci, T = O(n 3 +n 2 +n) ∼ = O(n 3 ). Inspectând declaraţiile care conţin cuvântulcheie real, se observă că necesarul de memorie este M = O(2n+5) ∼ = O(n).(b) Formula matematică:rez ={n∑f(a i )+pi=1[n∏g(b j )+i=1]}n∑f(a i ) .(c) Simplificareapseudocoduluiserealizeazăsimplificândformuladecalcul. Notăm:k=1S =Atunci:rez =Algoritmul devine:n∑f(a i ),i=1n∑[f(a i )+P] =i=1n∏P = p [g(b j )+S].i=1n∑f(a i )+nP = S +nP.i=1S = 0pentru i = 1,nS = S +f(a i )P = ppentru j = 1,nP = p·[g(b j )+S]rez = S +n·PAcum, ordinul de complexitate din punct de vedere al timpului de calcul esteT = O(2n) ∼ = O(n).


44 Capitolul 1. Implementarea structurilor de date şi a algoritmilor numerici1.7.2 Exemple propuse1. Fie pseudocodul de mai jos:<strong>în</strong>treg nreal stablou real b[n] ; indicele tabloului <strong>în</strong>cepe de la 1...............s = 0pentru i = 1,ns = s+ √ a i /b i ·ln(c)Se cer:(a) să se declare variabilele i, c şi a;(b) să se estimeze ordinul de complexitate al algoritmului din punct de vedereal timpului de calcul şi al necesarului de memorie. Se consideră ca operaţiielementare (de referinţă) următoarele operaţii: +, -, *, /, √ , ln, iar ca locaţieelementară de memorie, locaţia ocupată de un numărul real;(c) să se scrie formula matematică de calcul a variabilei s, <strong>în</strong> funcţie de dateleproblemei;(d) să se optimizeze algoritmul <strong>în</strong> sensul reducerii timpului de calcul şi să se precizezetimpul de calcul.2. Fie pseudocodul de mai jos:<strong>în</strong>treg nreal ptablou real x[n]...............p = 1pentru i = 1,np = p·sin(x i /y i −z i )·√wSe cer:(a) să se declare variabilele i, w, y şi z;(b) să se estimeze T = O(?) şi M = O(?). Operaţiile elementare se consideră: +,-, *, /, √ , sin. Locaţia elementară de memorie este locaţia ocupată de unnumărul real;(c) să se scrie formula matematică de calcul a variabilei p, <strong>în</strong> funcţie de dateleproblemei;(d) să se optimizeze algoritmul <strong>în</strong> sensul reducerii timpului de calcul şi să se precizezetimpul de calcul.


1.7. Exemple 453. Fie pseudocodul de mai jos:<strong>în</strong>treg n, ireal rez, t, t 1 , t 2tablou real a[n]...............rez = 0pentru i = 1,nt1 = f(p)·a it2 = f(p)·f(a i )t = t 1 +t 2rez = rez +tSe cer:(a) să se estimeze T = O(?) şi M = O(?). Se consideră ca operaţie elementarăevaluarea funcţiei f. Locaţia elementară de memorie este locaţia ocupată deun numărul real;(b) să se scrie formula matematică de calcul a variabilei rez, <strong>în</strong> funcţie de dateleproblemei;(c) să se optimizeze algoritmul <strong>în</strong> sensul reducerii timpului de calcul şi să se precizezetimpul de calcul.4. Fie pseudocodul de mai jos:<strong>în</strong>treg n, ireal rez, t, a, btablou real p[n]...............rez = 0pentru i = 1,nt = f(p i )+bt = t·f(a)rez = rez +tSe cer:(a) să se estimeze T = O(?) şi M = O(?). Se consideră ca operaţie elementarăevaluarea funcţiei f. Locaţia elementară de memorie este locaţia ocupată deun numărul real;(b) să se scrie formula matematică de calcul a variabilei rez, <strong>în</strong> funcţie de dateleproblemei;(c) să se optimizeze algoritmul <strong>în</strong> sensul reducerii timpului de calcul şi să se precizezetimpul de calcul.


46 Capitolul 1. Implementarea structurilor de date şi a algoritmilor numerici5. Fie pseudocodul de mai jos:<strong>în</strong>treg n, ireal xtablou real c[n][n]...............pentru i = 1,npentru j = 1,nc i,j = √ x·a i,j +ln(y)·b i,jSe cer:(a) să se declare variabilele j, y, a şi b;(b) să se estimeze T = O(?) şi M = O(?). Operaţiile elementare se consideră:+, -, *, /, √ , ln. Locaţia elementară de memorie este locaţia ocupată de unnumărul real;(c) să se scrie formula matematică de calcul a variabilei c, <strong>în</strong> funcţie de dateleproblemei;(d) să se optimizeze algoritmul <strong>în</strong> sensul reducerii timpului de calcul şi să se precizezetimpul de calcul.1.8 Întrebări şi probleme1. Săseimplementezeuntipabstractdedate,caresăpermităreprezentareacumaximăeficienţă spaţială a polinoamelor cu mulţi coeficienţi nuli, (de exemplu p(x) = 1+x 205 ).2. Să se implementeze un tip abstract de date care să permită reprezentarea eficientăa matricelor cu multe elemente nule (”matrice rare”).3. Să se definească o funcţie care să permită calculul normei Cebîşev a unui vectorşi a unei matrice||v|| = maxi=1,n |v 1|‖A‖ = maxi=1,nn∑|a ij |j=14. Să se scrie pseudocodul procedurilor de împărţire, derivare şi integrare a polinoamelor.5. Să se definească următoarele tipuri de date: spaţiu vectorial complex (IC n ), inelulmatricelor pătrate cu elemente complexe (IC n×n ), inelul polinoamelor cu coeficienţicomplecşi.


1.8. Întrebări şi probleme 476. Să se scrie o procedură de <strong>în</strong>mulţire a matricelor dreptunghiulare.7. Să se definească şi implementeze un tip abstract de date având ca elemente vectoritridimensionali IR 3 , cu care să se efectueze adunări, <strong>în</strong>mulţiri cu scalari, <strong>în</strong>mulţiriscalare şi vectoriale.8. Să se definească şi să se implementeze un tip abstrat de date având ca elementeimpedanţele cu care se pot face operaţii de conexiune serie şi paralel. Să se conceapăun program capabil să determine impedanţa complexă de transfer a unui cuadripolpasiv.9. Să se implementeze acelaşi tip abstract de date <strong>în</strong> două sau trei limbaje diferite deprogramare. Să se compare rezultatele din punctul de vedere al eficienţei spaţialeşi temporale.10. Să se studieze rutinele dedicate manipulării vectorilor, matricelor, şi polinoamelordintr-o bibliotecă matematică standard.11. Să se definească şi implementeze un tip abstract de date ale cărui elemente suntfuncţii raţionale cu coeficienţi reali. Cum poate fi folosit un astfel de tip de date <strong>în</strong>analiza circuitelor electrice liniare <strong>în</strong> regim tranzitoriu?12. Să se definească un tip abstract de date ale cărui elemente reprezintă serii Fouriertrunchiate. Cum poate fi folosit acest tip de date <strong>în</strong> analiza cu calculatorul a circuitelorliniare <strong>în</strong> regim periodic permanent nesinusoidal?


48 Capitolul 1. Implementarea structurilor de date şi a algoritmilor numerici


Lucrarea 2Erori <strong>în</strong> rezolvarea problemelor<strong>numerice</strong>2.1 Caracterizarea lucrăriiÎn majoritatea cazurilor, algoritmii cu caracter numeric, după implementarea lor peun sistem de calcul determină nu soluţia exactă a problemei ci o aproximare numerică aacesteia.Scopul acestei lucrări este de a evidenţia modul <strong>în</strong> care pot fi caracterizate erorile<strong>numerice</strong>, motivele apariţiei acestora şi modul <strong>în</strong> care acestea se propagă. Se studiazăerorile inerente (datorate datelor de intrare), erorile de rotunjire (datorate reprezentăriifinite, aproximative a numerelor reale) şi erorile de trunchiere (datorate aproximării finitea unor procese teoretic infinite).2.2 Principiul lucrăriiPentru a caracteriza abaterea unei variabile <strong>numerice</strong> de la valoarea sa exactă se poatefolosi eroarea absolută, definită prin:e x = x−x ∗ , (2.1)<strong>în</strong>carexestevaloareaexactăavariabilei,iarx ∗ estevaloareasaaproximativă. Deoarece<strong>în</strong>majoritatea cazurilor valoarea exactă nu este cunoscută se preferă utilizarea unei marginisuperioare a erorii absolute:a x ≥ |e x | = |x−x ∗ |. (2.2)În acest caz, <strong>în</strong> locul valorii exacte x se operează cu intervalul:x ∗ −a x ≤ x ≤ x ∗ +a x . (2.3)49


50 Capitolul 2. Erori <strong>în</strong> rezolvarea problemelor <strong>numerice</strong>O altă modalitate de caracterizare a abaterii unei variabile de la valoarea exactă esteeroarea relativă:ε x = e xx = x−x∗ , (2.4)xsau marginea superioară a acesteia:Γ x = a x|x| ≥ |eps x| = |x−x∗ |. (2.5)|x|În majoritatea calculelor tehnice, mărimile rezultate <strong>în</strong> urma măsurării sunt cunoscutecu 3 maxim 6 cifre semnificative exacte, ceea ce corespunde unor erori relative cuprinse<strong>în</strong> intervalul 10 −2 ÷10 −5 .2.2.1 Erori de rotunjireUnadincauzelefrecventedeeroare<strong>în</strong>calculelecunumererealesedatoreazăreprezentăriifinite a acestor numere <strong>în</strong> sistemele de calcul.Modul uzual de reprezentare a unui număr real <strong>în</strong>tr-un sistem de calcul este de forma:x ∗ = ±0,kkk...k ·10 ±kk = m·10 e , (2.6)unde k este cifră (0,1,...,9), m se numeşte mantisa, iar e exponent. Cu excepţianumărului nul, la care m = 0, <strong>în</strong> rest mantisa satisface relaţia:0.1 ≤ |m| ≤ 1. (2.7)Presupunândcămantisaestereprezentatăcuncifre,rezultăcăprinaceastăreprezentarecifrele “l” din reprezentarea exactă:sunt pierdute prin rotunjire.În consecinţă, eroarea relativă de rotunjireε x = |x−x∗ ||x|x = ±0.kk...k } {{ } ll...·10 ±kk (2.8)n= 0,0...0lll...·10±kk 0,lll...=0,kk...ll...·10±kk0.kk... 10−n = 10 −n+1 (2.9)depinde de numărul de cifre semnificative folosite <strong>în</strong> reprezentarea numărului real şi nude valoarea numărului. Această eroare relativă de rotunjire, specifică sistemului de calcul(calculator + mediu de programare) este cel mai mare număr real, care adăugat la unitatenu ”modifică” valoarea acesteia. Ordinul de mărime al erorii relative de rotunjire <strong>în</strong>sistemele uzuale de calcul este 10 −5 ÷ 10 −20 şi poate fi determinat pe fiecare sistem decalcul cu următorul algoritm:


2.2. Principiul lucrării 51; calculează eroarea relativă de rotunjirereal errerr=1repetăerr=err/2până când (1 + err = 1)scrie errEroarea relativă de rotunjire err este cunoscută sub numele de zeroul maşinii şi nutrebuie confundată cu cel mai mic număr pozitiv, nenul, reprezentabil <strong>în</strong> calculator.2.2.2 Erori inerenteDatele de intrare folosite <strong>în</strong> rezolvarea unei probleme tehnice provin <strong>în</strong> multe cazuridin determinări experimentale. Rezultatul oricărei măsurători este susceptibil de erori şichiar dacă datele de intrare sunt cunoscute cu maximă precizie ele pot fi afectate de eroride rotunjire.Erorile datelor de intrare <strong>în</strong>tr-un algoritm se numesc erori inerente. Aceste erori sepropagă <strong>în</strong> procesul de calcul şi afectează <strong>în</strong> final soluţia problemei. Chiar dacă algoritmulde calcul nu poate fi făcut responsabil de prezenţa erorilor <strong>în</strong> datele de intrare, el poateinfluenţa precizia soluţiei. Un algoritm la care eroarea relativă a soluţiei nu depăşeşteerorile relative ale datelor de intrare este un algoritm stabil din punct de vedere numeric.În schimb, dacă erorile relative ale soluţiei sunt mult mai mari decât cele ale datelor deintrare se spune că algoritmul de rezolvare prezintă instabilităţi <strong>numerice</strong>. În acest cazeste posibil ca abateri foarte mici ale datelor de intrare să determine abateri mari alesoluţiei <strong>numerice</strong> faţă de cea exactă, şi să facă soluţia numerică inutilizabilă. Dacă senoteaza cu y soluţia problemei, iar cu x 1 ,x 2 ,...,x n datele acesteia, procedeul de calcul vaconsta <strong>în</strong> fond <strong>în</strong> evaluarea funcţiei y = f(x 1 ,x 2 ,...,x n )Considerând erorile absolute suficient de mici, acestea se pot aproxima cu diferenţiala:Erorile relative satisfac relaţia:dy = ∂f∂x 1dx 1 + ∂f∂x 2dx 2 +···+ ∂f∂x ndx n ,e y = ∂f∂x 1e x1 + ∂f∂x 2e x2 +···+ ∂f∂x ne xn . (2.10)y ·ε y = ∂f∂x 1x 1 ·ε x1 + ∂f∂x 2x 2 ·ε x2 +···+ ∂f∂x nx n ·ε xn . (2.11)Deoarece <strong>în</strong> sistemele <strong>numerice</strong> de calcul, cele mai complicate proceduri se reduc <strong>în</strong>final la operaţii aritmetice, va fi analizată propagarea erorilor <strong>în</strong> cazul celor patru operaţiiaritmetice elementare:


52 Capitolul 2. Erori <strong>în</strong> rezolvarea problemelor <strong>numerice</strong>Adunarea:y = f(x 1 ,x 2 ) = x 1 +x 2 ,e y = e x1 +e x2 ,x 1ε y = ε x1 + x 2ε x2 . (2.12)x 1 +x 2 x 1 +x 2Dacă cei doi termeni x 1 , x 2 au acelaşi semn, adunarea este o operaţie stabilă numeric,deoarece ∣ ∣ ∣ ∣∣∣ x 1 ∣∣∣ ≤ 1,x 2 ∣∣∣x 1 +x 2∣ ≤ 1, |ε y | ≤ |ε x1 |+|ε x2 |.x 1 +x 2Scăderea:y = f(x 1 ,x 2 ) = x 1 −x 2 ,e y = e x1 −e x2 ,x 1ε y = ε x1 − x 2ε x2 . (2.13)x 1 −x 2 x 1 −x 2Dacă x 1 şi x 2 au acelaşi semn, operaţia de scădere este instabilă numeric. Eroarearelativă a diferenţei poate depăşi cu multe ordine de mărime eroarea termenilor, prinfenomenul numit de anulare prin scădere, ca <strong>în</strong> exemplul:x 1 = 0,12345±1% ; x 2 = 0,12344±1% ; y = x 1 −x 2 = 0,00001±3·10 4 %.Înmulţirea:y = f(x 1 ,x 2 ) = x 1 x 2e y = x 2 e x1 +x 1 e x2ε y = ε x1 +ε x2 (2.14)Înmulţirea este o operaţie stabilă din punct de vedere numeric deoarece|ε y | ≤ |ε x1 |+|ε x2 |.Împărţirea:y = f(x 1 ,x 2 ) = x 1x 2,e y = 1 x 2e x1 − x 1(x 2 ) 2e x 2,ε y = ε x1 −ε x2 . (2.15)Şi împărţirea este o operaţie stabilă din punct de vedere numeric deoarece|ε y | ≤ |ε x1 |+|ε x2 |.


2.2. Principiul lucrării 53În aceste evaluări ale erorilor s-a considerat că toate calculele se efectuează exact. Înrealitate, rezultatul este rotunjit (la numărul de cifre semnificative specifice sistemului decalcul) şi eroarea relativă a rezultatului este majorată cu eroarea relativă de rotunjire.În cazul <strong>în</strong> care prezintă importanţă deosebită evaluarea erorii unui calcul numeric sepoate utiliza următorul tip abstract de date care permite controlul propagării erorii. Înacest tip de date numerele reale x sunt reprezentate prin valoarea x şi marginea eroriirelative Γ x , deci prin intervalul:x ∗ (1−Γ x ) ≤ x ≤ x ∗ (1+Γ x ). (2.16)real tip inregistrare intervalreal val;valoarereal er;marginea erorii relativeprocedura suma (x,y,s);calculează s = x + yinterval x,y,ss.val = x.val+y.vals.er = err+(|x.val·x.er|+|y.val·y.er|)/|s.val|returprocedura dif(x,y,d);calculează d = x - yinterval x,y,dd.val = x.val−y.vald.er = err+(|x.val·x.er|+|y.val·y.er|)/|d.val|returprocedura prod(x,y,p);calculează p = x * yinterval x,y,pp.val = x.val·y.valp.er = err+|x.er|+|y.er|returprocedura rap(x,y,c);calculează c = x / yinterval x,y,cc.val = x.val/y.valc.er = err+|x.er|+|y.er|retur2.2.3 Erori de trunchiereÎn esenţă, metodele <strong>numerice</strong> constau <strong>în</strong> reducerea rezolvării unei probleme complicatela un număr finit de etape simple, care <strong>în</strong> fond sunt operaţii aritmetice elementare. Datorităcaracterului finit al oricărui algoritm, <strong>în</strong>cercarea de a rezolva probleme de analiză


54 Capitolul 2. Erori <strong>în</strong> rezolvarea problemelor <strong>numerice</strong>matematică, ce presupun teoretic o infinitate de paşi (cum sunt de exemplu calculelelimitelor) determină apariţia unor erori de metodă numite erori de trunchiere.Calculul numeric al limitelor de şiruri, serii sau funcţii (inclusiv calculul numerical derivatelor şi integralelor, care se reduc <strong>în</strong> fond tot la calculul limitelor) presupunetrunchierea unui proces numeric infinit. Pentru a evidenţia eroarea de trunchiere se considerăun şir numeric x k = 1,2,...,n convergent către limita x = lim k→∞ x k . Conformdefiniţiei convergenţei, pentru orice ε există un n astfel <strong>în</strong>cât |x−x k | ≤ ε, pentru oricek > n. În consecinţă, pentru o eroare ε impusă există un rang finit n, astfel <strong>în</strong>câtx n reprezintă o aproximare satisfăcătoare pentru limita x. Rezultă că, după evaluareaunui numar n suficient de mare de termeni, ultimul poate fi adoptat ca soluţie numericăx ∗ = x n , cuoeroaredetrunchieredependentădeacestn. Îngeneral, eroareadetrunchiereeste cu atât mai mică cu cât numărul de termeni calculaţi este mai mare. Modul <strong>în</strong> careeroarea de trunchiere depinde de n caracterizează viteza de convergenţă a algoritmului.Se spune că un algoritm are viteza de convergenţă de ordinul p, dacă există o constantăc > 0, astfel <strong>în</strong>cât eroarea de trunchiere satisface inegalitatea:|ε n | = |x−x n | ≤ c np, (2.17)pentru orice n > 1. Se constată că ordinul vitezei de convergenţă a unui algoritm estedat de panta dreptei ce mărgineşte superior graficul funcţiei |ε| = f(n) <strong>în</strong> scară dublulogaritmică.O categorie importantă de procese <strong>numerice</strong> infinite o reprezintă seriile Taylor. Acestea,fiind serii de puteri, pot fi utilizate la evaluarea funcţiilor elementare (sinus, cosinus,exponenţială, logaritm, etc.) şi a celor speciale (Bessel, integrale eliptice ) prin reducereala operaţii aritmetice elementare (adunări si <strong>în</strong>mulţiri).Pentru a exemplifica modul <strong>în</strong> care poate fi sumată numeric o serie cu controlul eroriide trunchiere se consideră dezvoltarea <strong>în</strong> serie Taylor a funcţiei y = sinx:Termenul general al seriei poate fi calculat recursiv:y = x− x33! + x55! − x7+... (2.18)7!T k = − (−1)k(2k −1)! x2k−1 = −T k−1x 2(2k −1)(2k −2) . (2.19)Prin trunchierea seriei la rangul n se obţinen∑y ∗ (−1) k+1=(2k −1)! ·x2k−1 . (2.20)k=1Deoarece seria este alternantă, eroarea de trunchiere este majorată de modulul primuluitermen neglijat:|ε y | = |y −y ∗ | ≤ |x|2n+1(2n+1)! . (2.21)


2.3. Chestiuni de studiat 55Rezultă următorul pseudocod pentru evaluarea funcţiei sinus cu o eroare de trunchieremai mică decât eroarea de rotunjire.funcţia sinus(x)real x,t,s<strong>în</strong>treg kt = xs = tk = 1repetăk = k +2t = −tx 2 /k/(k −1)s = s+tpână când |t|


56 Capitolul 2. Erori <strong>în</strong> rezolvarea problemelor <strong>numerice</strong>2.4.1 Determinarea erorii relative de rotunjire a sistemului decalculSe selectează opţiunea Eroarea de rotunjire care are ca efect calculul şi afişarea eroriirelative de rotunjire specifice sistemului.2.4.2 Analiza propagării erorilor inerenteSe selectează opţiunea Calcule cu controlul erorii din meniul principal, care are caefect lansarea unui program ce emulează un calculator de buzunar care foloseşte notaţiapoloneză inversă (operand, operand, operator). Acest calculator nu operează cu numerereale ci cu intervale (valoare numerică şi margine superioară a erorii relative).Programul permite introducerea fie a operanzilor (valoare şi eroare relativă) fie a operatorilorunari (I - invers, O - opus, V - radical ) sau binari ( + - * / ).Operanziisuntintroduşi<strong>în</strong>tr-ostivăvizualizatăpeecrande5coloane(numărdeordine,valoare numerică, eroare relativă, limita minimă şi limita maximă a valorii exacte).Operatorii unari acţionează asupra ultimului element introdus <strong>în</strong> stivă, <strong>în</strong>locuindu-l cuvaloarea obţinută <strong>în</strong> urma aplicării operatorului (stiva nu îşi modifică dimensiunea).Operatori binari folosesc ca operanzi ultimele două elemente din stivă, iar rezultatul<strong>în</strong>locuieşte aceste elemente (stiva se micşorează cu o unitate).Pentru a facilita manipularea stivei sunt disponibili <strong>în</strong>că doi operatori unari, cu caracternenumeric (R - repetă vârful stivei şi E - extrage element din stivă), care modifică(incrementează respectiv decrementează) <strong>în</strong>ălţimea stivei.Se propune rezolvarea ecuaţiei de gradul doi:ax 2 +bx+c = 0,<strong>în</strong> care a = 1, b = −100.01, c = 1 (cu rădăcinile x 1 = 100; x 2 = 0,01). Valorile a, b, c sevor introduce cu erorile relative de 0.1% = 0.001. Se vor nota valorile intermediare:şi erorile relative asociate.∆ = b 2 −4ac,x 1 = −b+√ ∆,2ax 2 = −b−√ ∆,2aPentru a evita erorile datorate anulării prin scădere, se va calcula a doua rădăcină pebaza relaţiei x 1 x 2 = c/ax 2 = cax 1.


2.4. Modul de lucru 57Se vor compara erorile relative şi absolute ale rezultatelor obţinute pe cele două căi.2.4.3 Analiza erorii de trunchiereSe selectează opţiunea Erori de trunchiere din meniul principal, care are ca efectlansarea unui program care realizează sumarea următoarelor serii:• Taylor pentru funcţia exponenţială• Taylor pentru funcţia sinus• Taylor pentru funcţia logaritm natural• Fourier pentru funcţia crenel• armonica alternantă• armonica alternantă cu convergenţă îmbunătăţită prin metoda EulerDupăselectareaserieişialegereavaloriivariabileiindependentex,programulcalculeazăşi afişează suma parţială a seriei şi eroarea absolută de trunchiere pentru diferite ordine,apoi reprezintă grafic variaţia erorii <strong>în</strong> funcţie de numărul de termeni sumaţi. Pentru aputea facilita comparaţiile se pot reprezenta şi mai multe grafice de erori simultan.Se recomandă observarea convergenţei• seriilor Taylor pentru evaluarea expresiilor:– exp(0), exp(1), exp(5), exp(-10), exp(10),– sin(0), sin(1), sin(10),– ln(1), ln(0.1), ln(1.1).Reamintim că dezvoltările <strong>în</strong> serie Taylor sunt:e x = 1+x+ x22! + x33! + x44! +···sin(x) = x− x33! + x55! − x77! +···ln(x) = (x−1)− (x−1)22• seriei Fourie pentru evaluarea expresiilor:– crenel(1), crenel(0.1).+ (x−1)33− (x−1)44+···


58 Capitolul 2. Erori <strong>în</strong> rezolvarea problemelor <strong>numerice</strong>Funcţia crenel este definită astfelcrenel(x) =iar dezvoltarea ei <strong>în</strong> serie Fourier conduce la{ π4dacăsin(x) > 0− π 4dacăsin(x) ≤ 0crenel(x) = sin(x)+ sin(3x)3+ sin(5x)5+···• armonicii alternanteA = 1− 1 2 + 1 3 − 1 ∞4 +... = ∑(−1) k+11 kk=1• armonicii alternante cu convergenţă îmbunătăţităA = 1− 1 2 + 1 3 − 1 4 +... = 0.5+ ∞∑k=1( 1− )12k−1 2k+1.4kSe vor comenta rezultatele şi se va aprecia viteza de convergenţă.Indicaţie: Pentru estimarea vitezei de convergenţă se calculează panta dreptei cemărgineşte graficul erorii, <strong>în</strong> scara dublu logaritmică.2.4.4 Implementarea unor algoritmi cu controlul eroriiSe va genera pseudocodul funcţiei cosinus, determinată prin serie Taylor trunchiatăpână la atingerea unei erori de trunchiere impuse. Se va implementa acest algoritm <strong>în</strong>trunlimbaj de programare sub forma unei funcţii cosinus(x,ert), <strong>în</strong> care x este variabilăindependentă iar ert este eroarea de trunchiere impusă. Se va implementa algoritmul dedeterminare al erorii relative de rotunjire err, iar <strong>în</strong> final se va implementa algoritmul deevaluare a funcţiei cosinus cu ert = err şi cu controlul propagării erorii, sub forma uneiproceduri care să calculeze cos(x) şi eroarea relativă asociată.2.5 Exemple2.5.1 Exemple rezolvate1. Să se calculeze o margine a erorii relative pentru aproximarea numărului √ 2 cu 2cifre semnificative exacte.Rezolvare:


2.5. Exemple 59Notăm cu x = √ 2 = 1.4142..., valoarea exactă a numărului √ 2. Aproximarea cu2 cifre semnificative exacte a lui √ 2 este: x ∗ = 1.41.Eroarea absolută este: e x = x−x ∗ = 1.4142...−1.41 = 0.0042....Eroarea relativă este:care este mărginită de:ε x = e xx = 0.0042...1.4142... ,|ε x | < 0.0051.4= 0.0035... < 0.0036 = 0.36%.Deci: √ 2 = 1.41±0.36%.2. Fie x = 5.43±1%, y = −5.42±2%, z = 3±1%.Să se calculeze (x+y)·z. Comentaţi rezultatul obţinut.Rezolvare:Mai <strong>în</strong>tâi se efectuează operaţia din paranteze, care este, de fapt, o scădere: x+y =5.43−5.42 = 0.01. Eroarea relativă va fi mărginită de:Γ x+y =x∣x+y∣ Γ x +y∣x+y∣ Γ y = 5.430.01 · 1100 + 5.420.01 · 2100 == 5.43+10.84 = 16.27 = 1627%.Eroarea este foarte mare deoarece au fost scăzute două numere foarte apropiate (aapărut fenomenul de anulare prin scădere).Rezultatul final (x+y)·z = 0.03 este calculat cu o eroare relativă mărginită de:Γ (x+y)·z = Γ x+y +Γ z = 1627100 + 1100 = 1628100 = 1628%.3. Fie x = 2.3±2%, y = 3.2±3%, z = 5.5±5%.Să se calculeze (x+y)+z si x+(y +z). Comentaţi rezultatele obţinute.Rezolvare:Să calculăm (x + y) + z. Mai <strong>în</strong>tâi se efectuează operaţia din paranteze: x + y =2.3+3.2 = 5.5. Eroarea relativă va fi mărginită de:Γ x+y =x∣x+y∣ Γ x +y∣x+y∣ Γ y; (2.22)Γ x+y = 2.35.5 ·2100 + 3.25.5 ·3100 = 2.58100 = 2.58%.


60 Capitolul 2. Erori <strong>în</strong> rezolvarea problemelor <strong>numerice</strong>Rezultatul final (x + y) + z = 5.5 + 5.5 = 11.0 este calculat cu o eroare relativămărginită de:Γ (x+y)+z =x+y∣(x+y)+z∣ Γ x+y +z∣(x+y)+z∣ Γ z; (2.23)Γ (x+y)+z = 5.511 · 14.25.5 ·1100 + 5.511 ·5100 = 3.79100 = 3.79%.In continuare calculăm x+(y +z). Mai <strong>în</strong>tâi se efectuează operaţia din parantezey +z = 3.2+5.5 = 8.7. Eroarea relativă va fi mărginită de:Γ y+z =y∣y +z∣ Γ y +z∣y +z∣ Γ z; (2.24)Γ y+z = 3.28.7 ·3100 + 5.58.7 ·5100 = 4.26100 = 4.26%.Rezultatul final x + (y + z) = 2.3 + 8.7 = 11.0 este calculat cu o eroare relativămărginită de:Γ x+(y+z) =x∣x+(y +z) ∣ Γ x +y +z∣x+(y +z) ∣ Γ y+z; (2.25)Γ x+(y+z) = 2.311 ·2100 + 8.711 · 37.18.7 ·1100 = 3.79100 = 3.79%.Observăm că:Γ (x+y)+z = Γ x+(y+z) .Într-adevăr, <strong>în</strong>locuind relaţia (2.22) <strong>în</strong> relaţia (2.23), obţinem:Γ (x+y)+z =x∣x+y +z∣ Γ x +y∣x+y +z∣ Γ y +z∣x+y +z∣ Γ z. (2.26)Similar, <strong>în</strong>locuind (2.24) <strong>în</strong> (2.25), obţinem exact acelaşi rezultat, (2.26).În realitate, <strong>în</strong> aceste calcule nu am ţinut cont de erorile de rotunjire eps. Acestease suprapun peste erorile inerente, astfel <strong>în</strong>cât este mai corect să scriem:Γ x+y =x∣x+y∣ Γ x +y∣x+y∣ Γ y +eps. (2.27)Urmează că:Γ (x+y)+z =x+y∣(x+y)+z∣ Γ x+y +z∣(x+y)+z∣ Γ z +eps. (2.28)


2.6. Întrebări şi probleme 61Înlocuind (2.27) <strong>în</strong> (2.28), rezultă că:Γ (x+y)+z =x∣x+y +z∣ Γ x+y∣x+y +z∣ Γ y+z∣x+y +z∣ Γ z +x+y∣x+y +z∣ eps+eps.Similar se obţine:Γ x+(y+z) =x∣x+y +z∣ Γ x+y∣x+y +z∣ Γ y+z∣x+y +z∣ Γ z +y +z∣x+y +z∣ eps+eps.În consecinţă:Γ (x+y)+z ≠ Γ x+(y+z) .Adunarea numerelor reale pe un sistem de calcul nu este asociativă.2.5.2 Exemple propuse1. Să se calculeze o margine a erorii relative pentru aproximarea numărului π cu 3 cifresemnificative exacte.2. Să se calculeze o margine a erorii relative pentru aproximarea numărului e cu 2 cifresemnificative exacte.3. Fie x = 2.01±1%, y = 4.24±4%, z = 2.12±2%.Să se calculeze x−y/z. Comentaţi rezultatul obţinut.4. Fie x = 3.12±1%, y = 2±1%, z = 1.21±2%.Să se calculeze x∗y +z.2.6 Întrebări şi probleme1. Cum poate fi caracterizată eroarea unei variabile vectoriale x?2. Implementaţi algoritmul de determinare a erorii relative de rotunjire <strong>în</strong> diferitelimbaje de programare (<strong>în</strong> simplă şi dublă precizie) şi apoi comparaţi rezultatele.3. Ce modificări trebuie aduse algoritmului de determinare a erorii relative de rotunjirepentru ca acesta să determine nu numai ordinul de mărime al erorii ci şi valoareasa exactă?4. Definiţişi implementaţiuntip abstract dedate, caresăreprezintefiecarenumărrealca o pereche de numere reale ce îl <strong>în</strong>cadrează (valoare maximă, valoare minimă).


62 Capitolul 2. Erori <strong>în</strong> rezolvarea problemelor <strong>numerice</strong>5. Este adunarea numerelor reale rotunjite o operaţie asociativă? Pentru a aduna maimultenumererealediferitecueroareminimăeletrebuiesortate<strong>în</strong>ordinecrescătoaresau descrescătoare?6. Pentru a micşora erorile de rotunjire la sumarea unei serii cum trebuie adunaţitermenii, <strong>în</strong> ordine crescătoare sau descrescătoare?7. Folosiţi opţiunea Calcule cu controlul erorii pentru a determina rezistenţa de şuntce trebuie folosită la transformarea unui galvanometru de 1mA (<strong>în</strong> clasa 2%) a căruirezistenţă R = 57.5Ω a fost determinată cu precizie de 0,5(%) <strong>în</strong>tr-un ampermetrude 1A.8. Generaţiunalgoritmpentrurezolvareauneiecuaţiidegraduldoi,careevităfenomenulde anulare prin scădere.9. Generaţi şi implementaţi un algoritm, pentru evaluarea funcţiilor Bessel.Brook Taylor (1685, Anglia - 1731, Anglia)http://www-groups.dcs.st-and.ac.uk/ history/Mathematicians/Taylor.htmlJean Baptiste Joseph Fourier (1768, France - 1830, France)http://www-groups.dcs.st-and.ac.uk/ history/Mathematicians/Fourier.html


Lucrarea 3Rezolvarea sistemelor de ecuaţiiliniare prin metoda Gauss. Strategiide pivotare <strong>în</strong> rezolvarea sistemeloralgebrice liniare3.1 Metoda Gauss fără pivotare3.1.1 Caracterizarea metodeiMetoda Gauss este o metodă directă de rezolvare a sistemelor de ecuaţii algebrice liniarecare au matricea sistemului pătrată şi nesingulară. Soluţia sistemului se obţine după unnumăr finit de paşi.În lucrare se prezintă principiul metodei şi se analizează algoritmul atât din punctulde vedere al complexităţii cât şi al stabilităţii <strong>numerice</strong>, evidenţiindu-se limitele acesteimetode.3.1.2 Principiul metodeiFie sistemul de ecuaţii:a 11 x 1 +a 12 x 2 +...+a 1n x n = b 1a 21 x 1 +a 22 x 2 +...+a 2n x n = b 2...... (3.1)a n1 x 1 +a n2 x 2 +...+a nn x n = b n63


64 Capitolul 3. Rezolvarea sistemelor de ecuaţii liniare prin metoda Gausssau <strong>în</strong> forma matricealăAx = b (3.2)A fiind matricea pătrată n × n - dimensională, iar b si x doi vectori n - dimensionali.CunoscândmatriceasistemuluiAşitermenulliberbsepuneproblemadeterminăriisoluţieix.Înmulţind prima ecuaţie, pe rând, cu −a i1 /a 11 , pentru i = 2,...,n, apoi adunând-o laecuaţia cu numărul i, se elimină x 1 din toate ecuaţiile, cu excepţia primei ecuaţii:a 11 x 1 +a 12 x 2 +...+a 1n x n = b 1a 22 x 2 +...+a 2n x n = b 2a n2 x 2 +...+a nn x n = b n...... (3.3)Coeficienţii care apar <strong>în</strong> linile 2, ..., n, deşi modificaţi, s-au notat <strong>în</strong> acelaşi mod,deoarece ei se vor memora <strong>în</strong> aceleaşi locaţii de memorie.Înmulţind a doua ecuaţie cu a i2 /a 22 şi adunând-o apoi la ecuaţia i, pentru i = 3,...,n,se elimina x 2 din toate ecuaţiile aflate sub linia a doua.Se continuă astfel până se aduce sistemul la forma:a 11 x 1 +a 12 x 2 +...+a 1n x n = b 1a 22 x 2 +...+a 2n x n = b 2...... (3.4)a nn x n = b nunde a 11 ,...,a nn , b 1 ,...,b n au alte valori decât <strong>în</strong> sistemul iniţial.Necunoscutele se determină prin retrosubstituţie:x n =x n−1 =......x k =......x 1 =b n,a nnb n−1 −a n−1,n x n,a n−1,n−1b k − ∑ nj=k+1 a kjx ja k,k, (3.5)b 1 − ∑ nj=2 a 1,jx ja 11.Etapa de aducere a matricei A la forma triunghiulară se numeşte eliminare sau triangularizare,iar etapa de determinare a soluţiilor - substituţie regresivă sau retrosubstituţie.Fiecare din elementele a kk , cu k = 1,2,...,n se numeşte pivot.


3.1. Metoda Gauss fără pivotare 65Dacă la o etapă a algoritmului se <strong>în</strong>tâlneşte un pivot nul, pentru a evita o împărţirela 0 este necesară o permutare a liniilor (sau a liniilor şi coloanelor) <strong>în</strong> scopul aducerii pelinia i, coloana i a unui element nenul. Această operaţie poartă numele de pivotare.3.1.3 Pseudocodul algoritmului Gauss fără pivotareprocedura gauss fp(n,a,b,x)tablou real a(n,n),b(n),x(n);eliminarepentru k = 1,n−1pentru i = k +1,np = a ik /a kkpentru j = k +1,na ij = a ij −a kj pb i = b i −b k p;retrosubstituţiex n = b n /a nnpentru i = n−1,1,−1s = b ipentru j = n,i+1,−1s = s−a ij x jx i = s/a iiretur;etapele eliminării;parcurge coloana de sub pivot;parcurge linia i, la dreapta;pivotulProcedura are parametrii:• de intrare:– n = dimensiunea sistemului;– a(n,n) = matricea sistemului;– b(n) = vectorul termenilor liberi;• de ieşire:– x(n) = vectorul soluţie.Matricea A este adusă la forma superior triunghiulară după n−1 paşi. La fiecare pask, linia k şi cele de deasupra ei, colona k şi cele din stânga ei nu sunt afectate.


66 Capitolul 3. Rezolvarea sistemelor de ecuaţii liniare prin metoda Gauss3.1.4 Analiza complexităţiiEfort de calculPentru trecerea de la pasul k la pasul k +1 se efectuează:• (n−k)(n−k +1) <strong>în</strong>mulţiri,• (n−k)(n−k +1) adunări,• (n−k) împărţiri.În consecinţă, pentru trecerea de la matricea iniţială la forma superior triunghiulară,se vor efectua:• ∑ n−1k=1 (n−k)(n−k +1) = n(n2 −1)/3 <strong>în</strong>mulţiri,• ∑ n−1k=1 (n−k)(n−k +1) = n(n2 −1)/3 adunări,• ∑ n−1k=1(n−k) = n(n−1)/2 împărţiri.În etapa de retrosubstituţie se mai efectuează:• ∑ n−1i=1(n−i) = n(n−1)/2 <strong>în</strong>mulţiri,• ∑ n−1i=1(n−i) = n(n−1)/2 adunări,• n impărţiri.Deci, <strong>în</strong> total se efectuează:• n(n−1)(2n+5)/6 <strong>în</strong>mulţiri,• n(n−1)(2n+5)/6 adunări,• n(n+1)/2 împărţiri.Deoarece, <strong>în</strong> general, timpul necesar calculatorului pentru a efectua o <strong>în</strong>mulţire sau oîmparţire este aproximativ egal cu cel consumat pentru o adunare, efortul de calcul este2n(2n 2 +6n−2)/6 operaţii aritmetice elementare.Dacănestemare(n > 2),efortuldecalculestedeordinul2n 3 /3şisenoteazăO(2n 3 /3).Necesarul de memoriePentru memorarea matricei A şi a vectorilor b şi x sunt necesare: n 2 +n+n = n(n+2)locaţii de memorie, fiecare locaţie de memorie fiind rezervată unui număr real.


3.2. Strategii de pivotare <strong>în</strong> rezolvarea sistemelor algebrice liniare 673.1.5 Analiza erorilorRulatpeuncalculatoripoteticdeprecizieinfinită, algoritmulGausspermitedeterminareasoluţieiexacteasistemului. Cualtecuvinteacestalgoritmnuintroduceeroaredemetodă.Pot apare <strong>în</strong>să erori de rotunjire, datorate preciziei finite a echipamentului de calcul.Aceste erori cresc odată cu creşterea dimensiunii n a sistemului.Metoda Gauss <strong>în</strong> această variantă (fără pivotare) poate genera instabilităţi <strong>numerice</strong>chiar dacă nu se <strong>în</strong>tâlneşte vreun element a ii nul, din cauza erorilor de rotunjire.Pentru evaluarea erorii se poate folosi reziduulr = Ax−b, (3.6)mai precis norma lui. Această normă poate fi evaluată euclidian:√ ∑‖r| =kr 2 k(3.7)sau <strong>în</strong> sens Cebîşev:‖r‖ = max‖r k ‖, k = 1,...,n. (3.8)Eroarea relativă se defineşte caε r = ‖r‖/‖b‖. (3.9)Norma reziduului definită anterior, nu trebuie confundată cu norma erorii adevărate:Eroarea relativă adevărată se defineşte ca:e = ‖x adevărat −x‖. (3.10)ε = e/‖x adevărat ‖. (3.11)Calculul erorii (3.10) ar necesita <strong>în</strong>să cunoaşterea soluţiei exacte a sistemului. Deaceea, <strong>în</strong> practică se face doar o evaluare a erorii, folosind norma reziduului, care <strong>în</strong>săpoate avea o valoare mai mare sau mai mică decât eroarea reală.3.2 Strategii de pivotare <strong>în</strong> rezolvarea sistemelor algebriceliniare3.2.1 Caracterizarea metodeiPivotarea este o metodă care permite extinderea domeniului de aplicabilitate a metodeiGauss şi îmbunătăţirea stabilităţii ei <strong>numerice</strong>.


68 Capitolul 3. Rezolvarea sistemelor de ecuaţii liniare prin metoda GaussÎn acest paragraf se analizează diferite strategii de pivotare şi efectele lor asupra eroriicu care se obţine soluţia.3.2.2 Principiul metodeiLa rezolvarea unui sistem de ecuaţii prin metode directe, de exemplu prin metoda Gauss,poate apare situaţia <strong>în</strong> care un element pivot a kk este nul, chiar dacă matricea sistemuluieste nesingulară. <strong>Metode</strong>le directe necesitând împărţirea la pivot, sistemul nu se poaterezolva <strong>în</strong> forma dată.Permutarea liniilor şi/sau a coloanelor astfel <strong>în</strong>cât să se aducă pe poziţia diagonală(k,k), un element nenul se numeşte pivotare. Pentru a obţine o bună stabilitate numerică(erori de rotunjire minime) se preferă alegerea ca pivot a unui element de modul maxim.Se pot utiliza trei strategii de pivotare: parţială, totală sau diagonală.Pivotarea parţialăconstă<strong>în</strong>căutareapivotuluidemodulmaximprintretoţicoeficienţiiaflaţisubliniak şipecoloanak şiaducereaacestuielementpepoziţia(k,k)prinpermutăride linii (ceea ce este echivalent cu schimbarea ordinii ecuaţiilor).Pivotarea totalăconstă<strong>în</strong>căutareapivotuluidemodulmaximprintretoţicoeficienţiiaflaţi sub linia k şi la dreapta coloanei k şi aducerea acestui element pe poziţia (k,k) prinpermutări de linii şi de coloane (se schimbă atât ordinea liniilor cât şi cea a coloanelor).Pivotarea diagonală constă <strong>în</strong> căutarea pivotului optim doar printre elementele diagonalea ii , cu i ≥ k. Aducerea acestui element pe poziţia (k,k) se face, ca şi la pivotareatotală, prin permutări de linii şi coloane. Avantajul acestei strategii de pivotare estepăstrarea simetriei matricei sistemului.La metoda cu pivotare parţială, unde se fac doar permutări de linii, ordinea necunoscutelor<strong>în</strong> fiecare ecuaţie nu se modifică. La metodele cu pivotare totală sau diagonală,datorită permutării coloanelor, se modifică şi ordinea necunoscutelor <strong>în</strong> sistem. De aceea,aceste strategii impun memorarea permutărilor de coloane făcute pe parcursul algoritmului,pentru a se putea reconstitui la sfârşit ordinea iniţială a necunoscutelor.3.2.3 Pseudocodul algoritmului Gauss cu pivotare parţialăfuncţia gausspp (n, a, b, x)tablou real a(n,n), b(n), x(n); eliminare ; etapele eliminăriipentru k = 1,n−1; găsire pivotmax = kpentru m = k +1,n


3.2. Strategii de pivotare <strong>în</strong> rezolvarea sistemelor algebrice liniare 69dacă |a mx | > |a max,k | atunci max = mdacă a max,k = 0 atunci <strong>în</strong>toarce 1 ; eroaredacă max ≠ k atunci ; permută liniile max, kpentru m = k,ntemp = a kma km = a max,ma max,m = temptemp = b k; permută termenii liberib k = b maxb max = temp ; s-a găsit pivotulpentru i = k +1,n ; parcurge coloana de sub pivotdacă a ik ≠ 0 atuncip = a ik /a kkpentru j = k +1,n ; parcurge linia ia ij = a ij −a kj ·p ; la dreapta pivotuluib i = b i −b k ·p; retrosubstituţiedacă a n,n = 0 atunci <strong>în</strong>toarce 1; eroarex n = b n /a n,npentru i = n−1,1,−1s = b ipentru j = n,i+1,−1s = s−a ij ·x jx i = s/a ii<strong>în</strong>toarce 0Funcţia are parametrii:• de intrare:• de ieşire:Funcţia <strong>în</strong>toarce:n = dimensiunea sistemului;a(n,n) = matricea sistemului;b(n) = vectorul termenilor liberi.x(n) = vectorul soluţiei.0 - dacă algoritmul s-a executat integral;1 - dacă matricea sistemului este singulară.


70 Capitolul 3. Rezolvarea sistemelor de ecuaţii liniare prin metoda Gauss3.2.4 Analiza complexităţiiEfort de calculDacă se neglijeajă timpul consumat datorită permutărilor de linii, efortul de calcul laprocedura Gauss cu pivotare este de ordinul O(2n 3 /3), ca şi la cea fără pivotare.Necesarul de memoriePentru memorarea matricei A şi a vectorilor b şi x sunt necesare:n 2 +n+n = n(n+2)locaţii, fiecare locaţie de memorie fiind rezervată unui număr real.3.2.5 Analiza erorilorErorile se calculează la fel ca la algoritmul Gauss fără pivotare. Deşi stabilitatea numericăa algoritmului cu pivotare este <strong>în</strong> general mai bună, totuşi, erorile de rotunjire pot afectagrav soluţia <strong>în</strong> cazul sistemelor slab condiţionate.3.3 Chestiuni de studiat1. Rezolvarea unor sisteme algebrice liniare;2. Analiza experimentală a algoritmilor;3. Implementarea algoritmilor <strong>în</strong>tr-un limbaj de programare;4. Căutare de informaţii legate de această temă.3.4 Modul de lucruSeselecteazălucrareaRezolvareasistemelor cumetodaGaussdinmeniulprincipal. Aceastaare ca efect lansarea următorului meniu:• Rezolvare sisteme de ecuaţii• Analiza algoritmilor


3.4. Modul de lucru 713.4.1 Rezolvarea unor sisteme algebrice liniareSe selectează opţiunea Rezolvare sisteme de ecuaţii.Se vor introduce parametrii necesari pentru rezolvarea următoarelor sisteme:⎧x 1 + x 2 + x 3 + x 4 + x 5 = 9 R : x 1 = 1⎪⎨ 2x 1 + x 2 + x 3 + 3x 4 + x 5 = 12 x 2 = 2x 1 + x 2 + 3x 3 + x 4 + 2x 5 = 17 x 3 = 32x 1 + 3x 2 + x 3 + 2x 4 + x 5 = 15 x 4 = 1⎪⎩x 1 + x 2 + x 3 + x 4 + 4x 5 = 15 x 5 = 2⎧⎨⎩x 1 + x 2 − 2x 3 = −3 R : x 1 = 23x 1 + x 3 = 10 x 2 = 3x 1 + 2x 2 + x 3 = 12 x 3 = 4⎧⎨⎩⎧⎨⎩y + z = 42x + y + 2z = 11x + 2y + z = 7x + 2y + z = 7x + 2y + 2z = 102x + 4y + 3z = 11{ mx1 + 1000x 2 = 10001000x 1 = 1000unde m ia valorile: 1000, 100, 10, 1, 10 −1 , 10 −4 , 10 −5 , 10 −6 .Se vor selecta pe rând metoda fără pivotare şi apoi cu pivotare. Se vor comentarezultatele obţinute.3.4.2 Analiza experimentală a algoritmuluiSe selectează optiunea Analiza algoritmilor.Astfel, se apelează un program care rezolvă sisteme de ecuaţii liniare de diferite mărimiprin metoda Gauss fără pivotare, Gauss cu pivotare parţială şi Gauss cu pivotare totală.Parametrul de intrare al programului este dimensiunea sistemului, n. După preluareaacestui parametru programul generează aleator un sistem de n ecuaţii şi n necunoscute,îl rezolvă şi afişează: eroarea absolută, eroarea relativă şi reziduul rezultatului, calculatefiecare cu formula normei Euclidiene, sau a normei Cebîşev (<strong>în</strong> total 6 valori). Se afişeazăde asemenea timpul de calcul.


72 Capitolul 3. Rezolvarea sistemelor de ecuaţii liniare prin metoda GaussPentru a simplifica operaţia de culegere a datelor <strong>numerice</strong>, programul cere valoareainiţială a lui n, valoarea finală şi pasul. Se recomandă folosirea următoarelor valori:valoare iniţială 10, valoare finală 100, pas 10, ceea ce corespunde şirului de valori n =10,20,30,40,50,60,70,80,90,100.Rezultatele <strong>numerice</strong> sunt afişate <strong>în</strong> consola Scilab şi reprezentate grafic.Se vor nota pentru fiecare n şi fiecare metodă eroarea relativă (norma Euclidiană şinorma Cebîsev) şi reziduul relativ (norma euclidiană), precum şi timpul de calcul.n 10 20 ········· 90 100timp[s]G.f.pG.p.pG.p.ter.rel G.f.p(Euclid) G.p.p.er.rel G.f.p(Cebîşev) G.p.p.reziduu rel. G.f.p(Euclid) G.p.p.Se vor reprezenta pe hârtie milimetrică:• curba timpului de calcul <strong>în</strong> funcţie de dimensiunea sistemului n;• curbele erorilor de calcul <strong>în</strong> funcţie de n.3.4.3 Implementarea algoritmilor <strong>în</strong>tr-un limbaj de programareSe va implementa o procedură proprie de rezolvare a unui sistem de ecuaţii prin metodaGauss fără pivotare. Se va compila procedura elimin<strong>în</strong>du-se eventualele erori.Se va scrie pseudocodul şi se va implementa pe calculator un program care apeleazăprocedura de la punctul anterior şi rezolvă sistemul de ecuaţii:⎧⎨⎩2x + y + z = 7 R : x = 1x + y + z = 6 y = 22x + y + 3z = 13 z = 3Acest program va permite introducerea datelor de la consolă şi afişarea pe ecran asoluţiei. Se vor nota şi comenta rezultatele obţinute, eventualele dificultăţi apărute peparcursul lucrului.


3.5. Exemple 733.4.4 Căutare de informaţiiCăutaţi pe Internet informaţii (coduri) legate de metoda Gauss pentru rezolvarea directăa sistemelor de ecuaţii liniare. Exemple de cuvinte cheie: Gauss elimination and backsubstitution.3.5 Exemple3.5.1 Exemple rezolvate1. Fie sistemul de ecuaţii:⎧⎨⎩x + 2y − z = 42x + 2y − 3z = 2−3x + 2y + 2z = 2Să se rezolve sistemul de ecuaţii prin metoda Gauss.Rezolvare:Deoarece matricea coeficienţilor sistemului de ecuaţii este pătrată şi nesingulară,metoda Gauss se poate aplica pentru rezolvarea sistemului de ecuaţii.Metoda Gauss constă <strong>în</strong> etapa de eliminare şi etapa de retrosubstituţie.În etapa de eliminare (sau triangularizare) matricea coeficienţilor sistemului deecuaţii se aduce la forma superior triunghiulară.Pentru triangularizarea matricii, prima ecuaţie (linie, notată L 1 <strong>în</strong> c ele ce urmează)se <strong>în</strong>mulţeşte cu −(2/1) şi se adună la a doua ecuaţie (linie, L 2 ) pentru a se eliminatermenul <strong>în</strong> x din a doua ecuaţie. De notat că, după acest pas, prima ecuaţie nu semodifică, doar a două ecuaţie suferă modificări, conform relaţiei L ′ 2 = L 2 +(−2)·L 1 .L 1L 2L 3L 1L ′ 2L 3⎧⎨⎩⎧⎨⎩x + 2y − z = 4 |·(− 2 1 )2x + 2y − 3z = 2−3x + 2y + 2z = 2x + 2y − z = 4− 2y − z = −6−3x + 2y + 2z = 2L ′ 2 =L 2+(−2)·L 1=⇒În continuare, prima ecuaţie (L 1 ) se <strong>în</strong>mulţeşte cu −[(−3)/1] şi se adună la a treiaecuaţie (L 3 ), astfel eliminându-se termenul <strong>în</strong> x şi din a treia ecuaţie (L ′ 3 = L 3 +3·L 1 ).


74 Capitolul 3. Rezolvarea sistemelor de ecuaţii liniare prin metoda GaussL 1L ′ 2L 3L 1L ′ 2L ′ 3⎧⎨⎩⎧⎨⎩x + 2y − z = 4 |·(− −3)1− 2y − z = −6−3x + 2y + 2z = 2x + 2y − z = 4− 2y − z = −6+ 8y − z = 14L ′ 3 =L 3+3·L 1=⇒Se observă că elementele de sub elementul diagonal din prima ecuaţie sunt nuli.Mai departe, se urmăreşte anularea elementelor de sub elementul diagonal din adoua ecuaţie.Astfel, a doua ecuaţie (L ′ 2) se <strong>în</strong>mulţeşte cu −[8/(−2)] şi se adună la a treia ecuaţie(L ′ 3), eliminându-se termenul <strong>în</strong> y din a treia ecuaţie (L ′′3 = L ′ 3 +4·L ′ 2). De notatcă ecuaţia a doua (L ′ 2) nu suferă modificări.L 1L ′ 2L ′ 3L 1L ′ 2L ′′3⎧⎪⎨⎪⎩⎧⎨⎩x + 2y − z = 4− 2y − z = −6 |·(− 8 ) −2+ 8y − z = 14x + 2y − z = 4− 2y − z = −6− 5z = −10L ′′3 =L′ 3 +4·L′ 2=⇒Se observă că matricea coeficienţilor ultimului sistem de ecuaţii este superior triunghiulară.Necunoscutele sistemului se determină in etapa de retrosubstituţie (substituţieregresivă).În ultima ecuaţie apare o singură necunoscută, z, care se calculează astfel:z = −10−5 = 2.În a doua ecuaţie, avem tot o singură necunoscută, y, deoarece z este deja calculatla pasul precedent. Astfel:y = −6+z−2= −6+2−2= 2.Însfârşit, <strong>în</strong>primaecuaţie, singuranecunoscutaesteacumx, iary şiz fiindcalculatela paşii anteriori. Rezultă:x =4−2y +z1= 4−4+2 = 2.


3.5. Exemple 75Soluţia sistemului de ecuaţii este (2, 2, 2).2. Fie sistemul de ecuaţii:⎧⎨⎩−x + 2y + 4z = 53x − y + z = 3−2x − y + z = −2Să se rezolve sistemul de ecuaţii prin metoda Gauss.Rezolvare:Etapa de eliminare:• Prima ecuaţie (L 1 ) se <strong>în</strong>mulţeşte cu −[3/(−1)] şi se adună la a doua ecuaţie (L 2 ),astfel se elimină termenul <strong>în</strong> x din a doua ecuaţie. Doar a doua ecuaţie se modifică(L ′ 2 = L 2 +3·L 1 ).• Prima ecuaţie (L 1 ) se <strong>în</strong>mulţeşte cu −[(−2)/(−1)] şi se adună la a treia ecuaţie(L 3 ), astfel se elimină termenul <strong>în</strong> x şi din a treia ecuaţie (L ′ 3 = L 3 +(−2)·L 1 ).De precizat că prima ecuaţie (L 1 ) nu se modifică.⎧L 1 ⎪⎨ −x + 2y + 4z = 5 |·(− 3 ) −1 |·(−−2)−1L 2 3x − y + z = 3⎪L ⎩3 −2x − y + z = −2L ′ 2 =L 2+3·L 1=⇒L ′ 3 =L 3+(−2)·L 1=⇒L 1L ′ 2L ′ 3⎧⎨⎩−x + 2y + 4z = 55y + 13z = 18− 5y − 7z = −12• A doua ecuaţie (L ′ 2) se <strong>în</strong>mulţeşte cu −[(−5)/5] şi se adună la a treia ecuaţie (L ′ 3),eliminându-se y din a treia ecuaţie (L ′′3 = L ′ 3 +1·L ′ 2).De notat că ecuaţia a doua (L ′ 2) nu suferă modificări.L 1L ′ 2L ′ 3⎧⎨⎩−x + 2y + 4z = 55y + 13z = 18 |·(− −5)5− 5y − 7z = −12L ′′3 =L′ 3 +L′ 2=⇒L 1L ′ 2L ′′3⎧⎨⎩−x + 2y + 4z = 55y + 13z = 186z = 6Se observă că matricea coeficienţilor ultimului sistem de ecuaţii este superior triunghiulară.


76 Capitolul 3. Rezolvarea sistemelor de ecuaţii liniare prin metoda GaussEtapa de retrosubstituţie:• Necunoscutele sistemului se determină astfel:z = 6 = 1 6y = 18−13z = 18−13 = 15 −5x = 5−2y−4z = 5−2−4 = 1.−1 −1Soluţia sistemului de ecuaţii este (1, 1, 1).3. Fie sistemul de ecuaţii:⎧⎨⎩−2x + y − z = −3−4x + 4y + z = 76x + 2y + 3z = 19Să se rezolve sistemul de ecuaţii prin metoda Gauss.Rezolvare:Etapa de eliminare:L 1L 2L 3L 1L ′ 2L ′ 3L 1L ′ 2L ′′3⎧⎪⎨⎪ ⎩−2x + y − z = −3 |·(− −4−2 ) |·(− 6−2 )−4x + 4y + z = 76x + 2y + 3z = 19⎧⎨⎩⎧⎨⎩−2x + y − z = −32y + 3z = 13 |·(− 5 2 )5y = 10−2x + y − z = −32y + 3z = 13− 15z = 2 −45 2L ′ 2 =L 2+(−2)·L 1=⇒L ′ 3 =L 3+3·L 1=⇒L ′′3 =L′ 3 +(−5/2)·L′ 2=⇒Matricea coeficienţilor ultimului sistem de ecuaţii este superior triunghiulară.Se observă că <strong>în</strong> ultima ecuaţie a penultimului sistem de ecuaţii de mai sus existăo singură necunoscută, y. Determinarea lui y din această ecuaţie este corectă dinpunct de vedere matematic, dar nu este conform metodei Gauss. La metoda Gauss,necunoscutelesistemuluisedeterminăcândmatriceasistemuluiareoformăsuperiortriunghiulară, ceea ce nu este cazul matricii penultimului sistem de ecuaţii.Etapa de retrosubstituţie:


3.5. Exemple 77z = −45 2− 152= 3y = 13−3z2= 13−9x = −3−y+z−2Soluţia sistemului de ecuaţii este (1, 2, 3).2= 2= −3−2+3−2= 1.4. Fie sistemul de ecuaţii:⎧⎨⎩2y − 3z = −1x + y − z = 1−2x + 3y + z = 2Să se rezolve sistemul de ecuaţii prin metoda Gauss.Rezolvare:Etapa de eliminare:În prima ecuaţie coeficientul diagonal (pivotul, termenul <strong>în</strong> x) este nul, ceea ce arduce la o împărţire la zero <strong>în</strong> etapa de eliminare. Din acest motiv, trebuie să seaplice o tehnică de pivotare. Se va utiliza pivotarea parţială (permutarea a douălinii), fiind cea mai uşor de aplicat.Pentru a obţine erori de rotunjire minime, se permută prima ecuaţie (cu pivot nul)cu ecuaţia care are termenul <strong>în</strong> x maxim <strong>în</strong> modul (coeficientul de sub pivotul nul).Se observă că a treia ecuaţie <strong>în</strong>deplineşte această condiţie (|−2| > |1|).Astfel, prima ecuaţie se permută cu a treia ecuaţie, iar sistemul de ecuaţii devine:L ′ 1L 2L ′ 3L ′ 1L ′ 2L ′ 3L ′ 1L ′ 2L ′′3⎧⎪⎨⎪⎩⎧⎨⎩⎧⎨⎩−2x + 3y + z = 2 |·(− 1−2 )x + y − z = 12y − 3z = −1−2x + 3y + z = 252 y − 1 2 z = 2 |·(−4 5 )2y − 3z = −1−2x + 3y + z = 252 y − 1 2 z = 2− 13 5 z = −13 5L ′ 2 =L 2+(1/2)·L ′ 1=⇒L ′′3 =L′ 3 +(−4/5)·L′ 2=⇒Matricea coeficienţilor ultimului sistem de ecuaţii este superior triunghiulară.Etapa de retrosubstituţie:


78 Capitolul 3. Rezolvarea sistemelor de ecuaţii liniare prin metoda Gaussz = −13 5− 135y = 2+1 2 z52= 1x = 2−3y−z−2Soluţia sistemului de ecuaţii este (1, 1, 1).= 2+1 252= 1= 2−3−1−2= 1.5. Fie sistemul de ecuaţii:⎧⎪⎨⎪⎩−x + y + z + w = 22x − 2y − z + w = 0−3x + 2y + z − w = −1x − 3y + z + 2w = 1Să se rezolve sistemul de ecuaţii prin metoda Gauss.Rezolvare:Etapa de eliminare:−x + y + z + w = 2 |·(−L 1⎧⎪ 2 ) −1 |·(−−3)|·(− 1−1⎨L 22x − 2y − z + w = 0=⇒L 3 −3x + 2y + z − w = −1=⇒L 4⎪ ⎩L 1L ′ 2L ′ 3L ′ 4⎧⎪⎨⎪⎩x − 3y + z + 2w = 1−x + y + z + w = 2z + 3w = 4− y − 2z − 4w = −7− 2y + 2z + 3w = 3) −1L ′ 2 =L 2+2·L 1L ′ 3 =L 3+(−3)·L 1L ′ 4 =L 4+L 1=⇒În a doua ecuaţie coeficientul diagonal (pivotul, termenul <strong>în</strong> y) este nul, fiind necesarăo pivotare parţială.Pentru a obţine erori de rotunjire minime, se permută a doua ecuaţie (cu pivot nul)cu ecuaţia care are termenul <strong>în</strong> y maxim <strong>în</strong> modul (coeficientul de sub pivotul nul).Se observă că a patra ecuaţie <strong>în</strong>deplineşte această condiţie (|−2| > |−1|).Astfel, a doua ecuaţie se permută cu a patra ecuaţie, iar sistemul de ecuaţii devine:


3.5. Exemple 79L 1L ′′2L ′ 3L ′′4L 1L ′′2L ′′3L ′′4L 1L ′′2L ′′3L ′′′4⎧⎪⎨⎪⎩⎧⎪⎨⎪⎩⎧⎪⎨⎪⎩−x + y + z + w = 2− 2y + 2z + 3w = 3 |·(− −1)−2− y − 2z − 4w = −7z + 3w = 4−x + y + z + w = 2− 2y + 2z + 3w = 3− 3z − 11 2 w = −17 2|·(− 1−3 )z + 3w = 4−x + y + z + w = 2− 2y + 2z + 3w = 3− 3z − 11w = 2 −17 27w = 76 6L ′′3 =L′ 3 +(−1/2)·L′′ 2=⇒L ′′′4 =L′′ 4 +(1/3)·L′′ 3Matricea coeficienţilor ultimului sistem de ecuaţii este superior triunghiulară.Etapa de retrosubstituţie:=⇒w = 7 67 = 16z = −17y = 3−2z−3w−2x = 2−y−z−w−12 +11 2 w= −17 2 +11 2−3= 3−2−3Soluţia sistemului de ecuaţii este (1, 1, 1, 1).−3= 1−2= 1−1= 1.= 2−1−1−13.5.2 Exemple propuse1. Fie sistemul de ecuaţii:⎧⎨⎩3x − y + z = 33x − 6y + z = −2−x + 2y + 4z = 5Să se rezolve sistemul de ecuaţii prin metoda directă Gauss.2. Fie sistemul de ecuaţii:⎧⎨⎩x + y − 3z = −12x + y − z = 2x − y − z = −1Să se rezolve sistemul de ecuaţii prin metoda directă Gauss.


80 Capitolul 3. Rezolvarea sistemelor de ecuaţii liniare prin metoda Gauss3. Fie sistemul de ecuaţii:⎧⎨⎩x + 2y − z = 22x − y − 2z = −1−x + y + z = 1Să se rezolve sistemul de ecuaţii prin metoda Gauss.4. Fie sistemul de ecuaţii:⎧⎨⎩y + z = 32x + y − z = 1−x − y + 2z = 2Să se rezolve sistemul de ecuaţii prin metoda Gauss.5. Fie sistemul de ecuaţii:⎧⎨⎩−x + y + z = 12x − 2y − z = −1−3x + y + z = −1Să se rezolve sistemul de ecuaţii prin metoda Gauss.3.6 Întrebări1. Cumsepotverificasoluţiileobţinute<strong>în</strong>urmarezolvăriiunuisistemdeecuaţii? Cums-ar putea evalua eroarea cu care s-au determinat necunoscutele?2. Daţi exemplu de un sistem, cu matricea A nesingulară, care nu poate fi rezolvatprin algoritmul Gauss fără pivotare.3. Care este ordinul de complexitate al algoritmului Gauss? Să se compare valoareateoretică cu valorile obţinute <strong>în</strong> urma experimentărilor.4. Să se evalueze durata medie a unei operaţii matematice elementare.5. Cum variază erorile de calcul introduse de algoritmul Gauss cu dimensiunea sistemului?Care este explicaţia?6. Cât de bine este evaluată eroarea adevărată prin norma reziduului?7. Evidenţiaţi utilitatea acestei proceduri <strong>în</strong> electrotehnică.


3.6. Întrebări 818. Ce modificări trebuie aduse procedurii pentru a rezolva sisteme cu coeficienţi complecşi?9. Ce alte îmbunătăţiri se pot aduce procedurii?10. Ce limitări are algoritmul prezentat <strong>în</strong> capitolul 3?11. Cum variază timpul de calcul la rezolvarea de sisteme liniare prin metodele Gaussfără pivotare şi cu pivotare? Care este explicaţia?12. Care sunt avantajele şi dezavantajele metodelor cu pivotare?13. Cum variază erorile de calcul introduse de algoritmul Gauss pentru metodele: fărăpivotare, cu pivotare parţială, cu pivotare totală?14. Să se facă o analiză a celor trei metode, luând <strong>în</strong> consideraţie erorile şi timpul decalcul. Care este metoda optimă?15. Ce modificări trebuie aduse algoritmului pentru a rezolva sistemul cu coeficienţicomplecşi?16. Ce alte îmbunătăţiri se pot aduce algoritmului?17. Documentaţi-vă <strong>în</strong> literatura de specialitate şi pe internet cum poate fi evaluatăerorea soluţiei <strong>numerice</strong> a unui sistem de ecuaţii algebrice liniare, atunci când termenulliber este perturbat. Ce se <strong>în</strong>telege printr-un sistem liniar bine condiţionatşi, respectiv, slab condiţionat? Cum se defineste ”numărul de condiţionare” şi cumse foloseşte acesta pentru a stabili gradul de condiţionare al unei probleme?18. Cum se rezolvă sistemele algebrice liniare prin metode directe <strong>în</strong> mediul MAT-LAB/SCILAB?19. Identificaţi<strong>în</strong>bibliotecamatematicădescrisăin[2]funcţiiavansatepentrurezolvareacumetodedirecteasistemelordeecuaţiialgebriceliniare. Ceaducnouacestefuncţiifaţă de cea folosită in lucrare?


82 Capitolul 3. Rezolvarea sistemelor de ecuaţii liniare prin metoda GaussJohann Carl Friedrich Gauss (1777, Brunswick - 1855,Hanover(acum Germania)http://www-gap.dcs.st-and.ac.uk/ history/Mathematicians/Gauss.htmlhttp://scienceworld.wolfram.com/biography/Gauss.htmlPafnuty Lvovich Chebyshev (1821, Rusia - 1894, Rusia)http://scienceworld.wolfram.com/biography/Chebyshev.htmlEuclid of Alexandria (aprox. 325 BC - aprox. 265 BC, Alexandria,Egipt)http://www-gap.dcs.st-and.ac.uk/ history/Mathematicians/Euclid.htmlhttp://scienceworld.wolfram.com/biography/Euclid.html


Lucrarea 4<strong>Metode</strong> iterative de rezolvare asistemelor algebrice liniare4.1 Caracterizarea metodelor<strong>Metode</strong>le iterative sunt metode care permit obţinerea soluţiei <strong>numerice</strong> a unui sistem deecuaţii, prin generarea unui şir care tinde către soluţia exactă. Elementele acestui şirde iteraţii se calculează recursiv, iar procesul se opreşte după un număr finit de paşi, la<strong>în</strong>deplinirea criteriului de eroare.Chiar dacă soluţia obţinută prin metode iterative este afectată de erori de trunchiere,erori care nu apar <strong>în</strong> cazul metodelor directe, este totuşi posibil ca soluţia iterativă să fiemai precisă decât cea obţinută prin metode directe. Pentru o anumită clasă de sisteme,metodele iterative sunt superioare atât din punctul de vedere al erorii cât şi din cel alefortului de cacul.4.2 Principiul metodeiÎn lucrare se prezintă cele mai simple metode iterative pentru rezolvarea sistemelor algebriceliniare şi se descrie clasa sistemelor pentru care acestea pot fi aplicate.<strong>Metode</strong>le iterative de rezolvare a sistemelor de ecuaţii liniare sunt metodele <strong>în</strong> caretermenul x (k) al şirului soluţiilor se obţine din termenul anterior, x (k−1) .Soluţia exactă se obţine teoretic după un număr infinit de iteraţii. În practică, prinefectuarea unui număr finit de iteraţii, se poate ajunge la o aproximare suficient de bună asoluţieiexacte. Dacăşiruliteraţiiloresteconvergent, cucâtseefecteazămaimulteiteraţii,cu atât soluţia numerică este mai precis determinată, erorile, atât cele de trunchiere câtşi cele de rotunjire, devenind tot mai mici.83


84 Capitolul 4. <strong>Metode</strong> iterative de rezolvare a sistemelor algebrice liniareÎn metodele iterative, se porneşte de la o iniţializare arbitrară pentru vectorul soluţienumerică x 0 . Pentru a determina noua valoare a soluţiei <strong>numerice</strong>, se rescrie ecuaţia subforma:x = F(x), (4.1)<strong>în</strong>careF senumeşteaplicaţie cu punct fix, iarlafiecarepask alalgoritmului, sedeterminănoua soluţie numerică din relaţia:x k = F(x k−1 ). (4.2)Pentru a aduce sistemul de rezolvatAx = b (4.3)la forma unei aplicaţii cu punct fix, <strong>în</strong> general se caută o descompunere a matricei A<strong>în</strong>tr-o diferenţă de două matrice:A = B−C, (4.4)sistemul putând fi astfel adus la forma:x = B −1 (b+Cx), (4.5)soluţia la pasul k fiind:saux k = B −1 (Cx k−1 +b), (4.6)x k = Mx k−1 +u, (4.7)<strong>în</strong> care M = B −1 C se numeşte matrice de iteraţie, iar u = B −1 b.Una din problemele metodelor iterative este convergenţa şirului de iteraţii. Se demonstreazăcă o condiţie suficientă pentru ca metoda să fie convergentă este ca valorile propriiale matricei de iteraţie M = B −1 C să fie toate, <strong>în</strong> modul, mai mici decât 1. Definindraza de convergenţă a matricei M, ρ(M), ca fiind modulul celei mai mari valori proprii,condiţia de convergenţă se scrie:ρ(M) < 1 (4.8)Această condiţie de convergenţă este corelată cu norma matricei de iteraţie M. Se demonstreazăcă, pentru orice matrice, există următoarea relaţie <strong>în</strong>tre norma şi raza sa deconvergenţă:ρ(M) ≤ ‖M‖ (4.9)Prin urmare, dacă matricea M are norma subunitară (‖M‖ < 1), raza sa de convergenţăva fi şi ea mai mică decât 1, iar metoda iterativă va fi <strong>în</strong> acest caz convergentă.<strong>Metode</strong>le iterative cele mai cunoscute sunt:• metoda deplasărilor simultane (Jacobi),


4.2. Principiul metodei 85• metoda deplasărilor succesive (Gauss-Seidel),• metoda suprarelaxărilor succesive(Frankel-Young),• metoda direcţiilor alternante (Peaceman-Rachford),• metoda iteraţiilor bloc,• metoda factorizării incomplete,• metoda Southwell.Metoda Jacobi a deplasărilor simultane constă <strong>în</strong> alegerea partitiţiei matricei A astfel:B este matricea alcătuită din elementele diagonale ale lui AB = D, (4.10)iar matricea C conţine restul elementelor din matricea A, luate cu semn schimbat:C = −(L+U), (4.11)<strong>în</strong> care s-au notat cu L şi U triunghiul inferior, respectiv cel superior din A. Cu aceastădescompunere, vectorul soluţie la fiecare pas k va avea expresia:iar matricea de iteraţie M va fi:x k = D −1 (b−(L+U)x k−1 ), (4.12)M = −D −1 (L+U). (4.13)Se consideră linia i a sistemului de ecuaţii care trebuie rezolvat:a i1 x 1 +a i2 x 2 +...+a ii x i +...+a in x n = b i (4.14)Partiţionarea aleasă pentru matricea A revine la a determina pe x i la pasul curent k dinecuaţia i, cu relaţia:x k i = b i − ∑ nj=1,j≠i a ijx k−1j, (4.15)a ii<strong>în</strong> care x i din membrul stâng reprezintă componenta i a noii soluţii, iar x j din membruldrept sunt valorile obţinute la precedentul pas al iteraţiei. Se observă că, pentru determinareanoii soluţii, trebuie cunoscute, pe tot parcursul iteraţiei k, valorile soluţiei de lapasul anterior k −1.În metoda Gauss-Seidel, a deplasărilor succesive, partiţionarea se alege astfel:B = D+L, (4.16)


86 Capitolul 4. <strong>Metode</strong> iterative de rezolvare a sistemelor algebrice liniarematricea B conţinând astfel partea inferior triunghiulară a matricei A inclusiv diagonala,iarC = −U (4.17)matricea C conţinând partea superior triunghiulară a matricei. Matricea de iteraţie vaavea formaM = −(D+L) −1 U. (4.18)Această partiţionare presupune că <strong>în</strong> membrul stâng al ecuaţiei i din sistem rămân termeniicare conţin x j ,j ≤ i, iar <strong>în</strong> membrul drept trec toţi ceilalţi termeni:a i1 x 1 +a i2 x 2 +...+a ii x i = b i −a i,i+1 x i+1 −...−a in x n . (4.19)Ca şi până acum, componentele vectorului soluţie aflate <strong>în</strong> membrul stâng reprezintăvalori ”noi”, calculate la pasul curent k, pe când componentele din membrul drept suntcele calculate la pasul anterior. Din această relaţie rezultă valoarea componentei x i lapasul curent:∑i−1b i −j=1a ij x (k)j −n∑j=i+1a ij x (k−1)jx k i =. (4.20)a iiSe observă că o componentă x i a soluţiei la pasul k este calculată <strong>în</strong> funcţie de componenteleprecedente 1,...,i−1, deja calculate la pasul curent şi de următoarele componentei+1,...,n, calculate la pasul precedent. Algoritmul nu necesită păstrarea vechii componentei, după ce cea nouă a fost calculată, de aceea x i nou se poate plasa <strong>în</strong> memorie<strong>în</strong> aceeaşi locaţie ca şi vechea valoare. Astfel, algoritmul Gauss-Seidel nu necesită spaţiupentru memorarea decât a unui vector soluţie, spre deosebire de algoritmul Jacobi, undetrebuiau memoraţi atât x nou cât şi x vechi. În metoda Gauss-Seidel, imediat ce o componentăa fost determinată, ea este folosită <strong>în</strong> calculele următoare, <strong>în</strong>locuind valoarea vechecare se pierde, idee cunoscută sub numele de principiul lui Seidel.Una din problemele care apar la rezolvarea sistemelor de ecuaţii liniare prin metodeiterative este alegerea criteriului de oprire a procesului iterativ. O metodă de a rezolvaaceastă problemă a criteriului de oprire constă <strong>în</strong> evaluarea, după fiecare iteraţie, a eroriiCauchye = ‖x nou −x vechi ‖ (4.21)şi <strong>în</strong>treruperea calculelor atunci când această valoare devine mai mică decăt eroarea impusă,ε.În ceea ce priveşte convergenţa metodelor, se demonstrează că la metodele Jacobi şiGauss-Seidel, o condiţie suficientă ca metodele să fie convergente este ca matricea A asistemului să fie diagonal dominantă, adică|a ii | > ∑ j≠i|a ij | ∀i. (4.22)


4.3. Pseudocodul algoritmilor 87Desigur, aşa cum s-a arătat, condiţia de mai sus este echivalentă cu impunerea condiţieica norma matricei de iteraţie să fie subunitară, procesul iterativ fiind cu atât mai rapidconvergent cu cât norma matricei de iteraţie este mai mică. În cazul matricelor simetriceşipozitivdefinite, metodaGauss-Seidelestedeaproximativ2orimairapidădecâtmetodaJacobi. Acest avantaj, corelat şi cu necesitatea memorării unui singur vector soluţie, faceca metoda Gauss-Seidel să fie preferabilă metodei Jacobi din toate punctele de vedere.4.3 Pseudocodul algoritmilorUrmătoareaprocedurăpermiterezolvareasistemelordeecuatiiliniareprinmetodaJacobi.procedura Jacobi (n,a,b,x,nrit,eps)tablou real a(n,n),b(n),x(n)<strong>în</strong>teg nritreal epstablou real xn(N); x nou; iniţializărik = 0; contor iteraţiipentru i=1,nx i = 0; iniţializarea soluţiei; iteraţiirepetă; parcurge iteraţiileerr= 0;; eroarea la pasul curentpentru i= 1,n ; parcurge ecuaţiiles = b(i)pentru j=1,n ; parcurge ecuaţia is = s−a(i,j)x(j)s = s+a(i,i)x(i)xn(i) = s/a(i,i) ; x nous = |xn(i)−x(i)|dacă err < s atunci err = spentru i= 1,nx(i) = xn(i) ; <strong>în</strong>locuieşte x vechi cu x nouk = k +1; incrementează contor iteraţiipână când (err < eps) sau (k > nrit)returUrmătoarea procedură permite rezolvarea sistemelor de ecuaţii liniare prin metodaGauss-Seidel


88 Capitolul 4. <strong>Metode</strong> iterative de rezolvare a sistemelor algebrice liniareprocedura Gauss-Seidel(n,a,b,x,nrit,eps)tablou real a(n,n), b(n), x(n)<strong>în</strong>treg nritreal epsiniţializărik = 0; contor iteraţiipentru i=1,nx(i) = 0; iniţializarea soluţiei; iteraţiirepetă; parcurge iteraţiileerr = 0; eroarea la pasul curentpentru i=1,n ; parcurge ecuaţiiles = b(i)pentru j=1,n ; parcurge ecuaţia is = s−a(i,j)x(j)s = (s+a(i,i)x(i))/a(i,i)err = err+(s−x(i))x(i) = s ; x nouk = k +1; incrementează contor iteraţiierr = sqrt(err)până când (err < eps) sau (k > nrit)returProcedurile Jacobi şi Gauss-Seidel au parametrii:• de intrare– n = dimensiunea sistemului;– a(n,n)= matricea sistemului;– b(n) = vectorul termenilor liberi;– nrit = numărul maxim de iteraţii;– eps = eroarea admisă;• de ieşire x(n) = vectorul soluţie.Pentru a demonstra modul diferit <strong>în</strong> care se poate evalua eroarea, <strong>în</strong> algoritmul Jacobis-a folosit norma Cebîşev a erorii, iar <strong>în</strong> algoritmul Gauss-Seidel norma Euclidiană.


4.4. Analiza algoritmilor 894.4 Analiza algoritmilorEfort de calculPentru o iteraţie, ordinul de complexitate al metodelor Jacobi şi Gauss-Seidel esteO(n(n+2)). Efortul de calcul pentru rezolvarea <strong>în</strong>tregului sistem de ecuaţii liniare prinmetode iterative este de ordinul O(mn 2 ), <strong>în</strong> care numărul total de iteraţii m care vorfi efectuate nu este <strong>în</strong> general cunoscut dinainte. Efortul de calcul depinde de normamatricei de iteraţie, fiind cu atât mai mic cu cât norma este mai mică.Necesar de memoriePentrumemorareamatriceisistemului, avectorilortermenliberşisoluţiesuntnecesaren 2 +2nlocaţii de memorie. În plus, la algoritmul Jacobi mai suntnecesare n locaţii pentrumemorarea soluţiei obţinute la pasul curent.Dacă matricea sistemului este o matrice rară, atunci metodele iterative se dovedescextrem de eficiente din punctul de vedere al memoriei, ele negenerând umpleri.Analiza erorilorSpre deosebire de metodele directe, la care singurele erori care apar sunt cele de rotunjire,la metodele iterative apar şi erori de trunchiere prin reţinerea din şirul convergentcătre soluţia exactă, a unui număr finit de termeni. Datorită convergenţei lor, metodeleiterative au proprietatea remarcabilă de a corecta erorile de rotunjire apărute pe parcurs.Eroarea absolută la iterţia k este de cel puţin ‖M‖ ori mai mică decât eroarea de lapasul anterior:e k = ‖x k −x‖ ≤ ‖M‖‖x k−1 −x‖ = ‖M‖e k−1 ≤ ‖M‖ k e 0 . (4.23)Se constată că eroarea finală depinde de eroarea iniţială, de numărul de iteraţii efectuateşi de norma matricei de iteraţie, care determină viteza de convergenţă. Aceeaşi relaţieeste valabilă şi pentru reziduul ‖Ax k −b‖.4.5 Chestiuni de studiat• Rezolvarea unor sisteme de ecuaţii liniare prin metodele Jacobi şi Gauss-Seidel;• Analiza experimentală a erorilor şi a efortului de calcul, la metodele Jacobi şi Gauss-Seidel;• Implementarea algoritmilor;• Căutare de informaţii pe Internet.


90 Capitolul 4. <strong>Metode</strong> iterative de rezolvare a sistemelor algebrice liniare4.6 Mod de lucruPentru desfăşurarea lucrării se selectează lucrarea <strong>Metode</strong> iterative de rezolvare a sistemeloralgebrice liniare din meniul general de lucrări.Aceasta are ca efect afişarea meniului:1. Rezolvare de sisteme cu metodele Jacobi/Gauss-Seidel2. Analiza algoritmilor4.6.1 Rezolvarea unor sisteme de ecuaţii liniare prin metodeleJacobi/Gauss-SeidelProgramul lansat permite rezolvarea unor sisteme liniare prin metode iterative.Se vor introduce:• numărul de ecuaţii;• elementele a(i,j) ale matricei sistemului;• termenii liberi b(i);• eroarea admisă;• numărul maxim de iteraţii admis.Programul afişează <strong>în</strong> consola Scilab informaţii despre procesul iterativ: dacă a fostconvergent sau nu, norma matricei de iteraţie, <strong>în</strong> cazul <strong>în</strong> care procesul a fost convergent,câte iteraţii au fost necesare şi care este soluţia.Se vor introduce parametrii necesari pentru rezolvarea următoarelor sisteme:{x1 + x 2 = 5 : R x 1 = 22x 1 + 3x 2 = 13 x 2 = 3Se va inversa ordinea ecuaţiilor şi se va comenta efectul asupra soluţiei.⎧⎨⎩8x 1 + 2x 2 + x 3 = 15 R : x 1 = 110x 1 + 4x 2 + x 3 = 21 x 2 = 250x 1 + 25x 2 + 8x 3 = 124 x 3 = 3


4.6. Mod de lucru 91⎧⎨⎩2x 1 + x 2 + x 3 = 7 R : x 1 = 1x 1 + 2x 2 + x 3 = 8 x 2 = 2x 1 + x 2 + x 3 = 6 x 3 = 3⎧⎨⎩3x 1 + x 3 = 10 R : x 1 = 2x 1 + 2x 2 + x 3 = 12 x 2 = 3x 1 + x 2 + 2x 3 = 13 x 3 = 4Se va inversa ordinea a două ecuaţii din sistem şi se va comenta efectul asupra soluţiei.Se vor comenta rezultatele obţinute, convergenţa metodelor pentru fiecare sistem rezolvat.4.6.2 Analiza experimentală a algoritmilorSe selectează opţiunea Analiza algoritmilor. Aceasta are ca efect afişarea unui meniu cuopţiunile:• Eroarea <strong>în</strong> funcţie de numărul de iteraţii;• Numărul de iteraţii <strong>în</strong> funcţie de norma matricei de iteraţie.La selectarea opţiunii Eroarea <strong>în</strong> funcţie de numărul de iteraţii, utilizatorul introduce:norma matricei de iteraţie Jacobi şi numărul de ecuaţii (valoare iniţială, valoare finală,pas). Astfel se apelează un program care rezolvă, pe baza celor două metode iterative,sisteme de ecuaţii liniare generate aleator. Programul afişează rezultatele <strong>numerice</strong> <strong>în</strong>consola Scilab şi reprezintă grafic variaţia erorii Cauchy <strong>în</strong> funcţie de iteraţie. Valorilerecomandate sunt: norma matricei de iteraţie Jacobi 0.5, dimensiunile sistemelor 20, 40,60. Datele se pot nota <strong>în</strong>tr-un tabel de tipul:iteraţii 1 5 9 13 17n = 20 eroare Jeroare GSn = 40 eroare Jeroare GSn = 60 eroare Jeroare GS


92 Capitolul 4. <strong>Metode</strong> iterative de rezolvare a sistemelor algebrice liniareSe vor reprezenta pe acelaşi grafic erorile <strong>în</strong> funcţie de numărul de iteraţii. Se vorcomenta rezultatele obţinute.La selectarea opţiunii Numărul de iteraţii <strong>în</strong> funcţie de norma matricei de iteraţieutilizatorul alege dimensiunea n a sistemului şi eroarea de oprire. Programul afişeazănumărul de iteraţii necesar celor două metode pentru sisteme generate aleator, de dimensiunen, având norma matricei de iteraţie 0.1, 0.2, ..., 0.9. Datele se pot nota <strong>în</strong>tr-untabel de tipul:norma matricei Jacobi 0.1 0.2 ... 0.9nr. iteraţii Jacobinr. iteraţii Gauss-SeidelSe vor reprezenta pe acelaşi grafic numărul de iteraţii <strong>în</strong> funcţie de norma matricei. Sevor comenta rezultatele obţinute.4.6.3 Implementarea algoritmilorSe va implementa pe calculator, <strong>în</strong> limbajul C, o procedură proprie de rezolvare a unuisistem de ecuaţii liniare, prin una din cele două metode iterative. Se va compila şi testaprocedura, eliminându-se eventualele erori.Se va scrie pseudocodul şi se va implementa pe calculator un program principal, careapelează procedura anterioară şi rezolvă sistemul de ecuaţii:⎧⎨⎩2x + z = 5 R : x = 1x + y + z = 6 y = 2y + 3z = 11 z = 3Acest program va permite introducerea datelor de la consolă şi afişarea pe ecran asoluţiei. Se vor nota şi comenta rezultatele obţinute şi eventualele dificultăţi apărute peparcursul lucrului.4.6.4 Căutare de informaţii pe InternetSe vor căuta pe Internet informaţii (coduri) legate de rezolvarea iterativă a sistemeloralgebrice de ecuaţii prin metode iterative. Cuvinte cheie recomandate: Iterative methodsfor algebraic systems, Jacobi, Gauss-Seidel.


4.7. Exemple 934.7 Exemple4.7.1 Exemple rezolvate1. Fie sistemul de ecuaţii:{x − 2y = −2−3x + 2y = −6(a) să se determine soluţia sistemului de ecuaţii pentru primele două iteraţii alemetodei Jacobi, cunoscând soluţia iniţială x (0) = y (0) = 0;(b) să se ilustreze grafic procesul iterativ şi să se comenteze convergenţa lui;(c) să se comenteze rezultatele obţinute atunci când se schimbă ordinea ecuaţiilor.Rezolvare:(a) Iteraţiile metodei Jacobi se calculează conform formulelor:Soluţia la prima iteraţie este:iar la a doua iteraţie:{{ x(k+1)= −2+2y (k)2y (k+1) = −6+3x (k)x (1) = −2+2y (0) = −2y (1) = −6+3x(0)2= −3,{x (2) = −2+2y (1) = −2−6 = −8y (2) = −6+3x(1) = −6−6 = −6.2 2(b) Dinpunctdevederegeometric, rezolvareasistemuluiesteechivalentăcugăsireapunctului de intersecţie al dreptelor ecuaţiilor, D 1 şi D 2 :D 1 : x−2y +2 = 0D 2 : −3x+2y +6 = 0Vom reprezenta grafic aceste drepte. Dreapta D 1 taie axele <strong>în</strong> punctele decoordonate (0,1) şi (−2,0). Dreapta D 2 taie axele <strong>în</strong> punctele de coordonate(0,−3) şi (2,0). Dreptele D 1 şi D 2 sunt concurente <strong>în</strong> punctul (4,3), soluţiasistemului de ecuaţii.Procesul iterativ este ilustrat <strong>în</strong> figura 1 şi se observă că este divergent. Deşiproblema este bine formulată matematic (soluţia există şi este unică), metodaJacobi eşuează.


94 Capitolul 4. <strong>Metode</strong> iterative de rezolvare a sistemelor algebrice liniareD 2D 100000000000000011111111111111100000000000000000000000000000111111111111111111111111111110000000000000001111111111111110000000000000000000000000000011111111111111111111111111111000000000000000111111111111111000000000000000000000000000001111111111111111111111111111100000000000000011111111111111100000000000000000000000000000111111111111111111111111111110000000000000001111111111111110000000000000000000000000000011111111111111111111111111111000000000000000111111111111111 01000000000000000111111111111111 (4,3)0000000000000000000000000000011111111111111111111111111111000000000000000000000000000001111111111111111111111111111100000000000000011111111111111100000000000000000000000000000111111111111111111111111111110000000000000001111111111111110000000000000000000000000000011111111111111111111111111111000000000000000111111111111111000000000000000000000000000001111111111111111111111111111100000000000000011111111111111100000000000000000000000000000111111111111111111111111111110000000000000001111111111111110000000000000000000000000000011111111111111111111111111111000000000000000111111111111111000000000000000111111111111111(0,1)000000000000000000000000000001111111111111111111111111111100000000000000000000000000000111111111111111111111111111110000000000000001111111111111110000000000000000000000000000011111111111111111111111111111(−2,0)000000000000000111111111111111(x000000000000000000000000000001111111111111111111111111111101000000000000000111111111111111010,y 0)000000000000000000000000000001111111111111111111111111111101000000000000000111111111111111010000000000000000000000000000011111111111111111111111111111010000000000000001111111111111110000000000000001111111111111110 (2,0)0000000000000000000000000000011111111111111111111111111111010000000000000000000000000000011111111111111111111111111111010000000000000001111111111111110000000000000000000000000000011111111111111111111111111111010000000000000001111111111111110000000000000000000000000000011111111111111111111111111111010000000000000001111111111111110000000000000000000000000000011111111111111111111111111111010000000000000001111111111111110000000000000000000000000000011111111111111111111111111111010000000000000001111111111111110000000000000000000000000000011111111111111111111111111111010000000000000001111111111111110000000000000000000000000000011111111111111111111111111111010000000000000001111111111111110000000000000000000000000000011111111111111111111111111111000000000000000111111111111111(x011,y 1)000000000000000000000000000001111111111111111111111111111101 010000000000000001111111111111110100000000000000011111111111111101000000000000000000000000000001111111111111111111111111111101(0,−3)0100000000000000011111111111111101000000000000000111111111111111010000000000000001111111111111110100000000000000011111111111111101 00000000000000011111111111111101000000000000000111111111111111010000000000000001111111111111110100000000000000011111111111111101000000000000000111111111111111(x010000000000000001111111111111110000000000000111111111111101 2,y 2)00000000000000011111111111111100 1101000000000000000111111111111111000000000000000111111111111111Fig. 1. Proces iterativ divergent al metodei JacobiyxConvergenţametodeidepindedeproprietăţilematriceideiteraţie. DacănotămA = D +L+U, atunci M = −D −1 (L+U) este matricea de iteraţie <strong>în</strong> cazulmetodei Jacobi.În cazul problemei considerate:D =( 1 0M = −0 2( 1 00 2) −1 ( 0 −2−3 0) ( 0 0, L =−3 0)( 1 0= −0 1 2) ( 0 −2, U =0 0)( 0 −2−3 0).) ( 0 2=302Razaspectrală(deconvergenţă)amatriceideiteraţieM este: ρ(M) = maxi=1,2 |λ i|,unde λ i sunt valorile proprii, care reprezintă soluţiile ecuaţiei det(M−λI) = 0.În cazul studiat:( ) −λ 2M −λI = =⇒ det(M −λI) = λ 2 −3 = 0.3−λ2Valorile proprii sunt λ 1,2 = ± √ 3, iar ρ(M) = maxi=1,2 |λ i| = √ 3.Deoarece ρ(M) > 1, procesul iterativ este divergent.).


4.7. Exemple 95yD 1D 20000000000001111111111110000000000000000000111111111111111111100000000000011111111111100000000000000000001111111111111111111000000000000111111111111000000000000000000011111111111111111110000000000001111111111110000000000000000000111111111111111111100000000000011111111111100000000000000000001111111111111111111000000000000111111111111 0100000000000000000001111111111111111111000000000000111111111111000000000000111111111111(x (4,3)000000000000000000011111111111111111112,y2)00000000000000000001111111111111111111000000000000111111111111010000000000000000000000111111111111111111100000000000011111111111101010000000000000000000111111111111111111100000000000011111111111101000000000000000000011111111111111111110000000000001111111111110100000000000000000001111111111111111111000000000000111111111111(0,1)01 0100000000000000000001111111111111111111000000000000111111111111010100000000000000000001111111111111111111000000000000111111111111(x 000000000000000000001111111111111111111(−2,0)0000000000001111111111111,y 01)000000000000000000011111111111111111110000000000001111111111110101000000000000000000011111111111111111110000000000001111111111111 0100000000000000000001111111111111111111(x000000000000111111111111000000000000000000011111111111111111110000000000001111111111110,y 0) 0 (2,0)00000000000000000001111111111111111111000000000000111111111111000000000000111111111111000000000000111111111111000000000000111111111111000000000000111111111111000000000000111111111111000000000000111111111111000000000000111111111111000000000000111111111111000000000000111111111111(0,−3)000000000000111111111111000000000000111111111111Fig. 2. Proces iterativ convergent al metodei Jacobix(c)În cazul <strong>în</strong> care se schimbă ordinea ecuaţiilor, sistemul de rezolvat este:{ −3x + 2y = −6x − 2y = −2Soluţia la prima iteraţie se calculează astfel:Iar soluţia la a doua iteraţie este:{ { −3x(1)= −6−2y (0) x (1) = 2−2y (1) = −2−x (0) =⇒y (1) = 1{ { −3x(2)= −6−2y (1) x (2) = 8−2y (2) = −2−x (1) =⇒3y (2) = 2Procedeul iterativ este convergent aşa cum se observă <strong>în</strong> figura 2.Într-adevăr, pentru acest sistem, matricea de iteraţie este:( 3 0M = −0 −2) −1 ( 0 21 0iar valorile proprii sunt soluţiile ecuaţiei:Deci:)( −10= −30 − 1 2)( 0 21 0det(M −λI) = 0 =⇒∣ −λ 231−λ ∣ = 0.2)=λ 2 − 1 3 = 0 =⇒ λ 1,2 = ± √ 1 =⇒ ρ(M) = max |λ i| = √ 1 .3 i=1,2 3( 023120),


96 Capitolul 4. <strong>Metode</strong> iterative de rezolvare a sistemelor algebrice liniareDeoarece ρ(M) < 1, procesul iterativ este convergent.Aceeaşi concluzie se poate obţine dacă se observă că matricea sistemului estediagonal dominantă (vezi relaţia (4.22)). Aceasta este o condiţie suficientă deconvergenţă.Inegalitatea (4.22) este adevărată pentru cele două ecuaţii ale sistemului:|−3| > |2|, |−2| > |1|,deci matricea sistemului este diagonal dominantă, ceea ce este echivalent cu||M|| < 1. Pentru orice matrice avem ρ(M) ≤ ||M||, astfel că ρ(M) < 1.2. Fie sistemul de ecuaţii de la exerciţiul anterior:{x − 2y = −2−3x + 2y = −6(a) să se determine soluţia sistemului de ecuaţii pentru primele două iteraţii alemetodei Gauss-Seidel, cunoscând soluţia iniţială x (0) = y (0) = 0;(b) să se ilustreze grafic procesul iterativ şi să se comenteze convergenţa lui;(c) să se comenteze rezultatele obţinute atunci când se schimbă ordinea ecuaţiilor.Rezolvare:(a) Iteraţiile metodei Gauss-Seidel se calculează conform formulelor:Soluţia la prima iteraţie este:{ x(k+1)= −2+2y (k)2y (k+1) = −6+3x (k+1){x (1) = −2+2y (0) = −2y (1) = −6+3x(1) = −6−6 = −6,2 2iar la a doua iteraţie:{x (2) = −2+2y (1) = −2−12 = −14y (2) = −6+3x(2) = −6−42 = −24.2 2(b) Procesul iterativ este ilustrat <strong>în</strong> figura 3 şi se observă că este divergent. Deşiproblema este bine formulată matematic (soluţia există şi este unică), metodaGauss-Seidel eşuează.Matricea de iteraţie <strong>în</strong> cazul metodei Gauss-Seidel este M = −(D+L) −1 U.În cazul problemei considerate:


4.7. Exemple 97D 2D 10000000000000000011111111111111111000000000000000000000000000000000000000011111111111111111111111111111111111111110000000000000000011111111111111111000000000000000000000000000000000000000011111111111111111111111111111111111111110000000000000000011111111111111111000000000000000000000000000000000000000011111111111111111111111111111111111111110000000000000000011111111111111111000000000000000000000000000000000000000011111111111111111111111111111111111111110000000000000000011111111111111111000000000000000000000000000000000000000011111111111111111111111111111111111111110000000000000000011111111111111111000000000000000000000000000000000000000011111111111111111111111111111111111111110000000000000000011111111111111111 (4,3)0000000000000000000000000000000000000000111111111111111111111111111111111111111100000000000000000111111111111111110000000000000000000000000000000000000000111111111111111111111111111111111111111100000000000000000111111111111111110000000000000000000000000000000000000000111111111111111111111111111111111111111100000000000000000111111111111111110000000000000000000000000000000000000000111111111111111111111111111111111111111100000000000000000111111111111111110000000000000000000000000000000000000000111111111111111111111111111111111111111100000000000000000111111111111111110000000000000000000000000000000000000000111111111111111111111111111111111111111100000000000000000111111111111111110000000000000000011111111111111111(0,1)000000000000000000000000000000000000000011111111111111111111111111111111111111110000000000000000000000000000000000000000111111111111111111111111111111111111111100000000000000000111111111111111110000000000000000000000000000000000000000111111111111111111111111111111111111111101000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111(−2,0) (x00000000000000000000000000000000000000001111111111111111111111111111111111111111010,y 0)00000000000000000000000000000000000000001111111111111111111111111111111111111111010000000000000000000000000000000000000000111111111111111111111111111111111111111100000000000000000111111111111111110000000000000000011111111111111111000000000000000000000000000000000000000001111111111111111111111111111111111111111(2,0)x000000000000000000000000000000000000000011111111111111111111111111111111111111110000000000000000011111111111111111000000000000000000000000000000000000000011111111111111111111111111111111111111110000000000000000011111111111111111000000000000000000000000000000000000000011111111111111111111111111111111111111110000000000000000011111111111111111000000000000000000000000000000000000000011111111111111111111111111111111111111110000000000000000011111111111111111000000000000000000000000000000000000000011111111111111111111111111111111111111110000000000000000011111111111111111000000000000000000000000000000000000000011111111111111111111111111111111111111110000000000000000011111111111111111000000000000000000000000000000000000000011111111111111111111111111111111111111110000000000000000011111111111111111000000000000000000000000000000000000000011111111111111111111111111111111111111110000000000000000011111111111111111000000000000000000000000000000000000000011111111111111111111111111111111111111110000000000000000011111111111111111000000000000000000000000000000000000000011111111111111111111111111111111111111110000000000000000011111111111111111010000000000000000000000000000000000000000111111111111111111111111111111111111111100000000000000000111111111111111110100000000000000000000000000000000000000001111111111111111111111111111111111111111000000000000000001111111111111111100000000000000000000000000000000000000001111111111111111111111111111111111111111000000000000000001111111111111111100000000000000000000000000000000000000001111111111111111111111111111111111111111000000000000000001111111111111111100000000000000000000000000000000000000001111111111111111111111111111111111111111000000000000000001111111111111111100000000000000000000000000000000000000001111111111111111111111111111111111111111000000000000000001111111111111111100000000000000000000000000000000000000001111111111111111111111111111111111111111000000000000000001111111111111111100000000000000000000000000000000000000001111111111111111111111111111111111111111000000000000000001111111111111111100000000000000000111111111111111110100000000000000000111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110100000000000000000111111111111111110100000000000000000111111111111111110100000000000000000000000000000000000000001111111111111111111111111111111111111111(x (0,−6)0100000000000000000111111111111111111,y 1)0100000000000000000111111111111111110100000000000000000111111111111111110000000000000000011111111111111111010000000000000000011111111111111111010000000000000000011111111111111111(x 2,y )2Fig. 3. Proces iterativ divergent al metodei Gauss-Seidely(c)( 1 0M = −−3 2) −1 ( 0 −20 0)( 1 0= −3212)( 0 −20 0)=( 0 20 3Razaspectrală(deconvergenţă)amatriceideiteraţieM este: ρ(M) = maxi=1,2 |λ i|,unde λ i sunt valorile proprii, care sunt soluţiile ecuaţiei det(M −λI) = 0.În cazul studiat:M −λI =( −λ 20 3−λ)=⇒ det(M −λI) = −λ(3−λ) = 0.Valorile proprii sunt λ 1 = 0, λ 2 = 3, iar ρ(M) = maxi=1,2 |λ i| = 3.Deoarece ρ(M) > 1, procesul iterativ este divergent.În cazul <strong>în</strong> care se schimbă ordinea ecuaţiilor, sistemul de rezolvat este:{ −3x + 2y = −6x − 2y = −2Soluţia la prima iteraţie se calculează astfel:{ −3x(1)= −6−2y (0)−2y (1) = −2−x (1) =⇒{ x (1) = 2y (1) = 2).


98 Capitolul 4. <strong>Metode</strong> iterative de rezolvare a sistemelor algebrice liniareyD 1D 20000000000001111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000111111111111000000000000111111111111000000000000111111111111000000000000111111111111(x 0100000000000000000001111111111111111111000000000000000000000000000000000000000000000000000000000001010000000000000000000010101000000000000000000000000000000000000000000000000000000000010000000000000000000010000000000000000000010000000000000000000010100000000000000000001 01000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111112,y 11012)(4,3)01(x 1,y 1)01111111111111 01000000000000111111111111000000000000111111111111000000000000111111111111(0,1)000000000000111111111111000000000000111111111111(−2,0)000000000000111111111111000000000000111111111111000000000000111111111111(x0000000000001111111111110000000000001111111111110,y 0) 0 (2,0)000000000000111111111111000000000000111111111111000000000000111111111111000000000000111111111111000000000000111111111111000000000000111111111111000000000000111111111111000000000000111111111111000000000000111111111111000000000000111111111111(0,−3)000000000000111111111111000000000000111111111111Fig. 4. Proces iterativ convergent al metodei Gauss-SeidelxIar soluţia la a doua iteraţie este:{ { −3x(2)= −6−2y (1) x (2) = 10−2y (2) = −2−x (2) =⇒3y (2) = 8 3Procedeul iterativ este convergent aşa cum se observă <strong>în</strong> figura 4.Într-adevăr, pentru acest sistem, matricea de iteraţie este:( −3 0M = −1 −2) −1 ( 0 20 0)( −10= −3− 1 − 1 6 2)( 0 20 0)=( 0230 1 3),iar valorile proprii sunt soluţiile ecuaţiei:det(M −λI) = 0 =⇒∣ −λ ∣2 ∣∣∣30 1 −λ = 0.3Deci:−λ( 1 3 −λ) = 0 =⇒ λ 1 = 0, λ 2 = 1 3=⇒ ρ(M) = maxi=1,2 |λ i| = 1 3 .Deoarece ρ(M) < 1, procesul iterativ este convergent.3. Fie sistemul de ecuaţii:⎧⎨⎩3x − y + z = 33x − 6y + z = −2−x + 2y + 4z = 5


4.7. Exemple 99Să se comenteze convergenţa metodelor iterative şi să se determine soluţia sistemuluide ecuaţii pentru primele două iteraţii ale metodelor Jacobi şi Gauss-Seidel,cunoscând soluţia iniţială x (0) = y (0) = z (0) = 0.Rezolvare:Deoarece matricea coeficienţilor sistemului este diagonal dominantă, metodele iterativeJacobi şi Gauss-Seidel sunt convergente.De exemplu, pentru prima ecuaţie a unui sistem, conform relaţiei (4.22), trebuie săfie adevărată inegalitatea: |a 11 | > |a 12 |+|a 13 |.Pentrusistemuldeecuaţiiconsiderat, inegalitatea(4.22)esteadevăratăpentrutoatecele trei ecuaţii:|3| > |−1|+|1|, |−6| > |3|+|1|, |4| > |−1|+|2|,deci matricea sistemului este diagonal dominantă, ceea ce este echivalent cu ||M||


100 Capitolul 4. <strong>Metode</strong> iterative de rezolvare a sistemelor algebrice liniareSoluţia la o anumită iteraţie se determină <strong>în</strong> funcţie de componentele soluţiei dejacalculate la iteraţia curentă şi restul componentelor soluţiei calculate la iteraţiaprecedentă.Conform relaţiei (4.20), din prima ecuaţie a sistemului se determină:x (1) = 3+y(0) −z (0)3= 3+0−03= 1,iar din ecuaţiile a doua şi a treia rezultă următoarele componente ale soluţiei laprima iteraţie:y (1) = −2−3x(1) −z (0)−6z (1) = 5+x(1) −2y (1)4= −2−3−0−6= 5+1− 5 34= 5 6 ,= 1312 .La a doua iteraţie a metodei Gauss-Seidel soluţia sistemului este:x (2) = 3+y(1) −z (1)3= 3+ 5 6 − 13123= 1112 ,4. Fie sistemul de ecuaţii:y (2) = −2−3x(2) −z (1)−6z (2) = 5+x(2) −2y (2)4⎧⎨⎩==−2−3312 − 1312−65+1112 − 35184x − 2y + 2z = 22x − y + 2z = 6x + 2y + z = 8= 3536 ,= 143144 .Să se comenteze convergenţa metodelor iterative şi să se determine soluţia sistemuluide ecuaţii pentru primele două iteraţii ale metodelor Jacobi şi Gauss-Seidel,cunoscând soluţia iniţială x (0) = y (0) = z (0) = 1.Rezolvare:Inegalitatea (4.22) nu este adevărată pentru cele trei ecuaţii ale sistemului considerat:|1| < |−2|+|2|, |−1| < |2|+|2|, |1| > |1|+|2|.Totuşi, deşimatriceanuestediagonaldominantă, nuputemconcluzionacămetodeleiterative nu sunt convergente.Condiţia necesară şi suficientă de convergenţă este ca raza de convergenţă sa fiesubunitară (4.8).


4.7. Exemple 101Pentru sistemul considerat, deoarece matricea sistemului nu este diagonal dominantă,normamatriceideiteraţieestesupraunitară.Secunoaştecărazadeconvergenţăeste mai mică decât norma matricei de iteraţie (4.9), <strong>în</strong>să nu putem afirma că razade convergenţă este supraunitară.Razadeconvergenţătrebuiecalculatăpentruaprecizaconvergenţaşiruluidesoluţii.În cazul metodei Jacobi, matricea de iteraţie este:⎛M = −⎝1 0 00 −1 00 0 1⎞⎠−1⎛⎝iar valorile proprii sunt soluţiile ecuaţiei:0 −2 22 0 21 2 0⎞⎛⎠ = ⎝0 2 −22 0 2−1 −2 0⎞⎠,Deci:−λ 2 −2det(M −λI) = 0 =⇒2 −λ 2∣ −1 −2 −λ ∣ = 0.−λ 3 +2λ+4 = 0 =⇒ ρ(M) = maxi=1,2,3 |λ i| = 2 > 1.În cazul metodei Gauss-Seidel, matricea de iteraţie este:⎛M = −⎝1 0 02 −1 01 2 1⎞⎠−1⎛⎝iar valorile proprii sunt soluţiile ecuaţiei:0 −2 20 0 20 0 0⎞⎛⎠ = ⎝0 2 −20 4 −20 −10 6⎞⎠,Deci:det(M −λI) = 0 =⇒∣−λ 2 −20 4−λ −20 −10 6−λ∣ = 0.λ(−λ 2 +10λ−4) = 0 =⇒ ρ(M) = maxi=1,2,3 |λ i| = 9.58 > 1.Pentruambelemetoderazadeconvergenţăestesupraunitară,decimetodeleiterativenu sunt convergente pentru acest sistem.Metoda JacobiLa prima iteraţie a metodei Jacobi soluţia sistemului este:x (1) = 2+2y(0) −2z (0)1= 2+2−2 = 2,


102 Capitolul 4. <strong>Metode</strong> iterative de rezolvare a sistemelor algebrice liniarey (1) = 6−2x(0) −2z (0)−1z (1) = 8−x(0) −2y (0)1= −(6−2−2) = −2,= 8−1−2 = 5.La a doua iteraţie a metodei Jacobi soluţia sistemului este:x (2) = 2+2y(1) −2z (1)1= 2−4−10 = −12,Metoda Gauss-Seidely (2) = 6−2x(1) −2z (1)−1z (2) = 8−x(1) −2y (1)1= −(6−4−10) = 8,= 8−2+4 = 10.La prima iteraţie a metodei Gauss-Seidel soluţia sistemului este:x (1) = 2+2y(0) −2z (0)1= 2+2−2 = 2,y (1) = 6−2x(1) −2z (0)−1z (1) = 8−x(1) −2y (1)1= −(6−4−2) = 0,= 8−2+0 = 6.La a doua iteraţie a metodei Gauss-Seidel soluţia sistemului este:x (2) = 2+2y(1) −2z (1)1= 2+0−12 = −10,4.7.2 Exemple propusey (2) = 6−2x(2) −2z (1)−1z (2) = 8−x(2) −2y (2)1= −(6+20−12) = −14,= 8+10+28 = 46.1. Fie sistemul de ecuaţii:{ 2x + y = −43x + 5y = 15(a) să se determine soluţia sistemului de ecuaţii pentru primele două iteraţii alemetodelor Jacobi şi Gauss-Seidel, cunoscând soluţia iniţială x (0) = y (0) = 0;(b) să se ilustreze grafic procesul iterativ şi să se comenteze convergenţa lui;


4.7. Exemple 103(c) să se comenteze rezultatele obţinute atunci când se schimbă ordinea ecuaţiilor.2. Fie sistemul de ecuaţii:{ 3x + 5y = 152x + y = −4(a) să se determine soluţia sistemului de ecuaţii pentru primele două iteraţii alemetodelor Jacobi şi Gauss-Seidel, cunoscând soluţia iniţială x (0) = y (0) = 0;(b) să se ilustreze grafic procesul iterativ şi să se comenteze convergenţa lui;(c) să se comenteze rezultatele obţinute atunci când se schimbă ordinea ecuaţiilor.3. Fie sistemul de ecuaţii:⎧⎨⎩x + y − 3z = −12x + y − z = 2x − y − z = −1Să se comenteze convergenţa metodelor iterative şi să se determine soluţia sistemuluide ecuaţii pentru primele două iteraţii ale metodelor Jacobi şi Gauss-Seidel,cunoscând soluţia iniţială x (0) = y (0) = z (0) = 0.4. Fie sistemul de ecuaţii:⎧⎨⎩4x + 2y − z = 5x − 3y + z = −1−x + y + 4z = 4Să se comenteze convergenţa metodelor iterative şi să se determine soluţia sistemuluide ecuaţii pentru primele două iteraţii ale metodelor Jacobi şi Gauss-Seidel,cunoscând soluţia iniţială x (0) = y (0) = z (0) = 0.5. Fie sistemul de ecuaţii:⎧⎨⎩3x + y + z = 4x + y + 2z = 4x + y + 3z = 6Să se comenteze convergenţa metodelor iterative şi să se determine soluţia sistemuluide ecuaţii pentru primele două iteraţii ale metodelor Jacobi şi Gauss-Seidel,cunoscând soluţia iniţială x (0) = y (0) = z (0) = 0.


104 Capitolul 4. <strong>Metode</strong> iterative de rezolvare a sistemelor algebrice liniare4.8 Întrebări şi probleme1. Daţi o explicaţie calitativă pentru convergenţa mai rapidă a metodei Gauss-Seidelfaţa de metoda Jacobi.2. Există sisteme de ecuaţii, nedominant diagonale, care se pot rezolva totuşi prinmetoda Gauss-Seidel, deşi metoda Jacobi nu este convergentă?3. Care este explicaţia că inversând ordinea a 2 ecuaţii <strong>în</strong> sistemele propuse pentrurezolvarecuprimulprogramdemonstrativ,metodeleiterativenuconduclaobţinereasoluţiei?4. Cum scade eroarea <strong>în</strong> funcţie de numărul de iteraţii, la metodele Jacobi şi Gauss-Seidel? Cum este corelată scăderea erorii cu norma matricei de iteraţie?5. Scrieţi pseudocodul unei proceduri care să genereze, cu ajutorul unui generator denumere aleatoare, o matrice a cărei normă este dată.6. Care sunt matricele B şi C <strong>în</strong> care s-a partiţionat matricea sistemului la o metodăiterativă care ar folosi următoarea expresie pentru determinare a componentei i asoluţiei :x k i =b i −n∑j=i+1∑i−1a ij x k j −j=1a ij x k−1ja ii.7. Scrieţi pseudocodul unui polialgoritm de rezolvare a unui sistem de ecuaţii liniareprin metode directe a cărui soluţie este rafinată ulterior prin metode iterative, <strong>în</strong>vederea eliminării erorilor de rotunjire.8. Analizaţi teoretic modul <strong>în</strong> care depinde numărul de iteraţii m, necesare atingeriiunei precizii dorite, <strong>în</strong> funcţie de norma matricei M.9. Modificaţi pseudocodul algoritmului Gauss-Seidel prin adoptarea unui criteriu deeroare relativ la norma reziduului ‖Ax−b‖.10. Scrieţi un algoritm de rezolvare iterativă a unui sistem cu matrice tridiagonală.11. Scrieţi un algoritm de rezolvare iterativă a sistemului Ax = b bazat pe partiţia:cu D matrice bloc diagonală.A = B−C = L+D−(−U),12. Documentaţi-vă <strong>în</strong> literatura de specialitate şi pe internet ce inseamnă preconditionarea?Cum influenţeaza această operaţie numărul de condiţionare şi viteza deconvergenţă a rezolvării sistemelor liniare prin metode iterative?


4.8. Întrebări şi probleme 10513. Rezolvaţi<strong>în</strong>mediulMATLAB/SCILAB,unsistemdeecuaţiiliniarealgebricefolosindo metodă iterativă. Evaluaţi viteza de convergenţă a procesului iterativ.14. Identificaţi<strong>în</strong>bibliotecamatematicădescrisa<strong>în</strong>[2]funcţiiavansatepentrurezolvareacu metode directe a sistemelor de ecuaţii algebrice liniare cu matrice rare. Ce aducnou aceste funcţii faţă de cea folosită <strong>în</strong> lucrare?Carl Gustav Jacob Jacobi (1804, Prusia - 1851, Germania)http://www-gap.dcs.st-and.ac.uk/ history/Mathematicians/Jacobi.htmlhttp://scienceworld.wolfram.com/biography/Jacobi.htmlPhilipp Ludwig von Seidel (1821, Germania - 1896, Germania)http://www-gap.dcs.st-and.ac.uk/ history/Mathematicians/Seidel.htmlAugustin Louis Cauchy (1789,Franta - 1857, Franta)http://www-gap.dcs.st-and.ac.uk/ history/Mathematicians/Cauchy.htmlhttp://scienceworld.wolfram.com/biography/Cauchy.html


106 Capitolul 4. <strong>Metode</strong> iterative de rezolvare a sistemelor algebrice liniare


Lucrarea 5Analiza numerică a circuitelorelectrice liniare <strong>în</strong> regim permanent5.1 Caracterizarea lucrăriiCele mai simple circuite electrice sunt circuitele rezistive liniare. Studiul acestor circuiteeste o problemă foarte importantă, deoarece se constată că şi analiza altor categorii decircuite, cum sunt cele neliniare sau cele <strong>în</strong> regim tranzitoriu, se reduce <strong>în</strong> final la aceastăproblemă. Circuiteleelectricerezistiveliniaresuntcaracterizatedesistemedeecuaţiialgebriceliniare formate din ecuaţiile lui Kirchhoff şi din relaţiile constitutive ale elementelor.Din punct de vedere matematic, analiza unui astfel de circuit se reduce la rezolvarea unuisistem liniar.Analiza asistată de calculator a circuitelor electrice presupune nu numai rezolvarea numericăa ecuaţiilor asociate acestor circuite ci şi generarea automată, cu ajutorul calculatoruluia acestor ecuaţii. Ecuaţiile unui circuit electric pot avea diferite forme echivalente.Cea mai eficientă tehnică de scriere automată a ecuaţiilor s-a dovedit a fi tehnica nodală,bazată pe metoda potenţialelor la noduri.În lucrare se prezintă tehnica nodală aplicată <strong>în</strong> analiza circuitelor electrice liniare,de curent continuu si alternativ. Pentru descrierea circuitelor a fost ales un limbaj demaximă simplitate, orientat pe laturi.5.2 Principiul metodeiSe consideră un circuit electric cu N noduri şi L laturi. Pe fiecare latură k a acestuicircuit se află un rezistor liniar cu rezistenţa R k , eventual <strong>în</strong>seriat cu o sursă cu t.e.m. E k ,107


108 Capitolul 5. Analiza numerică a circuitelor electrice liniare <strong>în</strong> regim permanentRkE kIkU kFigura 5.1: Latura standard considerată pentru analiza circuitelor rezistive liniare decurent continuu.astfel <strong>în</strong>cât:u k = R k i k −E k , k = 1,2,...,L, (5.1)unde u k este tensiunea la bornele laturii k, iar i k este curentul ce străbate latura (figura5.1).Relaţia (5.1) se poate scrie şi sub forma:i k = u k +E kR k= G k u k +J k , (5.2)<strong>în</strong> care G k = 1/R k este conductanţa laturii, presupusă mărginită, iar J k = E k /R k estecurentul electromotor al generatorului de curent Norton echivalent laturii. S-a presupuscă nici o latură nu are rezistenţa nulă.Dacă se notează cu i = [i 1 ,i 2 ,...,i L ] T vectorul intensităţilor curenţilor din laturilecircuitului, cu u = [u 1 ,u 2 ,...,u L ] T vectorul tensiunilor la bornele laturilor şi cu v =[v 1 ,v 2 ,...,v N−1 ] T vectorul potenţialelor nodurilor, atunci teoremele lui Kirchhoff capătăurmătoarea formă matriceală:Ai = 0, (5.3)u = A T v, (5.4)<strong>în</strong> care s-a notat cu A ∈ IR (N−1)×L matricea redusă a incidenţelor laturi-noduri.Problema fundamentală a analizei circutelor electrice rezistive liniare constă <strong>în</strong> determinareavectorilor u, i şi v, atunci când se cunosc parametrii R k , E k , pentru k = 1,...,Lşi topologia circuitului descrisă, de exemplu, prin matricea A. Soluţia acestei problemese determină prin rezolvarea sistemului de ecuaţii algebrice liniare (5.1), (5.3), (5.4).Scriind şi ecuaţiile constitutive ale laturilor (5.1) sub forma matriceală:u = Ri−E, (5.5)unde R = diag(R 1 ,R 2 ,...,R L ) ∈ IR L×L este matricea rezistenţelor laturilor, iar E =[E 1 ,E 2 ,...,E L ] T este matricea t.e.m., rezultă, prin eliminarea vectorilor u şi i din (5.3),(5.4), şi (5.5):Ai = AR −1 (u+E) = AR −1 A T +AR −1 E = 0. (5.6)


5.2. Principiul metodei 109DacăsenoteazăcuG = AR −1 A T matriceaconductanţelornodaleşicui S = −AR −1 Ematricea injecţiilor de curent <strong>în</strong> noduri (suma curenţilor de scurtcircuit) rezultă sistemulde ecuaţii algebrice liniareGv = i S (5.7)specific tehnicii nodale, matricea G fiind o matrice pătrată de dimensiune N − 1. Prinrezolvarea acestui sistem, rezultă potenţialele nodurilor v = G −1 i S , din care se calculeazăcu (5.4) tensiunile şi cu (5.5) curenţii.Se constată că fiecare latură k, conectată <strong>în</strong>tre nodurile iniţial ni şi final nf, contribuiela patru termeni ai matricei G şi la doi termeni ai vectorului i S :Matricea Gcoloana ni coloana nfvectorul i Slinia ni 1/R k −1/R k −E k /R klinia nf −1/R k 1/R k E k /R kAceastă observaţie permite generarea automată a matricelor G, i S , prin parcurgerealaturilor şi adunarea contribuţiei fiecărei laturi, la aceste matrice. Se constată că matriceaG este diagonal dominantă, ceea ce permite rezolvarea sistemului liniar atât cu metodeiterative cât şi cu metode directe, fără pivotare.Analiza circuitelor electrice liniare <strong>în</strong> curent alternativ prin tehnica nodală presupunereprezentarea circuitului <strong>în</strong> complex. Dacă se notează cu I ∈ IC L , U ∈ IC L , V ∈ IC N−1 ,vectorii curenţilor, tensiunilor şi respectiv potenţialelor complexe, ecuaţiile circuitului auforma matriceală:AI = 0,U = A T V,U = ZI−E, (5.8)<strong>în</strong> care Z = diag(Z 1 ,Z 2 ,...,Z L ) ∈ IC L×L este matricea impedanţelor complexe ale laturilor,iar E = diag(E 1 ,E 2 ,...,E L ) T este matricea tensiunilor electromotoare complexe.Impedanţele complexe ale elementelor ideale sunt: la rezistor Z R = R, la bobinăZ L = jωL, iar la condensator Z C = 1 , unde ω este pulsaţia (frecvenţa unghiulară) <strong>în</strong>jωCradiani/s.Prin eliminări succesive din (5.8) se obţine:YV = I S , (5.9)<strong>în</strong> care Y = Z −1 A T este matricea admitanţelor nodale, iar I S = −AZ −1 E este matriceainjecţiilor de curent din noduri. Prin rezolvarea sistemului algebric liniar (5.9) rezultăpotenţialele V = Y −1 I S .În consecinţă, analiza de curent alternativ se desfăşoară similar cu cea de curent continuu,cu deosebirea că <strong>în</strong> acest caz se operează cu numere complexe.


110 Capitolul 5. Analiza numerică a circuitelor electrice liniare <strong>în</strong> regim permanent5.3 Pseudocodul metodeiUrmătorul pseudocod descrie analiza unui circuit rezistiv liniar, de curent continuu.; Introducerea datelor de descriere a circuituluiciteşte N; numărul de noduriciteşte L; numărul de laturipentru k = 1,L ; parcurge laturiciteşte ni k , nf k ; nodurile iniţial şi finalciteşte R k , E k ; rezistenţa şi t.e.m; Rezolvă circuitul prin tehnica nodală şi determină vectorul v al potenţialelornodal (N, L, ni, nf, R, E, v); Calculează şi afişează soluţiapg = 0pc = 0pentru k = 1,Lu = v ni(k) −v nf(k)i = (u+E k )/R kpg = pg +E k ipc = pc+R k i 2scrie k, u, iscrie pc, pg; puterea generată; puterea consumată; parcurge laturile; tensiunea la bornele laturii; curentul din latură; bilanţul de puteriAcest program apelează procedura nodal, care determină potenţialele nodurilor:procedura nodal (N, L, ni, nf, R, E, v); analizează circuitul rezistiv liniar cu tehnica nodală<strong>în</strong>treg N<strong>în</strong>treg Ltablou <strong>în</strong>treg ni(L)tablou <strong>în</strong>treg nf(L)tablou real R(L)tablou real E(L)tablou real v(N)tablou real G(N,N); număr de noduri; număr de laturi; noduri iniţiale; noduri finale; rezisteţele laturilor; t.e.m. ale laturilor; potenţialele nodurilor; (date de ieşire); matricea conductanţelor nodale


5.3. Pseudocodul metodei 111tablou real is(L)pentru i = 1,Nis(i) = 0pentru j = 1,NG(i,j) = 0pentru k = 1,Ln1 = ni(k)n2 = nf(k)G(n1,n1) = G(n1,n1)+1/R kG(n2,n2) = G(n2,n2)+1/R kG(n1,n2) = G(n1,n2)−1/R kG(n2,n1) = G(n2,n1)−1/R kis(n1) = is(n1)−E k /R kis(n2) = is(n2)+E k /R kGauss (N-1, G, is, v)v(N) = 0retur; vectorul injecţiilor de curent; iniţializează matricea sistemului; parcurge laturi; rezolvă sistem liniar cu N-1 ecuaţii; cu matricea G şi termenul liber isÎn procedura nodal se apelează procedura Gauss, care determină vectorul v al potenţialelor,prin rezolvarea sistemului liniar Gv = i S cu metoda eliminării gaussiene. Pentrua simplifica algoritmii, matricea G generată are dimensiunea N × N, dar la rezolvareasistemuluiaceastaseconsiderădedimensiuni(N−1)×(N−1), ceeacecorespundealegeriiultimului nod, ca nod de referinţă. Algoritmul prezentat poate fi extins fără dificultăţipentru a permite analiza circuitelor care conţin şi surse de curent.Dacă se operează cu variabile complexe şi nu cu variabile reale, procedura nodal sepoate aplica la analiza circuitelor de curent alternativ. Se va nota cu nodal-cx variantaacestei proceduri, <strong>în</strong> care declaraţia real se <strong>în</strong>locuieşte cu complex.Următorul pseudocod descrie algoritmul de analiză a circuitelor de curent alternativ.; Introducerea datelor de descriereciteşte N ; număr de noduriciteşte L ; număr de laturiciteşte f ; frecvenţa <strong>în</strong> Hzpentru k = 1,Lciteşte ni k , nf kciteşte tip k ; tipul elementului R, L sau Cciteşte p k ; parametrul elementului pasivciteşte e k ; valoarea efectivă


112 Capitolul 5. Analiza numerică a circuitelor electrice liniare <strong>în</strong> regim permanentciteşte fi k ; faza iniţialăw = 2·π ·f ; pulsaţiapentru k = 1,Ldacă tip k = L atunciZ k = complex(0,wp k )altfel dacă tip k = C atunciZ k = complex(0,−1/(wp k ))altfelZ k = complex(p k ,0)E k = complex(e k cos(fi k ),e k sin(fi k )); Determină potenţialele complexe ale nodurilornodal-cx (N, L, ni, nf, Z, E, V); Calculează şi afişeză soluţiaSg = complex(0,0) ; puterea complexă generatăSc = complex(0,0) ; puterea complexă consumatăpentru k = 1,LU = V ni(k) −V nf(k)I = (U +E k )/Z kSg = Sg +E k ·conjugat(I)Sc = Sc+Z k ·|I| 2scrie k ; laturascrie |I| ; valoarea efectivăscrie arg(I) ; faza curentuluiscrie Re(Sg)scrie Im(Sg)scrie Re(Sc)scrie Im(Sc); puterea generată activă P g; puterea generată reactivă Q g; puterea consumată activă P c; puterea consumată reactivă Q gDacă partea de analiză a acestui program este repetată ciclic pentru diferite frecvenţese obţin caracteristicile de frecvenţă ale circuitului.5.4 Analiza algoritmilorNecesarul de memorieMemoria necesară <strong>în</strong> analiza circuitelor electrice rezistive liniare este ocupată de:• 2 vectori <strong>în</strong>tregi ni, nf de dimensiune L;


5.5. Chestiuni de studiat 113• 2 vectori reali R, E de dimensiune L;• 1 vector real i S de dimensiune N;• 1 matrice G de dimensiune N ×N.Se constată că necesarul de memorie depinde pătratic de dimensiunea circuitului, caracterizată<strong>în</strong> principal prin numărul de noduri N.Efort de calculTimpul de calcul necesar analizei este folosit <strong>în</strong> special pentru rezolvarea sistemuluiliniar de dimensiune N, deci ordinul de complexitate al algoritmului de analiză este cubicO(2N 3 /3).Analiza erorilorErorile <strong>numerice</strong> apărute <strong>în</strong> analiza circuitelor sunt:• erori inerente, <strong>în</strong> datele de intrare;• erori de rotunjire, datorate reprezentării finite.Erorileinerenteşiderotunjiresepropagă<strong>în</strong>procesuldecalculşipotgenerainstabilităţi<strong>numerice</strong>, cu atât mai mari, cu cât sistemul de ecuaţii este mai slab condiţionat.Dacă circuitul analizat are rezistenţe foarte diferite, atunci instabilităţile <strong>numerice</strong> potdeveni importante. Aşa se <strong>în</strong>tâmplă, dacă de exemplu, una din rezistenţele laturilor tindecătre zero (conductanţa tinde către infinit, ceea ce determină valori foarte mari pentruunele din elementele matricei G).5.5 Chestiuni de studiat1. Analiza numerică a unui circuit rezistiv liniar <strong>în</strong> regim staţionar (curent continuu);2. Analiza numerică a unui circuit liniar <strong>în</strong> regim sinusoidal (curent alternativ);3. Implementarea unui algoritm de analiză numerică a unui circuit electric liniar;4. Căutarea de informaţii pe Internet.


114 Capitolul 5. Analiza numerică a circuitelor electrice liniare <strong>în</strong> regim permanent5.6 Modul de lucruPentru desfăşurarea lucrării se selectează lucrarea Analiza numerică a circuitelor liniare<strong>în</strong> regim permanent din meniul principal de lucrări.Aceasta are ca efect lansarea unui meniu cu următoarele opţiuni:• Circuite de curent continuu;• Circuite de curent alternativ,din care utilizatorul selectează opţiunea dorită.5.6.1 Analiza numerică a unui circuit rezistiv liniarPrin selectarea opţiunii Circuite de curent continuu din meniul principal se lansează unprogram de analiză a circuitelor electrice de tip R, E.Programul solicită din partea utilizatorului următoarele informaţii de descriere a circuitului:• numărul de noduri;• numărul de laturi;• pentru fiecare latură de circuit:– nodul iniţial al laturii;– nodul final al laturii;– rezistenţa din latură;– t.e.m. a sursei de tensiune.Dupăintroducereadatelor,programulanalizeazăcircuitulintroduscumetodapotenţialelorla noduri şi sunt afişate pentru fiecare latură valoarea tensiunii şi cea a intensităţii curentului.Sunt calculate şi afişate valorile puterii consumate şi puterii generate.Pentruaanalizauncircuitelectriccuajutorulacestuiprogram,acestatrebuie”pregătit”<strong>în</strong> felul următor:• se numerotează nodurile de la 1 la N;• se numerotează laturile de la 1 la L;


5.6. Modul de lucru 115• se alege pentru fiecare latură un sens de parcurs, orientat de la borna minus la bornaplus a sursei de tensiune, dacă aceasta există, şi arbitrar <strong>în</strong> caz contrar.Se recomandă analiza unui circuit electric simplu, de exemplu cu L = 3 şi N = 2, acărei soluţie este cunoscută. Se va studia soluţia numerică obţinută, pentru valori extreme(foarte mari şi foarte mici) ale uneia din rezistenţele circuitului.5.6.2 Analiza unui circuit de curent alternativPrin selectarea opţiunii Circuite de curent alternativ se lansează un program, care permiteanaliza unui circuit electric <strong>în</strong> regim sinusoidal.Pentru descrierea circuitului, <strong>în</strong> afară de numărul de laturi, numărul de noduri şi afrecvenţei de lucru (exprimată <strong>în</strong> Hz), pentru fiecare latură se descrie:• nodul iniţial şi final;• tipul elementului pasiv din latură (R, L sau C);• valoarea parametrului elementului pasiv (R, L sau C);• valoarea efectivă a t.e.m. a sursei de tensiune din latură;• faza iniţială a t.e.m. a sursei de tensiune (<strong>în</strong> grade).Dupăintroducereadatelorseanalizeazăcircuitulcumetodanodalăşiseafişază, pentrufiecare latură:• valoarea efectivă a curentului;• faza iniţială a curentului.În final se afişează puterile active şi reactive, consumate şi generate. Se recomandăsă se analizeze numeric funcţionarea unui circuit electric stabilizator de curent de tipBoucherot pentru diferite valori ale rezistenţei de sarcină. Reamintim că un circuit de tipBoucherot este un circuit de tipul celui din figura 5.2.Pentru acest circuit curentul I 3 prin impedanţa Z 3 nu depinde de valoarea acesteiimpedanţe dacă Z 1 +Z 2 = 0. Pentru a justifica acest lucru este suficient să se calculezecurentul I 3 :I 3 =E Z 2=Z 1 + Z 2 Z 3 ZZ 2 +Z 2 +Z 3 3EZ 2Z 1 Z 2 +(Z 1 +Z 2 )Z 3.Este evident că, dacă Z 1 +Z 2 = 0 curentul I 3 nu depinde de Z 3 , şi anume el esteI 3 = E Z 1.


116 Capitolul 5. Analiza numerică a circuitelor electrice liniare <strong>în</strong> regim permanentZ1Z 2Z 3I3EFigura 5.2: Circuit de tip Boucherot. (Z 1 +Z 2 = 0 şi I 3 nu depinde de Z 3 )5.6.3 Implementarea algoritmilorSe va implementa <strong>în</strong> limbajul C, algoritmul de analiză a circuitelor electrice rezistiveliniare. Programul va fi editat, compilat, executat şi testat pentru un circuit simplu.5.6.4 Căutarea de informaţii pe InternetCăutaţi pe Internet informaţii (coduri) legate de rezolvarea circuitelor electrice. Exemplede cuvinte cheie: electric circuits simulation.5.7 Exemple5.7.1 Exemple rezolvate1. Fie circuitul de curent continuu din figura 5. Se cunosc: R 1 = 1Ω, R 2 = 2Ω,R 3 = 3Ω, R 4 = 4Ω, R 5 = 5Ω, R 6 = 6Ω, E 1 = 10V, E 3 = 30V, E 5 = 50V.Se cer:• Să se precizeze numărul de noduri, numărul de laturi şi, pentru fiecare latură,nodul iniţial, nodul final, rezistenţa şi t.e.m. a sursei de tensiune.• Ce dimensiuni au matricea G şi vectorul i S asamblate de algoritm?• Să se determine contribuţiile laturilor 3 şi 4 la matricea G şi vectorul i S .• Care sunt matricea G şi vectorul i S asamblate?• Care este sistemul de ecuaţii de rezolvat?Rezolvare:


5.7. Exemple 117(2) R 4(3)(1)R 3E 3(4)R 1R 2R 5E 1E 5R 6Fig. 5. Circuit rezistiv liniar de curent continuuPentru circuitul din figura 5, numărul de noduri este N = 4, iar numărul de laturieste L = 6.Pentru laturile cu surse de tensiune, sensul laturii este sensul intern al sursei detensiune, iar pentru restul laturilor, sensul laturii este ales de utilizator.Latura Nodul iniţial Nodul final R[Ω] E[V]1 2 1 1 102 1 2 2 03 4 1 3 304 2 3 4 05 4 3 5 506 4 3 6 0Deoarece numărul total de noduri este 4, matricea G asamblată de algoritm aredimensiunea (4,4), iar vectorul i S are dimensiunea 4.Contribuţiile laturii 3 la matricea G şi vectorul i S :G13− 1 3i S303− 1 313− 30 3Contribuţiile laturii 4 la matricea G şi vectorul i S :


118 Capitolul 5. Analiza numerică a circuitelor electrice liniare <strong>în</strong> regim permanentGi S− 1 41− 1 04 4104Matricea G şi vectorul i S asamblate:Gi S1+ 1 + 1 −1− 1 − 1 10+ 30 2 3 2 3 3−1− 1 1+ 1 + 1 − 1 −102 2 4 4− 1 4Nodul 4 este nod de referinţă.− 1 3− 1 5 − 1 614 + 1 5 + 1 6− 1 5 − 1 650513 + 1 5 + 1 6− 30 3 − 50 5Matricea G a sistemului de rezolvat se obţine din matricea G asamblată prin eliminareaultimei linii şi a ultimei coloane. Vectorul i S al sistemului de rezolvat seobţine din vectorul i S asamblat prin eliminarea ultimei linii.Matricea G şi vectorul i S ale sistemului de ecuaţii de rezolvat:Gi S1+ 1 + 1 −1− 1 10+ 30 2 3 2 3−1− 1 1+ 1 + 1 − 1 −102 2 4 4− 1 1+ 1 + 1 504 4 5 6 52. Fie circuitul de curent alternativ din figura 6: Se cunosc: frecvenţa f = 50Hz,R 2 = 3Ω, R 3 = 1Ω, R 5 = 4Ω, L 1 = 2 H, L 100π 4 = 3 H, C 100π 3 = 1 F, C 100π 6 = 1 F, 400πe 1 (t) = 30 √ 2sin(ωt)V, e 5 (t) = 20sin(ωt+ π)V.2Să se precizeze numărul de noduri, numărul de laturi şi, pentru fiecare latură, noduliniţial, nodul final, impedanţa şi valoarea complexă a t.e.m. a sursei de tensiune.Rezolvare:Pentru circuitul din figura 6, numărul de noduri este N = 4, iar numărul de laturieste L = 6.Pentru laturile cu surse de tensiune, sensul laturii este sensul intern al sursei detensiune, iar pentru restul laturilor, sensul laturii este ales de utilizator.Transformarea <strong>în</strong> complex simplificat a unei valori instantanee a t.e.m. este:e(t) = E √ 2sin(ωt+ϕ) −→ E = Ee jϕ = E[cos(ϕ)+jsin(ϕ)].


5.7. Exemple 119(4)C 3 (3)0101R 30L 100111R 501R 2000 111C 6(1) L 4(2)Fig. 6. Circuit rezistiv liniar de curent alternative 1E 5Astfel:E 1 = 30e j0 = 30, E 5 = 20 √2e j π 2 =20√2j.Impedanţele rezistorului, bobinei şi condesatorului sunt:unde ω = 2πf = 100π este pulsaţia.Z R = R, Z L = jωL, Z C = 1jωC = −j 1ωC ,De exemplu, impedanţele laturilor 1 şi 3 sunt:Z 1 = jωL 1 = 2j, Z 3 = R 3 −j 1ωC 3= 1−j.Latura Nodul iniţial Nodul final Z E1 1 4 2j 302 1 4 3 03 4 3 1−j 04 2 1 3j 05 3 2 4 √202j6 2 3 −4j 05.7.2 Exemple propuse1. Fie circuitul de curent continuu din figura 7: Se cunosc: R 1 = 1Ω, R 2 = 2Ω,R 3 = 1Ω, R 4 = 3Ω, R 5 = 2Ω, R 6 = 4Ω, E 3 = 10V, E 4 = 20V, E 5 = 10V, E 6 = 30V.Se cer:• Să se precizeze numărul de noduri, numărul de laturi şi, pentru fiecare latură,nodul iniţial, nodul final, rezistenţa şi t.e.m. a sursei de tensiune.


120 Capitolul 5. Analiza numerică a circuitelor electrice liniare <strong>în</strong> regim permanentE 4 R4R1R 2E 5R 6R 5E 6E 3R3Fig. 7. Circuit rezistiv liniar de curent continuuC 4C 1C 5 R016R 2010101e 1L015 E016000 111L 3 R 3Fig. 8. Circuit rezistiv liniar de curent alternativ• Ce dimensiuni au matricea G şi vectorul i S asamblate de algoritm?• Să se determine contribuţiile laturilor 2 şi 3 la matricea G şi vectorul i S .• Care sunt matricea G şi vectorul i S asamblate?• Care este sistemul de ecuaţii de rezolvat?2. Fie circuitul de curent alternativ din figura 8: Se cunosc: frecvenţa f = 50Hz,R 2 = 5Ω, R 3 = 2Ω, R 6 = 3Ω, L 3 = 2 H, L 100π 5 = 4 H, C 100π 1 = 1 F, C 300π 4 = 1 F, 100πC 5 = 1 F, e 200π 1(t) = 20 √ 2sin(ωt+π)V, e 6 (t) = 10sin(ωt+ 3π)V.2Să se precizeze numărul de noduri, numărul de laturi şi, pentru fiecare latură, noduliniţial, nodul final, impedanţa şi valoarea complexă a t.e.m.


5.8. Întrebări şi probleme 1215.8 Întrebări şi probleme1. Cum trebuie modificat algoritmul de analiză a circuitelor electrice rezistive liniare,pentru a admite şi surse ideale de curent, conectate <strong>în</strong> paralel cu fiecare latură?2. Extindeţialgoritmuldeanalizăacircuitelorelectricerezistiveliniarepentruaadmiteşi surse comandate liniar <strong>în</strong> tensiune.3. Modificaţi algoritmul de analiză nodală, astfel <strong>în</strong>cât să admită şi elemente comandate<strong>în</strong> curent (surse de tensiune sau surse comandate liniar <strong>în</strong> curent).4. Modificaţi algoritmul de analiză <strong>în</strong> curent alternativ, astfel <strong>în</strong>cât aceasta să admităşi bobine cuplate mutual.5. Analizaţi comparativ cele două metode de descriere a unui circuit: cea orientatăpe elemente (se dau nodurile fiecărui element) şi cea orientată pe noduri (se dauelementele, care concură la fiecare nod).6. Analizaţi modul <strong>în</strong> care se pot folosi tehnicile de matrice rare la analiza circuitelorelectrice liniare.7. Generaţi un algoritm de analiză a circuitelor de curent alternativ, pentru un sistemcare nu admite operaţii cu numere complexe.8. Generaţi un algoritm de analiză a datelor de descriere a unui circuit, care permitesimbolizarea nodurilor prin nume alfa<strong>numerice</strong> şi care testează corectitudinea descrierii.9. Comparaţi diferitele metode de scriere ale ecuaţiilor unui circuit electric rezistivliniar.Gustav Robert Kirchhoff (1824, Prusia - 1887, Germania)http://www-gap.dcs.st-and.ac.uk/ history/Mathematicians/Kirchhoff.htmlhttp://scienceworld.wolfram.com/biography/Kirchhoff.html


122 Capitolul 5. Analiza numerică a circuitelor electrice liniare <strong>în</strong> regim permanent


Lucrarea 6Interpolarea polinomială a funcţiilorreale6.1 Caracterizarea metodeiFuncţiile <strong>numerice</strong> se pot reprezenta <strong>în</strong> sistemele de calcul prin două metode principialdiferite:• prin cod, indicând algoritmul care permite evaluarea funcţiei <strong>în</strong> orice punct al domeniuluide definiţie;• prin date, indicând valorile funcţiei numai <strong>în</strong>tr-o reţea de puncte din domeniul dedefiniţie, numite noduri.Evaluareauneifuncţii reprezentate tabelar (prin date)presupuneaproximareaei(interpolarea)<strong>în</strong>intervaleledintrenodurilereţelei,<strong>în</strong>oricepunctaldomeniuluidedefiniţie.Unadin cele mai simple metode de interpolare constă <strong>în</strong> aproximarea funcţiei cu un polinom.În acest caz evaluarea funcţiei se reduce la operaţii aritmetice elementare (adunări şi<strong>în</strong>mulţiri).Scopul lucrării este de a evidenţia cele mai eficiente metode de determinare a polinomuluide interpolare. În lucrare se studiază efortul de calcul, eroarea introdusă prininterpolare polinomială şi limitele acestei metode de aproximare.123


124 Capitolul 6. Interpolarea polinomială a funcţiilor reale6.2 Principiul metodeiSe consideră funcţia reală de variabilă reală f : [a,b] → IR ale cărei valori sunt cunoscute<strong>în</strong>tr-o reţea de noduri a = x 0 < x 1 < ... < x n = b:<strong>în</strong> care y k = f(x k ).x : x 0 x 1 ... x ny : y 0 y 1 ... y nProblema fundamentală a interpolăriiconstă<strong>în</strong>determinareauneifuncţiig : [a,b] → IR,care aproximează funcţia f satisfăcând condiţiile: g(x 0 ) = y 0 ,g(x 1 ) = y 1 ,....,g(x n ) = y n .De obicei funcţia g este căutată de forma unei combinaţii liniareg(x) =n∑c k b k (x) (6.1)k=0de funcţii b k : [a,b] → IR, numite funcţii de bază. Dacă <strong>în</strong> general problema interpolăriinu are soluţie unică, prin alegerea funcţiilor de bază problema este bine formulată şiare soluţie unică, cu condiţia ca aceste funcţii să fie liniar independente. În acest caz,problema interpolării se reduce la determinarea coeficienţilor c 0 ,c 1 ,...,c n , care alcătuiescvectorul c = [c 0 ,c 1 ,...,c n ] T ∈ IR (n+1) .Metoda clasicăAlegând funcţiile de bază de forma 1,x,x 2 ,...,x n , respectiv b k = x k , funcţia de interpolareeste un polinom:n∑g(x) = c k x k ,k=0de gradul n care satisface condiţiile de interpolare:g(x k ) = y k , k = 0,1,2,...,n.Existădeciolegăturăstrânsă<strong>în</strong>tregradulpolinomuluideinterpolareşinumăruldepuncteale tabelului de valori, şi anume gradul polinomului este cu 1 mai mic decât numărul depuncte din tabel (prin două puncte trece o dreaptă, prin trei puncte trece o parabolă,etc.).În consecinţă, coeficienţii polinomului de interpolare satisfac sistemul de ecuaţii algebriceliniare:c 0 +c 1 x 0 +c 2 x 2 0 +···+c n x n 0 = y 0c 0 +c 1 x 1 +c 2 x 2 1 +···+c n x n 1 = y 1(6.2).c 0 +c 1 x n +c 2 x 2 n +···+c n x n n = y n


6.2. Principiul metodei 125sau sub forma matriceală:Ac = y,<strong>în</strong> care y = [y 0 ,y 1 ,...,y n ] T ∈ IR (n+1) iar⎡1 x 0 x 2 0 ··· x n 01 x 1 x 2 1 ··· x n 1A = ⎢⎣ . . .⎤⎥⎦ ∈ IR(n+1)×(n+1) (6.3)1 x n x 2 n ··· x n neste o matrice nesingulară, dacă x i ≠ x j pentru i ≠ j.În acest fel, problema interpolării presupune parcurgerea etapelor:• determinarea coeficienţilor polinomului de interpolare prin rezolvarea unui sistemliniar de ecuaţii algebrice;• evaluarea polinomului interpolant.Această tehnică de interpolare poate fi aplicată doar pentru valori mici ale gradului(n < 5), deoarece are două mari dezavantaje:1. efortul de calcul pentru determinarea coeficienţilor este relativ mare, ordinul decomplexitate al celui mai eficient algoritm de rezolvare a unui sistem liniar generalfiind O(2n 3 /3);2. erorile soluţiei sunt mari, deoarece sistemul este slab condiţionat pentru valori mariale gradului n.Metoda LagrangeO metodă care evită aceste dezavantaje este metoda Lagrange, <strong>în</strong> care funcţiile de bazăse aleg de forma:b 0 (x) = (x−x 1 )(x−x 2 )···(x−x n )b 1 (x) = (x−x 0 )(x−x 2 )···(x−x n ). (6.4)b n (x) = (x−x 0 )(x−x 1 )···(x−x n−1 )sau <strong>în</strong> general:n∏b k (x) = (x−x i ) (6.5)i=0,i≠k


126 Capitolul 6. Interpolarea polinomială a funcţiilor realeImpunând polinomuluig(x) =n∑c kn∏k=0 i=0,i≠kcondiţiile de interpolare, rezultă sistemul de ecuaţii algebrice liniare:(x−x i ) (6.6)g(x 0 ) = c 0 (x 0 −x 1 )(x 0 −x 2 )···(x 0 −x n ) = y 0g(x 1 ) = c 1 (x 1 −x 0 )(x 1 −x 2 )···(x 1 −x n ) = y 1. (6.7)g(x n ) = c n (x n −x 0 )·(x n −x 1 )···(x n −x n−1 ) = y ncu structura diagonală. Soluţia acestui sistem este:c k =y k∏ ni=0,i≠k (x k −x i ) , (6.8)iar polinomul de interpolare are expresiag(x) =n∑y kn∏k=0 i=0,i≠k(x−x i )n∑(x k −x i ) = y k l k (x), (6.9)k=0<strong>în</strong> care s-a notat cu l k (x) polinomul lui Lagrange.Metoda Lagrange elimină dezavantajele metodei ”clasice”, <strong>în</strong> schimb timpul necesarevaluării polinomului de interpolare creşte de la ordinul liniar O(n) la cel pătratic O(n 2 ).Metoda NewtonO altă metodă pentru determinarea polinomului de interpolare este metoda Newton,<strong>în</strong> care funcţiile de bază se aleg de forma:b 0 (x) = 1b 1 (x) = (x−x 0 )b 2 (x) = (x−x 0 )(x−x 1 ). (6.10)b n (x) = (x−x 0 )(x−x 1 )···(x−x n−1 )sau <strong>în</strong> general:Impunând polinomuluik−1∏b k (x) = (x−x i ).g(k) =n∑i=0c kk−1k=0 i=0∏(x−x i ) (6.11)


6.2. Principiul metodei 127condiţiile de interpolare:g(x 0 ) = c 0 = y 0g(x 1 ) = c 0 +c 1 (x 1 −x 0 ) = y 1g(x 2 ) = c 0 +c 1 (x 2 −x 0 )+c 2 (x 2 −x 0 )(x 2 −x 1 ) = y 2. (6.12)g(x n ) = c 0 +c 1 (x n −x 0 )+c 2 (x n −x 0 )(x n −x 1 )+··· = y nrezultă un sistem algebric liniar cu structura triunghiular inferioară, a cărui rezolvarepoate fi realizată prin metoda substituţiei progresive. Coeficienţii polinomului de interpolareNewton sunt:c 0 = y 0c 1 = (y 1 −c 0 )/(x 1 −x 0 ) = (y 1 −y 0 )(x 1 −x 0 )c 2 = (y 2 −c 0 −c 1 (x 2 −x 0 ))/(x 2 −x 0 )/(x 2 −x 1 ). (6.13)c n = (y n −c 0 −c 1 (x n −x 0 )−c 2 (x n −x 0 )(x n −x 1 )···)/(x n −x 0 )/···/(x n −x n−1 )Un concept aflat <strong>în</strong>tr-o strânsă relaţie cu polinomul de interpolare Newton este celal diferenţelor divizate de ordinul k ale unei funcţii f, valori notate cu f[···] şi care sedefinesc recursiv prin:f[x 0 ,x 1 ,··· ,x k ] = f[x 1,··· ,x k ]−f[x 0 ,x 1 ,··· ,x k−1 ]x k −x 0, (6.14)iar <strong>în</strong> particular, <strong>în</strong> cazul diferenţei divizate de ordinul 1:f[x 0 ,x 1 ] = y 1 −y 0x 1 −x 0. (6.15)Se constată că valorile coeficienţilor c k din polinomul de interpolare Newton sunt datede diferenţele divizatec k = f[x 0 ,x 1 ,··· ,x n ]şi:g(x) =n∑c k b k (x) =n∑k−1∏f[x 0 ,x 1 ,··· ,x k ] (x−x i ). (6.16)k=0k=0i=0Determinarea coeficienţilor polinomului Newton este facilitată de utilizarea tabeleidiferenţelor divizate, <strong>în</strong> care elementele se calculează recursiv:


128 Capitolul 6. Interpolarea polinomială a funcţiilor realex y ord.1 ord.2 ord.3 ord.4x 0 y 0f[x 0 ,x 1 ]x 1 y 1 f[x 0 ,x 1 ,x 2 ]f[x 1 ,x 2 ] f[x 0 ,...,x 3 ]x 2 y 2 f[x 1 ,x 2 ,x 3 ] f[x 0 ,...,x 4 ]f[x 2 ,x 3 ] f[x 1 ,...,x 4 ]x 3 y 3 f[x 2 ,x 3 ,x 4 ]f[x 3 ,x 4 ]x 4 y 4... ... ... ... ... ...Prima ”linie” a acestui tabel conţine chiar coeficienţii polinomului de interpolare Newton.Diferenţele divizate de diferite ordine reprezintă aproximări ale derivatelor de ordincorespunzător ale funcţiei <strong>în</strong> sensul că dacă f(x) are m derivate pe intervalul [a,b] existăun punct a ≤ z ≤ b astfel <strong>în</strong>cât:f[x 0 ,x 1 ,··· ,x m ] = f(m) (z)m!<strong>în</strong> care x 0 ,x 1 ,...,x m sunt puncte distincte din intervalul [a,b].Metoda de interpolare Newton are următoarele avantaje:(6.17)• realizează un compromis optim <strong>în</strong>tre efortul de construcţie şi cel de evaluare;• algoritmul este relativ stabil din punct de vedere numeric, având erori <strong>numerice</strong>acceptabile ale rezultatelor;• permite mărirea gradului polinomului de interpolare, prin adăugarea unui nod nou<strong>în</strong> reţeaua de interpolare, cu reutilizarea coeficienţilor de la gradul anterior, care nuse modifică, deci cu un efort minim de calcul;• are posibilitatea de a controla eroarea de interpolare;• prin mărirea succesivă a gradului polinomului de interpolare până la atingerea precizieidorite, timpul de calcul este dependent de eroarea impusă, având valori maridoar <strong>în</strong> cazurile <strong>în</strong> care se doreşte o precizie ridicată;• coeficienţii polinomului Newton reprezintă diferenţele divizate de interpolat, ceea cefacilitează calculul numeric al polinomului de interpolare.Observaţie:Cele trei metode prezentate (clasică, Lagrange, Newton) sunt metode de interpolareglobală. Ele caută un polinom de grad n ce trece prin cele n+1 puncte ale tabelului de


6.3. Pseudocodul algoritmilor 129date. Deoarece acest polinom este unic (de exemplu, dacă n = 1, există o dreaptă unicăce trece prin cele două puncte, dacă n = 2, există o parabolă unică ce trece prin cele treipuncte, etc.), cele trei metode rulate pe un calculator ideal, de precizie infinită (<strong>în</strong> carenu există erori de rotunjire) ar da acelaşi rezultat.6.3 Pseudocodul algoritmilorMetoda clasicăDeterminarea coeficienţilor polinomului de interpolare se poate face cu următoareaprocedură, care apelează la rândul ei procedura Gauss, de rezolvare a sistemelor algebriceliniare.procedura interp(n,x,y,c)<strong>în</strong>treg ntablou real x(n)tablou real y(n)tablou real c(n)tablou real a(n,n)pentru i = 0,na i0 = 1pentru j = 1,npentru i = 0,na ij = a ij−1 x iGauss0(n+1, a, y, c)retur; determină coeficienţii polinomului de interpolare; gradul polinomului de interpolare; abscisele punctelor de interpolare; ordonatele punctelor de interpolare; coeficienţii polinomului (date de ieşire), indicii sunt de la 0 la n; matricea sistemului, cu indici de la 0 la n; rezolvă sistemul liniar ac = y cu n+1 ecuaţiiAtenţie: Tabloul de date are indici de la 0 la n. Procedura Gauss implementată <strong>în</strong>lucrarea 3 folosea indici de la 1 la n. Ea trebuie rescrisă pentru a trata matrice <strong>în</strong> carenotaţia indicelor este de la 0 la n. De aceea pseudocodul de mai sus apelează o funcţieGauss0.Pentru evaluarea polinomului se poate folosi rutina evalp prezentată <strong>în</strong> lucrarea 1.Metoda Lagrange fără pregătireProcedura de interpolare Lagrange admite următoarea reprezentare <strong>în</strong> pseudocod:funcţia interp-L (n, x, y, xcrt)<strong>în</strong>treg ntablou real x(n), y(n); evaluează polinomul de interpolare; Lagrange <strong>în</strong> punctul xcrt; gradul polinomului; reţeaua de interpolare, indici de la 0 la n


130 Capitolul 6. Interpolarea polinomială a funcţiilor realereal xcrt ; variabilă independentăreal ycrt ; valoarea polinomului <strong>în</strong> xcrtreal p; variabilă intermediarăycrt = 0pentru k = 0,np = 1pentru j = 0,ndacă j ≠ k atuncip = p·(x−x j )/(x k −x j )ycrt = ycrt+y k ·p<strong>în</strong>toarce ycrtMetoda Lagrange cu pregătireDacă polinomul este evaluat <strong>în</strong>tr-un număr mare de puncte, diferite de nodurile reţeleide interpolare, atunci este avantajoasă următoarea formă a polinomului de interpolare(6.6):n∑( )ckg(x) = (x−x 0 )(x−x 1 )···(x−x n ) , (6.18)x−x k<strong>în</strong> care c k este dat de relaţia (6.8).Această metodă admite următorul pseudocod:procedura prep-L(n, x, y, c) ; pregăteşte datele pentru interpolarea Lagrange<strong>în</strong>treg n; gradul polinomuluitablou real x(n),y(n) ; reţeaua de interpolare, indici de la 0 la nc(n) ; coeficienţii polinomului de ieşire, indici de la 0 la npentru k = 0,nc k = y kpentru j = 0,ndacă j ≠ k atuncic k = c k /(x k −x j )returk=0funcţia eval-L (n, x, y, xcrt)<strong>în</strong>treg ntablou real x(n),tablou real c(n)real xcrtp = 1; evaluează polinomul Lagrange <strong>în</strong> punctul xcrt cu; coeficienţii c calculaţi cu prep-L; gradul polinomului; abscisele punctelor de interpolare, indici de la 0 la n; coeficienţii polinomului, indici de la 0 la n; varibilă independentă


6.3. Pseudocodul algoritmilor 131pentru k = 0,np = p(xcrt−x k )dacă p = 0 atunci <strong>în</strong>toarce y kycrt = 0pentru k = 0,nycrt = ycrt+c k /(xcrt−x k )ycrt = p·ycrt<strong>în</strong>toarce ycrtMetoda NewtonProblema determinării coeficienţilor polinomului Newton are o soluţie dependentă dereprezentarea datelor.Dacă se generează diferenţele divizate şi se memorează <strong>în</strong>tr-un tabel bidimensional cuelementele:a ij = f[x i··· ,x i+j ]pentru i = 0,1,...,n şi j = 0,1,...,(n−i) şi a ij = 0 pentru j > n−i, atunci pe primalinie a acestui tabel se obţin coeficienţii polinomului de interpolare Newton c k = a 0k :j = 0 j = 1 j = 2 ···i = 0 : x 0 f[x 0 ] f[x 0 ,x 1 ] f[x 0 ,x 1 ,x 2 ] ···i = 1 : x 1 f[x 1 ] f[x 1 ,x 2 ] f[x 1 ,x 2 ,x 3 ] ··· = [a ij ]i = 2 : x 2 f[x 2 ] f[x 2 ,x 3 ] f[x 2 ,x 3 ,x 4 ] ···.i = n−1 : x n−1 f[x n−1 ] f[x n−1 ,x n ] 0 ···i = n : x n f[x n ] 0 0 ···procedura prep-N (n, x, y, c) ; determină coeficienţii polinomului; de interpolare Newton<strong>în</strong>treg n; gradul polinomuluitablou real x(n), y(n) ; reţeaua de interpolare, indici de la 0 la ntablou real c(n) ; coeficienţii polinomului, indici de la 0 la n; (date de ieşire)pentru i = 0,na i0 = y ipentru j = 1,npentru i = 0,n−ja ij = (a i+j,j−1 −a i,j−1 )/(x j+1 −x i )pentru i = 0,n


132 Capitolul 6. Interpolarea polinomială a funcţiilor realereturc i = a 0 ifuncţia eval-N (n, x, y, xcrt) ; evaluează polinomul Newton<strong>în</strong>treg n ; gradul polinomuluitablou real x(n), ; abscisele punctelor de interpolare, indici de la 0 la ntablou real c(n) ; coeficienţii polinomului, indici de la 0 la nreal xcrt ; varibilă independentăycrt = c npentru k = n−1,0,−1ycrt = c k +(xcrt−x k )ycrt<strong>în</strong>toarce ycrtEvaluarea polinomului Newton se bazează pe observaţia ca acesta poate fi scris subforma:g(x) = c 0 +(x−x 0 )(c 1 +(x−x 1 )(c 2 +···+(x−x n−2 )(c n−1 +c n (x−x n−1 )···)mult mai avantajoasă din punctul de vedere al efortului de calcul decât forma (6.11).6.4 Analiza complexităţii algoritmilor6.4.1 Efort de calculMetoda clasică de interpolare polinomială, bazată pe rezolvarea unui sistem de ecuaţiiliniare necesită un efort de calcul de ordinul O(2n 3 /3) pentru determinarea coeficienţilorpolinomului şi un efort liniar O(2n) pentru evaluarea polinomului. Dacă se efectuează mevaluări, efortul global de calcul este O(2n 3 /3+2mn).La metoda Lagrange, efortul de calcul pentru evaluarea polinomului Lagrange <strong>în</strong>tr-unpunct cu relaţia (6.9) este de ordinul O(4n 2 ). Dacă se utilizează relaţia (6.18), atuncipregătirea datelor (procedura prep-L) necesită un efort de calcul de ordinul O(2n 2 ), iarevaluarea (funcţia eval-L) necesită un efort de calcul de ordinul O(5n), deci un efort decalcul global cu ordinul O(2n 2 +5mn).În cazul metodei Newton efortul de pregătire are ordinul O(3n 2 /2), iar efortul deevaluare are ordinul O(2n), ceea ce corespunde unui efort de calcul global de ordinulO(3n 2 /2+2mn).Următorul tabel sintetizează rezultatele obţinute şi evidenţiază eficienţa metodei Newton:


6.5. Eroarea de interpolare 133MetodaTimp de pregătire Timp de evaluare Timp totalClasică 2n 3 /3 2n 2n 3 /3+2nmLagrange (6.9) – 4n 2 4n 2 mLagrange (6.18) 2n 2 5n 2n 2 +5nmNewton 3n 2 /2 2n 3n 2 /2+2nm6.4.2 Necesar de memorieDin punctul de vedere al eficienţei spaţiale metoda clasică necesită un spaţiu de memoriede ordine O(n 2 ) pe când <strong>în</strong> cazul metodei Lagrange spaţiul de memorie necesar are ordinulliniar O(2n) pentru varianta (6.9) şi O(3n) pentru varianta (6.18).Metoda Newton, aşa cum a fost descrisă <strong>în</strong> procedura prep-N, necesită un spaţiu dememorie O(n 2 ) pentru determinarea coeficienţilor. Deoarece jumătate din acest spaţiueste neutilizat, structura de date poate fi modificată prin memorarea diferenţelor divizate<strong>în</strong>tr-un tablou unidimensional, ceea ce conduce la un necesar de memorie de ordinulO(n 2 /2).6.5 Eroarea de interpolareProblema generală a interpolării nu are soluţie unică, existând o infinitate de funcţii g(x),care interpolează funcţia f(x) pe o reţea dată. Mai mult, abaterea dintre funcţia ”exactă”f(x)şiaproximareasag(x)poatefifăcutăoricâtdemare, chiardacăg(x k ) = f(x k )pentruk = 0,1,··· ,n. Dacă <strong>în</strong> schimb, funcţia f(x) are derivate de ordin superior pe intervalul[a,b], atunci eroarea de aproximare a ei cu un polinom interpolat g(x) este mărginită.Dacă se notează cu:e(x) = f(x)−g(x),eroarea absolută, <strong>în</strong> care g(x) este polinomul de interpolare pe reţeaua x 0 ,x 1 ,...,x n ,atunci:e(x) = f[x 0 ,x 1 ,...,x n ,x]. (6.19)Folosind relaţiile (6.16) şi (6.17) rezultă că există un punct z ∈ [a,b] astfel <strong>în</strong>cât:e(x) = f(n+1) (z)(n+1)!n∏(x−x j ). (6.20)Dacă |f (n+1) (x)| ≤ M, pentru orice a ≤ x ≤ b, atunci eroarea de interpolare satisfaceinegalitatea:|e(x)| ≤M n∏|x−x j |. (6.21)(n+1)!j=0j=0


134 Capitolul 6. Interpolarea polinomială a funcţiilor realeÎn particular, <strong>în</strong> cazul interpolării liniare pe reţeaua cu două puncte x 0 ,x 1 eroarea deinterpolare satisface inegalitatea:|e(x)| ≤ M 22 |x−x 0||x−x 1 |,<strong>în</strong> care M 2 > |f ′′ (z)| cu x 0 < z < x 1 . Se constată că eroarea de interpolare se anulează <strong>în</strong>nodurile reţelei x 0 , x 1 şi că nu poate depăşi valoarea:|e(x)| ≤ M 22 h2 ,<strong>în</strong> care s-a notat cu h = x 1 −x 0 lungimea intervalului.Interpolarea parabolică (cu polinom de gradul doi) va avea o eroare care depinde devaloarea maximă a modului derivatei a treia a funcţiei de interpolat. În general, dacăh = b−a, rezultă inegalitatea:|e(x)| ≤ M n+1(n+1)! hn+1 , (6.22)care evidenţiază dependenţa erorii de lungimea h a intervalului de interpolat.Dacă marginile M 2 ,M 3 ,M 4 ,... ale derivatelor alcătuiesc un şir monoton descrescător(M k+1 ≤ M k ), atunci relaţiile (6.19) şi (6.21) evidenţiează faptul că ultimul termen dinpolinomul interpolat Newton reprezintă o aproximare a erorii de interpolare pentru polinomulde grad n−1.Din rezultatele prezentate s-ar părea că mărind gradul polinomului de interpolare,eroarea de interpolare trebuie să scadă. În realitate, această afirmaţie nu este exactă. Unexemplu celebru este cel dat de Runge, care a arătat că pentru funcţia f : [−5,5] → IR,definită prin:f(x) = 11+x 2,care este o funcţie suficient de netedă, interpolarea pe o reţea uniformă de noduri estenumeric instabilă. Pe măsură ce creşte numărul de noduri (şi implicit gradul polinomului)creşte şi eroarea de interpolare, datorită oscilaţiei polinomului interpolat <strong>în</strong>tre punctelereţelei. Această lipsă de convergenţă a polinomului de grad ni către f(x), când gradul ntinde către infinit este cunoscută sub numele de efectul Runge.Pentru a elimina efectul Runge se recomandă alegerea nodurilor de interpolare <strong>în</strong>poziţia corespunzătoare rădăcinilor polinomului Cebîşev:unde k = 0,1,...,nx k = a+b2+ b−a2( (n−k)πcosn), (6.23)


6.5. Eroarea de interpolare 135Erorile prezentate sunt <strong>în</strong> fond erori de trunchiere, dar <strong>în</strong>tr-o interpolare apar şi eroriinerente sau de rotunjire.Erorile inerente se datorează abaterilor datelor de intrare de la valoarea exactă. Interpolareapolinomială având un caracter global, o abatere <strong>în</strong>tr-un nod x k se face simţitănu numai local, <strong>în</strong> vecinătatea nodului x k ci pe <strong>în</strong>treg domeniu [a,b]. Dacă de exempluyk ∗ = y k +e y este afectată de eroarea e y , atunci rezultatul interpolării g(x) ∗ = g(x)+e gare o eroare:∏ nx−x je g = e y ,x k −x jj=0,j≠kcare se anulează <strong>în</strong> nodurile x j cu j diferit de k, deci este chiar polinomul Lagrange l k (x)multiplicat cu e y . Acest polinom poate lua <strong>în</strong> intervalul [a,b] valori mult mai mari ca e y .Alegând nodurile conform rădăcinilor polinomului Cebîşev, atunci polinomul Lagrangel k (x) se identifică cu polinomul Cebîşev de grad k, care are oscilaţie minimă <strong>în</strong> intervalul[a,b]. În consecinţă, interpolarea Cebîşev asigură nu numai erori de trunchiere ci şi eroride rotunjire minime.Spre deosebire de erorile de trunchiere, erorile de rotunjire depind de metoda adoptată.Deoarece polinomul de interpolare al unei reţele de date este unic (nu depinde de metodaprin care a fost calculat), erorile de aproximare <strong>în</strong> cazul operării cu un sistem de calculideal (fără erori de rotunjire) sunt aceleaşi indiferent dacă polinomul a fost determinatprin metoda clasică, Lagrange sau Newton.Modul <strong>în</strong> care se propagă erorile de rotunjire depinde de stabilitatea numerică ametodei. Metoda Lagrange este foarte stabilă numeric, deoarece elementele bazei suntortogonale şi sistemul de rezolvat (cu structură diagonală) este foarte bine condiţionat.Metoda”clasică”estefoarteinstabilădeoarecesistemulcareserezolvăesteslabcondiţionat,mai ales pentru polinoame de grad mare. Metoda Newton prezintă o stabilitate numericăacceptabilă.Erorile prezentate limitează drastic utilizarea interpolării polinomiale globale. Nu esterecomandabilă această metodă pentru interpolarea datelor experimentale, succeptibile deerori mari. Ea poate fi aplicată cu succes la interpolarea funcţiilor evaluate algoritmic,care sunt suficient de netede (de preferinţă analitice), fără modificări prea rapide ale pantei(de preferinţă la funcţii monotone). Dacă nodurile reţelei de interpolare pot fi alesede utilizator, atunci se recomandă ca ele să fie mai dese spre marginile intervalului, depreferinţă conform relaţiei (6.23). Din păcate, nici alegerea nodurilor conform acesteirelaţii nu rezolvă complet problema interpolării polinomiale. Faber a demonstrat o teoremăcare afirmă că pentru orice şir de reţele de discretizare cu un număr de noduri ntinzând către infinit există cel puţin o funcţie continuă pentru care procedura de interpolareeste divergentă, <strong>în</strong> sensul că eroarea de interpolare tinde la infinit. Această teoremăevidenţiează limitarea majoră a metodei interpolării polinomiale globale.


136 Capitolul 6. Interpolarea polinomială a funcţiilor reale6.6 Chestiuni de studiat1. Interpolarea polinomială a funcţiilor pe reţele uniforme sau neuniforme (conformradăcinilor polinoamelor Cebîşev);2. Analiza experimentală a erorilor;3. Analiza experimentală a timpului de calcul;4. Implementarea şi testarea unor algoritmi de interpolare polinomială;5. Căutare de informaţii pe Internet.6.7 Mod de lucruPentru desfăşurarea lucrării selectaţi opţiunea Interpolarea polinomială a funcţiilor realedin meniul principal de lucrări. Aceasta are ca urmare lansarea următorului meniu:• Interpolarea polinomială uniformă /Cebîşev• Analiza algoritmilor - erori• Analiza algoritmilor - timpi de calcul6.7.1 Interpolarea polinomială a funcţiilor pe reţele uniforme/CebîşevSe selectează din meniul principal opţiunea Interpolare polinomială, care lansează unprogram de interpolare mai <strong>în</strong>tâi pe o reţea cu pas constant şi apoi pe o reţea cu pasneuniform, <strong>în</strong> concordanţă cu rădăcinile polinoamelor Cebîşev. Programul afişează listafuncţiilor f(x) care pot fi interpolate:• sin(x)• exp(x)• ln(|x|)• th(x)• Runge: 1/(1+x 2 )• |x|


6.7. Mod de lucru 137• √ |x|După selectarea funcţiei programul solicită limitele domeniului de definiţie a ≤ x ≤ b şigradul polinomului de interpolare. Se reprezintă grafic funcţia exactă f(x) şi interpolareasa polinomială g(x) <strong>în</strong> ambele cazuri (uniform/neuniform). În consola Scilab se afişeazăeroarea de interpolare max a≤x≤b |f(x)−g(x)| .Sevorstudiainterpolărilepolinomialepentrucele7funcţiipredefinite, cudiferitevaloriale gradului polinomului. Pentru una din funcţii (<strong>în</strong> afara funcţiei sin) se va reprezentagrafic modul de variaţie a erorii <strong>în</strong> funcţie de numărul nodurilor de interpolare (de la 2la 20). Se recomandă să se aleagă o funcţie pentru care se remarcă efectul Runge. Se vorcomenta rezultatele obţinute.6.7.2 Analiza experimentală a erorilor de interpolareSe selectează opţiunea Analiza algoritmilor - erori din meniul principal al lucrării. Programullansat determină eroarea de interpolare a funcţiei sin(x) pe o perioadă, <strong>în</strong> cazulfolosirii metodelor de interpolare: clasică, Lagrange, Newton. Programul solicită valoareainiţială, valoarea finală şi pasul pentru gradul polinomului de interpolare. Valorile recomandatepentrugradulpolinomuluisunt1,2,3,4,5,6,7,8(valoareainiţială1, valoareafinală8, pas 1).Se vor nota erorile şi se vor comenta rezultatele. Se va reprezenta grafic eroarea <strong>în</strong>funcţie de gradul polinomului de interpolare.6.7.3 Analiza experimentală a timpului de calcul necesar interpolăriipolinomialeSe selectează opţiunea Analiza algoritmilor - timpi de calcul din meniul principal allucrării. Programul lansat determină timpul de calcul necesar interpolării funcţiei sin(x)pe o perioadă, <strong>în</strong> cazul folosirii metodelor de interpolare: clasică, Lagrange, Newton.Singura dată de intrare este numărul de noduri n din reţeaua de interpolare. Seva reprezenta grafic modul de variţie a timpului de calcul (separat pentru pregătire şiinterpolare) n, pentru n variind de la 20 la 100, cu pas 20.6.7.4 Implementarea unor algoritmi de interpolare polinomialăSevaimplementa<strong>în</strong>limbajulCalgoritmulLagrangedeinterpolare. Sevascrieunprogramde testare, care va permite introducerea datelor n - gradul polinomului de interpolare, x,y


138 Capitolul 6. Interpolarea polinomială a funcţiilor reale- tabelele de date (cu n+1 puncte) şi afişarea rezultatelor interpolării la mijlocul distanţeidintre nodurile de interpolare x.6.7.5 Căutare de informaţii pe InternetCăutaţi pe Internet informaţii legate de interpolarea funcţiilor. Cuvinte cheie recomandate:interpolation, fitting.6.8 Exemple6.8.1 Exemple rezolvate1. Fie funcţia y = f(x) definită tabelar:Se cer:x 1 2 4y 2 1 3(a) Cât este gradul polinomului de interpolare globală?(b) Care sunt condiţiile de interpolare?(c) Care este sistemul de ecuaţii asamblat <strong>în</strong> metoda clasică de interpolare?(d) Care sunt polinoamele Lagrange asociate diviziunii [124]?(e) Care este polinomul de interpolare Lagrange?(f) Care este tabelul de diferenţe divizate?(g) Care este polinomul de interpolare Newton?(h) Care este valoarea funcţiei <strong>în</strong> punctul x = 3?Rezolvare:(a) Gradul polinomului de interpolare globală g(x) este cu o unitate mai mic decâtnumărul de noduri ale reţelei de discretizare <strong>în</strong> care este cunoscută funcţiaf(x). Pentru exemplul dat, funcţia y = f(x) are valori date <strong>în</strong> 3 noduri, şi <strong>în</strong>consecinţă gradul polinomului de interpolare este n = 2.(b) Condiţiile de interpolare sunt g(x k ) = y k , k = 0,n. Aceste condiţii impun cafuncţia de interpolare g(x) să aibă aceleaşi valori ca funcţia f(x) <strong>în</strong> nodurilereţelei de discretizare:


6.8. Exemple 139g(x 0 ) = y 0 =⇒ g(1) = 2,g(x 1 ) = y 1 =⇒ g(2) = 1,g(x 2 ) = y 2 =⇒ g(4) = 3.(6.24)(c) În metoda clasică de interpolare, funcţia de interpolare este g(x) = ∑ n c k x k .În cazul acestei probleme, avem:k=0g(x) = c 0 +c 1 x+c 2 x 2 . (6.25)Din cele n+1 condiţii de interpolare rezultă un sistem (6.2) de n+1 ecuaţiicu n+1 necunoscute (coeficienţii c k , k = 0,n).Conditiile de interpolare (6.24) scrise pentrufuncţia g(x) dată de (6.25) conducla următorul sistem de ecuaţii:⎧⎨⎩c 0 + c 1 + c 2 = 2c 0 + 2c 1 + 4c 2 = 1c 0 + 4c 1 + 16c 2 = 3(d) Polinomul Lagrange l k asociat unei diviziuni x i are următoarea formă:n∏ x−x il k (x) = .x k −x ii=0,i≠kPentru exemplul considerat, diviziunea are 3 puncte, <strong>în</strong> consecinţă vor fi 3polinoame Lagrange de grad 2:l 0 (x) =l 1 (x) =l 2 (x) =2∏i=0,i≠02∏i=0,i≠12∏i=0,i≠2x−x i= (x−x 1)(x−x 2 )x k −x i (x 0 −x 1 )(x 0 −x 2 ) = (x−2)(x−4)(1−2)(1−4) = x2 −6x+8,3x−x i= (x−x 0)(x−x 2 )x k −x i (x 1 −x 0 )(x 1 −x 2 ) = (x−1)(x−4)(2−1)(2−4) = x2 −5x+4,−2x−x i= (x−x 0)(x−x 1 )x k −x i (x 2 −x 0 )(x 2 −x 1 ) = (x−1)(x−2)(4−1)(4−2) = x2 −3x+2.6∑(e) Polinomul de interpolare Lagrange este: g(x) = n y k l k (x).În cazul particular studiat:k=0g(x) = y 0 l 0 (x)+y 1 l 1 (x)+y 2 l 2 (x),şi <strong>în</strong>locuind expresiile polinomului Lagrange de mai sus, rezultă:g(x) = 2 x2 −6x+83+1 x2 −5x+4−2+3 x2 −3x+26= 2x2 −9x+13.3


140 Capitolul 6. Interpolarea polinomială a funcţiilor reale(f) Tabelul de diferenţe divizate este:x y ord.1 ord.2x 0 = 1 y 0 = 2f[x 0 ,x 1 ] = −1x 1 = 2 y 1 = 1 f[x 0 ,x 1 ,x 2 ] = 2 3f[x 1 ,x 2 ] = 1x 2 = 4 y 2 = 3Diferenţele divizate de ordinul 1, respectiv ordinul 2 se calculează cu formula(6.14), astfel:f[x 0 ,x 1 ] = y 1 −y 0= 1−2x 1 −x 0 2−1 = −1,f[x 1 ,x 2 ] = y 2 −y 1x 2 −x 1= 3−14−2 = 1,f[x 0 ,x 1 ,x 2 ] = f[x 1,x 2 ]−f[x 0 ,x 1 ]x 2 −x 0(g) Polinomul de interpolare Newton (6.16) este:= 1−(−1)4−1= 2 3 .g(x) =n∑k=0k−1∏f[x 0 ,x 1 ,··· ,x k ] (x−x i ).i=0(h)În cazul studiat:g(x) = y 0 +f[x 0 ,x 1 ](x−x 0 )+f[x 0 ,x 1 ,x 2 ](x−x 0 )(x−x 1 ) == 2+(−1)(x−1)+ 2 3 (x−1)(x−2) = 2x2 −9x+13.3Observaţie: polinomul de interpolare globală g(x) este unic, indiferent demetoda de interpolare utilizată. De aceea, rezultatul obţinut este identic curezultatul de la punctul (e).În punctul x = 3, polinomul de interpolare este:g(3) = 2·32 −9·3+133= 4 3 .2. Fie funcţia y = f(x) definită tabelar:Se cer:x 2 3 5y 5 7 11(a) Cât este gradul polinomului de interpolare globală?


6.8. Exemple 141(b) Care sunt condiţiile de interpolare?(c) Care este sistemul de ecuaţii asamblat <strong>în</strong> metoda clasică de interpolare?(d) Care sunt polinoamele Lagrange asociate diviziunii [235]?(e) Care este polinomul de interpolare Lagrange?(f) Care este tabelul de diferenţe divizate?(g) Care este polinomul de interpolare Newton?(h) Care este valoarea funcţiei <strong>în</strong> punctul x = 4?(i) Care este polinomul de interpolare <strong>în</strong> ipoteza adăugării punctului (1,0) <strong>în</strong>tabelul de valori?Rezolvare:(a) Deoarecereţeauadediscretizareare3noduri,gradulpolinomuluideinterpolareeste n = 2.(b) Condiţiile de interpolare sunt:g(2) = 5,g(3) = 7,g(5) = 11.(c) Impunând condiţiile de interpolare expresiei g(x) = c 0 + c 1 x + c 2 x 2 , rezultăsistemul de ecuaţii <strong>în</strong> metoda clasică de interpolare:⎧⎨⎩(d) Polinoamele Lagrange sunt:c 0 + 2c 1 + 4c 2 = 5c 0 + 3c 1 + 9c 2 = 7c 0 + 5c 1 + 25c 2 = 11l 0 (x) = (x−x 1)(x−x 2 )(x 0 −x 1 )(x 0 −x 2 ) = (x−3)(x−5)(2−3)(2−5) = x2 −8x+15,3l 1 (x) = (x−x 0)(x−x 2 )(x 1 −x 0 )(x 1 −x 2 ) = (x−2)(x−5)(3−2)(3−5) = x2 −7x+10,−2l 2 (x) = (x−x 0)(x−x 1 )(x 2 −x 0 )(x 2 −x 1 ) = (x−2)(x−3)(5−2)(5−3) = x2 −5x+6.6(e) Polinomul de interpolare Lagrange este:g(x) = y 0 l 0 (x)+y 1 l 1 (x)+y 2 l 2 (x) = 5 x2 −8x+153+11 x2 −5x+66= 12x+66= 2x+1.+7 x2 −7x+10+−2


142 Capitolul 6. Interpolarea polinomială a funcţiilor realeGradul polinomului de interpolare este 1, deşi avem 3 noduri <strong>în</strong> reţeaua dediscretizare. Aceasta se explică prin faptul că cele trei noduri sunt situate pedreapta 2x+1 = y.(f) Tabelul de diferenţe divizate este:x y ord.1 ord.2x 0 = 2 y 0 = 5f[x 0 ,x 1 ] = 2x 1 = 3 y 1 = 7 f[x 0 ,x 1 ,x 2 ] = 0f[x 1 ,x 2 ] = 2x 2 = 5 y 2 = 11Diferenţele divizate de ordinul 1, respectiv ordinul 2 sunt:f[x 0 ,x 1 ] = y 1 −y 0x 1 −x 0= 7−53−2 = 2,f[x 1 ,x 2 ] = y 2 −y 1x 2 −x 1= 11−75−3 = 2,f[x 0 ,x 1 ,x 2 ] = f[x 1,x 2 ]−f[x 0 ,x 1 ]x 2 −x 0= 2−25−2 = 0.Ultimadiferenţădivizatăegalăcuzeroindicăfaptulcăpolinomuldeinterpolarenu este de grad 2.(g) Polinomul de interpolare Newton este:g(x) = y 0 +f[x 0 ,x 1 ](x−x 0 )+f[x 0 ,x 1 ,x 2 ](x−x 0 )(x−x 1 ) == 5+2(x−2)+0(x−2)(x−3) = 2x+1.(h)În punctul x = 4, polinomul de interpolare este:(i)g(4) = 2·4+1 = 9.În situaţia <strong>în</strong> care tabelului de valori i se adaugă un punct, metoda Newtonesteceamaiavantajoasămetodădeoareceaceastapermiterefolosireacalculelordeja efectuate.Tabelul de diferenţe divizate se completează cu noua valoare astfel:x y ord.1 ord.2 ord.32 523 7 03285 11 − 3 81141 0


6.8. Exemple 143Diferenţele divizate care apar prin adăugarea punctului (1,0) sunt:f[x 2 ,x 3 ] = y 3 −y 2x 3 −x 2= 0−111−5 = 114 ,f[x 1 ,x 2 ,x 3 ] = f[x 2,x 3 ]−f[x 1 ,x 2 ]= 11/4−2x 3 −x 1 1−3f[x 0 ,x 1 ,x 2 ,x 3 ] = f[x 1,x 2 ,x 3 ]−f[x 0 ,x 1 ,x 2 ]x 3 −x 0Polinomul de interpolare este:= − 3 8 ,= −3/8−01−2= 3 8 .h(x) = g(x)+ 3 8 (x−2)(x−3)(x−5) = 2x+1+ 3 8 (x3 −10x 2 +31x−30) == 3 8 x3 − 154 x2 + 109 41x−8 4 .Se observă ca nu este nevoie ca punctele diviziunii să fie sortate. De asemenea,<strong>în</strong> cazul aplicării metodei clasice sau Lagrange, efortul de calcul efectuatanterior s-ar fi pierdut.3. Fie funcţia y = f(x) definită tabelar:Se cer:x 1 2 3 5y 3 2 4 1(a) Cât este gradul polinomului de interpolare globală?(b) Care sunt condiţiile de interpolare?(c) Care este sistemul de ecuaţii asamblat <strong>în</strong> metoda clasică de interpolare?(d) Care sunt polinoamele Lagrange asociate diviziunii [1235]?(e) Care este polinomul de interpolare Lagrange?(f) Care este tabelul de diferenţe divizate?(g) Care este polinomul de interpolare Newton?(h) Care este valoarea funcţiei <strong>în</strong> punctul x = 4?Rezolvare:(a) Deoarecereţeauadediscretizareare4noduri,gradulpolinomuluideinterpolareeste n = 3.


144 Capitolul 6. Interpolarea polinomială a funcţiilor reale(b) Condiţiile de interpolare sunt;g(1) = 3,g(2) = 2,g(3) = 4,g(5) = 1.(c) Condiţiile de interpolare impuse polinomului g(x) = c 0 + c 1 x + c 2 x 2 + c 3 x 3conduc la sistemul de ecuaţii <strong>în</strong> metoda clasică de interpolare:⎧⎪⎨⎪⎩c 0 +1·c 1 +1 2 ·c 2 +1 3 ·c 3 = 3c 0 +2·c 1 +2 2 ·c 2 +2 3 ·c 3 = 2c 0 +3·c 1 +3 2 ·c 2 +3 3 ·c 3 = 4c 0 +5·c 1 +5 2 ·c 2 +5 3 ·c 3 = 1⎧⎪⎨=⇒⎪⎩c 0 + c 1 + c 2 + c 3 = 3c 0 + 2c 1 + 4c 2 + 8c 3 = 2c 0 + 3c 1 + 9c 2 + 27c 3 = 4c 0 + 5c 1 + 25c 2 + 125c 3 = 1(d) Polinoamele Lagrange sunt:l 0 (x) = (x−x 1)(x−x 2 )(x−x 3 )(x 0 −x 1 )(x 0 −x 2 )(x 0 −x 3 ) = (x−2)(x−3)(x−5)(1−2)(1−3)(1−5) = x3 −10x 2 +31x−30,−8l 1 (x) = (x−x 0)(x−x 2 )(x−x 3 )(x 1 −x 0 )(x 1 −x 2 )(x 1 −x 3 ) = (x−1)(x−3)(x−5)(2−1)(2−3)(2−5) = x3 −9x 2 +23x−15,3l 2 (x) = (x−x 0)(x−x 1 )(x−x 3 )(x 2 −x 0 )(x 2 −x 1 )(x 2 −x 3 ) = (x−1)(x−2)(x−5)(3−1)(3−2)(3−5) = x3 −8x 2 +17x−10,−4l 3 (x) = (x−x 0)(x−x 1 )(x−x 2 )(x 3 −x 0 )(x 3 −x 1 )(x 3 −x 2 ) = (x−1)(x−2)(x−3)(5−1)(5−2)(5−3) = x3 −6x 2 +11x−6.24(e) Polinomul de interpolare Lagrange este:g(x) = y 0 l 0 (x)+y 1 l 1 (x)+y 2 l 2 (x) = 3 x3 −10x 2 +31x−30−8+4 x3 −8x 2 +17x−10+1 x3 −6x 2 +11x−6−4 24= − 2 3 x3 + 11 2 x2 − 776 x+11.(f) Tabelul de diferenţe divizate este:+2 x3 −9x 2 +23x−15+3= −16x3 +132x 2 −308x+26424x y ord.1 ord.2 ord.3x 0 = 1 y 0 = 3f[x 0 ,x 1 ] = −1x 1 = 2 y 1 = 2 f[x 0 ,x 1 ,x 2 ] = 3 2f[x 1 ,x 2 ] = 2 f[x 0 ,x 1 ,x 2 ,x 3 ] = − 2 3x 2 = 3 y 2 = 4 f[x 1 ,x 2 ,x 3 ] = − 7 6f[x 2 ,x 3 ] = − 3 2x 3 = 5 y 3 = 1=


6.8. Exemple 145Diferenţele divizate de ordinele 1, 2 şi 3 sunt:f[x 0 ,x 1 ] = y 1 −y 0x 1 −x 0= 2−32−1 = −1,f[x 1 ,x 2 ] = y 2 −y 1x 2 −x 1= 4−23−2 = 2,f[x 2 ,x 3 ] = y 3 −y 2x 3 −x 2= 1−45−3 = −3 2 ,f[x 0 ,x 1 ,x 2 ] = f[x 1,x 2 ]−f[x 0 ,x 1 ]x 2 −x 0f[x 1 ,x 2 ,x 3 ] = f[x 2,x 3 ]−f[x 1 ,x 2 ]x 3 −x 1= 2−(−1)3−1= 3 2 ,= −3 2 −25−2 = −7 6 ,f[x 0 ,x 1 ,x 2 ,x 3 ] = f[x 1,x 2 ,x 3 ]−f[x 0 ,x 1 ,x 2 ]x 3 −x 0= −7 6 − 3 25−1 = −2 3 .(g) Polinomul de interpolare Newton este:g(x) = y 0 +f[x 0 ,x 1 ](x−x 0 )+f[x 0 ,x 1 ,x 2 ](x−x 0 )(x−x 1 )++f[x 0 ,x 1 ,x 2 ,x 3 ](x−x 0 )(x−x 1 )(x−x 2 ),g(x) = 3+(−1)(x−1)+ 3 (2 (x−1)(x−2)+ − 2 )(x−1)(x−2)(x−3) =3(h)= − 2 3 x3 + 112 x2 − 77 6 x+11.În punctul x = 4, polinomul de interpolare este:g(4) = − 2 3 43 + 11 2 42 − 77 64+11 = 5.6.8.2 Exemple propuse1. Fie funcţia y = f(x) definită tabelar:Se cer:x 2 4 5y 1 3 2(a) Cât este gradul polinomului de interpolare globală?(b) Care sunt condiţiile de interpolare?(c) Care este sistemul de ecuaţii asamblat <strong>în</strong> metoda clasică de interpolare?(d) Care sunt polinoamele Lagrange asociate diviziunii [245]?


146 Capitolul 6. Interpolarea polinomială a funcţiilor reale(e) Care este polinomul de interpolare Lagrange?(f) Care este tabelul de diferenţe divizate?(g) Care este polinomul de interpolare Newton?(h) Care este valoarea funcţiei <strong>în</strong> punctul x = 3?2. Fie funcţia y = f(x) definită tabelar:Se cer:x 1 3 5y 4 1 3(a) Cât este gradul polinomului de interpolare globală?(b) Care sunt condiţiile de interpolare?(c) Care este sistemul de ecuaţii asamblat <strong>în</strong> metoda clasică de interpolare?(d) Care sunt polinoamele Lagrange asociate diviziunii [135]?(e) Care este polinomul de interpolare Lagrange?(f) Care este tabelul de diferenţe divizate?(g) Care este polinomul de interpolare Newton?(h) Care este valoarea funcţiei <strong>în</strong> punctul x = 2?(i) Care este polinomul de interpolare <strong>în</strong> ipoteza adăugării punctului (4,5) <strong>în</strong>tabelul de valori?3. Fie funcţia y = f(x) definită tabelar:Se cer:x 1 3 4 5y 2 3 1 4(a) Cât este gradul polinomului de interpolare globală?(b) Care sunt condiţiile de interpolare?(c) Care este sistemul de ecuaţii asamblat <strong>în</strong> metoda clasică de interpolare?(d) Care sunt polinoamele Lagrange asociate diviziunii [1345]?(e) Care este polinomul de interpolare Lagrange?(f) Care este tabelul de diferenţe divizate?(g) Care este polinomul de interpolare Newton?(h) Care este valoarea funcţiei <strong>în</strong> punctul x = 2?


6.9. Întrebări şi probleme 1476.9 Întrebări şi probleme1. Evaluaţi stabilitatea numerică a metodei interpolării polinomiale.2. Generaţi un algoritm de interpolare polinomială a unei funcţii de două variabilef(x,y).3. Implementaţi <strong>în</strong>tr-un limbaj de nivel <strong>în</strong>alt algoritmul de interpolare Newton.4. Determinaţi o aproximare polinomială pentru caracteristica unei diode semiconductoarei(u) = I s (e u/vi −1), cu I s = 10 −6 A, v = 0,027 V şi analizaţi eroarea introdusăprin interpolare.5. Determinaţi o aproximare polinomială pentru caracteristica de magnetizare B =µ 0 H + B s th(µH/B s ), cu µ 0 = 4π · 10 −7 H/m, B s = 1.7 T, µ = 10 4 µ 0 şi analizaţieroarea introdusă prin interpolare.6. Analizaţi comportarea aproximării polinomiale <strong>în</strong> exteriorul domeniului a ≤ x ≤ b(problema extrapolării).7. Generaţi şi implementaţi un algoritm de interpolare a unei funcţii reale impare şiperiodice printr-un polinom trigonometric de formag(x) =n∑a k sin(kωt).k=18. Documentaţi-vă <strong>în</strong> literatura de specialitate şi pe internet ce <strong>în</strong>seamnă interpolareapolinomială pe portiuni (de tip spline).9. Rezolvaţi problemele 4 şi 5 <strong>în</strong> mediul MATLAB/SCILAB.10. Identificaţi <strong>în</strong> biblioteca matematică descrisa <strong>în</strong> [2] funcţii avansate pentru interpolărişi aproximari polinomiale, raţionale şi spline. Ce aduc nou aceste funcţii faţăde cea analizată <strong>în</strong> lucrare?


148 Capitolul 6. Interpolarea polinomială a funcţiilor realeJoseph-Louis Lagrange (1736, Sardinia-Piedmont, acum Italia -1813, Franţahttp://www-gap.dcs.st-and.ac.uk/ history/Mathematicians/Lagrange.htmlSir Isaac Newton (1643, Anglia - 1727, Anglia)http://www-gap.dcs.st-and.ac.uk/ history/Mathematicians/Newton.htmlCarle David Tolme Runge (1856, Germania - 1927, Germania)http://www-gap.dcs.st-and.ac.uk/ history/Mathematicians/Runge.html


Lucrarea 7Derivarea numerică a funcţiilor reale7.1 Caracterizarea metodelor de derivare numerică<strong>Metode</strong>le <strong>numerice</strong> de derivare au o largă aplicabilitate <strong>în</strong> inginerie, de exemplu atuncicândexpresiaanaliticăaderivateifuncţieiestecomplicatăşicereunefortmaredeevaluaresau atunci când funcţia are expresia necunoscută (valorile sunt determinate experimentalsau rezultă dintr-un calcul numeric anterior). Aceste metode stau la baza rezolvării<strong>numerice</strong>aecuaţiilordiferenţiale,foartepuţinedinacesteaputândfirezolvateprinmetodeanalitice.Derivarea numerică se reducela calcule aritmetice (adunări, scăderi, <strong>în</strong>mulţiri şi împărţiri),folosind formule relativ simple deduse prin aproximarea funcţiei de derivat printr-unpolinom de interpolare. În acest fel, din punct de vedere teoretic, problema derivării<strong>numerice</strong> se reduce, practic, la problema interpolării funcţiilor.În lucrare se studiază erorile de trunchiere şi rotunjire şi modul <strong>în</strong> care acestea depindde ordinul aproximării şi pasul reţelei de interpolare.7.2 Principiile metodelorProblema derivării <strong>numerice</strong> se formulează diferit <strong>în</strong> următoarele două cazuri:• funcţia este definită prin cod (este cunoscută expresia ei analitică sau algoritmul deevaluare pentru orice punct din domeniul de definiţie);• funcţia este definită prin date (este cunoscut tabelul valorilor funcţiei <strong>în</strong>tr-o reţeafinită de puncte din domeniul de definiţie, numite noduri).Fie o reţea de discretizare:149


150 Capitolul 7. Derivarea numerică a funcţiilor realex : x 0 , x 1 , x 2 , ..., x nf : f 0 , f 1 , f 2 , ..., f npe care sunt date valorile f k = f(x k ) ale unei funcţii reale f : [x 0 ,x n ] → IR.Dacă se notează cu g : [x 0 ,x n ] → IR o funcţie care interpolează datele anterioare (deexemplu, polinomul de interpolare de gradul n), atunci derivata funcţiei f(x) <strong>în</strong> punctulx poate fi calculată aproximativ, evaluând g ′ (x).De exemplu, <strong>în</strong> cazul n = 1, polinomul de interpolareare derivataiar <strong>în</strong> cazul n = 2:g(x) = f 0x−x 1x 0 −x 1+f 1x−x 0x 1 −x 0(7.1)g ′ (x) = f 1 −f 0x 1 −x 0(7.2)(x−x 1 )(x−x 2 )g(x) = f 0(x 0 −x 1 )(x 0 −x 2 ) +f (x−x 0 )(x−x 2 )1(x 1 −x 0 )(x 1 −x 2 ) +f (x−x 0 )(x−x 1 )2(x 2 −x 0 )(x 2 −x 1 )g ′ 2x−(x 1 +x 2 )(x) = f 0(x 0 −x 1 )(x 0 −x 2 ) +f 2x−(x 0 +x 2 )1(x 1 −x 0 )(x 1 −x 2 ) +f 2x−(x 0 +x 1 )2(x 2 −x 0 )(x 2 −x 1 )(7.3)Calculele pot fi continuate pentru grade superioare, prin folosirea polinomului Newtonde interpolare.În cazul reţelei de noduri echidistante cu pasulaceste relaţii capătă o formă mult mai simplă:pentru ordinul n = 1 şipentru n = 2.g ′ (x) = f 0x−(x 0 + 3h 2 )h 2h = x i+1 −x i , (7.4)g ′ (x) = f 1 −f 0, (7.5)h−2f 1x−(x 0 +h)h 2 +f 2x−(x 0 + h 2 )h 2 , (7.6)Polinomul de interpolare de grad doi devine, după derivare, o funcţie de gradul <strong>în</strong>tâicare, <strong>în</strong> cele trei noduri ale reţelei are valorile:g ′ (x 0 ) = 12h (−3f 0 +4f 1 −f 2 ); (7.7)g ′ (x 1 ) = 12h (f 2 −f 0 ); (7.8)g ′ (x 2 ) = 12h (f 0 −4f 1 +3f 2 ). (7.9)


7.3. Analiza algoritmilor 151Aceste trei relaţii reprezintă aproximări de ordinul doi ale primei derivate, cunoscutesub numele de relaţii cu diferenţe finite progresive, centrate şi respectiv regresive.Aproximările de ordin doi oferă erori de trunchiere mai mici decât aproximările progresiveşi regresive de ordinul <strong>în</strong>tâi:obţinute folosind polinomul de gradul n = 1.g ′ (x 0 ) = 1 h (f 1 −f 0 ); (7.10)g ′ (x 1 ) = 1 h (f 1 −f 0 ); (7.11)Se constată că pentru aproximarea derivatei <strong>în</strong>tr-un nod al reţelei de discretizare sefolosesc valorile funcţiei <strong>în</strong> nodurile vecine. Cu cât ordinul aproximării este mai mare, cuatât sunt utilizate mai multe noduri din vecinătatea iar calculul este mai complicat.Derivatele de ordin superior se pot evalua numeric prin aplicarea recursivă a formulelorde calcul pentru prima derivată. De exemplu, folosind succesiv relaţia (7.8) a diferenţelorfinite centrate de ordinul doi, pentru o discretizare locală cu pasul h/2 şi cu notaţiile:f(x i +h/2) = f i+1/2 , f(x i −h/2) = f i−1/2 , se obţine:f ′′ (x i ) = f′ i+1/2 −f′ i−1/22(h/2)=f i+1 −f i− f i−f i−12(h/2) 2(h/2)h= f i+1 −2f i +f i−1h 2 , (7.12)rezultat care corespunde derivării directe a polinomului de interpolare g(x), pentru aproximareade ordinul doi. Acest rezultat are avantajul unei precizii maxime pentru reţeauaconsiderată şi pentru trei evaluări a funcţiei f.În cazul unei reţele neuniforme cu: x 1 −x 0 = h 1 , x 2 −x 1 = h 2 , rezultă:g ′′ 2(x) = f 0h 1 (h 1 +h 2 ) −f 2 21 +f 2 . (7.13)h 1 h 2 (h 1 +h 2 )h 2Formulele de derivare numerică obţinute se pot aplica şi <strong>în</strong> calculul derivatelor parţiale.Rezultateleobţinutepentrucazulfuncţiilordefinitetabelarseaplicăşi<strong>în</strong>cazulfuncţiilordefinite prin cod, cu observaţia că: f i = f(x i ) şi f i+1 = f(x i +h), <strong>în</strong> care pasul h se alegeastfel <strong>în</strong>cât erorile <strong>numerice</strong> să fie cât mai mici.7.3 Analiza algoritmilorAnaliza erorilorDeoarece valoarea exactă a derivatei se obţine printr-un proces infinit de trecere lalimită:f ′ f(x+h)−f(x)(x) = lim , (7.14)h→0 h


152 Capitolul 7. Derivarea numerică a funcţiilor realeevaluarea numerică este afectată de o eroare de trunchiere. Teoretic, eroarea de trunchiereeste cu atât mai mică cu cât ordinul aproximării este mai mare. În realitate, din cauzafenomenului Runge (evidenţiat la interpolarea polinomială), formulele de derivare de ordinsuperior sunt afectate, <strong>în</strong> anumite cazuri, de erori mari de trunchiere (mai ales laprelucrarea datelor experimentale). În acest caz se recomandă folosirea relaţiilor de ordinmic, cea mai indicată fiind relaţia cu diferenţe finite centrate de ordinul doi.Erorile care apar prin folosirea formulelor de derivare numerică depind de doi factori:• pasul de derivare h;• gradul polinomului de interpolare n.Pasul de derivare are o valoare optimă, finită, pentru care eroarea este minimă.Pentruh > h optim ,predominăeroarea de trunchiere,datoratătrunchieriiserieiTaylor.În general, eroarea de trunchiere are ordinul O(h n ), deci scade cu micşorarea pasului h şicreşterea gradului n.Pentru h < h optim , predomină eroarea de rotunjire cauzată de faptul că sistemul nupoate reţine decât un număr limitat de zecimale. Această eroare creşte pe măsura scăderiipasului h, datorită fenomenului de ”anulare prin scădere”.Pentru evaluarea erorii de trunchiere se foloseşte dezvoltarea <strong>în</strong> serie Taylor:f(x 1 ) = f(x 0 )+ h 1! f′ (x 0 )+ h22! f′′ (z), (7.15)de unde rezultă:f ′ (x 0 ) = f 1 −f 0− h h 2 f′′ (z) = g ′ (x 0 )+O(h), (7.16)deci o eroare de trunchiere O(h) pentru relaţia cu diferenţe finite de ordinul <strong>în</strong>tâi.Efort de calculTimpul de calcul creşte cu creşterea ordinului n al aproximării, fiind necesare n + 1evaluări ale funcţiei f pentru calculul primei derivate.Derivatele de ordin superior se pot calcula numeric prin aplicarea recursivă a formuleide derivare de ordinul <strong>în</strong>tâi, dar erorile sunt tot mai mari pentru derivatele de ordinsuperior, generând importante instabilităţi <strong>numerice</strong>.7.4 Pseudocodul metodei<strong>Metode</strong>le de derivare numerică se transpun uşor <strong>în</strong> orice limbaj de programare, datorităsimplităţii formulelor de calcul.Ca date de intrare pentru calculul derivatei funcţiei f sunt necesare doar:


7.4. Pseudocodul metodei 153• punctul x 0 (<strong>în</strong> care se calculează derivata);• pasul de derivare h (distanţa <strong>în</strong>tre două puncte ale reţelei de noduri).Dacă funcţia este dată tabelar, datele de intrare trebuie să fie completate cu:• tabelul nodurilor reţelei şi al valorilor funcţiei <strong>în</strong> aceste noduri.În cazul funcţiilor definite prin cod, calculul primei derivate prin metoda diferenţelorfinite progresive de ordinul 1 se poate face utilizând pseudocodul următor (care determinăautomat valoarea optimă a pasului de derivare ):funcţia derivare (x,h) ; derivează funcţia f <strong>în</strong> punctul x, cu pasul iniţial hreal xreal hnrit = 10 ; numărul maxim de iteraţii pentru; determinarea pasului optimerr = 1e-20 ; eroarea relativă de rotunjiref0 = f(x) ; valoarea funcţiei <strong>în</strong> punctul de derivaree = err(|f0|+err) ; eroarea absolută de rotunjirek = 0; contor iteraţiirepetak = k+1f1 = f(x+h)f2 = f(x+2h)d2 = |f0-2f1+f2|/h 2 ; modulul dublei derivatedacă d2 = 0 atuncih0 = haltfelh0 = sqrt(2e/d2) ; pasul optimr = h/h0 ; rata de modificare a pasuluih = h0 ; actualizează pasul la valoarea optimăpână când (k > nrit sau ( r < 2 şi r > 1/2))df = (f(x+h)-f0)/h ; derivata progresivă de ordinul 1<strong>în</strong>toarce dfAplicândfuncţiaderivarepentruvalori negative aleparametruluih, valoarea<strong>în</strong>toarsădf va fi derivata regresivă de ordinul 1. Derivata centrată se poate calcula ca mediaaritmetică a valorilor regresivă şi progresivă.În cazul funcţiilor tabelare, calculul derivatei admite următoarea reprezentare <strong>în</strong> pseudocod:


154 Capitolul 7. Derivarea numerică a funcţiilor realeprocedura derivtab (n, x0, h, f, df); calculează tabelul de derivare a funcţiei f,; dat prin vectorii x şi f, <strong>în</strong> n+1 puncte<strong>în</strong>treg n ; dimensiunea tablouluireal x0 ; nodul iniţialreal h; pasul reţeleitablou real f(n) ; tabloul valorilor funcţieitablou real df(n) ; tabloul valorilor derivatei (date de ieşire)df(0) = (-3f(0) + 4f(1) - f(2))/2hdf(n) = (f(n-2) - 4f(n-1) + 3f(n))/2hpentru i = 1, n-1df(i) = (f(i+1) - f(i-1))/2hretur7.5 Chestiuni de studiat1. Evaluarea numerică a primei derivate;2. Analiza experimentală a erorii de derivare numerică;3. Analiza derivării <strong>numerice</strong> de ordin superior;4. Implementarea algoritmului;5. Căutare de informaţii pe Internet.7.6 Modul de lucruPentru desfăşurarea lucrării selectaţi opţiunea Derivarea numerică a funcţiilor reale dinmeniul principal de lucrări. Aceasta are ca urmare lansarea următorului meniu:• Program demonstrativ• Analiza erorilor• Derivare de ordin superior


7.6. Modul de lucru 1557.6.1 Evaluarea numerică a primei derivateSe selectează din meniul principal opţiunea Program demonstrativ. Acest program calculeazăderivatele unor functii definite prin cod şi pune <strong>în</strong> evidenţă ordinul de mărimea erorilor ce apar, dependenţa acestora de modul de interpolare (progresivă, regresivă şicentrată), de pasul de derivare (valoare dată de utilizator şi valoare optimă, determinatăde program), de funcţia de derivat şi de punctul <strong>în</strong> care se calculează derivata.Utilizatorul alege:• funcţia de derivat;• punctul x0 <strong>în</strong> care se calculează derivata;• pasul de derivare h.Funcţia de derivat se poate alege din cele 6 funcţii afişate:• x 2• √ x• e x• ln(x)• sin(x)• tg(x)Programul afişează valoarea exactă a derivatei şi valorile aproximative calculate prindiferite metode şi erorile absolute (de rotunjire şi de trunchiere).Se vor comenta rezultatele obţinute şi se va studia eficienţa algoritmului de optimizarea pasului.7.6.2 Analiza experimentală a erorii de derivare numericăSe selectează opţiunea Analiza erorilor din meniul principal.Programul ilustrează dependenţa erorii de pasul de derivare folosit şi evidenţiază ponderilecelor două tipuri de erori (de rotunjire şi de trunchiere).Se folosesc succesiv formulele diferenţelor finite centrate de ordin 2, 4, respectiv 6, pentrucalculul derivatei funcţiei sinus <strong>în</strong> punctul π/4. Se poate observa, astfel, şi dependenţa


156 Capitolul 7. Derivarea numerică a funcţiilor realeordinului de mărime al erorilor de ordinul polinomului de interpolare. Graficele sunt afişte<strong>în</strong> scară dublu-logaritmică, pentru a se putea vizualiza <strong>în</strong> amănunt tot intervalul ”activ”al variaţiei erorilor.După afişarea unui grafic, <strong>în</strong> consola Scilab se afişează eroarea minimă şi pasul pentrucare este obţinută. Se va estima din grafic valorea pasului optim şi ordinul erorii detrunchiere <strong>în</strong> funcţie de pasul de derivare.Se vor analiza şi comenta rezultatele obţinute.7.6.3 Analiza derivării <strong>numerice</strong> de ordin superiorSe selectează opţiunea Derivare de ordin superior. Programul calculează şi reprezintăgrafic derivatele succesive de ordin superior ale funcţiei exponenţiale exp(x), definite peintervalul [Xmin,Xmax]. Se afişează de fiecare dată şi graficul exact al derivatei respective,care este tot exp(x).Datele de intrare ale programului sunt:• ordinul maxim al derivatei de reprezentat;• X minim;• X maxim;• numărul de noduri.Programul evaluează derivatele <strong>în</strong> punctele interioare ale reţelei cu metoda diferenţelorfinite centrate de ordinul 2, iar pentru punctele periferice foloseşte metoda diferenţelorfinite progresive respectiv regresive de ordinul 3.Se recomandă analiza propagării erorilor la calculul până la ordinul 5, pe o reţea cu 100de noduri ce discretizează intervalul [0, 10], precum şi intervalul [0, 1]. Se vor comentacomparativ rezultatele obţinute.7.6.4 Implementarea algoritmuluiSe va scrie, <strong>în</strong> limbajul de programare C, o funcţie care să permită calculul numeric alderivatei <strong>în</strong>tâi, prin metoda diferenţelor finite centrate pentruf(x) = x2sin(x) ln(x).Folosind această funcţie, se va scrie apoi un program care să aibă ca date de intrare pasulde derivare şi punctul <strong>în</strong> care se calculează derivata şi care să afişeze valorile <strong>numerice</strong> alederivatei.


7.7. Exemple 1577.6.5 Căutare de informaţii pe InternetCăutaţi pe Internet informaţii şi coduri legate de derivarea numerică a funcţiilor. Cuvintecheie recomandate: numerical derivative.7.7 Exemple7.7.1 Exemple rezolvate1. Fie funcţia y = f(x) definită tabelar:x 1 2 3 4y 2 1 3 5Să se determine derivata funcţiei <strong>în</strong> nodurile reţelei de discretizare utilizând diferenţelefinite astfel: formulele progresivă şi regresivă de ordinul <strong>în</strong>tâi pentru primulşi respectiv ultimul nod, formula centrată de ordinul doi pentru nodurile interioare.Rezolvare:Reţeaua de discretizare este uniformă cu pasul h = x 1 −x 0 = 2−1 = 1.Derivata progresivă (7.10) şi derivata regresivă (7.11) de ordinul <strong>în</strong>tâi <strong>în</strong> primul nodşi respectiv ultimul nod sunt:y ′ 0 = y 1 −y 0h= 1−21= −1,y ′ 3 = y 3 −y 2h= 5−31= 2.Derivatele centrate de ordinul doi (7.8) <strong>în</strong> nodurile interioare sunt:y ′ 1 = y 2 −y 02hy ′ 2 = y 3 −y 12h2. Fie funcţia y = f(x) definită tabelar:= 3−22= 5−12= 1 2 ,= 2.x 1 3 5y 4 7 10


158 Capitolul 7. Derivarea numerică a funcţiilor realeSă se determine derivata funcţiei <strong>în</strong> nodurile reţelei de discretizare utilizând diferenţelefinite astfel: formulele progresivă şi regresivă de ordinul <strong>în</strong>tâi pentru primulşi respectiv ultimul nod, formula centrată de ordinul doi pentru nodul interior.Rezolvare:Reţeaua de discretizare este uniformă cu pasul h = x 1 −x 0 = 3−1 = 2.Derivata progresivă (7.10) şi derivata regresivă (7.11) de ordinul <strong>în</strong>tâi <strong>în</strong> primul nodşi respectiv ultimul nod sunt:y ′ 0 = y 1 −y 0hy ′ 2 = y 2 −y 1h= 7−42= 10−72= 3 2 ,= 3 2 .Derivata centrată de ordinul doi (7.8) <strong>în</strong> nodul interior este:y ′ 1 = y 2 −y 02h= 10−44= 3 2 .Cele trei derivate sunt egale deoarece punctele din tabel sunt plasate pe o dreaptă.3. Fie funcţia y = f(x) definită tabelar:x 1 3 5 7 9y 3 1 2 4 1Să se determine derivata funcţiei <strong>în</strong> nodurile reţelei de discretizare utilizând diferenţelefinite astfel: formulele progresivă şi regresivă de ordinul doi pentru primulşi respectiv ultimul nod, formula centrată de ordinul doi pentru nodurile interioare.Rezolvare:Reţeaua de discretizare este uniformă cu pasul h = x 1 −x 0 = 3−1 = 2.Derivata progresivă (7.7) şi derivata regresivă (7.9) de ordinul doi <strong>în</strong> primul nod şirespectiv ultimul nod sunt:y ′ 0 = −3y 0 +4y 1 −y 22hy ′ 4 = y 2 −4y 3 +3y 42h= −9+4−24= 2−16+34= − 7 4 ,= − 114 .Derivatele centrate de ordinul doi (7.8) <strong>în</strong> nodurile interioare sunt:y ′ 1 = y 2 −y 02hy ′ 2 = y 3 −y 12hy ′ 3 = y 4 −y 22h= 2−34= 4−14= 1−24= − 1 4 ,= 3 4 ,= − 1 4 .


7.8. Probleme şi <strong>în</strong>trebări 1594. Să se estimeze ordinul de mărime al pasului de derivare optim pentru evaluareanumerică a derivatei funcţiei sinx cu o formulă de derivare progresivă de ordinul 1.Rezolvare:Formula de calcul a pasului optim este:√ε0 M 0h optim = 2 .M 2În cazul funcţiei sinus, M 0 = M 2 = 1. Considerând ε 0 = 10 −16 , rezultă un pas dederivare optim de ordinul h optim = 2·10 −8 .7.7.2 Exemple propuse1. Fie funcţia y = f(x) definită tabelar:x 1 3 5 7y 1 2 4 1Să se determine derivata funcţiei <strong>în</strong> nodurile reţelei de discretizare utilizând diferenţelefinite astfel: formulele progresivă şi regresivă de ordinul <strong>în</strong>tâi pentru primulşi respectiv ultimul nod, formula centrată de ordinul doi pentru nodurile interioare.2. Fie funcţia y = f(x) definită tabelar:x 1 2 3 4 5y 1 4 2 3 5Să se determine derivata funcţiei <strong>în</strong> nodurile reţelei de discretizare utilizând diferenţelefinite astfel: formulele progresivă şi regresivă de ordinul doi pentru primulşi respectiv ultimul nod, formula centrată de ordinul doi pentru nodurile interioare.7.8 Probleme şi <strong>în</strong>trebări1. Deduceţi formulele aproximative ale derivatelor centrate până la ordinul 4.2. Determinaţi expresia Laplaceanului funcţiei f(x,y), folosind diferenţele finite centratede ordinul 2. Calculaţi valoarea Laplaceanului <strong>în</strong> punctul x = 1,y = 1, pentrufuncţia:f(x,y) = x 3 y 3folosind formula obţinută şi evaluaţi eroarea.


160 Capitolul 7. Derivarea numerică a funcţiilor reale3. Determinaţi expresiile aproximative centrate de ordinul 2 ale derivatelor <strong>în</strong>tâi şi adoua, <strong>în</strong> cazul <strong>în</strong> care pasul de derivare nu este constant. Se vor folosi notaţiile:x(i)−x(i−1) = hx(i+k)−x(i) = kh<strong>în</strong> care se presupun cunoscute: h,k,f(x(i−1)),f(x(i)),f(x(i+k)).4. Deduceţi ordinul de mărime al erorii maxime <strong>în</strong> cazul aproximării centrate, progresiveşi regresive de ordin n.5. Evaluaţi ordinul erorii de rotunjire la metodele diferenţelor finite de ordinul 1 şiordinul 2. Analizaţi dependenţa acestor erori de pasul h.6. Argumentaţialgoritmulpentrudeterminareapasuluioptim,folosit<strong>în</strong>funcţiaderivare,prezentată <strong>în</strong> pseudocod.7. Generaţi un algoritm pentru determinarea pasului optim la diferenţe centrate.8. Generaţi un algoritm pentru derivarea funcţiilor definite tabelar pe reţele neuniforme.


Lucrarea 8Integrarea numerică a funcţiilor reale8.1 Caracterizarea metodelor de integrare numericăIntegrarea numerică se aplică funcţiilor care nu pot fi integrate analitic (sau ar necesitacalcule complicate) sau <strong>în</strong> cazul funcţiilor date tabelar, de exemplu cele rezultateexperimental.În general, metodele de integrare numerică se bazează pe aproximarea funcţiei deintegrat prin functii mai simple, a căror integrală se poate evalua uşor. O metodă deaproximare frecvent utilizată <strong>în</strong> cadrul integralelor este metoda interpolării polinomialepe porţiuni.Spredeosebiredederivareanumerică, integrareaesteooperaţierelativstabilănumeric,dar mai lentă, din cauza numărului sporit de calcule care trebuie efectuate.8.2 Principiul metodeiSe consideră funcţia reală f : [a,b] → IR, definită prin cod sau tabelar, <strong>în</strong>tr-o reţea den+1 noduri: x 0 ,x 1 ,...x n . Se formulează problema calculului integralei:Metoda trapezelorI =∫ baf(x)dx. (8.1)Este una dintre cele mai simple metode de integrare numerică, cu rezultate bune <strong>în</strong>aplicaţiile inginereşti.Pe o reţea de n+1 noduri echidistante, pasul reţelei are valoareah = x n −x 0. (8.2)n161


162 Capitolul 8. Integrarea numerică a funcţiilor realeMetoda se bazează pe aproximarea variaţiei funcţiei de integrat <strong>în</strong>tre două nodurisuccesive ale reţelei printr-un polinom de gradul <strong>în</strong>tâi (o dreaptă). Aceasta echivalează cuaproximarea ariei sub<strong>în</strong>tinse de graficul funcţiei <strong>în</strong>tre două noduri succesive (i şi i+1), cuaria trapezului ”sprijinit” de axa Ox, determinat de abscisele x i ,x i+1 şi ordonatele f(x i )si f(x i+1 ). Prin <strong>în</strong>sumarea ariilor tuturor trapezelor de acest fel care se formează <strong>în</strong>trepunctele a şi b, se obţine valoarea aproximativă a integralei definite a lui f, <strong>în</strong>tre acestepuncte.Aria unui trapez esteI i = h(f(x i)+f(x i+1 )). (8.3)2Rezultă, prin <strong>în</strong>sumare pentru i = 0,...,n − 1, formula de integrare prin metodatrapezelor:I =∫ bMetoda Simpson 1/3af(x)dx ≈ h 2 (f(x 0)+2f(x 1 )+...+2f(x n−1 )+f(x n )). (8.4)Se aproximează variaţia funcţiei de integrat <strong>în</strong>tre trei noduri succesive (i−1,i,i+1),printr-un polinom de interpolare de gradul doi: P(x) = a 0 +a 1 x+a 2 x 2 (o parabolă).Presupunănd aceeaşi reţea de n+1 noduri echidistante, dar cu n par, şi considerândoriginea <strong>în</strong> punctul x i , se poate scrie:f(x i−1 ) = P(−h) = a 0 −a 1 h+a 2 h 2 ,f(x i ) = P(0) = a 0 , (8.5)f(x i+1 = P(h) = a 0 +a 1 h+a 2 h 2 .Aşadar, se aproximează aria sub<strong>în</strong>tinsă de funcţia de integrat <strong>în</strong>tre punctele x i−1 şix i+1 cu aria sub<strong>în</strong>tinsă de parabola P dintre punctele −h şi h:I i =∫ h−hP(x)dx =∫ h−hDin condiţiile de interpolare se calculează:necesare <strong>în</strong> evaluarea integralei(a 0 +a 1 x+a 2 x 2 )dx = 2ha 0 +2 h33 a 2. (8.6)a 0 = f(x i ); (8.7)a 2 = f(x i−1)−2f(x i )+f(x i+1 )2h 2 (8.8)I i = h(f(x i−1)+4f(x i )+f(x i+1 )). (8.9)3


8.2. Principiul metodei 163Însumând toate ariile I i , pentru i = 1,3,5,...,n−1, rezultăI =∫ baf(x)dx ≈ h 3 (f(x 0)+4f(x 1 )+2f(x 2 )+4f(x 3 )+···+f(x n )), (8.10)cunoscută sub numele de Formula lui Simpson 1/3.Integrarea RombergValoarea numerică a integralei depinde de pasul de integrare h, eroarea de trunchierescăzând cu micşorarea pasului h. Se notează cu I 0 valoarea exactă a integralei şi cuI = I(h)valoareaeinumerică. DeoarecefuncţiaI(h)estepară(trapezeleobţinuteporninddinacupasulhsuntaceleaşicuceleobţinuteporninddinbcupasul−h), prindezvoltareaei in serie Taylor <strong>în</strong> jurul lui 0 se obţine, <strong>în</strong> cazul metodei trapezelor:I = I 0 +a 0 h 2 +a 1 h 4 +a 2 h 6 +... (8.11)Reţinând din această serie numai doi termeni, se obţin pentru două valori diferite h 1 sih 2 ale pasului de integrare:I 1 = I 0 +a 0 h 2 1;I 2 = I 0 +a 0 h 2 2.Din cele două ecuaţii rezultă următoarea aproximare pentru valoarea exactă a integralei:cunoscută sub numele de formula de integrare Romberg.I 0 = h2 2I 1 −h 2 1I 2, (8.12)h 2 2 −h 2 1Reducând succesiv valoarea lui h: h 1 > h 2 > h 3 > ... > h k ... , se obţin valorileintegralei <strong>numerice</strong>:care au precizie din ce <strong>în</strong> ce mai bună.I 0k = h2 k+1 I k −h 2 k I k+1, k = 1,2,..., (8.13)h 2 k+1 −h2 kFormula lui Romberg se simplifică, dacă la fiecare iteraţie se <strong>în</strong>jumătăţeşte pasul deintegrare (h k+1 = h k /2):I 0k = 4I k+1 −I k. (8.14)3Valorile <strong>numerice</strong> ale integralelor I 01 ,I 02 ,I 03 ,..., calculate pe reţele tot mai fine, pot fifolosite pentru calculul unei valori <strong>numerice</strong> de precizie ridicată, prin aplicarea recursivăa formulei Romberg:• Nr. intervale: n 2n 4n ...• Met. trapezelor: I 01 I 02 I 03 ...


164 Capitolul 8. Integrarea numerică a funcţiilor reale• Romberg ord. 1: I 11 = 4I 02−I 013I 12 = 4I 03−I 023...• Romberg ord. 2: I 21 = 16I 12−I 1115...În general, formula lui Romberg de ordinul k pentru <strong>în</strong>jumătăţirea pasului esteI mk = 4m I m−1,k+1 −I m−1,k, (8.15)4 m −1cu k = 1,2,... şi m = 1,2,.... Iteraţiile se pot opri pentru acel ordin m, la care eroarearelativă∣ ∣ ∣∣∣ I mk −I m−1,k∣∣∣este mai mică decât o valoare impusă.I mk8.3 Pseudocodul algoritmilorÎn cazul funcţiilor definite prin cod, metoda trapezelor are următorul pseudocod:funcţia trapez (a,b,n) ; calculează integrala definită a; funcţiei f in intervalul [a,b],; discretizat in n subintervale; egalereal a,b<strong>în</strong>treg nh = (b−a)/nrezultat = 0pentru k = 1,n−1rezultat = rezultat+f(a+kh)rezultat=(2· rezultat +f(a)+f(b))∗h/2<strong>în</strong>toarce rezultatPseudocodul metodei Simpson, pentru funcţiile definite tabelar, are forma:citeşte a,bciteşte npentru k = 0,nciteşte y kh = (b−a)/nrezultat = 0; limitele de integrare; trebuie să fie par; valorile funcţiei <strong>în</strong> nodurile reţelei


8.4. Analiza algoritmilor 165pentru k = 1,n−1,2rezultat = rezultat +y k−1 +4y k +y k+1rezultat = rezultat ·h/3scrie rezultatPseudocodul metodei Romberg este:citeşte a,bciteşte nciteşte epsrezultat nou = trapez (a,b,n)repetărezultat vechi = rezultat noun = 2nrezultat nou = trapez (a,b,n)rezultat = (4· rezultat nou - rezultat vechi)/3pană când (|rezultat - rezultat vechi|)


166 Capitolul 8. Integrarea numerică a funcţiilor realeMetoda trapezelor e mai flexibilă, deoarece foloseşte o reţea cu număr oarecare denoduri, spre deosebire de metoda Simpson, care necesită un număr impar de noduri.Aceasta din urmă este <strong>în</strong>să mai precisă.MetodaRombergesteceamaiexactă, darşiceamailentă, necesitândunnumărrelativmic de iteraţii, <strong>în</strong>să la fiecare iteraţie reţeaua de noduri se <strong>în</strong>deseşte de două ori.8.5 Chestiuni de studiat1. Calculul numeric al integralei definite, pentru câteva funcţii elementare;2. Analiza experimentală a erorii la integrarea numerică;3. Implementarea algoritmului;4. Căutarea de informaţii pe Internet.8.6 Modul de lucruPentru desfăşurarea lucrării se selectează lucrarea Integrarea numerică a funcţiilor realedin meniul general de lucrări.Aceasta are ca efect afişarea meniului:1. Program demonstrativ2. Analiza erorilor8.6.1 Calculul integralei unor funcţii elementareÎn urma selectării opţiunii Program demonstrativ, se poate alege una din funcţiile:• x 2• √ x• e x• ln(x)• sin(x)• tg(x)


8.6. Modul de lucru 167După alegerea unei funcţii, utilizatorul trebuie să introducă:• limitele inferioară şi superioară ale intervalului de integrare;• numărul subintervalelor <strong>în</strong> care se împarte intervalul de integrare.După efectuarea calculelor, se trasează graficul funcţiei pe domeniul de integrare,punându-se <strong>în</strong> evidenţă trapezele corespunzătoare acestui domeniu.În consola Scilab se afişează rezultatele:• valoarea exactă a integralei definite;• valoarea aproximativă şi modulul erorii absolute.Se vor comenta rezultatele obţinute.8.6.2 Analiza erorii la integrarea numericăSe selectează Analiza erorilor din meniul principal al lucrării. Programul ilustrează graficdependenţa modulului erorilor absolute de pasul de integrare h. Se folosesc, pe rând,metodele:• trapezelor• Simpson• Romberg cu 2 iteraţii• Romberg cu 3 iteraţiipentru calculul integralei funcţiei sinus <strong>în</strong>tre punctele 0 şi π.Se vor analiza şi comenta rezultatele obţinute. Se va estima ordinul erorii de trunchierepentru toate cele patru cazuri.8.6.3 Implementarea algoritmuluiSe va scrie <strong>în</strong> limbajul de programare C, un program care să permita calculul integraleidefinite a funcţiei f(x) = x 2 sin(x), folosind metoda Simpson 1/3. Datele de intrare aleprogramului vor fi cele două limite de integrare.


168 Capitolul 8. Integrarea numerică a funcţiilor reale8.6.4 Căutare de informaţii pe InternetSevorcăutapeInternetinformaţii(coduri)legatedeintegrareanumericăafuncţiilor. Cuvintecheie recomandate: Numerical Integration, Numerical Quadrature, Gauss Quadrature.8.7 Exemple8.7.1 Exemple rezolvate1. Fie funcţia f : [1,5] → IR, y = f(x), definită tabelar:Se cer:x 1 2 4 5y 2 1 3 5(a) Reprezentaţi grafic interpolarea liniară pe porţiuni a acestor date.(b) Câte trapeze se consideră <strong>în</strong> urma aplicării metodei trapezelor pentru determinareaintegralei funcţiei f(x) pe intervalul [1,5]? Indicaţi grafic acestetrapeze pe figura de la punctul precedent.(c) Reţeaua de discretizare a domeniului de definiţie a funcţiei f(x) este neuniformă?(d) Să se determine integrala I =∫ 51f(x)dx prin metoda trapezelor.(e) Se poate aplica metoda Simpson 1/3? Dacă răspunsul este afirmativ, să seRezolvare:(a)determine I =∫ 51f(x)dx prin această metodă.În figura 9 este reprezentată grafic interpolarea liniară pe porţiuni a funcţieiy = f(x).(b) Funcţia f(x) este cunoscută <strong>în</strong> 4 puncte (3 segmente). Astfel, numărul detrapeze considerat este 3. Cele trei trapeze sunt haşurate diferit <strong>în</strong> figura 9.(c) O reţea de discretizare x k , k = 0,n este uniformă dacă pasul de discretizarecorespunzător unui segment, h k = x k −x k−1 , k = 1,n, este constant, indiferentde segmentul k considerat. În cazul acestui exemplu, avem:h 1 = x 1 −x 0 = 2−1 = 1,


8.7. Exemple 169y01000000 1115111000 1114000 111000 1110000011111010000 111130000011111000 11100000111110000011111000 11120100000111110000011111000 1110000011111000001111100 111000 111000 1110000 111100011000011110000 1 200001111 3 4 5 xFig. 9. Interpolarea liniară pe porţiuni a funcţiei fh 2 = x 2 −x 1 = 4−2 = 2,h 3 = x 3 −x 2 = 5−4 = 1.Deoarece pasul nu este constant pe <strong>în</strong>treg domeniul de definiţie, reţeaua dediscretizare este neuniformă.(d) Aria primului trapez (8.3) este:I 0 = y 0 +y 1(x 1 −x 0 ) = 2+12 2 (2−1) = 3 2 .În mod similar se determină ariile celorlalte două trapeze:I 1 = y 1 +y 22I 2 = y 2 +y 32(x 2 −x 1 ) = 1+3 (4−2) = 4,2(x 3 −x 2 ) = 3+5 (5−4) = 4.2Integrala prin metoda trapezelor se obţine prin <strong>în</strong>sumarea ariilor trapezelor:I =∫ 51f(x)dx = I 0 +I 1 +I 2 = 3 2+4+4 =192 .(e) MetodaSimpson1/3sepoateaplicanumaicândnumăruldenoduriesteimpar.Pentru cazul dat, numărul de noduri este 4, şi <strong>în</strong> consecinţă, metoda Simpson1/3 nu se poate aplica.2. Fie funcţia f : [1,5] → IR, y = f(x), definită tabelar:


170 Capitolul 8. Integrarea numerică a funcţiilor realey5432000 111 0000 1111110001000 1110000 1111000 1110000 1111000 11101000 111000 1110000 1111000 111000 111000 1110000 1111000 111000 111000 111 010000 1111000 11101 00 11 0000 1111 000 111000 111000 11100 11 0000 1111 000 111000 111000 11101 00 11 0000 1111 000 111000 111100 11 000 111 0000 1111 000 11100 11 000 111 0000 1111 000 1110 1 2 3 4 5 xFig. 10. Interpolarea liniară pe porţiuni a funcţiei fSe cer:x 1 2 3 4 5y 2 1 5 3 4(a) Reprezentaţi grafic interpolarea liniară pe porţiuni a acestor date.(b) Câte trapeze se consideră <strong>în</strong> urma aplicării metodei trapezelor pentru determinareaintegralei funcţiei f(x) pe intervalul [1,5]? Indicaţi grafic acestetrapeze pe figura de la punctul precedent.(c) Reţeaua de discretizare a domeniului de definiţie a funcţiei f(x) este neuniformă?(d) Să se determine integrala I =∫ 51f(x)dx prin metoda trapezelor.(e) Se poate aplica metoda Simpson 1/3? Dacă răspunsul este afirmativ, să seRezolvare:(a)determine I =∫ 51f(x)dx prin această metodă.În figura 10 este reprezentată grafic interpolarea liniară pe porţiuni a funcţieiy = f(x).(b) Deoarece gridul de discretizare al domeniului de definiţie conţine 5 puncte,determinând o împărţire <strong>în</strong> 4 segmente, numărul de trapeze considerat este 4.Trapezele sunt haşurate diferit <strong>în</strong> figura 10.


8.7. Exemple 171(c) Seobservăcăpasuldediscretizarecorespunzătorfiecăruisegmentesteconstantpe <strong>în</strong>treg domeniul de definiţie, h = 1. Din acest motiv, reţeaua este uniformă.(d) Deoarece pasul este constant, se poate aplica direct formula simplificată pentrureţea uniformă a metodei trapezelor (8.4):I =∫ 51f(x)dx = h 2 (y 0+2y 1 +2y 2 +2y 3 +y 4 ) = 1 (2+2·1+2·5+2·3+4) = 12.2Alternativ, se pot <strong>în</strong>suma cele 4 arii ale trapezelor pentru determinarea integralei<strong>numerice</strong>.(e) Metoda Simpson 1/3 se poate aplica deoarece numărul de noduri este impar(5).Deoarece reţeaua de discretizare este uniformă, se aplică formula (8.10):I =∫ 51f(x)dx = h 3 (y 0+4y 1 +2y 2 +4y 3 +y 4 ) = 1 32(2+4·1+2·5+4·3+4) =3 3 .3. Fie funcţia f : [1,11] → IR, y = f(x), definită tabelar:x 1 3 5 6 7 9 11y 2 3 4 1 5 2 3Se cer:(a) Câte trapeze se consideră <strong>în</strong> urma aplicării metodei trapezelor pentru determinareaintegralei funcţiei f(x) pe intervalul [1,11]?(b) Reţeaua de discretizare a domeniului de definiţie a funcţiei f(x) este neuniformă?(c) Să se determine integrala I =∫ 111f(x)dx prin metoda trapezelor.(d) Se poate aplica metoda Simpson 1/3? Dacă răspunsul este afirmativ, să seRezolvare:determine I =∫ 111f(x)dx prin această metodă(a) Funcţia f(x) este cunoscută <strong>în</strong> 7 puncte. Acestea determină 6 segmente, carediscretizează domeniul de definiţie [1,11]. Numărul de trapeze considerat este6, egal cu numărul de segmente.


172 Capitolul 8. Integrarea numerică a funcţiilor reale(b) Se observă că pasul de discretizare nu este constant pe fiecare segment:h 1 = x 1 −x 0 = 3−1 = 2, h 3 = x 3 −x 2 = 6−5 = 1.Astfel, reţeaua de discretizare este neuniformă.(c) Integrala prin metoda trapezelor, pentru o reţea neuniformă, se determină prin<strong>în</strong>sumarea ariilor trapezelor:I =∫ 111f(x)dx = y 0 +y 12+ y 3 +y 42= 2+32(x 1 −x 0 )+ y 1 +y 22(x 4 −x 3 )+ y 4 +y 52(3−1)+3+42(x 2 −x 1 )+ y 2 +y 3(x 3 −x 2 )+2(x 5 −x 4 )+ y 5 +y 6(x 6 −x 5 ) =24+1 1+5(5−3)+ (6−5)+2 2 (7−6)++ 5+2 2+3(9−7)+2 2 (11−9) = 5+7+ 5 59+3+7+5 =2 2 .(d) Metoda Simpson 1/3 se poate aplica deoarece numărul de noduri este impar(7).Reţeaua este neuniformă, astfel integrala prin metoda Simpson 1/3 se determinăprin <strong>în</strong>sumarea ariilor suprafeţelor sub<strong>în</strong>tinse de parabolele care trec printrei noduri consecutive (8.9). În total, sunt trei parabole: [x 0 ,x 1 ,x 2 ] (pasuleste 2), [x 2 ,x 3 ,x 4 ] (pasul este 1), [x 4 ,x 5 ,x 6 ] (pasul este 2).I 1 = h 13 (y 0 +4y 1 +y 2 ) = 2 (2+4·3+4) = 12,3I 3 = h 33 (y 2 +4y 3 +y 4 ) = 1 13(4+4·1+5) =3 3 ,I 5 = h 53 (y 4 +4y 5 +y 6 ) = 2 32(5+4·2+3) =3 3 .I =∫ 111f(x)dx = I 1 +I 3 +I 5 = 12+ 133 + 32 3 = 27.8.7.2 Exemple propuse1. Fie funcţia f : [1,6] → IR, y = f(x), definită tabelar:Se cer:x 1 2 4 6y 1 3 2 4


8.7. Exemple 173(a) Reprezentaţi grafic interpolarea liniară pe porţiuni a acestor date.(b) Câte trapeze se consideră <strong>în</strong> urma aplicării metodei trapezelor pentru determinareaintegralei funcţiei f(x) pe intervalul [1,6]? Indicaţi grafic acestetrapeze pe figura de la punctul precedent.(c) Reţeaua de discretizare a domeniului de definiţie a funcţiei f(x) este neuniformă?(d) Să se determine integrala I =∫ 61f(x)dx prin metoda trapezelor.(e) Se poate aplica metoda Simpson 1/3? Dacă răspunsul este afirmativ, să sedetermine I =∫ 61f(x)dx prin această metodă.2. Fie funcţia f : [1,13] → IR, y = f(x), definită tabelar:Se cer:x 1 3 5 7 9 11 13y 1 4 2 3 1 2 5(a) Reprezentaţi grafic interpolarea liniară pe porţiuni a acestor date.(b) Câte trapeze se consideră <strong>în</strong> urma aplicării metodei trapezelor pentru determinareaintegralei funcţiei f(x) pe intervalul [1,13]? Indicaţi grafic acestetrapeze pe figura de la punctul precedent.(c) Reţeaua de discretizare a domeniului de definiţie a funcţiei f(x) este neuniformă?(d) Să se determine integrala I =∫131f(x)dx prin metoda trapezelor.(e) Se poate aplica metoda Simpson 1/3? Dacă răspunsul este afirmativ, să se∫13determine I = f(x)dx prin această metodă.13. Fie funcţia f : [1,7] → IR, y = f(x), definită tabelar:Se cer:x 1 2 3 5 7y 3 1 2 3 4(a) Reprezentaţi grafic interpolarea liniară pe porţiuni a acestor date.(b) Câte trapeze se consideră <strong>în</strong> urma aplicării metodei trapezelor pentru determinareaintegralei funcţiei f(x) pe intervalul [1,7]? Indicaţi grafic acestetrapeze pe figura de la punctul precedent.


174 Capitolul 8. Integrarea numerică a funcţiilor reale(c) Reţeaua de discretizare a domeniului de definiţie a funcţiei f(x) este neuniformă?(d) Să se determine integrala I =∫ 71f(x)dx prin metoda trapezelor.(e) Se poate aplica metoda Simpson 1/3? Dacă răspunsul este afirmativ, să sedetermine I =∫ 71f(x)dx prin această metodă.8.8 Probleme şi <strong>în</strong>trebări1. Generaţi algoritmul metodei dreptunghiurilor, bazat pe aproximarea funcţiei deintegrat printr-o funcţie ”scară”. Comparaţi precizia acestei metode cu metodatrapezelor. Analizaţi cazul unei funcţii la care derivata a doua îşi păstrează semnulpe intervalul de integrare.2. Generaţi algoritmul metodei trapezelor pentru o funcţie definită tabelar, pe o reţeacu pas variabil. Aplicati algoritmul pentru datele de mai jos:x 1 7 9y 5 13 153. Demonstraţi expresia ordinului erorii locale la metoda trapezelor.4. Calculaţi integrala următoare, folosind metoda trapezelor şi h x = h y = 1 :Comparaţi cu rezultatul exact.I =∫ 3 ∫ 200xydxdy.5. Obţineţi formula Simpson 3/8, folosind un polinom de interpolare de ordinul 3. Cerestricţie trebuie să <strong>în</strong>deplinească numărul de subintervale al reţelei de discretizare?6. Generaţiunalgoritmdeintegrarenumerică, bazatpeinterpolarea”spline”afuncţieide integrat.7. Generaţiunalgoritmdeintegrarenumerică,bazatpepseudocodulmetodeiSimpson,dedicat funcţiilor definite prin cod. Modificaţi acest algoritm astfel <strong>în</strong>cât să fieefectuat un număr minim de evaluări.8. Generaţi un algoritm pentru calculul integralei duble: ∫ ∫ f(x,y)dxdy pe un dreptunghidiscretizat cu o reţea cu doi paşi constanţi h x şi respectiv h y .


8.8. Probleme şi <strong>în</strong>trebări 1759. Generaţi un algoritm (metoda de integrare Gauss), bazat pe aproximarea∫ 1−1f(x)dx = ω 0 f(x 0 )+ω 1 f(x 1 )+ω 2 f(x 2 ).Alegeţi ponderile ω 0 , ω 1 , ω 2 şi nodurile x 0 , x 1 , x 2 <strong>în</strong> mod optim, astfel <strong>în</strong>câteroarea să fie minimă. Demonstraţi că pentru: x 1 = 0, x 2 = −x 0 = 3/5 şi ω 1 = 8/9,ω 0 = ω 2 = 5/9 formula anterioară este exactă dacă f(x) este un polinom de gradul5.10. Generaţi un algoritm de integrare numerică prin metoda trapezelor, la care reţeauade noduri este adaptată funcţiei. Pornind de la o reţea cu pas constant se vorîmbunătăţi succesiv acele subintervale pentru care eroarea locală de trunchieree = h2 ∂ 2 f(z), (8.16)12 ∂z 2cu z <strong>în</strong> subinterval, este maximă. Procesul de rafinare a reţelei va continua pânăcând eroarea totală de trunchiere scade sub o limită impusă.11. Calculaţi numeric integrala definită a unor funcţii date prin expresiile lor analitice<strong>în</strong> mediul MATLAB/SCILAB.12. Identificaţi<strong>în</strong>bibliotecamatematicădescrisă<strong>în</strong>[2]funcţiiavansatepentruintegrareanumerică. Ce aduc nou aceste funcţii faţă de cele analizate <strong>în</strong> lucrare?


176 Capitolul 8. Integrarea numerică a funcţiilor realeThomas Simpson (1710, Anglia - 1761, Anglia)http://www-gap.dcs.st-and.ac.uk/ history/Mathematicians/Simpson.htmlLewis Fry Richardson (1881, Anglia - 1953, Scoţia)http://www-gap.dcs.st-and.ac.uk/ history/Mathematicians/Richardson.html


Lucrarea 9Rezolvarea numerică prin metodeiterative a ecuaţiilor neliniare9.1 Caracterizarea lucrăriiRezolvarea numerică a unei ecuaţii algebrice neliniare sau transcendente f(x) = 0 constă<strong>în</strong> construirea unui şir x 0 ,x 1 ,x 2 ,...,x k ,... convergent către solutia x a ecuaţiei considerate.Se adoptă drept soluţie numerică un termen x k al şirului suficient de apropiat delimita x.Modul <strong>în</strong> care este generat şirul determină calităţile metodei (viteza de convergenţă,eroare numerică, efort de calcul, etc.). De obicei şirul este definit recurent, iar procesuliterativ se opreşte atunci când distanţa dintre doi termeni succesivi devine suficient demică sau |f(x)| este neglijabil.9.2 Principiul lucrăriiSe consideră o ecuaţie neliniară:f(x) = 0, (9.1)<strong>în</strong> care f este o funcţie continuă definită pe intervalul [a,b] cu valori <strong>în</strong> IR, iar x este soluţiaexactă a ecuaţiei (presupunând că există un x astfel <strong>în</strong>cât a < x < b şi acesta este unic).Pentru determinarea numerică a soluţiei x se construieşte un şir x 0 ,x 1 ,...,x k ,... convergentcătre soluţia exactă x a ecuaţiei. Termenul x k al şirului se determină <strong>în</strong> modrecurent:x k = g(x k−1 ), (9.2)177


178 Capitolul 9. Rezolvarea numerică prin metode iterative a ecuaţiilor neliniare<strong>în</strong> funcţie de termenul precedent. Iteraţiile se opresc atunci când distanţa dintre doitermeni succesivi |x k − x k−1 | este mai mică decât o valoare impusă ε. Se presupunecă valoarea x k astfel obţinută este o aproximare suficient de bună a soluţiei exacte şi seadoptă ca soluţie numerică. În consecinţă, metoda iterativă este caracterizată prin funcţiade iteraţie g, care trebuie aleasă astfel <strong>în</strong>cât punctul ei fix x = g(x) să coincidă cu soluţiaecuaţiei f(x) = 0.Metoda bisecţieiUna din cele mai simple metode iterative pentru rezolvarea unei ecuaţii neliniare, darcare nu se bazează pe construcţia unei funcţii de iteraţie, este metoda bisecţiei, care sebazează pe observaţia că f(x) are semne diferite la capetele intervalului [a,b], <strong>în</strong> interiorulcăruia se determină soluţia, deci f(a)f(b) < 0. Considerând x m = (a + b)/2, se va<strong>în</strong>jumătăţi intervalul [a,b] şi se va selecta din cele două subintervale acela care conţinesoluţia. Pentru aceasta se determină semnul valorii f(x m ) şi se modifică a = x m saub = x m <strong>în</strong> funcţie de acest semn, astfel <strong>în</strong>cât f(a)f(b) < 0. Şirul valorilor succesive ale luix m este convergent către soluţia exactă x. Procedura iterativă de <strong>în</strong>jumătăţire se opreşteatunci când lungimea intervalului |b−a| devine mai mică decât eroarea impusă solutiei.Metoda iteraţiei simpleO altă variantă a metodei iterative este cunoscută sub numele de metoda iteraţieisimple. Ea constă <strong>în</strong> transformarea ecuaţiei f(x) = 0 <strong>în</strong>tr-o ecuaţie de forma x = g(x),de exemplu, prin artificiul x = x + cf(x), <strong>în</strong> care g(x) = x + cf(x). Aparent, valoareaconstantei c cu care se multiplică ecuaţia f(x) = 0 nu este importantă, totuşi se vaconstata că ea infuenţează puternic convergenţa şirului de iteratii.În consecinţă, <strong>în</strong> metoda iteraţiei simple, şirul soluţiilor <strong>numerice</strong> este generat derelaţia:x k = x k−1 +cf(x k−1 ) (9.3)<strong>în</strong> care k = 1,2,...,n.Seporneştedelaoiniţializarearbitrarăx 0 ∈ [a,b]şisecalculeazăsuccesivx 1 ,x 2 ,...,x npână când |x n −x n−1 | < eps. O condiţie suficientă pentru convergenţa şirului (16.2) esteca g să fie o contracţie, respectiv:|g(x 1 )−g(x 2 )| ≤ L|x 1 −x 2 | (9.4)cu L strict subunitar, pentru orice x 1 ,x 2 ∈ [a,b]. Dacă f este derivabilă, această condiţieeste satisfăcută atunci când |g ′ | < 1, deci:|1+cf ′ (x)| < 1, x ∈ [a,b]. (9.5)Condiţia (9.5) evidenţiază importanţa constantei c, care trebuie să aibă semn opusderivatei funcţiei f şi trebuie aleasă astfel <strong>în</strong>cât |1 + cf ′ (x)| să fie subunitar. Cu cât|g ′ | = |1+cf ′ (x)| este mai mic, cu atât şirul iterativ este mai rapid convergent.


9.2. Principiul lucrării 179Metoda Newton (a tangentelor)Una din metodele iterative cele mai eficiente este metoda Newton, <strong>în</strong> care c = c k semodifică la fiecare iteraţie, astfel <strong>în</strong>cât 1+c k f ′ (x k ) = 0, respectiv:c k = − 1f ′ (x k ) . (9.6)Rezultă următoarea relaţie pentru definirea şirului soluţiilor <strong>numerice</strong> <strong>în</strong> metoda Newton:x k+1 = x k − f(x k), k = 1,2,... (9.7)f ′ (x k )care evidenţiază faptul că la fiecare iteraţie graficul funcţiei este aproximat cu tangentadusă <strong>în</strong> punctul de coordonate x k ,f(x k ). Ecuaţia dreptei tangente este:iar prin intersecţia ei cu axa, rezultă, pentru y = 0:y = f ′ (x)(x−x k )+f(x k ), (9.8)x = x k+1 = x k − f(x k)f ′ (x k ) . (9.9)Din acest motiv, metoda Newton este cunoscută şi sub numele de metoda tangentelor.Dezavantajulacesteimetodeconstă<strong>în</strong>faptulcălafiecareiteraţietrebuieevaluatăderivataf ′ (x k ), ceea ce poate necesita un efort mare de calcul.Metoda Newton-Kantorovici (a tangentelor paralele)O variantă simplificată, cunoscută sub numele de Newton-Kantorovici (a tangentelorparalele) foloseşte o singură evaluare a derivatei <strong>în</strong> punctul iniţial c = −1/f ′ (x 0 ),iar iteraţiile sunt date de:x k+1 = x k − f(x k)(9.10)f ′ (x 0 )Această metodă este, <strong>în</strong> fond, o variantă a metodei iteraţiei simple, cu o alegere convenabilăa factorului c.Metoda Newton discretă (a secantelor)Dacă expresia derivatei f ′ (x) nu este cunoscută, atunci metoda Newton şi varianta sasimplificată nu pot fi aplicate. În acest caz se poate face apel la aproximarea numerică aderivatei:f ′ (x k ) ≈ f(x k)−f(x k−1 ), (9.11)x k −x k−1aceasta reprezentând panta secantei ce uneşte ultimele două puncte din şirul iterativ,având coordonatele x k−1 ,f(x k−1 ) şi respectiv x k ,f(x k ). Metoda astfel obţinută bazată perelaţia iterativă:x k+1 = x k − f(x k)(x k −x k−1 ), k = 1,2,... (9.12)f(x k )−f(x k−1 )este cunoscută sub numele de metoda Newton (sau metoda secantelor). Această metodăfoloseşteofuncţiedeiteraţiededouăvariabilex k+1 = g(x k ,x k−1 ),decinecesităoiniţializaredublă x 0 ,x 1 (alese, de exemplu: x 0 = a,x 1 = b).


180 Capitolul 9. Rezolvarea numerică prin metode iterative a ecuaţiilor neliniare9.3 Pseudocodul algoritmilorMetoda bisecţieiRezolvarea ecuaţiei f(x) = 0 prin metoda bisecţiei poate fi reprezentată <strong>în</strong> pseudocodprin următoarea procedură:procedura bisecţie (a,b,eps,nit)real a,breal eps<strong>în</strong>treg nit<strong>în</strong>treg k = 0repetăk = k +1xm = (a+b)/2dacă f(xm)f(a) > 0 atuncia = xmaltfelb = xmpână când (b−a) < eps sau k > nitdacă k ≤ nitscrie xmretur; domeniul de definiţie al funcţiei f; eroarea impusă de soluţie; număr maxim de iteraţii; contor iteraţii; soluţieMetoda iteraţiei simpleRezolvarea ecuaţiei f(x) = 0 prin metoda iteraţiei simple poate fi reprezentată <strong>în</strong>pseudocod prin următoarea procedură:procedura iteraţie simplă (x 0 ,eps,nit)real x 0real eps<strong>în</strong>treg nit<strong>în</strong>treg k = 0real xvechi = x 0repetăk = k +1xnou = g(xvechi)d = |xnou−xvechi|xvechi = xnoupână când d < eps sau k > nitdacă k ≤ nit; iniţializare soluţie; eroarea impusă de soluţie; număr maxim de iteraţii; contor iteraţii; iniţializarea soluţiei; unde g(x)=x+cf(x)


9.3. Pseudocodul algoritmilor 181returscrie xnouMetoda Newton-Kantorovici (tangente paralele)Rezolvarea ecuaţiei f(x) = 0 prin metoda Newton-Kantorovici(tangente paralele)poate fi reprezentată <strong>în</strong> pseudocod prin următoarea procedură:procedura tangente paralele (x 0 ,eps,nit)real x 0; iniţializare soluţiereal eps; eroarea impusă de soluţie<strong>în</strong>treg nit; număr maxim de iteraţiireal xvechi = x 0 ; iniţializarea soluţieireal fd = f ′ (x 0 ) ; valoarea derivatei <strong>în</strong> x 0repetăk = k +1xnou = xvechi−f(xvechi)/fdd = |xnou−xvechi|xvechi = xnoupână când d < eps sau k > nitdacă k ≤ nitscrie xnoureturMetoda Newton (tangente)Rezolvarea ecuaţiei f(x) = 0 prin metoda Newton (a tangentelor) poate fi reprezentată<strong>în</strong> pseudocod prin următoarea procedură:procedura Newton (x 0 ,eps,nit)real x 0; iniţializare soluţiereal eps; eroarea impusă de soluţie<strong>în</strong>treg nit; număr maxim de iteraţii<strong>în</strong>treg k = 0; contor iteraţiireal xvechi = x 0 ; iniţializarea soluţieirepetăk = k +1xnou = xvechi−f(xvechi)/f ′ (xvechi)d = |xnou−xvechi|xvechi = xnoupână când d < eps sau k > nitdacă k ≤ nit


182 Capitolul 9. Rezolvarea numerică prin metode iterative a ecuaţiilor neliniarereturscrie xnouMetoda Newton discretă (a secantelor)Rezolvarea ecuaţiei f(x) = 0 prin metoda Newton discretă (a secantelor) poate fireprezentată <strong>în</strong> pseudocod prin următoarea procedură:procedura secante (a,b,eps,nit)real a,b; domeniul de definiţie al funcţieireal eps; eroarea impusă de soluţie<strong>în</strong>treg nit; număr maxim de iteraţii<strong>în</strong>treg k = 0; contor iteraţiireal xv = a; iniţializări ale soluţieireal xvv = brepetăk = k +1xnou = xv −(xv −xvv)f(xv)/(f(xv)−f(xvv))d = |xnou−xv|xvv = xvxv = xnoupână când d < eps sau k > nitdacă k ≤ nitscrie xnouretur9.4 Analiza algoritmilorEfort de calculEfortul de calcul pentru determinarea soluţiei <strong>numerice</strong> este dependent de eroareaimpusă soluţiei. În general, cu cât precizia impusă soluţiei este mai mare, cu atât timpulde calcul creşte, deoarece sunt necesare mai multe iteraţii.Efortul de calcul pentru o iteraţie depinde de metoda adoptată şi el constă <strong>în</strong> principal<strong>în</strong> evaluarea funcţiei f sau a derivatei acesteia:MetodaNumăr de evaluări pe iteraţieBisecţiei 2 evaluări pentru f (poate fi redusă la o evaluare)Iteraţia simplă 1 evaluare pentru fTangente paralele 1 evaluare pentru fNewton 1 evaluare pentru f şi 1 evaluare pentru derivata f ′Secante 2 evaluări pentru f (poate fi redusă la o evaluare)


9.4. Analiza algoritmilor 183Deoarece viteza cu care şirul de iteraţii converge către soluţia exactă este diferită de lao metodă la alta, este posibil ca numărul de iteraţii necesare atingerii unei precizii doritesă fie mult mai mic <strong>în</strong> cazul metodei Newton decât <strong>în</strong> cazul metodei iteraţiei simple. Înacest caz se obţine o eficienţă globală superioară prin folosirea metodei Newton, chiardacă la fiecare iteraţie timpul de calcul este mai mare.Analiza erorilorO altă problemă importantă <strong>în</strong> procedurile iterative constă <strong>în</strong> <strong>în</strong>crederea care se poateacorda soluţiei <strong>numerice</strong>. Faptul că doi termeni succesivi sunt suficient de apropiaţi|x k+1 − x k | < eps nu <strong>în</strong>seamnă <strong>în</strong>totdeauna că aceştia sunt foarte aproape de soluţiaexactă x. Este posibil ca distanţa err = |x k+1 − x| să fie mult mai mare decât eps.Folosind principiul contracţiei se obţin următoarele relaţii privind eroarea impusă eps şieroarea reală err <strong>în</strong> cazul metodei iteraţiei simple:err = |x n+1 −x| ≤ Ln+11−L |x 1 −x 0 | (9.13)eps = |x n+1 −x n | ≤ L n+1 |x 0 −x| (9.14)<strong>în</strong> care s-a notat cu L < 1 constanta Liepschitz a funcţiei de iteraţie g, ce satisface:|g(u)−g(v)| ≤ L|u−v| (9.15)pentru orice u,v din domeniul (a,b). Cu cât această constantă are valori mai mici, cuatât şirul iterativ este mai rapid convergent, numărul de iteraţii necesar atingerii precizieiimpuse fiind:⎡ eps ⎤n =⎢⎣log(1−L)|x 1 −x 0 |logLRaportul dintre eroarea impusă şi cea reală depinde de constanta L.⎥⎦ (9.16)Deoarece <strong>în</strong> metoda bisecţiei marginea erorii reale la iteraţia n (merr n ) satisface inegalitatea:merr n ≤ merr n−1, (9.17)2rezultăcămetodaiteraţieisimpleestemaiavantajoasădecâtmetodabisecţiei, doaratuncicând constanta Liepschitz L < 1/2.Metoda Newton este mai rapid convergentă decât metoda iteraţiei simple deoarece <strong>în</strong>acest caz, eroarea reală la fiecare pas este:err n+1 = |x n+1 −x| = |g(x n )−g(x)| ≤ L(|x n −x|) 2 (9.18)spre deosebire de eroarea reală la fiecare pas <strong>în</strong> cazul metodei iteraţiei simple:err n+1 = |x n+1 −x| = |g(x n )−g(x)| ≤ L|x n −x|. (9.19)


184 Capitolul 9. Rezolvarea numerică prin metode iterative a ecuaţiilor neliniareÎn concluzie, efortul de calcul pentru determinarea soluţiei <strong>numerice</strong> a unei ecuaţiineliniare printr-o metodă iterativă depinde de:• tipul ecuaţiei;• iniţializarea adoptată (distanţa faţă de soluţia exactă);• metoda iterativă adoptată;• eroarea impusă soluţiei <strong>numerice</strong>.<strong>Metode</strong>le iterative nu sunt convergente <strong>în</strong> orice caz. Aceasta situatie poate avea locde exemplu, <strong>în</strong> cazul metodei iteraţiei simple dacă constanta L a funcţiei g are valorisupraunitare.9.5 Chestiuni de studiat1. Rezolvarea unor ecuaţii neliniare prin diferite metode iterative;2. Analiza experimentală a erorilor şi a timpului de calcul la rezolvarea prin metodeiterative a ecuaţiilor neliniare;3. Implementarea <strong>în</strong>tr-un limbaj de programare a unor algoritmi de rezolvare iterativăa ecuaţiilor neliniare şi testarea acestora;4. Căutarea de informaţii pe Internet.9.6 Modul de lucruPentru desfăşurarea lucrării selectaţi opţiunea Rezolvarea numerică prin metode iterativea ecuaţiilor neliniare din meniul principal de lucrări. Aceasta are ca urmare lansareaurmătorului meniu:• Rezolvare ecuaţii• Analiza rezolvăriiUtilizatorul va selecta opţiunile din acest meniu.


9.6. Modul de lucru 1859.6.1 Rezolvarea unor ecuaţii neliniare prin diferite metode iterativePrin selectarea opţiunii Rezolvare ecuaţii din meniul lucrării se apelează un program carepoate rezolva următoarele ecuaţii neliniare:e x = a 0x+a 0 lnx = a 1a 0 sinx+a 1 cosx = a 2a 3 x 3 +a 2 x 2 +a 1 x+a 0 = 0<strong>în</strong> care a 0 ,a 1 ,a 2 ,a 3 , sunt parametri reali ce vor fi introduşi de utilizator. După introducereaacestor parametri, programul solicită domeniul de definiţie [x min ,x max ] al funcţiei,numărul maxim de iteraţii şi apoi alegerea metodei de rezolvare dintre variantele:1. metoda bisecţiei;2. metoda iteraţiei simple (cu c = −1);3. metoda tangentelor paralele;4. metoda tangentelor;5. metoda secantelor.În continuare programul afişează graficul funcţiei f(x) şi marchează succesiv punctelede coordonate x k ,f(x k ),k = 0,1,2,...Pentru trecerea la iteraţia următoare trebuie apăsată tasta <strong>în</strong> consolaScilab.Se recomandă rezolvarea ecuaţiilor: e x = 2,x+lnx = 2,sin(x)+cos(x) = 1 şi x 2 = 2,prin diferite metode. Se vor alege limitele x min şi x max ale domeniului de definiţie <strong>în</strong> modconvenabil pentru fiecare ecuaţie şi se va comenta convergenţa procesului iterativ, aşacum este ea evidenţiată din grafic.Pentru fiecare metodă disponibilă, se va căuta un exemplu de ecuaţie, la care iteraţiilenu sunt convergente.9.6.2 Analiza experimentală a erorilor şi a timpului de calcul larezolvarea prin metode iterative a ecuaţiilor neliniarePrin selectarea optiunii Analiza rezolvării din meniul principal se apelează un programcare rezolvă ecuaţia algebrică:a 2 x 2 +a 1 x+a 0 = 0


186 Capitolul 9. Rezolvarea numerică prin metode iterative a ecuaţiilor neliniareprin diferite metode iterative şi anume:1. metoda bisecţiei;2. metoda iteraţiei simple;3. metoda tangentelor paralele;4. metoda tangentelor;5. metoda secantelor.Lafiecaremetodăesteafişatăşireprezentatăgraficvariaţiaeroriiabsolutereale|x k −x|(abaterea iteraţiei curente faţă de soluţia exactă), a erorii aparente Cauchy |x k − x k−1 |(distanţa dintre două iteraţii succesive egală cu modulul corecţiei efectuate asupra ultimeisoluţii <strong>numerice</strong>) şi a reziduului |f(x k )| pe parcursul iteraţiilor. Programul afişează şitimpul necesar pentru efectuarea unei iteraţii.Se va rezolva ecuaţia x 2 = 2 şi se va calcula timpul necesar atingerii unei preciziidorite (de exemplu, primele trei cifre semnificative exacte) pentru soluţia numerică. Sevor compara rezultatele obţinute prin diferite metode (eficienţa lor relativă <strong>în</strong> rezolvareaproblemei date) şi se va determina metoda optimă.9.6.3 Implementarea algoritmilor de rezolvare iterativă a ecuaţiilorneliniareSe va implementa <strong>în</strong> limbajul C una din procedurile de rezolvare iterativă prezentate. Seva scrie un program principal, care va apela procedura implementată şi care va rezolvaecuaţia algebrică neliniară:Programul va permite:a 3 x 3 +a 2 x 2 +a 1 x+a 0 = 0• introducerea datelor a 0 ,a 1 ,a 2 ,a 3 ,a,b;• rezolvarea ecuaţiei prin apelul procedurii;• afişarea rezultatelor: x - soluţia numerică; k - numărul de iteraţii; eps - eroareaaparentă Cauchy.


9.7. Exemple 1879.6.4 Căutare de informaţii pe InternetCăutaţipeInternetinformaţiişicodurilegatederezolvareanumericăaecuaţiilorneliniare.Cuvinte cheie recomandate: solving nonlinear equations, solving nonlinear systems, secantmethod, etc.9.7 Exemple9.7.1 Exemple rezolvate1. Fie funcţia f : IR → IR, f(x) = x 2 −9. Se cer:(a) Să se calculeze primele două iteraţii ale metodei bisecţiei pentru rezolvareaecuaţiei f(x) = 0 <strong>în</strong> intervalul [a,b], unde a = 0, b = 8.(b) Să se calculeze primele trei iteraţii ale metodei Newton pentru rezolvareaecuaţiei f(x) = 0, pornind de la iniţializarea x 0 = 1, respectiv x 0 = −1.(c) Comentaţi comportarea metodei Newton pentru rezolvarea ecuaţiei f(x) = 0,dacă iniţializarea este x 0 = 0.(d) Să se calculeze primele două iteraţii ale metodei Newton-Kantorovici pentrurezolvarea ecuaţiei f(x) = 0, pornind de la iniţializarea x 0 = 2.(e) Să se calculeze primele două iteraţii ale metodei Newton discretă pentru rezolvareaecuaţiei f(x) = 0, pornind de la iniţializarea dublă x 0 = 0, x 1 = 1.Rezolvare:(a) Metoda bisecţiei (<strong>în</strong>jumătăţirii intervalului) este garantat convergentă dacăfuncţiaestecontinuă, soluţiaesteunică(problemaestebineformulatămatematic)şi funcţia îşi schimbă semnul <strong>în</strong> intervalul de căutare, [a,b] (f(a)f(b) < 0).Pentru funcţia dată avem: f(a) = f(0) = −9 şi f(b) = f(8) = 55, adicăf(a)f(b) = −9·55 < 0.La prima iteraţie, k = 1, mijlocul intervalului este: x m,1 = (a + b)/2 = 4,f(x m,1 ) = f(4) = 7. Deoarece f(a)f(x m,1 ) = −9 · 7 < 0, soluţia se află <strong>în</strong>prima jumătate a intervalului [a,b]. Valoarea lui b se modifică, b = x m,1 = 4.Noul interval de căutare este [0,4].La a doua iteraţie, k = 2, mijlocul intervalului este: x m,2 = (a + b)/2 = 2,f(x m,2 ) = f(2) = −5. Deoarece f(a)f(x m,2 ) = −9 · (−5) > 0, soluţia seaflă <strong>în</strong> a doua jumătate a intervalului [a,b]. Acum, valoarea lui a se modifică,a = x m,2 = 2. Noul interval de căutare este [2,4].Procedeul iterativ este ilustrat <strong>în</strong> figura 11.


188 Capitolul 9. Rezolvarea numerică prin metode iterative a ecuaţiilor neliniareFig. 11. Primele două iteraţii ale metodei bisecţiei(b) Formula de recurenţă a metodei Newton (a tangentelor) pentru generareaşirului de soluţii este:x k+1 = x k − f(x k)f ′ (x k ) , k = 1,2,....Se observă că este necesară evaluarea derivatei la fiecare iteraţie. În cazulproblemei considerate, f ′ (x) = 2x,Dacă iniţializarea este x 0 = 1, primele 3 iteraţii ale metodei Newton sunt:x 1 = x 0 − f(x 0)f ′ (x 0 )x 2 = x 1 − f(x 1)f ′ (x 1 )= 1−f(1)f ′ (1)= 5−f(5)f ′ (5)= 1−−82 = 5,= 5−1610 = 175 = 3.4,x 3 = x 2 − f(x 2)f ′ (x 2 ) = 175 − f(17/5)f ′ (17/5) = 17 5 − 3285 = 25785 = 3.02.Procedeul iterativ este ilustrat <strong>în</strong> figura 1b-stânga.Dacă iniţializarea este x 0 = −1, primele 3 iteraţii sunt:x 1 = x 0 − f(x 0)f ′ (x 0 )x 2 = x 1 − f(x 1)f ′ (x 1 )= −1−f(−1)f ′ (−1)= −5−f(−5)f ′ (−5)= −1−−8−2 = −5,= −5−16−10 = −17 5 = −3.4,x 3 = x 2 − f(x 2)f ′ (x 2 ) = −17 5 − f(−17/5)f ′ (−17/5) = −17 5 + 3285 = −257 85 = −3.02.


9.7. Exemple 18928F(x)28F(x)2424202016161212884400−4−4−81 2 3 4 5 6 7X−8−7 −6 −5 −4 −3 −2 −1XFigura 9.1: Primele trei iteraţii ale metodei Newton: stânga x 0 = 1, dreapta x 0 = −1.Procedeul iterativ este ilustrat <strong>în</strong> figura 1b-dreapta.Seobservăcă, <strong>în</strong>funcţiedeiniţializareasoluţiei, metodaNewtonconvergecătreuna dintre cele două soluţii exacte ale ecuaţiei x 2 −9 = 0, x = ±3.(c) Dacă iniţializarea este x 0 = 0, atunci prima iteraţie a metodei Newton ar fi:x 1 = x 0 − f(x 0)f ′ (x 0 )şi metoda eşuează <strong>în</strong>că de la prima iteraţie.= 0−f(0)f ′ (0) = 9 0 ,Metoda Newton va eşua dacă o iteraţie ajunge <strong>în</strong>tr-un punct critic al funcţiei(punct pentru care derivata este nulă). Din punct de vedere geometric, <strong>în</strong>tr-unpunct critic, tangenta la graficul funcţiei f(x) este paralelă cu abscisa OX,deci nu există intersecţie cu aceasta, implicit soluţie la iteraţia următoare.(d) Formula de recurenţă a metodei Newton-Kantorovici (a tangentelor paralele)pentru generarea şirului de soluţii este:x k+1 = x k − f(x k)f ′ (x 0 ) , k = 1,2,....Se observă că este necesară o singură evaluare a derivatei, f ′ (x 0 ) = 2x 0 .Dacăiniţializareaestex 0 = 2,primele2iteraţiialemetodeiNewton-Kantorovicisunt:x 1 = x 0 − f(x 0) f(2) −5= 2− = 2−f ′ (x 0 ) f ′ (2) 4 = 134 = 3.25,x 2 = x 1 − f(x 1)f ′ (x 0 ) = 134 − f(13/4)f ′ (2)Procedeul iterativ este ilustrat <strong>în</strong> figura 1e-stânga.= 134 − 2564 = 18364 = 2.859.


190 Capitolul 9. Rezolvarea numerică prin metode iterative a ecuaţiilor neliniare9F(x)80F(x)75706050340130−12010−30−52.0 2.4 2.8 3.2 3.6 4.0 4.4X−100 1 2 3 4 5 6 7 8 9 10XFigura 9.2: Primele trei iteraţii ale metodei: Newton Kantorovici (stânga), Newton discretă(dreapta).(e) Formula de recurenţă a metodei Newton discretă (a secantelor) pentru generareaşirului de soluţii este:x k+1 = x k − f(x k)(x k −x k−1 )f(x k )−f(x k−1 ) , k = 1,2,....Pornind de la iniţializarea dublă x 0 = 0, x 1 = 1, primele 2 iteraţii ale metodeiNewton discretă sunt:x 2 = x 1 − f(x 1)(x 1 −x 0 )f(x 1 )−f(x 0 )x 3 = x 2 − f(x 2)(x 2 −x 1 )f(x 2 )−f(x 1 )= 1−f(1)(1−0)f(1)−f(0)= 9−f(9)(9−1)f(9)−f(1)Procedeul iterativ este ilustrat <strong>în</strong> figura 1e-dreapta.2. Fie ecuaţia neliniară x 2 +x = 2. Se cer:= 1−−81 = 9,= 9−365 = 9 5 = 1.8.(a) Să se calculeze primele două iteraţii ale metodei bisecţiei pentru rezolvareaecuaţiei pentru x ∈ [a,b], unde a = −6, b = 0.(b) Să se calculeze primele două iteraţii ale metodei Newton pentru rezolvareaecuaţiei, pornind de la iniţializarea x 0 = 0.(c) Să se calculeze primele două iteraţii ale metodei Newton-Kantorovici pentrurezolvarea ecuaţiei, pornind de la iniţializarea x 0 = 0.(d) Să se calculeze primele două iteraţii ale metodei Newton discretă pentru rezolvareaecuaţiei, pornind de la iniţializarea dublă x 0 = −1/2, x 1 = 0.


9.7. Exemple 191Rezolvare:La rezolvarea oricărei ecuaţii neliniare este indicat să avem forma f(x) = 0.considerat, f(x) = x 2 +x−2.În cazul(a) Pentru funcţia dată avem: f(a) = f(−6) = 28 şi f(b) = f(0) = −2, adicăf(a)f(b) = 28·(−2) < 0, o singură soluţie <strong>în</strong> intervalul [a,b].La prima iteraţie, k = 1: x m,1 = (a + b)/2 = −3, f(x m,1 ) = f(−3) = 4.Deoarece f(a)f(x m,1 ) = 28 · 4 > 0, soluţia se află <strong>în</strong> a doua jumătate a intervalului[a,b]. Valoarea lui a se modifică, a = x m,1 = −3. Noul interval decăutare este [−3,0].La a doua iteraţie, k = 2: x m,2 = (a + b)/2 = −3/2, f(x m,2 ) = f(−3/2) =−5/4. Deoarece f(a)f(x m ) = 4·(−5/4) < 0, soluţia se află <strong>în</strong> prima jumătatea intervalului [a,b]. Acum, valoarea lui b se modifică, b = x m,2 = −3/2. Noulinterval de căutare este [−3,−3/2].(b) Pentru metoda Newton este necesară cunoaşterea expresiei derivatei funcţiei.În cazul problemei considerate, f ′ (x) = 2x+1.Pornind de la iniţializarea x 0 = 0, primele două iteraţii ale metodei Newtonsunt:x 1 = x 0 − f(x 0)f ′ (x 0 )x 2 = x 1 − f(x 1)f ′ (x 1 )= 0−f(0)f ′ (0) = −−2 1 = 2,= 2−f(2)f ′ (2) = 2− 4 5 = 6 5 = 1.2.(c) Pornind de la iniţializarea x 0 = 0, primele două iteraţii ale metodei Newton-Kantorovici sunt:x 1 = x 0 − f(x 0)f ′ (x 0 )x 2 = x 1 − f(x 1)f ′ (x 0 )= 0−f(0)f ′ (0) = −−2 1 = 2,= 2−f(2)f ′ (0) = 2− 4 1 = −2.(d) Pornind de la iniţializarea dublă x 0 = −1/2, x 1 = 0, primele două iteraţii alemetodei Newton discretă sunt:x 2 = x 1 − f(x 1)(x 1 −x 0 )f(x 1 )−f(x 0 )f(0)[0−(−1/2)]= 0−f(0)−f(−1/2) = − −1−2−(−9/4) = 4,x 3 = x 2 − f(x 2)(x 2 −x 1 )f(x 2 )−f(x 1 )= 4−f(4)(4−0)f(4)−f(0)= 4−18·420= 2 5 = 0.4.


192 Capitolul 9. Rezolvarea numerică prin metode iterative a ecuaţiilor neliniare9.7.2 Exemple propuse1. Fie funcţia f : IR → IR, f(x) = x 2 −16. Se cer:(a) Să se calculeze primele două iteraţii ale metodei bisecţiei pentru rezolvareaecuaţiei f(x) = 0 <strong>în</strong> intervalul [a,b], unde a = 0, b = 12.(b) Să se calculeze primele două iteraţii ale metodei Newton pentru rezolvareaecuaţiei f(x) = 0, pornind de la iniţializarea x 0 = 1.(c) Să se calculeze primele două iteraţii ale metodei Newton-Kantorovici pentrurezolvarea ecuaţiei f(x) = 0, pornind de la iniţializarea x 0 = 1.(d) Să se calculeze primele două iteraţii ale metodei Newton discretă pentru rezolvareaecuaţiei f(x) = 0, pornind de la iniţializarea dublă x 0 = 0, x 1 = 1.2. Fie ecuaţia neliniară x 2 +x = 6. Se cer:(a) Să se calculeze primele două iteraţii ale metodei bisecţiei pentru rezolvareaecuaţiei pentru x ∈ [a,b], unde a = −8, b = 0.(b) Să se calculeze primele două iteraţii ale metodei Newton pentru rezolvareaecuaţiei, pornind de la iniţializarea x 0 = −1.(c) Să se calculeze primele două iteraţii ale metodei Newton-Kantorovici pentrurezolvarea ecuaţiei, pornind de la iniţializarea x 0 = −1.(d) Să se calculeze primele două iteraţii ale metodei Newton discretă pentru rezolvareaecuaţiei, pornind de la iniţializarea dublă x 0 = −2, x 1 = −1.9.8 Întrebări şi probleme1. Comparaţi eficienţa diferitelor metode iterative pentru rezolvarea aceleiaşi ecuaţiineliniare;2. Analizaţi cum depinde eficienţa rezolvării de iniţializarea adoptată;3. Analizaţi cum depinde timpul de calcul pentru determinarea soluţiei <strong>numerice</strong> aunei ecuaţii neliniare de eroarea impusă soluţiei <strong>numerice</strong>;4. Modificaţi algoritmul metodei bisecţiei astfel <strong>în</strong>cât să se efectueze o singură evaluarea funcţiei f la fiecare <strong>în</strong>jumătăţire;5. Analizaţi efectul pe care îl are introducerea unui factor de relaxare (subrelaxare,respectiv suprarelaxare) <strong>în</strong> iteraţiile neliniare;6. Care din metodele prezentate poate fi generalizată la rezolvarea unui sistem deecuaţii neliniare şi cum se realizează această generalizare?


9.8. Întrebări şi probleme 1937. Propuneţi diferite criterii sigure pentru oprirea iteraţiilor;8. Generaţi un algoritm pentru determinarea iterativă a zerourilor funcţiei complexeanalitice.9. Descrieţi algoritmul Newton <strong>în</strong> cazul unui sistem de ecuaţii algebrice neliniare. Cumpoate fi aplicat acest algoritm <strong>în</strong> analiza numerică a circuitelor electrice neliniare <strong>în</strong>regim staţionar (de c.c.)? Arătaţi că la fiecare iteraţie trebuie rezolvat un circuitelectric liniar, pentru care se poate aplica algoritmul din Lucrarea nr. 5.10. Identificaţi<strong>în</strong>bibliotecamatematicădescrisă<strong>în</strong>[2]funcţiiavansatepentrurezolvareasistemelor de ecuaţii neliniare. Ce aduc nou aceste funcţii, faţă de cele analizate <strong>în</strong>lucrare?Sir Isaac Newton (1643, Anglia - 1727, Anglia)http://www-gap.dcs.st-and.ac.uk/ history/Mathematicians/Newton.htmlLeonid Vitalyevich Kantorovich (1912, Rusia - 1986, URSS)http://www-gap.dcs.st-and.ac.uk/ history/Mathematicians/Kantorovich.htmlhttp://www.nobel.se/economics/laureates/1975/kantorovich-autobio.html


194 Capitolul 9. Rezolvarea numerică prin metode iterative a ecuaţiilor neliniare


Lucrarea 10Rezolvarea ecuaţiilor diferenţialeordinare cu condiţii iniţiale prinmetoda Euler10.1 Caracterizarea metodeiMetoda Euler este o metodă elementară de integrare numerică a unei ecuaţii diferenţialecu condiţii iniţiale de forma:pentru intervalul de definiţie t 0 ≤ t ≤ t max .dy= f(t,y)dty(t 0 ) = y 0În această metodă, pentru evaluarea numerică a derivatei se utilizează aproximareaobţinută prin reţinerea primilor doi termeni din dezvoltarea <strong>în</strong> serie Taylor a funcţiei y(t).Deoarece soluţia numerică are pe fiecare pas de timp variaţie liniară, se spune că metodaeste de ordinul I.10.2 Principiul metodeiSe consideră următoarea ecuaţie diferenţială de ordinul I:dy= f(t,y)dty(0) = y 0 (10.1)a cărei soluţie y(t) este o funcţie de timp definită pe intervalul [0,t max ].195


196 Capitolul 10. Rezolvarea ecuaţiilor diferenţiale ordinare prin metoda EulerRezolvarea numerică a ecuaţiei (10.1) constă <strong>în</strong> evaluarea funcţiei y(t) <strong>în</strong> nodurile0 < t 1 < t 2 < ... < t max ale intervalului de definiţie. Se alege un pas de integrare h, astfel<strong>în</strong>cât intervalul [0,t max ] să fie împărţit <strong>în</strong> n paşi egali:h = t maxn . (10.2)Nodurile intervalului de definiţie sunt <strong>în</strong> acest caz următoarele:t 0 = 0; t 1 = h; t 2 = 2h; t 3 = 3h;...;t n = nh = t max .Dezvoltarea <strong>în</strong> serie Taylor a funcţiei y(t) la dreapta punctului t i = ih este:y(t i +h) = y i +y ih+y ′ i′′ h 22 +y′′′ ih 36+... (10.3)unde y i = y(t i ) şi y ′ i = f(t i ,y i ). Dacă se neglijează termenii de grad mai mare sau egalcu 2, şi se notează cu y i+1 soluţia la momentul t i+1 = t i + h, atunci se face următoareaaproximare:y i+1 = y i +hf(t i ,y i ). (10.4)Această expresie reprezintă formula explicită a metodei lui Euler. Pornind de lacondiţiainiţialăy 0 ,relaţia(10.4)permitecalcululsuccesivalsoluţiei<strong>numerice</strong>y 1 ,y 2 ,...,y n ,<strong>în</strong> toate nodurile reţelei de discretizare.Dezvoltarea <strong>în</strong> serie Taylor a funcţiei y(t) la stânga punctului t i+1 = (i+1)h este:y(t i+1 −h) = y i+1 −y i+1h+y ′ i+1′′ h 2 h 32 −y′′′ i+1 +... (10.5)6unde y ′ i+1 = f(t i+1 ,y i+1 ). Dacă se neglijează <strong>în</strong> (10.5) termenii de grad mai mare sau egalcu 2 rezultă următoarea aproximare:y i+1 = y i +hf(t i+1 ,y i+1 ). (10.6)Această expresie reprezintă formula implicită a metodei lui Euler. Determinareasoluţiei<strong>numerice</strong>presupune<strong>în</strong>acestcazrezolvarealafiecarepasdetimpaecuaţiei(10.6).10.3 Pseudocodul metodeiRezolvarea prin metoda explicită este descrisă de următorul pseudocod:


10.3. Pseudocodul metodei 197procedura euler exp (x0, xmax, y0, h, y)real x0, ; nod iniţialreal xmax, ; nod finalreal y0, ; condiţia iniţialăreal h, ; pasul de integraretablou real y(n) ; vectorul soluţiei <strong>numerice</strong> (indici de la 0)t = x0y(0) = y0n = (xmax - x0)/h ; număr de paşipentru i = 1, n ; evaluează funcţia <strong>în</strong> cele n noduriy(i) = y(i-1) + h · func(t, y(i -1))t = t + hreturProcedura are următorii parametri:• de intrare:– x0 = limita inferioară a intervalului de integrare;– xmax = limita superioară a intervalului de integrare;– y0 = condiţia iniţială;– h = pasul de integrare.• de ieşire: y(n) = vectorul soluţie.Proceduraapeleazăfuncţiafuncceevalueazăfuncţiaf(t,y)dinmembruldreptalecuaţiei(10.1) pentru nodul i.Rezolvarea prin metoda implicită este descrisă de următorul pseudocod:procedura euler imp (x0, xmax, y0, h, err, itmax, y)real x0,; nodul iniţialreal xmax,; nod finalreal y0,; condiţia iniţialăreal h,; pasul de integrarereal err; eroarea maxim admisă<strong>în</strong>treg itmax; nr. max. de iteraţiitablou real y(N); vectorul soluţieit = x0y(0) = y0n = (xmax - x0)/h; nr. de paşi


198 Capitolul 10. Rezolvarea ecuaţiilor diferenţiale ordinare prin metoda Eulerpentru i = 1, n; evaluează funcţia <strong>în</strong> cele n nodurit = t + h; pas nouynou = y(i-1) + h · func(t, y(i-1)) ; prima evaluare se face cu metoda explicităj = 0; contor iteraţiirepetăyvechi = ynouynou = y(i-1) + h · func(t, yvechi) ; evaluare nouăj = j + 1eps = abs(yvechi - ynou) ; evaluare eroarepână când (abs(eps) ≤ err sau j > itmax)y(i) = ynoureturProcedura are următorii parametri:• de intrare:– x0 - limita inferioară a intervalului de integrare;– xmax - limita superioară a intervalului de integrare;– y0 - condiţia iniţială;– h - pasul de integrare;– err - eroarea maximă admisă;– itmax - nr. maxim de iteraţii admis.• de ieşire: y(n) - vectorul soluţiei <strong>numerice</strong>.Procedura apelează funcţia func ce calculează valoarea funcţiei f(t,y) din membruldrept al ecuaţiei (10.1) pentru nodul i.Metoda implementată pentru rezolvarea ecuaţiei neliniare (10.6) este metoda iteraţieisimple, la care iniţializarea este făcută prin valori date de relaţia explicită (10.4).10.4 Analiza algoritmuluiEfortul de calculDeoarece durata evaluării funcţiei f(t,y) este <strong>în</strong> general mult mai mare decât durataefectuării câtorva <strong>în</strong>mulţirii şi adunări, timpul de calcul depinde de numărul de evaluăriale funcţiei f(t,y).În metoda explicită se efectuează n evaluări ale funcţiei f.


10.4. Analiza algoritmului 199În cazul metodei implicite, aplicată pe aceeaşi reţea de discretizare, timpul de calculcreşte odată cu creşterea preciziei de calcul dorite <strong>în</strong> rezolvarea iterativă a ecuaţieineliniare (10.6). Ciclul de iteraţii corectează succesiv valoarea soluţiei de la momentulcurent. Aceastătehnicăbazatăperelaţiile(10.4)şi(10.6)senumeştemetoda predictivcorectivă.Numărul de evaluări ale funcţiei f este majorat de n·itmax.Deoarece metoda implicită are o stabilitate numerică superioară faţă de metoda explicită,pentru calculul soluţiei <strong>numerice</strong> la un moment dat (de exemplu t max ) cu o eroareimpusă, trebuie folosită o reţea de discretizare mai fină <strong>în</strong> cazul utilizării metodei explicite,ceea ce poate conduce la un efort de calcul global mai mic prin utilizarea metodeiimplicite.Necesar de memoriePentru memorarea vectorului y sunt necesare n locaţii de memorie, fiecare din ele fiindrezervată unui număr real. În scopul eliminării acestui consum de memorie, soluţia poatefi afişată (sau salvată pe disc), imediat după ce a fost calculată.Cele două variante ale metodei Euler (explicită şi implicită), necesită practic acelaşinecesar de memorie.Analiza erorilorPentru o ecuaţie diferenţială simplă de forma:dydt = ayy(0) = y 0 (10.7)se demonstrează că eroarea de trunchiere cumulată după k paşi de integrare cu metodaEuler explicită este:eps k ≤ hy 0 a 2 t k exp(at k ) = 0(h),unde t k = hk, k ≠ 1, iar eps k = |y(t k )−y k | este eroarea la pasul k.Pentru k = 1:eps 1 ≤ y 0 h 2 a 2 exp(ah) = 0(h 2 ),unde eps 1 este eroare locală, efectuată după un singur pas de integrare şi care este cu unordin mai mare decât eroarea globală.Eroarea de trunchiere este cu atât mai mică cu cât pasul de timp este mai mic. Pentrua obţine aceeiaşi eroare de trunchiere, <strong>în</strong> cazul metodei Euler explicite se impune alegereaunui pas de timp mai mic decât <strong>în</strong> cazul metodei Euler implicite.


200 Capitolul 10. Rezolvarea ecuaţiilor diferenţiale ordinare prin metoda EulerÎn cazul <strong>în</strong> care se implementează metoda Euler pe un sistem de calcul care opereazăcu q cifre semnificative, eroarea de rotunjire, care se adaugă erorii de trunchiere, este:eps r =∣10 −q+1ah∣ .Datorită efectului de anulare prin scădere, eroarea de rotunjire este cu atât mai marecu cât pasul h este mai mic. Prin urmare pasul de integrare poate fi scăzut (<strong>în</strong> vedereamicşorării erorii de trunchiere) numai atât timp cât eroarea de rotunjire rămâne suficientde mică. Din acest punct de vedere se poate găsi un pas de integrare optim.10.5 Chestiuni de studiat1. Rezolvarea unor ecuaţii diferenţiale de ordinul 1;2. Analiza experimentală a erorilor şi a timpului de calcul <strong>în</strong> funcţie de pasul de integrareşi de eroarea impusă;3. Rezolvarea unei ecuaţii diferenţiale asociate unui circuit electric, de ordin I, excitatcu un impuls;4. Implementarea algoritmului <strong>în</strong>tr-un limbaj de programare şi testarea rutinei;5. Căutarea de informaţii pe Internet.10.6 Mod de lucruPentru desfăşurarea lucrării selectaţi opţiunea Rezolvarea ecuaţiilor diferenţiale ordinarecu condiţii iniţiale prim metoda Euler din meniul principal de lucrări. Aceasta are caurmare lansarea următorului meniu:• Rezolvare ecuaţie test• Analiză erori• Analiză ecuaţiedin care trebuie selectate succesiv opţiunile.


10.6. Mod de lucru 20110.6.1 Rezolvarea unor ecuaţii diferenţiale de ordin 1Se selectează opţiunea Rezolvare ecuaţie test. Programul rezolvă prin metoda Euler oecuaţie diferenţială de forma:dy= ay +b (10.8)dty(0) = y 0unde y : [0,t max ] → IR. Această ecuaţie se obţine din studiul regimului tranzitoriu pentruurmătoarele circuite:• Condensator de capacitate C ce se <strong>în</strong>carcă de la o sursă de tensiune continuă E,printr-un rezistor de rezistenţă R.• Descărcarea unui condensator <strong>în</strong>cărcat iniţial la tensiunea E pe un rezistor derezistenţă R.Conform ecuaţiilor lui Kirchhoff, tensiunea la bornele condensatorului <strong>în</strong>tr-un circuitserie RC excitat cu o sursă cu t.e.m. E satisface relaţia:RC dudt +u = Eu(0) = u 0unde u 0 este tensiunea iniţială la bornele condensatorului.Se vor determina, <strong>în</strong> cele două cazuri, expresiile analitice ale tensiunii la bornele condensatorului.Pentru R,C,E, cunoscute (de exemplu R = 100Ω, C = 10µF, E = 20 V) se vorintroducecoeficienţiicorespunzători<strong>în</strong>ecuaţia(10.8)şisevorcomparagraficeledevariaţiea tensiunii la bornele condensatarului <strong>în</strong> timp cu graficele obţinute pe baza expresieianalitice găsite.Comparaţiile se vor face pentru diferiţi paşi de integrare: h = τ/10, h = τ, h = 2τ,unde τ = RC este constantă de timp a circuitului.Se va testa ecuaţia şi pentru valori negative ale lui R (de exemplu R = −100KΩ).Se vor comenta rezultatele.


202 Capitolul 10. Rezolvarea ecuaţiilor diferenţiale ordinare prin metoda Euler10.6.2 Analiza experimentală a erorilor şi a timpului de calcul<strong>în</strong> funcţie de pasul de integrareSe selectează opţiunea Analiză erori. Prin această opţiune, se apelează un program cerezolvă o ecuaţie diferenţială simplă de forma:dydt = −yy(0) = 1pe domeniul [0, t max ]. Programul necesită şi introducerea erorii admisibile şi număruluimaxim de iteraţii necesar rezolvării ecuaţiei neliniare la fiecare pas al metodei implicite.Programul afişează:• eroarea locală pentru primul pas de calcul pentru metodele explicită şi implicită;• eroarea globală pentru metodele explicită şi implicită;• pentru metoda implicită se afişează numărul maxim de iteraţii necesare atingeriipreciziei dorite.Se va alege t max = 4τ şi se va rezolva ecuaţia pentru diferiţi paşi de timp h = 2τ,h = τ, h = τ/10, h = τ/100, h = τ/1000.Se vor reprezenta grafic pe hârtie milimetrică:• variaţia erorii locale şi globale <strong>în</strong> funcţie de h pentru metoda explicită;• variaţia erorii locale şi globale <strong>în</strong> funcţie de h pentru metoda implicită, pentru oeroare impusă constantă de rezolvare a ecuaţiei neliniare a unui pas.• variaţia numărului mediu de iteraţii necesar metodei implicite <strong>în</strong> funcţie de eroareaimpusă rezolvării ecuaţiei neliniare, pentru h = τ/100.;Se vor compara cele două metode din punct de vedere al efortului de calcul necesarobţinerii unei erori globale impuse.10.6.3 Rezolvarea unei ecuaţii diferenţiale caracteristice unuicircuit electric de ordinul ISe selectează opţiunea Analiză ecuaţie. În acest fel se apelează un program ce rezolvă oecuaţie de forma:dy= −y +f(t)dty(0) = 0


10.6. Mod de lucru 203unde:f(t) = (h(t)−h(t−t 0 ))Aexp(bt)cos(ωt+ϕ),iar h(t) reprezintă funcţia treaptă unitate. Domeniul de integrare este [0,t max ], iar pasulde integrare este h = t max /100.Se introduc de la consolă următorii parametri:• t max - intervalul de integrare;• t 0 - durata excitaţiei;• A - amplitudinea excitaţiei;• b - constanta de relaxare a excitaţiei;• ω - pulsaţia excitaţiei;• ϕ - faza iniţială a excitaţiei.Se observă că:• pentru b = 0,ω = 0 şi ϕ = 0, excitaţia este un impuls dreptunghiular de durată t 0 ,iar dacă t 0 ≥ t max excitaţia este constantă;• pentru A,b nenuli, ω = 0 şi ϕ = 0, excitaţia este un impuls cu variaţie exponenţială;• pentru b = 0, excitaţia este armonică;• pentru b < 0, excitaţia este oscilatorie amortizată;• pentru b > 0, excitaţia este oscilatorie amplificată.Se vor analiza toate aceste cazuri şi se vor comenta rezultatele obţinute.10.6.4 Implementarea algoritmului <strong>în</strong>tr-un limbaj de programareşi testarea rutinei.Sevaimplementaoprocedurăpropriederezvoltareauneiecuaţiidiferenţiale,prinmetodaEuler explicită. Se va scrie pseudocodul şi se va implementa un program ce apeleazăprocedura de la punctul anterior şi rezolvă ecuaţia:dy= −y +sin(ωt)dty(0) = y 0 .Integrarea se face pe intervalul 0 < t < t max . Acest program va permite introducereade la consolă a pulsaţiei ω, a condiţiei iniţiale y(0), a limitei superioare a intervalului deintegrare şi a pasului h. Soluţia va fi afişată alfanumeric pe ecran.


204 Capitolul 10. Rezolvarea ecuaţiilor diferenţiale ordinare prin metoda Euler10.6.5 Căutare de informaţii pe InternetSe vor căuta pe Internet informaţii (coduri) legate de rezolvarea ecuaţiilor diferenţialeordinare. Cuvinte cheie recomandate: ordinary differential equations, Euler’s method.10.7 Probleme şi <strong>în</strong>trebări1. Poate fi scăzut oricât de mult pasul de integrare <strong>în</strong> vederea micşorării erorilor?Justificaţi răspunsul.2. Cum este influenţată precizia metodei de precizia sistemului de calcul?3. Scrieţi o ecuaţie de forma:dy= f(t,y)dty(0) = y 0pentru a descrie variaţia curentului printr-o bobină cu inductivitate L şi rezistenţăR ce este conectată la o sursă de t.e.m. continuă de valoare E. Utilizaţi opţiuneaRezolvare ecuaţie test pentru a o rezolva.4. Daţi exemple de categorii de circuite electrice ce se pot analiza cu metoda Euler.5. Generaţi un algoritm care foloseşte metoda Euler pentru rezolvarea unor sisteme deecuaţii diferenţiale de ordinul I.6. Generaţi un algoritm care modifică automat pasul de integrare, pentru a menţineeroarea globală la o valoare impusă cu un efort minim de calcul.7. ScrieţiunalgoritmpentrucalcululintegralelordefinitealefuncţiiloraplicândmetodaEuler.8. Analizaţi deosebirea dintre stabilitatea unei ecuaţii diferenţiale şi stabilitatea einumerică.9.Îmbunătăţiţi algoritmul Euler considerând mai mulţi termeni din seria Taylor afuncţiei y(t).10. Scrieţi o variantă a algoritmului euler imp <strong>în</strong> care rezolvarea ecuaţiei neliniare săse facă cu metoda Newton.11. Descrieţi rezolvarea numerică a unui sistem de ecuaţii diferenţiale ordinare. Cumpoate fi aplicat acest algoritm <strong>în</strong> analiza numerică a circuitelor electrice neliniare<strong>în</strong> regim tranzitoriu? Arătaţi ca la fiecare pas de integrare <strong>în</strong> timp trebuie rezolvat


10.7. Probleme şi <strong>în</strong>trebări 205un circuit electric liniar, pentru care se poate aplica algoritmul din Lucrarea nr. 5.Cum se obtin circuitele companion, care sunt echivalente elementelor reactive: L,C?12. Rezolvaţi numeric diferite ecuaţii de stare, liniare sau neliniare <strong>în</strong> mediul MAT-LAB/SCILAB.13. Identificaţi<strong>în</strong>bibliotecamatematicădescrisă<strong>în</strong>[2]funcţiiavansatepentruintegrareanumerică a ecuaţiilor diferenţiale ordinare (Runge-Kutta, extrapolare Richardson,predictor-corector, pentru ecuaţii stiff). Ce aduc nou aceste funcţii, faţă de celeanalizate <strong>în</strong> lucrare?Leonhard Euler (1707, Elveţia - 1783, Rusia)http://www-gap.dcs.st-and.ac.uk/ history/Mathematicians/Euler.html


206 Capitolul 10. Rezolvarea ecuaţiilor diferenţiale ordinare prin metoda Euler


Bibliografie şi webografie[1] D. Ioan, I. Munteanu, B. Ionescu, M. Popescu, R. Popa, M. Lăzărescu şi G. Ciuprina.<strong>Metode</strong> <strong>numerice</strong> <strong>în</strong> <strong>ingineria</strong> <strong>electrică</strong>. MATRIX ROM, Bucureşti, România, a douaed., 1998.[2] W.H. Press, S.A. Teukolsky, W.T. Vetterling şi B.P. Flannery. Numerical Recipes inC, The Art of Scientific Computing, Second Edition. Cambridge University Press,1992, http://www.nrbook.com/a/bookcpdf.php.207

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

Saved successfully!

Ooh no, something went wrong!