Sunteți pe pagina 1din 237

Mihai Rebican, Gabriela Ciuprina, Daniel Ioan

Metode numerice ingineria n electric a


Indrumar de laborator pentru studentii facultii de Inginerie at Electric a

2011

Cuprins
0 Preliminarii asupra Laboratorului de Metode Numerice 0.1 Informatii utile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 0.1.1 0.1.2 0.1.3 0.1.4 0.1.5 0.2 0.3 0.4 Lista de lucrri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a Calendar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Regulament . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modul de notare al laboratorului . . . . . . . . . . . . . . . . . . . Calculul notei nale la disciplina Metode Numerice . . . . . . . . . 1 1 1 2 2 3 4 4 5 6 6

Modul de desfurare a unei edinte de seminar sau laborator . . . . . . . as s Programe demonstrative . . . . . . . . . . . . . . . . . . . . . . . . . . . . Implementare in C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 0.4.1 0.4.2 0.4.3 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Vectori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 15

1 Implementarea structurilor de date i a algoritmilor numerici s 1.1 1.2

Caracterizarea lucrrii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 a Descrierea pseudolimbajului . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.2.1 1.2.2 Structuri de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Structuri de control . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

1.3 1.4

Tipuri abstracte de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Complexitatea algoritmilor . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 i

ii

CUPRINS

1.5 1.6 1.7

Chestiuni de studiat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Modul de lucru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 1.7.1 1.7.2 Exemple rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Exemple propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

1.8 Intrebri i probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 a s 2 Erori rezolvarea problemelor numerice n 2.1 2.2 53

Caracterizarea lucrrii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 a Principiul lucrrii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 a 2.2.1 2.2.2 2.2.3 Erori de rotunjire . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Erori inerente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Erori de trunchiere . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

2.3 2.4

Chestiuni de studiat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Modul de lucru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 2.4.1 2.4.2 2.4.3 2.4.4 Determinarea erorii relative de rotunjire a sistemului de calcul . . . 60 Analiza propagrii erorilor inerente . . . . . . . . . . . . . . . . . . 60 a Analiza erorii de trunchiere . . . . . . . . . . . . . . . . . . . . . . 61 Implementarea unor algoritmi cu controlul erorii . . . . . . . . . . . 63

2.5

Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 2.5.1 2.5.2 Exemple rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Exemple propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

2.6 Intrebri i probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 a s

3 Rezolvarea sistemelor de ecuatii liniare prin metoda Gauss. Strategii de pivotare rez n 3.1 Metoda Gauss fr pivotare . . . . . . . . . . . . . . . . . . . . . . . . . . 69 aa 3.1.1 3.1.2 Caracterizarea metodei . . . . . . . . . . . . . . . . . . . . . . . . . 69 Principiul metodei . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 LMN, Draft din 30 septembrie 2011

CUPRINS

iii

3.1.3 3.1.4 3.1.5 3.2

Pseudocodul algoritmului Gauss fr pivotare . . . . . . . . . . . . 71 aa Analiza complexitii . . . . . . . . . . . . . . . . . . . . . . . . . . 72 at Analiza erorilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

Strategii de pivotare rezolvarea sistemelor algebrice liniare . . . . . . . . 74 n 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 Caracterizarea metodei . . . . . . . . . . . . . . . . . . . . . . . . . 74 Principiul metodei . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Pseudocodul algoritmului Gauss cu pivotare partial . . . . . . . . 75 a Analiza complexitii . . . . . . . . . . . . . . . . . . . . . . . . . . 76 at Analiza erorilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

3.3 3.4

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

Cutare de informatii . . . . . . . . . . . . . . . . . . . . . . . . . . 80 a

3.5

Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 3.5.1 3.5.2 Exemple rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Exemple propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

3.6 Intrebri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 a 8 Metode iterative de rezolvare a sistemelor algebrice liniare 8.1 8.2 8.3 8.4 8.5 8.6 93

Caracterizarea metodelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Principiul metodei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Pseudocodul algoritmilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Analiza algoritmilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Chestiuni de studiat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Mod de lucru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 8.6.1 Rezolvarea unor sisteme de ecuatii liniare prin metodele Jacobi/Gauss-Seidel100 Document disponibil la http://mn.lmn.pub.ro

iv

CUPRINS

8.6.2 8.6.3 8.6.4 8.7

Analiza experimental a algoritmilor . . . . . . . . . . . . . . . . . 102 a Implementarea algoritmilor . . . . . . . . . . . . . . . . . . . . . . 103 Cutare de informatii pe Internet . . . . . . . . . . . . . . . . . . . 103 a

Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 8.7.1 8.7.2 Exemple rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Exemple propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

8.8 Intrebri i probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 a s 10 Analiza numeric a circuitelor electrice liniare regim permanent a n 117

10.1 Caracterizarea lucrrii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 a 10.2 Principiul metodei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 10.3 Pseudocodul metodei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 10.4 Analiza algoritmilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 10.5 Chestiuni de studiat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 10.6 Modul de lucru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 10.6.1 Analiza numeric a unui circuit rezistiv liniar . . . . . . . . . . . . 125 a 10.6.2 Analiza unui circuit de curent alternativ . . . . . . . . . . . . . . . 126 10.6.3 Implementarea algoritmilor . . . . . . . . . . . . . . . . . . . . . . 127 10.6.4 Cutarea de informatii pe Internet . . . . . . . . . . . . . . . . . . 127 a 10.7 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 10.7.1 Exemple rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 10.7.2 Exemple propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 10.8 Intrebri i probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 a s 11 Interpolarea polinomial a functiilor reale a 135

11.1 Caracterizarea metodei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 11.2 Principiul metodei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 11.3 Pseudocodul algoritmilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 LMN, Draft din 30 septembrie 2011

CUPRINS

11.4 Analiza complexitii algoritmilor . . . . . . . . . . . . . . . . . . . . . . . 145 at 11.4.1 Efort de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

11.4.2 Necesar de memorie . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 11.5 Eroarea de interpolare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 11.6 Chestiuni de studiat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 11.7 Mod de lucru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 11.7.1 Interpolarea polinomial a functiilor pe retele uniforme/Cebsev . . 149 a 11.7.2 Analiza experimental a erorilor de interpolare . . . . . . . . . . . . 150 a 11.7.3 Analiza experimental a timpului de calcul necesar interpolrii polinomiale150 a a 11.7.4 Implementarea unor algoritmi de interpolare polinomial . . . . . . 150 a 11.7.5 Cutare de informatii pe Internet . . . . . . . . . . . . . . . . . . . 151 a 11.8 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 11.8.1 Exemple rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 11.8.2 Exemple propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 11.9 Intrebri i probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 a s 14 Derivarea numeric a functiilor reale a 163

14.1 Caracterizarea metodelor de derivare numeric . . . . . . . . . . . . . . . . 163 a 14.2 Principiile metodelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 14.3 Analiza algoritmilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 14.4 Pseudocodul metodei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 14.5 Chestiuni de studiat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 14.6 Modul de lucru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 14.6.1 Evaluarea numeric a primei derivate . . . . . . . . . . . . . . . . . 169 a 14.6.2 Analiza experimental a erorii de derivare numeric . . . . . . . . . 170 a a 14.6.3 Analiza derivrii numerice de ordin superior . . . . . . . . . . . . . 170 a 14.6.4 Implementarea algoritmului . . . . . . . . . . . . . . . . . . . . . . 171 14.6.5 Cutare de informatii pe Internet . . . . . . . . . . . . . . . . . . . 171 a Document disponibil la http://mn.lmn.pub.ro

vi

CUPRINS

14.7 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 14.7.1 Exemple rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 14.7.2 Exemple propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 14.8 Probleme i s ntrebri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 a 15 Integrarea numeric a functiilor reale a 177

15.1 Caracterizarea metodelor de integrare numeric . . . . . . . . . . . . . . . 177 a 15.2 Principiul metodei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 15.3 Pseudocodul algoritmilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 15.4 Analiza algoritmilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 15.5 Chestiuni de studiat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 15.6 Modul de lucru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 15.6.1 Calculul integralei unor functii elementare . . . . . . . . . . . . . . 183 15.6.2 Analiza erorii la integrarea numeric . . . . . . . . . . . . . . . . . 183 a 15.6.3 Implementarea algoritmului . . . . . . . . . . . . . . . . . . . . . . 184 15.6.4 Cutare de informatii pe Internet . . . . . . . . . . . . . . . . . . . 184 a 15.7 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 15.7.1 Exemple rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 15.7.2 Exemple propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 15.8 Probleme i s ntrebri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 a 16 Rezolvarea numeric prin metode iterative a ecuatiilor neliniare a 195

16.1 Caracterizarea lucrrii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 a 16.2 Principiul lucrrii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 a 16.3 Pseudocodul algoritmilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 16.4 Analiza algoritmilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 16.5 Chestiuni de studiat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 16.6 Modul de lucru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 LMN, Draft din 30 septembrie 2011

CUPRINS

vii

16.6.1 Rezolvarea unor ecuatii neliniare prin diferite metode iterative . . . 203

16.6.2 Analiza experimental a erorilor i a timpului de calcul la rezolvarea prin metode it a s 16.6.3 Implementarea algoritmilor de rezolvare iterativ a ecuatiilor neliniare205 a 16.6.4 Cutare de informatii pe Internet . . . . . . . . . . . . . . . . . . . 205 a 16.7 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 16.7.1 Exemple rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 16.7.2 Exemple propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 16.8 Intrebri i probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 a s

18 Rezolvarea ecuatiilor diferentiale ordinare cu conditii initiale prin metoda Euler215 18.1 Caracterizarea metodei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 18.2 Principiul metodei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 18.3 Pseudocodul metodei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 18.4 Analiza algoritmului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 18.5 Chestiuni de studiat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 18.6 Mod de lucru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 18.6.1 Rezolvarea unor ecuatii diferentiale de ordin 1 . . . . . . . . . . . . 221

18.6.2 Analiza experimental a erorilor i a timpului de calcul functie de pasul de integr a s n

18.6.3 Rezolvarea unei ecuatii diferentiale caracteristice unui circuit electric de ordinul I22 18.6.4 Implementarea algoritmului ntr-un limbaj de programare i testarea rutinei.224 s 18.6.5 Cutare de informatii pe Internet . . . . . . . . . . . . . . . . . . . 224 a 18.7 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 18.7.1 Exemple rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 18.7.2 Exemple propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 18.8 Probleme i s ntrebri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 a 19 Analiza numeric a circuitelor electrice regim tranzitoriu a n Bibliograe i webograe s Document disponibil la http://mn.lmn.pub.ro 227 228

Capitolul 0 Preliminarii asupra Laboratorului de Metode Numerice

0.1

Informatii utile

0.1.1

Lista de lucrri a

Index L1 L2 L3,4 L8 L10 L11 L14 L15 L16 L18 L20

Nume lucrare Algoritmi si structuri de date Erori in calculele numericei Metoda Gauss - fr i cu pivotare aas Metode iterative pentru rezolvarea sistemelor liniare Rezolvarea circuitelor rezistive liniare Interpolarea numeric a functiilor a Derivarea numeric a functiilor a Integrarea numeric a functiilor a Rezolvarea ecuatiilor neliniare Rezolvarea ecuatiilor diferentiale Rezolvarea circuitelor regim tranzitoriu n 1

Capitolul 0. Preliminarii asupra Laboratorului de Metode Numerice

0.1.2

Calendar
Tema Prezentarea laboratorului L1 + L2 - seminar L1 + L2 - laborator L3,4 + L8 - seminar L3,4 + L8 - laborator L10 seminar T1 - Test de aplicatii numerice - partea I L11 - seminar L11 - laborator L14 + L15 - seminar L14 + L15 - laborator L16 + L18 - seminar L16 + L18 - laborator T2 - Test de aplicatii numerice - partea II i test de implementare s

Sptmna a a a 1 2 3 4 4 6 7 8 9 10 11 12 13 14

0.1.3

Regulament

Un student poate intra examen doar dac particip la minim 5 edinte de seminar n a a s (din maxim 6), 4 edinte de laborator (din maxim 5) i cele dou teste de aplicatii numerice s s a i implementare. Practic, se admite o singur absent la seminar i o singur absent la s a a s a a laborator. De mentionat c laboratorul reprezint 50 % din punctajul notei la aceast disciplin. a a a a Dei teoretic este posibil ca un student care are punctaj zero la laborator s promoveze s a aceast disciplin, acumulnd punctaj maxim la examen, experienta anilor anteriori nu a a a a oferit niciun astfel de exemplu. Deoarece posibilitile de recuperare a laboratoarelor sunt limitate, refacerea unei at lucrri de seminar sau laborator se poate realiza numai cursul sptmnii afectate a n a a a lucrrii i numai msura care exist un calculator liber. Este permis refacerea a s n a n a a lucrrii numai la grupele din seria de care apartine studentul respectiv. Nu se refac a lucrri de seminar sau laborator la sfritul semestrului! a a s Inainte de ecare edint de seminar se recomand ca ecare student s citeasc s a a a a lucrarea care urmeaz a efectuat, conform calendarului. Se va pune accent special a a n pe aspecte teoretice i exemple rezolvate. s LMN, Draft din 30 septembrie 2011

0.1. Informatii utile

La nceputul unei edinte de laborator ecare student trebuie s prezinte un pres a referat al lucrrii care urmeaz a efectuat, conform calendarului. Studentii care nu a a a au pre-referate nu vor primiti s efectueze lucrarea. Pe parcursul edintei, studentul a s si completeaz pre-referatul cu date, grace i concluzii. Studentii trebuie sa aib la ei a s a hartie milimetric pentru trasarea gracelor. Astfel, se realizeaz referatul, care trebuie a a predat la sfritul edintei respective. a s s

0.1.4

Modul de notare al laboratorului

Fiecare tem de laborator (L*) este punctat cu o not a a a ntre 1 i 10 pentru referat. s Referatul va contine: 1. Numele studentului i grupa din care face parte s 2. Numele cadrului didactic ndrumator 3. Titlul lucrarii 4. Scopul lucrarii 5. Rezultate experimentale, grace, etc. (conform cerintelor din ndrumar) 6. Observatii i concluzii s Pre-referatul va contine punctele 1, 2, 3, 4 din referat. Foarte important: Observatiile i, mai ales, concluziile au ponderea cea mai mare nota primit pe s n a referat. Un referat fr observatii i concluzii poate avea nota maxim 4 din 10. aa s a Dou sau mai multe referate care contin observatii i concluzii identice vor avea a s ecare nota 1. Referatul nu trebuie s contin: descrierea lucrrii, principiul algoritmilor, pseua a a docodul algoritmilor. Testele de aplicatii numerice (din sptmnile 7 i 14) vor realizate scris i con a a a s n s stau rezolvarea numeric a unor exemple cu ajutorul metodelor studiate. Testele n a de aplicatii vor punctate cu note ntre 1 i 10. s Document disponibil la http://mn.lmn.pub.ro

Capitolul 0. Preliminarii asupra Laboratorului de Metode Numerice

Testul de implementare (din sptmna 14) va consta implementarea limbajul a a a n n de programare C sau limbajul Scilab a unuia din pseudocodurile lucrrilor studiate. a Testul de implementare va punctat cu o not a ntre 1 i 10. Pentru pregtirea s a acestui test, studentii vor ncurajati s exerseze implementarea algoritmilor pe a parcursul edintelor de laborator. s Nota de laborator reprezint 50% din nota disciplinei Metode Numerice Ingineria a n Electric, i se calculeaz astfel: a s a 25% pentru referate; 20% pentru cele dou teste de aplicatii numerice; a 5% pentru testul de implementare.

0.1.5

Calculul notei nale la disciplina Metode Numerice

Modul de calcul al notei nale va prezentat la curs.

0.2

Modul de desfurare a unei edinte de seminar as s sau laborator

Fiecare edint de seminar sau laborator dureaz 2 ore i are o anumit tematic (vezi s a a s a a subcapitolul 0.1.2). cadrul edintei de seminar sunt prezentate studentilor de ctre cadrul didactic In s a urmtoarele chestiuni despre lucrarea respectiv: aspecte teoretice i exemple rezolvate. a a s De asemenea, se vor prezenta pe scurt chestiunile de studiat si modul de lucru, aspecte necesare pentru efectuarea lucrrii de laborator sptmna urmtoare. a n a a a a De mentionat c exemplele rezolvate la ecare edint de seminar sunt esentiale pentru a s a cele dou teste de aplicatii numerice. a Activitile propriu-zise pe care trebuie s le desfoare ecare student at a as ntr-o edint s a de laborator sunt prezentate mai jos. Prima activitate const exploatarea unor programe demonstrative ce ilusa n treaz tematica lucrrii. a a Sistemul de operare sub care se lucreaz este Linux (http://www.linux.org/). Proa gramele demonstrative sunt scrise in Scilab (http://www.scilab.org/) dar exploatarea LMN, Draft din 30 septembrie 2011

0.3. Programe demonstrative

Figura 1: Meniul principal al programelor demonstrative. lor nu necesit cunoaterea acestui limbaj de programare. urma exploatrii acestor proa s In a grame, studentul trebuie s redacteze un referat, conform cerintelor ecrei lucrri, i a a a s s predea la sfritul edintei. a l a s s msura timpului disponibil, se va implementa cel putin unul din algoritmii studiati In a cadrul temei respective. Implementarea se va efectua limbajul C sau limbajul Scilab, n n concordant cu pseudocodul prezentat lucrare. n a n

0.3

Programe demonstrative

Pentru lansarea programelor demonstrative faceti un singur clic pe icoana cu sigla LMN. continuare urmati modul de lucru descris In n ndrumar. Observatie: programele demonstrative sunt disponibile la adresa http://mn.lmn.pub.ro/. Pentru a putea lucra cu ele trebuie s aveti instalate sistemul de a operare Linux i pachetul de programe Scilab. Arhiva LMN.tar.gz trebuie decomprimat s a i dezarhivat. Lansati Scilab i la consola acestuia tastati exec(main.sci). Meniul s a s principal este cel prezentat gura 1. n Not important a a Document disponibil la http://mn.lmn.pub.ro

Capitolul 0. Preliminarii asupra Laboratorului de Metode Numerice

Pentru ca un referat s e luat considerare, prezenta la laborator este obligatorie. a n Este obligatoriu ca exploatarea acestor programe s e fcut sub a a a ndrumarea cadrului didactic. Exercitii: 1. Intrati contul dvs.; n 2. Remarcati icoana LMN i executati un singur clic pe ea; s 3. Inchideti programele demonstrative.

0.4

Implementare in C

Inainte de toate, v este util o re a a mprosptare a cunotiintelor de C dobndite anii a s a n anteriori. Metodele numerice ce vor studiate implementeaz exclusivitate algoritmi numerici, a n care efectueaz de cele mai multe ori calcule cu vectori i matrice. a s De aceea, cele ce urmeaz vom face cteva consideratii asupra declarrii i alocrii n a a a s a vectorilor i matricelor, astfel at activitatea de programare cadrul acestui laborator s nc n s e ct mai ecient. a a a Pentru nceput a, v recomandm s studiati cu atentie urmtoarele exemple i ns a a a a s apoi, pentru ntelegerea lor, s cititi paragrafele urmtoare. a a

0.4.1

Exemple

La adresa http://mn.lmn.pub.ro/ gsiti dou exemple pentru a v familiariza cu a a a stilul de lucru al acestui laborator. 1. Creati un director numit L0 cu comanda mkdir L0 2. Descarcati ierele nrutil lmn.c, nrutil lmn.h, aduna vec.c, rw matrix.c. s 3. Comentati continutul acestor iere. s 4. Compilati primul exemplu cu comanda gcc aduna_vec.c nrutil_lmn.c -o aduna_vec LMN, Draft din 30 septembrie 2011

0.4. Implementare in C

5. Executati programul cu comanda ./aduna_vec 6. Compilati al doilea exemplu cu comanda gcc rw_matrix.c nrutil_lmn.c -o rw_matrix 7. Executati programul cu comanda ./rw_matrix Observatie: Comanda de compilare contine un ier surs C ( care se a funtia main i o s a n a s n functie ce implementeaz un anumit pseudocod), apoi ierul nrutil lmn.c ( care se a s a functiile de alocare/dealocare de memorie). Numele ce urmeaz dup -o este numele a a a programului executabil generat. Iat continutul acestor iere: a s Fiierul aduna vec.c s
#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);

Document disponibil la http://mn.lmn.pub.ro

Capitolul 0. Preliminarii asupra Laboratorului de Metode Numerice

/* 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]; }

Fiierul rw matrix.c: s
#include "nrutil_lmn.h" 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); }

Fiierul nrutil lmn.c s


#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");

LMN, Draft din 30 septembrie 2011

0.4. Implementare in C

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 *)); 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)); }

Document disponibil la http://mn.lmn.pub.ro

10

Capitolul 0. Preliminarii asupra Laboratorului de Metode Numerice

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)); }

Fiierul nrutil lmn.h s


#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[]); 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

C exist o strns corespondent In a a a a ntre adrese (pointeri) i tablouri. acest paragraf s In vom considera tablourile unidimensionale. Valoarea reprezentat de a[j] este acelai lucru cu *(a+j) adic continutul adresei a s a obtinute incrementnd pointer-ul a cu j. O consecint a acestei denitii este aceea c a a a dac a este adresa unei locatii valide, atunci a[0] este a ntotdeauna denit. Tablourile unidimenionale au C, mod natural, originea 0. Un ir denit de n n n s float b[4] LMN, Draft din 30 septembrie 2011

0.4. Implementare in C

11

are referintele valide b[0], b[1], b[2] i b[3], dar nu i b[4]. s s Problema este c multi algoritmi sunt descrii mod natural cu indici care a s n ncep de la 1. Cu sigurant c aceti algoritmi pot modicati, dar aceasta presupune o aritmetic a a s a suplimentar operarea cu indici, lucru care nu este prea plcut. Putem a folosi a n a ns puterea limbajului C pentru ca aceast problem s dispar. Ideea este simpl: a a a a a float b[4], *bb; bb = b - 1; Pointer-ul bb indic acum o locatie a naintea lui b. consecint, elementele bb[1], In a bb[2], bb[3] i bb[4] exist i vectorul bb are indici ce pornesc de la 1. s as Uneori este convenabil s avem vectori care pornesc din 0, iar alteori este convenabil s a a avem vectori care pornesc din 1. De exemplu, coecientii unui polinom a0 + a1 x + . . . an xn necesit un vector cu indici ce a ncep cu 0, pe cnd termenul liber al unui sistem de ecuatii a bi , i = 1, . . . , n necesit un vector cu indici ce a ncep din 1. Pentru a evita rescrierea algoritmilor ce sunt dedui mod natural cu indici ce pornesc s n de la 1, puteti folosi o functie cu urmtoarea denitie. a typedef float *VECTOR; 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; } Aceast functie aloc un vector de variable de tip float, care vor accesate cu indici a a cuprini s ntre nl i nh. s O utilizare tipic a acestei functii este a float *b; b = vector(1,7); Document disponibil la http://mn.lmn.pub.ro

12

Capitolul 0. Preliminarii asupra Laboratorului de Metode Numerice

Aceast functie precum i functii similare ce aloc vectori de a s a ntregi se gsesc ierul a n s nrutil lmn.c pe care puteti descrca de la adresa http://mn.lmn.pub.ro/. l a Acest ier contine i rutinele corespunztoare de dealocare. De exemplu, pentru s s a dealocarea memoriei ocupate de vectorul denit mai sus, instructiunea este free_vector(b,1,7);

0.4.3

Matrice

Problema indicilor ce pornesc de la 0 sau de la 1 apare i cazul matricelor. s n In sintaxa C, lucrul cu tabele bidimensionale este putin mai complicat. S considerm o a a valoare real a[i][j] unde i i j sunt a s ntregi. Un compilator de C va genera coduri main diferite pentru aceast referint, aceasta depinznd de declaratia pentru variabila s a a a a a. Dac a a fost declarat de dimensiune x, de exemplu float a[2][4] atunci codul a a a main ar putea descris astfel: la adresa a adun de 4 ori i, apoi adun j i s a a a s ntoarce valoarea astfel adresat. Observati c valoarea constant 4 trebuie cunoscut pentru a a a a a efectua mod corect calculele. n S presupunem c a a fost declarat ca float **a. Atunci codul main a[i][j] este a a s a la adresa a adun i, valoarea astfel adresat consider-o o nou adres, la care adun j a a a a a i s ntoarce valoarea astfel adresat. a Ilustrarea celor dou moduri de accesare a unei valori este dat gura 2. Observati a a n c al doilea caz nu este necesar cunoaterea dimensiunii matricei i c nu este nevoie a n a s s a de nici o nmultire. O indirectare suplimentar a nlocuiete aceste informatii. Aceast a s a doua schem o recomandm pentru lucrul la laboratorul de metode numerice. a a Ideea pe scurt: vom evita tablourile bidimensionale de dimensiune x. Ele nu sunt a structuri de date potrivite pentru reprezentarea matricelor calculele tiintice. n s

LMN, Draft din 30 septembrie 2011

0.4. Implementare in C

13

**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 scheme de memorare pentru matricea m. Liniile a ntrerupte reprezint a pointeri la adrese, iar liniile continue conecteaz locatii de memorie secventiale. (a) a Pointer la un tablou bidimensional de dimensiune xat; (b) Pointer la un tablou de a pointeri ctre pointeri la linii. a

Document disponibil la http://mn.lmn.pub.ro

14

Capitolul 0. Preliminarii asupra Laboratorului de Metode Numerice

LMN, Draft din 30 septembrie 2011

Capitolul 1 Implementarea structurilor de date i a algoritmilor numerici s

1.1

Caracterizarea lucrrii a

Rezolvarea problemelor tiintice i tehnice cu ajutorul calculatorului numeric pres s supune identicarea unei metode matematice de rezolvare i apoi implementarea acesteia s pe un sistem de calcul. afara algoritmului propriu-zis de rezolvare, un rol la fel de important implementare In n nal, programul se bazeaz pe algoritm are i alegerea exact a structurilor de date. In l s a a (descrierea operatiilor ce vor efectuate pentru obtinerea solutiei) i pe structura de s date (modul care se reprezint datele de intrare, variabilele intermediare i datele de n a s ieire). Pentru descrierea structurilor de date i a algoritmilor se poate utiliza un limbaj s s de programare (Basic, FORTRAN, Pascal, C, etc.) sau un pseudolimbaj cu o sintax mai a putin rigid. Pentru a evidentia invarianta algoritmilor la limbajul ales se prefer a doua a a metod. a Scopul acestei lucrri este de a familiariza utilizatorii cu gndirea algoritmic struca a a turat (prin folosirea pseudocodului), de a evidentia metodele de implementare a pseua docodului diferite limbaje de programare i, nu ultimul rnd, de a evidentia importanta n s n a tipurilor abstracte de date cu caracter matematic (vectori, matrice, numere complexe, etc.). 15

16

Capitolul 1. Implementarea structurilor de date i a algoritmilor numerici s

1.2

Descrierea pseudolimbajului

Pseudocodul (pseudolimbajul) este o metod simpl i ecient pentru reprezentarea a as a unui algoritm i a structurilor de date asociate. Pseudocodul este de fapt un text alctuit s a din linii (rnduri), ecare continnd, de regul, o declaratie (al crei scop principal const a a a a a descrierea datelor) sau o instructiune (care descrie o operatie ce va efectuat). n a O linie de pseudocod este alctuit din cuvinte i simboluri (caractere speciale nealfanua a s merice). Anumite cuvinte, cu o semnicatie bine determinat, independente de aplicatie, a se numesc cuvinte cheie i pentru a deosebite de celelalte cuvinte, specice aplicatiei s sunt de obicei ngroate. s Orice linie poate contine precizri suplimentare, numite comentarii, care ajut la a a elegerea pseudocodului, fr s fac parte din descrierea propriu-zis a algoritmului nt aa a a a sau a structurii de date. Comentariile sunt plasate la sfritul liniei cu caracterul ;. as

1.2.1

Structuri de date

Declaratiile se refer la datele cu care se opereaz i care pot de tip simplu (funda a as mental) sau structurate (agregate). Se consider urmtoarele categorii de date fundamentale: a a logic - date cu dou valori (0 = fals i 1 = adevrat); a s a ntreg - date care pot avea valori ntregi; real - aproximri ale numerelor reale; a caracter - liter, cifr sau semn special (aritmetic sau de punctuatie). a a Exemple de declaratii ale unor variabile de tip fundamental: logic l1, l2, l3 ntreg i, j, s real a, m, x, j caracter c Se constat c o declaratie contine cuvntul cheie ce specic tipul, urmat de lista nua a a a melor variabilelor de tipul respectiv, nume separate prin virgul. Numele variabilelor sunt a LMN, Draft din 30 septembrie 2011

1.2. Descrierea pseudolimbajului

17

cuvinte alctuite din litere i cifre (primul caracter trebuie s e liter) i au semnicatia a s a a s limitat la aplicatia respectiv. Se recomand ca numele variabilelor s e sugestiv alese a a a a (de exemplu: masa, volum, curent, etc.), iar pentru eliminarea ambiguitilor, at ecare mrime cu care se opereaz a a ntr-o problem s aib propria sa declaratie, eventual a a a it de un comentariu: nsot a real q real i ; sarcina corpului ; intensitatea curentului

Pentru rezolvarea unor probleme mai complicate, tipurile fundamentale de date nu sunt suciente, ci este necesar o agregare a datelor. Acest lucru se realizeaz prin a a folosirea cuvintelor cheie: tablou - structur de date ce contine un numr cunoscut de elemente de acelai tip; a a s nregistrare - structur de date ce poate contine elemente de tipuri diferite. a O declaratie de variabil de tip tablou contine cuvntul cheie tablou, numele tabloului a a (variabilei) i dimensiunea acestuia. s Exemple de declaratii 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 i b este un tablou de 7 s ntregi Cu toate c tabloul are un singur nume pentru a ntreaga structur de date, elementele a acestuia se identic folosind indexul (numrul de ordine al elementului), ca de exemplu: a a V (1), V (2), b(5), etc. pseudocod se permite i folosirea notatiilor V1 , V2 , b5 , etc. sau In s Vi , cu conditia ca i s e cuprins a ntre 1 i dimensiunea tabloului (pentru tabloul V de s nau sus, 1 i 3). Exemplu de declaratie a unei nregistrri: a nregistrare punct logic cartezian real x1 real x2

Document disponibil la http://mn.lmn.pub.ro

18

Capitolul 1. Implementarea structurilor de date i a algoritmilor numerici s

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

care reprezint monomul axn , descris de ordinul a ntreg n i coecientul real a. s Referirea la un element al nregistrrii se face prin numele a nregistrrii urmat de nua mele cmpului (elementului), nume separate prin caracterul ., de exemplu: monom.a, a punct.cartezian, etc. pseudolimbaj se admit mai multe niveluri de agregare, deci se pot construi tabele In de tabele, tablou de nregistrri sau alte combinatii. a Pentru a uura astfel de constructii se introduce cuvntul cheie tip, care atunci cnd s a a precede o declaratie are ca efect extinderea tipurilor standard logic, ntreg, real, caracter, tablou, nregistrare cu un nou tip de date denit de utilizator i indicat de numele s variabilei introdus prin declaratia respectiv. a De exemplu: tip tablou real vector[3] ; introduce tipul vector nregistrare monom ; introduce tipul monom ntreg n real a

Declaratia: tip tablou monom polinom[10]

introduce tipul polinom ca ind un tablou de 10 elemente, ecare element ind de tip monom. LMN, Draft din 30 septembrie 2011

1.2. Descrierea pseudolimbajului

19

1.2.2

Structuri de control

Instructiunile unui pseudocod descriu operatiile pe care le va efectua sistemul de calcul cu datele descrise anterior prin declaratii. Instructiunile sunt de dou feluri: simple i a s structurate. Instructiunile simple sunt: de atribuire; de intrare; de ieire. s Instructiunea de atribuire are sintaxa: variabil = expresie a care variabil este numele unei variabile a crei valoare va modicat urma n a a a n instructiunii, iar expresie este o constructie sintactic alctuit din constante, variabile, a a a operatori i paranteze, dup regulile uzuale din algebr. Efectul executiei instructiunii de s a a atribuire const evaluarea expresiei i modicarea concordant a variabilei al crei a n s n a a nume se a la stnga semnului egal. a a Se consider c operanzii care intervin expresii au valori corespunztoare unuia din a a n a tipurile fundamentale. Dac operanzii sunt de tip logic, atunci se admit operatorii logici a nu, sau, i, ca exemplele: s n logic l1, l2, l3 l1 = nu (l2) l3 = l1 sau l2 l3 = l1 i l2 s

Dac operanzii sunt numerici (real sau a ntreg) se admit operatori aritmetici (+, -, *, /) sau de relatie (=, =, , , <, >), ca exemplele: n real a, b, x, y; logic l1; y = (ax + b)/(2x b) l1 = (x b) i (x > a) s Document disponibil la http://mn.lmn.pub.ro

20

Capitolul 1. Implementarea structurilor de date i a algoritmilor numerici s

primul caz rezultatul este de tip numeric, iar al doilea caz, de tip logic. In n Operanzii de tip caracter admit doar operatori de relatie (se admite ordonarea lexi cograc conform codului ASCII), ca exemplul: a n l2 = C > A ; caracterul continut de variabila C este ulterior literei A

Instructiunile de intrare-ieire au sintaxa: s citete variabile s scrie variabile Prima instructiune are ca efect transferul pe canalul de intrare al unei valori (de exemplu introducerea ei de la tastatur), care modic valoarea variabilei specicate, iar a doua a a are ca efect transferul valorii variabilei pe canalul de ieire (de exemplu aarea pe ecran s s sau tiprirea la imprimant). a a De exemplu, pseudocodul: real x, y, s, p citete x, y s s=x+y p = xy scrie s, p stop

reprezint un program simplu, capabil s calculeze suma i produsul a dou numere reale. a a s a Programul se ncheie printr-o alt instructiune simpl, cu sintaxa: a a stop care are ca efect terminarea executiei programului respectiv. Pentru realizarea unor operatii mai complicate se folosesc afara instructiunilor sim n ple, instructiunile structurate, care sunt: secventa; decizia (cu sau fr alternativ); aa a LMN, Draft din 30 septembrie 2011

1.2. Descrierea pseudolimbajului

21

ciclul (cu test initial, cu test nal sau cu contor); rutina (procedur sau functie). a Secventa (sau blocul de instructiuni) reprezint un ir de instructiuni simple sau struc a s turate (scrise cte una pe linie, linii succesive), care se execut una dup alta, ordinea a n a a n care au fost scrise. n Programul anterior este un exemplu de secvent. a Decizia este o instructiune care permite controlul executiei i are una din urmtoarele s a variante de secvent : a decizia simpl a dac conditie atunci a secvent a

decizia cu alternativ a dac conditie atunci a secvent 1 a altfel secventa 2

care conditie este o expresie de tip logic, iar secventa este o secvent de una sau n a mai multe instructiuni. Pentru a uura elegerea acestei instructiuni se constat c s nt a a secvent ele sunt scrise indentat (retrase fat de cuvntul cheie dac). urma executiei a a a In acestei instructiuni se evalueaz expresia logic conditie. Dac valoarea rezultat este a a a a adevrat, atunci se execut secventa (respectiv secventa 1), altfel se continu cu a a a a instructiunea urmtoare (respectiv se execut secventa 2). a a Exemple de instructiuni de decizie: ; functia matematic modul y = |x| a dac x 0 atunci a y=x altfel y = x Document disponibil la http://mn.lmn.pub.ro

22

Capitolul 1. Implementarea structurilor de date i a algoritmilor numerici s

se poate folosi pseudocodul:

Pentru implementarea functiei denite pe portiuni: 0, x < 1 y= 2x, 1 x 1 2 x>1 x, dac x < 1 atunci a y=0 altfel dac (x 1) i (x 1) a s y = 2x altfel y=x

Ciclul reprezint o instructiune care permite repetarea unei secvente. Se deosebesc trei a feluri de cicluri: cu test initial; cu test nal; cu contor. Ciclul cu test initial are sintaxa: ct timp conditie repet a a secventa Efectul este evaluarea expresiei logice conditie. Dac rezultatul este armativ (adevrat), a a atunci se execut secventa i ciclul se reia pn cnd conditie devine fals, dup care se a s a a a a a sare peste secvent i se continu cu urmtoarea instructiune. Se constat c este posia s a a a a bil repetarea innit a ciclului dac valoarea logic a conditiei rmne mereu adevrat. a a a a a a a a Este responsabilitatea programatorului s asigure caracterul nit al ciclului. a exemplul urmtor: In a k=1 s=0 ct timp ak > 0 repet a a LMN, Draft din 30 septembrie 2011

1.2. Descrierea pseudolimbajului

23

s = s + ak k =k+1 scrie s

este utilizat ciclul cu test initial pentru a aduna elementele unui tablou pn la alnirea a a nt primului element negativ. Ciclul cu test nal are sintaxa: repet a secvent a pn cnd conditie a a a

secventa ind executat repetat pn cnd conditie devine adevrat. Spre deosebire a a a a a a de ciclul cu test initial, acest caz corpul ciclului este executat cel putin o dat. n a exemplul urmtor se calculeaz cu eroare impus suma seriei cu termenul general In a a a k (1) /k! ntreg k real s, t, eps t=1 k=1 s=0 repet a t = t k s=s+t k =k+1 pn cnd |t| < eps a a a

Ciclul cu contor permite repetarea unei secvente de un numr determinat de ori. Sin a taxa ciclului cu contor este: pentru contor = val in, val n, pas repet a secvent a

Document disponibil la http://mn.lmn.pub.ro

24

Capitolul 1. Implementarea structurilor de date i a algoritmilor numerici s

care contor este numele unei variabile de tip n ntreg, val in, val n i pas sunt s constante sau expresii de tip ntreg. Secventa de instructiuni din corpul ciclului este repetat pentru valori succesive ale contorului, pornind de la valoarea initial val in, a a incrementat cu pasul pas pn cnd acesta depete valoarea nal val n. Dac a a a as s a a n instructiune lipsete valoarea pas se presupune c aceasta are valoarea implicit 1. s a a exemplul urmtor: In a s=0 pentru k = 1, n s = s + ak scrie s

se calculeaz suma primelor n elemente ale tabloului a. a Se alnesc des situatii care o anumit secvent de instructiuni trebuie executat de nt n a a a mai multe ori, momente diferite ale executiei unui program. Pentru a evita rescrierea n de mai multe ori a acestei secvente se folosete conceptul de rutin. s a O rutin reprezint o secvent de declaratii i instructiuni creia i se atribuie un nume. a a a s a Dac a ntr-un program se face apel la o rutin, controlul se transfer rutinei, iar dup a a a ncheierea acesteia se revine programul apelant. consecint, o rutin presupune n In a a pe de o parte denitia acesteia (prin specicarea declaratiilor i instructiunilor care o s alctuiesc), iar pe de alt parte apelul ei. Utilizarea rutinelor este justicat chiar i a a a s n cazul care ele sunt apelate o singur dat program, deoarece ele permit structurarea n a a n modular a unui algoritm. Pentru a realiza aceasta, o rutin trebuie s aib o anumit a a a a a consistent, s a a ndeplineasc o functie bine denit, ceea ce permite reutilizarea ei i a a s n alte programe. Dup modul de apelare, rutinele se a mpart dou categorii: n a proceduri; functii. Procedura este denit printr-o constructie sintactic de forma: a a procedur nume(list parametri formali) a a secventa retur

LMN, Draft din 30 septembrie 2011

1.2. Descrierea pseudolimbajului

25

care nume este numele procedurii alctuit din caractere alfanumerice, iar lista paran a metrilor formali contine nume de variabile separate prin virgule. O parte din parametrii formali sunt parametrii de intrare (ai cror valori provin din programul apelant i se a s transfer procedurii), iar restul sunt parametrii de ieire (ai cror valori se determin a s a a n procedur i se transfer programului apelant). Apelul unei proceduri astfel denite se as a face prin invocarea numelui ei urmat de lista parametrilor actuali: nume (lista de parametri actuali) Parametrii actuali trebuie s concorde ca numr, tip i ordine cu cei formali (dar nu a a s obligatoriu i ca nume). s exemplul urmtor: In a citete a, b s sumaprod (a, b, s, p) scrie s, p sumaprod (s, p, s1, p1) scrie s1, p1

se face apel la procedura denit astfel: a procedur sumaprod (x, y, suma, prod) a real x, y, suma, prod suma = x + y prod = xy retur

care are x, y sunt parametri formali de intrare i suma, prod sunt parametri formali de n s ieire. urma primului apel al acestei proceduri (cu parametri actuali de intrare a, b) se s In calculeaz i se aeaz s = a + b, p = ab, iar urma celui de al doilea apel se calculeaz as s a n a i se aeaz s1 = s + p = a + b + ab, p1 = sp = (a + b)ab. s s a cazul unei proceduri, numrul parametrilor de intrare sau de ieire este arbitrar In a s (poate inclusiv nul). O alt variant de rutin este functia, la care toti parametrii formali sunt parametri de a a a intrare, dar rutina de tip functie ntoarce o valoare. Denitia functiei se realizeaz prin a constructia sintactic: a Document disponibil la http://mn.lmn.pub.ro

26

Capitolul 1. Implementarea structurilor de date i a algoritmilor numerici s

functie nume (lista parametrii formali) secventa ntoarce valoare

Functia poate apelat ca operand a ntr-o expresie, particular n ntr-o atribuire de tipul valoare = nume (lista de parametri actuali) Functia se aseamn cu o procedur cu un singur parametru de ieire dar, fat de a a a s a aceasta, are o exibilitate suplimentar apel. Exemplul urmtor: a n a real a, b, x citete a, b s x = min(a, b)/max(a, b) scrie x

folosete dou functii max i min denite prin: s a s functie max(x, y) ; valoare maxim a real x, y, m dac x > y atunci a m=x altfel m=y ntoarce m

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

LMN, Draft din 30 septembrie 2011

1.3. Tipuri abstracte de date

27

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

1.3

Tipuri abstracte de date

Tipurile abstracte de date reprezint concepte importante ale programrii structurate a a moderne. Un tip abstract de date este o structur de date denit de utilizator (folosind cuvntul a a a cheie tip) completat cu o serie de rutine (proceduri sau functii), care denesc operatiile a ce pot executate cu date de acest tip. acest fel se extind tipurile fundamentale In de date (logic, ntreg, real, care reprezint algebra boolean, inelul Z i corpul IR) prin a a Z s implementarea i a altor structuri matematice (algebrice sau topologice) cum sunt spatiile s vectoriale, corpul numerelor complexe, inelul polinoamelor sau al matricelor. Aceste structuri de prim important matematic se alnesc rezolvarea pe cale a a n a nt n numeric a multor probleme tiintice sau tehnice. Ele nu sunt legate de o anumit a s a aplicatie ci au un caracter general. continuare sunt prezentate pseudocod cteva din tipurile abstracte de date uzuale. In n a Spatiul vectorial n-dimensional
IR n

Un element v = (v1 , v2 , . . . , vn ) al spatiului IRn poate reprezentat ca un tablou cu n componente reale. Operatiile algebrice caracteristice unui spatiu vectorial sunt: adunarea u, v IRn u + v = (u1 , . . . , un ) + (v1 , . . . , vn ) = (u1 + v1 , . . . , un + vn ) nmultirea 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 adv(u, v, w) a

; adunarea vectorilor w = u + v

Document disponibil la http://mn.lmn.pub.ro

28

Capitolul 1. Implementarea structurilor de date i a algoritmilor numerici s

vector u, v vector w pentru i = 1, n wi = ui + vi retur

; date de intrare ; suma - data de ieire s

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

; nmultete vectorul v cu scalarul a s ; data de intrare ; vector de intrare ; rezult w =av a

Spatiul euclidian Spatiul euclidian este un spatiu vectorial nzestrat cu o norm care provine dintr-un a produs scalar:
n

u v = (u1 , u2 , . . . , un ) (v1 , v2 , . . . , vn ) =

ui vi
i=1

unde u, v IRn . Norma euclidian este o aplicatie pozitiv denit: a a : IRn IR u = uu cunoscut i sub numele de modulul vectorului. as Pentru denirea unui spatiu euclidian se folosete pseudocodul: s tip vector euclidian functie produs(u, v) ; produsul scalar euclidian u, v ; factori real p ; produsul scalar p = uv p=0 pentru i = 1, n p = p + ui vi ntoarce p

LMN, Draft din 30 septembrie 2011

1.3. Tipuri abstracte de date

29

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

Inelul polinoamelor Un polinom algebric de gradul n este o constructie de forma: P (x) = a0 + a1 x + a2 x2 + ... + an xn denit de coecientii p = (a0 , a1 , . . . , an ), deci este reprezentabil printr-un tablou real. a Un polinom este un element al unui spatiu liniar (vectorial) deoarece suma a dou poli a noame se realizeaz prin suma coecientilor, iar produsul cu un scalar prin a nmultirea tuturor coecientilor cu scalarul respectiv. Prin produsul a dou polinoame de acelai a s grad se obtine un polinom de grad dublu. Dac: a
n

P (x) =
i=0

ai xi

i s Q(x) =

bi xi ,
i=0

atunci
n n

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

ai x

i i=0

bi xi

right

= a0 b0 + (a0 b1 + a1 b0 )x + (a0 b2 + a1 b1 + a2 b0 )x2 + . . .

O operatie important este cea de evaluare a unui polinom. Pentru a micora efortul a s de calcul, aceasta va efectuat sub forma: a P (x) = a0 + a1 x + a2 x2 + .. + an xn = a0 + x(a1 + x(a2 + x(a3 + x(. . .)))) care evit calculul puterilor xk . a Urmtorul pseudocod permite implementarea acestui tip abstract de date: a tip vector polinom procedur prodp(n, r, q, p); a nmultirea polinoamelor p = rq Document disponibil la http://mn.lmn.pub.ro

30

Capitolul 1. Implementarea structurilor de date i a algoritmilor numerici s

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 pk = pk + ri qj retur

; gradul factorilor ; factori ; rezultat ;variabile intermediare

; gradul monomului rezultat

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

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

Suma a dou matrice: A = [aij ], B = [bi,j ] IRnn se realizeaz pe elemente: a a A + B = [aij + bij ], nmultirea cu un scalar IR este denit de: a A = [aij ], LMN, Draft din 30 septembrie 2011

1.3. Tipuri abstracte de date

31

iar produsul a dou matrice ptrate este o matrice de acelai tip: a a s


n

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

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

Pentru implementarea acestui tip abstract de date se folosete pseudocodul: s tip tablou real matrice (n, n) procedur adm(a, b, c) a ; 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 inm(, b, c) a ; nmultete matricea b cu scalarul s real matrice b ; termeni matrice c ; rezultat pentru i = 1, n pentru j = 1, n cij = bij retur

procedur prodm(a, b, c) a ; nmultirea 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

Document disponibil la http://mn.lmn.pub.ro

32

Capitolul 1. Implementarea structurilor de date i a algoritmilor numerici s

Corpul numerelor complexe C I Un numr complex z = a + jb este reprezentat printr-o pereche de numere reale (a a partea real, b - partea imaginar). a a Adunarea numerelor complexe z1 = a1 +jb1 , z2 = a2 +jb2 se realizeaz conform relatiei: a z1 + z2 = (a1 + a2 ) + j(b1 + b2 ). Elementul neutru fat de adunare este 0 = 0 + j0, iar opusul unui numr complex a a z = (a + jb) = a jb. Inmultirea numerelor complexe z1 = a1 + jb1 , z2 = a2 + jb2 este realizat de operatia: a z1 z2 = (a1 + jb1 )(a2 + jb2 ) = a1 a2 b1 b2 + j(a1 b2 + a2 b1 ). Elementul neutru fat de a nmultire este 1 = 1 + j0, iar inversul unui numr complex a 2 2 1/z = 1/(a + jb) = (a jb)/(a + b ). O functie important este modulul unui numr complex, denit prin: a a |z| = |a + jb| = a2 + b2 .

Urmtorul pseudocod implementeaz acest tip abstract de date: a a tip nregistrare complex real : re real : im

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

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

procedur prodc(u, v, w) a complex u, v complex w

; calculeaz produsul numerelor complexe a ; termeni ; w = uv

LMN, Draft din 30 septembrie 2011

1.3. Tipuri abstracte de date

33

retur

w.re = u.re v.re u.im v.im w.im = u.re v.im + u.im v.re

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

; calculeaz diferenta numerelor complexe a ; termeni

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

functia modulc(u) ; calculeaz modulul numrului complex a a complex u real m m = (u.re u.re + u.im u.im) ntoarce m

Urmtorul exemplu de program: a complex Z1, Z2, Z3, Z4, Z citete Z1, Z2 s prodc (Z1, Z2, Z3) sumac (Z1, Z2, Z4) rapc (Z3, Z4, Z) Document disponibil la http://mn.lmn.pub.ro

34

Capitolul 1. Implementarea structurilor de date i a algoritmilor numerici s

scrie Z stop

permite calculul impedantei complexe echivalente a dou elemente cu impedante complexe a date, conectate paralel. n

1.4

Complexitatea algoritmilor

Calitatea unui algoritm care se presupune c permite obtinerea solutiei corecte este a apreciat prin ecienta sa spatial (memoria necesar datelor i programului) i temporal a a a s s a (timpul de calcul necesar obtinerii solutiei). De exemplu, algoritmul pentru nmultirea matricelor ptrate n dimensionale necesit a a 3n locatii de memorie ( ecare memorndu-se un numr real, element al matricei A, B n a a sau C). Dac dimensiunea n a matricei crete de 10 ori, spatiul necesar crete de 100 ori, a s s motiv pentru care se spune c algoritmul este de ordinul 2 i se scrie M = O(n2 ). a s
2

Pentru evaluarea modului care timpul de calcul depinde de dimensiunea problemei n rezolvat de algoritm, se adopt ca referint timpul necesar efecturii unei operatii elea a a a mentare (adunare sau nmultire de numere reale) i apoi se evalueaz numrul acestor s a a operatii. De exemplu, pentru calculul produsului scalar a doi vectori n dimensionali se efectueaz n 1 adunri i n a a s nmultiri deci un total de 2n 1 operatii. Deoarece la dublarea dimensiunii se dubleaz practic numrul de operatii, se spune ca acest algoritm a a are ordinul de complexitate liniar i se noteaz T = O(n). s a algoritmii numerici timpul de calcul este consumat mai ales operatiile repetate In n ciclic. Ordinul de complexiate este general dat de numrul ciclurilor incluse unul n a n altul, ca exemplele: n c = ab pentru i = 1, n ci = ai bi pentru i = 1, n pentru j = 1, n cij = ai bj ; ordinul 0

; ordinul 1

; ordinul 2

LMN, Draft din 30 septembrie 2011

1.4. Complexitatea algoritmilor

35

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

consecint, produsul scalar a 2 vectori este un algoritm de ordinul 1, T = O(n), iar In a produsul a dou matrice ptrate este de ordinul 3, T = O(n3 ). a a Aceeai problem poate avea doi sau mai multi algoritmi de rezolvare cu ordine de s a complexitate diferite. De exemplu, pentru evaluarea unui polinom se poate folosi procedura: functie 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 intermediar a a

Acest algoritm are ordinul de complexitate T = O(n2 /2), deci timpul de calcul crete s practic cu ptratul gradului polinomului, fat de algoritmul folosit procedura evalp, a a n care are ordinul de complexitate liniar T = O(n) i care este deci mai avantajos. s O metod ecient pentru micorarea timpului de calcul const scoaterea afara a a s a n n ciclurilor a calculelor repetate, care au rezultate identice. De exemplu, dac se dorete a s generarea matricei A = [aij ] IRnn cu aij = f (xi )g(yj ) care evalurile functiilor f n a i g cer un efort de calcul mult mai mare dect o s a nmultire, se poate folosi algoritmul natural: pentru i = 1, n Document disponibil la http://mn.lmn.pub.ro

36

Capitolul 1. Implementarea structurilor de date i a algoritmilor numerici s

pentru j = 1, n aij = f (xi ) g(yj )

cu ordinul de complexitate O(2n2 ), care s-a folosit ca operatie de referint evaluarea n a functiei f sau g. Dac evaluarea functiei f se face afara ciclului interior: a n pentru i = 1, n f x = f (xi ) pentru j = 1, n aij = f x g(yj )

timpul de calcul scade practic la jumtate, numrul de evaluri ale functiilor ind n(n+1) a a a 2 i ordinul de complexitate O(n ). Acest ordin se reduce i mai mult, dac se adopt s s a 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 fcut pe seama a prima variant M = O(n2 + 2n), a doua M = creterii necesarului de memorie. In s a n 2 2 O(n + 2n + 1), iar a treia M = O(n + 4n). La dimensiuni mari ale lui n a, necesarul n ns de memorie suplimentar este nesemnicativ, astfel at varianta a treia, cu timp de calcul nc liniar este cea mai bun. a

1.5

Chestiuni de studiat

1. Analiza experimental a complexitii unui algoritm; a at LMN, Draft din 30 septembrie 2011

1.6. Modul de lucru

37

2. Utilizarea tipurilor abstracte de date electrotehnic; n a 3. Utilizarea unor tipuri abstracte de date ntr-un limbaj de nivel nalt; 4. Cutarea pe Internet a unor informatii legate de implementarea unor structuri de a date.

1.6

Modul de lucru

Pentru desfurarea lucrrii se lanseaz programele demonstrative (clic pe pictograma as a a LMN) i apoi se selecteaz lucrarea Implementarea structurilor de date i a algoritmilor s a s numerici din meniul principal aat. s Se aeaz meniul lucrrii care are dou optiuni: s a a a Analiza algoritmilor Calcule complex n Utilizatorul va selecta succesiv optiunile dorite. a) Analiza experimental a complexitii unui algoritm a at Se selecteaz optiunea Analiza algoritmilor din meniul lucrrii. Aceasta are ca efect a a lansarea unui submeniu din care se pot apela urmtoarele proceduri: a produs scalar a doi vectori n dimensionali; produsul a dou polinoame de grad n; a produsul a dou matrice ptrate de n n elemente. a a Pentru ecare din cele trei cazuri, utilizatorul trebuie s aleag valorile lui n. De exemplu, a a pentru valoarea initial 0, valoare nal 100000 i pas 10000, produsul scalar va apelat, a a s succesiv pentru n = 10000, 20000, 30000, 40000, 50000, 60000, 70000, 80000, 90000, 100000. Programul calculeaz produsul scalar a doi vectori aleatori de dimensiune n i aeaz a s s a n consola Scilab timpul de calcul. Datele trebuie trecute ntr-un tabel de tipul

Document disponibil la http://mn.lmn.pub.ro

38

Capitolul 1. Implementarea structurilor de date i a algoritmilor numerici s

n Timp CPU [s] (produs scalar)

20000 40000 60000 80000 100000

Pentru produsul a dou polinoame, dimensiunile recomandate sunt n = 50, 100, 150, a 200, 250, 300. Pentru produsul a dou matrice, dimensiunile recomandate sunt n = 10, 20, 30, 40, a 50, 60, 70, 80.. Se vor reprezenta grac pe hrtie milimetric cele trei curbe i se vor compara rezula a s tatele cu estimrile teoretice. a Indicatie: se va verica cazul produsului scalar c raportul timp/dimensiune este n a aproximativ constant, cazul produsului a dou polinoame c raportul timp/(dimensiune n a a la ptrat) este aproximativ constant, etc.. a Din datele obtinute cele trei cazuri se va estima timpul CPU al unei operatii ele n mentare (se consider c timpul unei adunri este egal cu timpul unui a a a nmultiri). b) Utilizarea tipurilor abstracte de date electrotehnic n a Se selecteaz optiunea Calcule complex, care are ca efect lansarea unui program ce a n permite efectuarea diferitelor calcule algebrice cu numere complexe. Programul emuleaz a un calculator de buzunar, care folosete notatia polonez invers (operand, operand, ops a a erator), dar care nu opereaz cu numere reale ci cu numere complexe. a Introducerea operanzilor stiv se face prin selectarea butonului: n a Stiv Inserare element. a Selectarea butonului Stiv permite i apelul unor funtii utile ca: a s Stiv Stergere element sau a Stiv Repet v^rf stiv a a a a Programul permite aplicarea unor operatori unari elementului care se a vrful a n a stivei. Acetia sunt: s Operatori unari Opus Operatori unari Invers Operatori unari Conjugat Programul permite i aplicarea unor operatori binari, operanzii ind acest caz penuls n timul i ultimul element (vrful) din stiv. Pentru aceasta selectati, respectiv: s a a LMN, Draft din 30 septembrie 2011

1.6. Modul de lucru

39

Operatori binari Adunare Operatori binari Scdere a Operatori binari ^nmultire I Operatori binari ^mprtire I a Stiva este vizualizat pe ecran pe cinci coloane (numar curent, parte real, parte a a imaginar, modul i argument exprimat radiani. Operatorii unari actioneaz asupra a s n a ultimului element introdus stiv, n a nlocuindu-l cu valoarea obtinut urma aplicrii a n a operatorului, iar stiva nu si modic dimensiunea. a

Operatorii binari folosesc ca operanzi ultimele 2 elemente din stiv iar rezultatul a nlocuiete aceste 2 elemente (stiva se micoreaz cu un element). s s a

consecint operatorii unari pot aplicati, dac stiv se a cel putin un element, In a a n a a iar operatorii binari, dac stiv se a cel putin 2 elemente. a n a a

Stiva este alimentat prin introducerea unui nou numr complex (dimensiunea ei crete a a s cu un element).

Pentru a facilita manipularea stivei sunt disponibili alti 2 operatori cu caracter nenu meric (repet vrful stivei, terge vrful stivei), care modic (incrementeaz respectiv a a s a a a decrementeaz) altimea stivei. a n

Se propune folosirea acestui program rezolvarea unei probleme de electrotehnic i n as anume studiul unui circuit de curent alternativ format din trei impedante Z 1 = 10 + 5j, n s n Z 2 = 3 7j, Z 3 = 5 + 2j conectate mixt (Z 1 paralel cu Z 2 i rezultatul serie cu Z 3 ) alimentat de la o surs cu t.e.m reprezentat complex ca E = 100j. a a n Document disponibil la http://mn.lmn.pub.ro

40

Capitolul 1. Implementarea structurilor de date i a algoritmilor numerici s

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

S3 = 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 Descrcati de la adresa http://mn.lmn.pub.ro/ ierele complex.c, complex.h i a s s elth.c. Fiierele complex.* sunt aceleai cu s s http://www.numerical-recipes.com/pubdom/complex.c.txt, respectiv http://www.numerical-recipes.com/pubdom/complex.h.txt. Studiati modul de im plementare corpul numerelor complexe limbajul C. n ierul elth.c este In s nceput rezolvarea problemei de electrotehnic de la punctul a a b). Comanda de compilare este gcc elth.c complex.c -lm -o elth Programul obtinut se execut cu a ./elth Continuati scrierea programului care v va permite s rezolvati aceeai problem. a a s a Vericati rezultatele cu cele pe care le-ati obtinut la punctul b. d) Cutarea pe Internet a unor informatii legate de implementarea unor structuri de a date Cutati pe Internet biblioteci informatii legate de implementarea matricelor rare (maa trice cu multe elemente nule). Cuvinte cheie recomandate: Sparse Matrix Compression Formats, Sparse Matrix Storage Format. LMN, Draft din 30 septembrie 2011

1.7. Exemple

41

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 ieire ale problemei s real s ; variabile intermediare ntreg i ; introducerea datelor de intrare citete n s citete c s pentru i = 1, n citete ai , bi s ; initializarea solutiei s=0 ; calculul solutiei pentru i = 1, n s = s + ai /bi c ; aarea solutiei s scrie s Se cer: (a) s se estimeze ordinul de complexitate al algoritmului din punct de vedere al a timpului de calcul i al necesarului de memorie. Se consider ca operatii eles a mentare (de referint) urmtoarele operatii: +, -, *, /, iar ca locatie elementar a a a de memorie, locatia ocupat de un numrul real; a a (b) s se scrie formula matematic de calcul a variabilei s, functie de datele a a n problemei; (c) s se optimizeze algoritmul sensul reducerii timpului de calcul i s se prea n s a cizeze noul timp de calcul. Rezolvare: Document disponibil la http://mn.lmn.pub.ro

42

Capitolul 1. Implementarea structurilor de date i a algoritmilor numerici s

(a) Algoritmul contine un singur ciclu cu contor, cadrul cruia se repet de n n a a ori o instructiune de atribuire, care se efectueaz operatii elementare. Din n a aceste motive, ne ateptm ca timpul de calcul s depind liniar de dimensiunea s a a a problemei, n (T O(n)). continuare vom estima exact timpul de calcul. Pentru ecare valoare a In contorului i, interiorul ciclului, se efectueaz 3 operatii elementare (+, /, *). n a Deoarece i ia valori de la 1 la n, numrul total de operatii elementare efectuate a este 3n. Astfel, ordinul de complexitate al algoritmului din punct de vedere a al timpului de calcul este T = O(3n) O(n). De exemplu, dac dimensiunea = problemei crete de 10 ori, timpul de calcul va crete de 10 ori. Acest algoritm s s are ordinul de complexitate liniar (de ordinul 1). Pentru estimarea necesarului de memorie este necesar s se evalueze numrul a a de locatii de memorie utilizate, mai precis, numrul de variabile reale declarate a la nceputul algoritmului. Astfel, sunt declarate 2 numere reale (s i c) i 2 s s tablouri de numere reale de dimensiune n (a i b), total 2n + 2 numerele s n reale. Spunem c ordinul de complexitate al algoritmului din punct de vedere a a al necesarului de memorie este M = O(2n + 2) O(n). De exemplu, dac se = crete de 10 ori dimensiunea tablourilor, spatiul de memorie necesar crete de s s aproximativ 10 ori. Din punct de vedere al necesarului de memorie, algoritmul este de ordinul 1. (b) Se observ c algoritmul implementeaz urmtoarea formul matematic: a a a a a a
n

s=
i=1

ai c. bi

(c) Pentru reducerea timpului de calcul, nmultirea cu variabila c poate scoas a afara ciclului: n s=0 pentru i = 1, n s = s + ai /bi s = sc a Aceasta corespunde evalurii expresiei s cu formula s = c n ai /bi . Numrul a i=1 de operatii elementare efectuate este 2n + 1, iar ordinul de complexitate din a punct de vedere al timpului de calcul devine T = O(2n + 1) O(n). Aceast = variant a algoritmului este mai rapid dect varianta initial (de aproximativ a a a a 1.5 ori). 2. Fie pseudocodul de mai jos: LMN, Draft din 30 septembrie 2011

1.7. Exemple

43

; declararea variabilelor ntreg n, i real s tablou real a[n][n] ; introducerea datelor de intrare ............... ; instructiuni s=0 pentru i = 1, n pentru j = 1, n s = s + ai,j vj c scrie s Se cer: (a) s se declare variabilele j, c i v; a s (b) s se estimeze ordinul de complexitate al algoritmului din punct de vedere a al timpului de calcul i al necesarului de memorie. Se consider ca operatii s a elementare (de referint) urmtoarele operatii: +, -, *, /, a a , iar ca locatie elementar de memorie, locatia ocupat de un numrul real; a a a (c) s se scrie formula matematic de calcul a variabilei s, functie de datele a a n problemei; (d) s se optimizeze algoritmul sensul reducerii timpului de calcul i s se prea n s a cizeze timpul de calcul. Rezolvare: (a) Deoarece variabila j este un contor, cu valori de la 1 la n (variabil intreag), a a j trebuie declarat ca un ntreg. Variabilele c i v sunt utilizate la calculul s rezultatului nal, variabila real s, astfel, c i v sunt numere reale. Mai mult, a s algoritm, referirea la variabila v se face prin vj , unde j = 1, n, ceea ce n nseamn c variabila v reprezint un tablou de numere reale de dimensiune n. a a a concluzie, declaratiile sunt: In ntreg j real c tablou real v[n] (b) Algoritmul contine dou cicluri cu contor (de la 1 la n) imbricate. Instructiunea a de atribuire din interiorul ciclurilor se repet de n2 ori i contine operatii elea s 2 mentare. Ne ateptm ca ordinul de complexitate s e T O(n ). s a a Document disponibil la http://mn.lmn.pub.ro

44

Capitolul 1. Implementarea structurilor de date i a algoritmilor numerici s

Pentru ecare valoare a contoarelor i i j, interiorul ciclurilor, se efectueaz s n a 4 operatii elementare (+, *, *, ). Pentru ecare valoare a lui i se efectueaz a 4n operatii. Cum sunt n valori posibile pentru i, numrul total de operatii ele a 2 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 ptratic (de ordinul 2). De exemplu, dac a a 2 n crete de 10 ori, timpul de calcul crete de 100 = 10 ori. s s algoritm sunt declarate dou variabile reale (s i c), un tablou unidimenIn a s sional (vector) de numere reale de dimensiune n (v) i un tablou bidimensional s (matrice) de numere reale de dimensiune n n (a). total, sunt declarate In 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 c, i din punctul de vedere al necesarului de memorie, algoritmul a a s este de ordinul 2. (c) Algoritmul implementeaz urmtoarea formul matematic: a a a a
n n

s=
i=1 j=1

ai,j vj

c c

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

c
i=1 j=1

ai,j vj .

Acum, numrul de operatii elementare efectuate este 2n2 + 2, iar ordinul de a complexitate din punct de vedere al timpului de calcul devine T = O(2n2 +2) = 2 O(n ). 3. Fie pseudocodul de mai jos: ; declaratii variabile ntreg n, i LMN, Draft din 30 septembrie 2011

1.7. Exemple

45

real p, a, rez, term tablou real b[n] ; introducere date de intrare citete n s pentru i = 1, n citete bi s citete a, p s ; initializare solutie rez = 0 ; calcul solutie pentru i = 1, n term = p + f (bi ) term = term f (a) rez = rez + term ; aare solutie s scrie rez Se cer: (a) s se estimeze ordinul de complexitate al algoritmului din punct de vedere a al timpului de calcul i al necesarului de memorie. Se consider ca operatie s a elementar (de referint) evaluarea functiei f , iar ca locatie elementar de a a a memorie, locatia ocupat de un numrul real; a a (b) s se scrie formula matematic de calcul a rezultatului rez, functie de datele a a n problemei; (c) s se optimizeze algoritmul sensul reducerii timpului de calcul i s se prea n s a cizeze timpul de calcul. Rezolvare: (a) Exist un singur ciclu cu contor interiorul cruia exist operatia de referint. a n a a a Ne ateptm ca ordinul de complexitate din punct de vedere al timpului de s a calcul s e T O(n). a = Intr-adevr, pentru ecare valoare i, interiorul ciclului se efectueaz 2 evaluri a n a a ale functiei, deci 2 operatii elementare. Deoarece i poate lua n valori, rezult a c numrul total de operatii elementare este 2n. Deci, T = O(2n) O(n). a a = Pentru a estima necesarul de memorie, este util s se inspecteze declaratiile ce a contin cuvntul cheie real. Sunt declarati 4 scalari reali i un tablou de reali a s consecint, M = O(n + 4) O(n). cu n componente. In a = Document disponibil la http://mn.lmn.pub.ro

46

Capitolul 1. Implementarea structurilor de date i a algoritmilor numerici s

(b) Se observ c algoritmul implementeaz urmtoarea formul matematic: a a a a a a


n

rez =
i=1

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

(c) Algoritmul poate mbuntit din punct de vedere al timpului de calcul a at observnd c f (a) este evaluat mod inutil de n ori, de ecare dat cnd se a a n a a schimb valoarea contorului. Aceast evaluare poate scoas afara ciclului, a a a n astfel: 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) i M = O(n + 5) O(n). s = Aceast variant este de 2 ori mai rapid dect varianta initial. Costul a a a a a mbuntirii este nesemnicativ, memorarea unei noi variabile reale val. a at Aceast implementare corespunde evalurii rezultatului cu formula: a a
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] citete n s pentru i = 1, n citete ai , bi s citete p s rez = 0 pentru i = 1, n rez = rez + f (ai ) t1 = p pentru j = 1, n t2 = g(bj ) LMN, Draft din 30 septembrie 2011

1.7. Exemple

47

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 se estimeze ordinul de complexitate al algoritmului din punct de vedere a al timpului de calcul i al necesarului de memorie. Se consider ca operatii s a elementare (de referint) evalurile functiilor f i g, iar ca locatie elementar a a s a de memorie, locatia ocupat de un numrul real; a a (b) s se scrie formula matematic de calcul a rezultatului rez, functie de datele a a n problemei; (c) s se optimizeze algoritmul sensul reducerii timpului de calcul i s se prea n s a cizeze timpul de calcul. Rezolvare: (a) Sunt 3 cicluri imbricate, ciclul din interior continnd operatia elementar, astfel a a este de ateptat s avem T = O(n3 ). s a Intr-adevr, numrul de operatii elementare pentru valori xe ale contorilor i, j, a a k este 1 (o evaluare a functiei f ); numrul de operatii elementare pentru valori a xe ale contorilor i, j este n+1 (n evaluri ale functiei f i o evaluare a functiei a s g), numrul de operatii elementare pentru i xat este n(n + 1) + 1 = n2 + n + 1. a Astfel, numrul total de operatii elementare este n(n2 + n + 1) = n3 + n2 + n. a 3 2 Deci, T = O(n +n +n) O(n3 ). Inspectnd declaratiile care contin cuvntul a a = cheie real, se observ c necesarul de memorie este M = O(2n + 5) O(n). a a = (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 simplicnd formula de calcul. Notm: a a a


n n

S=
i=1

f (ai ),

P =p
i=1

[g(bj ) + S] .

Document disponibil la http://mn.lmn.pub.ro

48

Capitolul 1. Implementarea structurilor de date i a algoritmilor numerici 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). =

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 se declare variabilele i, c i a; a s (b) s se estimeze ordinul de complexitate al algoritmului din punct de vedere a al timpului de calcul i al necesarului de memorie. Se consider ca operatii s a elementare (de referint) urmtoarele operatii: +, -, *, /, , ln , iar ca locatie a a elementar de memorie, locatia ocupat de un numrul real; a a a (c) s se scrie formula matematic de calcul a variabilei s, functie de datele a a n problemei; (d) s se optimizeze algoritmul sensul reducerii timpului de calcul i s se prea n s a cizeze timpul de calcul. LMN, Draft din 30 septembrie 2011

1.7. Exemple

49

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 se declare variabilele i, w, y i z; a s (b) s se estimeze T = O(?) i M = O(?). Operatiile elementare se consider: +, a s a , sin . Locatia elementar de memorie este locatia ocupat de un a a -, *, /, numrul real; a (c) s se scrie formula matematic de calcul a variabilei p, functie de datele a a n problemei; (d) s se optimizeze algoritmul sensul reducerii timpului de calcul i s se prea n s a cizeze timpul de calcul. 3. Fie pseudocodul de mai jos: ntreg n, i real rez, t, t1 , t2 tablou real a[n] ............... rez = 0 pentru i = 1, n t1 = f (p) ai t2 = f (p) f (ai ) t = t1 + t2 rez = rez + t Se cer: (a) s se estimeze T = O(?) i M = O(?). Se consider ca operatie elementar a s a a evaluarea functiei f . Locatia elementar de memorie este locatia ocupat de a a un numrul real; a (b) s se scrie formula matematic de calcul a variabilei rez, functie de datele a a n problemei; Document disponibil la http://mn.lmn.pub.ro

50

Capitolul 1. Implementarea structurilor de date i a algoritmilor numerici s

(c) s se optimizeze algoritmul sensul reducerii timpului de calcul i s se prea n s a cizeze 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 se estimeze T = O(?) i M = O(?). Se consider ca operatie elementar a s a a evaluarea functiei f . Locatia elementar de memorie este locatia ocupat de a a un numrul real; a (b) s se scrie formula matematic de calcul a variabilei rez, functie de datele a a n problemei; (c) s se optimizeze algoritmul sensul reducerii timpului de calcul i s se prea n s a cizeze timpul de calcul. 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 se declare variabilele j, y, a i b; a s (b) s se estimeze T = O(?) i M = O(?). Operatiile elementare se consider: a s a a a +, -, *, /, , ln . Locatia elementar de memorie este locatia ocupat de un numrul real; a LMN, Draft din 30 septembrie 2011

1.8. Intrebri i probleme a s

51

(c) s se scrie formula matematic de calcul a variabilei c, functie de datele a a n problemei; (d) s se optimizeze algoritmul sensul reducerii timpului de calcul i s se prea n s a cizeze timpul de calcul.

1.8

Intrebri i probleme a s

1. S se implementeze un tip abstract de date, care s permit reprezentarea cu maxim a a a a ecient spatial a polinoamelor cu multi coecienti nuli, (de exemplu p(x) = 1 + a a 205 x ). 2. S se implementeze un tip abstract de date care s permit reprezentarea ecient a a a a a matricelor cu multe elemente nule (matrice rare). 3. S se deneasc o functie care s permit calculul normei Cebsev a unui vector a a a a ||v|| = max |v1 |
i=1,n

i a unei matrice s A = max


i=1,n

j=1

|aij |

4. S se scrie pseudocodul procedurilor de artire, derivare i integrare a polia mp s noamelor. 5. S se deneasc urmtoarele tipuri de date: spatiu vectorial complex (I n ), inelul a a a C nn matricelor ptrate cu elemente complexe (I ), inelul polinoamelor cu coecienti a C compleci. s 6. S se scrie o procedur de a a nmultire a matricelor dreptunghiulare. 7. S se deneasc i implementeze un tip abstract de date avnd ca elemente vectori a as a 3 tridimensionali IR , cu care s se efectueze adunri, a a nmultiri cu scalari, nmultiri scalare i vectoriale. s 8. S se deneasc i s se implementeze un tip abstrat de date avnd ca elemente a a s a a impedantele cu care se pot face operatii de conexiune serie i paralel. S se conceap s a a un program capabil s determine impedanta complex de transfer a unui cuadripol a a pasiv. Document disponibil la http://mn.lmn.pub.ro

52

Capitolul 1. Implementarea structurilor de date i a algoritmilor numerici s

9. S se implementeze acelai tip abstract de date dou sau trei limbaje diferite de a s n a programare. S se compare rezultatele din punctul de vedere al ecientei spatiale a i temporale. s 10. S se studieze rutinele dedicate manipulrii vectorilor, matricelor, i polinoamelor a a s dintr-o bibliotec matematic standard. a a 11. S se deneasc i implementeze un tip abstract de date ale crui elemente sunt a a s a functii rationale cu coecienti reali. Cum poate folosit un astfel de tip de date n analiza circuitelor electrice liniare regim tranzitoriu? n 12. S se deneasc un tip abstract de date ale crui elemente reprezint serii Fourier a a a a trunchiate. Cum poate folosit acest tip de date analiza cu calculatorul a cirn cuitelor liniare regim periodic permanent nesinusoidal? n

LMN, Draft din 30 septembrie 2011

Capitolul 2 Erori rezolvarea problemelor n numerice


2.1 Caracterizarea lucrrii a

majoritatea cazurilor, algoritmii cu caracter numeric, dup implementarea lor pe In a un sistem de calcul determin nu solutia exact a problemei ci o aproximare numeric a a a a acesteia. Scopul acestei lucrri este de a evidentia modul care pot caracterizate erorile a n numerice, motivele aparitiei acestora i modul care acestea se propag. Se studiaz s n a a erorile inerente (datorate datelor de intrare), erorile de rotunjire (datorate reprezentrii a nite, aproximative a numerelor reale) i erorile de trunchiere (datorate aproximrii nite s a a unor procese teoretic innite).

2.2

Principiul lucrrii a

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

care x este valoarea exact a variabilei, iar x este valoarea sa aproximativ. Deoarece n a a n majoritatea cazurilor valoarea exact nu este cunoscut se prefer utilizarea unei margini a a a superioare a erorii absolute: ax |ex | = |x x |. (2.2) 53

54

Capitolul 2. Erori n rezolvarea problemelor numerice

acest caz, locul valorii exacte x se opereaz cu intervalul: In n a x ax x x + ax . (2.3)

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

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

2.2.1

Erori de rotunjire

Una din cauzele frecvente de eroare calculele cu numere reale se datoreaz reprezentrii n a a nite a acestor numere sistemele de calcul. n Modul uzual de reprezentare a unui numr real a ntr-un sistem de calcul este de forma: x = 0, kkk . . . k 10kk = m 10e , unde k este cifr (0, 1, . . . , 9), m se numete mantisa, iar e exponent. a s numrului nul, la care m = 0, rest mantisa satisface relatia: a n 0.1 |m| 1. (2.6) Cu exceptia

(2.7)

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

(2.8)

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

2.2. Principiul lucrrii a

55

depinde de numrul de cifre semnicative folosite reprezentarea numrului real i nu a n a s de valoarea numrului. Aceast eroare relativ de rotunjire, specic sistemului de calcul a a a a (calculator + mediu de programare) este cel mai mare numr real, care adugat la unitate a a nu modic valoarea acesteia. Ordinul de mrime al erorii relative de rotunjire a a n 5 20 sistemele uzuale de calcul este 10 10 i poate determinat pe ecare sistem de s calcul cu urmtorul algoritm: a

; calculeaz eroarea relativ de rotunjire a a real err err=1 repet a err=err/2 pn cnd (1 + err = 1) a a a scrie err

Eroarea relativ de rotunjire err este cunoscut sub numele de zeroul mainii i nu a a s s trebuie confundat cu cel mai mic numr pozitiv, nenul, reprezentabil calculator. a a n

2.2.2

Erori inerente

Datele de intrare folosite rezolvarea unei probleme tehnice provin multe cazuri n n din determinri experimentale. Rezultatul oricrei msurtori este susceptibil de erori i a a a a s chiar dac datele de intrare sunt cunoscute cu maxim precizie ele pot afectate de erori a a de rotunjire. Erorile datelor de intrare ntr-un algoritm se numesc erori inerente. Aceste erori se propag procesul de calcul i afecteaz nal solutia problemei. Chiar dac algoritmul a n s a n a de calcul nu poate fcut responsabil de prezenta erorilor datele de intrare, el poate a n inuenta precizia solutiei. Un algoritm la care eroarea relativ a solutiei nu depete a as s erorile relative ale datelor de intrare este un algoritm stabil din punct de vedere numeric. schimb, dac erorile relative ale solutiei sunt mult mai mari dect cele ale datelor de In a a intrare se spune c algoritmul de rezolvare prezint instabiliti numerice. acest caz a a at In este posibil ca abateri foarte mici ale datelor de intrare s determine abateri mari ale a solutiei numerice fat de cea exact, i s fac solutia numeric inutilizabil. Dac se a a s a a a a a noteaza cu y solutia problemei, iar cu x1 , x2 , ..., xn datele acesteia, procedeul de calcul va consta fond evaluarea functiei y = f (x1 , x2 , ..., xn ) n n Document disponibil la http://mn.lmn.pub.ro

56

Capitolul 2. Erori n rezolvarea problemelor numerice

Considernd erorile absolute sucient de mici, acestea se pot aproxima cu diferentiala: a dy = ey f f f dx1 + dx2 + + dxn , x1 x2 xn f f f = ex1 + ex2 + + ex . x1 x2 xn n

(2.10)

Erorile relative satisfac relatia: y y = f f f x1 x1 + x2 x2 + + xn xn . x1 x2 xn (2.11)

Deoarece sistemele numerice de calcul, cele mai complicate proceduri se reduc n n nal la operatii aritmetice, va analizat propagarea erorilor cazul celor patru operatii a n aritmetice elementare: Adunarea: y = f (x1 , x2 ) = x1 + x2 , ey = ex1 + ex2 , x1 x2 y = x1 + x . x1 + x2 x1 + x2 2 (2.12)

Dac cei doi termeni x1 , x2 au acelai semn, adunarea este o operatie stabil numeric, a s a deoarece x2 x1 1, 1, |y | |x1 | + |x2 | . x1 + x2 x1 + x2 Scderea: a y = f (x1 , x2 ) = x1 x2 ,

ey = ex1 ex2 , x2 x1 x1 x . y = x1 x2 x1 x2 2

(2.13)

Dac x1 i x2 au acelai semn, operatia de scdere este instabil numeric. Eroarea a s s a a relativ a diferentei poate depi cu multe ordine de mrime eroarea termenilor, prin a as a fenomenul numit de anulare prin scdere, ca exemplul: a n x1 = 0, 12345 1% ; x2 = 0, 12344 1% ; y = x1 x2 = 0, 00001 3 104 %. Inmultirea: y = f (x1 , x2 ) = x1 x2 ey = x2 ex1 + x1 ex2 y = x1 + x2 LMN, Draft din 30 septembrie 2011 (2.14)

2.2. Principiul lucrrii a

57

Inmultirea este o operatie stabil din punct de vedere numeric deoarece a |y | |x1 | + |x2 |. artirea: Imp y = f (x1 , x2 ) = ey = y x1 , x2

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

(2.15)

Si artirea este o operatie stabil din punct de vedere numeric deoarece mp a |y | |x1 | + |x2 |. aceste evaluri ale erorilor s-a considerat c toate calculele se efectueaz exact. In a a a In realitate, rezultatul este rotunjit (la numrul de cifre semnicative specice sistemului de a calcul) i eroarea relativ a rezultatului este majorat cu eroarea relativ de rotunjire. s a a a cazul care prezint important deosebit evaluarea erorii unui calcul numeric se In n a a a poate utiliza urmtorul tip abstract de date care permite controlul propagrii erorii. a a In acest tip de date numerele reale x sunt reprezentate prin valoarea x i marginea erorii s 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 s = x + y a 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 d = x - y a 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 p = x * y a Document disponibil la http://mn.lmn.pub.ro

58

Capitolul 2. Erori n rezolvarea problemelor numerice

retur procedura rap(x,y,c) interval x, y, c c.val = x.val/y.val c.er = err + |x.er| + |y.er| retur

interval x, y, p p.val = x.val y.val p.er = err + |x.er| + |y.er| ;calculeaz c = x / y a

2.2.3

Erori de trunchiere

esent, metodele numerice constau reducerea rezolvrii unei probleme complicate In a n a la un numr nit de etape simple, care fond sunt operatii aritmetice elementare. Daa n torit caracterului nit al oricrui algoritm, a a ncercarea de a rezolva probleme de analiz a matematic, ce presupun teoretic o innitate de pai (cum sunt de exemplu calculele a s limitelor) determin aparitia unor erori de metod numite erori de trunchiere. a a Calculul numeric al limitelor de iruri, serii sau functii (inclusiv calculul numeric s al derivatelor i integralelor, care se reduc fond tot la calculul limitelor) presupune s n trunchierea unui proces numeric innit. Pentru a evidentia eroarea de trunchiere se con sider un ir numeric xk = 1, 2, . . . , n convergent ctre limita x = limk xk . Conform a s a denitiei convergentei, pentru orice exist un n astfel at |x xk | , pentru orice a nc k > n. consecint, pentru o eroare impus exist un rang nit n, astfel at In a a a nc xn reprezint o aproximare satisfctoare pentru limita x. Rezult c, dup evaluarea a a a a a a unui numar n sucient de mare de termeni, ultimul poate adoptat ca solutie numeric a x = xn , cu o eroare de trunchiere dependent de acest n. general, eroarea de trunchiere a In este cu att mai mic cu ct numrul de termeni calculati este mai mare. Modul care a a a a n eroarea de trunchiere depinde de n caracterizeaz viteza de convergent a algoritmului. a a Se spune c un algoritm are viteza de convergent de ordinul p, dac exist o constant a a a a a c > 0, astfel at eroarea de trunchiere satisface inegalitatea: nc |n | = |x xn | c , np (2.17)

pentru orice n > 1. Se constat c ordinul vitezei de convergent a unui algoritm este a a a dat de panta dreptei ce mrginete superior gracul functiei || = f (n) scar dublu a s n a logaritmic. a LMN, Draft din 30 septembrie 2011

2.2. Principiul lucrrii a

59

O categorie important de procese numerice innite o reprezint seriile Taylor. Acesa a tea, ind serii de puteri, pot utilizate la evaluarea functiilor elementare (sinus, cosinus, exponential, logaritm, etc.) i a celor speciale (Bessel, integrale eliptice ) prin reducerea a s la operatii aritmetice elementare (adunri si a nmultiri). Pentru a exemplica modul care poate sumat numeric o serie cu controlul erorii n a de trunchiere se consider dezvoltarea serie Taylor a functiei y = sin x: a n x3 x5 x7 + + ... 3! 5! 7! Termenul general al seriei poate calculat recursiv: y =x Tk = (1)k 2k1 x2 x = Tk1 . (2k 1)! (2k 1)(2k 2)
n

(2.18)

(2.19)

Prin trunchierea seriei la rangul n se obtine y =


k=1

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

(2.20)

Deoarece seria este alternant, eroarea de trunchiere este majorat de modulul primului a a termen neglijat: |x|2n+1 |y | = |y y | . (2.21) (2n + 1)! Rezult urmtorul pseudocod pentru evaluarea functiei sinus cu o eroare de trunchiere a a mai mic dect eroarea de rotunjire. a a functia 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 pn cnd |t| <err a a a ntoarce s

Efortul de calcul pentru evaluarea functiei crete odat cu scderea erorii impuse, dar s a a i cu creterea modulului variabilei x. Deoarece functia sin(x) este periodic, algoritmul s s a poate mbuntit prin reducerea variabilei la primul cerc (sau chiar la primul cadran). a at Document disponibil la http://mn.lmn.pub.ro

60

Capitolul 2. Erori n rezolvarea problemelor numerice

2.3

Chestiuni de studiat

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

2.4

Modul de lucru

Pentru desfurarea lucrrii lansati lucrarea Erori rezolvarea problemelor numerice as a n din meniul general. Aceasta are ca urmare lansarea urmtorului meniu: a Eroarea de rotunjire Calcule cu controlul erorii Erori de trunchiere

2.4.1

Determinarea erorii relative de rotunjire a sistemului de calcul

Se selecteaz optiunea Eroarea de rotunjire care are ca efect calculul i aarea erorii a s s relative de rotunjire specice sistemului.

2.4.2

Analiza propagrii erorilor inerente a

Se selecteaz optiunea Calcule cu controlul erorii din meniul principal, care are ca a efect lansarea unui program ce emuleaz un calculator de buzunar care folosete notatia a s polonez invers (operand, operand, operator). Acest calculator nu opereaz cu numere a a a reale ci cu intervale (valoare numeric i margine superioar a erorii relative). as a Programul permite introducerea e a operanzilor (valoare i eroare relativ) e a ops a eratorilor unari (I - invers, O - opus, V - radical ) sau binari ( + - * / ). Operanzii sunt introdui s ntr-o stiv vizualizat pe ecran de 5 coloane (numr de ordine, a a a valoare numeric, eroare relativ, limita minim i limita maxim a valorii exacte). a a as a LMN, Draft din 30 septembrie 2011

2.4. Modul de lucru

61

Operatorii unari actioneaz asupra ultimului element introdus stiv, a n a nlocuindu-l cu valoarea obtinut urma aplicrii operatorului (stiva nu si modic dimensiunea). a n a a Operatori binari folosesc ca operanzi ultimele dou elemente din stiv, iar rezultatul a a nlocuiete aceste elemente (stiva se micoreaz cu o unitate). s s a Pentru a facilita manipularea stivei sunt disponibili a doi operatori unari, cu carnc acter nenumeric (R - repet vrful stivei i E - extrage element din stiv), care modic a a s a a (incrementeaz respectiv decrementeaz) altimea stivei. a a n Se propune rezolvarea ecuatiei de gradul doi: ax2 + bx + c = 0, care a = 1, b = 100.01, c = 1 (cu rdcinile x1 = 100; x2 = 0, 01). Valorile a, b, c se n a a vor introduce cu erorile relative de 0.1% = 0.001. Se vor nota valorile intermediare: = b2 4ac, b + x1 = , 2a b x2 = , 2a i erorile relative asociate. s Pentru a evita erorile datorate anulrii prin scdere, se va calcula a doua rdcin pe a a a a a baza relatiei x1 x2 = c/a c . x2 = ax1 Se vor compara erorile relative i absolute ale rezultatelor obtinute pe cele dou ci. s a a

2.4.3

Analiza erorii de trunchiere

Se selecteaz optiunea Erori de trunchiere din meniul principal, care are ca efect a lansarea unui program care realizeaz sumarea urmtoarelor serii: a a Taylor pentru functia exponential a Taylor pentru functia sinus Taylor pentru functia logaritm natural Fourier pentru functia crenel Document disponibil la http://mn.lmn.pub.ro

62

Capitolul 2. Erori n rezolvarea problemelor numerice

armonica alternant a armonica alternant cu convergent a a mbuntit prin metoda Euler a at a Dup selectarea seriei i alegerea valorii variabilei independente x, programul calculeaz a s a i aeaz suma partial a seriei i eroarea absolut de trunchiere pentru diferite ordine, s s a a s a apoi reprezint grac variatia erorii functie de numrul de termeni sumati. Pentru a a n a putea facilita comparatiile se pot reprezenta i mai multe grace de erori simultan. s Se recomand observarea convergentei a 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 dezvoltrile serie Taylor sunt: a a n x2 x3 x4 e = 1+x+ + + + 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
x

seriei Fourie pentru evaluarea expresiilor: crenel(1), crenel(0.1). Functia crenel este denit astfel a crenel (x) =
4 4

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

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

sin(3x) sin(5x) + + 3 5

(1)k+1

1 k

LMN, Draft din 30 septembrie 2011

2.5. Exemple

63

armonicii alternante cu convergent a mbuntit a at a 1 1 1 A = 1 + + . . . = 0.5 + 2 3 4


k=1 1 2k1 1 2k+1 . 4k

Se vor comenta rezultatele i se va aprecia viteza de convergent. s a Indicatie: Pentru estimarea vitezei de convergent se calculeaz panta dreptei ce a a mrginete gracul erorii, scara dublu logaritmic. a s n a

2.4.4

Implementarea unor algoritmi cu controlul erorii

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

2.5
2.5.1

Exemple
Exemple rezolvate
2 cu 2

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

a a Notm cu x = 2 = 1.4142 . . ., valoarea exact a numrului 2. Aproximarea cu a 2 cifre semnicative exacte a lui 2 este: x = 1.41. Eroarea absolut este: ex = x x = 1.4142 . . . 1.41 = 0.0042 . . .. a Eroarea relativ este: a x = care este mrginit de: a a |x | < Deci: 2 = 1.41 0.36%. Document disponibil la http://mn.lmn.pub.ro 0.005 = 0.0035 . . . < 0.0036 = 0.36%. 1.4 ex 0.0042 . . . = , x 1.4142 . . .

64

Capitolul 2. Erori n rezolvarea problemelor numerice

2. Fie x = 5.43 1%, y = 5.42 2%, z = 3 1%. S se calculeze (x + y) z. Comentati rezultatul obtinut. a Rezolvare: Mai ai se efectueaz operatia din paranteze, care este, de fapt, o scdere: x + y = nt a a 5.43 5.42 = 0.01. Eroarea relativ va mrginit de: a a a x+y = x y 5.43 1 5.42 2 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 sczute dou numere foarte apropiate (a a a aprut fenomenul de anulare prin scdere). a a Rezultatul nal (x + y) z = 0.03 este calculat cu o eroare relativ mrginit de: a a a (x+y)z = x+y + z = 1 1628 1627 + = = 1628%. 100 100 100

3. Fie x = 2.3 2%, y = 3.2 3%, z = 5.5 5%. S se calculeze (x + y) + z si x + (y + z). Comentati rezultatele obtinute. a Rezolvare: S calculm (x + y) + z. Mai ai se efectueaz operatia din paranteze: x + y = a a nt a 2.3 + 3.2 = 5.5. Eroarea relativ va mrginit de: a a a x+y = x+y = x y x + y ; x+y x+y (2.22)

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

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

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

In continuare calculm x + (y + z). Mai ai se efectueaz operatia din paranteze a nt a y + z = 3.2 + 5.5 = 8.7. Eroarea relativ va mrginit de: a a a y+z = z y y + z ; y+z y+z (2.24)

LMN, Draft din 30 septembrie 2011

2.5. Exemple

65 5.5 5 4.26 3.2 3 + = = 4.26%. 8.7 100 8.7 100 100

y+z =

Rezultatul nal x + (y + z) = 2.3 + 8.7 = 11.0 este calculat cu o eroare relativ a mrginit de: a a x+(y+z) = x+(y+z) = Observm c: a a (x+y)+z = x+(y+z) . Intr-adevr, a nlocuind relatia (2.22) relatia (2.23), obtinem: n (x+y)+z = y z x 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) (2.25), obtinem exact acelai rezultat, (2.26). n s realitate, aceste calcule nu am inut cont de erorile de rotunjire eps. Acestea In n t se suprapun peste erorile inerente, astfel at este mai corect s scriem: nc a x+y = Urmeaz c: a a (x+y)+z = x+y z x+y + z + eps. (x + y) + z (x + y) + z (2.28) x y x + y + eps. x+y x+y (2.27)

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

Similar se obtine: 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

consecint: In a (x+y)+z = x+(y+z) . Adunarea numerelor reale pe un sistem de calcul nu este asociativ. a Document disponibil la http://mn.lmn.pub.ro

66

Capitolul 2. Erori n rezolvarea problemelor numerice

2.5.2

Exemple propuse

1. S se calculeze o margine a erorii relative pentru aproximarea numrului cu 3 cifre a a semnicative exacte. 2. S se calculeze o margine a erorii relative pentru aproximarea numrului e cu 2 cifre a a semnicative exacte. 3. Fie x = 2.01 1%, y = 4.24 4%, z = 2.12 2%. S se calculeze x y/z. Comentati rezultatul obtinut. a 4. Fie x = 3.12 1%, y = 2 1%, z = 1.21 2%. S se calculeze x y + z. a

2.6

Intrebri i probleme a s

1. Cum poate caracterizat eroarea unei variabile vectoriale x? a 2. Implementati algoritmul de determinare a erorii relative de rotunjire diferite n limbaje de programare ( simpl i dubl precizie) i apoi comparati rezultatele. n as a s 3. Ce modicri trebuie aduse algoritmului de determinare a erorii relative de rotunjire a pentru ca acesta s determine nu numai ordinul de mrime al erorii ci i valoarea a a s sa exact? a 4. Deniti i implementati un tip abstract de date, care s reprezinte ecare numr real s a a ca o pereche de numere reale ce l ncadreaz (valoare maxim, valoare minim). a a a 5. Este adunarea numerelor reale rotunjite o operatie asociativ? Pentru a aduna mai a multe numere reale diferite cu eroare minim ele trebuie sortate ordine cresctoare a n a sau descresctoare? a 6. Pentru a micora erorile de rotunjire la sumarea unei serii cum trebuie adunati s termenii, ordine cresctoare sau descresctoare? n a a 7. Folositi optiunea Calcule cu controlul erorii pentru a determina rezistenta de unt s ce trebuie folosit la transformarea unui galvanometru de 1mA ( clasa 2%) a crui a n a rezistent R = 57.5 a fost determinat cu precizie de 0,5(%) a a ntr-un ampermetru de 1A. LMN, Draft din 30 septembrie 2011

2.6. Intrebri i probleme a s

67

8. Generati un algoritm pentru rezolvarea unei ecuatii de gradul doi, care evit fenomenul a de anulare prin scdere. a 9. Generati i implementati un algoritm, pentru evaluarea functiilor Bessel. s

Document disponibil la http://mn.lmn.pub.ro

68

Capitolul 2. Erori n rezolvarea problemelor numerice

Brook Taylor

Born: 18 Aug 1685 in Edmonton, Middlesex, England Died: 29 Dec 1731 in Somerset House, London, England http://www-groups.dcs.st-and.ac.uk/~history/Mathematicians/Taylor.html

Jean Baptiste Joseph Fourier

Born: 21 March 1768 in Auxerre, Bourgogne, France Died: 16 May 1830 in Paris, France http://www-groups.dcs.st-and.ac.uk/~history/Mathematicians/Fourier.html

LMN, Draft din 30 septembrie 2011

Capitolul 3 Rezolvarea sistemelor de ecuatii liniare prin metoda Gauss. Strategii de pivotare rezolvarea sistemelor n algebrice liniare

3.1

Metoda Gauss fr pivotare a a

3.1.1

Caracterizarea metodei

Metoda Gauss este o metod direct de rezolvare a sistemelor de ecuatii algebrice a a liniare care au matricea sistemului ptrat i nesingular. Solutia sistemului se obtine a a s a dup un numr nit de pai. a a s lucrare se prezint principiul metodei i se analizeaz algoritmul att din punctul In a s a a de vedere al complexitii ct i al stabilitii numerice, evidentiindu-se limitele acestei at a s at metode. 69

70

Capitolul 3. Rezolvarea sistemelor de ecuatii liniare prin metoda Gauss. Strategii de pivotare n rezolvarea sistemelor algebrice liniare

3.1.2

Principiul metodei

Fie sistemul de ecuatii: a11 x1 + a12 x2 + . . . + a1n xn = b1 a21 x1 + a22 x2 + . . . + a2n xn = b2 ...... an1 x1 + an2 x2 + . . . + ann xn = bn sau forma matriceal n a Ax = b (3.2) (3.1)

A ind matricea ptrat n n - dimensional, iar b si x doi vectori n - dimensionali. a a a Cunoscnd matricea sistemului A i termenul liber b se pune problema determinrii solutiei a s a x. Inmultind prima ecuatie, pe rnd, cu ai1 /a11 , pentru i = 2, . . . , n, apoi adunnd-o la a a ecuatia cu numrul i, se elimin x1 din toate ecuatiile, cu exceptia primei ecuatii: a a a11 x1 + a12 x2 + . . . + a1n xn = b1 a22 x2 + . . . + a2n xn = b2 ...... an2 x2 + . . . + ann xn = bn Coecientii care apar linile 2, . . . , n, dei modicati, s-au notat acelai mod, n s n s deoarece ei se vor memora aceleai locatii de memorie. n s Inmultind a doua ecuatie cu ai2 /a22 i adunnd-o apoi la ecuatia i, pentru i = 3, . . . , n, s a se elimina x2 din toate ecuatiile aate sub linia a doua. Se continu astfel pn se aduce sistemul la forma: a a a a11 x1 + a12 x2 + . . . + a1n xn = b1 a22 x2 + . . . + a2n xn = b2 ...... ann xn = bn unde a11 , . . . , ann , b1 , . . . , bn au alte valori dect sistemul initial. a n LMN, Draft din 30 septembrie 2011 (3.4) (3.3)

3.1. Metoda Gauss fr pivotare a a

71

Necunoscutele se determin prin retrosubstitutie: a xn xn1 = = ...... xk = ...... x1 = b1 bn , ann bn1 an1,n xn , an1,n1 bk
n j=k+1 akj xj

ak,k
n j=2 a1,j xj

(3.5)

a11

Etapa de aducere a matricei A la forma triunghiular se numete eliminare sau triana s gularizare, iar etapa de determinare a solutiilor - substitutie regresiv sau retrosubstitutie. a Fiecare din elementele akk , cu k = 1, 2, . . . , n se numete pivot. s Dac la o etap a algoritmului se alnete un pivot nul, pentru a evita o artire a a nt s mp la 0 este necesar o permutare a liniilor (sau a liniilor i coloanelor) scopul aducerii pe a s n linia i, coloana i a unui element nenul. Aceast operatie poart numele de pivotare. a a

3.1.3

Pseudocodul algoritmului Gauss fr pivotare a a


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 ;retrosubstitutie 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 eliminrii a ;parcurge coloana de sub pivot ;parcurge linia i, la dreapta ;pivotul

Document disponibil la http://mn.lmn.pub.ro

72

Capitolul 3. Rezolvarea sistemelor de ecuatii liniare prin metoda Gauss. Strategii de pivotare n rezolvarea sistemelor algebrice liniare

Procedura are parametrii: de intrare: n = dimensiunea sistemului; a(n, n) = matricea sistemului; b(n) = vectorul termenilor liberi; de ieire: s x(n) = vectorul solutie. Matricea A este adus la forma superior triunghiular dup n 1 pai. La ecare pas a a a s k, linia k i cele de deasupra ei, colona k i cele din stnga ei nu sunt afectate. s s a

3.1.4

Analiza complexitii at

Efort de calcul Pentru trecerea de la pasul k la pasul k + 1 se efectueaz: a (n k)(n k + 1) nmultiri, (n k)(n k + 1) adunri, a (n k) artiri. mp consecint, pentru trecerea de la matricea initial la forma superior triunghiular, In a a a se vor efectua:
n1 k=1 (n n1 k=1 (n n1 k=1 (n

k)(n k + 1) = n(n2 1)/3 nmultiri, k)(n k + 1) = n(n2 1)/3 adunri, a k) = n(n 1)/2 artiri. mp

etapa de retrosubstitutie se mai efectueaz: In a


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

i) = n(n 1)/2 nmultiri, i) = n(n 1)/2 adunri, a LMN, Draft din 30 septembrie 2011

3.1. Metoda Gauss fr pivotare a a

73

n imprtiri. a Deci, total se efectueaz: n a n(n 1)(2n + 5)/6 nmultiri, n(n 1)(2n + 5)/6 adunri, a n(n + 1)/2 artiri. mp Deoarece, general, timpul necesar calculatorului pentru a efectua o n nmultire sau o mpartire este aproximativ egal cu cel consumat pentru o adunare, efortul de calcul este 2n(2n2 + 6n 2)/6 operatii aritmetice elementare. Dac n este mare (n > 2), efortul de calcul este de ordinul 2n3 /3 i se noteaz O(2n3 /3). a s a Necesarul de memorie Pentru memorarea matricei A i a vectorilor b i x sunt necesare: n2 + n + n = n(n + 2) s s locatii de memorie, ecare locatie de memorie ind rezervat unui numr real. a a

3.1.5

Analiza erorilor

Rulat pe un calculator ipotetic de precizie innit, algoritmul Gauss permite detera minarea solutiei exacte a sistemului. Cu alte cuvinte acest algoritm nu introduce eroare de metod. a Pot apare a erori de rotunjire, datorate preciziei nite a echipamentului de calcul. ns Aceste erori cresc odat cu creterea dimensiunii n a sistemului. a s Metoda Gauss aceast variant (fr pivotare) poate genera instabiliti numerice n a a aa at chiar dac nu se alnete vreun element aii nul, din cauza erorilor de rotunjire. a nt s Pentru evaluarea erorii se poate folosi reziduul r = Ax b, mai precis norma lui. Aceast norm poate evaluat euclidian: a a a r| =
k 2 rk

(3.6)

(3.7)

sau sens Cebsev: n r = max rk , k = 1, . . . , n. (3.8)

Document disponibil la http://mn.lmn.pub.ro

74

Capitolul 3. Rezolvarea sistemelor de ecuatii liniare prin metoda Gauss. Strategii de pivotare n rezolvarea sistemelor algebrice liniare

Eroarea relativ se denete ca a s r = r / b . (3.9)

Norma reziduului denit anterior, nu trebuie confundat cu norma erorii adevrate: a a a e = xadevrat x . a Eroarea relativ adevrat se denete ca: a a a s = e/ xadevrat . a (3.11) (3.10)

Calculul erorii (3.10) ar necesita a cunoaterea solutiei exacte a sistemului. De ns s aceea, practic se face doar o evaluare a erorii, folosind norma reziduului, care a n a ns poate avea o valoare mai mare sau mai mic dect eroarea real. a a a

3.2

Strategii de pivotare rezolvarea sistemelor aln gebrice liniare

3.2.1

Caracterizarea metodei

Pivotarea este o metod care permite extinderea domeniului de aplicabilitate a metodei a Gauss i s mbuntirea stabilitii ei numerice. a at at acest paragraf se analizeaz diferite strategii de pivotare i efectele lor asupra erorii In a s cu care se obtine solutia.

3.2.2

Principiul metodei

La rezolvarea unui sistem de ecuatii prin metode directe, de exemplu prin metoda Gauss, poate apare situatia care un element pivot akk este nul, chiar dac matricea n a sistemului este nesingular. Metodele directe necesitnd artirea la pivot, sistemul nu a a mp se poate rezolva forma dat. n a Permutarea liniilor i/sau a coloanelor astfel at s se aduc pe pozitia diagonal s nc a a a (k, k), un element nenul se numete pivotare. Pentru a obtine o bun stabilitate numeric s a a (erori de rotunjire minime) se prefer alegerea ca pivot a unui element de modul maxim. a LMN, Draft din 30 septembrie 2011

3.2. Strategii de pivotare n rezolvarea sistemelor algebrice liniare

75

Se pot utiliza trei strategii de pivotare: partial, total sau diagonal. a a a Pivotarea partial const cutarea pivotului de modul maxim printre toti coecientii a a n a aati sub linia k i pe coloana k i aducerea acestui element pe pozitia (k, k) prin permutri s s a de linii (ceea ce este echivalent cu schimbarea ordinii ecuatiilor). Pivotarea total const cutarea pivotului de modul maxim printre toti coecientii a a n a aati sub linia k i la dreapta coloanei k i aducerea acestui element pe pozitia (k, k) prin s s permutri de linii i de coloane (se schimb att ordinea liniilor ct i cea a coloanelor). a s a a a s Pivotarea diagonal const cutarea pivotului optim doar printre elementele dia a n a agonale aii , cu i k. Aducerea acestui element pe pozitia (k, k) se face, ca i la pivotarea s total, prin permutri de linii i coloane. Avantajul acestei strategii de pivotare este a a s pstrarea simetriei matricei sistemului. a La metoda cu pivotare partial, unde se fac doar permutri de linii, ordinea necunos a a cutelor ecare ecuatie nu se modic. La metodele cu pivotare total sau diagonal, n a a a datorit permutrii coloanelor, se modic i ordinea necunoscutelor sistem. De aceea, a a as n aceste strategii impun memorarea permutrilor de coloane fcute pe parcursul algoritmua a lui, pentru a se putea reconstitui la sfrit ordinea initial a necunoscutelor. as a

3.2.3

Pseudocodul algoritmului Gauss cu pivotare partial a

functia gausspp (n, a, b, x) tablou real a(n, n), b(n), x(n) ; eliminare ; etapele eliminrii a pentru k = 1, n 1 ; gsire pivot a max = k pentru m = k + 1, n dac |amx | > |amax,k | atunci max = m a dac amax,k = 0 atunci a ntoarce 1 ; eroare dac max = k atunci a ; permut liniile max, k a pentru m = k, n temp = akm akm = amax,m amax,m = temp temp = bk ; permut termenii liberi a bk = bmax bmax = temp ; s-a gsit pivotul a pentru i = k + 1, n ; parcurge coloana de sub pivot Document disponibil la http://mn.lmn.pub.ro

76

Capitolul 3. Rezolvarea sistemelor de ecuatii liniare prin metoda Gauss. Strategii de pivotare n rezolvarea sistemelor algebrice liniare

dac aik = 0 atunci a p = aik /akk pentru j = k + 1, n aij = aij akj p bi = bi bk p ; retrosubstitutie dac an,n = 0 atunci a ntoarce 1 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 Functia are parametrii: de intrare: n = dimensiunea sistemului; a(n, n) = matricea sistemului; b(n) = vectorul termenilor liberi. de ieire: s x(n) = vectorul solutiei. Functia ntoarce: 0 1 - dac algoritmul s-a executat integral; a - dac matricea sistemului este singular. a a

; parcurge linia i ; la dreapta pivotului

; eroare

3.2.4

Analiza complexitii at

Efort de calcul Dac se neglijeaj timpul consumat datorit permutrilor de linii, efortul de calcul la a a a a 3 procedura Gauss cu pivotare este de ordinul O(2n /3), ca i la cea fr pivotare. s aa LMN, Draft din 30 septembrie 2011

3.3. Chestiuni de studiat

77

Necesarul de memorie Pentru memorarea matricei A i a vectorilor b i x sunt necesare: s s n2 + n + n = n(n + 2) locatii, ecare locatie de memorie ind rezervat unui numr real. a a

3.2.5

Analiza erorilor

Erorile se calculeaz la fel ca la algoritmul Gauss fr pivotare. Dei stabilitatea a aa s numeric a algoritmului cu pivotare este general mai bun, totui, erorile de rotunjire a n a s pot afecta grav solutia cazul sistemelor slab conditionate. n

3.3

Chestiuni de studiat

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

3.4

Modul de lucru

Se selecteaz lucrarea Rezolvarea sistemelor cu metoda Gauss din meniul principal. a Aceasta are ca efect lansarea urmtorului meniu: a

Rezolvare sisteme de ecuatii Analiza algoritmilor Document disponibil la http://mn.lmn.pub.ro

78

Capitolul 3. Rezolvarea sistemelor de ecuatii liniare prin metoda Gauss. Strategii de pivotare n rezolvarea sistemelor algebrice liniare

3.4.1

Rezolvarea unor sisteme algebrice liniare

Se selecteaz optiunea Rezolvare sisteme de ecuatii. a Se vor introduce parametrii x1 + x2 + 2x1 + x2 + x + x2 + 1 2x1 + 3x2 + x + x + 1 2 necesari pentru rezolvarea urmtoarelor sisteme: a x3 x3 3x3 x3 x3 + x4 + 3x4 + x4 + 2x4 + x4 + x5 + x5 + 2x5 + x5 + 4x5 = = = = = 9 12 17 15 15 R : x1 x2 x3 x4 x5 =1 =2 =3 =1 =2

x1 + x2 2x3 = 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 rnd metoda fr pivotare i apoi cu pivotare. Se vor comenta a aa s rezultatele obtinute.

3.4.2

Analiza experimental a algoritmului a

Se selecteaz optiunea Analiza algoritmilor. a Astfel, se apeleaz un program care rezolv sisteme de ecuatii liniare de diferite mrimi a a a prin metoda Gauss fr pivotare, Gauss cu pivotare partial i Gauss cu pivotare total. aa as a Parametrul de intrare al programului este dimensiunea sistemului, n. Dup preluarea a acestui parametru programul genereaz aleator un sistem de n ecuatii i n necunoscute, a s LMN, Draft din 30 septembrie 2011

3.4. Modul de lucru

79

rezolv i aeaz: eroarea absolut, eroarea relativ i reziduul rezultatului, calculate l as s a a as ecare cu formula normei Euclidiene, sau a normei Cebsev ( total 6 valori). Se aeaz n s a de asemenea timpul de calcul. Pentru a simplica operatia de culegere a datelor numerice, programul cere valoarea initial a lui n, valoarea nal i pasul. Se recomand folosirea urmtoarelor valori: a a s a a valoare initial 10, valoare nal 100, pas 10, ceea ce corespunde irului de valori n = a a s 10, 20, 30, 40, 50, 60, 70, 80, 90, 100. Rezultatele numerice sunt aate consola Scilab i reprezentate grac. s n s Se vor nota pentru ecare n i ecare metod eroarea relativ (norma Euclidian i s a a a s norma Ceb sev) i reziduul relativ (norma euclidian), precum i timpul de calcul. s a s n timp [s] er.rel (Euclid) er.rel (Cebsev) 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 hrtie milimetric: a a curba timpului de calcul functie de dimensiunea sistemului n; n curbele erorilor de calcul functie de n. n

3.4.3

Implementarea algoritmilor ntr-un limbaj de programare

Se va implementa o procedur proprie de rezolvare a unui sistem de ecuatii prin metoda a Gauss fr pivotare. Se va compila procedura elimin aa ndu-se eventualele erori. Se va scrie pseudocodul i se va implementa pe calculator un program care apeleaz s a procedura de la punctul anterior i rezolv sistemul de ecuatii: s a 2x + y + z = 7 R: x=1 x + y + z = 6 y=2 2x + y + 3z = 13 z=3 Document disponibil la http://mn.lmn.pub.ro

80

Capitolul 3. Rezolvarea sistemelor de ecuatii liniare prin metoda Gauss. Strategii de pivotare n rezolvarea sistemelor algebrice liniare

Acest program va permite introducerea datelor de la consol i aarea pe ecran a a s s solutiei. Se vor nota i comenta rezultatele obtinute, eventualele diculti aprute pe s at a parcursul lucrului.

3.4.4

Cutare de informatii a

Cutati pe Internet informatii (coduri) legate de metoda Gauss pentru rezolvarea dia rect a sistemelor de ecuatii liniare. Exemple de cuvinte cheie: Gauss elimination and a back substitution.

3.5
3.5.1

Exemple
Exemple rezolvate

1. Fie sistemul de ecuatii: x + 2y z = 4 2x + 2y 3z = 2 3x + 2y + 2z = 2 S se rezolve sistemul de ecuatii prin metoda Gauss. a Rezolvare: Deoarece matricea coecientilor sistemului de ecuatii este ptrat i nesingular, a a s a metoda Gauss se poate aplica pentru rezolvarea sistemului de ecuatii. Metoda Gauss const etapa de eliminare i etapa de retrosubstitutie. a n s etapa de eliminare (sau triangularizare) matricea coecientilor sistemului de In ecuatii se aduce la forma superior triunghiular. a Pentru triangularizarea matricii, prima ecuatie (linie, notat L1 c ele ce urmeaz) a n a se nmultete cu (2/1) i se adun la a doua ecuatie (linie, L2 ) pentru a se elimina s s a termenul x din a doua ecuatie. De notat c, dup acest pas, prima ecuatie nu se n a a modic, doar a dou ecuatie sufer modicri, conform relatiei L2 = L2 + (2) L1 . a a a a LMN, Draft din 30 septembrie 2011

3.5. Exemple

81

L1 L2 L3 L1 L2 L3

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

L2 =L2 +(2)L1

continuare, prima ecuatie (L1 ) se In nmultete cu [(3)/1] i se adun la a treia s s a ecuatie (L3 ), astfel eliminndu-se termenul x i din a treia ecuatie (L3 = L3 + 3 a n s L1 ). L1 L2 L3 L1 L2 L3 x + 2y z = 4 | ( 3 ) 1 2y z = 6 3x + 2y + 2z = 2 x + 2y z = 4 2y z = 6 + 8y z = 14

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

L3 =L3 +3L1

Se observ c elementele de sub elementul diagonal din prima ecuatie sunt nuli. a a Mai departe, se urmrete anularea elementelor de sub elementul diagonal din a a s doua ecuatie. Astfel, a doua ecuatie (L2 ) se nmultete cu [8/(2)] i se adun la a treia ecuatie s s a (L3 ), eliminndu-se termenul y din a treia ecuatie (L3 = L3 + 4 L2 ). De notat a n c ecuatia a doua (L2 ) nu sufer modicri. a a a L1 L2 L3 L1 L2 L3 x + 2y z = 4 8 2y z = 6 | ( 2 ) + 8y z = 14

L3 =L3 +4L2

Se observ c matricea coecientilor ultimului sistem de ecuatii este superior tria a unghiular. a Document disponibil la http://mn.lmn.pub.ro

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

82

Capitolul 3. Rezolvarea sistemelor de ecuatii liniare prin metoda Gauss. Strategii de pivotare n rezolvarea sistemelor algebrice liniare

Necunoscutele sistemului se determin in etapa de retrosubstitutie (substitutie a regresiv). a ultima ecuatie apare o singur necunoscut, z, care se calculeaz astfel: In a a a z= 10 = 2. 5

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

sfrit, prima ecuatie, singura necunoscuta este acum x, iar y i z ind calculate In a s n s la paii anteriori. Rezult: s a x= 4 2y + z = 4 4 + 2 = 2. 1

Solutia sistemului de ecuatii este (2, 2, 2). 2. Fie sistemul de ecuatii: x + 2y + 4z = 5 3x y + z = 3 2x y + z = 2 S se rezolve sistemul de ecuatii prin metoda Gauss. a Rezolvare: Etapa de eliminare: Prima ecuatie (L1 ) se nmultete cu [3/(1)] i se adun la a doua ecuatie (L2 ), s s a astfel se elimin termenul x din a doua ecuatie. Doar a doua ecuatie se modic a n a (L2 = L2 + 3 L1 ). Prima ecuatie (L1 ) se nmultete cu [(2)/(1)] i se adun la a treia ecuatie s s a (L3 ), astfel se elimin termenul x i din a treia ecuatie (L3 = L3 + (2) L1 ). a n s De precizat c prima ecuatie (L1 ) nu se modic. a a LMN, Draft din 30 septembrie 2011

3.5. Exemple

83

L1 L2 L3 L1 L2 L3

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

L2 =L2 +3L1

L3 =L3 +(2)L1

A doua ecuatie (L2 ) se nmultete cu [(5)/5] i se adun la a treia ecuatie (L3 ), s s a eliminndu-se y din a treia ecuatie (L3 = L3 + 1 L2 ). a a a De notat c ecuatia a doua (L2 ) nu sufer modicri. a L1 L2 L3 L1 L2 L3 x + 2y + 4z = 5 5y + 13z = 18 | ( 5 ) 5 5y 7z = 12

L3 =L3 +L2

Se observ c matricea coecientilor ultimului sistem de ecuatii este superior tria a unghiular. a Etapa de retrosubstitutie: Necunoscutele sistemului se determin astfel: a z = y = x =
6 =1 6 1813z = 1813 = 1 5 5 52y4z = 524 = 1 1

x + 2y + 4z = 5 5y + 13z = 18 6z = 6

1.

Solutia sistemului de ecuatii este (1, 1, 1). 3. Fie sistemul de ecuatii: 2x + y z = 3 4x + 4y + z = 7 6x + 2y + 3z = 19

S se rezolve sistemul de ecuatii prin metoda Gauss. a

Document disponibil la http://mn.lmn.pub.ro

84

Capitolul 3. Rezolvarea sistemelor de ecuatii liniare prin metoda Gauss. Strategii de pivotare n rezolvarea sistemelor algebrice liniare

Rezolvare: Etapa de eliminare:

L1 L2 L3 L1 L2 L3 L1 L2 L3

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

L2 =L2 +(2)L1

L3 =L3 +3L1

L3 =L3 +(5/2)L2

2x +

Matricea coecientilor ultimului sistem de ecuatii este superior triunghiular. a Se observ c ultima ecuatie a penultimului sistem de ecuatii de mai sus exist a a n a o singur necunoscut, y. Determinarea lui y din aceast ecuatie este corect din a a a a punct de vedere matematic, dar nu este conform metodei Gauss. La metoda Gauss, necunoscutele sistemului se determin cnd matricea sistemului are o form superior a a a triunghiular, ceea ce nu este cazul matricii penultimului sistem de ecuatii. a Etapa de retrosubstitutie: z = y = x =
45 2 =3 15 2 133z = 139 = 2 2 2 3y+z = 32+3 2 2

= 1.

Solutia sistemului de ecuatii este (1, 2, 3). 4. Fie sistemul de ecuatii: 2y 3z = 1 x + y z = 1 2x + 3y + z = 2

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

LMN, Draft din 30 septembrie 2011

3.5. Exemple

85

Etapa de eliminare: prima ecuatie coecientul diagonal (pivotul, termenul x) este nul, ceea ce ar In n duce la o artire la zero etapa de eliminare. Din acest motiv, trebuie s se mp n a aplice o tehnic de pivotare. Se va utiliza pivotarea partial (permutarea a dou a a a linii), ind cea mai uor de aplicat. s Pentru a obtine erori de rotunjire minime, se permut prima ecuatie (cu pivot nul) a cu ecuatia care are termenul x maxim modul (coecientul de sub pivotul nul). n n Se observ c a treia ecuatie a a ndeplinete aceast conditie (| 2| > |1|). s a Astfel, prima ecuatie se permut cu a treia ecuatie, iar sistemul de ecuatii devine: a L1 L2 L3 L1 L2 L3 L1 L2 L3 1 2x + 3y + z = 2 | ( 2 ) x + y z = 1 2y 3z = 1 2x + 3y + z = 2 1 4 5 y 2z = 2 | ( 5 ) 2 2y 3z = 1
1 z 2 13 z 5

L2 =L2 +(1/2)L1

L3 =L3 +(4/5)L2

Matricea coecientilor ultimului sistem de ecuatii este superior triunghiular. a Etapa de retrosubstitutie: z = y = x =
13 5 = 13 5 1 2+ 2 z
5 2

2x + 3y + 5 y 2

z = 2 = 2 13 = 5

1
2+ 1 2
5 2

=1 = 1.

23yz 2

231 2

Solutia sistemului de ecuatii este (1, 1, 1). 5. Fie sistemul de ecuatii: x 2x 3x x + y + z 2y z + 2y + z 3y + z + w + w w + 2w = 2 = 0 = 1 = 1

Document disponibil la http://mn.lmn.pub.ro

86

Capitolul 3. Rezolvarea sistemelor de ecuatii liniare prin metoda Gauss. Strategii de pivotare n rezolvarea sistemelor algebrice liniare

S se rezolve sistemul de ecuatii prin metoda Gauss. a Rezolvare: Etapa de eliminare: x + y + z 2x 2y z 3x + 2y + z x 3y + z x + y +

L1 L2 L3 L4 L1 L2 L3 L4

+ +

w = w =

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

L2 =L2 +2L1

w = 1 1

L3 =L3 +(3)L1

+ 2w =

L4 =L4 +L1

z z y 2z 2y + 2z

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

a doua ecuatie coecientul diagonal (pivotul, termenul y) este nul, ind neceIn n sar o pivotare partial. a a Pentru a obtine erori de rotunjire minime, se permut a doua ecuatie (cu pivot nul) a cu ecuatia care are termenul y maxim modul (coecientul de sub pivotul nul). n n Se observ c a patra ecuatie a a ndeplinete aceast conditie (| 2| > | 1|). s a Astfel, a doua ecuatie se permut cu a patra ecuatie, iar sistemul de ecuatii devine: a 2 x + y + z + w = 1 2y + 2z + 3w = 3 | ( 2 ) y 2z 4w = 7 z + 3w = 4 w 3w 11 w 2 3w

L1 L2 L3 L4 L1 L2 L3 L4 L1 L2 L3 L4

L3 =L3 +(1/2)L2

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

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

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

L4 =L4 +(1/3)L3

w 3w 11 w 2 7 w 6

= 2 = 3 17 = 2 7 = 6

LMN, Draft din 30 septembrie 2011

3.5. Exemple

87

Matricea coecientilor ultimului sistem de ecuatii este superior triunghiular. a Etapa de retrosubstitutie: w = z = y = x =
7 6 7 6

=1

17 + 11 17 + 11 w 2 2 = 23 2 = 1 3 32z3w = 323 = 1 2 2 2yzw = 2111 = 1. 1 1

Solutia sistemului de ecuatii este (1, 1, 1, 1).

3.5.2

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

1. Fie sistemul de ecuatii:

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

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

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

S se rezolve sistemul de ecuatii prin metoda Gauss. a

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

Document disponibil la http://mn.lmn.pub.ro

88

Capitolul 3. Rezolvarea sistemelor de ecuatii liniare prin metoda Gauss. Strategii de pivotare n rezolvarea sistemelor algebrice liniare

5. Fie sistemul de ecuatii: x + y + z = 1 2x 2y z = 1 3x + y + z = 1

S se rezolve sistemul de ecuatii prin metoda Gauss. a

3.6

Intrebri a

1. Cum se pot verica solutiile obtinute urma rezolvrii unui sistem de ecuatii? Cum n a s-ar putea evalua eroarea cu care s-au determinat necunoscutele? 2. Dati exemplu de un sistem, cu matricea A nesingular, care nu poate rezolvat a prin algoritmul Gauss fr pivotare. aa 3. Care este ordinul de complexitate al algoritmului Gauss? S se compare valoarea a teoretic cu valorile obtinute urma experimentrilor. a n a 4. S se evalueze durata medie a unei operatii matematice elementare. a 5. Cum variaz erorile de calcul introduse de algoritmul Gauss cu dimensiunea sisa temului? Care este explicatia? 6. Ct de bine este evaluat eroarea adevrat prin norma reziduului? a a a a 7. Evidentiati utilitatea acestei proceduri electrotehnic. n a 8. Ce modicri trebuie aduse procedurii pentru a rezolva sisteme cu coecienti coma pleci? s 9. Ce alte mbuntiri se pot aduce procedurii? a at 10. Ce limitri are algoritmul prezentat capitolul 3? a n 11. Cum variaz timpul de calcul la rezolvarea de sisteme liniare prin metodele Gauss a fr pivotare i cu pivotare? Care este explicatia? aa s 12. Care sunt avantajele i dezavantajele metodelor cu pivotare? s 13. Cum variaz erorile de calcul introduse de algoritmul Gauss pentru metodele: fr a aa pivotare, cu pivotare partial, cu pivotare total? a a LMN, Draft din 30 septembrie 2011

3.6. Intrebri a

89

14. S se fac o analiz a celor trei metode, lund consideratie erorile i timpul de a a a a n s calcul. Care este metoda optim? a 15. Ce modicri trebuie aduse algoritmului pentru a rezolva sistemul cu coecienti a compleci? s 16. Ce alte mbuntiri se pot aduce algoritmului? a at

Document disponibil la http://mn.lmn.pub.ro

90

Capitolul 3. Rezolvarea sistemelor de ecuatii liniare prin metoda Gauss. Strategii de pivotare n rezolvarea sistemelor algebrice liniare

Johann Carl Friedrich Gauss

Born: 30 April 1777 in Brunswick, Duchy of Brunswick (now Germany) Died: 23 Feb 1855 in Gttingen, Hanover (now Germany) http://www-gap.dcs.st-and.ac.uk/~history/Mathematicians/Gauss.html http://scienceworld.wolfram.com/biography/Gauss.html

Pafnuty Lvovich Chebyshev

Born: 1821 in Okatovo, Russia Died: 1894 http://scienceworld.wolfram.com/biography/Chebyshev.html

LMN, Draft din 30 septembrie 2011

3.6. Intrebri a

91

Euclid of Alexandria

Born: about 325 BC Died: about 265 BC in Alexandria, Egypt http://www-gap.dcs.st-and.ac.uk/~history/Mathematicians/Euclid.html http://scienceworld.wolfram.com/biography/Euclid.html

Document disponibil la http://mn.lmn.pub.ro

92

Capitolul 3. Rezolvarea sistemelor de ecuatii liniare prin metoda Gauss. Strategii de pivotare n rezolvarea sistemelor algebrice liniare

LMN, Draft din 30 septembrie 2011

Capitolul 8 Metode iterative de rezolvare a sistemelor algebrice liniare


8.1 Caracterizarea metodelor

Metodele iterative sunt metode care permit obtinerea solutiei numerice a unui sistem de ecuatii, prin generarea unui ir care tinde ctre solutia exact. Elementele acestui ir s a a s de iteratii se calculeaz recursiv, iar procesul se oprete dup un numr nit de pai, la a s a a s ndeplinirea criteriului de eroare. Chiar dac solutia obtinut prin metode iterative este afectat de erori de trunchiere, a a a erori care nu apar cazul metodelor directe, este totui posibil ca solutia iterativ s e n s a a mai precis dect cea obtinut prin metode directe. Pentru o anumit clas de sisteme, a a a a a metodele iterative sunt superioare att din punctul de vedere al erorii ct i din cel al a a s efortului de cacul.

8.2

Principiul metodei

lucrare se prezint cele mai simple metode iterative pentru rezolvarea sistemelor In a algebrice liniare i se descrie clasa sistemelor pentru care acestea pot aplicate. s Metodele iterative de rezolvare a sistemelor de ecuatii liniare sunt metodele care n termenul x(k) al irului solutiilor se obtine din termenul anterior, x(k1) . s Solutia exact se obtine teoretic dup un numr innit de iteratii. practic, prin a a a In a efectuarea unui numr nit de iteratii, se poate ajunge la o aproximare sucient de bun a a a 93

94

Capitolul 8. Metode iterative de rezolvare a sistemelor algebrice liniare

solutiei exacte. Dac irul iteratiilor este convergent, cu ct se efecteaz mai multe iteratii, as a a cu att solutia numeric este mai precis determinat, erorile, att cele de trunchiere ct a a a a a i cele de rotunjire, devenind tot mai mici. s metodele iterative, se pornete de la o initializare arbitrar pentru vectorul solutie In s a 0 numeric x . Pentru a determina noua valoare a solutiei numerice, se rescrie ecuatia sub a forma: x = F (x), (8.1) care F se numete aplicatie cu punct x, iar la ecare pas k al algoritmului, se determin n s a noua solutie numeric din relatia: a xk = F (xk1). Pentru a aduce sistemul de rezolvat Ax = b (8.3) la forma unei aplicatii cu punct x, general se caut o descompunere a matricei A n a ntr-o diferent de dou matrice: a a A = B C, (8.4) sistemul putnd astfel adus la forma: a x = B1 (b + Cx), solutia la pasul k ind: xk = B1 (Cxk1 + b), sau xk = Mxk1 + u, care M = B1 C se numete matrice de iteratie, iar u = B1 b. n s Una din problemele metodelor iterative este convergenta irului de iteratii. Se demon s streaz c o conditie sucient pentru ca metoda s e convergent este ca valorile proprii a a a a a 1 ale matricei de iteratie M = B C s e toate, modul, mai mici dect 1. Denind a n a raza de convergent a matricei M, (M), ca ind modulul celei mai mari valori proprii, a conditia de convergent se scrie: a (M) < 1 (8.8) Aceast conditie de convergent este corelat cu norma matricei de iteratie M. Se demona a a streaz c, pentru orice matrice, exist urmtoarea relatie a a a a ntre norma i raza sa de s convergent: a (M) M (8.9) LMN, Draft din 30 septembrie 2011 (8.7) (8.6) (8.5) (8.2)

8.2. Principiul metodei

95

Prin urmare, dac matricea M are norma subunitar ( M < 1), raza sa de convergent a a a va i ea mai mic dect 1, iar metoda iterativ va acest caz convergent. s a a a n a Metodele iterative cele mai cunoscute sunt: metoda deplasrilor simultane (Jacobi), a metoda deplasrilor succesive (Gauss-Seidel), a metoda suprarelaxrilor succesive(Frankel-Young), a metoda directiilor alternante (Peaceman-Rachford), metoda iteratiilor bloc, metoda factorizrii incomplete, a metoda Southwell. Metoda Jacobi a deplasrilor simultane const alegerea partititiei matricei A astfel: a a n B este matricea alctuit din elementele diagonale ale lui A a a B = D, (8.10)

iar matricea C contine restul elementelor din matricea A, luate cu semn schimbat: C = (L + U), (8.11)

care s-au notat cu L i U triunghiul inferior, respectiv cel superior din A. Cu aceast n s a descompunere, vectorul solutie la ecare pas k va avea expresia: xk = D1 (b (L + U)xk1 ), iar matricea de iteratie M va : M = D1 (L + U). Se consider linia i a sistemului de ecuatii care trebuie rezolvat: a ai1 x1 + ai2 x2 + . . . + aii xi + . . . + ain xn = bi (8.14) (8.13) (8.12)

Partitionarea aleas pentru matricea A revine la a determina pe xi la pasul curent k din a ecuatia i, cu relatia: k1 bi n j=1,j=i aij xj k xi = , (8.15) aii Document disponibil la http://mn.lmn.pub.ro

96

Capitolul 8. Metode iterative de rezolvare a sistemelor algebrice liniare

care xi din membrul stng reprezint componenta i a noii solutii, iar xj din membrul n a a drept sunt valorile obtinute la precedentul pas al iteratiei. Se observ c, pentru deter a a minarea noii solutii, trebuie cunoscute, pe tot parcursul iteratiei k, valorile solutiei de la pasul anterior k 1. metoda Gauss-Seidel, a deplasrilor succesive, partitionarea se alege astfel: In a B = D + L, (8.16)

matricea B continnd astfel partea inferior triunghiular a matricei A inclusiv diagonala, a a iar C = U (8.17)

matricea C continnd partea superior triunghiular a matricei. Matricea de iteratie va a a avea forma M = (D + L)1 U. (8.18)

Aceast partitionare presupune c membrul stng al ecuatiei i din sistem rmn tera a n a a a menii care contin xj , j i, iar membrul drept trec toti ceilalti termeni: n ai1 x1 + ai2 x2 + . . . + aii xi = bi ai,i+1 xi+1 . . . ain xn . (8.19)

Ca i pn acum, componentele vectorului solutie aate membrul stng reprezint s a a n a a valori noi, calculate la pasul curent k, pe cnd componentele din membrul drept sunt a cele calculate la pasul anterior. Din aceast relatie rezult valoarea componentei xi la a a pasul curent:
i1 n (k) aij xj j=1

xk = i

bi

aij xj
j=i+1

(k1)

aii

(8.20)

Se observ c o component xi a solutiei la pasul k este calculat functie de componena a a a n tele precedente 1, . . . , i 1, deja calculate la pasul curent i de urmtoarele componente s a i + 1, . . . , n, calculate la pasul precedent. Algoritmul nu necesit pstrarea vechii coma a ponente i, dup ce cea nou a fost calculat, de aceea xi nou se poate plasa memorie a a a n aceeai locatie ca i vechea valoare. Astfel, algoritmul Gauss-Seidel nu necesit spatiu n s s a pentru memorarea dect a unui vector solutie, spre deosebire de algoritmul Jacobi, unde a trebuiau memorati att x nou ct i x vechi. metoda Gauss-Seidel, imediat ce o compo a a s In nent a fost determinat, ea este folosit calculele urmtoare, a a a n a nlocuind valoarea veche care se pierde, idee cunoscut sub numele de principiul lui Seidel. a Una din problemele care apar la rezolvarea sistemelor de ecuatii liniare prin metode iterative este alegerea criteriului de oprire a procesului iterativ. O metod de a rezolva a LMN, Draft din 30 septembrie 2011

8.3. Pseudocodul algoritmilor

97

aceast problem a criteriului de oprire const evaluarea, dup ecare iteratie, a erorii a a a n a Cauchy e = xnou xvechi (8.21) i s ntreruperea calculelor atunci cnd aceast valoare devine mai mic dect eroarea ima a a a pus, . a ceea ce privete convergenta metodelor, se demonstreaz c la metodele Jacobi i In s a a s Gauss-Seidel, o conditie sucient ca metodele s e convergente este ca matricea A a a a sistemului s e diagonal dominant, adic a a a |aii | > |aij | i. (8.22)

j=i

Desigur, aa cum s-a artat, conditia de mai sus este echivalent cu impunerea conditiei s a a ca norma matricei de iteratie s e subunitar, procesul iterativ ind cu att mai rapid a a a convergent cu ct norma matricei de iteratie este mai mic. cazul matricelor simetrice a a In i pozitiv denite, metoda Gauss-Seidel este de aproximativ 2 ori mai rapid dect metoda s a a Jacobi. Acest avantaj, corelat i cu necesitatea memorrii unui singur vector solutie, face s a ca metoda Gauss-Seidel s e preferabil metodei Jacobi din toate punctele de vedere. a a

8.3

Pseudocodul algoritmilor

Urmtoarea procedur permite rezolvarea sistemelor de ecuatii liniare prin metoda Jacobi. a a 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) ; initializri a k=0 pentru i=1,n xi = 0 ; iteratii repet a err= 0; pentru i= 1,n s = b(i)

; x nou ; contor iteratii ; initializarea solutiei ; parcurge iteratiile ; eroarea la pasul curent ; parcurge ecuatiile

Document disponibil la http://mn.lmn.pub.ro

98

Capitolul 8. Metode iterative de rezolvare a sistemelor algebrice liniare

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 err < s atunci err = a pentru i= 1,n x(i) = xn(i) k =k+1 pn cnd (err < eps) sau (k > nrit) a a a retur

; parcurge ecuatia i

; x nou s ; nlocuiete x vechi cu x nou s ; incrementeaz contor iteratii a

Urmtoarea procedur permite rezolvarea sistemelor de ecuatii liniare prin metoda a a Gauss-Seidel procedura Gauss-Seidel(n,a,b,x,nrit,eps) tablou real a(n,n), b(n), x(n) ntreg nrit real eps initializri a k=0 pentru i=1,n x(i) = 0 ; iteratii 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) pn cnd (err < eps) sau (k > nrit) a a a retur

; contor iteratii ; initializarea solutiei ; parcurge iteratiile ; eroarea la pasul curent ; parcurge ecuatiile ; parcurge ecuatia i

; x nou ; incrementeaz contor iteratii a

LMN, Draft din 30 septembrie 2011

8.4. Analiza algoritmilor

99

Procedurile Jacobi i Gauss-Seidel au parametrii: s de intrare n = dimensiunea sistemului; a(n,n)= matricea sistemului; b(n) = vectorul termenilor liberi; nrit = numrul maxim de iteratii; a eps = eroarea admis; a de ieire x(n) = vectorul solutie. s Pentru a demonstra modul diferit care se poate evalua eroarea, algoritmul Jacobi n n s-a folosit norma Cebsev a erorii, iar algoritmul Gauss-Seidel norma Euclidian. n a

8.4

Analiza algoritmilor

Efort de calcul Pentru o iteratie, ordinul de complexitate al metodelor Jacobi i Gauss-Seidel este s O(n(n + 2)). Efortul de calcul pentru rezolvarea ntregului sistem de ecuatii liniare prin 2 metode iterative este de ordinul O(mn ), care numrul total de iteratii m care vor n a efectuate nu este general cunoscut dinainte. Efortul de calcul depinde de norma n matricei de iteratie, ind cu att mai mic cu ct norma este mai mic. a a a Necesar de memorie Pentru memorarea matricei sistemului, a vectorilor termen liber i solutie sunt necesare s plus, la algoritmul Jacobi mai sunt necesare n locatii pentru n +2n locatii de memorie. In memorarea solutiei obtinute la pasul curent.
2

Dac matricea sistemului este o matrice rar, atunci metodele iterative se dovedesc a a extrem de eciente din punctul de vedere al memoriei, ele negenernd umpleri. a Analiza erorilor Spre deosebire de metodele directe, la care singurele erori care apar sunt cele de rotunjire, la metodele iterative apar i erori de trunchiere prin retinerea din irul convergent s s ctre solutia exact, a unui numr nit de termeni. Datorit convergentei lor, metodele a a a a iterative au proprietatea remarcabil de a corecta erorile de rotunjire aprute pe parcurs. a a Document disponibil la http://mn.lmn.pub.ro

100

Capitolul 8. Metode iterative de rezolvare a sistemelor algebrice liniare

Eroarea absolut la itertia k este de cel putin M ori mai mic dect eroarea de la a a a pasul anterior: ek = xk x M xk1 x = M ek1 M k e0 . (8.23)

Se constat c eroarea nal depinde de eroarea initial, de numrul de iteratii efectua a a a a ate i de norma matricei de iteratie, care determin viteza de convergent. Aceeai relatie s a a s k este valabil i pentru reziduul Ax b . as

8.5

Chestiuni de studiat

Rezolvarea unor sisteme de ecuatii liniare prin metodele Jacobi i Gauss-Seidel; s Analiza experimental a erorilor i a efortului de calcul, la metodele Jacobi i Gaussa s s Seidel; Implementarea algoritmilor; Cutare de informatii pe Internet. a

8.6

Mod de lucru

Pentru desfurarea lucrrii se selecteaz lucrarea Metode iterative de rezolvare a sisas a a temelor algebrice liniare din meniul general de lucrri. a Aceasta are ca efect aarea meniului: s 1. Rezolvare de sisteme cu metodele Jacobi/Gauss-Seidel 2. Analiza algoritmilor

8.6.1

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

Programul lansat permite rezolvarea unor sisteme liniare prin metode iterative. Se vor introduce: numrul de ecuatii; a LMN, Draft din 30 septembrie 2011

8.6. Mod de lucru

101

elementele a(i, j) ale matricei sistemului; termenii liberi b(i); eroarea admis; a numrul maxim de iteratii admis. a Programul aeaz consola Scilab informatii despre procesul iterativ: dac a fost s a n a convergent sau nu, norma matricei de iteratie, cazul care procesul a fost convergent, n n cte iteratii au fost necesare i care este solutia. a s Se vor introduce parametrii necesari pentru rezolvarea urmtoarelor sisteme: a x1 + x2 = 5 2x1 + 3x2 = 13 : R x1 = 2 x2 = 3

Se va inversa ordinea ecuatiilor i se va comenta efectul asupra solutiei. s

8x1 + 2x2 + x3 = 15 10x1 + 4x2 + x3 = 21 50x1 + 25x2 + 8x3 = 124 2x1 + x2 + x3 = 7 x + 2x2 + x3 = 8 1 x1 + x2 + x3 = 6 3x1 + x3 = 10 x + 2x2 + x3 = 12 1 x1 + x2 + 2x3 = 13

R : x1 = 1 x2 = 2 x3 = 3

R : x1 = 1 x2 = 2 x3 = 3

R : x1 = 2 x2 = 3 x3 = 4

Se va inversa ordinea a dou ecuatii din sistem i se va comenta efectul asupra solutiei. a s Se vor comenta rezultatele obtinute, convergenta metodelor pentru ecare sistem re zolvat. Document disponibil la http://mn.lmn.pub.ro

102

Capitolul 8. Metode iterative de rezolvare a sistemelor algebrice liniare

8.6.2

Analiza experimental a algoritmilor a

Se selecteaz optiunea Analiza algoritmilor. Aceasta are ca efect aarea unui meniu cu a s optiunile: Eroarea functie de numrul de iteratii; n a Numrul de iteratii functie de norma matricei de iteratie. a n La selectarea optiunii Eroarea functie de numrul de iteratii, utilizatorul introduce: n a norma matricei de iteratie Jacobi i numrul de ecuatii (valoare initial, valoare nal, s a a a pas). Astfel se apeleaz un program care rezolv, pe baza celor dou metode iterative, a a a sisteme de ecuatii liniare generate aleator. Programul aeaz rezultatele numerice s a n consola Scilab i reprezint grac variatia erorii Cauchy functie de iteratie. Valorile s a n recomandate sunt: norma matricei de iteratie Jacobi 0.5, dimensiunile sistemelor 20, 40, 60. Datele se pot nota ntr-un tabel de tipul: iteratii n = 20 eroare J eroare GS n = 40 eroare J eroare GS n = 60 eroare J eroare GS Se vor reprezenta pe acelai grac erorile functie de numrul de iteratii. Se vor s n a comenta rezultatele obtinute. La selectarea optiunii Numrul de iteratii functie de norma matricei de iteratie a n utilizatorul alege dimensiunea n a sistemului i eroarea de oprire. Programul aeaz s s a numrul de iteratii necesar celor dou metode pentru sisteme generate aleator, de dimena a siune n, avnd norma matricei de iteratie 0.1, 0.2, . . ., 0.9. Datele se pot nota a ntr-un tabel de tipul: norma matricei Jacobi nr. iteratii Jacobi nr. iteratii Gauss-Seidel Se vor reprezenta pe acelai grac numrul de iteratii functie de norma matricei. Se s a n vor comenta rezultatele obtinute. LMN, Draft din 30 septembrie 2011 0.1 0.2 . . . 0.9 1 5 9 13 17

8.7. Exemple

103

8.6.3

Implementarea algoritmilor

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

Acest program va permite introducerea datelor de la consol i aarea pe ecran a a s s solutiei. Se vor nota i comenta rezultatele obtinute i eventualele diculti aprute pe s s at a parcursul lucrului.

8.6.4

Cutare de informatii pe Internet a

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

8.7
8.7.1

Exemple
Exemple rezolvate
x 2y = 2 3x + 2y = 6 (a) s se determine solutia sistemului de ecuatii pentru primele dou iteratii ale a a (0) (0) metodei Jacobi, cunoscnd solutia initial x = y = 0; a a (b) s se ilustreze grac procesul iterativ i s se comenteze convergenta lui; a s a (c) s se comenteze rezultatele obtinute atunci cnd se schimb ordinea ecuatiilor. a a a Rezolvare: Document disponibil la http://mn.lmn.pub.ro

1. Fie sistemul de ecuatii:

104

Capitolul 8. Metode iterative de rezolvare a sistemelor algebrice liniare

(a) Iteratiile metodei Jacobi se calculeaz conform formulelor: a x(k+1) = 2 + 2y (k) 2y (k+1) = 6 + 3x(k) Solutia la prima iteratie este: x(1) = 2 + 2y (0) = 2 (0) y (1) = 6+3x = 3, 2 iar la a doua iteratie: x(2) = 2 + 2y (1) = 2 6 = 8 (1) y (2) = 6+3x = 66 = 6. 2 2 (b) Din punct de vedere geometric, rezolvarea sistemului este echivalent cu gsirea a a punctului de intersectie al dreptelor ecuatiilor, D1 i D2 : s D1 : x 2y + 2 = 0 D2 : 3x + 2y + 6 = 0 Vom reprezenta grac aceste drepte. Dreapta D1 taie axele punctele de n coordonate (0, 1) i (2, 0). Dreapta D2 taie axele punctele de coordonate s n (0, 3) i (2, 0). Dreptele D1 i D2 sunt concurente punctul (4, 3), solutia s s n sistemului de ecuatii. Procesul iterativ este ilustrat gura 1 i se observ c este divergent. Dei n s a a s problema este bine formulat matematic (solutia exist i este unic), metoda a as a Jacobi eueaz. s a Convergenta metodei depinde de proprietile matricei de iteratie. Dac notm at a a 1 A = D + L + U, atunci M = D (L + U) este matricea de iteratie cazul n metodei Jacobi. cazul problemei considerate: In 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 solutiile ecuatiei det(M I) = 0. a LMN, Draft din 30 septembrie 2011

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

8.7. Exemple

105

y D2 000000000000000 111111111111111 000000000000000 111111111111111 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 11111111111111111111111111111 00000000000000000000000000000 111111111111111 000000000000000 00000000000000000000000000000D 11111111111111111111111111111 000000000000000 111111111111111 1 0 00000000000000000000000000000 1 11111111111111111111111111111 000000000000000 111111111111111 1 0 11111111111111111111111111111 00000000000000000000000000000 (4,3) 000000000000000 111111111111111 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 11111111111111111111111111111 00000000000000000000000000000 111111111111111 000000000000000 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 00000000000000000000000000000 11111111111111111111111111111 (0,1) 000000000000000 111111111111111 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 11111111111111111111111111111 00000000000000000000000000000 000000000000000 111111111111111 (x 00000000000000000000000000000 11111111111111111111111111111 (2,0) 1 0 0,y0) 000000000000000 111111111111111 0 1 00000000000000000000000000000 11111111111111111111111111111 1 0 000000000000000 111111111111111 0 1 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 1 0 11111111111111111111111111111 00000000000000000000000000000 x 0 (2,0) 111111111111111 000000000000000 0 1 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 0 1 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 0 1 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 1 0 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 1 0 11111111111111111111111111111 00000000000000000000000000000 000000000000000 111111111111111 0 1 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 0 1 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 0 (x ,y ) 1 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 00 10 11 1 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 11111111111111111 00000000000000000 (0,3) 1 0 00 1 11 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 1 0 0 1 00000000000000000000000000000 11111111111111111111111111111 000000000000000 111111111111111 1 0 0 1 000000000000000 111111111111111 1 0 1 0 000000000000000 111111111111111 1 0 0 1 000000000000000 111111111111111 1 0 0 1 000000000000000 111111111111111 1 0 0 1 000000000000000 111111111111111 1 0 0 1 000000000000000 111111111111111 1 0 0 1 000000000000000 111111111111111 1 0 0 1 000000000000000 111111111111111 1 0 (x ,y ) 0 1 000000000000000 111111111111111 1 0 2 2 0 1 1111111111111 0000000000000 11 00 000000000000000 111111111111111 1 0 0 1 11 00 000000000000000 111111111111111 1 0 1 0 000000000000000 111111111111111 1 0 1 0 Fig. 1. Proces iterativ divergent al metodei Jacobi
cazul studiat: In
3 2

M I =

Valorile proprii sunt 1,2 = 3, iar (M) = max |i| = 3.


i=1,2

= det(M I) = 2 3 = 0.

Deoarece (M) > 1, procesul iterativ este divergent. (c) cazul care se schimb ordinea ecuatiilor, sistemul de rezolvat este: In n a 3x + 2y = 6 x 2y = 2 Solutia la prima iteratie se calculeaz astfel: a 3x(1) = 6 2y (0) = 2y (1) = 2 x(0) Iar solutia la a doua iteratie este: Document disponibil la http://mn.lmn.pub.ro x(1) = 2 y (1) = 1

106

Capitolul 8. Metode iterative de rezolvare a sistemelor algebrice liniare

y D1 111111111111 000000000000 111111111111 000000000000 1111111111111111111 0000000000000000000 111111111111 000000000000 1111111111111111111 0000000000000000000 111111111111 000000000000 1111111111111111111 0000000000000000000 D 111111111111 000000000000 1 0 1111111111111111111 0000000000000000000 2 111111111111 000000000000 1 0 1111111111111111111 0000000000000000000 111111111111 000000000000 (4,3) 1111111111111111111 0000000000000000000 (x 2,y2) 0 111111111111 000000000000 1 1111111111111111111 0000000000000000000 111111111111 000000000000 1 0 1 0 1 00 1111 0000 11 00 1111111111111111111 0000000000000000000 1 0 111111111111 000000000000 1 1 0 0 11 1111111111111111111 0000000000000000000 1 0 111111111111 000000000000 1 1 0 0 1111111111111111111 0000000000000000000 1 0 1 1 0 0 111111111111 000000000000 1111111111111111111 0000000000000000000 111111111111 000000000000 11 1 00 0 111111 1 111 0 000 1111111111111111111 0000000000000000000 (0,1) 000000 111111111111 000000000000 1 0 1111111111111111111 0000000000000000000 111111111111 000000000000 (x ,y1) 1 0 1111111111111111111 0000000000000000000 111111111111 1 1111111111111111111 0000000000000000000 (2,0) 000000000000 1 0 10 111111111111 000000000000 1 0 1111111111111111111 0000000000000000000 1 0 111111111111 000000000000 1 0 1111111111111111111 0000000000000000000 x 111111111111 (x000000000000 1111111111111111111 0000000000000000000 (2,0) 111111111111 000000000000 0,y0) 0 1111111111111111111 0000000000000000000 111111111111 000000000000 1111111111111111111 0000000000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 (0,3) 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000

Fig. 2. Proces iterativ convergent al metodei Jacobi

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

8 x(2) = 3 y (2) = 2

Procedeul iterativ este convergent aa cum se observ gura 2. s a n Intr-adevr, pentru acest sistem, matricea de iteratie este: a
1

M =

3 0 0 2

0 2 1 0

1 3 0 0 1 2

0 2 1 0

0
1 2

2 3

iar valorile proprii sunt solutiile ecuatiei: 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

Deoarece (M) < 1, procesul iterativ este convergent. Aceeai concluzie se poate obtine dac se observ c matricea sistemului este s a a a diagonal dominant (vezi relatia (8.22)). Aceasta este o conditie sucient de a a convergent. a Inegalitatea (8.22) este adevrat pentru cele dou ecuatii ale sistemului: a a a | 3| > |2|, | 2| > |1|,

LMN, Draft din 30 septembrie 2011

8.7. Exemple

107

deci matricea sistemului este diagonal dominant, ceea ce este echivalent cu a ||M|| < 1. Pentru orice matrice avem (M) ||M||, astfel c (M) < 1. a 2. Fie sistemul de ecuatii de la exercitiul anterior: x 2y = 2 3x + 2y = 6 (a) s se determine solutia sistemului de ecuatii pentru primele dou iteratii ale a a (0) (0) metodei Gauss-Seidel, cunoscnd solutia initial x = y = 0; a a (b) s se ilustreze grac procesul iterativ i s se comenteze convergenta lui; a s a (c) s se comenteze rezultatele obtinute atunci cnd se schimb ordinea ecuatiilor. a a a Rezolvare: (a) Iteratiile metodei Gauss-Seidel se calculeaz conform formulelor: a x(k+1) = 2 + 2y (k) 2y (k+1) = 6 + 3x(k+1) Solutia la prima iteratie este: x(1) = 2 + 2y (0) = 2 (1) y (1) = 6+3x = 66 = 6, 2 2 iar la a doua iteratie: x(2) = 2 + 2y (1) = 2 12 = 14 (2) y (2) = 6+3x = 642 = 24. 2 2 (b) Procesul iterativ este ilustrat gura 3 i se observ c este divergent. Dei n s a a s problema este bine formulat matematic (solutia exist i este unic), metoda a as a Gauss-Seidel eueaz. s a Matricea de iteratie cazul metodei Gauss-Seidel este M = (D + L)1 U. n cazul problemei considerate: In
1

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 solutiile ecuatiei det(M I) = 0. Document disponibil la http://mn.lmn.pub.ro

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

108

Capitolul 8. Metode iterative de rezolvare a sistemelor algebrice liniare

y D2 11111111111111111 00000000000000000 11111111111111111 00000000000000000 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11111111111111111 00000000000000000 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11111111111111111 00000000000000000 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11111111111111111 00000000000000000 D 11 00 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 1 11111111111111111 00000000000000000 11 00 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11111111111111111 00000000000000000 (4,3) 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11111111111111111 00000000000000000 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11111111111111111 00000000000000000 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11111111111111111 00000000000000000 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11111111111111111 00000000000000000 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11111111111111111 00000000000000000 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11111111111111111 00000000000000000 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 (0,1) 11111111111111111 00000000000000000 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11111111111111111 00000000000000000 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11111111111111111 00000000000000000 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 (x (2,0) 11111111111111111 00000000000000000 1 0 0,y0) 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11111111111111111 00000000000000000 1 0 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11 1 00 0 11111111111111111 00000000000000000 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11 00 x 0 (2,0) 11111111111111111 00000000000000000 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11 00 11111111111111111 00000000000000000 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11 00 11111111111111111 00000000000000000 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11 00 11111111111111111 00000000000000000 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11 00 11111111111111111 00000000000000000 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11 00 11111111111111111 00000000000000000 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11 00 11111111111111111 00000000000000000 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11 00 11111111111111111 00000000000000000 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11 00 11111111111111111 00000000000000000 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11 00 11111111111111111 00000000000000000 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11 00 11111111111111111 00000000000000000 1 0 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11 00 11111111111111111 00000000000000000 1 0 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11 00 11111111111111111 00000000000000000 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11 00 11111111111111111 00000000000000000 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11 00 11111111111111111 00000000000000000 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11 00 11111111111111111 00000000000000000 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11 00 11111111111111111 00000000000000000 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11 00 11111111111111111 00000000000000000 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11 00 11111111111111111 00000000000000000 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11 00 11111111111111111 00000000000000000 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11 00 11111111111111111 00000000000000000 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11 00 11 00 11111111111111111 00000000000000000 1111111111111111111111111 0000000000000000000000000 11 00 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11 00 11 00 ,y ) (0,6) 11111111111111111 00000000000000000 1 0 (x 1 1 1111111111111111111111111111111111111111 0000000000000000000000000000000000000000 11111111111111111 00000000000000000 1 0 11111111111111111 00000000000000000 1 0 11111111111111111 00000000000000000 1 0 11111111111111111 00000000000000000 1 0 11111111111111111 00000000000000000 1 0 ,y ) (x2 2 11111111111111111 00000000000000000

Fig. 3. Proces iterativ divergent al metodei Gauss-Seidel cazul studiat: In 2 0 3

M I =

= det(M I) = (3 ) = 0.
i=1,2

Valorile proprii sunt 1 = 0, 2 = 3, iar (M) = max |i | = 3. Deoarece (M) > 1, procesul iterativ este divergent. (c) cazul care se schimb ordinea ecuatiilor, sistemul de rezolvat este: In n a 3x + 2y = 6 x 2y = 2 Solutia la prima iteratie se calculeaz astfel: a 3x(1) = 6 2y (0) = 2y (1) = 2 x(1) Iar solutia la a doua iteratie este: 3x(2) = 6 2y (1) = 2y (2) = 2 x(2) x(2) = y (2) =
10 3 8 3

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

LMN, Draft din 30 septembrie 2011

8.7. Exemple

109

y D1 111111111111 000000000000 111111111111 000000000000 1111111111111111111 0000000000000000000 111111111111 000000000000 1111111111111111111 0000000000000000000 111111111111 000000000000 1111111111111111111 0000000000000000000 D 111111111111 000000000000 1 1111111111111111111 0000000000000000000 2 (x00 0 111111111111 000000000000 2,y2) 1 1111111111111111111 0000000000000000000 11 0 11 00 1 0 111111111111 000000000000 1111111111111111111 0000000000000000000 11 00 (4,3) 1 0 111111111111 000000000000 1111111111111111111 0000000000000000000 (x 1,y0 1 0 111111111111 000000000000 1) 10 01 111 1111111111111111111 0000000000000000000 1 0 111111111111 000000000000 1000 01 1111111111111111111 0000000000000000000 111111111111 000000000000 1 0 1111111111111111111 0000000000000000000 111111111111 000000000000 1 0 1111111111111111111 0000000000000000000 111111111111 000000000000 1 0 1111111111111111111 0000000000000000000 (0,1) 111111111111 000000000000 1 0 1111111111111111111 0000000000000000000 111111111111 000000000000 1 0 1111111111111111111 0000000000000000000 111111111111 1 0 1111111111111111111 0000000000000000000 (2,0) 000000000000 1 11 0 00 111111111111 000000000000 1 0 1111111111111111111 0000000000000000000 1 0 111111111111 000000000000 1 0 1111111111111111111 0000000000000000000 x 111111111111 (x000000000000 1111111111111111111 0000000000000000000 (2,0) 111111111111 000000000000 0,y0) 0 1111111111111111111 0000000000000000000 111111111111 000000000000 1111111111111111111 0000000000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000 (0,3) 111111111111 000000000000 111111111111 000000000000 111111111111 000000000000

Fig. 4. Proces iterativ convergent al metodei Gauss-Seidel Procedeul iterativ este convergent aa cum se observ gura 4. s a n Intr-adevr, pentru acest sistem, matricea de iteratie este: a
1

M =

3 0 1 2

0 2 0 0

0 1 3 1 1 6 2

0 2 0 0

0 0

2 3 1 3

iar valorile proprii sunt solutiile ecuatiei: 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 ecuatii: 3x y + z = 3 3x 6y + z = 2 x + 2y + 4z = 5

S se comenteze convergenta metodelor iterative i s se determine solutia sistemua s a lui de ecuatii pentru primele dou iteratii ale metodelor Jacobi i Gauss-Seidel, a s (0) (0) (0) cunoscnd solutia initial x = y = z = 0. a a Document disponibil la http://mn.lmn.pub.ro

110

Capitolul 8. Metode iterative de rezolvare a sistemelor algebrice liniare

Rezolvare: Deoarece matricea coecientilor sistemului este diagonal dominant, metodele iter a ative Jacobi i Gauss-Seidel sunt convergente. s De exemplu, pentru prima ecuatie a unui sistem, conform relatiei (8.22), trebuie s a e adevrat inegalitatea: |a11 | > |a12 | + |a13 |. a a Pentru sistemul de ecuatii considerat, inegalitatea (8.22) este adevrat pentru toate a a cele trei ecuatii: |3| > | 1| + |1|, | 6| > |3| + |1|, |4| > | 1| + |2|,

deci matricea sistemului este diagonal dominant, ceea ce este echivalent cu ||M|| < a 1. Pentru orice matrice avem (M) ||M||, astfel c (M) < 1, ceea ce a nseamn a c metodele iterative sunt convergente pentru acest sistem. a Metoda Jacobi Solutia la o anumit iteratie se determin functie de solutia calculat la iteratia a a n a precedent. a Conform relatiei (8.15), din prima ecuatie a sistemului se determin: a x(1) = 3 + y (0) z (0) 3+00 = = 1, 3 3

iar din ecuatiile a doua i a treia rezult urmtoarele componente ale solutiei la s a a prima iteratie: 2 0 0 1 2 3x(0) z (0) = = , y (1) = 6 6 3 z (1) = 5 + x(0) 2y (0) 5+00 5 = = . 4 4 4
5 4

La a doua iteratie a metodei Jacobi solutia sistemului este: x


(2)

3+ 1 3 + y (1) z (1) 3 = = 3 3

25 , 36

y (2) = z (2) Metoda Gauss-Seidel

5 2 3 4 2 3x(1) z (1) 25 = = , 6 6 24 5+1 2 5 + x(1) 2y (1) 4 3 = = = . 4 4 3

Solutia la o anumit iteratie se determin functie de componentele solutiei deja a a n calculate la iteratia curent i restul componentelor solutiei calculate la iteratia a s precedent. a LMN, Draft din 30 septembrie 2011

8.7. Exemple

111

Conform relatiei (8.20), din prima ecuatie a sistemului se determin: a x(1) = 3 + y (0) z (0) 3+00 = = 1, 3 3

iar din ecuatiile a doua i a treia rezult urmtoarele componente ale solutiei la s a a prima iteratie: 2 3x(1) z (0) 2 3 0 5 y (1) = = = , 6 6 6 z (1) = 5+1 5 + x(1) 2y (1) = 4 4
5 3

13 . 12

La a doua iteratie a metodei Gauss-Seidel solutia sistemului este: x


(2)

3+ 5 3 + y (1) z (1) 6 = = 3 3

13 12

=
13 12

11 , 12 = 35 , 36

y (2) =

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

z (2) = 4. Fie sistemul de ecuatii:

5 + 11 5 + x(2) 2y (2) 12 = 4 4

35 18

143 . 144

S se comenteze convergenta metodelor iterative i s se determine solutia sistemua s a lui de ecuatii pentru primele dou iteratii ale metodelor Jacobi i Gauss-Seidel, a s (0) (0) (0) cunoscnd solutia initial x = y = z = 1. a a Rezolvare: Inegalitatea (8.22) nu este adevrat pentru cele trei ecuatii ale sistemului consida a erat: |1| < | 2| + |2|, | 1| < |2| + |2|, |1| > |1| + |2|. Totui, dei matricea nu este diagonal dominant, nu putem concluziona c metodele s s a a iterative nu sunt convergente. Conditia necesar i sucient de convergent este ca raza de convergent sa e a s a a a subunitar (8.8). a Pentru sistemul considerat, deoarece matricea sistemului nu este diagonal dominant, norma matricei de iteratie este supraunitar. Se cunoate c raza de convergent a a s a a Document disponibil la http://mn.lmn.pub.ro

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

112

Capitolul 8. Metode iterative de rezolvare a sistemelor algebrice liniare

este mai mic dect norma matricei de iteratie (8.9), a nu putem arma c raza a a ns a de convergent este supraunitar. a a Raza de convergent trebuie calculat pentru a preciza convergenta irului de solutii. a a s cazul metodei Jacobi, matricea de iteratie este: In 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

iar valorile proprii sunt solutiile ecuatiei:

det(M I) = 0 = Deci:

2 2 2 2 1 2
i=1,2,3

= 0.

3 + 2 + 4 = 0 = (M) = max |i | = 2 > 1. cazul metodei Gauss-Seidel, matricea de iteratie este: In 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

iar valorile proprii sunt solutiile ecuatiei:

det(M I) = 0 = Deci:

2 2 0 4 2 0 10 6
i=1,2,3

= 0.

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

LMN, Draft din 30 septembrie 2011

8.7. Exemple

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

(1)

z (1) =

La a doua iteratie a metodei Jacobi solutia sistemului este: x(2) = y (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

z (2) = Metoda Gauss-Seidel

La prima iteratie a metodei Gauss-Seidel solutia 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 iteratie a metodei Gauss-Seidel solutia 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) =

8.7.2

Exemple propuse
2x + y = 4 3x + 5y = 15 (a) s se determine solutia sistemului de ecuatii pentru primele dou iteratii ale a a (0) (0) metodelor Jacobi i Gauss-Seidel, cunoscnd solutia initial x = y = 0; s a a (b) s se ilustreze grac procesul iterativ i s se comenteze convergenta lui; a s a Document disponibil la http://mn.lmn.pub.ro

1. Fie sistemul de ecuatii:

114

Capitolul 8. Metode iterative de rezolvare a sistemelor algebrice liniare

(c) s se comenteze rezultatele obtinute atunci cnd se schimb ordinea ecuatiilor. a a a 2. Fie sistemul de ecuatii: 3x + 5y = 15 2x + y = 4 (a) s se determine solutia sistemului de ecuatii pentru primele dou iteratii ale a a (0) (0) metodelor Jacobi i Gauss-Seidel, cunoscnd solutia initial x = y = 0; s a a (b) s se ilustreze grac procesul iterativ i s se comenteze convergenta lui; a s a (c) s se comenteze rezultatele obtinute atunci cnd se schimb ordinea ecuatiilor. a a a 3. Fie sistemul de ecuatii: x + y 3z = 1 2x + y z = 2 x y z = 1

S se comenteze convergenta metodelor iterative i s se determine solutia sistemua s a lui de ecuatii pentru primele dou iteratii ale metodelor Jacobi i Gauss-Seidel, a s (0) (0) (0) cunoscnd solutia initial x = y = z = 0. a a 4. Fie sistemul de ecuatii: 4x + 2y z = 5 x 3y + z = 1 x + y + 4z = 4

S se comenteze convergenta metodelor iterative i s se determine solutia sistemua s a lui de ecuatii pentru primele dou iteratii ale metodelor Jacobi i Gauss-Seidel, a s cunoscnd solutia initial x(0) = y (0) = z (0) = 0. a a 5. Fie sistemul de ecuatii: 3x + y + z = 4 x + y + 2z = 4 x + y + 3z = 6

S se comenteze convergenta metodelor iterative i s se determine solutia sistemua s a lui de ecuatii pentru primele dou iteratii ale metodelor Jacobi i Gauss-Seidel, a s (0) (0) (0) cunoscnd solutia initial x = y = z = 0. a a LMN, Draft din 30 septembrie 2011

8.8. Intrebri i probleme a s

115

8.8

Intrebri i probleme a s

1. Dati o explicatie calitativ pentru convergenta mai rapid a metodei Gauss-Seidel a a fata de metoda Jacobi. 2. Exist sisteme de ecuatii, nedominant diagonale, care se pot rezolva totui prin a s metoda Gauss-Seidel, dei metoda Jacobi nu este convergent? s a 3. Care este explicatia c inversnd ordinea a 2 ecuatii sistemele propuse pentru a a n rezolvare cu primul program demonstrativ, metodele iterative nu conduc la obtinerea solutiei? 4. Cum scade eroarea functie de numrul de iteratii, la metodele Jacobi i Gaussn a s Seidel? Cum este corelat scderea erorii cu norma matricei de iteratie? a a 5. Scrieti pseudocodul unei proceduri care s genereze, cu ajutorul unui generator de a numere aleatoare, o matrice a crei norm este dat. a a a 6. Care sunt matricele B i C care s-a partitionat matricea sistemului la o metod s n a iterativ care ar folosi urmtoarea expresie pentru determinare a componentei i a a a solutiei :
n i1

xk = i

bi

j=i+1

aij xk j aii

k1 aij xj j=1

7. Scrieti pseudocodul unui polialgoritm de rezolvare a unui sistem de ecuatii liniare prin metode directe a crui solutie este ranat ulterior prin metode iterative, a a n vederea eliminrii erorilor de rotunjire. a 8. Analizati teoretic modul care depinde numrul de iteratii m, necesare atingerii n a unei precizii dorite, functie de norma matricei M. n 9. Modicati pseudocodul algoritmului Gauss-Seidel prin adoptarea unui criteriu de eroare relativ la norma reziduului Ax b . 10. Scrieti un algoritm de rezolvare iterativ a unui sistem cu matrice tridiagonal. a a 11. Scrieti un algoritm de rezolvare iterativ a sistemului Ax = b bazat pe partitia: a A = B C = L + D (U), cu D matrice bloc diagonal. a

Document disponibil la http://mn.lmn.pub.ro

116

Capitolul 8. Metode iterative de rezolvare a sistemelor algebrice liniare

Carl Gustav Jacob Jacobi

Born: 10 Dec 1804 in Potsdam, Prussia (now Germany) Died: 18 Feb 1851 in Berlin, Germany http://www-gap.dcs.st-and.ac.uk/~history/Mathematicians/Jacobi.html http://scienceworld.wolfram.com/biography/Jacobi.html Philipp Ludwig von Seidel Born: 24 Oct 1821 in Zweibrcken, Germany Died: 13 Aug 1896 in Munich, Germany http://www-gap.dcs.st-and.ac.uk/~history/Mathematicians/Seidel.html

Augustin Louis Cauchy

Born: 21 Aug 1789 in Paris, France Died: 23 May 1857 in Sceaux (near Paris), France http://www-gap.dcs.st-and.ac.uk/~history/Mathematicians/Cauchy.html http://scienceworld.wolfram.com/biography/Cauchy.html LMN, Draft din 30 septembrie 2011

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

10.1

Caracterizarea lucrrii a

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

118

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

Ek

U k
Figura 10.1: Latura standard considerat pentru analiza circuitelor rezistive liniare de a curent continuu.

10.2

Principiul metodei

Se consider un circuit electric cu N noduri i L laturi. Pe ecare latur k a acestui a s a circuit se a un rezistor liniar cu rezistenta Rk , eventual a nseriat cu o surs cu t.e.m. Ek , a astfel at: nc uk = Rk ik Ek , k = 1, 2, . . . , L, (10.1) unde uk este tensiunea la bornele laturii k, iar ik este curentul ce strbate latura (gura a 10.1). Relatia (10.1) se poate scrie i sub forma: s ik = uk + Ek = Gk u k + Jk , Rk (10.2)

care Gk = 1/Rk este conductanta laturii, presupus mrginit, iar Jk = Ek /Rk este n a a a curentul electromotor al generatorului de curent Norton echivalent laturii. S-a presupus c nici o latur nu are rezistenta nul. a a a Dac se noteaz cu i = [i1 , i2 , . . . , iL ]T vectorul intensitilor curentilor din laturile a a at T circuitului, cu u = [u1 , u2 , . . . , uL] vectorul tensiunilor la bornele laturilor i cu v = s T [v1 , v2 , . . . , vN 1 ] vectorul potentialelor nodurilor, atunci teoremele lui Kirchho capt aa urmtoarea form matriceal: a a a Ai = 0, u = AT v, care s-a notat cu A IR(N 1)L matricea redus a incidentelor laturi-noduri. n a Problema fundamental a analizei circutelor electrice rezistive liniare const detera a n minarea vectorilor u, i i v, atunci cnd se cunosc parametrii Rk , Ek , pentru k = 1, . . . , L s a i topologia circuitului descris, de exemplu, prin matricea A. Solutia acestei probleme s a se determin prin rezolvarea sistemului de ecuatii algebrice liniare (10.1), (10.3), (10.4). a LMN, Draft din 30 septembrie 2011 (10.3) (10.4)

10.2. Principiul metodei

119

Scriind i ecuatiile constitutive ale laturilor (10.1) sub forma matriceal: s a u = Ri E, (10.5)

unde R = diag(R1 , R2 , . . . , RL ) IRLL este matricea rezistentelor laturilor, iar E = T [E1 , E2 , . . . , EL ] este matricea t.e.m., rezult, prin eliminarea vectorilor u i i din (10.3), a s (10.4), i (10.5): s Ai = AR1 (u + E) = AR1AT + AR1 E = 0. (10.6)

Dac se noteaz cu G = AR1AT matricea conductantelor nodale i cu iS = AR1 E a a s matricea injectiilor de curent noduri (suma curentilor de scurtcircuit) rezult sistemul n a de ecuatii algebrice liniare Gv = iS (10.7) specic tehnicii nodale, matricea G ind o matrice ptrat de dimensiune N 1. Prin a a rezolvarea acestui sistem, rezult potentialele nodurilor v = G1 iS , din care se calculeaz a a cu (10.4) tensiunile i cu (10.5) curentii. s Se constat c ecare latur k, conectat a a a a ntre nodurile initial ni i nal nf, contribuie s la patru termeni ai matricei G i la doi termeni ai vectorului iS : s Matricea G coloana ni coloana nf linia ni linia nf 1/Rk 1/Rk 1/Rk 1/Rk vectorul iS Ek /Rk Ek /Rk

Aceast observatie permite generarea automat a matricelor G, iS , prin parcurgerea a a laturilor i adunarea contributiei ecrei laturi, la aceste matrice. Se constat c matricea s a a a G este diagonal dominant, ceea ce permite rezolvarea sistemului liniar att cu metode a a iterative ct i cu metode directe, fr pivotare. a s aa Analiza circuitelor electrice liniare curent alternativ prin tehnica nodal presupune n a reprezentarea circuitului complex. Dac se noteaz cu I CL , U CL , V CN 1 , n a a I I I vectorii curentilor, tensiunilor i respectiv potentialelor complexe, ecuatiile circuitului au s forma matriceal: a AI = 0, U = AT V, U = ZI E, Document disponibil la http://mn.lmn.pub.ro (10.8)

120

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

I care Z = diag (Z 1 , Z 2 , . . . , Z L ) CLL este matricea impedantelor complexe ale lan T turilor, iar E = diag (E 1 , E 2 , . . . , E L ) este matricea tensiunilor electromotoare complexe. Impedantele complexe ale elementelor ideale sunt: la rezistor Z R = R, la bobin a 1 Z L = jL, iar la condensator Z C = jC , unde este pulsatia (frecventa unghiular) a n radiani/s.

Prin eliminri succesive din (10.8) se obtine: a YV = IS , (10.9)

care Y = Z1 AT este matricea admitantelor nodale, iar IS = AZ1 E este matricea n injectiilor de curent din noduri. Prin rezolvarea sistemului algebric liniar (10.9) rezult a 1 potentialele V = Y IS . consecint, analiza de curent alternativ se desfoar similar cu cea de curent conIn a as a tinuu, cu deosebirea c acest caz se opereaz cu numere complexe. a n a

10.3

Pseudocodul metodei

Urmtorul pseudocod descrie analiza unui circuit rezistiv liniar, de curent cona tinuu. ; Introducerea datelor de descriere a circuitului citete N s ; numrul de noduri a citete L s ; numrul de laturi a pentru k = 1, L ; parcurge laturi citete nik , nfk s ; nodurile initial i nal s citete Rk , Ek s ; rezistenta i t.e.m s ; Rezolv circuitul prin tehnica nodal i determin vectorul v al potentialelor a as a nodal (N, L, ni, nf, R, E, v) ; Calculeaz i aeaz solutia as s a pg = 0 pc = 0 pentru k = 1, L u = vni(k) vnf (k) i = (u + Ek )/Rk

; ; ; ; ;

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

LMN, Draft din 30 septembrie 2011

10.3. Pseudocodul metodei

121

pg = pg + Ek i pc = pc + Rk i2 scrie k, u, i scrie pc, pg

; bilantul de puteri

Acest program apeleaz procedura nodal, care determin potentialele nodurilor: a a procedura nodal (N, L, ni, nf, R, E, v) ; analizeaz circuitul rezistiv liniar cu tehnica nodal a 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) 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 Document disponibil la http://mn.lmn.pub.ro ; ; ; ; ; ; ; ; ; ; ; numr de noduri a numr de laturi a noduri initiale noduri nale rezistetele laturilor t.e.m. ale laturilor potentialele nodurilor (date de ieire) s matricea conductantelor nodale vectorul injectiilor de curent initializeaz matricea sistemului a

; parcurge laturi

; rezolv sistem liniar cu N-1 ecuatii a ; cu matricea G i termenul liber is s

122

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

procedura nodal se apeleaz procedura Gauss, care determin vectorul v al potenIn a a ialelor, prin rezolvarea sistemului liniar Gv = iS cu metoda eliminrii gaussiene. Pentru t a a simplica algoritmii, matricea G generat are dimensiunea N N, dar la rezolvarea a sistemului aceasta se consider de dimensiuni (N 1)(N 1), ceea ce corespunde alegerii a ultimului nod, ca nod de referint. Algoritmul prezentat poate extins fr diculti a aa at pentru a permite analiza circuitelor care contin i surse de curent. s Dac se opereaz cu variabile complexe i nu cu variabile reale, procedura nodal se a a s poate aplica la analiza circuitelor de curent alternativ. Se va nota cu nodal-cx varianta acestei proceduri, care declaratia real se n nlocuiete cu complex. s Urmtorul pseudocod descrie algoritmul de analiz a circuitelor de curent ala a ternativ. ; Introducerea datelor de descriere citete N s ; numr de noduri a citete L s ; numr de laturi a citete f s ; frecventa Hz n pentru k = 1, L citete nik , nfk s citete tipk s ; tipul elementului R, L sau C citete pk s ; parametrul elementului pasiv citete ek s ; valoarea efectiv a citete f ik s ; faza initial a w =2f ; pulsatia pentru k = 1, L dac tipk = L atunci a Zk = complex(0, wpk ) altfel dac tipk = C atunci a Zk = complex(0, 1/(wpk )) altfel Zk = complex(pk , 0) Ek = complex(ek cos(f ik ), ek sin(f ik )) ; Determin potentialele complexe ale nodurilor a nodal-cx (N, L, ni, nf, Z, E, V) ; Calculeaz i aez solutia as s a Sg = complex(0, 0)

; puterea complex generat a a

LMN, Draft din 30 septembrie 2011

10.4. Analiza algoritmilor

123

Sc = complex(0, 0) ; puterea complex consumat a 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 activ Pg a a generat reactiv Qg a a consumat activ Pc a a consumat reactiv Qg a a

Dac partea de analiz a acestui program este repetat ciclic pentru diferite frecvente a a a se obtin caracteristicile de frecvent ale circuitului. a

10.4

Analiza algoritmilor

Necesarul de memorie Memoria necesar analiza circuitelor electrice rezistive liniare este ocupat de: a n a 2 vectori ntregi ni, nf de dimensiune L; 2 vectori reali R, E de dimensiune L; 1 vector real iS de dimensiune N; 1 matrice G de dimensiune N N. Se constat c necesarul de memorie depinde ptratic de dimensiunea circuitului, cara a a acterizat principal prin numrul de noduri N. a n a Efort de calcul Timpul de calcul necesar analizei este folosit special pentru rezolvarea sistemului n liniar de dimensiune N, deci ordinul de complexitate al algoritmului de analiz este cubic a 3 O(2N /3). Document disponibil la http://mn.lmn.pub.ro

124

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

Analiza erorilor Erorile numerice aprute analiza circuitelor sunt: a n erori inerente, datele de intrare; n erori de rotunjire, datorate reprezentrii nite. a Erorile inerente i de rotunjire se propag procesul de calcul i pot genera instabiliti s a n s at numerice, cu att mai mari, cu ct sistemul de ecuatii este mai slab conditionat. a a Dac circuitul analizat are rezistente foarte diferite, atunci instabilitile numerice pot a at deveni importante. Aa se ampl, dac de exemplu, una din rezistentele laturilor tinde s nt a a ctre zero (conductanta tinde ctre innit, ceea ce determin valori foarte mari pentru a a a unele din elementele matricei G).

10.5

Chestiuni de studiat

1. Analiza numeric a unui circuit rezistiv liniar regim stationar (curent continuu); a n 2. Analiza numeric a unui circuit liniar regim sinusoidal (curent alternativ); a n 3. Implementarea unui algoritm de analiz numeric a unui circuit electric liniar; a a 4. Cutarea de informatii pe Internet. a

10.6

Modul de lucru

Pentru desfurarea lucrrii se selecteaz lucrarea Analiza numeric a circuitelor liniare as a a a regim permanent din meniul principal de lucrri. n a Aceasta are ca efect lansarea unui meniu cu urmtoarele optiuni: a Circuite de curent continuu; Circuite de curent alternativ, din care utilizatorul selecteaz optiunea dorit. a a LMN, Draft din 30 septembrie 2011

10.6. Modul de lucru

125

10.6.1

Analiza numeric a unui circuit rezistiv liniar a

Prin selectarea optiunii Circuite de curent continuu din meniul principal se lanseaz a un program de analiz a circuitelor electrice de tip R, E. a Programul solicit din partea utilizatorului urmtoarele informatii de descriere a cira a cuitului: numrul de noduri; a numrul de laturi; a pentru ecare latur de circuit: a nodul initial al laturii; nodul nal al laturii; rezistenta din latur; a t.e.m. a sursei de tensiune. Dup introducerea datelor, programul analizeaz circuitul introdus cu metoda potentialelor a a la noduri i sunt aate pentru ecare latur valoarea tensiunii i cea a intensitii curens s a s at tului. Sunt calculate i aate valorile puterii consumate i puterii generate. s s s Pentru a analiza un circuit electric cu ajutorul acestui program, acesta trebuie pregtit a felul urmtor: n a se numeroteaz nodurile de la 1 la N; a se numeroteaz laturile de la 1 la L; a se alege pentru ecare latur un sens de parcurs, orientat de la borna minus la borna a plus a sursei de tensiune, dac aceasta exist, i arbitrar caz contrar. a a s n Se recomand analiza unui circuit electric simplu, de exemplu cu L = 3 i N = 2, a a s crei solutie este cunoscut. Se va studia solutia numeric obtinut, pentru valori extreme a a a a (foarte mari i foarte mici) ale uneia din rezistentele circuitului. s Document disponibil la http://mn.lmn.pub.ro

126

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

Z2 Z1 Z3 I3 E

s Figura 10.2: Circuit de tip Boucherot. (Z 1 + Z 2 = 0 i I 3 nu depinde de Z 3 )

10.6.2

Analiza unui circuit de curent alternativ

Prin selectarea optiunii Circuite de curent alternativ se lanseaz un program, care a permite analiza unui circuit electric regim sinusoidal. n Pentru descrierea circuitului, afar de numrul de laturi, numrul de noduri i a n a a a s frecventei de lucru (exprimat Hz), pentru ecare latur se descrie: a n a nodul initial i nal; s tipul elementului pasiv din latur (R, L sau C); a valoarea parametrului elementului pasiv (R, L sau C); valoarea efectiv a t.e.m. a sursei de tensiune din latur; a a faza initial a t.e.m. a sursei de tensiune ( grade). a n Dup introducerea datelor se analizeaz circuitul cu metoda nodal i se aaz, pentru a a as s a ecare latur: a valoarea efectiv a curentului; a faza initial a curentului. a nal se aeaz puterile active i reactive, consumate i generate. Se recomand In s a s s a s se analizeze numeric functionarea unui circuit electric stabilizator de curent de tip a Boucherot pentru diferite valori ale rezistentei de sarcin. Reamintim c un circuit de tip a a Boucherot este un circuit de tipul celui din gura 10.2. LMN, Draft din 30 septembrie 2011

10.7. Exemple

127

Pentru acest circuit curentul I 3 prin impedanta Z 3 nu depinde de valoarea acestei impedante dac Z 1 + Z 2 = 0. Pentru a justica acest lucru este sucient s se calculeze a a curentul I 3 : I3 = E Z1 +
Z2Z3 Z 2 +Z 3

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

Este evident c, dac Z 1 + Z 2 = 0 curentul I 3 nu depinde de Z 3 , i anume el este a a s I3 = E . Z1

10.6.3

Implementarea algoritmilor

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

10.6.4

Cutarea de informatii pe Internet a

Cutati pe Internet informatii (coduri) legate de rezolvarea circuitelor electrice. Exemple a de cuvinte cheie: electric circuits simulation.

10.7
10.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 se precizeze numrul de noduri, numrul de laturi i, pentru ecare latur, a a a s a nodul initial, nodul nal, rezistenta i t.e.m. a sursei de tensiune. s Ce dimensiuni au matricea G i vectorul iS asamblate de algoritm? s S se determine contributiile laturilor 3 i 4 la matricea G i vectorul iS . a s s Care sunt matricea G i vectorul iS asamblate? s Care este sistemul de ecuatii de rezolvat? Document disponibil la http://mn.lmn.pub.ro

128

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

(1) R1 E1 (2)

R3

E3

(4) R5 R6 E5

R2

R4

(3)

Fig. 5. Circuit rezistiv liniar de curent continuu

Rezolvare: Pentru circuitul din gura 5, numrul de noduri este N = 4, iar numrul de laturi a a 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 Nodul initial Nodul nal 1 2 3 4 5 6 2 1 4 2 4 4 1 2 1 3 3 3 R [] 1 2 3 4 5 6 E [V] 10 0 30 0 50 0

Deoarece numrul total de noduri este 4, matricea G asamblat de algoritm are a a dimensiunea (4, 4), iar vectorul iS are dimensiunea 4. Contributiile laturii 3 la matricea G i vectorul iS : s G
1 3 1 3

iS
30 3

1 3

1 3

30 3

Contributiile laturii 4 la matricea G i vectorul iS : s LMN, Draft din 30 septembrie 2011

10.7. Exemple

129

G
1 4 1 4

iS 1 4
1 4

0 0

Matricea G i vectorul iS asamblate: s 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+6 4 5 1 5 1 6 1 3
1 5 1 6 1 1 +5+1 3 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 obtine din matricea G asamblat prin elim a inarea ultimei linii i a ultimei coloane. Vectorul iS al sistemului de rezolvat se s obtine din vectorul iS asamblat prin eliminarea ultimei linii. Matricea G i vectorul iS ale sistemului de ecuatii de rezolvat: s G 1+ + 1 1 2
1 2 1 3

iS
1 2 1 4 1 4

1 1+ 1 + 2 1 4

1 4 1 +5+

1 6

10 + 30 3 10
50 5

2. Fie circuitul de curent alternativ din gura 6: Se cunosc: frecventa f = 50Hz, 3 1 1 2 R2 = 3, R3 = 1, R5 = 4, L1 = 100 H, L4 = 100 H, C3 = 100 F, C6 = 400 F, e1 (t) = 30 2 sin(t)V, e5 (t) = 20 sin(t + )V. 2 S se precizeze numrul de noduri, numrul de laturi i, pentru ecare latur, nodul a a a s a initial, nodul nal, impedanta i valoarea complex a t.e.m. a sursei de tensiune. s a Rezolvare: Pentru circuitul din gura 6, numrul de noduri este N = 4, iar numrul de laturi a a 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. Document disponibil la http://mn.lmn.pub.ro

130

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

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

R3 C 3

(3) R5 E5

C6

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

(1)

Transformarea complex simplicat a unei valori instantanee a t.e.m. este: n e(t) = E 2 sin(t + ) E = Eej = E[cos() + j sin()]. Astfel: E 1 = 30ej0 = 30, 20 20 E 5 = ej 2 = j. 2 2

Impedantele rezistorului, bobinei i condesatorului sunt: s Z R = R, Z L = jL, ZC = 1 1 = j , jC C

unde = 2f = 100 este pulsatia. De exemplu, impedantele laturilor 1 i 3 sunt: s Z 1 = jL1 = 2j, Z 3 = R3 j 1 = 1 j. C3

Latura Nodul initial Nodul nal 1 2 3 4 5 6 1 1 4 2 3 2 4 4 3 1 2 3

Z 2j 3 1j 3j 4 4j

E 30 0 0 0 20 j 2 0

LMN, Draft din 30 septembrie 2011

10.8. Intrebri i probleme a s

131

E4

R4 E5 E6 R6

R1

R2

R5

E3

R3

Fig. 7. Circuit rezistiv liniar de curent continuu

10.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 se precizeze numrul de noduri, numrul de laturi i, pentru ecare latur, a a a s a nodul initial, nodul nal, rezistenta i t.e.m. a sursei de tensiune. s Ce dimensiuni au matricea G i vectorul iS asamblate de algoritm? s S se determine contributiile laturilor 2 i 3 la matricea G i vectorul iS . a s s Care sunt matricea G i vectorul iS asamblate? s Care este sistemul de ecuatii de rezolvat? 2. Fie circuitul de curent alternativ din gura 8: Se cunosc: frecventa 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 C5 = 200 F, e1 (t) = 20 2 sin(t + )V, e6 (t) = 10 sin(t + 3 )V. 2 S se precizeze numrul de noduri, numrul de laturi i, pentru ecare latur, nodul a a a s a initial, nodul nal, impedanta i valoarea complex a t.e.m. s a

10.8

Intrebri i probleme a s

1. Cum trebuie modicat algoritmul de analiz a circuitelor electrice rezistive liniare, a pentru a admite i surse ideale de curent, conectate paralel cu ecare latur? s n a Document disponibil la http://mn.lmn.pub.ro

132

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

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

R6 E6

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

2. Extindeti algoritmul de analiz a circuitelor electrice rezistive liniare pentru a admite a i surse comandate liniar tensiune. s n 3. Modicati algoritmul de analiz nodal, astfel at s admit i elemente coman a a nc a as date curent (surse de tensiune sau surse comandate liniar curent). n n 4. Modicati algoritmul de analiz curent alternativ, astfel at aceasta s admit a n nc a a i bobine cuplate mutual. s 5. Analizati comparativ cele dou metode de descriere a unui circuit: cea orientat a a pe elemente (se dau nodurile ecrui element) i cea orientat pe noduri (se dau a s a elementele, care concur la ecare nod). a 6. Analizati modul care se pot folosi tehnicile de matrice rare la analiza circuitelor n electrice liniare. 7. Generati un algoritm de analiz a circuitelor de curent alternativ, pentru un sistem a care nu admite operatii cu numere complexe. 8. Generati un algoritm de analiz a datelor de descriere a unui circuit, care permite a simbolizarea nodurilor prin nume alfanumerice i care testeaz corectitudinea des a scrierii. 9. Comparati diferitele metode de scriere ale ecuatiilor unui circuit electric rezistiv liniar.

LMN, Draft din 30 septembrie 2011

10.8. Intrebri i probleme a s

133

Gustav Robert Kirchho

Born: 12 March 1824 in Knigsberg, Prussia (now Kaliningrad, Russia) Died: 17 Oct 1887 in Berlin, Germany http://www-gap.dcs.st-and.ac.uk/~history/Mathematicians/Kirchhoff.html http://scienceworld.wolfram.com/biography/Kirchhoff.html

Document disponibil la http://mn.lmn.pub.ro

134

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

LMN, Draft din 30 septembrie 2011

Lucrarea 11 Interpolarea polinomial a functiilor a reale


11.1 Caracterizarea metodei

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

prin cod, indicnd algoritmul care permite evaluarea functiei orice punct al domea n niului de denitie; prin date, indicnd valorile functiei numai a ntr-o retea de puncte din domeniul de denitie, numite noduri.

Evaluarea unei functii reprezentate tabelar (prin date) presupune aproximarea ei (inter polarea) intervalele dintre nodurile retelei, orice punct al domeniului de denitie. Una n n din cele mai simple metode de interpolare const aproximarea functiei cu un polinom. a n acest caz evaluarea functiei se reduce la operatii aritmetice elementare (adunri i In a s nmultiri). Scopul lucrrii este de a evidentia cele mai eciente metode de determinare a polia nomului de interpolare. lucrare se studiaz efortul de calcul, eroarea introdus prin In a a interpolare polinomial i limitele acestei metode de aproximare. as 135

136

Capitolul 11. Interpolarea polinomial a functiilor reale a

11.2

Principiul metodei

Se consider functia real de variabil real f : [a, b] IR ale crei valori sunt cunoscute a a a a a ntr-o retea de noduri a = x0 < x1 < ... < xn = b: x: y: care yk = f (xk ). n Problema fundamental a interpolrii const determinarea unei functii g : [a, b] IR, a a a n care aproximeaz functia f satisfcnd conditiile: g(x0 ) = y0 , g(x1 ) = y1 , ...., g(xn ) = yn . a a a De obicei functia g este cutat de forma unei combinatii liniare a a
n

x0 x1 y0 y1

... ...

xn yn

g(x) =
k=0

ck bk (x)

(11.1)

de functii bk : [a, b] IR, numite functii de baz. Dac general problema interpolrii a a n a nu are solutie unic, prin alegerea functiilor de baz problema este bine formulat i a a a s are solutie unic, cu conditia ca aceste functii s e liniar independente. acest caz, a a In problema interpolrii se reduce la determinarea coecientilor c0 , c1 , . . . , cn , care alctuiesc a a T (n+1) vectorul c = [c0 , c1 , . . . , cn ] IR . Metoda clasic a Alegnd functiile de baz de forma 1, x, x2 , . . . , xn , respectiv bk = xk , functia de intera a polare este un polinom:
n

g(x) =
k=0

ck xk ,

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

Exist deci o legtur strns a a a a a ntre gradul polinomului de interpolare i numrul de puncte s a ale tabelului de valori, i anume gradul polinomului este cu 1 mai mic dect numrul de s a a puncte din tabel (prin dou puncte trece o dreapt, prin trei puncte trece o parabol, a a a etc.). consecint, coecientii polinomului de interpolare satisfac sistemul de ecuatii algeIn a brice liniare: c0 + c1 x0 + c2 x2 + + cn xn = y0 0 0 2 c0 + c1 x1 + c2 x1 + + cn xn = y1 1 (11.2) . . . c0 + c1 xn + c2 x2 + + cn xn = yn n n LMN, Draft din 30 septembrie 2011

11.2. Principiul metodei

137

sau sub forma matriceal: a Ac = y, care y = [y0 , y1 , . . . , yn ]T IR(n+1) iar n 1 x0 x2 xn 0 0 1 x1 x2 xn 1 1 (n+1)(n+1) A= . . . . . IR . . . . 2 n 1 xn xn xn este o matrice nesingular, dac xi = xj pentru i = j. a a acest fel, problema interpolrii presupune parcurgerea etapelor: In a determinarea coecientilor polinomului de interpolare prin rezolvarea unui sistem liniar de ecuatii algebrice; evaluarea polinomului interpolant. Aceast tehnic de interpolare poate aplicat doar pentru valori mici ale gradului a a a (n < 5), deoarece are dou mari dezavantaje: a 1. efortul de calcul pentru determinarea coecientilor este relativ mare, ordinul de complexitate al celui mai ecient algoritm de rezolvare a unui sistem liniar general ind O(2n3 /3); 2. erorile solutiei sunt mari, deoarece sistemul este slab conditionat pentru valori mari ale gradului n. Metoda Lagrange O metod care evit aceste dezavantaje este metoda Lagrange, care functiile de baz a a n a se aleg de forma: b0 (x) = (x x1 )(x x2 ) (x xn ) (11.4)

(11.3)

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

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


i=0,i=k n

(x xi )

(11.5)

Document disponibil la http://mn.lmn.pub.ro

138

Capitolul 11. Interpolarea polinomial a functiilor reale a

Impunnd polinomului a g(x) =

ck
k=0 i=0,i=k

(x xi )

(11.6)

conditiile de interpolare, rezult sistemul de ecuatii algebrice liniare: a g(x0 ) = c0 (x0 x1 )(x0 x2 ) (x0 xn ) = y0

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

(11.7)

g(xn ) = cn (xn x0 ) (xn x1 ) (xn xn1 ) = yn cu structura diagonal. Solutia acestui sistem este: a ck = yk n i=0,i=k (xk xi ) , (11.8)

iar polinomul de interpolare are expresia (x xi ) g(x) = yk = (xk xi ) k=0 i=0,i=k care s-a notat cu lk (x) polinomul lui Lagrange. n Metoda Lagrange elimin dezavantajele metodei clasice, schimb timpul necesar a n evalurii polinomului de interpolare crete de la ordinul liniar O(n) la cel ptratic O(n2 ). a s a Metoda Newton O alt metod pentru determinarea polinomului de interpolare este metoda Newton, a a care functiile de baz se aleg de forma: n a b0 (x) = 1 b1 (x) = (x x0 ) b2 (x) = (x x0 )(x x1 ) . . .
n n n

yk lk (x),
k=0

(11.9)

(11.10)

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


k1

bk (x) =
i=0

(x xi ).
k1

Impunnd polinomului a
n

g(k) =
k=0

ck
i=0

(x xi )

(11.11)

LMN, Draft din 30 septembrie 2011

11.2. Principiul metodei

139

conditiile de interpolare: g(x0 ) = c0 = 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 un sistem algebric liniar cu structura triunghiular inferioar, a crui rezolvare a a a poate realizat prin metoda substitutiei progresive. Coecientii polinomului de intera polare Newton sunt: c0 = y 0 c1 = (y1 c0 )/(x1 x0 ) = (y1 y0 )(x1 x0 ) c2 = (y2 c0 c1 (x2 x0 ))/(x2 x0 )/(x2 x1 ) . . . g(x1 ) = c0 + c1 (x1 x0 ) = y1

(11.12)

(11.13)

cn = (yn c0 c1 (xn x0 ) c2 (xn x0 )(xn x1 ) )/(xn x0 )/ /(xn xn1 ) Un concept aat ntr-o strns relatie cu polinomul de interpolare Newton este cel a a al diferentelor divizate de ordinul k ale unei functii f, valori notate cu f [ ] i care se s denesc recursiv prin: f [x0 , x1 , , xk ] = f [x1 , , xk ] f [x0 , x1 , , xk1 ] , xk x0 y1 y0 . x1 x0 (11.14)

iar particular, cazul diferentei divizate de ordinul 1: n n f [x0 , x1 ] = (11.15)

Se constat c valorile coecientilor ck din polinomul de interpolare Newton sunt date a a de diferentele divizate ck = f [x0 , x1 , , xn ] i: s
n n k1

g(x) =
k=0

ck bk (x) =
k=0

f [x0 , x1 , , xk ]

i=0

(x xi ).

(11.16)

Determinarea coecientilor polinomului Newton este facilitat de utilizarea tabelei a diferentelor divizate, care elementele se calculeaz recursiv: n a Document disponibil la http://mn.lmn.pub.ro

140

Capitolul 11. Interpolarea polinomial a functiilor reale a

x x0 x1 x2 x3 x4 ...

y y0 y1

ord.1 f [x0 , x1 ]

ord.2

ord.3

ord.4

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

y2 y3 y4 ...

...

...

...

...

Prima linie a acestui tabel contine chiar coecientii polinomului de interpolare New ton. Diferentele divizate de diferite ordine reprezint aproximri ale derivatelor de ordin a a corespunztor ale functiei sensul c dac f (x) are m derivate pe intervalul [a, b] exist a n a a a un punct a z b astfel at: nc f [x0 , x1 , , xm ] = f (m) (z) m! (11.17)

care x0 , x1 , . . . , xm sunt puncte distincte din intervalul [a, b]. n Metoda de interpolare Newton are urmtoarele avantaje: a realizeaz un compromis optim a ntre efortul de constructie i cel de evaluare; s algoritmul este relativ stabil din punct de vedere numeric, avnd erori numerice a acceptabile ale rezultatelor; permite mrirea gradului polinomului de interpolare, prin adugarea unui nod nou a a reteaua de interpolare, cu reutilizarea coecientilor de la gradul anterior, care nu n se modic, deci cu un efort minim de calcul; a are posibilitatea de a controla eroarea de interpolare; prin mrirea succesiv a gradului polinomului de interpolare pn la atingerea prea a a a ciziei dorite, timpul de calcul este dependent de eroarea impus, avnd valori mari a a doar cazurile care se dorete o precizie ridicat; n n s a coecientii polinomului Newton reprezint diferentele divizate de interpolat, ceea ce a faciliteaz calculul numeric al polinomului de interpolare. a LMN, Draft din 30 septembrie 2011

11.3. Pseudocodul algoritmilor

141

Observatie: Cele trei metode prezentate (clasic, Lagrange, Newton) sunt metode de interpolare a global. Ele caut un polinom de grad n ce trece prin cele n + 1 puncte ale tabelului de a a date. Deoarece acest polinom este unic (de exemplu, dac n = 1, exist o dreapt unic a a a a ce trece prin cele dou puncte, dac n = 2, exist o parabol unic ce trece prin cele trei a a a a a puncte, etc.), cele trei metode rulate pe un calculator ideal, de precizie innit ( care a n nu exist erori de rotunjire) ar da acelai rezultat. a s

11.3

Pseudocodul algoritmilor

Metoda clasic a Determinarea coecientilor polinomului de interpolare se poate face cu urmtoarea a procedur, care apeleaz la rndul ei procedura Gauss, de rezolvare a sistemelor algebrice a a a 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 = aij1xi Gauss0(n+1, a, y, c) retur ; ; ; ; ; ; determin coecientii polinomului de interpolare a gradul polinomului de interpolare abscisele punctelor de interpolare ordonatele punctelor de interpolare coecientii polinomului (date de ieire), indicii sunt de la 0 la n s matricea sistemului, cu indici de la 0 la n

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

Atentie: 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 pentru a trata matrice care a n notatia indicelor este de la 0 la n. De aceea pseudocodul de mai sus apeleaz o functie a Gauss0. Pentru evaluarea polinomului se poate folosi rutina evalp prezentat lucrarea 1. a n

Document disponibil la http://mn.lmn.pub.ro

142

Capitolul 11. Interpolarea polinomial a functiilor reale a

Metoda Lagrange fr pregtire a a a Procedura de interpolare Lagrange admite urmtoarea reprezentare pseudocod: a n functia interp-L (n, x, y, xcrt) ; ; ; ; ; ; ; evalueaz polinomul de interpolare a Lagrange punctul xcrt n gradul polinomului reteaua de interpolare, indici de la 0 la n variabil independent a a valoarea polinomului xcrt n variabil intermediar a a

ntreg n tablou real x(n), y(n) real xcrt real ycrt real p ycrt = 0 pentru k = 0, n p=1 pentru j = 0, n dac j = k atunci a p = p (x xj )/(xk xj ) ycrt = ycrt + yk p ntoarce ycrt Metoda Lagrange cu pregtire a

Dac polinomul este evaluat a ntr-un numr mare de puncte, diferite de nodurile retelei a de interpolare, atunci este avantajoas urmtoarea form a polinomului de interpolare a a a (11.6): n ck g(x) = (x x0 )(x x1 ) (x xn ) , (11.18) x xk k=0 care ck este dat de relatia (11.8). n Aceast metod admite urmtorul pseudocod: a a a procedura prep-L(n, x, y, c) ; ntreg n ; tablou real x(n), y(n) ; c(n) ; pentru k = 0, n ck = y k pentru j = 0, n dac j = k atunci a ck = ck /(xk xj ) pregtete datele pentru interpolarea Lagrange a s gradul polinomului reteaua de interpolare, indici de la 0 la n coecientii polinomului de ieire, indici de la 0 la n s

LMN, Draft din 30 septembrie 2011

11.3. Pseudocodul algoritmilor

143

retur

functia eval-L (n, x, y, xcrt)

ntreg n tablou real x(n), tablou real c(n) real xcrt p=1 pentru k = 0, n p = p(xcrt xk ) dac p = 0 atunci a ntoarce yk ycrt = 0 pentru k = 0, n ycrt = ycrt + ck /(xcrt xk ) ycrt = p ycrt ntoarce ycrt

; ; ; ; ; ;

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

Metoda Newton Problema determinrii coecientilor polinomului Newton are o solutie dependent de a a reprezentarea datelor. Dac se genereaz diferentele divizate i se memoreaz a a s a ntr-un tabel bidimensional cu elementele: aij = f [xi , xi+j ] pentru i = 0, 1, . . . , n i j = 0, 1, . . . , (n i) i aij = 0 pentru j > n i, atunci pe prima s s linie a acestui tabel se obtin coecientii polinomului de interpolare Newton ck = a0k : j=0 f [x0 ] f [x1 ] f [x2 ] f [xn1 ] 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 xn1 xn

= [aij ]

Document disponibil la http://mn.lmn.pub.ro

144

Capitolul 11. Interpolarea polinomial a functiilor reale a

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

; ; ; ; ; ;

determin coecientii polinomului a de interpolare Newton gradul polinomului reteaua de interpolare, indici de la 0 la n coecientii polinomului, indici de la 0 la n (date de ieire) s

pentru i = 0, n ai0 = yi pentru j = 1, n pentru i = 0, n j aij = (ai+j,j1 ai,j1 )/(xj+1 xi ) pentru i = 0, n ci = a0 i retur

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

Evaluarea polinomului Newton se bazeaz pe observatia ca acesta poate scris sub a forma:

g(x) = c0 + (x x0 )(c1 + (x x1 )(c2 + + (x xn2 )(cn1 + cn (x xn1 ) ) mult mai avantajoas din punctul de vedere al efortului de calcul dect forma (11.11). a a LMN, Draft din 30 septembrie 2011

11.4. Analiza complexitii algoritmilor at

145

11.4
11.4.1

Analiza complexitii algoritmilor at


Efort de calcul

Metoda clasic de interpolare polinomial, bazat pe rezolvarea unui sistem de ecuatii a a a 3 liniare necesit un efort de calcul de ordinul O(2n /3) pentru determinarea coecientilor a polinomului i un efort liniar O(2n) pentru evaluarea polinomului. Dac se efectueaz m s a a evaluri, efortul global de calcul este O(2n3 /3 + 2mn). a La metoda Lagrange, efortul de calcul pentru evaluarea polinomului Lagrange ntr-un 2 punct cu relatia (11.9) este de ordinul O(4n ). Dac se utilizeaz relatia (11.18), atunci a a pregtirea datelor (procedura prep-L) necesit un efort de calcul de ordinul O(2n2 ), iar a a evaluarea (functia eval-L) necesit un efort de calcul de ordinul O(5n), deci un efort de a 2 calcul global cu ordinul O(2n + 5mn). cazul metodei Newton efortul de pregtire are ordinul O(3n2 /2), iar efortul de In a evaluare are ordinul O(2n), ceea ce corespunde unui efort de calcul global de ordinul O(3n2 /2 + 2mn). Urmtorul tabel sintetizeaz rezultatele obtinute i evidentiaz ecienta metodei Newa a s a ton: Metoda Clasic a Lagrange (11.9) Lagrange (11.18) Newton Timp de pregtire Timp de evaluare a 2n3 /3 2n2 3n2 /2 2n 4n2 5n 2n Timp total 2n3 /3 + 2nm 4n2 m 2n2 + 5nm 3n2 /2 + 2nm

11.4.2

Necesar de memorie

Din punctul de vedere al ecientei spatiale metoda clasic necesit un spatiu de mem a a 2 orie de ordine O(n ) pe cnd cazul metodei Lagrange spatiul de memorie necesar are a n ordinul liniar O(2n) pentru varianta (11.9) i O(3n) pentru varianta (11.18). s Metoda Newton, aa cum a fost descris procedura prep-N, necesit un spatiu de s a n a 2 memorie O(n ) pentru determinarea coecientilor. Deoarece jumtate din acest spatiu a este neutilizat, structura de date poate modicat prin memorarea diferentelor divizate a ntr-un tablou unidimensional, ceea ce conduce la un necesar de memorie de ordinul O(n2 /2). Document disponibil la http://mn.lmn.pub.ro

146

Capitolul 11. Interpolarea polinomial a functiilor reale a

11.5

Eroarea de interpolare

Problema general a interpolrii nu are solutie unic, existnd o innitate de functii a a a a g(x), care interpoleaz functia f (x) pe o retea dat. Mai mult, abaterea dintre functia a a exact f (x) i aproximarea sa g(x) poate fcut orict de mare, chiar dac g(xk ) = a s a a a a f (xk ) pentru k = 0, 1, , n. Dac schimb, functia f (x) are derivate de ordin superior a n pe intervalul [a, b], atunci eroarea de aproximare a ei cu un polinom interpolat g(x) este mrginit. a a Dac se noteaz cu: a a e(x) = f (x) g(x), eroarea absolut, care g(x) este polinomul de interpolare pe reteaua x0 , x1 , . . . , xn , a n atunci: e(x) = f [x0 , x1 , . . . , xn , x]. (11.19) Folosind relatiile (11.16) i (11.17) rezult c exist un punct z [a, b] astfel at: s a a a nc f (n+1) (z) e(x) = (n + 1)!
n j=0

(x xj ).

(11.20)

Dac |f (n+1) (x)| M, pentru orice a x b, atunci eroarea de interpolare satisface a inegalitatea: n M |e(x)| |x xj |. (11.21) (n + 1)! j=0 particular, cazul interpolrii liniare pe reteaua cu dou puncte x0 , x1 eroarea de In n a a interpolare satisface inegalitatea: M2 |x x0 ||x x1 |, 2 care M2 > |f (z)| cu x0 < z < x1 . Se constat c eroarea de interpolare se anuleaz n a a a n nodurile retelei x0 , x1 i c nu poate depi valoarea: s a as |e(x)| M2 2 h, 2 care s-a notat cu h = x1 x0 lungimea intervalului. n |e(x)| Interpolarea parabolic (cu polinom de gradul doi) va avea o eroare care depinde de a valoarea maxim a modului derivatei a treia a functiei de interpolat. general, dac a In a h = b a, rezult inegalitatea: a |e(x)| Mn+1 n+1 h , (n + 1)! (11.22)

LMN, Draft din 30 septembrie 2011

11.5. Eroarea de interpolare

147

care evidentiaz dependenta erorii de lungimea h a intervalului de interpolat. a Dac marginile M2 , M3 , M4 , . . . ale derivatelor alctuiesc un ir monoton descresctor a a s a (Mk+1 Mk ), atunci relatiile (11.19) i (11.21) evidentieaz faptul c ultimul termen s a a din polinomul interpolat Newton reprezint o aproximare a erorii de interpolare pentru a polinomul de grad n 1. Din rezultatele prezentate s-ar prea c mrind gradul polinomului de interpolare, a a a eroarea de interpolare trebuie s scad. realitate, aceast armatie nu este exact. Un a a In a a exemplu celebru este cel dat de Runge, care a artat c pentru functia f : [5, 5] IR, a a denit prin: a 1 , f (x) = 1 + x2 care este o functie sucient de neted, interpolarea pe o retea uniform de noduri este a a numeric instabil. Pe msur ce crete numrul de noduri (i implicit gradul polinomului) a a a s a s crete i eroarea de interpolare, datorit oscilatiei polinomului interpolat s s a ntre punctele retelei. Aceast lips de convergent a polinomului de grad ni ctre f (x), cnd gradul n a a a a a tinde ctre innit este cunoscut sub numele de efectul Runge. a a Pentru a elimina efectul Runge se recomand alegerea nodurilor de interpolare a n pozitia corespunztoare rdcinilor polinomului Cebsev: a a a xk = unde k = 0, 1, . . . , n Erorile prezentate sunt fond erori de trunchiere, dar n ntr-o interpolare apar i erori s inerente sau de rotunjire. Erorile inerente se datoreaz abaterilor datelor de intrare de la valoarea exact. Ina a terpolarea polinomial avnd un caracter global, o abatere a a ntr-un nod xk se face simtit a nu numai local, vecintatea nodului xk ci pe n a ntreg domeniu [a, b]. Dac de exemplu a yk = yk + ey este afectat de eroarea ey , atunci rezultatul interpolrii g(x) = g(x) + eg a a are o eroare: n x xj eg = ey , xk xj j=0,j=k care se anuleaz nodurile xj cu j diferit de k, deci este chiar polinomul Lagrange lk (x) a n multiplicat cu ey . Acest polinom poate lua intervalul [a, b] valori mult mai mari ca ey . n Alegnd nodurile conform rdcinilor polinomului Cebsev, atunci polinomul Lagrange a a a lk (x) se identic cu polinomul Cebsev de grad k, care are oscilatie minim intervalul a a n [a, b]. consecint, interpolarea Cebsev asigur nu numai erori de trunchiere ci i erori In a a s de rotunjire minime. Document disponibil la http://mn.lmn.pub.ro a+b ba + cos 2 2 (n k) n , (11.23)

148

Capitolul 11. Interpolarea polinomial a functiilor reale a

Spre deosebire de erorile de trunchiere, erorile de rotunjire depind de metoda adoptat. a Deoarece polinomul de interpolare al unei retele de date este unic (nu depinde de metoda prin care a fost calculat), erorile de aproximare cazul operrii cu un sistem de calcul n a ideal (fr erori de rotunjire) sunt aceleai indiferent dac polinomul a fost determinat aa s a prin metoda clasic, Lagrange sau Newton. a Modul care se propag erorile de rotunjire depinde de stabilitatea numeric a n a a metodei. Metoda Lagrange este foarte stabil numeric, deoarece elementele bazei sunt a ortogonale i sistemul de rezolvat (cu structur diagonal) este foarte bine conditionat. s a a Metoda clasic este foarte instabil deoarece sistemul care se rezolv este slab conditionat, a a a mai ales pentru polinoame de grad mare. Metoda Newton prezint o stabilitate numeric a a acceptabil. a Erorile prezentate limiteaz drastic utilizarea interpolrii polinomiale globale. Nu este a a recomandabil aceast metod pentru interpolarea datelor experimentale, succeptibile de a a a erori mari. Ea poate aplicat cu succes la interpolarea functiilor evaluate algoritmic, a care sunt sucient de netede (de preferint analitice), fr modicri prea rapide ale pana aa a tei (de preferint la functii monotone). Dac nodurile retelei de interpolare pot alese a a de utilizator, atunci se recomand ca ele s e mai dese spre marginile intervalului, de a a preferint conform relatiei (11.23). Din pcate, nici alegerea nodurilor conform acestei a a relatii nu rezolv complet problema interpolrii polinomiale. Faber a demonstrat o teo a a rem care arm c pentru orice ir de retele de discretizare cu un numr de noduri n a a a s a tinznd ctre innit exist cel putin o functie continu pentru care procedura de interpoa a a a lare este divergent, sensul c eroarea de interpolare tinde la innit. Aceast teorem a n a a a evidentieaz limitarea major a metodei interpolrii polinomiale globale. a a a

11.6

Chestiuni de studiat

1. Interpolarea polinomial a functiilor pe retele uniforme sau neuniforme (conform a radcinilor polinoamelor Cebsev); a 2. Analiza experimental a erorilor; a 3. Analiza experimental a timpului de calcul; a 4. Implementarea i testarea unor algoritmi de interpolare polinomial; s a 5. Cutare de informatii pe Internet. a LMN, Draft din 30 septembrie 2011

11.7. Mod de lucru

149

11.7

Mod de lucru

Pentru desfurarea lucrrii selectati optiunea Interpolarea polinomial a functiilor as a a reale din meniul principal de lucrri. Aceasta are ca urmare lansarea urmtorului meniu: a a Interpolarea polinomial uniform /Cebsev a a Analiza algoritmilor - erori Analiza algoritmilor - timpi de calcul

11.7.1

Interpolarea polinomial a functiilor pe retele unifora me/Cebsev

Se selecteaz din meniul principal optiunea Interpolare polinomial, care lanseaz un a a a program de interpolare mai ai pe o retea cu pas constant i apoi pe o retea cu pas nt s neuniform, concordant cu rdcinile polinoamelor Cebsev. Programul aeaz lista n a a a s a functiilor f (x) care pot interpolate: sin(x) exp(x) ln(|x|) th(x) Runge: 1/(1 + x2 ) |x| |x|

Dup selectarea functiei programul solicit limitele domeniului de denitie a x b i a a s gradul polinomului de interpolare. Se reprezint grac functia exact f (x) i interpolarea a a s consola Scilab se aeaz sa polinomial g(x) ambele cazuri (uniform/neuniform). In a n s a eroarea de interpolare maxaxb |f (x) g(x)| . Se vor studia interpolrile polinomiale pentru cele 7 functii predenite, cu diferite valori a ale gradului polinomului. Pentru una din functii ( afara functiei sin) se va reprezenta n Document disponibil la http://mn.lmn.pub.ro

150

Capitolul 11. Interpolarea polinomial a functiilor reale a

grac modul de variatie a erorii functie de numrul nodurilor de interpolare (de la 2 n a la 20). Se recomand s se aleag o functie pentru care se remarc efectul Runge. Se vor a a a a comenta rezultatele obtinute.

11.7.2

Analiza experimental a erorilor de interpolare a

Se selecteaz optiunea Analiza algoritmilor - erori din meniul principal al lucrrii. a a Programul lansat determin eroarea de interpolare a functiei sin(x) pe o perioad, a a n cazul folosirii metodelor de interpolare: clasic, Lagrange, Newton. Programul solicit a a valoarea initial, valoarea nal i pasul pentru gradul polinomului de interpolare. Valorile a as recomandate pentru gradul polinomului sunt 1,2,3,4,5,6,7,8 (valoarea initial 1, valoarea a nal 8, pas 1). a Se vor nota erorile i se vor comenta rezultatele. Se va reprezenta grac eroarea s n functie de gradul polinomului de interpolare.

11.7.3

Analiza experimental a timpului de calcul necesar ina terpolrii polinomiale a

Se selecteaz optiunea Analiza algoritmilor - timpi de calcul din meniul principal al a lucrrii. Programul lansat determin timpul de calcul necesar interpolrii functiei sin(x) a a a pe o perioad, cazul folosirii metodelor de interpolare: clasic, Lagrange, Newton. a n a Singura dat de intrare este numrul de noduri n din reteaua de interpolare. Se a a va reprezenta grac modul de varitie a timpului de calcul (separat pentru pregtire i a s interpolare) n, pentru n variind de la 20 la 100, cu pas 20.

11.7.4

Implementarea unor algoritmi de interpolare polinomial a

Se va implementa limbajul C algoritmul Lagrange de interpolare. Se va scrie un n program de testare, care va permite introducerea datelor n - gradul polinomului de interpolare, x, y - tabelele de date (cu n + 1 puncte) i aarea rezultatelor interpolrii la s s a mijlocul distantei dintre nodurile de interpolare x. LMN, Draft din 30 septembrie 2011

11.8. Exemple

151

11.7.5

Cutare de informatii pe Internet a

Cutati pe Internet informatii legate de interpolarea functiilor. Cuvinte cheie recoa mandate: interpolation, tting.

11.8
11.8.1

Exemple
Exemple rezolvate

1. Fie functia y = f (x) denit tabelar: a x y Se cer: (a) Ct este gradul polinomului de interpolare global? a a (b) Care sunt conditiile de interpolare? (c) Care este sistemul de ecuatii asamblat metoda clasic de interpolare? n a (d) Care sunt polinoamele Lagrange asociate diviziunii [1 2 4]? (e) Care este polinomul de interpolare Lagrange? (f) Care este tabelul de diferente divizate? (g) Care este polinomul de interpolare Newton? (h) Care este valoarea functiei punctul x = 3? n Rezolvare: (a) Gradul polinomului de interpolare global g(x) este cu o unitate mai mic dect a a numrul de noduri ale retelei de discretizare care este cunoscut functia a n a f (x). Pentru exemplul dat, functia y = f (x) are valori date 3 noduri, i n s n consecint gradul polinomului de interpolare este n = 2. a (b) Conditiile de interpolare sunt g(xk ) = yk , k = 0, n. Aceste conditii impun ca functia de interpolare g(x) s aib aceleai valori ca functia f (x) nodurile a a s n retelei de discretizare: Document disponibil la http://mn.lmn.pub.ro 1 2 4 2 1 3

152

Capitolul 11. Interpolarea polinomial a functiilor reale a

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

(11.24)
n k=0

ck xk .

(11.25)

Din cele n + 1 conditii de interpolare rezult un sistem (11.2) de n + 1 ecuatii a cu n + 1 necunoscute (coecientii ck , k = 0, n). Conditiile de interpolare (11.24) scrise pentru conduc la urmtorul sistem de ecuatii: a c0 + c1 + c2 c + 2c1 + 4c2 0 c0 + 4c1 + 16c2
n

functia g(x) dat de (11.25) a = 2 = 1 = 3

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

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

l1 (x) =

l2 (x) =

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


k=0

yk lk (x).

cazul particular studiat: In g(x) = y0 l0 (x) + y1 l1 (x) + y2 l2 (x), i s nlocuind expresiile polinomului Lagrange de mai sus, rezult: a g(x) = 2 x2 6x + 8 x2 5x + 4 x2 3x + 2 2x2 9x + 13 +1 +3 = . 3 2 6 3 LMN, Draft din 30 septembrie 2011

11.8. Exemple

153

(f) Tabelul de diferente 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 Diferentele divizate de ordinul 1, respectiv ordinul 2 se calculeaz cu formula a (11.14), astfel: y1 y0 12 f [x0 , x1 ] = = = 1, x1 x0 21 y2 y1 31 f [x1 , x2 ] = = = 1, x2 x1 42 f [x0 , x1 , x2 ] = 1 (1) 2 f [x1 , x2 ] f [x0 , x1 ] = = . x2 x0 41 3
n k1

ord.2

f [x0 , x1 , x2 ] =

2 3

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


k=0

f [x0 , x1 , , xk ]

i=0

(x xi ).

cazul studiat: In g(x) = y0 + f [x0 , x1 ](x x0 ) + f [x0 , x1 , x2 ](x x0 )(x x1 ) = 2 2x2 9x + 13 = 2 + (1)(x 1) + (x 1)(x 2) = . 3 3 Observatie: polinomul de interpolare global g(x) este unic, indiferent de a metoda de interpolare utilizat. De aceea, rezultatul obtinut este identic cu a rezultatul de la punctul (e). (h) punctul x = 3, polinomul de interpolare este: In 4 2 32 9 3 + 13 = . g(3) = 3 3 2. Fie functia y = f (x) denit tabelar: a x 2 y 5 Se cer: Document disponibil la http://mn.lmn.pub.ro 3 5 7 11

154

Capitolul 11. Interpolarea polinomial a functiilor reale a

(a) Ct este gradul polinomului de interpolare global? a a (b) Care sunt conditiile de interpolare? (c) Care este sistemul de ecuatii asamblat metoda clasic de interpolare? n a (d) Care sunt polinoamele Lagrange asociate diviziunii [2 3 5]? (e) Care este polinomul de interpolare Lagrange? (f) Care este tabelul de diferente divizate? (g) Care este polinomul de interpolare Newton? (h) Care este valoarea functiei punctul x = 4? n (i) Care este polinomul de interpolare ipoteza adugrii punctului (1, 0) n a a n tabelul de valori? Rezolvare: (a) Deoarece reteaua de discretizare are 3 noduri, gradul polinomului de interpolare este n = 2. (b) Conditiile de interpolare sunt: g(2) = 5, g(3) = 7, g(5) = 11. (c) Impunnd conditiile de interpolare expresiei g(x) = c0 + c1 x + c2 x2 , rezult a a sistemul de ecuatii metoda clasic de interpolare: n a c0 + 2c1 + 4c2 = 5 c + 3c1 + 9c2 = 7 0 c0 + 5c1 + 25c2 = 11

(d) Polinoamele Lagrange sunt:

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

LMN, Draft din 30 septembrie 2011

11.8. Exemple

155

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

12x + 6 x2 5x + 6 = = 2x + 1. 6 6 Gradul polinomului de interpolare este 1, dei avem 3 noduri reteaua de s n discretizare. Aceasta se explic prin faptul c cele trei noduri sunt situate pe a a dreapta 2x + 1 = y. (f) Tabelul de diferente divizate este: x x0 = 2 x1 = 3 y y0 = 5 y1 = 7 f [x1 , x2 ] = 2 x2 = 5 y2 = 11 Diferentele divizate de ordinul 1, respectiv ordinul 2 sunt: f [x0 , x1 ] = f [x1 , x2 ] = 75 y1 y0 = = 2, x1 x0 32 ord.1 f [x0 , x1 ] = 2 f [x0 , x1 , x2 ] = 0 ord.2

Ultima diferent divizat egal cu zero indic faptul c polinomul de interpolare a a a a a 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 ) = = 5 + 2(x 2) + 0(x 2)(x 3) = 2x + 1. (h) punctul x = 4, polinomul de interpolare este: In g(4) = 2 4 + 1 = 9. (i) situatia care tabelului de valori i se adaug un punct, metoda Newton In n a este cea mai avantajoas metod deoarece aceasta permite refolosirea calculelor a a deja efectuate. Tabelul de diferente divizate se completeaz cu noua valoare astfel: a Document disponibil la http://mn.lmn.pub.ro

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

156

Capitolul 11. Interpolarea polinomial a functiilor reale a

x 2 3 5 1

y 5 7

ord.1 2

ord.2 ord.3

0 2
3 8 3 8

11
11 4

Diferentele divizate care apar prin adugarea punctului (1, 0) sunt: a f [x2 , x3 ] = f [x1 , x2 , x3 ] = f [x0 , x1 , x2 , x3 ] = 0 11 11 y3 y2 = = , x3 x2 15 4

Polinomul de interpolare este:

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

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

3 3 h(x) = g(x) + (x 2)(x 3)(x 5) = 2x + 1 + (x3 10x2 + 31x 30) = 8 8 15 109 41 3 x . = x3 x2 + 8 4 8 4 Se observ ca nu este nevoie ca punctele diviziunii s e sortate. De asemea a nea, cazul aplicrii metodei clasice sau Lagrange, efortul de calcul efectuat n a anterior s-ar pierdut. 3. Fie functia y = f (x) denit tabelar: a x 1 y 3 Se cer: (a) Ct este gradul polinomului de interpolare global? a a (b) Care sunt conditiile de interpolare? (c) Care este sistemul de ecuatii asamblat metoda clasic de interpolare? n a (d) Care sunt polinoamele Lagrange asociate diviziunii [1 2 3 5]? (e) Care este polinomul de interpolare Lagrange? LMN, Draft din 30 septembrie 2011 2 3 2 4 5 1

11.8. Exemple

157

(f) Care este tabelul de diferente divizate? (g) Care este polinomul de interpolare Newton? (h) Care este valoarea functiei punctul x = 4? n Rezolvare: (a) Deoarece reteaua de discretizare are 4 noduri, gradul polinomului de interpolare este n = 3. (b) Conditiile de interpolare sunt; g(1) = 3, g(2) = 2, g(3) = 4, g(5) = 1. (c) Conditiile de interpolare impuse polinomului g(x) = c0 + c1 x + c2 x2 + c3 x3 conduc la sistemul de ecuatii metoda clasic de interpolare: n a c0 + 1 c1 + 1 2 c2 + 1 3 c3 c + 2 c + 22 c + 23 c 0 1 2 3 2 3 c0 + 3 c1 + 3 c2 + 3 c3 c0 + 5 c1 + 5 2 c2 + 5 3 c3 l0 (x) = l1 (x) = l2 (x) = l3 (x) = = = = = 3 c0 c 2 0 = c0 4 1 c0 + c1 + 2c1 + 3c1 + 5c1 + c2 + 4c2 + 9c2 + 25c2 + c3 + 8c3 + 27c3 + 125c3 = = = = 3 2 4 1

(d) Polinoamele Lagrange sunt:

(x 2)(x 3)(x 5) x3 10x2 + 31x 30 (x x1 )(x x2 )(x x3 ) = = , (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 1)(x 2)(x 3) x3 6x2 + 11x 6 (x x0 )(x x1 )(x x2 ) = = . (x3 x0 )(x3 x1 )(x3 x2 ) (5 1)(5 2)(5 3) 24

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

x3 6x2 + 11x 6 16x3 + 132x2 308x + 264 x3 8x2 + 17x 10 +1 = = 4 24 24 2 11 77 = x3 + x2 x + 11. 3 2 6 Document disponibil la http://mn.lmn.pub.ro

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

158

Capitolul 11. Interpolarea polinomial a functiilor reale a

(f) Tabelul de diferente divizate este: x y x0 = 1 y0 = 3 x1 = 2 y1 = 2 x2 = 3 y2 = 4 x3 = 5 y3 = 1


3 f [x2 , x3 ] = 2

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

ord.2

ord.3

f [x0 , x1 , x2 ] =

3 2

f [x1 , x2 , x3 ] = 7 6

f [x0 , x1 , x2 , x3 ] = 2 3

Diferentele divizate de ordinele 1, 2 i 3 sunt: s f [x0 , x1 ] = 23 y1 y0 = = 1, x1 x0 21 y2 y1 42 = = 2, x2 x1 32

f [x1 , x2 ] = f [x2 , x3 ] = f [x0 , x1 , x2 ] = f [x1 , x2 , x3 ] = f [x0 , x1 , x2 , x3 ] =

14 3 y3 y2 = = , x3 x2 53 2

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

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

f [x1 , x2 ] f [x0 , x1 ] 2 (1) 3 = = , x2 x0 31 2

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

11.8. Exemple

159

11.8.2

Exemple propuse

1. Fie functia y = f (x) denit tabelar: a x y Se cer: (a) Ct este gradul polinomului de interpolare global? a a (b) Care sunt conditiile de interpolare? (c) Care este sistemul de ecuatii asamblat metoda clasic de interpolare? n a (d) Care sunt polinoamele Lagrange asociate diviziunii [2 4 5]? (e) Care este polinomul de interpolare Lagrange? (f) Care este tabelul de diferente divizate? (g) Care este polinomul de interpolare Newton? (h) Care este valoarea functiei punctul x = 3? n 2. Fie functia y = f (x) denit tabelar: a x y Se cer: (a) Ct este gradul polinomului de interpolare global? a a (b) Care sunt conditiile de interpolare? (c) Care este sistemul de ecuatii asamblat metoda clasic de interpolare? n a (d) Care sunt polinoamele Lagrange asociate diviziunii [1 3 5]? (e) Care este polinomul de interpolare Lagrange? (f) Care este tabelul de diferente divizate? (g) Care este polinomul de interpolare Newton? (h) Care este valoarea functiei punctul x = 2? n (i) Care este polinomul de interpolare ipoteza adugrii punctului (4, 5) n a a n tabelul de valori? 3. Fie functia y = f (x) denit tabelar: a Document disponibil la http://mn.lmn.pub.ro 1 3 5 4 1 3 2 4 5 1 3 2

160

Capitolul 11. Interpolarea polinomial a functiilor reale a

x 1 y 2 Se cer:

3 4 3 1

5 4

(a) Ct este gradul polinomului de interpolare global? a a (b) Care sunt conditiile de interpolare? (c) Care este sistemul de ecuatii asamblat metoda clasic de interpolare? n a (d) Care sunt polinoamele Lagrange asociate diviziunii [1 3 4 5]? (e) Care este polinomul de interpolare Lagrange? (f) Care este tabelul de diferente divizate? (g) Care este polinomul de interpolare Newton? (h) Care este valoarea functiei punctul x = 2? n

11.9

Intrebri i probleme a s

1. Evaluati stabilitatea numeric a metodei interpolrii polinomiale. a a 2. Generati un algoritm de interpolare polinomial a unei functii de dou variabile a a f (x, y). 3. Implementati ntr-un limbaj de nivel nalt algoritmul de interpolare Newton. 4. Determinati o aproximare polinomial pentru caracteristica unei diode semiconduc a u/vi 6 toare i(u) = Is (e 1), cu Is = 10 A, v = 0, 027 V i analizati eroarea introdus s a prin interpolare. 5. Determinati o aproximare polinomial pentru caracteristica de magnetizare B = a 0 H + Bs th(H/Bs ), cu 0 = 4 107 H/m, Bs = 1.7 T, = 104 0 i analizati s eroarea introdus prin interpolare. a 6. Analizati comportarea aproximrii polinomiale exteriorul domeniului a x b a n (problema extrapolrii). a 7. Generati i implementati un algoritm de interpolare a unei functii reale impare i s s periodice printr-un polinom trigonometric de forma
n

g(x) =
k=1

ak sin(kt).

LMN, Draft din 30 septembrie 2011

11.9. Intrebri i probleme a s

161

Joseph-Louis Lagrange

Born: 25 Jan 1736 in Turin, Sardinia-Piedmont (now Italy) Died: 10 April 1813 in Paris, France http://www-gap.dcs.st-and.ac.uk/~history/Mathematicians/Lagrange.html

Sir Isaac Newton

Born: 4 Jan 1643 in Woolsthorpe, Lincolnshire, England Died: 31 March 1727 in London, England http://www-gap.dcs.st-and.ac.uk/~history/Mathematicians/Newton.html

Document disponibil la http://mn.lmn.pub.ro

162

Capitolul 11. Interpolarea polinomial a functiilor reale a

Carle David Tolme Runge

Born: 30 Aug 1856 in Bremen, Germany Died: 3 Jan 1927 in Gttingen, Germany http://www-gap.dcs.st-and.ac.uk/~history/Mathematicians/Runge.html

LMN, Draft din 30 septembrie 2011

Lucrarea 14 Derivarea numeric a functiilor reale a


14.1 Caracterizarea metodelor de derivare numeric a

Metodele numerice de derivare au o larg aplicabilitate inginerie, de exemplu atunci a n cnd expresia analitic a derivatei functiei este complicat i cere un efort mare de evaluare a a as sau atunci cnd functia are expresia necunoscut (valorile sunt determinate experimental a a sau rezult dintr-un calcul numeric anterior). Aceste metode stau la baza rezolvrii a a numerice a ecuatiilor diferentiale, foarte putine din acestea putnd rezolvate prin metode a analitice. Derivarea numeric se reduce la calcule aritmetice (adunri, scderi, a a a nmultiri i ar s mp iri), folosind formule relativ simple deduse prin aproximarea functiei de derivat printr-un t acest fel, din punct de vedere teoretic, problema derivrii polinom de interpolare. In a numerice se reduce, practic, la problema interpolrii functiilor. a lucrare se studiaz erorile de trunchiere i rotunjire i modul care acestea depind In a s s n de ordinul aproximrii i pasul retelei de interpolare. a s

14.2

Principiile metodelor

Problema derivrii numerice se formuleaz diferit urmtoarele dou cazuri: a a n a a functia este denit prin cod (este cunoscut expresia ei analitic sau algoritmul de a a a evaluare pentru orice punct din domeniul de denitie); 163

164

Capitolul 14. Derivarea numeric a functiilor reale a

functia este denit prin date (este cunoscut tabelul valorilor functiei a ntr-o retea nit de puncte din domeniul de denitie, numite noduri). a Fie o retea de discretizare: x: f: x0 , f0 , x1 , f1 , x2 , f2 , ..., ..., xn fn

pe care sunt date valorile fk = f (xk ) ale unei functii reale f : [x0 , xn ] IR. Dac se noteaz cu g : [x0 , xn ] IR o functie care interpoleaz datele anterioare (de a a a exemplu, polinomul de interpolare de gradul n), atunci derivata functiei f (x) punctul n x poate calculat aproximativ, evalund g (x). a a De exemplu, cazul n = 1, polinomul de interpolare n g(x) = f0 are derivata g (x) = iar cazul n = 2: n g(x) = f0 x x1 x x0 + f1 x0 x1 x1 x0 f1 f0 x1 x0 (14.1)

(14.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 (x0 + x2 ) 2x (x0 + x1 ) 2x (x1 + x2 ) + f1 + f2 g (x) = f0 (x0 x1 )(x0 x2 ) (x1 x0 )(x1 x2 ) (x2 x0 )(x2 x1 )

(14.3)

Calculele pot continuate pentru grade superioare, prin folosirea polinomului Newton de interpolare. cazul retelei de noduri echidistante cu pasul In h = xi+1 xi , aceste relatii capt o form mult mai simpl: aa a a g (x) = pentru ordinul n = 1 i s x (x0 + g (x) = f0 h2 pentru n = 2. LMN, Draft din 30 septembrie 2011
3h ) 2

(14.4)

f1 f0 , h

(14.5)

x (x0 + h ) x (x0 + h) 2 2f1 + f2 , h2 h2

(14.6)

14.2. Principiile metodelor

165

Polinomul de interpolare de grad doi devine, dup derivare, o functie de gradul ai a nt care, cele trei noduri ale retelei are valorile: n 1 (3f0 + 4f1 f2 ); 2h 1 (f2 f0 ); g (x1 ) = 2h 1 (f0 4f1 + 3f2 ). g (x2 ) = 2h g (x0 ) = (14.7) (14.8) (14.9)

Aceste trei relatii reprezint aproximri de ordinul doi ale primei derivate, cunos a a cute sub numele de relatii cu diferente nite progresive, centrate i respectiv regresive. s Aproximrile de ordin doi ofer erori de trunchiere mai mici dect aproximrile progrea a a a sive i regresive de ordinul ai: s nt 1 (f1 f0 ); h 1 g (x1 ) = (f1 f0 ); h obtinute folosind polinomul de gradul n = 1. g (x0 ) = (14.10) (14.11)

Se constat c pentru aproximarea derivatei a a ntr-un nod al retelei de discretizare se folosesc valorile functiei nodurile vecine. Cu ct ordinul aproximrii este mai mare, cu n a a att sunt utilizate mai multe noduri din vecintatea iar calculul este mai complicat. a a Derivatele de ordin superior se pot evalua numeric prin aplicarea recursiv a formulelor a de calcul pentru prima derivat. De exemplu, folosind succesiv relatia (14.8) a diferentelor a nite centrate de ordinul doi, pentru o discretizare local cu pasul h/2 i cu notatiile: a s f (xi + h/2) = fi+1/2 , f (xi h/2) = fi1/2 , se obtine: f (xi ) = fi+1/2 fi1/2 2(h/2) =
fi+1 fi 2(h/2)

fi fi1 2(h/2)

fi+1 2fi + fi1 , h2

(14.12)

rezultat care corespunde derivrii directe a polinomului de interpolare g(x), pentru aproxa imarea de ordinul doi. Acest rezultat are avantajul unei precizii maxime pentru reteaua considerat i pentru trei evaluri a functiei f . as a cazul unei retele neuniforme cu: x1 x0 = h1 , x2 x1 = h2 , rezult: In a g (x) = f0 2 2 2 f1 + f2 . h1 (h1 + h2 ) h1 h2 (h1 + h2 )h2 (14.13)

Formulele de derivare numeric obtinute se pot aplica i calculul derivatelor partiale. a s n Rezultatele obtinute pentru cazul functiilor denite tabelar se aplic i cazul functiilor a s n denite prin cod, cu observatia c: fi = f (xi ) i fi+1 = f (xi + h), care pasul h se alege a s n astfel at erorile numerice s e ct mai mici. nc a a Document disponibil la http://mn.lmn.pub.ro

166

Capitolul 14. Derivarea numeric a functiilor reale a

14.3

Analiza algoritmilor

Analiza erorilor Deoarece valoarea exact a derivatei se obtine printr-un proces innit de trecere la a limit: a f (x + h) f (x) f (x) = lim , (14.14) h0 h evaluarea numeric este afectat de o eroare de trunchiere. Teoretic, eroarea de trunchiere a a este cu att mai mic cu ct ordinul aproximrii este mai mare. realitate, din cauza a a a a In fenomenului Runge (evidentiat la interpolarea polinomial), formulele de derivare de or a din superior sunt afectate, anumite cazuri, de erori mari de trunchiere (mai ales la n prelucrarea datelor experimentale). acest caz se recomand folosirea relatiilor de ordin In a mic, cea mai indicat ind relatia cu diferente nite centrate de ordinul doi. a Erorile care apar prin folosirea formulelor de derivare numeric depind de doi factori: a pasul de derivare h; gradul polinomului de interpolare n. Pasul de derivare are o valoare optim, nit, pentru care eroarea este minim. a a a Pentru h > hoptim , predomin eroarea de trunchiere, datorat trunchierii seriei Taylor. a a general, eroarea de trunchiere are ordinul O(hn ), deci scade cu micorarea pasului h i In s s creterea gradului n. s Pentru h < hoptim , predomin eroarea de rotunjire cauzat de faptul c sistemul nu a a a poate retine dect un numr limitat de zecimale. Aceast eroare crete pe msura scderii a a a s a a pasului h, datorit fenomenului de anulare prin scdere. a a Pentru evaluarea erorii de trunchiere se folosete dezvoltarea serie Taylor: s n f (x1 ) = f (x0 ) + de unde rezult: a h h2 f (x0 ) + f (z), 1! 2! (14.15)

f1 f0 h f (z) = g (x0 ) + O(h), (14.16) h 2 deci o eroare de trunchiere O(h) pentru relatia cu diferente nite de ordinul ai. nt f (x0 ) = Efort de calcul

Timpul de calcul crete cu creterea ordinului n al aproximrii, ind necesare n + 1 s s a evaluri ale functiei f pentru calculul primei derivate. a LMN, Draft din 30 septembrie 2011

14.4. Pseudocodul metodei

167

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

14.4

Pseudocodul metodei

Metodele de derivare numeric se transpun uor orice limbaj de programare, datorit a s n a simplitii formulelor de calcul. at Ca date de intrare pentru calculul derivatei functiei f sunt necesare doar: punctul x0 ( care se calculeaz derivata); n a pasul de derivare h (distanta ntre dou puncte ale retelei de noduri). a Dac functia este dat tabelar, datele de intrare trebuie s e completate cu: a a a tabelul nodurilor retelei i al valorilor functiei aceste noduri. s n cazul functiilor denite prin cod, calculul primei derivate prin metoda diferentelor In nite progresive de ordinul 1 se poate face utiliznd pseudocodul urmtor (care determin a a a automat valoarea optim a pasului de derivare ): a functia 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 d2 = 0 atunci a ; deriveaz functia f punctul x, cu pasul initial h a n

; ; ; ; ; ;

numrul maxim de iteratii pentru a determinarea pasului optim eroarea relativ de rotunjire a valoarea functiei punctul de derivare n eroarea absolut de rotunjire a contor iteratii

; modulul dublei derivate

Document disponibil la http://mn.lmn.pub.ro

168

Capitolul 14. Derivarea numeric a functiilor reale a

h0 = h altfel h0 = sqrt(2e/d2) r = h/h0 h = h0 pn cnd (k > nrit sau ( r a a a df = (f(x+h)-f0)/h ntoarce df

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

Aplicnd functia derivare pentru valori negative ale parametrului h, valoarea a ntoars a df va derivata regresiv de ordinul 1. Derivata centrat se poate calcula ca media a a aritmetic a valorilor regresiv i progresiv. a as a cazul functiilor tabelare, calculul derivatei admite urmtoarea reprezentare pseuIn a n docod: procedura derivtab (n, x0, h, f, df); calculeaz tabelul de derivare a functiei f, a ; dat prin vectorii x i f, n+1 puncte s n ntreg n ; dimensiunea tabloului real x0 ; nodul initial real h ; pasul retelei tablou real f(n) ; tabloul valorilor functiei tablou real df(n) ; tabloul valorilor derivatei (date de ieire) s 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

14.5

Chestiuni de studiat

1. Evaluarea numeric a primei derivate; a 2. Analiza experimental a erorii de derivare numeric; a a 3. Analiza derivrii numerice de ordin superior; a 4. Implementarea algoritmului; LMN, Draft din 30 septembrie 2011

14.6. Modul de lucru

169

5. Cutare de informatii pe Internet. a

14.6

Modul de lucru

Pentru desfurarea lucrrii selectati optiunea Derivarea numeric a functiilor reale din as a a meniul principal de lucrri. Aceasta are ca urmare lansarea urmtorului meniu: a a Program demonstrativ Analiza erorilor Derivare de ordin superior

14.6.1

Evaluarea numeric a primei derivate a

Se selecteaz din meniul principal optiunea Program demonstrativ. Acest program a calculeaz derivatele unor functii denite prin cod i pune evident ordinul de mrime a s n a a a erorilor ce apar, dependenta acestora de modul de interpolare (progresiv, regresiv i a as centrat), de pasul de derivare (valoare dat de utilizator i valoare optim, determinat a a s a a de program), de functia de derivat i de punctul care se calculeaz derivata. s n a Utilizatorul alege: functia de derivat; punctul x0 care se calculeaz derivata; n a pasul de derivare h. Functia de derivat se poate alege din cele 6 functii aate: s x2 x

ex ln(x) sin(x) Document disponibil la http://mn.lmn.pub.ro

170

Capitolul 14. Derivarea numeric a functiilor reale a

tg(x) Programul aeaz valoarea exact a derivatei i valorile aproximative calculate prin s a a s diferite metode i erorile absolute (de rotunjire i de trunchiere). s s Se vor comenta rezultatele obtinute i se va studia ecienta algoritmului de optimizare s a pasului.

14.6.2

Analiza experimental a erorii de derivare numeric a a

Se selecteaz optiunea Analiza erorilor din meniul principal. a Programul ilustreaz dependenta erorii de pasul de derivare folosit i evidentiaz pona s a derile celor dou tipuri de erori (de rotunjire i de trunchiere). a s Se folosesc succesiv formulele diferentelor nite centrate de ordin 2, 4, respectiv 6, pen tru calculul derivatei functiei sinus punctul /4. Se poate observa, astfel, i dependenta n s ordinului de mrime al erorilor de ordinul polinomului de interpolare. Gracele sunt ate a s scar dublu-logaritmic, pentru a se putea vizualiza amnunt tot intervalul activ n a a n a al variatiei erorilor. Dup aarea unui grac, consola Scilab se aeaz eroarea minim i pasul pentru a s n s a as care este obtinut. Se va estima din grac valorea pasului optim i ordinul erorii de a s trunchiere functie de pasul de derivare. n Se vor analiza i comenta rezultatele obtinute. s

14.6.3

Analiza derivrii numerice de ordin superior a

Se selecteaz optiunea Derivare de ordin superior. Programul calculeaz i reprezint a a s a grac derivatele succesive de ordin superior ale functiei exponentiale exp(x), denite pe intervalul [Xmin, Xmax]. Se aeaz de ecare dat i gracul exact al derivatei respecs a as tive, care este tot exp(x). Datele de intrare ale programului sunt: ordinul maxim al derivatei de reprezentat; X minim; X maxim; LMN, Draft din 30 septembrie 2011

14.7. Exemple

171

numrul de noduri. a Programul evalueaz derivatele punctele interioare ale retelei cu metoda diferentelor a n nite centrate de ordinul 2, iar pentru punctele periferice folosete metoda diferentelor s nite progresive respectiv regresive de ordinul 3. Se recomand analiza propagrii erorilor la calculul pn la ordinul 5, pe o retea cu 100 a a a a de noduri ce discretizeaz intervalul [0, 10], precum i intervalul [0, 1]. Se vor comenta a s comparativ rezultatele obtinute.

14.6.4

Implementarea algoritmului

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

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

14.6.5

Cutare de informatii pe Internet a

Cutati pe Internet informatii i coduri legate de derivarea numeric a functiilor. Cua s a vinte cheie recomandate: numerical derivative.

14.7
14.7.1

Exemple
Exemple rezolvate

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

Document disponibil la http://mn.lmn.pub.ro

172

Capitolul 14. Derivarea numeric a functiilor reale a

S se determine derivata functiei nodurile retelei de discretizare utiliznd difea n a rentele nite astfel: formulele progresiv i regresiv de ordinul ai pentru primul as a nt i respectiv ultimul nod, formula centrat de ordinul doi pentru nodurile interioare. s a Rezolvare: Reteaua de discretizare este uniform cu pasul h = x1 x0 = 2 1 = 1. a Derivata progresiv (14.10) i derivata regresiv (14.11) de ordinul ai primul a s a nt n nod i respectiv ultimul nod sunt: s y0 = y1 y0 12 = = 1, h 1 y3 y2 53 = = 2. h 1 32 1 y2 y0 = = , 2h 2 2 y3 y1 51 = = 2. 2h 2

y3 =

Derivatele centrate de ordinul doi (14.8) nodurile interioare sunt: n y1 = y2 =

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

S se determine derivata functiei nodurile retelei de discretizare utiliznd difea n a rentele nite astfel: formulele progresiv i regresiv de ordinul ai pentru primul as a nt i respectiv ultimul nod, formula centrat de ordinul doi pentru nodul interior. s a Rezolvare: Reteaua de discretizare este uniform cu pasul h = x1 x0 = 3 1 = 2. a Derivata progresiv (14.10) i derivata regresiv (14.11) de ordinul ai primul a s a nt n nod i respectiv ultimul nod sunt: s y0 = y2 = y1 y0 74 3 = = , h 2 2 y2 y1 10 7 3 = = . h 2 2 10 4 3 y2 y0 = = . 2h 4 2

Derivata centrat de ordinul doi (14.8) nodul interior este: a n y1 =

Cele trei derivate sunt egale deoarece punctele din tabel sunt plasate pe o dreapt. a LMN, Draft din 30 septembrie 2011

14.7. Exemple

173

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

S se determine derivata functiei nodurile retelei de discretizare utiliznd difea n a rentele nite astfel: formulele progresiv i regresiv de ordinul doi pentru primul as a i respectiv ultimul nod, formula centrat de ordinul doi pentru nodurile interioare. s a Rezolvare: Reteaua de discretizare este uniform cu pasul h = x1 x0 = 3 1 = 2. a Derivata progresiv (14.7) i derivata regresiv (14.9) de ordinul doi primul nod a s a n i respectiv ultimul nod sunt: s y0 = y4 = 9 + 4 2 7 3y0 + 4y1 y2 = = , 2h 4 4 2 16 + 3 11 y2 4y3 + 3y4 = = . 2h 4 4

Derivatele centrate de ordinul doi (14.8) nodurile interioare sunt: n y1 = 23 1 y2 y0 = = , 2h 4 4 y3 y1 41 3 = = , 2h 4 4

y2 = y3 =

y4 y2 12 1 = = . 2h 4 4

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

cazul functiei sinus, M0 = M2 = 1. Considernd 0 = 1016 , rezult un pas de In a a 8 derivare optim de ordinul hoptim = 2 10 . Document disponibil la http://mn.lmn.pub.ro

174

Capitolul 14. Derivarea numeric a functiilor reale a

14.7.2

Exemple propuse

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

S se determine derivata functiei nodurile retelei de discretizare utiliznd difea n a rentele nite astfel: formulele progresiv i regresiv de ordinul ai pentru primul as a nt i respectiv ultimul nod, formula centrat de ordinul doi pentru nodurile interioare. s a 2. Fie functia y = f (x) denit tabelar: a x 1 y 1 2 3 4 4 2 3 5 5

S se determine derivata functiei nodurile retelei de discretizare utiliznd difea n a rentele nite astfel: formulele progresiv i regresiv de ordinul doi pentru primul as a i respectiv ultimul nod, formula centrat de ordinul doi pentru nodurile interioare. s a

14.8

Probleme i s ntrebri a

1. Deduceti formulele aproximative ale derivatelor centrate pn la ordinul 4. a a 2. Determinati expresia Laplaceanului functiei f (x, y), folosind diferentele nite cen trate de ordinul 2. Calculati valoarea Laplaceanului punctul x = 1, y = 1, pentru n functia: f (x, y) = x3 y 3 folosind formula obtinut i evaluati eroarea. as 3. Determinati expresiile aproximative centrate de ordinul 2 ale derivatelor ai i a nt s doua, cazul care pasul de derivare nu este constant. Se vor folosi notatiile: n n x(i) x(i 1) = h

x(i + k) x(i) = kh care se presupun cunoscute: h, k, f (x(i 1)), f (x(i)), f (x(i + k)). n 4. Deduceti ordinul de mrime al erorii maxime cazul aproximrii centrate, progre a n a sive i regresive de ordin n. s LMN, Draft din 30 septembrie 2011

14.8. Probleme i ntrebri s a

175

5. Evaluati ordinul erorii de rotunjire la metodele diferentelor nite de ordinul 1 i s ordinul 2. Analizati dependenta acestor erori de pasul h. 6. Argumentati algoritmul pentru determinarea pasului optim, folosit functia derivare, n prezentat pseudocod. a n 7. Generati un algoritm pentru determinarea pasului optim la diferente centrate. 8. Generati un algoritm pentru derivarea functiilor denite tabelar pe retele neuni forme.

Document disponibil la http://mn.lmn.pub.ro

176

Capitolul 14. Derivarea numeric a functiilor reale a

LMN, Draft din 30 septembrie 2011

Lucrarea 15 Integrarea numeric a functiilor reale a


15.1 Caracterizarea metodelor de integrare numeric a

Integrarea numeric se aplic functiilor care nu pot integrate analitic (sau ar necea a sita calcule complicate) sau cazul functiilor date tabelar, de exemplu cele rezultate n experimental. general, metodele de integrare numeric se bazeaz pe aproximarea functiei de In a a integrat prin functii mai simple, a cror integral se poate evalua uor. O metod de a a s a aproximare frecvent utilizat cadrul integralelor este metoda interpolrii polinomiale a n a pe portiuni. Spre deosebire de derivarea numeric, integrarea este o operatie relativ stabil numeric, a a dar mai lent, din cauza numrului sporit de calcule care trebuie efectuate. a a

15.2

Principiul metodei

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

I=
a

f (x) dx.

(15.1)

Metoda trapezelor Este una dintre cele mai simple metode de integrare numeric, cu rezultate bune a n aplicatiile inginereti. s 177

178

Capitolul 15. Integrarea numeric a functiilor reale a

Pe o retea de n + 1 noduri echidistante, pasul retelei are valoarea h= xn x0 . n (15.2)

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

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


b

I=
a

f (x) dx

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

(15.4)

Metoda Simpson 1/3 Se aproximeaz variatia functiei de integrat a 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 Presupunnd aceeai retea de n + 1 noduri echidistante, dar cu n par, i considernd a s s a originea punctul xi , se poate scrie: n f (xi1 ) = P (h) = a0 a1 h + a2 h2 , f (xi ) = P (0) = a0 , f (xi+1 = P (h) = a0 + a1 h + a2 h . Aadar, se aproximeaz aria sub s a ntins de functia de integrat a ntre punctele xi1 i s xi+1 cu aria sub ntins de parabola P dintre punctele h i h: a s
h h 2

(15.5)

Ii =
h

P (x) dx =
h

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

h3 a2 . 3

(15.6)

Din conditiile de interpolare se calculeaz: a a0 = f (xi ); f (xi1 ) 2f (xi ) + f (xi+1 ) a2 = 2h2 LMN, Draft din 30 septembrie 2011 (15.7) (15.8)

15.2. Principiul metodei

179

necesare evaluarea integralei n Ii = h(f (xi1 ) + 4f (xi ) + f (xi+1 )) . 3 (15.9)

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


b

I=
a

f (x) dx

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

(15.10)

cunoscut sub numele de Formula lui Simpson 1/3. a Integrarea Romberg Valoarea numeric a integralei depinde de pasul de integrare h, eroarea de trunchiere a scznd cu micorarea pasului h. Se noteaz cu I0 valoarea exact a integralei i cu a a s a a s I = I(h) valoarea ei numeric. Deoarece functia I(h) este par (trapezele obtinute pornind a a din a cu pasul h sunt aceleai cu cele obtinute pornind din b cu pasul h), prin dezvoltarea s ei in serie Taylor jurul lui 0 se obtine, cazul metodei trapezelor: n n I = I0 + a0 h2 + a1 h4 + a2 h6 + . . . (15.11)

Retinnd din aceast serie numai doi termeni, se obtin pentru dou valori diferite h1 si a a a h2 ale pasului de integrare: I1 = I0 + a0 h2 ; 1 I2 = I0 + a0 h2 . 2 Din cele dou ecuatii rezult urmtoarea aproximare pentru valoarea exact a integralei: a a a a I0 = h2 I1 h2 I2 2 1 , h2 h2 2 1 (15.12)

cunoscut sub numele de formula de integrare Romberg. a Reducnd succesiv valoarea lui h: h1 > h2 > h3 > . . . > hk . . . , se obtin valorile a integralei numerice: h2 Ik h2 Ik+1 k I0k = k+12 , k = 1, 2, . . . , (15.13) h2 hk+1 k care au precizie din ce ce mai bun. n a Formula lui Romberg se simplic, dac la ecare iteratie se a a njumtete pasul de a at s integrare (hk+1 = hk /2): 4Ik+1 Ik I0k = . (15.14) 3 Valorile numerice ale integralelor I01 , I02 , I03 ,. . . , calculate pe retele tot mai ne, pot folosite pentru calculul unei valori numerice de precizie ridicat, prin aplicarea recursiv a a a formulei Romberg: Document disponibil la http://mn.lmn.pub.ro

180

Capitolul 15. Integrarea numeric a functiilor reale a

Nr. intervale:

2n I02
4I02 I01 3

4n . . . I03 . . . I12 = ...


4I03 I02 3

Met. trapezelor: I01 Romberg ord. 1: I11 = Romberg ord. 2: I21 =

...

16I12 I11 15

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

cu k = 1, 2, . . . i m = 1, 2, . . .. Iteratiile se pot opri pentru acel ordin m, la care eroarea s relativ a Imk Im1,k Imk este mai mic dect o valoare impus. a a a

15.3

Pseudocodul algoritmilor

cazul functiilor denite prin cod, metoda trapezelor are urmtorul pseudocod: In a functia trapez (a, b, n) ; ; ; ; calculeaz integrala denit a a a functiei 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 functiile denite tabelar, are forma: LMN, Draft din 30 septembrie 2011

15.4. Analiza algoritmilor

181

citete a, b s ; limitele de integrare citete n s ; trebuie s e par a pentru k = 0, n ; valorile functiei nodurile retelei n citete yk s h = (b a)/n rezultat = 0 pentru k = 1, n 1, 2 rezultat = rezultat +yk1 + 4yk + yk+1 rezultat = rezultat h/3 scrie rezultat

Pseudocodul metodei Romberg este: citete a, b s citete n s citete eps s

; numrul initial al subintervalelor de integrare a ; diferenta maxim dintre rezultatele a ; iteratiilor 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 cnd (|rezultat - rezultat vechi|) <eps a a scrie rezultat

15.4

Analiza algoritmilor

Analiza erorilor cazul integrrii numerice, se pot deni dou tipuri de erori: In a a eroarea local, care apare prin aproximarea ariei sub a ntinse pe un interval elementar (de lungime h, respectiv 2h) cu aria elementar specic metodei: aria trapezului a a (la metoda trapezelor), respectiv aria sub ntins de parabol (la metoda Simpson). a a Document disponibil la http://mn.lmn.pub.ro

182

Capitolul 15. Integrarea numeric a functiilor reale a

eroarea global, care apare prin aproximarea integralei cu suma ariilor elementare. a La metoda trapezelor, eroarea local are ordinul O(h3 ), iar cazul metodei Simpson a n ea are ordinul O(h5 ). Eroarea global este mai mare dect eroarea local, avnd ordinul a a a a 2 4 O(h ) respectiv O(h ). Efort de calcul Timpul de calcul depinde de numrul de noduri din reteaua de discretizare, avnd a a ordinul liniar O(n), att cazul metodei trapezelor ct i cazul metodei Simpson. a n a s n Metoda trapezelor e mai exibil, deoarece folosete o retea cu numr oarecare de a s a noduri, spre deosebire de metoda Simpson, care necesit un numr impar de noduri. a a Aceasta din urm este a mai precis. a ns a Metoda Romberg este cea mai exact, dar i cea mai lent, necesitnd un numr relativ a s a a a mic de iteratii, a la ecare iteratie reteaua de noduri se ns ndesete de dou ori. s a

15.5

Chestiuni de studiat

1. Calculul numeric al integralei denite, pentru cteva functii elementare; a 2. Analiza experimental a erorii la integrarea numeric; a a 3. Implementarea algoritmului; 4. Cutarea de informatii pe Internet. a

15.6

Modul de lucru

Pentru desfurarea lucrrii se selecteaz lucrarea Integrarea numeric a functiilor reale as a a a din meniul general de lucrri. a Aceasta are ca efect aarea meniului: s 1. Program demonstrativ 2. Analiza erorilor LMN, Draft din 30 septembrie 2011

15.6. Modul de lucru

183

15.6.1

Calculul integralei unor functii elementare

urma selectrii optiunii Program demonstrativ, se poate alege una din functiile: In a x2 x

ex ln(x) sin(x) tg (x) Dup alegerea unei functii, utilizatorul trebuie s introduc: a a a limitele inferioar i superioar ale intervalului de integrare; as a numrul subintervalelor care se a n mparte intervalul de integrare. Dup efectuarea calculelor, se traseaz gracul functiei pe domeniul de integrare, a a punndu-se evident trapezele corespunztoare acestui domeniu. a n a a consola Scilab se aeaz rezultatele: In s a valoarea exact a integralei denite; a valoarea aproximativ i modulul erorii absolute. as Se vor comenta rezultatele obtinute.

15.6.2

Analiza erorii la integrarea numeric a

Se selecteaz Analiza erorilor din meniul principal al lucrrii. Programul ilustreaz a a a grac dependenta modulului erorilor absolute de pasul de integrare h. Se folosesc, pe rnd, metodele: a trapezelor Document disponibil la http://mn.lmn.pub.ro

184

Capitolul 15. Integrarea numeric a functiilor reale a

Simpson Romberg cu 2 iteratii Romberg cu 3 iteratii pentru calculul integralei functiei sinus ntre punctele 0 i . s Se vor analiza i comenta rezultatele obtinute. Se va estima ordinul erorii de trunchiere s pentru toate cele patru cazuri.

15.6.3

Implementarea algoritmului

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

15.6.4

Cutare de informatii pe Internet a

Se vor cuta pe Internet informatii (coduri) legate de integrarea numeric a functiilor. Cua a vinte cheie recomandate: Numerical Integration, Numerical Quadrature, Gauss Quadrature.

15.7
15.7.1

Exemple
Exemple rezolvate

1. Fie functia f : [1, 5] IR, y = f (x), denit tabelar: a x 1 y 2 Se cer: (a) Reprezentati grac interpolarea liniar pe portiuni a acestor date. a (b) Cte trapeze se consider urma aplicrii metodei trapezelor pentru dea a n a terminarea integralei functiei f (x) pe intervalul [1, 5]? Indicati grac aceste trapeze pe gura de la punctul precedent. LMN, Draft din 30 septembrie 2011 2 4 1 3 5 5

15.7. Exemple

185

y 5 4 3 2 1 0
11 00 11 00 11 00 1111 0000 11 00 11 00 1111 0000 11 00 11 00 1111 0000 11 00 11 00 1111 0000 1 0 11111 00000 11111 00000 1111 0000 1111 0000 11111 00000 111111 000000 111 000 1111 0000 11 11111 00 00000 11111 00000 111 000 11111 00000 111111 000000 111 000 1111 0000 11111 00000 111 000 11 00 11111 00000 111111 000000 111 000 1111 0000 11 00 111 000 111111 000000 1111 0000 111111 000000 1111 0000 1111 00004 5 2 3 1 11 00

Fig. 9. Interpolarea liniar pe portiuni a functiei f a (c) Reteaua de discretizare a domeniului de denitie a functiei f (x) este neuni form? a
5

(d) S se determine integrala I = a


1 5

f (x) dx prin metoda trapezelor.

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

f (x) dx prin aceast metod. a a

Rezolvare: (a) gura 9 este reprezentat grac interpolarea liniar pe portiuni a functiei In a a y = f (x). (b) Functia f (x) este cunoscut 4 puncte (3 segmente). Astfel, numrul de a n a trapeze considerat este 3. Cele trei trapeze sunt haurate diferit gura 9. s n (c) O retea de discretizare xk , k = 0, n este uniform dac pasul de discretizare a a corespunztor unui segment, hk = xk xk1 , k = 1, n, este constant, indiferent a de segmentul k considerat. cazul acestui exemplu, avem: In h1 = x1 x0 = 2 1 = 1, h2 = x2 x1 = 4 2 = 2, h3 = x3 x2 = 5 4 = 1. Deoarece pasul nu este constant pe ntreg domeniul de denitie, reteaua de discretizare este neuniform. a Document disponibil la http://mn.lmn.pub.ro

186

Capitolul 15. Integrarea numeric a functiilor reale a

(d) Aria primului trapez (15.3) este: I0 = 2+1 3 y0 + y1 (x1 x0 ) = (2 1) = . 2 2 2

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

Integrala prin metoda trapezelor se obtine prin nsumarea ariilor trapezelor:


5

I=
1

f (x) dx = I0 + I1 + I2 =

3 19 +4+4= . 2 2

(e) Metoda Simpson 1/3 se poate aplica numai cnd numrul de noduri este impar. a a Pentru cazul dat, numrul de noduri este 4, i consecint, metoda Simpson a s n a 1/3 nu se poate aplica. 2. Fie functia f : [1, 5] IR, y = f (x), denit tabelar: a x 1 y 2 Se cer: (a) Reprezentati grac interpolarea liniar pe portiuni a acestor date. a (b) Cte trapeze se consider urma aplicrii metodei trapezelor pentru dea a n a terminarea integralei functiei f (x) pe intervalul [1, 5]? Indicati grac aceste trapeze pe gura de la punctul precedent. (c) Reteaua de discretizare a domeniului de denitie a functiei f (x) este neuni form? a
5

2 3 4 1 5 3

5 4

(d) S se determine integrala I = a


1 5

f (x) dx prin metoda trapezelor.

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

f (x) dx prin aceast metod. a a

Rezolvare: LMN, Draft din 30 septembrie 2011

15.7. Exemple

187

y 5 4 3 2 1 0

1111 0000 111 000 11 00 11 00 111 000 00 11 111 000 1111 0000 111 000 11 00 111 000 11 00 111 1111 000 0000 1111 0000 111 11 000 00 00 11 111 000 11 1111 00 0000 111 1111 000 0000 1111 0000 111 000 11 1111 00 0000 111 000 11 1111 00 0000 111 11 000 00 111 000 11 1111 00 0000 11 1111 00 0000 11 1111 00 0000 111 1111 000 0000 1111 0000 11 00 1111 1111 0000 0000 1111111 0000000 111 1111 000 0000 00 11 11 11 00 00 111 000 1111 0000 1111111 0000000 111 1111 000 0000 111 000 11 00 111 1111 000 0000 111 000 111 000 111 000 1111 1111 0000 0000 111 1111 000 0000 11 1111 00 0000 111 000 1111 0000
1 2 3 4 5

Fig. 10. Interpolarea liniar pe portiuni a functiei f a (a) gura 10 este reprezentat grac interpolarea liniar pe portiuni a functiei In a a y = f (x). (b) Deoarece gridul de discretizare al domeniului de denitie contine 5 puncte, determinnd o artire 4 segmente, numrul de trapeze considerat este 4. a mp n a Trapezele sunt haurate diferit gura 10. s n (c) Se observ c pasul de discretizare corespunztor ecrui segment este constant a a a a pe ntreg domeniul de denitie, h = 1. Din acest motiv, reteaua este uniform. a (d) Deoarece pasul este constant, se poate aplica direct formula simplicat pentru a retea uniform a metodei trapezelor (15.4): a
5

I=
1

f (x) dx =

1 h (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 numrul de noduri este impar a (5). Deoarece reteaua de discretizare este uniform, se aplic formula (15.10): a a
5

I=
1

f (x) dx =

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

Document disponibil la http://mn.lmn.pub.ro

188

Capitolul 15. Integrarea numeric a functiilor reale a

3. Fie functia f : [1, 11] IR, y = f (x), denit tabelar: a x 1 y 2 Se cer: (a) Cte trapeze se consider urma aplicrii metodei trapezelor pentru detera a n a minarea integralei functiei f (x) pe intervalul [1, 11]? (b) Reteaua de discretizare a domeniului de denitie a functiei f (x) este neuni form? a
1

3 5 3 4

6 7 9 1 5 2

11 3

(c) S se determine integrala I = a


1 1

1f (x) dx prin metoda trapezelor.

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

1f (x) dx prin aceast metod a a

Rezolvare: (a) Functia f (x) este cunoscut 7 puncte. Acestea determin 6 segmente, care a n a discretizeaz domeniul de denitie [1, 11]. Numrul de trapeze considerat este a a 6, egal cu numrul de segmente. a (b) Se observ c pasul de discretizare nu este constant pe ecare segment: a a h1 = x1 x0 = 3 1 = 2, h3 = x3 x2 = 6 5 = 1. Astfel, reteaua de discretizare este neuniform. a (c) Integrala prin metoda trapezelor, pentru o retea neuniform, se determin prin a a nsumarea ariilor trapezelor:
11

I=
1

f (x) dx =

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

y4 + y5 y5 + y6 y3 + y4 (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

LMN, Draft din 30 septembrie 2011

15.7. Exemple

189

(d) Metoda Simpson 1/3 se poate aplica deoarece numrul de noduri este impar a (7). Reteaua este neuniform, astfel integrala prin metoda Simpson 1/3 se deter a min prin a nsumarea ariilor suprafetelor sub ntinse de parabolele care trec prin total, sunt trei parabole: [x0 , x1 , x2 ] (pasul trei noduri consecutive (15.9). In 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 I5 = (y4 + 4y5 + y6 ) = 3


11

I=
1

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

13 32 + = 27. 3 3

15.7.2

Exemple propuse

1. Fie functia f : [1, 6] IR, y = f (x), denit tabelar: a x 1 y 1 Se cer: (a) Reprezentati grac interpolarea liniar pe portiuni a acestor date. a (b) Cte trapeze se consider urma aplicrii metodei trapezelor pentru dea a n a terminarea integralei functiei f (x) pe intervalul [1, 6]? Indicati grac aceste trapeze pe gura de la punctul precedent. (c) Reteaua de discretizare a domeniului de denitie a functiei f (x) este neuni form? a
6

2 4 3 2

6 4

(d) S se determine integrala I = a


1 6

f (x) dx prin metoda trapezelor.

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

f (x) dx prin aceast metod. a a

2. Fie functia f : [1, 13] IR, y = f (x), denit tabelar: a Document disponibil la http://mn.lmn.pub.ro

190

Capitolul 15. Integrarea numeric a functiilor reale a

x 1 3 y 1 4 Se cer:

5 7 2 3

9 11 13 1 2 5

(a) Reprezentati grac interpolarea liniar pe portiuni a acestor date. a (b) Cte trapeze se consider urma aplicrii metodei trapezelor pentru detera a n a minarea integralei functiei f (x) pe intervalul [1, 13]? Indicati grac aceste trapeze pe gura de la punctul precedent. (c) Reteaua de discretizare a domeniului de denitie a functiei f (x) este neuni form? a
13

(d) S se determine integrala I = a


1

f (x) dx prin metoda trapezelor.

(e) Se poate aplica metoda Simpson 1/3? Dac rspunsul este armativ, s se a a a
13

determine I =
1

f (x) dx prin aceast metod. a a

3. Fie functia f : [1, 7] IR, y = f (x), denit tabelar: a x 1 y 3 Se cer: (a) Reprezentati grac interpolarea liniar pe portiuni a acestor date. a (b) Cte trapeze se consider urma aplicrii metodei trapezelor pentru dea a n a terminarea integralei functiei f (x) pe intervalul [1, 7]? Indicati grac aceste trapeze pe gura de la punctul precedent. (c) Reteaua de discretizare a domeniului de denitie a functiei f (x) este neuni form? a
7

2 3 5 1 2 3

7 4

(d) S se determine integrala I = a


1

f (x) dx prin metoda trapezelor.

(e) Se poate aplica metoda Simpson 1/3? Dac rspunsul este armativ, s se a a a
7

determine I =
1

f (x) dx prin aceast metod. a a

LMN, Draft din 30 septembrie 2011

15.8. Probleme i ntrebri s a

191

15.8

Probleme i s ntrebri a

1. Generati algoritmul metodei dreptunghiurilor, bazat pe aproximarea functiei de integrat printr-o functie scar. Comparati precizia acestei metode cu metoda a trapezelor. Analizati cazul unei functii la care derivata a doua si pstreaz semnul a a pe intervalul de integrare. 2. Generati algoritmul metodei trapezelor pentru o functie denit tabelar, pe o retea a cu pas variabil. Aplicati algoritmul pentru datele de mai jos: x 1 7 9 y 5 13 15 3. Demonstrati expresia ordinului erorii locale la metoda trapezelor. 4. Calculati integrala urmtoare, folosind metoda trapezelor i hx = hy = 1 : a s
3 2

I=
0 0

xy d xd y.

Comparati cu rezultatul exact. 5. Obtineti formula Simpson 3/8, folosind un polinom de interpolare de ordinul 3. Ce restrictie trebuie s a ndeplineasc numrul de subintervale al retelei de discretizare? a a 6. Generati un algoritm de integrare numeric, bazat pe interpolarea spline a functiei a de integrat. 7. Generati un algoritm de integrare numeric, bazat pe pseudocodul metodei Simpson, a dedicat functiilor denite prin cod. Modicati acest algoritm astfel at s e nc a efectuat un numr minim de evaluri. a a 8. Generati un algoritm pentru calculul integralei duble: f (x, y) dxdy pe un dreptunghi discretizat cu o retea cu doi pai constanti hx i respectiv hy . s s 9. Generati un algoritm (metoda de integrare Gauss), bazat pe aproximarea
1

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


1

Alegeti ponderile 0 , 1 , 2 i nodurile x0 , x1 , x2 mod optim, astfel at s n nc eroarea s e minim. Demonstrati c pentru: x1 = 0, x2 = x0 = 3/5 i 1 = 8/9, a a a s 0 = 2 = 5/9 formula anterioar este exact dac f (x) este un polinom de gradul a a a 5. Document disponibil la http://mn.lmn.pub.ro

192

Capitolul 15. Integrarea numeric a functiilor reale a

10. Generati un algoritm de integrare numeric prin metoda trapezelor, la care reteaua a de noduri este adaptat functiei. Pornind de la o retea cu pas constant se vor a mbunti succesiv acele subintervale pentru care eroarea local de trunchiere a at a e= h2 2 f (z) , 12 z 2 (15.16)

cu z subinterval, este maxim. Procesul de ranare a retelei va continua pn n a a a cnd eroarea total de trunchiere scade sub o limit impus. a a a a

LMN, Draft din 30 septembrie 2011

15.8. Probleme i ntrebri s a

193

Thomas Simpson

Born: 20 Aug 1710 in Market Bosworth, Leicestershire, England Died: 14 May 1761 in Market Bosworth, Leicestershire, England http://www-gap.dcs.st-and.ac.uk/~history/Mathematicians/Simpson.html

Lewis Fry Richardson

Born: 11 Oct 1881 in Newcastle upon Tyne, Northumberland, England Died: 30 Sept 1953 in Kilmun, Argyll, Scotland http://www-gap.dcs.st-and.ac.uk/~history/Mathematicians/Richardson.html

Document disponibil la http://mn.lmn.pub.ro

194

Capitolul 15. Integrarea numeric a functiilor reale a

LMN, Draft din 30 septembrie 2011

Lucrarea 16 Rezolvarea numeric prin metode a iterative a ecuatiilor neliniare


16.1 Caracterizarea lucrrii a

Rezolvarea numeric a unei ecuatii algebrice neliniare sau transcendente f (x) = 0 a const construirea unui ir x0 , x1 , x2 , . . . , xk , . . . convergent ctre solutia x a ecuatiei a n s a considerate. Se adopt drept solutie numeric un termen xk al irului sucient de apropiat a a s de limita x. Modul care este generat irul determin calitile metodei (viteza de convergent, n s a at a eroare numeric, efort de calcul, etc.). De obicei irul este denit recurent, iar procesul a s iterativ se oprete atunci cnd distanta dintre doi termeni succesivi devine sucient de s a mic sau |f (x)| este neglijabil. a

16.2

Principiul lucrrii a

Se consider o ecuatie neliniar: a a f (x) = 0, (16.1)

care f este o functie continu denit pe intervalul [a, b] cu valori IR, iar x este solutia n a a n exact a ecuatiei (presupunnd c exist un x astfel at a < x < b i acesta este unic). a a a a nc s Pentru determinarea numeric a solutiei x se construiete un ir x0 , x1 , . . . , xk , . . . cona s s vergent ctre solutia exact x a ecuatiei. Termenul xk al irului se determin mod a a s a n 195

196

Capitolul 16. Rezolvarea numeric prin metode iterative a ecuatiilor neliniare a

recurent: xk = g(xk1), (16.2)

functie de termenul precedent. Iteratiile se opresc atunci cnd distanta dintre doi n a termeni succesivi |xk xk1 | este mai mic dect o valoare impus . Se presupune a a a c valoarea xk astfel obtinut este o aproximare sucient de bun a solutiei exacte i se a a a s adopt ca solutie numeric. consecint, metoda iterativ este caracterizat prin functia a a In a a a de iteratie g, care trebuie aleas astfel at punctul ei x x = g(x) s coincid cu solutia a nc a a ecuatiei f (x) = 0. Metoda bisectiei Una din cele mai simple metode iterative pentru rezolvarea unei ecuatii neliniare, dar care nu se bazeaz pe constructia unei functii de iteratie, este metoda bisectiei, care se a bazeaz pe observatia c f (x) are semne diferite la capetele intervalului [a, b], interiorul a a n cruia se determin solutia, deci f (a)f (b) < 0. Considernd xm = (a + b)/2, se va a a a njumti intervalul [a, b] i se va selecta din cele dou subintervale acela care contine a at s a solutia. Pentru aceasta se determin semnul valorii f (xm ) i se modic a = xm sau a s a b = xm functie de acest semn, astfel at f (a)f (b) < 0. Sirul valorilor succesive ale lui n nc xm este convergent ctre solutia exact x. Procedura iterativ de a a a njumtire se oprete a at s atunci cnd lungimea intervalului |b a| devine mai mic dect eroarea impus solutiei. a a a a Metoda iteratiei simple O alt variant a metodei iterative este cunoscut sub numele de metoda iteratiei a a a simple. Ea const transformarea ecuatiei f (x) = 0 a n ntr-o ecuatie de forma x = g(x), de exemplu, prin articiul x = x + cf (x), care g(x) = x + cf (x). Aparent, valoarea n constantei c cu care se multiplic ecuatia f (x) = 0 nu este important, totui se va a a s constata c ea infuenteaz puternic convergenta irului de iteratii. a a s consecint, metoda iteratiei simple, irul solutiilor numerice este generat de In a n s relatia: xk = xk1 + cf (xk1 ) care k = 1,2,. . . ,n. n Se pornete de la o initializare arbitrar x0 [a, b] i se calculeaz succesiv x1 , x2 , . . . , xn s a s a pn cnd |xn xn1 | < eps. O conditie sucient pentru convergenta irului (16.2) este a a a a s ca g s e o contractie, respectiv: a |g(x1 ) g(x2 )| L|x1 x2 | (16.4) (16.3)

cu L strict subunitar, pentru orice x1 , x2 [a, b]. Dac f este derivabil, aceast conditie a a a LMN, Draft din 30 septembrie 2011

16.2. Principiul lucrrii a

197

este satisfcut atunci cnd |g | < 1, deci: a a a |1 + cf (x)| < 1, x [a, b]. (16.5)

Conditia (16.5) evidentiaz importanta constantei c, care trebuie s aib semn opus a a a derivatei functiei f i trebuie aleas astfel at |1 + cf (x)| s e subunitar. Cu ct s a nc a a |g | = |1 + cf (x)| este mai mic, cu att irul iterativ este mai rapid convergent. a s Metoda Newton (a tangentelor) Una din metodele iterative cele mai eciente este metoda Newton, care c = ck se n modic la ecare iteratie, astfel at 1 + ck f (xk ) = 0, respectiv: a nc ck = 1 . f (xk ) (16.6)

Rezult urmtoarea relatie pentru denirea irului solutiilor numerice metoda Newton: a a s n xk+1 = xk f (xk ) , f (xk ) k = 1, 2, . . . (16.7)

care evidentiaz faptul c la ecare iteratie gracul functiei este aproximat cu tangenta a a dus punctul de coordonate xk , f (xk ). Ecuatia dreptei tangente este: a n y = f (x)(x xk ) + f (xk ), iar prin intersectia ei cu axa, rezult, pentru y = 0: a x = xk+1 = xk f (xk ) . f (xk ) (16.9) (16.8)

Din acest motiv, metoda Newton este cunoscut i sub numele de metoda tangentelor. a s Dezavantajul acestei metode const faptul c la ecare iteratie trebuie evaluat derivata a n a a f (xk ), ceea ce poate necesita un efort mare de calcul. Metoda Newton-Kantorovici (a tangentelor paralele) O variant simplicat, cunoscut sub numele de Newton-Kantorovici (a tangena a a telor paralele) folosete o singur evaluare a derivatei punctul initial c = 1/f (x0 ), s a n iar iteratiile sunt date de: f (xk ) xk+1 = xk (16.10) f (x0 ) Aceast metod este, fond, o variant a metodei iteratiei simple, cu o alegere convena a n a abil a factorului c. a

Document disponibil la http://mn.lmn.pub.ro

198

Capitolul 16. Rezolvarea numeric prin metode iterative a ecuatiilor neliniare a

Metoda Newton discret (a secantelor) a Dac expresia derivatei f (x) nu este cunoscut, atunci metoda Newton i varianta sa a a s simplicat nu pot aplicate. acest caz se poate face apel la aproximarea numeric a a In a derivatei: f (xk ) f (xk1) , (16.11) f (xk ) xk xk1 aceasta reprezentnd panta secantei ce unete ultimele dou puncte din irul iterativ, a s a s avnd coordonatele xk1 , f (xk1) i respectiv xk , f (xk ). Metoda astfel obtinut bazat pe a s a a relatia iterativ: a f (xk )(xk xk1 ) , k = 1, 2, . . . (16.12) xk+1 = xk f (xk ) f (xk1 ) este cunoscut sub numele de metoda Newton (sau metoda secantelor). Aceast metod a a a folosete o functie de iteratie de dou variabile xk+1 = g(xk , xk1 ), deci necesit o initializare s a a dubl x0 , x1 (alese, de exemplu: x0 = a, x1 = b). a

16.3

Pseudocodul algoritmilor

Metoda bisectiei Rezolvarea ecuatiei f (x) = 0 prin metoda bisectiei poate reprezentat pseudocod a n prin urmtoarea procedur: a a procedura bisectie (a, b, eps, nit) real a, b real eps ntreg nit ntreg k = 0 repet a k =k+1 xm = (a + b)/2 dac f (xm)f (a) > 0 atunci a a = xm altfel b = xm pn cnd (b a) < eps sau k > nit a a a dac k nit a scrie xm retur

; ; ; ;

domeniul de denitie al functiei f eroarea impus de solutie a numr maxim de iteratii a contor iteratii

; solutie

LMN, Draft din 30 septembrie 2011

16.3. Pseudocodul algoritmilor

199

Metoda iteratiei simple Rezolvarea ecuatiei f (x) = 0 prin metoda iteratiei simple poate reprezentat a n pseudocod prin urmtoarea procedur: a a procedura iteratie simpl (x0 , eps, nit) a 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 pn cnd d < eps sau k > nit a a a dac k nit a scrie xnou retur

; ; ; ; ;

initializare solutie eroarea impus de solutie a numr maxim de iteratii a contor iteratii initializarea solutiei

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

Metoda Newton-Kantorovici (tangente paralele) Rezolvarea ecuatiei f (x) = 0 prin metoda Newton-Kantorovici(tangente paralele) poate reprezentat pseudocod prin urmtoarea procedur: a n a 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 pn cnd d < eps sau k > nit a a a dac k nit a

initializare solutie eroarea impus de solutie a numr maxim de iteratii a initializarea solutiei valoarea derivatei x0 n

Document disponibil la http://mn.lmn.pub.ro

200

Capitolul 16. Rezolvarea numeric prin metode iterative a ecuatiilor neliniare a

scrie xnou retur Metoda Newton (tangente) Rezolvarea ecuatiei f (x) = 0 prin metoda Newton (a tangentelor) poate reprezentat a pseudocod prin urmtoarea procedur: n a a procedura Newton (x0 , eps, nit) real x0 real eps ntreg nit ntreg k = 0 real xvechi = x0 repet a k =k+1 xnou = xvechi f (xvechi)/f d = |xnou xvechi| xvechi = xnou pn cnd d < eps sau k > nit a a a dac k nit a scrie xnou retur Metoda Newton discret (a secantelor) a Rezolvarea ecuatiei f (x) = 0 prin metoda Newton discret (a secantelor) poate a reprezentat pseudocod prin urmtoarea procedur: a n a a procedura secante (a, b, eps, nit) real a, b ; domeniul de denitie al functiei real eps ; eroarea impus de solutie a ntreg nit ; numr maxim de iteratii a ntreg k = 0 ; contor iteratii real xv = a ; initializri ale solutiei a real xvv = b repet a k =k+1 xnou = xv (xv xvv)f (xv)/(f (xv) f (xvv)) LMN, Draft din 30 septembrie 2011

; ; ; ; ;

initializare solutie eroarea impus de solutie a numr maxim de iteratii a contor iteratii initializarea solutiei

(xvechi)

16.4. Analiza algoritmilor

201

d = |xnou xv| xvv = xv xv = xnou pn cnd d < eps sau k > nit a a a dac k nit a scrie xnou retur

16.4

Analiza algoritmilor

Efort de calcul Efortul de calcul pentru determinarea solutiei numerice este dependent de eroarea general, cu ct precizia impus solutiei este mai mare, cu att timpul impus solutiei. In a a a a de calcul crete, deoarece sunt necesare mai multe iteratii. s Efortul de calcul pentru o iteratie depinde de metoda adoptat i el const principal as a n evaluarea functiei f sau a derivatei acesteia: n Metoda Bisectiei Iteratia simpl a Tangente paralele Newton Secante Numr de evaluri pe iteratie a a 2 1 1 1 2 evaluri pentru f (poate redus la o evaluare) a a evaluare pentru f evaluare pentru f evaluare pentru f i 1 evaluare pentru derivata f s evaluri pentru f (poate redus la o evaluare) a a

Deoarece viteza cu care irul de iteratii converge ctre solutia exact este diferit de la s a a a o metod la alta, este posibil ca numrul de iteratii necesare atingerii unei precizii dorite a a s e mult mai mic cazul metodei Newton dect cazul metodei iteratiei simple. a n a n In acest caz se obtine o ecient global superioar prin folosirea metodei Newton, chiar a a a dac la ecare iteratie timpul de calcul este mai mare. a Analiza erorilor O alt problem important procedurile iterative const a a a n a n ncrederea care se poate acorda solutiei numerice. Faptul c doi termeni succesivi sunt sucient de apropiati a |xk+1 xk | < eps nu nseamn a ntotdeauna c acetia sunt foarte aproape de solutia a s exact x. Este posibil ca distanta err = |xk+1 x| s e mult mai mare dect eps. a a a Folosind principiul contractiei se obtin urmtoarele relatii privind eroarea impus eps i a a s Document disponibil la http://mn.lmn.pub.ro

202

Capitolul 16. Rezolvarea numeric prin metode iterative a ecuatiilor neliniare a

eroarea real err cazul metodei iteratiei simple: a n Ln+1 |x1 x0 | err = |xn+1 x| 1L eps = |xn+1 xn | Ln+1 |x0 x| |g(u) g(v)| L|u v| (16.13) (16.14)

care s-a notat cu L < 1 constanta Liepschitz a functiei de iteratie g, ce satisface: n (16.15)

Raportul dintre eroarea impus i cea real depinde de constanta L. as a

pentru orice u, v din domeniul (a, b). Cu ct aceast constant are valori mai mici, cu a a a att irul iterativ este mai rapid convergent, numrul de iteratii necesar atingerii preciziei a s a impuse ind: eps log (1 L) |x1 x0 | n= (16.16) log L

Deoarece metoda bisectiei marginea erorii reale la iteratia n (merrn ) satisface inen galitatea: merrn1 merrn , (16.17) 2 rezult c metoda iteratiei simple este mai avantajoas dect metoda bisectiei, doar atunci a a a a cnd constanta Liepschitz L < 1/2. a Metoda Newton este mai rapid convergent dect metoda iteratiei simple deoarece a a n acest caz, eroarea real la ecare pas este: a errn+1 = |xn+1 x| = |g(xn ) g(x)| L(|xn x|)2 spre deosebire de eroarea real la ecare pas cazul metodei iteratiei simple: a n errn+1 = |xn+1 x| = |g(xn ) g(x)| L|xn x|. (16.19) (16.18)

concluzie, efortul de calcul pentru determinarea solutiei numerice a unei ecuatii In neliniare printr-o metod iterativ depinde de: a a tipul ecuatiei; initializarea adoptat (distanta fat de solutia exact); a a a metoda iterativ adoptat; a a eroarea impus solutiei numerice. a Metodele iterative nu sunt convergente orice caz. Aceasta situatie poate avea loc n de exemplu, cazul metodei iteratiei simple dac constanta L a functiei g are valori n a supraunitare. LMN, Draft din 30 septembrie 2011

16.5. Chestiuni de studiat

203

16.5

Chestiuni de studiat

1. Rezolvarea unor ecuatii neliniare prin diferite metode iterative; 2. Analiza experimental a erorilor i a timpului de calcul la rezolvarea prin metode a s iterative a ecuatiilor neliniare; 3. Implementarea ntr-un limbaj de programare a unor algoritmi de rezolvare iterativ a a ecuatiilor neliniare i testarea acestora; s 4. Cutarea de informatii pe Internet. a

16.6

Modul de lucru

Pentru desfurarea lucrrii selectati optiunea Rezolvarea numeric prin metode iteraas a a tive a ecuatiilor neliniare din meniul principal de lucrri. Aceasta are ca urmare lansarea a urmtorului meniu: a Rezolvare ecuatii Analiza rezolvrii a Utilizatorul va selecta optiunile din acest meniu.

16.6.1

Rezolvarea unor ecuatii neliniare prin diferite metode i terative

Prin selectarea optiunii Rezolvare ecuatii din meniul lucrrii se apeleaz un program a a care poate rezolva urmtoarele ecuatii neliniare: a ex = a0 x + a0 ln x = a1 a0 sin x + a1 cos x = a2 a3 x3 + a2 x2 + a1 x + a0 = 0 care a0 , a1 , a2 , a3 , sunt parametri reali ce vor introdui de utilizator. Dup introdun s a cerea acestor parametri, programul solicit domeniul de denitie [xmin , xmax ] al functiei, a numrul maxim de iteratii i apoi alegerea metodei de rezolvare dintre variantele: a s Document disponibil la http://mn.lmn.pub.ro

204

Capitolul 16. Rezolvarea numeric prin metode iterative a ecuatiilor neliniare a

1. metoda bisectiei; 2. metoda iteratiei simple (cu c = 1); 3. metoda tangentelor paralele; 4. metoda tangentelor; 5. metoda secantelor. continuare programul aeaz gracul functiei f (x) i marcheaz succesiv punctele In s a s a de coordonate xk , f (xk ), k = 0, 1, 2, . . . Pentru trecerea la iteratia urmtoare trebuie apsat tasta <ENTER> consola a a a n Scilab. Se recomand rezolvarea ecuatiilor: ex = 2, x + ln x = 2, sin(x) + cos(x) = 1 i x2 = 2, a s prin diferite metode. Se vor alege limitele xmin i xmax ale domeniului de denitie mod s n convenabil pentru ecare ecuatie i se va comenta convergenta procesului iterativ, aa s s cum este ea evidentiat din grac. a Pentru ecare metod disponibil, se va cuta un exemplu de ecuatie, la care iteratiile a a a nu sunt convergente.

16.6.2

Analiza experimental a erorilor i a timpului de calcul a s la rezolvarea prin metode iterative a ecuatiilor neliniare

Prin selectarea optiunii Analiza rezolvrii din meniul principal se apeleaz un program a a care rezolv ecuatia algebric: a a a2 x2 + a1 x + a0 = 0 prin diferite metode iterative i anume: s 1. metoda bisectiei; 2. metoda iteratiei simple; 3. metoda tangentelor paralele; 4. metoda tangentelor; 5. metoda secantelor. LMN, Draft din 30 septembrie 2011

16.6. Modul de lucru

205

La ecare metod este aat i reprezentat grac variatia erorii absolute reale |xk x| a s as a (abaterea iteratiei curente fat de solutia exact), a erorii aparente Cauchy |xk xk1 | a a (distanta dintre dou iteratii succesive egal cu modulul corectiei efectuate asupra ultimei a a solutii numerice) i a reziduului |f (xk )| pe parcursul iteratiilor. Programul aeaz i s s a s timpul necesar pentru efectuarea unei iteratii. Se va rezolva ecuatia x2 = 2 i se va calcula timpul necesar atingerii unei precizii s dorite (de exemplu, primele trei cifre semnicative exacte) pentru solutia numeric. Se a vor compara rezultatele obtinute prin diferite metode (ecienta lor relativ rezolvarea a n problemei date) i se va determina metoda optim. s a

16.6.3

Implementarea algoritmilor de rezolvare iterativ a ecuatiilor a neliniare

Se va implementa limbajul C una din procedurile de rezolvare iterativ prezentate. Se n a va scrie un program principal, care va apela procedura implementat i care va rezolva a s ecuatia algebric neliniar: a a a3 x3 + a2 x2 + a1 x + a0 = 0 Programul va permite:

introducerea datelor a0 , a1 , a2 , a3 , a, b; rezolvarea ecuatiei prin apelul procedurii; aarea rezultatelor: x - solutia numeric; k - numrul de iteratii; eps - eroarea s a a aparent Cauchy. a

16.6.4

Cutare de informatii pe Internet a

Cutati pe Internet informatii i coduri legate de rezolvarea numeric a ecuatiilor a s a neliniare. Cuvinte cheie recomandate: solving nonlinear equations, solving nonlinear systems, secant method, etc. Document disponibil la http://mn.lmn.pub.ro

206

Capitolul 16. Rezolvarea numeric prin metode iterative a ecuatiilor neliniare a

16.7
16.7.1

Exemple
Exemple rezolvate

1. Fie functia f : IR IR, f (x) = x2 9. Se cer: (a) S se calculeze primele dou iteratii ale metodei bisectiei pentru rezolvarea a a ecuatiei f (x) = 0 intervalul [a, b], unde a = 0, b = 8. n (b) S se calculeze primele trei iteratii ale metodei Newton pentru rezolvarea a ecuatiei f (x) = 0, pornind de la initializarea x0 = 1, respectiv x0 = 1. (c) Comentati comportarea metodei Newton pentru rezolvarea ecuatiei f (x) = 0, dac initializarea este x0 = 0. a (d) S se calculeze primele dou iteratii ale metodei Newton-Kantorovici pentru a a rezolvarea ecuatiei f (x) = 0, pornind de la initializarea x0 = 2. (e) S se calculeze primele dou iteratii ale metodei Newton discret pentru rea a a zolvarea ecuatiei f (x) = 0, pornind de la initializarea dubl x0 = 0, x1 = 1. a Rezolvare: (a) Metoda bisectiei ( njumtirii intervalului) este garantat convergent dac a at a a functia este continu, solutia este unic (problema este bine formulat matema a a a tic) i functia si schimb semnul intervalul de cutare, [a, b] (f (a)f (b) < 0). s a n a Pentru functia dat avem: f (a) = f (0) = 9 i f (b) = f (8) = 55, adic a s a f (a)f (b) = 9 55 < 0.

La prima iteratie, 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, solutia se a a n prima jumtate a intervalului [a, b]. Valoarea lui b se modic, b = xm,1 = 4. a a Noul interval de cutare este [0, 4]. a La a doua iteratie, 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, solutia se a a doua jumtate a intervalului [a, b]. Acum, valoarea lui a se modic, a n a a a = xm,2 = 2. Noul interval de cutare este [2, 4]. a Procedeul iterativ este ilustrat gura 11. n

(b) Formula de recurent a metodei Newton (a tangentelor) pentru generarea a irului de solutii este: s xk+1 = xk f (xk ) , f (xk ) k = 1, 2, . . . .

LMN, Draft din 30 septembrie 2011

16.7. Exemple

207

Fig. 11. Primele dou iteratii ale metodei bisectiei a Se observ c este necesar evaluarea derivatei la ecare iteratie. cazul a a a In problemei considerate, f (x) = 2x, Dac initializarea este x0 = 1, primele 3 iteratii ale metodei Newton sunt: a x1 = x0 x2 = x1 x3 = x2 f (x0 ) f (1) 8 =1 =1 = 5, f (x0 ) f (1) 2

f (x1 ) f (5) 16 17 =5 =5 = = 3.4, f (x1 ) f (5) 10 5

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

Procedeul iterativ este ilustrat gura 12. n Dac initializarea este x0 = 1, primele 3 iteratii sunt: a x1 = x0 x2 = x1 x3 = x2 f (x0 ) f (1) 8 = 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

Procedeul iterativ este ilustrat gura 13. n Document disponibil la http://mn.lmn.pub.ro

208

Capitolul 16. Rezolvarea numeric prin metode iterative a ecuatiilor neliniare a

F(x) 28

24

20

16

12

4 X 1 2 3 4 5 6 7

Fig. 12. Primele trei iteratii ale metodei Newton

F(x) 28

24

20

16

12

4 X 7 6 5 4 3 2 1

Fig. 13. Primele trei iteratii ale metodei Newton

LMN, Draft din 30 septembrie 2011

16.7. Exemple

209

Se observ c, functie de initializarea solutiei, metoda Newton converge ctre a a n a 2 una dintre cele dou solutii exacte ale ecuatiei x 9 = 0, x = 3. a (c) Dac initializarea este x0 = 0, atunci prima iteratie a metodei Newton ar : a x1 = x0 f (x0 ) f (0) 9 =0 = , f (x0 ) f (0) 0

i metoda eueaz a de la prima iteratie. s s a nc Metoda Newton va eua dac o iteratie ajunge s a ntr-un punct critic al functiei (punct pentru care derivata este nul). Din punct de vedere geometric, a ntr-un punct critic, tangenta la gracul functiei f (x) este paralel cu abscisa OX, a deci nu exist intersectie cu aceasta, implicit solutie la iteratia urmtoare. a a (d) Formula de recurent a metodei Newton-Kantorovici (a tangentelor paralele) a pentru generarea irului de solutii este: s xk+1 = xk f (xk ) , f (x0 ) k = 1, 2, . . . .

Se observ c este necesar o singur evaluare a derivatei, f (x0 ) = 2x0 . a a a a Dac initializarea este x0 = 2, primele 2 iteratii ale metodei Newton-Kantorovici a sunt: f (x0 ) f (2) 5 13 x1 = x0 =2 =2 = = 3.25, f (x0 ) f (2) 4 4 x2 = x1 13 f (13/4) 13 25 183 f (x1 ) = = = = 2.859. f (x0 ) 4 f (2) 4 64 64

Procedeul iterativ este ilustrat gura 14. n (e) Formula de recurent a metodei Newton discret (a secantelor) pentru genea a rarea irului de solutii este: s xk+1 = xk f (xk )(xk xk1 ) , f (xk ) f (xk1 ) k = 1, 2, . . . .

Pornind de la initializarea dubl x0 = 0, x1 = 1, primele 2 iteratii ale metodei a Newton discret sunt: a 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

f (9)(9 1) 36 9 f (x2 )(x2 x1 ) =9 =9 = = 1.8. f (x2 ) f (x1 ) f (9) f (1) 5 5

Procedeul iterativ este ilustrat gura 15. n Document disponibil la http://mn.lmn.pub.ro

210

Capitolul 16. Rezolvarea numeric prin metode iterative a ecuatiilor neliniare a

F(x) 9

5 2.0 2.4 2.8 3.2 3.6 4.0 4.4

Fig. 14. Primele dou iteratii ale metodei Newton Kantorovici a

F(x) 80

70

60

50

40

30

20

10

0 X 0 1 2 3 4 5 6 7 8 9 10

10

Fig. 15. Primele dou iteratii ale metodei Newton discret a a

LMN, Draft din 30 septembrie 2011

16.7. Exemple

211

2. Fie ecuatia neliniar x2 + x = 2. a Se cer: (a) S se calculeze primele dou iteratii ale metodei bisectiei pentru rezolvarea a a ecuatiei pentru x [a, b], unde a = 6, b = 0. (b) S se calculeze primele dou iteratii ale metodei Newton pentru rezolvarea a a ecuatiei, pornind de la initializarea x0 = 0. (c) S se calculeze primele dou iteratii ale metodei Newton-Kantorovici pentru a a rezolvarea ecuatiei, pornind de la initializarea x0 = 0. (d) S se calculeze primele dou iteratii ale metodei Newton discret pentru rea a a zolvarea ecuatiei, pornind de la initializarea dubl x0 = 1/2, x1 = 0. a Rezolvare: La rezolvarea oricrei ecuatii neliniare este indicat s avem forma f (x) = 0. cazul a a In 2 considerat, f (x) = x + x 2. (a) Pentru functia dat avem: f (a) = f (6) = 28 i f (b) = f (0) = 2, adic a s a f (a)f (b) = 28 (2) < 0, o singur solutie intervalul [a, b]. a n

La prima iteratie, k = 1: xm,1 = (a + b)/2 = 3, f (xm,1 ) = f (3) = 4. Deoarece f (a)f (xm,1 ) = 28 4 > 0, solutia se a a doua jumtate a in a n a tervalului [a, b]. Valoarea lui a se modic, a = xm,1 = 3. Noul interval de a cutare este [3, 0]. a

La a doua iteratie, 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, solutia se a prima jumtate a n a a intervalului [a, b]. Acum, valoarea lui b se modic, b = xm,2 = 3/2. Noul a interval de cutare este [3, 3/2]. a (b) Pentru metoda Newton este necesar cunoaterea expresiei derivatei functiei. a s cazul problemei considerate, f (x) = 2x + 1. In Pornind de la initializarea x0 = 0, primele dou iteratii ale metodei Newton a 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 initializarea x0 = 0, primele dou iteratii ale metodei Newton a Kantorovici sunt: x1 = x0 f (x0 ) f (0) 2 =0 = = 2, f (x0 ) f (0) 1

Document disponibil la http://mn.lmn.pub.ro

212

Capitolul 16. Rezolvarea numeric prin metode iterative a ecuatiilor neliniare a

x2 = x1

f (2) 4 f (x1 ) =2 = 2 = 2. f (x0 ) f (0) 1

(d) Pornind de la initializarea dubl x0 = 1/2, x1 = 0, primele dou iteratii ale a a metodei Newton discret sunt: a x2 = x1 f (0)[0 (1/2)] 1 f (x1 )(x1 x0 ) =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

16.7.2

Exemple propuse

1. Fie functia f : IR IR, f (x) = x2 16. Se cer: (a) S se calculeze primele dou iteratii ale metodei bisectiei pentru rezolvarea a a ecuatiei f (x) = 0 intervalul [a, b], unde a = 0, b = 12. n (b) S se calculeze primele dou iteratii ale metodei Newton pentru rezolvarea a a ecuatiei f (x) = 0, pornind de la initializarea x0 = 1. (c) S se calculeze primele dou iteratii ale metodei Newton-Kantorovici pentru a a rezolvarea ecuatiei f (x) = 0, pornind de la initializarea x0 = 1. (d) S se calculeze primele dou iteratii ale metodei Newton discret pentru rea a a zolvarea ecuatiei f (x) = 0, pornind de la initializarea dubl x0 = 0, x1 = 1. a 2. Fie ecuatia neliniar x2 + x = 6. a Se cer: (a) S se calculeze primele dou iteratii ale metodei bisectiei pentru rezolvarea a a ecuatiei pentru x [a, b], unde a = 8, b = 0. (b) S se calculeze primele dou iteratii ale metodei Newton pentru rezolvarea a a ecuatiei, pornind de la initializarea x0 = 1. (c) S se calculeze primele dou iteratii ale metodei Newton-Kantorovici pentru a a rezolvarea ecuatiei, pornind de la initializarea x0 = 1. (d) S se calculeze primele dou iteratii ale metodei Newton discret pentru rea a a zolvarea ecuatiei, pornind de la initializarea dubl x0 = 2, x1 = 1. a LMN, Draft din 30 septembrie 2011

16.8. Intrebri i probleme a s

213

16.8

Intrebri i probleme a s

1. Comparati ecienta diferitelor metode iterative pentru rezolvarea aceleiai ecuatii s neliniare; 2. Analizati cum depinde ecienta rezolvrii de initializarea adoptat; a a 3. Analizati cum depinde timpul de calcul pentru determinarea solutiei numerice a unei ecuatii neliniare de eroarea impus solutiei numerice; a 4. Modicati algoritmul metodei bisectiei astfel at s se efectueze o singur evaluare nc a a a functiei f la ecare njumtire; a at 5. Analizati efectul pe care are introducerea unui factor de relaxare (subrelaxare, l respectiv suprarelaxare) iteratiile neliniare; n 6. Care din metodele prezentate poate generalizat la rezolvarea unui sistem de a ecuatii neliniare i cum se realizeaz aceast generalizare? s a a 7. Propuneti diferite criterii sigure pentru oprirea iteratiilor; 8. Generati un algoritm pentru determinarea iterativ a zerourilor functiei complexe a analitice.

Document disponibil la http://mn.lmn.pub.ro

214

Capitolul 16. Rezolvarea numeric prin metode iterative a ecuatiilor neliniare a

Sir Isaac Newton

Born: 4 Jan 1643 in Woolsthorpe, Lincolnshire, England Died: 31 March 1727 in London, England http://www-gap.dcs.st-and.ac.uk/~history/Mathematicians/Newton.html

Leonid Vitalyevich Kantorovich

Born: 19 Jan 1912 in St Petersburg, Russia Died: 7 April 1986 in USSR http://www-gap.dcs.st-and.ac.uk/~history/Mathematicians/Kantorovich.html http://www.nobel.se/economics/laureates/1975/kantorovich-autobio.html

LMN, Draft din 30 septembrie 2011

Lucrarea 18 Rezolvarea ecuatiilor diferentiale ordinare cu conditii initiale prin metoda Euler
18.1 Caracterizarea metodei

Metoda Euler este o metod elementar de integrare numeric a unei ecuatii diferentiale a a a cu conditii initiale de forma: dy = f (t, y) dt y(t0) = y0 pentru intervalul de denitie t0 t tmax . aceast metod, pentru evaluarea numeric a derivatei se utilizeaz aproximarea In a a a a obtinut prin retinerea primilor doi termeni din dezvoltarea serie Taylor a functiei y(t). a n Deoarece solutia numeric are pe ecare pas de timp variatie liniar, se spune c metoda a a a este de ordinul I.

18.2

Principiul metodei

Se consider urmtoarea ecuatie diferential de ordinul I: a a a dy = f (t, y) dt y(0) = y0 215

(18.1)

216 Capitolul 18. Rezolvarea ecuatiilor diferentiale ordinare cu conditii initiale prin metoda Euler

a crei solutie y(t) este o functie de timp denit pe intervalul [0, tmax ]. a a Rezolvarea numeric a ecuatiei (18.1) const evaluarea functiei y(t) nodurile a a n n 0 < t1 < t2 < . . . < tmax ale intervalului de denitie. Se alege un pas de integrare h, astfel at intervalul [0, tmax ] s e artit n pai egali: nc a mp n s h= tmax . n (18.2)

Nodurile intervalului de denitie sunt acest caz urmtoarele: n a t0 = 0; t1 = h; t2 = 2h; t3 = 3h; . . . ; tn = nh = tmax . Dezvoltarea serie Taylor a functiei y(t) la dreapta punctului ti = ih este: n y(ti + h) = yi + yih + yi h2 h3 + yi + ... 2 6 (18.3)

unde yi = y(ti) i yi = f (ti , yi). Dac se neglijeaz termenii de grad mai mare sau egal s a a cu 2, i se noteaz cu yi+1 solutia la momentul ti+1 = ti + h, atunci se face urmtoarea s a a aproximare: yi+1 = yi + hf (ti , yi ). (18.4) Aceast expresie reprezint formula explicit a metodei lui Euler. Pornind de la a a a conditia initial y0 , relatia (18.4) permite calculul succesiv al solutiei numerice y1 , y2 , . . . , yn , a toate nodurile retelei de discretizare. n Dezvoltarea serie Taylor a functiei y(t) la stnga punctului ti+1 = (i + 1)h este: n a y(ti+1 h) = yi+1 yi+1 h + yi+1 h2 h3 yi+1 + . . . 2 6 (18.5)

unde yi+1 = f (ti+1 , yi+1). Dac se neglijeaz (18.5) termenii de grad mai mare sau egal a a n cu 2 rezult urmtoarea aproximare: a a yi+1 = yi + hf (ti+1 , yi+1 ). (18.6)

Aceast expresie reprezint formula implicit a metodei lui Euler. Determinarea a a a solutiei numerice presupune acest caz rezolvarea la ecare pas de timp a ecuatiei (18.6). n

18.3

Pseudocodul metodei

Rezolvarea prin metoda explicit este descris de urmtorul pseudocod: a a a LMN, Draft din 30 septembrie 2011

18.3. Pseudocodul metodei

217

procedura euler exp (x0, xmax, y0, h, y) real x0, ; nod initial real xmax, ; nod nal real y0, ; conditia initial a real h, ; pasul de integrare tablou real y(n) ; vectorul solutiei numerice (indici de la 0) t = x0 y(0) = y0 n = (xmax - x0)/h ; numr de pai a s pentru i = 1, n ; evalueaz functia cele n noduri a n y(i) = y(i-1) + h func(t, y(i -1)) t=t+h retur Procedura are urmtorii parametri: a de intrare: x0 = limita inferioar a intervalului de integrare; a xmax = limita superioar a intervalului de integrare; a y0 = conditia initial; a h = pasul de integrare. de ieire: y(n) = vectorul solutie. s Procedura apeleaz functia func ce evalueaz functia f (t, y) din membrul drept al ecuatiei a a (18.1) pentru nodul i. Rezolvarea prin metoda implicit este descris de urmtorul pseudocod: a a a procedura euler imp (x0, xmax, y0, h, err, itmax, y) real x0, ; nodul initial real xmax, ; nod nal real y0, ; conditia initial a real h, ; pasul de integrare real err ; eroarea maxim admis a ntreg itmax ; nr. max. de iteratii tablou real y(N) ; vectorul solutiei t = x0 Document disponibil la http://mn.lmn.pub.ro

218 Capitolul 18. Rezolvarea ecuatiilor diferentiale ordinare cu conditii initiale prin metoda Euler

y(0) = y0 n = (xmax - x0)/h ; nr. de pai s pentru i = 1, n ; evalueaz functia cele n noduri a n 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 iteratii repet a yvechi = ynou ynou = y(i-1) + h func(t, yvechi) ; evaluare nou a j=j+1 eps = abs(yvechi - ynou) ; evaluare eroare pn cnd (abs(eps) err sau j > itmax) a a a y(i) = ynou retur Procedura are urmtorii parametri: a de intrare: x0 - limita inferioar a intervalului de integrare; a xmax - limita superioar a intervalului de integrare; a y0 - conditia initial; a h - pasul de integrare; err - eroarea maxim admis; a a itmax - nr. maxim de iteratii admis. de ieire: y(n) - vectorul solutiei numerice. s Procedura apeleaz functia func ce calculeaz valoarea functiei f (t, y) din membrul a a drept al ecuatiei (18.1) pentru nodul i. Metoda implementat pentru rezolvarea ecuatiei neliniare (18.6) este metoda iteratiei a simple, la care initializarea este fcut prin valori date de relatia explicit (18.4). a a a

LMN, Draft din 30 septembrie 2011

18.4. Analiza algoritmului

219

18.4

Analiza algoritmului

Efortul de calcul Deoarece durata evalurii functiei f (t, y) este general mult mai mare dect durata a n a efecturii ctorva a a nmultirii i adunri, timpul de calcul depinde de numrul de evaluri s a a a ale functiei f (t, y). metoda explicit se efectueaz n evaluri ale functiei f . In a a a cazul metodei implicite, aplicat pe aceeai retea de discretizare, timpul de calIn a s cul crete odat cu creterea preciziei de calcul dorite rezolvarea iterativ a ecuatiei s a s n a neliniare (18.6). Ciclul de iteratii corecteaz succesiv valoarea solutiei de la momentul a curent. Aceast tehnic bazat pe relatiile (18.4) i (18.6) se numete metoda predictiva a a s s corectiv. a Numrul de evaluri ale functiei f este majorat de nitmax. a a Deoarece metoda implicit are o stabilitate numeric superioar fat de metoda exa a a a plicit, pentru calculul solutiei numerice la un moment dat (de exemplu tmax ) cu o eroare a impus, trebuie folosit o retea de discretizare mai n cazul utilizrii metodei exa a a n a plicite, 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 locatii de memorie, ecare din ele ind scopul eliminrii acestui consum de memorie, solutia poate rezervat unui numr real. In a a a aat (sau salvat pe disc), imediat dup ce a fost calculat. s a a a a Cele dou variante ale metodei Euler (explicit i implicit), necesit practic acelai a a s a a s necesar de memorie. Analiza erorilor Pentru o ecuatie diferential simpl de forma: a a dy = ay dt y(0) = y0

(18.7)

se demonstreaz c eroarea de trunchiere cumulat dup k pai de integrare cu metoda a a a a s Euler explicit este: a epsk hy0 a2 tk exp(atk ) = 0(h), unde tk = hk, k = 1, iar epsk = |y(tk ) yk | este eroarea la pasul k. Document disponibil la http://mn.lmn.pub.ro

220 Capitolul 18. Rezolvarea ecuatiilor diferentiale ordinare cu conditii initiale prin metoda Euler

Pentru k = 1: eps1 y0 h2 a2 exp(ah) = 0(h2 ), unde eps1 este eroare local, efectuat dup un singur pas de integrare i care este cu un a a a s ordin mai mare dect eroarea global. a a Eroarea de trunchiere este cu att mai mic cu ct pasul de timp este mai mic. Pentru a a a a obtine aceeiai eroare de trunchiere, cazul metodei Euler explicite se impune alegerea s n unui pas de timp mai mic dect cazul metodei Euler implicite. a n cazul care se implementeaz metoda Euler pe un sistem de calcul care opereaz In n a a cu q cifre semnicative, eroarea de rotunjire, care se adaug erorii de trunchiere, este: a epsr = 10q+1 . ah

Datorit efectului de anulare prin scdere, eroarea de rotunjire este cu att mai mare a a a cu ct pasul h este mai mic. Prin urmare pasul de integrare poate sczut ( vederea a a n micorrii erorii de trunchiere) numai att timp ct eroarea de rotunjire rmne sucient s a a a a a de mic. Din acest punct de vedere se poate gsi un pas de integrare optim. a a

18.5

Chestiuni de studiat

1. Rezolvarea unor ecuatii diferentiale de ordinul 1; 2. Analiza experimental a erorilor i a timpului de calcul functie de pasul de intea s n grare i de eroarea impus; s a 3. Rezolvarea unei ecuatii diferentiale asociate unui circuit electric, de ordin I, excitat cu un impuls; 4. Implementarea algoritmului ntr-un limbaj de programare i testarea rutinei; s 5. Cutarea de informatii pe Internet. a

18.6

Mod de lucru

Pentru desfurarea lucrrii selectati optiunea Rezolvarea ecuatiilor diferentiale oras a dinare cu conditii initiale prim metoda Euler din meniul principal de lucrri. Aceasta are a ca urmare lansarea urmtorului meniu: a LMN, Draft din 30 septembrie 2011

18.6. Mod de lucru

221

Rezolvare ecuatie test Analiz erori a Analiz ecuatie a din care trebuie selectate succesiv optiunile.

18.6.1

Rezolvarea unor ecuatii diferentiale de ordin 1

Se selecteaz optiunea Rezolvare ecuatie test. Programul rezolv prin metoda Euler o a a ecuatie diferential de forma: a dy = ay + b dt y(0) = y0 (18.8)

unde y : [0, tmax ] IR. Aceast ecuatie se obtine din studiul regimului tranzitoriu pentru a urmtoarele circuite: a Condensator de capacitate C ce se ncarc de la o surs de tensiune continu E, a a a printr-un rezistor de rezistent R. a Descrcarea unui condensator arcat initial la tensiunea E pe un rezistor de a nc rezistent R. a Conform ecuatiilor lui Kirchho, tensiunea la bornele condensatorului ntr-un circuit serie RC excitat cu o surs cu t.e.m. E satisface relatia: a RC du +u = E dt u(0) = u0

unde u0 este tensiunea initial la bornele condensatorului. a Se vor determina, cele dou cazuri, expresiile analitice ale tensiunii la bornele conn a densatorului. Pentru R, C, E, cunoscute (de exemplu R = 100, C = 10F, E = 20 V) se vor introduce coecientii corespunztori ecuatia (18.8) i se vor compara gracele de variatie a n s a tensiunii la bornele condensatarului timp cu gracele obtinute pe baza expresiei n analitice gsite. a Document disponibil la http://mn.lmn.pub.ro

222 Capitolul 18. Rezolvarea ecuatiilor diferentiale ordinare cu conditii initiale prin metoda Euler

Comparatiile se vor face pentru diferiti pai de integrare: h = /10, h = , h = 2 , s unde = RC este constant de timp a circuitului. a Se va testa ecuatia i pentru valori negative ale lui R (de exemplu R = 100K). s Se vor comenta rezultatele.

18.6.2

Analiza experimental a erorilor i a timpului de calcul a s functie de pasul de integrare n

Se selecteaz optiunea Analiz erori. Prin aceast optiune, se apeleaz un program ce a a a a rezolv o ecuatie diferential simpl de forma: a a a dy = y dt y(0) = 1 pe domeniul [0, tmax ]. Programul necesit i introducerea erorii admisibile i numrului as s a maxim de iteratii necesar rezolvrii ecuatiei neliniare la ecare pas al metodei implicite. a Programul aeaz: s a eroarea local pentru primul pas de calcul pentru metodele explicit i implicit; a as a eroarea global pentru metodele explicit i implicit; a as a pentru metoda implicit se aeaz numrul maxim de iteratii necesare atingerii a s a a preciziei dorite. Se va alege tmax = 4 i se va rezolva ecuatia pentru diferiti pai de timp h = 2 , s s h = , h = /10, h = /100, h = /1000. Se vor reprezenta grac pe hrtie milimetric: a a variatia erorii locale i globale functie de h pentru metoda explicit; s n a variatia erorii locale i globale functie de h pentru metoda implicit, pentru o s n a eroare impus constant de rezolvare a ecuatiei neliniare a unui pas. a a variatia numrului mediu de iteratii necesar metodei implicite functie de eroarea a n impus rezolvrii ecuatiei neliniare, pentru h = /100.; a a Se vor compara cele dou metode din punct de vedere al efortului de calcul necesar a obtinerii unei erori globale impuse. LMN, Draft din 30 septembrie 2011

18.6. Mod de lucru

223

18.6.3

Rezolvarea unei ecuatii diferentiale caracteristice unui circuit electric de ordinul I

Se selecteaz optiunea Analiz ecuatie. acest fel se apeleaz un program ce rezolv o a a In a a ecuatie de forma: dy = y + f (t) dt y(0) = 0 unde: f (t) = (h(t) h(t t0 ))A exp(bt) cos(t + ), iar h(t) reprezint functia treapt unitate. Domeniul de integrare este [0, tmax ], iar pasul a a de integrare este h = tmax /100. Se introduc de la consol urmtorii parametri: a a tmax - intervalul de integrare; t0 - durata excitatiei; A - amplitudinea excitatiei; b - constanta de relaxare a excitatiei; - pulsatia excitatiei; - faza initial a excitatiei. a Se observ c: a a pentru b = 0, = 0 i = 0, excitatia este un impuls dreptunghiular de durat t0 , s a iar dac t0 tmax excitatia este constant; a a pentru A, b nenuli, = 0 i = 0, excitatia este un impuls cu variatie exponential; s a pentru b = 0, excitatia este armonic; a pentru b < 0, excitatia este oscilatorie amortizat; a pentru b > 0, excitatia este oscilatorie amplicat. a Se vor analiza toate aceste cazuri i se vor comenta rezultatele obtinute. s Document disponibil la http://mn.lmn.pub.ro

224 Capitolul 18. Rezolvarea ecuatiilor diferentiale ordinare cu conditii initiale prin metoda Euler

18.6.4

Implementarea algoritmului ntr-un limbaj de programare i testarea rutinei. s

Se va implementa o procedur proprie de rezvoltare a unei ecuatii diferentiale, prin a metoda Euler explicit. Se va scrie pseudocodul i se va implementa un program ce a s apeleaz procedura de la punctul anterior i rezolv ecuatia: a s a 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 pulsatiei , a conditiei initiale y(0), a limitei superioare a intervalului de a integrare i a pasului h. Solutia va aat alfanumeric pe ecran. s s a

18.6.5

Cutare de informatii pe Internet a

Se vor cuta pe Internet informatii (coduri) legate de rezolvarea ecuatiilor diferentiale a ordinare. Cuvinte cheie recomandate: ordinary dierential equations, Eulers method.

18.7
18.7.1 18.7.2

Exemple
Exemple rezolvate Exemple propuse

18.8

Probleme i s ntrebri a

1. Poate sczut orict de mult pasul de integrare vederea micorrii erorilor? a a n s a Justicati rspunsul. a 2. Cum este inuentat precizia metodei de precizia sistemului de calcul? a 3. Scrieti o ecuatie de forma: dy = f (t, y) dt y(0) = y0 LMN, Draft din 30 septembrie 2011

18.8. Probleme i ntrebri s a

225

pentru a descrie variatia curentului printr-o bobin cu inductivitate L i rezistent a s a R ce este conectat la o surs de t.e.m. continu de valoare E. Utilizati optiunea a a a Rezolvare ecuatie test pentru a o rezolva. 4. Dati exemple de categorii de circuite electrice ce se pot analiza cu metoda Euler. 5. Generati un algoritm care folosete metoda Euler pentru rezolvarea unor sisteme de s ecuatii diferentiale de ordinul I. 6. Generati un algoritm care modic automat pasul de integrare, pentru a mentine a eroarea global la o valoare impus cu un efort minim de calcul. a a 7. Scrieti un algoritm pentru calculul integralelor denite ale functiilor aplicnd metoda a Euler. 8. Analizati deosebirea dintre stabilitatea unei ecuatii diferentiale i stabilitatea ei s numeric. a 9. Imbuntiti algoritmul Euler considernd mai multi termeni din seria Taylor a a at a functiei y(t). n a 10. Scrieti o variant a algoritmului euler imp care rezolvarea ecuatiei neliniare s a se fac cu metoda Newton. a

Document disponibil la http://mn.lmn.pub.ro

226 Capitolul 18. Rezolvarea ecuatiilor diferentiale ordinare cu conditii initiale prin metoda Euler

Leonhard Euler

Born: 15 April 1707 in Basel, Switzerland Died: 18 Sept 1783 in St Petersburg, Russia http://www-gap.dcs.st-and.ac.uk/~history/Mathematicians/Euler.html

LMN, Draft din 30 septembrie 2011

Lucrarea 19 Analiza numeric a circuitelor a electrice regim tranzitoriu n

227

228

Capitolul 19. Analiza numeric a circuitelor electrice n regim tranzitoriu a

LMN, Draft din 30 septembrie 2011

Bibliograe i webograe s
[1] D. Ioan, I. Munteanu, B. Ionescu, M. Popescu, R. Popa, M. Lzrescu i G. Ciuprina. a a s Metode numerice ingineria electric . MATRIX ROM, Bucureti, Romnia, a doua n a s a ed., 1998. [2] W.H. Press, S.A. Teukolsky, W.T. Vetterling i B.P. Flannery. Numerical Recipes in s C, The Art of Scientic Computing, Second Edition. Cambridge University Press, 1992, http://www.nrbook.com/a/bookcpdf.php.

229