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. Noiuni introductive...............................................................................................9
I.1. Elemente de teoria erorilor ......................................................................9
I.2. Condiionarea numeric. Factor de condiionare....................................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 informaiei 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 condiionare al unei matrice..............................................74
IV.4. Metode iterative de rezolvare a sistemelor liniare...............................80
IV.4.1. Generaliti............................................................................80
IV.4.2. Metoda Jacobi.......................................................................83
IV.4.3. Metoda Gauss-Seidel............................................................87
V. Rezolvarea ecuaiilor i sistemelor neliniare........................................................91
V. 1. Rezolvarea ecuaiilor neliniare.............................................................91
V.1.1. Metoda biseciei (metoda njumtirii 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 funciilor.....................................................................................139
VI. 1. Polinoame de interpolare..................................................................139
VI.1.1. Definiie. 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 spea I (ascendent)...161
VI.1.6. Polinomul Newton de interpolare de spea a II-a
(descendent).........................................................................166
VI.1.7. Polinomul Newton de interpolare cu diferene divizate.....171
VI. 2. Metoda celor mai mici ptrate..........................................................175
VI.2.1. Caracterizarea elementelor de cea mai bun aproximare pe
subspaii 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: Iniiere n Maple.........................................................................................235
A.1. Structura intern. Categorii de comenzi MAPLE...............................235
A.2. Operatori, constante i funcii 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 funcii..................................................................256
A.6.2. Liste......................................................................................261
A.6.3. Mulimi.................................................................................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 contribuii 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 tiinele sociale. Dei a existat
ntotdeauna o strns interaciune ntre matematic, pe de o parte i tiine i
tehnologie, pe de alt parte, aceast interaciune s-a intensificat n ultimele decenii.
Creterea utilizrii metodelor numerice a fost cauzat nu numai de creterea
performanei calculatoarelor, ci i de mbuntirea algoritmilor. Cu toate c exist
produse software performante pentru rezolvarea multor probleme matematice
ntlnite n practic, cunoaterea i nelegerea metodelor numerice rmn eseniale
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 noiuni i rezultate fundamentale ce
in de aproximarea numerelor reale, reprezentarea informaiei n sistemele de calcul
i aritmetica n virgula mobil, rezolvarea sistemelor liniare (prin metode directe i
iterative), rezolvarea ecuaiilor i sistemelor neliniare, aproximarea funciilor (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
comparaii ntre datele de ieire ale procedurilor respective i rezultatele afiate de
comenzile MAPLE destinate rezolvrii acelorai probleme. n multe situaii, pentru
a evidenia erorile de rotunjire, se compar rezultatele obinute utiliznd aritmetica
virgulei mobile cu rezultatele obinute 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 destinaia ei direct de manual pentru studenii facultilor
tehnice, cartea poate servi, pentru cei interesai, 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. Noiuni introductive
Metodele numerice reprezint tehnici prin care problemele matematice sunt
reformulate astfel nct s fie rezolvate numai prin operaii aritmetice. Prin trecerea
de la infinit la finit, diferenial la algebric, neliniar la liniar problemele complicate
sunt nlocuite de probleme mai simple care au aceeai sau aproape aceeai soluie.
Astfel soluiile obinute prin aplicarea metodelor numerice reprezint doar
aproximaii ale soluiilor 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 iniiale 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 parial),
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 definiii se obine:


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 majorani pentru modulul erorii (sau norma erorii, dac se lucreaz
ntr-un spaiu normat).

Erori ale datelor i erori de calcul


Considerm urmtoarea problem tipic: calculul valorii unei funcii f:RR
pentru un argument dat. Fie:
x

= valoarea de intrare exact

x*

= valoare de intrare aproximativ

f(x) = rezultatul dorit


f*

= funcia aproximativ de calcul

Eroarea total este dat de:


f*(x*) - f(x) = (f*(x*) - f(x*)) - (f(x*) - f(x))
Deci
10

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 = diferena dintre rezultatul exact (pentru datele de
intrare curente) i rezultatul furnizat de un algoritm dat utiliznd aritmetica exact.
Eroare de rotunjire = diferena dintre rezultatul produs de un algoritm dat
utiliznd aritmetica exact i rezultatul produs de acelai algoritm

utiliznd o

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 )

f (x + h ) f (x )
h

eroarea de trunchiere este dominat de M

h
, unde M = sup f (t ) pentru t ntr-o
2

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 variaia acestei funcii.
2
h

M
1

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

2
M
M
h

deci funcia are punct de minim n h = 2

minim pentru h 2

. Ca urmare, eroarea total este


M

. 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 obinem
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: soluia aproximativ y* este
considerat soluia exact a unei probleme cu datele iniiale modificate, mai precis
se consider y* = f(x*), unde x* este o perturbaie 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

Soluia aproximativ y* se consider "bun" dac este soluie exact pentru


o problem cu datele "uor" perturbate.
De exemplu, dac aproximm

5 prin y* = 2.2, eroarea forward absolut

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 %.

12

4.84 =2.2. Eroarea backward

Metode Numerice

I.2. Condiionarea numeric. Factor de condiionare.


Problema se numete bine condiionat dac variaiile relative ale soluiei
au acelai ordin de mrime

cu variaiile relative ale datelor de intrare ce le

cauzeaz.
Problema este ru condiionat dac modificrile relative care au loc n
soluie pot fi mult mai mari dect cele ale datelor de intrare.

Factorul de condiionare (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 obine


valoarea aproximativ y*. Fie x* cu proprietatea c f(x*) = y*. Avem

cond =

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

y
y
=
.
x
x

Problema este ru condiionat, dac factorul de condiionare


cond >> 1.
Factorul de condiionare acioneaz ca un "factor de amplificare" legnd
eroarea forward de eroarea backward:
| eroarea relativ forward| = cond | eroarea relativ backward|
De obicei factorul de condiionare nu este cunoscut exact i poate varia n
funcie de datele de intrare. De aceea se utilizeaz o estimaie margine superioar
pentru cond. Deci
| eroarea relativ forward | < cond | eroarea relativ backward |.

Considerm un exemplu de estimare pentru factorul de condiionare. S


presupunem c se evalueaz funcia difereniabil f pentru data de intrare x i se
obine 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 condiionare este


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

Factorul de condiionare absolut se definete ca raportul dintre variaia


soluiei i variaia datelor de intrare. Factorul de condiionare absolut acioneaz ca
un "factor de amplificare" legnd eroarea absolut forward de eroarea absolut
backward.

I.3. Stabilitatea algoritmilor


Noiunea referitoare la algoritmi analoag condiionrii numerice a
problemelor

este stabilitatea.

Intuitiv vorbind, stabilitatea numeric a unui

algoritm nseamn ca acesta este ct mai puin sensibil la perturbaiile 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 soluia 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 perturbaiile date de erorile de
calcul.

Acurateea metodelor
Acurateea se refer la apropierea soluiei calculate de soluia exact a
problemei. Stabilitatea algoritmului nu garanteaz acurateea. Aceasta depinde n
egal msur de buna condiionare a problemei i de stabilitatea algoritmului.

14

Metode Numerice

Inacurateea poate rezulta din aplicarea unui algoritm stabil unei probleme ru
condiionate, ca i din aplicarea unui algoritm instabil unei probleme bine
condiionate.
Aplicarea (cu ajutorul calculatorului) unui algoritm stabil unei probleme
bine condiionat garanteaz obinerea soluiei cu o precizie bun, n sensul c
eroarea relativ a soluiei calculate fa de soluia exact este de ordinul de mrime
al erorilor de reprezentare a datelor n calculator.

I.4. Complexitatea algoritmilor


n evaluarea complexitii unui algoritm se ine cont de dou aspecte

timpul necesar execuiei algoritmului (dat de numrul de operaii elementare)

spaiul de memorie necesitat de algoritm

n general nu este posibil s obinem simultan un timp de execuie mai scurt precum

i un necesar de spaiu 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 locaii de memorie necesare pentru memorarea
datelor iniiale). 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 notaii:

(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 )
=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)
=1
n f ( n )

(n) ~ f(n) dac lim

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
execuie, iar pentru limita inferioar a timpului de execuie.
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

numeraie o mulime de b simboluri distincte, corespunztoare mulimii primelor b


numere naturale: 0, 1,, b-1. Notm
Sb = {ci : 0 i b-1 }
mulimea 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 }

i Bk = B pentru orice k N. Fie mulimea An =

Bk

nzestrat cu ordinea

k =0

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


def

(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 .

Considerm funcia fn : An {0, 1, , bn+1-1 } definit prin


fn(n, n-1, , 0) = nbn + n-1bn-1 + + 2b2 + 1b + 0.
Demonstrm c funcia fn este bijectiv. Artm pentru nceput c fn este strict
cresctoare, deci este injectiv. Apoi, innd cont c mulimile {0, 1, , bn+1-1} i
An sunt mulimi finite cu acelai cardinal (numr de elemente) va rezulta c de fapt
fn este o bijecie. 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)

bk 1
b 1

= nbn + n-1bn-1 + + k+1bk+1+ kbk - 1


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

n consecin, < implic fn() < fn(), deci fn este strict cresctoare.
Folosind bijectivitatea funciei 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 }.
Demonstraie. 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 1
b 1

< bn,

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 observaia 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 mpriri succesive la b i reinerea resturilor de la sfrit
spre nceput:
x = bq0 + 0,

0 0 < b, q0 0

q0 = bq1 + 1,

0 1 < b, q1 0

qn-1 = b qn + n,

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

47

23 = 11 2 + 1

46

23

22

11

10

11 = 5 2 + 1

sau

5= 22+1
2= 12+0
1= 02+1

0
Deci 4710 = 1011112.
Conversia de la baza b la baza 10 se face prin nsumarea puterilor lui b
nmulite 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 configuraia la stnga cu
zerouri. De exemplu,
1 011 110 2 = 1368
 
1

1010 01112 = A716.


 
A

20

Metode Numerice

II. 2. Reprezentarea numerelor reale ntr-o baz


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

Bk
k 1

cu Bk = {0, 1, , b-1 }, i funcia F : C (0, ) definit prin


F(0, 1, , n, ) = 0 +

b nn

n =1

Seria

b nn

este convergent, pentru c 0

n 1

convergent (fiind o serie geometric cu raia

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

bn

este

n 1

1
pozitiv i subunitar). Deci F
b

este corect definit.

Teorema 2.2. Fie b o baz i F : C [0, ) funcia definit mai sus. Atunci
1. F este surjectiv
2. Pentru orice numr real x > 0 care nu este de forma

v
cu vN i
bn

n N* exist un unic C astfel nct F() = x.


3. Dac numrul real x > 0 este de forma

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 =

Demonstraie. 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 definiia prii ntregi rezult qn xbn < qn + 1,
sau echivalent

qn
q
q
q
1
1
x < nn + n , ceea ce implic 0 x - nn < n i lim nn =
n
n

b
b
b
b
b
b

x. Pe de alt parte, nmulind inegalitatea qn xbn < qn + 1 cu b i innd cont c


[xbn+1] = qn+1, obinem

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

b nn

= x. Considerm o sum parial a acestei serii:

n =0

k
= 0 +
k
k =0 b
n

sn =

Din lim

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

b kk
k =1

q k 1
q
q
q
= 0 + nn - 00 = nn .
k 1
b
b
b
b

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

not

m
t
=
n
bn
b kk suma
n =0
k =0

parial de ordin n a acestei serii, atunci tn x i x =

b nn

n =0

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

b kk

k =0

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

tn x tn +

1
.
bn

Dar x nu poate fi egal cu tn +

1
v
pentru c x nu este de forma n cu vN i n
n
b
b

N*. n consecin tn x < tn +

1
i tnbn xbn < tnbn + 1. innd cont i de faptul
n
b

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


seriei

b nn

n 0

. Seriile

b nn

n 0

b nn

n
k
qn
=

k
n
b
k =0 b

suma parial a

avnd sumele pariale egale au termenii

n0

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

mai mic numr natural cu proprietatea c exist v0 natural astfel nct x =


Utiliznd relaiile stabilite la punctul 1, obinem q n 0 = [x b n 0 ] = x b n 0 = v0 i
q n0
b

n0

n0

v0
.
b n0

b kk

k =0

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

b kk

k =0

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

obinem
n n0 k
1
b n = b k - b n0 +
n =0
k =0

=x-

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

1
k
k = n 0 +1 b

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

i
, obinem
i
i =0 b

innd cont de reprezentarea lui x sub forma x =

i
+ bn
i
b
i =0
n

xbn = bn

b ii =
i = n +1

23

b n i i + bn
i=0

i
.
i
i = n +1 b

Mdlina Roxana Buneci


n

b n i i

Numrul

este natural, iar bn

i=0

raionament similar, obinem c

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

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

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


i=0

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

n = [xbn] - b[xbn-1] =

n 1

i=0

i=0

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

Exist dou cazuri posibile


(i)

Exist un numr natural N astfel nct n = b-1 oricare n N+1.

(ii)

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
k
1
b
1
w
=
+
(b-1)
+ N = N .

k
k
N 0 +1
b 1 k =0 b
b
b 0
b 0
k =0 b
N0

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


contradicie


k n0 k

< k + kk = nn = x
k
k =0 b
k =0 b
n =0 b
k = n 0 +1 b
n0

x =

Utiliznd n continuarea egalitatea x =

b nn

n =0

b nn

n =0

, se obine N 0 = N 0 -1, i

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

24

Metode Numerice

b nn

Definiie 2.3. Reprezentarea x =

n baza b a numrului real x > 0 se

n =0

numete periodic dac exist un numerele naturale N, p astfel nct


t = t+p+1 pentru orice t N.
n aceast situaie se folosete urmtoarea notaie
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
raional dac i numai dac x admite o reprezentare periodic n baza b.

Demonstraie. Presupunem c x admite reprezentarea periodic


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

b nn

n =0

N 1


1
1
1

1 + p +1 + 2( p+1) + ... + n ( p+1) + ...


b
b
n=N
b

N+p

b nn + b nn

n =0

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

N 1

b (p+1)n

n =0

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

N 1

de unde rezult c x este un numr raional.

i
Reciproc s considerm un numr raional x = , cu i i j numere naturale, j
j
0. Demonstrm c reprezentarea x =

b nn

n baza b este periodic. Dac x este

n =0

de forma

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 demonstraia teoremei 2


n

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 raionament prin inducie obine n = [xn] pentru orice n 0.


inem cont c x =

i
i notm cu u0 restul mpririi lui i la j, i cu un restul
j

mpririi lui bun-1 la j pentru n 0. Raionnd prin inducie obinem c xn =

bu n 1
j

pentru orice n 1. Deoarece un reprezint restul unei mpriri 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 raionament prin inducie 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 demonstraia 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 fracionar 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 fracionar. Conversia prii
fracionare se face prin nmuliri 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 nmuliri repetate, pot apare trei situaii:

26

Metode Numerice

1. {xn}= 0, ceea ce determin ncheierea algoritmului; n aceast situaie {x} se


poate reprezenta exact prin 0, 12 n =

b kk

(aceast situaie

k =1

corespunde cazului x =

v
cu vN i n N*).
n
b

2. {xn} 0, dar se observ o periodicitate, adic una sau un grup de cifre care
se repet ( aceast situaie corespunde cazului x raional dar x

v
bm

pentru

orice vN i m N*).
3.

{xn} 0, iar cifrele obinute se succed fr a respecta vreo regul ( aceast


situaie corespunde cazului x iraional). n aceast situaie 0,12 n
k
reprezint doar o aproximaie pentru {x} n baza b.
k
k =1 b
n

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


5,125 = 5 + 0,125
5

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

= 0 + 0,5

0,5 2

=1+0

= 1

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

27

Mdlina Roxana Buneci

28

Metode Numerice

III. Reprezentarea informaiei 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 bii). Pentru a reprezenta un numr ntreg
pozitiv pe k bii se face conversia numrului respectiv la baza 2, iar configuraia
binar obinut se completeaz la stnga cu zerouri pn se obin k cifre. Cel mai
mare numr ntreg reprezentabil pe k bii este
11 ...1 2 = 2


k-1

+2

k ori

k-2

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

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


numere.

Exemple:
k

Domeniul de valori

8 bii = 1 B (byte)

0255

16 bii = 2 B

0.65 535

32 bii = 4 B

0.2 147 483 647

Reprezentarea numrului 6210 pe k = 8 bii se face astfel:


62 = 25 + 24 + 23 + 22 +2 = 1111102 = 001111102
29

Mdlina Roxana Buneci

0
3E (n hexazecimal)

00111110
3

n reprezentarea binar a numerelor, ponderile cifrelor binare cresc de la dreapta la


stnga, numerotarea lor corespunznd puterilor cresctoare ale bazei de numeraie
2. Astfel, prima cifr binar din dreapta reprezint ponderea 20 i este bitul cel mai

puin semnificativ. Primul bit din stnga este bitul cel mai semnificativ.
Notm cu relaia de ordine lexicografic pe mulimea 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, relaia de ordine lexicografic este compatibil cu relaia 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 bii pentru reprezentarea unui numr ntreg. Prin


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

0000 0000 01001000


0

30

0048 (n hexazecimal)

Metode Numerice

Mulimea numerelor ntregi nenegative reprezentabile pe k bii (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 bii).
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 bii i se completeaz primul bit cu 1. n consecin,
mulimea 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 nmulire 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 relaia de ordine lexicografic nu este compatibil cu relaia

de ordine

natural.
Pentru a obine codul invers:
1. se obine reprezentarea valorii absolute a numrului ntreg negativ pe
k bii
2. n reprezentarea obinut (la pasul 1) se nlocuiete fiecare bit 0 cu 1

i 1 cu 0
Mulimea 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
k
.... 1 = 2 - 1
x + x = 11
 2
k

31

Mdlina Roxana Buneci

n consecin, complementul fa de 1 poate fi folosit pe post de opus fa de


operaia de adunare. Din acest motiv operaiile aritmetice relativ la aceast
reprezentare sunt avantajoase, deoarece operaia 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
Deci relaia de ordine lexicografic nu este compatibil cu relaia

