Sunteți pe pagina 1din 284

Mdlina Roxana Buneci

Metode Numerice - aspecte teoretice i practice

Editura Academica Brncui Trgu-Jiu, 2009

Mdlina Roxana Buneci

ISBN 978-973-144-289-1

Metode Numerice

CUPRINS
Prefa ........................................................................................................................7 I. No iuni introductive...............................................................................................9 I.1. Elemente de teoria erorilor ......................................................................9 I.2. Condi ionarea numeric. Factor de condi ionare....................................11 I.3. Stabilitatea algoritmilor..........................................................................14 I.4. Complexitatea algoritmilor.....................................................................15 II. Aproximarea numerelor reale...............................................................................17 II.1. Reprezentarea numerelor ntregi ntr-o baz.........................................21 II. 2. Reprezentarea numerelor reale ntr-o baz...........................................29 III. Reprezentarea informa iei n sistemele de calcul................................................29 III.1. Reprezentarea intern a numerelor ntregi...........................................29 III. 1.1. Reprezentarea intern a numerelor ntregi fr semn (pozitive)...........................................................................29 III.1.2. Reprezentarea intern a numerelor ntregi (cu semn)...........30 III. 2. Reprezentarea intern a numerelor reale................................35 III.2.1. Forma normalizat................................................................35 III.2.2. Reprezentarea n virgul mobil...........................................36 III.2.3. Standardul IEEE-754............................................................39 III.2.4. Aritmetica n virgul mobil.................................................45 IV. Rezolvarea sistemelor liniare..............................................................................53 IV.1. Elemente de analiz matriceal...........................................................53 IV. 2. Metode directe de rezolvare a sistemelor liniare................................61 IV.2.1. Metoda de eliminare Gauss ..................................................62 IV.2.2. Rezolvarea sistemelor liniare prin metoda de eliminare Gauss...................................................................................67

Mdlina Roxana Buneci

IV.2.3. Calculul determinantului unei matrice..................................70 IV.2.4. Calculul inversei unei matrice..............................................71 IV.3. Factorul de condi ionare al unei matrice..............................................74 IV.4. Metode iterative de rezolvare a sistemelor liniare...............................80 IV.4.1. Generalit i............................................................................80 IV.4.2. Metoda Jacobi.......................................................................83 IV.4.3. Metoda Gauss-Seidel............................................................87 V. Rezolvarea ecua iilor i sistemelor neliniare........................................................91 V. 1. Rezolvarea ecua iilor neliniare.............................................................91 V.1.1. Metoda bisec iei (metoda njumt irii intervalului)..............93 V.1.2. Metoda coardei.......................................................................96 V.1.3. Metoda tangentei.................................................................104 V. 2. Rezolvarea sistemelor neliniare.........................................................114 V.2.1. Metoda punctului fix............................................................116 V.2.2. Metoda Newton cazul m-dimensional..............................127 VI. Aproximarea func iilor.....................................................................................139 VI. 1. Polinoame de interpolare..................................................................139 VI.1.1. Defini ie. Eroarea de interpolare.........................................142 VI.1.2. Eroarea de interpolare n cazul nodurilor echidistante.......142 VI.1.3. Eroarea de interpolare n cazul nodurilor Cebev.............143 VI.1.4. Polinomul Lagrange de interpolare....................................144 VI.1.5. Polinomul Newton de interpolare de spe a I (ascendent)...161 VI.1.6. Polinomul Newton de interpolare de spe a a II-a (descendent).........................................................................166 VI.1.7. Polinomul Newton de interpolare cu diferen e divizate.....171 VI. 2. Metoda celor mai mici ptrate..........................................................175 VI.2.1. Caracterizarea elementelor de cea mai bun aproximare pe subspa ii Hilbert..................................................................175 VI.2.2. Aproximarea n medie prin metoda celor mai mici ptrate................................................................................178 VI.2.3. Limitri ale metodei celor mai mici ptrate........................186

Metode Numerice

VII. Derivarea numeric.........................................................................................189 VII.1. Formule de derivare aproximativ folosind dezvoltri n serie Taylor................................................................................189 VII.2. Extrapolare Richardson...................................................................205 VII.3. Metode de derivare numeric folosind interpolarea.........................206 VIII. Integrarea numeric........................................................................................209 VIII.1. Formula general de cuadratur numeric. Formula de cuadratur Newton-Cotes..................................................................................209 VIII.2. Formula dreptunghiurilor................................................................212 VIII.3. Formula trapezelor..........................................................................218 VIII.4. Formula lui Simson.........................................................................223 VIII.5. Algoritmul lui Romberg..................................................................224 VIII.6. Cuadratura Gauss............................................................................227 VIII.7. Formule pentru calculul aproximativ al unei integrale duble.........230 Anexa: Ini iere n Maple.........................................................................................235 A.1. Structura intern. Categorii de comenzi MAPLE...............................235 A.2. Operatori, constante i func ii predefinite n MAPLE. Expresii........238 A.3. Numere, iruri i identificatori............................................................243 A.4. Comenzi de calcul n MAPLE............................................................248 A.5. Reprezentri grafice n MAPLE..........................................................251 A.6. Structuri de date n MAPLE................................................................256 A.6.1 Expresii i func ii..................................................................256 A.6.2. Liste......................................................................................261 A.6.3. Mul imi.................................................................................262 A.6.4. Tablouri................................................................................264 A.7. Elemente de programare n MAPLE...................................................269 A.7.1 Atribuirea. Decizia. Structuri repetitive................................269 A.7. 2. Proceduri n MAPLE...........................................................274 Bibliografie.............................................................................................................279 Index........................................................................................................................281

Mdlina Roxana Buneci

Metode Numerice

PREFA
Analiza numeric are o istorie lung i bogat: Arhimede, Newton sau Gauss, spre exemplu, avnd contribu ii semnificative n acest domeniu. ns metodele numerice moderne, aa cum le folosim astzi, sunt caracterizate de sinergia dintre calculatoarele electronice programabile, analiza matematic, precum i oportunitatea i necesitatea de a rezolva probleme complexe din diverse domenii cum ar fi ingineria, medicina, economia sau tiin ele sociale. Dei a existat ntotdeauna o strns interac iune ntre matematic, pe de o parte i tiin e i tehnologie, pe de alt parte, aceast interac iune s-a intensificat n ultimele decenii. Creterea utilizrii metodelor numerice a fost cauzat nu numai de creterea performan ei calculatoarelor, ci i de mbunt irea algoritmilor. Cu toate c exist produse software performante pentru rezolvarea multor probleme matematice ntlnite n practic, cunoaterea i n elegerea metodelor numerice rmn esen iale pentru utilizarea inteligent a produselor software respective. Aceast carte reprezint o introducere n studiul metodelor numerice. n cele opt capitole ale acestei lucrri sunt prezentate no iuni i rezultate fundamentale ce in de aproximarea numerelor reale, reprezentarea informa iei n sistemele de calcul i aritmetica n virgula mobil, rezolvarea sistemelor liniare (prin metode directe i iterative), rezolvarea ecua iilor i sistemelor neliniare, aproximarea func iilor (prin polinoame de interpolare i metoda celor mai mici ptrate), derivarea i integrarea numeric. Sunt descrise cele mai utilizate metode numerice, aduse la o form algoritmic. n fiecare caz n parte sunt prezentate proceduri n MAPLE i se fac compara ii ntre datele de ieire ale procedurilor respective i rezultatele afiate de comenzile MAPLE destinate rezolvrii acelorai probleme. n multe situa ii, pentru a eviden ia erorile de rotunjire, se compar rezultatele ob inute utiliznd aritmetica virgulei mobile cu rezultatele ob inute folosind calculul simbolic.

Mdlina Roxana Buneci

Cartea de fa corespunde programei analitice a cursului de Metode Numerice (de la Ingineria Sistemelor, Ingineria Energetic i Inginerie Industrial licen ). n afar de destina ia ei direct de manual pentru studen ii facult ilor tehnice, cartea poate servi, pentru cei interesa i, ca punct de plecare n studiul mai aprofundat al metodelor numerice.

Numerical Methods - theoretical and practical aspects


Author: Mdlina Roxana Buneci Abstract. This book is an introduction to the study of numerical methods. In the eight chapters of this book are presented fundamental concepts and results related to approximating of real numbers, computing in floating point arithmetic, solving linear systems (by direct and iterative methods), solving equations and nonlinear systems, approximating functions (polynomial interpolation and the least squares method), approximating derivatives and quadrature rules. Theoretical as well as practical aspects are emphasized. The algorithms are implemented in MAPLE. These lecture notes were developed for a fourteen-week course the author has taught for first year students at System Engineering, Power Engineering and Industrial Engineering.

Metode Numerice

I. No iuni introductive
Metodele numerice reprezint tehnici prin care problemele matematice sunt reformulate astfel nct s fie rezolvate numai prin opera ii aritmetice. Prin trecerea de la infinit la finit, diferen ial la algebric, neliniar la liniar problemele complicate sunt nlocuite de probleme mai simple care au aceeai sau aproape aceeai solu ie. Astfel solu iile ob inute prin aplicarea metodelor numerice reprezint doar aproxima ii ale solu iilor problemelor originale, i deci implic erori.

I.1. Elemente de teoria erorilor


Sursele erorilor i clasificarea lor Se pot distinge trei tipuri de erori n cazul aplicrii de metode numerice pentru rezolvarea unei probleme: Erori provenite din simplificarea modelului fizic, pentru a fi descris ntrun model matematic; erori din msurtorile ini iale sau erori din calcule anterioare. Aceste tipuri de erori se numesc erori inerente. Erori datorate metodei utilizate-de exemplu, trunchierea unei serii infinite (mai precis aproximarea sumei unei serii printr-o sum par ial), sau considerarea unui termen cu un rang suficient de mare pentru a aproxima limita unui ir. Aceste erori sunt numite erori de metod sau erori de trunchiere. Erori datorate reprezentrii datelor i efecturii calculelor ntr-o aritmetic cu precizie limitat (de exemplu aritmetica virgulei mobile). Aceste erori se numesc erori de rotunjire.

Mdlina Roxana Buneci

Erorile inerente sunt anterioare aplicrii metodei numerice, iar erorile de trunchiere i de rotunjire apar n timpul calculului numeric. Erori absolute i erori relative Eroarea absolut = valoare aproximativ - valoare exact Eroarea relativ =
eroare absolut valoare exact

Din aceste defini ii se ob ine: Valoare aproximativ = (valoare exact )(1 + eroare relativ) Eroarea absolut nu ine seama de ordinul de mrime al valorilor comparate. De exemplu, o eroare n centimetri este mai important dac lungimea calculat este de 100 cm, dect dac este de 100 km. De aceea, eroarea relativ se raporteaz la valoarea real. Adesea eroarea relativ se exprim n procente:
eroare absolut valoare exact

. 100 %

De obicei valoarea exact nu este cunoscut. De aceea nici eroarea (absolut sau relativ) nu poate fi calculat, i doar se estimeaz valorile limit ale acesteia. Se utilizeaz majoran i pentru modulul erorii (sau norma erorii, dac se lucreaz ntr-un spa iu normat).

Erori ale datelor i erori de calcul Considerm urmtoarea problem tipic: calculul valorii unei func ii f:RR pentru un argument dat. Fie: x x* f* = valoarea de intrare exact = valoare de intrare aproximativ = func ia aproximativ de calcul f*(x*) - f(x) = (f*(x*) - f(x*)) - (f(x*) - f(x)) Deci
10

f(x) = rezultatul dorit Eroarea total este dat de:

Metode Numerice

Eroare total = eroare de calcul + eroare propagat a datelor, unde, Eroare de calcul = f*(x*) - f(x*) Eroare a datelor = x* - x. Algoritmul nu are nici un efect asupra erorii propagate a datelor.

Erori de trunchiere i erori de rotunjire Eroare de trunchiere = diferen a dintre rezultatul exact (pentru datele de intrare curente) i rezultatul furnizat de un algoritm dat utiliznd aritmetica exact. Eroare de rotunjire = diferen a dintre rezultatul produs de un algoritm dat utiliznd aritmetica exact i rezultatul produs de acelai algoritm aritmetic cu precizie limitat (de exemplu aritmetica virgulei mobile). Eroarea de calcul este suma dintre eroarea de trunchiere i eroarea de rotunjire, dar de obicei una dintre acestea predomin. De exemplu, dac aproximm derivata ntr-un punct prin
f (x + h ) f (x ) h h , unde M = sup f (t ) pentru t ntr-o 2

utiliznd o

f (x )

eroarea de trunchiere este dominat de M

vecintate a lui x (acesta rezult aplicnd formula lui Taylor de ordinul doi n x). Dac domin eroarea cu care se reprezint valorile lui f, atunci eroarea de rotunjire n formula de aproximare considerat este mrginit de total este mrginit de E(h) = M Avem E (h ) = 2 . Deci eroarea h

h 2 + . Studiem varia ia acestei func ii. 2 h

M 1 -2 2 i deci E (h ) = 0 <=> h = 2 . n plus, E 2 M >0, 2 M h

deci func ia are punct de minim n h = 2

. Ca urmare, eroarea total este M

minim pentru h 2

. Pentru valori mai mici ale lui h eroarea total crete din M
11

Mdlina Roxana Buneci

cauza creterii erorii de rotunjire, iar pentru valori mai mari ale lui h eroarea total crete din cauza creterii erorii de trunchiere.

Erori forward i erori backward


S presupunem c dorim s calculm y = f(x), unde f : R R, dar ob inem o valoare aproximativ y*.

Eroare forward absolut = y = y* - y Eroare forward relativ =

y*y y = . y y

Deseori eroarea y este dificil de estimat. Ideea analizei erorilor din punct de vedere a erorilor backward este urmtoarea: solu ia aproximativ y* este considerat solu ia exact a unei probleme cu datele ini iale modificate, mai precis se consider y* = f(x*), unde x* este o perturba ie a lui x.

Eroare backward absolut = x = x* - x, unde f(x) = y i f(x*) = y*. Eroare backward relativ =

x*x x = . x x

Solu ia aproximativ y* se consider "bun" dac este solu ie exact pentru o problem cu datele "uor" perturbate. De exemplu, dac aproximm este | y | =| y* - y | = | 2.2 - 2.23606| 0.03606 iar eroarea forward relativ este aproximativ 1.6 %. Pentru a calcula eroarea backward, observm c absolut este | x | =| x* - x | = | 4.84 - 5 | 0.16, iar eroarea backward relativ este aproximativ 3 %. 4.84 =2.2. Eroarea backward 5 prin y* = 2.2, eroarea forward absolut

12

Metode Numerice

I.2. Condi ionarea numeric. Factor de condi ionare.


Problema se numete bine condi ionat dac varia iile relative ale solu iei au acelai ordin de mrime cauzeaz. Problema este ru condi ionat dac modificrile relative care au loc n solu ie pot fi mult mai mari dect cele ale datelor de intrare. cu varia iile relative ale datelor de intrare ce le

Factorul de condi ionare (relativ) se definete prin:


cond =
variatia relativ a solutiei variatia relativ a datelor de intrare

S revenim la calculul y = f(x), unde f : R R. S presupunem c se ob ine valoarea aproximativ y*. Fie x* cu proprietatea c f(x*) = y*. Avem
f (x *) f (x ) f (x ) x * x x

cond =

y y = . x x

Problema este ru condi ionat, dac factorul de condi ionare cond >> 1. Factorul de condi ionare ac ioneaz ca un "factor de amplificare" legnd eroarea forward de eroarea backward: | eroarea relativ forward| = cond | eroarea relativ backward| De obicei factorul de condi ionare nu este cunoscut exact i poate varia n func ie de datele de intrare. De aceea se utilizeaz o estima ie margine superioar pentru cond. Deci | eroarea relativ forward | < cond | eroarea relativ backward |.

Considerm un exemplu de estimare pentru factorul de condi ionare. S presupunem c se evalueaz func ia diferen iabil f pentru data de intrare x i se ob ine valoarea aproximativ y* corespunznd valorii x* = x + x, (mai precis y* = f(x*)). Eroarea absolut forward este f(x + x) - f(x) f (x ) x

13

Mdlina Roxana Buneci

iar eroarea relativ forward este


f (x + x ) f (x ) f (x )x f (x ) f (x )

Factorul de condi ionare este


f (x )x xf (x ) f (x ) cond = . x f (x ) x

Factorul de condi ionare absolut se definete ca raportul dintre varia ia


solu iei i varia ia datelor de intrare. Factorul de condi ionare absolut ac ioneaz ca un "factor de amplificare" legnd eroarea absolut forward de eroarea absolut backward.

I.3. Stabilitatea algoritmilor


No iunea referitoare la algoritmi analoag condi ionrii numerice a problemelor este stabilitatea. Intuitiv vorbind, stabilitatea numeric a unui algoritm nseamn ca acesta este ct mai pu in sensibil la perturba iile din timpul calculului (erorile de rotunjire sau la alte incertitudini numerice care pot aprea n procesul de calcul). Se spune c un algoritm de rezolvare a unei probleme este

stabil dac rezultatul produs este solu ia exact a aceleai probleme cu datele "uor"
perturbate. n cazul algoritmilor stabili efectul erorii de calcul nu este mai puternic dect efectul erorii (mici) a datelor de intrare. Un algoritm instabil poate amplifica mult perturba iile date de erorile de calcul.

Acurate ea metodelor Acurate ea se refer la apropierea solu iei calculate de solu ia exact a
problemei. Stabilitatea algoritmului nu garanteaz acurate ea. Aceasta depinde n egal msur de buna condi ionare a problemei i de stabilitatea algoritmului.

14

Metode Numerice

Inacurate ea poate rezulta din aplicarea unui algoritm stabil unei probleme ru condi ionate, ca i din aplicarea unui algoritm instabil unei probleme bine condi ionate. Aplicarea (cu ajutorul calculatorului) unui algoritm stabil unei probleme bine condi ionat garanteaz ob inerea solu iei cu o precizie bun, n sensul c eroarea relativ a solu iei calculate fa de solu ia exact este de ordinul de mrime al erorilor de reprezentare a datelor n calculator.

I.4. Complexitatea algoritmilor


n evaluarea complexit ii unui algoritm se ine cont de dou aspecte

timpul necesar execu iei algoritmului (dat de numrul de opera ii elementare) spa iul de memorie necesitat de algoritm

n general nu este posibil s ob inem simultan un timp de execu ie mai scurt precum

i un necesar de spa iu de memorare mai mic. Progresele tehnologice din ultima


vreme impun drept criteriu primordial criteriul timp. Fie n numrul de date de intrare pentru un anumit algoritm (eventual considerm n egal cu numrul de loca ii de memorie necesare pentru memorarea datelor ini iale). Fie TS(n) timpul cerut de algoritm pentru un anumit set de n date de intrare S. Vom nota (n) timpul cerut de algoritm n cazul cel mai defavorabil, i.e.: (n) = sup {TS(n) : S este un set de date de intrare de dimensiune n } n general nu este posibil s determinm o formul pentru (n). n acelai timp ne intereseaz comportarea lui (n) pentru valori mari ale lui n. n acest sens introducem urmtoarele nota ii: (n) = O(f(n)) dac C > 0, n0 N cu (n) C f(n) n n0

Interpretare: are o cretere mai lent dect f


(n) = o(f(n)) dac lim
n

(n ) =0 f (n )

Interpretare: are o cretere strict mai lent dect f


(n) = (f(n)) dac C1, C2 > 0, n0N cu C1f(n) (n) C2f(n) n n0
15

Mdlina Roxana Buneci

Interpretare: are o cretere la fel de lent ca f


(n) ~ f(n) dac lim
(n) =1 n f ( n )

Interpretare: are o cretere la fel de lent ca f


(n) = (f(n)) dac f(n) = O((n)

Interpretare: f are o cretere mai lent dect


O i o se folosesc pentru a stabili marginile superioare ale timpului de execu ie, iar pentru limita inferioar a timpului de execu ie. Un algoritm se numete algoritm polinomial dac (n) = O(P(n)), unde este timpul cerut de algoritm, iar P este un polinom.

16

Metode Numerice

II. Aproximarea numerelor reale


II. 1. Reprezentarea numerelor ntregi ntr-o baz
Se numete baz un numr natural b N, b 2. Se numete sistem de

numera ie o mul ime de b simboluri distincte, corespunztoare mul imii primelor b


numere naturale: 0, 1,, b-1. Notm Sb = {ci : 0 i b-1 } mul imea acestor simboluri, numite cifre n baza b. De exemplu: S2 = {0, 1} S16 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} unde caracterele A, B, C, D, E, F corespund numerelor naturale 10, 11, 12, 13, 14, 15. n cele ce urmeaz fixm o baz b i notm B = {0, 1, , b-1 }
n

i Bk = B pentru orice k N. Fie mul imea An =

Bk
k =0

nzestrat cu ordinea

lexicografic. Reamintim c aceast rela ie de ordine se definete n felul urmtor:


(n, n-1, , 0 ) < (n, n-1, , 0 ) <=> exist k{0, 1, , n} astfel nct
k < k i i = i pentru i = k + 1, n .
def

Considerm func ia fn : An {0, 1, , bn+1-1 } definit prin fn(n, n-1, , 0) = nbn + n-1bn-1 + + 2b2 + 1b + 0. Demonstrm c func ia fn este bijectiv. Artm pentru nceput c fn este strict cresctoare, deci este injectiv. Apoi, innd cont c mul imile {0, 1, , bn+1-1} i An sunt mul imi finite cu acelai cardinal (numr de elemente) va rezulta c de fapt fn este o bijec ie. Fixm dou elemente din An, =(n, n-1, , 0 ) i = (n, n-1,
17

Mdlina Roxana Buneci

, 0 ), cu < . Deoarece < , rezult c exist k{0, 1, , n} astfel nct i =


i pentru i = k + 1, n i k < k (de unde rezult c k k - 1). Avem

fn(0, 1, , n) = nbn + n-1bn-1 + + k+1bk+1+ kbk +k-1bk-1+ + 1b + 0 = nbn + n-1bn-1 + + k+1bk+1 + kbk + k-1bk-1+ + 1b + 0
nbn + n-1bn-1 + + k+1bk+1+ (k -1)bk +(b -1)bk-1+ + (b-1)

= nbn + n-1bn-1 + + k+1bk+1+(k -1)bk +(b -1)(bk-1+ + b +1) = nbn + n-1bn-1 + + k+1bk+1+ kbk - bk + (b -1) = nbn + n-1bn-1 + + k+1bk+1+ kbk - 1
< nbn + n-1bn-1 + + k+1bk+1+ kbk fn()

bk 1 b 1

n consecin , < implic fn() < fn(), deci fn este strict cresctoare. Folosind bijectivitatea func iei fn demonstrm urmtoarea teorem:

Teorema 2.1. Fie b o baz (adic b N, b 2). Orice numr natural nenul x
poate fi scris n mod unic sub forma x = nbn + n-1bn-1 + + 2b2 + 1b + 0, cu n 0.

i 0, 1, ., n {0, 1, , b-1 }. Demonstra ie. Conform principiului multiplicativ al lui Arhimede, pentru
numr natural nenul x exist un numr natural n 1 astfel nct: bn x < bn+1. De aici rezult c exist un singur numr natural n 1 astfel nct x {0, 1, , bn+1-1 } - {0, 1, , bn-1 }. Deoarece x{0, 1, , bn+1-1 } i fn : An {0, 1, , bn+1-1 } este bijectiv, exist un unic element = (n, n-1, , 0 ) n An astfel nct x = fn () sau echivalent x = nbn + n-1bn-1 + + 2b2 + 1b + 0. Dac n ar fi nul, atunci x = n-1bn-1 + + 2b2 + 1b + 0
(b -1)bn-1 + + (b -1)b2 + (b -1)b + (b -1)

= (b -1) (bn-1 + b2 + b + 1)

18

Metode Numerice

= (b -1)
< bn,

bn 1 b 1

ceea ce contrazice alegerea lui n. Deci n 0. Dac ar exista dou reprezentri x = nbn + n-1bn-1 + + 2b2 + 1b + 0, cu n 0. = mbm + m-1bm-1 + + 2b2 + 1b + 0, cu m 0. cu 0, 1, ., n, 0, 1, ., m {0, 1, , b-1 }, atunci bn x < bn+1 i bm x < bm+1

i n consecin , n = m. Deoarece fn este injectiv i


fn(n, n-1, , 0 ) = fn(n, n-1, 0), avem (n, n-1, , 0 ) = (n, n-1, 0), i ca urmare reprezentarea x lui este unic.

Plecnd de la observa ia urmtoare x = nbn + n-1bn-1 + + 2b2 + 1b + 0 = ( ( (nb + n-1 )b + + 2)b + 1)b + 0 deducem faptul c reprezentarea sub forma din teorema 1 a unui numr natural nenul x se poate face prin mpr iri succesive la b i re inerea resturilor de la sfrit spre nceput: x = bq0 + 0, q0 = bq1 + 1, qn-1 = b qn + n, 0 0 < b, q0 0 0 1 < b, q1 0 0 n < b, qn = 0

Scrierea lui x sub forma din teorema 1 se numete reprezentarea lui x n baza b. Trecerea unui numr dintr-o baz n alta se numete conversie. Convenim s scriem baz n care este reprezentat un numr ca indice. De exemplu numrul 4710 se scrie n baza 2 astfel:

19

Mdlina Roxana Buneci

47 = 23 2 + 1 23 = 11 2 + 1 11 = 5 2 + 1 5= 22+1 2= 12+0 1= 02+1 Deci 4710 = 1011112. sau

47 46 1

2 23 22 1 2 11 10 1 2 5 4 1 2 2 2 0 2 1

Conversia de la baza b la baza 10 se face prin nsumarea puterilor lui b nmul ite cu cifrele din baza b corespunztoare. De exemplu, numrul 1278 i 1A816 se scriu n baza 10 astfel: 1278 = 7 80 + 2 81 + 1 82 = 8710 1A816 = 8 160 + A 161 + 1 162 = 8 160 + 10 161 + 1 162 = 42410. Conversia unui numr ntreg dintr-o baz b1 ntr-o baz b2 se face prin intermediul bazei 10. n cazul particular, n care baza b1 care este o putere a lui b2 sau invers, conversia se poate face i direct. Fie b1 = bk, cu k 1. Conversia de la baza b1 = bk la baza b corespunde dezvoltrii fiecrei cifre din reprezentare n echivalentul ei n baza b utiliznd k cifre (adugnd eventual zerouri n fa ). De exemplu, 1728 = 0011110102 = 11110102, deoarece 8 = 23 i 18 = 0012, 28 = 0102, 78 = 1112 4E16 = 010011102 = 10011102, deoarece 16 = 24 i 416 = 01002, E16 = 11102.

Conversia de la baza b la baza b1 = bk se realizeaz nlocuind de la dreapta


la stnga grupele de k cifre din baza b prin cifra n baza b1 corespunztoare. Dac numrul de cifre nu este multiplu de k se completeaz configura ia la stnga cu zerouri. De exemplu, 1 011 110 2 = 1368
1 3 6

1010 01112 = A716.


A 7

20

Metode Numerice

II. 2. Reprezentarea numerelor reale ntr-o baz


Pentru scrierea unui numr real i pozitiv n baza b considerm mul imea C = N*

Bk
k 1

cu Bk = {0, 1, , b-1 }, i func ia F : C (0, ) definit prin F(0, 1, , n, ) = 0 + Seria

b nn
n =1

b nn
n 1

este convergent, pentru c 0

n 1 (b-1) n i n b b

bn
n 1

este

convergent (fiind o serie geometric cu ra ia este corect definit.

1 pozitiv i subunitar). Deci F b

Teorema 2.2. Fie b o baz i F : C [0, ) func ia definit mai sus. Atunci
1. F este surjectiv 2. Pentru orice numr real x > 0 care nu este de forma n N* exist un unic C astfel nct F() = x. 3. Dac numrul real x > 0 este de forma

v cu vN i bn

v cu vN i n N* , atunci bn

exist dou elemente , C cu astfel nct F() = F() = x. n plus, dac C are proprietatea c F() = x, atunci = sau =

Demonstra ie. n cele ce urmeaz notm cu [y] partea ntreag a numrului


real y, adic cel mai mare numr ntreg mai mic sau egal cu y.

1. Considerm x (0, ) i construim C astfel nct F() = x. Pentru


orice n N, notm qn = [xbn]. Din defini ia pr ii ntregi rezult qn xbn < qn + 1, sau echivalent qn q q q 1 1 x < n + n , ceea ce implic 0 x - n < n i lim n = n n n n b n b b b b b

x. Pe de alt parte, nmul ind inegalitatea qn xbn < qn + 1 cu b i innd cont c [xbn+1] = qn+1, ob inem

21

Mdlina Roxana Buneci

bqn qn+1 < bqn + b 0 qn+1 - bqn < b Lum 0 = [x] i n = qn - b qn-1 pentru orice n 1. Evident 0 N i 0 n b-1. Demonstrm c F(0, 1, , n, ) = x. Pentru aceasta este suficient s demonstrm c sn =
n

n =0

b nn

= x. Considerm o sum par ial a acestei serii:

k = 0 + k k =0 b

q k bq k 1 = 0 + bk k =1

bk k
k =1

q k 1 q q q = 0 + n - 0 = n . n 0 k 1 b b b bn

Din lim

qn = x, rezult c lim sn = x. n bn

2. Fie x > 0 un numr real care nu este de forma

v cu vN i n N*. n b

Presupunem prin absurd c n afara elementului C construit anterior mai exist C astfel nct F()= x, sau echivalent
n n = x. Dac notm tn = k suma bn k n =0 k =0 b

par ial de ordin n a acestei serii, atunci tn x i x = k n k k b k + (b-1) k = n +1 b k =0

n =0

bn n

k =0

bk k

1 1 b 1 = tn + n . Deci = tn + (b-1) n +1 k b 1 b b k = n +1 b

tn x tn + Dar x nu poate fi egal cu tn +

1 . bn

1 v pentru c x nu este de forma n cu vN i n n b b 1 i tnbn xbn < tnbn + 1. n b


innd cont i de faptul suma par ial a

N*. n consecin tn x < tn +

c tnbn N, rezult c [xbn] = tnbn. Ca urmare tn = seriei

n k qn = k n b k =0 b

n 0

b nn

. Seriile

n 0

b nn

n0

bn n

avnd sumele par iale egale au termenii

generali egali i deci = .

22

Metode Numerice

3. Fie x > 0 un numr real de este de forma

v cu vN i n N*. Fie n0 cel n b


v0 . b n0
=

mai mic numr natural cu proprietatea c exist v0 natural astfel nct x = Utiliznd rela iile stabilite la punctul 1, ob inem q n 0 = [x b n 0 ] = x b n 0 = v0 i
q n0 b
n0 n0

k =0

b kk

v0 = x. Deci b n0

= (0, 1, , n 0 , 0,0, ).
Demonstrm c n 0 0. Presupunnd prin absurd c n 0 = 0, ar rezulta c x =
n 0 1 k =0

b kk

w0 ceea ce ar contrazice alegerea lui n0. Lund b n 0 1 = (0, 1, , n 0 -1, b -1, b -1, ).

ob inem n n0 k 1 b n = b k - b n0 + n =0 k =0

b 1 1 = x - n + (b-1) k b 0 k = n 0 +1 b

1 k k = n 0 +1 b

=x-

1 1 b + (b-1) n 0 +1 = x. n0 b 1 b b

Deci F() = x i . n continuare presupunem c exist C cu proprietatea c F() = x. Fie n un numr natural cu proprietatea c exist m > n astfel nct m < b-1. Atunci avem i < (b-1) i i = n +1 b

1 1 = n. i b i = n +1 b

innd cont de reprezentarea lui x sub forma x = xbn = bn

i , ob inem i i =0 b

i + bn bi i =0
n

b ii = i = n +1

b n i i + bn
i=0

i . i i = n +1 b

23

Mdlina Roxana Buneci


n

Numrul

b n i i
i=0

este natural, iar bn


k

i [0, 1). Deci i i = n +1 b

b n i i = [xbn]. Cu un
i =0

ra ionament similar, ob inem c aproape se ob ine 0 = [xb0] = 0

b k i i = [xbk] pentru orice k n. Din aproape n


i=0

1 = [xb1] - b[xb0] = 0b + 1 - b0 => 1 = 1


n n 1 i=0

n = [xbn] - b[xbn-1] = Exist dou cazuri posibile (i) (ii)

b n i i - b b n i i = n => n = n
i=0

Exist un numr natural N astfel nct n = b-1 oricare n N+1. Oricare ar fi N exist nN N+1 astfel nct n N b-1 (sau echivalent,

n N < b-1).
Presupunem c are loc cazul (i) i considerm N0 cel mai mic numr natural cu proprietatea indicat. Din cele demonstrate mai sus rezult c i = i pentru orice i N0 -1 (deoarece N 0 < (b-1)). Demonstrm c = . Avem x= n N0 k n = bk + n =0 b k =0

b 1 N0 k k = b k + (b-1) k =0 k = N 0 +1 b

1 k k = N 0 +1 b

N0 k 1 b 1 w = k + N = N . + (b-1) N +1 k k b 0 b 1 k =0 b b 0 b 0 k =0 b N0

i deci n0 N0. Presupunnd prin absurd c n0 < N0, se ob ine urmtoarea


contradic ie x =
k n0 k < k + k = n = x k k n k =0 b k =0 b n =0 b k = n 0 +1 b
n0

Utiliznd n continuarea egalitatea x = deci =.

n =0

b nn

n =0

b nn

, se ob ine N 0 = N 0 -1, i

Dac are loc cazul (ii), atunci evident n = n pentru orice n, i deci = .

24

Metode Numerice

Defini ie 2.3. Reprezentarea x =

n =0

b nn

n baza b a numrului real x > 0 se

numete periodic dac exist un numerele naturale N, p astfel nct t = t+p+1 pentru orice t N. n aceast situa ie se folosete urmtoarea nota ie x = 0, 12N-1(NN+1N+p).

Teorem 2.4. Fie b o baz (adic b N, b 2). Un numr real x > 0 este
ra ional dac i numai dac x admite o reprezentare periodic n baza b.

Demonstra ie. Presupunem c x admite reprezentarea periodic


x = 0, 12N-1(NN+1N+p). Atunci x=

n =0

b nn

N 1 n =0

b nn + b nn
n =0

1 1 1 1 + p +1 + 2( p+1) + ... + n ( p+1) + ... b b n=N b


N+p

N 1

n N+p n + n n n =0 b n=N b

b (p+1)n

N 1

n N + p n b p +1 + n p +1 , n b 1 n =0 b n=N b

de unde rezult c x este un numr ra ional.

i Reciproc s considerm un numr ra ional x = , cu i i j numere naturale, j j


0. Demonstrm c reprezentarea x = de forma

n =0

b nn

n baza b este periodic. Dac x este

v cu vN ne vom referi la acea reprezentare care are proprietatea c bn

oricare ar fi N exist nN N+1 astfel nct n N b-1. Atunci avem 0 = [x] i n = [xbn] - b[xbn-1], n 1,

i aa cum am observat n demonstra ia teoremei 2

b n i i = [xbn] pentru orice n.


i =0

Notm x0 = x, xn+1 = b(xn - n), n 0. Se observ c 0 = [x] = [x0]


25

Mdlina Roxana Buneci

1 + 0b = [xb] => 1 = [(x-0)b] = [x1] 2 + b1 + b20 = [xb2] => 2 = [((x-0)b - 1)b] = [(x1-1)b] = [x2]

i folosind un ra ionament prin induc ie ob ine n = [xn] pentru orice n 0.


inem cont c x = i i notm cu u0 restul mpr irii lui i la j, i cu un restul j bu n 1 j

mpr irii lui bun-1 la j pentru n 0. Ra ionnd prin induc ie ob inem c xn =

pentru orice n 1. Deoarece un reprezint restul unei mpr iri la j, un {0, 1,, j1} ceea ce arat c exist N i p naturale astfel nct uN = uN+p+1. De aici rezult xN = xN+p+1 i N = N+p+1. Mai departe avem xN+1 = b(xN - N) = b(xN+p+1 - N+p+1) = xN+p+2 i deci N+1 = N+p+2. Folosind un ra ionament prin induc ie dup t, se demonstreaz c N+t = N+p+1+t, t 0. n consecin , reprezentarea lui x este periodic.

Aa cum am observat n demonstra ia teoremei precedente, pentru scrierea unui numr real pozitiv x n baza b se procedeaz n felul urmtor. Se scrie x = [x] + {x}, 0 {x} < 1, unde prin [x] am notat partea ntreag a lui x, iar prin {x} partea frac ionar a lui x. Conversia numrului real pozitiv x de la baza 10 la baza b se face separat pentru partea ntreag (care este un numr ntreg) i partea frac ionar. Conversia pr ii frac ionare se face prin nmul iri repetate cu b, dup cum urmeaz: b {x} = x1 = [x1] +{x1}= 1 + {x1} b {x1} = x2 = [x2] +{x2}= 2 + {x2} b {xn-1} = xn = [xn] +{xn}= n + {xn} ceea ce nseamn c {x} se reprezint : {x}b = 0, 12 n n urma acestor nmul iri repetate, pot apare trei situa ii:

26

Metode Numerice

1. {xn}= 0, ceea ce determin ncheierea algoritmului; n aceast situa ie {x} se poate reprezenta exact prin 0, 12 n = corespunde cazului x = v cu vN i n N*). n b

b kk
k =1

(aceast situa ie

2. {xn} 0, dar se observ o periodicitate, adic una sau un grup de cifre care se repet ( aceast situa ie corespunde cazului x ra ional dar x orice vN i m N*). 3. {xn} 0, iar cifrele ob inute se succed fr a respecta vreo regul ( aceast situa ie corespunde cazului x ira ional). n aceast situa ie 0,12 n = k reprezint doar o aproxima ie pentru {x} n baza b. k k =1 b
n

v bm

pentru

Exemplu : S se reprezinte 5,125 n baza 2.


5,125 = 5 + 0,125 5 4 1 Deci 510 = 1012 0,125 2 = 0,25 = 0 + 0,25 0,25 2 = 0,5 0,5 2 = 1 = 0 + 0,5 =1+0 2 2 2 0 2 1

Deci 0,12510 = 0,0012. n consecin 5,12510 = 101,0012.

27

Mdlina Roxana Buneci

28

Metode Numerice

III. Reprezentarea informa iei n sistemele de calcul


III.1. Reprezentarea intern a numerelor ntregi
III. 1.1. Reprezentarea intern a numerelor ntregi fr semn (pozitive)

Reprezentarea n memoria unui calculator a numerelor ntregi depinde de lungimea cuvntului utilizat (numrul de bi i). Pentru a reprezenta un numr ntreg pozitiv pe k bi i se face conversia numrului respectiv la baza 2, iar configura ia binar ob inut se completeaz la stnga cu zerouri pn se ob in k cifre. Cel mai mare numr ntreg reprezentabil pe k bi i este 11 ...1 2 = 2
k ori

k-1

+2

k-2

2k 1 ++ 2 = = 2k 1 2 1
0

Deci pe k bi i se pot reprezenta numerele ntregi cuprinse ntre 0 i 2k 1, n total 2k numere.

Exemple:
k 8 bi i = 1 B (byte) 16 bi i = 2 B 32 bi i = 4 B Domeniul de valori 0255 0.65 535 0.2 147 483 647

Reprezentarea numrului 6210 pe k = 8 bi i se face astfel: 62 = 25 + 24 + 23 + 22 +2 = 1111102 = 001111102


29

Mdlina Roxana Buneci

7 00111110 3 E

0 3E (n hexazecimal)

n reprezentarea binar a numerelor, ponderile cifrelor binare cresc de la dreapta la stnga, numerotarea lor corespunznd puterilor cresctoare ale bazei de numera ie 2. Astfel, prima cifr binar din dreapta reprezint ponderea 20 i este bitul cel mai

pu in semnificativ. Primul bit din stnga este bitul cel mai semnificativ.
Notm cu rela ia de ordine lexicografic pe mul imea irurilor formate din 0 i 1,

de lungime k. Din punct de vedere al ordinii lexicografice, reprezentrile numerelor ntregi fr semn satisfac: 0 1 2k - 1 n consecin , rela ia de ordine lexicografic este compatibil cu rela ia de ordine numeric natural.

III.1.2. Reprezentarea intern a numerelor ntregi (cu semn)

Vom prezenta trei metode de codificare a numerelor ntregi cu semn:

cod direct (semn i valoare absolut) cod invers (complement fa de 1) cod complementar (complement fa de 2)

S presupunem c se rezerv k bi i pentru reprezentarea unui numr ntreg. Prin toate cele metode numerele ntregi pozitive se codific prin conversie n baza 2 pe k-1 bi i i completarea primului bit cu zero. Astfel, pentru k = 16 reprezentarea intern a numrului x = 7210 = 26 + 23 = 10010002 este :

0000 0000 01001000 0 0 4 8

0048 (n hexazecimal)

30

Metode Numerice

Mul imea numerelor ntregi nenegative reprezentabile pe k bi i (prin oricare din cele trei metode) este {0, 1, 2, ..., 2k-1-1} (deoarece primul bit este rezervat, iar reprezentarea se face doar pe restul de k-1 bi i). Prezentm mai departe modul n care se face codificarea numerelor ntregi negative prin fiecare din cele trei metode. Prin metoda semn i valoare (cod direct) se codific valoarea absolut a numrului ntreg negativ pe k-1 bi i i se completeaz primul bit cu 1. n consecin , mul imea numerelor ntregi negative care se pot reprezenta prin aceast metod este{-2k-1 + 1, -2k-1 + 2, ...., 0}. Aceast metod de reprezentare prezint unele inconveniente: zero are dou reprezentri distincte (000 i 100), ca +0 i 0 tabelele de adunare i nmul ire sunt complicate datorit bitului de semn care trebuie tratat separat. Din punct de vedere al ordinii lexicografice avem: +0 1 2k-1-1 -0 -1 -(2k-1-1) Deci rela ia de ordine lexicografic nu este compatibil cu rela ia natural. Pentru a ob ine codul invers: 1. se ob ine reprezentarea valorii absolute a numrului ntreg negativ pe k bi i 2. n reprezentarea ob inut (la pasul 1) se nlocuiete fiecare bit 0 cu 1 de ordine

i 1 cu 0
Mul imea numerelor ntregi cu semn care pot fi reprezentate prin aceast metod este acelai ca pentru metoda precedent : {-2k-1 + 1, -2k-1 + 2, ...., 0, 1, ...., 2k-1-1}. Dac notm cu x complementul fa de 1 al numrului x, atunci x + x = 11.... 1 2 = 2k - 1
k

31

Mdlina Roxana Buneci

n consecin , complementul fa de 1 poate fi folosit pe post de opus fa de opera ia de adunare. Din acest motiv opera iile aritmetice relativ la aceast reprezentare sunt avantajoase, deoarece opera ia de scdere se realizeaz prin adunarea complementului fa de 1. Un dezavantaj al acestei reprezentri este recunoaterea a dou zerouri (111 i 00..0). Din punct de vedere al ordinii lexicografice avem: +0 1 2k-1-1 -(2k-1-1) -(2k-1-2) -0 de ordine

Deci rela ia de ordine lexicografic nu este compatibil cu rela ia natural. Pentru a ob ine codul complementar: 1. se ob ine codul invers pe k bi i 2. se adun o unitate la valoarea ob inut (la pasul 1) Zero

admite o singur reprezentare prin aceast metod: ( 00...0 ).Mul imea


k

numerelor ntregi cu semn care pot fi reprezentate prin aceast metod este {-2k-1, -2k-1 + 2, ...., 0, 1, ...., 2k-1-1}. Dac x este complementul fa de doi al lui x, atunci x + x = 11.... 1 2 + 1 = 2k - 1 + 1 = 2k
k

i n cazul acestei reprezentri opera iile aritmetice sunt avantajoase, deoarece


opera ia de scdere se realizeaz prin adunarea complementului fa de 2. Din punct de vedere al ordinii lexicografice avem: +0 1 2k-1-1 -2k-1 -(2k-1-1) -(2k-1-2) -1 de ordine

Deci rela ia de ordine lexicografic nu este compatibil cu rela ia natural.

De exemplu, pentru k = 16, reprezentrile pentru x = -72 prin cele trei metode se
ob in dup cum urmeaz: 7210 = 10010002 =10010002
32

Metode Numerice

Cod direct (semn i valoare absolut)

10000000 01001000 1 0 4 8 Cod invers (complement fa de 1)

1048 (n hexazecimal)

11111111 10110111 F F B 7

FFB7 (n hexazecimal)

Cod complementar(complement fa de 2)

11111111 10111000 F F B 8

FFB8 (n hexazecimal)

(deoarece 11111111101101112 + 1 = 11111111101110002)

Urmtorul program n C pune n eviden reprezentarea n memorie a lui 72

i -72. Compilatorul folosit este Borland C++ 3.1.

#include <stdio.h> #include <conio.h> #include <math.h> void main(){ unsigned char x=72; signed char y=-72; clrscr(); printf("\n%u-->%04X\n%d-->%04X",x,x,y,y); getch(); }

Programul afiseaz

33

Mdlina Roxana Buneci

72 --> 0048 -72 --> FFB8

Observa ie: Se poate remarca faptul c primul bit din stnga (bitul cel mai
semnificativ) este ntotdeauna 0 pentru numerele pozitive i 1 pentru numerele negative i aceasta pentru fiecare din cele trei reprezentri. Acest bit se mai

numete bit de semn.


n tabelul de mai jos sunt reprezentate, prin cele trei metode, pe k = 16 bi i numere ntregi cu semn:

valoare zecimal 216-1= 32767 32766 1 +0 -0 -1 -32766 -32767 -32768= -216

cod direct (semn i cod indirect valoare absolut) 0111111=7FFF16 0111110=7FFE16 0000001=000116 0000000=000016 1000000=800016 1000001=000116 1111110=FFFE16 1111111=FFFF16 (compl. fa de 1) 0111111=7FFF16 0111110=7FFE16 0000001=000116 0000000=000016 1111111=FFFF16 1111110=FFFE16 1000001=800116 1000000=800016

cod complementar (compl. fa de 2) 0111111=7FFF16 0111110=7FFE16 0000001=000116 0000000=000016 0000000=000016 1111111=FFFF16 1000010=800216 1000001=800116 1000000=800016

34

Metode Numerice

III. 2. Reprezentarea intern a numerelor reale

III. 2.1. Forma normalizat

Fie N i b N, b 2. Se numete forma normalizat n baza b a numrului real nenul x, o reprezentare

x = m bE, unde

b = baza m = mantisa E = exponentul

cu 0,1b |m|b < 1b

1 |m| < 1 (ceea ce nseamn c mantisa este un numr b

subunitar cu prima cifr dup virgul n reprezentarea n baz b diferit de zero). Pentru a scrie numrul sub form normalizat trebuie gsite mantisa i exponentul. Considerm reprezentarea |x| =

n care are proprietatea c ar fi N n n =0 b

exist nN N+1 astfel nct n N b - 1. Reprezentm numrul ntreg 0 = bnn + bn-1n-1 + b1 + 0 n baza b. Astfel scrierea lui x n baza b este dat de xb = nn-110,12m Mantisa se ob ine deplasnd virgula n fa a primei cifre nenule ce apare n scrierea numrului (n baza b). Exponentul se ia egal cu numrul de pozi ii cu care s-a deplasat virgula precedat de semnul + dac deplasarea s-a fcut de la dreapta la stnga, i de semnul dac deplasarea s-a fcut de la stnga la dreapta. Astfel dac x este reprezentat n baza b sub forma xb = nn-110,12m, cu n 0, atunci forma normalizat este xb = 0, nn-11012m bn+1 dac x este reprezentat n baza b sub forma xb = 0, 12m, cu 1 0, atunci forma normalizat este xb = 0, 12m b0

35

Mdlina Roxana Buneci

dac x este reprezentat n baza b sub forma xb = 0,12 ii+1 m, cu 1= 2 = = i = 0 i i+1 0, atunci forma normalizat este xb = 0, i+1 m b-i.

Reprezentarea sub form normalizat a unui numr real x este unic.

III.2.2. Reprezentarea n virgul mobil


Una dintre cele mai rspndite reprezentri intern (n PC-uri) a numerelor reale este reprezentarea n virgul mobil. Reprezentarea n virgul mobil presupune existen a unei baze b (ntotdeauna presupus par) i a unei precizii p. Un numr n virgul mobil este un numr de forma (0 + p 1 1 2 + 2 ++ p 1 )bE, k {0, 1, ...b-1} pentru orice k = 0, p 1 , E Z. b b b

Mai precis, denumirea de numr n virgul mobil va fi utilizat pentru numerele reale care se reprezint exact sub forma de mai sus. n aceast reprezentare 0, 1, , p-1 se numesc cifre semnificative. Fiecrei reprezentri n virgul mobil i se asociaz dou numere ntregi, Emin i Emax, ce reprezint valorile limit permise pentru exponentul E (Emin E Emax). Tabelul de mai jos exemplific cei patru parametri (baza, precizia, valorile limit ale exponentului) ce caracterizeaz reprezentarea n virgul mobil n diverse sisteme Sistem IEEE single-precission IEEE double-precission Cray calculator HP mainframe IBM baza b 2 2 2 10 16 precizia p 24 53 48 12 6 Emin -126 -1022 -16383 -499 -64 Emax 127 1023 16384 499 63

36

Metode Numerice

Reprezentarea n virgul mobil se numete normalizat dac se impune condi ia ca cifra cea mai semnificativ 0 s fie nenul. Reprezentarea normalizat are urmtoarele avantaje: reprezentarea fiecrui numr este unic nu de pierd cifre pentru reprezentarea primele zerourilor de la dreapta virgulei n sistemele binare (corespunztoare bazei b =2) prima cifr poate s nu mai fie stocat (deoarece este ntotdeauna 1). Restric ia 0 0, face imposibil reprezentarea lui zero. O reprezentare natural a lui zero este 1,0 b E min 1 . Numrul de numere n virgul mobil normalizat este 2(b-1)bp-1(Emax - Emin +1). Cel mai mic numr pozitiv normalizat se noteaz UFL (underflow level) i este UFL = b
E min

Cel mai mare numr normalizat se noteaz OFL (overflow level) i este OFL = (b-1 + =b
E max +1

b 1 b 1 b 1 E + 2 ++ p 1 ) b max b b b
(1 -

1 ). bp

Ca urmare nu toate numerele reale sunt reprezentabile exact. Numerele prea mari pentru a fi reprezentate corespund unei depiri superioare de capacitate (overflow), iar numerele prea mici unei depiri inferioare de capacitate (underflow). Pentru a fi reprezentat un numr real x este aproximat cu un numr n virgul mobil pe care convenim s-l notm fl(x). Aproximarea lui x prin fl(x) poart numele de rotunjire, iar eroarea introdus de eroare de rotunjire. Exist mai multe modalit i pentru rotunjire:

trunchiere (rotunjire prin tiere): se re in primele p cifre din reprezentarea


normalizat a lui x = (0 + fl(x) = (0 + p 1 1 2 + 2 ++ p 1 + )bE; deci b b b p 1 1 2 + 2 ++ p 1 )bE. b b b

37

Mdlina Roxana Buneci

rotunjire la cel mai apropiat numr n virgul mobil (rotunjire la par):


fl(x) este cel mai apropiat numr n virgul mobil de x; n caz de egalitate (dac exist dou numere n virgul mobil egal deprtate de x) se consider acel numr n virgul mobil a crui ultim cifr este par.

Rotunjirea la par determin o acurate e mai mare a reprezentrii. Acurate ea sistemului n virgul mobil este caracterizat de aa numita precizie a mainii (sau

epsilon main), notat mach. Precizia a mainii este definit ca cel mai mic numr
pozitiv cu proprietatea c fl(1.+ ) > 1. Dac regula de rotunjire este trunchierea atunci mach = b1 - p, iar dac regula de rotunjire este rotunjirea la par atunci mach =

1 1- p b . 2

Eroarea relativ maxim cu care fl(x) aproximeaz x este dat de fl(x ) x mach. x Dei amndou sunt "mici", precizia mainii (mach) i cel mai mic numr pozitiv normalizat UFL (n reprezentare n virgul mobil fixat) nu trebuie confundate. De obicei Emin < -p i deci ntre ele exist rela ia 0 < UFL < mach < OFL. Fie x un numr real aproximat de fl(x) =(0 +

p 1 1 2 + 2 ++ p 1 )bE. b b b

Exponentul E poate lua att valori pozitive ct i valori negative. Cel mai adesea exponentul este decalat i reprezentat ca un numr ntreg pozitiv (fr semn). Aceasta deoarece ordinea lexicografic (stabilit ntre irurile de cifre din reprezentare) i ordinea natural sunt compatibile n cazul numerelor ntregi fr semn. n consecin , compararea exponen ilor (i a numerelor reale

38

Metode Numerice

corespunztoare) poate fi fcut eficient. Astfel reprezentarea intern a unui numr real x aproximat prin fl(x) = (0 +

p 1 1 2 + 2 ++ p 1 )bE se face sub forma b b b


01p-1

ed

unde s este semnul lui x (se completeaz cu 0 dac semnul este + i cu 1 dac semnul este -) iar ed este exponentul ob inut prin adunarea unui decalaj D la exponentul E: ed = E + D.

III.2.3. Standardul IEEE-754


IEEE este acronim pentru Institute of Electrical and Electronics Engineers, o organiza ie ce are drept principal scop elaborarea standardelor pentru produsele hardware i software. Standardul IEEE-754 se refer la aritmetica n virgul mobil n sistemele binare. Acest standard precizeaz formatul de reprezentare n memorie n simpl i dubl precizie a unui numr real. Reprezentarea se face n virgul mobil normalizat: x fl(x) = (1 + p 1 1 2 + 2 ++ p 1 )2E, p = 24, 53. 2 2 2

Sunt admise i aa numitele numere denormalizate ("denormalized floating-point

numbers"):
(0 + p 1 1 2 + 2 ++ p 1 )2E, p = 24, 53, 2 2 2

cu cel pu in una dintre cifrele binare 1, 2, , p-1 nenule. Standardul IEEE-754 definete dou valori speciale pentru situa ii excep ionale:

Inf, pe post de "infinit" ("infinity"), pentru rezultatul mpr irii unui numr
finit la zero.

NaN, pe post de "non-numr" ("not a number"), pentru rezultatul


urmtoarelor opera ii

39

Mdlina Roxana Buneci

 Adunare : Inf + (-Inf)  nmul ire: 0Inf  mpr ire: 0/0 sau Inf/Inf  Calculul restul mpr irii unui numr x la 0 sau a lui Inf la x  Calculul rdcinii ptrate
x pentru x < 0.

Scopul acestor valori este acela de a permite continuarea calculului. Un numr n virgul mobil (0 + conform IEEE-754 sub forma s ed 1p-1

p 1 1 2 + 2 ++ p 1 )2E se reprezint intern 2 2 2

unde pentru s se rezerv un bit ce se completeaz cu 0 dac numrul este pozitiv i cu 1 dac numrul este negativ, iar pentru exponentul decalat ed se rezerv k bi i (k=8, 11). Decalajul considerat este D = 2k-1 - 1, deci ed = E + 2k-1 -1, Pe k bi i se pot reprezenta ca numere ntregi fr semn 2k valori, de la 0 la 2k 1. Valorile 0 i 2k 1 sunt rezervate pentru numerele denormalizate i pentru valorile speciale Inf i Nan. Deci pentru un numr n virgul mobil normalizat trebuie ndeplinit condi ia 1 ed 2k-2. De aici rezult c -2k-1+2 E 2k-1-1. De exemplu, pe k = 8 bi i se pot reprezenta numere ntregi fr semn de la 0 la 255. Decalajul considerat este 27 - 1 = 127, deci exponentul E ia valori de la 126 la 127. Numrul de bi i rezerva i pentru exponent determin intervalul de numere reale reprezentabile n calculator. Numrul de bi i rezerva i pentru mantis determin precizia de reprezentare (gradul de detaliere) a numerelor. Reprezentarea (0 +

p 1 1 2 + 2 ++ p 1 )2E fiind normalizat, exist siguran a c 0 = 1, ceea ce 2 2 2


permite omiterea sa (bit ascuns) pentru creterea preciziei de reprezentare, dar complic prelucrarea informa iei. Formatele de reprezentare a numerelor n virgul mobil (conform standardului IEEE 754) sunt:

simpl precizie (single-precission) pe 32 de bi i:


40

Metode Numerice

1 bit pentru semnul mantisei 8 bi i pentru exponentul decalat (Emin = -126, Emax = 127) 23 bi i pentru mantis (p = 24, 0 = 1 se omite) 1 bit pentru semnul mantisei 11 bi i pentru exponentul decalat (Emin = -1022, Emax = 1023) 52 bi i pentru mantis (p = 53, 0 = 1 se omite)

dubl precizie (double-precission) pe 64 de bi i


Regula de rotunjire este rotunjirea la par. Deci pentru simpl precizie, mach = 2-24 10-7 (7 cifre zecimale semnificative). dubl precizie, mach = 2-53 10-16 (16 cifre zecimale semnificative).

Considerm o reprezentare n memorie, n simpl precizie: s e7e6e5e4e3e2e1e0 1 2 23 23 1 2 + 2 ++ 23 . Valoarea v 2 2 2

Fie ed = e0 + e12 + e222 + + e727 i m = reprezentat se determin dup cum urmeaz:

 dac 0 < ed < 255, atunci v = (-1)s(1 + m)2ed - 127.  dac ed = 0, k = 0 pentru orice k= 1,23 i s = 0, atunci v = 0.  dac ed = 0, k = 0 pentru orice k= 1,23 i s = 1, atunci v = - 0.  dac ed = 0 i exist k 0, atunci v = (-1)s m 2
denormalizat
- 126

; v este o valoare

 dac ed = 255, k = 0 pentru orice k= 1,23 i s = 0, atunci v = Inf.  dac ed = 255, k = 0 pentru orice k= 1,23 i s = 1, atunci v = -Inf.  dac ed = 255 i exist k 0, atunci v = NaN.
Fie reprezentarea n memorie, n dubl precizie: s e10e9 e0 1 2
41

52

Mdlina Roxana Buneci

Fie ed = e0 + e12 + e222 + + e10210 i m = reprezentat se determin dup cum urmeaz:

52 1 2 + 2 ++ 52 . Valoarea v 2 2 2

       Exemple:

dac 0 < ed < 2047, atunci v = (-1)s(1 + m)2ed - 1023. dac ed = 0, k = 0 pentru orice k= 1,52 i s = 0, atunci v = 0. dac ed = 0, k = 0 pentru orice k= 1,52 i s = 1, atunci v = - 0. dac ed = 0 i exist k 0, atunci v = (-1)s m 2 denormalizat dac ed = 2047, k = 0 pentru orice k= 1,52 i s = 0, atunci v = Inf. dac ed = 2047, k = 0 pentru orice k= 1,52 i s = 1, atunci v = -Inf. dac ed = 2047 i exist k 0, atunci v = NaN. - 27, 25 0,1 1,2
- 1022

; v este o valoare

S se reprezinte n simpl precizie numerele: 228,15 x = 228,15 x = 228 + 0,15

228 = 128 + 64 + 32 + 4 = 27 + 26 +25 +22 = 111001002 0,15 2 = 0,30 = 0 + 0,3 0,3 2 = 0,6 = 0 + 0,6 0,6 2 = 1,2 = 1 + 0,2 0,2 2 = 0,4 = 0 + 0,4 0,4 2 = 0,8 = 0 + 0,8 0,8 2 = 1,6 = 1 + 0,6 x = 11100100,00100110011001 Forma normalizat: x = 0,111001000010011001 28 = 1,11001000010011001 27 ed = 7 + 28-1 - 1 = 135, ed2 = 100001102 m = 11001000010011001100110 [011] (am omis primul bit =1, iar cei trei bi i din parantez sunt utiliza i pentru rotunjire la par)
42

Metode Numerice

fl(x) = 1, 11001000010011001100110 28 Reprezentare n virgul mobil, simpl precizie, (cu bit ascuns) pentru 228,15: 0 100 4 Deci hexazecimal. x = - 27, 25 |x| = 27 + 0,25 27 = 16 + 8 + 2 + 1 = 24 + 23 +21 +20 = 110112 0,25 = 2-2 = 0,012 x = 11011,01 Forma normalizat: x = 0,1101101 25 = 1,101101 24 ed = 4 + 28-1 -1 = 131, ed2 = 100000112 Reprezentare n virgul mobil, simpl precizie (cu bit ascuns) pentru 27,25: 11000001110110100000000000000000 C hexazecimal. x = 0,1 0,1 2 = 0,2 0,2 2 = 0,4 0,4 2 = 0,8 0,8 2 = 1,6 = 1 + 0,6 0,6 2 = 1,2 = 1 + 0,2 0,2 2 = 0,4 0,110 = 0, 00011001100110011 x = 0, 1100110011002-3 = 1,10011001100110011001100 1102-4 fl(x) =1, 10011001100110011001101 2-4 (dup cei 23 de bi i ai mantisei urmeaz 110, i deci rotunjirea se face prin adugarea unei unit i). 1 D A 0 0 0 0 Deci reprezentrii cu bit ascuns a lui -27,25 i corespunde C1DA0000 n 0011 0 110 3 6 0100 0010 4 2 0110 6 0110 0110 6 6

reprezentrii cu bit ascuns a lui 228,15 i corespunde 43642666 n

43

Mdlina Roxana Buneci

ed = - 4 + 28-1 -1 = 123 = 26 + 25 + 24 + 23 + 2 + 1 , ed2 = 11110112 Reprezentare n virgul mobil, simpl precizie (cu bit ascuns) pentru 0,1: 0 0 1 1 11 0 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 3 x = 1,2 1,2 = 1 + 0,2 0,2 2 = 0,4 0,4 2 = 0,8 0,8 2 = 1,6 = 1 + 0,6 0,6 2 = 1,2 = 1 + 0,2 0,2 2 = 0,4 x = 1, 0011001100110011 x = 1,00110011001100110011001 10020 fl(x) =1,00110011001100110011010 20 (dup cei 23 de bi i ai mantisei urmeaz 100, deci rotunjirea se face astfel nct ultimul bit s aib valoare par). ed = 0 + 28-1 -1 = 127 = 26 + 25 + 24 + 23 + 22 +2 +1 , ed2 = 11111112 Reprezentare n virgul mobil, simpl precizie (cu bit ascuns) pentru 1,2: 0 0 1 1 11 1 1 1 0 0 1 1 0 01 1 0 01 1 0 01 1 0 01 1 0 1 0 3 F 9 9 9 9 9 A Deci reprezentrii cu bit ascuns a lui 1,2 i corespunde 3F99999A n hexazecimal. Urmtorul program n C verific reprezentrile de mai sus.
#include <stdio.h> #include <conio.h> void main(){ long int *i; float f1=228.15,f2=-27.25, f3=0.1, f4=1.2; clrscr(); i=(long int*) &f1; 44

Deci reprezentrii cu bit ascuns a lui 0,1 i corespunde 3DCCCCCD n hexazecimal.

Metode Numerice printf("\nNumar in virgula mobila:%f\n\tFormat intern %08lX

(hexazecimal)",f1,*i); i=(long int*) &f2; printf("\nNumar in virgula mobila:%f\n\tFormat intern %08lX

(hexazecimal)",f2,*i); i=(long int*) &f3; printf("\nNumar in virgula mobila:%f\n\tFormat intern %08lX

(hexazecimal)",f3,*i); i=(long int*) &f4; printf("\nNumar in virgula mobila:%f\n\tFormat intern %08lX

(hexazecimal)",f4,*i); getch(); }

Programul afieaz
Numar in virgula mobila: 228.149994 Format intern 43642666 (hexazecimal) Numar in virgula mobila: -27.250000 Format intern C1DA0000 (hexazecimal) Numar in virgula mobila: 0.100000 Format intern 3DCCCCCD (hexazecimal) Numar in virgula mobila: 1.200000 Format intern 3F99999A (hexazecimal)

III.2.4. Aritmetica n virgul mobil


Din sec iunea precedent rezult c nu toate numerele reale pot fi reprezentate exact ntr-un sistem n virgul mobil. De asemenea n urma evalurii unei expresii ai crei operanzi sunt reprezentabili rezultatul ob inut nu este neaprat reprezentabil. n mod ideal x flop y = fl(x op y) unde op este un operator binar (+, - , *, /), iar flop desemneaz corespondentul operatorului respectiv n aritmetica n virgul mobil. Sistemele ce satisfac

45

Mdlina Roxana Buneci

standardul IEEE-754 ating acest ideal n situa ia n care x op y se gsete n intervalul de numere reale reprezentabile [UFL, OFL]. Depirea superioar de capacitate (overflow) cauzeaz de obicei probleme mai serioase dect depirea inferioar de capacitate (underflow), deoarece nu exist nici o aproxima ie bun pentru un numr real oarecare "mare". Un numr real foarte mic poate fi n mod rezonabil aproximat cu zero. Pe multe sisteme de calcul depirea superioar de capacitate este fatal, n timp ce n caz de depire inferioar de capacitate, numrul respectiv este asociat cu zero. Anumite legi ale aritmeticii reale nu sunt valabile ntr-un sistem n virgul mobil. Astfel adunarea i nmul irea n virgul mobil sunt comutative, dar nu asociative. De exemplu, dac este un numr pozitiv mai mic dect mach, dar mai mare dect mach/2, atunci (1 + ) + = 1, iar 1 + ( + ) > 1. Rezultatul unei opera ii n virgul mobil poate s fie semnificativ diferit fa de rezultatul aceleai opera ii n aritmetica exact. S considerm numrul real x =

1 . Se reprezint n baza 2, prin x = 0,0001100110011=1, 10


ceea ce introduce o eroarea de

100110011001100110011012-4. n simpl precizie este aproximat de fl(x) = 1, 100110011001100110011012-4, 0.000000000000000000000000011001100 n binar sau aproximativ 0.000000047 n zecimal. Programul n C de mai jos pune n eviden cum se propag aceast eroare prin nmul ire:
#include <stdio.h> #include <conio.h> void main(){ float f=1./10,z=10; int i; clrscr(); for(i=1;i<33;i*=2){ printf("\n0.1*10^%d-10^%d = %f ",i+1,i,f*(z*10)-z); z=z*z; }

46

Metode Numerice getch(); }

Programul afieaz
0.1*10^2 - 10^1 = 0.000000 0.1*10^3 - 10^2 = 0.000001 0.1*10^5 - 10^4 = 0.000149 0.1*10^9 - 10^8 = 1.490116 0.1*10^17 - 10^16 = 149011616.000000 0.1*10^33 - 10^32 = 1490116168828835360000000.000000

Membrul drept ar fi trebuit s fie 0, deoarece

1 10i+1 - 10i =0. 10

n cazul scderii a dou numere reale x i y, poate aprea urmtorul fenomen (catastrophic cancellation)

(fl(x ) fl(y )) fl(x y ) fl(x y )


aproximm sin(x) printr-o sum par ial a seriei
( 1)n (2n + 1)! x 2n +1

mach,

dac fl(x) este egal (sau foarte apropiat de) fl(y). n urmtorul program (n C)

n =0

Seria fiind alternant i convergent, o sum par ial de ordin n, aproximeaz suma seriei (i.e. sin(x)) cu o eroare absolut maxim de

2 n +1

(2n + 1)!

. Programul de mai jos

reprezint versiunea n C pentru calculul sumei care aproximeaz sin(x):

#include<stdio.h> #include<conio.h> #include<math.h> void main(){ float x,s,t,eps,x2; int i,n; clrscr(); printf("x=");scanf("%f",&x); printf("Eroarea=");scanf("%f",&eps); t=x;s=0;i=1; x2=x*x;

47

Mdlina Roxana Buneci while (fabs(t)>=eps){ s+=t;printf("\n%f",s); t=-t*(x2/(4*i*i+2*i)); i++; } printf("\nsin(%f) = %f",x,s); printf("\nsin(%f) = %f" ,x,sin(x)); getch(); }

Pentru x=2 i eroare 10-7 se ob ine aproxima ia 0.909297 corect a lui sin(2). Pentru x = 40 i eroare 10-7 se ob ine aproxima ia 523443136.0 a lui sin(40) ! Valoarea corect este 0.745113Acest rezultat se datoreaz fenomenului de reducere (catastrophic cancellation). Pentru a eviden ia diferen ele ntre cazurile n care se lucreaz n aritmetica exact i cazurile n care se lucreaz n aritmetica n virgul mobil prezentm implementarea calculul sumei de mai sus (care aproximeaz sin(x)) n MAPLE.
> sinus:=proc(x,epsilon) > local t, x2, i,s; > s:=0; i:=1;t:=x;x2:=x*x; > while evalf(abs(t))>=evalf(epsilon) do > s:=s+t; t:=-t*x2/(4*i*i+2*i);i:=i+1 > od; > RETURN(s) > end;

Pentru x=2 i eroare 10-5 se ob ine aproxima ia


lui sin(2):
> sinus(2, 10^(-5));

141782 0.9092961362 corect a 155925

141782 155925
> evalf(sinus(2,10^(-5)));

0.9092961360
48

Metode Numerice > evalf(sin(2));

0.9092974268
> sinus(2., 10^(-5));

0.9092961362
> sin(2.);

0.9092974268 Atunci cnd primul parametru al procedurii sinus este ntreg (sau ra ional) toate calculele se execut simbolic, iar cnd parametru este n virgul mobil calculele se execut n virgul mobil. Pentru x = 30 i eroare 10-5 se ob ine:
> evalf(sinus(30,10^(-5)));

-0.9880298724
> evalf(sin(30));

-0.9880316241
> sinus(30., 10^(-5));

-13.41937809
> sin(30.);

-0.9880316241

Se observ c n cazul n care calculele se execut simbolic (parametru actual este dat ca numr ntreg) i evaluarea n virgul mobil se face doar asupra rezultatului, aproxima ia ob inut este -0.9880298724 pentru care 4 zecimale (5 cu rotunjire) coincid cu cea furnizat de func ia predefinit sin. ns n situa ia n care parametru actual este n virgul mobil i ca urmare calculele se execut n virgul mobil aproxima ia furnizat este -13.41937809 !!! Acest rezultat se datoreaz fenomenului de reducere (catastrophic cancellation). Urmtoarea procedur MAPLE evalueaz valoarea unui polinom ntr-un punct. Parametru p reprezint lista coeficien ilor polinomului (p[i] este coeficientul lui xi) iar x punctul n care se face evaluarea.
> val:=proc(p,x) > local n,i,v; > n:=nops(p);v:=p[n]; 49

Mdlina Roxana Buneci > for i from n-1 by -1 to 1 do v:=x*v+p[i] > od; > RETURN(v) > end;

Astfel
> val([1,2,1], 2);

9 calculeaz valoarea polinomului 1 + 2X + X2 n X = 2. S considerm polinomul (X-1)8 = 1 8X + 28X2 56X3 + 70X4 56X5 + 28X6 - 8X7 + X8). Reprezentarea grafic a acestui polinom pe intervalul [ 9999 ,1] este: 10000

> plot((x-1)^8, x=9999/10000..1);

Dac parametrii procedurii val sunt ntregi sau ra ionali i calculele se execut simbolic cu excep ia evalurii n virgul mobil a rezultatului se ob in urmtoarele valori ale polinomului pentru xi =

9999 i + , 1 i 10: 10000 100000

> for i from 0 to 10 do evalf(val([1,-8,28,-56,70,-56,28,-8,1],


9999/10000+i/100000)) od;

0.1000000000 10 -31

50

Metode Numerice

0.4304672100 10 -32 0.1677721600 10 -32 0.5764801000 10 -33 0.1679616000 10 -33 0.3906250000 10 -34 0.6553600000 10 -35
0.6561000000 10 -36

0.2560000000 10 -37 0.1000000000 10 -39 0. Aceeai procedur apelat cu aceeai parametrii, cu singura excep ie c punctele n care se calculeaz valorile sunt reprezentate n virgul mobil d rezultatele:
> for i from 0 to 10 do evalf(val([1,-8,28,-56,70,-56,28,-8,1],
0.9999+i/100000)) od;

0.
-0.1 10 -8

0.84 10 -8 -0.14 10 -7
-0.8 10 -8

-0.2 10 -8 -0.8 10 -8
-0.14 10 -7

0.84 10 -8 -0.1 10 -8 0. Erorile mari se datoreaz execu iei calculelor n aritmetica virgulei mobile. i mai sugestiv este graficul de mai jos:
> plot(val([1,-8,28,-56,70,-56,28,-8,1], x), x = 0.9999..1.);
51

Mdlina Roxana Buneci

sau cel ob inut utiliznd un numr mai mic de puncte:


> plot(val([1,-8,28,-56,70,-56,28,-8,1], x), x = 0.9999..1.,
numpoints=5);

52

Metode Numerice

IV. Rezolvarea sistemelor liniare


IV.1. Elemente de analiz matriceal
Fie V un spa iu vectorial (liniar) peste corpul K (K=R sau K=C). Reamintim o serie de defini ii i teoreme legate de spa iile normate i spa iile Hilbert. O norm pe V este o func ie p: V [0, ) care satisface urmtoarele condi ii: 1. p(x) = 0 dac i numai dac x = 0. 2. p(x +y) p(x) + p(y) pentru orice x i y V. 3. p(x) = || p(x) pentru orice K i orice x V. Perechea (V, p) se numete spa iu normat. n cele ce urmeaz vom nota p(x) = ||x|| pentru orice xV i vom spune c V este un spa iu normat n loc de (V, ||||), atunci cnd norma |||| se subn elege. Pe orice spa iu normat se poate defini o metric (distan ) canonic d prin d(x, y) = ||x - y|| pentru orice x, y V. Prin urmare oricrui spa iu normat i se pot asocia n mod canonic o structur metric i o structur topologic. Petru orice x0V i orice r >0 vom nota cu B(x0, r) bila din V centrat n x0 de raz r: B(x0, r) = {x V: || x - x0 || < r}. Pentru orice spa iu normat V (nzestrat cu structura metric i structura topologic asociate n mod canonic) sunt adevrate urmtoarele afirma ii: 1. irul (xn)n din V converge la xV dac i numai dac lim || xn - x || = 0
n

2. irul (xn)n din V este ir Cauchy (fundamental) dac i numai dac pentru orice

>0 exist n N astfel nct || xn - xm || < pentru orice m,n n.


3. || || : V [0, ) este o aplica ie continu

53

Mdlina Roxana Buneci

4. Func iile (x, y) x + y [: V V V] i (, x) x [: K V V] sunt continue (V V i K V sunt nzestrate cu topologia produs). O norm se numete complet dac metrica asociat ei este complet (i.e. dac orice ir Cauchy este convergent). Un spa iu normat se numete spa iu Banach dac norma cu care este nzestrat este complet. Normele p1 i p2 definite pe spa iul vectorial V se numesc echivalente dac topologiile asociate (n mod canonic) lor coincid. Pentru a desemna faptul c p1 i p2 sunt echivalente vom folosi nota ia p1 ~ p2. Se poate arta c normele p1 i p2 sunt echivalente dac i numai dac exist M, m >0 astfel nct m p1(x) p2(x) M p1(x) pentru orice x V. V se numete K algebr normat dac V este K algebr i n plus este nzestrat cu o norm |||| ce satisface urmtoarele dou propriet i: 1. (V, ||||) este spa iu normat 2. ||xy|| ||x|| ||y|| pentru orice x, y V, O algebr normat nzestrat cu o norm complet se numete algebr Banach. Fie V i W dou spa ii vectoriale peste corpul K (K=R sau K=C). O aplica ie f : V W se numete liniar dac i numai dac f(x + y) = f(x) +

f(y) pentru orice , K i x, y V. Dac f : V W este o aplica ie liniar, iar


V i W sunt spa ii normate, atunci urmtoarele afirma ii sunt echivalente: 1. f este continu 2. f este continu n origine 3. Exist M > 0 cu proprietatea c || f(x) || M||x || pentru orice xE. 4. sup ||f(x)||< .
x 1

5. sup ||f(x)||< .
x =1

Vom nota cu L(V, W) spa iul aplica iilor liniare i continue f : V W. Pentru orice f L(V, W), avem

sup ||f(x)|| = sup ||f(x)||= inf {M > 0 : || f(x) || M||x || pentru orice xV }.
x 1 x =1

54

Metode Numerice

Dac pentru orice f L(V, W), definim || f || = sup ||f(x)||, atunci (L(V, W), ||||)
x 1

devine un spa iu normat. Spa iul L(V, W) este denumit spa iul operatorilor liniari

i mrgini i defini i pe V cu valori n W, iar elementele din L(V, W) se mai numesc operatori liniari mrgini i. Spa iul operatorilor liniari i mrgini i L(V, W) este
spa iu Banach dac i numai dac W este spa iu Banach. Dac V este un spa iu normat iar pe spa iul L(V, V) introducem drept lege de "nmul ire" compunerea operatorilor, atunci L(V, V) devine o algebr normat. Dac V este un spa iu normat peste corpul K, atunci spa iul normat L(V, K) se numete dualul lui V i se noteaz V'. Fie H un spa iu vectorial peste corpul K (K=R sau K=C). Se numete

produs scalar pe H o aplica ie : H H K care are urmtoarele propriet i:


1. (x+y, z) = (x, z) + (y, z) pentru orice x, y, z H. 2. (x, y) = (x, y) pentru orice K i x H 3. (x, y) = (y, x ) pentru orice x, y H. 4. (x,x) > 0 pentru orice x 0. Vom nota (x,y) = <x, y> pentru orice x, y H. Se spune c norma spa iului normat (H, || ||) provine dint-un produs scalar <, > dac ||x|| =

x , x pentru

orice x din H. Un spa iu pre-Hilbert este un spa iu normat n care norma provine dintr-un produs scalar, iar un spa iu Hilbert este un spa iu prehilbert complet (cu norm complet). Dac H un spa iu prehilbert, atunci: 1. Dou elemente x i y din H se numesc ortogonale dac <x, y> =0. 2. Pentru A H i xH, x se spune ortogonal pe A i se noteaz xA, dac
<x,y>=0 pentru orice yA.

3. O familie (xi)i de elemente ale lui H se numete sistem ortogonal sau familie ortogonal dac <xi, xj> =0 pentru orice i j. 4. Un sistem ortogonal (xi)i se numete ortonormal dac ||xi|| = 1 pentru orice i. 5. Se numete baz ortonormal a spa iului Hilbert H un sistem ortonormal maximal (n raport cu rela ia de incluziune).

55

Mdlina Roxana Buneci

Dac H este un spa iu Hilbert i (xi)i este un sistem ortonormal, atunci urmtoarele afirma ii sunt echivalente: 1. (xi)i baz ortonormal 2. Dac xH i xxi pentru orice i, atunci x = 0. 3. Dac xH, atunci x =

x, x i x i .

4. Dac x, yH, atunci <x, y> = 5. Dac xH, atunci ||x|| =

x, x i x i , y .
2

x, x i

Orice dou baze ortonormale ale unui spa iu Hilbert au acelai cardinal.

Dimensiunea (hilbertian) a unui spa iu Hilbert este cardinalul unei baze


ortonormale. Dac F este un subspa iu al spa iului Hilbert H, atunci se noteaz cu F = {x, xF}

complementul ortogonal al lui F. Dac F este un subspa iu nchis, atunci H = F +


F (orice element din H poate fi reprezentat n mod unic ca suma dintre un element din F i unul din F). Se numete adjunctul operatorului liniar i mrginit A L(H1, H2) (unde H1, H2 sunt spa ii Hilbert) operatorul liniar i mrginit A* L(H2, H1)care satisface condi ia:
<A(x), y > =<x, A*(y) > pentru orice xH1, yH2.

Orice operator liniar i mrginit admite un unic adjunct. Dac H este un spa iu Hilbert i AL(H, H), atunci 1. A se numete autoadjunct (sau hermitian) dac A = A*. 2. A se numete unitar dac AA* = A*A =I. 3. A se numete pozitiv dac A este autodjunct i <A(x), x> 0 pentru orice x H. Considerm spa iul vectorial V = Kn(K=R sau K=C), nN*. Pe acest spa iu Banach orice dou norme sunt echivalente. Vom nota cu ||||, ||||1, ||||2 urmtoarele norme uzuale pe Kn:

56

Metode Numerice

||x|| = max |xj|


1 j n
n

||x||1 =

xj
j=1
2

n ||x||2 = x j j=1

1/ 2

pentru orice x = (x1, x2, , xn) Kn. Norma ||||2 se numete norm euclidian i provine din produsul scalar canonic
<x, y> =

xjyj
j=1

pentru x = (x1, x2, , xn) i y = (y1, y2, , yn)

(dac K = R, atunci <x, y> =

x j y j ).
j=1

Vom nota cu Mm,n(K) mul imea matricelor cu m linii i n coloane. Mm,n(K) are o structur de spa iu vectorial relativ la opera iile: adunare: A = (aij)i,j,B=(bij)i,j,C=(cij)i,j Mm,n(K), C = A+B dac i numai dac cij = aij + bij pentru orice 1im i 1jn. nmul ire cu scalari: A = (aij)i,j, C=(cij)i,j Mm,n(K), K. C = A dac i numai dac cij = aij pentru orice 1im i 1jn. Produsul AB a dou matrice A = (aij)i,j Mm,n(K) i B=(bij)i,j Mn,p(K) este o matrice C=(cij)i,j Mm,p(K) pentru care cij =

a ik b kj pentru orice 1im i 1jp.


k =1

Transpusa unei matrice A=(aij)i,j, este o matrice notat At = ( a it, j )i,j, ale crei
elemente sunt: a it, j = aj,i pentru orice 1in, 1jm.

Conjugata unei matrice A=(aij)i,j, este o matrice notat A* = ( a *, j )i,j, ale crei i
elemente sunt: a *, j = a j,i pentru orice 1in, 1jm. Conjugata este caracterizat i prin :
<Ax, y> = <x, A*y> pentru orice xKn i orice yKm.

O matrice pentru care m=n se numete ptratic. Elementul neutru la nmul ire n Mn,n(K) este matricea unitate In:
57

Mdlina Roxana Buneci

1 0 0

0 1 0

0 0 0

0 0 1

O matrice A Mn,n(K) este inversabil dac exist B Mn,n(K) astfel nct AB=BA=In. Inversa unei matrice A se noteaz A-1. Matricea A este inversabil dac

i numai dac det(A) 0 - n acest caz se zice nesingular.


Matricele pentru care A=At se numesc matrice simetrice, iar cele pentru care A=A* se numesc matrice hermitiene (evident, pentru matrice cu coeficien i reali cele dou no iuni coincid). O matrice A se zice ortogonal dac A-1 =At i unitar dac A-1 =A*. Matricea A este

diagonal dac aij=0 pentru orice ij


a1 A= 0 0 0 a2 0 b1 a2 0 0 b2 0 0 0 an 0 0 cn 0 0 an = diag(a1, a2,, an)

tridiagonal dac aij=0 pentru orice i,j cu |i-j|>1


a1 A= c2 0

   

superior triunghiular dac ai,j = 0 pentru orice i > j. inferior triunghiular dac ai,j = 0 pentru orice i < j. superior Hessenberg dac ai,j = 0 pentru orice i > j+1. inferior Hessenberg dac ai,j = 0 pentru orice i < j-1.

O matrice A Mm,n(K) poate fi tratat ca un vector din Knm: (a11, a12,, a1n, a21, a22, , a2n,, am1, am2, , amn). Datorit acestui fapt norma unei matrice poate fi introdus n mod similar cu norma unui vector din Knm. Pe de alt parte, se tie c exist un izomorfism de spa ii
58

Metode Numerice

liniare ntre Mm,n(K) i L(Kn, Km). Fiecrei matrice A = (ai,j)i,j i se asociaz operatorul liniar S(A) definit prin S(A)(x) = Ax = ( a ij x j )1im pentru orice x = (x1, x2, , xn)tKn.
j=1 n

n cele ce urmeaz vom identifica A cu S(A). Cele mai des utilizate norme de matrice sunt normele operatoriale: astfel pentru o matrice A Mm,n(K), dac pe Km se consider norma ||||, iar pe Kn se consider norma ||||, atunci se noteaz cu
||A|| norma de aplica ie liniar:

sup ||Ax|| = sup ||Ax||.


x 1 x =1

n cazul n care = se utilizeaz nota ia ||A|| = ||A|| i se spune c ||A|| este norma operatorial a lui A subordonat normei vectoriale ||||. Fie A Mn,n(C). Scalarul din C se numete valoare proprie pentru A dac exist vectorul nenul x Cn astfel nct: Ax= x Vectorul x se numete vector propriu asociat valorii proprii . Mul imea valorilor proprii ale lui A formeaz spectrul lui A i se noteaz cu (A). Raza spectral a lui A se definete prin:
(A) = max
( A )

Normele operatoriale pentru o matrice A Mn,n(C) subordonat normelor vectoriale ||||, ||||1, ||||2 sunt respectiv:
||A|| = ||A||1 = ||A||2 =

max a ij 1 i j=1 max a ij 1 j i =1


A*A .
n

Pentru orice matrice A Mn,n(C) i orice norma operatorial ||A|| subordonat unei normei vectoriale avem (A) ||A||. Dei norma ||A||2 este important din punct de vedere teoretic (corespunde distan ei euclidiene), n general, n aplica iile numerice

59

Mdlina Roxana Buneci

||A||2 nu este convenabil (fiind dificil de calculat). n locul ei se folosete norma

vectorial:
||A||F =

i , j=1

a ij

care nu este norm operatorial subordonat normei vectoriale deoarece ||In|| =

n 1. ntre cele dou norme exist rela ia:


||A||2 ||A||F.

Dac |||| este o norm operatorial pe Mn,n(C), atunci lim A k =0 dac i


k

numai dac (A) < 1. Fie <, > produsul scalar canonic pe Kn (K = R sau C). O matrice A Mn,n(K), K = R (respectiv, K = C) se numete

pozitiv definit dac este simetric (respectiv, hermitian) i dac


<Ax, x> > 0 pentru orice x0 din Kn.

negativ definit dac este simetric (respectiv, hermitian)i dac


<Ax, x> < 0 pentru orice x0 din Kn.

pozitiv semidefinit dac este simetric (respectiv, hermitian)i


dac

<Ax, x> 0 pentru orice x Kn.

negativ semidefinit dac este simetric (respectiv, hermitian)i


dac

<Ax, x> 0 pentru orice x Kn.


n cele ce urmeaz ne vom concentra asupra matricelor A Mn,n(R) simetrice. Pentru o astfel de matrice notm determinan ii situa i pe diagonala principal cu a11 a12 a22 a2k a1k a2k akk

a12 a1k

(k =1,2,n) i i numim minori principali.

60

Metode Numerice

O matrice A Mn,n(R) este pozitiv definit dac i numai dac este simetric i minorii principali k (k{1,2,n}) sunt to i pozitivi.

O matrice A Mn,n(R) este negativ definit dac i numai daceste simetric i minorii principali k (k{1,2,n}) respect urmtoarea alternan a semnelor:

1 < 0, 2 >0, 3 <0, 4 >0, ..., (-1)nn >0.

IV. 2. Metode directe de rezolvare a sistemelor liniare


Metodele de rezolvare a sistemelor liniare sunt clasificate n 1. Metode directe 2. Metode iterative

Metodele directe presupun ob inerea solu iilor exacte a sistemelor liniare dup
un numr finit de opera ii elementare. O metod direct este cu att mai bun cu ct numrul de opera ii elementare (adunare, nmul ire, mpr ire i rdcin ptrat) necesare este mai mic (numrul de opera ii executate influen eaz att timpul de execu ie ct i eroarea de rotunjire). Considerm sistemul cu n ecua ii i n necunoscute. Ax = b, AMn,n(R) nesingular. Deoarece A este nesingular sistemul admite solu ie unic, ce poate fi determinat cu regula lui Cramer: xi =

x i , 1 i n. Artm c aplicarea acestei metode este

nepractic (pentru n mare). ntr-adevr, aplicarea ei conduce la calculul a n+1 determinan i de ordinul n. Dar calculul unui determinat de ordinul n pentru o matrice C = (cij)1i,jn, innd cont de defini ie: det(C) =

( 1) (
Sn

c1(1)c 2( 2 ) ...c n( n )

revine la a calcula o sum de n! termeni (grupul Sn al permutrilor de ordinul n con ine n! elemente), fiecare termen fiind produsul a n factori. Deci pentru a aplica regula lui Cramer trebuie efectuate cel pu in Nop(n) = (n+1) n!n =(n+1)!n opera ii.

61

Mdlina Roxana Buneci

Deoarece n!> n (pentru n 1), rezult c Nop(n) > n e

nn

( n + 1)n +1 . De exemplu, dac


en +1

se utilizeaz un sistem de calcul ce execut 109 opera ii pe secund, atunci pentru rezolvarea unui sistem cu n ecua ii i n necunoscute timpii de execu ie sunt prezenta i n tabelul de mai jos n n=5 n=10 n = 15 n = 20 n = 25 n= 30 Timp de execu ie 0.5782433079 10-6 s 0.04765190154 s 31138.61350 s = 8.649614862 ore

> 2809 ani >1011 ani >1018 ani

Metodele directe urmresc transformarea sistemului de rezolvat ntr-un sistem echivalent a crui matrice este inferior triunghiular sau superior triunghiular, sistem ce se rezolv foarte uor. Prezentm n continuare algoritmul lui Gauss de transformarea matricei A ntr-o matrice superior triunghiular.

IV. 2.1. Metoda de eliminare Gauss


Se consider o matrice AMn,m(R). Eliminarea gaussian urmrete transformarea matricei A ntr-o matrice superior triunghiular S (o matrice cu proprietatea c bij = 0 pentru orice i<j). Trecerea de la matricea A la matricea S se realizeaz prin transformri elementare. La baza metodei st urmtorul procedeu:

prima linie este folosit pentru anularea coeficien ilor de pe prima coloan din celelalte n-1 linii. a doua linie este utilizat pentru anularea coeficien ilor de pe a doua coloan din ultimele n-2 linii, .a.m.d.

Trecerea de la un pas la altul se face aplicnd regula dreptunghiului (pivotului). Pentru a ob ine stabilitatea numeric a algoritmului, se alege drept
62

Metode Numerice

pivot de la pasul k elementul maxim n modul din coloana k subdiagonal a lui A, i se permut linia k cu linia pe care se gsete pivotul. Aceast strategie de permutare se numete pivotare par ial. Performan e de stabilitate numeric relativ mai bune se ob in dac se alege drept pivotul la pasul k elementul maxim n modul din submatricea delimitat de ultimele n-k linii, i se permut coloana k cu coloana pivotului i linia k cu linia pivotului. Aceast strategie de pivotare se numete

pivotare complet. Prezentm n continuare algoritmul de eliminare Gauss cu


pivotare par ial. Trecerea de la matricea A la matricea superior triunghiular se realizeaz n nmin pai, unde nmin = min{n,m}: A(0) A(1) A(k)A(k+1):

A(nmin),

unde A(nmin) are form superior triunghiular, iar A(0) =A. Pentru a se trece de la

(k) Se determin pivotul de la pasul k; acesta este primul element a k,i

de pe coloana k cu proprietatea

(k) (k) | a k,i |=max{| a k, j |, kjn}

Se permut liniile i cu k;

(k) Se aplic regula dreptunghiului (pivotului) cu pivotul a k,k . Astfel:


 elementele de pe linia pivotului se mpart la pivot:
a ( ki+1) k,

(k) a k,i = , i=k,k+1,m (k) a k,k

 elementele subdiagonale de pe coloana pivotului se nlocuiesc


cu 0.
k a (ik +1) =0, i= k+1, k+2,n

 elementele din submatricea delimitat de ultimele n-k linii i de


ultimele n-k coloane se transform cu regula dreptunghiului:

63

Mdlina Roxana Buneci

k
(k)

j
(k) (k)

k i

a k,k
a i,k
(k)

a k, j a i, j

a i,j a k,k a k,j a i,k k +1 a( j ) = , k+1 i n, k+1 j m. i, (k) a k,k n urma aplicrii acestui algoritm se ajunge la urmtoarea matrice superior triunghiular: 1 A(nmin)
=
( ) ( ) ( ) () ( ) a112 a113 a11n a11n +1 a11m , , , , ,

(k) (k)

(k) (k)

) ) ) ) 1 a (22,3 a (22n a (22,n +1 a (22,m ,


0 (dac m n). 0
) ) 0 1 a (nn,n +1 a (nn,m

Exemplu
Prin aplicarea procedurii de eliminare gaussian cu pivotare par ial asupra matricei A de mai jos ob inem: 1 A= 2 1 1 0 0 1/2 3/2 -7/2 2 1 -3 1/2 -1/2 3/2 0 1 2 L2 L3 1 0 1/2 3/2 L1 L2 2 1 1 1/2 3/2 -1/2 1 2 -3 1 0 2

0 -7/2

64

Metode Numerice

1/2 1 0

1/2 -3/7 1/7

1/2 1 0

1/2 -3/7 1

0 0

0 0

Urmtoarea procedur MAPLE are drept parametru o matrice A, i ntoarce matricea superior triunghiular ob inut prin aplicarea algoritmului de eliminare Gauss cu pivotare par ial asupra matricei A. Matricea a (locala procedurii) se ini ializeaz cu A, i fiecare din matricele intermediare A(k) sunt afiate.
> elimpp:=proc(A) > local a,n,m,nmin,i,j,k,aux; > m:=rowdim(A);n:=coldim(A); > if n<=m then nmin:=n else nmin:=m fi; > a:=matrix(m,n); > for i to m do for j to n do a[i,j]:=A[i,j] od od;

> for k to nmin do print(a); > i:=k;aux:=abs(a[k,k]); > for j from k+1 to m do > if abs(a[j,k])>aux then aux:=abs(a[j,k]);i:=j fi od; > if i>k then for j from k to n do > aux:=a[k,j];a[k,j]:=a[i,j];a[i,j]:=aux od; print(a) fi; > if a[k,k]<>0 then > for j from k+1 to n do a[k,j]:=a[k,j]/a[k,k] od; > a[k,k]:=1; > for i from k+1 to m do > for j from k+1 to n do a[i,j]:=a[i,j]-a[k,j]*a[i,k] od od; > for j from k+1 to m do a[j,k]:=0 od > fi od; > RETURN(evalm(a)) > end;

Exemple de utilizare a procedurii


> A:=matrix(3,3,[1,2,0,2,1,1,1,-3,2]);

65

Mdlina Roxana Buneci

1 2 A := 1
> elimpp(A);

2 1 -3
2 1 -3 1 2 -3 0 1 2 1 0 2

0 1 2

1 2 1 2 1 1

1 0 0 1 0 0 1 0 0

1 2 3 2 -7 2 1 2 -7 2 3 2 1 2 1 0

1 2 -1 2 3 2 1 2 3 2 -1 2 1 2 -3 7 1 7

1 0 0

1 2 1 0

1 2 -3 7 1 2 5 0

> A1:=matrix(3,2,[3,2,-1,5,2,0]);

3 A1 := -1 2
> elimpp(A1);

66

Metode Numerice

3 -1 2 1 0 0
1 0 0
> A2:=matrix(2,3,[1,-1,2,3,4,-2]);

2 5 0 2 3 17 3 -4 3
2 3 1 0

1 A2 := 3
> elimpp(A2);

-1 4
2 -2

2 -2

1 3 3 1

-1 4

4 -1

-2 2

1 0
1 0

4 3 -7 3
4 3 1

-2 3 8 3
-2 3 -8 7

IV.2.2. Rezolvarea sistemelor liniare prin metoda de eliminare Gauss


Considerm sistemul cu n ecua ii i n necunoscute: Ax = b, AMn,n(R) nesingular

67

Mdlina Roxana Buneci

Pentru rezolvarea acestui sistem vom aplica algoritmul de eliminare Gauss cu pivotarea par ial asupra matricei extinse A = (A | b ) . Vom nota elementele matricei A tot cu ai,j . Astfel ai,n+1= bi pentru orice i=1,2,..n. La primul pas algoritmul presupune eliminarea necunoscutei x1 din ultimele n-1 ecua ii. La al doilea pas se elimin necunoscuta x2 din ultimele n-2 ecua ii,

.a.m.d. n cazul acestui algoritm pentru fiecare k se efectueaz n+1-k + (n+1-k)(nk) = (n+1-k)2 opera ii elementare (prin opera ie elementar n elegnd aici o opera ie n virgul mobil de forma ax + b, sau o mpr ire) . Deci algoritmul necesit
n 1

Nop(n) =

2 ( n + 1 k ) = j2 =

k =1

j= 2

n ( n + 1)( 2n + 1) -1 6

opera ii elementare. Deci Nop(n) ~

n3 (sau Nop(n) O(n3) ). 3

Ca urmare a aplicrii algoritmului se ob ine sistemul echivalent: x1 +


( ) ( ) () a112 x2 + a113 x3 + a11n xn , , , () = a11n +1 ,

) x2 + a (22,3 x3+

) ) a (22n xn = a (22,n +1 ,

) xn = a (nn,n +1

Rezolvarea acestui sistem se poate face foarte uor de la sfrit spre nceput:
) xn = a (nn,n +1
) x i = a i(i,n +1

a i(,i )j x j
j=i +1

Procedura rezsist de mai jos ntoarce solu ia unui sistem liniar cu n ecua ii i n necunoscute. Parametri procedurii sunt matricea sistemului i vectorul termenilor liberi
> with(linalg): > rezlin:=proc(A,b) > local a,x,n,i,j,k,aux;

68

Metode Numerice > n:=rowdim(A); > a:=matrix(n,n+1); > for i to n do > for j to n do a[i,j]:=A[i,j] od; > a[i,n+1]:=b[i] od; > for k to n do i:=k;aux:=abs(a[k,k]); > for j from k+1 to n do > if abs(a[j,k])>aux then aux:=abs(a[j,k]);i:=j fi od; > if i>k then for j from k to n+1 do > aux:=a[k,j];a[k,j]:=a[i,j];a[i,j]:=aux od fi; > if a[k,k]=0 then print(`matrice singulara`);RETURN(NULL) fi; > for j from k+1 to n+1 do a[k,j]:=a[k,j]/a[k,k] od; > for i from k+1 to n do > for j from k+1 to n+1 do a[i,j]:=a[i,j]-a[k,j]*a[i,k] > od od; > od; > x:=vector(n);x[n]:=a[n,n+1]; > for i from n-1 by -1 to 1 do x[i]:=a[i,n+1]; > for j from i+1 to n do x[i]:=x[i]-a[i,j]*x[j] od od; > RETURN(evalm(x)) > end;

Utilizm procedura se mai sus pentru rezolvarea sistemului x1 + x1 -x1 x2 + x2 + x3 = 3 2x3 = 2

x2 + 3x3 = 1

> a1:=matrix(3,3,[1,1,1,1,-1,2,-1,-1,3]);

1 a1 := 1 -1
> b1:=vector(3,[3,2,1]);

1 -1 -1

1 2 3

b1 := [ 3, 2, 1 ]
> rezlin(a1,b1);

[ 1, 1 , 1 ]
> linsolve(a1,b1);

[ 1, 1 , 1 ]

69

Mdlina Roxana Buneci

Comanda MAPLE linsolve(A,b) din pachetul linalg ntoarce solu ia sistemului Ax = b.

IV.2.3. Calculul determinantului unei matrice


Pentru calculul determinantului unei matrice AMn,n(R) se poate folosi metoda de eliminare Gauss, inndu-se seama c determinantul unei matrice nu se modific dac asupra matricei se efectueaz transformri elementare. Determinantul
) este produsul elementelor a (k,k (nainte de mpr ire). Dac se folosete pivotare, k

trebuie avut n vedere faptul c prin permutarea a dou linii semnul determinantului se schimb. Procedura determinant de mai jos are drept parametru matricea i ntoarce determinantul. Pentru transformarea matricei A ntr-o matrice superior triunghiular se folosete algoritmul de eliminare Gauss cu pivotare par ial.
>determinant:=proc(A) >local a,n,i,j,k,d,aux; >n:=rowdim(A); >a:=matrix(n,n); >for i to n do >for j to n do a[i,j]:=A[i,j] od od; >d:=1; >for k to n do i:=k;aux:=abs(a[k,k]); >for j from k+1 to n do >if abs(a[j,k])>aux then aux:=abs(a[j,k]);i:=j fi od; >if i>k then d:=-d; for j from k to n do >aux:=a[k,j];a[k,j]:=a[i,j];a[i,j]:=aux od fi; >if a[k,k]=0 then d:=0;RETURN(d) fi; d:=d*a[k,k]; >for j from k+1 to n do a[k,j]:=a[k,j]/a[k,k] od; >for i from k+1 to n do >for j from k+1 to n do a[i,j]:=a[i,j]-a[k,j]*a[i,k] od od; >od; >RETURN(d) >end;

Exemplificm utilizarea procedurii de mai sus


> a2:=matrix(3,3,[1,1,1,1,8,3,12,1,2]);

70

Metode Numerice

1 a2 := 1 12
> determinant(a2);

1 8 1

1 3 2

-48
> det(a2);

-48 Comanda det(A) din pachetul linalg calculeaz determinantul matricei indicate drept parametru.

IV.2.4. Calculul inversei unei matrice


Fie AMn,n (R). Matricea A este inversabil dac i numai dac exist o matrice B Mn,n (R) astfel nct AB=BA=In, unde

1 In= 0 0 0

0 1 0

0 ---------- 0 0 ---------- 0 ---------- 1

---------------------------------------

Se tie c A este inversabil dac i numai dac are determinantul nenul. Notm: ek = (0,,0,1,00)t vectorul k al bazei canonice din Rn. Pentru fiecare k (k=1,2,,n) considerm sistemul Ax=ek. Solu ia acestui sistem reprezint chiar coloana k a matricei A-1. Astfel pentru aflarea lui A-1 este necesar s rezolvm n sisteme de ecua ii liniare Ax=ek, k=1,2,,n. Aceste sisteme pot fi rezolvate utiliznd algoritmul de eliminare al lui Gauss. Pentru a micora volumul de calcul vom aplica algoritmul asupra matricei ob inute prin concatenarea la matricea A a coloanelor bazei canonice din Rn. Coeficien ii matricei

A = (A|e1|e2|------|en)
sunt

71

Mdlina Roxana Buneci

aij, dac 1 i, j n ai,n+k = ik, dac 1 i, k n unde 1, i=k

ik=

0,

ik.

Prin aplicarea algoritmului de eliminare Gauss cu pivotare par ial asupra lui A se ob ine un ir de matrice A(0) A(1)
----

A(n),

unde A(0)= A, iar A(n) are urmtoarea form superior triunghiular: 1 A(n)= 0
( ) ( ) ( ) () ( ) a112 a113 a11n a11n +1 a112 n , , , , ,

) ) ) ) 1 a (23 a ( 2n a (22,n +1 a (22, 2n 2, 2,


0 0
) ) 0 1 a (nn,n +1 a (nn,2n

Dac B = A-1, atunci coeficien ii lui B pot fi determina i cu formulele:

) bn,k= a (nn, n + k , 1 k n ) bi,k= a i(,in + k - a i(,ij) bi, j , 1 i n-1, 1 k n

j= i +1

Procedura inversa de mai jos ntoarce inversa matricei indicat drept parametru.
> inversa := proc(A) > local n,a, b, i, j, k,aux; > n:=rowdim(A); > b := matrix(n, n); a := matrix(n, 2*n); > for i to n do for j to n do a[i, j] := A[i, j] od od; > for i to n do for j to n do a[i, j + n] := 0 od od; > for i to n do a[i, i + n] := 1 od;

72

Metode Numerice > for k to n do > aux := abs(a[k, k]);i := k; > for j from k + 1 to n do > if aux < abs(a[j, k]) then aux := abs(a[j, k]); i := j fi > od; > for j from k to 2*n do > aux := a[k, j]; a[k, j] := a[i, j]; a[i, j] := aux od; > if a[k, k] = 0 then print(`Matrice singulara`); > RETURN(NULL) fi;

> for j from k + 1 to 2*n do a[k, j] := a[k, j]/a[k, k] od; > for i from k + 1 to n do > for j from k + 1 to 2*n do > a[i, j] := a[i, j] - a[k, j]*a[i, k] od od; > od; > for i to n do b[n, i] := a[n, i + n] od; > for k to n do > for i from n - 1 by -1 to 1 do > b[i, k] := a[i, n + k]; > for j from i + 1 to n do > b[i, k] := b[i, k] - a[i, j]*b[j, k] od > od > od; > RETURN(evalm(b)) > end;

Calculul inversei matricei


1 1 1

1 2

2 1

3 2

se realizeaz cu ajutorul comenzilor


> a3:=matrix(3,3,[1,1,1,1,2,3,2,1,2]);

1 a3 := 1 2
> inversa(a3);

1 2 1

1 3 2

73

Mdlina Roxana Buneci

1 2 2 -3 2

-1 2 0 1 2

1 2 -1 1 2

Comanda inverse din pachetul linalg calculeaz de asemenea inversa unei matrice. n exemplul urmtor presupunem c o aplicm asupra aceleai matrice a3.
> inverse(a3);

1 2 2 -3 2

-1 2 0 1 2

1 2 -1 1 2

IV.3. Factorul de condi ionare al unei matrice


Defini ie 1. Factorul de condi ionare al unei matrice ptrate AMn,n(R) se
definete prin cond(A) = ||A|| ||A-1|| unde |||| este o norma operatorial a matricei A (de exemplu, ||||1 sau ||||). Prin conven ie cond(A) = dac A este singular. Se poate observa c
1

Ax Ax cond(A) = max min x 0 x x 0 x .


Factor de condi ionare cond(A) mare nseamn A aproape singular. Factorul de condi ionare cond(A) are urmtoarele propriet i

cond(A) 1 cond(In) = 1 pentru orice n 1 cond(A) = cond(A) pentru orice scalar 0

74

Metode Numerice
1

cond(D) = max i min i 1in 1in D=diag(1, 2, ..., n).

pentru orice matrice diagonal

Calcul valorii exacte a factorului de condi ionare al unei matrice A presupune calculul ||A-1||. Cum numrul de opera ii necesare pentru calculul normei inversei lui A (||A-1||) este mai mare dect cel pentru rezolvarea unui sistem liniar Ax = b, de obicei n practic se folosete un estimator pentru ||A-1||. Determinarea unei estima ii pentru ||A-1|| pleac de la observa ia c, dac Ax = y, atunci

x ||A-1||, y
i mrginea superioar a mul imii
x , Ax = y y este ||A-1|| i se atinge pentru o anumit valoare y. Comanda MAPLE cond(A) din pachetul linalg calculeaz factorul de condi ionare matricei A. Considerm sistemul Ax = b, cu A nesingular

i notm cu x* solu ia exact.


S presupunem c n locul matricei A este furnizat matricea A + E i ca urmare se rezolv sistemul (A+E) x = b, a crui solu ie o notm cu x . Atunci

(A+E) x = Ax*
E x = A(x*- x ). A-1E x =x*- x Atunci

||x*- x || = || A-1E x || || A-1|| || E|| || x || ,


de unde

75

Mdlina Roxana Buneci

x x* E cond(A) . x A
Deci factor de condi ionare mic i varia ii relative mici ale coeficien ilor matricei implic varia ii relative mici ale solu iei. Dac factorul de condi ionare cond(A) este mare, atunci rezolvarea sistemului Ax = b este o problem ru condi ionat. S presupunem acum c n locul vectorului termenilor liberi b este dat vectorul b i ca urmare se rezolv sistemul A x = b, a crui solu ie o notm cu x . Atunci

Ax = b- b + b A x = b - b + Ax* A(x*- x ) = b- b x*- x = A-1(b- b )


Atunci

Ax * ||x*- x || = || A-1(b- b )|| || A-1|| || (b- b )|| =|| A-1|| || (b- b )|| b
|| A ||
de unde
-1

bb b

||A|| ||x*||,

bb x x* cond(A) . x* b
Deci factor de condi ionare mic i varia ii relative mici ale termenilor liberi implic varia ii relative mici ale solu iei. Dac gradul de acurate e a datelor de intrare este compatibil cu precizia mainii mach, atunci

x x* cond(A)mach. x*

76

Metode Numerice

n urma calculului solu iei sistemului Ax = b se pot pierde pn la log10(cond(A)) cifre zecimale semnificative relativ la acurate ea datelor de intrare.

Interpretare geometric: n = 2: Ecua ii unui sistem liniar a crui matrice A


M2,2(R) pot fi interpretate ca ecua iile a dou drepte n plan, iar solu ia sistemului drept coordonatele punctului de intersec ie a celor dou drepte. Factor de condi ionare mare al matricei A nseamn c dreptele sunt aproape paralele.

problem bine condi ionat

problem ru condi ionat

Exemplu
Considerm sistemul Ax = b, unde A= 888.445 887.112 887.112 885.781

i
b= 1 0 Considerm urmtoarele comenzi MAPLE:
> with(linalg): > A:=matrix(2,2,[888.445,887.112,887.112,885.781]);

888.445 A := 887.112
885781/1000]);

887.112 885.781

> A1:=matrix(2,2,[888445/1000,887112/1000,887112/1000,

177689 200 A1 := 110889 125


> cond(A1);

110889 125 885781 1000

3152602660249

77

Mdlina Roxana Buneci > b:=vector([1,0]);

b := [ 1, 0 ]
> Digits:=6;

Digits := 6
> linsolve(A,b);

[ -499.248 , 500.000 ]
> Digits:=15;

Digits := 15
> linsolve(A,b);

[ 0.887555222890557 10 9, -0.888888888888889 10 9 ]
> Digits:=10;

Digits := 10
> linsolve(A,b);

[ 0.2496249066 10 7, -0.2500000000 10 7 ]
> linsolve(A1,b);

[ 885781000, -887112000 ] Dei matricele A i A1 sunt egale - diferen a este dat doar de reprezentarea coeficien ilor: simbolic (ca numere ra ionale) n cazul lui A1 i n virgul mobil n cazul lui A comenzile linsolve(A,b) i linsolve(A1,b) ntorc rezultate diferite. Solu ia corect a sistemului este cea ob inut n varianta n care s-a lucrat simbolic: x1 x2 = = 885781000 -887112000

Rezultatul eronat furnizat de comanda linsolve(A,b) se datoreaz relei condi ionri a matricei A. Se observ c factorul de condi ionare este:
0.315260266024900 10 13

Revenim la sistemul Ax = b, cu A nesingular

notm cu x* solu ia exact i cu x solu ia aproximativ. Vectorul


r = b - Ax se numete reziduu. Avem ||x*- x || = 0 ||r|| = 0, dar ||x*- x || i ||r|| nu sunt mici simultan. Avem

r = b - A x = Ax* - A x = A(x*- x )
78

Metode Numerice

A-1r = x* - x

|| x* - x || = ||A-1r|| ||A-1|| ||r|| =cond(A)


= cond(A) = cond(A) de unde rezult

1 ||r|| = || A ||

|| x* || || x* || ||r|| cond(A) ||r|| = || A |||| x* || || Ax* ||

|| x* || ||r||. || b ||

x * x r cond(A) x* b Ca urmare factor de condi ionare mic (problem bine condi ionat) i reziduu mic implic varia ii relative mici ale solu iei.

Exemplu
Considerm sistemul Ax = b, unde A= 1 1 1.001 1

i
b = 2.001 2 Evident solu ia corect a sistemului este x1 x2 y1 y2 se observ c b - Ay = 0.001 0 = = = 1 1 2 0

Dac se consider vectorul y

79

Mdlina Roxana Buneci

Deci y aparent verific sistemul, dei este diferit de x. Aceasta se datoreaz valorii factorului de condi ionare al lui A pe care-l putem determina folosind urmtoarele comenzi MAPLE:
> with(linalg): > A:=matrix(2,2,[1,1.001,1,1]);

1 A := 1
> cond(A);

1.001 1

4004.001000 Artm n continuare c dac reziduu este mare atunci varia ia relativ a

coeficien ilor matricei de intrare A este mare. S presupunem c x este solu ia


sistemului (A+E) x = b. Atunci (A+E) x = b

E x = b -A x Ex= r
de unde ||r|| = ||E x || ||E|| || x ||,

i ca urmare
|| E || || r || . || || A || || A |||| x n consecin dac a reziduu este mare atunci varia ia relativ a coeficien ilor matricei de intrare A este mare. Deci dac algoritmul de rezolvare a sistemului este stabil atunci reziduul relativ este mic indiferent dac problema este bine condi ionat sau nu.

IV.4. Metode iterative de rezolvare a sistemelor liniare


IV.4.1. Generalit i
Metodele iterative constau n construc ia unui ir (xk)k convergent ctre solu ia exact a sistemului. Oprirea procesului iterativ are loc la un indice m
80

Metode Numerice

determinat pe parcursul calculului n func ie de precizia impus astfel nct termenul xm s constituie o aproxima ie satisfctoare a solu iei cutate. Se consider sistemul liniar Ax = b, AMn,n(R) nesingular

i desfacerea matricei A definit prin A = N-P.


cu N o matrice inversabil. Fie x0 un vector arbitrar din Rn. Construim irul (xk)k folosind rela ia de recuren :

Nxk+1 = P xk + b, k 0.
Notm ek = x* xk eroarea absolut cu care xk aproximeaz x*, solu ia exact a sistemului Ax = b.

Teorem 4.1. Fie sistemul liniar Ax = b cu AMn,n(R) nesingular i fie A


= N-P o desfacere a matricei A (N Mn,n(R) matrice nesingukar). irul (xk)k definit prin Nxk+1 = P xk + b, k 0, x0 dat converge la solu ia exact a sistemului Ax = b oricare ar fi x0 dac i numai dac

(N-1P) < 1 ((N-1P) reprezint raza spectral a lui N-1P, i.e. maximum modulelor
valorilor proprii ale lui N-1P). Demonstra ie. Notm G = N-1P. Atunci ek+1 = x* xk+1 = x* - N-1(P xk + b) = x* - N-1P xk - N-1 b = x* - N-1P xk - N-1 Ax* = x* - N-1P xk - N-1 (N-P) x* = x* - N-1P xk - x* + N-1 P x* = N-1 P (x* - xk) = Gek. Ca urmare ek+1 = G ek = G G ek-1 = ...= Gk+1e0, pentru orice k 0. n consecin ,
k

lim x k = x* pentru orice termen ini ial x0 dac i numai dac lim G k e0 =0 pentru
k

81

Mdlina Roxana Buneci

orice e0, sau echivalent lim G k =0. Este cunoscut c lim G k =0 dac i numai
k k

dac (G) < 1.

Din demonstra ia teoremei anterioare a rezultat c dac G= N-1P i ek = x* xk, atunci ek = Gek-1 = Gke0 pentru orice k 0. N se alege astfel nct sistemul Nxk+1 = P xk + b, k 0. a crui solu ie este xk+1 s se rezolve uor de exemplu se alene N diagonal sau triunghiular n cazul metodelor concrete descrise n continuare se consider

desfacerea standard a matricei A = (ai,j)1i,jn definit prin: A=L+D+R


unde a1,1 0 D = diag(a1,1,a2,2,. an,n) = 0 0 0 L = 0 0 0 0 0 a2,2 0 0 0

.. 0 0 an,n 0 0

0 0 0 0

a2,1 0

.. an,1 an,2 an,3 an,n-1 0

0 a1,2 a1,3 a1,n-1 a1,n R = 0 0 a2,3 a2,n-1 a2,n .. 0 0 0 0 0

82

Metode Numerice

IV.4.2. Metoda Jacobi


Metoda Jacobi se caracterizeaz prin desfacerea

N = D, P = - (L+R)

1 0 a11 N-1 = 0 1

0 0

0 0 0 a 22 .. 0 0 0 0 1 a nn

1 0 a11 N P=
-1

0 0 1

-a1,2 -a1,3 -a1,n-1 -a1,n

a 22 .. 0 0 0 0

0 0

-a2,1 0 -a2,3 -a2,n-1 -a2,n


:......................................................

1 a nn

-an,1 -an,2 -an,3 -an,n-1 0

Dac G = N-1P, atunci coeficien ii matricei G = (gij)1i,jn sunt: 0, i = j gi,j =

a i, j a i ,i

, i j.

irul (xk)k definit prin


Nxk+1 = P xk + b, k 0, x0 dat converge la solu ia exact a sistemului Ax = b oricare ar fi x0 dac i numai dac

(G) < 1. Deoarece (G) ||G||, pentru orice norm operatorial |||| a lui G, avem

83

Mdlina Roxana Buneci

(G) min( G 1 , G

), i ca urmare pentru a asigura convergen a irului (xk)k este

suficient ca min( G 1 , G Calculm G 1 :

)<1.

G 1 = max{

g
i =1 n

i, j

,1 jn}

= max{
i =1 i j

a i, j a i ,i

, 1 jn}

Calculm G :
G

= max{ g i , j ,1 in}
j=1

= max{
j=1 j i

a i, j a i ,i

,1 in}.

Dac G 1 < 1 sau G <1, atunci (G) <1. Dar condi ia G <1 este echivalent cu

a
j=1 j i

a i, j
i ,i

< 1 pentru orice i, 1 in

| ai,i | > a i , j pentru orice i, 1 in


i =1 i j

caz n care spunem c A este diagonal dominant. Deci dac ai,i 0 pentru orice i = 1,2,, n, i dac A este diagonal dominant atunci irul ob inut prin metoda Jacobi converge la solu ia exact a sistemului Ax = b. Dac ek = x*- xk este eroarea absolut cu care xk aproximeaz x*, solu ia exact a sistemului Ax = b, atunci ek = Gke0 pentru orice k 0. n consecin , pentru orice norme compatibile
ek G k e0 G k e0 G
k

e0

Fie n1, = min( G 1 , G

) i fie > 0 dat. Vom considera xk este o aproxima ie

satisfctoare pentru solu ia exact a sistemului dac (n1,)k < .

84

Metode Numerice

ceea ce este echivalent cu ln ( ) k +1 . ln (n 1, )

irul (xk)k construit prin metoda Jacobi este definit prin


Nxk+1 = P xk + b, k 0, x0 dat xk+1 = N-1P xk + N-1 b, k 0, xk+1 = G xk + N-1 b, k 0, Deci pentru orice i, 1 i n,
k x i +1 = gi, jx k + j j=1 n
n n a i,j k bi b b xj + i . = gi, jx k - i = j a i,i j=1 a i,i j=1 a i,i a i,i ji ji

n consecin , irul (xk)k construit prin metoda Jacobi este: x0 dat


n 1 (bi - a i, jx k ), i =1,2,,n, k0. j a i,i j=1 ji

x ik +1 =

Urmtoarea procedur Maple are drept parametri matricea sistemului, vectorul termenilor liberi, aproxima ia ini ial x0 a solu iei, i eroarea epsilon. Procedura ntoarce aproxima ia xk (dat de metoda Jacobi) a solu iei cu k=
> with(linalg): > mjacobi:=proc(a,b,x0,epsilon) > local n,n1,ni,x1,x2,k,i,j,p,suma; > n:=vectdim(x0); > ni:=0; > for i to n do > suma:=0; > for j to i-1 do > suma:=suma+abs(a[i,j]) od; > for j from i+1 to n do > suma:=suma+abs(a[i,j]) od; > if a[i,i]=0 then print(`Metoda nu se aplica`); > RETURN(NULL) fi;

ln (eps ) +1 . ln (n 1, )

85

Mdlina Roxana Buneci > suma:=suma/abs(a[i,i]); > if ni<suma then ni:=suma fi; > od; > n1:=0; > for j to n do > suma:=0; > for i to j-1 do suma:=suma+abs(a[i,j]/a[i,i]) od;

> for i from j+1 to n do suma:=suma+abs(a[i,j]/a[i,i]) od; > if > od; > if ni>n1 then ni:=n1 fi; > if ni>=1 then print (`Metoda nu se aplica`); RETURN fi; > k:=floor(ln(epsilon)/ln(ni))+1; > x1:=vector(n); x2:=vector(n); > for i to n do x1[i]:=x0[i] od; > for p to k do > for i to n do > x2[i]:=b[i]; > for j to i-1 do > x2[i]:=x2[i]-a[i,j]*x1[j] od; > for j from i+1 to n do > x2[i]:=x2[i]-a[i,j]*x1[j] od; > x2[i]:=x2[i]/a[i,i]; od; > for i to n do x1[i]:=x2[i] od > od; > RETURN(evalm(x2)) > end; n1<suma then n1:=suma fi;

Utilizm aceast procedur pentru rezolvarea sistemului: 3 x1 + x2 + x1 + x3 = 4

5x2 + x3 = -2

-x1 + x2 + 8x3 = 14
> a:=matrix(3,3,[3,1,1,1,5,1,-1,1,8]);

3 a := 1 -1

1 5 1

1 1 8

86

Metode Numerice > b:=vector([4,-2,14]);

b := [ 4, -2, 14 ]
> linsolve(a,b);

[ 1, -1, 2 ]
> x0:=vector(3,[0,0,0.1]);

x0 := [ 0, 0, 0.1 ]
> mjacobi (a,b,x0,0.001);

[ 1.000000094 , -0.9999998188 , 1.999999921 ]


> x1:=vector(3,[0,1,2345]);

x1 := [ 0, 1, 2345 ]
> mjacobi (a,b,x1,10^(-3));

1919531, -8001171, 51199997 1920000 8000000 25600000


> map(evalf,mjacobi (a,b,x1,10^(-3)));

[ 0.9997557292 , -1.000146375 , 1.999999883 ]

IV.4.3. Metoda Gauss-Seidel


Metoda Gauss-Seidel corespunde desfacerii

N = L + D, P = -R. irul (x )k construit prin metoda Gauss-Seidel este definit prin


Nxk+1 = P xk + b, k 0, x0 dat
k

a1,1

0 0

0 0

0 0

k x1 +1

a2,1 a2,2 0

:..................................................

x k +1 2 x k +1 n

= Pxk + b

an,1 an,2 an,3 an,n-1 ann

Deci
k x1 +1 =

1 1 n 1 n ((Pxk)1 + b1) = ( P1, jx k + b1) = ( P1, jx k + b1) = j j a1,1 a1,1 j=1 a1,1 j=2

87

Mdlina Roxana Buneci


n 1 n 1 ( a1,jx k + b1) = (b1 - a1,jx k ) j j a1,1 j=2 a1,1 j= 2

i pentru orice i , 2 i n, avem

x ik +1 =
= =

i1 n i1 1 1 ((Pxk)i + bi - a i, jx k +1 ) = ( Pi, jx k + bi - a i, jx k +1 ) j j j a i,i a i,i j=1 j=1 j=1 n i1 1 ( Pi, jx k + bi - a i,jx k +1 ) j j a i,i j=i +1 j=1 n i1 1 ( a i, jx k + bi - a i,jx k +1 ) j j a i,i j=i +1 j=1 n i1 1 ( bi - a i, jx k - a i, jx k +1 ) j j a i,i j=i +1 j=1

n consecin , irul (xk)k construit prin metoda Gauss-Seidel este: x0 dat pentru k0,
k x1 +1 =

n 1 (b1 - a1, jx k ) j a1,1 j= 2 n i1 1 ( bi - a i,jx k - a i,jx k +1 ), i =2,3,,n j j a i,i j=i +1 j=1

x ik +1 =

Ca i n cazul metodei Jacobi dac A este diagonal dominant atunci irul ob inut prin metoda Gauss-Seidel converge la solu ia exact a sistemului Ax=b. De asemenea dac A este o matrice simetric i are elementele de pe diagonala principal pozitive, atunci metoda Gauss-Seidel converge dac i numai dac matricea A este pozitiv definit. Procedura Maple de mai jos are drept parametri, matricea sistemului presupus diagonal dominant, vectorul termenilor liberi, aproxima ia ini ial x0 a solu iei, i eroarea epsilon. Procedura ntoarce aproxima ia xk (dat de metoda Gauss Seidel) a solu iei cu

ln (epsilon ) +1 . k= ln N 1 P

88

Metode Numerice > with(linalg): > mgaussseidel := proc(a, b,x0, epsilon) > local n, ni, x1, k, i, j, p, suma; > n:=rowdim(a); > ni := 0; > for i to n do > suma := 0; > for j to i - 1 do suma := suma + abs(a[i, j])od; > for j from i + 1 to n do suma := suma + abs(a[i, j]) > od; > if a[i, i] = 0 then > print(`Metoda nu se aplica`); RETURN(NULL) fi; > suma := suma/abs(a[i, i]); > if ni < suma then ni := suma fi > od; > if 1 <= ni then > print(`Matricea nu este diagonal dominanta`); > RETURN (NULL) fi;

> k := floor(ln(epsilon)/ln(ni)) + 1; > x1 := vector(n); > for i to n do x1[i]:=x0[i] od; > for p to k do x1[1] := b[1]; > for j from 2 to n do > x1[1] := x1[1] - a[1, j]*x1[j] od; > x1[1] := x[1]/a[1, 1]; > for i from 2 to n do > x1[i] := b[i]; > for j from i + 1 to n do > x1[i] := x1[i] - a[i, j]*x1[j] od; > for j to i - 1 do x1[i] := x1[i] - a[i, j]*x1[j] od; > x1[i] := x1[i]/a[i, i] > od; > od; > RETURN(evalm(x1)) > end;

Utilizm aceast procedur pentru rezolvarea sistemului:

89

Mdlina Roxana Buneci

3 x1 + x2 + x1 +

x3 = 4

5x2 + x3 = -2

-x1 + x2 + 8x3 = 14
> a:=matrix(3,3,[3,1,1,1,5,1,-1,1,8]);

3 a := 1 -1
> linsolve(a,b);

1 5 1

1 1 8

[ 1, -1, 2 ]
> x0:=vector(3,[0,0,0.1]);

x0 := [ 0, 0, 0.1 ]
> mgaussseidel(a,b,x0,10^(-3));

[ 1.000000000 , -1.000000000 , 2.000000000 ]


> x1:=vector(3,[0,1,2345]);

x1 := [ 0, 1, 2345 ]
> mgaussseidel (a,b,x1,10^(-3));

1703893329976716088550034332273 , -170389332997668792871267240303 , 1703893329976655609856000000000 170389332997665560985600000000 9087431093208860851748902245101 4543715546604414959616000000000


> map(evalf,mgaussseidel(a,b,x1,10^(-3)));

[ 1.000000000 , -1.000000000 , 2.000000000 ] Metoda Gauss-Seidel care implic modificarea unei necunoscute la fiecare moment de timp este preferabil metodei Jacobi care implic modificarea tuturor necunoscutelor n acelai timp dac se dispune de un calculator serie obinuit. Metoda Jacobi este preferabil metodei Gauss Seidel c-se dispune de un calculator paralel.

90

Metode Numerice

V. Rezolvarea ecua iilor i sistemelor neliniare


V.1 Rezolvarea ecua iilor neliniare

Presupunem date a, bR, f: [a,b] R. Problema pe care o studiem este determinarea numerelor reale x[a,b] cu proprietatea c f(x) = 0. Numim un numr real x*[a,b] cu proprietatea c f(x*) = 0, solu ie (sau rdcin) a ecua iei f(x) = 0 sau zerou al func iei f pe intervalul [a,b]. Dac f : [a,b] R, este o func ie continu cu proprietatea c f(a)f(b) < 0. Atunci exist cel pu in o rdcin x* (a,b) a ecua iei f(x) = 0. Rdcina ecua iei f(x) = 0 nu este neaprat unic. Presupunem c f : [a,b] R este o func ie derivabil, x*(a,b) o rdcin a

ecua iei f(x) = 0 i x = x* + h o aproxima ie a lui x*. Aplicnd formula lui Taylor
rezult c f( x ) = f(x*) + f (x*)h + o(h), unde lim

o(h) =0. Ca urmare, h 0 h


f( x ) - f(x*) - o(h) = f (x*)( x -x*)

i
x -x* 1 (f( x ) - f(x*)). (x*) f 1 . Dac > 0 i f (x)

Deci factorul de condi ionare absolut al problemei f(x) = 0 este

x este un numr real cu proprietatea c |f( x )| atunci

91

Mdlina Roxana Buneci

| x - x*|

1 . f (x*)

(unde x* este o rdcin a ecua iei f(x) = 0). n general, | x -x*| i |f( x )| nu sunt simultan mici (| x -x*| este eroarea absolut cu care x aproximeaz x*, iar |f( x )|

indic reziduu corespunztor lui x ). Dac problema este bine condi ionat (
mic), atunci reziduu mic implic eroare absolut | x -x*| mic.

1 f (x*)

problem bine condi ionat

problem ru condi ionat

Metodele iterative de rezolvare a unei ecua ii f(x)=0 presupun construc ia unui

ir (xk)k convergent ctre o rdcin x* a ecua iei. Eroarea absolut cu care xk


aproximeaz x* este ek = x* - xk. Se spune c irul (xk)k converge cu rata r dac exist o constant C (0, ) astfel nct lim Dac

e k +1 ek
r

= C.

r = 1 i 0 < C<1, rata convergen ei se spune liniar r = 1 i C = 0 (sau r > 1), rata convergen ei se spune superliniar r = 2, rata convergen ei se spune ptratic

92

Metode Numerice

V.1. 1. Metoda bisec iei (metoda njumt irii intervalului)

Fie f : [a,b] R, o func ie continu cu proprietatea c f(a)f(b) < 0. Atunci exist cel pu in o rdcin x* (a,b) a ecua iei f(x)=0. Pentru gsirea rdcinii se micoreaz la fiecare pas intervalul n care func ia i schimb semnul. Metoda bisec iei presupune njumt irea la fiecare pas a acestui interval. Astfel

a+b al intervalului (a,b). 2

se determin mijlocul c =

dac f(c)f(a)<0, atunci se continu algoritmul cu intervalul [a,c] dac f(c)f(b)<0, atunci se continu algoritmul cu intervalul [c,b] dac f(c) =0 s-a determinat o rdcin a ecua iei f(x) = 0.

Se construiete astfel un ir de intervale (In)n , In = [an, bn], cu lungimea lui In egal cu jumtate din lungimea lui In-1. Fiecare din aceste intervale con ine o solu ie a ecua iei f(x) = 0. Presupunem c se d o precizie >0. Considerm c cn mijlocul intervalului In este o aproxima ie satisfctoare a solu iei ecua iei f(x) = 0 dac lungimea lui In este mai mic dect . Dac notm Ln = |bn - an| lungimea intervalului In, avem Ln = numai dac

1 1 1 Ln-1 = ... = n L0 = n |b-a|. Ca urmare Ln < dac i 2 2 2

ln ( b a ) 1 |b-a| < sau echivalent n > . n ln ( 2 ) 2

Algoritm
Date de intrare: f continu, a, b cu f(a)f(b)<0 (precizie) Date de ieire: c mijlocul intervalului In = [an, bn] cu | an-bn |< (c este o aproxima ie a unei rdcini x* (a,b) a ecua iei f(x) = 0 cu eroarea absolut |x*-c| <

). 2

93

Mdlina Roxana Buneci

ln ( b a ) nmax:= +1; ln ( 2 )

pentru j = 0, 1, ...., nmax execut


c: =
a+b ; 2

dac f(c) = 0 atunci j : = nmax +1 altfel dac f(c)f(a)<0 atunci b : = c; altfel a : = c;

Rata convergen ei pentru metoda bisec iei este liniar (r = 1, C =

1 ). 2

Procedur MAPLE
> bisectie:=proc(f,A,B,epsilon) > local c,a,b,nmax,j; > a:=A; b:=B; > nmax:=floor(ln(abs(b-a)/epsilon)/ln(2))+1; > for j from 0 to nmax do > c:=(a+b)/2; > if f(c)=0 then a:=c;b:=c;else > if evalf(f(c)*f(a))<0 then b:=c else a:=c fi fi > od; > c:=(a+b)/2; > RETURN(c) > end;

Utilizm aceast procedur pentru determinarea rdcinilor reale ecua iei: x8 3x-3 = 0. Reprezentm grafic func ia x->x8 3x-3 pentru a localiza rdcinile.
> with(plots): > plot(x^8-3*x-3,x,color=black);

94

Metode Numerice

> plot(x^8-3*x-3,x=-5..5,color=black);

> plot(x^8-3*x-3,x=-2..2,color=black);

> plot(x^8-3*x-3,x=-1.5..1.5,color=black);

95

Mdlina Roxana Buneci

Se observ c ecua ia are dou rdcini reale. Una n intervalul (-1.5, -0.5) i alta n intervalul (1,1.5).
> f:=(x-> x^8-3*x-3);

f := x x 8 3 x 3
> bisectie(f,1,3/2,10^(-3));

5207 4096
> evalf(bisectie(f,1,3/2,10^(-3)));

1.271240234
> bisectie(f,1,1.5,10^(-3));

1.271240234
> bisectie(f,-1.5,0,10^(-3));

-0.8801879883
> fsolve(f(x),x);

-0.8800582880 , 1.271068437
> evalf(bisectie(f,1,3/2,10^(-10)));

1.271068437
> evalf(bisectie(f,1,-3/2,10^(-10)));

-0.8800582880 Comanda MAPLE fsolve(f(x), x) ntoarce rdcinile ecua iei f(x) = 0.

V.1.2. Metoda coardei

Fie f : [a,b] R, o func ie continu cu proprietatea c f(a)f(b) < 0. Rdcina ecua iei f(x)=0 se caut ca i n cazul metodei bisec iei prin micorarea la fiecare pas a intervalului n care func ia i schimb semnul. Metoda coardei presupune urmtoarele:

se determin punctul c n care coarda AB intersecteaz axa Ox, unde A(a,f(a)) i B(b,f(b)). dac f(c)f(a)<0, atunci se continu algoritmul cu intervalul [a,c] dac f(c)f(b)<0, atunci se continu algoritmul cu intervalul [c,b]
96

Metode Numerice

dac f(c) =0 s-a determinat o rdcin a ecua iei f(x) = 0.

c1

c2

S determinm coordonatele punctului C de intersec ie a dreptei AB cu axa Ox, unde A(a,f(a)) i B(b,f(b)) . Ox: y = 0 AB:
xa y f (a ) = b a f (b ) f (a )

Dac C(c,0) =AB Ox, atunci c=aba f(a) f (b ) f (a )

Teorem 5.1. Fie f : [a, b] R o func ie de dou ori derivabil cu


propriet ile: f(x) 0, f(x) 0, oricare ar fi x [a, b] i f(a)f(b) < 0. Atunci unica solu ie a ecua iei f(x) = 0 poate fi ob inut ca limit a irului strict monoton din [a, b] definit prin: x0 = a, xn = xn-1 -

f (x n 1 ) (xn-1-b), dac f(a)f(a)<0 f (x n 1 ) f (b ) f (x n 1 ) (xn-1-a), dac f(b)f(b)<0 f (x n 1 ) f (a )

i
x0 = b, xn = xn-1 -

Dac m1 > 0, M1 > 0 sunt astfel nct m1 |f(x)| M1 i dac x* este unica solu ie a ecua iei f(x) = 0, atunci eroarea absolut cu care termenul xn aproximeaz x* satisface inegalit ile:

97

Mdlina Roxana Buneci

|x*-xn| |x*-xn|

f (x n ) m1 M 1 m1 x n x n 1 m1

Demonstra ie. Deoarece f (x) 0 pentru orice x [a, b], rezult c f este
fie strict pozitiv, fie strict negativ, deci f este strict monoton. innd cont i de faptul c f(a)f(b) < 0, rezult c ecua ia f(x) = 0 are o unic solu ie x*. Presupunem c f(a)f(a)< 0 i c f(a)< 0 (nlocuind eventual f cu f). Deoarece f(x) 0 pentru orice x [a, b] i f(a)>0, rezult c f este strict pozitiv. Din faptul c f este strict monoton i f(a) < 0 < f(b), rezult c f este strict pozitiv. Dac B este punctul de coordonate (b,f(b)) i Cn-1 punctul de coordonate (xn-1, f(xn-1)), atunci xn este abscisa punctului de intersec ie a coardei BCn-1 cu axa Ox. Ca urmare f(xn-1) < 0. Deoarece f este o func ie Rolle pe intervalul [xn-1, b], conform teoremei lui Lagrange exist dn-1 ( xn-1, b) astfel nct f(xn-1) f(b) = f (dn-1)(xn-1 b). Avem xn = xn-1 f ( x n 1 ) f (x n 1 ) (xn-1-b) = xn-1 > xn-1. f ( d n 1 ) f (x n 1 ) f (b )

Deci irul (xn)n este cresctor i mrginit (termenii irului apar in intervalului (a,x*)). Fie x limita irului (xn)n. Trecnd la limit n xn = xn-1 ob inem
f (x n 1 ) (xn-1-b) f (x n 1 ) f (b )

x= x -

f (x) ( x -b), f ( x ) f ( b)

de unde rezult f( x ) = 0. Deoarece x* este unica rdcin a ecua iei f(x) = 0 din intervalul (a, b) rezult c x* = x . Analog se arat c dac f(b)f(b)<0 irul definit prin x0 = b, xn = xn-1 este strict descresctor ctre x*.
f (x n 1 ) (xn-1-a) f (x n 1 ) f (a )

98

Metode Numerice

Conform teoremei lui Lagrange pentru orice x[a, b] exist dx ntre x i x* astfel nct f(x*) f(x) = (x* - x) f (dx). Ca urmare,

| f(xn)| = | f(x*) f(xn)| = |x* - xn| | f (dn)|,


de unde rezult c f ( xn ) f (dn )

|x* - xn| =

f (x n ) m1

Dac presupunem c f(a)f(a)<0 i xn = xn-1 atunci - f(xn-1) = f ( x n 1 ) f ( b ) x n 1 b (xn xn-1),


f (x n 1 ) (xn-1-b) f (x n 1 ) f (b )

i innd cont c f(x*) = 0,


f(x*) - f(xn-1) = - f(xn-1) = f ( x n 1 ) f ( b ) x n 1 b (xn xn-1).

Conform teoremei lui Lagrange exist n(xn-1, x*) i n (xn-1, b) astfel nct: f(x*) f(xn-1) = (x* - xn-1) f (n) f(xn-1) f(b) = (xn-1 - b) f (n) innd cont de f(x*) - f(xn-1) = ob inem (x* - xn-1) f (n) = f (n) (xn xn-1) f ( x n 1 ) f ( b ) x n 1 b (xn xn-1).

i deci
(x* - xn) = (x* - xn-1) + (xn-1 - xn) =

f (n ) (xn xn-1) - (xn xn-1) f ( n )

=(

f (n ) - 1) (xn xn-1), f ( n )

99

Mdlina Roxana Buneci

de unde | x* - xn | =

|f ( n ) f ( n ) | M m1 | xn xn-1| 1 | xn xn-1|, deoarece |f ( n ) | m1

f >0. Similar se trateaz cazul f(b)f(b)<0.

Semnifica ie geometric. Fie f : [a, b] R o aplica ie de dou ori


derivabil cu f(x)0, f(x) 0 oricare ar fi x[a, b], f(a)f(b)<0, i fie x0 = a, xn = xn-1 f (x n 1 ) (xn-1-b), dac f(a)f(a)<0 f (x n 1 ) f (b )

i
x0 = b, xn = xn-1 f (x n 1 ) (xn-1-a), dac f(b)f(b)<0 f (x n 1 ) f (a )

Atunci irul (xn)n converge la x* unica solu ie a ecua iei f(x) = 0.

Cazul 1. f(a)f(a) < 0: pentru orice n 1, xn reprezint abscisa punctului de


intersec ie a axei Ox cu coarda BCn-1 unde B(b,f(b)) i Cn-1(xn-1, f(xn-1)). Aadar avem subcazurile

1.1 f > 0 (f strict cresctoare) 1.2 f < 0 (f strict descresctoare)

x0 = a

x1

x2

1.1.

f > 0, f(a) < 0

100

Metode Numerice

x0 = a

x1

x2

1.2.

f < 0, f(a) > 0

Cazul 2. f(b)f(b) < 0 (sau echivalent f(a)f(a) > 0) : pentru orice n 1, xn


reprezint abscisa punctului de intersec ie a axei Ox cu coarda ACn-1 unde A(a,f(a))

i Cn-1(xn-1, f(xn-1)). Aadar avem subcazurile 2.1. f > 0 (f strict descresctoare) 2.2. f < 0 (f strict cresctoare) 2.3.

x2

x1

x0 = b

2.1.

f > 0, f(b) < 0

101

Mdlina Roxana Buneci

x2

x1

x0 = b

2.2

f < 0, f(b) > 0

Algoritm
Date de intrare:

f de dou ori derivabil pe [a,b], cu f (x) 0, f(x) 0 pentru orice x i f(a)f(b)<0

(precizie)

Date de ieire:

xN aproxima ie a unicei rdcini x* (a,b) a ecua iei f(x) = 0, unde x0 = a, xn = xn-1 x0 = b, xn = xn-1 f (x n 1 ) (xn-1-b), dac f(a)f(a)<0 f (x n 1 ) f (b ) f (x n 1 ) (xn-1-a), dac f(b)f(b)<0 f (x n 1 ) f (a )

iar N este cel mai mic numr natural cu proprietatea c |xN xN-1| <

102

Metode Numerice

dac f(a) f(a) < 0 execut x1: = b ; x2: = a;

ct timp | x1-x2 | execut


x1: = x2; x2 : = x1 altfel x1: = a ; x2: = b; f ( x1) f ( x1) f ( b ) (x1-b),

ct timp | x1-x2 | execut


x1: = x2; x2 : = x1 f ( x1) f ( x1) f ( a ) (x1-a),

x2 reprezint xN unde N este cel mai mic numr natural cu proprietatea c

|xN xN-1| < .

Procedur MAPLE
> mcoarda:= proc(f,a,b,epsilon) > local x1, x2; > if evalf(f(a)*(D@@2)(f)(a))<0 then > x1:=b; x2:=a; > while evalf(abs(x1-x2))>=epsilon do > x1:=x2; > x2:= x1-f(x1)*(x1-b)/(f(x1)-f(b)) > od; > else > x1:=a; x2:=b; > while evalf(abs(x1-x2))>=epsilon do > x1:=x2; > x2:= x1-f(x1)*(x1-a)/(f(x1)-f(a)) > od; > fi; > RETURN(x2) > end;

103

Mdlina Roxana Buneci

Aplicm aceast procedur pentru determinarea rdcinilor reale ale ecua iei: x8 3x-3 = 0. n sec iunea precedent rdcinile au fost localizate n intervalele (-1.5, -0.5) i (1,1.5).
> f:=(x-> x^8-3*x-3);

f := x x 8 3 x 3
> mcoarda(f,1,1.5,10^(-3));

1.270281421
> mcoarda(f,-1.5,0,10^(-3));

-0.8741520730
> fsolve(f(x),x);

-0.8800582880 , 1.271068437
> mcoarda(f,1,1.5,10^(-10));

1.271068437
> mcoarda(f,-1.5,0,10^(-10));

V.1.3. Metoda tangentei

Metoda tangentei este utilizat pentru determinarea unei rdcini a ecua iei f(x) = 0. Presupunem c f este derivabil i c derivata nu se anuleaz. Rdcina ecua iei este determinat ca limita unui ir. Se pleac de la un punct x0 dat. Presupunnd c s-a construit termenul xn-1, termenul xn se determin ca fiind abscisa intersec iei dintre tangenta la graficul func iei n xn-1 i axa Ox.

xn

xn-1

104

Metode Numerice

Ecua ia tangentei n xn-1 este: y f(xn-1) = f (xn-1)(x xn-1) Deci intersec ia cu axa Ox se afl rezolvnd sistemul

y- f(x n-1 ) = f (x n-1 ) ( x-x n-1 ) y = 0


n consecin , f ( x n 1 ) . f ( x n 1 )

xn = xn-1 -

Convergen a irului este determinat de termenul ini ial x0. Urmtoarea teorem stabilete condi ii suficiente pentru convergen a metodei tangentei.

Teorem 5.2. (Metoda tangentei). Fie f : [a, b] R o aplica ie de dou ori


derivabil cu urmtoarele propriet i: f(x)0, f(x) 0 oricare ar fi x[a, b] i f(a)f(b)<0. Atunci unica solu ie x* a ecua iei f(x) = 0 este limita a irului (xn)n definit prin: xn = xn-1 f ( x n 1 ) ,n1 f ( x n 1 )

unde x0 [a, b] este ales astfel nct f(x0)f(x0) > 0. n plus, oricare ar fi n 1 eroarea absolut cu care termenul xn aproximeaz x* verific urmtoarele inegalit i: |x* - xn| |x* - xn| unde m1 = inf
f (x n ) m1

M2 (x n x n 1 )2 2 m1

x[a,b]

f ( x ) i M2 = sup f ( x ) .
x[a,b]

Demonstra ie. Putem presupune f(a) < 0, eventual nlocuind f cu f.


Deoarece f (x) 0 pentru orice x [a, b], rezult c f este fie strict pozitiv, fie

105

Mdlina Roxana Buneci

strict negativ, deci f este strict monoton. innd cont i de faptul c f(a) < 0 i f(b)

> 0, rezult c f este strict cresctoare i c f este strict pozitiv. Deoarece


f(a)f(b)<0, rezult c ecua ia f(x) = 0 are o cel pu in solu ie x*, iar din faptul c f este strict cresctoare rezult c solu ia este unic. Deoarece f(x) 0 pentru orice x[a, b], f este fie strict pozitiv, fie strict negativ. S presupunem f>0. Atunci f(x0) > 0 i deci x0 > x*. Artm prin induc ie dup n c xn > x* pentru orice n 0. Presupunem c xn > x* i demonstrm c xn+1 > x*. Aplicnd formula lui Taylor rezult c exist n ntre xn i x* astfel nct 0 = f(x*) = f(xn) + Din faptul c f(n) > 0, rezult c 0 > f(xn) + de unde xn+1 = xn x * x n f (xn) 1!

( x * x n ) f( ) x * x n f (xn) + n 1! 2!

f ( xn ) > xn + x* - xn = x*. f ( xn )

Ca urmare xn > x* pentru orice n 0. Deoarece f este strict cresctoare, f(xn) > f(x*) = 0,

i n consecin ,
xn+1 = xn f (xn ) < xn pentru orice n 0. f ( xn )

Aadar irul (xn)n este strict descresctor i mrginit inferior, deci este convergent. Fie x limita irului (xn)n. Avem x0 > x x*. Trecnd la limit n xn = xn-1 ob inem x= x f (x) , f (x)

f ( x n 1 ) f ( x n 1 )

de unde rezult f( x ) = 0. Deoarece x* este unica rdcin a ecua iei f(x) = 0 din intervalul [a, b] rezult c x* = x . Similar se trateaz cazul f < 0.

106

Metode Numerice

Conform teoremei lui Lagrange pentru orice x[a,b] exist dx ntre x i x* astfel nct f(x*) f(x) = (x* - x) f (dx). Ca urmare,

| f(xn)| = | f(x*) f(xn)| = |x* - xn| | f (dn)|,


de unde rezult c f ( xn ) f (dn )

|x* - xn| =

f (x n ) m1

Aplicnd formula lui Taylor rezult c exist n ntre xn i xn-1 astfel nct

( x x n 1 ) f( ) x x n 1 f (xn-1) + n f(xn) = f(xn-1) + n n 1! 2!


innd cont i de faptul c xn = xn-1 -

f ( x n 1 ) sau echivalent f ( x n 1 ) f ( x n 1 ) , f ( x n 1 )

xn - xn-1 = ob inem

f ( x n 1 ) ( x x n 1 ) f( ) f (xn-1) + n f(xn) = f(xn-1) n f ( x n 1 ) 2!


= Ca urmare

( x n x n 1 )2 f( ).
2!
n

|x* - xn|

f (x n ) m1

M2 1 ( x n x n 1 ) |f(n)| (xn xn-1)2. m1 2! 2m1

Observa ie 5.3. Rata convergen ei pentru metoda tangentei este ptratic.


ntr-adevr, s presupunem c f : [a, b] R o aplica ie de dou ori derivabil cu f(x)0, f(x) 0 oricare ar fi x[a, b], f(a)f(b)<0, i c xn = xn-1 -

f ( x n 1 ) ,n1 f ( x n 1 )

unde x0 [a, b] este ales astfel nct f(x0)f(x0) > 0. Din teorema anterioar rezult c (xn)n converge la x* unica solu ie a ecua iei f(x) = 0. Aplicnd formula lui Taylor rezult c exist n ntre xn i x* astfel nct
107

Mdlina Roxana Buneci

( x * x n ) f( ), x * x n 0 = f(x*) = f(xn) + f (xn) + n 1! 2!


de unde x* - xn = sau echivalent x* - xn + Aadar x* - xn+1 = f (xn ) f ( n ) 1 =(x*-xn)2. f ( xn ) f (xn ) 2 f ( x n ) f ( n ) 1 (x*-xn)2, f ( xn ) f ( xn ) 2

f ( n ) 1 (x*-xn)2, (xn ) 2 f

i trecnd la limit ob inem

| f ( x *) | M 2 = 2 | f ( x *) | 2m1 n | x * x n |2
lim | x * x n +1 | unde m1 = inf
x[a,b]

f ( x ) i M2 = sup f ( x ) .
x[a,b]

Semnifica ie geometric. Fie f : [a, b] R o aplica ie de dou ori


derivabil cu f(x)0, f(x) 0 oricare ar fi x[a, b], f(a)f(b)<0, i fie xn = xn-1 f ( x n 1 ) ,n1 f ( x n 1 )

unde x0 [a, b] este ales astfel nct f(x0)f(x0) > 0. Atunci irul (xn)n converge la x* unica solu ie a ecua iei f(x) = 0. Pentru orice n 1, xn reprezint abscisa punctului de intersec ie a axei Ox cu tangenta la graficul lui f n punctul de coordonate (xn-1, f(xn-1)). Deoarece f i f nu se anuleaz pe [a, b], rezult c sunt fie strict pozitive fie strict negative. Aadar avem

Cazul 1. f > 0 (f strict convex) 1.1. f > 0 (f strict cresctoare) 1.2. f < 0 (f strict descresctoare)

108

Metode Numerice

x2

x1

x0

1.1.

f > 0, f > 0

x0

x1

x2

1.2.

f < 0, f > 0

Cazul 2. f < 0 (f strict concav) 2.1. f > 0 (f strict cresctoare) 2.2. f < 0 (f strict descresctoare)

109

Mdlina Roxana Buneci

x0

x1

x2

2.1.

f > 0, f < 0

x2

x1

x0

2.2. f < 0, f < 0 Deci pentru aplicarea metodei tangentei n rezolvarea ecua iei f(x) = 0 trebuie
stabilite intervalele de monotonie i intervalele de convexitate/concavitate pentru func ia f. Dac a i b sunt capetele unui astfel de interval i dac f(a)f(b)<0, atunci se alege n intervalul [a, b] un punct x0 astfel nct f(x0)f(x0)>0. irul construit rin

110

Metode Numerice

metoda tangentei, avnd termenul ini ial x0 converge la unica rdcin a ecua iei f(x) = 0, situat n intervalul [a, b].

Algoritm
Date de intrare: f - n condi iile 1.1,1.2,2.1 sau 2.2 x0 - f(x0)f(x0)>0

>0 (precizia determin condi ia de oprire a itera iilor)


Date de ieire: xN cu proprietatea c N este cel mai mic numr natural pentru care

|xN xN-1 |2 < .


unde (xn)n este irul corespunztor metodei tangentei (xN este considerat o aproxima ie satisfctoare a unicei solu ii a ecua iei f(x)=0) x1 := x0; x2 : = x1 f (x1) ; f (x1)

ct timp | x2 x1 |2 execut x1 := x2; x2 : = x1 -

f (x1) ; f (x1)

Prezentm n continuare o variant a acestui algoritm pentru cazul n care f nu verific neaprat condi iile suficiente de convergen . Introducem ca dat suplimentar de intrare numrul maxim de termeni din ir ce urmeaz a fi calcula i (Nmax). Condi ia de oprire se transform | xn - xn-1 |2 < sau n > Nmax

x1 := x0; x2 : = x1 n : = 1;

f (x1) ; f (x1)

111

Mdlina Roxana Buneci

ct timp (| x2 x1 |2 ) i (n Nmax) execut x1 := x2; x2 : = x1 n : = n + 1; Trebuie verificat la ieirea din ciclu dac f(x2) 0. Dac problema este bine condi ionat, aceasta condi ie va asigura acurate ea aproxima iei.

f (x1) ; f (x1)

Proceduri MAPLE
> mtangenta:=proc(f,x0,epsilon) > local x1,x2,df; > df:=D(f);x1:=x0;x2:=x1-f(x1)/df(x1); > while evalf((x2-x1)^2)>=epsilon do > x1:=x2;x2:=x1-f(x1)/df(x1) > od; > RETURN(x2) > end;

> mtangentaN:=proc(f,x0,epsilon,Nmax) > local x1,x2,n,df; > df:=D(f);x1:=x0;x2:=x1-f(x1)/df(x1);n:=1; > while (evalf((x2-x1)^2)>=epsilon)and (n<=Nmax) do > x1:=x2;x2:=x1-f(x1)/df(x1) ;n:=n+1; print(evalf(x2)) > od; > print(`Numar de termeni calculati`, n-1); > RETURN(x2) > end;

Exemple de utilizare a procedurilor


> with(plots): > plot(exp(x)+2*x+1,x,color=black);

112

Metode Numerice

> plot(exp(x)+2*x+1,x=-2..2,color=black);

> f1:=(x->exp(x)+2*x+1);

f1 := x e x + 2 x + 1
> mtangenta(f1,0.1,10^(-5));

-0.7388349460
> fsolve(f1(x),x);

-0.7388350311
> plot(sin(x)+x-1,x,color=black);

> f2:=(x->sin(x)+x-1);

f2 := x sin( x ) + x 1
> mtangenta(f2,1.1,10^(-8)); 113

Mdlina Roxana Buneci

0.5109734294
> fsolve(f2(x),x);

0.5109734294
> mtangentaN(f2,1.1,10^(-8),10);

0.5099954153 0.5109733047 0.5109734294

Numar de termeni calculati , 3


0.5109734294
> xN:=mtangentaN(f2,-10.1,10^(-8),10);

19.33165959 9.366076806 -4881.864603 -2422.713182 14288.93783 5139.034940 2315.137476 -96996.81022 0.1024903391 10 8 -0.5376704605 10 8

Numar de termeni calculati , 10 xN := -0.5376704605 10 8


> f2(xN);

-0.5376704787 10 8

V.2. Rezolvarea sistemelor neliniare


Presupunem date o mul ime G Rn i o func ie f = (f1, f2, ..., fn): G Rn. Problema pe care o studiem este determinarea vectorilor n-dimensionali x = (x1, x2, ..., xn)t G

114

Metode Numerice

cu proprietatea c f(x) = 0 sau echivalent f1(x1, x2, ..., xn) = 0 f2(x1, x2, ..., xn) = 0 ............................... fn(x1, x2, ..., xn) = 0 Numim solu ie a sistemului (de n ecua ii cu n necunoscute) f(x) = 0 pe G un vector x*G Rn cu proprietatea c f(x*) = 0,. Presupunem c G Rn este o mul ime deschis, |||| o norm pe Rn care induce o norm pe L(Rn, Rn) ) Mn,n(R) notat tot ||||, f = (f1, f2, ..., fn) : G Rn este o func ie diferen iabil i x*G o solu ie a sistemului f(x) = 0. De asemenea fie x = x* + h G (hRn cu ||h||=1, R) o aproxima ie a lui x*. Notm cu Jf(x) jacobianul func iei f n punctul x, adic matricea

f . i (x) x j 1i, j n Aplicnd formula lui Taylor rezult c

f( x ) = f(x*) + Jf(x*)h + o(),


unde lim

|| o ( ) || =0. Ca urmare, 0
f( x ) - f(x*) - o() = Jf(x*)( x -x*) Jf(x*)-1(f( x ) - f(x*) - o()) =( x -x*)

i
|| x -x*|| || Jf(x*)-1|| f( x ) - f(x*)||.

Deci factorul de condi ionare absolut al problemei f(x) = 0 este|| Jf(x)-1||. Dac > 0 i x este un numr real cu proprietatea c |f( x )| atunci | x - x*| || Jf(x*)-1||

(unde x* este o solu ie a sistemului f(x) = 0). n general, || x -x*|| i ||f( x )|| nu sunt simultan mici (|| x -x*|| este eroarea absolut cu care x aproximeaz x*, iar ||f( x )||
indic reziduu corespunztor lui x ). Dac problema este bine condi ionat (adic

115

Mdlina Roxana Buneci

dac norma || Jf(x*)-1|| este mic), atunci reziduu mic implic faptul c eroarea

absolut cu care x aproximeaz x*, || x -x*||, este mic.


Metodele iterative de rezolvare a unui sistem de ecua ii f(x)=0 presupun construc ia unui ir (xk)k convergent ctre o rdcin x* a ecua iei. Eroare absolut cu care xk aproximeaz x* este ek = x* - xk. Se spune c irul (xk)k converge cu rata r dac exist o constant C (0, ) astfel nct

lim

|| ek +1 || || ek ||r

= C.

Dac r = 1 i C<1, rata convergen ei se spune liniar r=1 i C = 0 (sau dac r > 1), rata convergen ei se spune superliniar r = 2, rata convergen ei se spune ptratic

V.2.1. Metoda punctului fix

Defini ie 5.4. Fie (X,d) un spa iu metric i fie f: X X. Func ia f se


numete contrac ie dac i numai dac exist q (0,1) astfel nct d(f(x), f(y) q d(x,y) pentru orice x,y X

Defini ie 5.5 Fie f: X X. Punctul X se numete punct fix pentru f


dac f() = .

Teorem 5.6. (metoda punctului fix). Fie (X,d) un spa iu metric complet i fie f : X X o contrac ie. Atunci exist i este unic x* punct fix pentru f. Punctul
x* este limita unui ir construit dup cum urmeaz: x0 X dat xn = f(xn-1), n 1. Mai mult, dac numrul q (0,1) este astfel nct d(f(x), f(y)) qd(x,y) pentru orice x,y X, atunci pentru orice n1 avem

116

Metode Numerice

1. d(x*, xn)

q d(xn, xn-1) 1 q
qn d(x1, x0) 1 q

2. d(x*, xn)

3. d(x*, xn) qd(x*, xn-1)


Demonstra ie. Deoarece f este contrac ie, rezult c exist q (0,1) astfel

nct d(f(x), f(y)) qd(x,y) pentru orice x,y X. Artm unicitatea punctului fix. Presupunem prin absurd c x* i y* sunt puncte fixe ale lui f i c x* y*. Atunci f(x*) = x* i f(y*) = y* i avem d(x*, y*) = d(f(x*), f(y*)) q d(x*, y*) < d(x*, y*), ceea ce este o contradic ie. n consecin , punctul fix (dac exist) este unic. Artm c irul (xn)n este convergent i limita lui este punct fix pentru f. Pentru orice k0 i orice n 0, avem d(xn+k, xn+k-1) = d(f(xn+k-1), f(xn+k-2)) q d(xn+k-1, xn+k-2) ... qk-1d(xn+1, xn).

i innd cont de aceasta


d(xn+k, xn) d(xn+k, xn-k-1) + d(xn+k-1, xn+k-2) +....+ d(xn+1, xn) qk-1d(xn+1, xn) + qk-2d(xn+1, xn) + ...+ d(xn+1, xn) = (qk-1 + qk-2 + ... + 1) d(xn+1, xn) = Deci d(xn+k, xn)

1 qk d(xn+1, xn). 1 q

1 qk d(xn+1, xn) (1). 1 q

Din faptul c d(xn+1, xn) = d(f(xn), f(xn-1)) q d(xn, xn-1) ... qn d(x1, x0) i din rela ia (1) rezult d(xn+k, xn) Ca urmare d(xn+k, xn) 1 n q d(x1, x0) 1 q

1 qk 1 qk n 1 n d(xn+1, xn) q d(x1, x0) q d(x1, x0). 1 q 1 q 1 q

(2).

117

Mdlina Roxana Buneci

Fie >0. Deoarece q (0,1), lim q n = 0, i de aici rezult c exist n N astfel


n

nct qn <

1 q . innd cont de rela ia (2) ob inem d(x1, x 0 ) d(xn+k, xn) <

pentru orice n n i orice k0. Deci (xn)n este ir Cauchy i deoarece X este spa iu complet rezult c (xn)n este convergent. Notm x* = lim x n . Artm c x* este
n

punct fix pentru f. Func ia f fiind contrac ie este func ie continu. Trecnd la limit cu n n xn = f(xn-1) ob inem
n

lim x n = lim f (x n 1 ) = f ( lim x n 1 ) ,


n n n n

de unde innd cont c x* = lim x n = lim x n 1 rezult x* = f(x*), adic x* este punct fix pentru f. Din rela ia (1) rezult d(xn+k, xn) 1 qk 1 qk d(xn+1, xn) . q d(xn, xn-1) 1 q 1 q

i trecnd la limit cu k , se ob ine


d(x*, xn) q d(xn, xn-1). 1 q

n continuare folosind i faptul c d(xn, xn-1) qn-1d(x1, x0) se ob ine d(x*, xn) qn d(x1, x0). 1 q

Pentru a arta ultima afirma ia din teorem inem seama de d(x*, xn) = d(f(x*), f(xn-1)) q d(x*, xn-1).

Corolar 5.7. Fie (E, ||||) un spa iu Banach (n particular, E = Rm) i S o


submul ime nchis a lui E. Fie f : S S o func ie cu proprietatea c exist un

118

Metode Numerice

numr q (0,1) este astfel nct ||f(x) - f(y)|| q||x -y|| pentru orice x,y S Atunci exist i este unic x* punct fix pentru f i pentru orice x0E, irul definit recursiv prin xn = f(xn-1), n 1 converge la x*. Mai mult, pentru orice n1 avem 1. ||x*- xn|| 2. ||x*- xn|| q ||xn - xn-1|| 1 q

qn ||x1- x0|| 1 q

3. ||x*- xn|| q ||x*- xn-1||


Demonstra ie. Dac (E, ||||) un spa iu Banach i S o submul ime nchis a lui

E atunci (S,d) (unde d(x,y) = || x-y||) este spa iu metric complet. n consecin , afirma iile rezult aplicnd direct teorema precedent.

Observa ie 5.8. n general, rata convergen ei pentru metoda punctului fix


este liniar.

Algoritm:
Date de intrare: f (contrac ie) x0 (termenul ini ial al irului) (precizia ce determin condi ia de oprire: se calculeaz termenii irului pn la xN cu proprietatea ||xN-xN-1|| < ). Date de ieire: xN (aproxima ie satisfctore (determinat de ) pentru punctul fix). x1:=x0; x2:=f(x1);

ct timp x 2 x1 execut
x1:=x2; x2:=f(x1);
119

Mdlina Roxana Buneci

La ieire x2 este aproxima ie pentru x*, punctul fix al lui f. Faptul c f este contrac ie asigur terminarea programului ntr-un numr finit de pai. Pentru a evita ciclarea n situa ia n care s-ar ncerca folosirea algoritmului pentru o func ie care nu este contrac ie, se poate stabili de la nceput un numr maxim de pai ce urmeaz a fi executa i. De asemenea se poate afia la fiecare pas diferen a dintre termenii consecutivi curen i. (pentru a observa c irul nu converge dac f nu e contrac ie). Astfel se poate folosi urmtoarea variant a algoritmului: Date de intrare: f (contrac ie) x0 (termenul ini ial al irului) (precizia) Nmax (numr maxim de termeni ai irului ce urmeaz a fi calcula i) Condi ia de oprire: se calculeaz termenii irului pn la xN cu proprietatea ||xN-xN-1|| < sau N Nmax). Date de ieire: xN (dac f este contrac ie, xN este aproxima ie satisfctore - determinat de i Nmax - pentru punctul fix al lui f). x1:=x0; x2:=f(x1); n:=1;

ct timp ( x 2 x1 ) sau (n<Nmax) execut


x1:=x2; x2:=f(x1); n:=n+1;

Dac f este contrac ie i Nmax suficient de mare, la ieirea din ciclu, x2 este aproxima ie pentru x*, punctul fix al lui f.
120

Metode Numerice

Interpretare geometric: f: I I contrac ie, I R interval nchis

y = f(x) y=x

x0 x2 x4 x3

x1

Propozi ie 5.9. Fie a, b dou numere reale cu a < b i fie f: [a, b] [a,b] R o func ie derivabil cu proprietatea c sup | f (x) | < 1. Atunci f este contrac ie.
x(a,b)

Demonstra ie. Notm q = sup | f (x) | . Avem q (0,1). Fie x, y [a, b].
x(a,b)

Aplicnd teorema lui Lagrange, rezult c exist ntre x i y astfel nct f(x) f(y) = f () (x y), de unde ob inem

|f(x) f(y)| = | f () | |x y| q|x y|.

Exemple.
1) S se rezolve (n mul imea numerelor reale) ecua ia urmtoare aplicnd metoda punctului fix x3 x -1 = 0. Se poate arta c ecua ia x3 x -1 = 0 are o singur rdcin real, i c aceast rdcin este n intervalul (1,2). Ecua ia se poate scrie: x3 = x+1 x = 3 x +1

121

Mdlina Roxana Buneci

Fie f: [1,2] [1,2], definit prin f(x) = 3 x + 1 . Avem f (x) =

1 1 i deci 3 3 (x + 1)2

sup | f (x) | =
x(1,2)

1 1 <1 3 34

Ca urmare f este contrac ie pe intervalul [1,2]. Deci solu ia ecua iei poate fi aflat ca limita irului (xn)n, cu xn = f(xn-1) = 3 x n 1 + 1 , x0[1,2]. 2) S se rezolve (n mul imea numerelor reale) ecua ia urmtoare aplicnd metoda punctului fix x cos(x) = 0 Notm g(x) = x cos(x). Cum cos(x) [-1, 1], solu iile ecua iei x cos(x) = 0 se gsesc n intervalul [-1, 1]. Deoarece g (x) = 1 + sin(x) > 0 pentru x din intervalul [-1, 1], rezult c g este strict cresctore pe [-1, 1] i deci ecua ia x cos(x) = 0 are cel mult o rdcin. Cum g(0)g( rdcin n intervalul [0, f (x) =

)<0, ecua ia x cos(x) = 0 are exact o 2

1 ]. Fie f: [0, ] [0, ], f(x) = ( x +cos(x)). Avem 2 2 2 2

1 (1 sin(x)) i deci 2

sup
x(0, 2)

| f (x) | =

1 <1 2

Ca urmare f este contrac ie pe intervalul [0, ca limita irului (xn)n, cu

]. Deci solu ia ecua iei poate fi aflat 2

1 xn = f(xn-1) = ( xn-1 +cos(xn-1)), x0[0, ]. 2 2 Procedura MAPLE de mai jos implementeaz metoda punctului fix pentru o contrac ie pe un interval nchis al lui R.

122

Metode Numerice > punctfix:=proc(f,x0, epsilon) > local x1,x2; > x1:=x0; > x2:=f(x1); > while evalf(abs(x2-x1))>=epsilon do > x1:=x2; > x2:=f(x1) > od; > RETURN(x2); > end;

Exemplificm aplicarea procedurii pentru contrac iile f1: [1,2] [1,2], definit prin f1(x) = 3 x + 1 . f2: [0,

1 ] [0, ], f2(x) = ( x +cos(x)) 2 2 2

comparative cu aplicarea comenzii fsolve.


> f1:=x->(x+1)^(1/3);

f1 := x ( x + 1 )
> punctfix(f1,1.5,10^(-5));

( 1/ 3 )

1.324719474
> fsolve(f1(x)=x,x);

1.324717957
> f2:=x->1/2*(x+cos(x));

f2 := x
> punctfix(f2,1.,10^(-5));

1 1 x + cos( x ) 2 2

0.7390856959
> fsolve(f2(x)=x,x);

0.7390851332 Procedura de mai jos implementeaz metoda punctului fix pentru o contrac ie pe

Rm.
> punctfixM:=proc(f,x0,epsilon,Nmax) > local m,x1, x2,n, norma,i; > m:=nops(x0);

123

Mdlina Roxana Buneci > x1:=x0; > x2:=[seq(f[i](op(x1)), i=1..m)]; > n:=1; > norma:=0; > for i from 1 to m do norma:=norma + abs(x2[i]-x1[i]) od; > while (evalf(norma) >= epsilon) and (n < Nmax) do > x1:=x2; > x2:=[seq(f[i](op(x1)), i=1..m)]; > n:=n+1; > norma:=0; > for i from 1 to m do norma:=norma + abs(x2[i]-x1[i]) od; > od; > RETURN(x2) > end;

Propozi ie 5.10. Fie a, b dou numere reale cu a < b i fie f: [a, b] R o


func ie de clas C1 (derivabil cu derivata continu) care admite un punct fix x*. Dac | f (x*)| < 1, atunci exist un interval nchis I [a, b] astfel nct x*I i f|I este contrac ie. Ca urmare irul definit prin xn = f(xn-1), n1 converge la x* pentru orice termen ini ial x0I. Demonstra ie. Deoarece | f (x*)| < 1 i | f | este continu, rezult c exist >0 astfel nct | f (x)| < 1 pentru orice x cu proprietatea c |x-x*| < . Lum I = [x* , x* + ]. 2 2
xI

Deoarece | f | este continu, exist I astfel nct sup | f (x) | = | f ()| <1. Dac mai artm i c f(I) I, rezult c f|I este contrac ie. Aplicnd formula lui Lagrange rezult c pentru orice x I exist x ntre x i x* astfel nct f(x) - f(x*) = f (x)(x-x*) f(x) - x* = f (x)(x-x*)

|f(x) x*| =| f (x)(x-x*)| =| f (x)| | x-x*| < | x-x*|


de unde rezult c f(x) [x* -

, 2

, x* + ] = I. 2 2

124

Metode Numerice

Observa ie 5.11. Fie J R un interval deschis i f: J R o func ie de clas C2


care admite o rdcin x* J cu proprietatea c f (x*) 0. Deoarece | f | este continu i | f (x*)| > 0, rezult c exist un interval J0 J astfel nct x* J0 i pentru orice x J0 avem | f (x)| > 0 (sau echivalent f (x) 0). Considerm func ia g:J0R, definit prin g(x) = x

1 f(x). Avem f (x) 1 f(x*) = x*, f (x*)

g(x*) = x* deci x* punct fix pentru g. Cum g (x) = 1 rezult c

f (x) 2 f (x)f (x) f (x)


2

f (x)f (x) f (x) 2

| g (x*)| =

f (x *)f (x *) f (x *)
2

=0 < 1.

Din propozi ia precedent rezult c exist un interval nchis I J0 J astfel nct x*I i g|I : I I este contrac ie. Ca urmare irul definit prin recuren xn= g(xn-1), n1 converge la x* pentru orice termen ini ial x0I. Din defini ia lui g rezult c xn = xn-1 1 f(xn-1), n 1, f (x n 1 )

adic irul corespunztor metodei tangentei pentru ecua ia f(x) = 0.

Propozi ie 5.12. Fie |||| o norm pe Rm, care induce o norm pe


L(Rm, Rm) Mm,m(R) notat tot ||||. Fie a Rm, r>0, S = B ( a, r ) = {x Rm, ||x-a|| r}, i f : S S o func ie diferen iabil pe S cu proprietatea c sup || Jf (x) || < 1, unde Jf(x) este
xS

jacobianul func iei f n punctul x, adic matricea

125

Mdlina Roxana Buneci

fi . (x) x j 1i,jm
Atunci f este contrac ie. Demonstra ie. Notm q = sup || Jf (x) || . Avem q (0,1). Fie x, y S.
xS

Aplicnd teorema creterilor finite , rezult c

||f(x) f(y)|| sup || Jf (x + (y x)) || ||x y|| sup || Jf (x) || ||x y||
[0,1]
xS

q||x y||.

Propozi ie 5.13. Fie |||| o norm pe Rm, care induce o norm pe


L(Rm, Rm) Mm,m(R) notat tot ||||. Fie G Rm o mul ime deschis i fie f: G Rm o func ie de clas C1 care admite un punct fix x*. Dac ||Jf (x*)|| < 1, atunci exist r > 0 astfel nct dac notm S = B ( x*, r ) = {x Rm, ||x-x*|| r} avem S G i f|S : S S este contrac ie. Ca urmare irul definit prin xn=f(xn-1), n1 converge la x* pentru orice termen ini ial x0S. Demonstra ie. Deoarece G este deschis, ||Jf (x*)|| < 1 i ||Jf|| este continu, rezult c exist >0 astfel nct pentru orice x cu proprietatea c ||x-x*|| < avem x G i ||Jf(x)|| < 1. Lum r =

. 2

Deoarece ||Jf|| este continu i S compact, exist S astfel nct sup || Jf (x) || = ||Jf ()|| <1.
xS

Dac mai artm i c f(S) S, rezult c f|S este contrac ie. Aplicnd formula lui Taylor rezult c pentru orice x S exist x = x* + x(x-x*) S astfel nct f(x) = f(x*) + Jf(x)(x-x*) f(x) = x* + Jf(x)(x-x*)

126

Metode Numerice

f(x) - x* = Jf(x)(x-x*)

||f(x) x*|| = ||fx)(x-x*)|| ||Jfx)|| || x-x*||< || x-x*||r


de unde rezult c f(x) B ( x*, r ) = S

V.2.2. Metoda Newton cazul m-dimensional


Metoda Newton (varianta m - dimensional, m>1) este o generalizare a metodei tangentei. Este o metod iterativ de rezolvare a unor sisteme de m ecua ii

i m necunoscute:
f(x) = 0, unde f : G Rm, G Rm. La fel ca n sec iunile precedente convenim s notm cu x1, x2,, xn, un

ir de elemente din Rm. Rezervm indicii inferiori pentru a desemna componentele


unui element x = (x1, x2,,xm) din Rm. Dac G este o mul ime deschis i f : G

Rm este o func ie diferen iabil pe G, identificm diferen iala de ordinul I a lui f n


x, df(x), cu jacobianul lui f n x, notat Jf(x):
f Jf(x) = i (x ) x j
1i, j m

n cele ce urmeaz presupunem c matricea Jf(x) este inversabil pentru x G. Metoda Newton const n aproximarea solu iei ecua iei considerate cu xn, unde xn = xn-1 Jf(xn-1)-1 f(xn-1)

(*)

iar aproxima ia ini ial x0G este suficient de apropiat de solu ia sistemului. Observa ii. 1) Presupunem c f este de clas C2 i sistemul f(x) = 0 admite o solu ie x* G cu proprietatea c Jf(x*) este matrice inversabil (sau echivalent det(Jf(x*)) 0). Atunci exist o vecintate deschis V G a lui x* astfel nct pentru orice x V s avem Jf(x) este inversabil. Considerm func ia

127

Mdlina Roxana Buneci

g: V Rm, definit prin g(x) = x Jf(x)-1 f(x). Avem g(x*) = x* - Jf(x*)-1 f(x*) = x*, deci x* punct fix pentru g. Cum

||Jg (x*)|| = 0 < 1,


aplicnd propozi ia precedent rezult c exist r > 0 astfel nct astfel dac notm S = B(x*, r ) = {x Rm, ||x-x*|| r} avem S V i g|S : S S este contrac ie. Ca urmare irul definit prin xn= g(xn-1), n1 converge la x* pentru orice termen ini ial x0S. Din defini ia lui g rezult c xn = xn-1 Jf(xn-1)-1 f(xn-1), n 1, adic irul dat de rela ia (*) (corespunztor metodei lui Newton pentru f(x) = 0 cu termenul ini ial x0 S). 2) Amplificnd rela ia (*) cu Jf(xn-1) rezult Jf(xn-1)(xn - xn-1) = f(xn-1) sau echivalent

(**)

j=1

fi x n 1 x j

( x nj x nj 1 ) = fi ( x n1 ) ,

i = 1,2,, m

Dac se folosete rela ia (*) pentru determinarea lui xn este necesar s se calculeze inversa matricei Jf(xn-1). Dac se folosete rela ia (**), este necesar s se rezolve un sistem liniar cu m ecua ii, i necunoscutele x n 1 = x n x n 1 , k = 1, , m. k k k Rezolvarea acestui sistem necesit un numr mai mic de opera ii dect inversarea matricei Jf(xn-1). Folosim rela ia (**) se nlocuiete rezolvarea sistemului neliniar prin rezolvarea succesiv a unor sisteme liniare. 3) Una din dificult ile metodei este necesitatea determinrii derivatelor par iale f i (x ) , componentele matricei Jf(x) (dac se utilizeaz un mediu de x j

programare simbolic cum este MAPLE aceasta nu e o dificultate major). O

128

Metode Numerice

posibilitate de eliminare a acestei dificult i este aproximarea derivatelor par iale prin diferen e finite f i (x ) 1 f i x + h ij e j f i (x ) = ij (x ) x j h ij

( (

unde hij sunt parametri specifici discretizrii considerate, iar ej =(0,..,0,1,00)t sunt vectorii bazei canonice. n acest fel Jf(x) se nlocuiete prin J(x) = (ij(x))1i,jm Metoda ob inut n acest caz se numete metoda iterativ discret a lui Newton: xn = xn-1 J(xn-1)-1 f(xn-1), n 1. Metoda Newton este o metod frecvent folosit deoarece este foarte rapid convergent (rata convergen ei este ptratic). Dar ca i n cazul metodei tangentei convergen a metodei depinde de alegerea aproxima iei ini iale. Aproxima ia ini ial trebuie luat ct mai aproape de solu ia problemei, eventual utiliznd o alt metod de gsire a solu iei. n urmtoarele teoreme se presupune c s-a fixat o norm pe

Rm, notat

, iar pe spa iile de operatori liniari L(Rm, Rm), L(Rm, L(Rm, Rm)) se

consider normele operatoriale induse. Pentru x Rm i r > 0, se noteaz B(x,r) mul imea:

{y R m , {y R m ,

yx <r

i cu B ( x, r ) nchiderea acestei mul imi, adic

yx r

Teorem 5.14. (Metoda Newton). Fie G Rm o mul ime deschis, f : G Rm o func ie de clas C2, cu proprietatea c exist M > 0 astfel ca d 2f ( x ) M
pentru orice x G. Presupunem c ecua ia f(x) = 0 admite o solu ie x* astfel nct Jf(x*) s fie inversabil. Atunci pentru orice q (0, 1) exist r, > 0 astfel nct Jf(x) este inversabil pentru orice x B(x*,r), irul (xn)n, definit prin xn = xn-1 Jf(xn-1)-1 f(xn-1), n 1
129

Mdlina Roxana Buneci

rmne n B(x*,r) oricare ar fi x0 B(x*,r) i converge la x*. n plus, au loc urmtoarele rela ii

xn x *
xn x *

2 2n q M
1 f xn

( )

2 M n x x n 1 . 2

Parametrii procedurii mnewton (de mai jos) sunt func ia f (se presupune c se rezolv sistemul f(x) = 0) x0 = termenul ini ial din irul definit de (**) epsilon = precizia Nmax = numrul maxim de termeni din ir ce vor fi calcula i Se calculeaz n termeni, cu n verificnd ( x n x n 1 < epsilon) sau (nNmax). Comanda
2

>subs(expr1,expr2);
substituie subexpresia expr1 n expresia expr2. Comanda

>jacobian(f(x,y,...), [x, y, ...]);


calculeaz jacobianul lui f. Este o comnad ce apa ine pachetului linalg. Comanda

>norm(a, t);
calculeaz norma t, unde t =1, 2, infinity a vectorului (sau matricei) a. Este de asemenea o comanda ce apar ine pachetului linalg.

Procedur MAPLE
> mnewton := proc(f, x0, epsilon, Nmax) > local m,x1, x2, dx, b, fx, fx1, n, i, j, ex, r; > m:=vectdim(x0);x1 := vector(m);x2:=vector(m); > for i to m do x1[i] := x0[i] od; > dx := vector(m); > b := vector(m); > fx := jacobian(f(seq(x[i],i=1..m)), [seq(x[i],i=1..m)]); > fx1 := matrix(m, m); > ex := seq(x[i] = x1[i], i = 1 .. m); > for i to m do

130

Metode Numerice > for j to m do fx1[i, j] := evalf(subs(ex, fx[i, j])) od > od; > b := map(-evalf,f(seq(x1[i],i=1..m))); > dx := linsolve(fx1, b, 'r'); > if r <> m then print(`Metoda nu se aplica`); RETURN(NULL) fi; > for i to m do x2[i] := x1[i] + dx[i] od; > n := 1; > print(x2); > while epsilon <= norm(dx, infinity)^2 and n < Nmax do > for i to m do x1[i] := x2[i] od; > ex := seq(x[i] = x1[i], i = 1 .. m); > for i to m do > for j to m do fx1[i, j] := evalf(subs(ex, fx[i, j])) > od > od; > b := map(-evalf, f(seq(x1[i],i=1..m))); > dx := linsolve(fx1, b, 'r'); > if r <> m then print(`Metoda nu se aplica`); RETURN fi; > for i to m do x2[i] := x1[i] + dx[i] od; > n := n + 1; > print(x2) > od; > print(`Numar de pasi`, n); > b := vector(map(evalf, f(seq(x1[i],i=1..m)))); > print(`Valoarea functiei`, b); > RETURN(evalm(x2)) > end;

Exemple de utilizare a procedurii mnewton


> with(linalg): > f:=(x,y)->[x^2-y,x^3-5*y];

f := ( x, y ) [ x 2 y, x 3 5 y ]
> mnewton(f,vector([10,0.1]),10^(-5),9);

[ 7.500000001, 50.00000002 ] [ 6.000000002, 33.75000004 ] [ 5.250000001, 27.00000001 ] [ 5.021739128, 25.16576084 ]

131

Mdlina Roxana Buneci

[ 5.000186603, 25.00140155 ] [ 5.000000017, 25.00000013 ]


Numar de pasi , 6 Valoarea functiei , [ 0.00046451 , 0.0069879 ]

[ 5.000000017, 25.00000013 ]
> fsolve({f(x,y)[1],f(x,y)[2]},{x=10,y=0.1});

{ x = 5.000000000 , y = 25.00000000 }
> f1:=(x,y)->[x^2+y^2-1,x^3-y];

f1 := ( x , y ) [ x 2 + y 2 1, x 3 y ]
> mnewton(f1,vector([0.9,0.5]),10^(-5),9);

[ 0.8316784870 , 0.5629787234 ] [ 0.8260617824 , 0.5636079087 ] [ 0.8260313586 , 0.5636241619 ]


Numar de pasi , 3 Valoarea functiei , [ 0.000031943, 0.0000785347 ]

[ 0.8260313586 , 0.5636241619 ]
> fsolve({f1(x,y)[1],f1(x,y)[2]},{x=0.9,y=0.5});

{ x = 0.8260313577 , y = 0.5636241622 }
> mnewton(f1,vector([1,1]),10^(-5),9);

[ 0.8750000000 , 0.6250000000 ] [ 0.8290363483 , 0.5643491124 ] [ 0.8260401080 , 0.5636197732 ]


Numar de pasi , 3 Valoarea functiei , [ 0.005791188, 0.0054486200 ]
[ 0.8260401080 , 0.5636197732 ]
> fsolve({f1(x,y)[1],f1(x,y)[2]},{x=1,y=1});

{ x = 0.8260313577 , y = 0.5636241622 }
> mnewton(f1,vector([-1,1]),10^(-5),20);

[ -0.2500000001 , 1.250000000 ] [ -81.50000065 , -15.25000014 ] [ -54.33007595 , 64.91769907 ] [ -36.21723980 , 24.89070061 ] [ -24.14389039 , 3.68381152 ] [ -16.10992954 , -24.48752262 ]
132

Metode Numerice

[ -10.75342471 , -10.48890844 ] [ -7.178878965 , -3.444508772 ] [ -4.781922755 , 0.617903126 ] [ -3.270919075 , -5.691810662 ] [ -2.260819460 , -2.574374564 ] [ -1.578178423 , -1.088178100 ] [ -1.121843867 , -0.5209805009 ] [ -0.8857962879 , -0.5206567978 ]
[ -0.8296024170 , -0.5627517822 ]

[ -0.8260437059 , -0.5636179649 ] [ -0.8260313579 , -0.5636241623 ]


Numar de pasi , 17 Valoarea functiei , [ 0.000013414, -0.0000314743 ]

[ -0.8260313579 , -0.5636241623 ]
> fsolve({f1(x,y)[1],f1(x,y)[2]},{x=-1,y=1});

{ x = -0.8260313577 , y = -0.5636241622 }
> f2:=(x,y,z)->[x+x^2-2*y*z-0.1,y-y^2+3*x*z+0.2, z+z^2+2*x*y-0.3];

f2 := ( x , y, z ) [ x + x 2 2 y z 0.1, y y 2 + 3 x z + 0.2, z + z 2 + 2 x y 0.3 ]


> mnewton(f2,vector([0,0,0]),10^(-5),10);

[ 0.1, -0.2, 0.3 ] [ 0.02245322250 , -0.1743243244 , 0.2461538462 ] [ 0.01287849239 , -0.1778109522 , 0.2447473526 ]


[ 0.01282415092 , -0.1778006638 , 0.2446880471 ]

Numar de pasi , 4 Valoarea functiei , [ 0.0000818676 , 0.0000282439 , 0.0000687452 ]

[ 0.01282415092 , -0.1778006638 , 0.2446880471 ]


> fsolve({f2(x,y,z)[1],f2(x,y,z)[2], f2(x,y,z)[3]},{x=0,y=0,z=0});

{ x = 0.01282414583 , y = -0.1778006680 , z = 0.2446880443 } Printre dezavantajele metodei Newton prezentate mai nainte se afl necesitatea calculrii la fiecare pas a inversei unei matrice, Jf(xn), sau eventual a rezolvrii unui sistem de ecua ii liniare (aa cum remarcam mai nainte). Un alt dezavantaj este localizarea teoretic a procesului iterativ ntr-o vecintate a solu iei

133

Mdlina Roxana Buneci

cutate. Metoda Newton simplificat nltur primul inconvenient. Aceast variant a metodei const n aproximarea solu iei cu xn, unde x0, c G, i xn = xn-1 Jf(c)-1 f(xn-1), n 1 metode.

(***)

Urmtoarea teorem stabilete condi ii suficiente de convergen a acestei

Teorem 5.15 (Metoda Newton simplificat). Fie G Rm o mul ime


deschis, f : G Rm o func ie de clas C2, cu proprietatea c exist M > 0 astfel ca

d 2f ( x ) M pentru orice x G. Presupunem c ecua ia f(x) = 0 admite o solu ie x*


astfel nct Jf(x*) s fie inversabil. Atunci pentru orice q (0, 1) exist r, , L > 0 astfel nct Jf(x) este inversabil pentru orice c B(x*,r), irul (xn)n, definit prin xn = xn-1 Jf(c)-1 f(xn-1), n 1 rmne n B(x*,r) oricare ar fi x0 B(x*,r) i converge la x*. n plus, au loc urmtoarele rela ii

xn x * qn x0 x *
xn x * 1 f xn

( )

L n +1 x xn

Parametrii procedurii mnewtonsimplif (de mai jos) sunt func ia f (se presupune c se rezolv sistemul f(x) = 0) x0 = termenul ini ial din irul definit de (***) c = punctul n care se evalueaz inversa matricei jacobiene epsilon = precizia Nmax = numrul maxim de termeni din ir ce vor fi calcula i Se calculeaz n termeni, cu n verificnd ( x n x n 1 < epsilon) sau (nNmax).
2

Procedur MAPLE
> mnewtonsimplif := proc(f, x0,c,epsilon, Nmax) > local m,x1, x2, dx, b, fx, fx1, n, i, j, ex, r;

134

Metode Numerice > m:=vectdim(x0);x1 := vector(m);x2:=vector(m);

> for i to m do x1[i] := x0[i] od; > dx := vector(m);

> b := vector(m); > fx := jacobian(f(seq(x[i],i=1..m)), [seq(x[i],i=1..m)]); > > fx1 := matrix(m, m); ex := seq(x[i] = c[i], i = 1 .. m);

> for i to m do > for j to m do fx1[i, j] := evalf(subs(ex, fx[i, j])) od > od; > if det(fx1)=0 then print(`Metoda nu se aplica`); RETURN(NULL) fi; > fx1:=inverse(fx1); > dx := evalm(fx1&*b); > for i to m do x2[i] := x1[i] - dx[i] od; > n := 1; > print(x2); > while epsilon <= norm(dx, infinity)^2 and n < Nmax do > for i to m do x1[i] := x2[i] od; > b := map(evalf, f(seq(x1[i],i=1..m))); > dx := evalm(fx1&*b); > for i to m do x2[i] := x1[i] - dx[i] od; > n := n + 1; > print(x2) > od; > print(`Numar de pasi`, n); > ex := seq(x[i] = x2[i], i = 1 .. m); > b := vector(map(evalf, f(seq(x1[i],i=1..m)))); > print(`Valoarea functiei`, b); > RETURN(evalm(x2)) > end; b := map(evalf,f(seq(x1[i],i=1..m)));

Exemple de utilizare a procedurii mnewtonsimplif


> with(linalg): > f:=(x,y)->[x^2-y,x^3-5*y];

f := ( x, y ) [ x 2 y, x 3 5 y ]
> mnewtonsimplif(f,vector([6,0.1]),vector([6,0.1]),10^(-5),20);

[ 5.250000002, 27.00000000 ]

135

Mdlina Roxana Buneci

[ 5.106445312, 25.83984374 ] [ 5.048619375, 25.38187247 ] [ 5.022801923, 25.17874816 ] [ 5.010817356, 25.08472436 ] [ 5.005158912, 25.04038926 ] [ 5.002466430, 25.01930594 ] [ 5.001180563, 25.00923998 ] [ 5.000565396, 25.00442502 ]
[ 5.000270852 , 25.00211976 ]

Numar de pasi , 10 Valoarea functiei , [ 0.00122926 , 0.0202844 ]

[ 5.000270852, 25.00211976 ]
> fsolve({f(x,y)[1],f(x,y)[2]},{x=10,y=0.1});

{ x = 5.000000000 , y = 25.00000000 }
> f1:=(x,y)->[x^2+y^2-1,x^3-y];

f1 := ( x , y ) [ x 2 + y 2 1, x 3 y ]
> mnewtonsimplif(f1,vector([0.9,0.5]),vector([0.9,0.5]),10^(-5),9);

[ 0.8316784870 , 0.5629787234 ] [ 0.8267332448 , 0.5632460104 ] [ 0.8261303960 , 0.5635972122 ]


Numar de pasi , 3 Valoarea functiei , [ 0.000733926, 0.0018161243 ]
[ 0.8261303960 , 0.5635972122 ]
> fsolve({f1(x,y)[1],f1(x,y)[2]},{x=0.9,y=0.5});

{ x = 0.8260313577 , y = 0.5636241622 }
> mnewtonsimplif(f1,vector([1,1]),vector([1,1]),10^(-5),9);

[ 0.8750000000 , 0.6250000000 ] [ 0.8442382812 , 0.5776367188 ] [ 0.8324169200 , 0.5662568530 ] [ 0.8280863872 , 0.5638050098 ] [ 0.8266269335 , 0.5634628865 ]
Numar de pasi , 5 Valoarea functiei , [ 0.003603154, 0.0040362378 ]

136

Metode Numerice

[ 0.8266269335 , 0.5634628865 ]
> fsolve({f1(x,y)[1],f1(x,y)[2]},{x=1,y=1});

{ x = 0.8260313577 , y = 0.5636241622 }
> mnewtonsimplif(f1,vector([-1,1]),vector([-1,1]),10^(-5),20);

[ -0.2500000000 , 1.250000000 ] [ 0.2265625000 , 1.414062500 ] [ 0.6650531295 , 1.327101470 ] [ 0.8806553123 , 0.9409566642 ] [ 0.8443975609 , 0.5742223014 ] [ 0.8197933010 , 0.5282487956 ]
[ 0.8206651612 , 0.5535667326 ]

[ 0.8261112430 , 0.5690490973 ] [ 0.8271727754 , 0.5669722992 ]


Numar de pasi , 9 Valoarea functiei , [ 0.006276661, -0.0052613953 ]

[ 0.8271727754 , 0.5669722992 ]
> fsolve({f1(x,y)[1],f1(x,y)[2]},{x=-1,y=1});

{ y = -0.5636241622 , x = -0.8260313577 }
> f2:=(x,y,z)->[x+x^2-2*y*z-0.1,y-y^2+3*x*z+0.2, z+z^2+2*x*y-0.3];

f2 := ( x , y, z ) [ x + x 2 2 y z 0.1, y y 2 + 3 x z + 0.2, z + z 2 + 2 x y 0.3 ]


> mnewtonsimplif(f2,vector([0,0,0]),vector([0,0,0]),10^(-5),20);

[ 0.1000000000 , -0.2000000000 , 0.3000000000 ] [ -0.0300000000 , -0.2500000000 , 0.2500000000 ] [ -0.02590000000 , -0.1150000000 , 0.2225000000 ]


[ 0.04815419000 , -0.1694867500 , 0.2445367500 ]

[ 0.01478969600 , -0.2066006490 , 0.2565247722 ] [ -0.00621510390 , -0.1686979420 , 0.2403061628 ] [ 0.01888306226 , -0.1670604211 , 0.2401559976 ] [ 0.01940230578 , -0.1856954577 , 0.2486343215 ] [ 0.00728302228 , -0.1799894344 , 0.2453868143 ] [ 0.01161288975 , -0.1729652764 , 0.2424070455 ] [ 0.01600913753 , -0.1785281521 , 0.2452560777 ] [ 0.01217347883 , -0.1799067137 , 0.2455656198 ]

137

Mdlina Roxana Buneci

[ 0.01149399913 , -0.1766017380 , 0.2440777075 ] [ 0.01365879328 , -0.1772281130 , 0.2444857931 ]


Numar de pasi , 14 Valoarea functiei , [ -0.00216479415 , 0.0006263750 , -0.0004080856 ]

[ 0.01365879328 , -0.1772281130 , 0.2444857931 ]


> fsolve({f2(x,y,z)[1],f2(x,y,z)[2], f2(x,y,z)[3]},{x=0,y=0,z=0});

{ z = 0.2446880443 , x = 0.01282414583 , y = -0.1778006680 } Metoda Newton Kantorovici nu localizeaz procesul iterativ ntr-o vecintate a solu iei problemei. Metoda Newton Kantorovici const n aproximarea rdcinii ecua iei considerate cu xn, unde xn = xn-1 Jf(xn-1)-1 f(xn-1), n 1,

(****)

iar aproxima ia ini ial x0G satisface condi iile din teorema urmtoare.

Teorem 5.16. (Metoda Newton-Kantorovici). Fie G Rm o mul ime


deschis, f : G Rm o func ie de clas C2, cu proprietatea c exist M > 0 astfel ca

d 2f ( x ) M pentru orice x G. Presupunem c exist x0 G i exist a, b >0 astfel


nct: Jf(x0) este inversabil i ||Jf(x0)-1|| a, ||Jf(x0)-1f(x0)|| b, abM <

1 2 1 (1 1 2abM ) . aM

B x 0 , r G, unde r =

Atunci f(x) = 0 are o unic solu ie x* n B(x 0 , r ), irul (xn)n, este corect definit prin xn = xn-1 Jf(xn-1)-1 f(xn-1), n 1, rmne n B(x0 , r) i converge la x*. n plus, are loc urmtoarea rela ie xn x * b 2n 1 , n 1.

138

Metode Numerice

VI. Aproximarea func iilor


Fie f : [a, b] R o func ie. Se pune problema determinrii unei func ii F care s aproximeze func ia f. O astfel de aproxima ie este necesar n urmtoarele situa ii: 1. Cnd nu se cunoate expresia analitic a lui f, ci doar valorile sale ntr-un numr finit de puncte x0, x1, , xn din intervalul [a, b]. 2. Cnd expresia analitic a lui f este prea complicat i calculele efectuate cu ajutorul acesteia ar fi prea dificile. F trebuie s fie o func ie simpl, uor de evaluat, de diferen iat i de integrat.

VI.1. Polinoame de interpolare


n cele ce urmeaz aproximarea func iei f : [a, b] R se face cu un polinom.

VI.1.1. Defini ie. Eroarea de interpolare. Defini ie. Fie x0, x1, , xn n+1 puncte distincte dou cte dou din
intervalul [a, b] (numite noduri), i fie yi = f(xi) pentru orice i = 0,1,n. Se numete polinom de interpolare asociat nodurilor x0, x1, , xn i valorilor y0=f(x0), y1= f(x1), , yn=f(xn) un polinom Pn care ndeplinete urmtoarele condi ii grad(Pn) n Pn(xi) = yi, i = 0, 1, , n . Polinomul determinat de condi iile anterioare exist i este unic. ntr-adevr, deoarece grad(Pn) n, exist an, an-1, ...a0 R astfel nct Pn(X) = anXn + an-1Xn-1 + + a1X + a0 Rela iile Pn(xi) = yi, i = 0, 1, , n conduc la sistemul:
139

Mdlina Roxana Buneci

a0 + a1x0 + a2 x 2 + + an x n = y0 0 0
2 n a0 + a1x1 + a2 x 1 + + an x 1 = y1

(*) a0 + a1xn + a2 x 2 + + an x n = yn n n Determinatul acestui sistem este 1 =


n x0 x 2 x 0 0

2 n 1 x1 x 1 x 1

0 j<i n

(x

xj

xn x 2 x n n n

(fiind un determinant Vandermonde). Deci 0, i n consecin sistemul (*) este compatibil determinat, adic polinomul de interpolare Pn este unic determinat. Coeficien ii polinomului de interpolare pot fi determina i rezolvnd sistemul (*), dar dac n este mare, atunci volumul de calcul este mare. De aceea se utilizeaz diferite forme comode ale polinoamelor care conduc la polinoame de interpolare Lagrange, Newton, etc. Teorema urmtoare stabilete eroarea maxim cu care polinomul Pn aproximeaz func ia f:

Teorem 6.1. (eroarea de interpolare). Fie f : [a, b] R o func ie de


clas C
n+1

. Fie x0, x1, , xn n+1 puncte distincte dou cte dou din intervalul [a,

b], i yi = f(xi) pentru orice i=0,1,n. Fie Pn polinomul de interpolare asociat nodurilor x0, x1, , xn i valorilor y0=f(x0), y1= f(x1), , yn=f(xn). Atunci oricare ar fi x[a,b], exist x(a,b) astfel nct f(x) Pn(x) =

f (n +1) ( x ) (x x0) (x x1) (x xn). ( n + 1) !

n consecin , oricare ar fi x [a, b], avem:

140

Metode Numerice

| f(x) Pn(x) |

t[ a,b ]

sup f (

n +1)

(t)
|(x x0) (x x1) (x xn)|.

( n + 1) !

Demonstra ie. Fie x [a, b]. Dac x { x0, x1, , xn}, atunci

f( x ) = Pn( x )

i
( x x0) ( x x1) ( x xn) = 0, ca urmare f( x ) - Pn( x ) = 0 = f (n +1) ( ) ( x x0) ( x x1) ( x xn) ( n + 1) !

pentru orice (a,b). Presupunem c x { x0, x1, , xn} i considerm func ia g:[a, b] R, definit prin g(x) = f(x) Pn(x) - c (x x0) (x x1) (x xn), unde constanta c va fi determinata astfel nct g( x ) = 0 sau echivalent 0 = g( x ) = f( x ) Pn( x ) - c( x x0) ( x x1) ( x xn) c=

f (x) Pn (x) . (x x 0 )(x x1 )...(x x n )

Deci g( x ) = 0 i g(xi) = 0 pentru orice i =0, 1, ..., n. Aadar g se anuleaz n n+2 puncte distincte. Deoarece g este o func ie Rolle, rezult c derivata g se anuleaz n n+1 puncte distincte din intervalul (a,b). Repetnd ra ionamentul cu g , rezult c g se anuleaz n n puncte distincte din (a, b). Ra ionnd similar g(3) se anuleaz n n-1 puncte distincte din (a, b), g(4) se anuleaz n n-2 puncte distincte din (a, b), i aa mai departe. Se ob ine c exist x (a, b) astfel nct g(n+1)( x ) = 0.
(n Pe de alt parte deoarece gradul lui Pn este cel mult n, rezult c Pn +1) (x) = 0

pentru orice x [a, b] i deoarece x (x x0) (x x1) (x xn) este o func ie polinomial de grad n+1 cu coeficientul termenului de grad maxim 1, rezult c a n+1 derivat a sa este (n+1)!. n consecin , pentru orice x[a, b], avem

141

Mdlina Roxana Buneci


(n g(n+1)(x) = f(n+1)(x) - Pn +1) (x) - c(n+1)! = f(n+1)(x) - c(n+1)!.

n particular, pentru x = x se ob ine 0 = g(n+1)( x ) = f(n+1)( x ) - c(n+1)!, de unde c= Cum pe de alt parte avem c= Rezult c

f (n +1) ( x )

( n + 1) !

f (x) Pn (x) . (x x 0 )(x x1 )...(x x n )

f (n +1) ( x ) f (x) Pn (x) = , (x x 0 )(x x1 )...(x x n ) ( n + 1) !


sau echivalent, f( x ) Pn( x ) =
n plus,
t[ a,b ]

f (n +1) ( x )

( n + 1) !

(x x0) (x x1) (x xn).

sup f (

n +1)

(t)
|(x x0) (x x1) (x xn)|.

|f( x ) Pn( x )|

( n + 1) !

VI.1.2. Eroarea de interpolare n cazul nodurilor echidistante


Fie f : [a, b] R o func ie i fie x0, x1, , xn n+1 noduri echidistante din intervalul [a, b]: xi = a + ih, i = 0, 1, ...n, h=

ba n

Fie Pn polinomul de asociat nodurilor x0, x1, , xn i valorilor y0=f(x0), y1= f(x1), , yn=f(xn). Atunci oricare ar fi x [a, b], avem:

142

Metode Numerice

| f(x) Pn(x) |

t[ a,b ]

sup f (

n +1)

(t)
|(x x0) (x x1) (x xn)|.

( n + 1) !

Pentru orice x [a, b] exist i astfel nct x [xi, xi+1] i ca urmare |(x xi) (x xi+1)| De asemenea se poate arta c |(x xj)| (j i + 1) h pentru i < j |(x xj)| (i j ) h pentru j+1 < i h h h2 = . 4 2 2

i innd seama c (j+1)!(n-j)! n! se ob ine


|(x x0) (x x1) (x xn)|

h n +1 n!, 4

i deci eroarea de interpolare satisface:


| f(x) Pn(x) | h n +1 n +1 sup f ( ) ( t ) . 4(n + 1) t[a,b]

VI.1.3. Eroarea de interpolare n cazul nodurilor Cebev


Pentru n N dat, se numesc noduri Cebev (rdcini ale polinomului Cebev de grad n+1) numerele reale:
2i + 1 xi = cos , 0 i n. 2n + 2

Polinoamele Cebev de prima spe pot fi definite recursiv prin : T0(x) = 1, T1(x) = x, Tn+2(x) = 2xTn+1(x) Tn(x), n 0, sau pot fi definite prin Tn(x) = cos(n arccos(x)). Nodurile Cebev sunt proiec iile pe axa OX a unor puncte egal distan ate situate pe un semicerc:

143

Mdlina Roxana Buneci

Nodurile Cebev au proprietatea c |(x x0) (x x1) (x xn)|

1 2n

pentru orice x [-1, 1]. Se poate arta c pentru oricare alte noduri ci, i=0, ...,n.

1 sup |(x c0) (x c1) (x cn)| n . 2 x[ 1,1]


Nodurile Cebev pot fi scalate i translatate pentru a putea fi folosite pe un interval oarecare [a, b]: xi =

ba 2i + 1 b + a , 0 i n. cos + 2 2 2n + 2

Astfel n cazul nodurilor Cebev eroarea de interpolare este

| f(x) Pn(x) |

(b a)n +1 2
2n +1

(n + 1)! t[a,b]

sup f (

n +1)

(t) .

VI.1.2. Polinomul Lagrange de interpolare


Fie f : [a, b] R o func ie, fie x0, x1, , xn n+1 puncte distincte din intervalul [a, b], i yi = f(xi) pentru orice i = 0,1,n. Se numesc polinoame Lagrange cele n+1 polinoame li, i =0, 1, ...n cu propriet ile grad (li) = n li(xj) = ij = 1, dac i = j 0, dac i j Pentru orice i = 0, 1, ...n, deoarece li are gradul n i admite drept rdcini pe x0, x1, ..., xi-1, xi+1, ..., xn, rezult c li(X) = Ai(X x0) (X x1) (X xi-1) (X xi+1) ... (X xn).

144

Metode Numerice

Cum li(xi) = 1, rezult Ai =

1 , ( x i x 0 ) ( x i x1 ) .... ( x i x i1 )( x i xi+1 ) ...( x i x n )

i ca urmare
li(x) =

( x x 0 ) ( x x1 ) .... ( x x i1 )( x x i+1 ) ... ( x x n ) ( x i x 0 ) ( x i x1 ) .... ( x i x i1 )( x i x i+1 ) ... ( x i x n )


Ln(x) = y0l0(x) + y1l1(x) + + ynln(x)

Forma Lagrange a polinomului de interpolare este: Se observ uor c Ln(xi) = y0l0(xi) + y1l1(xi) + + ynln(xi) = yili(xi) = yi pentru orice i = 0, 1, , n i c grad(Ln) n. Aadar Ln este polinomul de interpolare asociat nodurilor x0, x1, , xn i valorilor y0, y1, , yn. n consecin , polinomul de interpolare asociat nodurilor x0, x1, , xn i valorilor y0, y1, , yn poate fi scris sub forma Ln(x) =

i =0

yi ( x

( x x 0 ) ( x x1 ) .... ( x x i1 )( x x i+1 ) ...( x x n ) i x 0 ) ( x i x1 ) .... ( x i x i1 )( x i x i +1 ) ... ( x i x n )

numit form Lagrange.

Algoritm pentru determinarea polinomului Lagrange


Date de intrare: x list ce con ine cele n+1 puncte distincte din intervalul [a, b] x0 x1 xn y lista ce con ine valorile func iei n punctele x0, x1, ...., xn y0 y1 yn yi = f(xi), i = 0,1,, n a punctul n care se evaluaez polinomul. Date de ieire: v - valoarea polinomului n x

v : =0;

145

Mdlina Roxana Buneci

pentru i = 0,n,1 executa t : =yi; pentru j = 0,i - 1,1 executa t: = t * (a xj)/ (xi xj) pentru j = i + 1,n,1 executa t: = t * (a xj)/ (xi xj) v : = v + t;

Procedur MAPLE pentru calculul valorii polinomului Lagrange


> PLagrange:=proc(x,y,a) > local n,v,t,i,j; > n:=nops(x);v:=0; > for i from 0 to n-1 do > t:=y[i+1]; > for j from 0 to i-1 do > t:=t*(a-x[j+1])/(x[i+1]-x[j+1]) od; > for j from i+1 to n-1 do > t:=t*(a-x[j+1])/(x[i+1]-x[j+1]) od; > v:=v+t; > od; > RETURN(v) > end;

Exemple
> PLagrange([1,-1,3],[2,-5,-1],2);

7 4
> PLagrange([1,-1,3],[2,-5,-1],-1);

-5
> expand(PLagrange([1,-1,3],[2,-5,-1],X));

5 7 1 X2 + X 4 2 4

146

Metode Numerice

Considerm func ia f1: R R definit prin f1(x) = xcos(x) i nodurile x0=0, x1 =

2 4 , x2 = i x3 = 2. Vom aplica procedura PLagrange pentru a determina 3 3 2 4 , x2 = i x3 = 2 i 3 3

polinomul de interpolare P3 asociat nodurilor x0=0, x1=

valorilor y0 = f1(x0), y1 = f1(x1), y2 = f1(x2), y3 = f1(x3). De asemenea vom reprezenta grafic func ia f1 i polinomul asociat pe intervalul [0, 2], i apoi pe intervalul [-,3].
> f1:=x->x*cos(x);

f1 := x x cos( x )
> x1:=[seq(2*Pi/3*i,i=0..3)];

2 4 x1 := 0, , , 2 3 3
> y1:=[seq(f1(2*Pi/3*i),i=0..3)];

2 y1 := 0, , , 2 3 3
> expand(PLagrange(x1,y1,X));

27 X 3 27 X 2 +X 8 16 2
> with(plots):

> plot([f1(a),PLagrange(x1,y1,a)],a=0..2*Pi);

> plot([f1(a),PLagrange(x1,y1,a)],a=-Pi..3*Pi);

147

Mdlina Roxana Buneci

Considerm func ia f2: R R definit prin f2(x) = cos(x) + sin(x). Se poate observa uor c |f(k)(x)| 2 pentru orice xR i orice kN. Vom considera intervalul [0,2] i nodurile echidistante corespunztoare lui n = 3. Eroarea de interpolare este dominat de
> f2:=x->sin(x)+cos(x);

h4 2 2, unde h = 16 3
f2 := x sin( x ) + cos ( x )

> x2:=[seq(2*Pi/3*i,i=0..3)];

2 4 x2 := 0, , , 2 3 3
> y2:=[seq(f2(2*Pi/3*i),i=0..3)];

3 1 3 1 y2 := 1, , , 1 2 2 2 2
> expand(PLagrange(x2,y2,X));

27 X 2 27 X 27 X 3 3 81 X 2 3 27 X 3 +1+ + 8 8 16 2 16 3 16 2
> plot({f2(a),PLagrange(x2,y2,a)},a=0..2*Pi);

148

Metode Numerice

Considerm func ia f3: R R definit prin f3(x) =

1 1 + x2

. Vom reprezenta grafic

func ia i polinoamele de interpolare corespunztoare nodurilor echidistante, respectiv nodurilor Cebev pentru n = 3 pe intervalul [-1, 1]:
> f3:=x->1/(1+x^2);

f3 := x
> x4:=[seq(-1+2*i/3,i=0..3)];

1 1 + x2

-1 1 x4 := -1, , , 1 3 3
> y4:=[seq(evalf(f3(-1+2*i/3)),i=0..3)];

y4 := [ 0.5000000000 , 0.9000000000 , 0.9000000000 , 0.5000000000 ]


> plot([f3(a),PLagrange(x4,y4,a)],a=-1..1);

> x5:=[seq(evalf(cos((2*i+1)/(2*3+2)*Pi)),i=0..3)];

149

Mdlina Roxana Buneci

x5 := [ 0.9238795325 , 0.3826834325 , -0.3826834325 , -0.9238795325 ]


> y5:=[seq(evalf(f3(cos((2*i+1)/(2*3+2)*Pi))),i=0..3)];

y5 := [ 0.5395042867 , 0.8722604187 , 0.8722604187 , 0.5395042867 ]


> plot([f3(a),PLagrange(x5,y5,a)],a=-1..1);

> plot([f3(a),PLagrange(x4,y4,a),PLagrange(x5,y5,a)],a=-1..1);

Reprezentm grafic func ia i polinoamele de interpolare corespunztoare nodurilor echidistante, pentru n = 3, 6, 9 pe intervalul [-5, 5]:
> x_3:=[seq([seq(-5+10*i/(3*j),i=0..3*j)],j=1..3)];

-5 5 -10 -5 5 10 -35 -25 -5 -5 5 5 25 35 x_3 := -5, , , 5 , -5, , , 0, , , 5 , -5, , , , , , , , , 5 3 3 3 3 3 3 9 9 3 9 9 3 9 9


> y_3:=[seq([seq(evalf(f3(-5+10*i/(3*j))),i=0..3*j)],j=1..3)];

150

Metode Numerice

y_3 := [ [ 0.03846153846 , 0.2647058824 , 0.2647058824 , 0.03846153846 ], [ 0.03846153846 , 0.08256880734 , 0.2647058824 , 1., 0.2647058824 , 0.08256880734 , 0.03846153846 ], [ 0.03846153846 , 0.06202143951 , 0.1147308782 , 0.2647058824 , 0.7641509434 , 0.7641509434 , 0.2647058824 , 0.1147308782 , 0.06202143951 , 0.03846153846 ] ]
> plot([f3(a),seq(PLagrange(x_3[j],y_3[j],a), j=1..3)],a=-5..5);

Reprezentm grafic func ia i polinoamele de interpolare corespunztoare nodurilor Cebev pentru n = 3, 6, 9 pe intervalul [-5, 5]:
> x_c3:= [seq([seq(evalf(5*cos((2*i+1)/(6*j+2)*Pi)),i=0..3*j)],j=1..3)];

x_c3 := [ [ 4.619397662 , 1.913417162 , -1.913417162 , -4.619397662 ], [ 4.874639561, 3.909157412 , 2.169418697 , 0., -2.169418697 , -3.909157412 , -4.874639561 ], [ 4.938441703 , 4.455032621 , 3.535533905 , 2.269952498 , 0.7821723260 , -0.7821723260 , -2.269952498 , -3.535533905 , -4.455032621 , -4.938441703 ] ]
> y_c3:= [seq([seq(evalf(f3(5*cos((2*i+1)/(6*j+2)*Pi))),i=0..3*j)],j=1..3)];

y_c3 := [ [ 0.04476509230 , 0.2145386291 , 0.2145386291 , 0.04476509230 ], [ 0.04038427927 , 0.06141935837 , 0.1752425253 , 1., 0.1752425253 , 0.06141935837 , 0.04038427927 ], [ 0.03938836726 , 0.04796780633 , 0.07407407407 , 0.1625306849 , 0.6204268538 , 0.6204268538 , 0.1625306849 , 0.07407407407 , 0.04796780633 , 0.03938836726 ] ]
> plot([f3(a),seq(PLagrange(x_c3[j],y_c3[j],a), j=1..3)],a=-5..5);

151

Mdlina Roxana Buneci

Reprezentm grafic func ia i polinoamele de interpolare corespunztoare nodurilor echidistante, respectiv nodurilor Cebev pentru n = 9 pe intervalul [-5, 5]:
> plot([f3(a),PLagrange(x_3[3],y_3[3],a), PLagrange(x_c3[3],y_c3[3] ,a)],a=-5..5);

Reprezentm grafic func ia i polinoamele de interpolare corespunztoare nodurilor echidistante, pentru n = 5, 10, 15 pe intervalul [-5, 5]:
> x_5:=[seq([seq(-5+10*i/(5*j),i=0..5*j)],j=1..3)];

152

Metode Numerice

x_5 := [ -5, -3, -1, 1, 3, 5 ], [ -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5 ], -5, -13, -11, -3, -7, -5, -1, -1, 1, 1, 5, 7, 3, 11, 13, 5 3 3 3 3 3 3 3 3 3 3
> y_5:=[seq([seq(evalf(f3(-5+10*i/(5*j))),i=0..5*j)],j=1..3)];

y_5 := [ [ 0.03846153846 , 0.1000000000 , 0.5000000000 , 0.5000000000 , 0.1000000000 , 0.03846153846 ], [ 0.03846153846 , 0.05882352941 , 0.1000000000 , 0.2000000000 , 0.5000000000 , 1., 0.5000000000 , 0.2000000000 , 0.1000000000 , 0.05882352941 , 0.03846153846 ], [ 0.03846153846 , 0.05056179775 , 0.06923076923 , 0.1000000000 , 0.1551724138 , 0.2647058824 , 0.5000000000 , 0.9000000000 , 0.9000000000 , 0.5000000000 , 0.2647058824, 0.1551724138 , 0.1000000000 , 0.06923076923 , 0.05056179775 , 0.03846153846 ] ]
> plot([f3(a),seq(PLagrange(x_5[j],y_5[j],a), j=1..3)],a=-5..5);

Reprezentm grafic func ia i polinoamele de interpolare corespunztoare nodurilor Cebev pentru n = 5, 10, 15 pe intervalul [-5, 5]:
> x_c5:= [seq([seq(evalf(5*cos((2*i+1)/(10*j+2)*Pi)),i=0..5*j)], j=1..3)];

153

Mdlina Roxana Buneci

x_c5 := [ [ 4.829629132 , 3.535533905 , 1.294095226, -1.294095226 , -3.535533905 , -4.829629132 ], [ 4.949107210 , 4.548159976 , 3.778747872 , 2.703204086, 1.408662782 , 0., -1.408662782 , -2.703204086 , -3.778747872 , -4.548159976 , -4.949107210 ], [ 4.975923634 , 4.784701678 , 4.409606322 , 3.865052266, 3.171966420 , 2.356983682 , 1.451423384 , 0.4900856985 , -0.4900856985 , -1.451423384 , -2.356983682 , -3.171966420 , -3.865052266 , -4.409606322 , -4.784701678 , -4.975923634 ] ]
>y_c5:= [seq([seq(evalf(f3(5*cos((2*i+1)/(10*j+2)*Pi))),i=0..5*j)], j=1..3)];

y_c5 := [ [ 0.04110943251 , 0.07407407407 , 0.3738761582 , 0.3738761582 , 0.07407407407 , 0.04110943251 ], [ 0.03922543546 , 0.04611321154 , 0.06544958589 , 0.1203758761 , 0.3350834928 , 1., 0.3350834928 , 0.1203758761 , 0.06544958589 , 0.04611321154 , 0.03922543546 ], [ 0.03882015305, 0.04185261408 , 0.04891260454 , 0.06274065346 , 0.09040470686 , 0.1525466423 , 0.3218922278 , 0.8063319688 , 0.8063319688 , 0.3218922278 , 0.1525466423 , 0.09040470686 , 0.06274065346 , 0.04891260454 , 0.04185261408 , 0.03882015305 ] ]
> plot([f3(a),seq(PLagrange(x_c5[j],y_c5[j],a), j=1..3)],a=-5..5);

Reprezentm grafic func ia i polinoamele de interpolare corespunztoare nodurilor echidistante, respectiv nodurilor Cebev pentru n = 15 pe intervalul [-5, 5]:
>plot([f3(a),PLagrange(x_5[3],y_5[3],a), PLagrange(x_c5[3],y_c5[3], a)], a=-5..5);

154

Metode Numerice

(n) (n) n Fie f : [a, b] R i un ir de diviziuni n = ( x 0 , x1 , , x ( ) ) ale n


intervalului [a, b], n 0. Pentru fiecare n se construiete polinomul de interpolare Pn

(n) (n) n (n) (n) n asociat nodurilor x 0 , x1 , , x ( ) i valorilor f x 0 , f x1 , , f x ( ) . n n


Se pune problema convergen ei punctuale sau uniforme a lui Pn la f. n general, Pn nu converge la f, ns dac f este o func ie ntreag real irul de polinoame Pn converge uniform la f. n cele ce urmeaz vom considera trei func ii f1, f3 : R R, definite mai sus precum i f4 : R R respectiv f4(x) = |x|.
> f4:=x->abs(x);

( ) ( )

( )

f4 := abs Vom vizualiza comportarea polinoamelor de interpolare (sub forma Lagrange) L0,

(n) (n) n (n) (n) L1,...,Ln asociate unor noduri x 0 , x1 , , x ( ) i valorilor f x 0 , f x1 , , n


n f x ( ) (cu exemplificri pentru f {f1, f2, f3}). n

( ) ( )

( )

155

Mdlina Roxana Buneci

Procedura grafic_polinoame de mai jos reprezint grafic n + 1 polinoamele de interpolare L0, L1, ..., Ln. Parametrul tip al procedurii determin ce fel de noduri se vor folosi (n + 1 noduri echidistante dac tip = 1 i n + 1 noduri Cebev altfel). Ceilal i parametri ai procedurii sunt func ia f (care se aproximeaz prin polinoame de interpolare), capetele intervalului [a, b] i n care indic numrul de noduri (n+1).
> grafic_polinoame:=proc(f,a,b,tip,n) > local xn,yn,titlu,legenda; > if tip=1 then xn:=[seq(noduri_echidistante(a,b,j),j=0..n)] > else xn:=[seq(noduri_Cebisev(a,b,j),j=0..n)] fi; > yn:=[seq(map(f,xn[j]),j=1..n+1)]; > titlu:=cat(f,`:=x->`,convert(f(x),string) ,`; x0, > convert(n,string),` noduri `); > if tip=1 then titlu:=cat(titlu, `echidistante `) > else titlu:=cat(titlu, `Cebisev `) fi; > titlu:=cat(titlu, `in intervalul [`, convert(a,string), `, `,convert(b,string),`]`);titlu:=cat(titlu,`\ny0=`,f,`(x0), f,`(x1), `)`); > titlu:=cat(titlu, x0, x1, `\nL i = polinomul de interpolare asociat ... , y1=`, x1, ..., x`,

y`,convert(n,string),`=`,f,`(x`,convert(n,string),

nodurilor y1,

...,x `,convert(i,string),` si valorilor y0, `, i =0..`,convert(n,string));

...,y`,convert(i,string),

> legenda:=f,seq(cat(`L `,convert(j,string)),j=0..n); > plot([f(t),seq(polinom_Lagrange(xn[j],yn[j],t),j=1..n+1)], > t=a..b,labels=[X,Y],color=[COLOR(RGB,1,0,0),seq(COLOR(RGB,(1> floor(log[5](j))/(floor(log[5](n))+1))*irem(irem(j,7)+1,2),(1> floor(log[5](j))/(floor(log[5](n))+1))*irem(iquo(irem(j,7)+1,2), 2),(1-floor(log[5](j))/(floor(log[5](n))+1))*irem(iquo(irem(j,7)+1, 4),2)),j=1..n+1)],thickness=[2,seq(1,j=0..n)],legend=[legenda], title=titlu,xtickmarks=map(evalf,xn[n]),ytickmarks=map(evalf,yn[n]) ); > end;

Aplicm procedura pentru func ia f1 pe intervalele [0, 2], [-, 3] , func ia f3 pe intervalul [-3, 3] i func ia f4 pe intervalul [-1, 1]. n toate cazurile n = 10 i se consider dou variante: noduri echidistante i noduri Cebev.
> grafic_polinoame(f1,0,2*Pi,1,10);

156

Metode Numerice

> grafic_polinoame(f1,0,2*Pi,2,10);

> grafic_polinoame(f1,-Pi,3*Pi,1,10);

157

Mdlina Roxana Buneci

> grafic_polinoame(f1,-Pi,3*Pi,2,10);

> grafic_polinoame(f3,-3,3,1,10);

158

Metode Numerice

> grafic_polinoame(f3,-3,3,2,10);

> grafic_polinoame(f4,-1,1,1,10);

159

Mdlina Roxana Buneci

> grafic_polinoame(f4,-1,1,2,10);

160

Metode Numerice

VI. 1.5. Polinomul Newton de interpolare de spe a I (ascendent)


Fie f : [a, b] R o func ie, fie x0, x1, , xn n+1 puncte distincte din intervalul [a, b], i yi = f(xi) pentru orice i = 0,1,n. Punctele x0, x1, , xn se presupun echidistante, adic xi = x0 + ih, i = 0,1, , n h 0 fiind pasul re elei. Se construiesc iterativ polinoamele Pi, i= 0, 1, ..., n astfel nct pentru fiecare i, Pi s fie polinomul de interpolare asociat nodurilor x0, x1, , xi i valorilor y0, y1, , yi. Construc ia se face dup cum urmeaz P0(x) = y0 Pi+1(x) = Pi(x) + ci+1(x-x0)(x-x1)...(x-xi), i =0, 1,..., n-1, unde ci+1 se determin din condi ia Pi+1(xi+1) = yi+1. Ca urmare polinomul de interpolare asociat nodurilor x0, x1, , xn i valorilor y0,y1, , yn poate fi scris sub forma Pn(x) = c0 + c1(x-x0) + c2(x-x0)(x-x1) + .... + cn(x-x0)(x-x1)...(x-xn-1) Pentru exprimarea coeficien ilor c0, c1, , cn este necesar cunoaterea no iunilor de putere generalizat i diferen finit. Fie f : [a, b] R o func ie, i fie re eaua cu nodurile echidistante x0, x1, , xn, avnd pasul h > 0. Produsul x[n] = x(x-h)(x-(n-1)h) se numete putere generalizat a lui x. Dac h ar fi 0, atunci puterea generalizat ar coincide cu puterea obinuit. Expresia

f(x) = f(x+h) - f(x)


se numete diferen finit (la dreapta) de ordinul nti. Diferen ele finite de

ordin superior se definesc cu ajutorul rela iei:


nf(x) = (n-1f(x))
Se verific cu uurin rela iile

(f+g) = (f) +(g) (cf) = c(f) (m+n)(f) = m(nf).

161

Mdlina Roxana Buneci

Pentru aplica ii, calculul diferen elor finite este comod dac se construiete tabelul triunghiular urmtor: f(x0) f(x1) f(x2) f(x3) f(xn-3) f(xn-2) f(xn-1) f(xn)

f(x0) f(x1) f(x2) 2f(x0) 2f(x1) 3f(x0)

f(xn-3) f(xn-2) f(xn-1) 2f(xn-3) 2f(xn-2) 3f(xn-3)

nf(x0)
Astfel

f (x 0 ) = f (x1 ) f (x 0 ) 2f (x 0 ) = f (x1 ) f (x 0 ) = f (x 2 ) f (x1 ) (f (x1 ) f (x 0 )) = f (x 2 ) 2f (x1 ) + f (x 0 ) 3f (x 0 ) = 2f (x1 ) 2f (x 0 ) = f (x 3 ) 3f (x 2 ) + 3f (x1 ) + f (x 0 )


Se poate demonstra uor prin induc ie c

n f ( x ) = ( 1) Cin f ( x + ( n i ) h )
i=0

dar n aplica ii se va folosi tabelul diagonal de mai sus. Pentru determinarea unui coeficientul ci al polinomului de interpolare Pn se utilizeaz diferen a finit de ordinul i a lui Pn n x0. innd cont de Pi+1(x) = Pi(x) + ci+1(x-x0)(x-x1)...(x-xi), i =0, 1,..., n-1, se ob ine ci+1 = yi +1 Pi (x i+1 ) (i + 1)!h i+1 .

i se poate art inductiv c


ci+1 = (i + 1)!h i +1

i +1f (x 0 )

, i = 0, 1, ..., n-1.

162

Metode Numerice

Aadar

Pn (x) = f (x 0 ) + + ... +

f (x 0 ) 2f (x 0 ) 3f (x 0 ) 1 2 x x 0 )[ ] + x x 0 )[ ] + ( ( ( x x 0 )[3] + .... + 2 3 1!h 2!h 3!h


n

n f (x 0 )

n!h Expresia polinomului de interpolare de mai sus poart denumirea de polinom


Newton de spe a I (sau ascendent ). Expresia polinomului Newton se poate pune
sub o form mai comod pentru aplica ii, dac se face schimbarea de variabil

( x x 0 )[ n ]

t=
i se ine seama c

x x0 h

( x x 0 )[i] = ( x x 0 ) ( x x 0 h ) ( x x 0 2h ) .... ( x x 0 (i 1)h )


hi h h h h

= t ( t 1)( t 2 ) .... ( t i + 1)

pentru orice i = 1,2,,n. Se ob ine

Pn (x) = Pn (x 0 + th) = f (x 0 ) + f (x 0 ) 2f (x 0 ) 3f (x 0 ) t+ t(t 1) + t(t 1)(t 2) + 1! 2! 3!

n f (x 0 ) t(t 1)...(t n + 1) + .... + n! Dac se efectueaz calculele n aritmetica virgulei mobile, aproximarea func iei f prin polinomul Newton ascendent este avantajoas pentru valorile x din vecintatea lui x0, eroarea fiind mic pentru t n modul mic.

Algoritm pentru determinarea polinomului Newton ascendent


Date de intrare: x0- primul punct din re ea h pasul re elei y lista ce con ine valorile func iei n punctele re elei. y0 y1 yn yi = f(xi) =f(x0 + ih), i = 0,1,, n x punctul n care se evalueaz polinomul.
163

Mdlina Roxana Buneci

Date de ieire: px - valoarea polinomului n x px : =y0; t : = (x-x0)/h; u: = 1; pentru i = 1,n,1 executa pentru j =0,n-i,1 executa yj := yj+1 yj; u :=u*(t-i+1)/i; px:=px+u*y0 ;

Procedur MAPLE pentru calculul valorii polinomului Newton de spe a I (ascendent)


> PNewton1 := proc(x0, h, y, x) > local t, u, yl, i, j,n, px; > n:=nops(y); > yl := [seq(y[i],i=1..n)]; > px := yl[1]; > t := (x - x0)/h; > u := 1; > for i from 1 to n-1 do

> for j from 0 to n-1-i do > yl[j + 1] := yl[j + 2] - yl[j+1] > od; > u := u*(t i + 1)/i; > px := px + u*yl[1] od; > RETURN(px) > end;

> f1:=x->x*cos(x);

f1 := x x cos( x )
> x1:=[seq(2*Pi/3*i,i=0..3)];

2 , 4 , 2 x1 := 0, 3 3
> y1:=[seq(f1(2*Pi/3*i),i=0..3)];

2 y1 := 0, , , 2 3 3
164

Metode Numerice > PNewton1(0,2*Pi/3,y1,X);

3X 3X 3X 2 1 2 2 X + 2 4
> sort(expand(PNewton1(0,2*Pi/3,y1,X)));

27 X 3 27 X 2 +X 8 16 2
> with(plots):

> plot([f1(a),PNewton1(0,2*Pi/3,y1,a)],a=0..2*Pi);

> plot([f1(a),PNewton1(0,2*Pi/3,y1,a)],a=-Pi..3*Pi);

165

Mdlina Roxana Buneci

VI.1.6. Polinomul Newton de interpolare de spe a II (descendent)


Fie f : [a, b] R o func ie, fie x0, x1, , xn n+1 puncte distincte din intervalul [a, b], i yi = f(xi) pentru orice i = 0,1,n. Punctele x0, x1, , xn se presupun echidistante, adic xi = x0 + ih, i = 0,1, , n h fiind pasul re elei. Se construiesc iterativ polinoamele Pi, i= 0, 1, ..., n astfel nct pentru fiecare i, Pi s fie polinomul de interpolare asociat nodurilor xn, xn-1, , xni+1

i valorilor yn, yn-1, , yn-i+1. Construc ia se face dup cum urmeaz


P0(x) = yn Pi+1(x) = Pi(x) + ci+1(x-xn)(x-xn-1)...(x-xn-i+1), i =0, 1,..., n-1,

unde ci+1 se determin din condi ia Pi+1(xn-i) = yn-i. Ca urmare polinomul de interpolare asociat nodurilor x0, x1, , xn i valorilor y0,y1, , yn poate fi scris sub forma Pn(x) = c0 + c1(x-xn) + c2(x-xn)(x-xn-1) + .... + cn(x-xn)(x-xn-1)...(x-x1)

166

Metode Numerice

Pentru exprimarea coeficien ilor c0, c1, , cn este necesar cunoaterea no iunii de diferen finit la stnga. Expresia f(x) = f(x) - f(x-h) se numete diferen finit (la stnga) de ordinul nti. Diferen ele finite la

stnga de ordin superior se definesc cu ajutorul rela iei:


nf(x) = (n-1f(x)) Se observ c f(x) = f(x-h). n aplica ii, pentru calculul diferen elor finite la stnga se utilizeaz tabelul triunghiular urmtor: f(x0) f(x1) f(x2) f(x3) f(xn-3) f(xn-2) f(xn-1) f(xn) f(x1) f(x2) f(x3) 2f(x2) 2f(x3) 3f(x3) f(xn-2) f(xn-1) f(xn) 2f(xn-2) 2f(xn) 3f(xn)

nf(xn) Pentru determinarea unui coeficient ci al polinomului de interpolare Pn se utilizeaz diferen a finit de ordinul i a lui Pn n xn. Se ob ine:

Pn (x) = f (x n ) + + .... +

f (x 0 ) 2f (x n ) 3f (x n ) ( x x n )[1] + ( x x n 1 )[ 2] + ( x x n 2 )[3] + 2 3 1!h 2!h 3!h n!h


n

n f (x n )

( x x1 )[ n ]

Expresia polinomului de interpolare de mai sus poart denumirea de polinom

Newton de spe a II (sau descendent ). Expresia polinomului Newton descendent se


poate pune sub o form mai comod pentru aplica ii, dac se face schimbarea de variabil

t=
Se ob ine

x xn h

167

Mdlina Roxana Buneci

Pn (x) = Pn (x n + th) = f (x n ) + + .... + f (x n ) 2f (x n ) 3f (x n ) t+ t(t + 1) + t(t + 1)(t + 2) + 1! 2! 3!

n f (x n ) t(t + 1)...(t + n 1) n!

Dac se efectueaz calculele n aritmetica virgulei mobile, aproximarea func iei f prin polinomul Newton descendent este avantajoas pentru valorile x din vecintatea lui xn, eroarea fiind mic pentru t n modul mic.

Algoritm pentru determinarea polinomului Newton descendent


Date de intrare: xn- ultimul punct din re ea h pasul re elei y lista ce con ine valorile func iei n punctele re elei. y0 y1 yn yi = f(xi) =f(x0 + ih), i = 0,1,, n x punctul n care se evalueaz polinomul. Date de ieire: px - valoarea polinomului n x px : =yn; t : = (x-xn)/h; u: = 1; pentru i = 1,n,1 executa pentru j =n,i,1 executa yj := yj yj-1; u :=u*(t+i-1)/i; px:=px+u*yn ;

Procedur MAPLE pentru calculul valorii polinomului Newton de spe a I (ascendent)


> PNewton2 := proc(xn, h, y, x) > local t, u, yl, i, j,n, px; > n:=nops(y); > yl := [seq(y[i],i=1..n)]; > px := yl[n]; > t := (x - xn)/h;

168

Metode Numerice > u := 1; > for i from 1 to n-1 do

> for j from n-1 by -1 to i do > yl[j+1] := yl[j+1] - yl[j] > od; > u := u*(t + i - 1)/i; > px := px + u*yl[n] od; > RETURN(px) > end;

Exemple
> f1:=x->x*cos(x);

f1 := x x cos( x )
> x1:=[seq(2*Pi/3*i,i=0..3)];

2 , 4 , 2 x1 := 0, 3 3
> y1:=[seq(f1(2*Pi/3*i),i=0..3)];

2 y1 := 0, , , 2 3 3
> PNewton2(2*Pi,2*Pi/3,y1,X);

3 (X 2 ) 9 (X 2 ) + 1 2 6 + 4 X + 4 3 (X 2 ) 3 (X 2 ) 3 (X 2 ) + 1 + 2 2 2 + 4
> sort(expand(PNewton2(2*Pi,2*Pi/3,y1,X)));

27 X 3 27 X 2 +X 8 16 2
> with(plots):

> plot([f1(a),pnewton2(2*Pi,2*Pi/3,y1,a)],a=0..2*Pi);

169

Mdlina Roxana Buneci

> plot([f1(a),PNewton2(2*Pi,2*Pi/3,y1,a)],a=-Pi..3*Pi);

170

Metode Numerice

VI.1.7. Polinomul Newton cu diferen e divizate


Fie f : [a, b] R o func ie, fie x0, x1, , xn n+1 puncte distincte (nu neaprat echidistante) din intervalul [a, b], i yi = f(xi) pentru orice i = 0,1,n. Se construiesc iterativ polinoamele Pi, i= 0, 1, ..., n astfel nct pentru fiecare i, Pi s fie polinomul de interpolare asociat nodurilor x0, x1, , xi i valorilor y0, y1, , yi. Construc ia se face dup cum urmeaz P0(x) = y0 Pi+1(x) = Pi(x) + ci+1(x-x0)(x-x1)...(x-xi), i =0, 1,..., n-1, unde ci+1 se determin din condi ia Pi+1(xi+1) = yi+1. Ca urmare polinomul de interpolare asociat nodurilor x0, x1, , xn i valorilor y0,y1, , yn poate fi scris sub forma Pn(x) = c0 + c1(x-x0) + c2(x-x0)(x-x1) + .... + cn(x-x0)(x-x1)...(x-xn-1) Pentru exprimarea coeficien ilor c0, c1, , cn este necesar cunoaterea no iunii de diferen divizat. Expresia

f (x i , x j ) =

f (x j ) f (x i ) x j xi

, i j

se numete diferen divizat de ordinul nti. Diferen ele divizate de ordin 2 se definesc cu ajutorul diferen elor divizate de ordinul nti: f (x i , x j , x k ) = f (x j , x k ) f (x i , x j ) x k xi

Cunoscnd diferen ele divizate de ordinul m, diferen ele divizate de ordinul m+1 se definesc prin: f (x i 1, x i , x i+1,..., x i+ m ) = f (x i , x i+1,..., x i+ m ) f (x i 1, x i ,..., x i + m1 ) x i + m x i1

n consecin , polinomul de interpolare asociat nodurilor x0, x1, , xn i valorilor y0,y1, , yn poate fi scris sub forma Pn (x) = f (x 0 ) + f (x 0 , x1 )(x x 0 ) + f (x 0 , x1 , x 2 )(x x 0 )(x x1 ) + + .... + f (x 0 , x1 ,..., x n )(x x 0 )(x x1 )...(x x n 1 )

171

Mdlina Roxana Buneci

Pentru aplica ii, calculul diferen elor divizate este comod dac se construiete tabelul triunghiular urmtor: f(x0) f(x1) f(x2) f(x3) f(xn-2) f(xn-1) f(xn) f(xn-1,xn) f(x0,x1) f(x1,x2) f(x2,x3) f(xn-2,xn-1)

f(x0,x1,x2) f(x1, x2,x3) f(x0,x1,....,xn)

f(xn-2,xn-1,xn)

Algoritm pentru determinarea polinomului Newton cu diferen e divizate


Date de intrare: x list ce con ine cele n+1 puncte distincte din intervalul [a, b] x0 y0 x1 y1 xn yn y lista ce con ine valorile func iei n punctele x0, x1, ...., xn yi = f(xi), i = 0,1,, n a punctul n care se evaluaez polinomul. Date de ieire: v - valoarea polinomului n a v : =y0; u:= 1; pentru i = 0,n-1,1 executa pentru j = 0,n-i-1,1 executa yj := (yj+1 yj)/(xj+i+1 xj); u :=u*(a-xi); v:=v+u*y0 ;

Procedur MAPLE pentru calculul valorii polinomului Lagrange


> PNewtond := proc(x, y, a) > local t, u, y1,i, j,n, v; > n:=nops(y);

172

Metode Numerice > y1 := [seq(y[i],i=1..n)]; > v := y1[1]; > u := 1; > for i from 0 to n-2 do > for j from 0 to n-2-i do > y1[j+1]:=(y1[j+2]-y1[j+1])/(x[j+i+2]-x[j+1]) ; > od; > u := u*(a-x[i+1]); v := v + u*y1[1]; > od; > RETURN(v) > end;

Exemple
> f1:=x->x*cos(x);

f1 := x x cos( x )
> x1:=[seq(2*Pi/3*i,i=0..3)];

2 , 4 , 2 x1 := 0, 3 3
> y1:=[seq(f1(2*Pi/3*i),i=0..3)];

2 y1 := 0, , , 2 3 3
> PNewtond(x1,y1,X);

X + 2

2 4 27 X X X 3 3 16 2

> sort(expand(PNewtond(x1,y1,X)));

27 X 3 27 X 2 +X 8 16 2
> with(plots):

> plot([f1(a),PNewtond(x1,y1,a)],a=0..2*Pi);

173

Mdlina Roxana Buneci

> plot([f1(a),PNewtond(x1,y1,a)],a=-Pi..3*Pi);

174

Metode Numerice

VI.2. Metoda celor mai mici ptrate


Fie f : [a, b] R o func ie i fie x0, x1, , xn n+1 puncte distincte din intervalul [a, b] pentru care se cunosc valorile func iei yi = f(xi) pentru orice i = 0,1,n. Aproximarea func iei f printr-un polinom de interpolare nu este indicat n urmtoarele situa ii: ptrate. cnd n este un numr foarte mare, ceea ce determin un volum mare de calcul pentru determinarea coeficien ilor de interpolare cnd valorile yi = f(xi) nu sunt exacte. n aceste situa ii se poate folosi aproximarea func iei prin metoda celor mai mici

VI.2.1. Caracterizarea elementelor de cea mai bun aproximare pe subspa ii Hilbert. Defini ie. Fie (S, d) un spa iu metric i X o submul ime a sa. Fie x0 un
element al lui S. Se numete element de cea mai bun aproximare a lui x0 pe X un element p0X astfel nct d(p0, x0) = inf d(x, x0)
xX

Reamintim c orice spa iu pre-Hilbert H (spa iu vectorial real sau complex nzestrat cu un produs scalar < , >) este n particular un spa iu metric (distan a d este definit prin d(x,y) = || x y || = x y, x y pentru orice x, yH). n acest

caz dac X o submul ime a lui H i x0H, atunci un element p0X este element de cea mai bun aproximare pentru x0 pe X dac

p0 x 0 = inf x x 0 = inf
xX

xX

x x0 , x x0

175

Mdlina Roxana Buneci

Teorem 6.2. Fie H un spa iu pre-Hilbert (real sau complex), H0 un


subspa iu vectorial al su i x0 H. Dac exist un element de cea mai bun aproximare a lui x0 pe H0, atunci acesta este unic. Demonstra ie. Presupunem prin absurd c exist p1 p2 elemente de cea mai bun aproximare a lui x0 pe H0. Deoarece H0 este subspa iu vectorial al lui H, rezult c p = p1 +
1 2 1 2 1 2 p H0. Avem 2 1 2 0 2 1 p -x || = || p1 x0 + p2 x0||2 < 2 4
1 4

||p-x0||2 = || p1 + <
1 4

|| p1 x0 + p2 x0||2 +

|| p1 x0 (p2 x0)||2

= (|| p1 x0 ||2 + || p2 x0||2)

1 2

|| p1 x0 ||2.
Deci p H0 i ||p-x0|| < || p1 x0 ||, contradic ie cu faptul c p1 este element de cea mai bun aproximare a lui x0 pe H0. Rezult c presupunerea este fals, i n consecin elementul de cea mai bun aproximare este unic.

Teorem 6.3. Fie H un spa iu pre-Hilbert, H0 un subspa iu liniar al lui H i


x0 H. Un element p0 H0 este element de cea mai bun aproximare a lui x0 pe H0 dac i numai dac p0-x0H0 (sau echivalent, < p0-x0, x> = 0 pentru orice xH0). Demonstra ie. Presupunem c p0-x0H0 i demonstrm c p0 H0 este element de cea mai bun aproximare a lui x0 pe H0. Dac p0 = x0, atunci este evident c p0 este element de cea mai bun aproximare a lui x0 pe H0. Presupunem c p0 x0. Deoarece < p0-x0, x> = 0 pentru orice xH0, atunci n particular, <p0-x0, p0> = 0

i ca urmare < p0-x0, p0 - x> = 0 pentru orice xH0. Pentru un xH0 oarecare, avem
||p0-x0||2 = < p0-x0, p0 -x0> = < p0 -x0, p0 - x + x - x0>
= < p0-x0, p0 - x> + < p0 -x0, x- x0> = < p0-x0, x- x0> = |< p0-x0, x- x0>| || p0-x0|| || x- x0||. Deci ||p0-x0||2 || p0-x0|| || x- x0|| pentru orice xH0. mpr ind inegalitatea cu
176

Metode Numerice

|| p0 -x0|| > 0,
ob inem

||p0-x0|| || x- x0|| pentru orice xH0,


adic p0 X este element de cea mai bun aproximare a lui x0 pe H0. Presupunem c p0 H0 este element de cea mai bun aproximare a lui x0 pe H0 i demonstrm c <p0-x0, x> = 0 pentru orice xH0. Presupunem prin absurd c exist y0H0 astfel nct

<p0-x0, y0> 0.
Scriind <p0-x0, y0> = r (cos + isin)= rei cu r>0 i [0, 2], rezult c nlocuind y0 cu eiy0 H0, putem presupune c exist y0H0 astfel nct

<p0-x0, y0> > 0.


Pentru orice > 0, avem p0 - y0 H0, deoarece H0 este subspa iu vectorial. n plus avem

||p0 - y0 x0||2 = < p0 - y0 x0, p0 - y0 x0>


= < (p0 x0) - y0, (p0 x0) - y0> = || p0 x0||2 - <y0, p0-x0> -< p0-x0, y0> + 2|| y0||2 =|| p0 x0||2 + (|| y0||2 2 < p0-x0, y0>) n consecin pentru orice scalar cu proprietatea c 0<< 2

p 0 x 0 , y0 y0
2

avem ||p0 - y0 x0||2 < || p0 x0||2 i p0 - y0 H0. Am ob inut astfel o contradic ie cu faptul c p0 este element de cea mai bun aproximare a lui x0 pe H0. n consecin , presupunerea este fals i deci

<p0 -x0, x> = 0


pentru orice xH0.

177

Mdlina Roxana Buneci

VI. 2.2. Aproximarea n medie prin metoda celor mai mici ptrate
Considerm mul imea func iilor definite pe intervalul [a, b],

F : = {f : [a, b] R } i n+1 puncte distincte x0, x1, , xn din intervalul [a, b]. Spunem c func iile f i g din aceast mul ime sunt egale aproape peste tot (i vor fi identificate) dac f(xi) = g(xi) pentru orice i = 0,1,, n. Mai precis, f ~ g f(xi) = g(xi) pentru orice i = 0,1,, n, definete o rela ie de echivalen pe F. Notm [f] = {g: f ~ g} = { g : [a, b] R, f(xi) = g(xi) pentru orice i = 0,1,, n} clasa de echivalen a lui f. Notm cu cu H mul imea claselor de echivalen relativ la rela ia de echivalen de mai sus. H poate fi nzestrat cu o opera ie de grup abelian dup cum urmeaz: [f] + [g] : = [h], unde h : [a, b] R, h(x) = f(x) + g(x) pentru orice x[a, b]. Artm c defini ia nu depinde de reprezentan i. Fie f1 ~ f2, g1 ~ g2 i pentru i=1,2 fie hi:[a,b]R, hi(x) = fi(x) + gi(x) pentru orice x[a, b]. Avem h1(xj) = f1(xj) + g1(xj) = f2(xj) + g2(xj) = h2(xj) pentru orice j = 0,1,, n. Ca urmare h1 ~ h2, adic [h1] = [h2]. Evident opera ia definit mai sus este asociativ i comutativ. Dac notm o: [a, b] R, o(x) = 0 pentru orice x[a, b], atunci [o] este element neutru. Pentru orice [h], [-h] este simetricul fa de +, unde -h: [a, b] R, (-h)(x) = -h(x) pentru orice x[a, b]. De asemenea H poate fi nzestrat cu o opera ie extern de nmul ire cu scalari reali dup cum urmeaz: [f]: = [h], unde h : [a, b] R, h(x) = f(x) pentru orice x[a, b]. Este uor de observat c defini ia nu depinde de reprezentan i. H nzestrat cu cele dou opera ii definite mai sus devine spa iu vectorial. Fie p o func ie cu urmtoarele propriet i: p(xi) > 0

p(x i ) =1.
i =0

178

Metode Numerice

Dac f1 ~ f2 i g1 ~ g2 atunci

i=0

p ( xi ) f1 ( xi )g1 ( xi )

i=0

p ( xi ) f2 ( xi )g 2 ( xi ) .

Introducem urmtorul produs scalar pe H <[f], [g]> =

p(x i )f (x i )g(x i )
i=0

Func ia p(x) este o func ie pondere introdus n ipoteza c aproximrile f(xi) sunt diferite ca ordin de mrime. Relativ la produsul scalar introdus, norma lui [f] este definit prin

[f ] =

p(x i )f 2 (x i ) .
i =0

n cele ce urmeaz convenim s desemnm o clas de echivalen [f] printrun reprezentant al ei f. Fie 0, 1, m un sistem de m+1 func ii liniar independente definite pe [a,b], cu m n. Convenim s numim spa iul generat de ele spa iul polinoamelor generalizate i s-l notm Hm. Deci un polinom generalizat F Hm este de forma F(x) =

c i i (x ) .
i =0

Aproximarea n medie prin metoda celor mai mici ptrate a unui element fH presupune determinarea elementului de cea mai bun aproximare F0 a lui f pe Hm. Conform defini iei elementul F0 de cea mai bun aproximare a lui f pe Hm trebuie s satisfac condi ia
2 inf p(x i )(f (x i ) F0 (x i ))2 = FH m p(x i )(f (x i ) F(x i )) i=0 i =0 n n

Determinarea coeficien ilor cj ai polinomului generalizat F0 cu ajutorul acestei rela ii este dificil. Se folosete caraterizarea elementului de cea mai bun aproximare dat n sec iunea precedent. Mai precis F0Hm este element de cea mai bun aproximare a lui f pe Hm dac i numai dac <f F0, > = 0 pentru orice Hm. Deoarece {0, 1, ..., m} este o baz a lui Hm, pentru ca F0Hm s fie element de cea mai bun aproximare a lui f pe Hm este suficient ca <f F0, j> = 0 pentru orice j = 0, 1, 2m,

179

Mdlina Roxana Buneci

ceea ce revine la <f, j> = c0<0, j> + c1<1, j> + + cm<m, j>, j = 0, 1,,m. Notm aij = <i, j> =
n

p(x k ) i (x k ) j (x k )
k =0 n

bj = <f, j> = p(x k )f (x k ) j (x k )


k =0

Pentru determinarea coeficien ilor cj ai polinomului generalizat F0 se rezolv sistemul c0a00 + c1a10 + + cmam0 = b0 c0a01 + c1a11 + + cmam1 = b1 c0a0m + c1a1m + + cmamm = bm Determinantul acestui sistem fiind un determinant Gramm (elementele sale sunt produse scalare) este diferit de zero, deoarece sistemul de func ii 0, 1, m este un sistem liniar independent. Dac j(x) = xj, j =0, 1,, m, m n, i p
m

1 , atunci n +1

F0(x) =
iar sistemul anterior devine c0(n+1) + c1
m

ci x i .
i =0
m m

x i + + cm x im
i=0 m i =0 m

f (x i )
i=0 m

c0 x i + c1 x i2 + + cm x im +1 = x i f (x i )
i=0 i =0 i =0 i =0

c0 x im + c1 x im +1 + + cm x i2m =
i=0 i =0 i=0

x im f (x i )
i =0

Acest sistem este numit sistemul normal al lui Gauss.

180

Metode Numerice

Parametrii procedurii patrate_mici de mai jos sunt: x - lista celor n +1 puncte: x0, x1, , xn y - lista ce con ine valorile func iei f n ce n +1 puncte: x0, x1, , xn (y0 = f(x0), y1 =f(x1), .,yn =f(xn))

lista func iilor liniar independente 0, 1, m


p ponderea (lista) Procedura ntoarce o lista ce con ine coeficien ii polinomului generalizat ce aproximeaz f.
> patrate_mici:=proc(x,y,p,phi) > local n,m,i,k,j,a,b,c,ep,ei; > n:=nops(x)-1; > m:=nops(phi)-1; > b:=vector(m+1); > a:=matrix(m+1,m+1); > for i from 0 to m do > b[i+1]:=0;for k from 0 to n do > b[i+1]:=b[i+1]+y[k+1]*phi[i+1](x[k+1])*p[k+1] > od > od; > for i from 0 to m do > for j from i to m do > a[i+1,j+1]:=0; > for k from 0 to n do > a[i+1,j+1]:=a[i+1,j+1]+p[k+1]*phi[i+1](x[k+1])*phi[j+1](x[k+1]) > od; > a[j+1,i+1]:=a[i+1,j+1] > od; > od; > c:=vector(m+1); > c:=linsolve(a,b,'r'); > if r<m+1 then print(`Sistemul de functii nu este liniar independent`); RETURN(NULL) fi; > print(`Factorul de conditionare`,evalf(cond(a))); > ep:=0; > for i from 0 to n do ei:=y[i+1]; > for j from 0 to m do

181

Mdlina Roxana Buneci > ei:=ei-phi[j+1](x[i+1])*c[j+1] > od; > ei:=ei^2*p[i+1]; ep:=ep+ei > od; > print(`Suma patratelor erorilor (ponderate)`,evalf(ep)); > RETURN([seq(c[i],i=1..m+1)]) > end;

n exemplele ce urmeaz vom folosi i procedurile desen_puncte, baza_normal,

evalueaza i desen. Procedura desen_puncte reprezint grafic cele n+1 puncte date
ini ial: (x0, y0), (x1, y1), ..., (xn, yn). Procedura baza_normal primete drept paramentru un numr natural m i construiete lista func iilor 0, 1, m unde

j(x) = xj pentru orice x i orice j=0..m. Procedura evalueaza primete drept


parametri lista func iilor liniar independente 0, 1, m, lista coeficien ilor polinomului generalizat ce aproximeaz f i un punct a. Procedura returneaz valoarea polinomului generalizat n a. Procedura desen reprezint grafic n acelai sistem de axe de coordonate polinomul generalizat ce aproximeaz func ia i cele n+1 puncte date ini ial. Punctele sunt reprezentate prin elipse. Parametrii procedurii sunt func ia determinat de polinomul generalizat, lista x ce con ine punctele x0, x1, , xn, i i lista y ce con ine valorile func iei. nainte de a folosi aceste proceduri trebuie ncrcate pachetele linalg, plots i plottools.
> desen_puncte:=proc(xn,yn) > local n, d; > n:=nops(xn); > d:=pointplot([seq([xn[i],yn[i]],i=1..n)],symbol=CIRCLE, labels=[X,Y],color=COLOR(RGB,0,0,0),thickness=15);display(d) > end;

> baza_normal:=proc(n,t) > RETURN([unapply(1,t),seq(unapply(t^j,t),j=1..n)]) > end;

> evalueaza:=proc(phi,c,a) > local i,m,fx; > m:=nops(phi);fx:=0; > for i from 1 to m do

182

Metode Numerice > fx:=fx+phi[i](a)*c[i] od; > RETURN(fx) > end;

> desen:=proc(f,x,y) > local n,i,d1,d2,d3,x1,x2; > n:=nops(x); > x1:=min(seq(x[i],i=1..n));x2:=max(seq(x[i],i=1..n)); > d1:=pointplot([seq([x[i],y[i]],i=1..n)],symbol=CIRCLE, color=black,thickness=15); > d2:=plot(f(t),t=x1..x2,labels=[X,Y],xtickmarks=map(evalf,x), ytickmarks=map(evalf,y)); > d3:=d1,d2; > display(d3); > end;

Exemple
> x1:=[1,2,3,4,5,6];

x1 := [ 1, 2, 3, 4, 5, 6 ]
> y1:=[0.9,0.98,1.02,1.04,1.10,1.12];

y1 := [ 0.9, 0.98, 1.02, 1.04, 1.10, 1.12 ]


> p1:=[seq(1/6,i=1..6)];

1 1 1 1 1 1 p1 := , , , , , 6 6 6 6 6 6
> desen_puncte(x1,y1);

183

Mdlina Roxana Buneci > phi1:=baza_normal(1,x);

1 := [ 1, x x ]
> c1:=patrate_mici(x1,y1,p1,phi1);

Factorul de conditionare, 119.4666666 Suma patratelor erorilor (ponderate) , 0.0002069841270 c1 := [ 0.8786666680 , 0.0422857140 ]
> evalueaza(phi1,c1,x);

0.8786666680 + 0.0422857140 x
> desen((t->evalueaza(phi1,c1,t)),x1,y);

> phi2:=baza_normal(2,x);

2 := [ 1, x x, x x2 ]
> c2:=patrate_mici(x1,y1,p1,phi2);

184

Metode Numerice

Factorul de conditionare, 15157.80004 Suma patratelor erorilor (ponderate) , 0.0001109523809 c2 := [ 0.8419999980 , 0.0697857165 , -0.00392857178 ]
> evalueaza(phi2,c2,x);

0.8419999980 + 0.0697857165 x 0.00392857178 x2


> desen((t->evalueaza(phi2,c2,t)),x1,y1);

> phi3:=baza_normal(3,x);

3 := [ 1, x x, x x 2, x x3 ]
> c3:=patrate_mici(x1,y1,p1,phi3);

Factorul de conditionare, 0.3034682363 10 7

Suma patratelor erorilor (ponderate) , 0.00008095238089 c3 := [ 0.8000000130 , 0.1226190347 , -0.0214285678 , 0.001666666359 ]


> evalueaza(phi3,c3,x);

0.8000000130 + 0.1226190347 x 0.0214285678 x2 + 0.001666666359 x3


> desen((t->evalueaza(phi3,c3,t)),x1,y1);

185

Mdlina Roxana Buneci

VI. 2.3. Limitri ale metodei celor mai mici ptrate

Pentru determinarea coeficien ilor cj ai polinomului generalizat F0 se rezolv sistemul Ax = b, cu A = Xt X iar b = Xt Y, unde

p(x 0 ) 0(x0) X= p(x1 ) 0(x1)

p(x 0 ) 1(x0) p(x1 ) 1(x1)

... ...

p(x 0 ) m(xn) p(x1 ) m(x1)

p(x n ) 0(xn)
Iar

p(x n ) 1(xn)

...

p(x n ) m(xn)

186

Metode Numerice

p(x 0 ) f(x0) p(x1 ) f(x1) Y=

p(x n ) f(xn) Dac func iile 0, 1, m sunt liniar independente, atunci rang(X) = m+1

i matricea A este pozitiv definit. Ca urmare exist i este unic o matrice inferior
triunghiular L cu elementele de pe diagonala principal pozitive astfel nct A = LLt (matricea L se numete factor Cholesky). Rezolvarea sistemului Ax=b revine la rezolvarea a dou sisteme cu matrice triunghiulare: Lz =b, Ltx=z. O variant mai lent (volum de calcul mai mare), dar numeric mai stabil, de rezolvare a sistemului Ax = b este dat de descompunerea QR a matricei A, adic de reprezentarea matricei A sub forma A = QR unde Q este o matrice ortogonal (QtQ = Im+1) iar R o matrice superior triunghiular. Atunci rezolvarea sistemului Ax=b este echivalent cu rezolvarea sistemului Rx =Qtb. Dac A=XtX nu este bine condi ionat, atunci gradul de acurate e al solu iei furnizate de metoda celor mai mici ptrate poate fi foarte sczut.

187

Mdlina Roxana Buneci

188

Metode Numerice

VII. Derivarea numeric


Se recurge la aproximarea derivatei unei func ii f sau a derivatelor ei de ordin superior atunci cnd expresia lui f este prea complicat sau cnd nu se cunoate expresia analitic a func iei f (f este dat prin intermediul unui tabel de valori).

VII. 1. Formule de derivare aproximativ folosind dezvoltri n serie Taylor


Fie f : [a, b] R, derivabil. Presupunem c se dau n+1 puncte distincte n intervalul [a, b], x0, x1, ., xn, n care se cunosc valorile func iei f. Prezentm o tehnic de gsire a unor formule de aproximare pentru valorile derivatelor de orice ordin ale func iei f. Aceast tehnic are la baz formula lui Taylor. Reamintim aceast formul. Fie I un interval de numere reale, a I i f : I R o func ie de n ori derivabil n a. Polinomul Taylor de ordin n ataat lui f n punctul a este func ia polinomial Ta,n : I R, definit prin: Ta,n(x) = f(a) +
f ' (a ) f " (a ) f (n ) (a ) (x-a) + (x-a)2 + (x-a)n. 1! 2! n!

Restul formulei Taylor de ordin n ataat func iei f n punctul a este func ia
Ra,n : I R definit prin Ra,n(x) = f(x) - Ta,n(x). Egalitatea f(x) = Ta,n(x) + Ra,n(x) valabil pentru orice x I se numete formul Taylor de ordin n ataat func iei f n punctul a. Se demonstreaz c
x a

lim

R a,x

(x a )

= 0. Dac f este de clas Cn+1, atunci

189

Mdlina Roxana Buneci

exist u strict cuprins ntre a i x (sau echivalent exist (0, 1) astfel nct u = a+
(x a)) cu proprietatea c
f (n +1) (u ) (x - a)n+1. (n + 1)!

Ra,n(x) =

Ne propunem s aproximm valorile derivatelor de ordinul nti i doi ale func iei f n punctul xi [a, b] cnd sunt cunoscute valorile func iei n punctele xi-1, xi, xi+1 care nu sunt neaprat echidistante, adic: xi-1 = xi h, xi+1 = xi + h. dar c variaz ntr-un interval fixat. Presupunem c f este de 3 ori derivabil i scriem formula lui Taylor de ordinul 2 pentru f n xi:
f (x) = f (x i ) + f (x i ) f (x i ) f (w x ) (x x i ) + (x x i ) 2 + (x x i )3 . 1! 2! 3!

cu wx stric cuprins ntre x i xi. nlocuim n aceast formul x = xi-1, respectiv x = xi+1 i ob inem rela iile:

f (x i 1 ) = f (x i ) + f (x i+1 ) = f (x i ) +

f (x i ) f (x i )h 2 f (u) (h) + + (h)3 1! 2! 3! f (x i ) f (x i ) 2 2 f (v) 3 3 h + h + h 1! 2! 3!

(7.1) (7.2)

cu u strict cuprins ntre xi-1 i xi i v strict cuprins ntre xi i xi+1. Scznd din a doua rela ie prima rela ie nmul it cu 2 ob inem:
f (x i ) = f (x i+1 ) + f ( x i ) 2 1 2f (x i1 ) + h ( + 1)

f (v) 3 3 f (u) 3 2 h + h 3! 3!

Putem aproxima valoarea derivatei func iei f n xi prin:

f (x i )
cu eroarea:

f (x i+1 ) + f ( x i ) 2 1 2f (x i1 ) h ( + 1)

2 f (v) f (u) 2 = + h + 1 3! + 1 3!

190

Metode Numerice

care este de ordinul lui h2 (O(h2)). Adunnd la a doua rela ie prima nmul it cu ob inem: f (v) 3 3 f (u) 3 2 f (x i +1 ) + (1 + ) f (x i ) + f (x i 1 ) + h h 3! 3! . f (x i ) = 2 h ( + 1) Putem astfel aproxima valoarea derivatei de ordinul doi al lui f n xi prin

f (x i )
cu eroarea

2 ( f (x i +1 ) (1 + ) f (x i ) + f (x i1 ) ) h 2 ( + 1)

= de ordinul lui h: O(h).

h f (v) 2 f (u) 3 ( + 1) 3

Dac nodurile sunt echidistante (adic dac = 1) se ob in urmtoarele formule de aproximare: f (x i ) f (x i +1 ) f (x i 1 ) 2h

f (x i )

f (x i +1 ) 2f (x i ) + f (x i1 ) h2

n cazul nodurilor echidistante vom art c eroare de aproximare a derivatei de ordinul doi prin formula de mai sus este de ordinul O(h2). Folosind formula lui Taylor de ordinul 3 pentru f n xi, ob inem:

( 4 ) (u) f (x i ) f (x i )h 2 f (x i ) 3 f + f (x i 1 ) = f (x i ) + ( h) + ( h) + h4 1! 2! 3! 4!
f (x i ) f (x i ) 2 f (x i ) 3 f ( 4 ) (v) 4 f (x i +1 ) = f (x i ) + h+ h + h + h 1! 2! 3! 4! rela ii rezult:
4 4 f ( ) (v) 4 f ( ) (u) 4 f (x i +1 ) + 2f (x i ) + f (x i1 ) + h + h 4! 4! f (x i ) = h2

(7.3)

(7.4)

cu u strict cuprins ntre xi-1 i xi i v strict cuprins ntre xi i xi+1. Adunnd cele dou

astfel aproxima valoarea derivatei de ordinul doi al lui f n xi prin

191

Mdlina Roxana Buneci

f (x i )
cu eroarea

f (x i +1 ) 2f (x i ) + f (x i1 ) h2

f ( 4 ) (v) f ( 4 ) (u) h2 = + 4! 4!
de ordinul lui h2: O(h2). Ne propunem acum s aproximm valorile derivatelor de ordinul nti i doi ale func iei f n punctul xi [a, b] cnd sunt cunoscute valorile func iei n punctele xi, xi+1, xi+2 care nu sunt neaprat echidistante, adic: xi = xi+1 h, xi+2 = xi+1 + h. cu Presupunem c f este de 3 ori derivabil i scriem formula lui Taylor de ordinul 2 ataat lui f n xi:

f (x) = f (x i ) +

f (x i ) f (x i ) f (w x ) (x x i ) + (x x i )2 + (x x i )3 . 1! 2! 3!

cu wx stric cuprins ntre x i xi. nlocuim n aceast formul x = xi+1, respectiv x = xi+2 i ob inem rela iile: f (x i +1 ) = f (x i ) + f (x i+ 2 ) = f (x i ) + f (x i ) f (x i )h 2 f (u) 3 h+ + h 1! 2! 3!

(7.5)

f (x i ) f (x i ) 2 f (v) ( + 1)h + h ( + 1) 2 + ( + 1)3 h 3 (7.6) 1! 2! 3!

cu u strict cuprins ntre xi i xi+1 i v strict cuprins ntre xi i xi+2. Scznd din rela ia

(7.5) rela ia (7.6) nmul it cu (1+)2 ob inem:


f (x i ) = f (x i+ 2 ) + f ( x i ) 2 + 2 (1 + ) 2 f (x i+1 ) h ( + 1) +

f (v) f (u) 3 ( + 1)3 h 3 + h (1 + ) 2 3! 3! h ( + 1)

Putem aproxima valoarea derivatei func iei f n xi prin:

192

Metode Numerice

f (x i )

f (x i+ 2 ) (1 + ) 2 f (x i +1 ) 2 + 2 f ( x i ) h ( + 1)

cu eroarea:

f (v) ( + 1) 2 f (u) ( + 1) 2 = h 3! 3!
Adunnd la rela ia (7.6) rela ia (7.5) nmul it cu -(1+) ob inem: f (x i ) = 2 f (x i+ 2 ) + f (x i ) ( + 1)f (x i +1 ) h 2 ( + 1) . f (v) f (u) ( + 1)3 h 3 + ( + 1)h 3 3! 3! +2 2 h ( + 1) Putem astfel aproxima valoarea derivatei de ordinul doi al lui f n xi prin

f (x i ) 2

f (x i+ 2 ) ( + 1)f (x i+1 ) + f (x i ) h 2 ( + 1)

cu eroarea

f (v) ( + 1) 2 f (u) 1 = + h 3! 3!
Dac nodurile sunt echidistante (adic dac = 1) se ob in urmtoarele formule de aproximare:

f (x i ) cu eroare de ordinul O(h2)

f (x i+ 2 ) + 4f ( x i+1 ) 3f (x i ) 2h f (x i + 2 ) 2f (x i+1 ) + f (x i ) h2

f (x i ) cu eroare de ordinul O(h).

Similar ne propunem s aproximm valorile derivatelor de ordinul nti i doi ale func iei f n punctul xi [a, b] cnd sunt cunoscute valorile func iei n punctele

193

Mdlina Roxana Buneci

xi-2, xi-1, xi care nu sunt neaprat echidistante, adic: xi = xi-1 + h, xi-2 = xi-1 h Presupunem c f este de 3 ori derivabil i scriem formula lui Taylor de ordinul 2 pentru f n xi:

f (x i 1 ) = f (x i )
f (x i 2 ) = f (x i )

f (x i ) f (x i )h 2 f (u) 3 h+ h 1! 2! 3!

(7.7)

f (x i ) f (x i ) 2 f (v) ( + 1)h + h ( + 1)2 ( + 1)3 h 3 (7.8) 1! 2! 3!

cu u strict cuprins ntre xi i xi+1 i v strict cuprins ntre xi i xi+2. Scznd din rela ia

(7.8) rela ia (7.7) nmul it cu (1+)2 ob inem:


f (x i ) = f (x i2 ) + f ( x i ) 2 + 2 (1 + )2 f (x i 1 ) h ( + 1) +

f (u) 3 f (v) h (1 + )2 + ( + 1)3 h 3 3! 3! h ( + 1)

Putem aproxima valoarea derivatei func iei f n xi prin:

( 2 + 2 ) f ( xi ) (1 + )2 f (xi1 ) + f (xi2 ) f (x )
i

h ( + 1)

cu eroarea:

f (u) ( + 1) f (v) ( + 1)2 = + 3! 3!

2 h

Adunnd la rela ia (7.8) rela ia (7.7) nmul it cu -(1+) ob inem: f (x i ) = 2 f (x i2 ) + f (x i ) ( + 1)f (x i 1 ) h 2 ( + 1) . f (v) f (u) ( + 1)3 h 3 + ( + 1)h 3 3! 3! +2 2 h ( + 1) Putem astfel aproxima valoarea derivatei de ordinul doi al lui f n xi prin

194

Metode Numerice

f (x i ) 2

f (x i ) ( + 1)f (x i1 ) + f (x i2 ) h 2 ( + 1)

cu eroarea

f (u) 1 f (v) ( + 1)2 = h 3! 3!


Dac nodurile sunt echidistante (adic dac = 1) se ob in urmtoarele formule de aproximare: f (x i ) cu eroare de ordinul O(h ), i f (x i 2 ) 2f (x i 1 ) + f (x i ) h2
2

3f (x i ) 4f (x i 1 ) + f ( x i 2 ) 2h

f (x i ) cu eroare de ordinul O(h).

Folosind acest tip de tehnici, se poate ob ine o mare varietate de formule aproximative pentru valorile derivatelor de orice ordin n xi. Prezentm mai jos cteva astfel de formule pentru cazul nodurilor echidistante. Formul de aproximare a derivatei prin diferen e finite centrale Eroare O(h2)
O(h4) O(h2) O(h4) O(h2) O(h4)

f (x i )
f (x i )

f (x i +1 ) f (x i 1 ) 2h
f (x i+1 ) + 8f (x i+1 ) 8f (x i1 ) + f (x i 2 ) 12h

f (x i )
f (x i ) f (x i ) f (x i )

f (x i +1 ) 2f (x i ) + f (x i1 ) h2
f (x i+ 2 ) + 16f (x i +1 ) 30f (x i ) + 16f (x i1 ) f (x i 2 ) 12h 2 f (x i+ 2 ) 2f (x i +1 ) + 2f (x i1 ) f (x i 2 ) 2h 3 f (x i +3 ) + 8f (x i + 2 ) 13f (x i+1 ) + 13f (x i 1 ) 8f (x i 2 ) + f (x i3 ) 8h 3

195

Mdlina Roxana Buneci

Formul de aproximare a derivatei prin diferen e finite progresive f (x i ) f (x i ) f (x i ) f (x i ) f (x i ) f (x i ) f (x i+1 ) f (x i ) h f (x i+ 2 ) + 4f ( x i+1 ) 3f (x i ) 2h f (x i + 2 ) 2f (x i+1 ) + f (x i ) h2 f (x i +3 ) + 4f (x i + 2 ) 5f (x i+1 ) + 2f (x i ) h2 f (x i+3 ) 3f (x i+ 2 ) + 3f (x i+1 ) f (x i ) h3 3f (x i+ 4 ) + 14f (x i +3 ) 24f (x i+ 2 ) + 18f (x i +1 ) 5f (x i ) 2h 3

Eroare O(h) O(h2) O(h) O(h2) O(h) O(h2)

Formul de aproximare a derivatei prin diferen e finite regresive f (x i ) f (x i ) f (x i ) f (x i ) f (x i ) f (x i ) f (x i ) f (x i 1 ) h 3f (x i ) 4f (x i1 ) + f ( x i 2 ) 2h f (x i ) 2f (x i1 ) + f (x i 2 ) h2 2f (x i ) 5f (x i1 ) + 4f (x i 2 ) f (x i 3 ) h2 f (x i ) 3f (x i 1 ) + 3f (x i 2 ) f (x i 3 ) h


3

Eroare O(h) O(h2) O(h) O(h2) O(h) O(h2)

5f (x i ) 18f (x i 1 ) + 24f (x i 2 ) 14f (x i3 ) + 3f (x i 4 ) 2h 3

196

Metode Numerice

Procedur MAPLE pentru determinarea valorilor aproximative ale derivatei de ordinul 1


Procedura d1 admite drept parametri lista x ce con ine punctele x1, x2, ., xn i lista y ce con ine valorile y1 = f(x1), y2 = f(x2), ., yn= f(xn). Procedura ntoarce lista aproxima iilor derivatei de ordinul I a lui f n punctele x2, x3, ..., xn-1.
> d1:=proc(x,y) > local df,h,alpha,i,n; > n:=nops(x);df:=[seq(1,i=1..n-2)]; > for i from 2 to n-1 do > h:=x[i]-x[i-1]; > alpha:=(x[i+1]-x[i])/h; > df[i-1]:=(y[i+1]+y[i]*(alpha^2-1)-alpha^2*y[i-1])/ (h*alpha*(alpha+1)) > od; > RETURN(df); > end;

Procedur MAPLE pentru determinarea valorilor aproximative ale derivatei de ordinul 2


Procedura d2 admite drept parametri lista x ce con ine punctele x1, x2, ., xn i lista y ce con ine valorile y1 = f(x1), y2 = f(x2), ., yn= f(xn). Procedura ntoarce lista aproxima iilor derivatei de ordinul al II-lea a lui f n punctele x2, x3, ..., xn-1.
> d2:=proc(x,y) > local d2f,h,alpha,i,n; > n:=nops(x);d2f:=[seq(1,i=1..n-2)]; > for i from 2 to n-1 do h:=x[i]-x[i-1]; > alpha:=(x[i+1]-x[i])/h; > d2f[i-1]:=2*(y[i+1]-(alpha+1)*y[i]+alpha*y[i1])/(h^2*alpha*(alpha+1)) > od; > RETURN(d2f); > end;

Exemple
> x1:=[seq(-1+2*i/5,i=0..5)];

197

Mdlina Roxana Buneci

-3 -1 1 3 x1 := -1, , , , , 1 5 5 5 5
> f1:=t->ln(1+t^2);

f1 := t ln( 1 + t 2 )
> y1:=[seq(evalf(f1(-1+2*i/5)),i=0..5)];

y1 := [ 0.6931471806 , 0.3074846997 , 0.03922071315 , 0.03922071315 , 0.3074846997 , 0.6931471806 ]


> d1(x1,y1);

[ -0.8174080840 , -0.3353299832 , 0.3353299832 , 0.8174080840 ]


> d2(x1,y1);

[ 0.7337405900 , 1.676649916, 1.676649916, 0.7337405900 ]


> z1:=[seq(D(f1)(-1+2*i/5),i=1..4)];

-15 -5 5 15 z1 := , , , 17 13 13 17
> z2:=[seq((D@@2)(f1)(-1+2*i/5),i=1..4)];

200 300 300 200 z2 := 289, 169, 169, 289


> map(evalf,d1(x1,y1));

[ -0.8174080840 , -0.3353299832 , 0.3353299832 , 0.8174080840 ]


> map(evalf,z1);-.8174080840

[ -0.8823529412 , -0.3846153846 , 0.3846153846 , 0.8823529412 ]


> map(evalf,d2(x1,y1));

[ 0.7337405900 , 1.676649916, 1.676649916, 0.7337405900 ]


> map(evalf,z2);

[ 0.6920415225 , 1.775147929 , 1.775147929 , 0.6920415225 ]

Cazul nodurilor echidistante: Procedur MAPLE pentru determinarea valorilor aproximative ale derivatei de ordinul 1 utiliznd o formula de aproximare prin diferen e finite centrale
Procedura de1 admite drept parametri pasul h al discretizrii i lista y ce con ine valorile y1 = f(x1), y1 = f(x1), ., yn= f(xn) (xi = xi + (i-1)h). Procedura returneaz lista aproxima iilor derivatei de ordinul I a lui f n punctele x2, x3, ..., xn-1.
> de1:=proc(h,y) > local df,i,n;

198

Metode Numerice > n:=nops(y);df:=[seq(1,i=1..n-2)]; > for i from 2 to n-1 do > df[i-1]:=(y[i+1]-y[i-1])/(2*h) > od; > RETURN(df); > end;

Procedur MAPLE pentru determinarea valorilor aproximative ale derivatei de ordinul 2 utiliznd o formula de aproximare prin diferen e finite centrale
Procedura de2 admite drept parametri drept parametri pasul h al discretizrii i lista y ce con ine valorile y1 = f(x1), y1 = f(x1), ., yn= f(xn) (xi = xi + (i-1)h). Procedura ntoarce lista aproxima iilor derivatei de ordinul al II-lea a lui f n punctele x2, x3, ..., xn-1.
> de2:=proc(h,y) > local df,i,n; > n:=nops(y);df:=[seq(1,i=1..n-2)]; > for i from 2 to n-1 do > df[i-1]:=(y[i+1]-2*y[i]+y[i-1])/(h*h) > od; > RETURN(df); > end;

Exemple
> x2:=[seq(1+2*i/5,i=0..5)];

7 9 11 13 x2 := 1, , , , , 3 5 5 5 5
> f2:=t->1/(1+t^2);

f2 := t
>

1 1 + t2

y2:=[seq(evalf(f2(1+2*i/5)),i=0..5)];

y2 := [ 0.5000000000 , 0.3378378378 , 0.2358490566 , 0.1712328767 , 0.1288659794 , 0.1000000000 ]


> de1(2/5,y2);

[ -0.3301886792 , -0.2082562014 , -0.1337288465 , -0.08904109590 ]


> de2(2/5,y2);

199

Mdlina Roxana Buneci

[ 0.3760836312 , 0.2335787581 , 0.1390580162 , 0.08438073688 ]


> z3:=[seq(D(f2)(1+2*i/5),i=1..4)];

-875 -1125 -1375 -1625 z3 := 2738, 5618 , 10658, 18818


> z4:=[seq((D@@2)(f2)(1+2*i/5),i=1..4)];

38125 68125 105625 150625 z4 := 101306, 297754, 778034, 1825346


> map(evalf,de1(2/5,y2));

[ -0.3301886792 , -0.2082562014 , -0.1337288465 , -0.08904109590 ]


> map(evalf,z3);

[ -0.3195763331 , -0.2002491990 , -0.1290110715 , -0.08635349134 ]


> map(evalf,de2(2/5,y2));

[ 0.3760836312 , 0.2335787581 , 0.1390580162 , 0.08438073688 ]


> map(evalf,z4);

[ 0.3763350641 , 0.2287962546 , 0.1357588486 , 0.08251860195 ]


> with(plots):
> plot([D(f2),t->de1(2/5,[f2(t-2/5),f2(t),f2(t+2/5)])[1]],1..3);

200

Metode Numerice > plot([(D@@2)(f2),t->de2(2/5,[f2(t-2/5),f2(t),f2(t+2/5)])[1]], 1..3);

> plot([D(f2),t->de1(10^(-8),[f2(t-10^(-8)),f2(t),f2(t+10^(8))])[1]],1..3);

201

Mdlina Roxana Buneci > plot([(D@@2)(f2),t->de2(10^(-4),[f2(t-10^(-4)),f2(t),f2(t+10^(4))])[1]],1..3);

Ceea ce vedem n ultimele dou grafice se datoreaz aritmeticii virgulei mobile. Aa cum am artat n primul capitol eroarea de calcul este suma dintre eroarea de trunchiere i eroarea de rotunjire, dar de obicei una dintre acestea predomin. De obicei exist o valoare optimal a pasului de discretizare h. Pentru valori mai mici ale lui h eroarea total crete din cauza creterii erorii de rotunjire, iar pentru valori mai mari ale lui h eroarea total crete din cauza creterii erorii de trunchiere. Pentru a eviden ia acest aspect considerm procedurile eroare1 (respectiv eroare2) de mai jos care returneaz eroarea cu care este aproximat derivata de ordinul 1 (respectiv 2) a func iei f n punctul x cnd se aplic o formul de aproximare prin diferen e finite centrale (nodurile sunt x-h,x,x+h). n exemple ce urmeaz se poate face compara ie ntre situa ia n care calculul se execut simbolic (i doar rezultatele sunt afiate n virgul mobil) i situa ia n care calculul se execut n virgul mobil.
> eroare1:=proc(f,x,h) > RETURN(D(f)(x)-de1(h,[f(x-h),f(x),f(x+h)])[1]) > end;

202

Metode Numerice

> map(evalf,[seq(eroare1(f2,3/2,10^(-i)),i=1..6)]);

[ 0.0006711385277 , 0.6722343900 10 -5, 0.6722452598 10 -7 , 0.6722453685 10 -9 , 0.6722453695 10 -11 , 0.6722453696 10 -13 ]


> [seq(eroare1(f2,1.5,10^(-i)),i=1..6)];

[ 0.0006711384 , 0.67214 10 -5 , 0.314 10 -7 , -0.1686 10 -6, 0.13314 10 -5 , -0.0000236686 ]


> plot(h->abs(eroare1(f2,1.5,h)), 10^(-6)..10^(-2));

> plot(h->abs(eroare1(f2,1.5,h)), 10^(-6)..10^(-2),numpoints=2);

> eroare2:=proc(f,x,h) > RETURN((D@@2)(f)(x)-de2(h,[f(x-h),f(x),f(x+h)])[1]) > end;

203

Mdlina Roxana Buneci

> map(evalf,[seq(eroare2(f2,3/2,10^(-i)),i=1..5)]);

[ -0.0002076099410 , -0.2102654016 10 -5 , -0.2102918739 10 -7 , -0.2102921386 10 -9 , -0.2102921412 10 -11 ]


> [seq(eroare2(f2,1.5,10^(-i)),i=1..5)];

[ -0.0002076042 , -0.17242 10 -5 , 0.22758 10 -5, 0.0050022758 , -0.6649977242 ]


> plot(h->abs(eroare2(f2,1.5,h)), 10^(-4)..1/3);

> plot(h->abs(eroare2(f2,1.5,h)), 10^(-4)..1/3,numpoints=2);

204

Metode Numerice

VII. 2. Extrapolare Richardson


S presupunem c dorim s calculm o cantitate L i c avem

(h) = L +

a 2k h 2k .
k =1

Atunci (h) reprezint o aproxima ie pentru L cu eroare de ordinul O(h2). n cele ce urmeaz vom arta cum s ob inem o aproxima ie pentru care eroarea s fie de de ordinul O(h2(n+1)), cu n dat. Notm

h D(n,0) = 2n

i definim
D(n,m) =

4m D ( n, m 1) D ( n 1, m 1) 4m 1

, 1 m n.

Se poate arta utiliznd induc ia c

Teorema 7.9 (Extrapolare Richardson). Cu nota iile de mai sus exist


constantele ak,m astfel nct D(n,m) = L +
2k

h a k,m 2n k = m +1

Ca o consecin a teoremei precedente rezult c

D(n,m) = L + O(h2(n+1)).
Cu alte cuvinte D(n,n) este o aproxima ie a lui L cu eroare de ordinul O(h2(n+1)). Pentru calculul recursiv al valorilor D(n,m) se poate folosi tabelul triunghiular: D(0,0) D(1,0) D(1,1) D(2,0) D(2,1) D(2,2) D(n,0) D(n,1) D(n,2) D(n,n)

205

Mdlina Roxana Buneci

h Prima coloan a acestui tabel poate fi calculat direct cu defini ia: D(n,0) = 2n
de elementul din stnga de pe aceeai linie i de pe linia de deasupra din stnga. S exemplificm aplicarea acestui procedeu pentru mbunt irea formulei de aproximare a derivatei de ordinul 1: f (x) ( h ) = Dac f este analitic avem:
2k +1) f( (h) = f (x) + ( x ) h 2k . k =1 ( 2k + 1) !

n cazul elementelor de pe celelalte coloane se observ c fiecare dintre ele depinde

f (x + h) f (x h) . 2h

Deci putem aplica extrapolare Richardson.Vom aproxima f (x) cu D(1,1). Dar 4D (1, 0 ) D ( 0, 0 ) 3

D(1,1) =

h 4 ( h ) 2 = . 3

h 4 ( h ) 2 Ca urmare reprezint o aproxima ie a lui f (x) cu eroare de 3


ordinul O(h4), unde ( h ) = f (x + h) f (x h) . 2h

VII.3. Metode de derivare numeric folosind interpolarea


Fie f : [a, b] R o func ie, fie x0, x1, , xn n+1 puncte distincte din intervalul [a, b], i yi = f(xi) pentru orice i = 0,1,n. Aproximm f(k) prin derivata de ordinul k a polinomului de interpolare asociat lui f i x0, x1, , xn. S presupunem c n = 4 i c punctele x0, x1, x2, x3, x4 sunt echidistante i s construim polinomul Newton ascendent.

206

Metode Numerice

P4 (x) = P4 (x 0 + th) = f (x 0 ) + + f (x 0 ) 2f (x 0 ) 3f (x 0 ) t+ t(t 1) + t(t 1)(t 2) + 1! 2! 3!

4f (x 0 ) t(t 1)(t 2)(t 3) 4!


f (x 0 ) 2f (x 0 ) 2 3f (x 0 ) 3 t+ (t t) + (t 3t 2 + 2t) + 1! 2! 3!

= f (x 0 ) + +

4f (x 0 ) 4 (t 6t 3 + 11t 2 6t) 4!

Notm g(t) = P4(x0 +th). Avem g (t) = P4 (x0 +th)h g (t) = P4 (x0 +th)h2. Pe de alt parte g ( t ) = f (x 0 ) + + 2f (x 0 ) 3f (x 0 ) 2 (2t 1) + (3t 6t + 2) + 2 6

4f (x 0 ) 3 (4t 18t 2 + 22t 6) 24 (2t 1) (3t 2 6t + 2) + 3f (x 0 ) + 2 6

= f (x 0 ) + 2f (x 0 ) + 4f (x 0 ) iar g ( t ) = +

(2t 3 9t 2 + 11t 3) 12

2f (x 0 ) 3f (x 0 ) 2+ (6t 6) + 2 6

4f (x 0 ) 2 (6t 18t + 11) 12 (6t 2 18t + 11) . 12

= 2f (x 0 ) + 3f (x 0 ) ( t 1) + 4f (x 0 ) n consecin avem:

(2t 1) (3t 2 6t + 2) 1 f (x)= f (x0+ht) ( f (x 0 ) + 2f (x 0 ) + 3f (x 0 ) + h 2 6

207

Mdlina Roxana Buneci

+ 4f (x 0 )
f (x) = f (x0+ht) 1

(2t 3 9t 2 + 11t 3) ) 12
(6t 2 18t + 11) ). 12

( 2f (x 0 ) + 3f (x 0 ) ( t 1) + 4f (x 0 ) 2 h

208

Metode Numerice

VIII. Integrarea numeric


VIII.1. Formula general de cuadratur numeric. Formula de cuadratur Newton-Cotes.
Fie f : [a, b] R o func ie continu. Ne punem problema s calculm valoarea aproximativ a integralei f (x)(x)dx , unde : [a, b]R este o func ie
a b

continu strict pozitiv numit pondere. Considerm x0, x1, , xn n+1 puncte distincte din intervalul [a, b], i notm yi = f(xi) pentru orice i = 0,1,n.
b

O formul de cuadratur presupune aproximarea integralei

f (x)(x)dx
a

printr-o combina ie liniar de valori ale func iei f n punctele x0, x1, , xn, i.e
b a

f (x)(x)dx
n n

A0 f(x0) + A1 f(x1) + ... + Anf(xn).

Fie Ln polinomul Lagrange asociat lui f i punctelor considerate: Ln(x) = f ( x i ) li ( x ) = yi


i =0 i =0

( x x 0 ) ( x x1 ) .... ( x x i1 )( x x i+1 ) ... ( x x n ) . ( x i x 0 ) ( x i x1 ) .... ( x i x i1 )( x i x i+1 ) ... ( x i x n )


b a

nlocuind f prin Ln, ob inem formula de aproximare

f (x)(x)dx Ln (x)(x)dx
a n n b b a

f (x)(x)dx (x) f ( x i ) li ( x )dx = f ( x i ) (x)li ( x ) dx


a i =0 i=0 a

209

Mdlina Roxana Buneci


b a b a

Deci notm dac Ai = (x)li ( x ) dx , atunci f (x)(x)dx A0 f(x0) + A1 f(x1) + ... + Anf(xn). n cele ce urmeaz ne propunem s calculm eroarea cu
b a

care

Ln (x)(x)dx

aproximez f (x)(x)dx . Reprezentnd punctele sub forma


a

xi = avem
b a

a +b ba + t i , ti [-1, 1], i {0, 1, ..., n}, 2 2

Ln (x)(x)dx
=

a
n

( x ) f ( xi )
i=0 b

( x x 0 ) ( x x1 ) .... ( x x i1 )( x x i+1 ) ... ( x x n ) dx ( x i x 0 ) ( x i x1 ) .... ( x i x i1 )( x i x i+1 ) ... ( x i x n )

= f ( xi ) ( x )
i =0 a

( x x 0 ) ( x x1 ) .... ( x x i1 )( x x i+1 ) ... ( x x n ) dx ( x i x 0 ) ( x i x1 ) .... ( x i x i1 )( x i x i+1 ) ... ( x i x n )


x= a +b ba + t 2 2

Facem schimbarea de variabil

i ob inem
b a

Ln (x)(x)dx
1

(t t ) (t t )(t t ) (t t ) ba n a +b ba f (x i ) ( 2 + 2 t) (t t 0) (t ti1)(t it+1 ) (t nt ) dt 2 i =0 i 0 i i 1 i i+1 i n 1 Formula


b a

f (x)(x)dx
(t t ) (t t )(t t ) (t t ) ba n a +b ba f (xi ) ( 2 + 2 t) (t t 0) (t t i1)(t it+1 ) (t nt ) dt. 2 i =0 i 0 i i 1 i i +1 i n
1 1

se numete formula general de cuadratur.

210

Metode Numerice

Presupunem c f este de clas Cn+1. Pentru a evalua restul formulei inem seama c eroarea cu care polinomul de interpolare aproximeaz func ia este dat de

|f(x) Ln(x)|
unde M = sup |f(n+1)(x)|
x[a,b]

M (x x 0 )(x x1 ) (n + 1)!

(x x n ) ,

Rn(f) = f (x)(x)dx (x)L n (x)dx = (f (x) L n (x))(x)dx


a b a a b a a

|Rn(f)| = | (f (x) L n (x))(x)dx | | f (x) Ln (x) | (x)dx


Procednd ca mai nainte ob inem restul formulei generale de cuadratur:

|Rn(f)|

M ba (n + 1)! 2

n+2 1

a +b ba + t (t t 0 )(t t1 ) 2 2

(t t n )dt ,

unde M = sup |f(n+1)(x)|.


x[a,b]

Presupunem c 1, punctele sunt echidistante i c x0 = a, xn = b. Deci xi = a + ba i, i = 0, 1, 2, , n. n

Aproximnd sub integral func ia cu polinomul de interpolare Lagrange i fcnd schimbarea de variabil x=a+ ob inem ba (n) (n) f (x)(x)dx ( b a ) Hi f ( xi ) = ( b a ) Hi f a + i n i=0 i =0 a unde
n ( n ) 1 ( 1) Hi = 0 t ( t 1) ... ( t i + 1)( t i 1) ... ( t n )dt n ( n i ) !i! n i

ba t, n

n t ( t 1) ... ( t n ) 1 ( 1) dt 0 n ( n i ) !i! t i

n i

211

Mdlina Roxana Buneci

Numerele H i(n ) se numesc coeficien ii Newton - Cotes iar formula se aproximare se


numete formula Newton - Cotes . Au loc rela iile

i =0

Hi(

n)

(n) (n) = 1 i Hi = H n i , i = 0,1,,n.

Dac f este o aplica ie de clas Cn+1 are loc urmtoarea formul de evaluare a restului:

ba (n) f (x)(x)dx ( b a ) Hi f a + i n i =0 a
1 ba ( n + 1)! n De re inut c exist
n +2 n

t(t 1)(t 2)
continue

(t n)dt sup |f(n+1)(x)|.


x[a,b]

func ii
b

pentru

care

irul

n (n) ( b a ) Hi f ( x i ) nu converge ctre i =0 n

a f ( x )dx .

VIII.2. Formula dreptunghiurilor


Fie f : [a, b] R o func ie de clas C1. Aplicm formula general de cuadratur pentru 1, n=0, x0 = a+b (deci t0 = 0). Ob inem 2
b a

f (x)dx (b-a) f
cu o eroare

a+b 2

( b a )2
4

x[ a,b ]

sup f ' ( x ) .

Considerm o diviziune (x0, x1, ., xn) a intervalului [a, b] cu puncte echidistante (xi = a +
ba i, i = 0, 1, 2, , n.) i aplicm pe fiecare subinterval [xi, n

xi+1] formula de aproximare

212

Metode Numerice
x

xii+1 f ( x )dx (xi+1-xi) f


innd cont c

x i + x i+1 2

x f ( x )dx = i +1 f ( x )dx , ob inem urmtoarea formul de i =0 x i

n 1

cuadratur numit formula dreptunghiurilor:


b a

f (x)dx
Restul (eroarea) este dat de:

b a n 1 x i + x i +1 f 2 . n i =0

a
=

f ( x ) dx

b a n 1 x i + x i+1 f 2 = n i =0

n 1 x i +1 i =0

x
n 1 i =0

b a n 1 x i + x i+1 f ( x ) dx f 2 n i=0 f ( x ) dx b a x i + x i +1 f n 2

x x
i

x i +1
i

n 1 x i +1 i =0

f ( x ) dx

b a x i + x i+1 f n 2

n 1 x i +1 i =0

x + x i +1 f ( x ) dx ( x i+1 x i ) f i 2
sup
x[x i ,x i +1 ]

n 1 i =0

( xi+1 x i )2
4
n 1

| f (x) |

sup | f (x) |
x[a,b]

( x i+1 x i )2
4

i =0 n 1

= sup | f (x) |
x[a,b]

( b a )2
4n 2

i =0

= sup | f (x) |
x[a,b]

( b a )2
4n

213

Mdlina Roxana Buneci

Ca urmare restul (eroarea) n formula dreptunghiurilor este b a n 1 x i + x i+1 ( b a ) f ( x ) dx f 2 4n a n i =0


b 2

x[ a,b ]

sup f ' ( x )

Interpretarea geometric a formulei dreptunghiurilor


Fie Di dreptunghiul cu o dimensiune dat intervalul [xi, xi+]] i cu cealalt
x + x i+1 dimensiune dat de f i 2

x + x i+1 f i 2

xi

xi+1

Atunci aria dreptunghiului Di este


x + x i+1 b a x i + x i+1 (xi+1-xi) f i f = , 2 n 2

i deci formula dreptunghiurilor presupune aproximarea f (x)dx prin suma ariilor


a

dreptunghiurilor Di, i = 0, 1, n-1.

Proceduri MAPLE pentru calculul valorii aproximative a unei integrale definite folosind formula dreptunghiurilor:

Procedura dreptunghiuri1 are drept parametri func ia care se integreaz, limitele de integrare, i numrul de subintervale din diviziune. Procedura ntoarce valoarea aproximativ a integralei ob inut aplicnd formula dreptunghiurilor. Procedura dreptunghiuri2 este similar, cu singura deosebire c n locul numrului
214

Metode Numerice

de subintervale se introduce un numr pozitiv eps ce reprezint eroarea maxim.


> dreptunghiuri1:=proc(f,a,b,n) > local i,iab,h,h0; > iab:=0;h:=(b-a)/n;h0:=a+1/2*h; > for i from 0 to n-1 do > iab:=iab+evalf(f(h0+i*h)) > od; > iab:=iab*h; > RETURN(evalf(iab)) > end;

> dreptunghiuri2:=proc(f,a,b,eps) > local i,iab,h,h0,n;n:=floor(1/4*(b-a)^2/eps)+1; > print(`Numar de pasi`,n); h:=(b-a)/n;iab:=0;h0:=a+1/2*h; > for i from 0 to n-1 do > iab:=iab+evalf(f(h0+i*h)) > od; > iab:=iab*h; > RETURN(evalf(iab)) > end;

Exemple
> f:=(x->x^7*ln(x)+x*cos(x));

f := x x 7 ln( x ) + x cos ( x )
> evalf(int(f(x),x=2..3));

778.3339881
> dreptunghiuri1(f,2,3,5);

768.4434052
> dreptunghiuri1(f,2,3,50);

778.2346340
> dreptunghiuri1(f,2,3,500);

778.3329936
> dreptunghiuri2(f,2,3,0.01);

Numar de pasi , 26

777.9666004

215

Mdlina Roxana Buneci > dreptunghiuri2(f,2,3,0.001);

Numar de pasi , 251

778.3300446
> dreptunghiuri2(f,2,3,0.0001);

Numar de pasi , 2501

778.3339476
> g:=(x->exp(-x^2));
( x 2 )

g := x e
> evalf(int(g(x),x=-1..1));

1.493648266
> dreptunghiuri1(g,-1,1,5);

1.503548970
> dreptunghiuri1(g,-1,1,10);

1.496106505
> dreptunghiuri1(g,-1,1,500);

1.493649246
> dreptunghiuri2(g,-1,1,0.01);

Numar de pasi , 101

1.493672307
> dreptunghiuri2(g,-1,1,0.001);

Numar de pasi , 1001

1.493648512
> dreptunghiuri2(g,-1,1,0.0001);

Numar de pasi , 10001

1.493648267
> with(student):

> middlesum(g(x),x=-1..1,5);
2i 4 4/5 + 5 2 e 5 i = 0 2

> evalf(middlesum(g(x),x=-1..1,5));

1.503548970
> middlebox(g(x),x=-1..1,5);

216

Metode Numerice

> middlesum(g(x),x=-1..1,10);
9 9/10 + i 5 1 e 5 i = 0 2

> evalf(middlesum(g(x),x=-1..1,10));

1.496106505
> middlebox(g(x),x=-1..1,10);

Comanda middlesum(g(x), x=a..b,n) din pachetul student ntoarce aproxima ia integralei g(x)dx ob inut prin aplicarea formulei dreptunghiurilor utiliznd n
a b

subintervale. Comanda middlebox(g(x), x=a..b,n) reprezint grafic dreptunghiurile utilizate n formulei dreptunghiurilor.

217

Mdlina Roxana Buneci

VIII.3. Formula trapezelor


Fie f : [a, b] R o func ie de clas C2. Aplicm formula general de cuadratur pentru 1, n=1, x0 = a, x1 =b (deci t0 = -1 i t1 =1). Ob inem
b
1 1 f (x)dx b a f (a) (t 1) dt + f (b) (t + 1) dt = (1 1) (1 + 1) 2 a 1 1

1 1 ba (t 1)2 (t + 1) 2 = f (a) + f (b) 2 4 4 1 1

= Deci f (x)dx
a b

ba (f(a) +f(b)). 2

ba (f(a) +f(b)). 2

Eroarea este

( b a ) 1 (t 1)(t + 1)dt = ba 1 sup f " ( x ) | f (x)dx (f(a) +f(b)) | 2 2! x[ a,b] 8 a 1 ( b a ) 1 t 2 1dt = 1 sup f " x ( b a ) 2 1 t 2 1dt 1 sup f " ( x ) = ( ) 2! x[ a,b] 8 2! x[ a,b] 8 1 0
= sup f " ( x )
x[ a,b ] 3 3

( b a )3
8

1 0

1 t

dt = sup f " ( x )
x[ a,b ]

( b a )3
8

31 t1 t 0 3 0

= sup f " ( x )
x[ a,b ]

( b a )3 .
12

Deci | f (x)dx a b

ba (f(a) +f(b)) | 2

( b a )3
12

x[ a,b ]

sup f " ( x ) .

218

Metode Numerice

Considerm o diviziune (x0, x1, ., xn) a intervalului [a, b] cu puncte echidistante (xi = a +

ba i, i = 0, 1, 2, , n.) i aplicm pe fiecare subinterval [xi, n


x

xi+1] formula de aproximare

xii+1 f ( x )dx
innd cont c

x i+1 x i ( f(xi) + f(xi+1)) 2

x f ( x )dx = i +1 f ( x )dx , ob inem urmtoarea formul de i =0 x i

n 1

cuadratur numit formula trapezelor:


b a

f (x)dx
Restul (eroarea) este dat de:

ba n

f ( a ) + f ( b ) n 1 + f ( xi ) . 2 i=1

f ( x ) dx

b a f ( a ) + f ( b ) n 1 + f ( xi ) = n 2 i=1

n 1 x i +1 i =0

f ( x ) dx

b a f ( a ) + f ( b ) n 1 + f ( xi ) n 2 i=1

n 1 x i +1 i =0

n 1 x x f ( x ) dx i +1 i ( f ( x i ) + f ( x i +1 ) ) 2 i =0

n 1 x i +1 i =0

x x f ( x ) dx i+1 i ( f ( x i ) + f ( x i+1 ) ) 2 f ( x ) dx x i +1 x i ( f ( x i ) + f ( xi+1 ) ) 2 | f (x) |

n 1 x i +1 i =0

n 1 i =0

( xi+1 x i )3
12
n 1

sup
x[x i ,x i +1 ]

sup | f (x) |
x[a,b]

( x i+1 x i )3
12

i =0

219

Mdlina Roxana Buneci


n 1

= sup | f (x) |
x[a,b]

( b a )3
12n 3

i =0

( b a )3
12n 2

x[ a,b ]

sup f " ( x ) .

Ca urmare restul (eroarea) n formula trapezelor este

( b a )3 b a f ( a ) + f ( b ) n 1 + f ( xi ) sup f " ( x ) a f ( x ) dx n 2 12n 2 x[ a,b] i =1


b

Interpretarea geometric a formulei trapezelor


Fie Ti trapezul dreptunghic cu nl imea egal cu lungimea intervalului [xi, xi+]] i cu bazele f(xi) i f(xi+1).

f(xi+1) f(xi)

xi

xi+1

Atunci aria trapezului Ti este

x i+1 x i ba ( f(xi) + f(xi+1)) = ( f(xi) + f(xi+1)), 2 2n


i deci formula trapezelor arat c
trapezelor Ti, i = 0, 1, n-1.
Proceduri MAPLE pentru calculul valorii aproximative a unei integrale definite folosind formula trapezelor:

a f ( x )dx se poate aproxima prin suma ariilor

Procedura trapeze1 are drept parametri func ia care se integreaz, limitele de integrare, i numrul de subintervale din diviziune. Procedura ntoarce
220

Metode Numerice

valoarea aproximativ a integralei ob inut aplicnd formula trapezelor. Procedura

trapeze2 este similar, cu singura deosebire c n locul numrului de


subintervale se introduce un numr pozitiv eps ce reprezint eroarea maxim.
> trapeze1:=proc(f,a,b,n) > local i,iab,h; > iab:=0;h:=(b-a)/n;; > for i from 1 to n-1 do > iab:=iab+evalf(f(a+i*h)) > od; > iab:=iab+(f(a)+f(b))/2;iab:=iab*h; > RETURN(evalf(iab)) > end;

> trapeze2:=proc(f,a,b,eps) > local i,iab,h,n;n:=floor(abs((b-a)^3/(12*eps))^(1/2))+1; > print(`Numar de pasi`,n); h:=(b-a)/n;iab:=0; > for i from 1 to n-1 do > iab:=iab+evalf(f(a+i*h)) > od; > iab:=iab+(f(a)+f(b))/2;iab:=iab*h; > RETURN(evalf(iab)) > end;

Exemple
> f:=(x->x^7*ln(x)+x*cos(x));

f := x x 7 ln( x ) + x cos ( x )
> evalf(int(f(x),x=2..3));

778.3339881
> trapeze1(f,2,3,5);

798.1539466
> trapeze1(f,2,3,50);

778.5326999
> trapeze1(f,2,3,500);

778.3359754
> trapeze2(f,2,3,0.01);

221

Mdlina Roxana Buneci

Numar de pasi , 3

833.1348363
> trapeze2(f,2,3,0.001);

Numar de pasi , 10

783.2986759
> trapeze2(f,2,3,0.0001);

Numar de pasi , 29

778.9246586
> g:=(x->exp(-x^2));
( x 2 )

g := x e
> evalf(int(g(x),x=0..1));

0.7468241330
> trapeze1(g,0,1,5);

0.7443683397
> trapeze1(g,0,1,50);

0.7467996064
> trapeze1(g,0,1,500);

0.7468238866
> trapeze2(g,0,1,0.01);

Numar de pasi , 3

0.7399864752
> trapeze2(g,0,1,0.001);

Numar de pasi , 10

0.7462107961
> trapeze2(g,0,1,0.0001);

Numar de pasi , 29

0.7467512252
> trapeze2(g,0,1,10^(-8));

Numar de pasi , 2887

0.7468241295
> with(student): > trapezoid(g(x),x=-1..1,5);

4 1 + 2 i 5 2 ( -1 ) 2 + e e 5 5 i = 1
222

Metode Numerice > evalf(trapezoid(g(x),x=-1..1,5));

1.473924388
> trapezoid(g(x),x=-1..1,10);

9 1 + i 5 1 ( -1 ) 1 + e e 5 5 i = 1
> evalf(trapezoid(g(x),x=-1..1,10));

1.488736679 Comanda trapezoid(g(x), x=a..b,n) din pachetul student ntoarce aproxima ia integralei g(x)dx ob inut prin aplicarea formulei trapezelor utiliznd n
a b

subintervale.

VIII.4. Formula lui Simpson


Fie f : [a, b] R o func ie de clas C4. Aplicm formula general de cuadratur pentru 1, n=2, x0 = a, x1 = Ob inem a+b , x2 =b (deci t0 = -1 i t1 = 0, t2 =1). 2

a f ( x )dx
echidistante (xi = a +

ba (f(a) +4 f a + b + f(b)) 2 6

( )

Considerm o diviziune (x0, x1, ., x2n) a intervalului [a, b] cu puncte ba i, i = 0, 1, 2, , 2n.) i aplicm pe fiecare subinterval 2n
x

[xi, xi+2] cu i par formula de aproximare

xii+2 f ( x )dx
innd cont c

x i+ 2 x i ( f(xi) +4f(xi+1) + f(xi+2)) 6


ob inem urmtoarea formul de

f ( x )dx =

2n 2 x i=0 i par

x i+2 f ( x )dx , i

cuadratur numit formula lui Simpson:

223

Mdlina Roxana Buneci


n 1 n 1 f ( a ) + f ( b ) + 2 f ( x 2i ) + 4 f ( x 2i1 ) . i =1 i =1

f ( x )dx

ba 6n

Se poate arta c restul (eroarea) este dat de:


n 1 n 1 ba f ( x ) dx f ( a ) + f ( b ) + 2 f ( x 2i ) + 4 f ( x 2i1 ) a 6n i=1 i=1 b

( b a )5
4

2880n x[ a,b]

4 sup f ( ) ( x ) .

VIII.5. Algoritmul lui Romberg


Fie f : [a, b] R o func ie de clas C2. Considerm o diviziune (x0, x1, .,
x 2n ) a intervalului [a, b] cu puncte echidistante (xi = a + Aplicnd formula trapezelor:

ba 2
n

i, i = 0.. 2n).

n b a f ( a ) + f ( b ) 2 1 . + f ( xi ) f (x)dx 2n 2 i=1 a

n b a f ( a ) + f ( b ) 2 1 , atunci eroarea cu care (n) Dac notm (n) = + f ( xi ) 2 2n i=1

aproximeaz

a f ( x )dx este dat de

a f ( x ) dx ( n )
unde hn =

(b a)
12

h 2 sup f " ( x ) n
x[ a,b ]

ba 2
n

. Deci eroarea este de ordinul O( h 2 ). Se poate arta c n

224

Metode Numerice
b a

(n) = f (x)dx + a2 h 2 + a4 h 4 + a6 h 6 + a8 h 8 +.... n n n n

unde pentru orice i ai depinde doar de f(i). Pe de alt parte


2 (n+1) = f (x)dx + a2 hn+1 + a4 h 4 +1 + a6 h 6 +1 + a8 h 8 +1 +.... n n n
a b a b

= f (x)dx +

1 1 1 1 a2 h 2 + a4 h 4 + a6 h 6 + a8 h 8 +.... n n n n 4 16 64 256

i ca urmare
4 ( n + 1) ( n ) 3 = f (x)dx a b

1 5 21 a4 h 4 a6 h 6 a8 h 8 +.... n n n 4 16 64

n cazul acestei formule de aproximare eroarea de trunchiere este de ordinul O( h 4 ). n Ca i n cazul extrapolrii Richardson formula poate fi nbunt it succesiv. Pentru aceasta notm I (n,0) = (n)

i definim
I(n,m) =

4m I ( n, m 1) I ( n 1, m 1) 4m 1

, 1 m n.

Pentru calculul recursiv al valorilor I(n,m) se poate folosi tabelul triunghiular: I(0,0) I(1,0) I(1,1) I(2,0) I(2,1) I(2,2) I(n,0) I(n,1) I(n,2) I(n,n)

Prima coloan a acestui tabel poate fi calculat direct cu defini ia: I(n,0) =(n). n cazul elementelor de pe celelalte coloane se observ c fiecare dintre ele depinde de elementul din stnga de pe aceeai linie i de pe linia de deasupra din stnga.

225

Mdlina Roxana Buneci

n situa ia n care h0 = b-a >1, alegem k astfel nct

ba 2k

s fie suficient de

mic (de exemplu mai mic dect 1) i facem calculul recursiv al valorilor I(k+l,m) folosind tabelul triunghiular: I(k,0) I(k+1,0) I(k+2,0) I(k+n,0) I(k+1,1) I(k+2,1) I(k+2,2) I(k+n,1) I(k+n,2)
b a

I(k+n,n) .

De obicei n este mic (n = 2 sau n = 3). ncheiem acest sectiune prezentnd o modalitate mai eficient de calcul a lui I(n,0) = (n). Se observ c
n +1 b a f ( a ) + f ( b ) 2 1 I(n+1,0) = (n+1) = + f ( a + ih n +1 ) 2 2n +1 i=1 n 1 b a f ( a ) + f ( b ) 2 1 = + f ( a + (2i 1)h n +1 ) + f ( a + (2i)h n +1 ) 2 2 2n i =1 n 2n 1 1 b a f ( a ) + f ( b ) 2 1 = + f ( a + ih n ) + f ( a + (2i 1)h n +1 ) 2 2n 2 i=1 i =1

2 1 1 = I(n,0) + hn+1 f ( a + (2i 1)h n +1 ) . 2 i =1

Astfel utiliznd aceast formul recursiv calculul lui I(n+1,0) necesit doar 2n 1 evaluri ale lui f n loc de 2n+1 + 1 cte ar necesita dac s-ar aplica defini ia.

226

n final se ine seama c I(k+n+j,n) este o aproxima ie bun a f (x)dx cnd j

Metode Numerice

VIII.6. Cuadratura Gauss


Fie f : [a, b] R o func ie continu i : [a, b]R o pondere. Presupunem c nodurilor x0, x1, , xn[a, b] sunt date. Formula general de cuadratur pentru calcului lui f (x)(x)dx d integrala polinomului de interpolare asociat nodurilor
a b

x0, x1, , xn i valorilor f(x0), f(x1), ..., f(xn):


b a b a

f (x)(x)dx (x) f ( xi ) li ( x )dx = f ( x i ) (x)li ( x ) dx = Ai f ( x i )


a i =0 i =0 a i =0

unde Ai = (x)li ( x ) dx pentru orice i. Dac nu se impune nici o condi ie asupra nodurilor x0, x1, , xn formula de cuadratur
b a

f (x)(x)dx

A0 f(x0) + A1 f(x1) + ... + Anf(xn)

este exact pentru orice polinom de grad n. Exist ns posibilitatea alegerii a n+1 noduri astfel nct formula de cuadratur s fie exact pentru orice polinoam de grad 2n+1. Gauss a artat c cele n+1 noduri trebuie s fie rdcile unui polinom q de grad n+1 cu proprietatea c
b a

q(x)x

(x)dx = 0 pentru orice 0 k n.

S presupunem c polinomul q are proprietatea de mai sus i s artm c formula de cuadratur pentru care nodurile sunt rdcinile lui q este exact pentru orice polinom f de grad 2n+1. Efectund mpr irea lui f la q rezult c exist polinoamele p i r de grade n astfel nct f(x) = p(x)q(x) + r(x). Pentru orice i fie Ai = (x)li ( x ) dx
a b

227

Mdlina Roxana Buneci

( x x 0 ) ( x x1 ) .... ( x x i1 )( x x i+1 ) ... ( x x n ) ( x ) dx a ( x x ) ( x x ) .... ( x x )( x x i 0 i 1 i i1 i i +1 ) ... ( x i x n )


b b a

Formula general de cuadratur fiind exact pentru orice polinom de grad n avem
b a b a

f (x)(x)dx =

( p ( x ) q ( x ) + r ( x ) ) (x)dx
b a

= p ( x ) q ( x ) (x)dx + r ( x ) (x)dx = r ( x ) (x)dx


a b

= Pe de alt parte avem

Ai r ( x i )
i =0 n

Ai f ( x i ) = Ai ( p ( x i ) q ( x i ) + r ( x i ) ) =
i =0 i =0

Ai r ( x i ) .
i =0

deoarece xi este rdcin a lui q pentru orice i. n consecin ,


b a

f (x)(x)dx =

Ai f ( x i ) .
i =0

Teorema 8. (cuadratura Gauss) Fie : [a, b]R o pondere. Fie {xi}i cele
n+1 noduri ale polinomului qn+1 de grad n+1 cu prorietatea c q n +1 (x)x k (x)dx =
a b

0 pentru orice 0 k n. Pentru orice i fie Ai = (x)li ( x ) dx


a b

= (x)
a

( x x 0 ) ( x x1 ) .... ( x x i1 )( x x i+1 ) ... ( x x n ) dx . ( xi x 0 ) ( x i x1 ) .... ( x i xi1 )( x i x i+1 ) ... ( x i x n )

Atunci formula de cuadratur

228

Metode Numerice
b a

f (x)(x)dx
Restul (eroarea) este dat de

A0 f(x0) + A1 f(x1) + ... + Anf(xn)

este exact pentru orice polinom de grad 2n+1. f(


2n + 2 )

f (x)(x)dx Ai f ( x i )
a i=0

() b 2 q ( x ) ( x ) dx ( 2n + 2 )! n +1 a

pentru un anumit (a, b). Particularizm n continuare ponderea 1. Dac (x) = 1 pe intevalul [a,b], atunci polinomele qn care satisfac condi iile din teorema precedent sunt polinoamele Legendre Ln. Expresia acestor polinoame este dat de Ln(x) = n! d n ( x a )n ( x b )n n ( 2n )! dx

Restul (eroarea) formulei de cuadratur n situa ia n care se folosesc ca noduri rdcinile lui Ln este dat de

( n!)4 ( b a )2n +1 f ( 2n ) ( ) . 3 ( 2n ) ! ( 2n + 1)

2.

Dac (x) =

1 1 x2

pe intervalul (-1,1), atunci polinomele qn care

satisfac condi iile din teorema precedent sunt polinoamele Cebev de spe a I Tn. Polinoamele Cebev de prima spe pot fi definite recursiv prin : T0(x) = 1, T1(x) = x, Tn+2(x) = 2xTn+1(x) Tn(x), n 0, sau pot fi definite prin Tn(x) = cos(n arccos(x)). Rdcinile polinomului Cebev de grad n+1 sunt:

2i + 1 xi = cos , 0 i n. 2n + 2
n acest caz Ai =
pentru orice i = 0,..., n. n +1

229

Mdlina Roxana Buneci

3.

Dac (x) = 1 x 2 pe intervalul [-1, 1], atunci polinomele qn care satisfac condi iile din teorema precedent sunt polinoamele Cebev de spe a a II-a Un. Polinoamele Cebev de prima spe pot fi definite recursiv prin : U0(x) = 1, U1(x) = 2x, Un+2(x) = 2xUn+1(x) Un(x), n
0, sau pot fi definite prin Un(x) =

sin ( ( n + 1) arccos x ) sin ( arccos x )

. Rdcinile

polinomului Cebev Un+1 de grad n+1 sunt:

i +1 xi = cos , 0 i n. n+2
n acest caz Ai = 4.
i +1 sin 2 pentru orice i = 0,..., n. n+2 n+2

Dac (x) =(1-x)(1+x) (, > -1) pe intervalul (-1,1), atunci polinomele qn care satisfac condi iile din teorema precedent sunt polinoamele Jacobi.

Intervalul [a, b] poate fi transformat n intervalul [-1, 1] cu ajutorul schimbrii de variabil t =

ba b+a x. 2 2

VIII.7. Formule pentru calculul aproximativ al unei integrale duble


Fie 1, 2 : [a, b] R dou func ii de cls C1 i fie D = {(x,y) R2 | axb, 1(x) y 2(x) }. Atunci D este un domeniu simplu. Considerm o func ie continu f : D R. Ne punem problema aproximrii integralei putem trece la integrale iterate:

f ( x, y ) dxdy
D

. D fiind un domeniu simplu

f ( x, y ) dxdy = a 12( x ) f ( x, y )dy dx = a F ( x ) dx


D

b (x)

230

Metode Numerice
(x)

unde F(x) =

12( x ) f ( x, y )dy . Considerm o re ea de noduri (xi, yj), i = 0, 1, , n i a F ( x ) dx o formul de cuadratur se ob ine: Ai F ( x i )


i =0 n b

j = 0, 1, , m. Aplicnd integralei

f ( x, y ) dxdy
D

unde F(xi) =
(x ) 2( x i) f ( x i , y )dy .

1 i

Aplicnd i acestei ultime integrale o formul de cuadratur: F(xi) Bijf x i , y j


j=0 m i

rezult formula de aproximare

f ( x, y ) dxdy Ai Bijf ( x i , y j ) .
D

n mi

i =0 j=0

S considerm cazul n care D este un dreptunghi: D = {(x,y) R2 | axb, c y d }.

i re eaua este format din punctele


xi = a + ih, i = 0, 1, , n, h = yi = c + jk, j = 0, 1, , m, k = Y d yi+1 yi c a xi xi+1 b X ba n dc m

231

Mdlina Roxana Buneci

Vom ob ine valoarea aproximativ a integralei func iei f pe dreptunghiul de vrfuri (xi, yi), (xi, yi+1) , (xi+1, yi) i (xi+1, yi+1) prin aplicarea repetat a formulei trapezelor:
x

Iij =

i +1 y

yj

j+1

x k f ( x, y ) dy dx i+1 f x, y j + f x, y j+1 x i 2

((

)) (

) dx

x k x = i +1 f x, y j dx + i+1 f x, y j+1 dx x 2 xi i

kh f x,i y j + f x,i+1 y j + f x i , y j+1 + f x i +1, y j+1 22

((

) (

) (

) (

))

Astfel valoarea aproximativ a integralei

f ( x, y ) dxdy =
D

n 1m 1 i =0 j=0

Iij

n 1m 1

kh f x,i y j + f x,i +1 y j + f x i , y j+1 + f x i+1, y j+1 . i =0 j=0 4

((

) (

) (

) (

))

Presupunem c xi = a + ih, i = 0, 1, , 2n, h = yi = c + jk, j = 0, 1, , 2m, k =

ba 2n dc 2m

Dac pentru calculul integralei Iij cu i i j pare se aplic formula Simpson repetat se ob ine
x

Iij =

i+2 y x i

y j

j+ 2

f ( x, y ) dy dx

x k i+ 2 f x, y j + 4f x, y j+1 + f x, y j+ 2 dx x 6 i

((
(

) (

))

x x k x = i + 2 f x, y j dx + 4 i + 2 f x, y j+1 dx + i + 2 f x, y j+ 2 dx x x 3 xi i i

232

Metode Numerice

hk (f x i , y j + f x i + 2 , y j + f x i , y j+ 2 + f x i + 2 , y j+ 2 + 9

) ( ) ( ) ( ) + 4 ( f ( x i +1, y j ) + f ( x i +1y j+1 ) + f ( x i+ 2 , y j+1 ) + f ( x i +1, y j+ 2 ) ) + + 16f ( x i+1, y j+1 )) ( ) ( ) ( ) ( ) + 4 ( f ( x i +1, y j ) + f ( x i+1y j+1 ) + f ( x i + 2 , y j+1 ) + f ( x i +1, y j+ 2 ) ) + + 16f ( x i +1, y j+1 ))
f ( x, y ) dxdy =
D

Notm Fij = hk (f x i , y j + f x i+ 2 , y j + f x i , y j+ 2 + f x i + 2 , y j+ 2 + 9

Atunci
n 1m 1 i =0 j=0

I2i,2 j F2i,2 j
i =0 j=0

n 1m 1

Procedura dtrapeze are drept parametri func ia care se integreaz, limitele de integrare, i numerele n i m care determin punctele din re ea. Procedura returneaz valoarea aproximativ a integralei duble ob inut prin aplicarea repetat a formulei trapezelor.
> dtrapeze := proc(f, a, b, c, d, n, m) > local i, j, iabcd, h, k; > iabcd := 0; > h := (b - a)/n; > k := (d - c)/m; > for i from 0 to n - 1 do for j from 0 to m - 1 do iabcd := > iabcd + f(a + i*h, c + j*k)+ f(a + i*h, c + (j + 1)*k) + f(a + (i + 1)*h, c + j*k) + f(a + (i + 1)*h, c + (j + 1)*k) > od > od; > iabcd := 1/4*iabcd*h*k; > RETURN(evalf(iabcd)) > end;

Exemple
> f:=((x,y)->x^7*ln(x+y)+x*y*cos(x));

233

Mdlina Roxana Buneci

f := ( x, y ) x 7 ln( x + y ) + x y cos( x )
> evalf(int(int(f(x,y),y=1..3),x=2..3));

2418.125737
> evalf(dtrapeze(f,2,3,1,3,5,10));

2470.913760
> dtrapeze(f,2.,3.,1.,3.,5,10);

2470.913767

234

Metode Numerice

Anexa : Ini iere n Maple


A.1 Structura intern. Categorii de comenzi MAPLE.
MAPLE este un mediu de programare pentru calcule numerice i simbolice.

Calculul simbolic este calculul cu variabile i constante care respect regulile


algebrice, ale analizei i ale altor ramuri ale matematicii. MAPLE-ul permite manipularea formulelor care utilizeaz simboluri, necunoscute i opera ii formale, n compara ie cu limbajele de programare tradi ionale care utilizeaz doar date numerice, caractere i iruri de caractere. Se ncadreaz n aceeai clas de produse software ca i Mathematica, MathCAD, MATLAB i TKSolver. MAPLE are trei componente de baz: nucleul (kernel), biblioteca standard (library) i interfa cu utilizatorul (interface). Nucleul este scris n C i realizeaz cea mai mare parte a calculelor fcute de sistem. Biblioteca standard este automat ncrcat n memorie la deschidere unei sesiuni MAPLE. n afara acestei biblioteci exist o bibliotec extins cu rutine destinate rezolvrii unor probleme mai complicate, ca de exemplu, rezolvarea sistemelor de ecua ii, probleme de statistic sau algebr liniar. Aceast bibliotec nu este ncrcat automat n memorie, ci trebuie accesat, atunci cnd este necesar. Interfa a cu utilizatorul este scris n C. Interfa a pentru sistemul de operare Windows este bazat pe ferestre. O foaie

(formular) de programare MAPLE (fiier MAPLE, fiier cu extensia .mws)


existent poate fi ncrcat selectnd Open din meniul File, iar o foaie nou de programare MAPLE poate fi creat selectnd New din meniul File. Salvarea foii de programare MAPLE se realizeaz selectnd Save sau Save as (pentru salvarea sub un alt nume) din meniul File. Foia de programare se poate salva sub forma unui fiier text sau latex dac se selecteaz nchidere X.
235

Export as din meniu File. ncheierea

sesiunii MAPLE se face selectnd Exit din meniul File, sau prin clic pe butonul de

Mdlina Roxana Buneci

Foile de programare MAPLE constau n cinci tipuri de zone: text, input (intrare), ouput (ieire), 2D graphics (grafic 2D), 3D graphics (grafic 3D), i

animation (anima ie). n zona text se introduce textul necesar documentrii. Zona
input este zona n care se introduc comenzile MAPLE i este recunoscut dup promptul > prezent n marginea din stnga. ntinderea zonei input sau a zonei text este artat printr-o bar vertical n partea stng. Comutarea ntre cele dou zone se poate face cu ajutorul tastei func ionale F5 sau din bara de meniu. Zona output este generat automat la furnizarea rspunsului. Colec ia de butoane i informa ia afiat n bara de context (sub bara de instrumente) depind de con inutul curent definit tipul de zon n care se gsete cursorul. Informa ia despre foia de programare curent este afiat n bara de stare, n partea de jos a ecranului. MAPLE este un mediu interpretat. Explicm n continuare ce nseamn aceasta. Pentru ca un program (indiferent de limbajul n care este scris) s poat fi executat de calculator este necesar s fi tradus n limbaj main. Exist trei modalit i principale pentru a ob ine aceast traducere: interpretarea, asamblarea

i compilarea. Programele asamblate i cele compilate sunt traduse n limbaj


main nainte ca s fie utilizate. Interpretarea este un tip special de traducere, n care programul este tradus n instruc iuni n limbaj main din mers, adic n timpul execu iei sale. Mai precis, programul care trebuie interpretat (s-l numim P) este preluat de un program de interpretare (interpretorul I). Cnd se utilizeaz programul P, calculatorul ruleaz de fapt interpretorul I, iar interpretorul I execut paii programului P. Interpretorul verific textul programului P i ndeplinete instruc iunile acestuia pas cu pas. Interpretarea este flexibil deoarece un program interpretat poate fi adaptat, schimbat sau revizuit din mers. Sigur, interpretarea are

i dezavantaje asupra crora nu insistm aici (de exemplu, programele interpretate


nu pot fi executate dac nu exist i un interpretor corespunztor). Fiind un mediu interpretat MAPLE permite realizare de rutine interactive. Apari ia promptului > n fereastra MAPLE semnific faptul c se poate introduce o comand. Fiecare comand (cu excep ia comenzii ?) trebuie ncheiat cu punct i virgul (;) sau dou puncte (:). Omiterea acestora genereaz o eroare de sintax. Rectificarea se face tiprind ; sau : pe o linie nou. Fiecare comanda este executat

236

Metode Numerice

dup apsarea tastei ENTER.

Dac s-a utilizat : pentru ncheierea comenzii,

comanda este executat fr a se afia rezultatele, iar n cazul utilizrii ; se afieaz

i rezultatele.
MAPLE dispune de peste 2000 de func ii predefinite i comenzi. Fiecare

comand este introdus, n zona input, n felul urmtor:


> nume_comanda(param1,param2,...); Numele comenzilor a fost ales astfel nct pe de o parte s fie apropiat de func ionalitatea comenzii i pe de alt parte s fie ct mai scurt posibil. MAPLE este un mediu case-sensitive (se face distinc ie ntre literele mari i literele mici). Cele mai multe comenzi ncep cu liter mic i au n coresponden o aceeai comand care ncepe cu liter mare. Aceasta din urm poart denumirea de

comand inert i rolul ei este doar de afiare matematic a unei expresii. Cele mai
multe comenzi MAPLE necesit o list de parametri la intrare. Aceast list poate con ine de exemplu, numere, expresii, mul imi, etc., sau poate s nu con in nici un parametru. Indiferent de numrul de parametri specifica i, ei trebuie inclui ntre paranteze rotunde (). Toate comenzile au numr minim de parametri de tip precizat, de cele mai multe ori ntr-o ordine precizat. Multe comenzi pot fi utilizate cu un numr de parametri mai mare strict dect acest numr minim de parametri. Aceti extra parametri reprezint de obicei op iuni de control al func ionrii comenzii respective. Comenzile MAPLE pot fi folosite ca parametri. Acestea sunt evaluate i rezultatele lor sunt inserate n lista de parametri. Comenzile MAPLE se pot clasifica n trei categorii: 1. 2. Comenzi care se ncarc automat la deschiderea unei sesiuni Comenzi din biblioteca extins. nainte de a le folosi acestea trebuie MAPLE. Acestea pot fi apelate direct aa cum s-a precizat mai sus. mai nti ncrcate n memorie cu ajutorul comenzii readlib sub forma > readlib(nume_comanda); 3.

Comenzi care apar in unor pachete specializate. Exist dou prin specificarea pachetului sub forma:

modalit i de utilizare a acestor comenzi: > nume_pachet[nume_comanda](param1,param2,...);

237

Mdlina Roxana Buneci

cu ajutorul comenzii with. Un apel de forma

> with(nume_pachet); are ca urmare ncrcarea n memorie i afiarea n zona ouput a tuturor comenzilor din pachet. Pn la ncheierea sesiunii MAPLE acestea pot fi utilizate ca i cele din prima categorie. Din cele de mai sus rezult c nu este ntotdeauna suficient s se cunoasc numele unei comenzii. Uneori ea trebuie ncrcat din bibliotec sau dintr-un pachet. Dac nu s-a fcut acest lucru i s-a introdus comanda, MAPLE nu genereaz un mesaj de eroare, ci afieaz n zona output, comanda introdus n zona input. n acest caz trebuie verificat dac este scris corect comanda (inclusiv dac literele mari i mici se potrivesc), sau trebuie ncrcat n memorie. Informa ii asupra modului corect de introducere a unei comenzi se pot ob ine cu ajutorul comenzii

help. Exist mai mute modalit i de utilizare a acestei comenzi. Este recomandabil,
urmtoarea form: > ? nume_comanda O comand de forma:
>?

afieaz informa ii generale despre structura help-ului. Alt variant presupune un apel de forma > help(`nume_comanda`); De remarcat faptul c numele comenzii este inclus ntre apostrofuri ntoarse (backquotes).

A.2. Operatori, constante i func ii predefinite n MAPLE. Expresii.


O expresie este o combina ie valid de operatori i variabile, constante, i apeluri de func ii. Opera ie Adunare Operator + Exemple x+y

238

Metode Numerice

Scdere Opus nmul ire mpr ire Ridicare la putere (xy)

* / ** sau ^

x-y -x x*y x/y x**y sau x^y

Tabelul precedent con ine operatorii aritmetici de baz din MAPLE. Preceden a operatorilor este aceeai ca n majoritatea limbajelor de programare. Mai nti sunt evaluate expresiile din paranteze. n lista urmtoare prioritatea cade de sus n jos: 1. (operator unar) 2. **, ^ 3. *, / 4. +, -(scdere) De remarcat faptul c exponen ierea succesiv nu e valid. Astfel MAPLE nu poate evalua x^y^z. O expresie de acest fel trebuie introdus sub forma x^(y^z). Ori de cte ori exist ambiguit i trebuie utilizate ( ). Urmtorul tabel prezint func iile de baz din MAPLE ce pot interveni n expresiile aritmetice. Nota ie MAPLE abs(x) iquo(x,y) irem(x,y) trunc(x) Semnifica ie |x| (modulul) partea ntreag a mpr irii x/y restul mpr irii lui x la y cel mai mare numr ntreg x, dac x 0, sau cel mai mic numr ntreg x, dac x < 0 frac(x) round(x) floor(x) ceil(x) x-trunc(x) rotunjete pe x la cel mai apropiat ntreg cel mai mare numr ntreg x cel mai mic numr ntreg x

239

Mdlina Roxana Buneci

sqrt(x) sau x^(1/2) exp(x) ln(x) sau log(x) sin(x) cos(x) tan(x) ex

x
lnx (logaritm natural) sinx cosx tgx

Facem cteva remarci asupra func iilor irem i iqou (deoarece nu respect ntocmai teorema mpr irii cu rest). Astfel dac m i n sunt dou numere ntregi, n este nenul i r este numrul ntreg returnat de irem, atunci este satisfcut rela ia: m = n*q + r, abs(r) < abs(n) i m*r 0. Dac m i n nu sunt amndou numere ntregi, atunci irem rmne neevaluat. Ambele func ii pot fi utilizate i cu cte trei parametri. Dac al treilea parametru este prezent n func ia irem, atunci lui i se asigneaz ctul, iar n cazul func iei iquo i se asigneaz restul mpr irii. Exemple:
> irem(29,4,'q');

1
> q;

7
> iquo(29,4,'r');

7
> r;

1
> irem(-29,4);

-1
> irem(29,-4);

1
> irem(-29,-4);

-1
> iquo(-29,4);

-7
> iquo(29,-4);

240

Metode Numerice

-7
> iquo(-29,-4);

7 Func iile rem i quo se aplic polinoamelor i reprezint analoagele func iilor irem i iquo. Acestea cer obligatoriu al treilea parametru ce indic nedeterminata n raport cu care se consider polinomul. Op ional admit al patrulea parametru, cu acelai rol ca parametru 3 din func iile irem i iquo. Asfel dac a i b sunt dou polinoame, b este nenul, r restul returnat de rem i q este ctul returnat de quo, atunci este satisfcut rela ia: a = b*q + r, grad(r) < grad(n) Exemple:
> rem(x^5+2*x+1, x^2+x+1, x, 'q');

x
> q;

x3 x2 + 1
> quo(x^5+2*x+1, x^2+x+1, x);

x3 x2 + 1
> quo(x^5+2*y+z, x^2+x+1, x,'r');

x3 x2 + 1
> r;

2y+z1x Func ia factorial(k) calculeaz k! (k factorial, 12k). Acelai efect n are i k!, dup cum rezult din exemplele de mai jos:
> factorial(4);

24
> 4!;

24
> 6!;

720
> factorial(factorial(3))=3!!;

720 = 720 Tabelul de mai jos con ine cteva constante MAPLE: Constant Nota ia matematic

241

Mdlina Roxana Buneci

Pi infinity gamma true false

constanta lui Euler adevr, n cazul evalurii booleene fals, n cazul evalurii booleene

Numrul complex i (i2 = -1) este desemnat n MAPLE prin I. De re inut c pi (scris cu liter mic) se refer la litera greceasc . Tipul booleean n MAPLE are dou valori: true i false. Expresiile booleene (logice) pot fi formate cu ajutorul operatorilor de compara ie i operatorilor logici. Urmtoarele dou tabele con in aceti operatori. Operator egal diferit mai mare mai mare egal mai mic mai mic egal Operator Nega ie (non) unar Conjunc ie (i) disjunc ie (sau) Simbol = <> > >= < <= Simbol not and or Exemple x=y x<>y x>y x>=y x<y x<=y Exemple not x x and y x or y

Ordinea de efectuare a opera iilor este: not, and, or. n MAPLE exist expresii similare cu expresiile din C formate cu operatorul virgul. Astfel o secven de expresii n MAPLE este un ir de expresii separate ntre ele prin virgul. Cele mai multe func ii din MAPLE cer la intrare o secven de expresii, i ntorc un rezultat ce con ine o secven de instruc iuni. Cel mai simplu mod de a crea o secven de instruc iuni este:
> 1,2,3,4,5; 242

Metode Numerice

1, 2 , 3, 4 , 5
> a=1,b=a+2,c+2;

a = 1, b = a + 2 , c + 2
Alternativ, exist alte dou moduri de a crea secven e de instruc iuni n MAPLE: cu ajutorul operatorului $ sau cu ajutorul comenzii seq. Urmtoarele exemple sunt edificatoare:
> a$5;

a, a , a, a , a
> $2..7;

2, 3 , 4, 5, 6 , 7
> i^2$i=1..4;

1, 4, 9, 16
> seq(i!,i=1..4);

1, 2, 6, 24
> seq(i!!,i=1..4);

1, 2, 720, 620448401733239439360000

Secven vid este desemnat prin NULL.

A.3. Numere, iruri i identificatori.


Constantele numerice din MAPLE sunt de trei tipuri:

ntregi ra ionale n virgul mobil

Constantele ntregi sunt iruri de cifre zecimale (0..9) eventual


precedate de un semn (+,-) reprezentnd un numr ntreg. Numrul maxim de cifre permise este dependent de sistem, dar n general este mai mare de 500 000. Nu poate fi aflat cu ajutorul comenzii kernelopts(maxdigits).

Exemple de constante ntregi:


> 0;

243

Mdlina Roxana Buneci

> 123;

123
> -6789;

-6789
> 123456789123456789012;

123456789123456789012

Constantele ra ionale utilizeaz operatorul de mpr ire / pentru a separa


numrtorul de numitor. Astfel m/n cu m i n constante ntregi reprezint numrul ra ional
m . n

Exemple de constante ra ionale:


> 2/3;

2 3
> 6/7;

6 7
> 4/6;

2 3
> 4/2;

2
> -39/13;

-3 Se observ c MAPLE face automat simplificarea frac iilor. Reprezentarea unei constante n virgul mobil con ine n general cmpurile urmtoare:

partea ntreag punctul zecimal partea frac ionar

e sau E i un exponent cu semn (op ional);

244

Metode Numerice

Se poate omite partea ntreag sau partea frac ionar, dar nu amndou. De asemenea, se poate omite punctul zecimal sau litera e(E) i exponentul, dar nu amndou.

Exemple de constante n virgul mobil:


> 2.3;

2.3
> 678.96e-9;

0.67896 10 -6
> .1234;

0.1234
> 123E56;

0.123 10 59
> 1.;

1.

Constante n virgul mobil pot fi ob inute i cu comanda Float. Aceast comand are forma Float(mantisa,exponent);

i ntoarce mantisa*10 ^exponent.


> Float(123,56);

0.123 10 59 Expresiile aritmetice cu operanzi constante ntregi sau ra ionale sunt evaluate exact n MAPLE (rezultatul este o constant ra ional sau o constant ntreag). Exemple:
> 1/3+4/5;

17 15
> 1/3+8;

25 3
> 1/3+2/3;

1
245

Mdlina Roxana Buneci

n cazul n care expresia con ine constante n virgul mobil, atunci constantele ntregi i cele ra ionale (care apar eventual n expresie) sunt convertite n virgul mobil (sunt aproximate cu constante n virgul mobil). Rezultatul expresiei este n acest caz o constant n virgul mobil. Exemple:
> 1/3.+4/5;

1.133333333
> 1./3+8;

8.333333333
> 1/3+2/3.;

1.000000000
> 20+45.75e-2;

20.4575 Orice numr real nenul x poate fi scris sub form normalizat, n baza 10: x = m 10p cu 0,1m<1, (m = mantisa). n calcule se re in de obicei un numr finit de cifre zecimale ale mantisei. Numrul de cifre care se re in se numete numr de cifre

semnificative. Numrul de cifre semnificative poate fi controlat n MAPLE cu


ajutorul variabilei globale Digits. Valoarea implicit pentru pentru digits este 10. Exemple:
> 1./7;

0.1428571429
> Digits:=20;

Digits := 20
> 1./7;

0.14285714285714285714 Deci MAPLE poate lucra n virgul mobil cu o precizie teoretic infinit. Pentru a determina evaluarea unei expresii n virgul mobil (chiar dac to i operanzii din expresie sunt ntregi sau ra ionali) se poate folosi comanda evalf. evalf(expresie) determin evaluarea expresiei la o valoare n virgul mobil, cu numrul de cifre semnificative stabilit de variabila Digits.

246

Metode Numerice

evalf(expresie,n) determin evaluarea expresiei la o valoare n virgul mobil, utiliznd n de cifre semnificative (valoarea variabilei Digits nu este afectat). Exemple:
> evalf(1/7);

0.1428571429
> evalf(1/7,20);

0.14285714285714285714
> evalf(Pi);

3.141592654
> evalf(Pi,30);

3.14159265358979323846264338328 Exist o ntreag familie de func ii de evaluare numeric i algebric a expresiilor:


eval evalueaz n ntregime o expresie evala evalueaz algebric o expresie evalf evalueaz numeric o expresie evalb evalueaz boolean o expresie evalm evalueaz matriceal o expresie evalc evalueaz n mul imea numerelor complexe o expresie

n MAPLE un ir de caractere (string) const dintr-o succesiune de caractere cuprinse ntre apostrofuri ntoarse (backquote) (`) sau ntre ghilimele (). Operatorul de concatenare pentru irurile de caractere n MAPLE este || (de asemenea se poate utiliza comanda cat). Exemple:
> `Acesta este un string in MAPLE`;

Acesta este un string in MAPLE


> `1+2=?`;

1+2=?
> `acesta este`||` un string`;

acesta este un string


Un identificator n MAPLE este un ir de caractere alfabetice (A-Z, a-z), cifre (0-9) i caracterul _ (liniu a de subliniere, underline), ir n care primul
247

Mdlina Roxana Buneci

caracter este un caracter alfabetic (A-Z, a-z). Lungimea maxim a unui identificator este dependent de sistem . MAPLE este case-sensitive, ceea ce nsemn c identificatorul nume este diferit de identificatorul Nume. MAPLE con ine un numr de identificatori predefini i (identificatori rezerva i). O list a acestora poate fi ob inut cu comanda
> ?ininame

sau
> help(`ininame`);

A.4. Comenzi de calcul n MAPLE


Tabelul de mai jos con ine comenzile din MAPLE pentru diferen iere, integrare i nsumare. Nota ie MAPLE Semnifica ie diff(f(x),x) int(f(x),x) sum(f(n),n) derivat par ial integral indefinit suma seriei Nota ie matematic
f x

f (x )dx f (n )
n =1

int(f(x),x=a..b)

integral definit

a f ( x ) dx f (k )
k =a b

sum(f(k),k=a..b) sum de la a la b

limit(f(x), x=a)

limita func iei f n a;

x a

lim f ( x )

Diff, Int, Sum, Limit reprezint comenzile inerte corespunztoare. Comanda limit admite un al treilea parametru op ional (dac acesta este left se calculeaz limita la stnga, dac este right se calculeaz limita la dreapta
248

Metode Numerice

Exemple:
> diff(sin(x),x);

cos( x )
> diff(cox(x),y);

0
> diff(x*sin(cos(x)),x);

sin( cos( x ) ) x cos( cos( x ) ) sin( x )


> diff(ln(x),x);

1 x
> Diff(ln(x),x);

d ln( x ) dx
> Diff(ln(x),x) = diff(ln(x),x);

d 1 ln( x ) = dx x
> Diff(sin(x)*tan(y),x,y)= diff(sin(x)*tan(y),x,y);

2 ( sin( x ) tan( y ) ) = cos( x ) ( 1 + tan( y ) 2 ) y x


> int( sin(x), x );

cos( x )
> Int( sin(x), x );

sin( x ) dx
> int( sin(x), x=0..Pi );

2
> Int( x^2*ln(x), x=1..3 )=int( x^2*ln(x), x=1..3 );
3

x 2 ln( x ) dx = 9 ln( 3 ) 26 9 1
> Int( Int(exp(-x^2-y^2), x=0..infinity ), y=0..infinity)
exp(-x^2-y^2), x=0..infinity ), y=0..infinity); =int(int(

249

Mdlina Roxana Buneci


0
> sum(k^2,k=1..4);

( x 2 y 2 ) e dx d y = 4 0 30

> Sum(k^2,k=1..4);

k2
k=1

> Sum(k^2,k=1..n)=sum(k^2,k=1..n);

k=1

k2 =

( n + 1 )3 ( n + 1 )2 n 1 + + 6 6 3 2

> sum(1/k^2,k=1..infinity);

2 6
> Sum(1/k!,k=0..infinity)=sum(1/k!,k=0..infinity);

k=0

1 =e k! 1

> limit(sin(x)/x, x=0);

> Limit(sin(x)/x, x=0);

x0

lim

sin( x ) x

> Limit(sin(x)/x, x=0)=limit(sin(x)/x, x=0);

x0

lim

sin( x ) =1 x

> Limit((cos(2*x)-1)/x^2, x=0)=limit((cos(2*x)-1)/x^2, x=0);

x0

lim

cos( 2 x ) 1 = -2 x2
lim e x =

> Limit(exp(x), x=infinity)=limit(exp(x), x=infinity);


x

> Limit(exp(x), x=-infinity)=limit(exp(x), x=-infinity);


x ( )

lim

ex = 0

250

Metode Numerice

> Limit(1/x, x=0)=limit(1/x, x=0);

x0

lim

1 = undefined x 1 = x 1 = x

> Limit(1/x, x=0, left)=limit(1/x, x=0, left);

x 0-

lim

> Limit(1/x, x=0, right)=limit(1/x, x=0, right);

x 0+

lim

Prezentm n continuare cteva exemple cu comenzile expand, factor i

simplify. Principalul rol al comenzii expand este aplicarea distributivit ii


produsului fa de adunare. Comanda factor se aplic pentru descompunerea n factori ireductibili a polinoamelor de mai multe variabile. Iar comanda simplify aplic regulile de simplificare ntr-o expresie.
> expand((X^2-Y^2)^2*(X^2+Y^2)^2);

X 8 2 X 4 Y 4 + Y8
> factor(X^6-Y^6);

( X Y ) ( X + Y ) ( X 2 + X Y + Y2 ) ( X 2 X Y + Y2 )
> simplify((X^6-Y^6)/(X^2+X*Y+Y^2));

X 4 Y X 3 + Y3 X Y4

A.5. Reprezentri grafice n MAPLE


Comenzile destinate reprezentrilor grafice sunt incluse n pachetul plots. Numele pachetului trebuie s precead fiecare comand. Alt variant presupune ncrcarea ntregului pachet n memorie cu ajutorul comenzii with:
> with(plots);

251

Mdlina Roxana Buneci

[ animate, animate3d, animatecurve, arrow, changecoords , complexplot, complexplot3d, conformal , conformal3d , contourplot, contourplot3d, coordplot, coordplot3d, cylinderplot, densityplot, display, display3d, fieldplot, fieldplot3d, gradplot, gradplot3d, graphplot3d, implicitplot, implicitplot3d, inequal, interactive, listcontplot, listcontplot3d, listdensityplot, listplot, listplot3d, loglogplot, logplot, matrixplot, odeplot, pareto, plotcompare, pointplot, pointplot3d, polarplot, polygonplot, polygonplot3d, polyhedra_supported , polyhedraplot, replot, rootlocus , semilogplot, setoptions, setoptions3d, spacecurve , sparsematrixplot , sphereplot , surfdata , textplot, textplot3d, tubeplot ] Prezentm cteva exemple cu comenzile plot, plot3d i animate3d. Plot este destinat reprezentrilor grafice n plan i poate fi folosit sub mai multe forme. Prezentm de fiecare dat numrul minim de parametri ceru i. Nota ie MAPLE plot(f(x),x = a..b) plot([f(x),g(x),],x = a..b) plot([f(t),g(t),t = a..b]) Curba/Curbele reprezentate y = f(x), x[a,b] y = f(x),y = g(x), x[a,b]

x = f (t ) t [a , b ] y = g (t )

Reprezentarea grafic se face conform cu op iunile (de stil, culoare, axe, coordonate, rezolu ie ) indicate n comand sau n raport cu cele implicite. Unele din aceste op iuni se pot stabili i din meniul contextual: se introduce comanda de reprezentare grafic a curbei, iar apoi se selecteaz din bara de context, sau prin clic cu butonul drept al mouse-ului pe grafic, op iunile dorite. Implicit se folosesc coordonatele carteziene. Dac se dorete utilizarea altor coordonate, acestea trebuie specificate, prin introducerea n lista de op iuni sub forma coords = nume_coordonate. O op iune de forma discont=true, determin apelul comenzii Discont pentru determinarea punctelor de discontinuitate a func iei ce se reprezint grafic. Exemple:
> plot(sin(x)*ln(x), x=Pi..8*Pi, color=black);

252

Metode Numerice

> plot([sin(x),cos(x)],x=0..2*Pi,title=`sinus si cosinus`);

>plot([sin(t),cos(t),t=0..2*Pi],title=`cerc`,color=black);

> plot(sin(2*t),t=0..2*Pi,coords=polar, color=black);

253

Mdlina Roxana Buneci

>plot(sin(x)/x, x=-3*Pi..3*Pi,discont=true,color=black);

Comanda plot3d este destinat reprezentrii grafice a suprafe elor n spa iu tridimensional. Ca i n cazul comenzii plot reprezentarea grafic se face conform cu op iunile indicate n comand sau n raport cu cele implicite. Unele din aceste op iuni se pot stabili i din meniul contextual. Comanda plot3d poate fi folosit sub mai multe forme. Prezentm de fiecare dat numrul minim de parametri ceru i. Nota ie MAPLE plot3d(f(x,y),x = a..b,y=c..d) Suprafa a/Suprafe ele reprezentate z = f(x,y), (x,y)[a,b][c,d] plot({f(x,y),g(x,y)},x = a..b,y=c..d) z = f(x,y),z=g(x,y) (x,y)[a,b][c,d] plot([f(u,v),g(u,v),h(u,v)],u=a..b,v=c.. d)

x = f (u , v ) y = g (u , v ) z = h (u, v )

254

Metode Numerice

Exemple

>plot3d(cos(x)*sin(y),x=-2*Pi..2*Pi,y=-2*Pi..2*Pi);

>plot3d([v*cos(u),v*sin(u),v*ln(u)],u=Pi..4*Pi,v=0..1);

Comenzile animate i animate3d sunt destinate anima iei n plan i spa iu. Comanda animate3d(f(x,y,t),x=a..b,y=b..c,t=t1..t2) creeaz anima ie cu ajutorul cadrelor ob inute prin reprezentarea grafic a suprafe elor zt = f(x,y,t), (x,y)[a,b][c,d] pentru valori ale lui t n intervalul [t1,t2]. Numrul de cadre poate fi stabilit cu ajutorul op iunii frames (implicit sunt 8). Exemplu:

>animate3d(cos(x)*sin(t*y),x=-Pi..Pi,y=-Pi..Pi,t=1..2);

255

Mdlina Roxana Buneci

A.6. Structuri de date n MAPLE


A.6.1 Expresii i func ii
Comanda >subs(x=a, expr); ntoarce expresia ob inut prin nlocuirea lui x cu a n expresia expr Comanda >subs(s1,s2,..., sn, expr); (unde s1,s2,..., sn sunt ecua ii sau mul imi de ecua ii sau liste de ecua ii) ntoarce expresia ob inut n urma substitu iilor indicate de s1, s2, ..., sn n expresia expr. Substitu iile se execut secven ial ncepnd cu s1. Substitu iile dintr-o mul ime sau dintr-o list se execut simultan. Ac iunea comenzii subs nu este urmat de o evaluare complet. Dac se dorete evaluarea complet se folosete comanda >eval(expr, x=a); care ntoarce expresia ob inut prin nlocuirea lui x cu a n expresia expr sau comanda >eval(expr, s1,s2,..., sn); (unde s1,s2,..., sn sunt ecua ii sau mul imi de ecua ii sau liste de ecua ii) care ntoarce expresia ob inut n urma substitu iilor simultane indicate de s1, s2, ..., sn n expresia expr. Exemple:
> subs(x=Pi, sin(x));

sin( )
> eval(sin(x), x=Pi);

0 Comanda >nops(expr); ntoarce numrul de operanzi ai expresiei expr Comanda >op(i, expr);

256

Metode Numerice

extrage un operand din expresia expr: dac i > 0, comanda extrage cel de al i-lea operand dac i < 0, comanda extrage cel de al nops(expr) +i +1 operand n cazul func iilor, dac i = 0, comanda returneaz numele func iei dac i > nops(expr) sau i < -nops(expr) se genereaz mesaj de eroare

Comanda >op(i..j, expr); ntoarce irul operanzilor de la operandul i la operandul j. Comanda >subsop(i=expr1, expr); ntoarce expresia ob inut prin nlocuirea unui operand al expresiei expr cu expresia expr1 dac i > 0, se nlocuiete cel de al i-lea operand dac i < 0, se nlocuiete cel de al nops(expr) +i +1 operand

Comanda >subsop(i1=expr1, i2=expr2,..., ik=exprk, expr); ntoarce expresia ob inut prin nlocuirea simultan a operanzilor expresiei expr desemna i de i1, i2, ... ik (n acelai mod ca mai sus) cu expresiile expri1, ..., exprik (respectiv). Exemple:
> expr:=u*v+cos(u*v)/exp(-u^2);

expr := u v +
> nops(expr);

cos( u v ) e
2 ( u )

2
> op(1,expr);

uv
> op(2,expr);

cos( u v ) e
> subsop(2=u+v,expr);
2 ( u )

257

Mdlina Roxana Buneci

uv+u+v
> expr;

uv+

cos( u v ) e
2 ( u )

Definirea unei legturi fuc ionale n MAPLE se face sub forma >nume_functie: (lista variabile) -> expresie; Comanda >nume_functie(lista argumente curente); ntoarce valoarea func iei nume_func ie pentru argumentele precizate. Operatorii pentru adunarea, nmul irea, compunerea func iilor sunt +, *, respectiv, @. Operatorul pentru compunere repetat este @@. Astfel dac f este o func ie i n un numr natural, atunci dac n > 0, f @@ n reprezint compunerea de n ori a func iei f cu ea nsi. dac n = 0, f @@ 0 reprezint func ia identic dac n < 0 i f este inversabil, atunci f @@ n reprezint compunerea de -n ori a inversei func iei f cu ea nsi (inversa func ie este dat de invfunc[f]). Comanda >unapply(expr, x); ntoarce func ia x -> expr, iar comanda >unapply(expr, x, y, ...); ntoarce func ia (x,y, ...) -> expr Exemple:
> f:=x->x^3+cos(x)*x^(1/3)+exp(-x^2);
( 1 /3 ) 2 ( x )

f := x x3 + cos( x ) x
> nops(f);

+e

1
> g:=(x,y)->x^2*exp(-x^2-y^2)+cos(x)*sin(y);

258

Metode Numerice
2 2 ( x y )

g := ( x, y ) x2 e
> nops(g);

+ cos( x ) sin( y )

1
> h:=(u,v,w)->sin(u)*cos(w)*v+u;

h := ( u, v, w ) sin( u ) cos( w ) v + u
> f(1);
( -1 )

1 + cos( 1 ) + e
> f(1.);

1.908181747
> evalf(f(1));

1.908181747
> evalf(f(1),50);

1.9081817470395820389964603776044374711781215516497
> f(alpha);
2 ( )

3 + cos( )
> g(Pi/2,3);

( 1 /3 )

+e

1 2 e 4
> evalf(g(Pi/2,3));

2 4 9

0.00002582324018
> g(2,3);
( -13 )

4e
> g(2,3.);

+ cos( 2 ) sin( 3 )

0.9041317628 10 -5 + 0.1411200081 cos( 2 )


> g(2.,3);

0.9041317628 10 -5 0.4161468365 sin( 3 )


> g(2.,3.);

-0.05871760362
> evalf(g(2,3));

-0.05871760362
> h(Pi/3,2,Pi/4);

259

Mdlina Roxana Buneci

3 2
> evalf(h(Pi/3,2,Pi/4));

2.271942423
> h(alpha,beta,gamma);

sin( ) cos( ) +
> h(alpha,3,Pi/4);

3 sin( ) 2 + 2
> expresie:=u*v^2+cos(Pi/u*v)/u^(1/2);

v cos u expresie := u v 2 + u
> f1:=unapply(expresie,u);

v cos u f1 := u u v2 + u
> f1(1);

v 2 + cos( v )
> f2:=unapply(expresie,u,v);

v cos u f2 := ( u, v ) u v 2 + u
> f2(1,2/3);

-1 18
> f2(alpha, 2);

2 cos 4+
> f3:=unapply(expresie,v);

v cos u f3 := v u v2 + u
> f3(1);

260

Metode Numerice

cos u u+ u

A.6.2. Liste
Listele (lists) n MAPLE sunt iruri ordonate de expresii, separate ntre ele
prin virgul i incluse ntre paranteze drepte []. Ordinea expresiilor este dat de pozi ia n care apar n list. Dac L este o list L[i] desemneaz elementul de pe pozi ia i. Lista vid este desemnat prin []. Se pot efectua urmtoarele opera ii cu liste:


Exemple:

extragerea din lista L a elementelor de pozi ia i pn la pozi ia j: L(i..j)


sau op(i..j,L).;

adugarea unui element x la lista L: [x,op(L)] (adaug elementul pe


prima pozi ie), [op(L),x] (adaug elementul pe ultima pozi ie);

modificarea elementului de pe pozi ia i: subsop(i=x,L) sau L[i]:=x;

eliminarea elementului de pe pozi ia i: subsop(i=NULL,L);

> L:=[1,-1,1,2,3,-1,1,1];

L := [ 1, -1, 1, 2, 3, -1, 1, 1 ]
> nops(L);

8
> L[2];

-1
> op(2,L);

-1
> op(3..6,L);

1, 2, 3, -1
> L[3..6];

[ 1, 2, 3, -1 ]
> L;

[ 1, -1, 1, 2, 3, -1, 1, 1 ]

261

Mdlina Roxana Buneci

> L1:=[5,op(L)];

L1 := [ 5, 1, -1, 1, 2, 3, -1, 1, 1 ]
> L;

[ 1, -1, 1, 2, 3, -1, 1, 1 ]
> L2:=[op(L),5];

L2 := [ 1, -1, 1, 2, 3, -1, 1, 1, 5 ]
> L;

[ 1, -1, 1, 2, 3, -1, 1, 1 ]
> L[3]:=8;

L3 := 8
> L;

[ 1, -1, 8, 2, 3, -1, 1, 1 ]
> subsop(4=10,L);

[ 1, -1, 8, 10, 3, -1, 1, 1 ]


> L;

[ 1, -1, 8, 2, 3, -1, 1, 1 ]
> L3:=subsop(6=NULL,L);

L3 := [ 1, -1, 8, 2, 3, 1, 1 ]
> L3;

[ 1, -1, 8, 2, 3, 1, 1 ]
> L;

[ 1, -1, 8, 2, 3, -1, 1, 1 ]
> op(-3,L);

-1

A.6.3. Mul imi


Mul imile (sets) n MAPLE sunt iruri neordonate de expresii, separate
ntre ele prin virgul i incluse ntre acolade {}. Duplicatele sunt eliminate.

Mul imea vid este desemnat prin {}. Se pot efectua urmtoarele opera ii cu
mul imi:

reuniune: operatorul union

262

Metode Numerice


Exemple:

intersec ie: operatorul intersect diferen : operatorul minus

> A:={1,2,-3,-7,12};

A := { -7, -3, 1, 2, 12 }
> nops(A);

5
> op(3,A);

1
> B:={0,-1,2,-7,11,15,16};

B := { -7, -1, 0, 2, 11, 15, 16 }


> C:=A union B;

C := { -7, -3, -1, 0, 1, 2, 11, 12, 15, 16 }


> A;

{ -7, -3, 1, 2, 12 }
> {-7, -3, 1, 2, 12};

{ -7, -3, 1, 2, 12 }
> B;

{ -7, -1, 0, 2, 11, 15, 16 }


> A intersect B;

{ -7, 2 }
> B minus A;

{ -1, 0, 11, 15, 16 }


> Delta:=(A minus B) union (B minus A);

:= { -3, -1, 0, 1, 11, 12, 15, 16 }


> culori_calde:={rosu,galben,portocaliu};

culori_calde := { rosu , portocaliu, galben }


> culori_reci:={verde,albastru,violet};

culori_reci := { albastru, verde, violet }


> culori:=culori_calde union culori_reci;

culori := { rosu , portocaliu, albastru, galben, verde, violet }


> culori_calde intersect culori_reci;

{ }

263

Mdlina Roxana Buneci

A.6.4. Tablouri
Tablourile (tables) n MAPLE sunt structuri de date ai cror membri sunt
indexa i.

Exemple:
> t:=table([(culoare1)=red,(culoare2)=green, (culoare3)=blue]);

t := table([culoare1 = red, culoare2 = green, culoare3 = blue])


> t[culoare2];

green

Un tablou cu zero sau mai multe dimensiuni, pentru care fiecare dimensiune are domeniu ntreg se numete n MAPLE array. Pentru a crea un array se poate apela func ia array sub forma:

>array( domeniile de indexare, list de ini ializare);

Parametrii sunt op ionali i pot aprea n orice ordine. Exemple:


> v := array(1..4);

v := array( 1 .. 4, [ ] )
> v[2];

v2
> v[2]:=3;

v2 := 3
> evalm(v);

[ v1, 3, v3, v4 ]
> A := array(1..2,1..2);

A := array( 1 .. 2, 1 .. 2, [ ] )
> A[1,2] := x;

A1, 2 := x
> A[1,1];

A1 , 1
> A[1,2];

264

Metode Numerice > evalm(A);

A1, 1 A 2, 1

x A2, 2

> A := array(1..2,1..2, [ [1,x], [x,x^2] ] );

1 A := x

x x2

Vectorii i matricele pot fi crea i i cu comenzile vector i matrix din pachetul linalg. Vectorii n MAPLE sunt tablouri unidimensionale cu indexate de la 1. Comanda

>vector(n, list de ini ializare);


este echivalent cu array(1..n, list de ini ializare). Matricele (matrix) n MAPLE sunt tablouri bidimensionale indexate de la 1. Cu alte cuvinte un apel

>matrix(m,n, list de ini ializare);


este echivalent cu array(1..m,1..n, list de ini ializare). Exemple:
> with(linalg): > x:=vector(3,[1,-1,0]);

x := [ 1, -1, 0 ]
> x[1];

1
> y:=vector(3);

y := array( 1 .. 3, [ ] )
> y[1];

y1
> M:=matrix(3,2,[[1,2],[3,4],[5,6]]);

1 M := 3 5
> M[1,2];

2 4 6

2 Pachetul linalg con ine comenzi pentru opera ii cu vectori i matrice.

265

Mdlina Roxana Buneci

Comanda

> map(fcn, expr, arg2, arg3, ..., argn);


aplic o func ie sau o procedur fiecrui operand al unei expresii. Se nlocuiete fiecare operand i al expresiei expr cu fcn(operand_i, arg2, ..., argn). Comanda

> map2(fcn, arg1, expr, arg3, ..., argn);


este similar comenzii map, cu deosebirea c se nlocuiete operandul i al expresiei expr cu fcn(arg1, operand_i, arg3, ..., argn). Comanda

> applyop(f, i, expr, arg2, arg3, ..., argn);


nlocuiete operandul desemnat de i (dac i > 0, se nlocuiete cel de al i-lea operand iar dac i < 0, se nlocuiete cel de al nops(expr) +i +1 operand) al expresiei expr cu f(operand_i, arg2, ..., argn) (f este o func ie). Exemple:
> f:=x->x^3+cos(x)*x^(1/3)+exp(-x^2);
( 1 /3 ) 2 ( x )

f := x x 3 + cos( x ) x
2 2 ( x y )

+e

> g:=(x,y)->x^2*exp(-x^2-y^2)+cos(x)*sin(y);

g := ( x, y ) x2 e
> h:=(u,v,w)->sin(u)*cos(w)*v+u;

+ cos( x ) sin( y )

h := ( u, v, w ) sin( u ) cos( w ) v + u
> with(linalg): > x:=vector(3,[1,-1,0]);

x := [ 1, -1, 0 ]
> map(f,x);
( -1 ) ( 1/ 3 ) ( -1 )

[ 1 + cos( 1 ) + e
> map(g,x,Pi/3);

, 1 + cos( 1 ) ( -1 )

+e

, 1]

2 1 2 1 9 9 1 1 3 e + cos( 1 ) 3 , e + cos( 1 ) 3 , 2 2 2

> map(h,x,2,Pi/2);

[ 1, -1, 0 ]
> map(h,x,2,Pi/4); 266

Metode Numerice

[ sin( 1 ) 2 + 1, sin( 1 ) 2 1, 0 ]
> M:={Pi,-Pi,Pi/2,-Pi/2};

M := { ,
> map(h,M,3,Pi/3);

, , } 2 2

{ ,
> map2(g,Pi/3, x);

3 3 , + , } 2 2 2 2

2 2 2 1 1 2 1 9 1 9 1 2 1 1 2 9 e + sin( 1 ), e sin( 1 ), e 9 2 9 2 9

> map2(h,2, x,Pi/2);

[ 2, 2 , 2 ]
> map(h,2, x,Pi/4);

1 sin( 2 ) 2 x + 2 2
> M:={Pi,-Pi,Pi/2,-Pi/2};

M := { ,
> map(h,3,M,Pi/3);

, , } 2 2

1 sin( 3 ) { , , , } + 3 2 2 2
> expr:=u*v+cos(u*v)/exp(-u^2);

expr := u v +
> applyop(f,1,expr);

cos( u v ) e
2 ( u )

u 3 v3 + cos( u v ) ( u v )
> applyop(g,1,expr,Pi/3);

( 1/3 )

+e

2 2 ( u v )

cos( u v ) e
2 ( u )

u 2 v2 e

2 2 2 u v 9

1 cos( u v ) cos( u v ) 3 + 2 2 ( u ) e

> applyop(g,2,expr,0);

267

Mdlina Roxana Buneci


2 2 2 ( u ) e cos ( u v ) 2

uv+

cos( u v ) 2 e (e

2 ( u )

> applyop(h,1,expr,0, Pi/2);

uv+
> L:=[1,-1,1,2,3,-1,1,1];

cos( u v ) e
2 ( u )

L := [ 1, -1, 1, 2, 3, -1, 1, 1 ]
> op(1,L);

1
> applyop(f,1,L);
( -1 )

[ 1 + cos( 1 ) + e
> op(3,L);

, -1, 1, 2, 3, -1, 1, 1 ] 1

> applyop(f,3,L);

[ 1, -1, 1 + cos( 1 ) + e
> applyop(g,3,L, Pi/2);

( -1 )

, 2, 3, -1, 1, 1 ]

2 1 4 1, -1, e + cos( 1 ), 2, 3, -1, 1, 1

> applyop(g,3,L, Pi);

[ 1, -1, e
> applyop(h,3,L, 2,Pi/3);

2 ( 1 )

, 2, 3, -1, 1, 1 ]

[ 1, -1, sin( 1 ) + 1, 2, 3, -1, 1, 1 ]


> applyop(h,3,L, 2,Pi/2);

[ 1, -1, 1, 2, 3, -1, 1, 1 ]
> applyop(h,-1,L, 2,Pi/3);

[ 1, -1, 1, 2, 3, -1, 1, sin( 1 ) + 1 ]

268

Metode Numerice

A.7. Elemente de programare n MAPLE


Vom prezenta cte dou variante pentru fiecare instruc iune. Prima variant este valabil n MAPLE V iar cea de a doua n versiuni mai noi de MAPLE. Anumite versiuni (cum ar fi MAPLE 8) admit ambele forme. Vom folosi ulterior prima variant.

A.7.1 Atribuirea. Decizia. Structuri repetitive Atribuirea are forma


x:=v; Efectul acestei instruc iuni const n evaluarea expresiei v pentru valorile curente ale variabilelor pe care le con ine i nscrierea rezultatului n loca ia de memorie rezervat variabilei x

Decizia are forma: if condi ie then instruc iuni1 else instruc iuni2 fi; if condi ie then instruc iuni1 else instruc iuni2 end if;

Da

condi ie

Nu Instruc iuni2

Instruc iuni1

Condi ia este o expresie logic (format cu operatori logici sau rela ionali). Modul de execu ie al deciziei (precum rezult din subschema logic de mai sus) este urmtorul:

1. 2. 3.

se evalueaz condi ia dac rezultatul este adevrat se execut instruc iuni1, n caz contrar se execut instruc iuni2. se trece la comanda care urmeaz dup decizie

n cazul n care else lipsete se folosete forma simplificat:

269

Mdlina Roxana Buneci

if condi ie then instruc iuni fi;


Da

condi ie

instruc iuni

Nu

1. se evalueaz condi ia 2. dac rezultatul este adevrat se execut instruc iuni 3. se trece la comanda care urmeaz dup decizie Un extra element elif ( innd loc de else+if) poate fi adugat n decizie, ob innd:

if/then/elif/then/else/fi
Exemple:
> a := 3; b := 7;

a := 3 b := 7
> if (a > b) then a else b fi;

7
> if (a > b) then c:=7 fi; > c;

c
> if (a > b) then c:=7 elif (a<b) then c:=9 fi;

c := 9 Exist dou instruc iuni repetitive n MAPLE: for i while. For are mai multe forme:

(1)

for i from ei by p to ef do instruc iuni od; for i from ei by p to ef do instruc iuni end do;

unde i este variabila de contorizare, p este pasul cu care se face incrementarea (decrementarea), iar ei (respectiv ef ) este o expresie care determin valoarea

270

Metode Numerice

ini ial (respectiv final) a contorului. Modul de execu ie al acestei instruc iuni este urmtorul:

1. 2.

se execut atribuirea i : = ei se evalueaz condi ia i ef dac p > 0 (sau i ef dac p < 0), i dac este ndeplinit aceast condi ie se trece la pasul 3, altfel se trece la pasul 5

3. 4. 5.

se execut instruc iuni se execut atribuirea i := i + p se execut comanda care urmeaz dup for

Pentru p >0 comanda este echivalent cu urmtoarea subschem logic:

i := ei

i ef
Nu

Da

instruc iuni

i: = i + p

Pentru p < 0 comanda este echivalent cu urmtoarea subschem logic:

i := ei

i ef
Nu

Da

instruc iuni

i: = i + p

Construc iile from ei i by p pot lipsi, caz n care ei se ia 1 i pasul se consider egal cu 1.

271

Mdlina Roxana Buneci

(2)

for i from ei by p while condi ie do instruc iuni od; for i from ei by p while condi ie do instruc iuni end do;

Modul de execu ie al acestei instruc iuni este urmtorul: 1. 2. 3. 4. 5. se execut atribuirea i : = ei se evalueaz condi ia trecut dup while, i dac este ndeplinit, se trece la pasul 3, altfel se trece la pasul 5 se execut instruc iuni se execut atribuirea i := i + p se execut comanda care urmeaz dup for

Comanda este echivalent cu urmtoarea subschem logic: i := ei

condi ie Nu

Da

instruc iuni

i: = i + p

Ca i nainte construc iile from ei i by p poate lipsi, caz n care ei se ia 1, iar pasul se consider egal cu 1. Condi ia este dat printr-o expresie boolean. Ambele clauze to i while pot fi prezente n instruc iunea for:

(3)
n acest caz

for i from ei by p to ef while condi ie do instruc iuni od; for i from ei by p to ef while condi ie do instruc iuni end do;

1. se execut atribuirea i : = ei 2. se evalueaz condi ia i ef dac p > 0 (sau i ef dac p < 0), i condi ia trecut dup while; dac amndou sunt ndeplinite se trece la pasul 3, altfel se trece la pasul 5 3. se execut instruc iuni 4. se execut atribuirea i := i + p 5. se execut comanda care urmeaz dup for

272

Metode Numerice

n cazul urmtoarei instruc iuni for contorul i parcurge toate elementele unei liste sau unei mul imi (expr):

(4)

for i in expr while condi ie do instruc iuni od; for i in expr while condi ie do instruc iuni end do;

Exemple:
> for i from 6 by 2 to 10 do print(i) od;

6 8 10
> suma := 0;

suma := 0
> for i from 11 by 2 while i < 15 do suma := suma + i od;

suma := 11 suma := 24
> L:=[1,5,3];

L := [ 1, 5, 3 ]
> suma:=0;

suma := 0
> for z in L do suma:=suma+z od;

suma := 1 suma := 6 suma := 9 Ciclu cu test ini ial are forma:

while condi ie do instruc iuni od; while condi ie do instruc iuni end do;
Testul pentru repetarea calculelor se face naintea execu iei grupului de comenzi care trebuie repetate. Dac este ndeplinit condi ia, se execut instruc iunile dup care se reevalueaz condi ia. n caz contrar, se trece la comanda care urmeaz dup ciclul cu test ini ial. Subschema logic echivalent este urmtoarea:

273

Mdlina Roxana Buneci

condi ie Nu

Da

instruc iuni

Condi ie reprezint o expresie boolean. Exemple:


> x:=234;

x := 234
> while x>0 do x:=iquo(x,10,'r');print(r) od;

x := 23 4 x := 2 3 x := 0 2

A.7. 2. Proceduri n MAPLE


n principal, necesitatea subprogramelor se datoreaz faptului c de multe ori algoritmul prevede executarea acelorai instruc iuni pentru date diferite. Grupul de instruc iuni care se repet poate constitui o unitate distinct creia i se d un nume i un set de parametri. Ori de cte ori va fi necesar execu ia acestui grup de instruc iuni se specific numele i parametrii care actualizeaz grupul de instruc iuni (astfel se scurteaz dimensiunea i crete claritate programului). Grupul de instruc iuni se numete procedur (procedure) n MAPLE. Forma unei proceduri este: nume:=proc (param1, param2,)

local lista declara ii locale; global lista declara ii globale;

274

Metode Numerice

options list op iuni; description descriere;


instruc iuni

end;
n variantele mai noi de Maple end de la sfrit se va nlocui cu end proc. Nu toate elementele de mai sus sunt obligatorii. Dac este necesar ca procedura s ntoarc o valoare, se poate folosi apelul

RETURN(v)
n irul de instruc iuni din corpul procedurii. Parametrii care apar n scrierea unei proceduri se numesc parametrii

formali, ei avnd un rol descriptiv (un parametru formal este o variabil al crei
nume este cunoscut, dar al crei con inut nu este precizat dect n momentul execu iei). n cadrul listei, parametrii formali sunt separa i prin virgul. Numele procedurii (nume) este un identificator MAPLE. Apelul unei proceduri se face cu comanda: nume (list parametrii actuali) parametrii actuali fiind expresii despr ite ntre ele prin virgul n cadrul listei. n momentul execu iei parametrii actuali substituie parametrii formali. Un apel de procedur determin urmtoarele ac iuni:

se stabilete coresponden a ntre argumente i parametrii se execut instruc iunile subprogramului, pn cnd se ajunge la end sau la o instruc iune RETURN. Efectul acestor instruc iuni (end i RETURN) este ntoarcerea n unitatea de program n care a avut loc apelul, i anume la instruc iunea ce urmeaz imediat acestui apel (precizm c o procedur poate apela la rndul su o alt procedur). Un apel de procedur este corect dac ntre parametrii actuali i cei formali exist o coresponden att ca numr, ct i ca tip i organizare.

275

Mdlina Roxana Buneci

Exemplu: S presupunem c se d un numr ntreg pozitiv x, i se cere lista cifrelor corespunznd reprezentrii binare a lui x. Procedura urmtoare rezolv aceast problem.
> lbinar:=proc(x) local y,L; y:=x; L:=[]; while y>0 do L:=[irem(y,2,'c'),op(L)];y:=c; od; RETURN(L) end; > lbinar(27);

[ 1, 1, 0 , 1, 1 ]
> lbinar(32);

[ 1, 0, 0 , 0 , 0, 0 ] Procedura lbinarfr de mai jos ntoarce lista primelor n cifre ale reprezentrii binare a unui numr x, cu proprietatea 0x<1.
> lbinarfr:=proc(x,n) local y,i,L; y:=x;L:=[]; for i from 1 to n do y:=y*2; L:=[op(L),floor(y)];y:=frac(y)od; RETURN(L) end; > lbinarfr(0.15,10);

[ 0, 0 , 1, 0, 0, 1, 1 , 0, 0 , 1 ]

Procedura lbin ntoarce lista cifrelor binare corespunztoare unui numr real x. Pentru partea frac ionar a numrului se re in n cifre. Procedura lbin apeleaz procedurile precedente.
> lbin:=proc(x,n) local y,L1,L2,L; y:=abs(x);

276

Metode Numerice L1:=lbinar(floor(y)); L2:=lbinarfr(frac(y),n); L:=[L1,L2]; RETURN(L)

end;
> lbin(23.15,10);

[ [ 1, 0, 1, 1, 1 ], [ 0, 0, 1, 0, 0, 1, 1, 0, 0, 1 ] ]

277

Mdlina Roxana Buneci

278

Metode Numerice

BIBLIOGRAFIE
1. K. E. Atkinson, An Introduction to Numerical Analysis, Wiley, New York, 1978. 2. G. Bal,

Lecture

notes,

course

on

numerical

analysis,

2002.

http://www.columbia.edu/~gb2030/COURSES/E6302/NumAnal.ps. 3. B. J. C. Baxter and A. Iserles, On the foundations of computational

mathematics, In P. G. Ciarlet and F. Cucker, editors, Handbook of Numerical Analysis, volume XI, pages 334. North Holland Elsevier,
Amsterdam, 2003. 4. C. M. Bucur, C.A. Popeea, Gh. Gh. Simion, Matematici Speciale-Calcul

Numeric, Editura Didactic i Pedagogic, Bucuresti, 1983.


5. M. Buneci, Metode Numerice - Lucrri de laborator, Editura Academica Brncusi, 2003. 6. R. L. Burden, J.d: Faires, Numerical Analysis, 5th ed. PWS Publishing, Boston, 1993. 7. Ghe. Coman, Analiz numeric, Editura Libris Cluj-Napoca, 1995. 8. G. Dahlquist i A. Bjorck, Numerical Methods in Scientific Computing, Vol I, SIAM, 2007. 9. S. Dimitriu, E. Cerna Mladin, M. Stan, Metode Numerice, Editura Matrix Rom, Bucureti, 2001. 10. B. Dumitrescu, C. Popeea, B. Jora,

Metode de calcul numeric matricial.

Algoritmi fundamentali, Editura ALL Educational, Bucureti, 1998.


11. Gh. Dodescu, M.Toma, Metode de calcul numeric, Editura Didactic i Pedagogic, Bucureti, 1976. 12. Gh. Grigore, Lec ii de analiz numeric, Tipografia Univ. Bucuresti, 1990.

279

Mdlina Roxana Buneci

13. J. Hoffman, Numerical Methods for Engineers and Scientist, McGraw-Hill, New York, 1992. 14. V. Iorga, Metode numerice. ndrumar de laborator, Institutul Politehnic Bucureti, 1992. 15. G. Marinescu, Analiz numeric, Editura Academiei R.S. Romnia, 1974. 16. M.B. Monagan, K.O. Geddes, K.M. Heal, G. Labahn, S.M. Vorkoetter, J. McCarron and P. DeMarco, Maple 8 Advanced Programming Guide. Waterloo Maple Inc., Waterloo, Ontario, Canada, 2002. 17. S. Pav,

Numerical

Methods

Course

Notes,

2004

(UCSD),

http://scicomp.ucsd.edu/~spav/pub/numas.pdf. 18. M. Popa .a., No iuni de analiz numeric, Sitech Craiova, 2001. 19. M. Postolache, Metode numerice n algebr, Universitatea Politehnic Bucureti, 1993. 20. A. Rusu Casandra .a., Metode numerice pentru calculul structurilor, Editura Universit ii Politehnica Bucureti, 1998. 21. M. Stan .a.,

Metode numerice, Editura Matrix Rom Bucureti, 2001.

22. J. Stoer i R. Bulirsch, Introduction to Numerical Analysis (3rd ed.), Springer, 2002.

280

Metode Numerice

INDEX
A
adjunctul unui operator liniar i mrginit, 56 algebr Banach, 54 algoritm polinomial, 16 algoritm stabil, 14 algoritmul Romberg, 224 aplica ie liniar, 54 aproximare a derivatei prin diferen e finite progresive, 192 aproximare a derivatei prin diferen e finite regresive, 194 aproximare a derivatelor prin diferen e finite centrale, 190 aritmetica n virgul mobil, 45 calculul inversei unei matrice prin metoda de eliminare Gauss, 71 catastrophic cancellation, 47 cifr n baza b, 17 cifre semnificative, 36 cod complementar, 32 cod direct, 31 cod invers, 31

coeficien i Newton-Cotes , 212


complementul ortogonal, 56 conjugata unei matrice, 57 contrac ie, 116 conversie, 19 cuadratur Gauss, 227

D
derivare numeric folosind diferen e finite, 189 derivare numeric folosind interpolarea, 206 desfacere a standard a unei matrice, 82 desfacere a unei matrice, 81 diferen finit divizat, 171 diferen finit la dreapta, 161 diferen finit la stnga, 167

B
baz ortonormal, 55 baz, 17 bit ascuns, 39 bit de semn, 34 bitul cel mai pu in semnificativ, 30 bitul cel mai semnificativ, 30

C
calculul determinantului unei matrice prin metoda de eliminare Gauss, 70

281

Mdlina Roxana Buneci

dimensiunea unui spa iu Hilbert, 56 dualul unui spa iu normat, 55 element de cea mai bun aproximare, 175

forma normalizat exponentul, 35 forma normalizat mantisa, 35 forma normalizat, 35 formula dreptunghiurilor, 212 formula general de cuadratur, 210 formula lui Simpson, 223 formula trapezelor, 218

E
elemente ortogonale, 55 eroare a datelor, 11 eroare backward, 12 eroare de calcul, 10 eroare de interpolare n cazul nodurilor Cebev, 143 eroare de interpolare n cazul nodurilor echidistante, 142 eroare de interpolare, 140 eroare de metod, 9 eroare de rotunjire, 9 , 11 eroare de trunchiere, 9, 11 eroare forward, 12 eroare inerent, 9 eroarea absolut, 10 eroarea relativ , 10 extrapolare Richardson, 205

formula Newton-Cotes , 212


func ie pondere, 179

I
IEEE-754- dubl precizie (doubleprecission), 41 IEEE-754-simpl precizie (singleprecission), 40 Inf, 39 integrarea numeric, 209

M
matrice diagonal dominant, 84 matrice diagonal, 58 matrice hermitian, 58 matrice inferior Hessenberg, 58 matrice inferior triunghiular, 58 matrice inversabil, 58 matrice nesingular, 58 matrice ortogonal, 58 matrice simetric, 58 matrice superior Hessenberg, 58 matrice superior triunghiular, 58 matrice tridiagonal, 58 matrice unitar, 58 matricea unitate, 57

F
factor de condi ionare n cazul rezolvrii unei ecua ii neliniare, 91 factor de condi ionare n cazul rezolvrii unui sistem neliniar, 105 factorul de condi ionare al unei matrice, 74 factorul de condi ionare, 13 fl(x), 37

282

Metode Numerice

metoda bisec iei (metoda njumt irii intervalului), 93 metoda celor mai mici ptrate, 178 metoda coardei, 96 metoda de eliminare Gauss, 62 metoda Gauss-Seidel, 87 metoda Jacobi, 83 metoda lui Newton, 127, 104 metoda Newton simplificat, 134 metoda Newton-Kantorovici, 138 metoda punctului fix, 116 metoda tangentei, 104 metode directe de rezolvare a sistemelor liniare, 61 metode iterative de rezolvare a sistemelor liniare, 80 minori principali, 60

numere denormalizate (denormalized floating-point numbers), 39

O
OFL (overflow level), 37 operator liniar i mrginit, 55 ordine lexicografic, 17 overflow, 37

P
pivotare complet, 63 pivotare par ial, 63 polinoame Cebev de spe a a II-a, 230 polinoame Cebev de spe a I, 230 polinoame Jacobi, 230 polinoame Legendre,229 polinom de interpolare, 139 polinom generalizat, 179 polinom Lagrange de interpolare, 144 polinom Newton cu diferen e divizate, 171 polinom Newton de interpolare de spe a a II-a (descendent), 166 polinom Newton de interpolare de spe a I (ascendent), 161 pondere(integrare numeric), 209 pozitiv definit, 60 pozitiv semidefinit, 60 precizie a mainii, 38 precizie, 36 problem bine condi ionat, 13 problem ru condi ionat, 13

N
NaN, 39 negativ definit, 60 negativ semidefinit, 60 noduri Cebev, 143 norma 1 ||||1, 57 norma ||||, 57 norma euclidian ||||2, 57 norm complet, 54 norm operatorial asociat unei matrice, 59 norm, 53 norme echivalente, 54

283

Mdlina Roxana Buneci

produs scalar, 55 produsul scalar canonic, 57 punct fix, 116

rotunjire prin tiere, 37

S
sistem de numera ie, 17 sistem ortogonal, 55 sistem ortonormal, 55 sistemul normal al lui Gauss, 180 solu ie a unei ecua ii, 91 solu ie a unui sistem neliniar, 105 spa iu Banach, 54 spa iu Hilbert, 55 spa iu normat, 53 spa iu pre-Hilbert, 55 spa iul operatorilor liniari i mrgini i, 55 spectru, 59 standardul IEEE-754, 39

R
rat de convergen , 92, 116 rat liniar de convergen , 92, 116 rat ptratic de convergen , 92, 116 rat superliniar de convergen , 92, 116 raza spectral, 59 rdcin a unei ecua ii, 91 reprezentare complement fa de 1,31 reprezentare complement fa de 2, 32 reprezentare n virgul mobil normalizat, 37 reprezentare n virgul mobil, 36 reprezentare periodic n baza b, 25 reprezentare semn i valoare absolut, 31 reprezentarea intern a numerelor ntregi fr semn, 29 reprezentarea unui numr ntreg n baza b, 19 reprezentarea unui numr real n baza b, 21 restul formulei generale de cuadratur, 211 rezolvarea unui sistem liniar prin metoda de eliminare Gauss , 67 rotunjire la cel mai apropiat numr n virgul mobil (rotunjire la par), 38

T
transpusa unei matrice, 57 trunchiere, 37

U
UFL (underflow level), 37 underflow, 37

V
valoare proprie, 59 vector propriu, 59

Z
zerou al func iei, 91

284

S-ar putea să vă placă și