You are on page 1of 222

Gabriela Ciuprina, Mihai Rebican, Daniel Ioan

Metode numerice n ingineria electric a


Indrumar de laborator pentru student ii facult a tii de Inginerie Electric a

2013

Cuprins
0 Preliminarii asupra Laboratorului de Metode Numerice 0.1 0.2 0.3 0.4 Informat ii utile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modul de desf a surare a unei sedint e de seminar sau laborator . . . . . . . 1 1 4 5 6 6

Programe demonstrative . . . . . . . . . . . . . . . . . . . . . . . . . . . . Implementare in C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 0.4.1 0.4.2 0.4.3 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Vectori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 13

1 Implementarea structurilor de date si a algoritmilor numerici 1.1 1.2

Caracterizarea lucr arii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Descrierea pseudolimbajului . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.2.1 1.2.2 Structuri de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Structuri de control . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

1.3 1.4 1.5 1.6 1.7

Tipuri abstracte de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Complexitatea algoritmilor . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Chestiuni de studiat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Modul de lucru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 1.7.1 1.7.2 Exemple rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Exemple propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

1.8 Intreb ari si probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 i

ii

CUPRINS

2 Erori n rezolvarea problemelor numerice 2.1 2.2

49

Caracterizarea lucr arii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Principiul lucr arii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 2.2.1 2.2.2 2.2.3 Erori de rotunjire . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Erori inerente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Erori de trunchiere . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

2.3 2.4

Chestiuni de studiat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Modul de lucru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 2.4.1 2.4.2 2.4.3 2.4.4 Determinarea erorii relative de rotunjire a sistemului de calcul . . . 56 Analiza propag arii erorilor inerente . . . . . . . . . . . . . . . . . . 56 Analiza erorii de trunchiere . . . . . . . . . . . . . . . . . . . . . . 57 Implementarea unor algoritmi cu controlul erorii . . . . . . . . . . . 58

2.5

Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 2.5.1 2.5.2 Exemple rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Exemple propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

2.6 Intreb ari si probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 3 Rezolvarea sistemelor de ecuat ii liniare prin metoda Gauss 3.1 63

Metoda Gauss f ar a pivotare . . . . . . . . . . . . . . . . . . . . . . . . . . 63 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 Caracterizarea metodei . . . . . . . . . . . . . . . . . . . . . . . . . 63 Principiul metodei . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Pseudocodul algoritmului Gauss f ar a pivotare . . . . . . . . . . . . 65 Analiza complexit a tii . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Analiza erorilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

3.2

Strategii de pivotare n rezolvarea sistemelor algebrice liniare . . . . . . . . 67 3.2.1 3.2.2 3.2.3 3.2.4 Caracterizarea metodei . . . . . . . . . . . . . . . . . . . . . . . . . 67 Principiul metodei . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Pseudocodul algoritmului Gauss cu pivotare part ial a . . . . . . . . 68 Analiza complexit a tii . . . . . . . . . . . . . . . . . . . . . . . . . . 70

CUPRINS

iii

3.2.5 3.3 3.4

Analiza erorilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

Chestiuni de studiat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Modul de lucru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 3.4.1 3.4.2 3.4.3 3.4.4 Rezolvarea unor sisteme algebrice liniare . . . . . . . . . . . . . . . 71 Analiza experimental a a algoritmului . . . . . . . . . . . . . . . . . 71 Implementarea algoritmilor ntr-un limbaj de programare . . . . . 72

C autare de informat ii . . . . . . . . . . . . . . . . . . . . . . . . . . 73

3.5

Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 3.5.1 3.5.2 Exemple rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Exemple propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

3.6 Intreb ari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4 Metode iterative de rezolvare a sistemelor algebrice liniare 4.1 4.2 4.3 4.4 4.5 4.6 83

Caracterizarea metodelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Principiul metodei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Pseudocodul algoritmilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Analiza algoritmilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Chestiuni de studiat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Mod de lucru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 4.6.1 4.6.2 4.6.3 4.6.4 Rezolvarea unor sisteme prin metodele Jacobi/Gauss-Seidel . . . . . 90 Analiza experimental a a algoritmilor . . . . . . . . . . . . . . . . . 91 Implementarea algoritmilor . . . . . . . . . . . . . . . . . . . . . . 92

C autare de informat ii pe Internet . . . . . . . . . . . . . . . . . . . 92

4.7

Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 4.7.1 4.7.2 Exemple rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Exemple propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

4.8 Intreb ari si probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

iv

CUPRINS

5 Analiza numeric a a circuitelor electrice liniare n regim permanent 5.1 5.2 5.3 5.4 5.5 5.6

107

Caracterizarea lucr arii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Principiul metodei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Pseudocodul metodei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Analiza algoritmilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Chestiuni de studiat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Modul de lucru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 5.6.1 5.6.2 5.6.3 5.6.4 Analiza numeric a a unui circuit rezistiv liniar . . . . . . . . . . . . 114 Analiza unui circuit de curent alternativ . . . . . . . . . . . . . . . 115 Implementarea algoritmilor . . . . . . . . . . . . . . . . . . . . . . 116

C autarea de informat ii pe Internet . . . . . . . . . . . . . . . . . . 116

5.7

Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 5.7.1 5.7.2 Exemple rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Exemple propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

5.8 Intreb ari si probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 6 Interpolarea polinomial a a funct iilor reale 6.1 6.2 6.3 6.4 123

Caracterizarea metodei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Principiul metodei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Pseudocodul algoritmilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Analiza complexit a tii algoritmilor . . . . . . . . . . . . . . . . . . . . . . . 132 6.4.1 6.4.2 Efort de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Necesar de memorie . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

6.5 6.6 6.7

Eroarea de interpolare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Chestiuni de studiat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 Mod de lucru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 6.7.1 6.7.2 6.7.3 Interpolarea polinomial a a funct iilor pe ret ele uniforme/Ceb sev . . 136 Analiza experimental a a erorilor de interpolare . . . . . . . . . . . . 137 Analiza experimental a a timpului de calcul necesar interpol arii . . 137

CUPRINS

6.7.4 6.7.5 6.8

Implementarea unor algoritmi de interpolare polinomial a . . . . . . 137 C autare de informat ii pe Internet . . . . . . . . . . . . . . . . . . . 138

Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 6.8.1 6.8.2 Exemple rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 Exemple propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

6.9 Intreb ari si probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 7 Derivarea numeric a a funct iilor reale 7.1 7.2 7.3 7.4 7.5 7.6 149

Caracterizarea metodelor de derivare numeric a . . . . . . . . . . . . . . . . 149 Principiile metodelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Analiza algoritmilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 Pseudocodul metodei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 Chestiuni de studiat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 Modul de lucru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 7.6.1 7.6.2 7.6.3 7.6.4 7.6.5 Evaluarea numeric a a primei derivate . . . . . . . . . . . . . . . . . 155 Analiza experimental a a erorii de derivare numeric a . . . . . . . . . 155 Analiza deriv arii numerice de ordin superior . . . . . . . . . . . . . 156 Implementarea algoritmului . . . . . . . . . . . . . . . . . . . . . . 156 C autare de informat ii pe Internet . . . . . . . . . . . . . . . . . . . 157

7.7

Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 7.7.1 7.7.2 Exemple rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 Exemple propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

7.8

Probleme si ntreb ari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 161

8 Integrarea numeric a a funct iilor reale 8.1 8.2 8.3 8.4 8.5

Caracterizarea metodelor de integrare numeric a . . . . . . . . . . . . . . . 161 Principiul metodei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 Pseudocodul algoritmilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 Analiza algoritmilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 Chestiuni de studiat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

vi

CUPRINS

8.6

Modul de lucru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 8.6.1 8.6.2 8.6.3 8.6.4 Calculul integralei unor funct ii elementare . . . . . . . . . . . . . . 166 Analiza erorii la integrarea numeric a . . . . . . . . . . . . . . . . . 167 Implementarea algoritmului . . . . . . . . . . . . . . . . . . . . . . 167 C autare de informat ii pe Internet . . . . . . . . . . . . . . . . . . . 168

8.7

Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 8.7.1 8.7.2 Exemple rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 Exemple propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

8.8

Probleme si ntreb ari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 177

9 Rezolvarea numeric a prin metode iterative a ecuat iilor neliniare 9.1 9.2 9.3 9.4 9.5 9.6

Caracterizarea lucr arii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 Principiul lucr arii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 Pseudocodul algoritmilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 Analiza algoritmilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Chestiuni de studiat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 Modul de lucru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 9.6.1 9.6.2 9.6.3 9.6.4 Rezolvarea unor ecuat ii neliniare prin diferite metode iterative . . . 185 Analiza experimental a a erorilor si a timpului de calcul . . . . . . . 185 Implementarea algoritmilor de rezolvare a ecuat iilor neliniare . . . . 186 C autare de informat ii pe Internet . . . . . . . . . . . . . . . . . . . 187

9.7

Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 9.7.1 9.7.2 Exemple rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 Exemple propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192

9.8 Intreb ari si probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 10 Rezolvarea ecuat iilor diferent iale ordinare prin metoda Euler 195

10.1 Caracterizarea metodei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 10.2 Principiul metodei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 10.3 Pseudocodul metodei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196

CUPRINS

vii

10.4 Analiza algoritmului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 10.5 Chestiuni de studiat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 10.6 Mod de lucru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 10.6.1 Rezolvarea unor ecuat ii diferent iale de ordin 1 . . . . . . . . . . . . 201 10.6.2 Analiza experimental a a erorilor si a timpului de calcul . . . . . . . 202 10.6.3 Rezolvarea unei ecuat ii diferent iale caracteristice unui circuit . . . . 202 10.6.4 Implementarea algoritmului ntr-un limbaj de programare . . . . . . 203 10.6.5 C autare de informat ii pe Internet . . . . . . . . . . . . . . . . . . . 204 10.7 Probleme si ntreb ari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 Bibliograe si webograe 206

Not a Acest ndrumar prezint a lucr arile de laborator efectuate n prezent de student ii Facult a tii de Inginerie Electric a, n cadrul disciplinei Metode numerice. Partea teoretic a a acestor lucr ari este preluat a n cea mai mare parte din cartea Metode numerice n ingineria electric a [1], n timp ce programele demonstrative la care se face referire, au fost rescrise integral n Scilab (G. Ciuprina). De asemenea, n lucrarea de fat a au fost ad augate exercit ii explicative (G. Ciuprina si M. Rebican) pentru a facilita nt elegerea metodelor explicate.

Lucrarea 0 Preliminarii asupra Laboratorului de Metode Numerice


0.1 Informat ii utile

Lista de lucr ari 1. Algoritmi si structuri de date 2. Erori in calculele numericei 3. Metoda Gauss - f ar a si cu pivotare 4. Metode iterative pentru rezolvarea sistemelor liniare 5. Rezolvarea circuitelor rezistive liniare 6. Interpolarea numeric a a funct iilor 7. Derivarea numeric a a funct iilor 8. Integrarea numeric a a funct iilor 9. Rezolvarea ecuat iilor neliniare 10. Rezolvarea ecuat iilor diferent iale Calendar S apt am ana 1 (S1): Prezentarea laboratorului 1

Capitolul 0. Preliminarii asupra Laboratorului de Metode Numerice

S2: L1 + L2 - seminar S3: L1 + L2 - laborator S4: L3 + L4 - seminar S5: L3 + L4 - laborator S6: L5 seminar S7: T1 - Test de aplicat ii numerice si ntreb ari - partea I S8: L6 - seminar S9: L6 - laborator S10: L7 + L8 - seminar S11: L7 + L8 - laborator S12: L9 + L10 - seminar S13: L19 + L10 - laborator S14: T2 - Test de aplicat ii numerice si ntreb ari - partea a II-a; test de implementare Regulament Un student poate intra n examen doar dac a particip a la minim 5 sedint e de seminar (din maxim 6), 4 sedint e de laborator (din maxim 5) si cele dou a teste de aplicat ii numerice si ntreb ari si testul de implementare. Practic, se admite o singur a absent a la seminar si o singur a absent a la laborator. De ment ionat c a laboratorul reprezint a 50 % din punctajul notei la aceast a disciplin a. De si teoretic este posibil ca un student care are punctaj zero la laborator s a promoveze aceast a disciplin a, acumul and punctaj maxim la examen, experient a anilor anteriori nu a oferit niciun astfel de exemplu. Deoarece posibilit a tile de recuperare a laboratoarelor sunt limitate, refacerea unei lucr ari de seminar sau laborator se poate realiza numai n cursul s apt am anii afectate lucr arii si numai n m asura n care exist a un calculator liber. Este permis a refacerea lucr arii numai la grupele din seria de care apart ine studentul respectiv. Nu se refac lucr ari de seminar sau laborator la sf ar situl semestrului! Inainte de ecare sedint a de seminar se recomand a ca ecare student s a citeasc a lucrarea care urmeaz a a efectuat a, conform calendarului. Se va pune accent n special pe aspecte teoretice si exemple rezolvate.

0.1. Informat ii utile

La nceputul unei sedint e de laborator ecare student trebuie s a prezinte un prereferat al lucr arii care urmeaz a a efectuat a, conform calendarului. Student ii care nu au pre-referate nu vor primit i s a efectueze lucrarea. Pe parcursul sedint ei, studentul si completeaz a pre-referatul cu date, grace si concluzii. Student ii trebuie sa aib a la ei hartie milimetric a pentru trasarea gracelor. Astfel, se realizeaz a referatul, care trebuie predat la nceputul sedint ei din s apt am ana urm atoare. Modul de notare al laboratorului Fiecare tem a de laborator (L*) este punctat a cu o not a ntre 1 si 10 pentru referat. Referatul va cont ine: 1. Numele studentului si grupa din care face parte 2. Numele cadrului didactic ndrumator 3. Titlul lucrarii 4. Scopul lucrarii 5. Rezultate experimentale, grace, etc. (conform cerint elor din ndrumar) 6. Observat ii si concluzii Pre-referatul va cont ine punctele 1, 2, 3, 4 din referat. Foarte important: Observat iile si, mai ales, concluziile au ponderea cea mai mare n nota primit a pe referat. Un referat f ar a observat ii si concluzii poate avea nota maxim a 4 din 10. Dou a sau mai multe referate care cont in observat ii si concluzii identice vor avea ecare nota 1. Referatul nu trebuie s a cont in a: descrierea lucr arii, principiul algoritmilor, pseudocodul algoritmilor. Testele de aplicat ii numerice si ntreb ari (din s apt am anile 7 si 14) vor realizate n scris si constau n rezolvarea numeric a a unor exemple cu ajutorul metodelor studiate. Testele de aplicat ii si ntreb ari vor punctate cu note ntre 1 si 10. Testul de implementare (din s apt am ana 14) va consta n implementarea n limbajul de programare C sau limbajul Matlab (Scilab) a unuia din pseudocodurile lucr arilor studiate. Testul de implementare va punctat cu o not a ntre 1 si 10. Pentru preg atirea acestui test, student ii vor ncurajat i s a exerseze implementarea algoritmilor pe parcursul sedint elor de laborator.

Capitolul 0. Preliminarii asupra Laboratorului de Metode Numerice

Nota de laborator reprezint a 50% din nota disciplinei Metode Numerice n Ingineria Electric a, si se calculeaz a astfel: 15% pentru referate; 30% pentru cele dou a teste de aplicat ii numerice; 5% pentru testul de implementare.

Modul de calcul al notei nale va prezentat la curs.

0.2

Modul de desf a surare a unei sedint e de seminar sau laborator

Fiecare sedint a de seminar sau laborator dureaz a 2 ore si are o anumit a tematic a (vezi subcapitolul 0.1). In cadrul sedint ei de seminar sunt prezentate student ilor de c atre cadrul didactic urm atoarele chestiuni despre lucrarea respectiv a: aspecte teoretice si exemple rezolvate. De asemenea, se vor prezenta pe scurt chestiunile de studiat si modul de lucru, aspecte necesare pentru efectuarea lucr arii de laborator n s apt am ana urm atoare. De ment ionat c a exemplele rezolvate la ecare sedint a de seminar sunt esent iale pentru cele dou a teste de aplicat ii numerice. Activit a tile propriu-zise pe care trebuie s a le desf a soare ecare student ntr-o sedint a de laborator sunt prezentate mai jos. Prima activitate const a n exploatarea unor programe demonstrative ce ilustreaz a tematica lucr arii. Sistemul de operare sub care se lucreaz a este Linux (http://www.linux.org/). Programele demonstrative sunt scrise in Scilab (http://www.scilab.org/) dar exploatarea lor nu necesit a cunoa sterea acestui limbaj de programare. In urma exploat arii acestor programe, studentul trebuie s a redacteze un referat, conform cerint elor ec arei lucr ari, si s a l predea la sf ar situl sedint ei. In m asura timpului disponibil, se va implementa cel put in unul din algoritmii studiat i n cadrul temei respective. Implementarea se va efectua n limbajul C sau limbajul Scilab, n concordant a cu pseudocodul prezentat n lucrare.

0.3. Programe demonstrative

Figura 1: Meniul principal al programelor demonstrative.

0.3

Programe demonstrative

Pentru lansarea programelor demonstrative facet i un singur clic pe icoana cu sigla LMN. In continuare urmat i modul de lucru descris n ndrumar. Observat ie: programele demonstrative sunt disponibile la adresa http://mn.lmn.pub.ro/. Pentru a putea lucra cu ele trebuie s a avet i instalate sistemul de operare Linux si pachetul de programe Scilab. Arhiva LMN.tar.gz trebuie decomprimat a si dezarhivat a. Lansat i Scilab si la consola acestuia tastat i exec(main.sci). Meniul principal este cel prezentat n gura 1. Not a important a Pentru ca un referat s a e luat n considerare, prezent a la laborator este obligatorie. Este obligatoriu ca exploatarea acestor programe s a e f acut a sub ndrumarea cadrului didactic. Exercit ii: 1. Intrat i n contul dvs.; 2. Remarcat i icoana LMN si executat i un singur clic pe ea; 3. Inchidet i programele demonstrative.

Capitolul 0. Preliminarii asupra Laboratorului de Metode Numerice

0.4

Implementare in C

Inainte de toate, v a este util a o re mprosp atare a cuno stiint elor de C dob andite n anii anteriori. Metodele numerice ce vor studiate implementeaz a n exclusivitate algoritmi numerici, care efectueaz a de cele mai multe ori calcule cu vectori si matrice. De aceea, n cele ce urmeaz a vom face c ateva considerat ii asupra declar arii si aloc arii vectorilor si matricelor, astfel nc at activitatea de programare n cadrul acestui laborator s a e c at mai ecient a. Pentru nceput ns a, v a recomand am s a studiat i cu atent ie urm atoarele exemple si apoi, pentru ntelegerea lor, s a cit it i paragrafele urm atoare.

0.4.1

Exemple

La adresa http://mn.lmn.pub.ro/ g asit i dou a exemple pentru a v a familiariza cu stilul de lucru al acestui laborator. 1. Creat i un director numit L0 cu comanda mkdir L0 2. Descarcat i sierele nrutil lmn.c, nrutil lmn.h, aduna vec.c, rw matrix.c. 3. Comentat i cont inutul acestor siere. 4. Compilat i primul exemplu cu comanda gcc aduna_vec.c nrutil_lmn.c -o aduna_vec 5. Executat i programul cu comanda ./aduna_vec 6. Compilat i al doilea exemplu cu comanda gcc rw_matrix.c nrutil_lmn.c -o rw_matrix 7. Executat i programul cu comanda ./rw_matrix

0.4. Implementare in C

Observat ie: Comanda de compilare cont ine un sier surs a C ( n care se a a funt ia main si o funct ie ce implementeaz a un anumit pseudocod), apoi sierul nrutil lmn.c ( n care se a a funct iile de alocare/dealocare de memorie). Numele ce urmeaz a dup a -o este numele programului executabil generat. Iat a cont inutul acestor siere: Fi sierul aduna vec.c
#include "nrutil_lmn.h" void aduna_vectori1 (int , VECTOR , VECTOR , VECTOR ); int main (void) { /* program principal - adunarea a doi vectori * apeleaza aduna_vectori */ int n; /* dimensiunea vectorilor */ VECTOR a, b; /* vectorii de intrare */ VECTOR c; /* vectorul rezultat c = a + b */ int i; printf ("\n Introduceti dimensiunea vectorilor "); scanf ("%d", &n); /* aloca spatiu de memorie pentru vectori */ a = vector (1, n); b = vector (1, n); c = vector (1, n); /* citeste vectorii a si b */ for (i = 1; i <= n; i++) { printf ("\n a[%d] = ", i); scanf ("%f", &a[i]); } for (i = 1; i <= n; i++) { printf ("\n b[%d] = ", i); scanf ("%f", &b[i]); } aduna_vectori1 (n, a, b, c); /* afiseaza rezultat */ printf ("\n Rezultatul este \n"); for (i = 1; i <= n; i++) printf ("c[%d] = %f \n", i, c[i]);

/* elibereaza free_vector free_vector free_vector return (0); }

spatiu (a, 1, (b, 1, (c, 1,

de memorie */ n); n); n);

void aduna_vectori1 (int n, VECTOR a, VECTOR b, VECTOR c) { /* aduna doi vectori a + b, a caror indecsi incep de la 1 */ int i; for (i = 1; i <= n; i++) c[i] = a[i] + b[i]; }

Fi sierul rw matrix.c:
#include "nrutil_lmn.h"

Capitolul 0. Preliminarii asupra Laboratorului de Metode Numerice

int main (void) { /* program principal - citeste o matrice patrata, reala, int n; /* dimensiunea matricelor */ MATRIX a; /* matricea */ int i, j; printf ("\n Introduceti dimensiunea matricei "); scanf ("%d", &n); /* aloca spatiu de memorie pentru matrice a = matrix (1, n, 1, n); /* citeste matricea */ for (i = 1; i <= n; i++) for (j = 1; j <= n; j++) { printf ("\n a[%d][%d] = ", i, j); scanf ("%f", &a[i][j]); } /* afiseaza matricea */ printf ("\n Matricea citita este \n"); for (i = 1; i <= n; i++) for (j = 1; j <= n; j++) printf ("a[%d][%d] = %f \n", i, j, a[i][j]); */

si o scrie */

/* elibereaza spatiu de memorie */ free_matrix (a, 1, n, 1, n); return (0); }

Fi sierul nrutil lmn.c


#include "nrutil_lmn.h" void nrerror (char error_text[]) { fprintf (stderr, "Run-time error...\n"); fprintf (stderr, "%s\n", error_text); fprintf (stderr, "...now exiting to system...\n"); exit (1); }

VECTOR vector (int nl, int nh) { VECTOR v; v = (float *) malloc ((unsigned) (nh - nl + 1) * sizeof (float)); if (!v) nrerror ("allocation failure in vector()"); return v - nl; }

IVECTOR ivector (int nl, int nh) { IVECTOR v; v = (int *) malloc ((unsigned) (nh - nl + 1) * sizeof (int)); if (!v) nrerror ("allocation failure in ivector()"); return v - nl; }

MATRIX matrix (int nrl, int nrh, int ncl, int nch) { int i; MATRIX m; m = (float **) malloc ((unsigned) (nrh - nrl + 1) * sizeof (float *));

0.4. Implementare in C

if (!m) nrerror ("allocation failure 1 in matrix()"); m -= nrl; for (i = nrl; i <= nrh; i++) { m[i] = (float *) malloc ((unsigned) (nch - ncl + 1) * sizeof (float)); if (!m[i]) nrerror ("allocation failure 2 in matrix()"); m[i] -= ncl; } return m; }

IMATRIX imatrix (int nrl, int nrh, int ncl, int nch) { int i; IMATRIX m; m = (int **) malloc ((unsigned) (nrh - nrl + 1) * sizeof (int *)); if (!m) nrerror ("allocation failure 1 in imatrix()"); m -= nrl; for (i = nrl; i <= nrh; i++) { m[i] = (int *) malloc ((unsigned) (nch - ncl + 1) * sizeof (int)); if (!m[i]) nrerror ("allocation failure 2 in imatrix()"); m[i] -= ncl; } return m; } void free_vector (VECTOR v, int nl, int nh) { free ((char *) (v + nl)); } void free_ivector (IVECTOR v, int nl, int nh) { free ((char *) (v + nl)); } void free_matrix (MATRIX m, int nrl, int nrh, int ncl, int nch) { int i; for (i = nrh; i >= nrl; i--) free ((char *) (m[i] + ncl)); free ((char *) (m + nrl)); } void free_imatrix (IMATRIX m, int nrl, int nrh, int ncl, int nch) { int i; for (i = nrh; i >= nrl; i--) free ((char *) (m[i] + ncl)); free ((char *) (m + nrl)); }

Fi sierul nrutil lmn.h


#include<stdio.h> #include<stdlib.h> #include<math.h> #include<malloc.h> #include<time.h> typedef typedef typedef typedef float **MATRIX; float *VECTOR; int **IMATRIX; int *IVECTOR;

void nrerror (char error_text[]);

10

Capitolul 0. Preliminarii asupra Laboratorului de Metode Numerice

VECTOR 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

In C exist a o str ans a corespondent a ntre adrese (pointeri) si tablouri. In acest paragraf vom considera tablourile unidimensionale. Valoarea reprezentat a de a[j] este acela si lucru cu *(a+j) adic a cont inutul adresei obt inute increment and pointer-ul a cu j. O consecint a a acestei denit ii este aceea c a dac a a este adresa unei locat ii valide, atunci a[0] este ntotdeauna denit. Tablourile unidimenionale au n C, n mod natural, originea n 0. Un sir denit de float b[4] are referint ele valide b[0], b[1], b[2] si b[3], dar nu si b[4]. Problema este c a mult i algoritmi sunt descri si n mod natural cu indici care ncep de la 1. Cu sigurant a c a ace sti algoritmi pot modicat i, dar aceasta presupune o aritmetic a suplimentar a n operarea cu indici, lucru care nu este prea pl acut. Putem ns a folosi puterea limbajului C pentru ca aceast a problem a s a dispar a. Ideea este simpl a: float b[4], *bb; bb = b - 1; Pointer-ul bb indic a acum o locat ie naintea lui b. In consecint a, elementele bb[1], bb[2], bb[3] si bb[4] exist a si vectorul bb are indici ce pornesc de la 1. Uneori este convenabil s a avem vectori care pornesc din 0, iar alteori este convenabil s a avem vectori care pornesc din 1. De exemplu, coecient ii unui polinom a0 + a1 x + . . . an xn necesit a un vector cu indici ce ncep cu 0, pe c and termenul liber al unui sistem de ecuat ii bi , i = 1, . . . , n necesit a un vector cu indici ce ncep din 1. Pentru a evita rescrierea algoritmilor ce sunt dedu si n mod natural cu indici ce pornesc de la 1, putet i folosi o funct ie cu urm atoarea denit ie. typedef float *VECTOR; VECTOR vector (int nl, int nh) {

0.4. Implementare in C

11

VECTOR v; v = (float *) malloc ((unsigned) (nh - nl + 1) * sizeof (float)); if (!v) nrerror ("allocation failure in vector()"); return v - nl; } Aceast a funct ie aloc a un vector de variable de tip float, care vor accesate cu indici cuprin si ntre nl si nh. O utilizare tipic a a acestei funct ii este float *b; b = vector(1,7); Aceast a funct ie precum si funct ii similare ce aloc a vectori de ntregi se g asesc n sierul nrutil lmn.c pe care l putet i desc arca de la adresa http://mn.lmn.pub.ro/. Acest sier cont ine si rutinele corespunz atoare de dealocare. De exemplu, pentru dealocarea memoriei ocupate de vectorul denit mai sus, instruct iunea este free_vector(b,1,7);

0.4.3

Matrice

Problema indicilor ce pornesc de la 0 sau de la 1 apare si n cazul matricelor. In sintaxa C, lucrul cu tabele bidimensionale este put in mai complicat. S a consider am o valoare real a a[i][j] unde i si j sunt ntregi. Un compilator de C va genera coduri ma sin a diferite pentru aceast a referint a, aceasta depinz and de declarat ia pentru variabila a. Dac a a a fost declarat a de dimensiune x a, de exemplu float a[2][4] atunci codul ma sin a ar putea descris astfel: la adresa a adun a de 4 ori i, apoi adun aj si ntoarce valoarea astfel adresat a. Observat i c a valoarea constant a 4 trebuie cunoscut a pentru a efectua n mod corect calculele. S a presupunem c a a a fost declarat ca float **a. Atunci codul ma sin a a[i][j] este la adresa a adun a i, valoarea astfel adresat a consider-o o nou a adres a, la care adun aj si ntoarce valoarea astfel adresat a. Ilustrarea celor dou a moduri de accesare a unei valori este dat a n gura 2. Observat i c a n al doilea caz nu este necesar a cunoa sterea dimensiunii matricei si c a nu este nevoie de nici o nmult ire. O indirectare suplimentar a nlocuie ste aceste informat ii. Aceast aa doua schem a o recomand am pentru lucrul la laboratorul de metode numerice.

12

Capitolul 0. Preliminarii asupra Laboratorului de Metode Numerice

**m

[0][0]

[0][1]

[0][2]

[0][3]

[0][4]

[1][0]

[1][1]

[1][2]

[1][3]

[1][4]

[2][0]

[2][1]

[2][2]

[2][3]

[2][4]

(a) **m *m[0] [0][0] [0][1] [0][2] [0][3] [0][4]

*m[1]

[1][0]

[1][1]

[1][2]

[1][3]

[1][4]

*m[2]

[2][0]

[2][1] (b)

[2][2]

[2][3]

[2][4]

Figura 2: Dou a scheme de memorare pentru matricea m. Liniile ntrerupte reprezint a pointeri la adrese, iar liniile continue conecteaz a locat ii de memorie secvent iale. (a) Pointer la un tablou bidimensional de dimensiune xat a; (b) Pointer la un tablou de pointeri c atre pointeri la linii. Ideea pe scurt: vom evita tablourile bidimensionale de dimensiune x a. Ele nu sunt structuri de date potrivite pentru reprezentarea matricelor n calculele stiint ice.

Lucrarea 1 Implementarea structurilor de date si a algoritmilor numerici


1.1 Caracterizarea lucr arii

Rezolvarea problemelor stiint ice si tehnice cu ajutorul calculatorului numeric presupune identicarea unei metode matematice de rezolvare si apoi implementarea acesteia pe un sistem de calcul. In afara algoritmului propriu-zis de rezolvare, un rol la fel de important n implementare l are si alegerea exact a a structurilor de date. In nal, programul se bazeaz a pe algoritm (descrierea operat iilor ce vor efectuate pentru obt inerea solut iei) si pe structura de date (modul n care se reprezint a datele de intrare, variabilele intermediare si datele de ie sire). Pentru descrierea structurilor de date si a algoritmilor se poate utiliza un limbaj de programare (Basic, FORTRAN, Pascal, C, etc.) sau un pseudolimbaj cu o sintax a mai put in rigid a. Pentru a evident ia invariant a algoritmilor la limbajul ales se prefer a a doua metod a. Scopul acestei lucr ari este de a familiariza utilizatorii cu g andirea algoritmic a structurat a (prin folosirea pseudocodului), de a evident ia metodele de implementare a pseudocodului n diferite limbaje de programare si, nu n ultimul r and, de a evident ia important a tipurilor abstracte de date cu caracter matematic (vectori, matrice, numere complexe, etc.).

1.2

Descrierea pseudolimbajului

Pseudocodul (pseudolimbajul) este o metod a simpl a si ecient a pentru reprezentarea unui algoritm si a structurilor de date asociate. Pseudocodul este de fapt un text alc atuit 13

14

Capitolul 1. Implementarea structurilor de date si a algoritmilor numerici

din linii (r anduri), ecare cont in and, de regul a, o declarat ie (al c arei scop principal const a n descrierea datelor) sau o instruct iune (care descrie o operat ie ce va efectuat a). O linie de pseudocod este alc atuit a din cuvinte si simboluri (caractere speciale nealfanumerice). Anumite cuvinte, cu o semnicat ie bine determinat a, independente de aplicat ie, se numesc cuvinte cheie si pentru a deosebite de celelalte cuvinte, specice aplicat iei sunt de obicei ngro sate. Orice linie poate cont ine preciz ari suplimentare, numite comentarii, care ajut a la nt elegerea pseudocodului, f ar a s a fac a parte din descrierea propriu-zis a a algoritmului sau a structurii de date. Comentariile sunt plasate la sf ar situl liniei cu caracterul ;.

1.2.1

Structuri de date

Declarat iile se refer a la datele cu care se opereaz a si care pot de tip simplu (fundamental) sau structurate (agregate). Se consider a urm atoarele categorii de date fundamentale: logic - date cu dou a valori (0 = fals si 1 = adev arat); ntreg - date care pot avea valori ntregi; real - aproxim ari ale numerelor reale; caracter - liter a, cifr a sau semn special (aritmetic sau de punctuat ie). Exemple de declarat ii ale unor variabile de tip fundamental: logic l1, l2, l3 ntreg i, j, s real a, m, x, j caracter c Se constat a c a o declarat ie cont ine cuv antul cheie ce specic a tipul, urmat de lista numelor variabilelor de tipul respectiv, nume separate prin virgul a. Numele variabilelor sunt cuvinte alc atuite din litere si cifre (primul caracter trebuie s a e liter a) si au semnicat ia limitat a la aplicat ia respectiv a. Se recomand a ca numele variabilelor s a e sugestiv alese (de exemplu: masa, volum, curent, etc.), iar pentru eliminarea ambiguit a tilor, ecare m arime cu care se opereaz a ntr-o problem a s a aib a propria sa declarat ie, eventual nsot it a de un comentariu: real q real i ; sarcina corpului ; intensitatea curentului

1.2. Descrierea pseudolimbajului

15

Pentru rezolvarea unor probleme mai complicate, tipurile fundamentale de date nu sunt suciente, ci este necesar a o agregare a datelor. Acest lucru se realizeaz a prin folosirea cuvintelor cheie: tablou - structur a de date ce cont ine un num ar cunoscut de elemente de acela si tip; nregistrare - structur a de date ce poate cont ine elemente de tipuri diferite. O declarat ie de variabil a de tip tablou cont ine cuv antul cheie tablou, numele tabloului (variabilei) si dimensiunea acestuia. Exemple de declarat ii de tablou: tablou real V [3] ; V este un tablou de trei elemente reale tablou ntreg a[5], b[7] ; a este un tablou de 5 intregi si b este un tablou de 7 ntregi Cu toate c a tabloul are un singur nume pentru ntreaga structur a de date, elementele acestuia se identic a folosind indexul (num arul de ordine al elementului), ca de exemplu: V (1), V (2), b(5), etc. In pseudocod se permite si folosirea notat iilor V1 , V2 , b5 , etc. sau Vi , cu condit ia ca i s a e cuprins ntre 1 si dimensiunea tabloului (pentru tabloul V de nau sus, 1 i 3). Exemplu de declarat ie a unei nregistr ari: nregistrare punct logic cartezian real x1 real x2

Aceast a nregistrare se refer a la conceptul de punct, care este denit ca o agregare a unei variabile logice cartezian si a dou a variabile reale x1 , x2 . Punctul poate descris prin coordonate carteziene (cartezian = adev arat, x1 = x, x2 = y ) sau polare (cartezian = fals, x1 = raza, x2 = unghiul). Un alt exemplu l constituie : nregistrare monom ntreg n real a

16

Capitolul 1. Implementarea structurilor de date si a algoritmilor numerici

care reprezint a monomul axn , descris de ordinul ntreg n si coecientul real a. Referirea la un element al nregistr arii se face prin numele nregistr arii urmat de numele c ampului (elementului), nume separate prin caracterul ., de exemplu: monom.a, punct.cartezian, etc. In pseudolimbaj se admit mai multe niveluri de agregare, deci se pot construi tabele de tabele, tablou de nregistr ari sau alte combinat ii. Pentru a u sura astfel de construct ii se introduce cuv antul cheie tip, care atunci c and precede o declarat ie are ca efect extinderea tipurilor standard logic, ntreg, real, caracter, tablou, nregistrare cu un nou tip de date denit de utilizator si indicat de numele variabilei introdus prin declarat ia respectiv a. De exemplu: tip tablou real vector[3] ; introduce tipul vector nregistrare monom ; introduce tipul monom ntreg n real a

Declarat ia: tip tablou monom polinom[10]

introduce tipul polinom ca ind un tablou de 10 elemente, ecare element ind de tip monom.

1.2.2

Structuri de control

Instruct iunile unui pseudocod descriu operat iile pe care le va efectua sistemul de calcul cu datele descrise anterior prin declarat ii. Instruct iunile sunt de dou a feluri: simple si structurate. Instruct iunile simple sunt: de atribuire; de intrare; de ie sire.

1.2. Descrierea pseudolimbajului

17

Instruct iunea de atribuire are sintaxa: variabil a = expresie n care variabil a este numele unei variabile a c arei valoare va modicat a n urma instruct iunii, iar expresie este o construct ie sintactic a alc atuit a din constante, variabile, operatori si paranteze, dup a regulile uzuale din algebr a. Efectul execut iei instruct iunii de atribuire const a n evaluarea expresiei si modicarea n concordant a a variabilei al c arei nume se a a la st anga semnului egal. Se consider a c a operanzii care intervin n expresii au valori corespunz atoare unuia din tipurile fundamentale. Dac a operanzii sunt de tip logic, atunci se admit operatorii logici nu, sau, si, ca n exemplele: logic l1, l2, l3 l1 = nu (l2) l3 = l1 sau l2 l3 = l1 si l2

Dac a operanzii sunt numerici (real sau ntreg) se admit operatori aritmetici (+, -, *, /) sau de relat ie (=, =, , , <, >), ca n exemplele: real a, b, x, y; logic l1; y = (ax + b)/(2x b) l 1 = ( x b) s i ( x > a) In primul caz rezultatul este de tip numeric, iar n al doilea caz, de tip logic. Operanzii de tip caracter admit doar operatori de relat ie (se admite ordonarea lexicograc a conform codului ASCII), ca n exemplul: l2 = C > A ; caracterul cont inut de variabila C este ulterior literei A

Instruct iunile de intrare-ie sire au sintaxa: cite ste variabile scrie variabile

18

Capitolul 1. Implementarea structurilor de date si a algoritmilor numerici

Prima instruct iune are ca efect transferul pe canalul de intrare al unei valori (de exemplu introducerea ei de la tastatur a), care modic a valoarea variabilei specicate, iar a doua are ca efect transferul valorii variabilei pe canalul de ie sire (de exemplu a sarea pe ecran sau tip arirea la imprimant a). De exemplu, pseudocodul: real x, y, s, p cite ste x, y s=x+y p = xy scrie s, p stop

reprezint a un program simplu, capabil s a calculeze suma si produsul a dou a numere reale. Programul se ncheie printr-o alt a instruct iune simpl a, cu sintaxa: stop care are ca efect terminarea execut iei programului respectiv. Pentru realizarea unor operat ii mai complicate se folosesc n afara instruct iunilor simple, instruct iunile structurate, care sunt: secvent a; decizia (cu sau f ar a alternativ a); ciclul (cu test init ial, cu test nal sau cu contor); rutina (procedur a sau funct ie). Secvent a (sau blocul de instruct iuni) reprezint a un sir de instruct iuni simple sau structurate (scrise c ate una pe linie, n linii succesive), care se execut a una dup a alta, n ordinea n care au fost scrise. Programul anterior este un exemplu de secvent a. Decizia este o instruct iune care permite controlul execut iei si are una din urm atoarele variante de secvent a: decizia simpl a

1.2. Descrierea pseudolimbajului

19

dac a condit ie atunci secvent a

decizia cu alternativ a dac a condit ie atunci secvent a1 altfel secvent a 2

n care condit ie este o expresie de tip logic, iar secvent a este o secvent a de una sau mai multe instruct iuni. Pentru a u sura nt elegerea acestei instruct iuni se constat a c a secvent ele sunt scrise indentat (retrase fat a de cuv antul cheie dac a). In urma execut iei acestei instruct iuni se evalueaz a expresia logic a condit ie. Dac a valoarea rezultat a este adev arat a, atunci se execut a secvent a (respectiv secvent a 1), altfel se continu a cu instruct iunea urm atoare (respectiv se execut a secvent a 2). Exemple de instruct iuni de decizie: ; funct ia matematic a modul y = |x| dac a x 0 atunci y=x altfel y = x Pentru implementarea funct iei denite pe port iuni: x < 1 0, y= 2x, 1 x 1 2 x, x>1 dac a x < 1 atunci y=0 altfel dac a (x 1) si (x 1) y = 2x altfel y=x

se poate folosi pseudocodul:

20

Capitolul 1. Implementarea structurilor de date si a algoritmilor numerici

Ciclul reprezint a o instruct iune care permite repetarea unei secvent e. Se deosebesc trei feluri de cicluri: cu test init ial; cu test nal; cu contor. Ciclul cu test init ial are sintaxa: c at timp condit ie repet a secvent a Efectul este evaluarea expresiei logice condit ie. Dac a rezultatul este armativ (adev arat), atunci se execut a secvent a si ciclul se reia p an a c and condit ie devine fals a, dup a care se sare peste secvent a si se continu a cu urm atoarea instruct iune. Se constat a c a este posibil a repetarea innit a a ciclului dac a valoarea logic a a condit iei r am ane mereu adev arat a. Este responsabilitatea programatorului s a asigure caracterul nit al ciclului. In exemplul urm ator: k=1 s=0 c at timp ak > 0 repet a s = s + ak k =k+1 scrie s

este utilizat ciclul cu test init ial pentru a aduna elementele unui tablou p an a la nt alnirea primului element negativ. Ciclul cu test nal are sintaxa: repet a secvent a p an a c and condit ie

secvent a ind executat a repetat p an a c and condit ie devine adev arat a. Spre deosebire de ciclul cu test init ial, n acest caz corpul ciclului este executat cel put in o dat a. In exemplul urm ator se calculeaz a cu eroare impus a suma seriei cu termenul general k (1) /k !

1.2. Descrierea pseudolimbajului

21

ntreg k real s, t, eps t=1 k=1 s=0 repet a t t= k s=s+t k =k+1 p an a c and |t| < eps Ciclul cu contor permite repetarea unei secvent e de un num ar determinat de ori. Sintaxa ciclului cu contor este: pentru contor = val in, val n, pas repet a secvent a

n care contor este numele unei variabile de tip ntreg, val in, val n si pas sunt constante sau expresii de tip ntreg. Secvent a de instruct iuni din corpul ciclului este repetat a pentru valori succesive ale contorului, pornind de la valoarea init ial a val in, a n incrementat cu pasul pas p an a c and acesta dep a se ste valoarea nal a val n. Dac instruct iune lipse ste valoarea pas se presupune c a aceasta are valoarea implicit a 1. In exemplul urm ator: s=0 pentru k = 1, n s = s + ak scrie s

se calculeaz a suma primelor n elemente ale tabloului a. Se nt alnesc des situat ii n care o anumit a secvent a de instruct iuni trebuie executat a de mai multe ori, n momente diferite ale execut iei unui program. Pentru a evita rescrierea de mai multe ori a acestei secvent e se folose ste conceptul de rutin a. O rutin a reprezint a o secvent a de declarat ii si instruct iuni c areia i se atribuie un nume. Dac a ntr-un program se face apel la o rutin a, controlul se transfer a rutinei, iar dup a ncheierea acesteia se revine n programul apelant. In consecint a, o rutin a presupune pe de o parte denit ia acesteia (prin specicarea declarat iilor si instruct iunilor care o

22

Capitolul 1. Implementarea structurilor de date si a algoritmilor numerici

alc atuiesc), iar pe de alt a parte apelul ei. Utilizarea rutinelor este justicat a chiar si n cazul n care ele sunt apelate o singur a dat a n program, deoarece ele permit structurarea modular a a unui algoritm. Pentru a realiza aceasta, o rutin a trebuie s a aib a o anumit a consistent a, s a ndeplineasc a o funct ie bine denit a, ceea ce permite reutilizarea ei si n alte programe. Dup a modul de apelare, rutinele se mpart n dou a categorii: proceduri; funct ii. Procedura este denit a printr-o construct ie sintactic a de forma: procedur a nume(list a parametri formali) secvent a retur

n care nume este numele procedurii alc atuit din caractere alfanumerice, iar lista parametrilor formali cont ine nume de variabile separate prin virgule. O parte din parametrii formali sunt parametrii de intrare (ai c aror valori provin din programul apelant si se transfer a procedurii), iar restul sunt parametrii de ie sire (ai c aror valori se determin a n procedur a si se transfer a programului apelant). Apelul unei proceduri astfel denite se face prin invocarea numelui ei urmat de lista parametrilor actuali: nume (lista de parametri actuali) Parametrii actuali trebuie s a concorde ca num ar, tip si ordine cu cei formali (dar nu obligatoriu si ca nume). In exemplul urm ator: cite ste a, b sumaprod (a, b, s, p) scrie s, p sumaprod (s, p, s1, p1) scrie s1, p1

se face apel la procedura denit a astfel:

1.2. Descrierea pseudolimbajului

23

procedur a sumaprod (x, y, suma, prod) real x, y, suma, prod suma = x + y prod = xy retur

n care are x, y sunt parametri formali de intrare si suma, prod sunt parametri formali de ie sire. In urma primului apel al acestei proceduri (cu parametri actuali de intrare a, b) se calculeaz a si se a seaz a s = a + b, p = ab, iar n urma celui de al doilea apel se calculeaz a si se a seaz a s1 = s + p = a + b + ab, p1 = sp = (a + b)ab. In cazul unei proceduri, num arul parametrilor de intrare sau de ie sire este arbitrar (poate inclusiv nul). O alt a variant a de rutin a este funct ia, la care tot i parametrii formali sunt parametri de intrare, dar rutina de tip funct ie ntoarce o valoare. Denit ia funct iei se realizeaz a prin construct ia sintactic a: funct ie nume (lista parametrii formali) secvent a ntoarce valoare

Funct ia poate apelat a ca operand ntr-o expresie, n particular ntr-o atribuire de tipul valoare = nume (lista de parametri actuali) Funct ia se aseam an a cu o procedur a cu un singur parametru de ie sire dar, fat a de aceasta, are o exibilitate suplimentar a n apel. Exemplul urm ator: real a, b, x cite ste a, b x = min(a, b)/max(a, b) scrie x

folose ste dou a funct ii max si min denite prin: funct ie max(x, y ) real x, y, m ; valoare maxim a

24

Capitolul 1. Implementarea structurilor de date si a algoritmilor numerici

dac a x > y atunci m=x altfel m=y ntoarce m

funct ie min(x, y ) ; valoare minim a real x, y, m dac a x > y atunci m=y altfel m=x ntoarce m

Funct iile elementare (modul, radical, putere, exponent ial a, logaritm, sin, cos, tg, sh, ch, th) se consider a predenite n pseudocod, deoarece majoritatea limbajelor de programare de nivel nalt le au implementate.

1.3

Tipuri abstracte de date

Tipurile abstracte de date reprezint a concepte importante ale program arii structurate moderne. Un tip abstract de date este o structur a de date denit a de utilizator (folosind cuv antul cheie tip) completat a cu o serie de rutine (proceduri sau funct ii), care denesc operat iile ce pot executate cu date de acest tip. In acest fel se extind tipurile fundamentale de date (logic, ntreg, real, care reprezint a algebra boolean a, inelul Z Z si corpul IR) prin implementarea si a altor structuri matematice (algebrice sau topologice) cum sunt spat iile vectoriale, corpul numerelor complexe, inelul polinoamelor sau al matricelor. Aceste structuri de prim a important a n matematic a se nt alnesc n rezolvarea pe cale numeric a a multor probleme stiint ice sau tehnice. Ele nu sunt legate de o anumit a aplicat ie ci au un caracter general. In continuare sunt prezentate n pseudocod c ateva din tipurile abstracte de date uzuale. Spat iul vectorial n-dimensional
IR n

Un element v = (v1 , v2 , . . . , vn ) al spat iului IRn poate reprezentat ca un tablou cu n componente reale. Operat iile algebrice caracteristice unui spat iu vectorial sunt:

1.3. Tipuri abstracte de date

25

adunarea u, v IRn u + v = ( u 1 , . . . , u n ) + ( v 1 , . . . , v n ) = ( u1 + v 1 , . . . , u n + v n ) nmult irea cu un scalar a IR, v IRn av = a(v1 , v2 , . . . , vn ) = (av1 , av2 , . . . , avn ). Elementul nul 0 = (0, 0...0) IRn are toate componentele nule, iar opusul unui vector v = (v1 , . . . , vn ) = 1 v . Implementarea acestui tip abstract de date este realizat a de pseudocodul: tip tablou real vector (n) procedur a adv(u, v, w) vector u, v vector w pentru i = 1, n w i = ui + v i retur

; adunarea vectorilor w = u + v ; date de intrare ; suma - data de ie sire

procedur a inm(a, v, w) real a vector v vector w pentru i = 1, n wi = avi retur

; nmulte ste vectorul v cu scalarul a ; data de intrare ; vector de intrare ; rezult a w =av

Spat iul euclidian Spat iul euclidian este un spat iu vectorial nzestrat cu o norm a care provine dintr-un produs scalar:
n

u v = ( u 1 , u2 , . . . , u n ) ( v 1 , v 2 , . . . , v n ) =
n

ui v i
i=1

unde u, v IR . Norma euclidian a este o aplicat ie pozitiv denit a: : IRn IR u = uu cunoscut a si sub numele de modulul vectorului. Pentru denirea unui spat iu euclidian se folose ste pseudocodul:

26

Capitolul 1. Implementarea structurilor de date si a algoritmilor numerici

tip vector euclidian funct ie produs(u, v ) ; produsul scalar euclidian u, v ; factori real p ; produsul scalar p = uv p=0 pentru i = 1, n p = p + ui v i ntoarce p

funct ia norma (u) ; norma euclidian a a vectorului u euclidian u, v real norma norma = produs(u, u) ntoarce norma

Inelul polinoamelor Un polinom algebric de gradul n este o construct ie de forma: P (x) = a0 + a1 x + a2 x2 + ... + an xn denit a de coecient ii p = (a0 , a1 , . . . , an ), deci este reprezentabil printr-un tablou real. Un polinom este un element al unui spat iu liniar (vectorial) deoarece suma a dou a polinoame se realizeaz a prin suma coecient ilor, iar produsul cu un scalar prin nmult irea tuturor coecient ilor cu scalarul respectiv. Prin produsul a dou a polinoame de acela si grad se obt ine un polinom de grad dublu. Dac a:
n

P ( x) =
i=0

ai x i
n

si Q( x) =

bi xi ,
i=0

atunci
n n

P ( x) Q( x) =
i=0

ai x i
i=0

bi xi

right

= a 0 b 0 + ( a0 b 1 + a1 b 0 ) x + ( a 0 b 2 + a1 b 1 + a2 b 0 ) x 2 + . . .

O operat ie important a este cea de evaluare a unui polinom. Pentru a mic sora efortul de calcul, aceasta va efectuat a sub forma: P (x) = a0 + a1 x + a2 x2 + .. + an xn = a0 + x(a1 + x(a2 + x(a3 + x(. . .))))

1.3. Tipuri abstracte de date

27

care evit a calculul puterilor xk . Urm atorul pseudocod permite implementarea acestui tip abstract de date: tip vector polinom procedur a prodp(n, r, q, p); nmult irea intreg n polinom r, q polinom p ntreg i, j, k pentru i = 0, 2n pi = 0 pentru i = 0, n pentru j = 0, n k =i+j p k = p k + ri q j retur

polinoamelor p = rq ; gradul factorilor ; factori ; rezultat ;variabile intermediare

; gradul monomului rezultat

funct ie evalp(n, p, x) ; evalueaz a polinomul p(x) intreg n ; gradul polinomului polinom p ; tabelul coecient ilor real x ; variabile independent a real v ; valoare polinom v = pn pentru i = n 1, 0, 1 v = pi + vx ntoarce v

Inelul matricelor p atratice (IRnn ) O matrice p atrat a A IRnn este un tablou bidimensional: a11 a12 a1n a a2n a A = [aij ]i=1,n;j =1,n = 21 22 ... ... ... ... an1 an2 ann

Suma a dou a matrice: A = [aij ], B = [bi,j ] IRnn se realizeaz a pe elemente: A + B = [aij + bij ],

28

Capitolul 1. Implementarea structurilor de date si a algoritmilor numerici

nmult irea cu un scalar IR este denit a de: A = [aij ], iar produsul a dou a matrice p atrate este o matrice de acela si tip:
n

AB = [aij ][bij ] = [
k=1

aik bkj ]i=1,n;j =1,n .

Pentru implementarea acestui tip abstract de date se folose ste pseudocodul: tip tablou real matrice (n, n) procedur a adm(a, b, c) ; adunarea matricelor c = a + b matrice a, b ; termeni matrice c ; rezultat pentru i = 1, n pentru j = 1, n cij = aij + bij retur

procedur a inm(, b, c) ; nmult e ste matricea b cu scalarul real matrice b ; termeni matrice c ; rezultat pentru i = 1, n pentru j = 1, n cij = bij retur

procedur a prodm(a, b, c) ; nmult irea matricelor matrice a, b ; factori matrice c ; produs pentru i = 1, n pentru j = 1, n cij = 0 pentru k = 1, n cij = aik bkj + cij retur

1.3. Tipuri abstracte de date

29

Corpul numerelor complexe C I Un num ar complex z = a + jb este reprezentat printr-o pereche de numere reale (a partea real a, b - partea imaginar a). Adunarea numerelor complexe z1 = a1 + jb1 , z2 = a2 + jb2 se realizeaz a conform relat iei: z 1 + z 2 = ( a1 + a2 ) + j ( b 1 + b 2 ) . Elementul neutru fat a de adunare este 0 = 0 + j 0, iar opusul unui num ar complex z = (a + jb) = a jb. z1 z2 = (a1 + jb1 )(a2 + jb2 ) = a1 a2 b1 b2 + j (a1 b2 + a2 b1 ). Elementul neutru fat a de nmult ire este 1 = 1 + j 0, iar inversul unui num ar complex 2 2 1/z = 1/(a + jb) = (a jb)/(a + b ). O funct ie important a este modulul unui num ar complex, denit prin: |z | = |a + jb| = a2 + b2 . Urm atorul pseudocod implementeaz a acest tip abstract de date: tip nregistrare complex real : re real : im

Inmult irea numerelor complexe z1 = a1 + jb1 , z2 = a2 + jb2 este realizat a de operat ia:

procedur a sumac(u, v, w) complex u, v complex w w.re = u.re + v.re w.im = u.im + v.im retur

; calculeaz a suma numerelor complexe ; termeni ;w=u+v

procedur a prodc(u, v, w) ; calculeaz a produsul numerelor complexe complex u, v ; termeni complex w ; w = uv w.re = u.re v.re u.im v.im w.im = u.re v.im + u.im v.re retur

30

Capitolul 1. Implementarea structurilor de date si a algoritmilor numerici

procedur a difc(u, v, w) complex u, v complex w w.re = u.re v.re w.im = u.im v.im retur

; calculeaz a diferent a numerelor complexe ; termeni

procedur a rapc(u, v, w) ; calculeaz a raportul numerelor complexe complex u, v ; termeni complex w real v 2 v 2 = v.re v.re + v.im v.im w.re = (u.re v.re + u.im v.im)/v 2 w.im = (u.im v.re u.re v.im)/v 2 retur

funct ia modulc(u) ; calculeaz a modulul num arului complex complex u real m m = (u.re u.re + u.im u.im) ntoarce m

Urm atorul exemplu de program: complex Z 1, Z 2, Z 3, Z 4, Z cite ste Z 1, Z 2 prodc (Z 1, Z 2, Z 3) sumac (Z 1, Z 2, Z 4) rapc (Z 3, Z 4, Z ) scrie Z stop

permite calculul impedant ei complexe echivalente a dou a elemente cu impedant e complexe date, conectate n paralel.

1.4. Complexitatea algoritmilor

31

1.4

Complexitatea algoritmilor

Calitatea unui algoritm care se presupune c a permite obt inerea solut iei corecte este apreciat a prin ecient a sa spat ial a (memoria necesar a datelor si programului) si temporal a (timpul de calcul necesar obt inerii solut iei). De exemplu, algoritmul pentru nmult irea matricelor p atrate n dimensionale necesit a 3n locat ii de memorie ( n ecare memor andu-se un num ar real, element al matricei A, B sau C ). Dac a dimensiunea n a matricei cre ste de 10 ori, spat iul necesar cre ste de 100 ori, motiv pentru care se spune c a algoritmul este de ordinul 2 si se scrie M = O(n2 ).
2

Pentru evaluarea modului n care timpul de calcul depinde de dimensiunea problemei rezolvat a de algoritm, se adopt a ca referint a timpul necesar efectu arii unei operat ii elementare (adunare sau nmult ire de numere reale) si apoi se evalueaz a num arul acestor operat ii. De exemplu, pentru calculul produsului scalar a doi vectori n dimensionali se efectueaz a n 1 adun ari si n nmult iri deci un total de 2n 1 operat ii. Deoarece la dublarea dimensiunii se dubleaz a practic num arul de operat ii, se spune ca acest algoritm are ordinul de complexitate liniar si se noteaz a T = O(n). In algoritmii numerici timpul de calcul este consumat mai ales n operat iile repetate ciclic. Ordinul de complexiate este n general dat de num arul ciclurilor incluse unul n altul, ca n exemplele: c = ab pentru i = 1, n c i = ai b i ; ordinul 0

; ordinul 1

pentru i = 1, n pentru j = 1, n cij = ai bj

; ordinul 2

pentru i = 1, n pentru j = 1, n pentru k = 1, n cij = aik bkj ; ordinul 3

In consecint a, produsul scalar a 2 vectori este un algoritm de ordinul 1, T = O(n), iar produsul a dou a matrice p atrate este de ordinul 3, T = O(n3 ).

32

Capitolul 1. Implementarea structurilor de date si a algoritmilor numerici

Aceea si problem a poate avea doi sau mai mult i algoritmi de rezolvare cu ordine de complexitate diferite. De exemplu, pentru evaluarea unui polinom se poate folosi procedura: funct ie evalpp (n, p, x) ntreg n ; polinom p ; real x ; real v ; real xk ; v = p0 pentru i = 1, n xk = pi pentru k = 1, i xk = xk x v = v + xk ntoarce v

gradul polinomului coecientii polinomului variabila independent a valoarea polinomului variabil a intermediar a

Acest algoritm are ordinul de complexitate T = O(n2 /2), deci timpul de calcul cre ste practic cu p atratul gradului polinomului, fat a de algoritmul folosit n procedura evalp, care are ordinul de complexitate liniar T = O(n) si care este deci mai avantajos. O metod a ecient a pentru mic sorarea timpului de calcul const a n scoaterea n afara ciclurilor a calculelor repetate, care au rezultate identice. De exemplu, dac a se dore ste nn generarea matricei A = [aij ] IR cu aij = f (xi )g (yj ) n care evalu arile funct iilor f si g cer un efort de calcul mult mai mare dec at o nmult ire, se poate folosi algoritmul natural: pentru i = 1, n pentru j = 1, n aij = f (xi ) g (yj ) cu ordinul de complexitate O(2n2 ), n care s-a folosit ca operat ie de referint a evaluarea funct iei f sau g . Dac a evaluarea funct iei f se face n afara ciclului interior: pentru i = 1, n f x = f ( xi ) pentru j = 1, n

1.5. Chestiuni de studiat

33

aij = f x g (yj ) timpul de calcul scade practic la jum atate, num arul de evalu ari ale funct iilor ind n(n +1) 2 si ordinul de complexitate O(n ). Acest ordin se reduce si mai mult, dac a se adopt a algoritmul: pentru i = 1, n f xi = f ( xi ) pentru j = 1, n gyj = g (yj ) pentru i = 1, n pentru j = 1, n aij = f xi gyj cu ordinul de complexitate liniar O(2n). Reducerea timpului de calcul s-a f acut pe seama 2 cre sterii necesarului de memorie. In prima variant a M = O(n + 2n), n a doua M = 2 2 O(n + 2n + 1), iar n a treia M = O(n + 4n). La dimensiuni mari ale lui n ns a, necesarul de memorie suplimentar este nesemnicativ, astfel nc at varianta a treia, cu timp de calcul liniar este cea mai bun a.

1.5

Chestiuni de studiat

1. Analiza experimental a a complexit a tii unui algoritm; 2. Utilizarea tipurilor abstracte de date n electrotehnic a; 3. Utilizarea unor tipuri abstracte de date ntr-un limbaj de nivel nalt; 4. C autarea pe Internet a unor informat ii legate de implementarea unor structuri de date.

1.6

Modul de lucru

Pentru desf a surarea lucr arii se lanseaz a programele demonstrative (clic pe pictograma LMN) si apoi se selecteaz a lucrarea Implementarea structurilor de date si a algoritmilor numerici din meniul principal a sat. Se a seaz a meniul lucr arii care are dou a opt iuni:

34

Capitolul 1. Implementarea structurilor de date si a algoritmilor numerici

Analiza algoritmilor Calcule n complex Utilizatorul va selecta succesiv opt iunile dorite. a) Analiza experimental a a complexit a tii unui algoritm Se selecteaz a opt iunea Analiza algoritmilor din meniul lucr arii. Aceasta are ca efect lansarea unui submeniu din care se pot apela urm atoarele proceduri: produs scalar a doi vectori n dimensionali; produsul a dou a polinoame de grad n; produsul a dou a matrice p atrate de n n elemente. Pentru ecare din cele trei cazuri, utilizatorul trebuie s a aleag a valorile lui n. De exemplu, pentru valoarea init ial a 0, valoare nal a 100000 si pas 10000, produsul scalar va apelat, succesiv pentru n = 10000, 20000, 30000, 40000, 50000, 60000, 70000, 80000, 90000, 100000. Programul calculeaz a produsul scalar a doi vectori aleatori de dimensiune n si a seaz a n consola Scilab timpul de calcul. Datele trebuie trecute ntr-un tabel de tipul

n Timp CPU [s] (produs scalar)

20000

40000

60000

80000

100000

Pentru produsul a dou a polinoame, dimensiunile recomandate sunt n = 50, 100, 150, 200, 250, 300. Pentru produsul a dou a matrice, dimensiunile recomandate sunt n = 10, 20, 30, 40, 50, 60, 70, 80.. Se vor reprezenta grac pe h artie milimetric a cele trei curbe si se vor compara rezultatele cu estim arile teoretice. Indicat ie: se va verica n cazul produsului scalar c a raportul timp/dimensiune este aproximativ constant, n cazul produsului a dou a polinoame c a raportul timp/(dimensiune la p atrat) este aproximativ constant, etc.. Din datele obt inute n cele trei cazuri se va estima timpul CPU al unei operat ii elementare (se consider a c a timpul unei adun ari este egal cu timpul unui nmult iri). b) Utilizarea tipurilor abstracte de date n electrotehnic a

1.6. Modul de lucru

35

Se selecteaz a opt iunea Calcule n complex, care are ca efect lansarea unui program ce permite efectuarea diferitelor calcule algebrice cu numere complexe. Programul emuleaz a un calculator de buzunar, care folose ste notat ia polonez a invers a (operand, operand, operator), dar care nu opereaz a cu numere reale ci cu numere complexe. Introducerea operanzilor n stiv a se face prin selectarea butonului: Stiv a Inserare element. Selectarea butonului Stiv a permite si apelul unor funt ii utile ca: Stiv aS tergere element sau Stiv a Repet a v^ arf stiv a Programul permite aplicarea unor operatori unari elementului care se a a n v arful stivei. Ace stia sunt: Operatori unari Opus Operatori unari Invers Operatori unari Conjugat Programul permite si aplicarea unor operatori binari, operanzii ind n acest caz penultimul si ultimul element (v arful) din stiv a. Pentru aceasta selectat i, respectiv: Operatori binari Adunare Operatori binari Sc adere Inmult ire Operatori binari ^ Operatori binari ^ Imp art ire Stiva este vizualizat a pe ecran pe cinci coloane (numar curent, parte real a, parte imaginar a, modul si argument exprimat n radiani. Operatorii unari act ioneaz a asupra ultimului element introdus n stiv a, nlocuindu-l cu valoarea obt inut a n urma aplic arii operatorului, iar stiva nu si modic a dimensiunea. Operatorii binari folosesc ca operanzi ultimele 2 elemente din stiv a iar rezultatul nlocuie ste aceste 2 elemente (stiva se mic soreaz a cu un element). In consecint a operatorii unari pot aplicat i, dac a n stiv a se a a cel put in un element, iar operatorii binari, dac a n stiv a se a a cel put in 2 elemente. Stiva este alimentat a prin introducerea unui nou num ar complex (dimensiunea ei cre ste cu un element). Pentru a facilita manipularea stivei sunt disponibili alt i 2 operatori cu caracter nenumeric (repet a v arful stivei, sterge v arful stivei), care modic a (incrementeaz a respectiv decrementeaz a) n alt imea stivei.

36

Capitolul 1. Implementarea structurilor de date si a algoritmilor numerici

Se propune folosirea acestui program n rezolvarea unei probleme de electrotehnic a si anume studiul unui circuit de curent alternativ format din trei impedant e Z 1 = 10 + 5j , n paralel cu Z 2 si rezultatul n serie cu Z 3 ) Z 2 = 3 7j , Z 3 = 5 + 2j conectate mixt (Z 1 alimentat de la o surs a cu t.e.m reprezentat a n complex ca E = 100j . Se vor calcula succesiv Z 12 = (Z 1 Z 2 )/(Z 1 + Z 2 ) = 1/(1/Z 1 + 1/Z 2 ) Z = Z 12 + Z 3 I = E/Z I 1 = IZ 2 /(Z 1 + Z 2 ) = I/(Z 1 /Z 2 + 1) S g = EI I 2 = IZ 1 /(Z 1 + Z 2 ) = I I 1

2 S 1 = Z 1 I1 2 S 2 = Z 2 I2

S 3 = Z 3I 2 Sc = S1 + S2 + S3 i1 (t) = I1 2sin(t + 1 ) i2 (t) = I2 2sin(t + 2 ) c) Implementarea unor tipuri abstracte de date ntr-un limbaj de nivel nalt Desc arcat i de la adresa http://mn.lmn.pub.ro/ sierele complex.c, complex.h si elth.c. Fi sierele complex.* sunt acelea si cu http://www.numerical-recipes.com/pubdom/complex.c.txt, respectiv http://www.numerical-recipes.com/pubdom/complex.h.txt. Studiat i modul de implementare corpul numerelor complexe n limbajul C. In sierul elth.c este nceput a rezolvarea problemei de electrotehnic a de la punctul b). Comanda de compilare este gcc elth.c complex.c -lm -o elth Programul obt inut se execut a cu ./elth Continuat i scrierea programului care v a va permite s a rezolvat i aceea si problem a. Vericat i rezultatele cu cele pe care le-at i obt inut la punctul b. d) C autarea pe Internet a unor informat ii legate de implementarea unor structuri de date

1.7. Exemple

37

C autat i pe Internet biblioteci informat ii legate de implementarea matricelor rare (matrice cu multe elemente nule). Cuvinte cheie recomandate: Sparse Matrix Compression Formats, Sparse Matrix Storage Format.

1.7
1.7.1

Exemple
Exemple rezolvate

1. Fie pseudocodul de mai jos: ; datele de intrare ale problemei ntreg n ; dimensiunea problemei real c tablou real a[n], b[n] ; indicele tabloului ncepe de la 1 ; datele de ie sire ale problemei real s ; variabile intermediare ntreg i ; introducerea datelor de intrare cite ste n cite ste c pentru i = 1, n cite ste ai , bi ; init ializarea solut iei s=0 ; calculul solut iei pentru i = 1, n s = s + ai /bi c ; a sarea solut iei scrie s Se cer: (a) s a se estimeze ordinul de complexitate al algoritmului din punct de vedere al timpului de calcul si al necesarului de memorie. Se consider a ca operat ii elementare (de referint a) urm atoarele operat ii: +, -, *, /, iar ca locat ie elementar a de memorie, locat ia ocupat a de un num arul real; (b) s a se scrie formula matematic a de calcul a variabilei s, n funct ie de datele problemei; (c) s a se optimizeze algoritmul n sensul reducerii timpului de calcul si s a se precizeze noul timp de calcul.

38

Capitolul 1. Implementarea structurilor de date si a algoritmilor numerici

Rezolvare: (a) Algoritmul cont ine un singur ciclu cu contor, n cadrul c aruia se repet a de n ori o instruct iune de atribuire, n care se efectueaz a operat ii elementare. Din aceste motive, ne a stept am ca timpul de calcul s a depind a liniar de dimensiunea problemei, n (T O(n)). In continuare vom estima exact timpul de calcul. Pentru ecare valoare a contorului i, n interiorul ciclului, se efectueaz a 3 operat ii elementare (+, /, *). Deoarece i ia valori de la 1 la n, num arul total de operat ii elementare efectuate este 3n. Astfel, ordinul de complexitate al algoritmului din punct de vedere al timpului de calcul este T = O(3n) a dimensiunea = O(n). De exemplu, dac problemei cre ste de 10 ori, timpul de calcul va cre ste de 10 ori. Acest algoritm are ordinul de complexitate liniar (de ordinul 1). Pentru estimarea necesarului de memorie este necesar s a se evalueze num arul de locat ii de memorie utilizate, mai precis, num arul de variabile reale declarate la nceputul algoritmului. Astfel, sunt declarate 2 numere reale (s si c ) si 2 tablouri de numere reale de dimensiune n (a si b), n total 2n + 2 numerele reale. Spunem c a ordinul de complexitate al algoritmului din punct de vedere al necesarului de memorie este M = O(2n + 2) a se = O(n). De exemplu, dac cre ste de 10 ori dimensiunea tablourilor, spat iul de memorie necesar cre ste de aproximativ 10 ori. Din punct de vedere al necesarului de memorie, algoritmul este de ordinul 1. (b) Se observ a c a algoritmul implementeaz a urm atoarea formul a matematic a:
n

s=
i=1

ai c. bi

(c) Pentru reducerea timpului de calcul, nmult irea cu variabila c poate scoas a n afara ciclului: s=0 pentru i = 1, n s = s + ai /bi s=sc Aceasta corespunde evalu arii expresiei s cu formula s = c n arul i=1 ai /bi . Num de operat ii elementare efectuate este 2n + 1, iar ordinul de complexitate din punct de vedere al timpului de calcul devine T = O(2n + 1) a = O(n). Aceast variant a a algoritmului este mai rapid a dec at varianta init ial a (de aproximativ 1.5 ori). 2. Fie pseudocodul de mai jos:

1.7. Exemple

39

; declararea variabilelor ntreg n, i real s tablou real a[n][n] ; introducerea datelor de intrare ............... ; instruct iuni s=0 pentru i = 1, n pentru j = 1, n s = s + ai,j vj c scrie s Se cer: (a) s a se declare variabilele j , c si v ; (b) s a se estimeze ordinul de complexitate al algoritmului din punct de vedere al timpului de calcul si al necesarului de memorie. Se consider a ca operat ii , iar ca locat ie elementare (de referint a) urm atoarele operat ii: +, -, *, /, elementar a de memorie, locat ia ocupat a de un num arul real; (c) s a se scrie formula matematic a de calcul a variabilei s, n funct ie de datele problemei; (d) s a se optimizeze algoritmul n sensul reducerii timpului de calcul si s a se precizeze timpul de calcul. Rezolvare: (a) Deoarece variabila j este un contor, cu valori de la 1 la n (variabil a intreag a), j trebuie declarat ca un ntreg. Variabilele c si v sunt utilizate la calculul rezultatului nal, variabila real a s, astfel, c si v sunt numere reale. Mai mult, n algoritm, referirea la variabila v se face prin vj , unde j = 1, n, ceea ce nseamn a c a variabila v reprezint a un tablou de numere reale de dimensiune n. In concluzie, declarat iile sunt: ntreg j real c tablou real v [n] (b) Algoritmul cont ine dou a cicluri cu contor (de la 1 la n) imbricate. Instruct iunea 2 de atribuire din interiorul ciclurilor se repet a de n ori si cont ine operat ii ele2 mentare. Ne a stept am ca ordinul de complexitate s a e T O(n ). Pentru ecare valoare a contoarelor i si j , n interiorul ciclurilor, se efectueaz a a 4 operat ii elementare (+, *, *, ). Pentru ecare valoare a lui i se efectueaz

40

Capitolul 1. Implementarea structurilor de date si a algoritmilor numerici

4n operat ii. Cum sunt n valori posibile pentru i, num arul total de operat ii ele2 mentare efectuate va n (4n) = 4n . Ordinul de complexitate al algoritmului din punct de vedere al timpului de calcul este T = O(4n2 ) = O(n2 ). Acest algoritm are ordinul de complexitate p atratic (de ordinul 2). De exemplu, dac a 2 n cre ste de 10 ori, timpul de calcul cre ste de 100 = 10 ori. In algoritm sunt declarate dou a variabile reale (s si c), un tablou unidimensional (vector) de numere reale de dimensiune n (v ) si un tablou bidimensional (matrice) de numere reale de dimensiune n n (a). In total, sunt declarate 2 n + n + 2 numerele reale. Astfel, ordinul de complexitate al algoritmului din punct de vedere al necesarului de memorie este M = O(n2 + n + 2) = O(n2 ). Se observ a c a, si din punctul de vedere al necesarului de memorie, algoritmul este de ordinul 2. (c) Algoritmul implementeaz a urm atoarea formul a matematic a:
n n

s=
i=1 j =1

ai,j vj

c c

(d) Reducerea timpului de calcul se poate realiza prin scoaterea nmult irii cu n afara ciclurilor: s=0 pentru i = 1, n pentru j = 1, n s = s + ai,j vj s=s c Aceasta corespunde implement arii formulei matematice: s=
n n

c
i=1 j =1

ai,j vj .

Acum, num arul de operat ii elementare efectuate este 2n2 + 2, iar ordinul de complexitate din punct de vedere al timpului de calcul devine T = O(2n2 +2) = 2 O(n ). 3. Fie pseudocodul de mai jos: ; declarat ii variabile ntreg n, i real p, a, rez , term tablou real b[n] ; introducere date de intrare cite ste n

1.7. Exemple

41

pentru i = 1, n cite ste bi cite ste a, p ; init ializare solut ie rez = 0 ; calcul solut ie pentru i = 1, n term = p + f (bi ) term = term f (a) rez = rez + term ; a sare solut ie scrie rez Se cer: (a) s a se estimeze ordinul de complexitate al algoritmului din punct de vedere al timpului de calcul si al necesarului de memorie. Se consider a ca operat ie elementar a (de referint a) evaluarea funct iei f , iar ca locat ie elementar a de memorie, locat ia ocupat a de un num arul real; (b) s a se scrie formula matematic a de calcul a rezultatului rez , n funct ie de datele problemei; (c) s a se optimizeze algoritmul n sensul reducerii timpului de calcul si s a se precizeze timpul de calcul. Rezolvare: (a) Exist a un singur ciclu cu contor n interiorul c aruia exist a operat ia de referint a. Ne a stept am ca ordinul de complexitate din punct de vedere al timpului de calcul s a e T = O(n). Intr-adev ar, pentru ecare valoare i, n interiorul ciclului se efectueaz a 2 evalu ari ale funct iei, deci 2 operat ii elementare. Deoarece i poate lua n valori, rezult a c a num arul total de operat ii elementare este 2n. Deci, T = O(2n) = O(n). Pentru a estima necesarul de memorie, este util s a se inspecteze declarat iile ce cont in cuv antul cheie real. Sunt declarat i 4 scalari reali si un tablou de reali cu n componente. In consecint a, M = O(n + 4) O ( n ) . = (b) Se observ a c a algoritmul implementeaz a urm atoarea formul a matematic a:
n

rez =
i=1

[p + f (bi )] f (a).

(c) Algoritmul poate mbun at a tit din punct de vedere al timpului de calcul observ and c a f (a) este evaluat n mod inutil de n ori, de ecare dat a c and se schimb a valoarea contorului. Aceast a evaluare poate scoas a n afara ciclului, astfel:

42

Capitolul 1. Implementarea structurilor de date si a algoritmilor numerici

real val rez = 0 val = f (a) pentru i = 1, n term = p + f (bi ) term = term val rez = rez + term Acum, avem T = O(n) si M = O(n + 5) = O(n). Aceast a variant a este de 2 ori mai rapid a dec at varianta init ial a. Costul mbun at a tirii este nesemnicativ, memorarea unei noi variabile reale val. Aceast a implementare corespunde evalu arii rezultatului cu formula:
n

rez = f (a)
i=1

[p + f (bi )] .

4. Fie pseudocodul de mai jos: ntreg n, i, j , k real p, rez , s, t1 , t2 tablou real a[n], b[n] cite ste n pentru i = 1, n cite ste ai , bi cite ste p rez = 0 pentru i = 1, n rez = rez + f (ai ) t1 = p pentru j = 1, n t 2 = g ( bj ) s=0 pentru k = 1, n s = s + f ( ai ) t2 = t2 + s t1 = t1 t2 rez = rez + t1 scrie rez Se cer: (a) s a se estimeze ordinul de complexitate al algoritmului din punct de vedere al timpului de calcul si al necesarului de memorie. Se consider a ca operat ii elementare (de referint a) evalu arile funct iilor f si g , iar ca locat ie elementar a de memorie, locat ia ocupat a de un num arul real;

1.7. Exemple

43

(b) s a se scrie formula matematic a de calcul a rezultatului rez , n funct ie de datele problemei; (c) s a se optimizeze algoritmul n sensul reducerii timpului de calcul si s a se precizeze timpul de calcul. Rezolvare: (a) Sunt 3 cicluri imbricate, ciclul din interior cont in and operat ia elementar a, astfel 3 este de a steptat s a avem T = O(n ). Intr-adev ar, num arul de operat ii elementare pentru valori xe ale contorilor i, j , k este 1 (o evaluare a funct iei f ); num arul de operat ii elementare pentru valori xe ale contorilor i, j este n +1 (n evalu ari ale funct iei f si o evaluare a funct iei 2 g ), num arul de operat ii elementare pentru i xat este n(n + 1) + 1 = n + n + 1. Astfel, num arul total de operat ii elementare este n(n2 + n + 1) = n3 + n2 + n. Deci, T = O(n3 + n2 + n) and declarat iile care cont in cuv antul = O(n3 ). Inspect cheie real, se observ a c a necesarul de memorie este M = O(2n + 5) = O(n). (b) Formula matematic a:
n n n

rez =
i=1

f ( ai ) + p
i=1

g ( bj ) +
k=1

f ( ai )

(c) Simplicarea pseudocodului se realizeaz a simplic and formula de calcul. Not am:
n n

S=
i=1

f ( ai ) ,

P =p
i=1

[ g ( bj ) + S ] .

Atunci: rez =

[ f ( ai ) + P ] =
i=1 i=1

f (ai ) + nP = S + nP.

Algoritmul devine: S=0 pentru i = 1, n S = S + f ( ai ) P =p pentru j = 1, n P = p [ g ( bj ) + S ] rez = S + n P Acum, ordinul de complexitate din punct de vedere al timpului de calcul este T = O(2n) = O(n).

44

Capitolul 1. Implementarea structurilor de date si a algoritmilor numerici

1.7.2

Exemple propuse

1. Fie pseudocodul de mai jos: ntreg n real s tablou real b[n] ; indicele tabloului ncepe de la 1 ............... s=0 pentru i = 1, n s = s + ai /bi ln (c) Se cer: (a) s a se declare variabilele i, c si a; (b) s a se estimeze ordinul de complexitate al algoritmului din punct de vedere al timpului de calcul si al necesarului de memorie. Se consider a ca operat ii ie elementare (de referint a) urm atoarele operat ii: +, -, *, /, , ln , iar ca locat elementar a de memorie, locat ia ocupat a de un num arul real; (c) s a se scrie formula matematic a de calcul a variabilei s, n funct ie de datele problemei; (d) s a se optimizeze algoritmul n sensul reducerii timpului de calcul si s a se precizeze timpul de calcul. 2. Fie pseudocodul de mai jos: ntreg n real p tablou real x[n] ............... p=1 pentru i = 1, n p = p sin (xi /yi zi ) w Se cer: (a) s a se declare variabilele i, w, y si z ; (b) s a se estimeze T = O(?) si M = O(?). Operat iile elementare se consider a: +, -, *, /, , sin . Locat ia elementar a de memorie este locat ia ocupat a de un num arul real; (c) s a se scrie formula matematic a de calcul a variabilei p, n funct ie de datele problemei; (d) s a se optimizeze algoritmul n sensul reducerii timpului de calcul si s a se precizeze timpul de calcul.

1.7. Exemple

45

3. Fie pseudocodul de mai jos: ntreg n, i real rez , t, t1 , t2 tablou real a[n] ............... rez = 0 pentru i = 1, n t 1 = f ( p ) ai t 2 = f ( p) f ( ai ) t = t1 + t2 rez = rez + t Se cer: (a) s a se estimeze T = O(?) si M = O(?). Se consider a ca operat ie elementar a evaluarea funct iei f . Locat ia elementar a de memorie este locat ia ocupat a de un num arul real; (b) s a se scrie formula matematic a de calcul a variabilei rez , n funct ie de datele problemei; (c) s a se optimizeze algoritmul n sensul reducerii timpului de calcul si s a se precizeze timpul de calcul. 4. Fie pseudocodul de mai jos: ntreg n, i real rez , t, a, b tablou real p[n] ............... rez = 0 pentru i = 1, n t = f (pi ) + b t = t f ( a) rez = rez + t Se cer: (a) s a se estimeze T = O(?) si M = O(?). Se consider a ca operat ie elementar a evaluarea funct iei f . Locat ia elementar a de memorie este locat ia ocupat a de un num arul real; (b) s a se scrie formula matematic a de calcul a variabilei rez , n funct ie de datele problemei; (c) s a se optimizeze algoritmul n sensul reducerii timpului de calcul si s a se precizeze timpul de calcul.

46

Capitolul 1. Implementarea structurilor de date si a algoritmilor numerici

5. Fie pseudocodul de mai jos: ntreg n, i real x tablou real c[n][n] ............... pentru i = 1, n pentru j = 1, n ci,j = x ai,j + ln (y ) bi,j Se cer: (a) s a se declare variabilele j , y , a si b ; (b) s a se estimeze T = O(?) si M = O(?). Operat iile elementare se consider a: ia elementar a de memorie este locat ia ocupat a de un +, -, *, /, , ln . Locat num arul real; (c) s a se scrie formula matematic a de calcul a variabilei c, n funct ie de datele problemei; (d) s a se optimizeze algoritmul n sensul reducerii timpului de calcul si s a se precizeze timpul de calcul.

1.8

Intreb ari si probleme

1. S a se implementeze un tip abstract de date, care s a permit a reprezentarea cu maxim a ecient a spat ial a a polinoamelor cu mult i coecient i nuli, (de exemplu p(x) = 1 + 205 x ). 2. S a se implementeze un tip abstract de date care s a permit a reprezentarea ecient a a matricelor cu multe elemente nule (matrice rare). 3. S a se deneasc a o funct ie care s a permit a calculul normei Ceb sev a unui vector ||v || = max |v1 |
i=1,n

si a unei matrice A = max


i=1,n

j =1

|aij |

4. S a se scrie pseudocodul procedurilor de mp art ire, derivare si integrare a polinoamelor.


n 5. S a se deneasc a urm atoarele tipuri de date: spat iu vectorial complex ( C I ), inelul nn matricelor p atrate cu elemente complexe ( C I ), inelul polinoamelor cu coecient i complec si.

1.8. Intreb ari si probleme

47

6. S a se scrie o procedur a de nmult ire a matricelor dreptunghiulare. 7. S a se deneasc a si implementeze un tip abstract de date av and ca elemente vectori 3 tridimensionali IR , cu care s a se efectueze adun ari, nmult iri cu scalari, nmult iri scalare si vectoriale. 8. S a se deneasc a si s a se implementeze un tip abstrat de date av and ca elemente impedant ele cu care se pot face operat ii de conexiune serie si paralel. S a se conceap a un program capabil s a determine impedant a complex a de transfer a unui cuadripol pasiv. 9. S a se implementeze acela si tip abstract de date n dou a sau trei limbaje diferite de programare. S a se compare rezultatele din punctul de vedere al ecient ei spat iale si temporale. 10. S a se studieze rutinele dedicate manipul arii vectorilor, matricelor, si polinoamelor dintr-o bibliotec a matematic a standard. 11. S a se deneasc a si implementeze un tip abstract de date ale c arui elemente sunt funct ii rat ionale cu coecient i reali. Cum poate folosit un astfel de tip de date n analiza circuitelor electrice liniare n regim tranzitoriu? 12. S a se deneasc a un tip abstract de date ale c arui elemente reprezint a serii Fourier trunchiate. Cum poate folosit acest tip de date n analiza cu calculatorul a circuitelor liniare n regim periodic permanent nesinusoidal?

48

Capitolul 1. Implementarea structurilor de date si a algoritmilor numerici

Lucrarea 2 Erori n rezolvarea problemelor numerice


2.1 Caracterizarea lucr arii

In majoritatea cazurilor, algoritmii cu caracter numeric, dup a implementarea lor pe un sistem de calcul determin a nu solut ia exact a a problemei ci o aproximare numeric aa acesteia. Scopul acestei lucr ari este de a evident ia modul n care pot caracterizate erorile numerice, motivele aparit iei acestora si modul n care acestea se propag a. Se studiaz a erorile inerente (datorate datelor de intrare), erorile de rotunjire (datorate reprezent arii nite, aproximative a numerelor reale) si erorile de trunchiere (datorate aproxim arii nite a unor procese teoretic innite).

2.2

Principiul lucr arii

Pentru a caracteriza abaterea unei variabile numerice de la valoarea sa exact a se poate folosi eroarea absolut a, denit a prin: e x = x x , (2.1)

n care x este valoarea exact a a variabilei, iar x este valoarea sa aproximativ a. Deoarece n majoritatea cazurilor valoarea exact a nu este cunoscut a se prefer a utilizarea unei margini superioare a erorii absolute: ax | e x | = | x x | . (2.2) In acest caz, n locul valorii exacte x se opereaz a cu intervalul: x ax x x + ax . 49 (2.3)

50

Capitolul 2. Erori n rezolvarea problemelor numerice

O alt a modalitate de caracterizare a abaterii unei variabile de la valoarea exact a este eroarea relativ a: ex x x x = = , (2.4) x x sau marginea superioar a a acesteia: x = ax | x x | |epsx | = . | x| | x| (2.5)

In majoritatea calculelor tehnice, m arimile rezultate n urma m asur arii sunt cunoscute cu 3 maxim 6 cifre semnicative exacte, ceea ce corespunde unor erori relative cuprinse n intervalul 102 105 .

2.2.1

Erori de rotunjire

Una din cauzele frecvente de eroare n calculele cu numere reale se datoreaz a reprezent arii nite a acestor numere n sistemele de calcul. Modul uzual de reprezentare a unui num ar real ntr-un sistem de calcul este de forma: x = 0, kkk . . . k 10kk = m 10e , unde k este cifr a (0, 1, . . . , 9), m se nume ste mantisa, iar e exponent. num arului nul, la care m = 0, n rest mantisa satisface relat ia: 0. 1 | m | 1. (2.6) Cu except ia

(2.7)

Presupun and c a mantisa este reprezentat a cu n cifre, rezult a c a prin aceast a reprezentare cifrele l din reprezentarea exact a: x = 0. kk . . . k ll . . . 10kk
n

(2.8)

sunt pierdute prin rotunjire. In consecint a, eroarea relativ a de rotunjire x = 0, 0 . . . 0lll . . . 10kk 0, lll . . . n | x x | = 10 = 10n+1 = | x| 0, kk . . . ll . . . 10kk 0.kk . . . (2.9)

depinde de num arul de cifre semnicative folosite n reprezentarea num arului real si nu de valoarea num arului. Aceast a eroare relativ a de rotunjire, specic a sistemului de calcul (calculator + mediu de programare) este cel mai mare num ar real, care ad augat la unitate nu modic a valoarea acesteia. Ordinul de m arime al erorii relative de rotunjire n 5 20 sistemele uzuale de calcul este 10 10 si poate determinat pe ecare sistem de calcul cu urm atorul algoritm:

2.2. Principiul lucr arii

51

; calculeaz a eroarea relativ a de rotunjire real err err=1 repet a err=err/2 p an a c and (1 + err = 1) scrie err Eroarea relativ a de rotunjire err este cunoscut a sub numele de zeroul ma sinii si nu trebuie confundat a cu cel mai mic num ar pozitiv, nenul, reprezentabil n calculator.

2.2.2

Erori inerente

Datele de intrare folosite n rezolvarea unei probleme tehnice provin n multe cazuri din determin ari experimentale. Rezultatul oric arei m asur atori este susceptibil de erori si chiar dac a datele de intrare sunt cunoscute cu maxim a precizie ele pot afectate de erori de rotunjire. Erorile datelor de intrare ntr-un algoritm se numesc erori inerente. Aceste erori se propag a n procesul de calcul si afecteaz a n nal solut ia problemei. Chiar dac a algoritmul de calcul nu poate f acut responsabil de prezent a erorilor n datele de intrare, el poate inuent a precizia solut iei. Un algoritm la care eroarea relativ a a solut iei nu dep a se ste erorile relative ale datelor de intrare este un algoritm stabil din punct de vedere numeric. In schimb, dac a erorile relative ale solut iei sunt mult mai mari dec at cele ale datelor de intrare se spune c a algoritmul de rezolvare prezint a instabilit a ti numerice. In acest caz este posibil ca abateri foarte mici ale datelor de intrare s a determine abateri mari ale solut iei numerice fat a de cea exact a, si s a fac a solut ia numeric a inutilizabil a. Dac a se noteaza cu y solut ia problemei, iar cu x1 , x2 , ..., xn datele acesteia, procedeul de calcul va consta n fond n evaluarea funct iei y = f (x1 , x2 , ..., xn ) Consider and erorile absolute sucient de mici, acestea se pot aproxima cu diferent iala: dy = ey f f f d x1 + d x2 + + d xn , x1 x2 xn f f f = e x1 + e x2 + + ex . x1 x2 xn n

(2.10)

Erorile relative satisfac relat ia: f f f x1 x1 + x2 x2 + + xn xn . y y = x1 x2 xn

(2.11)

Deoarece n sistemele numerice de calcul, cele mai complicate proceduri se reduc n nal la operat ii aritmetice, va analizat a propagarea erorilor n cazul celor patru operat ii aritmetice elementare:

52

Capitolul 2. Erori n rezolvarea problemelor numerice

Adunarea: y = f ( x1 , x2 ) = x1 + x2 , e y = e x1 + e x2 , x1 x2 y = x1 + x . x1 + x2 x1 + x2 2 (2.12)

Dac a cei doi termeni x1 , x2 au acela si semn, adunarea este o operat ie stabil a numeric, deoarece x2 x1 1, 1, | y | | x1 | + | x2 | . x1 + x2 x1 + x2 Sc aderea: y = f ( x1 , x2 ) = x1 x2 ,

e y = e x1 e x2 , x2 x1 x1 x . y = x1 x2 x1 x2 2

(2.13)

Dac a x1 si x2 au acela si semn, operat ia de sc adere este instabil a numeric. Eroarea relativ a a diferent ei poate dep a si cu multe ordine de m arime eroarea termenilor, prin fenomenul numit de anulare prin sc adere, ca n exemplul: x1 = 0, 12345 1% ; x2 = 0, 12344 1% ; y = x1 x2 = 0, 00001 3 104 %. y = f ( x1 , x2 ) = x1 x2 e y = x2 e x1 + x1 e x2 y = x1 + x2 Inmult irea este o operat ie stabil a din punct de vedere numeric deoarece | y | | x1 | + | x2 | . Imp art irea: y = f ( x1 , x2 ) = ey = y x1 , x2 (2.14)

Inmult irea:

1 x1 ex , e x1 x2 ( x2 ) 2 2 = x1 x2 .

(2.15)

S i mp art irea este o operat ie stabil a din punct de vedere numeric deoarece | y | | x1 | + | x2 | .

2.2. Principiul lucr arii

53

In aceste evalu ari ale erorilor s-a considerat c a toate calculele se efectueaz a exact. In realitate, rezultatul este rotunjit (la num arul de cifre semnicative specice sistemului de calcul) si eroarea relativ a a rezultatului este majorat a cu eroarea relativ a de rotunjire. In cazul n care prezint a important a deosebit a evaluarea erorii unui calcul numeric se poate utiliza urm atorul tip abstract de date care permite controlul propag arii erorii. In acest tip de date numerele reale x sunt reprezentate prin valoarea x si marginea erorii relative x , deci prin intervalul: x (1 x ) x x (1 + x ). (2.16)

real tip inregistrare interval real val ;valoare real er ;marginea erorii relative procedura suma (x,y,s) ;calculeaz as=x+y interval x, y, s s.val = x.val + y.val s.er = err + (|x.val x.er| + |y.val y.er|)/|s.val| retur procedura dif(x,y,d) ;calculeaz ad=x-y interval x, y, d d.val = x.val y.val d.er = err + (|x.val x.er| + |y.val y.er|)/|d.val| retur procedura prod(x,y,p) ;calculeaz ap=x*y interval x, y, p p.val = x.val y.val p.er = err + |x.er| + |y.er| retur procedura rap(x,y,c) ;calculeaz ac=x/y interval x, y, c c.val = x.val/y.val c.er = err + |x.er| + |y.er| retur

2.2.3

Erori de trunchiere

In esent a, metodele numerice constau n reducerea rezolv arii unei probleme complicate la un num ar nit de etape simple, care n fond sunt operat ii aritmetice elementare. Datorit a caracterului nit al oric arui algoritm, ncercarea de a rezolva probleme de analiz a

54

Capitolul 2. Erori n rezolvarea problemelor numerice

matematic a, ce presupun teoretic o innitate de pa si (cum sunt de exemplu calculele limitelor) determin a aparit ia unor erori de metod a numite erori de trunchiere. Calculul numeric al limitelor de siruri, serii sau funct ii (inclusiv calculul numeric al derivatelor si integralelor, care se reduc n fond tot la calculul limitelor) presupune trunchierea unui proces numeric innit. Pentru a evident ia eroarea de trunchiere se consider a un sir numeric xk = 1, 2, . . . , n convergent c atre limita x = limk xk . Conform denit iei convergent ei, pentru orice exist a un n astfel nc at |x xk | , pentru orice k > n. In consecint a, pentru o eroare impus a exist a un rang nit n, astfel nc at xn reprezint a o aproximare satisf ac atoare pentru limita x. Rezult a c a, dup a evaluarea unui numar n sucient de mare de termeni, ultimul poate adoptat ca solut ie numeric a x = xn , cu o eroare de trunchiere dependent a de acest n. In general, eroarea de trunchiere este cu at at mai mic a cu c at num arul de termeni calculat i este mai mare. Modul n care eroarea de trunchiere depinde de n caracterizeaz a viteza de convergent a a algoritmului. Se spune c a un algoritm are viteza de convergent a de ordinul p, dac a exist a o constant a c > 0, astfel nc at eroarea de trunchiere satisface inegalitatea: c | n | = | x xn | p , (2.17) n pentru orice n > 1. Se constat a c a ordinul vitezei de convergent a a unui algoritm este dat de panta dreptei ce m argine ste superior gracul funct iei || = f (n) n scar a dublu logaritmic a. O categorie important a de procese numerice innite o reprezint a seriile Taylor. Acestea, ind serii de puteri, pot utilizate la evaluarea funct iilor elementare (sinus, cosinus, exponent ial a, logaritm, etc.) si a celor speciale (Bessel, integrale eliptice ) prin reducerea la operat ii aritmetice elementare (adun ari si nmult iri). Pentru a exemplica modul n care poate sumat a numeric o serie cu controlul erorii de trunchiere se consider a dezvoltarea n serie Taylor a funct iei y = sin x: x3 x5 x7 + + ... 3! 5! 7! Termenul general al seriei poate calculat recursiv: y =x Tk = x2 (1)k 2k1 x = T k 1 . (2k 1)! (2k 1)(2k 2)
n

(2.18)

(2.19)

Prin trunchierea seriei la rangul n se obt ine y =


k=1

(1)k+1 x2k1 . (2k 1)!

(2.20)

Deoarece seria este alternant a, eroarea de trunchiere este majorat a de modulul primului termen neglijat: |x|2n+1 . (2.21) | y | = | y y | (2n + 1)!

2.3. Chestiuni de studiat

55

Rezult a urm atorul pseudocod pentru evaluarea funct iei sinus cu o eroare de trunchiere mai mic a dec at eroarea de rotunjire. funct ia sinus(x) real x, t, s ntreg k t=x s=t k=1 repet a k =k+2 t = tx2 /k/(k 1) s=s+t p an a c and |t| <err ntoarce s

Efortul de calcul pentru evaluarea funct iei cre ste odat a cu sc aderea erorii impuse, dar si cu cre sterea modulului variabilei x. Deoarece funct ia sin(x) este periodic a, algoritmul poate mbun at a tit prin reducerea variabilei la primul cerc (sau chiar la primul cadran).

2.3

Chestiuni de studiat

1. Determinarea erorii relative de rotunjire a sistemului de calcul; 2. Analiza propag arii erorilor inerente; 3. Analiza erorii de trunchiere; 4. Implementarea unor algoritmi numerici care controleaz a eroarea.

2.4

Modul de lucru

Pentru desf a surarea lucr arii lansat i lucrarea Erori n rezolvarea problemelor numerice din meniul general. Aceasta are ca urmare lansarea urm atorului meniu: Eroarea de rotunjire Calcule cu controlul erorii Erori de trunchiere

56

Capitolul 2. Erori n rezolvarea problemelor numerice

2.4.1

Determinarea erorii relative de rotunjire a sistemului de calcul

Se selecteaz a opt iunea Eroarea de rotunjire care are ca efect calculul si a sarea erorii relative de rotunjire specice sistemului.

2.4.2

Analiza propag arii erorilor inerente

Se selecteaz a opt iunea Calcule cu controlul erorii din meniul principal, care are ca efect lansarea unui program ce emuleaz a un calculator de buzunar care folose ste notat ia polonez a invers a (operand, operand, operator). Acest calculator nu opereaz a cu numere reale ci cu intervale (valoare numeric a si margine superioar a a erorii relative). Programul permite introducerea e a operanzilor (valoare si eroare relativ a) e a operatorilor unari (I - invers, O - opus, V - radical ) sau binari ( + - * / ). Operanzii sunt introdu si ntr-o stiv a vizualizat a pe ecran de 5 coloane (num ar de ordine, valoare numeric a, eroare relativ a, limita minim a si limita maxim a a valorii exacte). Operatorii unari act ioneaz a asupra ultimului element introdus n stiv a, nlocuindu-l cu valoarea obt inut a n urma aplic arii operatorului (stiva nu si modic a dimensiunea). Operatori binari folosesc ca operanzi ultimele dou a elemente din stiv a, iar rezultatul nlocuie ste aceste elemente (stiva se mic soreaz a cu o unitate). Pentru a facilita manipularea stivei sunt disponibili nc a doi operatori unari, cu caracter nenumeric (R - repet a v arful stivei si E - extrage element din stiv a), care modic a (incrementeaz a respectiv decrementeaz a) n alt imea stivei. Se propune rezolvarea ecuat iei de gradul doi: ax2 + bx + c = 0, n care a = 1, b = 100.01, c = 1 (cu r ad acinile x1 = 100; x2 = 0, 01). Valorile a, b, c se vor introduce cu erorile relative de 0.1% = 0.001. Se vor nota valorile intermediare: = b2 4ac, b + , x1 = 2a b x2 = , 2a si erorile relative asociate. Pentru a evita erorile datorate anul arii prin sc adere, se va calcula a doua r ad acin a pe baza relat iei x1 x2 = c/a c . x2 = ax1

2.4. Modul de lucru

57

Se vor compara erorile relative si absolute ale rezultatelor obt inute pe cele dou a c ai.

2.4.3

Analiza erorii de trunchiere

Se selecteaz a opt iunea Erori de trunchiere din meniul principal, care are ca efect lansarea unui program care realizeaz a sumarea urm atoarelor serii: Taylor pentru funct ia exponent ial a Taylor pentru funct ia sinus Taylor pentru funct ia logaritm natural Fourier pentru funct ia crenel armonica alternant a armonica alternant a cu convergent a mbun at a tit a prin metoda Euler Dup a selectarea seriei si alegerea valorii variabilei independente x, programul calculeaz a si a seaz a suma part ial a a seriei si eroarea absolut a de trunchiere pentru diferite ordine, apoi reprezint a grac variat ia erorii n funct ie de num arul de termeni sumat i. Pentru a putea facilita comparat iile se pot reprezenta si mai multe grace de erori simultan. Se recomand a observarea convergent 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 a dezvolt arile n serie Taylor sunt: x2 x3 x4 + + + 2! 3! 4! x3 x5 x7 sin(x) = x + + 3! 5! 7! (x 1)2 (x 1)3 (x 1)4 ln(x) = (x 1) + + 2 3 4 ex = 1 + x + seriei Fourie pentru evaluarea expresiilor: crenel(1), crenel(0.1).

58

Capitolul 2. Erori n rezolvarea problemelor numerice

Funct ia crenel este denit a astfel crenel (x) =


4 4

dac a sin(x) > 0 dac a sin(x) 0

iar dezvoltarea ei n serie Fourier conduce la crenel (x) = sin(x) + armonicii alternante 1 1 1 A = 1 + + ... = 2 3 4 sin(3x) sin(5x) + + 3 5

k=1

(1)k+1

1 k

armonicii alternante cu convergent a mbun at a tit a 1 1 1 A = 1 + + . . . = 0. 5 + 2 3 4 k=1


1 2k1

2k1 +1 . 4k

Se vor comenta rezultatele si se va aprecia viteza de convergent a. Indicat ie: Pentru estimarea vitezei de convergent a se calculeaz a panta dreptei ce m argine ste gracul erorii, n scara dublu logaritmic a.

2.4.4

Implementarea unor algoritmi cu controlul erorii

Se va genera pseudocodul funct iei cosinus, determinat a prin serie Taylor trunchiat a p an a la atingerea unei erori de trunchiere impuse. Se va implementa acest algoritm ntrun limbaj de programare sub forma unei funct ii cosinus(x, ert), n care x este variabil a independent a iar ert este eroarea de trunchiere impus a. Se va implementa algoritmul de determinare al erorii relative de rotunjire err, iar n nal se va implementa algoritmul de evaluare a funct iei cosinus cu ert = err si cu controlul propag arii erorii, sub forma unei proceduri care s a calculeze cos(x) si eroarea relativ a asociat a.

2.5
2.5.1

Exemple
Exemple rezolvate
2 cu 2

1. S a se calculeze o margine a erorii relative pentru aproximarea num arului cifre semnicative exacte. Rezolvare:

2.5. Exemple

59

a a num arului 2. Aproximarea cu Not am cu x = 2 = 1.4142 . . ., valoarea exact 2 cifre semnicative exacte a lui 2 este: x = 1.41. Eroarea absolut a este: ex = x x = 1.4142 . . . 1.41 = 0.0042 . . .. Eroarea relativ a este: x = care este m arginit a de: | x | < Deci: 2 = 1.41 0.36%. 0.005 = 0.0035 . . . < 0.0036 = 0.36%. 1. 4 ex 0.0042 . . . = , x 1.4142 . . .

2. Fie x = 5.43 1%, y = 5.42 2%, z = 3 1%. S a se calculeze (x + y ) z . Comentat i rezultatul obt inut. Rezolvare: Mai nt ai se efectueaz a operat ia din paranteze, care este, de fapt, o sc adere: x + y = 5.43 5.42 = 0.01. Eroarea relativ a va m arginit a de: x+y = x y 5.42 2 5.43 1 + = x + y = x+y x+y 0.01 100 0.01 100

= 5.43 + 10.84 = 16.27 = 1627%. Eroarea este foarte mare deoarece au fost sc azute dou a numere foarte apropiate (a ap arut fenomenul de anulare prin sc adere). Rezultatul nal (x + y ) z = 0.03 este calculat cu o eroare relativ a m arginit a de: (x+y)z = x+y + z = 1627 1 1628 + = = 1628%. 100 100 100

3. Fie x = 2.3 2%, y = 3.2 3%, z = 5.5 5%. S a se calculeze (x + y ) + z si x + (y + z ). Comentat i rezultatele obt inute. Rezolvare: S a calcul am (x + y ) + z . Mai nt ai se efectueaz a operat ia din paranteze: x + y = 2.3 + 3.2 = 5.5. Eroarea relativ a va m arginit a de: x+y = x+y = y x x + y ; x+y x+y (2.22)

3. 2 3 2.58 2. 3 2 + = = 2.58%. 5.5 100 5.5 100 100

60

Capitolul 2. Erori n rezolvarea problemelor numerice

Rezultatul nal (x + y ) + z = 5.5 + 5.5 = 11.0 este calculat cu o eroare relativ a m arginit a de: (x+y)+z = (x+y)+z = x+y z x+y + z ; (x + y ) + z (x + y ) + z (2.23)

5. 5 5 3.79 5.5 14.2 1 + = = 3.79%. 11 5.5 100 11 100 100

In continuare calcul am x + (y + z ). Mai nt ai se efectueaz a operat ia din paranteze y + z = 3.2 + 5.5 = 8.7. Eroarea relativ a va m arginit a de: y +z = y +z = y z y + z ; y+z y+z (2.24)

3. 2 3 5. 5 5 4.26 + = = 4.26%. 8.7 100 8.7 100 100

Rezultatul nal x + (y + z ) = 2.3 + 8.7 = 11.0 este calculat cu o eroare relativ a m arginit a de: x+(y+z) = x+(y+z) = Observ am c a: (x+y)+z = x+(y+z) . Intr-adev ar, nlocuind relat ia (2.22) n relat ia (2.23), obt inem: (x+y)+z = x y z x + y + z . x+y+z x+y+z x+y+z (2.26) y+z x x + y +z ; x + (y + z ) x + (y + z ) (2.25)

8.7 37.1 1 3.79 2. 3 2 + = = 3.79%. 11 100 11 8.7 100 100

Similar, nlocuind (2.24) n (2.25), obt inem exact acela si rezultat, (2.26). In realitate, n aceste calcule nu am tinut cont de erorile de rotunjire eps. Acestea se suprapun peste erorile inerente, astfel nc at este mai corect s a scriem: x+y = Urmeaz a c a: (x+y)+z = z x+y x+y + z + eps. (x + y ) + z (x + y ) + z (2.28) y x x + y + eps. x+y x+y (2.27)

2.6. Intreb ari si probleme

61

Inlocuind (2.27) n (2.28), rezult a c a: (x+y)+z = x y z x+y x + y + z + eps + eps. x+y+z x+y+z x+y+z x+y+z

Similar se obt ine: x+(y+z) = y z y+z x x + y + z + eps + eps. x+y+z x+y+z x+y+z x+y+z

In consecint a: (x+y)+z = x+(y+z) . Adunarea numerelor reale pe un sistem de calcul nu este asociativ a.

2.5.2

Exemple propuse

1. S a se calculeze o margine a erorii relative pentru aproximarea num arului cu 3 cifre semnicative exacte. 2. S a se calculeze o margine a erorii relative pentru aproximarea num arului e cu 2 cifre semnicative exacte. 3. Fie x = 2.01 1%, y = 4.24 4%, z = 2.12 2%. S a se calculeze x y/z . Comentat i rezultatul obt inut. 4. Fie x = 3.12 1%, y = 2 1%, z = 1.21 2%. S a se calculeze x y + z .

2.6

Intreb ari si probleme

1. Cum poate caracterizat a eroarea unei variabile vectoriale x? 2. Implementat i algoritmul de determinare a erorii relative de rotunjire n diferite limbaje de programare ( n simpl a si dubl a precizie) si apoi comparat i rezultatele. 3. Ce modic ari trebuie aduse algoritmului de determinare a erorii relative de rotunjire pentru ca acesta s a determine nu numai ordinul de m arime al erorii ci si valoarea sa exact a? 4. Denit i si implementat i un tip abstract de date, care s a reprezinte ecare num ar real ca o pereche de numere reale ce l ncadreaz a (valoare maxim a, valoare minim a).

62

Capitolul 2. Erori n rezolvarea problemelor numerice

5. Este adunarea numerelor reale rotunjite o operat ie asociativ a? Pentru a aduna mai multe numere reale diferite cu eroare minim a ele trebuie sortate n ordine cresc atoare sau descresc atoare? 6. Pentru a mic sora erorile de rotunjire la sumarea unei serii cum trebuie adunat i termenii, n ordine cresc atoare sau descresc atoare? 7. Folosit i opt iunea Calcule cu controlul erorii pentru a determina rezistent a de sunt ce trebuie folosit a la transformarea unui galvanometru de 1mA ( n clasa 2%) a c arui rezistent a R = 57.5 a fost determinat a cu precizie de 0,5(%) ntr-un ampermetru de 1A. 8. Generat i un algoritm pentru rezolvarea unei ecuat ii de gradul doi, care evit a fenomenul de anulare prin sc adere. 9. Generat i si implementat i un algoritm, pentru evaluarea funct iilor Bessel.

Brook Taylor (1685, Anglia - 1731, Anglia)

http://www-groups.dcs.st-and.ac.uk/ history/Mathematicians/Taylor.html

Jean Baptiste Joseph Fourier (1768, France - 1830, France)

http://www-groups.dcs.st-and.ac.uk/ history/Mathematicians/Fourier.html

Lucrarea 3 Rezolvarea sistemelor de ecuat ii liniare prin metoda Gauss. Strategii de pivotare n rezolvarea sistemelor algebrice liniare
3.1
3.1.1

Metoda Gauss f ar a pivotare


Caracterizarea metodei

Metoda Gauss este o metod a direct a de rezolvare a sistemelor de ecuat ii algebrice liniare care au matricea sistemului p atrat a si nesingular a. Solut ia sistemului se obt ine dup a un num ar nit de pa si. In lucrare se prezint a principiul metodei si se analizeaz a algoritmul at at din punctul de vedere al complexit a tii c at si al stabilit a tii numerice, evident iindu-se limitele acestei metode.

3.1.2

Principiul metodei

Fie sistemul de ecuat ii: a11 x1 + a12 x2 + . . . + a1n xn = b1 a21 x1 + a22 x2 + . . . + a2n xn = b2 ...... an1 x1 + an2 x2 + . . . + ann xn = bn 63 (3.1)

64

Capitolul 3. Rezolvarea sistemelor de ecuat ii liniare prin metoda Gauss

sau n forma matriceal a Ax = b (3.2) A ind matricea p atrat a n n - dimensional a, iar b si x doi vectori n - dimensionali. Cunosc and matricea sistemului A si termenul liber b se pune problema determin arii solut iei x. Inmult ind prima ecuat ie, pe r and, cu ai1 /a11 , pentru i = 2, . . . , n, apoi adun and-o la ecuat ia cu num arul i, se elimin a x1 din toate ecuat iile, cu except ia primei ecuat ii: a11 x1 + a12 x2 + . . . + a1n xn = b1 a22 x2 + . . . + a2n xn = b2 ...... an2 x2 + . . . + ann xn = bn Coecient ii care apar n linile 2, . . . , n, de si modicat i, s-au notat n acela si mod, deoarece ei se vor memora n acelea si locat ii de memorie. Inmult ind a doua ecuat ie cu ai2 /a22 si adun and-o apoi la ecuat ia i, pentru i = 3, . . . , n, se elimina x2 din toate ecuat iile aate sub linia a doua. Se continu a astfel p an a se aduce sistemul la forma: a11 x1 + a12 x2 + . . . + a1n xn = b1 a22 x2 + . . . + a2n xn = b2 ...... ann xn = bn unde a11 , . . . , ann , b1 , . . . , bn au alte valori dec at n sistemul init ial. Necunoscutele se determin a prin retrosubstitut ie: xn xn 1 xk x1 = = ...... = ...... = b1 bn , ann bn1 an1,n xn , an1,n1 bk
n j =k+1

(3.3)

(3.4)

akj xj

ak,k
n j =2

(3.5)

a1,j xj

a11

Etapa de aducere a matricei A la forma triunghiular a se nume ste eliminare sau triangularizare, iar etapa de determinare a solut iilor - substitut ie regresiv a sau retrosubstitut ie. Fiecare din elementele akk , cu k = 1, 2, . . . , n se nume ste pivot.

3.1. Metoda Gauss f ar a pivotare

65

Dac a la o etap a a algoritmului se nt alne ste un pivot nul, pentru a evita o mp art ire la 0 este necesar a o permutare a liniilor (sau a liniilor si coloanelor) n scopul aducerii pe linia i, coloana i a unui element nenul. Aceast a operat ie poart a numele de pivotare.

3.1.3

Pseudocodul algoritmului Gauss f ar a pivotare


procedura gauss fp(n, a, b, x) tablou real a(n, n), b(n), x(n) ;eliminare pentru k = 1, n 1 pentru i = k + 1, n p = aik /akk pentru j = k + 1, n aij = aij akj p bi = bi bk p ;retrosubstitut ie xn = bn /ann pentru i = n 1, 1, 1 s = bi pentru j = n, i + 1, 1 s = s aij xj xi = s/aii retur

;etapele elimin arii ;parcurge coloana de sub pivot ;parcurge linia i, la dreapta ;pivotul

Procedura are parametrii: de intrare: n = dimensiunea sistemului; a(n, n) = matricea sistemului; b(n) = vectorul termenilor liberi; de ie sire: x(n) = vectorul solut ie. Matricea A este adus a la forma superior triunghiular a dup a n 1 pa si. La ecare pas k , linia k si cele de deasupra ei, colona k si cele din st anga ei nu sunt afectate.

66

Capitolul 3. Rezolvarea sistemelor de ecuat ii liniare prin metoda Gauss

3.1.4

Analiza complexit a tii

Efort de calcul Pentru trecerea de la pasul k la pasul k + 1 se efectueaz a: (n k )(n k + 1) nmult iri, (n k )(n k + 1) adun ari, (n k ) mp art iri. In consecint a, pentru trecerea de la matricea init ial a la forma superior triunghiular a, se vor efectua:
n1 k=1 (n n1 k=1 (n n1 k=1 (n

k )(n k + 1) = n(n2 1)/3 nmult iri, k )(n k + 1) = n(n2 1)/3 adun ari, k ) = n(n 1)/2 mp art iri.

In etapa de retrosubstitut ie se mai efectueaz a:


n1 i=1 (n n1 i=1 (n

i) = n(n 1)/2 nmult iri, i) = n(n 1)/2 adun ari,

n imp art iri. Deci, n total se efectueaz a: n(n 1)(2n + 5)/6 nmult iri, n(n 1)(2n + 5)/6 adun ari, n(n + 1)/2 mp art iri. Deoarece, n general, timpul necesar calculatorului pentru a efectua o nmult ire sau o mpart ire este aproximativ egal cu cel consumat pentru o adunare, efortul de calcul este 2n(2n2 + 6n 2)/6 operat ii aritmetice elementare. Dac a n este mare (n > 2), efortul de calcul este de ordinul 2n3 /3 si se noteaz a O(2n3 /3). Necesarul de memorie Pentru memorarea matricei A si a vectorilor b si x sunt necesare: n2 + n + n = n(n + 2) locat ii de memorie, ecare locat ie de memorie ind rezervat a unui num ar real.

3.2. Strategii de pivotare n rezolvarea sistemelor algebrice liniare

67

3.1.5

Analiza erorilor

Rulat pe un calculator ipotetic de precizie innit a, algoritmul Gauss permite determinarea solut iei exacte a sistemului. Cu alte cuvinte acest algoritm nu introduce eroare de metod a. Pot apare ns a erori de rotunjire, datorate preciziei nite a echipamentului de calcul. Aceste erori cresc odat a cu cre sterea dimensiunii n a sistemului. Metoda Gauss n aceast a variant a (f ar a pivotare) poate genera instabilit a ti numerice chiar dac a nu se nt alne ste vreun element aii nul, din cauza erorilor de rotunjire. Pentru evaluarea erorii se poate folosi reziduul r = Ax b, mai precis norma lui. Aceast a norm a poate evaluat a euclidian: r| = sau n sens Ceb sev: r = max rk , Eroarea relativ a se dene ste ca r = r / b . (3.9) k = 1, . . . , n. (3.8)
2 rk k

(3.6)

(3.7)

Norma reziduului denit a anterior, nu trebuie confundat a cu norma erorii adev arate: e = xadev arat x . Eroarea relativ a adev arat a se dene ste ca: = e/ xadev arat . (3.11) (3.10)

Calculul erorii (3.10) ar necesita ns a cunoa sterea solut iei exacte a sistemului. De aceea, n practic a se face doar o evaluare a erorii, folosind norma reziduului, care ns a poate avea o valoare mai mare sau mai mic a dec at eroarea real a.

3.2

Strategii de pivotare n rezolvarea sistemelor algebrice liniare


Caracterizarea metodei

3.2.1

Pivotarea este o metod a care permite extinderea domeniului de aplicabilitate a metodei Gauss si mbun at a tirea stabilit a tii ei numerice.

68

Capitolul 3. Rezolvarea sistemelor de ecuat ii liniare prin metoda Gauss

In acest paragraf se analizeaz a diferite strategii de pivotare si efectele lor asupra erorii cu care se obt ine solut ia.

3.2.2

Principiul metodei

La rezolvarea unui sistem de ecuat ii prin metode directe, de exemplu prin metoda Gauss, poate apare situat ia n care un element pivot akk este nul, chiar dac a matricea sistemului este nesingular a. Metodele directe necesit and mp art irea la pivot, sistemul nu se poate rezolva n forma dat a. Permutarea liniilor si/sau a coloanelor astfel nc at s a se aduc a pe pozit ia diagonal a (k, k ), un element nenul se nume ste pivotare. Pentru a obt ine o bun a stabilitate numeric a (erori de rotunjire minime) se prefer a alegerea ca pivot a unui element de modul maxim. Se pot utiliza trei strategii de pivotare: part ial a, total a sau diagonal a. Pivotarea part ial a const a n c autarea pivotului de modul maxim printre tot i coecient ii aat i sub linia k si pe coloana k si aducerea acestui element pe pozit ia (k, k ) prin permut ari de linii (ceea ce este echivalent cu schimbarea ordinii ecuat iilor). Pivotarea total a const a n c autarea pivotului de modul maxim printre tot i coecient ii aat i sub linia k si la dreapta coloanei k si aducerea acestui element pe pozit ia (k, k ) prin permut ari de linii si de coloane (se schimb a at at ordinea liniilor c at si cea a coloanelor). Pivotarea diagonal a const a n c autarea pivotului optim doar printre elementele diagonale aii , cu i k . Aducerea acestui element pe pozit ia (k, k ) se face, ca si la pivotarea total a, prin permut ari de linii si coloane. Avantajul acestei strategii de pivotare este p astrarea simetriei matricei sistemului. La metoda cu pivotare part ial a, unde se fac doar permut ari de linii, ordinea necunoscutelor n ecare ecuat ie nu se modic a. La metodele cu pivotare total a sau diagonal a, datorit a permut arii coloanelor, se modic a si ordinea necunoscutelor n sistem. De aceea, aceste strategii impun memorarea permut arilor de coloane f acute pe parcursul algoritmului, pentru a se putea reconstitui la sf ar sit ordinea init ial a a necunoscutelor.

3.2.3

Pseudocodul algoritmului Gauss cu pivotare part ial a

funct ia gausspp (n, a, b, x) tablou real a(n, n), b(n), x(n) ; eliminare pentru k = 1, n 1 max = k pentru m = k + 1, n

; etapele elimin arii ; g asire pivot

3.2. Strategii de pivotare n rezolvarea sistemelor algebrice liniare

69

dac a |amx | > |amax,k | atunci max = m dac a amax,k = 0 atunci ntoarce 1 ; eroare dac a max = k atunci ; permut a liniile max, k pentru m = k, n temp = akm akm = amax,m amax,m = temp temp = bk ; permut a termenii liberi bk = bmax bmax = temp ; s-a g asit pivotul pentru i = k + 1, n ; parcurge coloana de sub pivot dac a aik = 0 atunci p = aik /akk pentru j = k + 1, n ; parcurge linia i aij = aij akj p ; la dreapta pivotului bi = bi bk p ; retrosubstitut ie dac a an,n = 0 atunci ntoarce 1 ; eroare xn = bn /an,n pentru i = n 1, 1, 1 s = bi pentru j = n, i + 1, 1 s = s aij xj xi = s/aii ntoarce 0 Funct ia are parametrii: de intrare: n = dimensiunea sistemului; a(n, n) = matricea sistemului; b(n) = vectorul termenilor liberi. de ie sire: x(n) = vectorul solut iei. Funct ia ntoarce: 0 1 - dac a algoritmul s-a executat integral; - dac a matricea sistemului este singular a.

70

Capitolul 3. Rezolvarea sistemelor de ecuat ii liniare prin metoda Gauss

3.2.4

Analiza complexit a tii

Efort de calcul Dac a se neglijeaj a timpul consumat datorit a permut arilor de linii, efortul de calcul la 3 procedura Gauss cu pivotare este de ordinul O(2n /3), ca si la cea f ar a pivotare. Necesarul de memorie Pentru memorarea matricei A si a vectorilor b si x sunt necesare: n2 + n + n = n(n + 2) locat ii, ecare locat ie de memorie ind rezervat a unui num ar real.

3.2.5

Analiza erorilor

Erorile se calculeaz a la fel ca la algoritmul Gauss f ar a pivotare. De si stabilitatea numeric a a algoritmului cu pivotare este n general mai bun a, totu si, erorile de rotunjire pot afecta grav solut ia n cazul sistemelor slab condit ionate.

3.3

Chestiuni de studiat

1. Rezolvarea unor sisteme algebrice liniare; 2. Analiza experimental a a algoritmilor; 3. Implementarea algoritmilor ntr-un limbaj de programare; 4. C autare de informat ii legate de aceast a tem a.

3.4

Modul de lucru

Se selecteaz a lucrarea Rezolvarea sistemelor cu metoda Gauss din meniul principal. Aceasta are ca efect lansarea urm atorului meniu: Rezolvare sisteme de ecuat ii Analiza algoritmilor

3.4. Modul de lucru

71

3.4.1

Rezolvarea unor sisteme algebrice liniare

Se selecteaz a opt iunea Rezolvare sisteme de ecuat ii. Se vor introduce parametrii x1 + x2 + 2x1 + x2 + x1 + x2 + 2x1 + 3x 2 + x1 + x2 + necesari pentru rezolvarea urm atoarelor sisteme: x3 x3 3x3 x3 x3 + x4 + 3x4 + x4 + 2x4 + x4 + x5 + x5 + 2x 5 + x5 + 4x 5 = = = = = 9 12 17 15 15 R : x1 x2 x3 x4 x5 =1 =2 =3 =1 =2

x1 + x2 2x 3 = 3 3x + x3 = 10 1 x1 + 2x2 + x3 = 12

R : x1 = 2 x2 = 3 x3 = 4

y + z = 4 2x + y + 2z = 11 x + 2y + z = 7

x + 2y + z = 7 x + 2y + 2z = 10 2x + 4y + 3z = 11

mx1 + 1000x2 = 1000 1000x1 = 1000

unde m ia valorile: 1000, 100, 10, 1, 101 , 104 , 105 , 106 . Se vor selecta pe r and metoda f ar a pivotare si apoi cu pivotare. Se vor comenta rezultatele obt inute.

3.4.2

Analiza experimental a a algoritmului

Se selecteaz a optiunea Analiza algoritmilor. Astfel, se apeleaz a un program care rezolv a sisteme de ecuat ii liniare de diferite m arimi prin metoda Gauss f ar a pivotare, Gauss cu pivotare part ial a si Gauss cu pivotare total a. Parametrul de intrare al programului este dimensiunea sistemului, n. Dup a preluarea acestui parametru programul genereaz a aleator un sistem de n ecuat ii si n necunoscute, l rezolv a si a seaz a: eroarea absolut a, eroarea relativ a si reziduul rezultatului, calculate ecare cu formula normei Euclidiene, sau a normei Ceb sev ( n total 6 valori). Se a seaz a de asemenea timpul de calcul.

72

Capitolul 3. Rezolvarea sistemelor de ecuat ii liniare prin metoda Gauss

Pentru a simplica operat ia de culegere a datelor numerice, programul cere valoarea init ial a a lui n, valoarea nal a si pasul. Se recomand a folosirea urm atoarelor valori: valoare init ial a 10, valoare nal a 100, pas 10, ceea ce corespunde sirului de valori n = 10, 20, 30, 40, 50, 60, 70, 80, 90, 100. Rezultatele numerice sunt a sate n consola Scilab si reprezentate grac. Se vor nota pentru ecare n si ecare metod a eroarea relativ a (norma Euclidian a si norma Ceb sev) si reziduul relativ (norma euclidian a), precum si timpul de calcul. n timp [s] er.rel (Euclid) er.rel (Ceb sev) reziduu rel. (Euclid) G.f.p G.p.p G.p.t G.f.p G.p.p. G.f.p G.p.p. G.f.p G.p.p. 10 20 90 100

Se vor reprezenta pe h artie milimetric a: curba timpului de calcul n funct ie de dimensiunea sistemului n; curbele erorilor de calcul n funct ie de n.

3.4.3

Implementarea algoritmilor ntr-un limbaj de programare

Se va implementa o procedur a proprie de rezolvare a unui sistem de ecuat ii prin metoda Gauss f ar a pivotare. Se va compila procedura elimin ndu-se eventualele erori. Se va scrie pseudocodul si se va implementa pe calculator un program care apeleaz a procedura de la punctul anterior si rezolv a sistemul de ecuat ii: 2x + y + z = 7 x + y + z = 6 2x + y + 3z = 13 R: x=1 y=2 z=3

Acest program va permite introducerea datelor de la consol a si a sarea pe ecran a solut iei. Se vor nota si comenta rezultatele obt inute, eventualele dicult a ti ap arute pe parcursul lucrului.

3.5. Exemple

73

3.4.4

C autare de informat ii

C autat i pe Internet informat ii (coduri) legate de metoda Gauss pentru rezolvarea direct a a sistemelor de ecuat ii liniare. Exemple de cuvinte cheie: Gauss elimination and back substitution.

3.5
3.5.1

Exemple
Exemple rezolvate

1. Fie sistemul de ecuat ii: x + 2y z = 4 2x + 2y 3z = 2 3x + 2y + 2z = 2

S a se rezolve sistemul de ecuat ii prin metoda Gauss. Rezolvare:

Deoarece matricea coecient ilor sistemului de ecuat ii este p atrat a si nesingular a, metoda Gauss se poate aplica pentru rezolvarea sistemului de ecuat ii. Metoda Gauss const a n etapa de eliminare si etapa de retrosubstitut ie. In etapa de eliminare (sau triangularizare) matricea coecient ilor sistemului de ecuat ii se aduce la forma superior triunghiular a. Pentru triangularizarea matricii, prima ecuat ie (linie, notat a L1 n c ele ce urmeaz a) se nmult e ste cu (2/1) si se adun a la a doua ecuat ie (linie, L2 ) pentru a se elimina termenul n x din a doua ecuat ie. De notat c a, dup a acest pas, prima ecuat ie nu se modic a, doar a dou a ecuat ie sufer a modic ari, conform relat iei L2 = L2 + (2) L1 . L1 L2 L3 L1 L2 L3
2 x + 2y z = 4 | ( 1 ) 2x + 2y 3z = 2 3x + 2y + 2z = 2

L 2 =L2 +(2)L1

In continuare, prima ecuat ie (L1 ) se nmult e ste cu [(3)/1] si se adun a la a treia ecuat ie (L3 ), astfel elimin andu-se termenul n x si din a treia ecuat ie (L3 = L3 + 3 L1 ).

x + 2y z = 4 2y z = 6 3x + 2y + 2z = 2

74

Capitolul 3. Rezolvarea sistemelor de ecuat ii liniare prin metoda Gauss

L1 L2 L3 L1 L2 L3

3 ) x + 2y z = 4 | ( 1 2y z = 6 3x + 2y + 2z = 2

L 3 =L3 +3L1

Se observ a c a elementele de sub elementul diagonal din prima ecuat ie sunt nuli. Mai departe, se urm are ste anularea elementelor de sub elementul diagonal din a doua ecuat ie. Astfel, a doua ecuat ie (L2 ) se nmult e ste cu [8/(2)] si se adun a la a treia ecuat ie (L3 ), elimin andu-se termenul n y din a treia ecuat ie (L3 = L3 + 4 L2 ). De notat c a ecuat ia a doua (L2 ) nu sufer a modic ari. L1 L2 L3 L1 L2 L 3 4 x + 2y z = 8 2y z = 6 | ( ) 2 + 8y z = 14

4 x + 2y z = 2y z = 6 + 8y z = 14

L 3 =L3 +4L2

Se observ a c a matricea coecient ilor ultimului sistem de ecuat ii este superior triunghiular a. Necunoscutele sistemului se determin a in etapa de retrosubstitut ie (substitut ie regresiv a). In ultima ecuat ie apare o singur a necunoscut a, z , care se calculeaz a astfel: z= 10 = 2. 5

4 x + 2y z = 2y z = 6 5z = 10

In a doua ecuat ie, avem tot o singur a necunoscut a, y , deoarece z este deja calculat la pasul precedent. Astfel: y= 6 + z 6 + 2 = = 2. 2 2

In sf ar sit, n prima ecuat ie, singura necunoscuta este acum x, iar y si z ind calculate la pa sii anteriori. Rezult a: x= 4 2y + z = 4 4 + 2 = 2. 1

3.5. Exemple

75

Solut ia sistemului de ecuat ii este (2, 2, 2). 2. Fie sistemul de ecuat ii: 5 x + 2y + 4z = 3x y + z = 3 2x y + z = 2

S a se rezolve sistemul de ecuat ii prin metoda Gauss. Rezolvare: Etapa de eliminare:

Prima ecuat ie (L1 ) se nmult e ste cu [3/(1)] si se adun a la a doua ecuat ie (L2 ), astfel se elimin a termenul n x din a doua ecuat ie. Doar a doua ecuat ie se modic a (L2 = L2 + 3 L1 ). Prima ecuat ie (L1 ) se nmult e ste cu [(2)/(1)] si se adun a la a treia ecuat ie (L3 ), astfel se elimin a termenul n x si din a treia ecuat ie (L3 = L3 + (2) L1 ). De precizat c a prima ecuat ie (L1 ) nu se modic a. 3 2 5 | ( ) | ( ) x + 2y + 4z = 1 1 3x y + z = 3 2x y + z = 2 5 x + 2y + 4z = 5y + 13z = 18 5y 7z = 12

L1 L2 L3 L1 L2 L3

L 2 =L2 +3L1 L 3 =L3 +(2)L1

De notat c a ecuat ia a doua (L2 ) nu sufer a modic ari. L1 L2 L3 L1 L2 L 3

A doua ecuat ie (L2 ) se nmult e ste cu [(5)/5] si se adun a la a treia ecuat ie (L3 ), elimin andu-se y din a treia ecuat ie (L 3 = L3 + 1 L2 ).

5 x + 2y + 4z = 5 5y + 13z = 18 | ( ) 5 5y 7z = 12 x + 2y + 4z = 5 5y + 13z = 18 6z = 6

L 3 =L3 +L2

Se observ a c a matricea coecient ilor ultimului sistem de ecuat ii este superior triunghiular a.

76

Capitolul 3. Rezolvarea sistemelor de ecuat ii liniare prin metoda Gauss

Etapa de retrosubstitut ie: Necunoscutele sistemului se determin a astfel: z = y = x =


6 =1 6 13 1813z = 18 =1 5 5 52y 4z 524 = 1 = 1

1.

Solut ia sistemului de ecuat ii este (1, 1, 1). 3. Fie sistemul de ecuat ii: 2x + y z = 3 4x + 4y + z = 7 6x + 2y + 3z = 19

S a se rezolve sistemul de ecuat ii prin metoda Gauss. Rezolvare: Etapa de eliminare:

L1 L2 L3 L1 L2 L3 L1 L2 L 3

6 4 2x + y z = 3 | ( 2 ) | ( 2 ) 4x + 4y + z = 7 6x + 2y + 3z = 19 2x + y z = 3 5 2y + 3z = 13 | ( 2 ) 5y = 10 y 2y + z = 3 3z = 13 15 z = 45 2 2

L 2 =L2 +(2)L1 L 3 =L3 +3L1

L 3 =L3 +(5/2)L2

2x +

Matricea coecient ilor ultimului sistem de ecuat ii este superior triunghiular a. Se observ a c a n ultima ecuat ie a penultimului sistem de ecuat ii de mai sus exist a o singur a necunoscut a, y . Determinarea lui y din aceast a ecuat ie este corect a din punct de vedere matematic, dar nu este conform metodei Gauss. La metoda Gauss, necunoscutele sistemului se determin a c and matricea sistemului are o form a superior triunghiular a, ceea ce nu este cazul matricii penultimului sistem de ecuat ii. Etapa de retrosubstitut ie:

3.5. Exemple

77

z = y = x =

45 2 =3 15 2 9 133z = 132 =2 2 3y +z 32+3 = 2 2

= 1.

Solut ia sistemului de ecuat ii este (1, 2, 3). 4. Fie sistemul de ecuat ii: 2y 3z = 1 x + y z = 1 2x + 3y + z = 2

S a se rezolve sistemul de ecuat ii prin metoda Gauss. Rezolvare: Etapa de eliminare:

In prima ecuat ie coecientul diagonal (pivotul, termenul n x) este nul, ceea ce ar duce la o mp art ire la zero n etapa de eliminare. Din acest motiv, trebuie s a se aplice o tehnic a de pivotare. Se va utiliza pivotarea part ial a (permutarea a dou a linii), ind cea mai u sor de aplicat. Pentru a obt ine erori de rotunjire minime, se permut a prima ecuat ie (cu pivot nul) cu ecuat ia care are termenul n x maxim n modul (coecientul de sub pivotul nul). Se observ a c a a treia ecuat ie ndepline ste aceast a condit ie (| 2| > |1|). Astfel, prima ecuat ie se permut a cu a treia ecuat ie, iar sistemul de ecuat ii devine: L1 L2 L3 L1 L2 L3 L1 L2 L 3 1 ) 2 | ( 2x + 3y + z = 2 x + y z = 1 2y 3z = 1

L 2 =L2 +(1/2)L1

2 2x + 3y + z = 5 1 y 2z = 2 | ( 4 ) 2 5 2y 3z = 1 2x + 3y + 5 y 2
1 z 2 13 z 5

L 3 =L3 +(4/5)L2

z = 2 = 2 13 = 5

Matricea coecient ilor ultimului sistem de ecuat ii este superior triunghiular a. Etapa de retrosubstitut ie:

78

Capitolul 3. Rezolvarea sistemelor de ecuat ii liniare prin metoda Gauss

z = y = x =

13 5 = 13 5 1 2+ 2 z
5 2

1
2+ 1 2
5 2

=1 = 1.

23y z 2

231 2

Solut ia sistemului de ecuat ii este (1, 1, 1). 5. Fie sistemul de ecuat ii: x 2x 3x x Rezolvare: Etapa de eliminare: + y + 2y + 2y + 3y + z z z z + w + w w + 2w = 2 = 0 = 1 = 1

S a se rezolve sistemul de ecuat ii prin metoda Gauss.

L1 L2 L3 L4 L1 L2 L3 L4

x 2x 3x x

y + z +

w = w =

2y z +

2 3 1 2 | ( ) | ( ) | ( ) 1 1 1

L 2 =L2 +2L1

3y + z + 2w = z z y 2z 2y + 2z y +

+ 2y + z

w = 1

L 3 =L3 +(3)L1 L 4 =L4 +L1

x +

+ w = 2 + 3w = 4 4w = 7 + 3w = 3

In a doua ecuat ie coecientul diagonal (pivotul, termenul n y ) este nul, ind necesar a o pivotare part ial a. Pentru a obt ine erori de rotunjire minime, se permut a a doua ecuat ie (cu pivot nul) cu ecuat ia care are termenul n y maxim n modul (coecientul de sub pivotul nul). Se observ a c a a patra ecuat ie ndepline ste aceast a condit ie (| 2| > | 1|). Astfel, a doua ecuat ie se permut a cu a patra ecuat ie, iar sistemul de ecuat ii devine:

3.5. Exemple

79

L1 L 2 L3 L 4 L1 L 2 L 3 L 4 L1 L 2 L 3 L 4

x + y + z + 2y + 2z + 3z z +

x + y + z + w = 2 1 ) 2y + 2z + 3w = 3 | ( 2 y 2z 4w = 7 z + 3w = 4 w 3w 11 w 2 3w w 3w 11 w 2 7 w 6

L 3 =L3 +(1/2)L2

= 2 = 3 17 1 = 2 | ( ) 3 = 4 = 2 = 3 17 = 2 7 = 6

L 4 =L4 +(1/3)L3

Matricea coecient ilor ultimului sistem de ecuat ii este superior triunghiular a. Etapa de retrosubstitut ie: w = z y x = = =
7 6 7 6

x + y + z + 2y + 2z + 3z

=1
17 + 11

+ 11 w 17 2 2

= 23 2 = 1 3 32z 3w 23 = 3 =1 2 2 2y z w 2111 = 1 = 1. 1

Solut ia sistemului de ecuat ii este (1, 1, 1, 1).

3.5.2

Exemple propuse
3 3x y + z = 3x 6y + z = 2 x + 2y + 4z = 5

1. Fie sistemul de ecuat ii:

S a se rezolve sistemul de ecuat ii prin metoda direct a Gauss. 2. Fie sistemul de ecuat ii: x + y 3z = 1 2x + y z = 2 x y z = 1

S a se rezolve sistemul de ecuat ii prin metoda direct a Gauss.

80

Capitolul 3. Rezolvarea sistemelor de ecuat ii liniare prin metoda Gauss

3. Fie sistemul de ecuat ii: x + 2y z = 2 2x y 2z = 1 x + y + z = 1

S a se rezolve sistemul de ecuat ii prin metoda Gauss. 4. Fie sistemul de ecuat ii:

S a se rezolve sistemul de ecuat ii prin metoda Gauss. 5. Fie sistemul de ecuat ii:

y + z = 3 2x + y z = 1 x y + 2z = 2

S a se rezolve sistemul de ecuat ii prin metoda Gauss.

1 x + y + z = 2x 2y z = 1 3x + y + z = 1

3.6

Intreb ari

1. Cum se pot verica solut iile obt inute n urma rezolv arii unui sistem de ecuat ii? Cum s-ar putea evalua eroarea cu care s-au determinat necunoscutele? 2. Dat i exemplu de un sistem, cu matricea A nesingular a, care nu poate rezolvat prin algoritmul Gauss f ar a pivotare. 3. Care este ordinul de complexitate al algoritmului Gauss? S a se compare valoarea teoretic a cu valorile obt inute n urma experiment arilor. 4. S a se evalueze durata medie a unei operat ii matematice elementare. 5. Cum variaz a erorile de calcul introduse de algoritmul Gauss cu dimensiunea sistemului? Care este explicat ia? 6. C at de bine este evaluat a eroarea adev arat a prin norma reziduului? 7. Evident iat i utilitatea acestei proceduri n electrotehnic a.

3.6. Intreb ari

81

8. Ce modic ari trebuie aduse procedurii pentru a rezolva sisteme cu coecient i complec si? 9. Ce alte mbun at a tiri se pot aduce procedurii? 10. Ce limit ari are algoritmul prezentat n capitolul 3? 11. Cum variaz a timpul de calcul la rezolvarea de sisteme liniare prin metodele Gauss f ar a pivotare si cu pivotare? Care este explicat ia? 12. Care sunt avantajele si dezavantajele metodelor cu pivotare? 13. Cum variaz a erorile de calcul introduse de algoritmul Gauss pentru metodele: f ar a pivotare, cu pivotare part ial a, cu pivotare total a? 14. S a se fac a o analiz a a celor trei metode, lu and n considerat ie erorile si timpul de calcul. Care este metoda optim a? 15. Ce modic ari trebuie aduse algoritmului pentru a rezolva sistemul cu coecient i complec si? 16. Ce alte mbun at a tiri se pot aduce algoritmului? 17. Documentat i-v a n literatura de specialitate si pe internet cum poate evaluat a erorea solut iei numerice a unui sistem de ecuat ii algebrice liniare, atunci c and termenul liber este perturbat. Ce se ntelege printr-un sistem liniar bine condit ionat si, respectiv, slab condit ionat? Cum se deneste num arul de condit ionare si cum se folose ste acesta pentru a stabili gradul de condit ionare al unei probleme? 18. Cum se rezolv a sistemele algebrice liniare prin metode directe n mediul MATLAB/SCILAB? 19. Identicat i n biblioteca matematic a descris a in [2] funct ii avansate pentru rezolvarea cu metode directe a sistemelor de ecuat ii algebrice liniare. Ce aduc nou aceste funct ii fat a de cea folosit a in lucrare?

82

Capitolul 3. Rezolvarea sistemelor de ecuat ii liniare prin metoda Gauss

Johann Carl Friedrich Gauss (1777, Brunswick - 1855,Hanover (acum Germania)

http://www-gap.dcs.st-and.ac.uk/ history/Mathematicians/Gauss.html http://scienceworld.wolfram.com/biography/Gauss.html

Pafnuty Lvovich Chebyshev (1821, Rusia - 1894, Rusia)

http://scienceworld.wolfram.com/biography/Chebyshev.html

Euclid of Alexandria (aprox. 325 BC - aprox. 265 BC, Alexandria, Egipt)

http://www-gap.dcs.st-and.ac.uk/ history/Mathematicians/Euclid.html http://scienceworld.wolfram.com/biography/Euclid.html

Lucrarea 4 Metode iterative de rezolvare a sistemelor algebrice liniare


4.1 Caracterizarea metodelor

Metodele iterative sunt metode care permit obt inerea solut iei numerice a unui sistem de ecuat ii, prin generarea unui sir care tinde c atre solut ia exact a. Elementele acestui sir de iterat ii se calculeaz a recursiv, iar procesul se opre ste dup a un num ar nit de pa si, la ndeplinirea criteriului de eroare. Chiar dac a solut ia obt inut a prin metode iterative este afectat a de erori de trunchiere, erori care nu apar n cazul metodelor directe, este totu si posibil ca solut ia iterativ a s a e mai precis a dec at cea obt inut a prin metode directe. Pentru o anumit a clas a de sisteme, metodele iterative sunt superioare at at din punctul de vedere al erorii c at si din cel al efortului de cacul.

4.2

Principiul metodei

In lucrare se prezint a cele mai simple metode iterative pentru rezolvarea sistemelor algebrice liniare si se descrie clasa sistemelor pentru care acestea pot aplicate. Metodele iterative de rezolvare a sistemelor de ecuat ii liniare sunt metodele n care (k ) (k1) termenul x al sirului solut iilor se obt ine din termenul anterior, x . Solut ia exact a se obt ine teoretic dup a un num ar innit de iterat ii. In practic a, prin efectuarea unui num ar nit de iterat ii, se poate ajunge la o aproximare sucient de bun aa solut iei exacte. Dac a sirul iterat iilor este convergent, cu c at se efecteaz a mai multe iterat ii, cu at at solut ia numeric a este mai precis determinat a, erorile, at at cele de trunchiere c at si cele de rotunjire, devenind tot mai mici. 83

84

Capitolul 4. Metode iterative de rezolvare a sistemelor algebrice liniare

In metodele iterative, se porne ste de la o init ializare arbitrar a pentru vectorul solut ie 0 numeric a x . Pentru a determina noua valoare a solut iei numerice, se rescrie ecuat ia sub forma: x = F (x), (4.1) n care F se nume ste aplicat ie cu punct x, iar la ecare pas k al algoritmului, se determin a noua solut ie numeric a din relat ia: x k = F ( x k 1 ) . Pentru a aduce sistemul de rezolvat Ax = b (4.3) la forma unei aplicat ii cu punct x, n general se caut a o descompunere a matricei A ntr-o diferent a de dou a matrice: A = B C, (4.4) sistemul put and astfel adus la forma: x = B1 (b + Cx), solut ia la pasul k ind: xk = B1 (Cxk1 + b), sau xk = Mxk1 + u, n care M = B1 C se nume ste matrice de iterat ie, iar u = B1 b. Una din problemele metodelor iterative este convergent a sirului de iterat ii. Se demonstreaz a c a o condit ie sucient a pentru ca metoda s a e convergent a este ca valorile proprii ale matricei de iterat ie M = B1 C s a e toate, n modul, mai mici dec at 1. Denind raza de convergent a a matricei M, (M), ca ind modulul celei mai mari valori proprii, condit ia de convergent a se scrie: ( M ) < 1 (4.8) Aceast a condit ie de convergent a este corelat a cu norma matricei de iterat ie M. Se demonstreaz a c a, pentru orice matrice, exist a urm atoarea relat ie ntre norma si raza sa de convergent a: ( M ) M (4.9) Prin urmare, dac a matricea M are norma subunitar a ( M < 1), raza sa de convergent a va si ea mai mic a dec at 1, iar metoda iterativ a va n acest caz convergent a. Metodele iterative cele mai cunoscute sunt: metoda deplas arilor simultane (Jacobi), (4.7) (4.6) (4.5) (4.2)

4.2. Principiul metodei

85

metoda deplas arilor succesive (Gauss-Seidel), metoda suprarelax arilor succesive(Frankel-Young), metoda direct iilor alternante (Peaceman-Rachford), metoda iterat iilor bloc, metoda factoriz arii incomplete, metoda Southwell. Metoda Jacobi a deplas arilor simultane const a n alegerea partitit iei matricei A astfel: B este matricea alc atuit a din elementele diagonale ale lui A B = D, (4.10)

iar matricea C cont ine restul elementelor din matricea A, luate cu semn schimbat: C = ( L + U) , (4.11)

n care s-au notat cu L si U triunghiul inferior, respectiv cel superior din A. Cu aceast a descompunere, vectorul solut ie la ecare pas k va avea expresia: x k = D 1 ( b ( L + U ) x k 1 ) , iar matricea de iterat ie M va : M = D 1 ( L + U ) . Se consider a linia i a sistemului de ecuat ii care trebuie rezolvat: ai1 x1 + ai2 x2 + . . . + aii xi + . . . + ain xn = bi (4.14) (4.13) (4.12)

Partit ionarea aleas a pentru matricea A revine la a determina pe xi la pasul curent k din ecuat ia i, cu relat ia: k 1 bi n j =1,j =i aij xj k , (4.15) xi = aii n care xi din membrul st ang reprezint a componenta i a noii solut ii, iar xj din membrul drept sunt valorile obt inute la precedentul pas al iterat iei. Se observ a c a, pentru determinarea noii solut ii, trebuie cunoscute, pe tot parcursul iterat iei k , valorile solut iei de la pasul anterior k 1. In metoda Gauss-Seidel, a deplas arilor succesive, partit ionarea se alege astfel: B = D + L,

(4.16)

86

Capitolul 4. Metode iterative de rezolvare a sistemelor algebrice liniare

matricea B cont in and astfel partea inferior triunghiular a a matricei A inclusiv diagonala, iar C = U (4.17) matricea C cont in and partea superior triunghiular a a matricei. Matricea de iterat ie va avea forma M = ( D + L ) 1 U. (4.18) Aceast a partit ionare presupune c a n membrul st ang al ecuat iei i din sistem r am an termenii care cont in xj , j i, iar n membrul drept trec tot i ceilalt i termeni: ai1 x1 + ai2 x2 + . . . + aii xi = bi ai,i+1 xi+1 . . . ain xn . (4.19)

Ca si p an a acum, componentele vectorului solut ie aate n membrul st ang reprezint a valori noi, calculate la pasul curent k , pe c and componentele din membrul drept sunt cele calculate la pasul anterior. Din aceast a relat ie rezult a valoarea componentei xi la pasul curent: bi
i 1 j =1 n

. (4.20) aii Se observ a c a o component a xi a solut iei la pasul k este calculat a n funct ie de componentele precedente 1, . . . , i 1, deja calculate la pasul curent si de urm atoarele componente i + 1, . . . , n, calculate la pasul precedent. Algoritmul nu necesit a p astrarea vechii componente i, dup a ce cea nou a a fost calculat a, de aceea xi nou se poate plasa n memorie n aceea si locat ie ca si vechea valoare. Astfel, algoritmul Gauss-Seidel nu necesit a spat iu pentru memorarea dec at a unui vector solut ie, spre deosebire de algoritmul Jacobi, unde trebuiau memorat i at at x nou c at si x vechi. In metoda Gauss-Seidel, imediat ce o component a a fost determinat a, ea este folosit a n calculele urm atoare, nlocuind valoarea veche care se pierde, idee cunoscut a sub numele de principiul lui Seidel. Una din problemele care apar la rezolvarea sistemelor de ecuat ii liniare prin metode iterative este alegerea criteriului de oprire a procesului iterativ. O metod a de a rezolva aceast a problem a a criteriului de oprire const a n evaluarea, dup a ecare iterat ie, a erorii Cauchy e = xnou xvechi (4.21) si ntreruperea calculelor atunci c and aceast a valoare devine mai mic a dec at eroarea impus a, . In ceea ce prive ste convergent a metodelor, se demonstreaz a c a la metodele Jacobi si Gauss-Seidel, o condit ie sucient a ca metodele s a e convergente este ca matricea A a sistemului s a e diagonal dominant a, adic a |aii | > |aij | i. (4.22)

xk i =

aij xj

(k )

aij xj
j =i+1

(k1)

j =i

4.3. Pseudocodul algoritmilor

87

Desigur, a sa cum s-a ar atat, condit ia de mai sus este echivalent a cu impunerea condit iei ca norma matricei de iterat ie s a e subunitar a, procesul iterativ ind cu at at mai rapid convergent cu c at norma matricei de iterat ie este mai mic a. In cazul matricelor simetrice si pozitiv denite, metoda Gauss-Seidel este de aproximativ 2 ori mai rapid a dec at metoda Jacobi. Acest avantaj, corelat si cu necesitatea memor arii unui singur vector solut ie, face ca metoda Gauss-Seidel s a e preferabil a metodei Jacobi din toate punctele de vedere.

4.3

Pseudocodul algoritmilor

Urm atoarea procedur a permite rezolvarea sistemelor de ecuatii liniare prin metoda Jacobi. procedura Jacobi (n,a,b,x,nrit,eps) tablou real a(n,n),b(n),x(n) nteg nrit real eps tablou real xn(N ) ; init ializ ari k=0 pentru i=1,n xi = 0 ; iterat ii repet a err= 0; pentru i= 1,n s = b ( i) pentru j=1,n s = s a(i, j )x(j ) s = s + a(i, i)x(i) xn(i) = s/a(i, i) s = |xn(i) x(i)| dac a err < s atunci err = pentru i= 1,n x(i) = xn(i) k =k+1 p an a c and (err < eps) sau (k > nrit) retur

; x nou ; contor iterat ii ; init ializarea solut iei ; parcurge iterat iile ; eroarea la pasul curent ; parcurge ecuat iile ; parcurge ecuat ia i

; x nou s ; nlocuie ste x vechi cu x nou ; incrementeaz a contor iterat ii

Urm atoarea procedur a permite rezolvarea sistemelor de ecuat ii liniare prin metoda Gauss-Seidel

88

Capitolul 4. Metode iterative de rezolvare a sistemelor algebrice liniare

procedura Gauss-Seidel(n,a,b,x,nrit,eps) tablou real a(n,n), b(n), x(n) ntreg nrit real eps init ializ ari k=0 ; pentru i=1,n x ( i) = 0 ; ; iterat ii repet a ; err = 0 ; pentru i=1,n ; s = b ( i) pentru j=1,n ; s = s a(i, j )x(j ) s = (s + a(i, i)x(i))/a(i, i) err = err + (s x(i)) x ( i) = s ; k =k+1 ; err = sqrt(err) p an a c and (err < eps) sau (k > nrit) retur

contor iterat ii init ializarea solut iei parcurge iterat iile eroarea la pasul curent parcurge ecuat iile parcurge ecuat ia i

x nou incrementeaz a contor iterat ii

Procedurile Jacobi si Gauss-Seidel au parametrii: de intrare n = dimensiunea sistemului; a(n,n)= matricea sistemului; b(n) = vectorul termenilor liberi; nrit = num arul maxim de iterat ii; eps = eroarea admis a; de ie sire x(n) = vectorul solut ie. Pentru a demonstra modul diferit n care se poate evalua eroarea, n algoritmul Jacobi s-a folosit norma Ceb sev a erorii, iar n algoritmul Gauss-Seidel norma Euclidian a.

4.4. Analiza algoritmilor

89

4.4

Analiza algoritmilor

Efort de calcul Pentru o iterat ie, ordinul de complexitate al metodelor Jacobi si Gauss-Seidel este O(n(n + 2)). Efortul de calcul pentru rezolvarea ntregului sistem de ecuat ii liniare prin 2 metode iterative este de ordinul O(mn ), n care num arul total de iterat ii m care vor efectuate nu este n general cunoscut dinainte. Efortul de calcul depinde de norma matricei de iterat ie, ind cu at at mai mic cu c at norma este mai mic a. Necesar de memorie Pentru memorarea matricei sistemului, a vectorilor termen liber si solut ie sunt necesare n +2n locat ii de memorie. In plus, la algoritmul Jacobi mai sunt necesare n locat ii pentru memorarea solut iei obt inute la pasul curent.
2

Dac a matricea sistemului este o matrice rar a, atunci metodele iterative se dovedesc extrem de eciente din punctul de vedere al memoriei, ele negener and umpleri. Analiza erorilor Spre deosebire de metodele directe, la care singurele erori care apar sunt cele de rotunjire, la metodele iterative apar si erori de trunchiere prin ret inerea din sirul convergent c atre solut ia exact a, a unui num ar nit de termeni. Datorit a convergent ei lor, metodele iterative au proprietatea remarcabil a de a corecta erorile de rotunjire ap arute pe parcurs. Eroarea absolut a la itert ia k este de cel put in M ori mai mic a dec at eroarea de la pasul anterior: ek = xk x M x k 1 x = M e k 1 M k e 0 . (4.23)

Se constat a c a eroarea nal a depinde de eroarea init ial a, de num arul de iterat ii efectuate si de norma matricei de iterat ie, care determin a viteza de convergent a. Aceea si relat ie k este valabil a si pentru reziduul Ax b .

4.5

Chestiuni de studiat

Rezolvarea unor sisteme de ecuat ii liniare prin metodele Jacobi si Gauss-Seidel; Analiza experimental a a erorilor si a efortului de calcul, la metodele Jacobi si GaussSeidel; Implementarea algoritmilor; C autare de informat ii pe Internet.

90

Capitolul 4. Metode iterative de rezolvare a sistemelor algebrice liniare

4.6

Mod de lucru

Pentru desf a surarea lucr arii se selecteaz a lucrarea Metode iterative de rezolvare a sistemelor algebrice liniare din meniul general de lucr ari. Aceasta are ca efect a sarea meniului: 1. Rezolvare de sisteme cu metodele Jacobi/Gauss-Seidel 2. Analiza algoritmilor

4.6.1

Rezolvarea unor sisteme de ecuat ii liniare prin metodele Jacobi/Gauss-Seidel

Programul lansat permite rezolvarea unor sisteme liniare prin metode iterative. Se vor introduce: num arul de ecuat ii; elementele a(i, j ) ale matricei sistemului; termenii liberi b(i); eroarea admis a; num arul maxim de iterat ii admis. Programul a seaz a n consola Scilab informat ii despre procesul iterativ: dac a a fost convergent sau nu, norma matricei de iterat ie, n cazul n care procesul a fost convergent, c ate iterat ii au fost necesare si care este solut ia. Se vor introduce parametrii necesari pentru rezolvarea urm atoarelor sisteme: x1 + x2 = 5 2x1 + 3x2 = 13 : R x1 = 2 x2 = 3

Se va inversa ordinea ecuat iilor si se va comenta efectul asupra solut iei.

8x1 + 2x2 + x3 = 15 10x1 + 4x2 + x3 = 21 50x1 + 25x2 + 8x3 = 124

R : x1 = 1 x2 = 2 x3 = 3

4.6. Mod de lucru

91

2x1 + x2 + x3 = 7 x + 2x2 + x3 = 8 1 x1 + x2 + x3 = 6 x3 = 10 3x1 + x + 2x2 + x3 = 12 1 x1 + x2 + 2x3 = 13

R : x1 = 1 x2 = 2 x3 = 3

R : x1 = 2 x2 = 3 x3 = 4

Se va inversa ordinea a dou a ecuat ii din sistem si se va comenta efectul asupra solut iei. Se vor comenta rezultatele obt inute, convergent a metodelor pentru ecare sistem rezolvat.

4.6.2

Analiza experimental a a algoritmilor

Se selecteaz a opt iunea Analiza algoritmilor. Aceasta are ca efect a sarea unui meniu cu opt iunile: Eroarea n funct ie de num arul de iterat ii; Num arul de iterat ii n funct ie de norma matricei de iterat ie. La selectarea opt iunii Eroarea n funct ie de num arul de iterat ii, utilizatorul introduce: norma matricei de iterat ie Jacobi si num arul de ecuat ii (valoare init ial a, valoare nal a, pas). Astfel se apeleaz a un program care rezolv a, pe baza celor dou a metode iterative, sisteme de ecuat ii liniare generate aleator. Programul a seaz a rezultatele numerice n consola Scilab si reprezint a grac variat ia erorii Cauchy n funct ie de iterat ie. Valorile recomandate sunt: norma matricei de iterat ie Jacobi 0.5, dimensiunile sistemelor 20, 40, 60. Datele se pot nota ntr-un tabel de tipul: iterat ii n = 20 n = 40 n = 60 eroare J eroare GS eroare J eroare GS eroare J eroare GS 1 5 9 13 17

92

Capitolul 4. Metode iterative de rezolvare a sistemelor algebrice liniare

Se vor reprezenta pe acela si grac erorile n funct ie de num arul de iterat ii. Se vor comenta rezultatele obt inute. La selectarea opt iunii Num arul de iterat ii n funct ie de norma matricei de iterat ie utilizatorul alege dimensiunea n a sistemului si eroarea de oprire. Programul a seaz a num arul de iterat ii necesar celor dou a metode pentru sisteme generate aleator, de dimensiune n, av and norma matricei de iterat ie 0.1, 0.2, . . ., 0.9. Datele se pot nota ntr-un tabel de tipul:

norma matricei Jacobi nr. iterat ii Jacobi nr. iterat ii Gauss-Seidel

0.1

0.2

...

0.9

Se vor reprezenta pe acela si grac num arul de iterat ii n funct ie de norma matricei. Se vor comenta rezultatele obt inute.

4.6.3

Implementarea algoritmilor

Se va implementa pe calculator, n limbajul C, o procedur a proprie de rezolvare a unui sistem de ecuat ii liniare, prin una din cele dou a metode iterative. Se va compila si testa procedura, elimin andu-se eventualele erori. Se va scrie pseudocodul si se va implementa pe calculator un program principal, care apeleaz a procedura anterioar a si rezolv a sistemul de ecuat ii: z = 5 2x + x + y + z = 6 y + 3z = 11 R: x=1 y=2 z=3

Acest program va permite introducerea datelor de la consol a si a sarea pe ecran a solut iei. Se vor nota si comenta rezultatele obt inute si eventualele dicult a ti ap arute pe parcursul lucrului.

4.6.4

C autare de informat ii pe Internet

Se vor c auta pe Internet informat ii (coduri) legate de rezolvarea iterativ a a sistemelor algebrice de ecuat ii prin metode iterative. Cuvinte cheie recomandate: Iterative methods for algebraic systems, Jacobi, Gauss-Seidel.

4.7. Exemple

93

4.7
4.7.1

Exemple
Exemple rezolvate
x 2y = 2 3x + 2y = 6 (a) s a se determine solut ia sistemului de ecuat ii pentru primele dou a iterat ii ale (0) (0) metodei Jacobi, cunosc and solut ia init ial a x = y = 0; (b) s a se ilustreze grac procesul iterativ si s a se comenteze convergent a lui; (c) s a se comenteze rezultatele obt inute atunci c and se schimb a ordinea ecuat iilor. Rezolvare: (a) Iterat iile metodei Jacobi se calculeaz a conform formulelor: x(k+1) = 2 + 2y (k) 2y (k+1) = 6 + 3x(k) Solut ia la prima iterat ie este: x(1) = 2 + 2y (0) = 2 x(0) y (1) = 6+3 = 3, 2 iar la a doua iterat ie: x(2) = 2 + 2y (1) = 2 6 = 8 x(1) = 626 = 6. y (2) = 6+3 2 (b) Din punct de vedere geometric, rezolvarea sistemului este echivalent a cu g asirea punctului de intersect ie al dreptelor ecuat iilor, D1 si D 2 : D1 : x 2y + 2 = 0 D 2 : 3x + 2y + 6 = 0 Vom reprezenta grac aceste drepte. Dreapta D1 taie axele n punctele de coordonate (0, 1) si (2, 0). Dreapta D2 taie axele n punctele de coordonate (0, 3) si (2, 0). Dreptele D1 si D2 sunt concurente n punctul (4, 3), solut ia sistemului de ecuat ii. Procesul iterativ este ilustrat n gura 1 si se observ a c a este divergent. De si problema este bine formulat a matematic (solut ia exist a si este unic a), metoda Jacobi e sueaz a.

1. Fie sistemul de ecuat ii:

94

Capitolul 4. Metode iterative de rezolvare a sistemelor algebrice liniare

y D2 000000000000000 111111111111111 000000000000000 111111111111111 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 00000000000000000000000000000 11111111111111111111111111111 000000000000000 D 1 111111111111111 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 1 0 00000000000000000000000000000 11111111111111111111111111111 (4,3) 000000000000000 111111111111111 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 00000000000000000000000000000 11111111111111111111111111111 (0,1) 000000000000000 111111111111111 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 (x 0,y ) 00000000000000000000000000000 11111111111111111111111111111 (2,0) 0 1 000000000000000 111111111111111 0 1 00000000000000000000000000000 11111111111111111111111111111 0 0 1 000000000000000 111111111111111 0 1 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 0 1 00000000000000000000000000000 11111111111111111111111111111 x 0 (2,0) 000000000000000 111111111111111 0 1 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 0 1 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 0 1 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 0 1 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 0 1 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 0 1 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 0 1 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 0 1 00000000000000000000000000000 11111111111111111111111111111 (x 1,y1) 000000000000000 111111111111111 0 1 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 11111111111111111 00000000000000000 1 0 1 0 0 1 00000000000000000000000000000 11111111111111111111111111111 1 0 000000000000000 111111111111111 (0,3) 0 1 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 0 1 000000000000000 111111111111111 0 1 000000000000000 111111111111111 0 1 000000000000000 111111111111111 0 1 1 0 000000000000000 111111111111111 000000000000000 111111111111111 0 1 000000000000000 111111111111111 0 1 000000000000000 111111111111111 0 1 000000000000000 111111111111111 0 1 (x2 ,y2) 000000000000000 111111111111111 0 1 1 0 1111111111111 0000000000000 11 00 000000000000000 111111111111111 0 1 11 00 000000000000000 111111111111111 000000000000000 111111111111111 Fig. 1. Proces iterativ divergent al metodei Jacobi
Convergent a metodei depinde de propriet a tile matricei de iterat ie. Dac a not am 1 A = D + L + U , atunci M = D (L + U ) este matricea de iterat ie n cazul metodei Jacobi. In cazul problemei considerate: D= 1 0 0 2
1

, L=

0 0 3 0 =

, U=

0 2 0 0

M =

1 0 0 2

0 2 3 0

1 0 0 1 2

0 2 3 0

0 2 3 0 2
i=1,2

unde i sunt valorile proprii, care reprezint a solut iile ecuat iei det(M I ) = 0. In cazul studiat: M I =
3 2

Raza spectral a (de convergent a) a matricei de iterat ie M este: (M ) = max |i |,

Valorile proprii sunt 1,2

2 = det(M I ) = 2 3 = 0. = 3, iar (M ) = max |i | = 3.


i=1,2

Deoarece (M ) > 1, procesul iterativ este divergent.

4.7. Exemple

95

y D1 111111111111 000000000000 000000000000 111111111111 0000000000000000000 1111111111111111111 000000000000 111111111111 0000000000000000000 1111111111111111111 000000000000 111111111111 0000000000000000000 1111111111111111111 D2 000000000000 111111111111 0000000000000000000 1111111111111111111 000000000000 111111111111 1 0 0000000000000000000 1111111111111111111 000000000000 111111111111 (4,3) 0000000000000000000 1111111111111111111 (x ,y ) 000000000000 111111111111 0000000000000000000 1111111111111111111 2 2 000000000000 111111111111 0 1 11 00 111 000 1 0000000000000000000 1111111111111111111 000000000000 111111111111 10 0 0 1 0000000000000000000 1111111111111111111 000000000000 111111111111 0 1 0000000000000000000 1111111111111111111 1 0 000000000000 111111111111 0000000000000000000 1111111111111111111 000000000000 111111111111 0 1 111111 000000 1 0 11 00 0000000000000000000 1111111111111111111 (0,1) 000000000000 111111111111 1 0 0 1 0000000000000000000 1111111111111111111 000000000000 111111111111 (x ,y 0 1 0000000000000000000 1111111111111111111 1) 000000000000 111111111111 11 0 0000000000000000000 1111111111111111111 (2,0) 0 1 000000000000 111111111111 0 1 0000000000000000000 1111111111111111111 0 1 000000000000 111111111111 0 1 0000000000000000000 1111111111111111111 000000000000 (x111111111111 ,y ) 0 x 0000000000000000000 1111111111111111111 (2,0) 000000000000 111111111111 0 0 0000000000000000000 1111111111111111111 000000000000 111111111111 0000000000000000000 1111111111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 (0,3) 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111

Fig. 2. Proces iterativ convergent al metodei Jacobi (c) In cazul n care se schimb a ordinea ecuat iilor, sistemul de rezolvat este: 3x + 2y = 6 x 2y = 2 Solut ia la prima iterat ie se calculeaz a astfel: 3x(1) = 6 2y (0) = 2y (1) = 2 x(0) Iar solut ia la a doua iterat ie este: 3x(2) = 6 2y (1) = 2y (2) = 2 x(1)
8 x(2) = 3 y (2) = 2

x(1) = 2 y (1) = 1

Procedeul iterativ este convergent a sa cum se observ a n gura 2. Intr-adev ar, pentru acest sistem, matricea de iterat ie este: 3 0 0 2
1

M =

0 2 1 0

1 0 3 0 1 2

0 2 1 0

0
1 2

2 3

iar valorile proprii sunt solut iile ecuat iei: det(M I ) = 0 = Deci: 2
1 2 2 3

= 0.

1 1 1 = 0 = 1,2 = = (M ) = max |i | = . i=1,2 3 3 3

96

Capitolul 4. Metode iterative de rezolvare a sistemelor algebrice liniare

Deoarece (M ) < 1, procesul iterativ este convergent. Aceea si concluzie se poate obt ine dac a se observ a c a matricea sistemului este diagonal dominant a (vezi relat ia (4.22)). Aceasta este o condit ie sucient a de convergent a. Inegalitatea (4.22) este adev arat a pentru cele dou a ecuat ii ale sistemului: | 3| > | 2| , | 2| > | 1| ,

deci matricea sistemului este diagonal dominant a, ceea ce este echivalent cu ||M || < 1. Pentru orice matrice avem (M ) ||M ||, astfel c a (M ) < 1. 2. Fie sistemul de ecuat ii de la exercit iul anterior: x 2y = 2 3x + 2y = 6 (a) s a se determine solut ia sistemului de ecuat ii pentru primele dou a iterat ii ale (0) (0) metodei Gauss-Seidel, cunosc and solut ia init ial a x = y = 0; (b) s a se ilustreze grac procesul iterativ si s a se comenteze convergent a lui; (c) s a se comenteze rezultatele obt inute atunci c and se schimb a ordinea ecuat iilor. Rezolvare: (a) Iterat iile metodei Gauss-Seidel se calculeaz a conform formulelor: x(k+1) = 2 + 2y (k) 2y (k+1) = 6 + 3x(k+1) Solut ia la prima iterat ie este: x(1) = 2 + 2y (0) = 2 x(1) y (1) = 6+3 = 626 = 6, 2 iar la a doua iterat ie: x(2) = 2 + 2y (1) = 2 12 = 14 42 x(2) = 6 = 24. y (2) = 6+3 2 2 (b) Procesul iterativ este ilustrat n gura 3 si se observ a c a este divergent. De si problema este bine formulat a matematic (solut ia exist a si este unic a), metoda Gauss-Seidel e sueaz a. Matricea de iterat ie n cazul metodei Gauss-Seidel este M = (D + L)1 U . In cazul problemei considerate:

4.7. Exemple

97

y D2 11111111111111111 00000000000000000 00000000000000000 11111111111111111 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00000000000000000 11111111111111111 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00000000000000000 11111111111111111 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00000000000000000 11111111111111111 D1 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00000000000000000 11111111111111111 11 00 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00000000000000000 11111111111111111 (4,3) 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00000000000000000 11111111111111111 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00000000000000000 11111111111111111 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00000000000000000 11111111111111111 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00000000000000000 11111111111111111 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00000000000000000 11111111111111111 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00000000000000000 11111111111111111 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 (0,1) 00000000000000000 11111111111111111 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00000000000000000 11111111111111111 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00000000000000000 11111111111111111 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 (x 0,y ) (2,0) 00000000000000000 11111111111111111 0 1 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00 0 11 1 00000000000000000 11111111111111111 0 0 1 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00 11 00000000000000000 11111111111111111 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00 11 x 0 (2,0) 00000000000000000 11111111111111111 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00 11 00000000000000000 11111111111111111 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00 11 00000000000000000 11111111111111111 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00 11 00000000000000000 11111111111111111 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00 11 00000000000000000 11111111111111111 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00 11 00000000000000000 11111111111111111 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00 11 00000000000000000 11111111111111111 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00 11 00000000000000000 11111111111111111 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00 11 00000000000000000 11111111111111111 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00 11 00000000000000000 11111111111111111 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00 11 00000000000000000 11111111111111111 0 1 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00 11 00000000000000000 11111111111111111 0 1 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00 11 00000000000000000 11111111111111111 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00 11 00000000000000000 11111111111111111 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00 11 00000000000000000 11111111111111111 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00 11 00000000000000000 11111111111111111 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00 11 00000000000000000 11111111111111111 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00 11 00000000000000000 11111111111111111 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00 11 00000000000000000 11111111111111111 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00 11 00000000000000000 11111111111111111 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00 11 00000000000000000 11111111111111111 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 00 11 0 1 00000000000000000 11111111111111111 111111111111111111111111 000000000000000000000000 1 0 0000000000000000000000000000000000000000 1111111111111111111111111111111111111111 11 00 1 0 00000000000000000 11111111111111111 0 1 (x 1,y1) (0,6) 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 00000000000000000 11111111111111111 0 1 00000000000000000 11111111111111111 0 1 00000000000000000 11111111111111111 0 1 00000000000000000 11111111111111111 0 1 00000000000000000 11111111111111111 0 1 (x2 ,y2) 11111111111111111 00000000000000000

Fig. 3. Proces iterativ divergent al metodei Gauss-Seidel

M =

1 0 3 2

0 2 0 0

1 0
3 2 1 2

0 2 0 0

0 2 0 3
i=1,2

unde i sunt valorile proprii, care sunt solut iile ecuat iei det(M I ) = 0. In cazul studiat: M I = 2 0 3 = det(M I ) = (3 ) = 0.
i=1,2

Raza spectral a (de convergent a) a matricei de iterat ie M este: (M ) = max |i |,

Valorile proprii sunt 1 = 0, 2 = 3, iar (M ) = max |i | = 3. Deoarece (M ) > 1, procesul iterativ este divergent. (c) In cazul n care se schimb a ordinea ecuat iilor, sistemul de rezolvat este: 3x + 2y = 6 x 2y = 2 Solut ia la prima iterat ie se calculeaz a astfel: 3x(1) = 6 2y (0) = 2y (1) = 2 x(1) x(1) = 2 y (1) = 2

98

Capitolul 4. Metode iterative de rezolvare a sistemelor algebrice liniare

y D1 111111111111 000000000000 000000000000 111111111111 0000000000000000000 1111111111111111111 000000000000 111111111111 0000000000000000000 1111111111111111111 000000000000 111111111111 0000000000000000000 1111111111111111111 D2 000000000000 111111111111 0000000000000000000 1111111111111111111 (x 2,y 000000000000 111111111111 1 0 2) 0000000000000000000 1111111111111111111 0 1 (4,3) 11 00 1 0 000000000000 111111111111 0000000000000000000 1111111111111111111 0 1 0 1 000000000000 111111111111 0000000000000000000 1111111111111111111 (x 1 ,y1 ) 0 1 000000000000 111111111111 0 1 111 000 0000000000000000000 1111111111111111111 0 1 000000000000 111111111111 1 0 0 1 0000000000000000000 1111111111111111111 000000000000 111111111111 0 1 0000000000000000000 1111111111111111111 000000000000 111111111111 0 1 0000000000000000000 1111111111111111111 000000000000 111111111111 0 1 0000000000000000000 1111111111111111111 (0,1) 000000000000 111111111111 0 1 0000000000000000000 1111111111111111111 000000000000 111111111111 0 1 0000000000000000000 1111111111111111111 000000000000 111111111111 0 1 0000000000000000000 1111111111111111111 (2,0) 0 1 000000000000 111111111111 11 00 0 1 0000000000000000000 1111111111111111111 0 1 000000000000 111111111111 0 1 0000000000000000000 1111111111111111111 000000000000 (x111111111111 ,y0) 0 x 0000000000000000000 1111111111111111111 (2,0) 000000000000 111111111111 0 0000000000000000000 1111111111111111111 000000000000 111111111111 0000000000000000000 1111111111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 (0,3) 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111

Fig. 4. Proces iterativ convergent al metodei Gauss-Seidel Iar solut ia la a doua iterat ie este: 3x(2) = 6 2y (1) = 2y (2) = 2 x(2) x(2) = y (2) =
10 3 8 3

Procedeul iterativ este convergent a sa cum se observ a n gura 4. Intr-adev ar, pentru acest sistem, matricea de iterat ie este:
1

M =

3 0 1 2

0 2 0 0

1 0 3 1 6 1 2

0 2 0 0

0 0

2 3 1 3

iar valorile proprii sunt solut iile ecuat iei: det(M I ) = 0 = Deci: 0
2 3

1 3

= 0.

1 1 1 ( ) = 0 = 1 = 0, 2 = = (M ) = max |i | = . i =1 , 2 3 3 3 Deoarece (M ) < 1, procesul iterativ este convergent. 3. Fie sistemul de ecuat ii: 3 3x y + z = 3x 6y + z = 2 x + 2y + 4z = 5

4.7. Exemple

99

S a se comenteze convergent a metodelor iterative si s a se determine solut ia sistemului de ecuat ii pentru primele dou a iterat ii ale metodelor Jacobi si Gauss-Seidel, (0) (0) (0) cunosc and solut ia init ial a x = y = z = 0. Rezolvare: Deoarece matricea coecient ilor sistemului este diagonal dominant a, metodele iterative Jacobi si Gauss-Seidel sunt convergente. De exemplu, pentru prima ecuat ie a unui sistem, conform relat iei (4.22), trebuie s a e adev arat a inegalitatea: |a11 | > |a12 | + |a13 |. Pentru sistemul de ecuat ii considerat, inegalitatea (4.22) este adev arat a pentru toate cele trei ecuat ii: | 3| > | 1| + | 1| , | 6| > | 3| + | 1| , | 4| > | 1| + | 2| ,

deci matricea sistemului este diagonal dominant a, ceea ce este echivalent cu ||M || < 1. Pentru orice matrice avem (M ) ||M ||, astfel c a (M ) < 1, ceea ce nseamn a c a metodele iterative sunt convergente pentru acest sistem. Metoda Jacobi Solut ia la o anumit a iterat ie se determin a n funct ie de solut ia calculat a la iterat ia precedent a. Conform relat iei (4.15), din prima ecuat ie a sistemului se determin a: x
(1)

3+00 3 + y (0) z (0) = = 1, = 3 3

iar din ecuat iile a doua si a treia rezult a urm atoarele componente ale solut iei la prima iterat ie: 2 3x(0) z (0) 2 0 0 1 (1) y = = = , 6 6 3 z
(1)

5 + x(0) 2y (0) 5+00 5 = = = . 4 4 4

La a doua iterat ie a metodei Jacobi solut ia sistemului este: x(2) = y


(2) 1 3+ 3 3 + y (1) z (1) = 3 3 5 4

=
5 4

25 , 36 = 25 , 24

2 3 2 3x(1) z (1) = = 6 6
(2)

5+1 5 + x(1) 2y (1) = = 4 4

2 3

4 = . 3

Metoda Gauss-Seidel

100

Capitolul 4. Metode iterative de rezolvare a sistemelor algebrice liniare

Solut ia la o anumit a iterat ie se determin a n funct ie de componentele solut iei deja calculate la iterat ia curent a si restul componentelor solut iei calculate la iterat ia precedent a. Conform relat iei (4.20), din prima ecuat ie a sistemului se determin a: x(1) = 3 + y (0) z (0) 3+00 = = 1, 3 3

iar din ecuat iile a doua si a treia rezult a urm atoarele componente ale solut iei la prima iterat ie: 2 3 0 5 2 3x(1) z (0) = = , y (1) = 6 6 6 z (1) = 5+1 5 + x(1) 2y (1) = 4 4
5 3

13 . 12

La a doua iterat ie a metodei Gauss-Seidel solut ia sistemului este: x(2) = y


(2) 5 3+ 6 3 + y (1) z (1) = 3 3 13 12

=
13 12

11 , 12 = 35 , 36

33 2 12 2 3x(2) z (1) = = 6 6 11 5 + 12 5 + x(2) 2y (2) = 4 4 35 18

z (2) = 4. Fie sistemul de ecuat ii:

143 . 144

S a se comenteze convergent a metodelor iterative si s a se determine solut ia sistemului de ecuat ii pentru primele dou a iterat ii ale metodelor Jacobi si Gauss-Seidel, (0) (0) (0) cunosc and solut ia init ial a x = y = z = 1. Rezolvare: Inegalitatea (4.22) nu este adev arat a pentru cele trei ecuat ii ale sistemului considerat: | 1| < | 2| + | 2| , | 1| < | 2| + | 2| , | 1| > | 1| + | 2| . Totu si, de si matricea nu este diagonal dominant a, nu putem concluziona c a metodele iterative nu sunt convergente. Condit ia necesar a si sucient a de convergent a este ca raza de convergent a sa e subunitar a (4.8).

x 2y + 2z = 2 2x y + 2z = 6 x + 2y + z = 8

4.7. Exemple

101

Pentru sistemul considerat, deoarece matricea sistemului nu este diagonal dominant a, norma matricei de iterat ie este supraunitar a. Se cunoa ste c a raza de convergent a este mai mic a dec at norma matricei de iterat ie (4.9), ns a nu putem arma c a raza de convergent a este supraunitar a. Raza de convergent a trebuie calculat a pentru a preciza convergent a sirului de solut ii. In cazul metodei Jacobi, matricea de iterat ie este: 1 0 2 2 0 2 2 1 0 0 M = 0 1 0 2 0 2 , 0 2 = 2 1 2 0 1 2 0 0 0 1 2 2 2 2 1 2
i=1,2,3

iar valorile proprii sunt solut iile ecuat iei:

det(M I ) = 0 = Deci:

= 0.

3 + 2 + 4 = 0 = (M ) = max |i | = 2 > 1. In cazul metodei Gauss-Seidel, matricea de iterat ie este: 1 0 2 2 0 2 2 1 0 0 M = 2 1 0 0 4 2 , 0 2 = 0 0 10 6 0 0 0 1 2 1 2 2 0 4 2 0 10 6


i=1,2,3

iar valorile proprii sunt solut iile ecuat iei:

det(M I ) = 0 = Deci:

= 0.

(2 + 10 4) = 0 = (M ) = max |i | = 9.58 > 1. Pentru ambele metode raza de convergent a este supraunitar a, deci metodele iterative nu sunt convergente pentru acest sistem. Metoda Jacobi La prima iterat ie a metodei Jacobi solut ia sistemului este: x(1) = 2 + 2y (0) 2z (0) = 2 + 2 2 = 2, 1

102

Capitolul 4. Metode iterative de rezolvare a sistemelor algebrice liniare

(1)

6 2x(0) 2z (0) = (6 2 2) = 2, = 1 8 x(0) 2y (0) = 8 1 2 = 5. 1

z (1) =

La a doua iterat ie a metodei Jacobi solut ia sistemului este: x(2) = y (2) = z


(2)

2 + 2y (1) 2z (1) = 2 4 10 = 12, 1 6 2x(1) 2z (1) = (6 4 10) = 8, 1

8 x(1) 2y (1) = = 8 2 + 4 = 10. 1

Metoda Gauss-Seidel La prima iterat ie a metodei Gauss-Seidel solut ia sistemului este: x(1) = y (1) = 2 + 2y (0) 2z (0) = 2 + 2 2 = 2, 1

6 2x(1) 2z (0) = (6 4 2) = 0, 1 8 x(1) 2y (1) = 8 2 + 0 = 6. 1

z (1) =

La a doua iterat ie a metodei Gauss-Seidel solut ia sistemului este: x(2) = y


(2)

2 + 2y (1) 2z (1) = 2 + 0 12 = 10, 1

6 2x(2) 2z (1) = (6 + 20 12) = 14, = 1 8 x(2) 2y (2) = 8 + 10 + 28 = 46. 1

z (2) =

4.7.2

Exemple propuse
2x + y = 4 3x + 5y = 15 (a) s a se determine solut ia sistemului de ecuat ii pentru primele dou a iterat ii ale (0) (0) metodelor Jacobi si Gauss-Seidel, cunosc and solut ia init ial a x = y = 0; (b) s a se ilustreze grac procesul iterativ si s a se comenteze convergent a lui;

1. Fie sistemul de ecuat ii:

4.7. Exemple

103

(c) s a se comenteze rezultatele obt inute atunci c and se schimb a ordinea ecuat iilor. 2. Fie sistemul de ecuat ii: 3x + 5y = 15 2x + y = 4 (a) s a se determine solut ia sistemului de ecuat ii pentru primele dou a iterat ii ale (0) (0) metodelor Jacobi si Gauss-Seidel, cunosc and solut ia init ial a x = y = 0; (b) s a se ilustreze grac procesul iterativ si s a se comenteze convergent a lui; (c) s a se comenteze rezultatele obt inute atunci c and se schimb a ordinea ecuat iilor. 3. Fie sistemul de ecuat ii: x + y 3z = 1 2x + y z = 2 x y z = 1

S a se comenteze convergent a metodelor iterative si s a se determine solut ia sistemului de ecuat ii pentru primele dou a iterat ii ale metodelor Jacobi si Gauss-Seidel, (0) (0) (0) cunosc and solut ia init ial a x = y = z = 0. 4. Fie sistemul de ecuat ii: 5 4x + 2y z = x 3y + z = 1 x + y + 4z = 4

S a se comenteze convergent a metodelor iterative si s a se determine solut ia sistemului de ecuat ii pentru primele dou a iterat ii ale metodelor Jacobi si Gauss-Seidel, (0) (0) (0) cunosc and solut ia init ial a x = y = z = 0. 5. Fie sistemul de ecuat ii: 3x + y + z = 4 x + y + 2z = 4 x + y + 3z = 6

S a se comenteze convergent a metodelor iterative si s a se determine solut ia sistemului de ecuat ii pentru primele dou a iterat ii ale metodelor Jacobi si Gauss-Seidel, (0) (0) (0) cunosc and solut ia init ial a x = y = z = 0.

104

Capitolul 4. Metode iterative de rezolvare a sistemelor algebrice liniare

4.8

Intreb ari si probleme

1. Dat i o explicat ie calitativ a pentru convergent a mai rapid a a metodei Gauss-Seidel fat a de metoda Jacobi. 2. Exist a sisteme de ecuat ii, nedominant diagonale, care se pot rezolva totu si prin metoda Gauss-Seidel, de si metoda Jacobi nu este convergent a? 3. Care este explicat ia c a invers and ordinea a 2 ecuat ii n sistemele propuse pentru rezolvare cu primul program demonstrativ, metodele iterative nu conduc la obt inerea solut iei? 4. Cum scade eroarea n funct ie de num arul de iterat ii, la metodele Jacobi si GaussSeidel? Cum este corelat a sc aderea erorii cu norma matricei de iterat ie? 5. Scriet i pseudocodul unei proceduri care s a genereze, cu ajutorul unui generator de numere aleatoare, o matrice a c arei norm a este dat a. 6. Care sunt matricele B si C n care s-a partit ionat matricea sistemului la o metod a iterativ a care ar folosi urm atoarea expresie pentru determinare a componentei i a solut iei :
n

xk i =

bi

aij xk j
j =i+1

i 1 j =1

k 1 aij xj

aii

7. Scriet i pseudocodul unui polialgoritm de rezolvare a unui sistem de ecuat ii liniare prin metode directe a c arui solut ie este ranat a ulterior prin metode iterative, n vederea elimin arii erorilor de rotunjire. 8. Analizat i teoretic modul n care depinde num arul de iterat ii m, necesare atingerii unei precizii dorite, n funct ie de norma matricei M. 9. Modicat i pseudocodul algoritmului Gauss-Seidel prin adoptarea unui criteriu de eroare relativ la norma reziduului Ax b . 10. Scriet i un algoritm de rezolvare iterativ a a unui sistem cu matrice tridiagonal a. 11. Scriet i un algoritm de rezolvare iterativ a a sistemului Ax = b bazat pe partit ia: A = B C = L + D ( U) , cu D matrice bloc diagonal a. 12. Documentat i-v a n literatura de specialitate si pe internet ce inseamn a preconditionarea? Cum inuent eaza aceast a operat ie num arul de condit ionare si viteza de convergent a a rezolv arii sistemelor liniare prin metode iterative?

4.8. Intreb ari si probleme

105

13. Rezolvat i n mediul MATLAB/SCILAB, un sistem de ecuat ii liniare algebrice folosind o metod a iterativ a. Evaluat i viteza de convergent a a procesului iterativ. 14. Identicat i n biblioteca matematic a descrisa n [2] funct ii avansate pentru rezolvarea cu metode directe a sistemelor de ecuat ii algebrice liniare cu matrice rare. Ce aduc nou aceste funct ii fat a de cea folosit a n lucrare?

Carl Gustav Jacob Jacobi (1804, Prusia - 1851, Germania)

http://www-gap.dcs.st-and.ac.uk/ history/Mathematicians/Jacobi.html http://scienceworld.wolfram.com/biography/Jacobi.html Philipp Ludwig von Seidel (1821, Germania - 1896, http://www-gap.dcs.st-and.ac.uk/ history/Mathematicians/Seidel.html Germania)

Augustin Louis Cauchy (1789,Franta - 1857, Franta)

http://www-gap.dcs.st-and.ac.uk/ history/Mathematicians/Cauchy.html http://scienceworld.wolfram.com/biography/Cauchy.html

106

Capitolul 4. Metode iterative de rezolvare a sistemelor algebrice liniare

Lucrarea 5 Analiza numeric a a circuitelor electrice liniare n regim permanent


5.1 Caracterizarea lucr arii

Cele mai simple circuite electrice sunt circuitele rezistive liniare. Studiul acestor circuite este o problem a foarte important a, deoarece se constat a c a si analiza altor categorii de circuite, cum sunt cele neliniare sau cele n regim tranzitoriu, se reduce n nal la aceast a problem a. Circuitele electrice rezistive liniare sunt caracterizate de sisteme de ecuat ii algebrice liniare formate din ecuat iile lui Kirchho si din relat iile constitutive ale elementelor. Din punct de vedere matematic, analiza unui astfel de circuit se reduce la rezolvarea unui sistem liniar. Analiza asistat a de calculator a circuitelor electrice presupune nu numai rezolvarea numeric a a ecuat iilor asociate acestor circuite ci si generarea automat a, cu ajutorul calculatorului a acestor ecuat ii. Ecuat iile unui circuit electric pot avea diferite forme echivalente. Cea mai ecient a tehnic a de scriere automat a a ecuat iilor s-a dovedit a tehnica nodal a, bazat a pe metoda potent ialelor la noduri. In lucrare se prezint a tehnica nodal a aplicat a n analiza circuitelor electrice liniare, de curent continuu si alternativ. Pentru descrierea circuitelor a fost ales un limbaj de maxim a simplitate, orientat pe laturi.

5.2

Principiul metodei

Se consider a un circuit electric cu N noduri si L laturi. Pe ecare latur a k a acestui circuit se a a un rezistor liniar cu rezistent a Rk , eventual nseriat cu o surs a cu t.e.m. Ek , 107

108

Capitolul 5. Analiza numeric a a circuitelor electrice liniare n regim permanent

Ek

U k
Figura 5.1: Latura standard considerat a pentru analiza circuitelor rezistive liniare de curent continuu. astfel nc at: unde uk este tensiunea la bornele laturii k , iar ik este curentul ce str abate latura (gura 5.1). Relat ia (5.1) se poate scrie si sub forma: ik = uk + E k = G k uk + J k , Rk (5.2) uk = R k i k E k , k = 1, 2, . . . , L, (5.1)

n care Gk = 1/Rk este conductant a laturii, presupus a m arginit a, iar Jk = Ek /Rk este curentul electromotor al generatorului de curent Norton echivalent laturii. S-a presupus c a nici o latur a nu are rezistent a nul a. Dac a se noteaz a cu i = [i1 , i2 , . . . , iL ]T vectorul intensit a tilor curent ilor din laturile T circuitului, cu u = [u1 , u2 , . . . , uL ] vectorul tensiunilor la bornele laturilor si cu v = T [v1 , v2 , . . . , vN 1 ] vectorul potent ialelor nodurilor, atunci teoremele lui Kirchho cap at a urm atoarea form a matriceal a: Ai = 0, u = AT v , n care s-a notat cu A IR(N 1)L matricea redus a a incident elor laturi-noduri. Problema fundamental a a analizei circutelor electrice rezistive liniare const a n determinarea vectorilor u, i si v, atunci c and se cunosc parametrii Rk , Ek , pentru k = 1, . . . , L si topologia circuitului descris a, de exemplu, prin matricea A. Solut ia acestei probleme se determin a prin rezolvarea sistemului de ecuat ii algebrice liniare (5.1), (5.3), (5.4). Scriind si ecuat iile constitutive ale laturilor (5.1) sub forma matriceal a: u = Ri E, (5.5) (5.3) (5.4)

unde R = diag (R1 , R2 , . . . , RL ) IRLL este matricea rezistent elor laturilor, iar E = T [E1 , E2 , . . . , EL ] este matricea t.e.m., rezult a, prin eliminarea vectorilor u si i din (5.3), (5.4), si (5.5): Ai = AR1 (u + E) = AR1 AT + AR1 E = 0. (5.6)

5.2. Principiul metodei

109

Dac a se noteaz a cu G = AR1 AT matricea conductant elor nodale si cu iS = AR1 E matricea inject iilor de curent n noduri (suma curent ilor de scurtcircuit) rezult a sistemul de ecuat ii algebrice liniare Gv = iS (5.7) specic tehnicii nodale, matricea G ind o matrice p atrat a de dimensiune N 1. Prin rezolvarea acestui sistem, rezult a potent ialele nodurilor v = G1 iS , din care se calculeaz a cu (5.4) tensiunile si cu (5.5) curent ii. Se constat a c a ecare latur a k , conectat a ntre nodurile init ial ni si nal nf, contribuie la patru termeni ai matricei G si la doi termeni ai vectorului iS : Matricea G vectorul iS coloana ni coloana nf linia ni linia nf 1/Rk 1/Rk 1/Rk 1/Rk Ek /Rk Ek /Rk

Aceast a observat ie permite generarea automat a a matricelor G, iS , prin parcurgerea laturilor si adunarea contribut iei ec arei laturi, la aceste matrice. Se constat a c a matricea G este diagonal dominant a, ceea ce permite rezolvarea sistemului liniar at at cu metode iterative c at si cu metode directe, f ar a pivotare. Analiza circuitelor electrice liniare n curent alternativ prin tehnica nodal a presupune L L N 1 reprezentarea circuitului n complex. Dac a se noteaz a cu I C I , U C I , V C I , vectorii curent ilor, tensiunilor si respectiv potent ialelor complexe, ecuat iile circuitului au forma matriceal a: AI = 0, U = AT V , U = ZI E, (5.8)
LL I este matricea impedant elor complexe ale la n care Z = diag (Z 1 , Z 2 , . . . , Z L ) C T turilor, iar E = diag (E 1 , E 2 , . . . , E L ) este matricea tensiunilor electromotoare coma plexe. Impedant ele complexe ale elementelor ideale sunt: la rezistor Z R = R, la bobin 1 ia (frecvent a unghiular a) n Z L = jL, iar la condensator Z C = jC , unde este pulsat radiani/s.

Prin elimin ari succesive din (5.8) se obt ine: YV = IS , (5.9)

n care Y = Z1 AT este matricea admitant elor nodale, iar IS = AZ1 E este matricea inject iilor de curent din noduri. Prin rezolvarea sistemului algebric liniar (5.9) rezult a 1 potent ialele V = Y IS . In consecint a, analiza de curent alternativ se desf a soar a similar cu cea de curent continuu, cu deosebirea c a n acest caz se opereaz a cu numere complexe.

110

Capitolul 5. Analiza numeric a a circuitelor electrice liniare n regim permanent

5.3

Pseudocodul metodei

Urm atorul pseudocod descrie analiza unui circuit rezistiv liniar, de curent continuu. ; Introducerea datelor de descriere a circuitului cite ste N ; num arul de noduri cite ste L ; num arul de laturi pentru k = 1, L ; parcurge laturi cite ste nik , nfk ; nodurile init ial si nal cite ste Rk , Ek ; rezistent a si t.e.m ; Rezolv a circuitul prin tehnica nodal a si determin a vectorul v al potent ialelor nodal (N, L, ni, nf, R, E, v) ; Calculeaz a si a seaz a solut ia pg = 0 pc = 0 pentru k = 1, L u = vni(k) vnf (k) i = (u + Ek )/Rk pg = pg + Ek i pc = pc + Rk i2 scrie k , u, i scrie pc, pg

; ; ; ; ;

puterea generat a puterea consumat a parcurge laturile tensiunea la bornele laturii curentul din latur a

; bilant ul de puteri

Acest program apeleaz a procedura nodal, care determin a potent ialele nodurilor: procedura nodal (N, L, ni, nf, R, E, v) ; analizeaz a circuitul rezistiv liniar cu tehnica nodal a ntreg N ntreg L tablou ntreg ni(L) tablou ntreg nf (L) tablou real R(L) tablou real E (L) tablou real v (N ) tablou real G(N, N ) ; ; ; ; ; ; ; ; ; num ar de noduri num ar de laturi noduri init iale noduri nale rezistet ele laturilor t.e.m. ale laturilor potent ialele nodurilor (date de ie sire) matricea conductant elor nodale

5.3. Pseudocodul metodei

111

tablou real is(L) pentru i = 1, N is(i) = 0 pentru j = 1, N G(i, j ) = 0 pentru k = 1, L n1 = ni(k ) n2 = nf (k ) G(n1, n1) = G(n1, n1) + 1/Rk G(n2, n2) = G(n2, n2) + 1/Rk G(n1, n2) = G(n1, n2) 1/Rk G(n2, n1) = G(n2, n1) 1/Rk is(n1) = is(n1) Ek /Rk is(n2) = is(n2) + Ek /Rk Gauss (N-1, G, is, v) v (N ) = 0 retur

; vectorul inject iilor de curent ; init ializeaz a matricea sistemului

; parcurge laturi

; rezolv a sistem liniar cu N-1 ecuat ii ; cu matricea G si termenul liber is

In procedura nodal se apeleaz a procedura Gauss, care determin a vectorul v al poten tialelor, prin rezolvarea sistemului liniar Gv = iS cu metoda elimin arii gaussiene. Pentru a simplica algoritmii, matricea G generat a are dimensiunea N N , dar la rezolvarea sistemului aceasta se consider a de dimensiuni (N 1) (N 1), ceea ce corespunde alegerii ultimului nod, ca nod de referint a. Algoritmul prezentat poate extins f ar a dicult a ti pentru a permite analiza circuitelor care cont in si surse de curent. Dac a se opereaz a cu variabile complexe si nu cu variabile reale, procedura nodal se poate aplica la analiza circuitelor de curent alternativ. Se va nota cu nodal-cx varianta acestei proceduri, n care declarat ia real se nlocuie ste cu complex. Urm atorul pseudocod descrie algoritmul de analiz a a circuitelor de curent alternativ. ; Introducerea datelor de descriere cite ste N ; num ar de noduri cite ste L ; num ar de laturi cite ste f ; frecvent a n Hz pentru k = 1, L cite ste nik , nfk cite ste tipk ; tipul elementului R, L sau C cite ste pk ; parametrul elementului pasiv cite ste ek ; valoarea efectiv a

112

Capitolul 5. Analiza numeric a a circuitelor electrice liniare n regim permanent

cite ste f ik ; faza init ial a w =2f ; pulsat ia pentru k = 1, L dac a tipk = L atunci Zk = complex(0, wpk ) altfel dac a tipk = C atunci Zk = complex(0, 1/(wpk )) altfel Zk = complex(pk , 0) Ek = complex(ek cos(f ik ), ek sin(f ik )) ; Determin a potent ialele complexe ale nodurilor nodal-cx (N, L, ni, nf, Z, E, V) ; Calculeaz a si a sez a solut ia Sg = complex(0, 0) ; puterea complex a generat a Sc = complex(0, 0) ; puterea complex a consumat a pentru k = 1, L U = Vni(k) Vnf (k) I = (U + Ek )/Zk Sg = Sg + Ek conjugat(I ) Sc = Sc + Zk |I |2 scrie k ; latura scrie |I | ; valoarea efectiv a scrie arg (I ) ; faza curentului scrie scrie scrie scrie Re(Sg ) Im(Sg ) Re(Sc) Im(Sc) ; ; ; ; puterea puterea puterea puterea generat a activ a Pg generat a reactiv a Qg consumat a activ a Pc consumat a reactiv a Qg

Dac a partea de analiz a a acestui program este repetat a ciclic pentru diferite frecvent e se obt in caracteristicile de frecvent a ale circuitului.

5.4

Analiza algoritmilor

Necesarul de memorie Memoria necesar a n analiza circuitelor electrice rezistive liniare este ocupat a de: 2 vectori ntregi ni, nf de dimensiune L;

5.5. Chestiuni de studiat

113

2 vectori reali R, E de dimensiune L; 1 vector real iS de dimensiune N ; 1 matrice G de dimensiune N N . Se constat a c a necesarul de memorie depinde p atratic de dimensiunea circuitului, caracterizat a n principal prin num arul de noduri N . Efort de calcul Timpul de calcul necesar analizei este folosit n special pentru rezolvarea sistemului liniar de dimensiune N , deci ordinul de complexitate al algoritmului de analiz a este cubic 3 O(2N /3). Analiza erorilor Erorile numerice ap arute n analiza circuitelor sunt: erori inerente, n datele de intrare; erori de rotunjire, datorate reprezent arii nite. Erorile inerente si de rotunjire se propag a n procesul de calcul si pot genera instabilit a ti numerice, cu at at mai mari, cu c at sistemul de ecuat ii este mai slab condit ionat. Dac a circuitul analizat are rezistent e foarte diferite, atunci instabilit a tile numerice pot deveni importante. A sa se nt ampl a, dac a de exemplu, una din rezistent ele laturilor tinde c atre zero (conductant a tinde c atre innit, ceea ce determin a valori foarte mari pentru unele din elementele matricei G).

5.5

Chestiuni de studiat

1. Analiza numeric a a unui circuit rezistiv liniar n regim stat ionar (curent continuu); 2. Analiza numeric a a unui circuit liniar n regim sinusoidal (curent alternativ); 3. Implementarea unui algoritm de analiz a numeric a a unui circuit electric liniar; 4. C autarea de informat ii pe Internet.

114

Capitolul 5. Analiza numeric a a circuitelor electrice liniare n regim permanent

5.6

Modul de lucru

Pentru desf a surarea lucr arii se selecteaz a lucrarea Analiza numeric a a circuitelor liniare n regim permanent din meniul principal de lucr ari. Aceasta are ca efect lansarea unui meniu cu urm atoarele opt iuni: Circuite de curent continuu; Circuite de curent alternativ, din care utilizatorul selecteaz a opt iunea dorit a.

5.6.1

Analiza numeric a a unui circuit rezistiv liniar

Prin selectarea opt iunii Circuite de curent continuu din meniul principal se lanseaz a un program de analiz a a circuitelor electrice de tip R, E . Programul solicit a din partea utilizatorului urm atoarele informat ii de descriere a circuitului: num arul de noduri; num arul de laturi; pentru ecare latur a de circuit: nodul init ial al laturii; nodul nal al laturii; rezistent a din latur a; t.e.m. a sursei de tensiune. Dup a introducerea datelor, programul analizeaz a circuitul introdus cu metoda potent ialelor la noduri si sunt a sate pentru ecare latur a valoarea tensiunii si cea a intensit a tii curentului. Sunt calculate si a sate valorile puterii consumate si puterii generate. Pentru a analiza un circuit electric cu ajutorul acestui program, acesta trebuie preg atit n felul urm ator: se numeroteaz a nodurile de la 1 la N ; se numeroteaz a laturile de la 1 la L;

5.6. Modul de lucru

115

se alege pentru ecare latur a un sens de parcurs, orientat de la borna minus la borna plus a sursei de tensiune, dac a aceasta exist a, si arbitrar n caz contrar. Se recomand a analiza unui circuit electric simplu, de exemplu cu L = 3 si N = 2, a c arei solut ie este cunoscut a. Se va studia solut ia numeric a obt inut a, pentru valori extreme (foarte mari si foarte mici) ale uneia din rezistent ele circuitului.

5.6.2

Analiza unui circuit de curent alternativ

Prin selectarea opt iunii Circuite de curent alternativ se lanseaz a un program, care permite analiza unui circuit electric n regim sinusoidal. Pentru descrierea circuitului, n afar a de num arul de laturi, num arul de noduri si a frecvent ei de lucru (exprimat a n Hz), pentru ecare latur a se descrie: nodul init ial si nal; tipul elementului pasiv din latur a (R, L sau C ); valoarea parametrului elementului pasiv (R, L sau C ); valoarea efectiv a a t.e.m. a sursei de tensiune din latur a; faza init ial a a t.e.m. a sursei de tensiune ( n grade). Dup a introducerea datelor se analizeaz a circuitul cu metoda nodal a si se a saz a, pentru ecare latur a: valoarea efectiv a a curentului; faza init ial a a curentului. In nal se a seaz a puterile active si reactive, consumate si generate. Se recomand a s a se analizeze numeric funct ionarea unui circuit electric stabilizator de curent de tip Boucherot pentru diferite valori ale rezistent ei de sarcin a. Reamintim c a un circuit de tip Boucherot este un circuit de tipul celui din gura 5.2. Pentru acest circuit curentul I 3 prin impedant a Z 3 nu depinde de valoarea acestei a se calculeze impedant e dac a Z 1 + Z 2 = 0. Pentru a justica acest lucru este sucient s curentul I 3 : I3 = E Z1 +
Z2Z3 Z 2 +Z 3

EZ 2 Z2 = . Z2 + Z3 Z 1 Z 2 + (Z 1 + Z 2 )Z 3 E . Z1

si anume el este Este evident c a, dac a Z 1 + Z 2 = 0 curentul I 3 nu depinde de Z 3 , I3 =

116

Capitolul 5. Analiza numeric a a circuitelor electrice liniare n regim permanent

Z2 Z1 Z3 I3 E

si I 3 nu depinde de Z 3 ) Figura 5.2: Circuit de tip Boucherot. (Z 1 + Z 2 = 0

5.6.3

Implementarea algoritmilor

Se va implementa n limbajul C, algoritmul de analiz a a circuitelor electrice rezistive liniare. Programul va editat, compilat, executat si testat pentru un circuit simplu.

5.6.4

C autarea de informat ii pe Internet

C autat i pe Internet informat ii (coduri) legate de rezolvarea circuitelor electrice. Exemple de cuvinte cheie: electric circuits simulation.

5.7
5.7.1

Exemple
Exemple rezolvate

1. Fie circuitul de curent continuu din gura 5. Se cunosc: R1 = 1, R2 = 2, R3 = 3, R4 = 4, R5 = 5, R6 = 6, E1 = 10V, E3 = 30V, E5 = 50V. Se cer: S a se precizeze num arul de noduri, num arul de laturi si, pentru ecare latur a, nodul init ial, nodul nal, rezistent a si t.e.m. a sursei de tensiune. Ce dimensiuni au matricea G si vectorul iS asamblate de algoritm? S a se determine contribut iile laturilor 3 si 4 la matricea G si vectorul iS . Care sunt matricea G si vectorul iS asamblate? Care este sistemul de ecuat ii de rezolvat? Rezolvare:

5.7. Exemple

117

(1) R1 E1 (2)

R3

E3

(4) R5 R6 E5

R2

R4

(3)

Fig. 5. Circuit rezistiv liniar de curent continuu

Pentru circuitul din gura 5, num arul de noduri este N = 4, iar num arul de laturi este L = 6. Pentru laturile cu surse de tensiune, sensul laturii este sensul intern al sursei de tensiune, iar pentru restul laturilor, sensul laturii este ales de utilizator.

Latura 1 2 3 4 5 6

Nodul init ial 2 1 4 2 4 4

Nodul nal 1 2 1 3 3 3

R [] 1 2 3 4 5 6

E [V] 10 0 30 0 50 0

Deoarece num arul total de noduri este 4, matricea G asamblat a de algoritm are dimensiunea (4, 4), iar vectorul iS are dimensiunea 4. Contribut iile laturii 3 la matricea G si vectorul iS : G
1 3

iS 1 3
1 3 30 3

1 3

30 3

Contribut iile laturii 4 la matricea G si vectorul iS :

118

Capitolul 5. Analiza numeric a a circuitelor electrice liniare n regim permanent

G
1 4 1 4 1 4 1 4

iS 0 0

Matricea G si vectorul iS asamblate: G


1 +1 1+ 2 3 1 1 2 1 1 2 1+ 1 +1 2 4 1 4

iS 1 4 1 1 + +1 4 5 6 1 5 1 6
1 3 1 1 5 6 1 1 1 + + 3 5 6

1 3

50 5 30 50 3 5

10 + 30 3 10

Nodul 4 este nod de referint a. Matricea G a sistemului de rezolvat se obt ine din matricea G asamblat a prin eliminarea ultimei linii si a ultimei coloane. Vectorul iS al sistemului de rezolvat se obt ine din vectorul iS asamblat prin eliminarea ultimei linii. Matricea G si vectorul iS ale sistemului de ecuat ii de rezolvat: G
1 +1 1+ 2 3 1 1 2 1 1 2 1 1+ 1 +4 2 1 4

iS 1 4 1 +5 + 10 + 30 3 10
50 5

1 4

1 6

2. Fie circuitul de curent alternativ din gura 6: Se cunosc: frecvent a f = 50Hz, 3 1 1 2 F, R2 = 3, R3 = 1, R5 = 4, L1 = 100 H, L4 = 100 H, C3 = 100 F, C6 = 400 e1 (t) = 30 2 sin(t)V, e5 (t) = 20 sin(t + 2 )V. S a se precizeze num arul de noduri, num arul de laturi si, pentru ecare latur a, nodul init ial, nodul nal, impedant a si valoarea complex a a t.e.m. a sursei de tensiune. Rezolvare: Pentru circuitul din gura 6, num arul de noduri este N = 4, iar num arul de laturi este L = 6. Pentru laturile cu surse de tensiune, sensul laturii este sensul intern al sursei de tensiune, iar pentru restul laturilor, sensul laturii este ales de utilizator. Transformarea n complex simplicat a unei valori instantanee a t.e.m. este: e(t) = E 2 sin(t + ) E = E ej = E [cos() + j sin()].

5.7. Exemple

119

(4)
1 0 0 1 0 0 1 L1 1 0 1 0 R 1 2 e1

R3 C 3

(3) R5 E5

C6

000 111 (2) L4 Fig. 6. Circuit rezistiv liniar de curent alternativ

(1)

Astfel: E 1 = 30ej 0 = 30,

20 20 E 5 = ej 2 = j. 2 2 1 1 = j , jC C

Impedant ele rezistorului, bobinei si condesatorului sunt: Z R = R, Z L = jL, ZC =

unde = 2f = 100 este pulsat ia. De exemplu, impedant ele laturilor 1 si 3 sunt: Z 1 = jL1 = 2j, Z 3 = R3 j 1 = 1 j. C3 Z 2j 3 1j 3j 4 4j E 30 0 0 0 20 j 2 0

Latura Nodul init ial 1 2 3 4 5 6 1 1 4 2 3 2

Nodul nal 4 4 3 1 2 3

5.7.2

Exemple propuse

1. Fie circuitul de curent continuu din gura 7: Se cunosc: R1 = 1, R2 = 2, R3 = 1, R4 = 3, R5 = 2, R6 = 4, E3 = 10V, E4 = 20V, E5 = 10V, E6 = 30V. Se cer: S a se precizeze num arul de noduri, num arul de laturi si, pentru ecare latur a, nodul init ial, nodul nal, rezistent a si t.e.m. a sursei de tensiune.

120

Capitolul 5. Analiza numeric a a circuitelor electrice liniare n regim permanent

E4

R4 E5 E6 R6

R1

R2

R5

E3

R3

Fig. 7. Circuit rezistiv liniar de curent continuu

C4 C1 R2 e1 C5 1 0 0 1 0 1 0 1 L5 0 1 0 1

R6 E6

000 111 L3 R3 Fig. 8. Circuit rezistiv liniar de curent alternativ

Ce dimensiuni au matricea G si vectorul iS asamblate de algoritm? S a se determine contribut iile laturilor 2 si 3 la matricea G si vectorul iS . Care sunt matricea G si vectorul iS asamblate? Care este sistemul de ecuat ii de rezolvat? 2. Fie circuitul de curent alternativ din gura 8: Se cunosc: frecvent a f = 50Hz, 2 4 1 1 R2 = 5, R3 = 2, R6 = 3, L3 = 100 H, L5 = 100 H, C1 = 300 F, C4 = 100 F, 1 3 C5 = 200 F, e1 (t) = 20 2 sin(t + )V, e6 (t) = 10 sin(t + 2 )V. S a se precizeze num arul de noduri, num arul de laturi si, pentru ecare latur a, nodul init ial, nodul nal, impedant a si valoarea complex a a t.e.m.

5.8. Intreb ari si probleme

121

5.8

Intreb ari si probleme

1. Cum trebuie modicat algoritmul de analiz a a circuitelor electrice rezistive liniare, pentru a admite si surse ideale de curent, conectate n paralel cu ecare latur a? 2. Extindet i algoritmul de analiz a a circuitelor electrice rezistive liniare pentru a admite si surse comandate liniar n tensiune. 3. Modicat i algoritmul de analiz a nodal a, astfel nc at s a admit a si elemente comandate n curent (surse de tensiune sau surse comandate liniar n curent). 4. Modicat i algoritmul de analiz a n curent alternativ, astfel nc at aceasta s a admit a si bobine cuplate mutual. 5. Analizat i comparativ cele dou a metode de descriere a unui circuit: cea orientat a pe elemente (se dau nodurile ec arui element) si cea orientat a pe noduri (se dau elementele, care concur a la ecare nod). 6. Analizat i modul n care se pot folosi tehnicile de matrice rare la analiza circuitelor electrice liniare. 7. Generat i un algoritm de analiz a a circuitelor de curent alternativ, pentru un sistem care nu admite operat ii cu numere complexe. 8. Generat i un algoritm de analiz a a datelor de descriere a unui circuit, care permite simbolizarea nodurilor prin nume alfanumerice si care testeaz a corectitudinea descrierii. 9. Comparat i diferitele metode de scriere ale ecuat iilor unui circuit electric rezistiv liniar.

Gustav Robert Kirchho (1824, Prusia - 1887, Germania)

http://www-gap.dcs.st-and.ac.uk/ history/Mathematicians/Kirchho.html http://scienceworld.wolfram.com/biography/Kirchho.html

122

Capitolul 5. Analiza numeric a a circuitelor electrice liniare n regim permanent

Lucrarea 6 Interpolarea polinomial a a funct iilor reale


6.1 Caracterizarea metodei

Funct iile numerice se pot reprezenta n sistemele de calcul prin dou a metode principial diferite:

prin cod, indic and algoritmul care permite evaluarea funct iei n orice punct al domeniului de denit ie;

prin date, indic and valorile funct iei numai ntr-o ret ea de puncte din domeniul de denit ie, numite noduri.

Evaluarea unei funct ii reprezentate tabelar (prin date) presupune aproximarea ei (interpolarea) n intervalele dintre nodurile ret elei, n orice punct al domeniului de denit ie. Una din cele mai simple metode de interpolare const a n aproximarea funct iei cu un polinom. In acest caz evaluarea funct iei se reduce la operat ii aritmetice elementare (adun ari si nmult iri). Scopul lucr arii este de a evident ia cele mai eciente metode de determinare a poli nomului de interpolare. In lucrare se studiaz a efortul de calcul, eroarea introdus a prin interpolare polinomial a si limitele acestei metode de aproximare. 123

124

Capitolul 6. Interpolarea polinomial a a funct iilor reale

6.2

Principiul metodei

Se consider a funct ia real a de variabil a real a f : [a, b] IR ale c arei valori sunt cunoscute ntr-o ret ea de noduri a = x0 < x1 < ... < xn = b: x: y: n care yk = f (xk ). Problema fundamental a a interpol arii const a n determinarea unei funct ii g : [a, b] IR, care aproximeaz a funct ia f satisf ac and condit iile: g (x0 ) = y0 , g (x1 ) = y1 , ...., g (xn ) = yn . De obicei funct ia g este c autat a de forma unei combinat ii liniare
n

x0 x1 y0 y1

... ...

xn yn

g ( x) =
k=0

c k bk ( x)

(6.1)

de funct ii bk : [a, b] IR, numite funct ii de baz a. Dac a n general problema interpol arii nu are solut ie unic a, prin alegerea funct iilor de baz a problema este bine formulat a si are solut ie unic a, cu condit ia ca aceste funct ii s a e liniar independente. In acest caz, problema interpol arii se reduce la determinarea coecient ilor c0 , c1 , . . . , cn , care alc atuiesc vectorul c = [c0 , c1 , . . . , cn ]T IR(n+1) . Metoda clasic a Aleg and funct iile de baz a de forma 1, x, x2 , . . . , xn , respectiv bk = xk , funct ia de interpolare este un polinom:
n

g ( x) =
k=0

c k xk ,

de gradul n care satisface condit iile de interpolare: g ( xk ) = yk , k = 0, 1, 2, . . . , n.

Exist a deci o leg atur a str ans a ntre gradul polinomului de interpolare si num arul de puncte ale tabelului de valori, si anume gradul polinomului este cu 1 mai mic dec at num arul de puncte din tabel (prin dou a puncte trece o dreapt a, prin trei puncte trece o parabol a, etc.). In consecint a, coecient ii polinomului de interpolare satisfac sistemul de ecuat ii algebrice liniare: n c 0 + c 1 x0 + c 2 x2 = y0 0 + + c n x0 n 2 c 0 + c 1 x1 + c 2 x1 + + c n x1 = y1 (6.2) . . .
n c 0 + c 1 xn + c 2 x2 n + + c n xn = yn

6.2. Principiul metodei

125

sau sub forma matriceal a: Ac = y, n care y = [y0 , y1 , . . . , yn ]T IR(n+1) iar A= 1 x0 x2 0 1 x1 x2 1 . . . . . . . . . 1 xn x2 n xn 0 xn 1 IR(n+1)(n+1) n xn

(6.3)

este o matrice nesingular a, dac a xi = xj pentru i = j . In acest fel, problema interpol arii presupune parcurgerea etapelor: determinarea coecient ilor polinomului de interpolare prin rezolvarea unui sistem liniar de ecuat ii algebrice; evaluarea polinomului interpolant. Aceast a tehnic a de interpolare poate aplicat a doar pentru valori mici ale gradului (n < 5), deoarece are dou a mari dezavantaje: 1. efortul de calcul pentru determinarea coecient ilor este relativ mare, ordinul de complexitate al celui mai ecient algoritm de rezolvare a unui sistem liniar general ind O(2n3 /3); 2. erorile solut iei sunt mari, deoarece sistemul este slab condit ionat pentru valori mari ale gradului n. Metoda Lagrange O metod a care evit a aceste dezavantaje este metoda Lagrange, n care funct iile de baz a se aleg de forma: b0 (x) = (x x1 )(x x2 ) (x xn ) (6.4)

b1 (x) = (x x0 )(x x2 ) (x xn ) . . .

bn (x) = (x x0 )(x x1 ) (x xn1 ) sau n general:


n

bk ( x) =
i=0,i=k

( x xi )

(6.5)

126

Capitolul 6. Interpolarea polinomial a a funct iilor reale

Impun and polinomului g ( x) =

ck
k=0 i=0,i=k

( x xi )

(6.6)

condit iile de interpolare, rezult a sistemul de ecuat ii algebrice liniare: g (x0 ) = c0 (x0 x1 )(x0 x2 ) (x0 xn ) = y0 (6.7)

g (x1 ) = c1 (x1 x0 )(x1 x2 ) (x1 xn ) = y1 . . .

g ( x n ) = c n ( xn x0 ) ( x n x1 ) ( x n xn 1 ) = yn cu structura diagonal a. Solut ia acestui sistem este: ck = yk n i=0,i=k (xk xi ) , (6.8)

iar polinomul de interpolare are expresia ( x xi ) = g ( x) = yk ( x k xi ) k=0 i=0,i=k n care s-a notat cu lk (x) polinomul lui Lagrange. Metoda Lagrange elimin a dezavantajele metodei clasice, n schimb timpul necesar evalu arii polinomului de interpolare cre ste de la ordinul liniar O(n) la cel p atratic O(n2 ). Metoda Newton O alt a metod a pentru determinarea polinomului de interpolare este metoda Newton, n care funct iile de baz a se aleg de forma: b0 ( x) = 1 b2 (x) = (x x0 )(x x1 ) . . . bn (x) = (x x0 )(x x1 ) (x xn1 ) sau n general: bk ( x) = Impun and polinomului
n k 1 i=0 n n n

yk lk ( x) ,
k=0

(6.9)

b1 ( x) = ( x x 0 )

(6.10)

( x xi ) .

g (k ) =
k=0

ck

k 1 i=0

( x xi )

(6.11)

6.2. Principiul metodei

127

condit iile de interpolare: g ( x0 ) = c 0 = y0 g (x2 ) = c0 + c1 (x2 x0 ) + c2 (x2 x0 )(x2 x1 ) = y2 . . . g (xn ) = c0 + c1 (xn x0 ) + c2 (xn x0 )(xn x1 ) + = yn rezult a un sistem algebric liniar cu structura triunghiular inferioar a, a c arui rezolvare poate realizat a prin metoda substitut iei progresive. Coecient ii polinomului de interpolare Newton sunt: c 0 = y0 c2 = (y2 c0 c1 (x2 x0 ))/(x2 x0 )/(x2 x1 ) . . . c1 = (y1 c0 )/(x1 x0 ) = (y1 y0 )(x1 x0 ) g ( x1 ) = c 0 + c 1 ( x1 x0 ) = y1

(6.12)

(6.13)

cn = (yn c0 c1 (xn x0 ) c2 (xn x0 )(xn x1 ) )/(xn x0 )/ /(xn xn1 ) Un concept aat ntr-o str ans a relat ie cu polinomul de interpolare Newton este cel al diferent elor divizate de ordinul k ale unei funct ii f, valori notate cu f [ ] si care se denesc recursiv prin: f [ x0 , x1 , , x k ] = f [ x1 , , x k ] f [ x 0 , x1 , , x k 1 ] , xk x0 y1 y0 . x1 x0 (6.14)

iar n particular, n cazul diferent ei divizate de ordinul 1: f [ x0 , x1 ] = (6.15)

Se constat a c a valorile coecient ilor ck din polinomul de interpolare Newton sunt date de diferent ele divizate c k = f [ x0 , x1 , , x n ] si:
n n k 1 i=0

g ( x) =
k=0

c k bk ( x) =
k=0

f [ x0 , x1 , , x k ]

( x xi ) .

(6.16)

Determinarea coecient ilor polinomului Newton este facilitat a de utilizarea tabelei diferent elor divizate, n care elementele se calculeaz a recursiv:

128 x x0 x1 x2 x3 x4 ... y y0 y1 f [ x1 , x2 ] y2 f [ x2 , x3 ] y3 f [ x3 , x4 ] y4 ... ... ord.1 f [ x0 , x1 ]

Capitolul 6. Interpolarea polinomial a a funct iilor reale

ord.2

ord.3

ord.4

f [ x0 , x1 , x2 ] f [ x0 , . . . , x3 ] f [ x1 , x2 , x3 ] f [ x1 , . . . , x4 ] f [ x2 , x3 , x4 ] f [ x0 , . . . , x 4 ]

...

...

...

Prima linie a acestui tabel cont ine chiar coecient ii polinomului de interpolare Newton. Diferent ele divizate de diferite ordine reprezint a aproxim ari ale derivatelor de ordin corespunz ator ale funct iei n sensul c a dac a f (x) are m derivate pe intervalul [a, b] exist a un punct a z b astfel nc at: f [ x0 , x1 , , x m ] = f (m ) ( z ) m! (6.17)

n care x0 , x1 , . . . , xm sunt puncte distincte din intervalul [a, b]. Metoda de interpolare Newton are urm atoarele avantaje: realizeaz a un compromis optim ntre efortul de construct ie si cel de evaluare; algoritmul este relativ stabil din punct de vedere numeric, av and erori numerice acceptabile ale rezultatelor; permite m arirea gradului polinomului de interpolare, prin ad augarea unui nod nou n ret eaua de interpolare, cu reutilizarea coecient ilor de la gradul anterior, care nu se modic a, deci cu un efort minim de calcul; are posibilitatea de a controla eroarea de interpolare; prin m arirea succesiv a a gradului polinomului de interpolare p an a la atingerea preciziei dorite, timpul de calcul este dependent de eroarea impus a, av and valori mari doar n cazurile n care se dore ste o precizie ridicat a; coecient ii polinomului Newton reprezint a diferent ele divizate de interpolat, ceea ce faciliteaz a calculul numeric al polinomului de interpolare. Observat ie: Cele trei metode prezentate (clasic a, Lagrange, Newton) sunt metode de interpolare global a. Ele caut a un polinom de grad n ce trece prin cele n + 1 puncte ale tabelului de

6.3. Pseudocodul algoritmilor

129

date. Deoarece acest polinom este unic (de exemplu, dac a n = 1, exist a o dreapt a unic a ce trece prin cele dou a puncte, dac a n = 2, exist a o parabol a unic a ce trece prin cele trei puncte, etc.), cele trei metode rulate pe un calculator ideal, de precizie innit a ( n care nu exist a erori de rotunjire) ar da acela si rezultat.

6.3

Pseudocodul algoritmilor

Metoda clasic a Determinarea coecient ilor polinomului de interpolare se poate face cu urm atoarea procedur a, care apeleaz a la r andul ei procedura Gauss, de rezolvare a sistemelor algebrice liniare. procedura interp(n, x, y, c) ntreg n tablou real x(n) tablou real y (n) tablou real c(n) tablou real a(n, n) pentru i = 0, n ai0 = 1 pentru j = 1, n pentru i = 0, n aij = aij 1 xi Gauss0(n+1, a, y, c) retur ; ; ; ; ; ; determin a coecient ii polinomului de interpolare gradul polinomului de interpolare abscisele punctelor de interpolare ordonatele punctelor de interpolare coecient ii polinomului (date de ie sire), indicii sunt de la 0 la n matricea sistemului, cu indici de la 0 la n

; rezolv a sistemul liniar ac = y cu n + 1 ecuat ii

Atent ie: Tabloul de date are indici de la 0 la n. Procedura Gauss implementat a n lucrarea 3 folosea indici de la 1 la n. Ea trebuie rescris a pentru a trata matrice n care notat ia indicelor este de la 0 la n. De aceea pseudocodul de mai sus apeleaz a o funct ie Gauss0. Pentru evaluarea polinomului se poate folosi rutina evalp prezentat a n lucrarea 1. Metoda Lagrange f ar a preg atire Procedura de interpolare Lagrange admite urm atoarea reprezentare n pseudocod: funct ia interp-L (n, x, y, xcrt) ntreg n tablou real x(n), y (n) ; ; ; ; evalueaz a polinomul de interpolare Lagrange n punctul xcrt gradul polinomului ret eaua de interpolare, indici de la 0 la n

130

Capitolul 6. Interpolarea polinomial a a funct iilor reale

real xcrt ; variabil a independent a real ycrt ; valoarea polinomului n xcrt real p ; variabil a intermediar a ycrt = 0 pentru k = 0, n p=1 pentru j = 0, n dac a j = k atunci p = p ( x x j ) /( xk xj ) ycrt = ycrt + yk p ntoarce ycrt Metoda Lagrange cu preg atire Dac a polinomul este evaluat ntr-un num ar mare de puncte, diferite de nodurile ret elei de interpolare, atunci este avantajoas a urm atoarea form a a polinomului de interpolare (6.6): n ck g (x) = (x x0 )(x x1 ) (x xn ) , (6.18) x xk k=0 n care ck este dat de relat ia (6.8). Aceast a metod a admite urm atorul pseudocod: procedura prep-L(n, x, y, c) ; ntreg n ; tablou real x(n), y (n) ; c ( n) ; pentru k = 0, n c k = yk pentru j = 0, n dac a j = k atunci c k = c k /( xk xj ) retur preg ate ste datele pentru interpolarea Lagrange gradul polinomului ret eaua de interpolare, indici de la 0 la n coecient ii polinomului de ie sire, indici de la 0 la n

funct ia eval-L (n, x, y, xcrt) ntreg n tablou real x(n), tablou real c(n) real xcrt p=1

; ; ; ; ; ;

evalueaz a polinomul Lagrange n punctul xcrt cu coecient ii c calculat i cu prep-L gradul polinomului abscisele punctelor de interpolare, indici de la 0 la n coecient ii polinomului, indici de la 0 la n varibil a independent a

6.3. Pseudocodul algoritmilor

131

pentru k = 0, n p = p(xcrt xk ) dac a p = 0 atunci ntoarce yk ycrt = 0 pentru k = 0, n ycrt = ycrt + ck /(xcrt xk ) ycrt = p ycrt ntoarce ycrt

Metoda Newton Problema determin arii coecient ilor polinomului Newton are o solut ie dependent a de reprezentarea datelor. Dac a se genereaz a diferent ele divizate si se memoreaz a ntr-un tabel bidimensional cu elementele: aij = f [xi , xi+j ] pentru i = 0, 1, . . . , n si j = 0 , 1 , . . . , ( n i) si aij = 0 pentru j > n i, atunci pe prima linie a acestui tabel se obt in coecient ii polinomului de interpolare Newton ck = a0k : j=0 f [ x0 ] f [ x1 ] f [ x2 ] f [ xn 1 ] f [ xn ] j=1 f [ x0 , x1 ] f [ x1 , x2 ] f [ x2 , x3 ] f [ xn1 , xn ] 0 ; ; ; ; ; ; j=2 f [ x0 , x1 , x2 ] f [ x1 , x2 , x3 ] f [ x2 , x3 , x4 ] 0 0

i=0: i=1: i=2: . . . i=n1: i=n:

x0 x1 x2 x n1 xn

= [aij ]

procedura prep-N (n, x, y, c) ntreg n tablou real x(n), y (n) tablou real c(n)

determin a coecient ii polinomului de interpolare Newton gradul polinomului ret eaua de interpolare, indici de la 0 la n coecient ii polinomului, indici de la 0 la n (date de ie sire)

pentru i = 0, n ai0 = y i pentru j = 1, n pentru i = 0, n j aij = (ai+j,j 1 ai,j 1 )/(xj +1 xi ) pentru i = 0, n

132

Capitolul 6. Interpolarea polinomial a a funct iilor reale

c i = a0 i retur funct ia eval-N (n, x, y, xcrt) ; evalueaz a polinomul Newton ntreg n ; gradul polinomului tablou real x(n), ; abscisele punctelor de interpolare, indici de la 0 la n tablou real c(n) ; coecient ii polinomului, indici de la 0 la n real xcrt ; varibil a independent a ycrt = cn pentru k = n 1, 0, 1 ycrt = ck + (xcrt xk )ycrt ntoarce ycrt

Evaluarea polinomului Newton se bazeaz a pe observat ia ca acesta poate scris sub forma: g (x) = c0 + (x x0 )(c1 + (x x1 )(c2 + + (x xn2 )(cn1 + cn (x xn1 ) ) mult mai avantajoas a din punctul de vedere al efortului de calcul dec at forma (6.11).

6.4
6.4.1

Analiza complexit a tii algoritmilor


Efort de calcul

Metoda clasic a de interpolare polinomial a, bazat a pe rezolvarea unui sistem de ecuat ii 3 liniare necesit a un efort de calcul de ordinul O(2n /3) pentru determinarea coecient ilor polinomului si un efort liniar O(2n) pentru evaluarea polinomului. Dac a se efectueaz am 3 evalu ari, efortul global de calcul este O(2n /3 + 2mn). La metoda Lagrange, efortul de calcul pentru evaluarea polinomului Lagrange ntr-un 2 punct cu relat ia (6.9) este de ordinul O(4n ). Dac a se utilizeaz a relat ia (6.18), atunci preg atirea datelor (procedura prep-L) necesit a un efort de calcul de ordinul O(2n2 ), iar evaluarea (funct ia eval-L) necesit a un efort de calcul de ordinul O(5n), deci un efort de 2 calcul global cu ordinul O(2n + 5mn). In cazul metodei Newton efortul de preg atire are ordinul O(3n2 /2), iar efortul de evaluare are ordinul O(2n), ceea ce corespunde unui efort de calcul global de ordinul O(3n2 /2 + 2mn). Urm atorul tabel sintetizeaz a rezultatele obt inute si evident iaz a ecient a metodei Newton:

6.5. Eroarea de interpolare

133 Timp de evaluare 2n 4n2 5n 2n Timp total 2n3 /3 + 2nm 4 n2 m 2n2 + 5nm 3n2 /2 + 2nm

Metoda Clasic a Lagrange (6.9) Lagrange (6.18) Newton

Timp de preg atire 2n /3 2 n2 3n2 /2


3

6.4.2

Necesar de memorie

Din punctul de vedere al ecient ei spat iale metoda clasic a necesit a un spat iu de memorie 2 de ordine O(n ) pe c and n cazul metodei Lagrange spat iul de memorie necesar are ordinul liniar O(2n) pentru varianta (6.9) si O(3n) pentru varianta (6.18). Metoda Newton, a sa cum a fost descris a n procedura prep-N, necesit a un spat iu de 2 memorie O(n ) pentru determinarea coecient ilor. Deoarece jum atate din acest spat iu este neutilizat, structura de date poate modicat a prin memorarea diferent elor divizate ntr-un tablou unidimensional, ceea ce conduce la un necesar de memorie de ordinul O(n2 /2).

6.5

Eroarea de interpolare

Problema general a a interpol arii nu are solut ie unic a, exist and o innitate de funct ii g (x), care interpoleaz a funct ia f (x) pe o ret ea dat a. Mai mult, abaterea dintre funct ia exact a f ( x) si aproximarea sa g (x) poate f acut a oric at de mare, chiar dac a g (xk ) = f (xk ) pentru k = 0, 1, , n. Dac a n schimb, funct 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 arginit a. Dac a se noteaz a cu: e ( x) = f ( x) g ( x) , eroarea absolut a, n care g (x) este polinomul de interpolare pe ret eaua x0 , x1 , . . . , xn , atunci: e ( x) = f [ x 0 , x1 , . . . , x n , x] . (6.19) Folosind relat iile (6.16) si (6.17) rezult a c a exist a un punct z [a, b] astfel nc at: f (n+1) (z ) ( x xj ) . e ( x) = (n + 1)! j =0
n

(6.20)

Dac a |f (n+1) (x)| M , pentru orice a x b, atunci eroarea de interpolare satisface inegalitatea: n M | x xj | . (6.21) | e ( x) | (n + 1)! j =0

134

Capitolul 6. Interpolarea polinomial a a funct iilor reale

In particular, n cazul interpol arii liniare pe ret eaua cu dou a puncte x0 , x1 eroarea de interpolare satisface inegalitatea: | e ( x) | M2 |x x0 ||x x1 |, 2

n care M2 > |f (z )| cu x0 < z < x1 . Se constat a c a eroarea de interpolare se anuleaz a n nodurile ret elei x0 , x1 si c a nu poate dep a si valoarea: | e ( x) | M2 2 h, 2

n care s-a notat cu h = x1 x0 lungimea intervalului. Interpolarea parabolic a (cu polinom de gradul doi) va avea o eroare care depinde de valoarea maxim a a modului derivatei a treia a funct iei de interpolat. In general, dac a h = b a, rezult a inegalitatea: | e ( x) | Mn+1 n+1 h , (n + 1)! (6.22)

care evident iaz a dependent a erorii de lungimea h a intervalului de interpolat. Dac a marginile M2 , M3 , M4 , . . . ale derivatelor alc atuiesc un sir monoton descresc ator (Mk+1 Mk ), atunci relat iile (6.19) si (6.21) evident ieaz a faptul c a ultimul termen din polinomul interpolat Newton reprezint a o aproximare a erorii de interpolare pentru polinomul de grad n 1. Din rezultatele prezentate s-ar p area c a m arind gradul polinomului de interpolare, eroarea de interpolare trebuie s a scad a. In realitate, aceast a armat ie nu este exact a. Un exemplu celebru este cel dat de Runge, care a ar atat c a pentru funct ia f : [5, 5] IR, denit a prin: 1 f ( x) = , 1 + x2 care este o funct ie sucient de neted a, interpolarea pe o ret ea uniform a de noduri este numeric instabil a. Pe m asur a ce cre ste num arul de noduri ( si implicit gradul polinomului) cre ste si eroarea de interpolare, datorit a oscilat iei polinomului interpolat ntre punctele ret elei. Aceast a lips a de convergent a a polinomului de grad ni c atre f (x), c and gradul n tinde c atre innit este cunoscut a sub numele de efectul Runge. Pentru a elimina efectul Runge se recomand a alegerea nodurilor de interpolare n pozit ia corespunz atoare r ad acinilor polinomului Ceb sev: xk = unde k = 0, 1, . . . , n a+b ba + cos 2 2 (n k ) n , (6.23)

6.5. Eroarea de interpolare

135

Erorile prezentate sunt n fond erori de trunchiere, dar ntr-o interpolare apar si erori inerente sau de rotunjire. Erorile inerente se datoreaz a abaterilor datelor de intrare de la valoarea exact a. Interpolarea polinomial a av and un caracter global, o abatere ntr-un nod xk se face simt it a nu numai local, n vecin atatea nodului xk ci pe ntreg domeniu [a, b]. Dac a de exemplu yk = yk + ey este afectat a de eroarea ey , atunci rezultatul interpol arii g (x) = g (x) + eg are o eroare: n x xj eg = ey , x k xj j =0,j =k care se anuleaz a n nodurile xj cu j diferit de k , deci este chiar polinomul Lagrange lk (x) multiplicat cu ey . Acest polinom poate lua n intervalul [a, b] valori mult mai mari ca ey . Aleg and nodurile conform r ad acinilor polinomului Ceb sev, atunci polinomul Lagrange lk (x) se identic a cu polinomul Ceb sev de grad k , care are oscilat ie minim a n intervalul [a, b]. In consecint a, interpolarea Ceb sev asigur a nu numai erori de trunchiere ci si erori de rotunjire minime. Spre deosebire de erorile de trunchiere, erorile de rotunjire depind de metoda adoptat a. Deoarece polinomul de interpolare al unei ret ele de date este unic (nu depinde de metoda prin care a fost calculat), erorile de aproximare n cazul oper arii cu un sistem de calcul ideal (f ar a erori de rotunjire) sunt acelea si indiferent dac a polinomul a fost determinat prin metoda clasic a, Lagrange sau Newton. Modul n care se propag a erorile de rotunjire depinde de stabilitatea numeric a a metodei. Metoda Lagrange este foarte stabil a numeric, deoarece elementele bazei sunt ortogonale si sistemul de rezolvat (cu structur a diagonal a) este foarte bine condit ionat. Metoda clasic a este foarte instabil a deoarece sistemul care se rezolv a este slab condit ionat, mai ales pentru polinoame de grad mare. Metoda Newton prezint a o stabilitate numeric a acceptabil a. Erorile prezentate limiteaz a drastic utilizarea interpol arii polinomiale globale. Nu este recomandabil a aceast a metod a pentru interpolarea datelor experimentale, succeptibile de erori mari. Ea poate aplicat a cu succes la interpolarea funct iilor evaluate algoritmic, care sunt sucient de netede (de preferint a analitice), f ar a modic ari prea rapide ale pantei (de preferint a la funct ii monotone). Dac a nodurile ret elei de interpolare pot alese de utilizator, atunci se recomand a ca ele s a e mai dese spre marginile intervalului, de preferint a conform relat iei (6.23). Din p acate, nici alegerea nodurilor conform acestei relat ii nu rezolv a complet problema interpol arii polinomiale. Faber a demonstrat o teorem a care arm a c a pentru orice sir de ret ele de discretizare cu un num ar de noduri n tinz and c atre innit exist a cel put in o funct ie continu a pentru care procedura de interpolare este divergent a, n sensul c a eroarea de interpolare tinde la innit. Aceast a teorem a evident ieaz a limitarea major a a metodei interpol arii polinomiale globale.

136

Capitolul 6. Interpolarea polinomial a a funct iilor reale

6.6

Chestiuni de studiat

1. Interpolarea polinomial a a funct iilor pe ret ele uniforme sau neuniforme (conform rad acinilor polinoamelor Ceb sev); 2. Analiza experimental a a erorilor; 3. Analiza experimental a a timpului de calcul; 4. Implementarea si testarea unor algoritmi de interpolare polinomial a; 5. C autare de informat ii pe Internet.

6.7

Mod de lucru

Pentru desf a surarea lucr arii selectat i opt iunea Interpolarea polinomial a a funct iilor reale din meniul principal de lucr ari. Aceasta are ca urmare lansarea urm atorului meniu: Interpolarea polinomial a uniform a /Ceb sev Analiza algoritmilor - erori Analiza algoritmilor - timpi de calcul

6.7.1

Interpolarea polinomial a a funct iilor pe ret ele uniforme/Ceb sev

Se selecteaz a din meniul principal opt iunea Interpolare polinomial a, care lanseaz a un program de interpolare mai nt ai pe o ret ea cu pas constant si apoi pe o ret ea cu pas neuniform, n concordant a cu r ad acinile polinoamelor Ceb sev. Programul a seaz a lista funct iilor f (x) care pot interpolate: sin(x) exp(x) ln(|x|) th(x) Runge: 1/(1 + x2 ) | x|

6.7. Mod de lucru

137

| x|

Dup a selectarea funct iei programul solicit a limitele domeniului de denit ie a x b si gradul polinomului de interpolare. Se reprezint a grac funct ia exact a f ( x) si interpolarea sa polinomial a g ( x) n ambele cazuri (uniform/neuniform). In consola Scilab se a seaz a eroarea de interpolare maxaxb |f (x) g (x)| . Se vor studia interpol arile polinomiale pentru cele 7 funct ii predenite, cu diferite valori ale gradului polinomului. Pentru una din funct ii ( n afara funct iei sin) se va reprezenta grac modul de variat ie a erorii n funct ie de num arul nodurilor de interpolare (de la 2 la 20). Se recomand a s a se aleag a o funct ie pentru care se remarc a efectul Runge. Se vor comenta rezultatele obt inute.

6.7.2

Analiza experimental a a erorilor de interpolare

Se selecteaz a opt iunea Analiza algoritmilor - erori din meniul principal al lucr arii. Programul lansat determin a eroarea de interpolare a funct iei sin(x) pe o perioad a, n cazul folosirii metodelor de interpolare: clasic a, Lagrange, Newton. Programul solicit a valoarea init ial a, valoarea nal a si pasul pentru gradul polinomului de interpolare. Valorile recomandate pentru gradul polinomului sunt 1,2,3,4,5,6,7,8 (valoarea init ial a 1, valoarea nal a 8, pas 1). Se vor nota erorile si se vor comenta rezultatele. Se va reprezenta grac eroarea n funct ie de gradul polinomului de interpolare.

6.7.3

Analiza experimental a a timpului de calcul necesar interpol arii polinomiale

Se selecteaz a opt iunea Analiza algoritmilor - timpi de calcul din meniul principal al lucr arii. Programul lansat determin a timpul de calcul necesar interpol arii funct iei sin(x) pe o perioad a, n cazul folosirii metodelor de interpolare: clasic a, Lagrange, Newton. Singura dat a de intrare este num arul de noduri n din ret eaua de interpolare. Se va reprezenta grac modul de varit ie a timpului de calcul (separat pentru preg atire si interpolare) n, pentru n variind de la 20 la 100, cu pas 20.

6.7.4

Implementarea unor algoritmi de interpolare polinomial a

Se va implementa n limbajul C algoritmul Lagrange de interpolare. Se va scrie un program de testare, care va permite introducerea datelor n - gradul polinomului de interpolare, x, y

138

Capitolul 6. Interpolarea polinomial a a funct iilor reale

- tabelele de date (cu n +1 puncte) si a sarea rezultatelor interpol arii la mijlocul distant ei dintre nodurile de interpolare x.

6.7.5

C autare de informat ii pe Internet

C autat i pe Internet informat ii legate de interpolarea funct iilor. Cuvinte cheie recomandate: interpolation, tting.

6.8
6.8.1

Exemple
Exemple rezolvate

1. Fie funct ia y = f (x) denit a tabelar: x y Se cer: (a) C at este gradul polinomului de interpolare global a? (b) Care sunt condit iile de interpolare? (c) Care este sistemul de ecuat ii asamblat n metoda clasic a de interpolare? (d) Care sunt polinoamele Lagrange asociate diviziunii [1 2 4]? (e) Care este polinomul de interpolare Lagrange? (f) Care este tabelul de diferent e divizate? (g) Care este polinomul de interpolare Newton? (h) Care este valoarea funct iei n punctul x = 3? Rezolvare: (a) Gradul polinomului de interpolare global a g (x) este cu o unitate mai mic dec at num arul de noduri ale ret elei de discretizare n care este cunoscut a funct ia f (x). Pentru exemplul dat, funct ia y = f (x) are valori date n 3 noduri, si n consecint a gradul polinomului de interpolare este n = 2. (b) Condit iile de interpolare sunt g (xk ) = yk , k = 0, n. Aceste condit ii impun ca funct ia de interpolare g (x) s a aib a acelea si valori ca funct ia f (x) n nodurile ret elei de discretizare: 1 2 2 1 4 3

6.8. Exemple

139

g (x0 ) = y0 = g (1) = 2, g (x1 ) = y1 = g (2) = 1, g (x2 ) = y2 = g (4) = 3. (c) In metoda clasic a de interpolare, funct ia de interpolare este g (x) = In cazul acestei probleme, avem: g ( x) = c 0 + c 1 x + c 2 x2 .

(6.24)
n k=0

c k xk .

(6.25)

(d) Polinomul Lagrange lk asociat unei diviziuni xi are urm atoarea form a: lk ( x) = x xi . x k xi i=0,i=k
n

Din cele n + 1 condit ii de interpolare rezult a un sistem (6.2) de n + 1 ecuat ii cu n + 1 necunoscute (coecient ii ck , k = 0, n). Conditiile de interpolare (6.24) scrise pentru funct ia g (x) dat a de (6.25) conduc la urm atorul sistem de ecuat ii: c2 = 2 c0 + c1 + c + 2c 1 + 4c 2 = 1 0 c0 + 4c1 + 16c2 = 3

Pentru exemplul considerat, diviziunea are 3 puncte, n consecint a vor 3 polinoame Lagrange de grad 2: x xi (x 2)(x 4) x2 6x + 8 (x x1 )(x x2 ) l0 ( x) = = = , = xk xi (x0 x1 )(x0 x2 ) (1 2)(1 4) 3 i=0,i=0 l1 ( x) = (x 1)(x 4) x2 5x + 4 (x x0 )(x x2 ) x xi = = , = x ( x (2 1)(2 4) 2 k xi 1 x0 )(x1 x2 ) i=0,i=1 x xi (x 1)(x 2) x2 3x + 2 (x x0 )(x x1 ) = = . = x ( x (4 1)(4 2) 6 k xi 2 x0 )(x2 x1 ) i=0,i=2
n 2 2 2

l2 ( x) =

(e) Polinomul de interpolare Lagrange este: g (x) =


k=0

yk lk (x).

In cazul particular studiat: g ( x) = y 0 l0 ( x) + y1 l1 ( x) + y2 l2 ( x) , si nlocuind expresiile polinomului Lagrange de mai sus, rezult a: g ( x) = 2 x2 5x + 4 x2 3x + 2 2x2 9x + 13 x2 6x + 8 +1 +3 = . 3 2 6 3

140

Capitolul 6. Interpolarea polinomial a a funct iilor reale

(f) Tabelul de diferent e divizate este: x x0 = 1 x1 = 2 x2 = 4 y y0 = 2 y1 = 1 y2 = 3 ord.1 f [ x0 , x1 ] = 1 f [ x1 , x2 ] = 1 Diferent ele divizate de ordinul 1, respectiv ordinul 2 se calculeaz a cu formula (6.14), astfel: 12 y1 y0 = 1, = f [ x0 , x1 ] = x1 x0 21 y2 y1 31 = 1, f [ x1 , x2 ] = = x2 x1 42 f [ x1 , x2 ] f [ x0 , x1 ] 2 1 (1) f [ x0 , x1 , x2 ] = = . = x2 x0 41 3
n k 1 i=0

ord.2

f [ x0 , x1 , x2 ] =

2 3

(g) Polinomul de interpolare Newton (6.16) este: g ( x) =


k=0

f [ x0 , x1 , , x k ]

( x xi ) .

In cazul studiat: g (x) = y0 + f [x0 , x1 ](x x0 ) + f [x0 , x1 , x2 ](x x0 )(x x1 ) = 2x2 9x + 13 2 . = 2 + (1)(x 1) + (x 1)(x 2) = 3 3 Observat ie: polinomul de interpolare global a g (x) este unic, indiferent de metoda de interpolare utilizat a. De aceea, rezultatul obt inut este identic cu rezultatul de la punctul (e). (h) In punctul x = 3, polinomul de interpolare este: g (3) = 2 32 9 3 + 13 4 = . 3 3

2. Fie funct ia y = f (x) denit a tabelar: x y Se cer: (a) C at este gradul polinomului de interpolare global a? 2 5 3 7 5 11

6.8. Exemple

141

(b) Care sunt condit iile de interpolare? (c) Care este sistemul de ecuat ii asamblat n metoda clasic a de interpolare? (d) Care sunt polinoamele Lagrange asociate diviziunii [2 3 5]? (e) Care este polinomul de interpolare Lagrange? (f) Care este tabelul de diferent e divizate? (g) Care este polinomul de interpolare Newton? (h) Care este valoarea funct iei n punctul x = 4? (i) Care este polinomul de interpolare n ipoteza ad aug arii punctului (1, 0) n tabelul de valori? Rezolvare: (a) Deoarece ret eaua de discretizare are 3 noduri, gradul polinomului de interpolare este n = 2. (b) Condit iile de interpolare sunt: g (2) = 5, g (3) = 7, g (5) = 11. (c) Impun and condit iile de interpolare expresiei g (x) = c0 + c1 x + c2 x2 , rezult a sistemul de ecuat ii n metoda clasic a de interpolare: c 0 + 2c 1 + 4c 2 = 5 c + 3c 1 + 9c 2 = 7 0 c0 + 5c1 + 25c2 = 11

(d) Polinoamele Lagrange sunt: l0 ( x) = l1 ( x) = l2 ( x) =

(x 3)(x 5) x2 8x + 15 (x x1 )(x x2 ) = = , (x0 x1 )(x0 x2 ) (2 3)(2 5) 3 (x x0 )(x x2 ) (x 2)(x 5) x2 7x + 10 = = , (x1 x0 )(x1 x2 ) (3 2)(3 5) 2 (x x0 )(x x1 ) (x 2)(x 3) x2 5x + 6 = = . (x2 x0 )(x2 x1 ) (5 2)(5 3) 6

(e) Polinomul de interpolare Lagrange este: g ( x) = y 0 l0 ( x) + y1 l1 ( x) + y2 l2 ( x) = 5 +11 x2 7x + 10 x2 8x + 15 +7 + 3 2

x2 5x + 6 12x + 6 = = 2x + 1. 6 6

142

Capitolul 6. Interpolarea polinomial a a funct iilor reale

Gradul polinomului de interpolare este 1, de si avem 3 noduri n ret eaua de discretizare. Aceasta se explic a prin faptul c a cele trei noduri sunt situate pe dreapta 2x + 1 = y . (f) Tabelul de diferent e divizate este: x x0 = 2 x1 = 3 x2 = 5 y y0 = 5 y1 = 7 f [ x1 , x2 ] = 2 y2 = 11 75 y1 y0 = 2, = x1 x0 32 Diferent ele divizate de ordinul 1, respectiv ordinul 2 sunt: f [ x0 , x1 ] = f [ x1 , x2 ] = ord.1 f [ x0 , x1 ] = 2 f [ x0 , x1 , x2 ] = 0 ord.2

Ultima diferent a divizat a egal a cu zero indic a faptul c a polinomul de interpolare nu este de grad 2. (g) Polinomul de interpolare Newton este: g (x) = y0 + f [x0 , x1 ](x x0 ) + f [x0 , x1 , x2 ](x x0 )(x x1 ) = (h) In punctul x = 4, polinomul de interpolare este: = 5 + 2(x 2) + 0(x 2)(x 3) = 2x + 1. g (4) = 2 4 + 1 = 9. (i) In situat ia n care tabelului de valori i se adaug a un punct, metoda Newton este cea mai avantajoas a metod a deoarece aceasta permite refolosirea calculelor deja efectuate. Tabelul de diferent e divizate se completeaz a cu noua valoare astfel: x 2 3 5 1 y 5 7 2 11
11 4 3 8

11 7 y2 y1 = 2, = x2 x1 53 f [ x1 , x2 ] f [ x0 , x1 ] 22 f [ x0 , x1 , x2 ] = = 0. = x2 x0 52

ord.1 2

ord.2

ord.3

0
3 8

6.8. Exemple

143

Diferent ele divizate care apar prin ad augarea punctului (1, 0) sunt: f [ x2 , x3 ] = f [ x1 , x2 , x3 ] = f [ x0 , x1 , x2 , x3 ] = y3 y2 11 0 11 = , = x3 x2 15 4

3 11/4 2 f [ x2 , x3 ] f [ x1 , x2 ] = , = x3 x1 13 8

f [ x1 , x2 , x3 ] f [ x 0 , x1 , x2 ] 3 3/8 0 = . = x3 x0 12 8

Polinomul de interpolare este: 3 3 h(x) = g (x) + (x 2)(x 3)(x 5) = 2x + 1 + (x3 10x2 + 31x 30) = 8 8 3 15 109 41 = x3 x2 + x . 8 4 8 4 Se observ a ca nu este nevoie ca punctele diviziunii s a e sortate. De asemenea, n cazul aplic arii metodei clasice sau Lagrange, efortul de calcul efectuat anterior s-ar pierdut. 3. Fie funct ia y = f (x) denit a tabelar: x y Se cer: (a) C at este gradul polinomului de interpolare global a? (b) Care sunt condit iile de interpolare? (c) Care este sistemul de ecuat ii asamblat n metoda clasic a de interpolare? (d) Care sunt polinoamele Lagrange asociate diviziunii [1 2 3 5]? (e) Care este polinomul de interpolare Lagrange? (f) Care este tabelul de diferent e divizate? (g) Care este polinomul de interpolare Newton? (h) Care este valoarea funct iei n punctul x = 4? Rezolvare: (a) Deoarece ret eaua de discretizare are 4 noduri, gradul polinomului de interpolare este n = 3. 1 3 2 2 3 4 5 1

144

Capitolul 6. Interpolarea polinomial a a funct iilor reale

(b) Condit iile de interpolare sunt; g (1) = 3, g (2) = 2, g (3) = 4, g (5) = 1. (c) Condit iile de interpolare impuse polinomului g (x) = c0 + c1 x + c2 x2 + c3 x3 conduc la sistemul de ecuat ii n metoda clasic a de interpolare: c 0 + 1 c 1 + 12 c 2 + 13 c 3 c 0 + 2 c 1 + 22 c 2 + 23 c 3 c 0 + 3 c 1 + 32 c 2 + 33 c 3 c + 5 c + 52 c + 53 c 0 1 2 3 l0 ( x) = l1 ( x) = l2 ( x) = l3 ( x) = = = = = 3 2 = 4 1 c0 c0 c0 c0 + c1 + 2c 1 + 3c 1 + 5c 1 + c2 + 4c 2 + 9c 2 + 25c2 + c3 + 8c 3 + 27c3 + 125c3 = = = = 3 2 4 1

(d) Polinoamele Lagrange sunt:

(x x1 )(x x2 )(x x3 ) (x 2)(x 3)(x 5) x3 10x2 + 31x 30 = = , (x0 x1 )(x0 x2 )(x0 x3 ) (1 2)(1 3)(1 5) 8 (x 1)(x 3)(x 5) x3 9x2 + 23x 15 (x x0 )(x x2 )(x x3 ) = = , (x1 x0 )(x1 x2 )(x1 x3 ) (2 1)(2 3)(2 5) 3

(x x0 )(x x1 )(x x3 ) (x 1)(x 2)(x 5) x3 8x2 + 17x 10 = = , (x2 x0 )(x2 x1 )(x2 x3 ) (3 1)(3 2)(3 5) 4 (x x0 )(x x1 )(x x2 ) (x 1)(x 2)(x 3) x3 6x2 + 11x 6 = = . (x3 x0 )(x3 x1 )(x3 x2 ) (5 1)(5 2)(5 3) 24

(e) Polinomul de interpolare Lagrange este: g ( x) = y 0 l0 ( x) + y1 l1 ( x) + y2 l2 ( x) = 3

x3 6x2 + 11x 6 16x3 + 132x2 308x + 264 x3 8x2 + 17x 10 +1 = = +4 4 24 24 2 11 77 = x3 + x2 x + 11. 3 2 6 (f) Tabelul de diferent e divizate este: x x0 = 1 x1 = 2 x2 = 3 x3 = 5 y y0 = 3 y1 = 2 y2 = 4 y3 = 1
3 f [ x2 , x3 ] = 2

x3 10x2 + 31x 30 x3 9x2 + 23x 15 +2 + 8 3

ord.1 f [ x0 , x1 ] = 1 f [ x1 , x2 ] = 2

ord.2

ord.3

f [ x0 , x1 , x2 ] =

3 2

7 f [ x1 , x2 , x3 ] = 6

f [ x 0 , x1 , x2 , x3 ] = 2 3

6.8. Exemple

145

Diferent ele divizate de ordinele 1, 2 si 3 sunt: f [ x0 , x1 ] = y1 y0 23 = = 1, x1 x0 21

y2 y1 42 = = 2, x2 x1 32 14 3 y3 y2 = = , f [ x2 , x3 ] = x3 x2 53 2 f [ x1 , x2 ] f [ x0 , x1 ] 3 2 (1) f [ x0 , x1 , x2 ] = = , = x2 x0 31 2 f [ x1 , x2 ] = f [ x1 , x2 , x3 ] = f [ x0 , x1 , x2 , x3 ] =

(g) Polinomul de interpolare Newton este:

7 3 f [ x1 , x2 , x3 ] f [ x 0 , x1 , x2 ] 2 = 6 2 = . x3 x0 51 3

3 2 f [ x2 , x3 ] f [ x1 , x2 ] 7 = , = 2 x3 x1 52 6

g (x) = y0 + f [x0 , x1 ](x x0 ) + f [x0 , x1 , x2 ](x x0 )(x x1 )+ 2 3 g (x) = 3 + (1)(x 1) + (x 1)(x 2) + 2 3 2 11 77 = x3 + x2 x + 11. 3 2 6 (h) In punctul x = 4, polinomul de interpolare este: 11 77 2 g (4) = 43 + 42 4 + 11 = 5. 3 2 6 +f [x0 , x1 , x2 , x3 ](x x0 )(x x1 )(x x2 ), (x 1)(x 2)(x 3) =

6.8.2

Exemple propuse

1. Fie funct ia y = f (x) denit a tabelar: x y Se cer: (a) C at este gradul polinomului de interpolare global a? (b) Care sunt condit iile de interpolare? (c) Care este sistemul de ecuat ii asamblat n metoda clasic a de interpolare? (d) Care sunt polinoamele Lagrange asociate diviziunii [2 4 5]? 2 1 4 3 5 2

146

Capitolul 6. Interpolarea polinomial a a funct iilor reale

(e) Care este polinomul de interpolare Lagrange? (f) Care este tabelul de diferent e divizate? (g) Care este polinomul de interpolare Newton? (h) Care este valoarea funct iei n punctul x = 3? 2. Fie funct ia y = f (x) denit a tabelar: x y Se cer: (a) C at este gradul polinomului de interpolare global a? (b) Care sunt condit iile de interpolare? (c) Care este sistemul de ecuat ii asamblat n metoda clasic a de interpolare? (d) Care sunt polinoamele Lagrange asociate diviziunii [1 3 5]? (e) Care este polinomul de interpolare Lagrange? (f) Care este tabelul de diferent e divizate? (g) Care este polinomul de interpolare Newton? (h) Care este valoarea funct iei n punctul x = 2? (i) Care este polinomul de interpolare n ipoteza ad aug arii punctului (4, 5) n tabelul de valori? 3. Fie funct ia y = f (x) denit a tabelar: x y Se cer: (a) C at este gradul polinomului de interpolare global a? (b) Care sunt condit iile de interpolare? (c) Care este sistemul de ecuat ii asamblat n metoda clasic a de interpolare? (d) Care sunt polinoamele Lagrange asociate diviziunii [1 3 4 5]? (e) Care este polinomul de interpolare Lagrange? (f) Care este tabelul de diferent e divizate? (g) Care este polinomul de interpolare Newton? (h) Care este valoarea funct iei n punctul x = 2? 1 2 3 3 4 1 5 4 1 4 3 1 5 3

6.9. Intreb ari si probleme

147

6.9

Intreb ari si probleme

1. Evaluat i stabilitatea numeric a a metodei interpol arii polinomiale. 2. Generat i un algoritm de interpolare polinomial a a unei funct ii de dou a variabile f (x, y ). 3. Implementat i ntr-un limbaj de nivel nalt algoritmul de interpolare Newton. 4. Determinat i o aproximare polinomial a pentru caracteristica unei diode semiconducu/vi 6 toare i(u) = Is (e 1), cu Is = 10 A, v = 0, 027 V si analizat i eroarea introdus a prin interpolare. 5. Determinat i o aproximare polinomial a pentru caracteristica de magnetizare B = 0 H + Bs th(H/Bs ), cu 0 = 4 107 H/m, Bs = 1.7 T, = 104 0 si analizat i eroarea introdus a prin interpolare. 6. Analizat i comportarea aproxim arii polinomiale n exteriorul domeniului a x b (problema extrapol arii). 7. Generat i si implementat i un algoritm de interpolare a unei funct ii reale impare si periodice printr-un polinom trigonometric de forma
n

g ( x) =
k=1

ak sin(kt).

8. Documentat i-v a n literatura de specialitate si pe internet ce nseamn a interpolarea polinomial a pe portiuni (de tip spline). 9. Rezolvat i problemele 4 si 5 n mediul MATLAB/SCILAB. 10. Identicat i n biblioteca matematic a descrisa n [2] funct ii avansate pentru interpol ari si aproximari polinomiale, rat ionale si spline. Ce aduc nou aceste funct ii fat a de cea analizat a n lucrare?

148

Capitolul 6. Interpolarea polinomial a a funct iilor reale

Joseph-Louis Lagrange (1736, Sardinia-Piedmont, acum Italia 1813, Frant a

http://www-gap.dcs.st-and.ac.uk/ history/Mathematicians/Lagrange.html

Sir Isaac Newton (1643, Anglia - 1727, Anglia)

http://www-gap.dcs.st-and.ac.uk/ history/Mathematicians/Newton.html

Carle David Tolme Runge (1856, Germania - 1927, Germania)

http://www-gap.dcs.st-and.ac.uk/ history/Mathematicians/Runge.html

Lucrarea 7 Derivarea numeric a a funct iilor reale


7.1 Caracterizarea metodelor de derivare numeric a

Metodele numerice de derivare au o larg a aplicabilitate n inginerie, de exemplu atunci c and expresia analitic a a derivatei funct iei este complicat a si cere un efort mare de evaluare sau atunci c and funct ia are expresia necunoscut a (valorile sunt determinate experimental sau rezult a dintr-un calcul numeric anterior). Aceste metode stau la baza rezolv arii numerice a ecuat iilor diferent iale, foarte put ine din acestea put and rezolvate prin metode analitice. Derivarea numeric a se reduce la calcule aritmetice (adun ari, sc aderi, nmult iri si mp ar tiri), folosind formule relativ simple deduse prin aproximarea funct iei de derivat printr-un polinom de interpolare. In acest fel, din punct de vedere teoretic, problema deriv arii numerice se reduce, practic, la problema interpol arii funct iilor. In lucrare se studiaz a erorile de trunchiere si rotunjire si modul n care acestea depind de ordinul aproxim arii si pasul ret elei de interpolare.

7.2

Principiile metodelor

Problema deriv arii numerice se formuleaz a diferit n urm atoarele dou a cazuri: funct ia este denit a prin cod (este cunoscut a expresia ei analitic a sau algoritmul de evaluare pentru orice punct din domeniul de denit ie); funct ia este denit a prin date (este cunoscut tabelul valorilor funct iei ntr-o ret ea nit a de puncte din domeniul de denit ie, numite noduri). Fie o ret ea de discretizare: 149

150 x: f: x0 , f0 ,

Capitolul 7. Derivarea numeric a a funct iilor reale

x1 , f1 ,

x2 , f2 ,

..., ...,

xn fn

pe care sunt date valorile fk = f (xk ) ale unei funct ii reale f : [x0 , xn ] IR. Dac a se noteaz a cu g : [x0 , xn ] IR o funct ie care interpoleaz a datele anterioare (de exemplu, polinomul de interpolare de gradul n), atunci derivata funct iei f (x) n punctul x poate calculat a aproximativ, evalu and g (x). De exemplu, n cazul n = 1, polinomul de interpolare g ( x) = f 0 are derivata x x1 x x0 + f1 x0 x1 x1 x0 f1 f0 x1 x0 (7.1)

g ( x) = iar n cazul n = 2: g ( x) = f 0

(7.2)

(x x0 )(x x2 ) (x x0 )(x x1 ) (x x1 )(x x2 ) + f1 + f2 (x0 x1 )(x0 x2 ) (x1 x0 )(x1 x2 ) (x2 x0 )(x2 x1 ) 2x ( x 1 + x2 ) 2x ( x 0 + x2 ) 2x ( x 0 + x1 ) g ( x) = f 0 + f1 + f2 (x0 x1 )(x0 x2 ) (x1 x0 )(x1 x2 ) (x2 x0 )(x2 x1 )

(7.3)

Calculele pot continuate pentru grade superioare, prin folosirea polinomului Newton de interpolare. In cazul ret elei de noduri echidistante cu pasul h = xi+1 xi , aceste relat ii cap at a o form a mult mai simpl a: g ( x) = pentru ordinul n = 1 si g ( x) = f 0 pentru n = 2. Polinomul de interpolare de grad doi devine, dup a derivare, o funct ie de gradul nt ai care, n cele trei noduri ale ret elei are valorile: 1 (3f0 + 4f1 f2 ); 2h 1 (f2 f0 ); g ( x1 ) = 2h 1 g ( x2 ) = ( f 0 4f 1 + 3f 2 ) . 2h g ( x0 ) = (7.7) (7.8) (7.9) x ( x0 + h2
3h ) 2

(7.4)

f1 f0 , h x ( x0 + h ) x ( x0 + h ) 2 + f , 2 2 2 h h

(7.5)

2f 1

(7.6)

7.3. Analiza algoritmilor

151

Aceste trei relat ii reprezint a aproxim ari de ordinul doi ale primei derivate, cunoscute sub numele de relat ii cu diferent e nite progresive, centrate si respectiv regresive. Aproxim arile de ordin doi ofer a erori de trunchiere mai mici dec at aproxim arile progresive si regresive de ordinul nt ai: 1 (f1 f0 ); h 1 g ( x1 ) = (f1 f0 ); h g ( x0 ) = obt inute folosind polinomul de gradul n = 1. Se constat a c a pentru aproximarea derivatei ntr-un nod al ret elei de discretizare se folosesc valorile funct iei n nodurile vecine. Cu c at ordinul aproxim arii este mai mare, cu at at sunt utilizate mai multe noduri din vecin atatea iar calculul este mai complicat. Derivatele de ordin superior se pot evalua numeric prin aplicarea recursiv a a formulelor de calcul pentru prima derivat a. De exemplu, folosind succesiv relat ia (7.8) a diferent elor nite centrate de ordinul doi, pentru o discretizare local a cu pasul h/2 si cu notat iile: f (xi + h/2) = fi+1/2 , f (xi h/2) = fi1/2 , se obt ine: f ( xi ) =

(7.10) (7.11)

fi+1/2 fi1/2 2(h/2)

fi+1 fi 2(h/2)

fi fi 1 2(h/2)

fi+1 2fi + fi1 , h2

(7.12)

rezultat care corespunde deriv arii directe a polinomului de interpolare g (x), pentru aproximarea de ordinul doi. Acest rezultat are avantajul unei precizii maxime pentru ret eaua considerat a si pentru trei evalu ari a funct iei f . In cazul unei ret ele neuniforme cu: x1 x0 = h1 , x2 x1 = h2 , rezult a: g (x) = f0 2 2 2 f1 + f2 . h1 (h1 + h2 ) h1 h2 (h1 + h2 )h2 (7.13)

Formulele de derivare numeric a obt inute se pot aplica si n calculul derivatelor part iale. Rezultatele obt inute pentru cazul funct iilor denite tabelar se aplic a si n cazul funct iilor denite prin cod, cu observat ia c a: f i = f ( xi ) si fi+1 = f (xi + h), n care pasul h se alege astfel nc at erorile numerice s a e c at mai mici.

7.3

Analiza algoritmilor

Analiza erorilor Deoarece valoarea exact a a derivatei se obt ine printr-un proces innit de trecere la limit a: f ( x + h ) f ( x) , (7.14) f (x) = lim h 0 h

152

Capitolul 7. Derivarea numeric a a funct iilor reale

evaluarea numeric a este afectat a de o eroare de trunchiere. Teoretic, eroarea de trunchiere este cu at at mai mic a cu c at ordinul aproxim arii este mai mare. In realitate, din cauza fenomenului Runge (evident iat la interpolarea polinomial a), formulele de derivare de ordin superior sunt afectate, n anumite cazuri, de erori mari de trunchiere (mai ales la prelucrarea datelor experimentale). In acest caz se recomand a folosirea relat iilor de ordin mic, cea mai indicat a ind relat ia cu diferent e nite centrate de ordinul doi. Erorile care apar prin folosirea formulelor de derivare numeric a depind de doi factori: pasul de derivare h; gradul polinomului de interpolare n. Pasul de derivare are o valoare optim a, nit a, pentru care eroarea este minim a. In general, eroarea de trunchiere are ordinul O(hn ), deci scade cu mic sorarea pasului h si cre sterea gradului n. Pentru h < hoptim , predomin a eroarea de rotunjire cauzat a de faptul c a sistemul nu poate ret ine dec at un num ar limitat de zecimale. Aceast a eroare cre ste pe m asura sc aderii pasului h, datorit a fenomenului de anulare prin sc adere. Pentru evaluarea erorii de trunchiere se folose ste dezvoltarea n serie Taylor: f ( x1 ) = f ( x0 ) + de unde rezult a: f ( x0 ) = h h2 f (x0 ) + f (z ), 1! 2! (7.15) Pentru h > hoptim , predomin a eroarea de trunchiere, datorat a trunchierii seriei Taylor.

f1 f0 h f (z ) = g (x0 ) + O(h), (7.16) h 2 deci o eroare de trunchiere O(h) pentru relat ia cu diferent e nite de ordinul nt ai. Efort de calcul Timpul de calcul cre ste cu cre sterea ordinului n al aproxim arii, ind necesare n + 1 evalu ari ale funct iei f pentru calculul primei derivate.

Derivatele de ordin superior se pot calcula numeric prin aplicarea recursiv a a formulei de derivare de ordinul nt ai, dar erorile sunt tot mai mari pentru derivatele de ordin superior, gener and importante instabilit a ti numerice.

7.4

Pseudocodul metodei

Metodele de derivare numeric a se transpun u sor n orice limbaj de programare, datorit a simplit a tii formulelor de calcul. Ca date de intrare pentru calculul derivatei funct iei f sunt necesare doar:

7.4. Pseudocodul metodei

153

punctul x0 ( n care se calculeaz a derivata); pasul de derivare h (distant a ntre dou a puncte ale ret elei de noduri). Dac a funct ia este dat a tabelar, datele de intrare trebuie s a e completate cu: tabelul nodurilor ret elei si al valorilor funct iei n aceste noduri. In cazul funct iilor denite prin cod, calculul primei derivate prin metoda diferent elor nite progresive de ordinul 1 se poate face utiliz and pseudocodul urm ator (care determin a automat valoarea optim a a pasului de derivare ): funct ia derivare (x, h) real x real h nrit = 10 err = 1e-20 f0 = f(x) e = err(|f0|+err) k=0 repeta k = k+1 f1 = f(x+h) f2 = f(x+2h) d2 = |f0-2f1+f2|/h2 dac a d2 = 0 atunci h0 = h altfel h0 = sqrt(2e/d2) r = h/h0 h = h0 p an a c and (k > nrit sau ( r df = (f(x+h)-f0)/h ntoarce df ; deriveaz a funct ia f n punctul x, cu pasul init ial h

; ; ; ; ; ;

num arul maxim de iterat ii pentru determinarea pasului optim eroarea relativ a de rotunjire valoarea funct iei n punctul de derivare eroarea absolut a de rotunjire contor iterat ii

; modulul dublei derivate

; pasul optim ; rata de modicare a pasului ; actualizeaz a pasul la valoarea optim a <2 si r > 1/2)) ; derivata progresiv a de ordinul 1

Aplic and funct ia derivare pentru valori negative ale parametrului h, valoarea ntoars a df va derivata regresiv a de ordinul 1. Derivata centrat a se poate calcula ca media aritmetic a a valorilor regresiv a si progresiv a. In cazul funct iilor tabelare, calculul derivatei admite urm atoarea reprezentare n pseudocod:

154

Capitolul 7. Derivarea numeric a a funct iilor reale

procedura derivtab (n, x0, h, f, df); calculeaz a tabelul de derivare a funct iei f, ; dat prin vectorii x si f, n n+1 puncte ntreg n ; dimensiunea tabloului real x0 ; nodul init ial real h ; pasul ret elei tablou real f(n) ; tabloul valorilor funct iei tablou real df(n) ; tabloul valorilor derivatei (date de ie sire) df(0) = (-3f(0) + 4f(1) - f(2))/2h df(n) = (f(n-2) - 4f(n-1) + 3f(n))/2h pentru i = 1, n-1 df(i) = (f(i+1) - f(i-1))/2h retur

7.5

Chestiuni de studiat

1. Evaluarea numeric a a primei derivate; 2. Analiza experimental a a erorii de derivare numeric a; 3. Analiza deriv arii numerice de ordin superior; 4. Implementarea algoritmului; 5. C autare de informat ii pe Internet.

7.6

Modul de lucru

Pentru desf a surarea lucr arii selectat i opt iunea Derivarea numeric a a funct iilor reale din meniul principal de lucr ari. Aceasta are ca urmare lansarea urm atorului meniu: Program demonstrativ Analiza erorilor Derivare de ordin superior

7.6. Modul de lucru

155

7.6.1

Evaluarea numeric a a primei derivate

Se selecteaz a din meniul principal opt iunea Program demonstrativ. Acest program calculeaz a derivatele unor functii denite prin cod si pune n evident a ordinul de m arime a erorilor ce apar, dependent a acestora de modul de interpolare (progresiv a, regresiv a si centrat a), de pasul de derivare (valoare dat a de utilizator si valoare optim a, determinat a de program), de funct ia de derivat si de punctul n care se calculeaz a derivata. Utilizatorul alege: funct ia de derivat; punctul x0 n care se calculeaz a derivata; pasul de derivare h. Funct ia de derivat se poate alege din cele 6 funct ii a sate: x2 x ex ln(x) sin(x) tg(x) Programul a seaz a valoarea exact a a derivatei si valorile aproximative calculate prin diferite metode si erorile absolute (de rotunjire si de trunchiere). Se vor comenta rezultatele obt inute si se va studia ecient a algoritmului de optimizare a pasului.

7.6.2

Analiza experimental a a erorii de derivare numeric a

Se selecteaz a opt iunea Analiza erorilor din meniul principal. Programul ilustreaz a dependent a erorii de pasul de derivare folosit si evident iaz a ponderile celor dou a tipuri de erori (de rotunjire si de trunchiere). Se folosesc succesiv formulele diferent elor nite centrate de ordin 2, 4, respectiv 6, pentru calculul derivatei funct iei sinus n punctul /4. Se poate observa, astfel, si dependent a

156

Capitolul 7. Derivarea numeric a a funct iilor reale

ordinului de m arime al erorilor de ordinul polinomului de interpolare. Gracele sunt a ste n scar a dublu-logaritmic a, pentru a se putea vizualiza n am anunt tot intervalul activ al variat iei erorilor. Dup a a sarea unui grac, n consola Scilab se a seaz a eroarea minim a si pasul pentru care este obt inut a. Se va estima din grac valorea pasului optim si ordinul erorii de trunchiere n funct ie de pasul de derivare. Se vor analiza si comenta rezultatele obt inute.

7.6.3

Analiza deriv arii numerice de ordin superior

Se selecteaz a opt iunea Derivare de ordin superior. Programul calculeaz a si reprezint a grac derivatele succesive de ordin superior ale funct iei exponent iale exp(x), denite pe intervalul [Xmin, Xmax]. Se a seaz a de ecare dat a si gracul 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 arul de noduri. Programul evalueaz a derivatele n punctele interioare ale ret elei cu metoda diferent elor nite centrate de ordinul 2, iar pentru punctele periferice folose ste metoda diferent elor nite progresive respectiv regresive de ordinul 3. Se recomand a analiza propag arii erorilor la calculul p an a la ordinul 5, pe o ret ea cu 100 de noduri ce discretizeaz a intervalul [0, 10], precum si intervalul [0, 1]. Se vor comenta comparativ rezultatele obt inute.

7.6.4

Implementarea algoritmului

Se va scrie, n limbajul de programare C, o funct ie care s a permit a calculul numeric al derivatei nt ai, prin metoda diferent elor nite centrate pentru f ( x) = x2 ln(x). sin(x)

Folosind aceast a funct ie, se va scrie apoi un program care s a aib a ca date de intrare pasul de derivare si punctul n care se calculeaz a derivata si care s a a seze valorile numerice ale derivatei.

7.7. Exemple

157

7.6.5

C autare de informat ii pe Internet

C autat i pe Internet informat ii si coduri legate de derivarea numeric a a funct iilor. Cuvinte cheie recomandate: numerical derivative.

7.7
7.7.1

Exemple
Exemple rezolvate

1. Fie funct ia y = f (x) denit a tabelar: x y 1 2 2 1 3 3 4 5

S a se determine derivata funct iei n nodurile ret elei de discretizare utiliz and diferent ele nite astfel: formulele progresiv a si regresiv a de ordinul nt ai pentru primul si respectiv ultimul nod, formula centrat a de ordinul doi pentru nodurile interioare. Rezolvare: Ret eaua de discretizare este uniform a cu pasul h = x1 x0 = 2 1 = 1. Derivata progresiv a (7.10) si derivata regresiv a (7.11) de ordinul nt ai n primul nod si respectiv ultimul nod sunt:
y0 =

12 y1 y0 = = 1, h 1 y3 y2 53 = = 2. h 1

y3 =

Derivatele centrate de ordinul doi (7.8) n nodurile interioare sunt:


y1 =

y2 y0 32 1 = = , 2h 2 2 51 y3 y1 = = 2. 2h 2

y2 =

2. Fie funct ia y = f (x) denit a tabelar: x y 1 4 3 7 5 10

158

Capitolul 7. Derivarea numeric a a funct iilor reale

S a se determine derivata funct iei n nodurile ret elei de discretizare utiliz and diferent ele nite astfel: formulele progresiv a si regresiv a de ordinul nt ai pentru primul si respectiv ultimul nod, formula centrat a de ordinul doi pentru nodul interior. Rezolvare: Derivata progresiv a (7.10) si derivata regresiv a (7.11) de ordinul nt ai n primul nod si respectiv ultimul nod sunt: 74 3 y1 y0 = = , h 2 2 10 7 3 y2 y1 y2 = = = . h 2 2
y0 =

Ret eaua de discretizare este uniform a cu pasul h = x1 x0 = 3 1 = 2.

Derivata centrat a de ordinul doi (7.8) n nodul interior este:


y1 =

y2 y0 10 4 3 = = . 2h 4 2

Cele trei derivate sunt egale deoarece punctele din tabel sunt plasate pe o dreapt a. 3. Fie funct ia y = f (x) denit a tabelar: x y 1 3 3 1 5 2 7 4 9 1

S a se determine derivata funct iei n nodurile ret elei de discretizare utiliz and diferent ele nite astfel: formulele progresiv a si regresiv a de ordinul doi pentru primul si respectiv ultimul nod, formula centrat a de ordinul doi pentru nodurile interioare. Rezolvare: Ret eaua de discretizare este uniform a cu pasul h = x1 x0 = 3 1 = 2. Derivata progresiv a (7.7) si derivata regresiv a (7.9) de ordinul doi n primul nod si respectiv ultimul nod sunt:
y0 =

3y0 + 4y1 y2 9 + 4 2 7 = = , 2h 4 4 2 16 + 3 11 y2 4y3 + 3y 4 = = . y4 = 2h 4 4 y2 y0 23 1 = = , 2h 4 4 41 3 y3 y1 = = , y2 = 2h 4 4 y y 1 2 1 4 2 y3 = = = . 2h 4 4


y1 =

Derivatele centrate de ordinul doi (7.8) n nodurile interioare sunt:

7.8. Probleme si ntreb ari

159

4. S a se estimeze ordinul de m arime al pasului de derivare optim pentru evaluarea numeric a a derivatei funct iei sin x cu o formul a de derivare progresiv a de ordinul 1. Rezolvare: Formula de calcul a pasului optim este: hoptim = 2 0 M0 . M2

In cazul funct iei sinus, M0 = M2 = 1. Consider and 0 = 1016 , rezult a un pas de 8 derivare optim de ordinul hoptim = 2 10 .

7.7.2

Exemple propuse

1. Fie funct ia y = f (x) denit a tabelar: x y 1 1 3 2 5 4 7 1

S a se determine derivata funct iei n nodurile ret elei de discretizare utiliz and diferent ele nite astfel: formulele progresiv a si regresiv a de ordinul nt ai pentru primul si respectiv ultimul nod, formula centrat a de ordinul doi pentru nodurile interioare. 2. Fie funct ia y = f (x) denit a tabelar: x y 1 1 2 4 3 2 4 3 5 5

S a se determine derivata funct iei n nodurile ret elei de discretizare utiliz and diferent ele nite astfel: formulele progresiv a si regresiv a de ordinul doi pentru primul si respectiv ultimul nod, formula centrat a de ordinul doi pentru nodurile interioare.

7.8

Probleme si ntreb ari

1. Deducet i formulele aproximative ale derivatelor centrate p an a la ordinul 4. 2. Determinat i expresia Laplaceanului funct iei f (x, y ), folosind diferent ele nite centrate de ordinul 2. Calculat i valoarea Laplaceanului n punctul x = 1, y = 1, pentru funct ia: f (x, y ) = x3 y 3 folosind formula obt inut a si evaluat i eroarea.

160

Capitolul 7. Derivarea numeric a a funct iilor reale

3. Determinat i expresiile aproximative centrate de ordinul 2 ale derivatelor nt ai si a doua, n cazul n care pasul de derivare nu este constant. Se vor folosi notat iile: x(i) x(i 1) = h

x(i + k ) x(i) = kh n care se presupun cunoscute: h, k, f (x(i 1)), f (x(i)), f (x(i + k )). 4. Deducet i ordinul de m arime al erorii maxime n cazul aproxim arii centrate, progresive si regresive de ordin n. 5. Evaluat i ordinul erorii de rotunjire la metodele diferent elor nite de ordinul 1 si ordinul 2. Analizat i dependent a acestor erori de pasul h. 6. Argumentat i algoritmul pentru determinarea pasului optim, folosit n funct ia derivare, prezentat a n pseudocod. 7. Generat i un algoritm pentru determinarea pasului optim la diferent e centrate. 8. Generat i un algoritm pentru derivarea funct iilor denite tabelar pe ret ele neuniforme.

Lucrarea 8 Integrarea numeric a a funct iilor reale


8.1 Caracterizarea metodelor de integrare numeric a

Integrarea numeric a se aplic a funct iilor care nu pot integrate analitic (sau ar necesita calcule complicate) sau n cazul funct iilor date tabelar, de exemplu cele rezultate experimental. In general, metodele de integrare numeric a se bazeaz a pe aproximarea funct iei de integrat prin functii mai simple, a c aror integral a se poate evalua u sor. O metod a de aproximare frecvent utilizat a n cadrul integralelor este metoda interpol arii polinomiale pe port iuni. Spre deosebire de derivarea numeric a, integrarea este o operat ie relativ stabil a numeric, dar mai lent a, din cauza num arului sporit de calcule care trebuie efectuate.

8.2

Principiul metodei

Se consider a funct ia real a f : [a, b] IR, denit a prin cod sau tabelar, ntr-o ret ea de n + 1 noduri: x0 , x1 , . . . xn . Se formuleaz a problema calculului integralei:
b

I=
a

f (x) dx.

(8.1)

Metoda trapezelor Este una dintre cele mai simple metode de integrare numeric a, cu rezultate bune n aplicat iile inginere sti. Pe o ret ea de n + 1 noduri echidistante, pasul ret elei are valoarea xn x0 . h= n 161

(8.2)

162

Capitolul 8. Integrarea numeric a a funct iilor reale

Metoda se bazeaz a pe aproximarea variat iei funct iei de integrat ntre dou a noduri succesive ale ret elei printr-un polinom de gradul nt ai (o dreapt a). Aceasta echivaleaz a cu aproximarea ariei sub ntinse de gracul funct iei ntre dou a noduri succesive (i si i + 1), cu aria trapezului sprijinit de axa Ox, determinat de abscisele xi , xi+1 si ordonatele f (xi ) si f (xi+1 ). Prin nsumarea ariilor tuturor trapezelor de acest fel care se formeaz a ntre punctele a si b, se obt ine valoarea aproximativ a a integralei denite a lui f , ntre aceste puncte. Aria unui trapez este Ii = h(f (xi ) + f (xi+1 )) . 2 (8.3)

Rezult a, prin nsumare pentru i = 0, . . . , n 1, formula de integrare prin metoda trapezelor:


b

I=
a

f ( x) d x

h (f (x0 ) + 2f (x1 ) + . . . + 2f (xn1 ) + f (xn )). 2

(8.4)

Metoda Simpson 1/3 Se aproximeaz a variat ia funct iei de integrat ntre trei noduri succesive (i 1, i, i + 1), printr-un polinom de interpolare de gradul doi: P (x) = a0 + a1 x + a2 x2 (o parabol a). Presupun and aceea si ret ea de n + 1 noduri echidistante, dar cu n par, si consider and originea n punctul xi , se poate scrie: f ( x i 1 ) = P ( h ) = a 0 a1 h + a 2 h 2 , f (xi ) = P (0) = a0 , f (xi+1 = P (h) = a0 + a1 h + a2 h . A sadar, se aproximeaz a aria sub ntins a de funct ia de integrat ntre punctele xi1 si xi+1 cu aria sub ntins a de parabola P dintre punctele h si h :
h h 2

(8.5)

Ii =
h

P ( x) d x =
h

(a0 + a1 x + a2 x2 ) dx = 2ha0 + 2

h3 a2 . 3

(8.6)

Din condit iile de interpolare se calculeaz a: a0 = f (xi ); f (xi1 ) 2f (xi ) + f (xi+1 ) a2 = 2h 2 necesare n evaluarea integralei Ii = h(f (xi1 ) + 4f (xi ) + f (xi+1 )) . 3 (8.9) (8.7) (8.8)

8.2. Principiul metodei

163

Insum and toate ariile Ii , pentru i = 1, 3, 5, . . . , n 1, rezult a


b

I=
a

f ( x) d x

h (f (x0 ) + 4f (x1 ) + 2f (x2 ) + 4f (x3 ) + + f (xn )), 3

(8.10)

cunoscut a sub numele de Formula lui Simpson 1/3. Integrarea Romberg Valoarea numeric a a integralei depinde de pasul de integrare h, eroarea de trunchiere sc az and cu mic sorarea pasului h. Se noteaz a cu I0 valoarea exact a a integralei si cu I = I (h) valoarea ei numeric a. Deoarece funct ia I (h) este par a (trapezele obt inute pornind din a cu pasul h sunt acelea si cu cele obt inute pornind din b cu pasul h), prin dezvoltarea ei in serie Taylor n jurul lui 0 se obt ine, n cazul metodei trapezelor: I = I 0 + a0 h 2 + a1 h 4 + a2 h 6 + . . . (8.11)

Ret in and din aceast a serie numai doi termeni, se obt in pentru dou a valori diferite h1 si h2 ale pasului de integrare: I 1 = I 0 + a0 h 2 1; I 2 = I 0 + a0 h 2 2. Din cele dou a ecuat ii rezult a urm atoarea aproximare pentru valoarea exact a a integralei: I0 =
2 h2 2 I1 h1 I2 , 2 h2 2 h1

(8.12)

cunoscut a sub numele de formula de integrare Romberg. Reduc and succesiv valoarea lui h: h1 > h2 > h3 > . . . > hk . . . , se obt in valorile integralei numerice: h2 Ik h2 k Ik+1 , k = 1, 2, . . . , (8.13) I0k = k+12 hk+1 h2 k care au precizie din ce n ce mai bun a. Formula lui Romberg se simplic a, dac a la ecare iterat ie se njum at a te ste pasul de integrare (hk+1 = hk /2): 4Ik+1 Ik I0k = . (8.14) 3 Valorile numerice ale integralelor I01 , I02 , I03 ,. . . , calculate pe ret ele tot mai ne, pot folosite pentru calculul unei valori numerice de precizie ridicat a, prin aplicarea recursiv a a formulei Romberg: Nr. intervale: n 2n I02 4n . . . I03 . . .

Met. trapezelor: I01

164
4I02 I01 3 16I12 I11 15

Capitolul 8. Integrarea numeric a a funct iilor reale

Romberg ord. 1: I11 = Romberg ord. 2: I21 =

I12 = ...

4I03 I02 3

...

In general, formula lui Romberg de ordinul k pentru njum at a tirea pasului este Imk = 4m Im1,k+1 Im1,k , 4m 1 (8.15)

cu k = 1, 2, . . . si m = 1, 2, . . .. Iterat iile se pot opri pentru acel ordin m, la care eroarea relativ a Imk Im1,k Imk este mai mic a dec at o valoare impus a.

8.3

Pseudocodul algoritmilor

In cazul funct iilor denite prin cod, metoda trapezelor are urm atorul pseudocod: funct ia trapez (a, b, n) ; ; ; ; calculeaz a integrala denit aa funct iei f in intervalul [a, b], discretizat in n subintervale egale

real a, b ntreg n h = (b a)/n rezultat = 0 pentru k = 1, n 1 rezultat = rezultat+f (a + kh) rezultat=(2 rezultat +f (a) + f (b)) h/2 ntoarce rezultat

Pseudocodul metodei Simpson, pentru funct iile denite tabelar, are forma: cite ste a, b cite ste n pentru k = 0, n cite ste yk h = (b a)/n rezultat = 0 ; limitele de integrare ; trebuie s a e par ; valorile funct iei n nodurile ret elei

8.4. Analiza algoritmilor

165

pentru k = 1, n 1, 2 rezultat = rezultat +yk1 + 4yk + yk+1 rezultat = rezultat h/3 scrie rezultat

Pseudocodul metodei Romberg este: cite ste a, b cite ste n cite ste eps

; num arul init ial al subintervalelor de integrare ; diferent a maxim a dintre rezultatele ; iterat iilor succesive

rezultat nou = trapez (a, b, n) repet a rezultat vechi = rezultat nou n = 2n rezultat nou = trapez (a, b, n) rezultat = (4 rezultat nou - rezultat vechi)/3 pan a c and (|rezultat - rezultat vechi|) <eps scrie rezultat

8.4

Analiza algoritmilor

Analiza erorilor In cazul integr arii numerice, se pot deni dou a tipuri de erori: eroarea local a, care apare prin aproximarea ariei sub ntinse pe un interval elementar (de lungime h, respectiv 2h) cu aria elementar a specic a metodei: aria trapezului (la metoda trapezelor), respectiv aria sub ntins a de parabol a (la metoda Simpson). eroarea global a, care apare prin aproximarea integralei cu suma ariilor elementare. La metoda trapezelor, eroarea local a are ordinul O(h3 ), iar n cazul metodei Simpson 5 ea are ordinul O(h ). Eroarea global a este mai mare dec at eroarea local a, av and ordinul 2 4 O(h ) respectiv O(h ). Efort de calcul Timpul de calcul depinde de num arul de noduri din ret eaua de discretizare, av and ordinul liniar O(n), at at n cazul metodei trapezelor c at si n cazul metodei Simpson.

166

Capitolul 8. Integrarea numeric a a funct iilor reale

Metoda trapezelor e mai exibil a, deoarece folose ste o ret ea cu num ar oarecare de noduri, spre deosebire de metoda Simpson, care necesit a un num ar impar de noduri. Aceasta din urm a este ns a mai precis a. Metoda Romberg este cea mai exact a, dar si cea mai lent a, necesit and un num ar relativ mic de iterat ii, ns a la ecare iterat ie ret eaua de noduri se ndese ste de dou a ori.

8.5

Chestiuni de studiat

1. Calculul numeric al integralei denite, pentru c ateva funct ii elementare; 2. Analiza experimental a a erorii la integrarea numeric a; 3. Implementarea algoritmului; 4. C autarea de informat ii pe Internet.

8.6

Modul de lucru

Pentru desf a surarea lucr arii se selecteaz a lucrarea Integrarea numeric a a funct iilor reale din meniul general de lucr ari. Aceasta are ca efect a sarea meniului: 1. Program demonstrativ 2. Analiza erorilor

8.6.1

Calculul integralei unor funct ii elementare

In urma select arii opt iunii Program demonstrativ, se poate alege una din funct iile: x2 x ex ln(x) sin(x) tg (x)

8.6. Modul de lucru

167

Dup a alegerea unei funct ii, utilizatorul trebuie s a introduc a: limitele inferioar a si superioar a ale intervalului de integrare; num arul subintervalelor n care se mparte intervalul de integrare. Dup a efectuarea calculelor, se traseaz a gracul funct iei pe domeniul de integrare, pun andu-se n evident a trapezele corespunz atoare acestui domeniu. In consola Scilab se a seaz a rezultatele: valoarea exact a a integralei denite; valoarea aproximativ a si modulul erorii absolute. Se vor comenta rezultatele obt inute.

8.6.2

Analiza erorii la integrarea numeric a

Se selecteaz a Analiza erorilor din meniul principal al lucr arii. Programul ilustreaz a grac dependent a modulului erorilor absolute de pasul de integrare h. Se folosesc, pe r and, metodele: trapezelor Simpson Romberg cu 2 iterat ii Romberg cu 3 iterat ii pentru calculul integralei funct iei sinus ntre punctele 0 si . Se vor analiza si comenta rezultatele obt inute. Se va estima ordinul erorii de trunchiere pentru toate cele patru cazuri.

8.6.3

Implementarea algoritmului

Se va scrie n limbajul de programare C, un program care s a permita calculul integralei 2 denite a funct iei f (x) = x sin(x), folosind metoda Simpson 1/3. Datele de intrare ale programului vor cele dou a limite de integrare.

168

Capitolul 8. Integrarea numeric a a funct iilor reale

8.6.4

C autare de informat ii pe Internet

Se vor c auta pe Internet informat ii (coduri) legate de integrarea numeric a a funct iilor. Cuvinte cheie recomandate: Numerical Integration, Numerical Quadrature, Gauss Quadrature.

8.7
8.7.1

Exemple
Exemple rezolvate

1. Fie funct ia f : [1, 5] IR, y = f (x), denit a tabelar: x y Se cer: (a) Reprezentat i grac interpolarea liniar a pe port iuni a acestor date. (b) C ate trapeze se consider a n urma aplic arii metodei trapezelor pentru determinarea integralei funct iei f (x) pe intervalul [1, 5]? Indicat i grac aceste trapeze pe gura de la punctul precedent. (c) Ret eaua de discretizare a domeniului de denit ie a funct iei f (x) este neuniform a?
5

1 2

2 1

4 3

5 5

(d) S a se determine integrala I =


1 5

f (x) dx prin metoda trapezelor.

(e) Se poate aplica metoda Simpson 1/3? Dac a r aspunsul este armativ, s a se determine I =
1

f (x) dx prin aceast a metod a.

Rezolvare: (a) In gura 9 este reprezentat a grac interpolarea liniar a pe port iuni a funct iei y = f (x). (b) Funct ia f (x) este cunoscut a n 4 puncte (3 segmente). Astfel, num arul de trapeze considerat este 3. Cele trei trapeze sunt ha surate diferit n gura 9. (c) O ret ea de discretizare xk , k = 0, n este uniform a dac a pasul de discretizare corespunz ator unui segment, hk = xk xk1 , k = 1, n, este constant, indiferent de segmentul k considerat. In cazul acestui exemplu, avem: h 1 = x1 x0 = 2 1 = 1,

8.7. Exemple

169

y 5 4 3 2 1 0

00 11 111 000 1 0 00 11 00 11 000 111 00 11 00 11 000 111 00 11 00 11 000 111 00 11 00 11 000 111 0000 1111 1 0 00000 11111 00000 11111 000 111 0000 1111 00000 11111 00000 11111 000 111 00 11 000 111 0000 1111 1 0 00000 11111 000 111 00000 11111 00 11 000 111 000 111 0000 1111 00000 11111 000 111 00 11 00000 11111 00 11 000 111 000 111 0000 1111 00 11 000 111 00 11 000 111 0000 1111 001111 11 000 111 0000 0000 1111 2 3 4 1 5

Fig. 9. Interpolarea liniar a pe port iuni a funct iei f h 2 = x2 x1 = 4 2 = 2, h 3 = x3 x2 = 5 4 = 1. Deoarece pasul nu este constant pe ntreg domeniul de denit ie, ret eaua de discretizare este neuniform a. (d) Aria primului trapez (8.3) este: I0 = 2+1 3 y0 + y1 ( x1 x0 ) = (2 1) = . 2 2 2

In mod similar se determin a ariile celorlalte dou a trapeze: I1 = I2 = y1 + y2 1+3 ( x2 x1 ) = (4 2) = 4, 2 2

y2 + y3 3+5 ( x3 x2 ) = (5 4) = 4. 2 2 Integrala prin metoda trapezelor se obt ine prin nsumarea ariilor trapezelor:
5

I=
1

f ( x) d x = I 0 + I 1 + I 2 =

19 3 +4+4= . 2 2

(e) Metoda Simpson 1/3 se poate aplica numai c and num arul de noduri este impar. Pentru cazul dat, num arul de noduri este 4, si n consecint a, metoda Simpson 1/3 nu se poate aplica. 2. Fie funct ia f : [1, 5] IR, y = f (x), denit a tabelar:

170

Capitolul 8. Integrarea numeric a a funct iilor reale

y 5 4 3 2 1 0

111 000 0000 1111 00 11 00 11 1 0 00 11 00 11 000 111 0000 1111 00 11 00 11 00111 11 00 11 000 111 000 0000 1111 00 11 00 11 1 0 000 00111 11 00 11 000 111 000 111 000 111 0000 1111 00 11 00 11 000 111 00 11 00 11 000 111 000 111 000 111 0000 1111 11 00 11 00 00 11 000 111 00 11 000 111 1 0 000 111 0000 1111 00 11 00 11 000 111 00 11 000 111 000 111 0000 1111 00 11 1 0 000 111 00 11 00 11 000 111 000 111 000 111 0000 1111 00 11 000 111 00 11 00 11 000 111 000 111 000 111 0000 1111 1 0 00 11 000 111 00 11 000 111 000 111 0000 1111 00 11 000 111 000 111 0000 1111
1 2 3 4 5

Fig. 10. Interpolarea liniar a pe port iuni a funct iei f

x y Se cer:

1 2

2 1

3 5

4 3

5 4

(a) Reprezentat i grac interpolarea liniar a pe port iuni a acestor date. (b) C ate trapeze se consider a n urma aplic arii metodei trapezelor pentru determinarea integralei funct iei f (x) pe intervalul [1, 5]? Indicat i grac aceste trapeze pe gura de la punctul precedent. (c) Ret eaua de discretizare a domeniului de denit ie a funct iei f (x) este neuniform a?
5

(d) S a se determine integrala I =


1 5

f (x) dx prin metoda trapezelor.

(e) Se poate aplica metoda Simpson 1/3? Dac a r aspunsul este armativ, s a se determine I =
1

f (x) dx prin aceast a metod a.

Rezolvare: (a) In gura 10 este reprezentat a grac interpolarea liniar a pe port iuni a funct iei y = f (x). (b) Deoarece gridul de discretizare al domeniului de denit ie cont ine 5 puncte, determin and o mp art ire n 4 segmente, num arul de trapeze considerat este 4. Trapezele sunt ha surate diferit n gura 10.

8.7. Exemple

171

(c) Se observ a c a pasul de discretizare corespunz ator ec arui segment este constant pe ntreg domeniul de denit ie, h = 1. Din acest motiv, ret eaua este uniform a. (d) Deoarece pasul este constant, se poate aplica direct formula simplicat a pentru ret ea uniform a a metodei trapezelor (8.4):
5

I=
1

f (x) dx =

h 1 (y0 + 2y1 + 2y2 + 2y3 + y4 ) = (2 + 2 1 + 2 5 + 2 3 + 4) = 12. 2 2

Alternativ, se pot nsuma cele 4 arii ale trapezelor pentru determinarea integralei numerice. (e) Metoda Simpson 1/3 se poate aplica deoarece num arul de noduri este impar (5). Deoarece ret eaua de discretizare este uniform a, se aplic a formula (8.10):
5

I=
1

f (x) dx =

h 1 32 (y0 +4y1 +2y2 +4y3 + y4 ) = (2+4 1+2 5+4 3+4) = . 3 3 3

3. Fie funct ia f : [1, 11] IR, y = f (x), denit a tabelar: x y Se cer: (a) C ate trapeze se consider a n urma aplic arii metodei trapezelor pentru determinarea integralei funct iei f (x) pe intervalul [1, 11]? (b) Ret eaua de discretizare a domeniului de denit ie a funct iei f (x) este neuniform a?
1

1 2

3 3

5 4

6 1

7 5

9 2

11 3

(c) S a se determine integrala I =


1 1

1f (x) dx prin metoda trapezelor.

(d) Se poate aplica metoda Simpson 1/3? Dac a r aspunsul este armativ, s a se determine I =
1

1f (x) dx prin aceast a metod a

Rezolvare: (a) Funct ia f (x) este cunoscut a n 7 puncte. Acestea determin a 6 segmente, care discretizeaz a domeniul de denit ie [1, 11]. Num arul de trapeze considerat este 6, egal cu num arul de segmente.

172

Capitolul 8. Integrarea numeric a a funct iilor reale

(b) Se observ a c a pasul de discretizare nu este constant pe ecare segment: h 1 = x1 x0 = 3 1 = 2, h 3 = x3 x2 = 6 5 = 1. Astfel, ret eaua de discretizare este neuniform a. (c) Integrala prin metoda trapezelor, pentru o ret ea neuniform a, se determin a prin nsumarea ariilor trapezelor:
11

I=
1

f (x) dx =

y1 + y2 y2 + y3 y0 + y1 ( x1 x0 ) + ( x2 x1 ) + (x3 x2 )+ 2 2 2

y3 + y4 y4 + y5 y5 + y6 ( x4 x3 ) + ( x5 x4 ) + ( x6 x5 ) = 2 2 2 3+4 4+1 1+5 2+3 (3 1) + (5 3) + (6 5) + (7 6)+ = 2 2 2 2 2+3 5 59 5+2 (9 7) + (11 9) = 5 + 7 + + 3 + 7 + 5 = . + 2 2 2 2

(d) Metoda Simpson 1/3 se poate aplica deoarece num arul de noduri este impar (7). Ret eaua este neuniform a, astfel integrala prin metoda Simpson 1/3 se determin a prin nsumarea ariilor suprafet elor sub ntinse de parabolele care trec prin trei noduri consecutive (8.9). In total, sunt trei parabole: [x0 , x1 , x2 ] (pasul este 2), [x2 , x3 , x4 ] (pasul este 1), [x4 , x5 , x6 ] (pasul este 2). I1 = I3 = h1 2 (y0 + 4y1 + y2 ) = (2 + 4 3 + 4) = 12, 3 3 1 (4 + 4 1 + 5) = 3 2 (5 + 4 2 + 3) = 3 13 , 3 32 . 3

h3 ( y2 + 4y3 + y4 ) = 3 h5 I 5 = ( y4 + 4y5 + y6 ) = 3
11

I=
1

f (x) dx = I1 + I3 + I5 = 12 +

13 32 + = 27. 3 3

8.7.2

Exemple propuse

1. Fie funct ia f : [1, 6] IR, y = f (x), denit a tabelar: x y Se cer: 1 1 2 3 4 2 6 4

8.7. Exemple

173

(a) Reprezentat i grac interpolarea liniar a pe port iuni a acestor date. (b) C ate trapeze se consider a n urma aplic arii metodei trapezelor pentru determinarea integralei funct iei f (x) pe intervalul [1, 6]? Indicat i grac aceste trapeze pe gura de la punctul precedent. (c) Ret eaua de discretizare a domeniului de denit ie a funct iei f (x) este neuniform a?
6

(d) S a se determine integrala I =


1 6

f (x) dx prin metoda trapezelor.

(e) Se poate aplica metoda Simpson 1/3? Dac a r aspunsul este armativ, s a se determine I =
1

f (x) dx prin aceast a metod a.

2. Fie funct ia f : [1, 13] IR, y = f (x), denit a tabelar: x y Se cer: (a) Reprezentat i grac interpolarea liniar a pe port iuni a acestor date. (b) C ate trapeze se consider a n urma aplic arii metodei trapezelor pentru determinarea integralei funct iei f (x) pe intervalul [1, 13]? Indicat i grac aceste trapeze pe gura de la punctul precedent. (c) Ret eaua de discretizare a domeniului de denit ie a funct iei f (x) este neuniform a?
13

1 1

3 4

5 2

7 3

9 1

11 2

13 5

(d) S a se determine integrala I =


1 13

f (x) dx prin metoda trapezelor.

(e) Se poate aplica metoda Simpson 1/3? Dac a r aspunsul este armativ, s a se determine I =
1

f (x) dx prin aceast a metod a.

3. Fie funct ia f : [1, 7] IR, y = f (x), denit a tabelar: x y Se cer: (a) Reprezentat i grac interpolarea liniar a pe port iuni a acestor date. (b) C ate trapeze se consider a n urma aplic arii metodei trapezelor pentru determinarea integralei funct iei f (x) pe intervalul [1, 7]? Indicat i grac aceste trapeze pe gura de la punctul precedent. 1 3 2 1 3 2 5 3 7 4

174

Capitolul 8. Integrarea numeric a a funct iilor reale

(c) Ret eaua de discretizare a domeniului de denit ie a funct iei f (x) este neuniform a?
7

(d) S a se determine integrala I =


1 7

f (x) dx prin metoda trapezelor.

(e) Se poate aplica metoda Simpson 1/3? Dac a r aspunsul este armativ, s a se determine I =
1

f (x) dx prin aceast a metod a.

8.8

Probleme si ntreb ari

1. Generat i algoritmul metodei dreptunghiurilor, bazat pe aproximarea funct iei de integrat printr-o funct ie scar a. Comparat i precizia acestei metode cu metoda trapezelor. Analizat i cazul unei funct ii la care derivata a doua si p astreaz a semnul pe intervalul de integrare. 2. Generat i algoritmul metodei trapezelor pentru o funct ie denit a tabelar, pe o ret ea cu pas variabil. Aplicati algoritmul pentru datele de mai jos: x y 1 5 7 13 9 15

3. Demonstrat i expresia ordinului erorii locale la metoda trapezelor. 4. Calculat i integrala urm atoare, folosind metoda trapezelor si h x = h y = 1 :
3 2

I=
0 0

xy d xd y.

Comparat i cu rezultatul exact. 5. Obt inet i formula Simpson 3/8, folosind un polinom de interpolare de ordinul 3. Ce restrict ie trebuie s a ndeplineasc a num arul de subintervale al ret elei de discretizare? 6. Generat i un algoritm de integrare numeric a, bazat pe interpolarea spline a funct iei de integrat. 7. Generat i un algoritm de integrare numeric a, bazat pe pseudocodul metodei Simpson, dedicat funct iilor denite prin cod. Modicat i acest algoritm astfel nc at s a e efectuat un num ar minim de evalu ari. 8. Generat i un algoritm pentru calculul integralei duble: f (x, y ) dxdy pe un dreptunghi discretizat cu o ret ea cu doi pa si constant i hx si respectiv hy .

8.8. Probleme si ntreb ari

175

9. Generat i un algoritm (metoda de integrare Gauss), bazat pe aproximarea


1

f (x) dx = 0 f (x0 ) + 1 f (x1 ) + 2 f (x2 ).


1

Aleget i ponderile 0 , 1 , 2 si nodurile x0 , x1 , x2 n mod optim, astfel nc at eroarea s a e minim a. Demonstrat i c a pentru: x1 = 0, x2 = x0 = 3/5 si 1 = 8/9, 0 = 2 = 5/9 formula anterioar a este exact a dac a f (x) este un polinom de gradul 5. 10. Generat i un algoritm de integrare numeric a prin metoda trapezelor, la care ret eaua de noduri este adaptat a funct iei. Pornind de la o ret ea cu pas constant se vor mbun at a ti succesiv acele subintervale pentru care eroarea local a de trunchiere e= h2 2 f (z ) , 12 z 2 (8.16)

cu z n subinterval, este maxim a. Procesul de ranare a ret elei va continua p an a c and eroarea total a de trunchiere scade sub o limit a impus a. 11. Calculat i numeric integrala denit a a unor funct ii date prin expresiile lor analitice n mediul MATLAB/SCILAB. 12. Identicat i n biblioteca matematic a descris a n [2] funct ii avansate pentru integrarea numeric a. Ce aduc nou aceste funct ii fat a de cele analizate n lucrare?

176

Capitolul 8. Integrarea numeric a a funct iilor reale

Thomas Simpson (1710, Anglia - 1761, Anglia)

http://www-gap.dcs.st-and.ac.uk/ history/Mathematicians/Simpson.html

Lewis Fry Richardson (1881, Anglia - 1953, Scot ia)

http://www-gap.dcs.st-and.ac.uk/ history/Mathematicians/Richardson.html

Lucrarea 9 Rezolvarea numeric a prin metode iterative a ecuat iilor neliniare


9.1 Caracterizarea lucr arii

Rezolvarea numeric a a unei ecuat ii algebrice neliniare sau transcendente f (x) = 0 const a n construirea unui sir x0 , x1 , x2 , . . . , xk , . . . convergent c atre solutia x a ecuat iei considerate. Se adopt a drept solut ie numeric a un termen xk al sirului sucient de apropiat de limita x. Modul n care este generat sirul determin a calit a tile metodei (viteza de convergent a, eroare numeric a, efort de calcul, etc.). De obicei sirul este denit recurent, iar procesul iterativ se opre ste atunci c and distant a dintre doi termeni succesivi devine sucient de mic a sau |f (x)| este neglijabil.

9.2

Principiul lucr arii


f ( x) = 0, (9.1)

Se consider a o ecuat ie neliniar a:

n care f este o funct ie continu a denit a pe intervalul [a, b] cu valori n IR, iar x este solut ia exact a a ecuat iei (presupun and c a exist a un x astfel nc at a < x < b si acesta este unic). Pentru determinarea numeric a a solut iei x se construie ste un sir x0 , x1 , . . . , xk , . . . convergent c atre solut ia exact a x a ecuat iei. Termenul xk al sirului se determin a n mod recurent: xk = g ( xk 1 ) , 177 (9.2)

178

Capitolul 9. Rezolvarea numeric a prin metode iterative a ecuat iilor neliniare

n funct ie de termenul precedent. Iterat iile se opresc atunci c and distant a dintre doi termeni succesivi |xk xk1 | este mai mic a dec at o valoare impus a . Se presupune c a valoarea xk astfel obt inut a este o aproximare sucient de bun a a solut iei exacte si se adopt a ca solut ie numeric a. In consecint a, metoda iterativ a este caracterizat a prin funct ia de iterat ie g , care trebuie aleas a astfel nc at punctul ei x x = g (x) s a coincid a cu solut ia ecuat iei f (x) = 0. Metoda bisect iei Una din cele mai simple metode iterative pentru rezolvarea unei ecuat ii neliniare, dar care nu se bazeaz a pe construct ia unei funct ii de iterat ie, este metoda bisect iei, care se bazeaz a pe observat ia c a f (x) are semne diferite la capetele intervalului [a, b], n interiorul c aruia se determin a solut ia, deci f (a)f (b) < 0. Consider and xm = (a + b)/2, se va njum at a ti intervalul [a, b] si se va selecta din cele dou a subintervale acela care cont ine solut ia. Pentru aceasta se determin a semnul valorii f (xm ) si se modic a a = xm sau b = xm n funct ie de acest semn, astfel nc at f (a)f (b) < 0. S irul valorilor succesive ale lui xm este convergent c atre solut ia exact a x. Procedura iterativ a de njum at a tire se opre ste atunci c and lungimea intervalului |b a| devine mai mic a dec at eroarea impus a solutiei. Metoda iterat iei simple O alt a variant a a metodei iterative este cunoscut a sub numele de metoda iterat iei simple. Ea const a n transformarea ecuat iei f (x) = 0 ntr-o ecuat ie de forma x = g (x), de exemplu, prin articiul x = x + cf (x), n care g (x) = x + cf (x). Aparent, valoarea constantei c cu care se multiplic a ecuat ia f (x) = 0 nu este important a, totu si se va constata c a ea infuent eaz a puternic convergent a sirului de iteratii. In consecint a, n metoda iterat iei simple, sirul solut iilor numerice este generat de relat ia: xk = xk1 + cf (xk1 ) (9.3) n care k = 1,2,. . . ,n. Se porne ste de la o init ializare arbitrar a x0 [a, b] si se calculeaz a succesiv x1 , x2 , . . . , xn p an a c and |xn xn1 | < eps. O condit ie sucient a pentru convergent a sirului (16.2) este ca g s a e o contract ie, respectiv: | g ( x 1 ) g ( x 2 ) | L| x 1 x 2 | (9.4)

cu L strict subunitar, pentru orice x1 , x2 [a, b]. Dac a f este derivabil a, aceast a condit ie este satisf acut a atunci c and |g | < 1, deci: |1 + cf (x)| < 1, x [a, b]. (9.5)

Condit ia (9.5) evident iaz a important a constantei c, care trebuie s a aib a semn opus derivatei funct iei f si trebuie aleas a astfel nc at |1 + cf (x)| s a e subunitar. Cu c at |g | = |1 + cf (x)| este mai mic, cu at at sirul iterativ este mai rapid convergent.

9.2. Principiul lucr arii

179

Metoda Newton (a tangentelor) Una din metodele iterative cele mai eciente este metoda Newton, n care c = ck se modic a la ecare iterat ie, astfel nc at 1 + ck f (xk ) = 0, respectiv: 1 ck = . (9.6) f ( xk ) Rezult a urm atoarea relat ie pentru denirea sirului solut iilor numerice n metoda Newton: f ( xk ) , k = 1, 2, . . . (9.7) xk+1 = xk f ( xk ) care evident iaz a faptul c a la ecare iterat ie gracul funct iei este aproximat cu tangenta dus a n punctul de coordonate xk , f (xk ). Ecuat ia dreptei tangente este: y = f (x)(x xk ) + f (xk ), (9.8) iar prin intersect ia ei cu axa, rezult a, pentru y = 0: f ( xk ) . (9.9) x = xk+1 = xk f ( xk ) Din acest motiv, metoda Newton este cunoscut a si sub numele de metoda tangentelor. Dezavantajul acestei metode const a n faptul c a la ecare iterat ie trebuie evaluat a derivata f (xk ), ceea ce poate necesita un efort mare de calcul. Metoda Newton-Kantorovici (a tangentelor paralele) O variant a simplicat a, cunoscut a sub numele de Newton-Kantorovici (a tangentelor paralele) folose ste o singur a evaluare a derivatei n punctul init ial c = 1/f (x0 ), iar iterat iile sunt date de: f ( xk ) xk+1 = xk (9.10) f ( x0 ) Aceast a metod a este, n fond, o variant a a metodei iterat iei simple, cu o alegere convenabil a a factorului c. Metoda Newton discret a (a secantelor) Dac a expresia derivatei f (x) nu este cunoscut a, atunci metoda Newton si varianta sa simplicat a nu pot aplicate. In acest caz se poate face apel la aproximarea numeric aa derivatei: f ( xk ) f ( xk 1 ) , (9.11) f ( xk ) xk xk 1 aceasta reprezent and panta secantei ce une ste ultimele dou a puncte din sirul iterativ, av and coordonatele xk1 , f (xk1 ) si respectiv xk , f (xk ). Metoda astfel obt inut a bazat a pe relat ia iterativ a: f (xk )(xk xk1 ) , k = 1, 2, . . . (9.12) xk+1 = xk f ( xk ) f ( xk 1 ) este cunoscut a sub numele de metoda Newton (sau metoda secantelor). Aceast a metod a folose ste o funct ie de iterat ie de dou a variabile xk+1 = g (xk , xk1 ), deci necesit a o init ializare dubl a x0 , x1 (alese, de exemplu: x0 = a, x1 = b).

180

Capitolul 9. Rezolvarea numeric a prin metode iterative a ecuat iilor neliniare

9.3

Pseudocodul algoritmilor

Metoda bisect iei Rezolvarea ecuat iei f (x) = 0 prin metoda bisect iei poate reprezentat a n pseudocod prin urm atoarea procedur a: procedura bisect ie (a, b, eps, nit) real a, b real eps ntreg nit ntreg k = 0 repet a k =k+1 xm = (a + b)/2 dac a f (xm)f (a) > 0 atunci a = xm altfel b = xm p an a c and (b a) < eps sau k > nit dac a k nit scrie xm retur Metoda iterat iei simple Rezolvarea ecuat iei f (x) = 0 prin metoda iterat iei simple poate reprezentat a n pseudocod prin urm atoarea procedur a: procedura iterat ie simpl a (x0 , eps, nit) real x0 real eps ntreg nit ntreg k = 0 real xvechi = x0 repet a k =k+1 xnou = g (xvechi) d = |xnou xvechi| xvechi = xnou p an a c and d < eps sau k > nit dac a k nit

; ; ; ;

domeniul de denit ie al funct iei f eroarea impus a de solut ie num ar maxim de iterat ii contor iterat ii

; solut ie

; ; ; ; ;

init ializare solut ie eroarea impus a de solut ie num ar maxim de iterat ii contor iterat ii init ializarea solut iei

; unde g(x)=x+cf(x)

9.3. Pseudocodul algoritmilor

181

scrie xnou retur Metoda Newton-Kantorovici (tangente paralele) Rezolvarea ecuat iei f (x) = 0 prin metoda Newton-Kantorovici(tangente paralele) poate reprezentat a n pseudocod prin urm atoarea procedur a: procedura tangente paralele (x0 , eps, nit) real x0 ; real eps ; ntreg nit ; real xvechi = x0 ; real f d = f (x0 ) ; repet a k =k+1 xnou = xvechi f (xvechi)/f d d = |xnou xvechi| xvechi = xnou p an a c and d < eps sau k > nit dac a k nit scrie xnou retur Metoda Newton (tangente) Rezolvarea ecuat iei f (x) = 0 prin metoda Newton (a tangentelor) poate reprezentat a n pseudocod prin urm atoarea procedur a: procedura Newton (x0 , eps, nit) real x0 ; init ializare solut ie real eps ; eroarea impus a de solut ie ntreg nit ; num ar maxim de iterat ii ntreg k = 0 ; contor iterat ii real xvechi = x0 ; init ializarea solut iei repet a k =k+1 xnou = xvechi f (xvechi)/f (xvechi) d = |xnou xvechi| xvechi = xnou p an a c and d < eps sau k > nit dac a k nit

init ializare solut ie eroarea impus a de solut ie num ar maxim de iterat ii init ializarea solut iei valoarea derivatei n x0

182

Capitolul 9. Rezolvarea numeric a prin metode iterative a ecuat iilor neliniare

scrie xnou retur Metoda Newton discret a (a secantelor) Rezolvarea ecuat iei f (x) = 0 prin metoda Newton discret a (a secantelor) poate reprezentat a n pseudocod prin urm atoarea procedur a: procedura secante (a, b, eps, nit) real a, b ; domeniul de denit ie al funct iei real eps ; eroarea impus a de solut ie ntreg nit ; num ar maxim de iterat ii ntreg k = 0 ; contor iterat ii real xv = a ; init ializ ari ale solut iei real xvv = b repet a k =k+1 xnou = xv (xv xvv )f (xv )/(f (xv ) f (xvv )) d = |xnou xv | xvv = xv xv = xnou p an a c and d < eps sau k > nit dac a k nit scrie xnou retur

9.4

Analiza algoritmilor

Efort de calcul Efortul de calcul pentru determinarea solut iei numerice este dependent de eroarea impus a solut iei. In general, cu c at precizia impus a solut iei este mai mare, cu at at timpul de calcul cre ste, deoarece sunt necesare mai multe iterat ii. Efortul de calcul pentru o iterat ie depinde de metoda adoptat a si el const a n principal n evaluarea funct iei f sau a derivatei acesteia: Metoda Bisect iei Iterat ia simpl a Tangente paralele Newton Secante Num ar de evalu ari pe iterat ie 2 1 1 1 2 evalu ari pentru f (poate redus a la o evaluare) evaluare pentru f evaluare pentru f evaluare pentru f si 1 evaluare pentru derivata f evalu ari pentru f (poate redus a la o evaluare)

9.4. Analiza algoritmilor

183

Deoarece viteza cu care sirul de iterat ii converge c atre solut ia exact a este diferit a de la o metod a la alta, este posibil ca num arul de iterat ii necesare atingerii unei precizii dorite s a e mult mai mic n cazul metodei Newton dec at n cazul metodei iterat iei simple. In acest caz se obt ine o ecient a global a superioar a prin folosirea metodei Newton, chiar dac a la ecare iterat ie timpul de calcul este mai mare. Analiza erorilor O alt a problem a important a n procedurile iterative const a n ncrederea care se poate acorda solut iei numerice. Faptul c a doi termeni succesivi sunt sucient de apropiat i |xk+1 xk | < eps nu nseamn a ntotdeauna c a ace stia sunt foarte aproape de solut ia exact a x. Este posibil ca distant a err = |xk+1 x| s a e mult mai mare dec at eps. Folosind principiul contract iei se obt in urm atoarele relat ii privind eroarea impus a eps si eroarea real a err n cazul metodei iterat iei simple: Ln+1 | x1 x0 | 1L eps = |xn+1 xn | Ln+1 |x0 x| err = |xn+1 x| (9.13) (9.14)

n care s-a notat cu L < 1 constanta Liepschitz a funct iei de iterat ie g , ce satisface: | g ( u) g ( v ) | L | u v | (9.15)

pentru orice u, v din domeniul (a, b). Cu c at aceast a constant a are valori mai mici, cu at at sirul iterativ este mai rapid convergent, num arul de iterat ii necesar atingerii preciziei impuse ind: eps log (1 L) | x1 x0 | (9.16) n= log L Raportul dintre eroarea impus a si cea real a depinde de constanta L. Deoarece n metoda bisect iei marginea erorii reale la iterat ia n (merrn ) satisface inegalitatea: merrn1 , (9.17) merrn 2 rezult a c a metoda iterat iei simple este mai avantajoas a dec at metoda bisect iei, doar atunci c and constanta Liepschitz L < 1/2. Metoda Newton este mai rapid convergent a dec at metoda iterat iei simple deoarece n acest caz, eroarea real a la ecare pas este: errn+1 = |xn+1 x| = |g (xn ) g (x)| L(|xn x|)2 spre deosebire de eroarea real a la ecare pas n cazul metodei iterat iei simple: errn+1 = |xn+1 x| = |g (xn ) g (x)| L|xn x|. (9.19) (9.18)

184

Capitolul 9. Rezolvarea numeric a prin metode iterative a ecuat iilor neliniare

In concluzie, efortul de calcul pentru determinarea solut iei numerice a unei ecuat ii neliniare printr-o metod a iterativ a depinde de: tipul ecuat iei; init ializarea adoptat a (distant a fat a de solut ia exact a); metoda iterativ a adoptat a; eroarea impus a solut iei numerice. Metodele iterative nu sunt convergente n orice caz. Aceasta situatie poate avea loc de exemplu, n cazul metodei iterat iei simple dac a constanta L a funct iei g are valori supraunitare.

9.5

Chestiuni de studiat

1. Rezolvarea unor ecuat ii neliniare prin diferite metode iterative; 2. Analiza experimental a a erorilor si a timpului de calcul la rezolvarea prin metode iterative a ecuat iilor neliniare; 3. Implementarea ntr-un limbaj de programare a unor algoritmi de rezolvare iterativ a a ecuat iilor neliniare si testarea acestora; 4. C autarea de informat ii pe Internet.

9.6

Modul de lucru

Pentru desf a surarea lucr arii selectat i opt iunea Rezolvarea numeric a prin metode iterative a ecuat iilor neliniare din meniul principal de lucr ari. Aceasta are ca urmare lansarea urm atorului meniu: Rezolvare ecuat ii Analiza rezolv arii Utilizatorul va selecta opt iunile din acest meniu.

9.6. Modul de lucru

185

9.6.1

Rezolvarea unor ecuat ii neliniare prin diferite metode iterative

Prin selectarea opt iunii Rezolvare ecuat ii din meniul lucr arii se apeleaz a un program care poate rezolva urm atoarele ecuat ii neliniare: e x = a0 x + a0 ln x = a1 a0 sin x + a1 cos x = a2 a3 x 3 + a2 x 2 + a1 x + a 0 = 0 n care a0 , a1 , a2 , a3 , sunt parametri reali ce vor introdu si de utilizator. Dup a introducerea acestor parametri, programul solicit a domeniul de denit ie [xmin , xmax ] al funct iei, num arul maxim de iterat ii si apoi alegerea metodei de rezolvare dintre variantele: 1. metoda bisect iei; 2. metoda iterat iei simple (cu c = 1); 3. metoda tangentelor paralele; 4. metoda tangentelor; 5. metoda secantelor. In continuare programul a seaz a gracul funct iei f (x) si marcheaz a succesiv punctele de coordonate xk , f (xk ), k = 0, 1, 2, . . . Pentru trecerea la iterat ia urm atoare trebuie ap asat a tasta <ENTER> n consola Scilab. Se recomand a rezolvarea ecuat iilor: ex = 2, x + ln x = 2, sin(x) + cos(x) = 1 si x2 = 2, prin diferite metode. Se vor alege limitele xmin si xmax ale domeniului de denit ie n mod convenabil pentru ecare ecuat ie si se va comenta convergent a procesului iterativ, a sa cum este ea evident iat a din grac. Pentru ecare metod a disponibil a, se va c auta un exemplu de ecuat ie, la care iterat iile nu sunt convergente.

9.6.2

Analiza experimental a a erorilor si a timpului de calcul la rezolvarea prin metode iterative a ecuat iilor neliniare

Prin selectarea optiunii Analiza rezolv arii din meniul principal se apeleaz a un program care rezolv a ecuat ia algebric a: a2 x 2 + a 1 x + a 0 = 0

186

Capitolul 9. Rezolvarea numeric a prin metode iterative a ecuat iilor neliniare

prin diferite metode iterative si anume: 1. metoda bisect iei; 2. metoda iterat iei simple; 3. metoda tangentelor paralele; 4. metoda tangentelor; 5. metoda secantelor. La ecare metod a este a sat a si reprezentat a grac variat ia erorii absolute reale |xk x| (abaterea iterat iei curente fat a de solut ia exact a), a erorii aparente Cauchy |xk xk1 | (distant a dintre dou a iterat ii succesive egal a cu modulul corect iei efectuate asupra ultimei solut ii numerice) si a reziduului |f (xk )| pe parcursul iterat iilor. Programul a seaz a si timpul necesar pentru efectuarea unei iterat ii. Se va rezolva ecuat ia x2 = 2 si se va calcula timpul necesar atingerii unei precizii dorite (de exemplu, primele trei cifre semnicative exacte) pentru solut ia numeric a. Se vor compara rezultatele obt inute prin diferite metode (ecient a lor relativ a n rezolvarea problemei date) si se va determina metoda optim a.

9.6.3

Implementarea algoritmilor de rezolvare iterativ a a ecuat iilor neliniare

Se va implementa n limbajul C una din procedurile de rezolvare iterativ a prezentate. Se va scrie un program principal, care va apela procedura implementat a si care va rezolva ecuat ia algebric a neliniar a: a3 x 3 + a2 x 2 + a1 x + a 0 = 0 Programul va permite: introducerea datelor a0 , a1 , a2 , a3 , a, b; rezolvarea ecuat iei prin apelul procedurii; a sarea rezultatelor: x - solut ia numeric a; k - num arul de iterat ii; eps - eroarea aparent a Cauchy.

9.7. Exemple

187

9.6.4

C autare de informat ii pe Internet

C autat i pe Internet informat ii si coduri legate de rezolvarea numeric a a ecuat iilor neliniare. Cuvinte cheie recomandate: solving nonlinear equations, solving nonlinear systems, secant method, etc.

9.7
9.7.1

Exemple
Exemple rezolvate

1. Fie funct ia f : IR IR, f (x) = x2 9. Se cer: (a) S a se calculeze primele dou a iterat ii ale metodei bisect iei pentru rezolvarea ecuat iei f (x) = 0 n intervalul [a, b], unde a = 0, b = 8. (b) S a se calculeze primele trei iterat ii ale metodei Newton pentru rezolvarea ecuat iei f (x) = 0, pornind de la init ializarea x0 = 1, respectiv x0 = 1. (c) Comentat i comportarea metodei Newton pentru rezolvarea ecuat iei f (x) = 0, dac a init ializarea este x0 = 0. (d) S a se calculeze primele dou a iterat ii ale metodei Newton-Kantorovici pentru rezolvarea ecuat iei f (x) = 0, pornind de la init ializarea x0 = 2. (e) S a se calculeze primele dou a iterat ii ale metodei Newton discret a pentru rezolvarea ecuat iei f (x) = 0, pornind de la init ializarea dubl a x0 = 0, x1 = 1. Rezolvare: (a) Metoda bisect iei ( njum at a tirii intervalului) este garantat convergent a dac a funct ia este continu a, solut ia este unic a (problema este bine formulat a matematic) si funct ia si schimb a semnul n intervalul de c autare, [a, b] (f (a)f (b) < 0). Pentru funct ia dat a avem: f (a) = f (0) = 9 si f (b) = f (8) = 55, adic a f (a)f (b) = 9 55 < 0.

La prima iterat ie, k = 1, mijlocul intervalului este: xm,1 = (a + b)/2 = 4, f (xm,1 ) = f (4) = 7. Deoarece f (a)f (xm,1 ) = 9 7 < 0, solut ia se a a n prima jum atate a intervalului [a, b]. Valoarea lui b se modic a, b = xm,1 = 4. Noul interval de c autare este [0, 4]. La a doua iterat ie, k = 2, mijlocul intervalului este: xm,2 = (a + b)/2 = 2, f (xm,2 ) = f (2) = 5. Deoarece f (a)f (xm,2 ) = 9 (5) > 0, solut ia se a a n a doua jum atate a intervalului [a, b]. Acum, valoarea lui a se modic a, a = xm,2 = 2. Noul interval de c autare este [2, 4]. Procedeul iterativ este ilustrat n gura 11.

188

Capitolul 9. Rezolvarea numeric a prin metode iterative a ecuat iilor neliniare

Fig. 11. Primele dou a iterat ii ale metodei bisect iei (b) Formula de recurent a a metodei Newton (a tangentelor) pentru generarea sirului de solut ii este: xk+1 = xk f ( xk ) , f ( xk ) k = 1, 2, . . . .

Se observ a c a este necesar a evaluarea derivatei la ecare iterat ie. In cazul problemei considerate, f (x) = 2x, Dac a init ializarea este x0 = 1, primele 3 iterat ii ale metodei Newton sunt: x1 = x0 x2 = x1 x3 = x2 f (1) 8 f ( x0 ) =1 =1 = 5, f ( x0 ) f (1) 2

f ( x1 ) f (5) 16 17 =5 =5 = = 3. 4, f ( x1 ) f (5) 10 5

f ( x2 ) 17 f (17/5) 17 32 257 = = = = 3.02. f ( x2 ) 5 f (17/5) 5 85 85

Procedeul iterativ este ilustrat n gura 1b-st anga. Dac a init ializarea este x0 = 1, primele 3 iterat ii sunt: x1 = x0 x2 = x1 x3 = x2 f (1) 8 f ( x0 ) = 1 = 1 = 5, f ( x0 ) f (1) 2

17 f (17/5) 17 32 257 f ( x2 ) = = + = = 3.02. f ( x2 ) 5 f (17/5) 5 85 85

f (5) 16 17 f ( x1 ) = 5 = 5 = = 3. 4, f ( x1 ) f (5) 10 5

9.7. Exemple

189

F(x) 28 28

F(x)

24

24

20

20

16

16

12

12

4 X 1 2 3 4 5 6 7

4 X 7 6 5 4 3 2 1

Figura 9.1: Primele trei iterat ii ale metodei Newton: st anga x0 = 1, dreapta x0 = 1. Procedeul iterativ este ilustrat n gura 1b-dreapta. Se observ a c a, n funct ie de init ializarea solut iei, metoda Newton converge c atre 2 una dintre cele dou a solut ii exacte ale ecuat iei x 9 = 0, x = 3. x1 = x0 f ( x0 ) f (0) 9 =0 = , f ( x0 ) f (0) 0

(c) Dac a init ializarea este x0 = 0, atunci prima iterat ie a metodei Newton ar :

si metoda e sueaz a nc a de la prima iterat ie. Metoda Newton va e sua dac a o iterat ie ajunge ntr-un punct critic al funct iei (punct pentru care derivata este nul a). Din punct de vedere geometric, ntr-un punct critic, tangenta la gracul funct iei f (x) este paralel a cu abscisa OX , deci nu exist a intersect ie cu aceasta, implicit solut ie la iterat ia urm atoare. (d) Formula de recurent a a metodei Newton-Kantorovici (a tangentelor paralele) pentru generarea sirului de solut ii este: xk+1 = xk f ( xk ) , f ( x0 ) k = 1, 2, . . . .

Se observ a c a este necesar a o singur a evaluare a derivatei, f (x0 ) = 2x0 . Dac a init ializarea este x0 = 2, primele 2 iterat ii ale metodei Newton-Kantorovici sunt: f ( x0 ) f (2) 5 13 x1 = x0 =2 =2 = = 3.25, f ( x0 ) f (2) 4 4 13 f (13/4) 13 25 183 f ( x1 ) = = = = 2.859. x2 = x1 f ( x0 ) 4 f (2) 4 64 64 Procedeul iterativ este ilustrat n gura 1e-st anga.

190

Capitolul 9. Rezolvarea numeric a prin metode iterative a ecuat iilor neliniare

F(x) 9 80

F(x)

70 7 60 5 50 3

40

30

20 1 10 3 0 X 2.0 2.4 2.8 3.2 3.6 4.0 4.4 X 0 1 2 3 4 5 6 7 8 9 10

10

Figura 9.2: Primele trei iterat ii ale metodei: Newton Kantorovici (st anga), Newton discret a (dreapta). (e) Formula de recurent a a metodei Newton discret a (a secantelor) pentru generarea sirului de solut ii este: xk+1 = xk f (xk )(xk xk1 ) , f ( xk ) f ( xk 1 ) k = 1, 2, . . . .

Pornind de la init ializarea dubl a x0 = 0, x1 = 1, primele 2 iterat ii ale metodei Newton discret a sunt: x2 = x1 x3 = x2 f (x1 )(x1 x0 ) f (1)(1 0) 8 =1 =1 = 9, f ( x1 ) f ( x0 ) f (1) f (0) 1

Procedeul iterativ este ilustrat n gura 1e-dreapta. 2. Fie ecuat ia neliniar a x2 + x = 2. Se cer:

f (9)(9 1) 36 9 f (x2 )(x2 x1 ) =9 =9 = = 1. 8. f ( x2 ) f ( x1 ) f (9) f (1) 5 5

(b) S a se calculeze primele dou a iterat ii ale metodei Newton pentru rezolvarea ecuat iei, pornind de la init ializarea x0 = 0. (c) S a se calculeze primele dou a iterat ii ale metodei Newton-Kantorovici pentru rezolvarea ecuat iei, pornind de la init ializarea x0 = 0. (d) S a se calculeze primele dou a iterat ii ale metodei Newton discret a pentru rezolvarea ecuat iei, pornind de la init ializarea dubl a x0 = 1/2, x1 = 0.

(a) S a se calculeze primele dou a iterat ii ale metodei bisect iei pentru rezolvarea ecuat iei pentru x [a, b], unde a = 6, b = 0.

9.7. Exemple

191

Rezolvare: La rezolvarea oric arei ecuat ii neliniare este indicat s a avem forma f (x) = 0. In cazul 2 considerat, f (x) = x + x 2. (a) Pentru funct ia dat a avem: f (a) = f (6) = 28 si f (b) = f (0) = 2, adic a f (a)f (b) = 28 (2) < 0, o singur a solut ie n intervalul [a, b].

La prima iterat ie, k = 1: xm,1 = (a + b)/2 = 3, f (xm,1 ) = f (3) = 4. Deoarece f (a)f (xm,1 ) = 28 4 > 0, solut ia se a a n a doua jum atate a intervalului [a, b]. Valoarea lui a se modic a, a = xm,1 = 3. Noul interval de c autare este [3, 0]. La a doua iterat ie, k = 2: xm,2 = (a + b)/2 = 3/2, f (xm,2 ) = f (3/2) = 5/4. Deoarece f (a)f (xm ) = 4 (5/4) < 0, solut ia se a a n prima jum atate a intervalului [a, b]. Acum, valoarea lui b se modic a, b = xm,2 = 3/2. Noul interval de c autare este [3, 3/2].

(b) Pentru metoda Newton este necesar a cunoa sterea expresiei derivatei funct iei. In cazul problemei considerate, f (x) = 2x + 1. Pornind de la init ializarea x0 = 0, primele dou a iterat ii ale metodei Newton sunt: f ( x0 ) f (0) 2 x1 = x0 =0 = = 2, f ( x0 ) f (0) 1 x2 = x1 f (2) 4 6 f ( x1 ) = 2 = 2 = = 1. 2. f ( x1 ) f (2) 5 5

(c) Pornind de la init ializarea x0 = 0, primele dou a iterat ii ale metodei NewtonKantorovici sunt: x1 = x0 x2 = x1 f ( x0 ) f (0) 2 =0 = = 2, f ( x0 ) f (0) 1

f ( x1 ) f (2) 4 =2 = 2 = 2. f ( x0 ) f (0) 1

(d) Pornind de la init ializarea dubl a x0 = 1/2, x1 = 0, primele dou a iterat ii ale metodei Newton discret a sunt: x2 = x1 f (x1 )(x1 x0 ) f (0)[0 (1/2)] 1 =0 = = 4, f ( x1 ) f ( x0 ) f (0) f (1/2) 2 (9/4) f (4)(4 0) 18 4 2 f (x2 )(x2 x1 ) =4 =4 = = 0. 4. f ( x2 ) f ( x1 ) f (4) f (0) 20 5

x3 = x2

192

Capitolul 9. Rezolvarea numeric a prin metode iterative a ecuat iilor neliniare

9.7.2

Exemple propuse

1. Fie funct ia f : IR IR, f (x) = x2 16. Se cer: (a) S a se calculeze primele dou a iterat ii ale metodei bisect iei pentru rezolvarea ecuat iei f (x) = 0 n intervalul [a, b], unde a = 0, b = 12. (b) S a se calculeze primele dou a iterat ii ale metodei Newton pentru rezolvarea ecuat iei f (x) = 0, pornind de la init ializarea x0 = 1. (c) S a se calculeze primele dou a iterat ii ale metodei Newton-Kantorovici pentru rezolvarea ecuat iei f (x) = 0, pornind de la init ializarea x0 = 1. (d) S a se calculeze primele dou a iterat ii ale metodei Newton discret a pentru rezolvarea ecuat iei f (x) = 0, pornind de la init ializarea dubl a x0 = 0, x1 = 1. 2. Fie ecuat ia neliniar a x2 + x = 6. Se cer: (a) S a se calculeze primele dou a iterat ii ale metodei bisect iei pentru rezolvarea ecuat iei pentru x [a, b], unde a = 8, b = 0.

(b) S a se calculeze primele dou a iterat ii ale metodei Newton pentru rezolvarea ecuat iei, pornind de la init ializarea x0 = 1.

(d) S a se calculeze primele dou a iterat ii ale metodei Newton discret a pentru rezolvarea ecuat iei, pornind de la init ializarea dubl a x0 = 2, x1 = 1.

(c) S a se calculeze primele dou a iterat ii ale metodei Newton-Kantorovici pentru rezolvarea ecuat iei, pornind de la init ializarea x0 = 1.

9.8

Intreb ari si probleme

1. Comparat i ecient a diferitelor metode iterative pentru rezolvarea aceleia si ecuat ii neliniare; 2. Analizat i cum depinde ecient a rezolv arii de init ializarea adoptat a; 3. Analizat i cum depinde timpul de calcul pentru determinarea solut iei numerice a unei ecuat ii neliniare de eroarea impus a solut iei numerice; 4. Modicat i algoritmul metodei bisect iei astfel nc at s a se efectueze o singur a evaluare a funct iei f la ecare njum at a tire; 5. Analizat i efectul pe care l are introducerea unui factor de relaxare (subrelaxare, respectiv suprarelaxare) n iterat iile neliniare; 6. Care din metodele prezentate poate generalizat a la rezolvarea unui sistem de ecuat ii neliniare si cum se realizeaz a aceast a generalizare?

9.8. Intreb ari si probleme

193

7. Propunet i diferite criterii sigure pentru oprirea iterat iilor; 8. Generat i un algoritm pentru determinarea iterativ a a zerourilor funct iei complexe analitice. 9. Descriet i algoritmul Newton n cazul unui sistem de ecuat ii algebrice neliniare. Cum poate aplicat acest algoritm n analiza numeric a a circuitelor electrice neliniare n regim stat ionar (de c.c.)? Ar atat i c a la ecare iterat ie trebuie rezolvat un circuit electric liniar, pentru care se poate aplica algoritmul din Lucrarea nr. 5. 10. Identicat i n biblioteca matematic a descris a n [2] funct ii avansate pentru rezolvarea sistemelor de ecuat ii neliniare. Ce aduc nou aceste funct ii, fat a de cele analizate n lucrare?

Sir Isaac Newton (1643, Anglia - 1727, Anglia)

http://www-gap.dcs.st-and.ac.uk/ history/Mathematicians/Newton.html

Leonid Vitalyevich Kantorovich (1912, Rusia - 1986, URSS)

http://www-gap.dcs.st-and.ac.uk/ history/Mathematicians/Kantorovich.html http://www.nobel.se/economics/laureates/1975/kantorovich-autobio.html

194

Capitolul 9. Rezolvarea numeric a prin metode iterative a ecuat iilor neliniare

Lucrarea 10 Rezolvarea ecuat iilor diferent iale ordinare cu condit ii init iale prin metoda Euler
10.1 Caracterizarea metodei

Metoda Euler este o metod a elementar a de integrare numeric a a unei ecuat ii diferent iale cu condit ii init iale de forma: dy = f (t, y ) dt y ( t 0 ) = y0 pentru intervalul de denit ie t0 t tmax .

In aceast a metod a, pentru evaluarea numeric a a derivatei se utilizeaz a aproximarea obt inut a prin ret inerea primilor doi termeni din dezvoltarea n serie Taylor a funct iei y (t). Deoarece solut ia numeric a are pe ecare pas de timp variat ie liniar a, se spune c a metoda este de ordinul I.

10.2

Principiul metodei
dy = f (t, y ) dt y (0) = y0

Se consider a urm atoarea ecuat ie diferent ial a de ordinul I:

(10.1)

a c arei solut ie y (t) este o funct ie de timp denit a pe intervalul [0, tmax ]. 195

196

Capitolul 10. Rezolvarea ecuat iilor diferent iale ordinare prin metoda Euler

Rezolvarea numeric a a ecuat iei (10.1) const a n evaluarea funct iei y (t) n nodurile 0 < t1 < t2 < . . . < tmax ale intervalului de denit ie. Se alege un pas de integrare h, astfel nc at intervalul [0, tmax ] s a e mp art it n n pa si egali: h= tmax . n (10.2)

Nodurile intervalului de denit ie sunt n acest caz urm atoarele: t0 = 0; t1 = h; t2 = 2h; t3 = 3h; . . . ; tn = nh = tmax . Dezvoltarea n serie Taylor a funct iei y (t) la dreapta punctului ti = ih este:
y ( t i + h ) = y i + yi h + yi 3 h2 h + yi + ... 2 6

(10.3)

unde yi = y (ti ) si y i = f (ti , yi ). Dac a se neglijeaz a termenii de grad mai mare sau egal cu 2, si se noteaz a cu yi+1 solut ia la momentul ti+1 = ti + h, atunci se face urm atoarea aproximare:

yi+1 = yi + hf (ti , yi ).

(10.4)

Aceast a expresie reprezint a formula explicit a a metodei lui Euler. Pornind de la condit ia init ial a y0 , relat ia (10.4) permite calculul succesiv al solut iei numerice y1 , y2 , . . . , yn , n toate nodurile ret elei de discretizare. Dezvoltarea n serie Taylor a funct iei y (t) la st anga punctului ti+1 = (i + 1)h este:
y (ti+1 h) = yi+1 yi +1 h + yi+1 3 h2 h yi + ... +1 2 6

(10.5)

unde yi a se neglijeaz a n (10.5) termenii de grad mai mare sau egal +1 = f (ti+1 , yi+1 ). Dac cu 2 rezult a urm atoarea aproximare:

yi+1 = yi + hf (ti+1 , yi+1 ).

(10.6)

Aceast a expresie reprezint a formula implicit a a metodei lui Euler. Determinarea solut iei numerice presupune n acest caz rezolvarea la ecare pas de timp a ecuat iei (10.6).

10.3

Pseudocodul metodei

Rezolvarea prin metoda explicit a este descris a de urm atorul pseudocod:

10.3. Pseudocodul metodei

197

procedura euler exp (x0, xmax, y0, h, y) real x0, ; nod init ial real xmax, ; nod nal real y0, ; condit ia init ial a real h, ; pasul de integrare tablou real y(n) ; vectorul solut iei numerice (indici de la 0) t = x0 y(0) = y0 n = (xmax - x0)/h ; num ar de pa si pentru i = 1, n ; evalueaz a funct ia n cele n noduri y(i) = y(i-1) + h func(t, y(i -1)) t=t+h retur Procedura are urm atorii parametri: de intrare: x0 = limita inferioar a a intervalului de integrare; xmax = limita superioar a a intervalului de integrare; y 0 = condit ia init ial a; h = pasul de integrare. de ie sire: y (n) = vectorul solut ie. Procedura apeleaz a funct ia func ce evalueaz a funct ia f (t, y ) din membrul drept al ecuat iei (10.1) pentru nodul i. Rezolvarea prin metoda implicit a este descris a de urm atorul pseudocod: procedura euler imp (x0, xmax, y0, h, err, itmax, y) real x0, ; nodul init ial real xmax, ; nod nal real y0, ; condit ia init ial a real h, ; pasul de integrare real err ; eroarea maxim admis a ntreg itmax ; nr. max. de iterat ii tablou real y(N) ; vectorul solut iei t = x0 y(0) = y0 n = (xmax - x0)/h ; nr. de pa si

198

Capitolul 10. Rezolvarea ecuat iilor diferent iale ordinare prin metoda Euler

pentru i = 1, n ; evalueaz a funct ia n cele n noduri t=t+h ; pas nou ynou = y(i-1) + h func(t, y(i-1)) ; prima evaluare se face cu metoda explicit a j=0 ; contor iterat ii repet a yvechi = ynou ynou = y(i-1) + h func(t, yvechi) ; evaluare nou a j=j+1 eps = abs(yvechi - ynou) ; evaluare eroare p an a c and (abs(eps) err sau j > itmax) y(i) = ynou retur Procedura are urm atorii parametri: de intrare: x0 - limita inferioar a a intervalului de integrare; xmax - limita superioar a a intervalului de integrare; y 0 - condit ia init ial a; h - pasul de integrare; err - eroarea maxim a admis a; itmax - nr. maxim de iterat ii admis. de ie sire: y (n) - vectorul solut iei numerice. Procedura apeleaz a funct ia func ce calculeaz a valoarea funct iei f (t, y ) din membrul drept al ecuat iei (10.1) pentru nodul i. Metoda implementat a pentru rezolvarea ecuat iei neliniare (10.6) este metoda iterat iei simple, la care init ializarea este f acut a prin valori date de relat ia explicit a (10.4).

10.4

Analiza algoritmului

Efortul de calcul Deoarece durata evalu arii funct iei f (t, y ) este n general mult mai mare dec at durata efectu arii c atorva nmult irii si adun ari, timpul de calcul depinde de num arul de evalu ari ale funct iei f (t, y ). In metoda explicit a se efectueaz a n evalu ari ale funct iei f .

10.4. Analiza algoritmului

199

In cazul metodei implicite, aplicat a pe aceea si ret ea de discretizare, timpul de calcul cre ste odat a cu cre sterea preciziei de calcul dorite n rezolvarea iterativ a a ecuat iei neliniare (10.6). Ciclul de iterat ii corecteaz a succesiv valoarea solut iei de la momentul curent. Aceast a tehnic a bazat a pe relat iile (10.4) si (10.6) se nume ste metoda predictivcorectiv a. Num arul de evalu ari ale funct iei f este majorat de nitmax. Deoarece metoda implicit a are o stabilitate numeric a superioar a fat a de metoda explicit a, pentru calculul solut iei numerice la un moment dat (de exemplu tmax ) cu o eroare impus a, trebuie folosit a o ret ea de discretizare mai n a n cazul utiliz arii metodei explicite, ceea ce poate conduce la un efort de calcul global mai mic prin utilizarea metodei implicite. Necesar de memorie Pentru memorarea vectorului y sunt necesare n locat ii de memorie, ecare din ele ind rezervat a unui num ar real. In scopul elimin arii acestui consum de memorie, solut ia poate a sat a (sau salvat a pe disc), imediat dup a ce a fost calculat a. Cele dou a variante ale metodei Euler (explicit a si implicit a), necesit a practic acela si necesar de memorie. Analiza erorilor Pentru o ecuat ie diferent ial a simpl a de forma: dy = ay dt y (0) = y0

(10.7)

se demonstreaz a c a eroarea de trunchiere cumulat a dup a k pa si de integrare cu metoda Euler explicit a este: epsk hy0 a2 tk exp(atk ) = 0(h), unde tk = hk , k = 1, iar epsk = |y (tk ) yk | este eroarea la pasul k . Pentru k = 1: eps1 y0 h2 a2 exp(ah) = 0(h2 ), unde eps1 este eroare local a, efectuat a dup a un singur pas de integrare si care este cu un ordin mai mare dec at eroarea global a. Eroarea de trunchiere este cu at at mai mic a cu c at pasul de timp este mai mic. Pentru a obt ine aceeia si eroare de trunchiere, n cazul metodei Euler explicite se impune alegerea unui pas de timp mai mic dec at n cazul metodei Euler implicite.

200

Capitolul 10. Rezolvarea ecuat iilor diferent iale ordinare prin metoda Euler

In cazul n care se implementeaz a metoda Euler pe un sistem de calcul care opereaz a cu q cifre semnicative, eroarea de rotunjire, care se adaug a erorii de trunchiere, este: epsr = 10q+1 . ah

Datorit a efectului de anulare prin sc adere, eroarea de rotunjire este cu at at mai mare cu c at pasul h este mai mic. Prin urmare pasul de integrare poate sc azut ( n vederea mic sor arii erorii de trunchiere) numai at at timp c at eroarea de rotunjire r am ane sucient de mic a. Din acest punct de vedere se poate g asi un pas de integrare optim.

10.5

Chestiuni de studiat

1. Rezolvarea unor ecuat ii diferent iale de ordinul 1; 2. Analiza experimental a a erorilor si a timpului de calcul n funct ie de pasul de integrare si de eroarea impus a; 3. Rezolvarea unei ecuat ii diferent iale asociate unui circuit electric, de ordin I, excitat cu un impuls; 4. Implementarea algoritmului ntr-un limbaj de programare si testarea rutinei; 5. C autarea de informat ii pe Internet.

10.6

Mod de lucru

Pentru desf a surarea lucr arii selectat i opt iunea Rezolvarea ecuat iilor diferent iale ordinare cu condit ii init iale prim metoda Euler din meniul principal de lucr ari. Aceasta are ca urmare lansarea urm atorului meniu: Rezolvare ecuat ie test Analiz a erori Analiz a ecuat ie din care trebuie selectate succesiv opt iunile.

10.6. Mod de lucru

201

10.6.1

Rezolvarea unor ecuat ii diferent iale de ordin 1

Se selecteaz a opt iunea Rezolvare ecuat ie test. Programul rezolv a prin metoda Euler o ecuat ie diferent ial a de forma: dy = ay + b dt y (0) = y0 (10.8)

unde y : [0, tmax ] IR. Aceast a ecuat ie se obt ine din studiul regimului tranzitoriu pentru urm atoarele circuite:

Condensator de capacitate C ce se ncarc a de la o surs a de tensiune continu a E, printr-un rezistor de rezistent a R. Desc arcarea unui condensator nc arcat init ial la tensiunea E pe un rezistor de rezistent a R.

Conform ecuat iilor lui Kirchho, tensiunea la bornele condensatorului ntr-un circuit serie RC excitat cu o surs a cu t.e.m. E satisface relat ia: RC du +u = E dt u(0) = u0

unde u0 este tensiunea init ial a la bornele condensatorului. Se vor determina, n cele dou a cazuri, expresiile analitice ale tensiunii la bornele condensatorului. Pentru R, C, E , cunoscute (de exemplu R = 100, C = 10F, E = 20 V) se vor introduce coecient ii corespunz atori n ecuat ia (10.8) si se vor compara gracele de variat ie a tensiunii la bornele condensatarului n timp cu gracele obt inute pe baza expresiei analitice g asite. Comparat iile se vor face pentru diferit i pa si de integrare: h = /10, h = , h = 2 , unde = RC este constant a de timp a circuitului. Se va testa ecuat ia si pentru valori negative ale lui R (de exemplu R = 100K ). Se vor comenta rezultatele.

202

Capitolul 10. Rezolvarea ecuat iilor diferent iale ordinare prin metoda Euler

10.6.2

Analiza experimental a a erorilor si a timpului de calcul n funct ie de pasul de integrare

Se selecteaz a opt iunea Analiz a erori. Prin aceast a opt iune, se apeleaz a un program ce rezolv a o ecuat ie diferent ial a simpl a de forma: dy = y dt y (0) = 1 pe domeniul [0, tmax ]. Programul necesit a si introducerea erorii admisibile si num arului maxim de iterat ii necesar rezolv arii ecuat iei neliniare la ecare pas al metodei implicite. Programul a seaz a: eroarea local a pentru primul pas de calcul pentru metodele explicit a si implicit a; eroarea global a pentru metodele explicit a si implicit a; pentru metoda implicit a se a seaz a num arul maxim de iterat ii necesare atingerii preciziei dorite. Se va alege tmax = 4 si se va rezolva ecuat ia pentru diferit i pa si de timp h = 2 , h = , h = /10, h = /100, h = /1000. Se vor reprezenta grac pe h artie milimetric a: variat ia erorii locale si globale n funct ie de h pentru metoda explicit a; variat ia erorii locale si globale n funct ie de h pentru metoda implicit a, pentru o eroare impus a constant a de rezolvare a ecuat iei neliniare a unui pas. variat ia num arului mediu de iterat ii necesar metodei implicite n funct ie de eroarea impus a rezolv arii ecuat iei neliniare, pentru h = /100.; Se vor compara cele dou a metode din punct de vedere al efortului de calcul necesar obt inerii unei erori globale impuse.

10.6.3

Rezolvarea unei ecuat ii diferent iale caracteristice unui circuit electric de ordinul I

Se selecteaz a opt iunea Analiz a ecuat ie. In acest fel se apeleaz a un program ce rezolv ao ecuat ie de forma: dy = y + f ( t) dt y (0) = 0

10.6. Mod de lucru

203

unde: iar h(t) reprezint a funct ia treapt a unitate. Domeniul de integrare este [0, tmax ], iar pasul de integrare este h = tmax /100. Se introduc de la consol a urm atorii parametri: tmax - intervalul de integrare; t0 - durata excitat iei; A - amplitudinea excitat iei; b - constanta de relaxare a excitat iei; - pulsat ia excitat iei; - faza init ial a a excitat iei. Se observ a c a: pentru b = 0, = 0 si = 0, excitat ia este un impuls dreptunghiular de durat a t0 , iar dac a t0 tmax excitat ia este constant a; pentru A, b nenuli, = 0 si = 0, excitat ia este un impuls cu variat ie exponent ial a; pentru b = 0, excitat ia este armonic a; pentru b < 0, excitat ia este oscilatorie amortizat a; pentru b > 0, excitat ia este oscilatorie amplicat a. Se vor analiza toate aceste cazuri si se vor comenta rezultatele obt inute. f (t) = (h(t) h(t t0 ))A exp(bt) cos(t + ),

10.6.4

Implementarea algoritmului ntr-un limbaj de programare si testarea rutinei.

Se va implementa o procedur a proprie de rezvoltare a unei ecuat ii diferent iale, prin metoda Euler explicit a. Se va scrie pseudocodul si se va implementa un program ce apeleaz a procedura de la punctul anterior si rezolv a ecuat ia: dy = y + sin(t) dt y (0) = y0 . Integrarea se face pe intervalul 0 < t < tmax . Acest program va permite introducerea de la consol a a pulsat iei , a condit iei init iale y (0), a limitei superioare a intervalului de integrare si a pasului h. Solut ia va a sat a alfanumeric pe ecran.

204

Capitolul 10. Rezolvarea ecuat iilor diferent iale ordinare prin metoda Euler

10.6.5

C autare de informat ii pe Internet

Se vor c auta pe Internet informat ii (coduri) legate de rezolvarea ecuat iilor diferent iale ordinare. Cuvinte cheie recomandate: ordinary dierential equations, Eulers method.

10.7

Probleme si ntreb ari

1. Poate sc azut oric at de mult pasul de integrare n vederea mic sor arii erorilor? Justicat i r aspunsul. 2. Cum este inuent at a precizia metodei de precizia sistemului de calcul? 3. Scriet i o ecuat ie de forma: dy = f (t, y ) dt y (0) = y0 pentru a descrie variat ia curentului printr-o bobin a cu inductivitate L si rezistent a R ce este conectat a la o surs a de t.e.m. continu a de valoare E . Utilizat i opt iunea Rezolvare ecuat ie test pentru a o rezolva. 4. Dat i exemple de categorii de circuite electrice ce se pot analiza cu metoda Euler. 5. Generat i un algoritm care folose ste metoda Euler pentru rezolvarea unor sisteme de ecuat ii diferent iale de ordinul I. 6. Generat i un algoritm care modic a automat pasul de integrare, pentru a ment ine eroarea global a la o valoare impus a cu un efort minim de calcul. 7. Scriet i un algoritm pentru calculul integralelor denite ale funct iilor aplic and metoda Euler. 8. Analizat i deosebirea dintre stabilitatea unei ecuat ii diferent iale si stabilitatea ei numeric a. 9. Imbun at a tit i algoritmul Euler consider and mai mult i termeni din seria Taylor a funct iei y (t). 10. Scriet i o variant a a algoritmului euler imp n care rezolvarea ecuat iei neliniare s a se fac a cu metoda Newton. 11. Descriet i rezolvarea numeric a a unui sistem de ecuat ii diferent iale ordinare. Cum poate aplicat acest algoritm n analiza numeric a a circuitelor electrice neliniare n regim tranzitoriu? Ar atat i ca la ecare pas de integrare n timp trebuie rezolvat

10.7. Probleme si ntreb ari

205

un 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. Rezolvat i numeric diferite ecuat ii de stare, liniare sau neliniare n mediul MATLAB/SCILAB. 13. Identicat i n biblioteca matematic a descris a n [2] funct ii avansate pentru integrarea numeric a a ecuat iilor diferent iale ordinare (Runge-Kutta, extrapolare Richardson, predictor-corector, pentru ecuat ii sti). Ce aduc nou aceste funct ii, fat a de cele analizate n lucrare?

Leonhard Euler (1707, Elvet ia - 1783, Rusia)

http://www-gap.dcs.st-and.ac.uk/ history/Mathematicians/Euler.html

206

Capitolul 10. Rezolvarea ecuat iilor diferent iale ordinare prin metoda Euler

Bibliograe si webograe
[1] D. Ioan, I. Munteanu, B. Ionescu, M. Popescu, R. Popa, M. L az arescu si G. Ciuprina. Metode numerice n ingineria electric a . MATRIX ROM, Bucure sti, Rom ania, a doua ed., 1998. [2] W.H. Press, S.A. Teukolsky, W.T. Vetterling si B.P. Flannery. Numerical Recipes in C, The Art of Scientic Computing, Second Edition . Cambridge University Press, 1992, http://www.nrbook.com/a/bookcpdf.php.

207

You might also like