de ordine

natural.
Pentru a obine codul complementar:
1. se obine codul invers pe k bii
2. se adun o unitate la valoarea obinut (la pasul 1)
Zero

admite o singur reprezentare prin aceast metod: ( 00


...

0 ).Mulimea
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
k
k
.... 1 + 1 = 2 - 1 + 1 = 2
x + x = 11
 2
k

i n cazul acestei reprezentri operaiile aritmetice sunt avantajoase, deoarece


operaia 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
Deci relaia de ordine lexicografic nu este compatibil cu relaia

de ordine

natural.

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

Metode Numerice

Cod direct (semn i valoare absolut)

10000000 01001000
1

1048 (n hexazecimal)

FFB7 (n hexazecimal)

FFB8 (n hexazecimal)

Cod invers (complement fa de 1)

11111111 10110111
F

Cod complementar(complement fa de 2)

11111111 10111000
F

(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

Observaie: 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 bii
numere ntregi cu semn:

valoare

cod direct (semn i cod indirect

zecimal

valoare absolut)

216-1= 32767

cod complementar

(compl. fa de 1)

(compl. fa de 2)

0111111=7FFF16

0111111=7FFF16

0111111=7FFF16

32766

0111110=7FFE16

0111110=7FFE16

0111110=7FFE16

0000001=000116

0000001=000116

0000001=000116

+0

0000000=000016

0000000=000016

0000000=000016

-0

1000000=800016

1111111=FFFF16

0000000=000016

-1

1000001=000116

1111110=FFFE16

1111111=FFFF16

-32766

1111110=FFFE16

1000001=800116

1000010=800216

-32767

1111111=FFFF16

1000000=800016

1000001=800116

-32768= -216

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

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

exponentul. Considerm reprezentarea |x| =

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 obine deplasnd virgula n faa primei cifre
nenule ce apare n scrierea numrului (n baza b). Exponentul se ia egal cu numrul
de poziii 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 existena 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

baza b

precizia p

Emin

Emax

IEEE single-precission

24

-126

127

IEEE double-precission

53

-1022

1023

Cray

48

-16383

16384

calculator HP

10

12

-499

499

mainframe IBM

16

-64

63

36

Metode Numerice

Reprezentarea n virgul mobil se numete normalizat dac se impune condiia 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).

Restricia 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 modaliti pentru
rotunjire:

trunchiere (rotunjire prin tiere): se rein 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 acuratee mai mare a reprezentrii. Acurateea


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 relaia
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.

consecin,

compararea

exponenilor

38

(i

numerelor

reale

Metode Numerice

corespunztoare) poate fi fcut eficient. Astfel reprezentarea intern a unui numr


real x aproximat prin fl(x) = (0 +

ed

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

unde s este semnul lui x (se completeaz cu 0 dac semnul este + i cu 1 dac
semnul este -) iar ed este exponentul obinut 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 organizaie 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 puin una dintre cifrele binare 1, 2, , p-1 nenule.


Standardul IEEE-754 definete dou valori speciale pentru situaii excepionale:

Inf, pe post de "infinit" ("infinity"), pentru rezultatul mpririi unui numr


finit la zero.

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


urmtoarelor operaii

39

Mdlina Roxana Buneci

Adunare : Inf + (-Inf)


nmulire: 0Inf
mprire: 0/0 sau Inf/Inf
Calculul restul mpririi 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 +

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

conform IEEE-754 sub forma


s

ed

1p-1

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 bii
(k=8, 11). Decalajul considerat este D = 2k-1 - 1, deci
ed = E + 2k-1 -1,
Pe k bii 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 condiia 1 ed 2k-2. De aici rezult c -2k-1+2 E 2k-1-1. De
exemplu, pe k = 8 bii 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 bii rezervai pentru exponent determin intervalul de numere reale
reprezentabile n calculator. Numrul de bii rezervai pentru mantis determin
precizia de reprezentare (gradul de detaliere) a numerelor. Reprezentarea (0 +

p 1
1 2
+ 2 ++ p 1 )2E fiind normalizat, exist sigurana c 0 = 1, ceea ce
2
2
2
permite omiterea sa (bit ascuns) pentru creterea preciziei de reprezentare, dar
complic prelucrarea informaiei.
Formatele de reprezentare a numerelor n virgul mobil (conform standardului
IEEE 754) sunt:

simpl precizie (single-precission) pe 32 de bii:


40

Metode Numerice

1 bit pentru semnul mantisei

8 bii pentru exponentul decalat (Emin = -126, Emax = 127)

23 bii pentru mantis (p = 24, 0 = 1 se omite)

dubl precizie (double-precission) pe 64 de bii

1 bit pentru semnul mantisei

11 bii pentru exponentul decalat (Emin = -1022, Emax = 1023)

52 bii pentru mantis (p = 53, 0 = 1 se omite)

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

Fie ed = e0 + e12 + e222 + + e727 i m =

23
1 2
+ 2 ++ 23
. Valoarea v
2 2
2

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

- 126

; v este o valoare

denormalizat

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

52
41

Mdlina Roxana Buneci

Fie ed = e0 + e12 + e222 + + e10210 i m =

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

reprezentat se determin dup cum urmeaz:

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

- 1022

; v este o valoare

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.

Exemple:
S se reprezinte n simpl precizie numerele: 228,15

- 27, 25

0,1

1,2

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 bii din parantez sunt utilizai 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

0011 0 110

4
Deci

0100 0010
4

0110

0110 0110
6

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

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

Deci reprezentrii cu bit ascuns a lui -27,25 i corespunde C1DA0000 n


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 bii ai mantisei urmeaz 110, i deci rotunjirea se face prin
adugarea unei uniti).

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

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


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 bii 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

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

Metode Numerice
printf("\nNumar

in

virgula

mobila:%f\n\tFormat

intern

%08lX

virgula

mobila:%f\n\tFormat

intern

%08lX

virgula

mobila:%f\n\tFormat

intern

%08lX

virgula

mobila:%f\n\tFormat

intern

%08lX

(hexazecimal)",f1,*i);
i=(long int*) &f2;
printf("\nNumar

in

(hexazecimal)",f2,*i);
i=(long int*) &f3;
printf("\nNumar

in

(hexazecimal)",f3,*i);
i=(long int*) &f4;
printf("\nNumar

in

(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 seciunea 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 obinut 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 situaia 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 aproximaie 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 nmulirea 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 operaii n virgul mobil poate s fie semnificativ diferit
fa de rezultatul aceleai operaii n aritmetica exact. S considerm numrul real
x =

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

100110011001100110011012-4. n simpl precizie este aproximat de fl(x) = 1,


100110011001100110011012-4,

ceea

ce

introduce

eroarea

de

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 nmulire:
#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 )


 mach,
fl(x y )
dac fl(x) este egal (sau foarte apropiat de) fl(y). n urmtorul program (n C)
aproximm sin(x) printr-o sum parial a seriei

( 1)n
(2n + 1)! x 2n +1

n =0

Seria fiind alternant i convergent, o sum parial 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 obine aproximaia 0.909297 corect a lui sin(2).
Pentru x = 40 i eroare 10-7 se obine aproximaia 523443136.0 a lui sin(40) !
Valoarea corect este 0.745113Acest rezultat se datoreaz fenomenului de
reducere (catastrophic cancellation). Pentru a evidenia diferenele 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 obine aproximaia


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

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

0.9092961360
48

141782
0.9092961362 corect a
155925

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 raional)
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 obine:
> 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, aproximaia obinut este -0.9880298724 pentru care 4 zecimale (5 cu
rotunjire) coincid cu cea furnizat de funcia predefinit sin. ns n situaia n care
parametru actual este n virgul mobil i ca urmare calculele se execut n virgul
mobil aproximaia 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 coeficienilor 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 raionali i calculele se


execut simbolic cu excepia evalurii n virgul mobil a rezultatului se obin
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 excepie 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 execuiei 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 obinut 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 spaiu vectorial (liniar) peste corpul K (K=R sau K=C).
Reamintim o serie de definiii i teoreme legate de spaiile normate i spaiile
Hilbert. O norm pe V este o funcie p: V [0, ) care satisface urmtoarele
condiii:
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 spaiu normat. n cele ce urmeaz vom nota p(x) = ||x||
pentru orice xV i vom spune c V este un spaiu normat n loc de (V, ||||), atunci
cnd norma |||| se subnelege. Pe orice spaiu normat se poate defini o metric
(distan) canonic d prin d(x, y) = ||x - y|| pentru orice x, y V. Prin urmare
oricrui spaiu 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 spaiu normat V (nzestrat cu structura metric i structura topologic
asociate n mod canonic) sunt adevrate urmtoarele afirmaii:
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 aplicaie continu

53

Mdlina Roxana Buneci

4. Funciile (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 spaiu normat se numete spaiu Banach
dac norma cu care este nzestrat este complet. Normele p1 i p2 definite pe spaiul
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 notaia 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 proprieti:
1. (V, ||||) este spaiu 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 spaii vectoriale peste corpul K (K=R sau K=C). O
aplicaie 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 aplicaie liniar, iar


V i W sunt spaii normate, atunci urmtoarele afirmaii 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) spaiul aplicaiilor 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 spaiu normat. Spaiul L(V, W) este denumit spaiul operatorilor liniari

i mrginii definii pe V cu valori n W, iar elementele din L(V, W) se mai numesc


operatori liniari mrginii. Spaiul operatorilor liniari i mrginii L(V, W) este
spaiu Banach dac i numai dac W este spaiu Banach.
Dac V este un spaiu normat iar pe spaiul L(V, V) introducem drept lege
de "nmulire" compunerea operatorilor, atunci L(V, V) devine o algebr normat.
Dac V este un spaiu normat peste corpul K, atunci spaiul normat L(V, K) se
numete dualul lui V i se noteaz V'.
Fie H un spaiu vectorial peste corpul K (K=R sau K=C). Se numete

produs scalar pe H o aplicaie : H H K care are urmtoarele proprieti:


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 spaiului
normat (H, || ||) provine dint-un produs scalar <, > dac ||x|| =

x , x pentru

orice x din H. Un spaiu pre-Hilbert este un spaiu normat n care norma provine
dintr-un produs scalar, iar un spaiu Hilbert este un spaiu prehilbert complet (cu
norm complet).
Dac H un spaiu 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 spaiului Hilbert H un sistem ortonormal
maximal (n raport cu relaia de incluziune).

55

Mdlina Roxana Buneci

Dac H este un spaiu Hilbert i (xi)i este un sistem ortonormal, atunci


urmtoarele afirmaii 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, x i x i , y .
2

Orice dou baze ortonormale ale unui spaiu Hilbert au acelai cardinal.

Dimensiunea (hilbertian) a unui spaiu Hilbert este cardinalul unei baze


ortonormale.
Dac F este un subspaiu al spaiului Hilbert H, atunci se noteaz cu
F = {x, xF}

complementul ortogonal al lui F. Dac F este un subspaiu 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 spaii Hilbert) operatorul liniar i mrginit A* L(H2, H1)care satisface
condiia:
<A(x), y > =<x, A*(y) > pentru orice xH1, yH2.

Orice operator liniar i mrginit admite un unic adjunct.


Dac H este un spaiu 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 spaiul vectorial V = Kn(K=R sau K=C), nN*. Pe acest spaiu
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

||x||1 =

xj
j=1

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

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

j=1

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

x j y j ).
j=1

Vom nota cu Mm,n(K) mulimea matricelor cu m linii i n coloane. Mm,n(K)


are o structur de spaiu vectorial relativ la operaiile:
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.
nmulire 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 *i, j )i,j, ale crei
elemente sunt: a *i , j = a j,i pentru orice 1in, 1jm. Conjugata este caracterizat
prin :
<Ax, y> = <x, A*y> pentru orice xKn i orice yKm.

O matrice pentru care m=n se numete ptratic. Elementul neutru la nmulire n


Mn,n(K) este matricea unitate In:
57

Mdlina Roxana Buneci

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 coeficieni reali cele dou
noiuni 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


A=

a1

a2

an

= diag(a1, a2,, an)

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


A=

a1

b1

c2

a2

b2

cn

an

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 spaii
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
n

S(A)(x) = Ax = ( a ij x j )1im pentru orice x = (x1, x2, , xn)tKn.


j=1

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 aplicaie liniar:

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


x 1

x =1

n cazul n care = se utilizeaz notaia ||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 . Mulimea 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:
n

||A|| =

max a ij
1 i j=1

||A||1 =

max a ij
1 j i =1

||A||2 =

A*A .

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 distanei euclidiene), n general, n aplicaiile numerice

59

Mdlina Roxana Buneci

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

vectorial:
||A||F =

a ij

i , j=1

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

n 1. ntre cele dou norme exist relaia:


||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 determinanii situai pe diagonala principal cu

a11

a12

a1k

a12

a22

a2k

a1k

a2k

akk

(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 toi 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 obinerea soluiilor exacte a sistemelor liniare dup


un numr finit de operaii elementare. O metod direct este cu att mai bun cu ct
numrul de operaii elementare (adunare, nmulire, mprire i rdcin ptrat)
necesare este mai mic (numrul de operaii executate influeneaz att timpul de
execuie ct i eroarea de rotunjire).
Considerm sistemul cu n ecuaii i n necunoscute.
Ax = b, AMn,n(R) nesingular.
Deoarece A este nesingular sistemul admite soluie 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


determinani de ordinul n. Dar calculul unui determinat de ordinul n pentru o
matrice C = (cij)1i,jn, innd cont de definiie:
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


conine n! elemente), fiecare termen fiind produsul a n factori. Deci pentru a aplica
regula lui Cramer trebuie efectuate cel puin Nop(n) = (n+1) n!n =(n+1)!n operaii.

61

Mdlina Roxana Buneci

nn

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


e

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


en +1

se utilizeaz un sistem de calcul ce execut 109 operaii pe secund, atunci pentru


rezolvarea unui sistem cu n ecuaii i n necunoscute timpii de execuie sunt
prezentai n tabelul de mai jos
n

Timp de execuie

n=5

0.5782433079 10-6 s

n=10

0.04765190154 s

n = 15

31138.61350 s = 8.649614862 ore

n = 20

> 2809 ani

n = 25

>1011 ani

n= 30

>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 coeficienilor de pe prima


coloan din celelalte n-1 linii.

a doua linie este utilizat pentru anularea coeficienilor 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 obine 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 parial. Performane de stabilitate numeric relativ


mai bune se obin 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 parial. Trecerea de la matricea A la matricea superior triunghiular se
realizeaz n nmin pai, unde nmin = min{n,m}:
A(0) A(1)

A(nmin),

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

(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 (kk,i+1)

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

elementele subdiagonale de pe coloana pivotului se nlocuiesc


cu 0.
a (ikk +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

j
(k)

(k)

a k,k

a i,k

a k, j

(k)

(k)

a i, j

(k) (k)

(k) (k)

a i,j a k,k a k,j a i,k


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

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

a1(1,2) a1(1,3) a1(1,n) a1(1,n) +1 a1(1,m)

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

(dac m n).

Exemplu
Prin aplicarea procedurii de eliminare gaussian cu pivotare parial asupra matricei
A de mai jos obinem:

A=

L1 L2

-3

-3

1/2

1/2

L2 L3

3/2

-1/2

-7/2

3/2

1/2

1/2

0 -7/2

3/2

64

3/2

-1/2

Metode Numerice

1/2

1/2

-3/7

1/7

1/2

1/2

-3/7

Urmtoarea procedur MAPLE are drept parametru o matrice A, i ntoarce


matricea superior triunghiular obinut prin aplicarea algoritmului de eliminare
Gauss cu pivotare parial asupra matricei A. Matricea a (locala procedurii) se
iniializeaz 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

A := 2

2
1
-3

> elimpp(A);

1
2

2
1
-3

1
2
-3

1
2
3
2
-7
2

1
2
-1
2
3
2

1
2
-7
2
3
2

1
2
3
2
-1
2

1
2

1
2
-3
7
1
7

1
2

1
0
0
1
0
0

1
0

1
2
-3
7
1

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

A1 := -1

2
> elimpp(A1);

66

Metode Numerice

-1

0
2
3
17
3
-4
3

1
0
0

2
3
1
0

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

1
A2 :=
3

-1
4

-2

> elimpp(A2);

3
3

-1
4

-2

4
-1

-2

4
3
-7
3

-2
3
8
3

4
3

-2
3
-8
7

1
0

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


Considerm sistemul cu n ecuaii 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 parial 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 ecuaii. La al doilea pas se elimin necunoscuta x2 din ultimele n-2 ecuaii,

.a.m.d. n cazul acestui algoritm pentru fiecare k se efectueaz n+1-k + (n+1-k)(nk) = (n+1-k)2 operaii elementare (prin operaie elementar nelegnd aici o
operaie n virgul mobil de forma ax + b, sau o mprire) . Deci algoritmul
necesit
Nop(n) =

n 1

k =1

j= 2

2
( n + 1 k ) = j2 =

operaii elementare. Deci Nop(n) ~

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

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

Ca urmare a aplicrii algoritmului se obine sistemul echivalent:


x1 +

a1(1,2) x2 + a1(1,3) x3 + a1(1,n) xn

x2 + a (22,3) x3+

= a1(1,n) +1

a (22,n) 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 soluia unui sistem liniar cu n ecuaii 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 +

x2 +

x3 = 3

x1 -

x2 +

2x3 = 2

-x1 -

x2 + 3x3 = 1

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

a1 := 1

-1

1
-1
-1

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

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 soluia 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 (kk,k) (nainte de mprire). Dac se folosete pivotare,

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 parial.
>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

a2 := 1

12

1
8
1

> determinant(a2);

-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

In=

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. Soluia acestui
sistem reprezint chiar coloana k a matricei A-1. Astfel pentru aflarea lui A-1 este
necesar s rezolvm n sisteme de ecuaii 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 obinute prin concatenarea
la matricea A a coloanelor bazei canonice din Rn. Coeficienii 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 parial asupra


lui A se obine un ir de matrice
A(0) A(1)

----

A(n),

unde A(0)= A, iar A(n) are urmtoarea form superior triunghiular:

A(n)=

a1(1,2) a1(1,3) a1(1,n) a1(1,n) +1 a1(1, 2) n

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

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

Dac B = A-1, atunci coeficienii lui B pot fi determinai cu formulele:

bn,k= a (nn, n) + k , 1 k n
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

se realizeaz cu ajutorul comenzilor


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

a3 := 1

2
> inversa(a3);

73

1
2
1

Mdlina Roxana Buneci

1
2
2
-3
2

-1
2
0
1
2

2
-1

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

2
-1

IV.3. Factorul de condiionare al unei matrice


Definiie 1. Factorul de condiionare 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
convenie 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 condiionare cond(A) mare nseamn A aproape singular.


Factorul de condiionare cond(A) are urmtoarele proprieti

cond(A) 1

cond(In) = 1 pentru orice n 1

cond(A) = cond(A) pentru orice scalar 0

74

Metode Numerice

cond(D) = max i min i

1in
1in

pentru orice matrice diagonal

D=diag(1, 2, ..., n).


Calcul valorii exacte a factorului de condiionare al unei matrice A
presupune calculul ||A-1||. Cum numrul de operaii 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 estimaii pentru ||A-1|| pleac de la observaia c, dac Ax = y, atunci

x
||A-1||,
y
i mrginea superioar a mulimii
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
condiionare matricei A.
Considerm sistemul
Ax = b, cu A nesingular

i notm cu x* soluia 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 soluie 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 condiionare mic i variaii relative mici ale coeficienilor
matricei implic variaii relative mici ale soluiei. Dac factorul de condiionare
cond(A) este mare, atunci rezolvarea sistemului Ax = b este o problem ru
condiionat.
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 soluie o notm cu x . Atunci
A x = 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
-1

|| A ||

b b
b

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

de unde

b b
x x *
cond(A)
.
x*
b
Deci factor de condiionare mic i variaii relative mici ale termenilor
liberi implic variaii relative mici ale soluiei.
Dac gradul de acuratee a datelor de intrare este compatibil cu precizia
mainii mach, atunci

x x *
cond(A)mach.
x*

76

Metode Numerice

n urma calculului soluiei sistemului Ax = b se pot pierde pn la log10(cond(A))


cifre zecimale semnificative relativ la acurateea datelor de intrare.

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


M2,2(R) pot fi interpretate ca ecuaiile a dou drepte n plan, iar soluia sistemului
drept coordonatele punctului de intersecie a celor dou drepte. Factor de
condiionare mare al matricei A nseamn c dreptele sunt aproape paralele.

problem bine condiionat

problem ru condiionat

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

887.112

885.781

> A1:=matrix(2,2,[888445/1000,887112/1000,887112/1000,
885781/1000]);

177689

200
A1 :=
110889

125

110889

125
885781

1000

> cond(A1);

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 - diferena este dat doar de reprezentarea
coeficienilor: simbolic (ca numere raionale) n cazul lui A1 i n virgul mobil n
cazul lui A comenzile linsolve(A,b) i linsolve(A1,b) ntorc rezultate diferite.
Soluia corect a sistemului este cea obinut n varianta n care s-a lucrat simbolic:
x1

885781000

x2

-887112000

Rezultatul eronat furnizat de comanda linsolve(A,b) se datoreaz relei condiionri


a matricei A. Se observ c factorul de condiionare este:
0.315260266024900 10 13

Revenim la sistemul
Ax = b, cu A nesingular
notm cu x* soluia exact i cu x soluia aproximativ. Vectorul
r = b - A x
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)

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

= cond(A)

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

= cond(A)

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

de unde rezult
x * x
r
cond(A)
x*
b
Ca urmare factor de condiionare mic (problem bine condiionat) i reziduu mic
implic variaii relative mici ale soluiei.

Exemplu
Considerm sistemul Ax = b, unde
A=

1.001

i
b = 2.001
2
Evident soluia corect a sistemului este
x1

x2

Dac se consider vectorul y


y1
y2

2
=

se observ c
b - Ay =

0.001
0

79

Mdlina Roxana Buneci

Deci y aparent verific sistemul, dei este diferit de x. Aceasta se datoreaz valorii
factorului de condiionare 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

1.001

> cond(A);

4004.001000
Artm n continuare c dac reziduu este mare atunci variaia relativ a
coeficienilor matricei de intrare A este mare. S presupunem c x este soluia
sistemului (A+E) x = b. Atunci
(A+E) x = b
E x = b -A x
E x = r
de unde

||r|| = ||E x || ||E|| || x ||,

i ca urmare
|| E ||
|| r ||

|| A |||| x || || A ||
n consecin dac a reziduu este mare atunci variaia relativ a coeficienilor
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
condiionat sau nu.

IV.4. Metode iterative de rezolvare a sistemelor liniare


IV.4.1. Generaliti
Metodele iterative constau n construcia unui ir (xk)k convergent ctre
soluia exact a sistemului. Oprirea procesului iterativ are loc la un indice m
80

Metode Numerice

determinat pe parcursul calculului n funcie de precizia impus astfel nct


termenul xm s constituie o aproximaie satisfctoare a soluiei 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 relaia de recuren:

Nxk+1 = P xk + b, k 0.
Notm ek = x* xk eroarea absolut cu care xk aproximeaz x*, soluia 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 soluia 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).
Demonstraie. 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,

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

81

Mdlina Roxana Buneci

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

dac (G) < 1.

Din demonstraia 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 soluie 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

a2,2 0 0

..
0
0
L =

0 0 an,n

0 0

a2,1 0

0 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

82

Metode Numerice

IV.4.2. Metoda Jacobi


Metoda Jacobi se caracterizeaz prin desfacerea

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

1
0
a11
N-1 =

-1

0 0 0
a 22
..

N P=

0 0
1

1
0
a11

0 0

0 0

1
a nn

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

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

0 0

a 22
..

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

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

0 0

a nn

Dac G = N-1P, atunci coeficienii 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 soluia 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 convergena irului (xk)k este

suficient ca min( G 1 , G

)<1.

Calculm G 1 :
n

G 1 = max{

i, j

,1 jn}

i =1
n

= max{
i =1
i j

a i, j

, 1 jn}

a i ,i

Calculm G :
n

= max{ g i , j ,1 in}

j=1

a i, j

= max{

a i ,i

j=1
j i

,1 in}.

Dac G 1 < 1 sau G <1, atunci (G) <1. Dar condiia G <1 este echivalent cu
a i, j

a
j=1
j i

< 1 pentru orice i, 1 in

i ,i

| 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 obinut prin metoda
Jacobi converge la soluia exact a sistemului Ax = b. Dac ek = x*- xk este eroarea
absolut cu care xk aproximeaz x*, soluia 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

Fie n1, = min( G 1 , G

e0

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

satisfctoare pentru soluia 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,
n

x ik +1 = gi, jx kj +
j=1

n
n
a i,j k
bi
b
b
xj + i .
= gi, jx kj - i =
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

x ik +1 =

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

Urmtoarea procedur Maple are drept parametri matricea sistemului,


vectorul termenilor liberi, aproximaia iniial x0 a soluiei, i eroarea epsilon.
Procedura ntoarce aproximaia xk (dat de metoda Jacobi) a soluiei cu
ln (eps )
+1 .
ln (n 1, )

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;

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

n1<suma

then n1:=suma fi;

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

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

a := 1

-1

86

1
5
1

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.
k

irul (x )k construit prin metoda Gauss-Seidel este definit prin


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

a1,1

0 0

a2,1 a2,2 0

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

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

x1k +1
x k2 +1

= Pxk + b

x kn +1

Deci

x1k +1 =

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

87

Mdlina Roxana Buneci


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

i pentru orice i , 2 i n, avem


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

x ik +1 =
=

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

n
i1
1
( a i, jx kj + bi - a i,jx kj +1 )
a i,i j=i +1
j=1

n
i1
1
( bi - a i, jx kj - a i, jx kj +1 )
a i,i
j=i +1
j=1

n consecin, irul (xk)k construit prin metoda Gauss-Seidel este:


x0 dat
pentru k0,

x1k +1 =

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

x ik +1 =

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

Ca i n cazul metodei Jacobi dac A este diagonal dominant atunci irul obinut
prin metoda Gauss-Seidel converge la soluia 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, aproximaia iniial x0 a
soluiei, i eroarea epsilon. Procedura ntoarce aproximaia xk (dat de metoda
Gauss Seidel) a soluiei 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]);

a := 1

-1

1
5
1

> linsolve(a,b);

[ 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 ecuaiilor i sistemelor neliniare


V.1 Rezolvarea ecuaiilor 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, soluie (sau rdcin) a ecuaiei f(x) = 0
sau zerou al funciei f pe intervalul [a,b].
Dac f : [a,b] R, este o funcie continu cu proprietatea c
f(a)f(b) < 0.
Atunci exist cel puin o rdcin x* (a,b) a ecuaiei f(x) = 0. Rdcina ecuaiei
f(x) = 0 nu este neaprat unic.
Presupunem c f : [a,b] R este o funcie derivabil, x*(a,b) o rdcin a
ecuaiei f(x) = 0 i x = x* + h o aproximaie a lui x*. Aplicnd formula lui Taylor
rezult c
f( x ) = f(x*) + f (x*)h + o(h),

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

unde lim

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

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

f (x*)

x -x*

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

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

91

1
. Dac > 0 i
f (x)

Mdlina Roxana Buneci

| x - x*|

1
.
f (x*)

(unde x* este o rdcin a ecuaiei 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 condiionat (

1
f (x*)

mic), atunci reziduu mic implic eroare absolut | x -x*| mic.

problem bine condiionat

problem ru condiionat

Metodele iterative de rezolvare a unei ecuaii f(x)=0 presupun construcia unui

ir (xk)k convergent ctre o rdcin x* a ecuaiei. 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

e k +1
ek

= C.

Dac

r = 1 i 0 < C<1, rata convergenei se spune liniar

r = 1 i C = 0 (sau r > 1), rata convergenei se spune superliniar

r = 2, rata convergenei se spune ptratic

92

Metode Numerice

V.1. 1. Metoda biseciei (metoda njumtirii intervalului)

Fie f : [a,b] R, o funcie continu cu proprietatea c


f(a)f(b) < 0.
Atunci exist cel puin o rdcin x* (a,b) a ecuaiei f(x)=0. Pentru gsirea
rdcinii se micoreaz la fiecare pas intervalul n care funcia i schimb semnul.
Metoda biseciei presupune njumtirea 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 ecuaiei 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 conine o soluie a
ecuaiei f(x) = 0. Presupunem c se d o precizie >0. Considerm c cn mijlocul
intervalului In este o aproximaie satisfctoare a soluiei ecuaiei 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 aproximaie a unei
rdcini x* (a,b) a ecuaiei f(x) = 0 cu eroarea absolut |x*-c| <

93

).
2

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 convergenei pentru metoda biseciei 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 ecuaiei:


x8 3x-3 = 0.
Reprezentm grafic funcia
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 ecuaia 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 ecuaiei f(x) = 0.

V.1.2. Metoda coardei

Fie f : [a,b] R, o funcie continu cu proprietatea c


f(a)f(b) < 0.
Rdcina ecuaiei f(x)=0 se caut ca i n cazul metodei biseciei prin micorarea la
fiecare pas a intervalului n care funcia 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 ecuaiei f(x) = 0.

c1

c2

S determinm coordonatele punctului C de intersecie 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=a-

ba
f(a)
f (b ) f (a )

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


proprietile: f(x) 0, f(x) 0, oricare ar fi x [a, b] i f(a)f(b) < 0. Atunci unica
soluie a ecuaiei f(x) = 0 poate fi obinut 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 )

x0 = b, xn = xn-1 -

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

Dac m1 > 0, M1 > 0 sunt astfel nct m1 |f(x)| M1 i dac x* este unica soluie
a ecuaiei f(x) = 0, atunci eroarea absolut cu care termenul xn aproximeaz x*
satisface inegalitile:

97

Mdlina Roxana Buneci

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

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

Demonstraie. 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 ecuaia f(x) = 0 are o unic soluie 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 intersecie a coardei BCn-1 cu axa Ox. Ca urmare f(xn-1) < 0.
Deoarece f este o funcie 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 aparin intervalului
(a,x*)). Fie x limita irului (xn)n. Trecnd la limit n
xn = xn-1 -

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

obinem

x = x -

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

de unde rezult f( x ) = 0. Deoarece x* este unica rdcin a ecuaiei 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*.

98

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

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

|x* - xn| =

f ( xn )
f (dn )

f (x n )
m1

Dac presupunem c f(a)f(a)<0 i


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

xn = xn-1 atunci
- f(xn-1) =

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

(xn xn-1),

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) =

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

(xn xn-1).

obinem
(x* - xn-1) f (n) = f (n) (xn xn-1)

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

=(

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

99

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

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.

Semnificaie geometric. Fie f : [a, b] R o aplicaie 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 )

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 soluie a ecuaiei f(x) = 0.

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


intersecie 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

1.1.

x2

f > 0, f(a) < 0

100

Metode Numerice

x0 = a

x1

1.2.

x2

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 intersecie 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

2.1.

x1

f > 0, f(b) < 0

101

x0 = b

Mdlina Roxana Buneci

x2

2.2

x1

x0 = b

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 aproximaie a unicei rdcini x* (a,b) a ecuaiei 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 -

f ( x1)
f ( x1) f ( b )

(x1-b),

altfel
x1: = a ; x2: = 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 ecuaiei:


x8 3x-3 = 0.
n seciunea 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 ecuaiei


f(x) = 0. Presupunem c f este derivabil i c derivata nu se anuleaz. Rdcina
ecuaiei 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 interseciei dintre tangenta la graficul funciei n xn-1 i axa Ox.

xn

xn-1

104

Metode Numerice

Ecuaia tangentei n xn-1 este:


y f(xn-1) = f (xn-1)(x xn-1)
Deci intersecia cu axa Ox se afl rezolvnd sistemul

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

y = 0
n consecin ,

xn = xn-1 -

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

Convergena irului este determinat de termenul iniial x0. Urmtoarea


teorem stabilete condiii suficiente pentru convergena metodei tangentei.

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


derivabil cu urmtoarele proprieti: f(x)0, f(x) 0 oricare ar fi x[a, b] i
f(a)f(b)<0. Atunci unica soluie x* a ecuaiei 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
inegaliti:
|x* - xn|
|x* - xn|
unde m1 = inf

x[a,b]

f (x n )
m1

M2
(x n x n 1 )2
2 m1

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

Demonstraie. 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 ecuaia f(x) = 0 are o cel puin soluie x*, iar din faptul c f
este strict cresctoare rezult c soluia 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 inducie 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
2

0 = f(x*) = f(xn) +

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

Din faptul c f(n) > 0, rezult c


0 > f(xn) +

x * x n
f (xn)
1!

de unde
xn+1 = xn -

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 -

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

obinem
x = x -

f ( x )
,
f ( x )

de unde rezult f( x ) = 0. Deoarece x* este unica rdcin a ecuaiei 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

|x* - xn| =

f ( xn )
f (dn )

f (x n )
m1

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

( 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 )

xn - xn-1 = -

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

obinem
2

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

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

2!

Ca urmare

|x* - xn|

f (x n )
m1

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

Observaie 5.3. Rata convergenei pentru metoda tangentei este ptratic.


ntr-adevr, s presupunem c f : [a, b] R o aplicaie 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 soluie a ecuaiei f(x) = 0. Aplicnd formula lui
Taylor rezult c exist n ntre xn i x* astfel nct
107

Mdlina Roxana Buneci


2

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

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

sau echivalent
x* - xn +

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

Aadar
x* - xn+1 = -

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

f (xn ) 2

i trecnd la limit obinem

| f ( x *) | M 2
=

2 | f ( x *) | 2m1
n | x * x n |2
lim

unde m1 = inf

x[a,b]

| x * x n +1 |

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

Semnificaie geometric. Fie f : [a, b] R o aplicaie 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 soluie a ecuaiei f(x) = 0. Pentru orice n 1, xn reprezint abscisa punctului
de intersecie 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

1.1.

x0

1.2.

x1

f > 0, f > 0

x1

x2

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

x0

Mdlina Roxana Buneci

x0

x1

x2

f > 0, f < 0

2.1.

x2

x1

x0

2.2.
f < 0, f < 0
Deci pentru aplicarea metodei tangentei n rezolvarea ecuaiei f(x) = 0 trebuie
stabilite intervalele de monotonie i intervalele de convexitate/concavitate pentru
funcia 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 iniial x0 converge la unica rdcin a ecuaiei


f(x) = 0, situat n intervalul [a, b].

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

>0 (precizia determin condiia de oprire a iteraiilor)


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
aproximaie satisfctoare a unicei soluii a ecuaiei 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 condiiile suficiente de convergen. Introducem ca dat
suplimentar de intrare numrul maxim de termeni din ir ce urmeaz a fi calculai
(Nmax). Condiia de oprire se transform
| xn - xn-1 |2 < sau n > Nmax

x1 := x0;
x2 : = x1 -

f (x1)
;
f (x1)

n : = 1;

111

Mdlina Roxana Buneci

ct timp (| x2 x1 |2 ) i (n Nmax) execut


x1 := x2;
x2 : = x1 -

f (x1)
;
f (x1)

n : = n + 1;
Trebuie verificat la ieirea din ciclu dac f(x2) 0. Dac problema este bine
condiionat, aceasta condiie va asigura acurateea aproximaiei.

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 mulime G Rn i o funcie 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 soluie a sistemului (de n ecuaii 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 mulime 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 funcie difereniabil i x*G o soluie a sistemului f(x) = 0. De asemenea fie
x = x* + h G (hRn cu ||h||=1, R) o aproximaie a lui x*. Notm cu Jf(x)
jacobianul funciei f n punctul x, adic matricea

.
i (x)
x j

1i, j n
Aplicnd formula lui Taylor rezult c
f( x ) = f(x*) + Jf(x*)h + o(),

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

unde lim

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 condiionare 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 soluie 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 condiionat (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 ecuaii f(x)=0 presupun
construcia unui ir (xk)k convergent ctre o rdcin x* a ecuaiei. 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 convergenei se spune liniar

r=1 i C = 0 (sau dac r > 1), rata convergenei se spune superliniar

r = 2, rata convergenei se spune ptratic

V.2.1. Metoda punctului fix

Definiie 5.4. Fie (X,d) un spaiu metric i fie f: X X. Funcia f se


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

Definiie 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 spaiu metric complet
i fie f : X X o contracie. 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

2. d(x*, xn)

qn
d(x1, x0)
1 q

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


Demonstraie. Deoarece f este contracie, 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 contradicie. 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)
=

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

Deci
d(xn+k, xn)

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
relaia (1) rezult
d(xn+k, xn)

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

Ca urmare
d(xn+k, xn)

1 n
q d(x1, x0)
1 q

117

(2).

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 relaia (2) obinem
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 spaiu
complet rezult c (xn)n este convergent. Notm x* = lim x n . Artm c x* este
n

punct fix pentru f. Funcia f fiind contracie este funcie continu. Trecnd la limit
cu n n
xn = f(xn-1)
obinem
lim x n = lim f (x n 1 ) = f ( lim x n 1 ) ,

de unde innd cont c x* = lim x n = lim x n 1 rezult


n

x* = f(x*),
adic x* este punct fix pentru f.
Din relaia (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 obine


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 obine


d(x*, xn)

qn
d(x1, x0).
1 q

Pentru a arta ultima afirmaia 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 spaiu Banach (n particular, E = Rm) i S o


submulime nchis a lui E. Fie f : S S o funcie 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||

q
||xn - xn-1||
1 q

2. ||x*- xn||

qn
||x1- x0||
1 q

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


Demonstraie. Dac (E, ||||) un spaiu Banach i S o submulime nchis a lui

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

Observaie 5.8. n general, rata convergenei pentru metoda punctului fix


este liniar.

Algoritm:
Date de intrare:
f (contracie)
x0 (termenul iniial al irului)
(precizia ce determin condiia de oprire: se calculeaz termenii irului
pn la xN cu proprietatea ||xN-xN-1|| < ).
Date de ieire:
xN (aproximaie 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 aproximaie pentru x*, punctul fix al lui f. Faptul c f este
contracie asigur terminarea programului ntr-un numr finit de pai. Pentru a evita
ciclarea n situaia n care s-ar ncerca folosirea algoritmului pentru o funcie care
nu este contracie, se poate stabili de la nceput un numr maxim de pai ce urmeaz
a fi executai. De asemenea se poate afia la fiecare pas diferena dintre termenii
consecutivi cureni. (pentru a observa c irul nu converge dac f nu e contracie).
Astfel se poate folosi urmtoarea variant a algoritmului:
Date de intrare:
f (contracie)
x0 (termenul iniial al irului)
(precizia)
Nmax (numr maxim de termeni ai irului ce urmeaz a fi calculai)
Condiia de oprire: se calculeaz termenii irului pn la xN cu proprietatea
||xN-xN-1|| < sau N Nmax).
Date de ieire:
xN (dac f este contracie, xN este aproximaie 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 contracie i Nmax suficient de mare, la ieirea din ciclu, x2 este
aproximaie pentru x*, punctul fix al lui f.
120

Metode Numerice

Interpretare geometric: f: I I contracie, I R interval nchis

y = f(x)
y=x

x0 x2 x4 x3

x1

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

Demonstraie. 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 obinem

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

Exemple.
1) S se rezolve (n mulimea numerelor reale) ecuaia urmtoare aplicnd
metoda punctului fix
x3 x -1 = 0.
Se poate arta c ecuaia x3 x -1 = 0 are o singur rdcin real, i c aceast
rdcin este n intervalul (1,2). Ecuaia 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) =

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

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

1 1
<1
3 34

Ca urmare f este contracie pe intervalul [1,2]. Deci soluia ecuaiei 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 mulimea numerelor reale) ecuaia urmtoare aplicnd
metoda punctului fix
x cos(x) = 0
Notm g(x) = x cos(x). Cum cos(x) [-1, 1], soluiile ecuaiei 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 ecuaia
x cos(x) = 0
are cel mult o rdcin. Cum g(0)g(
rdcin n intervalul [0,
f (x) =

)<0, ecuaia 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

| f (x) | =

x(0, 2)

Ca urmare f este contracie pe intervalul [0,

1
<1
2

]. Deci soluia ecuaiei poate fi aflat


2

ca limita irului (xn)n, cu


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
contracie 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 contraciile


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 )

( 1/ 3 )

> punctfix(f1,1.5,10^(-5));

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

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

f2 := x

1
1
x + cos( x )
2
2

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

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

0.7390851332
Procedura de mai jos implementeaz metoda punctului fix pentru o contracie 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;

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


funcie 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 contracie. Ca urmare irul definit prin xn = f(xn-1), n1 converge la x* pentru
orice termen iniial x0I.
Demonstraie. 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

Deoarece | f | este continu, exist I astfel nct sup | f (x) | = | f ()| <1. Dac
xI

mai artm i c f(I) I, rezult c f|I este contracie. 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

Observaie 5.11. Fie J R un interval deschis i f: J R o funcie 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 funcia
g:J0R, definit prin g(x) = x

1
f(x). Avem
f (x)

g(x*) = x* -

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

deci x* punct fix pentru g. Cum


g (x) = 1 -

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


f (x)

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

rezult c

| g (x*)| =

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

=0 < 1.

Din propoziia precedent rezult c exist un interval nchis I J0 J


astfel nct x*I i g|I : I I este contracie. Ca urmare irul definit prin recuren
xn= g(xn-1), n1 converge la x* pentru orice termen iniial x0I. Din definiia lui g
rezult c
xn = xn-1

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

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

Propoziie 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
funcie difereniabil pe S cu proprietatea c sup || Jf (x) || < 1, unde Jf(x) este
xS

jacobianul funciei f n punctul x, adic matricea

125

Mdlina Roxana Buneci

fi

x)
.

(
x j

1i,jm
Atunci f este contracie.
Demonstraie. 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||
xS

[0,1]

q||x y||.

Propoziie 5.13. Fie |||| o norm pe Rm, care induce o norm pe


L(Rm, Rm) Mm,m(R)
notat tot ||||. Fie G Rm o mulime deschis i fie f: G Rm o funcie 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 contracie. Ca urmare irul definit prin xn=f(xn-1),
n1 converge la x* pentru orice termen iniial x0S.
Demonstraie. 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 contracie. 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 ecuaii

i m necunoscute:
f(x) = 0,
unde f : G Rm, G Rm.
La fel ca n seciunile 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 mulime deschis i f : G

Rm este o funcie difereniabil pe G, identificm difereniala de ordinul I a lui f n


x, df(x), cu jacobianul lui f n x, notat Jf(x):

1i, j m

f
Jf(x) = i (x )
x j

n cele ce urmeaz presupunem c matricea Jf(x) este inversabil pentru x G.


Metoda Newton const n aproximarea soluiei ecuaiei considerate cu xn,
unde
xn = xn-1 Jf(xn-1)-1 f(xn-1)

(*)

iar aproximaia iniial x0G este suficient de apropiat de soluia sistemului.


Observaii. 1) Presupunem c f este de clas C2 i sistemul f(x) = 0 admite o
soluie 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 funcia

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 propoziia 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 contracie. Ca urmare irul definit prin xn= g(xn-1),
n1 converge la x* pentru orice termen iniial x0S. Din definiia lui g rezult c
xn = xn-1 Jf(xn-1)-1 f(xn-1), n 1,
adic irul dat de relaia (*) (corespunztor metodei lui Newton pentru f(x) = 0 cu
termenul iniial x0 S).
2) Amplificnd relaia (*) cu Jf(xn-1) rezult
Jf(xn-1)(xn - xn-1) = f(xn-1)

(**)

sau echivalent

fi x n 1

j=1

x j

( x nj x nj 1 ) = fi ( x n1 ) ,

i = 1,2,, m

Dac se folosete relaia (*) pentru determinarea lui xn este necesar s se calculeze
inversa matricei Jf(xn-1). Dac se folosete relaia (**), este necesar s se rezolve un
sistem liniar cu m ecuaii, i necunoscutele x nk 1 = x nk x nk 1 , k = 1, , m.
Rezolvarea acestui sistem necesit un numr mai mic de operaii dect inversarea
matricei Jf(xn-1). Folosim relaia (**) se nlocuiete rezolvarea sistemului neliniar
prin rezolvarea succesiv a unor sisteme liniare.
3) Una din dificultile metodei este necesitatea determinrii derivatelor
pariale

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 dificulti este aproximarea derivatelor pariale


prin diferene 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 obinut 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 convergenei este ptratic). Dar ca i n cazul metodei tangentei
convergena metodei depinde de alegerea aproximaiei iniiale. Aproximaia iniial
trebuie luat ct mai aproape de soluia problemei, eventual utiliznd o alt metod
de gsire a soluiei. n urmtoarele teoreme se presupune c s-a fixat o norm pe

Rm, notat

, iar pe spaiile 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)


mulimea:

{y R m ,

yx <r

i cu B ( x, r ) nchiderea acestei mulimi, adic

{y R m ,

yx r

Teorem 5.14. (Metoda Newton). Fie G Rm o mulime deschis, f : G


Rm o funcie de clas C2, cu proprietatea c exist M > 0 astfel ca d 2f ( x ) M
pentru orice x G. Presupunem c ecuaia f(x) = 0 admite o soluie 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 relaii

xn x *

2 2n
q
M

xn x *

1
f xn

( )

2
M n
x x n 1 .
2

Parametrii procedurii mnewton (de mai jos) sunt


funcia f (se presupune c se rezolv sistemul f(x) = 0)
x0 = termenul iniial din irul definit de (**)
epsilon = precizia
Nmax = numrul maxim de termeni din ir ce vor fi calculai
Se calculeaz n termeni, cu n verificnd
2

( x n x n 1 < epsilon) sau (nNmax).


Comanda

>subs(expr1,expr2);
substituie subexpresia expr1 n expresia expr2. Comanda

>jacobian(f(x,y,...), [x, y, ...]);


calculeaz jacobianul lui f. Este o comnad ce apaine 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 aparine 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 ecuaii liniare (aa cum remarcam mai nainte). Un alt
dezavantaj este localizarea teoretic a procesului iterativ ntr-o vecintate a soluiei

133

Mdlina Roxana Buneci

cutate. Metoda Newton simplificat nltur primul inconvenient. Aceast variant


a metodei const n aproximarea soluiei cu xn, unde x0, c G, i
xn = xn-1 Jf(c)-1 f(xn-1), n 1

(***)

Urmtoarea teorem stabilete condiii suficiente de convergen a acestei


metode.

Teorem 5.15 (Metoda Newton simplificat). Fie G Rm o mulime


deschis, f : G Rm o funcie de clas C2, cu proprietatea c exist M > 0 astfel ca

d 2f ( x ) M pentru orice x G. Presupunem c ecuaia f(x) = 0 admite o soluie 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 relaii

xn x * qn x0 x *
xn x *

( )

1
f xn

L n +1
x
xn

Parametrii procedurii mnewtonsimplif (de mai jos) sunt


funcia f (se presupune c se rezolv sistemul f(x) = 0)
x0 = termenul iniial 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 calculai
Se calculeaz n termeni, cu n verificnd
2

( x n x n 1 < epsilon) sau (nNmax).

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

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 := 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;

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 soluiei problemei. Metoda Newton Kantorovici const n
aproximarea rdcinii ecuaiei considerate cu xn, unde
xn = xn-1 Jf(xn-1)-1 f(xn-1), n 1,

(****)

iar aproximaia iniial x0G satisface condiiile din teorema urmtoare.

Teorem 5.16. (Metoda Newton-Kantorovici). Fie G Rm o mulime


deschis, f : G Rm o funcie 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

B x 0 , r G, unde r =

1
(1 1 2abM ) .
aM

Atunci f(x) = 0 are o unic soluie 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 relaie
xn x *

b
2n 1

138

, n 1.

Metode Numerice

VI. Aproximarea funciilor


Fie f : [a, b] R o funcie. Se pune problema determinrii unei funcii F
care s aproximeze funcia f. O astfel de aproximaie este necesar n urmtoarele
situaii:
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 funcie simpl, uor de evaluat, de difereniat i de integrat.

VI.1. Polinoame de interpolare


n cele ce urmeaz aproximarea funciei f : [a, b] R se face cu un polinom.

VI.1.1. Definiie. Eroarea de interpolare.


Definiie. 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 condiii
grad(Pn) n
Pn(xi) = yi, i = 0, 1, , n .
Polinomul determinat de condiiile 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
Relaiile Pn(xi) = yi, i = 0, 1, , n conduc la sistemul:
139

Mdlina Roxana Buneci

a0 + a1x0 + a2 x 20 + + an x n0 = y0
a0 + a1x1 + a2 x 12 + + an x 1n = y1
(*)
a0 + a1xn + a2 x 2n + + an x nn = yn
Determinatul acestui sistem este
1
=

x0 x 20 x 0n

1 x1 x 12 x 1n

(x

xj

0 j<i n

xn x 2n x nn

(fiind un determinant Vandermonde). Deci 0, i n consecin sistemul (*) este


compatibil determinat, adic polinomul de interpolare Pn este unic determinat.
Coeficienii polinomului de interpolare pot fi determinai 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 funcia f:

Teorem 6.1. (eroarea de interpolare). Fie f : [a, b] R o funcie de


n+1

clas C

. 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

sup f (

| f(x) Pn(x) |

n +1)

t[ a,b ]

(t)
|(x x0) (x x1) (x xn)|.

( n + 1) !

Demonstraie. 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 funcia


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 funcie Rolle, rezult c derivata g se anuleaz
n n+1 puncte distincte din intervalul (a,b). Repetnd raionamentul cu g , rezult
c g se anuleaz n n puncte distincte din (a, b). Raionnd 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 obine c exist x (a, b) astfel nct
g(n+1)( x ) = 0.
Pe de alt parte deoarece gradul lui Pn este cel mult n, rezult c Pn(n +1) (x) = 0
pentru orice x [a, b] i deoarece x (x x0) (x x1) (x xn) este o funcie
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

g(n+1)(x) = f(n+1)(x) - Pn(n +1) (x) - c(n+1)! = f(n+1)(x) - c(n+1)!.


n particular, pentru x = x se obine
0 = g(n+1)( x ) = f(n+1)( x ) - c(n+1)!,
de unde
c=

f (n +1) ( x )

( n + 1) !

Cum pe de alt parte avem


c=

f (x) Pn (x)
.
(x x 0 )(x x1 )...(x x n )

Rezult c

f (n +1) ( x )
f (x) Pn (x)
=
,
(x x 0 )(x x1 )...(x x n )
( n + 1) !
sau echivalent,
f( x ) Pn( x ) =

f (n +1) ( x )

( n + 1) !

(x x0) (x x1) (x xn).

n plus,
sup f (

|f( x ) Pn( x )|

n +1)

t[ a,b ]

(t)
|(x x0) (x x1) (x xn)|.

( n + 1) !

VI.1.2. Eroarea de interpolare n cazul nodurilor echidistante


Fie f : [a, b] R o funcie 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

sup f (

| f(x) Pn(x) |

n +1)

t[ a,b ]

(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)|

h h h2
=
.
4
2 2

De asemenea se poate arta c


|(x xj)| (j i + 1) h pentru i < j
|(x xj)| (i j ) h pentru j+1 < i

i innd seama c (j+1)!(n-j)! n! se obine


|(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 proieciile pe axa OX a unor puncte egal
distanate 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

sup f (

(n + 1)! t[a,b]

n +1)

(t) .

VI.1.2. Polinomul Lagrange de interpolare


Fie f : [a, b] R o funcie, 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 proprietile
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 )

Forma Lagrange a polinomului de interpolare este:


Ln(x) = y0l0(x) + y1l1(x) + + ynln(x)
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) =

( 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 )

yi ( x

i =0

numit form Lagrange.

Algoritm pentru determinarea polinomului Lagrange


Date de intrare:
x list ce conine cele n+1 puncte distincte din intervalul [a, b]
x0
x1

xn
y lista ce conine valorile funciei 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 funcia 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

polinomul de interpolare P3 asociat nodurilor x0=0, x1=

2
4
, x2 =
i x3 = 2 i
3
3

valorilor y0 = f1(x0), y1 = f1(x1), y2 = f1(x2), y3 = f1(x3). De asemenea vom reprezenta


grafic funcia 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 funcia 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

h4
2
2, unde h =
16
3

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

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 funcia f3: R R definit prin f3(x) =

1
1 + x2

. Vom reprezenta grafic

funcia 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

1
1 + x2

> x4:=[seq(-1+2*i/3,i=0..3)];

-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 funcia 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 funcia 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 funcia 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 funcia 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 funcia 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 funcia 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 (n ) ) ale
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 (n ) i valorilor f x 0 , f x1 , , f x (n ) .
Se pune problema convergenei punctuale sau uniforme a lui Pn la f. n general, Pn
nu converge la f, ns dac f este o funcie ntreag real irul de polinoame Pn
converge uniform la f.
n cele ce urmeaz vom considera trei funcii 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 (n ) i valorilor f x 0 , f x1 , ,

( )

n
f x (n ) (cu exemplificri pentru f {f1, f2, f3}).

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).
Ceilali parametri ai procedurii sunt funcia 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,

x1,

..., x`,

> 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),

...

y1=`,

y`,convert(n,string),`=`,f,`(x`,convert(n,string),

`)`);
>

titlu:=cat(titlu,

nodurilor
y1,

x0,

x1,

`\nL

polinomul

de

interpolare

asociat

...,x `,convert(i,string),` si valorilor y0,

...,y`,convert(i,string),

`,

i =0..`,convert(n,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 funcia f1 pe intervalele [0, 2], [-, 3] , funcia f3 pe


intervalul [-3, 3] i funcia 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 spea I (ascendent)


Fie f : [a, b] R o funcie, 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 reelei. 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. Construcia 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 condiia 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 coeficienilor c0, c1, , cn este necesar cunoaterea
noiunilor de putere generalizat i diferen finit.
Fie f : [a, b] R o funcie, i fie reeaua 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. Diferenele finite de

ordin superior se definesc cu ajutorul relaiei:


nf(x) = (n-1f(x))
Se verific cu uurin relaiile

(f+g) = (f) +(g)


(cf) = c(f)
(m+n)(f) = m(nf).

161

Mdlina Roxana Buneci

Pentru aplicaii, calculul diferenelor finite este comod dac se construiete tabelul
triunghiular urmtor:
f(x0)

f(x1)

f(x2)

f(x3)

f(xn-3)

f(x0) f(x1) f(x2)

f(xn-2)

f(xn-1)

f(xn)

f(xn-3) f(xn-2) f(xn-1)

2f(x0) 2f(x1)

2f(xn-3) 2f(xn-2)

3f(x0)

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 inducie c
n

n f ( x ) = ( 1) Cin f ( x + ( n i ) h )
i=0

dar n aplicaii se va folosi tabelul diagonal de mai sus.


Pentru determinarea unui coeficientul ci al polinomului de interpolare Pn se
utilizeaz diferena 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 obine
ci+1 =

yi +1 Pi (x i+1 )
(i + 1)!h i+1

i se poate art inductiv c


ci+1 =

i +1f (x 0 )

(i + 1)!h i +1

, i = 0, 1, ..., n-1.

162

Metode Numerice

Aadar

Pn (x) = f (x 0 ) +
+ ... +

2
3
f (x 0 )
[1] + f (x 0 ) x x [ 2] + f (x 0 ) x x [3] + .... +
x

x
(
(
(
0)
0)
0)
1!h
2!h 2
3!h 3

n f (x 0 )
n

( x x 0 )[ n ]

n!h
Expresia polinomului de interpolare de mai sus poart denumirea de polinom
Newton de spea I (sau ascendent ). Expresia polinomului Newton se poate pune
sub o form mai comod pentru aplicaii, dac se face schimbarea de variabil

t=

x x0
h

i se ine seama c

( x x 0 )[i] = ( x x 0 ) ( x x 0 h ) ( x x 0 2h ) .... ( x x 0 (i 1)h )


hi

= t ( t 1)( t 2 ) .... ( t i + 1)

pentru orice i = 1,2,,n. Se obine

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
funciei 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 reea
h pasul reelei
y lista ce conine valorile funciei n punctele reelei.
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 spea 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
x1 := 0,
,
, 2
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
3 X
1
2
X
2
2

+
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 spea II (descendent)


Fie f : [a, b] R o funcie, 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 reelei. 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. Construcia 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 condiia 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 coeficienilor c0, c1, , cn este necesar cunoaterea


noiunii de diferen finit la stnga. Expresia
f(x) = f(x) - f(x-h)
se numete diferen finit (la stnga) de ordinul nti. Diferenele finite la

stnga de ordin superior se definesc cu ajutorul relaiei:


nf(x) = (n-1f(x))
Se observ c
f(x) = f(x-h).
n aplicaii, pentru calculul diferenelor finite la stnga se utilizeaz tabelul
triunghiular urmtor:
f(x0)

f(x1)

f(x2)

f(x3)

f(xn-3)

f(x1) f(x2) f(x3)

f(xn-2)

f(xn-1)

f(xn)

f(xn-2) f(xn-1) f(xn)

2f(x2) 2f(x3)

2f(xn-2) 2f(xn)

3f(x3)

3f(xn)

nf(xn)
Pentru determinarea unui coeficient ci al polinomului de interpolare Pn se utilizeaz
diferena finit de ordinul i a lui Pn n xn. Se obine:

Pn (x) = f (x n ) +
+ .... +

3
f (x 0 )
2f (x n )
[ 2] + f (x n ) x x
[3]
x

x
( x x n )[1] +
(
)
(

n
1
n 2 ) +
2
3
1!h
2!h
3!h

n f (x n )
n!h

( x x1 )[ n ]

Expresia polinomului de interpolare de mai sus poart denumirea de polinom

Newton de spea II (sau descendent ). Expresia polinomului Newton descendent se


poate pune sub o form mai comod pentru aplicaii, dac se face schimbarea de
variabil

t=

x xn
h

Se obine

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


funciei 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 reea
h pasul reelei
y lista ce conine valorile funciei n punctele reelei.
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 spea 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
x1 := 0,
,
, 2
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 diferene divizate


Fie f : [a, b] R o funcie, 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.
Construcia 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 condiia 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 coeficienilor c0, c1, , cn este necesar cunoaterea noiunii 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. Diferenele divizate de ordin 2 se


definesc cu ajutorul diferenelor 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 diferenele divizate de ordinul m, diferenele 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 aplicaii, calculul diferenelor divizate este comod dac se construiete


tabelul triunghiular urmtor:
f(x0)

f(x1)

f(x0,x1)

f(x2)

f(x3)

f(xn-2)

f(x1,x2) f(x2,x3)

f(xn-1)

f(xn-2,xn-1)

f(x0,x1,x2) f(x1, x2,x3)

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

f(xn-2,xn-1,xn)

f(x0,x1,....,xn)

Algoritm pentru determinarea polinomului Newton cu diferene divizate


Date de intrare:
x list ce conine cele n+1 puncte distincte din intervalul [a, b]
x0

x1

xn

y lista ce conine valorile funciei 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 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
x1 := 0,
,
, 2
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 funcie i fie x0, x1, , xn n+1 puncte distincte din
intervalul [a, b] pentru care se cunosc valorile funciei yi = f(xi) pentru orice i =
0,1,n. Aproximarea funciei f printr-un polinom de interpolare nu este indicat n
urmtoarele situaii:

cnd n este un numr foarte mare, ceea ce determin un volum mare de


calcul pentru determinarea coeficienilor de interpolare

cnd valorile yi = f(xi) nu sunt exacte.

n aceste situaii se poate folosi aproximarea funciei prin metoda celor mai mici
ptrate.

VI.2.1. Caracterizarea elementelor de cea mai bun aproximare pe


subspaii Hilbert.
Definiie. Fie (S, d) un spaiu metric i X o submulime 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 spaiu pre-Hilbert H (spaiu vectorial real sau complex


nzestrat cu un produs scalar < , >) este n particular un spaiu metric (distana d
este definit prin d(x,y) = || x y || =

x y, x y pentru orice x, yH). n acest

caz dac X o submulime 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

175

x x0 , x x0

Mdlina Roxana Buneci

Teorem 6.2. Fie H un spaiu pre-Hilbert (real sau complex), H0 un


subspaiu vectorial al su i x0 H. Dac exist un element de cea mai bun
aproximare a lui x0 pe H0, atunci acesta este unic.
Demonstraie. Presupunem prin absurd c exist p1 p2 elemente de cea mai
bun aproximare a lui x0 pe H0. Deoarece H0 este subspaiu vectorial al lui H,
1
2

rezult c p = p1 +
1
2

1 2
p H0. Avem
2

||p-x0||2 = || p1 +
<

1
4

1 2 0 2 1
p -x || = || p1 x0 + p2 x0||2 <
2
4

|| p1 x0 + p2 x0||2 +

1
4

|| p1 x0 (p2 x0)||2

1
2

= (|| p1 x0 ||2 + || p2 x0||2)

|| p1 x0 ||2.
Deci p H0 i ||p-x0|| < || p1 x0 ||, contradicie 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 spaiu pre-Hilbert, H0 un subspaiu 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).
Demonstraie. 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. mprind inegalitatea cu
176

Metode Numerice

|| p0 -x0|| > 0,
obinem

||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 subspaiu 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

avem ||p0 - y0 x0||2 < || p0 x0||2 i p0 - y0 H0. Am obinut astfel o contradicie


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 mulimea funciilor definite pe intervalul [a, b],

F : = {f : [a, b] R }
i n+1 puncte distincte x0, x1, , xn din intervalul [a, b]. Spunem c funciile f i g
din aceast mulime 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 relaie 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 mulimea claselor de echivalen relativ
la relaia de echivalen de mai sus. H poate fi nzestrat cu o operaie 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 definiia nu depinde de reprezentani. 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 operaia
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 operaie extern de nmulire 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 definiia nu depinde de reprezentani. H nzestrat cu cele
dou operaii definite mai sus devine spaiu vectorial.
Fie p o funcie cu urmtoarele proprieti:

p(xi) > 0

p(x i ) =1.

i =0

178

Metode Numerice

Dac f1 ~ f2 i g1 ~ g2 atunci
n

p ( xi ) f1 ( xi )g1 ( xi )

i=0

p ( xi ) f2 ( xi )g 2 ( xi ) .

i=0

Introducem urmtorul produs scalar pe H


<[f], [g]> =

p(x i )f (x i )g(x i )
i=0

Funcia p(x) este o funcie 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
2

[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 funcii liniar independente definite pe
[a,b], cu m n. Convenim s numim spaiul generat de ele spaiul 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 definiiei elementul F0 de cea mai bun aproximare a lui f pe Hm trebuie s
satisfac condiia
n

p(x i )(f (x i ) F(x i ))2


p(x i )(f (x i ) F0 (x i ))2 = FinfH m
i=0
i =0

Determinarea coeficienilor cj ai polinomului generalizat F0 cu ajutorul acestei


relaii este dificil. Se folosete caraterizarea elementului de cea mai bun
aproximare dat n seciunea 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> =

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 coeficienilor 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 funcii 0, 1, m este
un sistem liniar independent.
Dac j(x) = xj, j =0, 1,, m, m n, i p

1
, atunci
n +1

F0(x) =

ci x i .
i =0

iar sistemul anterior devine


c0(n+1) + c1

i=0

i =0

x i + + cm x im

f (x i )
i=0

i=0

i =0

i =0

i =0

c0 x i + c1 x i2 + + cm x im +1 = x i f (x i )

i=0

i =0

i=0

c0 x im + c1 x im +1 + + cm x i2m =

Acest sistem este numit sistemul normal al lui Gauss.

180

x im f (x i )
i =0

Metode Numerice

Parametrii procedurii patrate_mici de mai jos sunt:


x - lista celor n +1 puncte: x0, x1, , xn
y - lista ce conine valorile funciei f n ce n +1 puncte: x0, x1, , xn (y0 =
f(x0), y1 =f(x1), .,yn =f(xn))

lista funciilor liniar independente 0, 1, m


p ponderea (lista)
Procedura ntoarce o lista ce conine coeficienii 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
iniial: (x0, y0), (x1, y1), ..., (xn, yn). Procedura baza_normal primete drept
paramentru un numr natural m i construiete lista funciilor 0, 1, m unde

j(x) = xj pentru orice x i orice j=0..m. Procedura evalueaza primete drept


parametri lista funciilor liniar independente 0, 1, m, lista coeficienilor
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 funcia i cele
n+1 puncte date iniial. Punctele sunt reprezentate prin elipse. Parametrii procedurii
sunt funcia determinat de polinomul generalizat, lista x ce conine punctele x0, x1,
, xn, i i lista y ce conine valorile funciei. 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 coeficienilor cj ai polinomului generalizat F0 se rezolv


sistemul Ax = b, cu A = Xt X iar b = Xt Y, unde

X=

p(x 0 ) 0(x0)

p(x 0 ) 1(x0)

...

p(x 0 ) m(xn)

p(x1 ) 0(x1)

p(x1 ) 1(x1)

...

p(x1 ) m(x1)

p(x n ) 0(xn)

p(x n ) 1(xn)

Iar

186

...

p(x n ) m(xn)

Metode Numerice

p(x 0 ) f(x0)
p(x1 ) f(x1)
Y=

p(x n ) f(xn)
Dac funciile 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 condiionat, atunci gradul de acuratee al soluiei
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 funcii f sau a derivatelor ei de
ordin superior atunci cnd expresia lui f este prea complicat sau cnd nu se
cunoate expresia analitic a funciei 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 funciei f.
Prezentm o tehnic de gsire a unor formule de aproximare pentru valorile
derivatelor de orice ordin ale funciei 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 funcie de n ori
derivabil n a. Polinomul Taylor de ordin n ataat lui f n punctul a este funcia
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 funciei f n punctul a este funcia


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 funciei f
n punctul a. Se demonstreaz c

lim

x a

R a,x

(x a )

189

= 0. Dac f este de clas Cn+1, atunci

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


funciei f n punctul xi [a, b] cnd sunt cunoscute valorile funciei 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 obinem relaiile:

f (x i 1 ) = f (x i ) +

f (x i )
f (x i )h 2 f (u)
(h) +
+
(h)3
1!
2!
3!

(7.1)

f (x i+1 ) = f (x i ) +

f (x i )
f (x i ) 2 2 f (v) 3 3
h +
h +
h
1!
2!
3!

(7.2)

cu u strict cuprins ntre xi-1 i xi i v strict cuprins ntre xi i xi+1. Scznd din a doua
relaie prima relaie nmulit cu 2 obinem:
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 funciei f n xi prin:

f (x i )

f (x i+1 ) + f ( x i ) 2 1 2f (x i1 )
h ( + 1)

cu eroarea:

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 relaie prima nmulit cu obinem:
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 )

2 ( f (x i +1 ) (1 + ) f (x i ) + f (x i1 ) )
h 2 ( + 1)

cu eroarea
=

h f (v) 2 f (u)

3
( + 1) 3

de ordinul lui h: O(h).


Dac nodurile sunt echidistante (adic dac = 1) se obin urmtoarele
formule de aproximare:
f (x i )

f (x i )

f (x i +1 ) f (x i 1 )
2h

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, obinem:

( 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!

(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
relaii 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

astfel aproxima valoarea derivatei de ordinul doi al lui f n xi prin

191

Mdlina Roxana Buneci

f (x i )

f (x i +1 ) 2f (x i ) + f (x i1 )
h2

cu eroarea

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 funciei f n punctul xi [a, b] cnd sunt cunoscute valorile funciei 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 i )
f (x i )
f (w x )
(x x i ) +
(x x i )2 +
(x x i )3 .
1!
2!
3!

f (x) = f (x i ) +

cu wx stric cuprins ntre x i xi. nlocuim n aceast formul x = xi+1, respectiv x =


xi+2 i obinem relaiile:
f (x i +1 ) = f (x i ) +

f (x i )
f (x i )h 2 f (u) 3
h+
+
h
1!
2!
3!

f (x i+ 2 ) = f (x i ) +

f (x i )
f (x i ) 2
f (v)
( + 1)h +
h ( + 1) 2 +
( + 1)3 h 3 (7.6)
1!
2!
3!

(7.5)

cu u strict cuprins ntre xi i xi+1 i v strict cuprins ntre xi i xi+2. Scznd din relaia

(7.5) relaia (7.6) nmulit cu (1+)2 obinem:


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 funciei f n xi prin:

192

Metode Numerice

f (x i+ 2 ) (1 + ) 2 f (x i +1 ) 2 + 2 f ( x i )

f (x i )

h ( + 1)

cu eroarea:

f (v) ( + 1) 2 f (u) ( + 1) 2
=

h
3!

3!

Adunnd la relaia (7.6) relaia (7.5) nmulit cu -(1+) obinem:


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 obin urmtoarele


formule de aproximare:

f (x i )

f (x i+ 2 ) + 4f ( x i+1 ) 3f (x i )
2h

cu eroare de ordinul O(h2)


f (x i )

f (x i + 2 ) 2f (x i+1 ) + f (x i )
h2

cu eroare de ordinul O(h).


Similar ne propunem s aproximm valorile derivatelor de ordinul nti i
doi ale funciei f n punctul xi [a, b] cnd sunt cunoscute valorile funciei 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 )
f (x i )h 2 f (u) 3
h+

h
1!
2!
3!

f (x i 2 ) = f (x i )

f (x i )
f (x i ) 2
f (v)
( + 1)h +
h ( + 1)2
( + 1)3 h 3 (7.8)
1!
2!
3!

(7.7)

cu u strict cuprins ntre xi i xi+1 i v strict cuprins ntre xi i xi+2. Scznd din relaia

(7.8) relaia (7.7) nmulit cu (1+)2 obinem:


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 funciei f n xi prin:


2 + 2 ) f ( x i ) (1 + )2 f (x i1 ) + f (x i 2 )
(
f (x )
i

h ( + 1)

cu eroarea:

f (u) ( + 1) f (v) ( + 1)2


=
+

3!

3!

2
h

Adunnd la relaia (7.8) relaia (7.7) nmulit cu -(1+) obinem:


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 obin urmtoarele


formule de aproximare:
f (x i )

3f (x i ) 4f (x i 1 ) + f ( x i 2 )
2h

cu eroare de ordinul O(h ), i

f (x i )

f (x i 2 ) 2f (x i 1 ) + f (x i )
h2

cu eroare de ordinul O(h).


Folosind acest tip de tehnici, se poate obine 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 diferene finite centrale

Eroare

f (x i )

f (x i +1 ) f (x i 1 )
2h

O(h2)

f (x i )

f (x i+1 ) + 8f (x i+1 ) 8f (x i1 ) + f (x i 2 )
12h

O(h4)

f (x i +1 ) 2f (x i ) + f (x i1 )

O(h2)

f (x i+ 2 ) + 16f (x i +1 ) 30f (x i ) + 16f (x i1 ) f (x i 2 )

O(h4)

f (x i )
f (x i )
f (x i )
f (x i )

h2

12h 2
f (x i+ 2 ) 2f (x i +1 ) + 2f (x i1 ) f (x i 2 )

O(h2)

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

O(h4)

Mdlina Roxana Buneci

Formul de aproximare a derivatei prin diferene finite progresive


f (x i )
f (x i )

f (x i+1 ) f (x i )
h

O(h)

f (x i+ 2 ) + 4f ( x i+1 ) 3f (x i )

O(h2)

2h
O(h)

f (x i + 2 ) 2f (x i+1 ) + f (x i )

f (x i )

h2
f (x i +3 ) + 4f (x i + 2 ) 5f (x i+1 ) + 2f (x i )

f (x i )

O(h2)

h2

f (x i )
f (x i )

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

O(h)

h3
3f (x i+ 4 ) + 14f (x i +3 ) 24f (x i+ 2 ) + 18f (x i +1 ) 5f (x i )

O(h2)

2h 3

Formul de aproximare a derivatei prin diferene finite regresive

Eroare

f (x i ) f (x i 1 )
h

O(h)

3f (x i ) 4f (x i1 ) + f ( x i 2 )

O(h2)

f (x i )
f (x i )

Eroare

f (x i )
f (x i )
f (x i )
f (x i )

2h
O(h)

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 )

O(h2)

h2
f (x i ) 3f (x i 1 ) + 3f (x i 2 ) f (x i 3 )
h

O(h)

5f (x i ) 18f (x i 1 ) + 24f (x i 2 ) 14f (x i3 ) + 3f (x i 4 )


2h 3

196

O(h2)

Metode Numerice

Procedur MAPLE pentru determinarea valorilor aproximative ale


derivatei de ordinul 1
Procedura d1 admite drept parametri lista x ce conine punctele x1, x2, ., xn i
lista y ce conine valorile y1 = f(x1), y2 = f(x2), ., yn= f(xn). Procedura ntoarce
lista aproximaiilor 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 conine punctele x1, x2, ., xn i
lista y ce conine valorile y1 = f(x1), y2 = f(x2), ., yn= f(xn). Procedura ntoarce
lista aproximaiilor 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 diferene finite
centrale
Procedura de1 admite drept parametri pasul h al discretizrii i lista y ce conine
valorile y1 = f(x1), y1 = f(x1), ., yn= f(xn) (xi = xi + (i-1)h). Procedura returneaz
lista aproximaiilor 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 diferene finite
centrale
Procedura de2 admite drept parametri drept parametri pasul h al discretizrii i
lista y ce conine valorile y1 = f(x1), y1 = f(x1), ., yn= f(xn) (xi = xi + (i-1)h).
Procedura ntoarce lista aproximaiilor 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 evidenia acest aspect considerm procedurile eroare1 (respectiv eroare2)
de mai jos care returneaz eroarea cu care este aproximat derivata de ordinul 1
(respectiv 2) a funciei f n punctul x cnd se aplic o formul de aproximare prin
diferene finite centrale (nodurile sunt x-h,x,x+h). n exemple ce urmeaz se poate
face comparaie ntre situaia n care calculul se execut simbolic (i doar rezultatele
sunt afiate n virgul mobil) i situaia 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 aproximaie pentru L cu eroare de ordinul O(h2). n cele ce


urmeaz vom arta cum s obinem o aproximaie 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 inducia c

Teorema 7.9 (Extrapolare Richardson). Cu notaiile de mai sus exist


constantele ak,m astfel nct

D(n,m) = L +

h
a k,m 2n
k = m +1

2k

Ca o consecin a teoremei precedente rezult c

D(n,m) = L + O(h2(n+1)).
Cu alte cuvinte D(n,n) este o aproximaie 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 definiia: D(n,0) =
2n

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.
S exemplificm aplicarea acestui procedeu pentru mbuntirea formulei
de aproximare a derivatei de ordinul 1:
f (x) ( h ) =

f (x + h) f (x h)
.
2h

Dac f este analitic avem:


2k +1)
f(
(h) = f (x) +
( x ) h 2k .
k =1 ( 2k + 1) !

Deci putem aplica extrapolare Richardson.Vom aproxima f (x) cu D(1,1). Dar

D(1,1) =

4D (1, 0 ) D ( 0, 0 )
3

h
4 ( h )
2
=
.
3

h
4 ( h )
2
Ca urmare
reprezint o aproximaie 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 funcie, 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 ) +
+

4f (x 0 )
t(t 1)(t 2)(t 3)
4!

= f (x 0 ) +
+

f (x 0 )
2f (x 0 )
3f (x 0 )
t+
t(t 1) +
t(t 1)(t 2) +
1!
2!
3!

f (x 0 )
2f (x 0 ) 2
3f (x 0 ) 3
t+
(t t) +
(t 3t 2 + 2t) +
1!
2!
3!

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

= f (x 0 ) + 2f (x 0 )
+ 4f (x 0 )

(2t 1)
(3t 2 6t + 2)
+ 3f (x 0 )
+
2
6

(2t 3 9t 2 + 11t 3)
12

iar
g ( t ) =
+

2f (x 0 )
3f (x 0 )
2+
(6t 6) +
2
6

4f (x 0 ) 2
(6t 18t + 11)
12

= 2f (x 0 ) + 3f (x 0 ) ( t 1) + 4f (x 0 )

(6t 2 18t + 11)


.
12

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)

(2t 3 9t 2 + 11t 3)
)
12

( 2f (x 0 ) + 3f (x 0 ) ( t 1) + 4f (x 0 )
2
h

208

(6t 2 18t + 11)


).
12

Metode Numerice

VIII. Integrarea numeric


VIII.1. Formula general de cuadratur numeric. Formula de
cuadratur Newton-Cotes.
Fie f : [a, b] R o funcie continu. Ne punem problema s calculm
b

valoarea aproximativ a integralei f (x)(x)dx , unde : [a, b]R este o funcie


a

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 combinaie liniar de valori ale funciei f n punctele x0, x1, , xn, i.e
b

f (x)(x)dx

A0 f(x0) + A1 f(x1) + ... + Anf(xn).

Fie Ln polinomul Lagrange asociat lui f i punctelor considerate:


n

i =0

i =0

Ln(x) = f ( x i ) li ( x ) = yi

( 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 )

nlocuind f prin Ln, obinem formula de aproximare


b

f (x)(x)dx Ln (x)(x)dx
b

i =0

i=0

f (x)(x)dx (x) f ( x i ) li ( x )dx = f ( x i ) (x)li ( x ) dx

209

Mdlina Roxana Buneci


b

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

Ln (x)(x)dx

care

aproximez f (x)(x)dx . Reprezentnd punctele sub forma

xi =

a +b ba
+
t i , ti [-1, 1], i {0, 1, ..., n},
2
2

avem
b

Ln (x)(x)dx

( x ) f ( xi )
i=0

= f ( xi ) ( x )
a

i =0

( 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 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 )

Facem schimbarea de variabil


x=

a +b ba
+
t
2
2

i obinem
b

Ln (x)(x)dx

a
1

(t t 0 )  (t t i 1 )(t t i +1 )  (t t n )
ba n
a +b ba
f (x i ) (
+
t)
dt

2 i =0
2
2
(t i t 0 )  (t i t i 1 )(t i t i+1 )  (t i t n )
Formula

f (x)(x)dx
a
1

(t t 0 ) (t t i1 )(t t i+1 ) (t t n )
ba n
a +b ba
f (x i ) (
+
t)
dt.

2 i =0
2
2
(t i t 0 ) (t i t i1 )(t i t i+1 )  (t i t n )
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 funcia este dat de

|f(x) Ln(x)|

M
(x x 0 )(x x1 ) (x x n ) ,
(n + 1)!

unde M = sup |f(n+1)(x)|


x[a,b]

Rn(f) = f (x)(x)dx (x)L n (x)dx = (f (x) L n (x))(x)dx


b

|Rn(f)| = | (f (x) L n (x))(x)dx | | f (x) Ln (x) | (x)dx


Procednd ca mai nainte obinem restul formulei generale de cuadratur:

|Rn(f)|

M ba
(n + 1)! 2

n+2 1

a +b ba
+
t (t t 0 )(t t1 ) (t t n )dt ,
2
2

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 funcia cu polinomul de interpolare Lagrange i fcnd


schimbarea de variabil
x=a+

ba
t,
n

obinem
b

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 i

n
( n ) 1 ( 1)
Hi =
t ( t 1) ... ( t i + 1)( t i 1) ... ( t n )dt

n ( n i ) !i! 0
n i

n t ( t 1) ... ( t n )
1 ( 1)
dt

n ( n i ) !i! 0
t i

211

Mdlina Roxana Buneci

iar formula se aproximare se


Numerele H i(n ) se numesc coeficienii Newton - Cotes
. Au loc relaiile
numete formula Newton - Cotes
n

Hi(

n)

i =0

(n)
(n)
= 1 i Hi = H n i , i = 0,1,,n.

Dac f este o aplicaie de clas Cn+1 are loc urmtoarea formul de evaluare a
restului:
b

ba
(n)
f (x)(x)dx ( b a ) Hi f a + i n
i =0
a
1
ba
( n + 1)! n
De

reinut

exist

n +2 n

|f(
t(t 1)(t 2) (t n)dt xsup
[a,b]

n+1)

(x)|.

funcii

(n)
( b a ) Hi f ( x i ) nu converge ctre
i =0

continue

pentru

care

irul

a f ( x )dx .

VIII.2. Formula dreptunghiurilor


Fie f : [a, b] R o funcie de clas C1. Aplicm formula general de
cuadratur pentru 1, n=0, x0 =

a+b
(deci t0 = 0). Obinem
2
b

a+b

f (x)dx (b-a) f
a

cu o eroare

( b a )2
4

sup f ' ( x ) .

x[ a,b ]

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 i + x i+1

xii+1 f ( x )dx (xi+1-xi) f


b

innd cont c

n 1

x
f ( x )dx = i +1 f ( x )dx , obinem urmtoarea formul de
i =0

cuadratur numit formula dreptunghiurilor:


b

f (x)dx
a

b a n 1 x i + x i +1
f 2 .
n i =0

Restul (eroarea) este dat de:


b

a
=

f ( x ) dx

n 1 x
i +1

i =0

n 1

i =0

i =0

f ( x ) dx

n 1 x
i +1

i =0

n 1

f ( x ) dx

n 1 x
i +1

b a n 1 x i + x i+1
f ( x ) dx
f 2
n i=0

x i +1

b a n 1 x i + x i+1
f 2 =
n i =0

sup | f (x) |
x[a,b]

= sup | f (x) |
x[a,b]

= sup | f (x) |
x[a,b]

b a x i + x i+1
f

n
2

x + x i +1
f ( x ) dx ( x i+1 x i ) f i

( xi+1 x i )2

i =0

b a x i + x i +1
f

n
2

| f (x) |

sup
x[x i ,x i +1 ]

n 1

( x i+1 x i )2
4

i =0
n 1

( b a )2
4n 2

i =0

( 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

sup f ' ( x )

x[ a,b ]

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

x + x i+1
f i

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 funcia care se integreaz,


limitele de integrare, i numrul de subintervale din diviziune. Procedura ntoarce
valoarea aproximativ a integralei obinut 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));

g := x e

( x 2 )

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

4 4/5 + 2 i


5
2
e
5 i = 0

> 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

> 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 aproximaia


b

integralei g(x)dx obinut prin aplicarea formulei dreptunghiurilor utiliznd n


a

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 funcie de clas C2. Aplicm formula general de
cuadratur pentru 1, n=1, x0 = a, x1 =b (deci t0 = -1 i t1 =1). Obinem
b

1
1
ba
(t 1)
(t + 1) =
f
(x)dx

f (a)
dt + f (b)
dt

2
(

1)
(1
+
1)
a
1
1

21
21
b

a
(t

1)
(t
+
1)

=
f (a)
+ f (b)

2
4
4
1
1

=
b

Deci f (x)dx
a

ba
(f(a) +f(b)).
2

ba
(f(a) +f(b)).
2

Eroarea este
3

b a) 1
(
ba
1
sup f " ( x )
| f (x)dx (f(a) +f(b)) |
(t 1)(t + 1)dt =
2
2! x[ a,b]
8
a
1
3

b a) 1 2
b a) 1 2
(
(
1
1
sup f " ( x )
f "( x )
2 t 1dt
=
t 1dt = 2! xsup
2! x[ a,b]
8
8
[ a,b]
1
0
= sup f " ( x )
x[ a,b ]

( b a )3
8

1 t
0

dt = sup f " ( x )
x[ a,b ]

( b a )3
8

31
t1 t
0 3
0

( b a )3 .

= sup f " ( x )

12

x[ a,b ]

Deci
b

| f (x)dx a

ba
(f(a) +f(b)) |
2

218

( b a )3
12

sup f " ( x ) .

x[ a,b ]

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

xi+1] formula de aproximare


x i+1 x i
( f(xi) + f(xi+1))
2

xii+1 f ( x )dx
innd cont c

n 1

x
f ( x )dx = i +1 f ( x )dx , obinem urmtoarea formul de
i =0

cuadratur numit formula trapezelor:


b

ba
n

f (x)dx
a

f ( a ) + f ( b ) n 1

+ f ( xi ) .

2
i=1

Restul (eroarea) este dat de:


b

f ( x ) dx

n 1 x
i +1

i =0

b a f ( a ) + f ( b ) n 1
+ f ( xi ) =

n
2
i=1

n 1 x
i +1

i =0

n 1 x
i +1

i =0

f ( x ) dx

n 1 x
i +1

i =0

n 1

n 1
x x
f ( x ) dx i +1 i ( f ( x i ) + f ( x i +1 ) )
2
i =0

x x
f ( x ) dx i+1 i ( f ( x i ) + f ( x i+1 ) )
2
f ( x ) dx

( xi+1 x i )3

i =0

12

sup | f (x) |
x[a,b]

b a f ( a ) + f ( b ) n 1
+ f ( xi )

n
2
i=1

x i +1 x i
( f ( x i ) + f ( xi+1 ) )
2
| f (x) |

sup
x[x i ,x i +1 ]

n 1

i =0

( x i+1 x i )3
12

219

Mdlina Roxana Buneci

= sup | f (x) |
x[a,b]

( b a )3
12n 2

n 1

( b a )3

i =0

12n 3

sup f " ( x ) .

x[ a,b ]

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

Interpretarea geometric a formulei trapezelor


Fie Ti trapezul dreptunghic cu nlimea 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

a f ( x )dx se poate aproxima prin suma ariilor

trapezelor Ti, i = 0, 1, n-1.


Proceduri MAPLE pentru calculul valorii aproximative a unei integrale
definite folosind formula trapezelor:

Procedura trapeze1 are drept parametri funcia care se integreaz,


limitele de integrare, i numrul de subintervale din diviziune. Procedura ntoarce
220

Metode Numerice

valoarea aproximativ a integralei obinut 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));

g := x e

( x 2 )

> 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 aproximaia
b

integralei g(x)dx obinut prin aplicarea formulei trapezelor utiliznd n


a

subintervale.

VIII.4. Formula lui Simpson


Fie f : [a, b] R o funcie de clas C4. Aplicm formula general de
cuadratur pentru 1, n=2, x0 = a, x1 =

a+b
, x2 =b (deci t0 = -1 i t1 = 0, t2 =1).
2

Obinem
b

a f ( x )dx

ba
(f(a) +4 f a +2b + f(b))
6

( )

Considerm o diviziune (x0, x1, ., x2n) a intervalului [a, b] cu puncte


echidistante (xi = a +

ba
i, i = 0, 1, 2, , 2n.) i aplicm pe fiecare subinterval
2n

[xi, xi+2] cu i par formula de aproximare


x

xii+2 f ( x )dx
innd cont c

f ( x )dx =

x i+ 2 x i
( f(xi) +4f(xi+1) + f(xi+2))
6

2n 2 x

x i+2 f ( x )dx ,
i

i=0
i par

cuadratur numit formula lui Simpson:

223

obinem urmtoarea formul de

Mdlina Roxana Buneci

f ( x )dx

ba
6n

n 1
n 1

f
a
+
f
b
+
2
f
x
+
4
( ) ( ) ( 2i ) f ( x 2i1 ) .
i =1
i =1

Se poate arta c restul (eroarea) este dat de:


n 1
n 1

ba
f
x
dx

f
a
+
f
b
+
2
f
x
+
4
f
x

(
)

(
)
(
)
(
)
(
)

2i
2i

1
a

6n
i=1
i=1

( b a )5
4

4
sup f ( ) ( x ) .

2880n x[ a,b]

VIII.5. Algoritmul lui Romberg


Fie f : [a, b] R o funcie de clas C2. Considerm o diviziune (x0, x1, .,
x 2n ) a intervalului [a, b] cu puncte echidistante (xi = a +

ba
2

i, i = 0.. 2n).

Aplicnd formula trapezelor:

b a f ( a ) + f ( b ) 2 1

+ f ( xi ) .
f (x)dx 2n

2
i=1
a

b a f ( a ) + f ( b ) 2 1

Dac notm (n) =


+ f ( x i ) , atunci eroarea cu care (n)

2
2n
i=1

aproximeaz

a f ( x )dx este dat de


b

a f ( x ) dx ( n )
unde hn =

ba
2

(b a)
12

h 2n sup f " ( x )
x[ a,b ]

. Deci eroarea este de ordinul O( h 2n ). Se poate arta c

224

Metode Numerice
b

(n) = f (x)dx + a2 h 2n + a4 h 4n + a6 h 6n + a8 h 8n +....


a

unde pentru orice i ai depinde doar de f(i). Pe de alt parte


b

2
(n+1) = f (x)dx + a2 hn+1 + a4 h 4n +1 + a6 h 6n +1 + a8 h 8n +1 +....
a
b

= f (x)dx +
a

1
1
1
1
a2 h 2n +
a4 h 4n +
a6 h 6n +
a8 h 8n +....
4
16
64
256

i ca urmare
4 ( n + 1) ( n )
3

= f (x)dx a

1
5
21
a4 h 4n a6 h 6n a8 h 8n +....
4
16
64

n cazul acestei formule de aproximare eroarea de trunchiere este de ordinul O( h 4n ).


Ca i n cazul extrapolrii Richardson formula poate fi nbuntit 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 definiia: 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 situaia 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+1,1)

I(k+2,0)

I(k+2,1) I(k+2,2)

I(k+n,0)

I(k+n,1) I(k+n,2)

I(k+n,n)
b

n final se ine seama c I(k+n+j,n) este o aproximaie bun a f (x)dx cnd j


a

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

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

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 definiia.

226

Metode Numerice

VIII.6. Cuadratura Gauss


Fie f : [a, b] R o funcie continu i : [a, b]R o pondere. Presupunem
c nodurilor x0, x1, , xn[a, b] sunt date. Formula general de cuadratur pentru
b

calcului lui f (x)(x)dx d integrala polinomului de interpolare asociat nodurilor


a

x0, x1, , xn i valorilor f(x0), f(x1), ..., f(xn):


b

i =0

i =0

i =0

f (x)(x)dx (x) f ( xi ) li ( x )dx = f ( x i ) (x)li ( x ) dx = Ai f ( x i )


b

unde Ai = (x)li ( x ) dx pentru orice i. Dac nu se impune nici o condiie asupra


a

nodurilor x0, x1, , xn formula de cuadratur


b

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

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 mprirea 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
b

Ai = (x)li ( x ) dx
a

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 )

Formula general de cuadratur fiind exact pentru orice polinom de grad n avem
b

( p ( x ) q ( x ) + r ( x ) ) (x)dx

f (x)(x)dx =
b

= p ( x ) q ( x ) (x)dx + r ( x ) (x)dx
b

= r ( x ) (x)dx
a

Ai r ( x i )
i =0

Pe de alt parte avem


n

Ai f ( x i ) = Ai ( p ( x i ) q ( x i ) + r ( x i ) ) =

Ai r ( x i ) .

i =0

i =0

i =0

deoarece xi este rdcin a lui q pentru orice i. n consecin,


b

f (x)(x)dx =
a

Ai f ( x i ) .
i =0

Teorema 8. (cuadratura Gauss) Fie : [a, b]R o pondere. Fie {xi}i cele
b

n+1 noduri ale polinomului qn+1 de grad n+1 cu prorietatea c q n +1 (x)x k (x)dx =
a

0 pentru orice 0 k n. Pentru orice i fie


b

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

f (x)(x)dx

A0 f(x0) + A1 f(x1) + ... + Anf(xn)

este exact pentru orice polinom de grad 2n+1.


Restul (eroarea) este dat de
b

i=0

f (x)(x)dx Ai f ( x i )

f(

2n + 2 )

() b 2
q ( x ) ( x ) dx
( 2n + 2 )! a n +1

pentru un anumit (a, b).


Particularizm n continuare ponderea
1.

Dac (x) = 1 pe intevalul [a,b], atunci polinomele qn care satisfac


condiiile din teorema precedent sunt polinoamele Legendre Ln.
Expresia acestor polinoame este dat de
Ln(x) =

n! d n
n
n
x a ) ( x b )
(

( 2n )! dx

Restul (eroarea) formulei de cuadratur n situaia n care se folosesc


ca noduri rdcinile lui Ln este dat de

2.

Dac (x) =

1
1 x2

( n!)4 ( b a )2n +1 f ( 2n ) ( )
.
3
( 2n ) ! ( 2n + 1)

pe intervalul (-1,1), atunci polinomele qn care

satisfac condiiile din teorema precedent sunt polinoamele Cebev


de spea 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 condiiile din teorema precedent sunt polinoamele Cebev
de spea 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 condiiile 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 funcii de cls C1 i fie
D = {(x,y) R2 | axb, 1(x) y 2(x) }.
Atunci D este un domeniu simplu. Considerm o funcie continu f : D R. Ne
punem problema aproximrii integralei

f ( x, y ) dxdy

. D fiind un domeniu simplu

putem trece la integrale iterate:


b (x)

f ( x, y ) dxdy = a 12( x ) f ( x, y )dy dx = a F ( x ) dx


D

230

Metode Numerice

unde F(x) =

(x)

12( x ) f ( x, y )dy . Considerm o reea de noduri (xi, yj), i = 0, 1, , n i

j = 0, 1, , m. Aplicnd integralei

a F ( x ) dx o formul de cuadratur se obine:

f ( x, y ) dxdy
D

Ai F ( x i )
i =0

unde
F(xi) =

(x )
2( x i) f ( x i , y )dy .

1 i

Aplicnd i acestei ultime integrale o formul de cuadratur:


m

F(xi) Bijf x i , y j
j=0

rezult formula de aproximare


n mi

f ( x, y ) dxdy Ai Bijf ( x i , y j ) .
i =0 j=0

S considerm cazul n care D este un dreptunghi:


D = {(x,y) R2 | axb, c y d }.

i reeaua este format din punctele


xi = a + ih, i = 0, 1, , n, h =

ba
n

yi = c + jk, j = 0, 1, , m, k =

dc
m

Y
d
yi+1
yi
c
a

xi

231

xi+1

Mdlina Roxana Buneci

Vom obine valoarea aproximativ a integralei funciei 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

i +1 y

Iij =

j+1

yj

x k
f ( x, y ) dy dx i+1 f x, y j + f x, y j+1

x
i 2

((

)) (

) dx

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

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

Iij

i =0 j=0

) (

) (

) (

Presupunem c
xi = a + ih, i = 0, 1, , 2n, h =

ba
2n

yi = c + jk, j = 0, 1, , 2m, k =

dc
2m

Dac pentru calculul integralei Iij cu i i j pare se aplic formula Simpson repetat se
obine
x

i+2 y

j+ 2

y j

Iij =

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

((

))

) (

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

Notm
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 ))

Fij =

Atunci

f ( x, y ) dxdy =
D

n 1m 1

n 1m 1

i =0 j=0

i =0 j=0

I2i,2 j F2i,2 j

Procedura dtrapeze are drept parametri funcia care se integreaz, limitele


de integrare, i numerele n i m care determin punctele din reea. Procedura
returneaz valoarea aproximativ a integralei duble obinut 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 : Iniiere 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 operaii formale,
n comparaie cu limbajele de programare tradiionale 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 ecuaii, probleme de statistic
sau algebr liniar. Aceast bibliotec nu este ncrcat automat n memorie, ci
trebuie accesat, atunci cnd este necesar. Interfaa cu utilizatorul este scris n C.
Interfaa 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

Export as din meniu File. ncheierea

sesiunii MAPLE se face selectnd Exit din meniul File, sau prin clic pe butonul de
nchidere X.
235

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 (animaie). 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 funcionale F5 sau din bara de meniu. Zona output
este generat automat la furnizarea rspunsului. Colecia de butoane i informaia
afiat n bara de context (sub bara de instrumente) depind de coninutul curent
definit tipul de zon n care se gsete cursorul. Informaia 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
modaliti principale pentru a obine 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 instruciuni n limbaj main din mers, adic n
timpul execuiei 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
instruciunile 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.
Apariia promptului > n fereastra MAPLE semnific faptul c se poate introduce o
comand. Fiecare comand (cu excepia 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 funcii 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
funcionalitatea comenzii i pe de alt parte s fie ct mai scurt posibil. MAPLE
este un mediu case-sensitive (se face distincie 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
conine de exemplu, numere, expresii, mulimi, etc., sau poate s nu conin nici un
parametru. Indiferent de numrul de parametri specificai, 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 opiuni de control al funcionrii 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.

Comenzi care se ncarc automat la deschiderea unei sesiuni

MAPLE. Acestea pot fi apelate direct aa cum s-a precizat mai sus.
2.

Comenzi din biblioteca extins. nainte de a le folosi acestea trebuie

mai nti ncrcate n memorie cu ajutorul comenzii readlib sub forma


> readlib(nume_comanda);
3.

Comenzi care aparin unor pachete specializate. Exist dou

modaliti de utilizare a acestor comenzi:

prin specificarea pachetului sub forma:

> 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. Informaii asupra
modului corect de introducere a unei comenzi se pot obine cu ajutorul comenzii

help. Exist mai mute modaliti de utilizare a acestei comenzi. Este recomandabil,
urmtoarea form:
> ? nume_comanda
O comand de forma:
>?

afieaz informaii 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 funcii predefinite n MAPLE.


Expresii.
O expresie este o combinaie valid de operatori i variabile, constante, i
apeluri de funcii.
Operaie

Operator

Exemple

Adunare

x+y

238

Metode Numerice

Scdere

x-y

Opus

-x

nmulire

x*y

mprire

x/y

Ridicare la putere (xy)

** sau ^

x**y sau x^y

Tabelul precedent conine operatorii aritmetici de baz din MAPLE.


Precedena 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 exponenierea 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 ambiguiti trebuie utilizate ( ).
Urmtorul tabel prezint funciile de baz din MAPLE ce pot interveni n
expresiile aritmetice.
Notaie MAPLE

Semnificaie

abs(x)

|x| (modulul)

iquo(x,y)

partea ntreag a mpririi x/y

irem(x,y)

restul mpririi lui x la y

trunc(x)

cel mai mare numr ntreg x,


dac x 0, sau cel mai mic
numr ntreg x, dac x < 0

frac(x)

x-trunc(x)

round(x)

rotunjete pe x la cel mai


apropiat ntreg

floor(x)

cel mai mare numr ntreg x

ceil(x)

cel mai mic numr ntreg x

239

Mdlina Roxana Buneci

sqrt(x) sau x^(1/2)

exp(x)

ex

ln(x) sau log(x)

lnx (logaritm natural)

sin(x)

sinx

cos(x)

cosx

tan(x)

tgx
Facem cteva remarci asupra funciilor irem i iqou (deoarece nu respect

ntocmai teorema mpririi 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 relaia:
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 funcii pot fi utilizate i cu cte trei parametri. Dac al treilea parametru
este prezent n funcia irem, atunci lui i se asigneaz ctul, iar n cazul funciei iquo
i se asigneaz restul mpririi.
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
Funciile rem i quo se aplic polinoamelor i reprezint analoagele
funciilor irem i iquo. Acestea cer obligatoriu al treilea parametru ce indic
nedeterminata n raport cu care se consider polinomul. Opional admit al patrulea
parametru, cu acelai rol ca parametru 3 din funciile 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 relaia:
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
Funcia 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 conine cteva constante MAPLE:
Constant

Notaia matematic

241

Mdlina Roxana Buneci

Pi

infinity

gamma

constanta lui Euler

true

adevr, n cazul evalurii booleene

false

fals, n cazul evalurii booleene

Numrul complex i (i2 = -1) este desemnat n MAPLE prin I.


De reinut 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 comparaie i operatorilor logici.
Urmtoarele dou tabele conin aceti operatori.
Operator

Simbol

Exemple

egal

x=y

diferit

<>

x<>y

mai mare

>

x>y

mai mare egal

>=

x>=y

mai mic

<

x<y

mai mic egal

<=

x<=y

Operator

Simbol

Exemple

Negaie (non) unar

not

not x

Conjuncie (i)

and

x and y

disjuncie (sau)

or

x or y

Ordinea de efectuare a operaiilor 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 funcii din MAPLE cer la intrare o secven de
expresii, i ntorc un rezultat ce conine o secven de instruciuni. Cel mai simplu
mod de a crea o secven de instruciuni 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 secvene de instruciuni 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

raionale

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 raionale utilizeaz operatorul de mprire / pentru a separa


numrtorul de numitor. Astfel m/n cu m i n constante ntregi reprezint numrul
raional

m
.
n

Exemple de constante raionale:


> 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 fraciilor.
Reprezentarea unei constante n virgul mobil conine n general
cmpurile urmtoare:

partea ntreag

punctul zecimal

partea fracionar

e sau E i un exponent cu semn (opional);

244

Metode Numerice

Se poate omite partea ntreag sau partea fracionar, 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 obinute 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 raionale sunt evaluate exact
n MAPLE (rezultatul este o constant raional 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 conine constante n virgul mobil, atunci


constantele ntregi i cele raionale (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 rein de obicei un numr finit de cifre
zecimale ale mantisei. Numrul de cifre care se rein 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 toi
operanzii din expresie sunt ntregi sau raionali) 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 funcii 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 mulimea 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 _ (liniua 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 conine un numr
de identificatori predefinii (identificatori rezervai). O list a acestora poate fi
obinut cu comanda
> ?ininame

sau
> help(`ininame`);

A.4. Comenzi de calcul n MAPLE


Tabelul de mai jos conine comenzile din MAPLE pentru difereniere,
integrare i nsumare.
Notaie MAPLE Semnificaie

Notaie
matematic

diff(f(x),x)

derivat parial

f
x

int(f(x),x)

integral indefinit

f (x )dx

sum(f(n),n)

suma seriei

f (n )
n =1

int(f(x),x=a..b)

integral definit

sum(f(k),k=a..b) sum de la a la b

a f ( x ) dx
b

f (k )
k =a

limit(f(x), x=a)

limita funciei f n a;

lim f ( x )

x a

Diff, Int, Sum, Limit reprezint comenzile inerte corespunztoare. Comanda


limit admite un al treilea parametru opional (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);

249

=int(int(

Mdlina Roxana Buneci

( x 2 y 2 )

e
dx d y =

4
0

> sum(k^2,k=1..4);

30
> Sum(k^2,k=1..4);
4

k2
k=1

> Sum(k^2,k=1..n)=sum(k^2,k=1..n);
n

k2 =

k=1

( 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!

> limit(sin(x)/x, x=0);

1
> Limit(sin(x)/x, x=0);

lim

x0

sin( x )
x

> Limit(sin(x)/x, x=0)=limit(sin(x)/x, x=0);

lim

x0

sin( x )
=1
x

> Limit((cos(2*x)-1)/x^2, x=0)=limit((cos(2*x)-1)/x^2, x=0);

lim

x0

cos( 2 x ) 1
= -2
x2

> Limit(exp(x), x=infinity)=limit(exp(x), x=infinity);

lim e x =

> Limit(exp(x), x=-infinity)=limit(exp(x), x=-infinity);

lim

x ( )

ex = 0

250

Metode Numerice

> Limit(1/x, x=0)=limit(1/x, x=0);

lim

x0

1
= undefined
x

> Limit(1/x, x=0, left)=limit(1/x, x=0, left);

1
=
x

lim

x 0-

> Limit(1/x, x=0, right)=limit(1/x, x=0, right);

lim

x 0+

1
=
x

Prezentm n continuare cteva exemple cu comenzile expand, factor i

simplify. Principalul rol al comenzii expand este aplicarea distributivitii


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 cerui.
Notaie MAPLE

Curba/Curbele reprezentate

plot(f(x),x = a..b)

y = f(x), x[a,b]

plot([f(x),g(x),],x = a..b)

y = f(x),y = g(x), x[a,b]

plot([f(t),g(t),t = a..b])

x = f (t )
t [a , b ]

y = g (t )

Reprezentarea grafic se face conform cu opiunile (de stil, culoare, axe,


coordonate, rezoluie ) indicate n comand sau n raport cu cele implicite. Unele
din aceste opiuni 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, opiunile dorite.
Implicit se folosesc coordonatele carteziene. Dac se dorete utilizarea altor
coordonate, acestea trebuie specificate, prin introducerea n lista de opiuni sub
forma coords = nume_coordonate. O opiune de forma discont=true, determin
apelul comenzii Discont pentru determinarea punctelor de discontinuitate a funciei
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 suprafeelor n spaiu


tridimensional. Ca i n cazul comenzii plot reprezentarea grafic se face conform
cu opiunile indicate n comand sau n raport cu cele implicite. Unele din aceste
opiuni se pot stabili i din meniul contextual. Comanda plot3d poate fi folosit sub
mai multe forme. Prezentm de fiecare dat numrul minim de parametri cerui.
Notaie MAPLE

Suprafaa/Suprafe

ele reprezentate
plot3d(f(x,y),x = a..b,y=c..d)

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)

254

x = f (u , v )

y = g (u , v )
z = h (u, v )

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 animaiei n plan i spaiu.


Comanda
animate3d(f(x,y,t),x=a..b,y=b..c,t=t1..t2)
creeaz animaie cu ajutorul cadrelor obinute prin reprezentarea grafic a
suprafeelor
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 opiunii 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 funcii
Comanda
>subs(x=a, expr);
ntoarce expresia obinut prin nlocuirea lui x cu a n expresia expr
Comanda
>subs(s1,s2,..., sn, expr);
(unde s1,s2,..., sn sunt ecuaii sau mulimi de ecuaii sau liste de ecuaii)
ntoarce expresia obinut n urma substituiilor indicate de s1, s2, ..., sn n expresia
expr. Substituiile se execut secvenial ncepnd cu s1. Substituiile dintr-o
mulime sau dintr-o list se execut simultan.
Aciunea comenzii subs nu este urmat de o evaluare complet. Dac se
dorete evaluarea complet se folosete comanda
>eval(expr, x=a);
care ntoarce expresia obinut prin nlocuirea lui x cu a n expresia expr sau
comanda
>eval(expr, s1,s2,..., sn);
(unde s1,s2,..., sn sunt ecuaii sau mulimi de ecuaii sau liste de ecuaii)
care ntoarce expresia obinut n urma substituiilor 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 funciilor, dac i = 0, comanda returneaz numele funciei

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 obinut 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 obinut prin nlocuirea simultan a operanzilor expresiei expr
desemnai 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 +

cos( u v )
e

> nops(expr);

2
> op(1,expr);

uv
> op(2,expr);

cos( u v )
e

2
( u )

> subsop(2=u+v,expr);

257

2
( u )

Mdlina Roxana Buneci

uv+u+v
> expr;

uv+

cos( u v )
e

2
( u )

Definirea unei legturi fucionale n MAPLE se face sub forma


>nume_functie: (lista variabile) -> expresie;
Comanda
>nume_functie(lista argumente curente);
ntoarce valoarea funciei nume_funcie pentru argumentele precizate.
Operatorii pentru adunarea, nmulirea, compunerea funciilor sunt +, *, respectiv,
@.
Operatorul pentru compunere repetat este @@. Astfel dac f este o funcie i n un
numr natural, atunci

dac n > 0, f @@ n reprezint compunerea de n ori a funciei f cu ea


nsi.

dac n = 0, f @@ 0 reprezint funcia identic

dac n < 0 i f este inversabil, atunci f @@ n reprezint


compunerea de -n ori a inversei funciei f cu ea nsi (inversa
funcie este dat de invfunc[f]).

Comanda
>unapply(expr, x);
ntoarce funcia x -> expr, iar comanda
>unapply(expr, x, y, ...);
ntoarce funcia (x,y, ...) -> expr
Exemple:
> f:=x->x^3+cos(x)*x^(1/3)+exp(-x^2);

f := x x3 + cos( x ) x

( 1 /3 )

+e

> nops(f);

1
> g:=(x,y)->x^2*exp(-x^2-y^2)+cos(x)*sin(y);

258

2
( x )

Metode Numerice

g := ( x, y ) x2 e

2
2
( x y )

+ cos( x ) sin( y )

> nops(g);

1
> h:=(u,v,w)->sin(u)*cos(w)*v+u;

h := ( u, v, w ) sin( u ) cos( w ) v + u
> f(1);

1 + cos( 1 ) + e

( -1 )

> f(1.);

1.908181747
> evalf(f(1));

1.908181747
> evalf(f(1),50);

1.9081817470395820389964603776044374711781215516497
> f(alpha);

3 + cos( )

( 1 /3 )

+e

2
( )

> g(Pi/2,3);

1 2
e
4

> evalf(g(Pi/2,3));

0.00002582324018
> g(2,3);

4e

( -13 )

+ cos( 2 ) sin( 3 )

> g(2,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

2
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
2

expresie := u v +
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
2

f2 := ( u, v ) u v +
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
poziia n care apar n list. Dac L este o list L[i] desemneaz elementul de pe
poziia i. Lista vid este desemnat prin []. Se pot efectua urmtoarele operaii cu
liste:

extragerea din lista L a elementelor de poziia i pn la poziia j: L(i..j)


sau op(i..j,L).;

adugarea unui element x la lista L: [x,op(L)] (adaug elementul pe


prima poziie), [op(L),x] (adaug elementul pe ultima poziie);

modificarea elementului de pe poziia i: subsop(i=x,L) sau L[i]:=x;

eliminarea elementului de pe poziia i: subsop(i=NULL,L);

Exemple:
> 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. Mulimi
Mulimile (sets) n MAPLE sunt iruri neordonate de expresii, separate
ntre ele prin virgul i incluse ntre acolade {}. Duplicatele sunt eliminate.

Mulimea vid este desemnat prin {}. Se pot efectua urmtoarele operaii cu
mulimi:

reuniune: operatorul union

262

Metode Numerice

intersecie: operatorul intersect

diferen: operatorul minus

Exemple:
> 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
indexai.

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 funcia array sub forma:

>array( domeniile de indexare, list de iniializare);

Parametrii sunt opionali 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

A2, 2

> A := array(1..2,1..2, [ [1,x], [x,x^2] ] );

1
A :=
x

x 2

Vectorii i matricele pot fi creai 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 iniializare);


este echivalent cu array(1..n, list de iniializare). Matricele (matrix) n MAPLE
sunt tablouri bidimensionale indexate de la 1. Cu alte cuvinte un apel

>matrix(m,n, list de iniializare);


este echivalent cu array(1..m,1..n, list de iniializare).
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]]);

M := 3

> M[1,2];

2
Pachetul linalg conine comenzi pentru operaii cu vectori i matrice.

265

Mdlina Roxana Buneci

Comanda

> map(fcn, expr, arg2, arg3, ..., argn);


aplic o funcie 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 funcie).
Exemple:
> f:=x->x^3+cos(x)*x^(1/3)+exp(-x^2);

f := x x 3 + cos( x ) x

( 1 /3 )

+e

2
( x )

> g:=(x,y)->x^2*exp(-x^2-y^2)+cos(x)*sin(y);

g := ( x, y ) x2 e

2
2
( x y )

+ cos( x ) sin( y )

> h:=(u,v,w)->sin(u)*cos(w)*v+u;

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 + cos( 1 ) + e

( -1 )

, 1 + cos( 1 ) ( -1 )

( 1/ 3 )

+e

( -1 )

, 1]

> map(g,x,Pi/3);
2

1 2

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 := { ,

, , }
2
2

> map(h,M,3,Pi/3);

{ ,

3 3
, + , }
2 2 2 2

> map2(g,Pi/3, x);


2

2
2

1 2 1 9 1
9
1 2
1
1 2 9
e
+ sin( 1 ), e
sin( 1 ), e

2
9
2
9
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 := { ,

, , }
2
2

> map(h,3,M,Pi/3);

sin( 3 ) { , , , } + 3
2
2
2
> expr:=u*v+cos(u*v)/exp(-u^2);

expr := u v +

cos( u v )
e

2
( u )

> applyop(f,1,expr);

u 3 v3 + cos( u v ) ( u v )

( 1/3 )

+e

2 2
( u v )

cos( u v )
e

2
( u )

> applyop(g,1,expr,Pi/3);

u 2 v2 e

2 2 2
u v

1
cos( u v )
cos( u v ) 3 +
2
2
( u )
e

> applyop(g,2,expr,0);

267

Mdlina Roxana Buneci

uv+

cos( u v ) 2 e
(e

2
2
( u )
e

cos ( u v )

2
( u )

> applyop(h,1,expr,0, Pi/2);

uv+

cos( u v )
e

2
( u )

> L:=[1,-1,1,2,3,-1,1,1];

L := [ 1, -1, 1, 2, 3, -1, 1, 1 ]
> op(1,L);

1
> applyop(f,1,L);

[ 1 + cos( 1 ) + e

( -1 )

, -1, 1, 2, 3, -1, 1, 1 ]

> op(3,L);

1
> applyop(f,3,L);

[ 1, -1, 1 + cos( 1 ) + e

( -1 )

, 2, 3, -1, 1, 1 ]

> applyop(g,3,L, Pi/2);


2

1, -1, e
+ cos( 1 ), 2, 3, -1, 1, 1

> applyop(g,3,L, Pi);

[ 1, -1, e

2
( 1 )

, 2, 3, -1, 1, 1 ]

> applyop(h,3,L, 2,Pi/3);

[ 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 instruciune. 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 instruciuni const n evaluarea expresiei v pentru valorile curente
ale variabilelor pe care le conine i nscrierea rezultatului n locaia de memorie
rezervat variabilei x

Decizia are forma:


if condiie then instruciuni1 else instruciuni2 fi;
if condiie then instruciuni1 else instruciuni2 end if;

Da

condiie

Instruciuni1

Nu
Instruciuni2

Condiia este o expresie logic (format cu operatori logici sau relaionali). Modul
de execuie al deciziei (precum rezult din subschema logic de mai sus) este
urmtorul:

1.

se evalueaz condiia

2.

dac rezultatul este adevrat se execut instruciuni1, n caz contrar se


execut instruciuni2.

3.

se trece la comanda care urmeaz dup decizie

n cazul n care else lipsete se folosete forma simplificat:

269

Mdlina Roxana Buneci

if condiie then instruciuni fi;


Da

condiie

Nu

instruciuni

1. se evalueaz condiia
2. dac rezultatul este adevrat se execut instruciuni
3. se trece la comanda care urmeaz dup decizie
Un extra element elif (innd loc de else+if) poate fi adugat n decizie, obinnd:

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 instruciuni repetitive n MAPLE: for i while. For are mai
multe forme:

(1)

for i from ei by p to ef do instruciuni od;


for i from ei by p to ef do instruciuni 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

iniial (respectiv final) a contorului. Modul de execuie al acestei instruciuni este


urmtorul:

1.

se execut atribuirea i : = ei

2.

se evalueaz condiia i ef dac p > 0 (sau i ef dac p < 0), i dac


este ndeplinit aceast condiie se trece la pasul 3, altfel se trece la
pasul 5

3.

se execut instruciuni

4.

se execut atribuirea i := i + p

5.

se execut comanda care urmeaz dup for

Pentru p >0 comanda este echivalent cu urmtoarea subschem logic:

i := ei

i ef

Da

instruciuni

i: = i + p

Nu

Pentru p < 0 comanda este echivalent cu urmtoarea subschem logic:

i := ei

i ef

Da

instruciuni

i: = i + p

Nu

Construciile 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

for i from ei by p while condiie do instruciuni od;

(2)

for i from ei by p while condiie do instruciuni end do;


Modul de execuie al acestei instruciuni este urmtorul:
1.

se execut atribuirea i : = ei

2.

se evalueaz condiia trecut dup while, i dac este ndeplinit, se


trece la pasul 3, altfel se trece la pasul 5

3.

se execut instruciuni

4.

se execut atribuirea i := i + p

5.

se execut comanda care urmeaz dup for

Comanda este echivalent cu urmtoarea subschem logic:


i := ei

condiie

Da

instruciuni

i: = i + p

Nu

Ca i nainte construciile from ei i by p poate lipsi, caz n care ei se ia 1, iar pasul


se consider egal cu 1. Condiia este dat printr-o expresie boolean.
Ambele clauze to i while pot fi prezente n instruciunea for:

for i from ei by p to ef while condiie do instruciuni od;

(3)

for i from ei by p to ef while condiie do instruciuni end do;


n acest caz
1. se execut atribuirea i : = ei
2. se evalueaz condiia i ef dac p > 0 (sau i ef dac p < 0), i condiia
trecut dup while; dac amndou sunt ndeplinite se trece la pasul 3,
altfel se trece la pasul 5
3. se execut instruciuni
4. se execut atribuirea i := i + p
5. se execut comanda care urmeaz dup for

272

Metode Numerice

n cazul urmtoarei instruciuni for contorul i parcurge toate elementele unei liste
sau unei mulimi (expr):

(4)

for i in expr while condiie do instruciuni od;


for i in expr while condiie do instruciuni 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 iniial are forma:

while condiie do instruciuni od;


while condiie do instruciuni end do;
Testul pentru repetarea calculelor se face naintea execuiei grupului de comenzi
care trebuie repetate. Dac este ndeplinit condiia, se execut instruciunile dup
care se reevalueaz condiia. n caz contrar, se trece la comanda care urmeaz dup
ciclul cu test iniial. Subschema logic echivalent este urmtoarea:

273

Mdlina Roxana Buneci

condiie

Da

instruciuni

Nu

Condiie 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 instruciuni pentru date diferite. Grupul
de instruciuni 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 execuia acestui grup de
instruciuni se specific numele i parametrii care actualizeaz grupul de
instruciuni (astfel se scurteaz dimensiunea i crete claritate programului). Grupul
de instruciuni se numete procedur (procedure) n MAPLE.
Forma unei proceduri este:
nume:=proc (param1, param2,)

local lista declaraii locale;


global lista declaraii globale;

274

Metode Numerice

options list opiuni;


description descriere;
instruciuni

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 instruciuni 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 coninut nu este precizat dect n momentul
execuiei). n cadrul listei, parametrii formali sunt separai prin virgul. Numele
procedurii (nume) este un identificator MAPLE. Apelul unei proceduri se face cu
comanda:
nume (list parametrii actuali)
parametrii actuali fiind expresii desprite ntre ele prin virgul n cadrul listei. n
momentul execuiei parametrii actuali substituie parametrii formali. Un apel de
procedur determin urmtoarele aciuni:

se stabilete corespondena ntre argumente i parametrii

se execut instruciunile subprogramului, pn cnd se ajunge la end sau la


o instruciune RETURN. Efectul acestor instruciuni (end i RETURN)
este ntoarcerea n unitatea de program n care a avut loc apelul, i anume la
instruciunea 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 fracionar a numrului se rein 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, Lecii 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., Noiuni 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 Universitii 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

calculul inversei unei matrice prin

adjunctul unui operator liniar i

metoda de eliminare Gauss, 71

mrginit, 56

catastrophic cancellation, 47

algebr Banach, 54

cifr n baza b, 17

algoritm polinomial, 16

cifre semnificative, 36

algoritm stabil, 14

cod complementar, 32

algoritmul Romberg, 224

cod direct, 31

aplicaie liniar, 54

cod invers, 31

aproximare a derivatei prin diferene

, 212
coeficieni Newton-Cotes

finite progresive, 192

complementul ortogonal, 56

aproximare a derivatei prin diferene

conjugata unei matrice, 57

finite regresive, 194

contracie, 116

aproximare a derivatelor prin

conversie, 19

diferene finite centrale, 190

cuadratur Gauss, 227

aritmetica n virgul mobil, 45

derivare numeric folosind diferene

baz ortonormal, 55

finite, 189

baz, 17

derivare numeric folosind

bit ascuns, 39

interpolarea, 206

bit de semn, 34

desfacere a standard a unei matrice,

bitul cel mai puin semnificativ, 30

82

bitul cel mai semnificativ, 30

desfacere a unei matrice, 81

diferen finit divizat, 171

calculul determinantului unei matrice

diferen finit la dreapta, 161

prin metoda de eliminare Gauss, 70

diferen finit la stnga, 167

281

Mdlina Roxana Buneci

dimensiunea unui spaiu Hilbert, 56

forma normalizat exponentul, 35

dualul unui spaiu normat, 55

forma normalizat mantisa, 35

element de cea mai bun aproximare,

forma normalizat, 35

175

formula dreptunghiurilor, 212

formula general de cuadratur, 210

elemente ortogonale, 55

formula lui Simpson, 223

eroare a datelor, 11

formula trapezelor, 218

eroare backward, 12

, 212
formula Newton-Cotes

eroare de calcul, 10

funcie pondere, 179

eroare de interpolare n cazul

nodurilor Cebev, 143

IEEE-754- dubl precizie (double-

eroare de interpolare n cazul

precission), 41

nodurilor echidistante, 142

IEEE-754-simpl precizie (single-

eroare de interpolare, 140

precission), 40

eroare de metod, 9

Inf, 39

eroare de rotunjire, 9 , 11

integrarea numeric, 209

eroare de trunchiere, 9, 11

eroare forward, 12

matrice diagonal dominant, 84

eroare inerent, 9

matrice diagonal, 58

eroarea absolut, 10

matrice hermitian, 58

eroarea relativ , 10

matrice inferior Hessenberg, 58

extrapolare Richardson, 205

matrice inferior triunghiular, 58

matrice inversabil, 58

factor de condiionare n cazul

matrice nesingular, 58

rezolvrii unei ecuaii neliniare, 91

matrice ortogonal, 58

factor de condiionare n cazul

matrice simetric, 58

rezolvrii unui sistem neliniar, 105

matrice superior Hessenberg, 58

factorul de condiionare al unei

matrice superior triunghiular, 58

matrice, 74

matrice tridiagonal, 58

factorul de condiionare, 13

matrice unitar, 58

fl(x), 37

matricea unitate, 57

282

Metode Numerice

metoda biseciei (metoda njumtirii

numere denormalizate (denormalized

intervalului), 93

floating-point numbers), 39

metoda celor mai mici ptrate, 178

metoda coardei, 96

OFL (overflow level), 37

metoda de eliminare Gauss, 62

operator liniar i mrginit, 55

metoda Gauss-Seidel, 87

ordine lexicografic, 17

metoda Jacobi, 83

overflow, 37

metoda lui Newton, 127, 104

metoda Newton simplificat, 134

pivotare complet, 63

metoda Newton-Kantorovici, 138

pivotare parial, 63

metoda punctului fix, 116

polinoame Cebev de spea a II-a,

metoda tangentei, 104

230

metode directe de rezolvare a

polinoame Cebev de spea I, 230

sistemelor liniare, 61

polinoame Jacobi, 230

metode iterative de rezolvare a

polinoame Legendre,229

sistemelor liniare, 80

polinom de interpolare, 139

minori principali, 60

polinom generalizat, 179

polinom Lagrange de interpolare, 144

NaN, 39

polinom Newton cu diferene

negativ definit, 60

divizate, 171

negativ semidefinit, 60

polinom Newton de interpolare de

noduri Cebev, 143

spea a II-a (descendent), 166

norma 1 ||||1, 57

polinom Newton de interpolare de

norma ||||, 57

spea I (ascendent), 161

norma euclidian ||||2, 57

pondere(integrare numeric), 209

norm complet, 54

pozitiv definit, 60

norm operatorial asociat unei

pozitiv semidefinit, 60

matrice, 59

precizie a mainii, 38

norm, 53

precizie, 36

norme echivalente, 54

problem bine condiionat, 13


problem ru condiionat, 13

283

Mdlina Roxana Buneci

produs scalar, 55

rotunjire prin tiere, 37

produsul scalar canonic, 57

punct fix, 116

sistem de numeraie, 17

sistem ortogonal, 55

rat de convergen, 92, 116

sistem ortonormal, 55

rat liniar de convergen, 92, 116

sistemul normal al lui Gauss, 180

rat ptratic de convergen, 92, 116

soluie a unei ecuaii, 91

rat superliniar de convergen, 92,

soluie a unui sistem neliniar, 105

116

spaiu Banach, 54

raza spectral, 59

spaiu Hilbert, 55

rdcin a unei ecuaii, 91

spaiu normat, 53

reprezentare complement fa de 1,31

spaiu pre-Hilbert, 55

reprezentare complement fa de 2, 32

spaiul operatorilor liniari i mrginii,

reprezentare n virgul mobil

55

normalizat, 37

spectru, 59

reprezentare n virgul mobil, 36

standardul IEEE-754, 39

reprezentare periodic n baza b, 25

reprezentare semn i valoare absolut,

transpusa unei matrice, 57

31

trunchiere, 37

reprezentarea intern a numerelor

ntregi fr semn, 29

UFL (underflow level), 37

reprezentarea unui numr ntreg n

underflow, 37

baza b, 19

reprezentarea unui numr real n baza

valoare proprie, 59

b, 21

vector propriu, 59

restul formulei generale de

cuadratur, 211

zerou al funciei, 91

rezolvarea unui sistem liniar prin


metoda de eliminare Gauss , 67
rotunjire la cel mai apropiat numr n
virgul mobil (rotunjire la par), 38

284

S-ar putea să vă placă și