Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

284
Mădălina Roxana Buneci Metode Numerice - aspecte teoretice şi practice Editura Academica Brâncuşi Târgu-Jiu, 2009

Transcript of Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Page 1: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

Metode Numerice - aspecte teoretice şi practice

Editura Academica Brâncuşi

Târgu-Jiu, 2009

Page 2: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

2

ISBN 978-973-144-289-1

Page 3: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

3

CUPRINS

Prefaţă........................................................................................................................7

I. Noţiuni introductive...............................................................................................9

I.1. Elemente de teoria erorilor ......................................................................9

I.2. Condiţionarea numerică. Factor de condiţionare....................................11

I.3. Stabilitatea algoritmilor..........................................................................14

I.4. Complexitatea algoritmilor.....................................................................15

II. Aproximarea numerelor reale...............................................................................17

II.1. Reprezentarea numerelor întregi într-o bază.........................................21

II. 2. Reprezentarea numerelor reale într-o bază...........................................29

III. Reprezentarea informaţiei în sistemele de calcul................................................29

III.1. Reprezentarea internă a numerelor întregi...........................................29

III. 1.1. Reprezentarea internă a numerelor întregi fără 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

Page 4: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

4

IV.2.3. Calculul determinantului unei matrice..................................70

IV.2.4. Calculul inversei unei matrice..............................................71

IV.3. Factorul de condiţionare al unei matrice..............................................74

IV.4. Metode iterative de rezolvare a sistemelor liniare...............................80

IV.4.1. Generalităţi............................................................................80

IV.4.2. Metoda Jacobi.......................................................................83

IV.4.3. Metoda Gauss-Seidel............................................................87

V. Rezolvarea ecuaţiilor şi sistemelor neliniare........................................................91

V. 1. Rezolvarea ecuaţiilor neliniare.............................................................91

V.1.1. Metoda bisecţiei (metoda înjumătăţirii intervalului)..............93

V.1.2. Metoda coardei.......................................................................96

V.1.3. Metoda tangentei.................................................................104

V. 2. Rezolvarea sistemelor neliniare.........................................................114

V.2.1. Metoda punctului fix............................................................116

V.2.2. Metoda Newton – cazul m-dimensional..............................127

VI. Aproximarea funcţiilor.....................................................................................139

VI. 1. Polinoame de interpolare..................................................................139

VI.1.1. Definiţie. Eroarea de interpolare.........................................142

VI.1.2. Eroarea de interpolare în cazul nodurilor echidistante.......142

VI.1.3. Eroarea de interpolare în cazul nodurilor Cebîşev.............143

VI.1.4. Polinomul Lagrange de interpolare....................................144

VI.1.5. Polinomul Newton de interpolare de speţa I (ascendent)...161

VI.1.6. Polinomul Newton de interpolare de speţa a II-a

(descendent).........................................................................166

VI.1.7. Polinomul Newton de interpolare cu diferenţe divizate.....171

VI. 2. Metoda celor mai mici pătrate..........................................................175

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

subspaţii Hilbert..................................................................175

VI.2.2. Aproximarea în medie prin metoda celor mai mici

pătrate................................................................................178

VI.2.3. Limitări ale metodei celor mai mici pătrate........................186

Page 5: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

5

VII. Derivarea numerică.........................................................................................189

VII.1. Formule de derivare aproximativă folosind dezvoltări în serie

Taylor................................................................................189

VII.2. Extrapolare Richardson...................................................................205

VII.3. Metode de derivare numerică folosind interpolarea.........................206

VIII. Integrarea numerică........................................................................................209

VIII.1. Formula generală de cuadratură numerică. Formula de cuadratură

Newton-Cotes..................................................................................209

VIII.2. Formula dreptunghiurilor................................................................212

VIII.3. Formula trapezelor..........................................................................218

VIII.4. Formula lui Simson.........................................................................223

VIII.5. Algoritmul lui Romberg..................................................................224

VIII.6. Cuadratura Gauss............................................................................227

VIII.7. Formule pentru calculul aproximativ al unei integrale duble.........230

Anexa: Iniţiere în Maple.........................................................................................235

A.1. Structura internă. Categorii de comenzi MAPLE...............................235

A.2. Operatori, constante şi funcţii predefinite în MAPLE. Expresii........238

A.3. Numere, şiruri şi identificatori............................................................243

A.4. Comenzi de calcul în MAPLE............................................................248

A.5. Reprezentări grafice în MAPLE..........................................................251

A.6. Structuri de date în MAPLE................................................................256

A.6.1 Expresii şi funcţii..................................................................256

A.6.2. Liste......................................................................................261

A.6.3. Mulţimi.................................................................................262

A.6.4. Tablouri................................................................................264

A.7. Elemente de programare în MAPLE...................................................269

A.7.1 Atribuirea. Decizia. Structuri repetitive................................269

A.7. 2. Proceduri în MAPLE...........................................................274

Bibliografie.............................................................................................................279

Index........................................................................................................................281

Page 6: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

6

Page 7: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

7

PREFAŢĂ

Analiza numerică are o istorie lungă şi bogată: Arhimede, Newton sau

Gauss, spre exemplu, având contribuţii semnificative în acest domeniu. Însă

metodele numerice moderne, aşa cum le folosim astăzi, sunt caracterizate de

sinergia dintre calculatoarele electronice programabile, analiza matematică, precum

şi oportunitatea şi necesitatea de a rezolva probleme complexe din diverse domenii

cum ar fi ingineria, medicina, economia sau ştiinţele sociale. Deşi a existat

întotdeauna o strânsă interacţiune între matematică, pe de o parte şi ştiinţe şi

tehnologie, pe de altă parte, această interacţiune s-a intensificat în ultimele decenii.

Creşterea utilizării metodelor numerice a fost cauzată nu numai de creşterea

performanţei calculatoarelor, ci şi de îmbunătăţirea algoritmilor. Cu toate că există

produse software performante pentru rezolvarea multor probleme matematice

întâlnite în practică, cunoaşterea şi înţelegerea metodelor numerice rămân esenţiale

pentru utilizarea inteligentă a produselor software respective.

Această carte reprezintă o introducere în studiul metodelor numerice. În cele

opt capitole ale acestei lucrări sunt prezentate noţiuni şi rezultate fundamentale ce

ţin de aproximarea numerelor reale, reprezentarea informaţiei în sistemele de calcul

şi aritmetica în virgula mobilă, rezolvarea sistemelor liniare (prin metode directe şi

iterative), rezolvarea ecuaţiilor şi sistemelor neliniare, aproximarea funcţiilor (prin

polinoame de interpolare şi metoda celor mai mici pătrate), derivarea şi integrarea

numerică. Sunt descrise cele mai utilizate metode numerice, aduse la o formă

algoritmică. În fiecare caz în parte sunt prezentate proceduri în MAPLE şi se fac

comparaţii între datele de ieşire ale procedurilor respective şi rezultatele afişate de

comenzile MAPLE destinate rezolvării aceloraşi probleme. În multe situaţii, pentru

a evidenţia erorile de rotunjire, se compară rezultatele obţinute utilizând aritmetica

virgulei mobile cu rezultatele obţinute folosind calculul simbolic.

Page 8: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

8

Cartea de faţă corespunde programei analitice a cursului de Metode

Numerice (de la Ingineria Sistemelor, Ingineria Energetică şi Inginerie Industrială –

licenţă). În afară de destinaţia ei directă de manual pentru studenţii facultăţilor

tehnice, cartea poate servi, pentru cei interesaţi, ca punct de plecare în studiul mai

aprofundat al metodelor numerice.

Numerical Methods - theoretical and practical aspects

Author: Mădălina 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.

Page 9: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

9

I. Noţiuni introductive

Metodele numerice reprezintă tehnici prin care problemele matematice sunt

reformulate astfel încât să fie rezolvate numai prin operaţii aritmetice. Prin trecerea

de la infinit la finit, diferenţial la algebric, neliniar la liniar problemele complicate

sunt înlocuite de probleme mai simple care au aceeaşi sau “aproape” aceeaşi soluţie.

Astfel soluţiile obţinute prin aplicarea metodelor numerice reprezintă doar

aproximaţii ale soluţiilor problemelor originale, şi deci implică erori.

I.1. Elemente de teoria erorilor

Sursele erorilor şi clasificarea lor

Se pot distinge trei tipuri de erori în cazul aplicării de metode numerice

pentru rezolvarea unei probleme:

• Erori provenite din simplificarea modelului fizic, pentru a fi descris într-

un model matematic; erori din măsurătorile iniţiale sau erori din calcule

anterioare. Aceste tipuri de erori se numesc erori inerente.

• Erori datorate metodei utilizate-de exemplu, trunchierea unei serii

infinite (mai precis aproximarea sumei unei serii printr-o sumă parţială),

sau considerarea unui termen cu un rang “suficient” de mare pentru a

aproxima limita unui şir. Aceste erori sunt numite erori de metodă sau

erori de trunchiere.

• Erori datorate reprezentării datelor şi efectuării calculelor într-o

aritmetică cu precizie limitată (de exemplu aritmetica virgulei mobile).

Aceste erori se numesc erori de rotunjire.

Page 10: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

10

Erorile inerente sunt anterioare aplicării 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ă = exactăvaloare

absolutăeroare

Din aceste definiţii se obţine:

Valoare aproximativă = (valoare exactă )(1 + eroare relativă)

Eroarea absolută nu ţine seama de ordinul de mărime al valorilor comparate.

De exemplu, o eroare în centimetri este mai importantă dacă lungimea calculată este

de 100 cm, decât dacă este de 100 km. De aceea, eroarea relativă se raportează la

valoarea reală. Adesea eroarea relativă se exprimă în procente:

exactăvaloare

absolutăeroare . 100 %

De obicei valoarea exactă nu este cunoscută. De aceea nici eroarea (absolută

sau relativă) nu poate fi calculată, şi doar se estimează valorile limită ale acesteia.

Se utilizează majoranţi pentru modulul erorii (sau norma erorii, dacă se lucrează

într-un spaţiu normat).

Erori ale datelor şi erori de calcul

Considerăm următoarea problemă tipică: calculul valorii unei funcţii f:R→R

pentru un argument dat. Fie:

x = valoarea de intrare exactă

x* = valoare de intrare aproximativă

f(x) = rezultatul dorit

f* = funcţia aproximativă de calcul

Eroarea totală este dată de:

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

Deci

Page 11: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

11

Eroare totală = eroare de calcul + eroare propagată a datelor,

unde,

Eroare de calcul = f*(x*) - f(x*)

Eroare a datelor = x* - x.

Algoritmul nu are nici un efect asupra erorii propagate a datelor.

Erori de trunchiere şi erori de rotunjire

Eroare de trunchiere = diferenţa dintre rezultatul exact (pentru datele de

intrare curente) şi rezultatul furnizat de un algoritm dat utilizând aritmetica exactă.

Eroare de rotunjire = diferenţa dintre rezultatul produs de un algoritm dat

utilizând aritmetica exactă şi rezultatul produs de acelaşi algoritm utilizând 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ă aproximăm

derivata într-un punct prin

( )xf ′ ≈( ) ( )

h

xfhxf −+

eroarea de trunchiere este dominată de M2

h, unde M = ( )tfsup ′′ pentru t într-o

vecinătate a lui x (acesta rezultă aplicând 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 mărginită de h

2ε. Deci eroarea

totală este mărginită de E(h) = M2

h +

h

2ε. Studiem variaţia acestei funcţii.

Avem ( )hE′ = 2

M-2ε

2h

1 şi deci ( )hE′ = 0 <=> h = 2

M

ε. În plus,

ε′′

M2E >0,

deci funcţia are punct de minim în h = 2M

ε. Ca urmare, eroarea totală este

minimă pentru h ≈ 2M

ε. Pentru valori mai mici ale lui h eroarea totală creşte din

Page 12: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

12

cauza creşterii erorii de rotunjire, iar pentru valori mai mari ale lui h eroarea totală

creşte din cauza creşterii erorii de trunchiere.

Erori forward şi erori backward

Să presupunem că dorim să calculăm y = f(x), unde f : R → R, dar obţinem

o valoare aproximativă y*.

Eroare forward absolută = ∆y = y* - y

Eroare forward relativă = y

y

∆ =

y * y

y

−.

Deseori eroarea ∆y este dificil de estimat. Ideea analizei erorilor din punct

de vedere a erorilor backward este următoarea: soluţia aproximativă y* este

considerată soluţia exactă a unei probleme cu datele iniţiale modificate, mai precis

se consideră y* = f(x*), unde x* este o perturbaţie a lui x.

Eroare backward absolută = ∆x = x* - x, unde f(x) = y şi f(x*) = y*.

Eroare backward relativă = x

x

∆ =

x * x

x

−.

Soluţia aproximativă y* se consideră "bună" dacă este soluţie exactă pentru

o problemă cu datele "uşor" perturbate.

De exemplu, dacă aproximăm 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, observăm că 84.4 =2.2. Eroarea backward

absolută este

| ∆x | =| x* - x | = | 4.84 - 5 | ≈ 0.16,

iar eroarea backward relativă este aproximativ 3 %.

Page 13: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

13

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

Problema se numeşte bine condiţionată dacă variaţiile relative ale soluţiei

au acelaşi ordin de mărime cu variaţiile relative ale datelor de intrare ce le

cauzează.

Problema este rău condiţionată dacă modificările relative care au loc în

soluţie pot fi mult mai mari decât cele ale datelor de intrare.

Factorul de condiţionare (relativ) se defineşte prin:

cond = intrarededatelorarelativăvariatia

solutieiarelativăvariatia

Să revenim la calculul y = f(x), unde f : R → R. Să presupunem că se obţine

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

cond =

( ) ( )( )

x

x*x

xf

xf*xf

=

x

x

y

y

.

Problema este rău condiţionată, dacă factorul de condiţionare

cond >> 1.

Factorul de condiţionare acţionează ca un "factor de amplificare" legând

eroarea forward de eroarea backward:

| eroarea relativă forward| = cond × | eroarea relativă backward|

De obicei factorul de condiţionare nu este cunoscut exact şi poate varia în

funcţie de datele de intrare. De aceea se utilizează o estimaţie margine superioară

pentru cond. Deci

| eroarea relativă forward | ≈< cond × | eroarea relativă backward |.

Considerăm un exemplu de estimare pentru factorul de condiţionare. Să

presupunem că se evaluează funcţia diferenţiabilă f pentru data de intrare x şi se

obţine valoarea aproximativă y* corespunzând valorii

x* = x + ∆x,

(mai precis y* = f(x*)). Eroarea absolută forward este

f(x + ∆x) - f(x) ≈ ( )xf ′ ∆x

Page 14: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

14

iar eroarea relativă forward este

( ) ( )( )xf

xfxxf −∆+ ≈ ( )( )xf

xxf ∆′

Factorul de condiţionare este

cond ≈

( )( )

x

xxf

xxf

∆′

= ( )( )xf

xfx ′.

Factorul de condiţionare absolut se defineşte ca raportul dintre variaţia

soluţiei şi variaţia datelor de intrare. Factorul de condiţionare absolut acţionează ca

un "factor de amplificare" legând eroarea absolută forward de eroarea absolută

backward.

I.3. Stabilitatea algoritmilor

Noţiunea referitoare la algoritmi analoagă condiţionării numerice a

problemelor este stabilitatea. Intuitiv vorbind, stabilitatea numerică a unui

algoritm înseamnă ca acesta este cât mai puţin sensibil la perturbaţiile din timpul

calculului (erorile de rotunjire sau la alte incertitudini numerice care pot apărea în

procesul de calcul). Se spune că un algoritm de rezolvare a unei probleme este

stabil dacă rezultatul produs este soluţia exactă a aceleaşi probleme cu datele "uşor"

perturbate.

În cazul algoritmilor stabili efectul erorii de calcul nu este mai puternic

decât efectul erorii (mici) a datelor de intrare.

Un algoritm instabil poate amplifica mult perturbaţiile date de erorile de

calcul.

Acurateţea metodelor

Acurateţea se referă la apropierea soluţiei calculate de soluţia exactă a

problemei. Stabilitatea algoritmului nu garantează acurateţea. Aceasta depinde în

egală măsură de buna condiţionare a problemei şi de stabilitatea algoritmului.

Page 15: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

15

Inacurateţea poate rezulta din aplicarea unui algoritm stabil unei probleme rău

condiţionate, ca şi din aplicarea unui algoritm instabil unei probleme bine

condiţionate.

Aplicarea (cu ajutorul calculatorului) unui algoritm stabil unei probleme

bine condiţionată garantează obţinerea soluţiei cu o precizie bună, în sensul că

eroarea relativă a soluţiei calculate faţă de soluţia exactă este de ordinul de mărime

al erorilor de reprezentare a datelor în calculator.

I.4. Complexitatea algoritmilor

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

• timpul necesar execuţiei algoritmului (dat de numărul de operaţii elementare)

• spaţiul de memorie necesitat de algoritm

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

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

vreme impun drept criteriu primordial criteriul timp.

Fie n numărul de date de intrare pentru un anumit algoritm (eventual

considerăm n egal cu numărul de locaţii de memorie necesare pentru memorarea

datelor iniţiale). Fie TS(n) timpul cerut de algoritm pentru un anumit set de n date de

intrare S. Vom nota τ(n) timpul cerut de algoritm în cazul cel mai defavorabil, i.e.:

τ(n) = sup TS(n) : S este un set de date de intrare de dimensiune n

În general nu este posibil să determinăm o formulă pentru τ(n). În acelaşi timp ne

interesează comportarea lui τ(n) pentru valori mari ale lui n. În acest sens

introducem următoarele notaţii:

• τ(n) = O(f(n)) dacă ∃ C > 0, n0 ∈ N cu τ(n) ≤ C f(n) ∀ n ≥ n0

Interpretare: ττττ are o creştere mai lentă decât f

• τ(n) = o(f(n)) dacă ( )( )

0nf

nτlimn

=∞→

Interpretare: ττττ are o creştere strict mai lentă decât f

• τ(n) = θ (f(n)) dacă ∃ C1, C2 > 0, n0∈N cu C1f(n) ≤ τ(n) ≤ C2f(n) ∀n ≥ n0

Page 16: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

16

Interpretare: ττττ are o creştere la fel de lentă ca f

• τ(n) ~ f(n) dacă ( )( )n

nlim 1

f n→∞

τ=

Interpretare: ττττ are o creştere la fel de lentă ca f

• τ(n) = Ω(f(n)) dacă f(n) = O(τ(n)

Interpretare: f are o creştere mai lentă decât ττττ

O şi o se folosesc pentru a stabili marginile superioare ale timpului de

execuţie, iar Ω pentru limita inferioară a timpului de execuţie.

Un algoritm se numeşte algoritm polinomial dacă τ(n) = O(P(n)), unde τ

este timpul cerut de algoritm, iar P este un polinom.

Page 17: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

17

II. Aproximarea numerelor reale

II. 1. Reprezentarea numerelor întregi într-o bază

Se numeşte bază un număr natural b ∈ N, b ≥ 2. Se numeşte sistem de

numeraţie o mulţime de b simboluri distincte, corespunzătoare mulţimii primelor b

numere naturale: 0, 1,…, b-1. Notăm

Sb = ci : 0 ≤ i ≤ b-1

mulţimea acestor simboluri, numite cifre în baza b. De exemplu:

S2 = 0, 1

S16 = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

unde caracterele A, B, C, D, E, F corespund numerelor naturale 10, 11, 12, 13, 14,

15.

În cele ce urmează fixăm o bază b şi notăm

B = 0, 1, …, b-1

şi Bk = B pentru orice k∈ N. Fie mulţimea An = ∏=

n

0kkB înzestrată cu ordinea

lexicografică. Reamintim că această relaţie de ordine se defineşte în felul următor:

(αn, αn-1, …, α0 ) < (βn, βn-1, …, β0 ) def

<=> există k∈0, 1, …, n astfel încât

αk < βk şi αi = βi pentru i = n,1k + .

Considerăm funcţia fn : An → 0, 1, …, bn+1-1 definită prin

fn(αn, αn-1, …, α0) = αnbn + αn-1b

n-1 + … + α2b2 + α1b + α0.

Demonstrăm că funcţia fn este bijectivă. Arătăm pentru început că fn este strict

crescătoare, deci este injectivă. Apoi, ţinând cont că mulţimile 0, 1, …, bn+1-1 şi

An sunt mulţimi finite cu acelaşi cardinal (număr de elemente) va rezulta că de fapt

fn este o bijecţie. Fixăm două elemente din An, α=(αn, αn-1, …, α0 ) şi β = (βn, βn-1,

Page 18: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

18

…, β0 ), cu α < β. Deoarece α < β, rezultă că există k∈0, 1, …, n astfel încât αi =

βi pentru i = n,1k + şi αk < βk (de unde rezultă că αk ≤ βk - 1). Avem

fn(α0, α1, …, αn) = αnbn + αn-1b

n-1 + … + αk+1bk+1+ αkb

k +αk-1bk-1+ … + α1b + α0

= βnbn + βn-1b

n-1 + … + βk+1bk+1 + αkb

k + αk-1bk-1+ … + α1b + α0

≤ βnbn + βn-1b

n-1 + … + βk+1bk+1+ (βk -1)bk +(b -1)bk-1+ …+ (b-1)

= βnbn + βn-1b

n-1 + …+ βk+1bk+1+(βk -1)bk +(b -1)(bk-1+ … + b +1)

= βnbn + βn-1b

n-1 + … + βk+1bk+1+ βkb

k - bk + (b -1) 1b

1bk

−−

= βnbn + βn-1b

n-1 + … + βk+1bk+1+ βkb

k - 1

< βnbn + βn-1b

n-1 + … + βk+1bk+1+ βkb

k

≤ fn(β)

În consecinţă, α < β implică fn(α) < fn(β), deci fn este strict crescătoare.

Folosind bijectivitatea funcţiei fn demonstrăm următoarea teoremă:

Teorema 2.1. Fie b o bază (adică b ∈ N, b ≥ 2). Orice număr natural nenul x

poate fi scris în mod unic sub forma

x = αnbn + αn-1b

n-1 + … + α2b2 + α1b + α0, cu αn ≠ 0.

şi α0, α1, …., αn ∈ 0, 1, …, b-1 .

Demonstraţie. Conform principiului multiplicativ al lui Arhimede, pentru

număr natural nenul x există un număr natural n ≥ 1 astfel încât:

bn ≤ x < bn+1.

De aici rezultă că există un singur număr natural n ≥ 1 astfel încât

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 încât x = fn (α) sau echivalent

x = αnbn + αn-1b

n-1 + … + α2b2 + α1b + α0.

Dacă αn ar fi nul, atunci

x = αn-1bn-1 + … + α2b

2 + α1b + α0

≤ (b -1)bn-1 + … + (b -1)b2 + (b -1)b + (b -1)

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

Page 19: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

19

= (b -1) 1b

1bn

−−

< bn,

ceea ce contrazice alegerea lui n. Deci αn ≠ 0.

Dacă ar exista două reprezentări

x = αnbn + αn-1b

n-1 + … + α2b2 + α1b + α0, cu αn ≠ 0.

= βmbm + βm-1bm-1 + … + β2b

2 + β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ă.

Plecând de la observaţia următoare

x = αnbn + αn-1b

n-1 + … + α2b2 + α1b + α0

= ( ( …(αnb + αn-1 )b + … + α2)b + α1)b + α0

deducem faptul că reprezentarea sub forma din teorema 1 a unui număr natural

nenul x se poate face prin împărţiri succesive la b şi reţinerea resturilor de la sfârşit

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 numeşte reprezentarea lui x în baza b.

Trecerea unui număr dintr-o bază în alta se numeşte conversie. Convenim să scriem

bază în care este reprezentat un număr ca indice. De exemplu numărul 4710 se scrie

în baza 2 astfel:

Page 20: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

20

47 = 23 ⋅ 2 + 1 47 2

23 = 11 ⋅ 2 + 1 46 23 2

11 = 5 ⋅ 2 + 1 sau 1 22 11 2

5 = 2 ⋅ 2 + 1 1 10 5 2

2 = 1 ⋅ 2 + 0 1 4 2 2

1 = 0 ⋅ 2 + 1 1 2 1

0

Deci 4710 = 1011112.

Conversia de la baza b la baza 10 se face prin însumarea puterilor lui b

înmulţite cu cifrele din baza b corespunzătoare. De exemplu, numărul 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 număr î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

dezvoltării fiecărei cifre din reprezentare în echivalentul ei în baza b utilizând k

cifre (adăugând 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 stânga grupele de k cifre din baza b prin cifra în baza b1 corespunzătoare. Dacă

numărul de cifre nu este multiplu de k se completează configuraţia la stânga cu

zerouri. De exemplu,

6

2

31

1100111 = 1368

7

2

A

01111010 = A716.

Page 21: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

21

II. 2. Reprezentarea numerelor reale într-o bază

Pentru scrierea unui număr real şi pozitiv în baza b considerăm mulţimea

C = N* × ∏≥1k

kB

cu Bk = 0, 1, …, b-1 , şi funcţia F : C → (0, ∞) definită prin

F(α0, α1, …, αn, …) = α0 + ∑∞

=

α

1nnn

b.

Seria ∑≥

α

1nnn

b este convergentă, pentru că 0 ≤

nn

b

α≤ (b-1)

nb

1 şi ∑

≥1nnb

1 este

convergentă (fiind o serie geometrică cu raţia b

1 pozitivă şi subunitară). Deci F

este corect definită.

Teorema 2.2. Fie b o bază şi F : C → [0, ∞) funcţia definită mai sus. Atunci

1. F este surjectivă

2. Pentru orice număr real x > 0 care nu este de forma nb

v cu v∈N şi

n∈ N* există un unic α ∈ C astfel încât F(α) = x.

3. Dacă numărul real x > 0 este de forma nb

v cu v∈N şi n∈ N* , atunci

există două elemente α, β ∈ C cu α ≠ β astfel încât F(α) = F(β) = x.

În plus, dacă γ∈ C are proprietatea că F(γ) = x, atunci γ = α sau γ =

β.

Demonstraţie. În cele ce urmează notăm cu [y] partea întreagă a numărului

real y, adică cel mai mare număr întreg mai mic sau egal cu y.

1. Considerăm x ∈ (0, ∞) şi construim α ∈ C astfel încât F(α) = x. Pentru

orice n ∈ N, notăm qn = [xbn]. Din definiţia părţii întregi rezultă qn ≤ xbn < qn + 1,

sau echivalent nn

b

q ≤ x <

nn

b

q +

nb

1, ceea ce implică 0 ≤ x -

nn

b

q <

nb

1 şi

∞→nlim

nn

b

q =

x. Pe de altă parte, înmulţind inegalitatea qn ≤ xbn < qn + 1 cu b şi ţinând cont că

[xbn+1] = qn+1, obţinem

Page 22: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

22

bqn ≤ qn+1 < bqn + b

0 ≤ qn+1 - bqn < b

Luăm α0 = [x] şi αn = qn - b qn-1 pentru orice n ≥1. Evident α0 ∈ N şi 0 ≤ αn ≤ b-1.

Demonstrăm că F(α0, α1, …, αn, …) = x. Pentru aceasta este suficient să

demonstrăm că ∑∞

=

α

0nnn

b= x. Considerăm o sumă parţială a acestei serii:

sn =∑=

αn

0kkk

b= α0 + ∑

=

−−n

1kk

1kk

b

bqq= α0 + ∑

=−−

n

1k1k1k

kk

b

q

b

q= α0 +

nn

b

q-

00

b

q=

nn

b

q.

Din ∞→n

limnn

b

q= x, rezultă că

∞→nlim sn = x.

2. Fie x > 0 un număr real care nu este de forma nb

v cu v∈N şi n∈ N*.

Presupunem prin absurd că în afara elementului α ∈ C construit anterior mai există

β ∈ C astfel încât F(β)= x, sau echivalent ∑∞

=

β

0nnn

b= x. Dacă notăm tn =∑

=

βn

0kkk

b suma

parţială de ordin n a acestei serii, atunci tn ≤ x şi x = ∑∞

=

β

0nnn

b= ∑

=

βn

0kkk

b+

∑∞

+=

β

1nkkk

b≤∑

=

βn

0kkk

b + (b-1) ∑

+= 1nkkb

1= tn + (b-1)

1nb

1+

1b

b

−= tn + nb

1. Deci

tn ≤ x ≤ tn + nb

1.

Dar x nu poate fi egal cu tn + nb

1 pentru că x nu este de forma

nb

v cu v∈N şi n∈

N*. În consecinţă tn ≤ x < tn + nb

1 şi tnb

n ≤ xbn < tnbn + 1. Ţinând cont şi de faptul

că tnbn ∈ N, rezultă că [xbn] = tnb

n. Ca urmare tn =nn

b

q =∑

=

αn

0kkk

b suma parţială a

seriei ∑≥

α

0nnn

b. Seriile ∑

α

0nnn

b şi ∑

β

0nnn

b având sumele parţiale egale au termenii

generali egali şi deci α = β.

Page 23: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

23

3. Fie x > 0 un număr real de este de forma nb

v cu v∈N şi n∈ N*. Fie n0 cel

mai mic număr natural cu proprietatea că există v0 natural astfel încât x = 0n

0

b

v.

Utilizând relaţiile stabilite la punctul 1, obţinem 0nq = [x 0nb ] = x 0nb = v0 şi ∑

=

α0n

0kkk

b=

0

0

n

n

b

q=

0n0

b

v= x. Deci

α = (α0, α1, …, 0nα , 0,0, …).

Demonstrăm că 0nα ≠ 0. Presupunând prin absurd că

0nα = 0, ar rezulta că x =

∑−

=

α1n

0kkk

0

b=

1n0

0b

w−

ceea ce ar contrazice alegerea lui n0. Luând

β = (α0, α1, …, 0nα -1, b -1, b -1, …).

obţinem

∑∞

=

β

0nnn

b=∑

=

α0n

0kkk

b -

0nb

1 + ∑

+=

1nkk

0 b

1b= x -

0nb

1+ (b-1) ∑

+= 1nkk

0 b

1

= x -0nb

1+ (b-1)

1n0b

1+

1b

b

− = x.

Deci F(β) = x şi α ≠ β. În continuare presupunem că există γ∈ C cu proprietatea că

F(γ) = x. Fie n un număr natural cu proprietatea că există m > n astfel încât γm < b-1.

Atunci avem

∑∞

+=

γ

1niii

b< (b-1) ∑

+= 1niib

1=

nb

1.

Ţinând cont de reprezentarea lui x sub forma x =∑∞

=

γ

0iii

b, obţinem

xbn = bn∑=

γn

0iii

b+ bn ∑

+=

γ

1niii

b = ∑

=

− γn

0ii

inb + bn ∑∞

+=

γ

1niii

b.

Page 24: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

24

Numărul ∑=

− γn

0ii

inb este natural, iar bn ∑∞

+=

γ

1niii

b∈ [0, 1). Deci ∑

=

− γn

0ii

inb = [xbn]. Cu un

raţionament similar, obţinem că ∑=

− γk

0ii

ikb = [xbk] pentru orice k ≤ n. Din aproape în

aproape se obţine

α0 = [xb0] = γ0

α1 = [xb1] - b[xb0] = γ0b + γ1 - bγ0 => α1 = γ1

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

− γn

0ii

inb - b∑−

=

− γ1n

0ii

inb = γn => αn = γn

Există două cazuri posibile

(i) Există un număr natural N astfel încât γn = b-1 oricare n ≥ N+1.

(ii) Oricare ar fi N există nN ≥ N+1 astfel încât Nnγ ≠ b-1 (sau echivalent,

Nnγ < b-1).

Presupunem că are loc cazul (i) şi considerăm N0 cel mai mic număr natural

cu proprietatea indicată. Din cele demonstrate mai sus rezultă că αi = γi pentru orice

i ≤ N0 -1 (deoarece 0Nγ < (b-1)). Demonstrăm că γ = β. Avem

x = ∑∞

=

γ

0nnn

b=∑

=

γ0N

0kkk

b + ∑

+=

1Nkk

0 b

1b=∑

=

γ0N

0kkk

b + (b-1) ∑

+= 1Nkk

0 b

1

=∑=

γ0N

0kkk

b+ (b-1)

1N0b

1+

1b

b

−=∑

=

γ0N

0kkk

b+

0Nb

1=

0Nb

w.

şi deci n0 ≤ N0. Presupunând prin absurd că n0 < N0, se obţine următoarea

contradicţie

x =∑=

α0n

0kkk

b<∑

=

α0n

0kkk

b+ ∑

+=

γ

1nkkk

0 b=∑

=

γ

0nnn

b= x

Utilizând în continuarea egalitatea x = ∑∞

=

γ

0nnn

b= ∑

=

α

0nnn

b, se obţine

0Nγ = 0Nα -1, şi

deci α=β.

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

Page 25: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

25

Definiţie 2.3. Reprezentarea x = ∑∞

=

α

0nnn

b în baza b a numărului real x > 0 se

numeşte periodică dacă există un numerele naturale N, p astfel încât

αt = αt+p+1 pentru orice t ≥ N.

În această situaţie se foloseşte următoarea notaţie

x = α0, α1α2…αN-1(αNαN+1…αN+p).

Teoremă 2.4. Fie b o bază (adică b ∈ N, b ≥ 2). Un număr real x > 0 este

raţional dacă şi numai dacă x admite o reprezentare periodică în baza b.

Demonstraţie. Presupunem că x admite reprezentarea periodică

x = α0, α1α2…αN-1(αNαN+1…αN+p).

Atunci

x = ∑∞

=

α

0nnn

b= ∑

=

α1N

0nnn

b+∑

+

=

αpN

Nnnn

b ( ) ( )

++++++++

...b

1...

b

1

b

11

1pn1p21p

=∑−

=

α1N

0nnn

b+ ∑

+

=

αpN

Nnnn

b ( )∑∞

=+

0nn1pb

1 =∑

=

α1N

0nnn

b+∑

+

=

αpN

Nnnn

b 1b

b1p

1p

−+

+

,

de unde rezultă că x este un număr raţional.

Reciproc să considerăm un număr raţional x =j

i, cu i şi j numere naturale, j

≠ 0. Demonstrăm că reprezentarea x = ∑∞

=

α

0nnn

b în baza b este periodică. Dacă x este

de forma nb

v cu v∈N ne vom referi la acea reprezentare care are proprietatea că

oricare ar fi N există nN ≥ N+1 astfel încât Nnα ≠ b-1. Atunci avem

α0 = [x] şi αn = [xbn] - b[xbn-1], n ≥ 1,

şi aşa cum am observat în demonstraţia teoremei 2

∑=

− αn

0ii

inb = [xbn] pentru orice n.

Notăm

x0 = x, xn+1 = b(xn - αn), n ≥ 0.

Se observă că

α0 = [x] = [x0]

Page 26: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

26

α1 + α0b = [xb] => α1 = [(x-α0)b] = [x1]

α2 + bα1 + b2α0 = [xb2] => α2 = [((x-α0)b - α1)b] = [(x1-α1)b] = [x2]

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

Ţinem cont că x =j

i şi notăm cu u0 restul împărţirii lui i la j, şi cu un restul

împărţirii lui bun-1 la j pentru n ≥ 0. Raţionând prin inducţie obţinem că xn = j

bu 1n−

pentru orice n ≥ 1. Deoarece un reprezintă restul unei împărţiri la j, un ∈ 0, 1,…, j-

1 ceea ce arată că există N şi p naturale astfel încât uN = uN+p+1. De aici rezultă xN

= xN+p+1 şi αN = αN+p+1. Mai departe avem xN+1 = b(xN - αN) = b(xN+p+1 - αN+p+1) =

xN+p+2 şi deci αN+1 = αN+p+2. Folosind un raţionament prin inducţie după t, se

demonstrează că αN+t = αN+p+1+t, t ≥ 0. În consecinţă, reprezentarea lui x este

periodică.

Aşa cum am observat în demonstraţia teoremei precedente, pentru scrierea

unui număr real pozitiv x în baza b se procedează în felul următor. Se scrie

x = [x] + x, 0 ≤ x < 1,

unde prin [x] am notat partea întreagă a lui x, iar prin x partea fracţionară a lui x.

Conversia numărului real pozitiv x de la baza 10 la baza b se face separat pentru

partea întreagă (care este un număr întreg) şi partea fracţionară. Conversia părţii

fracţionare se face prin înmulţiri repetate cu b, după cum urmează:

b ⋅x = x1 = [x1] +x1= α1 + x1

b ⋅ x1 = x2 = [x2] +x2= α2 + x2

b ⋅ xn-1 = xn = [xn] +xn= αn + xn

ceea ce înseamnă că x se reprezintă : xb = 0, α1α2 …αn…

În urma acestor înmulţiri repetate, pot apare trei situaţii:

Page 27: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

27

1. xn= 0, ceea ce determină încheierea algoritmului; în această situaţie x se

poate reprezenta exact prin 0, α1α2 …αn = ∑=

αn

1kkk

b (această situaţie

corespunde cazului x = nb

v cu v∈N şi n∈ N*).

2. xn ≠ 0, dar se observă o periodicitate, adică una sau un grup de cifre care

se repetă ( această situaţie corespunde cazului x raţional dar x ≠ m

v

b pentru

orice v∈N şi m∈ N*).

3. xn ≠ 0, iar cifrele obţinute se succed fără a respecta vreo regulă ( această

situaţie corespunde cazului x iraţional). În această situaţie 0,α1α2 …αn

=∑=

αn

1kkk

b reprezintă doar o aproximaţie pentru x în baza b.

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

5,125 = 5 + 0,125

5 2

4 2 2

1 2 1

0

Deci 510 = 1012

0,125 × 2 = 0,25 = 0 + 0,25

0,25 × 2 = 0,5 = 0 + 0,5

0,5 × 2 = 1 = 1 + 0

Deci 0,12510 = 0,0012. În consecinţă 5,12510 = 101,0012.

Page 28: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

28

Page 29: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

29

III. Reprezentarea informaţiei în sistemele de calcul

III.1. Reprezentarea internă a numerelor întregi

III. 1.1. Reprezentarea internă a numerelor întregi fără semn (pozitive)

Reprezentarea în memoria unui calculator a numerelor întregi depinde de

lungimea cuvântului utilizat (numărul de biţi). Pentru a reprezenta un număr întreg

pozitiv pe k biţi se face conversia numărului respectiv la baza 2, iar configuraţia

binară obţinută se completează la stânga cu zerouri până se obţin k cifre. Cel mai

mare număr întreg reprezentabil pe k biţi este

orik

1...11 2 = 2k-1 + 2k-2 +…+ 20 = 12

12k

−−

= 2k – 1

Deci pe k biţi se pot reprezenta numerele întregi cuprinse între 0 şi 2k – 1, în total 2k

numere.

Exemple:

k Domeniul de valori

8 biţi = 1 B (byte) 0…255

16 biţi = 2 B 0….65 535

32 biţi = 4 B 0….2 147 483 647

Reprezentarea numărului 6210 pe k = 8 biţi se face astfel:

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

Page 30: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

30

7 0

0 0 1 1 1 1 1 0 → 3E (în hexazecimal)

3 E

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

stânga, numerotarea lor corespunzând puterilor crescătoare ale bazei de numeraţie

2. Astfel, prima cifră binară din dreapta reprezintă ponderea 20 şi este bitul cel mai

puţin semnificativ. Primul bit din stânga este bitul cel mai semnificativ.

Notăm cu ≺ relaţia de ordine lexicografică pe mulţimea şirurilor formate din 0 şi 1,

de lungime k. Din punct de vedere al ordinii lexicografice, reprezentările numerelor

întregi fără semn satisfac:

0 ≺ 1 ≺… ≺ 2k - 1

În consecinţă, relaţia de ordine lexicografică este compatibilă cu relaţia de ordine

numerică naturală.

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

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

• cod direct (semn şi valoare absolută)

• cod invers (complement faţă de 1)

• cod complementar (complement faţă de 2)

Să presupunem că se rezervă k biţi pentru reprezentarea unui număr întreg. Prin

toate cele metode numerele întregi pozitive se codifică prin conversie în baza 2 pe

k-1 biţi şi completarea primului bit cu zero. Astfel, pentru k = 16 reprezentarea

internă a numărului x = 7210 = 26 + 23 = 10010002 este :

0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 → 0048 (în hexazecimal)

0 0 4 8

Page 31: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

31

Mulţimea numerelor întregi nenegative reprezentabile pe k biţi (prin oricare din cele

trei metode) este 0, 1, 2, ..., 2k-1-1 (deoarece primul bit este rezervat, iar

reprezentarea se face doar pe restul de k-1 biţi).

Prezentăm 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

numărului întreg negativ pe k-1 biţi şi se completează primul bit cu 1. În consecinţă,

mulţimea numerelor întregi negative care se pot reprezenta prin această metodă

este-2k-1 + 1, -2k-1 + 2, ...., 0. Această metodă de reprezentare prezintă unele

inconveniente:

• zero are două reprezentări distincte (00…0 şi 10…0), ca +0 şi –0

• tabelele de adunare şi înmulţire sunt complicate datorită bitului de semn care

trebuie tratat separat.

Din punct de vedere al ordinii lexicografice avem:

+0 ≺ 1 ≺… ≺ 2k-1-1 ≺ -0 ≺ -1 ≺… ≺ -(2k-1-1)

Deci relaţia de ordine lexicografică nu este compatibilă cu relaţia de ordine

naturală.

Pentru a obţine codul invers:

1. se obţine reprezentarea valorii absolute a numărului întreg negativ pe

k biţi

2. în reprezentarea obţinută (la pasul 1) se înlocuieşte fiecare bit 0 cu 1

şi 1 cu 0

Mulţimea numerelor întregi cu semn care pot fi reprezentate prin această metodă

este acelaşi ca pentru metoda precedentă : -2k-1 + 1, -2k-1 + 2, ...., 0, 1, ...., 2k-1-1.

Dacă notăm cu x complementul faţă de 1 al numărului x, atunci

x + x = 2

k

1....11

= 2k - 1

Page 32: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

32

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

operaţia de adunare. Din acest motiv operaţiile aritmetice relativ la această

reprezentare sunt avantajoase, deoarece operaţia de scădere se realizează prin

adunarea complementului faţă de 1. Un dezavantaj al acestei reprezentări este

recunoaşterea a două zerouri (11…1 şi 00..0).

Din punct de vedere al ordinii lexicografice avem:

+0 ≺ 1 ≺… ≺ 2k-1-1 ≺ -(2k-1-1)≺ -(2k-1-2)≺… ≺ -0

Deci relaţia de ordine lexicografică nu este compatibilă cu relaţia de ordine

naturală.

Pentru a obţine codul complementar:

1. se obţine codul invers pe k biţi

2. se adună o unitate la valoarea obţinută (la pasul 1)

Zero admite o singură reprezentare prin această metodă: ( k

0...00 ).Mulţimea

numerelor întregi cu semn care pot fi reprezentate prin această metodă este

-2k-1, -2k-1 + 2, ...., 0, 1, ...., 2k-1-1.

Dacă x este complementul faţă de doi al lui x, atunci

x + x = 2

k

1....11

+ 1 = 2k - 1 + 1 = 2k

Şi în cazul acestei reprezentări operaţiile aritmetice sunt avantajoase, deoarece

operaţia de scădere 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 relaţia de ordine lexicografică nu este compatibilă cu relaţia de ordine

naturală.

De exemplu, pentru k = 16, reprezentările pentru x = -72 prin cele trei metode se

obţin după cum urmează:

7210 = 10010002 =10010002

Page 33: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

33

Cod direct (semn şi valoare absolută)

1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 → 1048 (în hexazecimal)

1 0 4 8

Cod invers (complement faţă de 1)

1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 → FFB7 (în hexazecimal)

F F B 7

Cod complementar(complement faţă de 2)

1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 → FFB8 (în hexazecimal)

F F B 8

(deoarece 11111111101101112 + 1 = 11111111101110002)

Următorul 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ă

Page 34: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

34

72 --> 0048

-72 --> FFB8

Observaţie: Se poate remarca faptul că primul bit din stânga (bitul cel mai

semnificativ) este întotdeauna 0 pentru numerele pozitive şi 1 pentru numerele

negative şi aceasta pentru fiecare din cele trei reprezentări. Acest bit se mai

numeşte bit de semn.

În tabelul de mai jos sunt reprezentate, prin cele trei metode, pe k = 16 biţi

numere întregi cu semn:

valoare

zecimală

cod direct (semn şi

valoare absolută)

cod indirect

(compl. faţă de 1)

cod complementar

(compl. faţă de 2)

216-1= 32767 0111…111=7FFF16 0111…111=7FFF16 0111…111=7FFF16

32766 0111…110=7FFE16 0111…110=7FFE16 0111…110=7FFE16

… … … …

1 0000…001=000116 0000…001=000116 0000…001=000116

+0 0000…000=000016 0000…000=000016 0000…000=000016

-0 1000…000=800016 1111…111=FFFF16 0000…000=000016

-1 1000…001=000116 1111…110=FFFE16 1111…111=FFFF16

… … … …

-32766 1111…110=FFFE16 1000…001=800116 1000…010=800216

-32767 1111…111=FFFF16 1000…000=800016 1000…001=800116

-32768= -216 1000…000=800016

Page 35: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

35

III. 2. Reprezentarea internă a numerelor reale

III. 2.1. Forma normalizată

Fie N şi b ∈ N, b ≥ 2. Se numeşte forma normalizată în baza b a numărului

real nenul x, o reprezentare

x = m ⋅⋅⋅⋅ bE, unde b = baza

m = mantisa

E = exponentul

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

b≤ |m| < 1 (ceea ce înseamnă că mantisa este un număr

subunitar cu prima cifră după virgulă în reprezentarea în bază b diferită de zero).

Pentru a scrie numărul sub formă normalizată trebuie găsite mantisa şi

exponentul. Considerăm reprezentarea |x| =∑∞

=

α

0nnn

b care are proprietatea că ar fi N

există nN ≥ N+1 astfel încât Nnα ≠ b - 1. Reprezentăm numărul întreg α0 = bnβn +

bn-1βn-1 + … bβ1 + β0 în baza b. Astfel scrierea lui x în baza b este dată de xb =

±βnβn-1…β1β0,α1α2…αm… Mantisa se obţine deplasând virgula în faţa primei cifre

nenule ce apare în scrierea numărului (în baza b). Exponentul se ia egal cu numărul

de poziţii cu care s-a deplasat virgula precedat de semnul + dacă deplasarea s-a

făcut de la dreapta la stânga, şi de semnul – dacă deplasarea s-a făcut de la stânga la

dreapta. Astfel

• dacă x este reprezentat în baza b sub forma xb = ±βnβn-1…β1β0,α1α2…αm…,

cu βn ≠ 0, atunci forma normalizată este xb = ±0, βnβn-1…β1β0α1α2…αm… ⋅

bn+1

• dacă x este reprezentat în baza b sub forma xb = ±0, α1α2…αm…, cu α1 ≠ 0,

atunci forma normalizată este xb = ±0, α1α2…αm…⋅ b0

Page 36: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

36

• dacă x este reprezentat în baza b sub forma xb = ±0,α1α2… αiαi+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 număr real x este unică.

III.2.2. Reprezentarea în virgulă mobilă

Una dintre cele mai răspândite reprezentări internă (în PC-uri) a numerelor

reale este reprezentarea în virgulă mobilă. Reprezentarea în virgulă mobilă

presupune existenţa unei baze b (întotdeauna presupusă pară) şi a unei precizii p.

Un număr în virgulă mobilă este un număr de forma

±(α0 + b

1α+

22

b

α+…+

1p

1p

b −

−α )bE, αk ∈ 0, 1, ...b-1 pentru orice k = 1p,0 − , E ∈Z.

Mai precis, denumirea de număr î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. Fiecărei reprezentări î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 2 24 -126 127

IEEE double-precission 2 53 -1022 1023

Cray 2 48 -16383 16384

calculator HP 10 12 -499 499

mainframe IBM 16 6 -64 63

Page 37: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

37

Reprezentarea în virgulă mobilă se numeşte normalizată dacă se impune condiţia ca

cifra cea mai semnificativă α0 să fie nenulă. Reprezentarea normalizată are

următoarele avantaje:

• reprezentarea fiecărui număr este unică

• nu de pierd cifre pentru reprezentarea primele zerourilor de la dreapta

virgulei

• în sistemele binare (corespunzătoare bazei b =2) prima cifră poate să nu mai

fie stocată (deoarece este întotdeauna 1).

Restricţia α0 ≠ 0, face imposibilă reprezentarea lui zero. O reprezentare naturală a

lui zero este 1,0⋅ 1Eminb − .

Numărul de numere în virgulă mobilă normalizată este

2(b-1)bp-1(Emax - Emin +1).

Cel mai mic număr pozitiv normalizat se notează UFL (underflow level) şi este

UFL = minEb .

Cel mai mare număr normalizat se notează OFL (overflow level) şi este

OFL = (b-1 + b

1b −+

2b

1b −+…+

1pb

1b−

− ) maxE

b

= 1maxE

b+

(1 -pb

1).

Ca urmare nu toate numerele reale sunt reprezentabile exact. Numerele prea mari

pentru a fi reprezentate corespund unei depăşiri superioare de capacitate (overflow),

iar numerele prea mici unei depăşiri inferioare de capacitate (underflow). Pentru a

fi reprezentat un număr real x este aproximat cu un număr în virgulă mobilă pe care

convenim să-l notăm fl(x). Aproximarea lui x prin fl(x) poartă numele de rotunjire,

iar eroarea introdusă de eroare de rotunjire. Există mai multe modalităţi pentru

rotunjire:

• trunchiere (rotunjire prin tăiere): se reţin primele p cifre din reprezentarea

normalizată a lui x = ± (α0 + b

1α+

22

b

α+…+

1p

1p

b −

−α + …)bE; deci

fl(x) = ± (α0 + b

1α+

22

b

α+…+

1p

1p

b −

−α )bE.

Page 38: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

38

• rotunjire la cel mai apropiat număr în virgulă mobilă (rotunjire la par):

fl(x) este cel mai apropiat număr în virgulă mobilă de x; în caz de egalitate

(dacă există două numere în virgulă mobilă egal depărtate de x) se consideră

acel număr în virgulă mobilă a cărui ultimă cifră este pară.

Rotunjirea la par determină o acurateţe mai mare a reprezentării. Acurateţea

sistemului în virgulă mobilă este caracterizată de aşa numita precizie a maşinii (sau

epsilon maşină), notată εεεεmach. Precizia a maşinii este definită ca cel mai mic număr

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

1b 1- p.

Eroarea relativă maximă cu care fl(x) aproximează x este dată de

( )x

xxfl −≤ εmach.

Deşi amândouă sunt "mici", precizia maşinii (εmach) şi cel mai mic număr pozitiv

normalizat UFL (în reprezentare în virgulă mobilă fixată) nu trebuie confundate. De

obicei Emin < -p şi deci între ele există relaţia

0 < UFL < εmach < OFL.

Fie x un număr real aproximat de

fl(x) =±(α0 + b

1α+

22

b

α+…+

1p

1p

b −

−α )bE.

Exponentul E poate lua atât valori pozitive cât şi valori negative. Cel mai adesea

exponentul este “decalat “ şi reprezentat ca un număr întreg pozitiv (fără semn).

Aceasta deoarece ordinea lexicografică (stabilită între şirurile de cifre din

reprezentare) şi ordinea naturală sunt compatibile în cazul numerelor întregi fără

semn. În consecinţă, compararea exponenţilor (şi a numerelor reale

Page 39: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

39

corespunzătoare) poate fi făcută eficient. Astfel reprezentarea internă a unui număr

real x aproximat prin fl(x) = ± (α0 + b

1α+

22

b

α+…+

1p

1p

b −

−α )bE se face sub forma

s ed α0α1…αp-1

unde s este semnul lui x (se completează cu 0 dacă semnul este + şi cu 1 dacă

semnul este -) iar ed este exponentul obţinut prin adunarea unui decalaj D la

exponentul E:

ed = E + D.

III.2.3. Standardul IEEE-754

IEEE este acronim pentru Institute of Electrical and Electronics Engineers,

o organizaţie ce are drept principal scop elaborarea standardelor pentru produsele

hardware şi software. Standardul IEEE-754 se referă la aritmetica în virgulă mobilă

în sistemele binare. Acest standard precizează formatul de reprezentare în memorie

în simplă şi dublă precizie a unui număr real. Reprezentarea se face în virgulă

mobilă normalizată:

x ≈ fl(x) = ± (1 + 2

1α+

22

2

α+…+

1p

1p

2 −

−α )2E, p = 24, 53.

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

numbers"):

± (0 + 2

1α+

22

2

α+…+

1p

1p

2 −

−α )2E, p = 24, 53,

cu cel puţin una dintre cifrele binare α1, α2, …, αp-1 nenule.

Standardul IEEE-754 defineşte două valori speciale pentru situaţii excepţionale:

• Inf, pe post de "infinit" ("infinity"), pentru rezultatul împărţirii unui număr

finit la zero.

• NaN, pe post de "non-număr" ("not a number"), pentru rezultatul

următoarelor operaţii

Page 40: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

40

Adunare : Inf + (-Inf)

Înmulţire: 0⋅Inf

Împărţire: 0/0 sau Inf/Inf

Calculul restul împărţirii unui număr x la 0 sau a lui Inf la x

Calculul rădăcinii pătrate x pentru x < 0.

Scopul acestor valori este acela de a permite continuarea calculului.

Un număr în virgulă mobilă ±(α0 + 2

1α+

22

2

α+…+

1p

1p

2 −

−α )2E se reprezintă intern

conform IEEE-754 sub forma

s ed α1…αp-1

unde pentru s se rezervă un bit ce se completează cu 0 dacă numărul este pozitiv şi

cu 1 dacă numărul este negativ, iar pentru exponentul decalat ed se rezervă k biţi

(k=8, 11). Decalajul considerat este D = 2k-1 - 1, deci

ed = E + 2k-1 -1,

Pe k biţi se pot reprezenta ca numere întregi fără 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 număr în virgulă mobilă normalizată

trebuie îndeplinită condiţia 1 ≤ ed ≤ 2k-2. De aici rezultă că -2k-1+2 ≤ E ≤ 2k-1-1. De

exemplu, pe k = 8 biţi se pot reprezenta numere întregi fără semn de la 0 la 255.

Decalajul considerat este 27 - 1 = 127, deci exponentul E ia valori de la – 126 la

127. Numărul de biţi rezervaţi pentru exponent determină intervalul de numere reale

reprezentabile în calculator. Numărul de biţi rezervaţi pentru mantisă determină

precizia de reprezentare (gradul de detaliere) a numerelor. Reprezentarea ±(α0 +

21α

+22

2

α+…+

1p

1p

2 −

−α )2E fiind normalizată, există siguranţa că α0 = 1, ceea ce

permite omiterea sa (bit ascuns) pentru creşterea preciziei de reprezentare, dar

complică prelucrarea informaţiei.

Formatele de reprezentare a numerelor în virgulă mobilă (conform standardului

IEEE 754) sunt:

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

Page 41: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

41

• 1 bit pentru semnul mantisei

• 8 biţi pentru exponentul decalat (Emin = -126, Emax = 127)

• 23 biţi pentru mantisă (p = 24, α0 = 1 se omite)

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

• 1 bit pentru semnul mantisei

• 11 biţi pentru exponentul decalat (Emin = -1022, Emax = 1023)

• 52 biţi pentru mantisă (p = 53, α0 = 1 se omite)

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

Considerăm o reprezentare în memorie, în simplă precizie:

s e7e6e5e4e3e2e1e0 α1 α2 α23

Fie ed = e0 + e12 + e222 + … + e72

7 şi m = 2

1α+

22

2

α+…+

2323

2

α. Valoarea v

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= 23,1 şi s = 0, atunci v = 0.

dacă ed = 0, αk = 0 pentru orice k= 23,1 ş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= 23,1 şi s = 0, atunci v = Inf.

dacă ed = 255, αk = 0 pentru orice k= 23,1 ş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

Page 42: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

42

Fie ed = e0 + e12 + e222 + … + e102

10 şi m = 2

1α+

22

2

α+…+

5252

2

α. Valoarea v

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= 52,1 şi s = 0, atunci v = 0.

dacă ed = 0, αk = 0 pentru orice k= 52,1 ş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= 52,1 şi s = 0, atunci v = Inf.

dacă ed = 2047, αk = 0 pentru orice k= 52,1 ş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 biţi din paranteză sunt utilizaţi pentru rotunjire la

par)

Page 43: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

43

fl(x) = 1, 11001000010011001100110⋅ 28

Reprezentare în virgulă mobilă, simplă precizie, (cu bit ascuns) pentru 228,15:

0 100 0011 0 110 0100 0010 0110 0110 0110

4 3 6 4 2 6 6 6

Deci reprezentării 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:

1 1 0 0 0 0 0 1 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

C 1 D A 0 0 0 0

Deci reprezentării 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, 110011001100…⋅2-3 = 1,10011001100110011001100 110…⋅2-4

fl(x) =1, 10011001100110011001101 ⋅ 2-4

(după cei 23 de biţi ai mantisei urmează 110, şi deci rotunjirea se face prin

adăugarea unei unităţi).

Page 44: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

44

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 D C C C C C D

Deci reprezentării 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 100…⋅20

fl(x) =1,00110011001100110011010 ⋅ 20

(după cei 23 de biţi ai mantisei urmează 100, deci rotunjirea se face astfel încât

ultimul bit să aibă valoare pară).

ed = 0 + 28-1 -1 = 127 = 26 + 25 + 24 + 23 + 22 +2 +1 , ed2 = 11111112

Reprezentare în virgulă mobilă, simplă precizie (cu bit ascuns) pentru 1,2:

0 0 1 1 11 1 1 1 0 0 1 1 0 01 1 0 01 1 0 01 1 0 01 1 0 1 0

3 F 9 9 9 9 9 A

Deci reprezentării cu bit ascuns a lui 1,2 îi corespunde 3F99999A în hexazecimal.

Următorul program în C verifică reprezentările 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;

Page 45: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

45

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

(hexazecimal)",f1,*i);

i=(long int*) &f2;

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

(hexazecimal)",f2,*i);

i=(long int*) &f3;

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

(hexazecimal)",f3,*i);

i=(long int*) &f4;

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

(hexazecimal)",f4,*i);

getch();

Programul afişează

Numar in virgula mobila: 228.149994

Format intern 43642666 (hexazecimal)

Numar in virgula mobila: -27.250000

Format intern C1DA0000 (hexazecimal)

Numar in virgula mobila: 0.100000

Format intern 3DCCCCCD (hexazecimal)

Numar in virgula mobila: 1.200000

Format intern 3F99999A (hexazecimal)

III.2.4. Aritmetica în virgulă mobilă

Din secţiunea precedentă rezultă că nu toate numerele reale pot fi

reprezentate exact într-un sistem în virgulă mobilă. De asemenea în urma evaluării

unei expresii ai cărei operanzi sunt reprezentabili rezultatul obţinut nu este neapărat

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

Page 46: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

46

standardul IEEE-754 ating acest ideal în situaţia în care x op y se găseşte în

intervalul de numere reale reprezentabile [UFL, OFL].

Depăşirea superioară de capacitate (overflow) cauzează de obicei probleme

mai serioase decât depăşirea inferioară de capacitate (underflow), deoarece nu

există nici o aproximaţie bună pentru un număr real oarecare "mare". Un număr

real foarte mic poate fi în mod rezonabil aproximat cu zero. Pe multe sisteme de

calcul depăşirea superioară de capacitate este fatală, în timp ce în caz de depăşire

inferioară de capacitate, numărul respectiv este asociat cu zero.

Anumite legi ale aritmeticii reale nu sunt valabile într-un sistem în virgulă

mobilă. Astfel adunarea şi înmulţirea în virgulă mobilă sunt comutative, dar nu

asociative. De exemplu, dacă ε este un număr pozitiv mai mic decât εmach, dar mai

mare decât εmach/2, atunci

(1 + ε) + ε = 1, iar 1 + (ε + ε) > 1.

Rezultatul unei operaţii în virgulă mobilă poate să fie semnificativ diferit

faţă de rezultatul aceleaşi operaţii în aritmetica exactă. Să considerăm numărul real

x = 10

1. Se reprezintă în baza 2, prin x = 0,0001100110011…=1,

10011001100110011001101…2-4. În simplă precizie este aproximat de fl(x) = 1,

10011001100110011001101⋅2-4, ceea ce introduce o 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 înmulţire:

#include <stdio.h>

#include <conio.h>

void main()

float f=1./10,z=10;

int i;

clrscr();

for(i=1;i<33;i*=2)

printf("\n0.1*10^%d-10^%d = %f ",i+1,i,f*(z*10)-z);

z=z*z;

Page 47: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

47

getch();

Programul afişează

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 10

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

În cazul scăderii a două numere reale x şi y, poate apărea următorul fenomen

(catastrophic cancellation)

( ) ( )( ) ( )( )

yxfl

yxflyflxfl

−−−εmach,

dacă fl(x) este egal (sau foarte apropiat de) fl(y). În următorul program (în C)

aproximăm sin(x) printr-o sumă parţială a seriei

( )( )∑

=

+

+−

0n

1n2n

x!1n2

1

Seria fiind alternantă şi convergentă, o sumă parţială de ordin n, aproximează suma

seriei (i.e. sin(x)) cu o eroare absolută maximă de ( )!1n2

x1n2

+

+

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

Page 48: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

48

while (fabs(t)>=eps)

s+=t;printf("\n%f",s);

t=-t*(x2/(4*i*i+2*i));

i++;

printf("\nsin(%f) = %f",x,s);

printf("\nsin(%f) = %f" ,x,sin(x));

getch();

Pentru x=2 şi eroare 10-7 se obţine aproximaţia 0.909297 corectă a lui sin(2).

Pentru x = 40 şi eroare 10-7 se obţine aproximaţia 523443136.0 a lui sin(40) !

Valoarea corectă este 0.745113…Acest rezultat se datorează fenomenului de

reducere (catastrophic cancellation). Pentru a evidenţia diferenţele între cazurile în

care se lucrează în aritmetica exactă şi cazurile în care se lucrează în aritmetica în

virgulă mobilă prezentăm implementarea calculul sumei de mai sus (care

aproximează sin(x)) în MAPLE.

> sinus:=proc(x,epsilon)

> local t, x2, i,s;

> s:=0; i:=1;t:=x;x2:=x*x;

> while evalf(abs(t))>=evalf(epsilon) do

> s:=s+t; t:=-t*x2/(4*i*i+2*i);i:=i+1

> od;

> RETURN(s)

> end;

Pentru x=2 şi eroare 10-5 se obţine aproximaţia 141782155925 ≈ 0.9092961362 corectă a

lui sin(2):

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

141782155925

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

0.9092961360

Page 49: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

49

> evalf(sin(2));

0.9092974268

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

0.9092961362

> sin(2.);

0.9092974268

Atunci când primul parametru al procedurii sinus este întreg (sau raţional)

toate calculele se execută simbolic, iar când parametru este în virgulă mobilă

calculele se execută în virgulă mobilă.

Pentru x = 30 şi eroare 10-5 se obţine:

> evalf(sinus(30,10^(-5)));

-0.9880298724

> evalf(sin(30));

-0.9880316241

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

-13.41937809

> sin(30.);

-0.9880316241

Se observă că în cazul în care calculele se execută simbolic (parametru

actual este dat ca număr întreg) şi evaluarea în virgulă mobilă se face doar asupra

rezultatului, aproximaţia obţinută este -0.9880298724 pentru care 4 zecimale (5 cu

rotunjire) coincid cu cea furnizată de funcţia predefinită sin. Însă în situaţia în care

parametru actual este în virgulă mobilă şi ca urmare calculele se execută în virgulă

mobilă aproximaţia furnizată este -13.41937809 !!! Acest rezultat se datorează

fenomenului de reducere (catastrophic cancellation).

Următoarea procedură MAPLE evaluează valoarea unui polinom într-un

punct. Parametru p reprezintă lista coeficienţilor polinomului (p[i] este coeficientul

lui xi) iar x punctul în care se face evaluarea.

> val:=proc(p,x)

> local n,i,v;

> n:=nops(p);v:=p[n];

Page 50: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

50

> 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ă considerăm polinomul

(X-1)8 = 1 – 8X + 28X2 – 56X3 + 70X4 – 56X5 + 28X6 - 8X7 + X8).

Reprezentarea grafică a acestui polinom pe intervalul [9999

10000,1] este:

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

Dacă parametrii procedurii val sunt întregi sau raţionali şi calculele se

execută simbolic cu excepţia evaluării în virgulă mobilă a rezultatului se obţin

următoarele valori ale polinomului pentru xi = 9999

10000 +

i

100000 , 1 ≤ i ≤ 10:

> 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

Page 51: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

51

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.

Aceeaşi procedură apelată cu aceeaşi parametrii, cu singura excepţie că

punctele în care se calculează valorile sunt reprezentate în virgulă mobilă dă

rezultatele:

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

0.9999+i/100000)) od;

0.

-0.1 10-8

0.84 10-8

-0.14 10-7

-0.8 10-8

-0.2 10-8

-0.8 10-8

-0.14 10-7

0.84 10-8

-0.1 10-8

0.

Erorile mari se datorează execuţiei calculelor în aritmetica virgulei mobile. Şi mai

sugestiv este graficul de mai jos:

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

Page 52: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

52

sau cel obţinut utilizând un număr mai mic de puncte:

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

numpoints=5);

Page 53: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

53

IV. Rezolvarea sistemelor liniare

IV.1. Elemente de analiză matriceală

Fie V un spaţiu vectorial (liniar) peste corpul K (K=R sau K=C).

Reamintim o serie de definiţii şi teoreme legate de spaţiile normate şi spaţiile

Hilbert. O normă pe V este o funcţie p: V → [0, ∞) care satisface următoarele

condiţii:

1. p(x) = 0 dacă şi numai dacă x = 0.

2. p(x +y) ≤ p(x) + p(y) pentru orice x şi y ∈ V.

3. p(λx) = |λ| p(x) pentru orice λ∈K şi orice x ∈V.

Perechea (V, p) se numeşte spaţiu normat. În cele ce urmează vom nota p(x) = ||x||

pentru orice x∈V şi vom spune că V este un spaţiu normat în loc de (V, ||⋅||), atunci

când norma ||⋅|| se subînţelege. Pe orice spaţiu normat se poate defini o metrică

(distanţă) canonică d prin d(x, y) = ||x - y|| pentru orice x, y ∈V. Prin urmare

oricărui spaţiu normat i se pot asocia în mod canonic o structură metrică şi o

structură topologică. Petru orice x0∈V şi orice r >0 vom nota cu B(x0, r) bila din V

centrată în x0 de rază r:

B(x0, r) = x ∈ V: || x - x0 || < r.

Pentru orice spaţiu normat V (înzestrat cu structura metrică şi structura topologică

asociate în mod canonic) sunt adevărate următoarele afirmaţii:

1. Şirul (xn)n din V converge la x∈V dacă şi numai dacă ∞→n

lim || xn - x || = 0

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

ε>0 există nε ∈ N astfel încât || xn - xm || < ε pentru orice m,n ≥ nε.

3. || ⋅ || : V → [0, ∞) este o aplicaţie continuă

Page 54: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

54

4. Funcţiile (x, y) → x + y [: V × V → V] şi (λ, x) → λx [: K × V → V] sunt

continue (V × V şi K × V sunt înzestrate cu topologia produs).

O normă se numeşte completă dacă metrica asociată ei este completă (i.e. dacă

orice şir Cauchy este convergent). Un spaţiu normat se numeşte spaţiu Banach

dacă norma cu care este înzestrat este completă. Normele p1 şi p2 definite pe spaţiul

vectorial V se numesc echivalente dacă topologiile asociate (în mod canonic) lor

coincid. Pentru a desemna faptul că p1 şi p2 sunt echivalente vom folosi notaţia p1 ~

p2. Se poate arăta că normele p1 şi p2 sunt echivalente dacă şi numai dacă există M,

m >0 astfel încât

m p1(x) ≤ p2(x) ≤ M p1(x) pentru orice x ∈ V.

V se numeşte K algebră normată dacă V este K algebră şi în plus este

înzestrat cu o normă ||⋅|| ce satisface următoarele două proprietăţi:

1. (V, ||⋅||) este spaţiu normat

2. ||xy|| ≤ ||x|| ||y|| pentru orice x, y ∈V,

O algebră normată înzestrată cu o normă completă se numeşte algebră Banach.

Fie V şi W două spaţii vectoriale peste corpul K (K=R sau K=C). O

aplicaţie f : V → W se numeşte liniară dacă şi numai dacă f(λx + µy) = λf(x) +

µf(y) pentru orice λ, µ∈ K şi x, y∈ V. Dacă f : V → W este o aplicaţie liniară, iar

V şi W sunt spaţii normate, atunci următoarele afirmaţii sunt echivalente:

1. f este continuă

2. f este continuă în origine

3. Există M > 0 cu proprietatea că || f(x) || ≤ M||x || pentru orice x∈E.

4. 1x

sup≤

||f(x)||< ∞.

5. 1x

sup=

||f(x)||< ∞.

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

f∈ L(V, W), avem

1x

sup≤

||f(x)|| =1x

sup=

||f(x)||= inf M > 0 : || f(x) || ≤ M||x || pentru orice x∈V .

Page 55: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

55

Dacă pentru orice f∈ L(V, W), definim || f || = 1x

sup≤

||f(x)||, atunci (L(V, W), ||⋅||)

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

şi mărginiţi definiţi pe V cu valori în W, iar elementele din L(V, W) se mai numesc

operatori liniari mărginiţi. Spaţiul operatorilor liniari şi mărginiţi L(V, W) este

spaţiu Banach dacă şi numai dacă W este spaţiu Banach.

Dacă V este un spaţiu normat iar pe spaţiul L(V, V) introducem drept lege

de "înmulţire" compunerea operatorilor, atunci L(V, V) devine o algebră normată.

Dacă V este un spaţiu normat peste corpul K, atunci spaţiul normat L(V, K) se

numeşte dualul lui V şi se notează V'.

Fie H un spaţiu vectorial peste corpul K (K=R sau K=C). Se numeşte

produs scalar pe H o aplicaţie ϕ : H × H → K care are următoarele proprietăţi:

1. ϕ(x+y, z) = ϕ(x, z) + ϕ(y, z) pentru orice x, y, z ∈ H.

2. ϕ(λx, y) = λϕ(x, y) pentru orice λ∈K şi x ∈ H

3. ϕ(x, y) = ( )x,yϕ pentru orice x, y ∈ H.

4. ϕ(x,x) > 0 pentru orice x ≠ 0.

Vom nota ϕ(x,y) = <x, y> pentru orice x, y ∈ H. Se spune că norma spaţiului

normat (H, || ⋅ ||) provine dint-un produs scalar <⋅, ⋅> dacă ||x|| = x,x pentru

orice x din H. Un spaţiu pre-Hilbert este un spaţiu normat în care norma provine

dintr-un produs scalar, iar un spaţiu Hilbert este un spaţiu prehilbert complet (cu

normă completă).

Dacă H un spaţiu prehilbert, atunci:

1. Două elemente x şi y din H se numesc ortogonale dacă <x, y> =0.

2. Pentru A ⊂ H şi x∈H, x se spune ortogonal pe A şi se notează x⊥A, dacă

<x,y>=0 pentru orice y∈A.

3. O familie (xi)i de elemente ale lui H se numeşte sistem ortogonal sau familie

ortogonală dacă <xi, xj> =0 pentru orice i ≠ j.

4. Un sistem ortogonal (xi)i se numeşte ortonormal dacă ||xi|| = 1 pentru orice i.

5. Se numeşte bază ortonormală a spaţiului Hilbert H un sistem ortonormal

maximal (în raport cu relaţia de incluziune).

Page 56: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

56

Dacă H este un spaţiu Hilbert şi (xi)i este un sistem ortonormal, atunci

următoarele afirmaţii sunt echivalente:

1. (xi)i bază ortonormală

2. Dacă x∈H şi x⊥xi pentru orice i, atunci x = 0.

3. Dacă x∈H, atunci x = ∑i

ii xx,x .

4. Dacă x, y∈H, atunci <x, y> = ∑i

ii y,xx,x .

5. Dacă x∈H, atunci ||x|| = ∑i

2

ix,x .

Orice două baze ortonormale ale unui spaţiu Hilbert au acelaşi cardinal.

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

ortonormale.

Dacă F este un subspaţiu al spaţiului Hilbert H, atunci se notează cu

F⊥ = x, x⊥F

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

F⊥ (orice element din H poate fi reprezentat în mod unic ca suma dintre un element

din F şi unul din F⊥).

Se numeşte adjunctul operatorului liniar şi mărginit A ∈ L(H1, H2) (unde

H1, H2 sunt spaţii Hilbert) operatorul liniar şi mărginit A*∈ L(H2, H1)care satisface

condiţia:

<A(x), y > =<x, A*(y) > pentru orice x∈H1, y∈H2.

Orice operator liniar şi mărginit admite un unic adjunct.

Dacă H este un spaţiu Hilbert şi A∈L(H, H), atunci

1. A se numeşte autoadjunct (sau hermitian) dacă A = A*.

2. A se numeşte unitar dacă AA* = A*A =I.

3. A se numeşte pozitiv dacă A este autodjunct şi <A(x), x> ≥ 0 pentru

orice x ∈H.

Considerăm spaţiul vectorial V = Kn(K=R sau K=C), n∈N*. Pe acest spaţiu

Banach orice două norme sunt echivalente. Vom nota cu ||⋅||∞, ||⋅||1, ||⋅||2 următoarele

norme uzuale pe Kn:

Page 57: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

57

||x||∞ = nj1

max≤≤

|xj|

||x||1 = ∑=

n

1jjx

||x||2 =2/1

n

1j

2

jx

=

pentru orice x = (x1, x2, …, xn) ∈ Kn.

Norma ||⋅||2 se numeşte normă euclidiană şi provine din produsul scalar canonic

<x, y> = ∑=

n

1jjj yx pentru x = (x1, x2, …, xn) şi y = (y1, y2, …, yn)

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

n

1jjjyx ).

Vom nota cu Mm,n(K) mulţimea matricelor cu m linii şi n coloane. Mm,n(K)

are o structură de spaţiu vectorial relativ la operaţiile:

adunare: A = (aij)i,j,B=(bij)i,j,C=(cij)i,j ∈ Mm,n(K),

C = A+B dacă şi numai dacă cij = aij + bij pentru orice 1≤i≤m şi 1≤j≤n.

înmulţire cu scalari: A = (aij)i,j, C=(cij)i,j ∈ Mm,n(K), λ∈K.

C = λA dacă şi numai dacă cij = λaij pentru orice 1≤i≤m şi 1≤j≤n.

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

n

1kkjik ba pentru orice 1≤i≤m şi 1≤j≤p.

Transpusa unei matrice A=(aij)i,j, este o matrice notată At = ( tj,ia )i,j, ale cărei

elemente sunt: tj,ia = aj,i pentru orice 1≤i≤n, 1≤j≤m.

Conjugata unei matrice A=(aij)i,j, este o matrice notată A* = ( *j,ia )i,j, ale cărei

elemente sunt: *j,ia = i,ja pentru orice 1≤i≤n, 1≤j≤m. Conjugata este caracterizată

prin :

<Ax, y> = <x, A*y> pentru orice x∈Kn şi orice y∈Km.

O matrice pentru care m=n se numeşte pătratică. Elementul neutru la înmulţire în

Mn,n(K) este matricea unitate In:

Page 58: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

58

1 0 0 … 0

0 1 0 … 0

0 0 0 … 1

O matrice A∈ Mn,n(K) este inversabilă dacă există B∈ Mn,n(K) astfel încât

AB=BA=In. Inversa unei matrice A se notează A-1. Matricea A este inversabilă dacă

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

Matricele pentru care A=At se numesc matrice simetrice, iar cele pentru care A=A*

se numesc matrice hermitiene (evident, pentru matrice cu coeficienţi reali cele două

noţiuni coincid). O matrice A se zice ortogonală dacă A-1 =At şi unitară dacă A-1

=A*. Matricea A este

diagonală dacă aij=0 pentru orice i≠j

a1 0 … 0

A = 0 a2 … 0 = diag(a1, a2,…, an)

0 0 … an

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

a1 b1 0 … 0 0

A = c2 a2 b2 … 0 0

0 0 0 … 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 spaţii

Page 59: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

59

liniare între Mm,n(K) şi L(Kn, Km). Fiecărei matrice A = (ai,j)i,j i se asociază

operatorul liniar S(A) definit prin

S(A)(x) = Ax = (∑=

n

1jjijxa )1≤i≤m pentru orice x = (x1, x2, …, xn)

t∈Kn.

În cele ce urmează vom identifica A cu S(A). Cele mai des utilizate norme de

matrice sunt normele operatoriale: astfel pentru o matrice A∈ Mm,n(K), dacă pe Km

se consideră norma ||⋅||α, iar pe Kn se consideră norma ||⋅||β, atunci se notează cu

||A||αβ norma de aplicaţie liniară:

1xsup

≤β

||Ax||α =1x

sup=β

||Ax||α.

În cazul în care α=β se utilizează notaţia ||A||α = ||A||αα şi se spune că ||A||α este

norma operatorială a lui A subordonată normei vectoriale ||⋅||α.

Fie A∈ Mn,n(C). Scalarul λ din C se numeşte valoare proprie pentru A dacă

există vectorul nenul x ∈ Cn astfel încât:

Ax= λx

Vectorul x se numeşte vector propriu asociat valorii proprii λ. Mulţimea valorilor

proprii ale lui A formează spectrul lui A şi se notează cu σ(A). Raza spectrală a lui

A se defineşte prin:

ρ(A) = ( )

λσ∈λ A

max

Normele operatoriale pentru o matrice A ∈ Mn,n(C) subordonată normelor

vectoriale ||⋅||∞, ||⋅||1, ||⋅||2 sunt respectiv:

||A||∞ = ∑=∞≤≤

n

1jija

i1max

||A||1 = ∑=∞≤≤

n

1iija

j1max

||A||2 = ( )AA*ρ .

Pentru orice matrice A∈ Mn,n(C) şi orice norma operatorială ||A|| subordonată unei

normei vectoriale avem ρ(A) ≤ ||A||. Deşi norma ||A||2 este importantă din punct de

vedere teoretic (corespunde distanţei euclidiene), în general, în aplicaţiile numerice

Page 60: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

60

||A||2 nu este convenabilă (fiind dificil de calculat). În locul ei se foloseşte norma

vectorială:

||A||F = ∑=

n

1j,i

2

ija

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

n ≠1. Între cele două norme există relaţia:

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

Dacă ||⋅|| este o normă operatorială pe Mn,n(C), atunci k

kAlim

∞→=0 dacă şi

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 numeşte

• pozitiv definită dacă este simetrică (respectiv, hermitiană) şi dacă

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

• negativ definită dacă este simetrică (respectiv, hermitiană)şi dacă

<Ax, x> < 0 pentru orice x≠0 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 notăm determinanţii situaţi pe diagonala principală cu

a11 a12 … a1k

∆k = a12 a22 … a2k

a1k a2k … akk

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

Page 61: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

61

• O matrice A∈ Mn,n(R) este pozitiv definită dacă şi numai dacă este

simetrică şi minorii principali ∆k (k∈1,2,…n) sunt toţi pozitivi.

• O matrice A∈ Mn,n(R) este negativ definită dacă şi numai dacăeste

simetrică şi minorii principali ∆k (k∈1,2,…n) respectă următoarea

alternanţă a semnelor:

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

IV. 2. Metode directe de rezolvare a sistemelor liniare

Metodele de rezolvare a sistemelor liniare sunt clasificate în

1. Metode directe

2. Metode iterative

Metodele directe presupun obţinerea soluţiilor exacte a sistemelor liniare după

un număr finit de operaţii elementare. O metodă directă este cu atât mai bună cu cît

numărul de operaţii elementare (adunare, înmulţire, împărţire şi rădăcină pătrată)

necesare este mai mic (numărul de operaţii executate influenţează atât timpul de

execuţie cât şi eroarea de rotunjire).

Considerăm sistemul cu n ecuaţii şi n necunoscute.

Ax = b, A∈Mn,n(R) nesingulară.

Deoarece A este nesingulară sistemul admite soluţie unică, ce poate fi determinată

cu regula lui Cramer: xi = ix∆∆

, 1 ≤ i ≤ n. Arătăm că aplicarea acestei metode este

nepractică (pentru n mare). Într-adevăr, aplicarea ei conduce la calculul a n+1

determinanţi de ordinul n. Dar calculul unui determinat de ordinul n pentru o

matrice C = (cij)1≤i,j≤n, ţinând cont de definiţie:

det(C) = ( ) ( )( ) ( ) ( )

n

1 1 2 2 n nS

1 c c ...cε σσ σ σ

σ∈

−∑

revine la a calcula o sumă de n! termeni (grupul Sn al permutărilor de ordinul n

conţine n! elemente), fiecare termen fiind produsul a n factori. Deci pentru a aplica

regula lui Cramer trebuie efectuate cel puţin Nop(n) = (n+1) n!n =(n+1)!n operaţii.

Page 62: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

62

Deoarece n!> n

n

n

e(pentru n ≥1), rezultă că Nop(n) > n

( )n 1

n 1

n 1

e

+

+

+. De exemplu, dacă

se utilizează un sistem de calcul ce execută 109 operaţii pe secundă, atunci pentru

rezolvarea unui sistem cu n ecuaţii şi n necunoscute timpii de execuţie sunt

prezentaţi în tabelul de mai jos

n Timp de execuţie

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 urmăresc transformarea sistemului de rezolvat într-un

sistem echivalent a cărui matrice este inferior triunghiulară sau superior

triunghiulară, sistem ce se rezolvă foarte uşor. Prezentăm î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 A∈Mn,m(R). Eliminarea gaussiană urmăreşte

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 transformări elementare. La baza metodei stă următorul procedeu:

• prima linie este folosită pentru anularea coeficienţilor de pe prima

coloană din celelalte n-1 linii.

• a doua linie este utilizată pentru anularea coeficienţilor de pe a doua

coloană din ultimele n-2 linii, ş.a.m.d.

Trecerea de la un pas la altul se face aplicând regula dreptunghiului

(pivotului). Pentru a obţine stabilitatea numerică a algoritmului, se alege drept

Page 63: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

63

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 găseşte pivotul. Această strategie de

permutare se numeşte pivotare parţială. Performanţe de stabilitate numerică relativ

mai bune se obţin dacă se alege drept pivotul la pasul k elementul maxim în modul

din submatricea delimitată de ultimele n-k linii, şi se permută coloana k cu coloana

pivotului şi linia k cu linia pivotului. Această strategie de pivotare se numeşte

pivotare completă. Prezentăm în continuare algoritmul de eliminare Gauss cu

pivotare parţială. Trecerea de la matricea A la matricea superior triunghiulară se

realizează în nmin paşi, unde nmin = minn,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):

• Se determină pivotul de la pasul k; acesta este primul element ( )kk,ia

de pe coloana k cu proprietatea

| ( )kk,ia |=max| ( )k

k, ja |, k≤j≤n

• Se permută liniile i cu k;

• Se aplică regula dreptunghiului (pivotului) cu pivotul ( )kk,ka . Astfel:

elementele de pe linia pivotului se împart la pivot:

a )1k(i,k+ =

( )

( )

kk,ik

k,k

a

a, i=k,k+1,…m

elementele subdiagonale de pe coloana pivotului se înlocuiesc

cu 0.

( )1kika + =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:

Page 64: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

64

k j

k (k)k,ka (k)

k, ja

i (k)i,ka (k)

i, ja

( )k 1i, ja

+=

(k) (k) (k) (k)i, j k,k k, j i,k

(k)k,k

a a a a

a

−, k+1≤ i ≤ n, k+1≤ j ≤ m.

În urma aplicării acestui algoritm se ajunge la următoarea matrice superior

triunghiulară:

1 a )1(2,1 a )1(

3,1 ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ a )1(n,1 a )1(

1n,1 + ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ a )1(m,1

A(nmin) = 0 1⋅ ( )a 2

3,2 ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ a )2(n,2

( )a 21n,2 + ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ ( )a 2

m,2

⋅⋅⋅⋅⋅⋅⋅⋅ ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅

0 0 0 ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅1 ( )a n1n,n + ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ ( )a n

m,n

(dacă m ≤ n).

Exemplu

Prin aplicarea procedurii de eliminare gaussiană cu pivotare parţială asupra matricei

A de mai jos obţinem:

1 2 0 L1 ↔ L2 2 1 1

A = 2 1 1 → 1 2 0 →

1 -3 2 1 -3 2

1 1/2 1/2 L2 ↔ L3 1 1/2 1/2

0 3/2 -1/2 → 0 -7/2 3/2

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

Page 65: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

65

1 1/2 1/2 1 1/2 1/2

→ 0 1 -3/7 → 0 1 -3/7

0 0 1/7 0 0 1

Următoarea procedură MAPLE are drept parametru o matrice A, şi întoarce

matricea superior triunghiulară obţinută prin aplicarea algoritmului de eliminare

Gauss cu pivotare parţială asupra matricei A. Matricea a (locala procedurii) se

iniţializează cu A, şi fiecare din matricele intermediare A(k) sunt afişate.

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

Page 66: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

66

:= A

1 2 0

2 1 1

1 -3 2

> elimpp(A);

1 2 0

2 1 1

1 -3 2

2 1 1

1 2 0

1 -3 2

112

12

032

-12

0-72

32

112

12

0-72

32

032

-12

112

12

0 1-37

0 017

112

12

0 1-37

0 0 1

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

:= A1

3 2

-1 5

2 0

> elimpp(A1);

Page 67: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

67

3 2

-1 5

2 0

123

0173

0-43

123

0 1

0 0

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

:= A2

1 -1 2

3 4 -2

> elimpp(A2);

1 -1 2

3 4 -2

3 4 -2

1 -1 2

143

-23

0-73

83

143

-23

0 1-87

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

Considerăm sistemul cu n ecuaţii şi n necunoscute:

Ax = b, A∈Mn,n(R) nesingulară

Page 68: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

68

Pentru rezolvarea acestui sistem vom aplica algoritmul de eliminare Gauss

cu pivotarea parţială asupra matricei extinse ( )b|AA = . Vom nota elementele

matricei A tot cu ai,j . Astfel ai,n+1= bi pentru orice i=1,2,..n.

La primul pas algoritmul presupune eliminarea necunoscutei x1 din ultimele

n-1 ecuaţii. La al doilea pas se elimină necunoscuta x2 din ultimele n-2 ecuaţii,

ş.a.m.d. În cazul acestui algoritm pentru fiecare k se efectuează n+1-k + (n+1-k)(n-

k) = (n+1-k)2 operaţii elementare (prin operaţie elementară înţelegând aici o

operaţie în virgulă mobilă de forma ax + b, sau o împărţire) . Deci algoritmul

necesită

Nop(n) = ( )n 1

2

k 1

n 1 k−

=

+ −∑ =n

2

j 2

j=∑ =

( )( )n n 1 2n 1

6

+ +- 1

operaţii elementare. Deci Nop(n) ~ 3

n 3

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

Ca urmare a aplicării algoritmului se obţine sistemul echivalent:

x1 + a )1(2,1 x2 + a )1(

3,1 x3 +⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ a )1(n,1 xn = a )1(

1n,1 +

x2 + ( )a 23,2 x3⋅+ ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ a )2(

n,2 xn = ( )a 21n,2 +

⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅

xn = ( )a n1n,n +

Rezolvarea acestui sistem se poate face foarte uşor de la sfârşit spre început:

xn = ( )a n1n,n +

( ) ( )∑+=

+ −=n

1ijj

ij,i

i1n,ii xaax

Procedura rezsist de mai jos întoarce soluţia unui sistem liniar cu n ecuaţii şi

n necunoscute. Parametri procedurii sunt matricea sistemului şi vectorul termenilor

liberi

> with(linalg):

> rezlin:=proc(A,b)

> local a,x,n,i,j,k,aux;

Page 69: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

69

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

Utilizăm 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 2

-1 -1 3

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

:= b1 [ ], ,3 2 1

> rezlin(a1,b1);

[ ], ,1 1 1

> linsolve(a1,b1);

[ ], ,1 1 1

Page 70: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

70

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

= b.

IV.2.3. Calculul determinantului unei matrice

Pentru calculul determinantului unei matrice A∈Mn,n(R) se poate folosi

metoda de eliminare Gauss, ţinându-se seama că determinantul unei matrice nu se

modifică dacă asupra matricei se efectuează transformări elementare. Determinantul

este produsul elementelor ( )kk,ka (înainte de împărţire). Dacă se foloseşte 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 foloseşte algoritmul de eliminare Gauss cu pivotare parţială.

>determinant:=proc(A)

>local a,n,i,j,k,d,aux;

>n:=rowdim(A);

>a:=matrix(n,n);

>for i to n do

>for j to n do a[i,j]:=A[i,j] od od;

>d:=1;

>for k to n do i:=k;aux:=abs(a[k,k]);

>for j from k+1 to n do

>if abs(a[j,k])>aux then aux:=abs(a[j,k]);i:=j fi od;

>if i>k then d:=-d; for j from k to n do

>aux:=a[k,j];a[k,j]:=a[i,j];a[i,j]:=aux od fi;

>if a[k,k]=0 then d:=0;RETURN(d) fi; d:=d*a[k,k];

>for j from k+1 to n do a[k,j]:=a[k,j]/a[k,k] od;

>for i from k+1 to n do

>for j from k+1 to n do a[i,j]:=a[i,j]-a[k,j]*a[i,k] od od;

>od;

>RETURN(d)

>end;

Exemplificăm utilizarea procedurii de mai sus

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

Page 71: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

71

:= a2

1 1 1

1 8 3

12 1 2

> 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 A∈Mn,n (R). Matricea A este inversabilă dacă şi numai dacă există o

matrice B∈ Mn,n (R) astfel încât A⋅B=B⋅A=In, unde

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

In= 0 1 0 ---------- 0

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

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

Se ştie că A este inversabilă dacă şi numai dacă are determinantul nenul. Notăm:

ek = (0,…,0,1,0…0)t

vectorul k al bazei canonice din Rn.

Pentru fiecare k (k=1,2,…,n) considerăm sistemul Ax=ek. Soluţia acestui

sistem reprezintă chiar coloana k a matricei A-1. Astfel pentru aflarea lui A-1 este

necesar să rezolvăm n sisteme de ecuaţii liniare Ax=ek, k=1,2,…,n. Aceste sisteme

pot fi rezolvate utilizând algoritmul de eliminare al lui Gauss. Pentru a micşora

volumul de calcul vom aplica algoritmul asupra matricei obţinute prin concatenarea

la matricea A a coloanelor bazei canonice din Rn. Coeficienţii matricei

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

sunt

Page 72: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

72

aij, dacă 1 ≤ i, j ≤ n

ai,n+k = δik, dacă 1 ≤ i, k≤ n

unde

1, i=k

δik= 0, i≠k.

Prin aplicarea algoritmului de eliminare Gauss cu pivotare parţială asupra

lui A se obţine un şir de matrice

A(0)→ A(1)→ ---- →A(n),

unde A(0)= A, iar A(n) are următoarea formă superior triunghiulară:

1 a )1(2,1 a )1(

3,1 ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ a )1(n,1 a )1(

1n,1 + ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ a )1(n2,1

A(n)= 0 1⋅ ( )a 23,2 ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ a )2(

n,2( )a 2

1n,2 + ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ ( )a 2n2,2

⋅⋅⋅⋅⋅⋅⋅⋅ ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅

0 0 0 ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅1 ( )a n1n,n + ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ ( )a n

n2,n

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

bn,k= a )n(kn,n + , 1 ≤ k ≤ n

bi,k= a )i(kn,i + - ba j,i

n

1ij

)i(j,i∑

+=

, 1 ≤ i ≤ n-1, 1 ≤ k ≤ n

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;

Page 73: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

73

> 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

se realizează cu ajutorul comenzilor

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

:= a3

1 1 1

1 2 3

2 1 2

> inversa(a3);

1 1 1

1 2 3

2 1 2

Page 74: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

74

12

-12

12

2 0 -1

-32

12

12

Comanda inverse din pachetul linalg calculează de asemenea inversa unei matrice.

În exemplul următor presupunem că o aplicăm asupra aceleaşi matrice a3.

> inverse(a3);

12

-12

12

2 0 -1

-32

12

12

IV.3. Factorul de condiţionare al unei matrice

Definiţie 1. Factorul de condiţionare al unei matrice pătrate A∈Mn,n(R) se

defineşte prin

cond(A) = ||A|| ⋅ ||A-1||

unde ||⋅|| este o norma operatorială a matricei A (de exemplu, ||⋅||1 sau ||⋅||∞). Prin

convenţie cond(A) = ∞ dacă A este singulară.

Se poate observa că

cond(A) =

1

x 0x 0

Ax Axmax min

x x

≠≠

.

Factor de condiţionare cond(A) mare înseamnă A „aproape singulară”.

Factorul de condiţionare cond(A) are următoarele proprietăţi

• cond(A) ≥ 1

• cond(In) = 1 pentru orice n ≥ 1

• cond(αA) = cond(A) pentru orice scalar α ≠0

Page 75: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

75

• cond(D) = 1

i i1 i n1 i n

max min−

≤ ≤≤ ≤

α α

pentru orice matrice diagonală

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

Calcul valorii exacte a factorului de condiţionare al unei matrice A

presupune calculul ||A-1||. Cum numărul de operaţii necesare pentru calculul normei

inversei lui A (||A-1||) este mai mare decât cel pentru rezolvarea unui sistem liniar

Ax = b, de obicei în practică se foloseşte un estimator pentru ||A-1||. Determinarea

unei estimaţii pentru ||A-1|| pleacă de la observaţia că, dacă Ax = y, atunci

x

y≤ ||A-1||,

şi mărginea superioară a mulţimii

x, Ax y

y

=

este ||A-1|| şi se atinge pentru o anumită valoare y.

Comanda MAPLE cond(A) din pachetul linalg calculează factorul de

condiţionare matricei A.

Considerăm sistemul

Ax = b, cu A nesingulară

şi notăm cu x* soluţia exactă.

Să presupunem că în locul matricei A este furnizată matricea A + E şi ca

urmare se rezolvă sistemul

(A+E) x = b,

a cărui soluţie o notăm 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

Page 76: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

76

x x *

x

− ≤ cond(A)

E

A.

Deci factor de condiţionare „mic” şi variaţii relative mici ale coeficienţilor

matricei implică variaţii relative mici ale soluţiei. Dacă factorul de condiţionare

cond(A) este mare, atunci rezolvarea sistemului Ax = b este o problemă rău

condiţionată.

Să presupunem acum că în locul vectorului termenilor liberi b este dat

vectorul b şi ca urmare se rezolvă sistemul

A x = b ,

a cărui soluţie o notăm 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

||x*- x || = || A-1(b- b )|| ≤ || A-1|| ⋅|| (b- b )|| =|| A-1|| ⋅|| (b- b )|| Ax *

b ≤

≤ || A-1|| ˆb b

b

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

de unde

x x *

x *

− ≤ cond(A)

ˆb b

b

−.

Deci factor de condiţionare „mic” şi variaţii relative mici ale termenilor

liberi implică variaţii relative mici ale soluţiei.

Dacă gradul de acurateţe a datelor de intrare este compatibil cu precizia

maşinii εmach, atunci

x x *

x *

− ≤ cond(A)εmach.

Page 77: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

77

În urma calculului soluţiei sistemului Ax = b se pot pierde până la log10(cond(A))

cifre zecimale semnificative relativ la acurateţea datelor de intrare.

Interpretare geometrică: n = 2: Ecuaţii unui sistem liniar a cărui matrice A

∈ M2,2(R) pot fi interpretate ca ecuaţiile a două drepte în plan, iar soluţia sistemului

drept coordonatele punctului de intersecţie a celor două drepte. Factor de

condiţionare mare al matricei A înseamnă că dreptele sunt „aproape” paralele.

Exemplu

Considerăm sistemul Ax = b, unde

A = 888.445 887.112

887.112 885.781

şi

b = 1

0

Considerăm următoarele comenzi MAPLE:

> with(linalg):

> A:=matrix(2,2,[888.445,887.112,887.112,885.781]);

:= A

888.445 887.112

887.112 885.781

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

885781/1000]);

:= A1

177689200

110889125

110889125

8857811000

> cond(A1);

3152602660249

problemă bine condiţionată problemă rău condiţionată

Page 78: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

78

> 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 109 -0.888888888888889 109

> Digits:=10;

:= Digits 10

> linsolve(A,b);

[ ],0.2496249066 107 -0.2500000000 107

> linsolve(A1,b);

[ ],885781000 -887112000

Deşi matricele A şi A1 sunt egale - diferenţa este dată doar de reprezentarea

coeficienţilor: simbolic (ca numere raţionale) în cazul lui A1 şi în virgulă mobilă în

cazul lui A – comenzile linsolve(A,b) şi linsolve(A1,b) întorc rezultate diferite.

Soluţia corectă a sistemului este cea obţinută în varianta în care s-a lucrat simbolic:

x1 = 885781000

x2 = -887112000

Rezultatul eronat furnizat de comanda linsolve(A,b) se datorează relei condiţionări

a matricei A. Se observă că factorul de condiţionare este:

0.315260266024900 1013

Revenim la sistemul

Ax = b, cu A nesingulară

notăm cu x* soluţia exactă şi cu x soluţia aproximativă. Vectorul

r = b - A x

se numeşte 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 )

Page 79: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

79

A-1r = x* - x

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

|| A ||||r|| =

= cond(A) || x* ||

|| A |||| x* ||||r|| ≤ cond(A)

|| x* ||

|| Ax* ||||r|| =

= cond(A) || x* ||

|| b ||||r||.

de unde rezultă

ˆx * x

x *

− ≤ cond(A)

r

b

Ca urmare factor de condiţionare „mic” (problemă bine condiţionată) şi reziduu mic

implică variaţii relative mici ale soluţiei.

Exemplu

Considerăm sistemul Ax = b, unde

A = 1 1.001

1 1

şi

b = 2.001

2

Evident soluţia corectă a sistemului este

x1 = 1

x2 = 1

Dacă se consideră vectorul y

y1 2

y2 = 0

se observă că

b - Ay = 0.001

0

Page 80: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

80

Deci y aparent verifică sistemul, deşi este diferit de x. Aceasta se datorează valorii

factorului de condiţionare al lui A pe care-l putem determina folosind următoarele

comenzi MAPLE:

> with(linalg):

> A:=matrix(2,2,[1,1.001,1,1]);

:= A

1 1.001

1 1

> cond(A);

4004.001000

Arătăm în continuare că dacă reziduu este mare atunci variaţia relativă a

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

sistemului (A+E) x = b. Atunci

(A+E) x = b

E x = b -A x

E x = r

de unde

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

şi ca urmare

|| r ||ˆ|| A |||| x ||

≤ || E ||

|| A ||.

În consecinţă dacă a reziduu este mare atunci variaţia relativă a coeficienţilor

matricei de intrare A este mare. Deci dacă algoritmul de rezolvare a sistemului este

stabil atunci reziduul relativ este mic indiferent dacă problema este bine

condiţionată sau nu.

IV.4. Metode iterative de rezolvare a sistemelor liniare

IV.4.1. Generalităţi

Metodele iterative constau în construcţia unui şir (xk)k convergent către

soluţia exactă a sistemului. Oprirea procesului iterativ are loc la un indice m

Page 81: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

81

determinat pe parcursul calculului în funcţie de precizia impusă astfel încât

termenul xm să constituie o aproximaţie satisfăcătoare a soluţiei căutate.

Se consideră sistemul liniar

Ax = b, A∈Mn,n(R) nesingulară

şi desfacerea matricei A definită prin

A = N-P.

cu N o matrice inversabilă. Fie x0 un vector arbitrar din Rn. Construim şirul (xk)k

folosind relaţia de recurenţă:

Nxk+1 = P xk + b, k ≥ 0.

Notăm ek = x* – xk eroarea absolută cu care xk aproximează x*, soluţia exactă a

sistemului Ax = b.

Teoremă 4.1. Fie sistemul liniar Ax = b cu A∈Mn,n(R) nesingulară şi fie A

= N-P o desfacere a matricei A (N ∈Mn,n(R) matrice nesingukară). Şirul (xk)k

definit prin

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

converge la soluţia exactă a sistemului Ax = b oricare ar fi x0 dacă şi numai dacă

ρ(N-1P) < 1 (ρ(N-1P) reprezintă raza spectrală a lui N-1P, i.e. maximum modulelor

valorilor proprii ale lui N-1P).

Demonstraţie. Notăm G = N-1P. Atunci

ek+1 = x* – xk+1 = x* - N-1(P xk + b)

= x* - N-1P xk - N-1 b

= x* - N-1P xk - N-1 Ax*

= x* - N-1P xk - N-1 (N-P) x*

= x* - N-1P xk - x* + N-1 P x*

= N-1 P (x* - xk)

= Gek.

Ca urmare ek+1 = G ek = G G ek-1 = ...= Gk+1e0, pentru orice k ≥ 0. În consecinţă,

k

klim x→∞

= x* pentru orice termen iniţial x0 dacă şi numai dacă k 0

klim G e→∞

=0 pentru

Page 82: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

82

orice e0, sau echivalent k

klim G→∞

=0. Este cunoscut că k

klim G→∞

=0 dacă şi numai

dacă ρ(G) < 1.

Din demonstraţia teoremei anterioare a rezultat că dacă G= N-1P şi ek = x* –

xk, atunci ek = Gek-1 = Gke0 pentru orice k ≥ 0.

N se alege astfel încât sistemul

Nxk+1 = P xk + b, k ≥ 0.

a cărui soluţie este xk+1 să se rezolve uşor – de exemplu se alene N diagonală sau

triunghiulară În cazul metodelor concrete descrise în continuare se consideră

desfacerea standard a matricei A = (ai,j)1≤i,j≤n definită prin:

A = L + D + R

unde

a1,1 0 0 …… 0 0

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

……………………..

0 0 0 ……0 an,n

0 0 0 …… 0 0

L = a2,1 0 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 0 …… 0 0

Page 83: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

83

IV.4.2. Metoda Jacobi

Metoda Jacobi se caracterizează prin desfacerea

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

11

1

a 0 0 …… 0 0

N-1 = 0 22

1

a 0 ……0 0

……………………..

0 0 0 ……0 nn

1

a

Dacă G = N-1P, atunci coeficienţii matricei G = (gij)1≤i,j≤n sunt:

0, i = j

gi,j = i,i

j,i

a

a− , i ≠ j.

Şirul (xk)k definit prin

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

converge la soluţia exactă a sistemului Ax = b oricare ar fi x0 dacă şi numai dacă

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

11

1

a 0 0 …… 0 0

0 22

1

a 0 ……0

……………………..

0 0 0 ……0 nn

1

a

0 -a1,2 -a1,3 …… -a1,n-1 -a1,n -a2,1 0 -a2,3 …… -a2,n-1 -a2,n :...................................................... -an,1 -an,2 -an,3 …… -an,n-1 0

N-1P =

Page 84: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

84

ρ(G) ≤ min(1

G ,∞

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

suficient ca min(1

G ,∞

G )<1.

Calculăm 1

G :

1G = max∑

=

n

1ij,ig ,1 ≤j≤n

= max∑≠=

n

ji1i i,i

j,i

a

a, 1 ≤j≤n

Calculăm ∞

G :

∞G = max∑

=

n

1jj,ig ,1 ≤i≤n

= max∑≠=

n

ij1j i,i

j,i

a

a,1 ≤i≤n.

Dacă 1

G < 1 sau ∞

G <1, atunci ρ(G) <1. Dar condiţia ∞

G <1 este echivalentă cu

∑≠=

n

ij1j i,i

j,i

a

a < 1 pentru orice i, 1 ≤i≤n

| ai,i | >∑≠=

n

ji1i

j,ia pentru orice i, 1 ≤i≤n

caz în care spunem că A este diagonal dominantă. Deci dacă ai,i ≠ 0 pentru orice i

= 1,2,…, n, şi dacă A este diagonal dominantă atunci şirul obţinut prin metoda

Jacobi converge la soluţia exactă a sistemului Ax = b. Dacă ek = x*- xk este eroarea

absolută cu care xk aproximează x*, soluţia exactă a sistemului Ax = b, atunci ek =

Gke0 pentru orice k ≥ 0. În consecinţă, pentru orice norme compatibile

0k0k0kk eGeGeGe ≤≤≤

Fie n1,∞ = min(1

G ,∞

G ) şi fie ε > 0 dat. Vom considera xk este o aproximaţie

satisfăcătoare pentru soluţia exactă a sistemului dacă

(n1,∞)k < ε.

Page 85: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

85

ceea ce este echivalent cu

k ≥ ( )

( ) 1nln

ln

,1

+

ε

.

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

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

xk+1 = N-1P xk + N-1 b, k ≥ 0, xk+1 = G xk + N-1 b, k ≥ 0, Deci pentru orice i, 1 ≤ i ≤n,

k 1ix + =

nk

i, j jj 1

g x=∑ + i

i,i

b

a=

nk

i, j jj 1j i

g x=≠

∑ - i

i,i

b

a=

ni, j k

ji,ij 1

j i

ax

a=≠

−∑ + i

i,i

b

a.

În consecinţă, şirul (xk)k construit prin metoda Jacobi este:

x0 dat

k 1ix + =

i,i

1

a(bi -

nk

i, j jj 1j i

a x=≠

∑ ), i =1,2,…,n, k≥0.

Următoarea procedură Maple are drept parametri matricea sistemului,

vectorul termenilor liberi, aproximaţia iniţială x0 a soluţiei, şi eroarea epsilon.

Procedura întoarce aproximaţia xk (dată de metoda Jacobi) a soluţiei cu

k = ( )( ) 1nln

epsln

,1

+

.

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

Page 86: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

86

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

Utilizăm această procedură pentru rezolvarea sistemului:

3 x1 + x2 + x3 = 4

x1 + 5x2 + x3 = -2

-x1 + x2 + 8x3 = 14

> a:=matrix(3,3,[3,1,1,1,5,1,-1,1,8]);

:= a

3 1 1

1 5 1

-1 1 8

Page 87: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

87

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

, ,

19195311920000

-80011718000000

5119999725600000

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

[ ], ,0.9997557292 -1.000146375 1.999999883

IV.4.3. Metoda Gauss-Seidel

Metoda Gauss-Seidel corespunde desfacerii

N = L + D, P = -R.

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

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

Deci

k 11x + =

1,1

1

a((Pxk)1 + b1) =

1,1

1

a(

nk

1, j jj 1

P x=∑ + b1) =

1,1

1

a(

nk

1, j jj 2

P x=∑ + b1) =

a1,1 0 0 … 0 0

a2,1 a2,2 0 … 0 0

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

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

k 11x +

k 12x +

k 1nx +

= Pxk + b

Page 88: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

88

= 1,1

1

a(

nk

1,j jj 2

a x=

−∑ + b1) = 1,1

1

a(b1 -

nk

1,j jj 2

a x=∑ )

şi pentru orice i , 2 ≤ i ≤n, avem

k 1ix + =

i,i

1

a((Pxk)i + bi -

i 1k 1

i, j jj 1

a x−

+

=∑ ) =

i,i

1

a (

nk

i, j jj 1

P x=∑ + bi -

i 1k 1

i, j jj 1

a x−

+

=∑ )

= i,i

1

a(

nk

i, j jj i 1

P x= +∑ + bi -

i 1k 1

i, j jj 1

a x−

+

=∑ )

= i,i

1

a(

nk

i, j jj i 1

a x= +

−∑ + bi - i 1

k 1i, j j

j 1

a x−

+

=∑ )

= i,i

1

a( bi -

nk

i, j jj i 1

a x= +∑ -

i 1k 1

i, j jj 1

a x−

+

=∑ )

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

x0 dat

pentru k≥0, k 11x + =

1,1

1

a(b1 -

nk

1, j jj 2

a x=∑ )

k 1ix + =

i,i

1

a( bi -

nk

i, j jj i 1

a x= +∑ -

i 1k 1

i, j jj 1

a x−

+

=∑ ), i =2,3,…,n

Ca şi în cazul metodei Jacobi dacă A este diagonal dominantă atunci şirul obţinut

prin metoda Gauss-Seidel converge la soluţia exactă a sistemului Ax=b. De

asemenea dacă A este o matrice simetrică şi are elementele de pe diagonala

principală pozitive, atunci metoda Gauss-Seidel converge dacă şi numai dacă

matricea A este pozitiv definită.

Procedura Maple de mai jos are drept parametri, matricea sistemului

presupusă diagonal dominantă, vectorul termenilor liberi, aproximaţia iniţială x0 a

soluţiei, şi eroarea epsilon. Procedura întoarce aproximaţia xk (dată de metoda

Gauss Seidel) a soluţiei cu

k = ( )( ) 1

PNln

epsilonln1

+

−.

Page 89: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

89

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

Utilizăm această procedură pentru rezolvarea sistemului:

Page 90: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

90

3 x1 + x2 + x3 = 4

x1 + 5x2 + x3 = -2

-x1 + x2 + 8x3 = 14

> a:=matrix(3,3,[3,1,1,1,5,1,-1,1,8]);

:= a

3 1 1

1 5 1

-1 1 8

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

17038933299767160885500343322731703893329976655609856000000000

-170389332997668792871267240303170389332997665560985600000000

, ,

90874310932088608517489022451014543715546604414959616000000000

> 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 acelaşi timp dacă se dispune de un calculator serie obişnuit.

Metoda Jacobi este preferabilă metodei Gauss Seidel c-se dispune de un calculator

paralel.

Page 91: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

91

V. Rezolvarea ecuaţiilor şi sistemelor neliniare

V.1 Rezolvarea ecuaţiilor neliniare

Presupunem date a, b∈R, f: [a,b] → R. Problema pe care o studiem este

determinarea numerelor reale x∈[a,b] cu proprietatea că f(x) = 0. Numim un număr

real x*∈[a,b] cu proprietatea că f(x*) = 0, soluţie (sau rădăcină) a ecuaţiei f(x) = 0

sau zerou al funcţiei f pe intervalul [a,b].

Dacă f : [a,b] → R, este o funcţie continuă cu proprietatea că

f(a)f(b) < 0.

Atunci există cel puţin o rădăcină x* ∈(a,b) a ecuaţiei f(x) = 0. Rădăcina ecuaţiei

f(x) = 0 nu este neapărat unică.

Presupunem că f : [a,b] → R este o funcţie derivabilă, x*∈(a,b) o rădăcină a

ecuaţiei f(x) = 0 şi x = x* + h o aproximaţie a lui x*. Aplicând formula lui Taylor

rezultă că

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

unde ( )

h 0

o hlim

h→=0. Ca urmare,

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

şi

x -x*≈≤

1

f (x*)′(f( x ) - f(x*)).

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

f (x)′. Dacă ε > 0 şi

x este un număr real cu proprietatea că |f( x )| ≤ ε atunci

Page 92: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

92

| x - x*| ≤ ε 1

f (x*)′.

(unde x* este o rădăcină a ecuaţiei f(x) = 0). În general, | x -x*| şi |f( x )| nu sunt

simultan mici (| x -x*| este eroarea absolută cu care x aproximează x*, iar |f( x )|

indică reziduu corespunzător lui x ). Dacă problema este bine condiţionată (1

f (x*)′

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

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

şir (xk)k convergent către o rădăcină x* a ecuaţiei. Eroarea absolută cu care xk

aproximează x* este ek = x* - xk. Se spune că şirul (xk)k converge cu rata r dacă

există o constantă C ∈ (0, ∞) astfel încât

r

k

1k

k e

elim +

∞→ = C.

Dacă

• r = 1 şi 0 < C<1, rata convergenţei se spune liniară

• r = 1 şi C = 0 (sau r > 1), rata convergenţei se spune superliniară

• r = 2, rata convergenţei se spune pătratică

problemă bine condiţionată problemă rău condiţionată

Page 93: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

93

V.1. 1. Metoda bisecţiei (metoda înjumătăţirii intervalului)

Fie f : [a,b] → R, o funcţie continuă cu proprietatea că

f(a)f(b) < 0.

Atunci există cel puţin o rădăcină x* ∈(a,b) a ecuaţiei f(x)=0. Pentru găsirea

rădăcinii se micşorează la fiecare pas intervalul în care funcţia îşi schimbă semnul.

Metoda bisecţiei presupune înjumătăţirea la fiecare pas a acestui interval. Astfel

• se determină mijlocul c = 2

ba + al intervalului (a,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]

• dacă f(c) =0 s-a determinat o rădăcină a ecuaţiei f(x) = 0.

Se construieşte astfel un şir de intervale (In)n , In = [an, bn], cu lungimea lui In egală

cu jumătate din lungimea lui In-1. Fiecare din aceste intervale conţine o soluţie a

ecuaţiei f(x) = 0. Presupunem că se dă o precizie ε>0. Considerăm că cn mijlocul

intervalului In este o aproximaţie satisfăcătoare a soluţiei ecuaţiei f(x) = 0 dacă

lungimea lui In este mai mică decât ε. Dacă notăm Ln = |bn - an| lungimea

intervalului In, avem Ln = 1

2Ln-1 = ... =

n

1

2L0 =

n

1

2|b-a|. Ca urmare Ln < ε dacă şi

numai dacă n

1

2|b-a| < ε sau echivalent n >

( )( )

ln b a

ln 2

− ε.

Algoritm

Date de intrare:

f continuă, a, b cu f(a)f(b)<0

ε (precizie)

Date de ieşire:

c mijlocul intervalului In = [an, bn] cu | an-bn |<ε (c este o aproximaţie a unei

rădăcini x* ∈(a,b) a ecuaţiei f(x) = 0 cu eroarea absolută |x*-c| < 2

ε).

Page 94: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

94

nmax:=( )

( )ln b a

ln 2

− ε

+1;

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

c: =2

ba + ;

dacă f(c) = 0 atunci j : = nmax +1

altfel dacă f(c)f(a)<0 atunci b : = c;

altfel a : = c;

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

2).

Procedură MAPLE

> bisectie:=proc(f,A,B,epsilon)

> local c,a,b,nmax,j;

> a:=A; b:=B;

> nmax:=floor(ln(abs(b-a)/epsilon)/ln(2))+1;

> for j from 0 to nmax do

> c:=(a+b)/2;

> if f(c)=0 then a:=c;b:=c;else

> if evalf(f(c)*f(a))<0 then b:=c else a:=c fi fi

> od;

> c:=(a+b)/2;

> RETURN(c)

> end;

Utilizăm această procedură pentru determinarea rădăcinilor reale ecuaţiei:

x8 –3x-3 = 0.

Reprezentăm grafic funcţia

x->x8 –3x-3

pentru a localiza rădăcinile.

> with(plots):

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

Page 95: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

95

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

Page 96: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

96

Se observă că ecuaţia are două rădăcini reale. Una în intervalul (-1.5, -0.5) şi alta în

intervalul (1,1.5).

> f:=(x-> x^8-3*x-3);

:= f → x − − x8 3 x 3

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

52074096

> 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 rădăcinile ecuaţiei f(x) = 0.

V.1.2. Metoda coardei

Fie f : [a,b] → R, o funcţie continuă cu proprietatea că

f(a)f(b) < 0.

Rădăcina ecuaţiei f(x)=0 se caută ca şi în cazul metodei bisecţiei prin micşorarea la

fiecare pas a intervalului în care funcţia îşi schimbă semnul. Metoda coardei

presupune următoarele:

• 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]

Page 97: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

97

• dacă f(c) =0 s-a determinat o rădăcină a ecuaţiei f(x) = 0.

Să determinăm coordonatele punctului C de intersecţie a dreptei AB cu axa Ox,

unde A(a,f(a)) şi B(b,f(b)) .

Ox: y = 0

AB: ( )( ) ( )afbf

afy

ab

ax

−−

=−−

Dacă C(c,0) =AB ∩ Ox, atunci

c = a - ( ) ( )afbf

ab

−− f(a)

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

proprietăţile: f’(x) ≠ 0, f”(x) ≠ 0, oricare ar fi x ∈ [a, b] şi f(a)f(b) < 0. Atunci unica

soluţie a ecuaţiei f(x) = 0 poate fi obţinută ca limită a şirului strict monoton din [a,

b] definit prin:

x0 = a, xn = xn-1 - ( )

( ) ( )bfxf

xf

1n

1n

−−

− (xn-1-b), dacă f(a)f”(a)<0

şi

x0 = b, xn = xn-1 - ( )

( ) ( )afxf

xf

1n

1n

−−

− (xn-1-a), dacă f(b)f”(b)<0

Dacă m1 > 0, M1 > 0 sunt astfel încât m1 ≤ |f’(x)| ≤ M1 şi dacă x* este unica soluţie

a ecuaţiei f(x) = 0, atunci eroarea absolută cu care termenul xn aproximează x*

satisface inegalităţile:

b c1 c2 a

Page 98: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

98

|x*-xn| ≤ ( )

1

n

m

xf

|x*-xn| ≤ 1nn1

11 xxm

mM−−

Demonstraţie. Deoarece f ′ (x) ≠ 0 pentru orice x ∈[a, b], rezultă că f ′ este

fie strict pozitivă, fie strict negativă, deci f este strict monotonă. Ţinând cont şi de

faptul că f(a)f(b) < 0, rezultă că ecuaţia f(x) = 0 are o unică soluţie x*. Presupunem

că f(a)f”(a)< 0 şi că f(a)< 0 (înlocuind eventual f cu –f). Deoarece f”(x) ≠ 0 pentru

orice x ∈[a, b] şi f”(a)>0, rezultă că f” este strict pozitivă. Din faptul că f este strict

monotonă şi f(a) < 0 < f(b), rezultă că f ′ este strict pozitivă. Dacă B este punctul

de coordonate (b,f(b)) şi Cn-1 punctul de coordonate (xn-1, f(xn-1)), atunci xn este

abscisa punctului de intersecţie a coardei BCn-1 cu axa Ox. Ca urmare f(xn-1) < 0.

Deoarece f este o funcţie Rolle pe intervalul [xn-1, b], conform teoremei lui

Lagrange există dn-1 ∈( xn-1, b) astfel încât f(xn-1) – f(b) = f ′ (dn-1)(xn-1 – b). Avem

xn = xn-1 - ( )

( ) ( )bfxf

xf

1n

1n

−−

− (xn-1-b) = xn-1 - ( )( )

n 1

n 1

f x

f d−

−′ > xn-1.

Deci şirul (xn)n este crescător şi mărginit (termenii şirului aparţin intervalului

(a,x*)). Fie x limita şirului (xn)n. Trecând la limită în

xn = xn-1 - ( )

( ) ( )bfxf

xf

1n

1n

−−

− (xn-1-b)

obţinem

x = x - ( )

( ) ( )f x

f x f b−

( x -b),

de unde rezultă f( x ) = 0. Deoarece x* este unica rădăcină a ecuaţiei f(x) = 0 din

intervalul (a, b) rezultă că x* = x . Analog se arată că dacă f(b)f”(b)<0 şirul definit

prin

x0 = b, xn = xn-1 - ( )

( ) ( )afxf

xf

1n

1n

−−

− (xn-1-a)

este strict descrescător către x*.

Page 99: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

99

Conform teoremei lui Lagrange pentru orice x∈[a, b] există dx între x şi x*

astfel încât 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| =( )( )

n

n

f x

f d′ ≤

( )1

n

m

xf.

Dacă presupunem că f(a)f”(a)<0 şi

xn = xn-1 - ( )

( ) ( )bfxf

xf

1n

1n

−−

− (xn-1-b)

atunci

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

n 1

f x f b

x b−

−(xn – xn-1),

şi ţinând cont că f(x*) = 0,

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

n 1

f x f b

x b−

−(xn – xn-1).

Conform teoremei lui Lagrange există ηn∈(xn-1, x*) şi ζn ∈ (xn-1, b) astfel încât:

f(x*) – f(xn-1) = (x* - xn-1) f ′ (ηn)

f(xn-1) – f(b) = (xn-1 - b) f ′ (ζn)

Ţinând cont de

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

n 1

f x f b

x b−

−(xn – xn-1).

obţinem

(x* - xn-1) f ′ (ηn) = f ′ (ζn) (xn – xn-1)

şi deci

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

n

n

f

f

′ ζ

′ η (xn – xn-1) - (xn – xn-1)

= (( )( )

n

n

f

f

′ ζ

′ η - 1) (xn – xn-1),

Page 100: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

100

de unde | x* - xn | = ( ) ( )

( )n n

n

|f f |

|f |

′ ′ζ − η

′ η | xn – xn-1| ≤ 1 1

1

M m

m

−| xn – xn-1|, deoarece

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

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

derivabilă cu f’(x)≠0, f”(x) ≠ 0 oricare ar fi x∈[a, b], f(a)f(b)<0, şi fie

x0 = a, xn = xn-1 - ( )

( ) ( )bfxf

xf

1n

1n

−−

− (xn-1-b), dacă f(a)f”(a)<0

şi

x0 = b, xn = xn-1 - ( )

( ) ( )afxf

xf

1n

1n

−−

− (xn-1-a), dacă f(b)f”(b)<0

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

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

intersecţie a axei Ox cu coarda BCn-1 unde B(b,f(b)) şi Cn-1(xn-1, f(xn-1)). Aşadar

avem subcazurile

1.1 f ′ > 0 (f strict crescătoare)

1.2 f ′ < 0 (f strict descrescătoare)

x0 = a x1 x2 b

1.1. f” > 0, f(a) < 0

Page 101: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

101

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

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

şi Cn-1(xn-1, f(xn-1)). Aşadar avem subcazurile

2.1. f ′ > 0 (f strict descrescătoare)

2.2. f ′ < 0 (f strict crescătoare)

2.3.

x0 = a x1 x2 b

1.2. f” < 0, f(a) > 0

a x2 x1 x0 = b

2.1. f” > 0, f(b) < 0

Page 102: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

102

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 ieşire:

• xN aproximaţie a unicei rădăcini x* ∈(a,b) a ecuaţiei f(x) = 0, unde

x0 = a, xn = xn-1 - ( )

( ) ( )bfxf

xf

1n

1n

−−

− (xn-1-b), dacă f(a)f”(a)<0

x0 = b, xn = xn-1 - ( )

( ) ( )afxf

xf

1n

1n

−−

− (xn-1-a), dacă f(b)f”(b)<0

iar N este cel mai mic număr natural cu proprietatea că |xN –xN-1| < ε

a x2 x1 x0 = b

2.2 f” < 0, f(b) > 0

Page 103: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

103

dacă f(a) f”(a) < 0 execută

x1: = b ; x2: = a;

cât timp | x1-x2 | ≥ ε execută

x1: = x2;

x2 : = x1 - ( )

( ) ( )f x1

f x1 f b−(x1-b),

altfel

x1: = a ; x2: = b;

cât 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 număr 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;

Page 104: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

104

Aplicăm această procedură pentru determinarea rădăcinilor reale ale ecuaţiei:

x8 –3x-3 = 0.

În secţiunea precedentă rădăcinile au fost localizate în intervalele (-1.5, -0.5) şi

(1,1.5).

> f:=(x-> x^8-3*x-3);

:= f → x − − x8 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 rădăcini a ecuaţiei

f(x) = 0. Presupunem că f este derivabilă şi că derivata nu se anulează. Rădăcina

ecuaţiei este determinată ca limita unui şir. Se pleacă de la un punct x0 dat.

Presupunând că s-a construit termenul xn-1, termenul xn se determină ca fiind

abscisa intersecţiei dintre tangenta la graficul funcţiei în xn-1 şi axa Ox.

xn xn-1

Page 105: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

105

Ecuaţia tangentei în xn-1 este:

y – f(xn-1) = f ′ (xn-1)(x – xn-1)

Deci intersecţia cu axa Ox se află rezolvând sistemul

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

y 0

′=

=

În consecinţă ,

xn = xn-1 - ( )( )

n 1

n 1

f x

f x−

−′.

Convergenţa şirului este determinată de termenul iniţial x0. Următoarea

teoremă stabileşte condiţii suficiente pentru convergenţa metodei tangentei.

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

derivabilă cu următoarele proprietăţi: f’(x)≠0, f”(x) ≠ 0 oricare ar fi x∈[a, b] şi

f(a)f(b)<0. Atunci unica soluţie x* a ecuaţiei f(x) = 0 este limita a şirului (xn)n

definit prin:

xn = xn-1 - ( )( )

n 1

n 1

f x

f x−

−′, n ≥ 1

unde x0∈ [a, b] este ales astfel încât f(x0)f”(x0) > 0. În plus, oricare ar fi n ≥ 1

eroarea absolută cu care termenul xn aproximează x* verifică următoarele

inegalităţi:

|x* - xn| ≤ ( )

1

n

m

xf

|x* - xn| ≤ ( )21nn

1

2 xxm2

M−−

unde m1 = ( )x [a,b]

f xinf∈

′ şi M2 = ( )x [a,b]

f xsup∈

′′ .

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

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

Page 106: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

106

strict negativă, deci f este strict monotonă. Ţinând cont şi de faptul că f(a) < 0 şi f(b)

> 0, rezultă că f este strict crescătoare şi că f ′ este strict pozitivă. Deoarece

f(a)f(b)<0, rezultă că ecuaţia f(x) = 0 are o cel puţin soluţie x*, iar din faptul că f

este strict crescătoare rezultă că soluţia este unică. Deoarece f”(x) ≠ 0 pentru orice

x∈[a, b], f” este fie strict pozitivă, fie strict negativă. Să presupunem f”>0. Atunci

f(x0) > 0 şi deci x0 > x*. Arătăm prin inducţie după n că xn > x* pentru orice n ≥0.

Presupunem că xn > x* şi demonstrăm că xn+1 > x*. Aplicând formula lui Taylor

rezultă că există ζn între xn şi x* astfel încât

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

1!

− f ′ (xn) +

( )2nx * x

2!

−f”(ζn)

Din faptul că f”(ζn) > 0, rezultă că

0 > f(xn) + nx * x

1!

− f ′ (xn)

de unde

xn+1 = xn - ( )( )

n

n

f x

f x′> xn + x* - xn = x*.

Ca urmare xn > x* pentru orice n ≥0. Deoarece f este strict crescătoare,

f(xn) > f(x*) = 0,

şi în consecinţă,

xn+1 = xn - ( )( )

n

n

f x

f x′ < xn pentru orice n ≥ 0.

Aşadar şirul (xn)n este strict descrescător şi mărginit inferior, deci este convergent.

Fie x limita şirului (xn)n. Avem x0 > x ≥ x*. Trecând la limită în

xn = xn-1 - ( )( )

n 1

n 1

f x

f x−

−′

obţinem

x = x - ( )( )

f x

f x′

,

de unde rezultă f( x ) = 0. Deoarece x* este unica rădăcină a ecuaţiei f(x) = 0 din

intervalul [a, b] rezultă că x* = x . Similar se tratează cazul f” < 0.

Page 107: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

107

Conform teoremei lui Lagrange pentru orice x∈[a,b] există dx între x şi x*

astfel încât 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| =( )( )

n

n

f x

f d′ ≤

( )1

n

m

xf.

Aplicând formula lui Taylor rezultă că există ηn între xn şi xn-1 astfel încât

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

1!−−

f ′ (xn-1) + ( )2

n n 1x x

2!−−

f”(ηn)

Ţinând cont şi de faptul că xn = xn-1 - ( )( )

n 1

n 1

f x

f x−

−′ sau echivalent

xn - xn-1 = - ( )( )

n 1

n 1

f x

f x−

−′,

obţinem

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

n 1

n 1

f x

f x−

−′f ′ (xn-1) +

( )2n n 1x x

2!−−

f”(ηn)

= ( )2

n n 1x x

2!−−

f”(ηn).

Ca urmare

|x* - xn| ≤ ( )

1

n

m

xf=

1

1

m

( )2n n 1x x

2!−−

|f”(ηn)| ≤ 2

1

M

2m(xn – xn-1)

2.

Observaţie 5.3. Rata convergenţei pentru metoda tangentei este pătratică.

Într-adevăr, să presupunem că f : [a, b] → R o aplicaţie de două ori derivabilă cu

f’(x)≠0, f”(x) ≠ 0 oricare ar fi x∈[a, b], f(a)f(b)<0, şi că

xn = xn-1 - ( )( )

n 1

n 1

f x

f x−

−′, n ≥ 1

unde x0∈ [a, b] este ales astfel încât f(x0)f”(x0) > 0. Din teorema anterioară rezultă

că (xn)n converge la x* unica soluţie a ecuaţiei f(x) = 0. Aplicând formula lui

Taylor rezultă că există ζn între xn şi x* astfel încât

Page 108: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

108

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

1!

− f ′ (xn) +

( )2nx * x

2!

−f”(ζn),

de unde

x* - xn = - ( )( )

n

n

f x

f x′ -

( )( )

n

n

f

f x

′′ ζ

′1

2(x*-xn)

2,

sau echivalent

x* - xn + ( )( )

n

n

f x

f x′= -

( )( )

n

n

f

f x

′′ ζ

′1

2(x*-xn)

2.

Aşadar

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

n

n

f

f x

′′ ζ

′1

2(x*-xn)

2,

şi trecând la limită obţinem

n 12n n

| x * x |lim

| x * x |+

→∞

−=

( )( )

| f x * |

2 | f x * |

′′

′≤ 2

1

M

2m

unde m1 = ( )x [a,b]

f xinf∈

′ şi M2 = ( )x [a,b]

f xsup∈

′′ .

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

derivabilă cu f’(x)≠0, f”(x) ≠ 0 oricare ar fi x∈[a, b], f(a)f(b)<0, şi fie

xn = xn-1 - ( )( )

n 1

n 1

f x

f x−

−′, n ≥ 1

unde x0∈ [a, b] este ales astfel încât f(x0)f”(x0) > 0. Atunci şirul (xn)n converge la x*

unica soluţie a ecuaţiei f(x) = 0. Pentru orice n ≥1, xn reprezintă abscisa punctului

de intersecţie a axei Ox cu tangenta la graficul lui f în punctul de coordonate (xn-1,

f(xn-1)). Deoarece f’ şi f” nu se anulează pe [a, b], rezultă că sunt fie strict pozitive

fie strict negative. Aşadar avem

Cazul 1. f” > 0 (f strict convexă)

1.1. f ′ > 0 (f strict crescătoare)

1.2. f ′ < 0 (f strict descrescătoare)

Page 109: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

109

Cazul 2. f” < 0 (f strict concavă)

2.1. f ′ > 0 (f strict crescătoare)

2.2. f ′ < 0 (f strict descrescătoare)

x2 x1 x0

1.1. f’ > 0, f” > 0

x0 x1 x2

1.2. f’ < 0, f” > 0

Page 110: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

110

Deci pentru aplicarea metodei tangentei în rezolvarea ecuaţiei f(x) = 0 trebuie

stabilite intervalele de monotonie şi intervalele de convexitate/concavitate pentru

funcţia f. Dacă a şi b sunt capetele unui astfel de interval şi dacă f(a)f(b)<0, atunci

se alege în intervalul [a, b] un punct x0 astfel încât f(x0)f”(x0)>0. Şirul construit rin

x0 x1 x2

2.1. f’ > 0, f” < 0

x2 x1 x0

2.2. f’ < 0, f” < 0

Page 111: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

111

metoda tangentei, având termenul iniţial x0 converge la unica rădăcină a ecuaţiei

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

Algoritm

Date de intrare:

f - în condiţiile 1.1,1.2,2.1 sau 2.2

x0 - f(x0)f”(x0)>0

ε >0 (precizia –determină condiţia de oprire a iteraţiilor)

Date de ieşire: xN cu proprietatea că N este cel mai mic număr natural pentru care

|xN – xN-1 |2 < ε.

unde (xn)n este şirul corespunzător metodei tangentei (xN este considerat o

aproximaţie satisfăcătoare a unicei soluţii a ecuaţiei f(x)=0)

x1 := x0;

x2 : = x1 - ( )( )1xf

1xf′

;

cât timp | x2 – x1 |2 ≥ ε execută

x1 := x2;

x2 : = x1 - ( )( )1xf

1xf′

;

Prezentăm în continuare o variantă a acestui algoritm pentru cazul în care f nu

verifică neapărat condiţiile suficiente de convergenţă. Introducem ca dată

suplimentară de intrare numărul maxim de termeni din şir ce urmează a fi calculaţi

(Nmax). Condiţia de oprire se transformă

| xn - xn-1 |2 < ε sau n > Nmax

x1 := x0;

x2 : = x1 - ( )( )1xf

1xf′

;

n : = 1;

Page 112: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

112

cât timp (| x2 – x1 |2 ≥ ε ) şi (n ≤ Nmax) execută

x1 := x2;

x2 : = x1 - ( )( )1xf

1xf′

;

n : = n + 1;

Trebuie verificat la ieşirea din ciclu dacă f(x2) ≅ 0. Dacă problema este bine

condiţionată, aceasta condiţie va asigura acurateţea aproximaţiei.

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

Page 113: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

113

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

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

:= f1 → x + + eeee 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));

Page 114: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

114

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 108

-0.5376704605 108

,Numar de termeni calculati 10

:= xN -0.5376704605 108

> f2(xN);

-0.5376704787 108

V.2. Rezolvarea sistemelor neliniare

Presupunem date o mulţime G ⊂ Rn şi o funcţie f = (f1, f2, ..., fn): G → Rn.

Problema pe care o studiem este determinarea vectorilor n-dimensionali

x = (x1, x2, ..., xn)t ∈G

Page 115: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

115

cu proprietatea că f(x) = 0 sau echivalent

f1(x1, x2, ..., xn) = 0

f2(x1, x2, ..., xn) = 0

...............................

fn(x1, x2, ..., xn) = 0

Numim soluţie a sistemului (de n ecuaţii cu n necunoscute) f(x) = 0 pe G un vector

x*∈G ⊂ Rn cu proprietatea că f(x*) = 0,.

Presupunem că G ⊂ Rn este o mulţime deschisă, ||⋅|| o normă pe Rn care

induce o normă pe L(Rn, Rn) ) ≅ Mn,n(R) notată tot ||⋅||, f = (f1, f2, ..., fn) : G → Rn

este o funcţie diferenţiabilă şi x*∈G o soluţie a sistemului f(x) = 0. De asemenea fie

x = x* + δh ∈G (h∈Rn cu ||h||=1, δ∈R) o aproximaţie a lui x*. Notăm cu Jf(x)

jacobianul funcţiei f în punctul x, adică matricea

( )i

j 1 i, j n

fx

x≤ ≤

∂ ∂

.

Aplicând formula lui Taylor rezultă că

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

unde ( )

0

|| o ||limδ→

δ

δ=0. Ca urmare,

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

Jf(x*)-1(f( x ) - f(x*) - o(δ)) =( x -x*)

şi

|| x -x*||≈≤ || Jf(x*)-1|| f( x ) - f(x*)||.

Deci factorul de condiţionare absolut al problemei f(x) = 0 este|| Jf(x)-1||. Dacă ε >

0 şi x este un număr real cu proprietatea că |f( x )| ≤ ε atunci

| x - x*| ≈≤ ε|| Jf(x*)-1||

(unde x* este o soluţie a sistemului f(x) = 0). În general, || x -x*|| şi ||f( x )|| nu sunt

simultan mici (|| x -x*|| este eroarea absolută cu care x aproximează x*, iar ||f( x )||

indică reziduu corespunzător lui x ). Dacă problema este bine condiţionată (adică

Page 116: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

116

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

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

Metodele iterative de rezolvare a unui sistem de ecuaţii f(x)=0 presupun

construcţia unui şir (xk)k convergent către o rădăcină x* a ecuaţiei. Eroare absolută

cu care xk aproximează x* este ek = x* - xk. Se spune că şirul (xk)k converge cu rata

r dacă există o constantă C ∈ (0, ∞) astfel încât

k 1

k rk

|| e ||lim

|| e ||

+

→∞ = C.

Dacă

• r = 1 şi C<1, rata convergenţei se spune liniară

• r=1 şi C = 0 (sau dacă r > 1), rata convergenţei se spune superliniară

• r = 2, rata convergenţei se spune pătratică

V.2.1. Metoda punctului fix

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

numeşte contracţie dacă şi numai dacă există q∈ (0,1) astfel încât

d(f(x), f(y) ≤ q d(x,y)

pentru orice x,y ∈X

Definiţie 5.5 Fie f: X → X. Punctul α ∈X se numeşte punct fix pentru f

dacă f(α) = α.

Teoremă 5.6. (metoda punctului fix). Fie (X,d) un spaţiu metric complet

şi fie f : X → X o contracţie. Atunci există şi este unic x* punct fix pentru f. Punctul

x* este limita unui şir construit după cum urmează:

x0 ∈ X dat

xn = f(xn-1), n ≥ 1.

Mai mult, dacă numărul q ∈ (0,1) este astfel încât d(f(x), f(y)) ≤ qd(x,y)

pentru orice x,y ∈ X, atunci pentru orice n≥1 avem

Page 117: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

117

1. d(x*, xn) ≤ q

1 q−d(xn, xn-1)

2. d(x*, xn) ≤ nq

1 q−d(x1, x0)

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

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

încât d(f(x), f(y)) ≤ qd(x,y) pentru orice x,y ∈ X. Arătăm unicitatea punctului fix.

Presupunem prin absurd că x* şi y* sunt puncte fixe ale lui f şi că x* ≠ y*. Atunci

f(x*) = x* şi f(y*) = y* şi avem

d(x*, y*) = d(f(x*), f(y*)) ≤ q d(x*, y*) < d(x*, y*),

ceea ce este o contradicţie. În consecinţă, punctul fix (dacă există) este unic. Arătăm

că şirul (xn)n este convergent şi limita lui este punct fix pentru f. Pentru orice k≥0 ş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 ţinând 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)

= k1 q

1 q

−−

d(xn+1, xn).

Deci

d(xn+k, xn) ≤ k1 q

1 q

−−

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

Din faptul că d(xn+1, xn) = d(f(xn), f(xn-1)) ≤ q d(xn, xn-1) ≤ ... ≤ qn d(x1, x0) şi din

relaţia (1) rezultă

d(xn+k, xn) ≤ k1 q

1 q

−−

d(xn+1, xn) ≤ k1 q

1 q

−−

qn d(x1, x0) ≤1

1 q−qn d(x1, x0).

Ca urmare

d(xn+k, xn) ≤ 1

1 q−qn d(x1, x0) (2).

Page 118: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

118

Fie ε>0. Deoarece q ∈ (0,1), n

nlim q→∞

= 0, şi de aici rezultă că există nε ∈N astfel

încât qn < ε1 0

1 q

d(x , x )

−. Ţinând cont de relaţia (2) obţinem

d(xn+k, xn) < ε

pentru orice n ≥ nε şi orice k≥0. Deci (xn)n este şir Cauchy şi deoarece X este spaţiu

complet rezultă că (xn)n este convergent. Notăm x* = nnlim x→∞

. Arătăm că x* este

punct fix pentru f. Funcţia f fiind contracţie este funcţie continuă. Trecând la limită

cu n → ∞ în

xn = f(xn-1)

obţinem

nnlim x→∞

= n 1nlim f (x )−→∞

= n 1n

f ( lim x )−→∞

,

de unde ţinând cont că x* = nnlim x→∞

= n 1nlim x −→∞

rezultă

x* = f(x*),

adică x* este punct fix pentru f.

Din relaţia (1) rezultă

d(xn+k, xn) ≤ k1 q

1 q

−−

d(xn+1, xn) ≤.k1 q

1 q

−−

q d(xn, xn-1)

şi trecând la limită cu k → ∞, se obţine

d(x*, xn) ≤ q

1 q−d(xn, xn-1).

În continuare folosind şi faptul că d(xn, xn-1) ≤ qn-1d(x1, x0) se obţine

d(x*, xn) ≤ nq

1 q−d(x1, x0).

Pentru a arăta ultima afirmaţia din teoremă ţinem seama de

d(x*, xn) = d(f(x*), f(xn-1)) ≤ q d(x*, xn-1).

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

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

Page 119: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

119

număr q ∈ (0,1) este astfel încât ||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 x0∈E, şirul definit recursiv

prin

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

converge la x*.

Mai mult, pentru orice n≥1 avem

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

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

2. ||x*- xn|| ≤ nq

1 q−||x1- x0||

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

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

E atunci (S,d) (unde d(x,y) = || x-y||) este spaţiu metric complet. În consecinţă,

afirmaţiile rezultă aplicând direct teorema precedentă.

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

este liniară.

Algoritm:

Date de intrare:

f (contracţie)

x0 (termenul iniţial al şirului)

ε (precizia ce determină condiţia de oprire: se calculează termenii şirului

până la xN cu proprietatea ||xN-xN-1|| < ε).

Date de ieşire:

xN (aproximaţie satisfăcătore (determinată de ε) pentru punctul fix).

x1:=x0;

x2:=f(x1);

cât timp 1x2x − ≥ε execută

x1:=x2;

x2:=f(x1);

Page 120: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

120

La ieşire x2 este aproximaţie pentru x*, punctul fix al lui f. Faptul că f este

contracţie asigură terminarea programului într-un număr finit de paşi. Pentru a evita

ciclarea în situaţia în care s-ar încerca folosirea algoritmului pentru o funcţie care

nu este contracţie, se poate stabili de la început un număr maxim de paşi ce urmează

a fi executaţi. De asemenea se poate afişa la fiecare pas diferenţa dintre termenii

consecutivi curenţi. (pentru a observa că şirul nu converge dacă f nu e contracţie).

Astfel se poate folosi următoarea variantă a algoritmului:

Date de intrare:

f (contracţie)

x0 (termenul iniţial al şirului)

ε (precizia)

Nmax (număr maxim de termeni ai şirului ce urmează a fi calculaţi)

Condiţia de oprire: se calculează termenii şirului până la xN cu proprietatea

||xN-xN-1|| < ε sau N ≥ Nmax).

Date de ieşire:

xN (dacă f este contracţie, xN este aproximaţie satisfăcătore - determinată de

ε şi Nmax - pentru punctul fix al lui f).

x1:=x0;

x2:=f(x1);

n:=1;

cât timp ( 1x2x − ≥ε) sau (n<Nmax) execută

x1:=x2;

x2:=f(x1);

n:=n+1;

Dacă f este contracţie şi Nmax suficient de mare, la ieşirea din ciclu, x2 este

aproximaţie pentru x*, punctul fix al lui f.

Page 121: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

121

Interpretare geometrică: f: I → I contracţie, I ⊂ R interval închis

Propoziţie 5.9. Fie a, b două numere reale cu a < b şi fie f: [a, b] → [a,b] ⊂

R o funcţie derivabilă cu proprietatea că x (a,b)

sup | f (x) |∈

′ < 1. Atunci f este contracţie.

Demonstraţie. Notăm q = x (a,b)

sup | f (x) |∈

′ . Avem q ∈ (0,1). Fie x, y ∈ [a, b].

Aplicând teorema lui Lagrange, rezultă că există ζ între x şi y astfel încât

f(x) – f(y) = f ′ (ζ) (x – y),

de unde obţinem

|f(x) – f(y)| = | f ′ (ζ) | |x – y| ≤ q|x – y|.

Exemple.

1) Să se rezolve (în mulţimea numerelor reale) ecuaţia următoare aplicând

metoda punctului fix

x3 – x -1 = 0.

Se poate arăta că ecuaţia x3 – x -1 = 0 are o singură rădăcină reală, şi că această

rădăcină este în intervalul (1,2). Ecuaţia se poate scrie:

x3 = x+1

x = 3 1x +

x0 x2 x4 x3 x1

y = f(x)

y = x

Page 122: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

122

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

3 23

1

(x 1)+ şi deci

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

′ = 1

3 3

1

4< 1

Ca urmare f este contracţie pe intervalul [1,2]. Deci soluţia ecuaţiei poate fi aflată ca

limita şirului (xn)n, cu

xn = f(xn-1) = 3n 1x 1− + , x0∈[1,2].

2) Să se rezolve (în mulţimea numerelor reale) ecuaţia următoare aplicând

metoda punctului fix

x – cos(x) = 0

Notăm g(x) = x – cos(x). Cum cos(x) ∈ [-1, 1], soluţiile ecuaţiei x – cos(x) =

0 se găsesc în intervalul [-1, 1]. Deoarece g′ (x) = 1 + sin(x) > 0 pentru x din

intervalul [-1, 1], rezultă că g este strict crescătore pe [-1, 1] şi deci ecuaţia

x – cos(x) = 0

are cel mult o rădăcină. Cum g(0)g(2

π)<0, ecuaţia x – cos(x) = 0 are exact o

rădăcină în intervalul [0, 2

π]. Fie f: [0,

2

π] → [0,

2

π], f(x) =

1

2( x +cos(x)). Avem

f ′ (x) = 1

2(1 – sin(x)) şi deci

x (0, 2)sup | f (x) |

∈ π′ =

1

2< 1

Ca urmare f este contracţie pe intervalul [0, 2

π]. Deci soluţia ecuaţiei poate fi aflată

ca limita şirului (xn)n, cu

xn = f(xn-1) =1

2( xn-1 +cos(xn-1)), x0∈[0,

2

π].

Procedura MAPLE de mai jos implementează metoda punctului fix pentru o

contracţie pe un interval închis al lui R.

Page 123: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

123

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

Exemplificăm aplicarea procedurii pentru contracţiile

f1: [1,2] → [1,2], definită prin f1(x) = 3 x 1+ .

f2: [0, 2

π] → [0,

2

π], f2(x) =

1

2( x +cos(x))

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 + 12

x12

( )cos x

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

0.7390856959

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

0.7390851332

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

Rm.

> punctfixM:=proc(f,x0,epsilon,Nmax)

> local m,x1, x2,n, norma,i;

> m:=nops(x0);

Page 124: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

124

> x1:=x0;

> x2:=[seq(f[i](op(x1)), i=1..m)];

> n:=1;

> norma:=0;

> for i from 1 to m do norma:=norma + abs(x2[i]-x1[i]) od;

> while (evalf(norma) >= epsilon) and (n < Nmax) do

> x1:=x2;

> x2:=[seq(f[i](op(x1)), i=1..m)];

> n:=n+1;

> norma:=0;

> for i from 1 to m do norma:=norma + abs(x2[i]-x1[i]) od;

> od;

> RETURN(x2)

> end;

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

funcţie de clasă C1 (derivabilă cu derivata continuă) care admite un punct fix x*.

Dacă | f ′ (x*)| < 1, atunci există un interval închis I ⊂ [a, b] astfel încât x*∈I şi f|I

este contracţie. Ca urmare şirul definit prin xn = f(xn-1), n≥1 converge la x* pentru

orice termen iniţial x0∈I.

Demonstraţie. Deoarece | f ′ (x*)| < 1 şi | f ′ | este continuă, rezultă că există

ε>0 astfel încât | f ′ (x)| < 1 pentru orice x cu proprietatea că |x-x*| < ε. Luăm

I = [x* - 2

ε, x* +

2

ε].

Deoarece | f ′ | este continuă, există ζ ∈ I astfel încât x Isup | f (x) |

∈′ = | f ′ (ζ)| <1. Dacă

mai arătăm şi că f(I) ⊂ I, rezultă că f|I este contracţie. Aplicând formula lui

Lagrange rezultă că pentru orice x ∈ I există ζx între x şi x* astfel încât

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*| ≤ 2

ε,

de unde rezultă că f(x) ∈ [x* - 2

ε, x* +

2

ε] = I.

Page 125: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

125

Observaţie 5.11. Fie J ⊂ R un interval deschis şi f: J → R o funcţie de clasă C2

care admite o rădăcină x* ∈ J cu proprietatea că f ′ (x*) ≠ 0. Deoarece | f ′ | este

continuă şi | f ′ (x*)| > 0, rezultă că există un interval J0 ⊂ J astfel încât x* ∈ J0 şi

pentru orice x ∈ J0 avem | f ′ (x)| > 0 (sau echivalent f ′ (x) ≠ 0). Considerăm funcţia

g:J0→R, definită prin g(x) = x – 1

f (x)′f(x). Avem

g(x*) = x* - 1

f (x*)′ f(x*) = x*,

deci x* punct fix pentru g. Cum

g′ (x) = 1 - 2

2

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

f (x)

′ ′′−

′=

2

f (x)f (x)

f (x)

′′

′,

rezultă că

| g′ (x*)| = ( ) ( )

( )2*xf

*xf*xf

′′=0 < 1.

Din propoziţia precedentă rezultă că există un interval închis I ⊂ J0 ⊂ J

astfel încât x*∈I şi g|I : I → I este contracţie. Ca urmare şirul definit prin recurenţă

xn= g(xn-1), n≥1 converge la x* pentru orice termen iniţial x0∈I. Din definiţia lui g

rezultă că

xn = xn-1 – n 1

1

f (x )−′f(xn-1), n ≥ 1,

adică şirul corespunzător metodei tangentei pentru ecuaţia f(x) = 0.

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

L(Rm, Rm) ≅ Mm,m(R)

notată tot ||⋅||. Fie a ∈ Rm, r>0, S = ( )B a, r = x ∈ Rm, ||x-a|| ≤ r, şi f : S → S o

funcţie diferenţiabilă pe S cu proprietatea că x Ssup || Jf (x) ||

∈< 1, unde Jf(x) este

jacobianul funcţiei f în punctul x, adică matricea

Page 126: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

126

( )i

j 1 i, j m

fx

x≤ ≤

∂ ∂

.

Atunci f este contracţie.

Demonstraţie. Notăm q =x Ssup || Jf (x) ||

∈. Avem q ∈ (0,1). Fie x, y ∈S.

Aplicând teorema creşterilor finite , rezultă că

||f(x) – f(y)|| ≤ [0,1]

sup || Jf (x (y x)) ||θ∈

+ θ − ||x – y|| ≤x Ssup || Jf (x) ||

∈||x – y|| ≤

≤ q||x – y||.

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

L(Rm, Rm) ≅ Mm,m(R)

notată tot ||⋅||. Fie G ⊂ Rm o mulţime deschisă şi fie f: G → Rm o funcţie de clasă C1

care admite un punct fix x*. Dacă ||Jf (x*)|| < 1, atunci există r > 0 astfel încât dacă

notăm

S = ( )B x*, r = x ∈ Rm, ||x-x*|| ≤ r

avem S ⊂ G şi f|S : S → S este contracţie. Ca urmare şirul definit prin xn=f(xn-1),

n≥1 converge la x* pentru orice termen iniţial x0∈S.

Demonstraţie. Deoarece G este deschisă, ||Jf (x*)|| < 1 şi ||Jf|| este continuă,

rezultă că există ε>0 astfel încât pentru orice x cu proprietatea că ||x-x*|| < ε avem

x∈ G şi ||Jf(x)|| < 1. Luăm r = 2

ε.

Deoarece ||Jf|| este continuă şi S compactă, există ζ ∈ S astfel încât

x Ssup || Jf (x) ||

∈= ||Jf (ζ)|| <1.

Dacă mai arătăm şi că f(S) ⊂ S, rezultă că f|S este contracţie. Aplicând formula lui

Taylor rezultă că pentru orice x ∈ S există ζx = x* + θx(x-x*) ∈ S astfel încât

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

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

Page 127: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

127

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

||f(x) – x*|| = ||fζx)(x-x*)|| ≤||Jfζx)|| || x-x*||< || x-x*||≤r

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

V.2.2. Metoda Newton – cazul m-dimensional

Metoda Newton (varianta m - dimensională, m>1) este o generalizare a

metodei tangentei. Este o metodă iterativă de rezolvare a unor sisteme de m ecuaţii

şi m necunoscute:

f(x) = 0,

unde f : G → Rm, G ⊂ Rm.

La fel ca în secţiunile precedente convenim să notăm cu x1, x2,…, xn,… un

şir de elemente din Rm. Rezervăm indicii inferiori pentru a desemna componentele

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

Rm este o funcţie diferenţiabilă pe G, identificăm diferenţiala de ordinul I a lui f în

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

Jf(x) = ( )mj,i1j

i xx

f

≤≤

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

Metoda Newton constă în aproximarea soluţiei ecuaţiei considerate cu xn,

unde

xn = xn-1 – Jf(xn-1)-1 f(xn-1) (*)

iar aproximaţia iniţială x0∈G este suficient de apropiată de soluţia sistemului.

Observaţii. 1) Presupunem că f este de clasă C2 şi sistemul f(x) = 0 admite o

soluţie x* ∈ G cu proprietatea că Jf(x*) este matrice inversabilă (sau echivalent

det(Jf(x*)) ≠0). Atunci există o vecinătate deschisă V ⊂ G a lui x* astfel încât

pentru orice x ∈ V să avem Jf(x) este inversabilă. Considerăm funcţia

Page 128: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

128

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,

aplicând propoziţia precedentă rezultă că există r > 0 astfel încât astfel dacă notăm

S = ( )r*,xB = x ∈ Rm, ||x-x*|| ≤ r

avem S ⊂ V şi g|S : S → S este contracţie. Ca urmare şirul definit prin xn= g(xn-1),

n≥1 converge la x* pentru orice termen iniţial x0∈S. Din definiţia lui g rezultă că

xn = xn-1 – Jf(xn-1)-1 f(xn-1), n ≥ 1,

adică şirul dat de relaţia (*) (corespunzător metodei lui Newton pentru f(x) = 0 cu

termenul iniţial x0 ∈S).

2) Amplificând relaţia (*) cu Jf(xn-1) rezultă

Jf(xn-1)(xn - xn-1) = –f(xn-1) (**)

sau echivalent

( ) ( ) ( )n 1m i n n 1 n 1

j j ijj 1

f xx x f x

x

−− −

=

∂− = −

∂∑ , i = 1,2,…, m

Dacă se foloseşte relaţia (*) pentru determinarea lui xn este necesar să se calculeze

inversa matricei Jf(xn-1). Dacă se foloseşte relaţia (**), este necesar să se rezolve un

sistem liniar cu m ecuaţii, şi necunoscutele n 1 n n 1k k kx x x− −∆ = − , k = 1, …, m.

Rezolvarea acestui sistem necesită un număr mai mic de operaţii decât inversarea

matricei Jf(xn-1). Folosim relaţia (**) se înlocuieşte rezolvarea sistemului neliniar

prin rezolvarea succesivă a unor sisteme liniare.

3) Una din dificultăţile metodei este necesitatea determinării derivatelor

parţiale ( )xx

f

j

i

∂, componentele matricei Jf(x) (dacă se utilizează un mediu de

programare simbolică cum este MAPLE aceasta nu e o dificultate majoră). O

Page 129: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

129

posibilitate de eliminare a acestei dificultăţi este aproximarea derivatelor parţiale

prin diferenţe finite

( ) ( ) ( )( ) ( )xxfehxfh

1x

x

fiji

jiji

ijj

i ∆=−+≈∂

unde hij sunt parametri specifici discretizării considerate, iar

ej =(0,..,0,1,0…0)t

sunt vectorii bazei canonice. În acest fel Jf(x) se înlocuieşte prin

J(x) = (∆ij(x))1≤i,j≤m

Metoda obţinută în acest caz se numeşte metoda iterativă discretă a lui Newton:

xn = xn-1 – J(xn-1)-1 f(xn-1), n ≥ 1.

Metoda Newton este o metodă frecvent folosită deoarece este foarte rapid

convergentă (rata convergenţei este pătratică). Dar ca şi în cazul metodei tangentei

convergenţa metodei depinde de alegerea aproximaţiei iniţiale. Aproximaţia iniţială

trebuie luată cât mai aproape de soluţia problemei, eventual utilizând o altă metodă

de găsire a soluţiei. În următoarele teoreme se presupune că s-a fixat o normă pe

Rm, notată , iar pe spaţiile de operatori liniari L(Rm, Rm), L(Rm, L(Rm, Rm)) se

consideră normele operatoriale induse. Pentru x ∈ Rm şi r > 0, se notează B(x,r)

mulţimea:

my , y x r∈ − <R

şi cu ( )B x, r închiderea acestei mulţimi, adică

my , y x r∈ − ≤R

Teoremă 5.14. (Metoda Newton). Fie G ⊂ Rm o mulţime deschisă, f : G →

Rm o funcţie de clasă C2, cu proprietatea că există M > 0 astfel ca ( )2d f x ≤ M

pentru orice x ∈G. Presupunem că ecuaţia f(x) = 0 admite o soluţie x* astfel încât

Jf(x*) să fie inversabil. Atunci pentru orice q ∈ (0, 1) există r, µ > 0 astfel încât

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

Page 130: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

130

rămâne în B(x*,r) oricare ar fi x0 ∈ B(x*,r) şi converge la x*. În plus, au loc

următoarele relaţii

nn 22

x x * qM

µ− ≤

( ) 2n n n n 11 Mx x * f x x x

2−− ≤ ≤ −

µ µ.

Parametrii procedurii mnewton (de mai jos) sunt

funcţia f (se presupune că se rezolvă sistemul f(x) = 0)

x0 = termenul iniţial din şirul definit de (**)

epsilon = precizia

Nmax = numărul maxim de termeni din şir ce vor fi calculaţi

Se calculează n termeni, cu n verificând

( 2n n 1x x − ∞− < epsilon) sau (n≥Nmax).

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 apaţine pachetului linalg. Comanda

>norm(a, t);

calculează norma t, unde t =1, 2, infinity a vectorului (sau matricei) a. Este de

asemenea o comanda ce aparţine pachetului linalg.

Procedură MAPLE

> mnewton := proc(f, x0, epsilon, Nmax)

> local m,x1, x2, dx, b, fx, fx1, n, i, j, ex, r;

> m:=vectdim(x0);x1 := vector(m);x2:=vector(m);

> for i to m do x1[i] := x0[i] od;

> dx := vector(m);

> b := vector(m);

> fx := jacobian(f(seq(x[i],i=1..m)), [seq(x[i],i=1..m)]);

> fx1 := matrix(m, m);

> ex := seq(x[i] = x1[i], i = 1 .. m);

> for i to m do

Page 131: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

131

> 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 [ ], − x2 y − x3 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

Page 132: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

132

[ ],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 [ ], + − x2 y2 1 − x3 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

Page 133: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

133

[ ],-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 x2 2 y z 0.1 − + + y y2 3 x z 0.2 + + − z z2 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 calculării la fiecare pas a inversei unei matrice, Jf(xn), sau eventual a

rezolvării unui sistem de ecuaţii liniare (aşa cum remarcam mai înainte). Un alt

dezavantaj este localizarea teoretică a procesului iterativ într-o vecinătate a soluţiei

Page 134: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

134

căutate. Metoda Newton simplificată înlătură primul inconvenient. Această variantă

a metodei constă în aproximarea soluţiei cu xn, unde x0, c ∈ G, şi

xn = xn-1 – Jf(c)-1 f(xn-1), n ≥ 1 (***)

Următoarea teoremă stabileşte condiţii suficiente de convergenţă a acestei

metode.

Teoremă 5.15 (Metoda Newton simplificată). Fie G ⊂ Rm o mulţime

deschisă, f : G → Rm o funcţie de clasă C2, cu proprietatea că există M > 0 astfel ca

( )2d f x ≤M pentru orice x ∈G. Presupunem că ecuaţia f(x) = 0 admite o soluţie x*

astfel încât Jf(x*) să fie inversabil. Atunci pentru orice q ∈ (0, 1) există r, µ, L > 0

astfel încât 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

rămâne în B(x*,r) oricare ar fi x0 ∈ B(x*,r) şi converge la x*. În plus, au loc

următoarele relaţii

n n 0x x * q x x *− ≤ −

( ) 2n n n 1 n1 Lx x * f x x x+− ≤ ≤ −

µ µ.

Parametrii procedurii mnewtonsimplif (de mai jos) sunt

funcţia f (se presupune că se rezolvă sistemul f(x) = 0)

x0 = termenul iniţial din şirul definit de (***)

c = punctul în care se evaluează inversa matricei jacobiene

epsilon = precizia

Nmax = numărul maxim de termeni din şir ce vor fi calculaţi

Se calculează n termeni, cu n verificând

(2

n n 1x x − ∞− < epsilon) sau (n≥Nmax).

Procedură MAPLE

> mnewtonsimplif := proc(f, x0,c,epsilon, Nmax)

> local m,x1, x2, dx, b, fx, fx1, n, i, j, ex, r;

Page 135: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

135

> 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 [ ], − x2 y − x3 5 y

> mnewtonsimplif(f,vector([6,0.1]),vector([6,0.1]),10^(-5),20);

[ ],5.250000002 27.00000000

Page 136: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

136

[ ],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 [ ], + − x2 y2 1 − x3 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

Page 137: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

137

[ ],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 x2 2 y z 0.1 − + + y y2 3 x z 0.2 + + − z z2 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

Page 138: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

138

[ ], ,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

vecinătate a soluţiei problemei. Metoda Newton – Kantorovici constă în

aproximarea rădăcinii ecuaţiei considerate cu xn, unde

xn = xn-1 – Jf(xn-1)-1 f(xn-1), n ≥ 1, (****)

iar aproximaţia iniţială x0∈G satisface condiţiile din teorema următoare.

Teoremă 5.16. (Metoda Newton-Kantorovici). Fie G ⊂ Rm o mulţime

deschisă, f : G → Rm o funcţie de clasă C2, cu proprietatea că există M > 0 astfel ca

( )2d f x ≤M pentru orice x ∈G. Presupunem că există x0∈ G şi există a, b >0 astfel

încât:

Jf(x0) este inversabilă şi ||Jf(x0)-1|| ≤ a, ||Jf(x0)-1f(x0)|| ≤ b,

abM < 2

1

( )r,xB 0 ⊂ G, unde r = 1

(1 1 2abM)aM

− − .

Atunci f(x) = 0 are o unică soluţie x* în ( )r,xB 0 , şirul (xn)n, este corect

definit prin

xn = xn-1 – Jf(xn-1)-1 f(xn-1), n ≥ 1,

rămâne în B(x0 , r) şi converge la x*. În plus, are loc următoarea relaţie

nn 1

bx x *

2 −− ≤ , n ≥ 1.

Page 139: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

139

VI. Aproximarea funcţiilor

Fie f : [a, b] → R o funcţie. Se pune problema determinării unei funcţii F

care să aproximeze funcţia f. O astfel de aproximaţie este necesară în următoarele

situaţii:

1. Când nu se cunoaşte expresia analitică a lui f, ci doar valorile sale într-un

număr finit de puncte x0, x1, …, xn din intervalul [a, b].

2. Când expresia analitică a lui f este prea complicată şi calculele efectuate cu

ajutorul acesteia ar fi prea dificile.

F trebuie să fie o funcţie simplă, uşor de evaluat, de diferenţiat şi de integrat.

VI.1. Polinoame de interpolare

În cele ce urmează aproximarea funcţiei f : [a, b] → R se face cu un polinom.

VI.1.1. Definiţie. Eroarea de interpolare.

Definiţie. Fie x0, x1, …, xn n+1 puncte distincte două câte două din

intervalul [a, b] (numite noduri), şi fie yi = f(xi) pentru orice i = 0,1,…n. Se

numeşte polinom de interpolare asociat nodurilor x0, x1, …, xn şi valorilor y0=f(x0),

y1= f(x1), …, yn=f(xn) un polinom Pn care îndeplineşte următoarele condiţii

grad(Pn) ≤ n

Pn(xi) = yi, i = 0, 1, …, n .

Polinomul determinat de condiţiile anterioare există şi este unic. Într-adevăr,

deoarece grad(Pn) ≤ n, există an, an-1, ...a0 ∈R astfel încât

Pn(X) = anXn + an-1X

n-1 + … + a1X + a0

Relaţiile Pn(xi) = yi, i = 0, 1, …, n conduc la sistemul:

Page 140: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

140

a0 + a1x0 + a220x + … + an

n0x = y0

a0 + a1x1 + a221x + … + an

n1x = y1

(*)

a0 + a1xn + a22nx + … + an

nnx = yn

Determinatul acestui sistem este

1 x0 20x … n

0x

∆ = 1 x1 21x … n

1x = ( )∏≤<≤

−nij0

ji xx

1 xn 2nx … n

nx

(fiind un determinant Vandermonde). Deci ∆ ≠0, şi în consecinţă sistemul (*) este

compatibil determinat, adică polinomul de interpolare Pn este unic determinat.

Coeficienţii polinomului de interpolare pot fi determinaţi rezolvând 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 următoare stabileşte eroarea maximă cu care polinomul Pn

aproximează funcţia f:

Teoremă 6.1. (eroarea de interpolare). Fie f : [a, b] → R o funcţie de

clasă Cn+1. Fie x0, x1, …, xn n+1 puncte distincte două câte 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 încât

f(x) – Pn(x) = ( )

(n 1)xf ( )

n 1 !

+ ζ

+ (x – x0) (x – x1) … (x – xn).

În consecinţă, oricare ar fi x ∈ [a, b], avem:

Page 141: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

141

| f(x) – Pn(x) | ≤[ ]

( ) ( )

( )

n 1

t a,bf tsup

n 1 !

+

+ |(x – x0) (x – x1) … (x – xn)|.

Demonstraţie. Fie x ∈[a, b]. Dacă x ∈ x0, x1, …, xn, atunci

f( x ) = Pn( x )

şi

( x – x0) ( x – x1) … ( x – xn) = 0,

ca urmare

f( x ) - Pn( x ) = 0 = ( )

(n 1)f ( )

n 1 !

+ ζ+

( x – x0) ( x – x1) … ( x – xn)

pentru orice ζ ∈(a,b). Presupunem că x ∉ x0, x1, …, xn şi considerăm funcţia

g:[a, b] → R, definită prin

g(x) = f(x) – Pn(x) - c (x – x0) (x – x1) … (x – xn),

unde constanta c va fi determinata astfel încât g( x ) = 0 sau echivalent

0 = g( x ) = f( x ) – Pn( x ) - c( x – x0) ( x – x1) … ( x – xn)

c = n

0 1 n

f (x) P (x)

(x x )(x x )...(x x )

− − −.

Deci g( x ) = 0 şi g(xi) = 0 pentru orice i =0, 1, ..., n. Aşadar g se anulează în n+2

puncte distincte. Deoarece g este o funcţie Rolle, rezultă că derivata g′ se anulează

în n+1 puncte distincte din intervalul (a,b). Repetând raţionamentul cu g′ , rezultă

că g′′ se anulează în n puncte distincte din (a, b). Raţionând 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

aşa mai departe. Se obţine că există xζ ∈ (a, b) astfel încât

g(n+1)( xζ ) = 0.

Pe de altă parte deoarece gradul lui Pn este cel mult n, rezultă că (n 1)nP (x)+ = 0

pentru orice x ∈ [a, b] şi deoarece x → (x – x0) (x – x1) … (x – xn) este o funcţie

polinomială de grad n+1 cu coeficientul termenului de grad maxim 1, rezultă că a

n+1 derivată a sa este (n+1)!. În consecinţă, pentru orice x∈[a, b], avem

Page 142: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

142

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

În particular, pentru x = xζ se obţine

0 = g(n+1)( xζ ) = f(n+1)( xζ ) - c(n+1)!,

de unde

c = ( )

(n 1)xf ( )

n 1 !

+ ζ

+.

Cum pe de altă parte avem

c = n

0 1 n

f (x) P (x)

(x x )(x x )...(x x )

− − −.

Rezultă că

n

0 1 n

f (x) P (x)

(x x )(x x )...(x x )

− − − =

( )

(n 1)xf ( )

n 1 !

+ ζ

+,

sau echivalent,

f( x ) – Pn( x ) = ( )

(n 1)xf ( )

n 1 !

+ ζ

+ (x – x0) (x – x1) … (x – xn).

În plus,

|f( x ) – Pn( x )| ≤ [ ]

( ) ( )

( )

n 1

t a,bf tsup

n 1 !

+

+ |(x – x0) (x – x1) … (x – xn)|.

VI.1.2. Eroarea de interpolare în cazul nodurilor echidistante

Fie f : [a, b] → R o funcţie şi fie x0, x1, …, xn n+1 noduri echidistante din

intervalul [a, b]:

xi = a + ih, i = 0, 1, ...n, h = b a

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:

Page 143: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

143

| f(x) – Pn(x) | ≤[ ]

( ) ( )

( )

n 1

t a,bf tsup

n 1 !

+

+ |(x – x0) (x – x1) … (x – xn)|.

Pentru orice x ∈[a, b] există i astfel încât x ∈ [xi, xi+1] şi ca urmare

|(x – xi) (x – xi+1)| ≤ h

2

h

2 =

2h

4.

De asemenea se poate arăta că

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

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

şi ţinând seama că (j+1)!(n-j)! ≤ n! se obţine

|(x – x0) (x – x1) … (x – xn)| ≤ n 1h

4

+n!,

şi deci eroarea de interpolare satisface:

| f(x) – Pn(x) | ≤ n 1h

4(n 1)

+

+ [ ]

( ) ( )n 1

t a,bf tsup +

∈.

VI.1.3. Eroarea de interpolare în cazul nodurilor Cebîşev

Pentru n ∈ N dat, se numesc noduri Cebîşev (rădăcini ale polinomului

Cebîşev de grad n+1) numerele reale:

xi = 2i 1

cos2n 2

+ π + , 0 ≤ i ≤ n.

Polinoamele Cebîşev 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 Cebîşev sunt proiecţiile pe axa OX a unor puncte egal

distanţate situate pe un semicerc:

Page 144: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

144

Nodurile Cebîşev au proprietatea că

|(x – x0) (x – x1) … (x – xn)| ≤ n

1

2

pentru orice x∈ [-1, 1]. Se poate arăta că pentru oricare alte noduri ci, i=0, ...,n.

x [ 1,1]sup

∈ −|(x – c0) (x – c1) … (x – cn)| ≥ n

1

2.

Nodurile Cebîşev pot fi scalate şi translatate pentru a putea fi folosite pe un interval

oarecare [a, b]:

xi = b a

2

− 2i 1cos

2n 2

+ π + +

b a

2

+, 0 ≤ i ≤ n.

Astfel în cazul nodurilor Cebîşev eroarea de interpolare este

| f(x) – Pn(x) | ≤ n 1

2n 1

(b a)

2 (n 1)!

+

+−

+ [ ]

( ) ( )n 1

t a,bf tsup +

∈.

VI.1.2. Polinomul Lagrange de interpolare

Fie f : [a, b] → R o funcţie, fie x0, x1, …, xn n+1 puncte distincte din intervalul [a,

b], şi yi = f(xi) pentru orice i = 0,1,…n. Se numesc polinoame Lagrange cele n+1

polinoame li, i =0, 1, ...n cu proprietăţile

grad (li) = n

li(xj) = δij = 1, dacă i = j

0, dacă i≠ j

Pentru orice i = 0, 1, ...n, deoarece li are gradul n şi admite drept rădăcini 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).

Page 145: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

145

Cum li(xi) = 1, rezultă

Ai = ( )( ) ( )( ) ( )i 0 i 1 i i 1 i i 1 i n

1

x x x x .... x x x x ... x x− +− − − − −,

şi ca urmare

li(x) = ( )( ) ( )( ) ( )

( )( ) ( )( ) ( )0 1 i 1 i 1 n

i 0 i 1 i i 1 i i 1 i n

x x x x .... x x x x ... x x

x x x x .... x x x x ... x x− +

− +

− − − − −

− − − − −

Forma Lagrange a polinomului de interpolare este:

Ln(x) = y0l0(x) + y1l1(x) + … + ynln(x)

Se observă uşor că

Ln(xi) = y0l0(xi) + y1l1(xi) + … + ynln(xi) = yili(xi) = yi

pentru orice i = 0, 1, …, n şi că grad(Ln) ≤ n. Aşadar 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) = ( )( ) ( )( ) ( )( )( ) ( )( ) ( )

n0 1 i 1 i 1 n

ii 0 i 1 i i 1 i i 1 i ni 0

x x x x .... x x x x ... x xy

x x x x .... x x x x ... x x− +

− +=

− − − − −

− − − − −∑

numită formă Lagrange.

Algoritm pentru determinarea polinomului Lagrange

Date de intrare:

x – listă ce conţine cele n+1 puncte distincte din intervalul [a, b]

x0 x1 … xn

y – lista ce conţine valorile funcţiei în punctele x0, x1, ...., xn

y0 y1 … yn

yi = f(xi), i = 0,1,…, n a – punctul în care se evaluaeză polinomul.

Date de ieşire:

v - valoarea polinomului în x

v : =0;

Page 146: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

146

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

74

> PLagrange([1,-1,3],[2,-5,-1],-1);

-5

> expand(PLagrange([1,-1,3],[2,-5,-1],X));

− + − 54

X2 72

X14

Page 147: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

147

Considerăm funcţia f1: R → R definită prin f1(x) = xcos(x) şi nodurile x0=0,

x1= 2

3

π , x2 =

4

3

π şi x3 = 2π. Vom aplica procedura PLagrange pentru a determina

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

3

π , x2 =

4

3

π şi x3 = 2π şi

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

grafic funcţia f1 şi polinomul asociat pe intervalul [0, 2π], şi apoi pe intervalul

[-π,3π].

> f1:=x->x*cos(x);

:= f1 → x x ( )cos x

> x1:=[seq(2*Pi/3*i,i=0..3)];

:= x1

, , ,0

2 π3

4 π3

2 π

> y1:=[seq(f1(2*Pi/3*i),i=0..3)];

:= y1

, , ,0 −

π3

−2 π3

2 π

> expand(PLagrange(x1,y1,X));

− + 27 X3

16 π2

27 X2

8 πX

> with(plots):

> plot([f1(a),PLagrange(x1,y1,a)],a=0..2*Pi);

> plot([f1(a),PLagrange(x1,y1,a)],a=-Pi..3*Pi);

Page 148: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

148

Considerăm funcţia f2: R → R definită prin f2(x) = cos(x) + sin(x). Se poate

observa uşor că |f(k)(x)| ≤ 2 pentru orice x∈R şi orice k∈N. Vom considera

intervalul [0,2π] şi nodurile echidistante corespunzătoare lui n = 3. Eroarea de

interpolare este dominată de 4h

162, unde h =

2

3

π

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

:= f2 → x + ( )sin x ( )cos x

> x2:=[seq(2*Pi/3*i,i=0..3)];

:= x2

, , ,0

2 π3

4 π3

2 π

> y2:=[seq(f2(2*Pi/3*i),i=0..3)];

:= y2

, , ,1 −

32

12

− − 3

212

1

> expand(PLagrange(x2,y2,X));

− + + − + 27 X2

16 π2

27 X8 π

127 X3 3

16 π3

81 X2 3

16 π2

27 X 38 π

> plot(f2(a),PLagrange(x2,y2,a),a=0..2*Pi);

Page 149: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

149

Considerăm funcţia f3: R → R definită prin f3(x) = 2

1

1 x+. Vom reprezenta grafic

funcţia şi polinoamele de interpolare corespunzătoare nodurilor echidistante,

respectiv nodurilor Cebîşev pentru n = 3 pe intervalul [-1, 1]:

> f3:=x->1/(1+x^2);

:= f3 → x1

+ 1 x2

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

:= x4

, , ,-1

-13

13

1

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

Page 150: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

150

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

Reprezentăm grafic funcţia şi polinoamele de interpolare corespunzătoare 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)];

:= x_3

, ,

, , ,-5

-53

53

5

, , , , , ,-5

-103

-53

053

103

5

, , , , , , , , ,-5

-359

-259

-53

-59

59

53

259

359

5

> y_3:=[seq([seq(evalf(f3(-5+10*i/(3*j))),i=0..3*j)],j=1..3)];

Page 151: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

151

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

Reprezentăm grafic funcţia şi polinoamele de interpolare corespunzătoare nodurilor

Cebîşev 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);

Page 152: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

152

Reprezentăm grafic funcţia şi polinoamele de interpolare corespunzătoare nodurilor

echidistante, respectiv nodurilor Cebîşev 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);

Reprezentăm grafic funcţia şi polinoamele de interpolare corespunzătoare 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)];

Page 153: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

153

x_5 [ ], , , , ,-5 -3 -1 1 3 5 [ ], , , , , , , , , ,-5 -4 -3 -2 -1 0 1 2 3 4 5, , :=

, , , , , , , , , , , , , , ,-5

-133

-113

-3-73

-53

-1-13

13

153

73

3113

133

5

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

Reprezentăm grafic funcţia şi polinoamele de interpolare corespunzătoare nodurilor

Cebîşev 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)];

Page 154: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

154

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

Reprezentăm grafic funcţia şi polinoamele de interpolare corespunzătoare nodurilor

echidistante, respectiv nodurilor Cebîşev 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);

Page 155: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

155

Fie f : [a, b] → R şi un şir de diviziuni ∆n = ( ( )n0x , ( )n

1x , …, ( )nnx ) ale

intervalului [a, b], n ≥ 0. Pentru fiecare n se construieşte polinomul de interpolare Pn

asociat nodurilor ( )n0x , ( )n

1x , …, ( )nnx şi valorilor ( )( )n

0f x , ( )( )n1f x , …, ( )( )n

nf x .

Se pune problema convergenţei punctuale sau uniforme a lui Pn la f. În general, Pn

nu converge la f, însă dacă f este o funcţie întreagă reală şirul de polinoame Pn

converge uniform la f.

În cele ce urmează vom considera trei funcţii f1, f3 : R → R, definite mai sus

precum şi f4 : R → R respectiv f4(x) = |x|.

> f4:=x->abs(x);

:= f4 abs

Vom vizualiza comportarea polinoamelor de interpolare (sub forma Lagrange) L0,

L1,...,Ln asociate unor noduri ( )n0x , ( )n

1x , …, ( )nnx şi valorilor ( )( )n

0f x , ( )( )n1f x , …,

( )( )nnf x (cu exemplificări pentru f ∈ f1, f2, f3).

Page 156: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

156

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 Cebîşev altfel).

Ceilalţi parametri ai procedurii sunt funcţia f (care se aproximează prin polinoame

de interpolare), capetele intervalului [a, b] şi n care indică numărul 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), y1=`,

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

`)`);

> titlu:=cat(titlu, `\nL i = polinomul de interpolare asociat

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

y1, ...,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;

Aplicăm procedura pentru funcţia f1 pe intervalele [0, 2π], [-π, 3π] , funcţia f3 pe

intervalul [-3, 3] şi funcţia f4 pe intervalul [-1, 1]. În toate cazurile n = 10 şi se

consideră două variante: noduri echidistante şi noduri Cebîşev.

> grafic_polinoame(f1,0,2*Pi,1,10);

Page 157: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

157

> grafic_polinoame(f1,0,2*Pi,2,10);

> grafic_polinoame(f1,-Pi,3*Pi,1,10);

Page 158: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

158

> grafic_polinoame(f1,-Pi,3*Pi,2,10);

> grafic_polinoame(f3,-3,3,1,10);

Page 159: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

159

> grafic_polinoame(f3,-3,3,2,10);

> grafic_polinoame(f4,-1,1,1,10);

Page 160: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

160

> grafic_polinoame(f4,-1,1,2,10);

Page 161: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

161

VI. 1.5. Polinomul Newton de interpolare de speţa I (ascendent)

Fie f : [a, b] → R o funcţie, fie x0, x1, …, xn n+1 puncte distincte din

intervalul [a, b], şi yi = f(xi) pentru orice i = 0,1,…n. Punctele x0, x1, …, xn se

presupun echidistante, adică

xi = x0 + ih, i = 0,1, …, n

h ≠0 fiind pasul reţelei. Se construiesc iterativ polinoamele Pi, i= 0, 1, ..., n astfel

încât pentru fiecare i, Pi să fie polinomul de interpolare asociat nodurilor x0, x1, …,

xi şi valorilor y0, y1, …, yi. Construcţia se face după cum urmează

P0(x) = y0

Pi+1(x) = Pi(x) + ci+1(x-x0)(x-x1)...(x-xi), i =0, 1,..., n-1,

unde ci+1 se determină din condiţia Pi+1(xi+1) = yi+1.

Ca urmare polinomul de interpolare asociat nodurilor x0, x1, …, xn şi valorilor y0,y1,

…, yn poate fi scris sub forma

Pn(x) = c0 + c1(x-x0) + c2(x-x0)(x-x1) + .... + cn(x-x0)(x-x1)...(x-xn-1)

Pentru exprimarea coeficienţilor c0, c1, …, cn este necesară cunoaşterea

noţiunilor de putere generalizată şi diferenţă finită.

Fie f : [a, b] → R o funcţie, şi fie reţeaua cu nodurile echidistante x0, x1, …,

xn, având pasul h > 0. Produsul

x[n] = x(x-h)…(x-(n-1)h)

se numeşte putere generalizată a lui x. Dacă h ar fi 0, atunci puterea generalizată ar

coincide cu puterea obişnuită. Expresia

∆f(x) = f(x+h) - f(x)

se numeşte diferenţă finită (la dreapta) de ordinul întâi. Diferenţele finite de

ordin superior se definesc cu ajutorul relaţiei:

∆nf(x) = ∆(∆n-1f(x))

Se verifică cu uşurinţă relaţiile

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

∆(cf) = c∆(f)

∆(m+n)(f) = ∆m(∆nf).

Page 162: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

162

Pentru aplicaţii, calculul diferenţelor finite este comod dacă se construieşte tabelul

triunghiular următor:

f(x0) f(x1) f(x2) f(x3) f(xn-3) f(xn-2) f(xn-1) f(xn)

∆f(x0) ∆f(x1) ∆f(x2) ∆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

0 1 0f (x ) f (x ) f (x )∆ = −

20 1 0

2 1 1 0

2 1 0

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

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

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

∆ = ∆ − ∆

= − − −

= − +

3 2 20 1 0

3 2 1 0

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

f (x ) 3f (x ) 3f (x ) f (x )

∆ = ∆ − ∆

= − + +

Se poate demonstra uşor prin inducţie că

( ) ( ) ( )( )n

in in

i 0

f x 1 C f x n i h=

∆ = − + −∑

dar în aplicaţii se va folosi tabelul diagonal de mai sus.

Pentru determinarea unui coeficientul ci al polinomului de interpolare Pn se

utilizează diferenţa finită de ordinul i a lui Pn în x0. Ţinând cont de

Pi+1(x) = Pi(x) + ci+1(x-x0)(x-x1)...(x-xi), i =0, 1,..., n-1,

se obţine

ci+1 = i 1 i i 1i 1

y P (x )

(i 1)!h+ +

+−

+.

şi se poate arătă inductiv că

ci+1 = i 1

0i 1

f (x )

(i 1)!h

+

+

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

Page 163: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

163

Aşadar

( )[ ] ( )[ ] ( )[ ]

( )[ ]

2 31 2 30 0 0

n 0 0 0 02 3

nn0

0n

f (x ) f (x ) f (x )P (x) f (x ) x x x x x x ....

1!h 2!h 3!h

f (x )... x x

n!h

∆ ∆ ∆= + − + − + − + +

∆+ + −

Expresia polinomului de interpolare de mai sus poartă denumirea de polinom

Newton de speţa I (sau ascendent ). Expresia polinomului Newton se poate pune

sub o formă mai comodă pentru aplicaţii, dacă se face schimbarea de variabilă

0x xt

h

−=

şi se ţine seama că

( )[ ] ( ) ( ) ( ) ( )

( )( ) ( )

i0 0 0 0 0

i

x x x x x x h x x 2h x x (i 1)h....

h h h hht t 1 t 2 .... t i 1

− − − − − − − − −=

= − − − +

pentru orice i = 1,2,…,n. Se obţine

n n 0

2 30 0 0

0

n0

P (x) P (x th)

f (x ) f (x ) f (x )f (x ) t t(t 1) t(t 1)(t 2)

1! 2! 3!

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

n!

= +

∆ ∆ ∆= + + − + − − +

∆+ + − − +

Dacă se efectuează calculele în aritmetica virgulei mobile, aproximarea

funcţiei f prin polinomul Newton ascendent este avantajoasă pentru valorile x din

vecinătatea lui x0, eroarea fiind mică pentru t în modul mic.

Algoritm pentru determinarea polinomului Newton ascendent

Date de intrare:

x0- primul punct din reţea

h – pasul reţelei

y – lista ce conţine valorile funcţiei în punctele reţelei.

y0 y1 … yn

yi = f(xi) =f(x0 + ih), i = 0,1,…, n

x – punctul în care se evaluează polinomul.

Page 164: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

164

Date de ieşire: px - valoarea polinomului în x

px : =y0; t : = (x-x0)/h; u: = 1;

pentru i = 1,n,1 executa

pentru j =0,n-i,1 executa

yj := yj+1 –yj;

u :=u*(t-i+1)/i;

px:=px+u*y0 ;

Procedură MAPLE pentru calculul valorii polinomului Newton de speţa I

(ascendent)

> PNewton1 := proc(x0, h, y, x)

> local t, u, yl, i, j,n, px;

> n:=nops(y);

> yl := [seq(y[i],i=1..n)];

> px := yl[1];

> t := (x - x0)/h;

> u := 1;

> for i from 1 to n-1 do

> for j from 0 to n-1-i do

> yl[j + 1] := yl[j + 2] - yl[j+1]

> od;

> u := u*(t – i + 1)/i;

> px := px + u*yl[1] od;

> RETURN(px)

> end;

> f1:=x->x*cos(x);

:= f1 → x x ( )cos x

> x1:=[seq(2*Pi/3*i,i=0..3)];

:= x1

, , ,0

2 π3

4 π3

2 π

> y1:=[seq(f1(2*Pi/3*i),i=0..3)];

:= y1

, , ,0 −

π3

−2 π3

2 π

Page 165: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

165

> PNewton1(0,2*Pi/3,y1,X);

− + X2

3 X

3 X2 π

1

3 X2 π

2

4

> sort(expand(PNewton1(0,2*Pi/3,y1,X)));

− + 27 X3

16 π2

27 X2

8 πX

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

Page 166: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

166

VI.1.6. Polinomul Newton de interpolare de speţa II (descendent)

Fie f : [a, b] → R o funcţie, fie x0, x1, …, xn n+1 puncte distincte din

intervalul [a, b], şi yi = f(xi) pentru orice i = 0,1,…n. Punctele x0, x1, …, xn se

presupun echidistante, adică

xi = x0 + ih, i = 0,1, …, n

h fiind pasul reţelei. Se construiesc iterativ polinoamele Pi, i= 0, 1, ..., n astfel încât

pentru fiecare i, Pi să fie polinomul de interpolare asociat nodurilor xn, xn-1, …, xn-

i+1 şi valorilor yn, yn-1, …, yn-i+1. Construcţia se face după cum urmează

P0(x) = yn

Pi+1(x) = Pi(x) + ci+1(x-xn)(x-xn-1)...(x-xn-i+1), i =0, 1,..., n-1,

unde ci+1 se determină din condiţia Pi+1(xn-i) = yn-i.

Ca urmare polinomul de interpolare asociat nodurilor x0, x1, …, xn şi valorilor y0,y1,

…, yn poate fi scris sub forma

Pn(x) = c0 + c1(x-xn) + c2(x-xn)(x-xn-1) + .... + cn(x-xn)(x-xn-1)...(x-x1)

Page 167: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

167

Pentru exprimarea coeficienţilor c0, c1, …, cn este necesară cunoaşterea

noţiunii de diferenţă finită la stânga. Expresia

∇f(x) = f(x) - f(x-h)

se numeşte diferenţă finită (la stânga) de ordinul întâi. Diferenţele finite la

stânga de ordin superior se definesc cu ajutorul relaţiei:

∇nf(x) = ∇(∇n-1f(x))

Se observă că

∇f(x) = ∆f(x-h).

În aplicaţii, pentru calculul diferenţelor finite la stânga se utilizează tabelul

triunghiular următor:

f(x0) f(x1) f(x2) f(x3) f(xn-3) f(xn-2) f(xn-1) f(xn)

∇f(x1) ∇f(x2) ∇f(x3) ∇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ă

diferenţa finită de ordinul i a lui Pn în xn. Se obţine:

( )[ ] ( )[ ] ( )[ ]

( )[ ]

2 31 2 30 n n

n n n n 1 n 22 3

nnn

1n

f (x ) f (x ) f (x )P (x) f (x ) x x x x x x

1!h 2!h 3!h

f (x ).... x x

n!h

− −∇ ∇ ∇

= + − + − + − +

∇+ + −

Expresia polinomului de interpolare de mai sus poartă denumirea de polinom

Newton de speţa II (sau descendent ). Expresia polinomului Newton descendent se

poate pune sub o formă mai comodă pentru aplicaţii, dacă se face schimbarea de

variabilă

nx xt

h

−=

Se obţine

Page 168: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

168

n n n

2 3n n n

n

nn

P (x) P (x th)

f (x ) f (x ) f (x )f (x ) t t(t 1) t(t 1)(t 2)

1! 2! 3!

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

n!

= +

∇ ∇ ∇= + + + + + + +

∇+ + + + −

Dacă se efectuează calculele în aritmetica virgulei mobile, aproximarea

funcţiei f prin polinomul Newton descendent este avantajoasă pentru valorile x din

vecinătatea lui xn, eroarea fiind mică pentru t în modul mic.

Algoritm pentru determinarea polinomului Newton descendent

Date de intrare:

xn- ultimul punct din reţea

h – pasul reţelei

y – lista ce conţine valorile funcţiei în punctele reţelei.

y0 y1 … yn

yi = f(xi) =f(x0 + ih), i = 0,1,…, n

x – punctul în care se evaluează polinomul.

Date de ieşire: px - valoarea polinomului în x

px : =yn; t : = (x-xn)/h; u: = 1;

pentru i = 1,n,1 executa

pentru j =n,i,1 executa

yj := yj –yj-1;

u :=u*(t+i-1)/i;

px:=px+u*yn ;

Procedură MAPLE pentru calculul valorii polinomului Newton de speţa I

(ascendent)

> PNewton2 := proc(xn, h, y, x)

> local t, u, yl, i, j,n, px;

> n:=nops(y);

> yl := [seq(y[i],i=1..n)];

> px := yl[n];

> t := (x - xn)/h;

Page 169: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

169

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

:= x1

, , ,0

2 π3

4 π3

2 π

> y1:=[seq(f1(2*Pi/3*i),i=0..3)];

:= y1

, , ,0 −

π3

−2 π3

2 π

> PNewton2(2*Pi,2*Pi/3,y1,X);

6 π 4 X9 ( ) − X 2 π

+

3 ( ) − X 2 π2 π

1

4− + +

3 ( ) − X 2 π

+

3 ( ) − X 2 π2 π

1

+

3 ( ) − X 2 π2 π

2

4 +

> sort(expand(PNewton2(2*Pi,2*Pi/3,y1,X)));

− + 27 X3

16 π2

27 X2

8 πX

> with(plots):

> plot([f1(a),pnewton2(2*Pi,2*Pi/3,y1,a)],a=0..2*Pi);

Page 170: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

170

> plot([f1(a),PNewton2(2*Pi,2*Pi/3,y1,a)],a=-Pi..3*Pi);

Page 171: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

171

VI.1.7. Polinomul Newton cu diferenţe divizate

Fie f : [a, b] → R o funcţie, fie x0, x1, …, xn n+1 puncte distincte (nu

neapărat 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 încât pentru fiecare i, Pi să

fie polinomul de interpolare asociat nodurilor x0, x1, …, xi şi valorilor y0, y1, …, yi.

Construcţia se face după cum urmează

P0(x) = y0

Pi+1(x) = Pi(x) + ci+1(x-x0)(x-x1)...(x-xi), i =0, 1,..., n-1,

unde ci+1 se determină din condiţia Pi+1(xi+1) = yi+1.

Ca urmare polinomul de interpolare asociat nodurilor x0, x1, …, xn şi valorilor y0,y1,

…, yn poate fi scris sub forma

Pn(x) = c0 + c1(x-x0) + c2(x-x0)(x-x1) + .... + cn(x-x0)(x-x1)...(x-xn-1)

Pentru exprimarea coeficienţilor c0, c1, …, cn este necesară cunoaşterea noţiunii de

diferenţă divizată.

Expresia

j ii j

j i

f (x ) f (x )f (x , x ) , i j

x x

−= ≠

se numeşte diferenţă divizată de ordinul întâi. Diferenţele divizate de ordin 2 se

definesc cu ajutorul diferenţelor divizate de ordinul întâi:

j k i ji j k

k i

f (x , x ) f (x , x )f (x , x , x )

x x

−=

Cunoscând diferenţele divizate de ordinul m, diferenţele divizate de ordinul m+1 se

definesc prin:

i i 1 i m i 1 i i m 1i 1 i i 1 i m

i m i 1

f (x , x ,..., x ) f (x , x ,..., x )f (x , x , x ,..., x )

x x+ + − + −

− + ++ −

−=

În consecinţă, polinomul de interpolare asociat nodurilor x0, x1, …, xn şi valorilor

y0,y1, …, yn poate fi scris sub forma

n 0 0 1 0 0 1 2 0 1

0 1 n 0 1 n 1

P (x) f (x ) f (x , x )(x x ) f (x , x , x )(x x )(x x )

.... f (x , x ,..., x )(x x )(x x )...(x x )−

= + − + − − +

+ + − − −

Page 172: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

172

Pentru aplicaţii, calculul diferenţelor divizate este comod dacă se construieşte

tabelul triunghiular următor:

f(x0) f(x1) f(x2) f(x3) f(xn-2) f(xn-1) f(xn)

f(x0,x1) f(x1,x2) f(x2,x3) f(xn-2,xn-1) f(xn-1,xn)

f(x0,x1,x2) f(x1, x2,x3) f(xn-2,xn-1,xn)

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

Algoritm pentru determinarea polinomului Newton cu diferenţe divizate

Date de intrare:

x – listă ce conţine cele n+1 puncte distincte din intervalul [a, b]

x0 x1 … xn

y – lista ce conţine valorile funcţiei în punctele x0, x1, ...., xn

y0 y1 … yn

yi = f(xi), i = 0,1,…, n

a – punctul în care se evaluaeză polinomul.

Date de ieşire:

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

Page 173: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

173

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

:= x1

, , ,0

2 π3

4 π3

2 π

> y1:=[seq(f1(2*Pi/3*i),i=0..3)];

:= y1

, , ,0 −

π3

−2 π3

2 π

> PNewtond(x1,y1,X);

− + X2

27 X

− X

2 π3

− X

4 π3

16 π2

> sort(expand(PNewtond(x1,y1,X)));

− + 27 X3

16 π2

27 X2

8 πX

> with(plots):

> plot([f1(a),PNewtond(x1,y1,a)],a=0..2*Pi);

Page 174: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

174

> plot([f1(a),PNewtond(x1,y1,a)],a=-Pi..3*Pi);

Page 175: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

175

VI.2. Metoda celor mai mici pătrate

Fie f : [a, b] → R o funcţie şi fie x0, x1, …, xn n+1 puncte distincte din

intervalul [a, b] pentru care se cunosc valorile funcţiei yi = f(xi) pentru orice i =

0,1,…n. Aproximarea funcţiei f printr-un polinom de interpolare nu este indicată în

următoarele situaţii:

• când n este un număr foarte mare, ceea ce determină un volum mare de

calcul pentru determinarea coeficienţilor de interpolare

• când valorile yi = f(xi) nu sunt exacte.

În aceste situaţii se poate folosi aproximarea funcţiei prin metoda celor mai mici

pătrate.

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

subspaţii Hilbert.

Definiţie. Fie (S, d) un spaţiu metric şi X o submulţime a sa. Fie x0 un

element al lui S. Se numeşte element de cea mai bună aproximare a lui x0 pe X un

element p0∈X astfel încât

d(p0, x0) = x Xinf∈

d(x, x0)

Reamintim că orice spaţiu pre-Hilbert H (spaţiu vectorial real sau complex

înzestrat cu un produs scalar < ⋅, ⋅ >) este în particular un spaţiu metric (distanţa d

este definită prin d(x,y) = || x – y || = x y, x y− − pentru orice x, y∈H). În acest

caz dacă X o submulţime a lui H şi x0∈H, atunci un element p0∈X este element de

cea mai bună aproximare pentru x0 pe X dacă

0 0p x− = 0

x Xinf x x∈

− = 0 0

x Xinf x x , x x∈

− −

Page 176: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

176

Teoremă 6.2. Fie H un spaţiu pre-Hilbert (real sau complex), H0 un

subspaţiu vectorial al său şi x0 ∈ H. Dacă există un element de cea mai bună

aproximare a lui x0 pe H0, atunci acesta este unic.

Demonstraţie. Presupunem prin absurd că există p1 ≠ p2 elemente de cea mai

bună aproximare a lui x0 pe H0. Deoarece H0 este subspaţiu vectorial al lui H,

rezultă că p =2

1 p1 + 2

1 p2∈ H0. Avem

||p-x0||2 = ||2

1 p1 + 2

1 p2-x0||2 =4

1 || p1 – x0 + p2 – x0||2 <

<4

1 || p1 – x0 + p2 – x0||2 +4

1 || p1 – x0 – (p2 – x0)||2

=2

1 (|| p1 – x0 ||2 + || p2 – x0||2)

≤|| p1 – x0 ||2.

Deci p ∈ H0 şi ||p-x0|| < || p1 – x0 ||, contradicţie cu faptul că p1 este element de cea

mai bună aproximare a lui x0 pe H0. Rezultă că presupunerea este falsă, şi în

consecinţă elementul de cea mai bună aproximare este unic.

Teoremă 6.3. Fie H un spaţiu pre-Hilbert, H0 un subspaţiu liniar al lui H şi

x0 ∈ H. Un element p0 ∈ H0 este element de cea mai bună aproximare a lui x0 pe H0

dacă şi numai dacă

p0-x0⊥H0 (sau echivalent, < p0-x0, x> = 0 pentru orice x∈H0).

Demonstraţie. Presupunem că p0-x0⊥H0 şi demonstrăm 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 x∈H0, atunci în particular, <p0-x0, p0> = 0

şi ca urmare < p0-x0, p0 - x> = 0 pentru orice x∈H0. Pentru un x∈H0 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 x∈H0. Împărţind inegalitatea cu

Page 177: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

177

|| p0 -x0|| > 0,

obţinem

||p0-x0|| ≤ || x- x0|| pentru orice x∈H0,

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 demonstrăm că <p0-x0, x> = 0 pentru orice x∈H0. Presupunem prin absurd că

există y0∈H0 astfel încât

<p0-x0, y0> ≠ 0.

Scriind <p0-x0, y0> = r (cosθ + isinθ)= reiθ cu r>0 şi θ∈[0, 2π], rezultă că înlocuind

y0 cu eiθy0 ∈ H0, putem presupune că există y0∈H0 astfel încât

<p0-x0, y0> > 0.

Pentru orice λ > 0, avem p0 - λy0 ∈ H0, deoarece H0 este subspaţiu vectorial. În

plus avem

||p0 - λy0– x0||2 = < p0 - λy0 – x0, p0 - λy0 – x0>

= < (p0– x0) - λy0, (p0 – x0) - λy0>

= || p0 – x0||2 - λ<y0, p0-x0> -λ< p0-x0, y0> + λ2|| y0||2

=|| p0 – x0||2 + λ(λ|| y0||2 – 2 < p0-x0, y0>)

În consecinţă pentru orice scalar λ cu proprietatea că

0 < λ <

0 0 0

20

p x , y2

y

avem ||p0 - λy0– x0||2 < || p0 – x0||2 şi p0 - λy0 ∈ H0. Am obţinut astfel o contradicţie

cu faptul că p0 este element de cea mai bună aproximare a lui x0 pe H0. În

consecinţă, presupunerea este falsă şi deci

<p0 -x0, x> = 0

pentru orice x∈H0.

Page 178: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

178

VI. 2.2. Aproximarea în medie prin metoda celor mai mici pătrate

Considerăm mulţimea funcţiilor definite pe intervalul [a, b],

F : = f : [a, b] → R

şi n+1 puncte distincte x0, x1, …, xn din intervalul [a, b]. Spunem că funcţiile f şi g

din această mulţime sunt egale aproape peste tot (şi vor fi identificate) dacă f(xi) =

g(xi) pentru orice i = 0,1,…, n. Mai precis,

f ~ g ⇔ f(xi) = g(xi) pentru orice i = 0,1,…, n,

defineşte o relaţie de echivalenţă pe F. Notăm

[f] = g: f ~ g = g : [a, b] → R, f(xi) = g(xi) pentru orice i = 0,1,…, n

clasa de echivalenţă a lui f. Notăm cu cu H mulţimea claselor de echivalenţă relativ

la relaţia de echivalenţă de mai sus. H poate fi înzestrat cu o operaţie de grup

abelian după cum urmează:

[f] + [g] : = [h], unde h : [a, b] → R, h(x) = f(x) + g(x) pentru orice x∈[a, b].

Arătăm că definiţia nu depinde de reprezentanţi. Fie f1 ~ f2, g1 ~ g2 şi pentru i=1,2

fie hi:[a,b]→R, hi(x) = fi(x) + gi(x) pentru orice x∈[a, b]. Avem

h1(xj) = f1(xj) + g1(xj) = f2(xj) + g2(xj) = h2(xj)

pentru orice j = 0,1,…, n. Ca urmare h1 ~ h2, adică [h1] = [h2]. Evident operaţia

definită mai sus este asociativă şi comutativă. Dacă notăm

o: [a, b] → R, o(x) = 0 pentru orice x∈[a, b],

atunci [o] este element neutru. Pentru orice [h], [-h] este simetricul faţă de +, unde

-h: [a, b] → R, (-h)(x) = -h(x) pentru orice x∈[a, b].

De asemenea H poate fi înzestrat cu o operaţie externă de înmulţire cu scalari reali

după cum urmează:

α[f]: = [h], unde h : [a, b] → R, h(x) = αf(x) pentru orice x∈[a, b].

Este uşor de observat că definiţia nu depinde de reprezentanţi. H înzestrat cu cele

două operaţii definite mai sus devine spaţiu vectorial.

Fie p o funcţie cu următoarele proprietăţi:

• p(xi) > 0

• ( )∑=

n

0iixp =1.

Page 179: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

179

Dacă f1 ~ f2 şi g1 ~ g2 atunci

( ) ( ) ( )n

i 1 i 1 ii 0

p x f x g x=∑ = ( ) ( ) ( )

n

i 2 i 2 ii 0

p x f x g x=∑ .

Introducem următorul produs scalar pe H

<[f], [g]> = ( ) ( ) ( )i

n

0iii xgxfxp∑

=

Funcţia p(x) este o funcţie pondere introdusă în ipoteza că aproximările f(xi) sunt

diferite ca ordin de mărime. Relativ la produsul scalar introdus, norma lui [f] este

definită prin

2[f ] = ( ) ( )∑=

n

0ii

2i xfxp .

În cele ce urmează convenim să desemnăm o clasă de echivalenţă [f] printr-

un reprezentant al ei f.

Fie ϕ0, ϕ1, …ϕm un sistem de m+1 funcţii liniar independente definite pe

[a,b], cu m ≤ n. Convenim să numim spaţiul generat de ele spaţiul polinoamelor

generalizate şi să-l notăm Hm. Deci un polinom generalizat F ∈ Hm este de forma

F(x) = ( )∑=

ϕm

0iii xc .

Aproximarea în medie prin metoda celor mai mici pătrate a unui element f∈H

presupune determinarea elementului de cea mai bună aproximare F0 a lui f pe Hm.

Conform definiţiei elementul F0 de cea mai bună aproximare a lui f pe Hm trebuie să

satisfacă condiţia

( ) ( ) ( )( )∑=

−n

0i

2i0ii xFxfxp = ( ) ( ) ( )( )∑

=∈

−n

0i

2iii

mHF

xFxfxpinf

Determinarea coeficienţilor cj ai polinomului generalizat F0 cu ajutorul acestei

relaţii este dificilă. Se foloseşte caraterizarea elementului de cea mai bună

aproximare dată în secţiunea precedentă. Mai precis F0∈Hm 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 F0∈Hm 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, 2…m,

Page 180: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

180

ceea ce revine la

<f, ϕj> = c0<ϕ0, ϕj> + c1<ϕ1, ϕj> + … + cm<ϕm, ϕj>, j = 0, 1,…,m.

Notăm

aij = <ϕi, ϕj> = ( ) ( ) ( )kj

n

0kkik xxxp ϕϕ∑

=

bj = <f, ϕj> = ( ) ( ) ( )kj

n

0kkk xxfxp ϕ∑

=

Pentru determinarea coeficienţilor cj ai polinomului generalizat F0 se rezolvă

sistemul

c0a00 + c1a10 + … + cmam0 = b0

c0a01 + c1a11 + … + cmam1 = b1

c0a0m + c1a1m + … + cmamm = bm

Determinantul acestui sistem fiind un determinant Gramm (elementele sale sunt

produse scalare) este diferit de zero, deoarece sistemul de funcţii ϕ0, ϕ1, …ϕm este

un sistem liniar independent.

Dacă ϕj(x) = xj, j =0, 1,…, m, m ≤ n, şi p≡

1n

1

+, atunci

F0(x) = m

ii

i 0

c x=∑ .

iar sistemul anterior devine

c0(n+1) + c1 ∑=

m

0iix + … + cm∑

=

m

0i

mix = ( )∑

=

m

0iixf

c0∑=

m

0iix + c1∑

=

m

0i

2ix + … + cm∑

=

+m

0i

1mix = ( )∑

=

m

0iii xfx

c0∑=

m

0i

mix + c1∑

=

+m

0i

1mix + … + cm∑

=

m

0i

m2ix = ( )∑

=

m

0ii

mi xfx

Acest sistem este numit sistemul normal al lui Gauss.

Page 181: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

181

Parametrii procedurii patrate_mici de mai jos sunt:

x - lista celor n +1 puncte: x0, x1, …, xn

y - lista ce conţine valorile funcţiei f în ce n +1 puncte: x0, x1, …, xn (y0 =

f(x0), y1 =f(x1), ….,yn =f(xn))

ϕ – lista funcţiilor liniar independente ϕ0, ϕ1, …ϕm

p – ponderea (lista)

Procedura întoarce o lista ce conţine coeficienţii polinomului generalizat ce

aproximează f.

> patrate_mici:=proc(x,y,p,phi)

> local n,m,i,k,j,a,b,c,ep,ei;

> n:=nops(x)-1;

> m:=nops(phi)-1;

> b:=vector(m+1);

> a:=matrix(m+1,m+1);

> for i from 0 to m do

> b[i+1]:=0;for k from 0 to n do

> b[i+1]:=b[i+1]+y[k+1]*phi[i+1](x[k+1])*p[k+1]

> od

> od;

> for i from 0 to m do

> for j from i to m do

> a[i+1,j+1]:=0;

> for k from 0 to n do

> a[i+1,j+1]:=a[i+1,j+1]+p[k+1]*phi[i+1](x[k+1])*phi[j+1](x[k+1])

> od;

> a[j+1,i+1]:=a[i+1,j+1]

> od;

> od;

> c:=vector(m+1);

> c:=linsolve(a,b,'r');

> if r<m+1 then print(`Sistemul de functii nu este liniar

independent`); RETURN(NULL) fi;

> print(`Factorul de conditionare`,evalf(cond(a)));

> ep:=0;

> for i from 0 to n do ei:=y[i+1];

> for j from 0 to m do

Page 182: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

182

> ei:=ei-phi[j+1](x[i+1])*c[j+1]

> od;

> ei:=ei^2*p[i+1]; ep:=ep+ei

> od;

> print(`Suma patratelor erorilor (ponderate)`,evalf(ep));

> RETURN([seq(c[i],i=1..m+1)])

> end;

În exemplele ce urmează vom folosi şi procedurile desen_puncte, baza_normal,

evalueaza şi desen. Procedura desen_puncte reprezintă grafic cele n+1 puncte date

iniţial: (x0, y0), (x1, y1), ..., (xn, yn). Procedura baza_normal primeşte drept

paramentru un număr natural m şi construieşte lista funcţiilor ϕ0, ϕ1, …ϕm unde

ϕj(x) = xj pentru orice x şi orice j=0..m. Procedura evalueaza primeşte drept

parametri lista funcţiilor liniar independente ϕ0, ϕ1, …ϕm, lista coeficienţilor

polinomului generalizat ce aproximează f şi un punct a. Procedura returnează

valoarea polinomului generalizat în a. Procedura desen reprezintă grafic în acelaşi

sistem de axe de coordonate polinomul generalizat ce aproximează funcţia şi cele

n+1 puncte date iniţial. Punctele sunt reprezentate prin elipse. Parametrii procedurii

sunt funcţia determinată de polinomul generalizat, lista x ce conţine punctele x0, x1,

…, xn, şi şi lista y ce conţine valorile funcţiei. Înainte de a folosi aceste proceduri

trebuie încărcate 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

Page 183: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

183

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

:= p1

, , , , ,

16

16

16

16

16

16

> desen_puncte(x1,y1);

Page 184: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

184

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

Page 185: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

185

,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 x2 → x x3

> c3:=patrate_mici(x1,y1,p1,phi3);

,Factorul de conditionare 0.3034682363 107

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

Page 186: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

186

VI. 2.3. Limitări ale metodei celor mai mici pătrate

Pentru determinarea coeficienţilor cj ai polinomului generalizat F0 se rezolvă

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

Iar

0p(x ) ϕ0(x0) 0p(x ) ϕ1(x0) ... 0p(x ) ϕm(xn)

1p(x ) ϕ0(x1) 1p(x ) ϕ1(x1) ... 1p(x ) ϕm(x1)

np(x ) ϕ0(xn) np(x ) ϕ1(xn) ... np(x ) ϕm(xn)

X =

Page 187: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

187

Dacă funcţiile ϕ0, ϕ1, …ϕm sunt liniar independente, atunci rang(X) = m+1

şi matricea A este pozitiv definită. Ca urmare există şi este unică o matrice inferior

triunghiulară L cu elementele de pe diagonala principală pozitive astfel încât A =

LLt (matricea L se numeşte factor Cholesky). Rezolvarea sistemului Ax=b revine la

rezolvarea a două sisteme cu matrice triunghiulare: Lz =b, Ltx=z. O variantă mai

lentă (volum de calcul mai mare), dar numeric mai stabilă, de rezolvare a sistemului

Ax = b este dată de descompunerea QR a matricei A, adică de reprezentarea

matricei A sub forma A = QR unde Q este o matrice ortogonală (QtQ = Im+1) iar R o

matrice superior triunghiulară. Atunci rezolvarea sistemului Ax=b este echivalentă

cu rezolvarea sistemului Rx =Qtb.

Dacă A=XtX nu este bine condiţionată, atunci gradul de acurateţe al soluţiei

furnizate de metoda celor mai mici pătrate poate fi foarte scăzut.

0p(x ) f(x0)

1p(x ) f(x1)

np(x ) f(xn)

Y =

Page 188: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

188

Page 189: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

189

VII. Derivarea numerică

Se recurge la aproximarea derivatei unei funcţii f sau a derivatelor ei de

ordin superior atunci când expresia lui f este prea complicată sau când nu se

cunoaşte expresia analitică a funcţiei f (f este dată prin intermediul unui tabel de

valori).

VII. 1. Formule de derivare aproximativă folosind dezvoltări

în serie Taylor

Fie f : [a, b] → R, derivabilă. Presupunem că se dau n+1 puncte distincte în

intervalul [a, b], x0, x1, …., xn, în care se cunosc valorile funcţiei f.

Prezentăm o tehnică de găsire a unor formule de aproximare pentru valorile

derivatelor de orice ordin ale funcţiei f. Această tehnică are la bază formula lui

Taylor. Reamintim această formulă.

Fie I un interval de numere reale, a ∈ I şi f : I → R o funcţie de n ori

derivabilă în a. Polinomul Taylor de ordin n ataşat lui f în punctul a este funcţia

polinomială Ta,n : I → R, definită prin:

Ta,n(x) = f(a) + ( )!1

a'f (x-a) + ( )!2

a"f (x-a)2 +( ) ( )

!n

af n

(x-a)n.

Restul formulei Taylor de ordin n ataşat funcţiei f în punctul a este funcţia

Ra,n : I → R definită prin Ra,n(x) = f(x) - Ta,n(x). Egalitatea

f(x) = Ta,n(x) + Ra,n(x)

valabilă pentru orice x ∈ I se numeşte formulă Taylor de ordin n ataşată funcţiei f

în punctul a. Se demonstrează că ( )n

x,a

ax ax

Rlim

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

Page 190: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

190

există u strict cuprins între a şi x (sau echivalent există θ ∈ (0, 1) astfel încât u = a+

θ(x – a)) cu proprietatea că

Ra,n(x) = ( ) ( )( )!1n

uf 1n

+

+

(x - a)n+1.

Ne propunem să aproximăm valorile derivatelor de ordinul întâi şi doi ale

funcţiei f în punctul xi ∈ [a, b] când sunt cunoscute valorile funcţiei în punctele

xi-1, xi, xi+1

care nu sunt neapărat 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:

2 3i i xi i i i

f (x ) f (x ) f (w )f (x) f (x ) (x x ) (x x ) (x x )

1! 2! 3!

′ ′′ ′′′= + − + − + − .

cu wx stric cuprins între x şi xi. Înlocuim în această formulă x = xi-1, respectiv x =

xi+1 şi obţinem relaţiile:

23i i

i 1 if (x ) f (x )h f (u)

f (x ) f (x ) ( h) ( h)1! 2! 3!−

′ ′′ ′′′= + − + + − (7.1)

2 2 3 3i ii 1 i

f (x ) f (x ) f (v)f (x ) f (x ) 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. Scăzând din a doua

relaţie prima relaţie înmulţită cu α2 obţinem:

( )( )( )

2 2 3 3 3 2i 1 i i 1

i

f (v) f (u)f (x ) f x 1 f (x ) h h

3! 3!f (x )h 1

+ −′′′ ′′′

+ α − − α + α + α′ =

α α +

Putem aproxima valoarea derivatei funcţiei f în xi prin:

( )( )( )

2 2i 1 i i 1

i

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

h 1

+ −+ α − − α′ ≈

α α +

cu eroarea:

22f (v) f (u)

h1 3! 1 3!

′′′ ′′′α αε = + α + α +

Page 191: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

191

care este de ordinul lui h2 (O(h2)).

Adunând la a doua relaţie prima înmulţită cu α obţinem:

( )

( )

3 3 3i 1 i i 1

i 2

f (v) f (u)2 f (x ) 1 f (x ) f (x ) h h

3! 3!f (x )

h 1

+ −′′′ ′′′ + + α + α + α − α

′′ =α α +

.

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

( )( )( )

i 1 i i 1i 2

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

h 1

+ −− + α + α′′ ≈

α α +

cu eroarea

( )2h f (v) f (u)

1 3 3

′′′ ′′′ ε = α − α +

de ordinul lui h: O(h).

Dacă nodurile sunt echidistante (adică dacă α = 1) se obţin următoarele

formule de aproximare:

i 1 i 1i

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

2h+ −−

′ ≈

i 1 i i 1i 2

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

h+ −− +

′′ ≈ .

În cazul nodurilor echidistante vom arătă că eroare de aproximare a derivatei de

ordinul doi prin formula de mai sus este de ordinul O(h2). Folosind formula lui

Taylor de ordinul 3 pentru f în xi, obţinem:

( )423 4i i i

i 1 if (x ) f (x )h f (x ) f (u)

f (x ) f (x ) ( h) ( h) h1! 2! 3! 4!−

′ ′′ ′′′= + − + + − + (7.3)

( )42 3 4i i i

i 1 if (x ) f (x ) f (x ) f (v)

f (x ) f (x ) h h h h1! 2! 3! 4!+

′ ′′ ′′′= + + + + (7.4)

cu u strict cuprins între xi-1 şi xi şi v strict cuprins între xi şi xi+1. Adunând cele două

relaţii rezultă:

( ) ( )4 44 4

i 1 i i 1

i 2

f (v) f (u)f (x ) 2f (x ) f (x ) h h

4! 4!f (x )h

+ −+ + + +′′ =

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

Page 192: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

192

i 1 i i 1i 2

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

h+ −− +

′′ ≈

cu eroarea

( ) ( )4 42f (v) f (u)

h4! 4!

ε = +

de ordinul lui h2: O(h2).

Ne propunem acum să aproximăm valorile derivatelor de ordinul întâi şi doi

ale funcţiei f în punctul xi ∈ [a, b] când sunt cunoscute valorile funcţiei în punctele

xi, xi+1, xi+2

care nu sunt neapărat 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

ataşată lui f în xi:

2 3i i xi i i i

f (x ) f (x ) f (w )f (x) f (x ) (x x ) (x x ) (x x )

1! 2! 3!

′ ′′ ′′′= + − + − + − .

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

xi+2 şi obţinem relaţiile:

23i i

i 1 if (x ) f (x )h f (u)

f (x ) f (x ) h h1! 2! 3!+

′ ′′ ′′′= + + + (7.5)

2 2 3 3i ii 2 i

f (x ) f (x ) f (v)f (x ) f (x ) ( 1)h h ( 1) ( 1) h

1! 2! 3!+′ ′′ ′′′

= + α + + α + + α + (7.6)

cu u strict cuprins între xi şi xi+1 şi v strict cuprins între xi şi xi+2. Scăzând din relaţia

(7.5) relaţia (7.6) înmulţită cu (1+α)2 obţinem:

( )( )( )

( )

2 2i 2 i i 1

i

3 3 3 2

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

h 1

f (v) f (u)( 1) h h (1 )

3! 3!h 1

+ ++ α + α − + α′ = +

− α α +

′′′ ′′′− α + + + α

+− α α +

Putem aproxima valoarea derivatei funcţiei f în xi prin:

Page 193: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

193

( ) ( )( )

2 2i 2 i 1 i

i

f (x ) (1 ) f (x ) 2 f xf (x )

h 1

+ +− − + α − α + α′ ≈

α α +

cu eroarea:

22f (v) ( 1) f (u) ( 1)

h3! 3!

′′′ ′′′α + α +ε = − α α

Adunând la relaţia (7.6) relaţia (7.5) înmulţită cu -(1+α) obţinem:

( )

( )

i 2 i i 1i 2

3 3 3

2

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

h 1

f (v) f (u)( 1) h ( 1)h

3! 3!2h 1

+ ++ α − α +′′ =

α + α

′′′ ′′′− α + + α +

+α + α

.

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

( )i 2 i 1 i

i 2

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

h 1+ +− α + + α

′′ ≈α α +

cu eroarea

2f (v) ( 1) f (u) 1h

3! 3!

′′′ ′′′α +ε = − + α α

Dacă nodurile sunt echidistante (adică dacă α = 1) se obţin următoarele

formule de aproximare:

( )i 2 i 1 ii

f (x ) 4f x 3f (x )f (x )

2h+ +− + −

′ ≈

cu eroare de ordinul O(h2)

i 2 i 1 ii 2

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

h+ +− +

′′ ≈ .

cu eroare de ordinul O(h).

Similar ne propunem să aproximăm valorile derivatelor de ordinul întâi şi

doi ale funcţiei f în punctul xi ∈ [a, b] când sunt cunoscute valorile funcţiei în

punctele

Page 194: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

194

xi-2, xi-1, xi

care nu sunt neapărat 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:

23i i

i 1 if (x ) f (x )h f (u)

f (x ) f (x ) h h1! 2! 3!−

′ ′′ ′′′= − + − (7.7)

2 2 3 3i ii 2 i

f (x ) f (x ) f (v)f (x ) f (x ) ( 1)h h ( 1) ( 1) h

1! 2! 3!−′ ′′ ′′′

= − α + + α + − α + (7.8)

cu u strict cuprins între xi şi xi+1 şi v strict cuprins între xi şi xi+2. Scăzând din relaţia

(7.8) relaţia (7.7) înmulţită cu (1+α)2 obţinem:

( )( )( )

( )

2 2i 2 i i 1

i

3 2 3 3

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

h 1

f (u) f (v)h (1 ) ( 1) h

3! 3!h 1

− −+ α + α − + α′ = +

α α +

′′′ ′′′− + α + α +

+α α +

Putem aproxima valoarea derivatei funcţiei f în xi prin:

( ) ( )( )

2 2i i 1 i 2

i

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

h 1

− −α + α − + α +′ ≈

α α +

cu eroarea:

22f (u) ( 1) f (v) ( 1)

h3! 3!

′′′ ′′′α + α +ε = − + α α

Adunând la relaţia (7.8) relaţia (7.7) înmulţită cu -(1+α) obţinem:

( )

( )

i 2 i i 1i 2

3 3 3

2

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

h 1

f (v) f (u)( 1) h ( 1)h

3! 3!2h 1

− −+ α − α +′′ =

α + α

′′′ ′′′− α + + α +

+α + α

.

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

Page 195: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

195

( )i i 1 i 2

i 2

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

h 1− −−α − α + +

′′ ≈α α +

cu eroarea

2f (u) 1 f (v) ( 1)h

3! 3!

′′′ ′′′ α +ε = − α α

Dacă nodurile sunt echidistante (adică dacă α = 1) se obţin următoarele

formule de aproximare:

( )i i 1 i 2i

3f (x ) 4f (x ) f xf (x )

2h− −− +

′ ≈

cu eroare de ordinul O(h2), şi

i 2 i 1 ii 2

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

h− −− +

′′ ≈ .

cu eroare de ordinul O(h).

Folosind acest tip de tehnici, se poate obţine o mare varietate de formule

aproximative pentru valorile derivatelor de orice ordin în xi. Prezentăm mai jos

câteva astfel de formule pentru cazul nodurilor echidistante.

Formulă de aproximare a derivatei prin diferenţe finite centrale Eroare

i 1 i 1i

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

2h+ −−

′ ≈ O(h2)

i 1 i 1 i 1 i 2i

f (x ) 8f (x ) 8f (x ) f (x )f (x )

12h+ + − −− + − +

′ ≈ O(h4)

i 1 i i 1i 2

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

h+ −− +

′′ ≈ O(h2)

i 2 i 1 i i 1 i 2i 2

f (x ) 16f (x ) 30f (x ) 16f (x ) f (x )f (x )

12h+ + − −− + − + −

′′ ≈ O(h4)

i 2 i 1 i 1 i 2i 3

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

2h+ + − −− + −

′′′ ≈ O(h2)

i 3 i 2 i 1 i 1 i 2 i 3i 3

f (x ) 8f (x ) 13f (x ) 13f (x ) 8f (x ) f (x )f (x )

8h

+ + + − − −− + − + − +′′′ ≈

O(h4)

Page 196: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

196

Formulă de aproximare a derivatei prin diferenţe finite progresive Eroare

i 1 ii

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

h+ −

′ ≈ O(h)

( )i 2 i 1 ii

f (x ) 4f x 3f (x )f (x )

2h+ +− + −

′ ≈ O(h2)

i 2 i 1 ii 2

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

h+ +− +

′′ ≈ O(h)

i 3 i 2 i 1 ii 2

f (x ) 4f (x ) 5f (x ) 2f (x )f (x )

h

+ + +− + − +′′ ≈

O(h2)

i 3 i 2 i 1 ii 3

f (x ) 3f (x ) 3f (x ) f (x )f (x )

h

+ + +− + −′′′ ≈

O(h)

i 4 i 3 i 2 i 1 ii 3

3f (x ) 14f (x ) 24f (x ) 18f (x ) 5f (x )f (x )

2h

+ + + +− + − + −′′′ ≈

O(h2)

Formulă de aproximare a derivatei prin diferenţe finite regresive Eroare

i i 1i

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

h−−

′ ≈ O(h)

( )i i 1 i 2i

3f (x ) 4f (x ) f xf (x )

2h− −− +

′ ≈ O(h2)

i i 1 i 2i 2

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

h− −− +

′′ ≈ O(h)

i i 1 i 2 i 3i 2

2f (x ) 5f (x ) 4f (x ) f (x )f (x )

h

− − −− + −′′ ≈

O(h2)

i i 1 i 2 i 3i 3

f (x ) 3f (x ) 3f (x ) f (x )f (x )

h

− − −− + −′′′ ≈

O(h)

i i 1 i 2 i 3 i 4i 3

5f (x ) 18f (x ) 24f (x ) 14f (x ) 3f (x )f (x )

2h

− − − −− + − +′′′ ≈

O(h2)

Page 197: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

197

Procedură MAPLE pentru determinarea valorilor aproximative ale

derivatei de ordinul 1

Procedura d1 admite drept parametri lista x ce conţine punctele x1, x2, …., xn şi

lista y ce conţine valorile y1 = f(x1), y2 = f(x2), …., yn= f(xn). Procedura întoarce

lista aproximaţiilor derivatei de ordinul I a lui f în punctele x2, x3, ..., xn-1.

> d1:=proc(x,y)

> local df,h,alpha,i,n;

> n:=nops(x);df:=[seq(1,i=1..n-2)];

> for i from 2 to n-1 do

> h:=x[i]-x[i-1];

> alpha:=(x[i+1]-x[i])/h;

> df[i-1]:=(y[i+1]+y[i]*(alpha^2-1)-alpha^2*y[i-1])/

(h*alpha*(alpha+1))

> od;

> RETURN(df);

> end;

Procedură MAPLE pentru determinarea valorilor aproximative ale

derivatei de ordinul 2

Procedura d2 admite drept parametri lista x ce conţine punctele x1, x2, …., xn şi

lista y ce conţine valorile y1 = f(x1), y2 = f(x2), …., yn= f(xn). Procedura întoarce

lista aproximaţiilor derivatei de ordinul al II-lea a lui f în punctele x2, x3, ..., xn-1.

> d2:=proc(x,y)

> local d2f,h,alpha,i,n;

> n:=nops(x);d2f:=[seq(1,i=1..n-2)];

> for i from 2 to n-1 do h:=x[i]-x[i-1];

> alpha:=(x[i+1]-x[i])/h;

> d2f[i-1]:=2*(y[i+1]-(alpha+1)*y[i]+alpha*y[i-

1])/(h^2*alpha*(alpha+1))

> od;

> RETURN(d2f);

> end;

Exemple

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

Page 198: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

198

:= x1

, , , , ,-1

-35

-15

15

35

1

> f1:=t->ln(1+t^2);

:= f1 → t ( )ln + 1 t2

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

:= z1

, , ,

-1517

-513

513

1517

> z2:=[seq((D@@2)(f1)(-1+2*i/5),i=1..4)];

:= z2

, , ,

200289

300169

300169

200289

> 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 utilizând o formula de aproximare prin diferenţe finite

centrale

Procedura de1 admite drept parametri pasul h al discretizării şi lista y ce conţine

valorile y1 = f(x1), y1 = f(x1), …., yn= f(xn) (xi = xi + (i-1)h). Procedura returnează

lista aproximaţiilor derivatei de ordinul I a lui f în punctele x2, x3, ..., xn-1.

> de1:=proc(h,y)

> local df,i,n;

Page 199: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

199

> 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 utilizând o formula de aproximare prin diferenţe finite

centrale

Procedura de2 admite drept parametri drept parametri pasul h al discretizării şi

lista y ce conţine valorile y1 = f(x1), y1 = f(x1), …., yn= f(xn) (xi = xi + (i-1)h).

Procedura întoarce lista aproximaţiilor derivatei de ordinul al II-lea a lui f în

punctele x2, x3, ..., xn-1.

> de2:=proc(h,y)

> local df,i,n;

> n:=nops(y);df:=[seq(1,i=1..n-2)];

> for i from 2 to n-1 do

> df[i-1]:=(y[i+1]-2*y[i]+y[i-1])/(h*h)

> od;

> RETURN(df);

> end;

Exemple

> x2:=[seq(1+2*i/5,i=0..5)];

:= x2

, , , , ,1

75

95

115

135

3

> f2:=t->1/(1+t^2);

:= f2 → t1

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

Page 200: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

200

[ ], , ,0.3760836312 0.2335787581 0.1390580162 0.08438073688

> z3:=[seq(D(f2)(1+2*i/5),i=1..4)];

:= z3

, , ,

-8752738

-11255618

-137510658

-162518818

> z4:=[seq((D@@2)(f2)(1+2*i/5),i=1..4)];

:= z4

, , ,

38125101306

68125297754

105625778034

1506251825346

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

Page 201: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

201

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

Page 202: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

202

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

Aşa cum am arătat î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ă creşte din cauza creşterii erorii de rotunjire, iar pentru valori

mai mari ale lui h eroarea totală creşte din cauza creşterii erorii de trunchiere.

Pentru a evidenţia acest aspect considerăm procedurile eroare1 (respectiv eroare2)

de mai jos care returnează eroarea cu care este aproximată derivata de ordinul 1

(respectiv 2) a funcţiei f în punctul x când se aplică o formulă de aproximare prin

diferenţe finite centrale (nodurile sunt x-h,x,x+h). În exemple ce urmează se poate

face comparaţie între situaţia în care calculul se execută simbolic (şi doar rezultatele

sunt afişate în virgulă mobilă) şi situaţia în care calculul se execută în virgulă

mobilă.

> eroare1:=proc(f,x,h)

> RETURN(D(f)(x)-de1(h,[f(x-h),f(x),f(x+h)])[1])

> end;

Page 203: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

203

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

Page 204: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

204

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

Page 205: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

205

VII. 2. Extrapolare Richardson

Să presupunem că dorim să calculăm o cantitate L şi că avem

ϕ(h) = L + 2k2k

k 1

a h∞

=∑ .

Atunci ϕ(h) reprezintă o aproximaţie pentru L cu eroare de ordinul O(h2). În cele ce

urmează vom arăta cum să obţinem o aproximaţie pentru care eroarea să fie de de

ordinul O(h2(n+1)), cu n dat. Notăm

D(n,0) = n

h

2

ϕ

şi definim

D(n,m) = ( ) ( )m

m

4 D n,m 1 D n 1, m 1

4 1

− − − −

−, 1 ≤ m ≤ n.

Se poate arăta utilizând inducţia că

Teorema 7.9 (Extrapolare Richardson). Cu notaţiile de mai sus există

constantele ak,m astfel încât

D(n,m) = L + 2k

k,m nk m 1

ha

2

= +

∑ .

Ca o consecinţă a teoremei precedente rezultă că

D(n,m) = L + O(h2(n+1)

).

Cu alte cuvinte D(n,n) este o aproximaţie a lui L cu eroare de ordinul O(h2(n+1)).

Pentru calculul recursiv al valorilor D(n,m) se poate folosi tabelul

triunghiular:

D(0,0)

D(1,0) D(1,1)

D(2,0) D(2,1) D(2,2)

D(n,0) D(n,1) D(n,2) D(n,n)

Page 206: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

206

Prima coloană a acestui tabel poate fi calculată direct cu definiţia: D(n,0) = n

h

2

ϕ

.

În cazul elementelor de pe celelalte coloane se observă că fiecare dintre ele depinde

de elementul din stânga de pe aceeaşi linie şi de pe linia de deasupra din stânga.

Să exemplificăm aplicarea acestui procedeu pentru îmbunătăţirea formulei

de aproximare a derivatei de ordinul 1:

( ) f (x h) f (x h)f (x) h

2h

+ − −′ ≈ ϕ = .

Dacă f este analitică avem:

ϕ(h) = f (x)′ + ( )

( )( )

2k 12k

k 1

fx h

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

− =

( )h4 h

2

3

ϕ − ϕ .

Ca urmare ( )h

4 h2

3

ϕ − ϕ reprezintă o aproximaţie a lui f (x)′ cu eroare de

ordinul O(h4), unde ( ) f (x h) f (x h)h

2h

+ − −ϕ = .

VII.3. Metode de derivare numerică folosind interpolarea

Fie f : [a, b] → R o funcţie, fie x0, x1, …, xn n+1 puncte distincte din

intervalul [a, b], şi yi = f(xi) pentru orice i = 0,1,…n. Aproximăm 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.

Page 207: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

207

4 4 0

2 30 0 0

0

40

P (x) P (x th)

f (x ) f (x ) f (x )f (x ) t t(t 1) t(t 1)(t 2)

1! 2! 3!

f (x )t(t 1)(t 2)(t 3)

4!

= +

∆ ∆ ∆= + + − + − − +

∆+ − − −

2 32 3 20 0 0

0

44 3 20

f (x ) f (x ) f (x )f (x ) t (t t) (t 3t 2t)

1! 2! 3!

f (x )(t 6t 11t 6t)

4!

∆ ∆ ∆= + + − + − + +

∆+ − + −

Notăm g(t) = P4(x0 +th). Avem

g′ (t) = 4P ′ (x0 +th)h

g′′ (t) = 4P ′′ (x0 +th)h2.

Pe de altă parte

( )2 3

20 00

43 20

f (x ) f (x )g t f (x ) (2t 1) (3t 6t 2)

2 6

f (x )(4t 18t 22t 6)

24

∆ ∆′ = ∆ + − + − + +

∆+ − + −

22 3

0 0 0

3 24

0

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

2 6

(2t 9t 11t 3)f (x )

12

− − += ∆ + ∆ + ∆ +

− + −+ ∆

iar

( )2 3

0 0

420

f (x ) f (x )g t 2 (6t 6)

2 6

f (x )(6t 18t 11)

12

∆ ∆′′ = + − +

∆+ − +

( )2

2 3 40 0 0

(6t 18t 11)f (x ) f (x ) t 1 f (x )

12

− += ∆ + ∆ − + ∆ .

În consecinţă avem:

f ′ (x)= f ′ (x0+ht) ≈1

h(

22 3

0 0 0(2t 1) (3t 6t 2)

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

− − +∆ + ∆ + ∆ +

Page 208: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

208

+3 2

40

(2t 9t 11t 3)f (x )

12

− + −∆ )

f ′′ (x) = f ′′ (x0+ht) ≈ 2

1

h( ( )

22 3 4

0 0 0(6t 18t 11)

f (x ) f (x ) t 1 f (x )12

− +∆ + ∆ − + ∆ ).

Page 209: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

209

VIII. Integrarea numerică

VIII.1. Formula generală de cuadratură numerică. Formula de

cuadratură Newton-Cotes.

Fie f : [a, b] → R o funcţie continuă. Ne punem problema să calculăm

valoarea aproximativă a integralei b

a

f (x) (x)dxρ∫ , unde ρ : [a, b]→R este o funcţie

continuă strict pozitivă numită pondere. Considerăm x0, x1, …, xn n+1 puncte

distincte din intervalul [a, b], şi notăm yi = f(xi) pentru orice i = 0,1,…n.

O formulă de cuadratură presupune aproximarea integralei b

a

f (x) (x)dxρ∫

printr-o combinaţie liniară de valori ale funcţiei f în punctele x0, x1, …, xn, i.e

b

a

f (x) (x)dxρ∫ ≈ A0 f(x0) + A1 f(x1) + ... + Anf(xn).

Fie Ln polinomul Lagrange asociat lui f şi punctelor considerate:

Ln(x) = ( ) ( )n

i ii 0

f x l x=∑ = ( )( ) ( )( ) ( )

( )( ) ( )( ) ( )

n0 1 i 1 i 1 n

ii 0 i 1 i i 1 i i 1 i ni 0

x x x x .... x x x x ... x xy

x x x x .... x x x x ... x x− +

− +=

− − − − −

− − − − −∑ .

Înlocuind f prin Ln, obţinem formula de aproximare

b b

na a

f (x) (x)dx L (x) (x)dxρ ≈ ρ∫ ∫

( ) ( ) ( ) ( )b b bn n

i i i ii 0 i 0a a a

f (x) (x)dx (x) f x l x dx f x (x)l x dx= =

ρ ≈ ρ = ρ∑ ∑∫ ∫ ∫

Page 210: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

210

Deci notăm dacă Ai = ( )b

ia

(x)l x dxρ∫ , atunci b

a

f (x) (x)dxρ∫ ≈ A0 f(x0) + A1 f(x1) +

... + Anf(xn).

În cele ce urmează ne propunem să calculăm eroarea cu care

b

na

L (x) (x)dxρ∫ aproximeză b

a

f (x) (x)dxρ∫ . Reprezentând punctele sub forma

xi = ia b b a

t2 2

+ −+ , ti ∈[-1, 1], i ∈0, 1, ..., n,

avem

b

na

L (x) (x)dxρ∫ =

= ( ) ( ) ( )( ) ( )( ) ( )( )( ) ( )( ) ( )

nb 0 1 i 1 i 1 nia

i 0 i 1 i i 1 i i 1 i ni 0

x x x x .... x x x x ... x xx f x dx

x x x x .... x x x x ... x x− +

− +=

− − − − −ρ

− − − − −∑∫

= ( ) ( ) ( )( ) ( )( ) ( )( )( ) ( )( ) ( )

n b 0 1 i 1 i 1 ni a

i 0 i 1 i i 1 i i 1 i ni 0

x x x x .... x x x x ... x xf x x dx

x x x x .... x x x x ... x x− +

− +=

− − − − −ρ

− − − − −∑ ∫

Facem schimbarea de variabilă

x = a b b a

t2 2

+ −+

şi obţinem

b

na

L (x) (x)dxρ∫ =

1n0 i 1 i 1 n

ii 0 i i 1 i i 1 i ni 0 1

(t t ) (t t )(t t ) (t t )b a a b b af (x ) ( t) dt

2 2 2 (t t ) (t t )(t t ) (t t )− +

− += −

− − − −− + −ρ +

− − − −∑ ∫

Formula

b

a

f (x) (x)dxρ ≈∫

1n0 i 1 i 1 n

ii 0 i i 1 i i 1 i ni 0 1

(t t ) (t t )(t t ) (t t )b a a b b af (x ) ( t) dt.

2 2 2 (t t ) (t t )(t t ) (t t )− +

− += −

− − − −− + −ρ +

− − − −∑ ∫

se numeşte formula generală de cuadratură.

Page 211: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

211

Presupunem că f este de clasă Cn+1. Pentru a evalua restul formulei ţinem

seama că eroarea cu care polinomul de interpolare aproximează funcţia este dată de

|f(x) − Ln(x)| ≤ 0 1 nM

(x x )(x x ) (x x )(n 1)!

− − −+

,

unde M = x [a,b]sup∈

|f(n+1)(x)|

Rn(f) = b b b

n na a a

f (x) (x)dx (x)L (x)dx (f (x) L (x)) (x)dxρ − ρ = − ρ∫ ∫ ∫

|Rn(f)| = |b

na

(f (x) L (x)) (x)dx− ρ∫ | ≤ b

na

| f (x) L (x) | (x)dx− ρ∫

Procedând ca mai înainte obţinem restul formulei generale de cuadratură:

|Rn(f)| ≤ ( )!1n

M

+

1n 2

0 1 n1

b a a b b at (t t )(t t ) (t t )dt

2 2 2

+

− + − ρ + − − − ∫ ,

unde M = x [a,b]sup∈

|f(n+1)(x)|.

Presupunem că ρ ≡ 1, punctele sunt echidistante şi că x0 = a, xn = b. Deci

xi = a + b a

n

−i, i = 0, 1, 2, …, n.

Aproximând sub integrală funcţia cu polinomul de interpolare Lagrange şi făcând

schimbarea de variabilă

x = a + b a

n

−t,

obţinem

( ) ( ) ( ) ( ) ( )b n n

n nii i

i 0 i 0a

b af (x) (x)dx b a H f x b a H f a i

n= =

− ρ ≈ − = − +

∑ ∑∫

unde

( ) ( )( )

( ) ( )( ) ( )

( )( )

( ) ( )

n inn

i 0

n in

0

11H t t 1 ... t i 1 t i 1 ... t n dt

n n i !i!

1 t t 1 ... t n1dt

n n i !i! t i

−= − − + − − −

− − −=

− −

Page 212: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

212

Numerele ( )niH se numesc coeficienţii ˆNewton - Cotes iar formula se aproximare se

numeşte formula ˆNewton - Cotes . Au loc relaţiile

( )nn

ii 0

H 1=

=∑ şi ( ) ( )n ni n iH H −= , i = 0,1,…,n.

Dacă f este o aplicaţie de clasă Cn+1 are loc următoarea formulă de evaluare a

restului:

( ) ( )b n

ni

i 0a

b af (x) (x)dx b a H f a i

n=

− ρ − − +

∑∫ ≤

( )1

n 1 !+

nn 2

0

b at(t 1)(t 2) (t n)dt

n

+− − − − ∫

x [a,b]sup∈

|f(n+1)(x)|.

De reţinut că există funcţii continue pentru care şirul

( ) ( ) ( )n

nii

i 0 n

b a H f x=

∑ nu converge către ( )

b

af x dx∫ .

VIII.2. Formula dreptunghiurilor

Fie f : [a, b] → R o funcţie de clasă C1. Aplicăm formula generală de

cuadratură pentru ρ≡1, n=0, x0 = a b

2

+ (deci t0 = 0). Obţinem

b

a

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

f2

+

cu o eroare ≤( )2b a

4

[ ]( )

x a,bsup f ' x∈

.

Considerăm o diviziune (x0, x1, …., xn) a intervalului [a, b] cu puncte

echidistante (xi = a + n

ab − i, i = 0, 1, 2, …, n.) şi aplicăm pe fiecare subinterval [xi,

xi+1] formula de aproximare

Page 213: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

213

( )xi 1xi

f x dx+∫ ≈ (xi+1-xi) i i 1x xf

2++

Ţinând cont că ( ) ( )i

n 1b x 1a xii 0

f x dx f x dx−

+

=

=∑∫ ∫ , obţinem următoarea formulă de

cuadratură numită formula dreptunghiurilor:

b

a

f (x)dx∫ ≈b a

n

− n 1i i 1

i 0

x xf

2

−+

=

+

∑ .

Restul (eroarea) este dat de:

( )n 1b i i 1

ai 0

x xb af x dx f

n 2

−+

=

+− −

∑∫ =

= ( )i 1

i

n 1 n 1x i i 1x

i 0 i 0

x xb af x dx f

n 2+

− −+

= =

+− −

∑ ∑∫

= ( )i 1

i

n 1 x i i 1x

i 0

x xb af x dx f

n 2+

−+

=

+ − −

∑ ∫

≤ ( )i 1

i

n 1 x i i 1x

i 0

x xb af x dx f

n 2+

−+

=

+− −

∑ ∫

= ( ) ( )i 1

i

n 1 x i i 1i 1 ix

i 0

x xf x dx x x f

2+

−+

+=

+ − −

∑ ∫

≤( )

i i 1

2n 1i 1 i

x [x ,x ]i 0

x xsup | f (x) |

4+

−+

∈=

−′∑

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

′( )2n 1

i 1 i

i 0

x x

4

−+

=

−∑

= x [a,b]

sup | f (x) |∈

′( )2n 1

2i 0

b a

4n

=

−∑

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

′( )2b a

4n

Page 214: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

214

Ca urmare restul (eroarea) în formula dreptunghiurilor este

( )n 1b i i 1

ai 0

x xb af x dx f

n 2

−+

=

+− −

∑∫ ≤( )2b a

4n

[ ]( )

x a,bsup f ' x∈

Interpretarea geometrică a formulei dreptunghiurilor

Fie Di dreptunghiul cu o dimensiune dată intervalul [xi, xi+]] şi cu cealaltă

dimensiune dată de i i 1x xf

2++

Atunci aria dreptunghiului Di este

(xi+1-xi) i i 1x xf

2++

=b a

n

− i i 1x xf

2++

,

şi deci formula dreptunghiurilor presupune aproximarea b

a

f (x)dx∫ prin suma ariilor

dreptunghiurilor Di, i = 0, 1, …n-1.

Proceduri MAPLE pentru calculul valorii aproximative a unei integrale

definite folosind formula dreptunghiurilor:

Procedura dreptunghiuri1 are drept parametri funcţia care se integrează,

limitele de integrare, şi numărul de subintervale din diviziune. Procedura întoarce

valoarea aproximativă a integralei obţinută aplicând formula dreptunghiurilor.

Procedura dreptunghiuri2 este similară, cu singura deosebire că în locul numărului

i i 1x xf

2++

xi xi+1

Page 215: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

215

de subintervale se introduce un număr 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 + x7 ( )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

Page 216: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

216

> 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 eeee( )−x2

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

25

∑ = i 0

4

eeee

− + /4 5

2 i5

2

> evalf(middlesum(g(x),x=-1..1,5));

1.503548970

> middlebox(g(x),x=-1..1,5);

Page 217: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

217

> middlesum(g(x),x=-1..1,10);

15

∑ = i 0

9

eeee

− + /9 10

i5

2

> evalf(middlesum(g(x),x=-1..1,10));

1.496106505

> middlebox(g(x),x=-1..1,10);

Comanda middlesum(g(x), x=a..b,n) din pachetul student întoarce aproximaţia

integraleib

a

g(x)dx∫ obţinută prin aplicarea formulei dreptunghiurilor utilizând n

subintervale. Comanda middlebox(g(x), x=a..b,n) reprezintă grafic dreptunghiurile

utilizate în formulei dreptunghiurilor.

Page 218: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

218

VIII.3. Formula trapezelor

Fie f : [a, b] → R o funcţie de clasă C2. Aplicăm formula generală de

cuadratură pentru ρ≡1, n=1, x0 = a, x1 =b (deci t0 = -1 şi t1 =1). Obţinem

b

a

f (x)dx∫ ≈1 1

1 1

b a (t 1) (t 1)f (a) dt f (b) dt

2 ( 1 1) (1 1)− −

− − + + − − +

∫ ∫ =

= 1 12 2

1 1

b a (t 1) (t 1)f (a) f (b)

2 4 4− −

− − + +

= b a

2

−(f(a) +f(b)).

Deci b

a

f (x)dx∫ ≈ b a

2

−(f(a) +f(b)).

Eroarea este

| b

a

f (x)dx∫ - b a

2

−(f(a) +f(b)) | ≤

1

2! [ ]( )

x a,bsup f " x∈

( )3b a

8

− 1

1

(t 1)(t 1)dt−

− +∫ =

= 1

2! [ ]( )

x a,bsup f " x∈

( )3b a

8

− 12

1

t 1dt−

−∫ = 1

2! [ ]( )

x a,bsup f " x∈

( )3b a

8

−2

12

0

t 1dt−∫

= [ ]

( )x a,bsup f " x∈

( )3b a

8

− 12

0

1 t dt−∫ =[ ]

( )x a,bsup f " x∈

( )3b a

8

−13

10

0

tt

3

=[ ]

( )x a,bsup f " x∈

( )3b a

12

−.

Deci

| b

a

f (x)dx∫ - b a

2

−(f(a) +f(b)) | ≤

( )3b a

12

[ ]( )

x a,bsup f " x∈

.

Page 219: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

219

Considerăm o diviziune (x0, x1, …., xn) a intervalului [a, b] cu puncte

echidistante (xi = a + b a

n

−i, i = 0, 1, 2, …, n.) şi aplicăm pe fiecare subinterval [xi,

xi+1] formula de aproximare

( )xi 1xi

f x dx+∫ ≈ i 1 ix x

2+ −

( f(xi) + f(xi+1))

Ţinând cont că ( ) ( )i

n 1b x 1a xii 0

f x dx f x dx−

+

=

=∑∫ ∫ , obţinem următoarea formulă de

cuadratură numită formula trapezelor:

b

a

f (x)dx∫ ≈b a

n

− ( ) ( ) ( )n 1

ii 1

f a f bf x

2

=

++

∑ .

Restul (eroarea) este dat de:

( ) ( ) ( ) ( )n 1b

iai 1

f a f bb af x dx f x

n 2

=

+−− +

∑∫ =

= ( ) ( ) ( ) ( )i 1

i

n 1 n 1xix

i 0 i 1

f a f bb af x dx f x

n 2+

− −

= =

+−− +

∑ ∑∫

= ( ) ( ) ( )( )i 1

i

n 1 n 1x i 1 ii i 1x

i 0 i 0

x xf x dx f x f x

2+

− −+

+= =

−− +∑ ∑∫

= ( ) ( ) ( )( )i 1

i

n 1 x i 1 ii i 1x

i 0

x xf x dx f x f x

2+

−+

+=

−− +∑∫

≤ ( ) ( ) ( )( )i 1

i

n 1 x i 1 ii i 1x

i 0

x xf x dx f x f x

2+

−+

+=

−− +∑ ∫

≤( )

i i 1

3n 1i 1 i

x [x ,x ]i 0

x xsup | f (x) |

12+

−+

∈=

−′′∑

≤x [a,b]

sup | f (x) |∈

′′( )3n 1

i 1 i

i 0

x x

12

−+

=

−∑

Page 220: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

220

=x [a,b]

sup | f (x) |∈

′′( )3n 1

3i 0

b a

12n

=

−∑

≤( )3

2

b a

12n

[ ]( )

x a,bsup f " x∈

.

Ca urmare restul (eroarea) în formula trapezelor este

( ) ( ) ( ) ( )n 1b

iai 1

f a f bb af x dx f x

n 2

=

+−− +

∑∫ ≤

( )3

2

b a

12n

[ ]( )

x a,bsup f " x∈

Interpretarea geometrică a formulei trapezelor

Fie Ti trapezul dreptunghic cu înălţimea egală cu lungimea intervalului [xi,

xi+]] şi cu bazele f(xi) şi f(xi+1).

Atunci aria trapezului Ti este

i 1 ix x

2+ −

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

2n

−( f(xi) + f(xi+1)),

şi deci formula trapezelor arată că ( )b

af 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 funcţia care se integrează,

limitele de integrare, şi numărul de subintervale din diviziune. Procedura întoarce

f(xi+1)

f(xi)

xi xi+1

Page 221: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

221

valoarea aproximativă a integralei obţinută aplicând formula trapezelor. Procedura

trapeze2 este similară, cu singura deosebire că în locul numărului de

subintervale se introduce un număr 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 + x7 ( )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);

Page 222: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

222

,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 eeee( )−x2

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

+ 25

eeee( )-1 2

5

∑ = i 1

4

eeee

− + 1

2 i5

2

Page 223: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

223

> evalf(trapezoid(g(x),x=-1..1,5));

1.473924388

> trapezoid(g(x),x=-1..1,10);

+ 15

eeee( )-1 1

5

∑ = i 1

9

eeee

− + 1

i5

2

> evalf(trapezoid(g(x),x=-1..1,10));

1.488736679

Comanda trapezoid(g(x), x=a..b,n) din pachetul student întoarce aproximaţia

integraleib

a

g(x)dx∫ obţinută prin aplicarea formulei trapezelor utilizând n

subintervale.

VIII.4. Formula lui Simpson

Fie f : [a, b] → R o funcţie de clasă C4. Aplicăm formula generală de

cuadratură pentru ρ≡1, n=2, x0 = a, x1 =a b

2

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

Obţinem

( )b

af x dx∫ ≈

b a

6

−(f(a) +4 ( )a b

2f + + f(b))

Considerăm o diviziune (x0, x1, …., x2n) a intervalului [a, b] cu puncte

echidistante (xi = a + b a

2n

−i, i = 0, 1, 2, …, 2n.) şi aplicăm pe fiecare subinterval

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

( )xi 2xi

f x dx+∫ ≈ i 2 ix x

6+ −

( f(xi) +4f(xi+1) + f(xi+2))

Ţinând cont că ( ) ( )2n 2b xi 2

a xii 0ipar

f x dx f x dx−

+

=

= ∑∫ ∫ , obţinem următoarea formulă de

cuadratură numită formula lui Simpson:

Page 224: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

224

( )b

af x dx∫ ≈

b a

6n

− ( ) ( ) ( ) ( )n 1 n 1

2i 2i 1i 1 i 1

f a f b 2 f x 4 f x− −

−= =

+ + +

∑ ∑ .

Se poate arăta că restul (eroarea) este dat de:

( ) ( ) ( ) ( ) ( )n 1 n 1b

2i 2i 1ai 1 i 1

b af x dx f a f b 2 f x 4 f x

6n

− −

−= =

−− + + +

∑ ∑∫ ≤

( )5

4

b a

2880n

[ ]

( ) ( )4

x a,bsup f x∈

.

VIII.5. Algoritmul lui Romberg

Fie f : [a, b] → R o funcţie de clasă C2. Considerăm o diviziune (x0, x1, ….,

n2x ) a intervalului [a, b] cu puncte echidistante (xi = a + n

b a

2

−i, i = 0.. 2n).

Aplicând formula trapezelor:

b

a

f (x)dx∫ ≈n

b a

2

− ( ) ( )( )

n2 1

ii 1

f a f bf x

2

=

+ +

∑ .

Dacă notăm ϕ(n) = n

b a

2

− ( ) ( )( )

n2 1

ii 1

f a f bf x

2

=

+ +

∑ , atunci eroarea cu care ϕ(n)

aproximează ( )b

af x dx∫ este dată de

( ) ( )b

af x dx n−ϕ∫ ≤

( ) 2n

b ah

12

[ ]( )

x a,bsup f " x∈

unde hn = n

b a

2

−. Deci eroarea este de ordinul O( 2

nh ). Se poate arăta că

Page 225: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

225

ϕ(n) = b

a

f (x)dx∫ + a22nh + a4

4nh + a6

6nh + a8

8nh +....

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

ϕ(n+1) = b

a

f (x)dx∫ + a22n 1h + + a4

4n 1h + + a6

6n 1h + + a8

8n 1h + +....

= b

a

f (x)dx∫ + 1

4a2

2nh +

1

16a4

4nh +

1

64a6

6nh +

1

256a8

8nh +....

şi ca urmare

( ) ( )4 n 1 n

3

ϕ + − ϕ =

b

a

f (x)dx∫ - 1

4a4

4nh -

5

16 a6

6nh -

21

64a8

8nh +....

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

Ca şi în cazul extrapolării Richardson formula poate fi înbunătăţită succesiv. Pentru

aceasta notăm

I (n,0) = ϕ(n)

şi definim

I(n,m) = ( ) ( )m

m

4 I n, m 1 I n 1, m 1

4 1

− − − −

−, 1 ≤ m ≤ n.

Pentru calculul recursiv al valorilor I(n,m) se poate folosi tabelul

triunghiular:

Prima coloană a acestui tabel poate fi calculată direct cu definiţia: I(n,0) =ϕ(n). În

cazul elementelor de pe celelalte coloane se observă că fiecare dintre ele depinde de

elementul din stânga de pe aceeaşi linie şi de pe linia de deasupra din stânga.

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)

Page 226: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

226

În situaţia în care h0 = b-a >1, alegem k astfel încât k

b a

2

− să fie suficient de

mic (de exemplu mai mic decât 1) şi facem calculul recursiv al valorilor I(k+l,m)

folosind tabelul triunghiular:

În final se ţine seama că I(k+n+j,n) este o aproximaţie bună a b

a

f (x)dx∫ când j → ∞.

De obicei n este mic (n = 2 sau n = 3).

Încheiem acestă sectiune prezentând o modalitate mai eficientă de calcul a

lui I(n,0) = ϕ(n). Se observă că

I(n+1,0) = ϕ(n+1) = n 1

b a

2 +

− ( ) ( )( )

n 12 1

n 1i 1

f a f bf a ih

2

+ −

+=

+ + +

= 1

2

n

b a

2

− ( ) ( )( ) ( )

n2 1

n 1 n 1i 1

f a f bf a (2i 1)h f a (2i)h

2

+ +=

+ + + − + +

= 1

2

n

b a

2

− ( ) ( )( ) ( )

n n2 1 2 1

n n 1i 1 i 1

f a f bf a ih f a (2i 1)h

2

− −

+= =

+ + + + + −

∑ ∑

=1

2I(n,0) + hn+1 ( )

n2 1

n 1i 1

f a (2i 1)h−

+=

+ −∑ .

Astfel utilizând această formulă recursivă calculul lui I(n+1,0) necesită doar 2n – 1

evaluri ale lui f în loc de 2n+1 + 1 câte ar necesita dacă s-ar aplica definiţia.

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)

Page 227: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

227

VIII.6. Cuadratura Gauss

Fie f : [a, b] → R o funcţie continuă şi ρ : [a, b]→R o pondere. Presupunem

că nodurilor x0, x1, …, xn∈[a, b] sunt date. Formula generală de cuadratură pentru

calcului lui b

a

f (x) (x)dxρ∫ dă integrala polinomului de interpolare asociat nodurilor

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

( ) ( ) ( ) ( ) ( )b b bn n n

i i i i i ii 0 i 0 i 0a a a

f (x) (x)dx (x) f x l x dx f x (x)l x dx A f x= = =

ρ ≈ ρ = ρ =∑ ∑ ∑∫ ∫ ∫

unde Ai = ( )b

ia

(x)l x dxρ∫ pentru orice i. Dacă nu se impune nici o condiţie asupra

nodurilor x0, x1, …, xn formula de cuadratură

b

a

f (x) (x)dxρ∫ ≈ A0 f(x0) + A1 f(x1) + ... + Anf(xn)

este exactă pentru orice polinom de grad ≤ n.

Există însă posibilitatea alegerii a n+1 noduri astfel încât formula de

cuadratură să fie exactă pentru orice polinoam de grad ≤ 2n+1. Gauss a arătat că

cele n+1 noduri trebuie să fie rădăcile unui polinom q de grad n+1 cu proprietatea

bk

a

q(x)x (x)dxρ∫ = 0 pentru orice 0 ≤ k ≤n.

Să presupunem că polinomul q are proprietatea de mai sus şi să arătăm că

formula de cuadratură pentru care nodurile sunt rădăcinile lui q este exactă pentru

orice polinom f de grad ≤ 2n+1. Efectuând împărţirea lui f la q rezultă că există

polinoamele p şi r de grade ≤ n astfel încât

f(x) = p(x)q(x) + r(x).

Pentru orice i fie

Ai = ( )b

ia

(x)l x dxρ∫

Page 228: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

228

=( )( ) ( )( ) ( )

( )( ) ( )( ) ( )( )

b 0 1 i 1 i 1 na

i 0 i 1 i i 1 i i 1 i n

x x x x .... x x x x ... x xx dx

x x x x .... x x x x ... x x− +

− +

− − − − −ρ

− − − − −∫

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

b

a

f (x) (x)dxρ∫ = ( ) ( ) ( )( )b

a

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

= ( ) ( )b

a

p x q x (x)dxρ∫ + ( )b

a

r x (x)dxρ∫

= ( )b

a

r x (x)dxρ∫

= ( )n

i ii 0

A r x=∑

Pe de altă parte avem

( )n

i ii 0

A f x=∑ = ( ) ( ) ( )( )

n

i i i ii 0

A p x q x r x=

+∑ = ( )n

i ii 0

A r x=∑ .

deoarece xi este rădăcină a lui q pentru orice i. În consecinţă,

b

a

f (x) (x)dxρ∫ = ( )n

i ii 0

A f x=∑ .

Teorema 8. (cuadratura Gauss) Fie ρ : [a, b]→R o pondere. Fie xii cele

n+1 noduri ale polinomului qn+1 de grad n+1 cu prorietatea că b

kn 1

a

q (x)x (x)dx+ ρ∫ =

0 pentru orice 0 ≤ k ≤n. Pentru orice i fie

Ai = ( )b

ia

(x)l x dxρ∫

= ( )( )( ) ( )( ) ( )

( )( ) ( )( ) ( )b 0 1 i 1 i 1 na

i 0 i 1 i i 1 i i 1 i n

x x x x .... x x x x ... x xx dx

x x x x .... x x x x ... x x− +

− +

− − − − −ρ

− − − − −∫ .

Atunci formula de cuadratură

Page 229: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

229

b

a

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

( )( ) ( )( )

( ) ( )2n 2b bn

2i i n 1

i 0a a

ff (x) (x)dx A f x q x x dx

2n 2 !

+

+=

ξρ − ≤ ρ

+∑∫ ∫

pentru un anumit ξ ∈(a, b).

Particularizăm în continuare ponderea ρ

1. Dacă ρ(x) = 1 pe intevalul [a,b], atunci polinomele qn care satisfac

condiţiile din teorema precedentă sunt polinoamele Legendre Ln.

Expresia acestor polinoame este dată de

Ln(x) = ( )

( ) ( )n

n nn

n! dx a x b

2n ! dx − −

Restul (eroarea) formulei de cuadratură în situaţia în care se folosesc

ca noduri rădăcinile lui Ln este dat de ( ) ( ) ( ) ( )

( ) ( )

4 2n 1 2n

3

n! b a f

2n ! 2n 1

+− ξ

+

.

2. Dacă ρ(x) = 2

1

1 x− pe intervalul (-1,1), atunci polinomele qn care

satisfac condiţiile din teorema precedentă sunt polinoamele Cebîşev

de speţa I Tn. Polinoamele Cebîşev 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)). Rădăcinile

polinomului Cebîşev de grad n+1 sunt:

xi = 2i 1

cos2n 2

+ π + , 0 ≤ i ≤ n.

În acest caz Ai = n 1

π

+ pentru orice i = 0,..., n.

Page 230: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

230

3. Dacă ρ(x) = 21 x− pe intervalul [-1, 1], atunci polinomele qn care

satisfac condiţiile din teorema precedentă sunt polinoamele Cebîşev

de speţa a II-a Un. Polinoamele Cebîşev 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

+. Rădăcinile

polinomului Cebîşev Un+1 de grad n+1 sunt:

xi = i 1

cosn 2

+ π + , 0 ≤ i ≤ n.

În acest caz Ai = 2 i 1sin

n 2 n 2

π + π + + pentru orice i = 0,..., n.

4. Dacă ρ(x) =(1-x)α(1+x)β (α, β> -1) pe intervalul (-1,1), atunci

polinomele qn care satisfac condiţiile din teorema precedentă sunt

polinoamele Jacobi.

Intervalul [a, b] poate fi transformat în intervalul [-1, 1] cu ajutorul

schimbării de variabilă t = b a

2

−x -

b a

2

+.

VIII.7. Formule pentru calculul aproximativ al unei integrale

duble

Fie ϕ1, ϕ2 : [a, b] → R două funcţii de clsă C1 şi fie

D = (x,y) ∈ R2 | a≤x≤b, ϕ1(x) ≤ y ≤ ϕ2(x) .

Atunci D este un domeniu simplu. Considerăm o funcţie continuă f : D → R. Ne

punem problema aproximării integralei ( )D

f x, y dxdy∫∫ . D fiind un domeniu simplu

putem trece la integrale iterate:

( )D

f x, y dxdy∫∫ = ( )( )( )b x2

a x1f x, y dy dx

ϕ

ϕ

∫ ∫ = ( )b

aF x dx∫

Page 231: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

231

unde F(x) = ( )( )( )x2x1

f x, y dyϕ

ϕ∫ . Considerăm o reţea de noduri (xi, yj), i = 0, 1, …, n şi

j = 0, 1, …, m. Aplicând integralei ( )b

aF x dx∫ o formulă de cuadratură se obţine:

( )D

f x, y dxdy∫∫ ≈ ( )n

i ii 0

A F x=∑

unde

F(xi) = ( )( )( )x2 i

ix1 i

f x , y dyϕ

ϕ∫ .

Aplicând şi acestei ultime integrale o formulă de cuadratură:

F(xi) ≈ ( )mi

ij i jj 0

B f x , y=∑

rezultă formula de aproximare

( )D

f x, y dxdy∫∫ ≈ ( )mn i

i ij i ji 0 j 0

A B f x , y= =∑∑ .

Să considerăm cazul în care D este un dreptunghi:

D = (x,y) ∈ R2 | a≤x≤b, c ≤ y ≤ d .

şi reţeaua este formată din punctele

xi = a + ih, i = 0, 1, …, n, h = b a

n

yi = c + jk, j = 0, 1, …, m, k = d c

m

a xi xi+1 b X

Y

d

yi+1

yi

c

Page 232: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

232

Vom obţine valoarea aproximativă a integralei funcţiei f pe dreptunghiul de

vârfuri (xi, yi), (xi, yi+1) , (xi+1, yi) şi (xi+1, yi+1) prin aplicarea repetată a formulei

trapezelor:

Iij = ( )xi 1 yj 1

y jxi

f x, y dy dx+

+

∫ ∫ ≈ ( )( ) ( )xi 1j j 1xi

kf x, y f x, y dx

2+

+ +

= ( ) ( )x xi 1 i 1j j 1x xi i

kf x, y dx f x, y dx

2+ +

+

+ ∫ ∫

≈ ( ) ( ) ( ) ( )( )i j i 1 j i j 1 i 1 j 1k h

f x, y f x, y f x , y f x , y2 2 + + + ++ + +

Astfel valoarea aproximativă a integralei

( )D

f x, y dxdy∫∫ =

=n 1m 1

iji 0 j 0

I− −

= =∑ ∑ ≈ ( ) ( ) ( ) ( )( )

n 1m 1

i j i 1 j i j 1 i 1 j 1i 0 j 0

khf x, y f x, y f x , y f x , y

4

− −

+ + + += =

+ + +∑ ∑ .

Presupunem că

xi = a + ih, i = 0, 1, …, 2n, h = b a

2n

yi = c + jk, j = 0, 1, …, 2m, k = d c

2m

Dacă pentru calculul integralei Iij cu i şi j pare se aplică formula Simpson repetată se

obţine

Iij = ( )xi 2 y j 2

y jxi

f x, y dy dx+

+

∫ ∫

≈ ( ) ( ) ( )( )xi 2j j 1 j 2xi

kf x, y 4f x, y f x, y dx

6+

+ + + +

= ( ) ( ) ( )x x xi 2 i 2 i 2j j 1 j 2x x xi i i

kf x, y dx 4 f x, y dx f x, y dx

3+ + +

+ +

+ + ∫ ∫ ∫

Page 233: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

233

( ) ( ) ( ) ( )

( ) ( ) ( ) ( )( )( )

i j i 2 j i j 2 i 2 j 2

i 1 j i 1 j 1 i 2 j 1 i 1 j 2

i 1 j 1

hk(f x , y f x , y f x , y f x , y

9

4 f x , y f x y f x , y f x , y

16f x , y )

+ + + +

+ + + + + + +

+ +

≈ + + + +

+ + + + +

+

Notăm

( ) ( ) ( ) ( )

( ) ( ) ( ) ( )( )( )

ij i j i 2 j i j 2 i 2 j 2

i 1 j i 1 j 1 i 2 j 1 i 1 j 2

i 1 j 1

hkF (f x , y f x , y f x , y f x , y

9

4 f x , y f x y f x , y f x , y

16f x , y )

+ + + +

+ + + + + + +

+ +

= + + + +

+ + + + +

+

Atunci

( )D

f x, y dxdy∫∫ = n 1m 1

2i,2 ji 0 j 0

I− −

= =∑ ∑ ≈

n 1m 1

2i,2 ji 0 j 0

F− −

= =∑ ∑

Procedura dtrapeze are drept parametri funcţia care se integrează, limitele

de integrare, şi numerele n şi m care determină punctele din reţea. Procedura

returnează valoarea aproximativă a integralei duble obţinută prin aplicarea repetată

a formulei trapezelor.

> dtrapeze := proc(f, a, b, c, d, n, m)

> local i, j, iabcd, h, k;

> iabcd := 0;

> h := (b - a)/n;

> k := (d - c)/m;

> for i from 0 to n - 1 do for j from 0 to m - 1 do iabcd :=

> iabcd + f(a + i*h, c + j*k)+ f(a + i*h, c + (j + 1)*k)

+ f(a + (i + 1)*h, c + j*k) + f(a + (i + 1)*h, c + (j + 1)*k)

> od

> od;

> iabcd := 1/4*iabcd*h*k;

> RETURN(evalf(iabcd))

> end;

Exemple

> f:=((x,y)->x^7*ln(x+y)+x*y*cos(x));

Page 234: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

234

:= f → ( ),x y + x7 ( )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

Page 235: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

235

Anexa : Iniţiere în Maple

A.1 Structura internă. Categorii de comenzi MAPLE.

MAPLE este un mediu de programare pentru calcule numerice şi simbolice.

Calculul simbolic este calculul cu variabile şi constante care respectă regulile

algebrice, ale analizei şi ale altor ramuri ale matematicii. MAPLE-ul permite

manipularea formulelor care utilizează simboluri, necunoscute şi operaţii formale,

în comparaţie cu limbajele de programare tradiţionale care utilizează doar date

numerice, caractere şi şiruri de caractere. Se încadrează în aceeaşi 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 făcute de sistem. Biblioteca standard este automat

încărcată în memorie la deschidere unei sesiuni MAPLE. În afara acestei biblioteci

există o bibliotecă extinsă cu rutine destinate rezolvării unor probleme mai

complicate, ca de exemplu, rezolvarea sistemelor de ecuaţii, probleme de statistică

sau algebră liniară. Această bibliotecă nu este încărcată automat în memorie, ci

trebuie accesată, atunci când este necesar. Interfaţa cu utilizatorul este scrisă în C.

Interfaţa pentru sistemul de operare Windows este bazată pe ferestre. O foaie

(formular) de programare MAPLE (fişier MAPLE, fişier cu extensia .mws)

existentă poate fi încărcată selectând Open din meniul File, iar o foaie nouă de

programare MAPLE poate fi creată selectând New din meniul File. Salvarea foii de

programare MAPLE se realizează selectând Save sau Save as (pentru salvarea sub

un alt nume) din meniul File. Foia de programare se poate salva sub forma unui

fişier text sau latex dacă se selectează Export as din meniu File. Încheierea

sesiunii MAPLE se face selectând Exit din meniul File, sau prin clic pe butonul de

închidere X.

Page 236: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

236

Foile de programare MAPLE constau în cinci tipuri de zone: text, input

(intrare), ouput (ieşire), 2D graphics (grafică 2D), 3D graphics (grafică 3D), şi

animation (animaţie). În zona text se introduce textul necesar documentării. Zona

input este zona în care se introduc comenzile MAPLE şi este recunoscută după

promptul > prezent în marginea din stânga. Întinderea zonei input sau a zonei text

este arătată printr-o bară verticală în partea stângă. Comutarea între cele două zone

se poate face cu ajutorul tastei funcţionale F5 sau din bara de meniu. Zona output

este generată automat la furnizarea răspunsului. Colecţia de butoane şi informaţia

afişată în bara de context (sub bara de instrumente) depind de conţinutul curent

definit tipul de zonă în care se găseşte cursorul. Informaţia despre foia de

programare curentă este afişată în bara de stare, în partea de jos a ecranului.

MAPLE este un mediu interpretat. Explicăm î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 maşină. Există trei

modalităţi principale pentru a obţine această traducere: interpretarea, asamblarea

şi compilarea. Programele asamblate şi cele compilate sunt traduse în limbaj

maşină înainte ca să fie utilizate. Interpretarea este un tip special de traducere, în

care programul este tradus în instrucţiuni în limbaj maşină “din mers”, adică în

timpul execuţiei sale. Mai precis, programul care trebuie interpretat (să-l numim P)

este preluat de un program de interpretare (interpretorul I). Când se utilizează

programul P, calculatorul rulează de fapt interpretorul I, iar interpretorul I execută

paşii programului P. Interpretorul verifică textul programului P şi îndeplineşte

instrucţiunile acestuia pas cu pas. Interpretarea este flexibilă deoarece un program

interpretat poate fi adaptat, schimbat sau revizuit din mers. Sigur, interpretarea are

şi dezavantaje asupra cărora nu insistăm aici (de exemplu, programele interpretate

nu pot fi executate dacă nu există şi un interpretor corespunzător).

Fiind un mediu interpretat MAPLE permite realizare de rutine interactive.

Apariţia promptului > în fereastra MAPLE semnifică faptul că se poate introduce o

comandă. Fiecare comandă (cu excepţia comenzii ?) trebuie încheiată cu punct şi

virgulă (;) sau două puncte (:). Omiterea acestora generează o eroare de sintaxă.

Rectificarea se face tipărind ; sau : pe o linie nouă. Fiecare comanda este executată

Page 237: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

237

după apăsarea tastei ENTER. Dacă s-a utilizat : pentru încheierea comenzii,

comanda este executată fără a se afişa rezultatele, iar în cazul utilizării ; se afişează

şi rezultatele.

MAPLE dispune de peste 2000 de funcţii predefinite şi comenzi. Fiecare

comandă este introdusă, în zona input, în felul următor:

> nume_comanda(param1,param2,...);

Numele comenzilor a fost ales astfel încât pe de o parte să fie apropiat de

funcţionalitatea comenzii şi pe de altă parte să fie cât mai scurt posibil. MAPLE

este un mediu “case-sensitive” (se face distincţie între literele mari şi literele mici).

Cele mai multe comenzi încep cu literă mică şi au în corespondenţă o aceeaşi

comandă care începe cu literă mare. Aceasta din urmă poartă denumirea de

comandă inertă şi rolul ei este doar de afişare matematică a unei expresii. Cele mai

multe comenzi MAPLE necesită o listă de parametri la intrare. Această listă poate

conţine de exemplu, numere, expresii, mulţimi, etc., sau poate să nu conţină nici un

parametru. Indiferent de numărul de parametri specificaţi, ei trebuie incluşi între

paranteze rotunde (). Toate comenzile au număr minim de parametri de tip precizat,

de cele mai multe ori într-o ordine precizată. Multe comenzi pot fi utilizate cu un

număr de parametri mai mare strict decât acest număr minim de parametri. Aceşti

“extra” parametri reprezintă de obicei opţiuni de control al funcţionării 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 aşa cum s-a precizat mai sus.

2. Comenzi din biblioteca extinsă. Înainte de a le folosi acestea trebuie

mai întâi încărcate în memorie cu ajutorul comenzii readlib sub forma

> readlib(nume_comanda);

3. Comenzi care aparţin unor pachete specializate. Există două

modalităţi de utilizare a acestor comenzi:

• prin specificarea pachetului sub forma:

> nume_pachet[nume_comanda](param1,param2,...);

Page 238: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

238

• cu ajutorul comenzii with. Un apel de forma

> with(nume_pachet);

are ca urmare încărcarea în memorie şi afişarea în zona ouput a tuturor comenzilor

din pachet. Până 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 încărcată din bibliotecă sau dintr-un

pachet. Dacă nu s-a făcut acest lucru şi s-a introdus comanda, MAPLE nu generează

un mesaj de eroare, ci afişează î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 încărcată în memorie. Informaţii asupra

modului corect de introducere a unei comenzi se pot obţine cu ajutorul comenzii

help. Există mai mute modalităţi de utilizare a acestei comenzi. Este recomandabilă,

următoarea formă:

> ? nume_comanda

O comandă de forma:

> ?

afişează informaţii generale despre structura help-ului.

Altă variantă presupune un apel de forma

> help(`nume_comanda`);

De remarcat faptul că numele comenzii este inclus între apostrofuri întoarse

(backquotes).

A.2. Operatori, constante şi funcţii predefinite în MAPLE.

Expresii.

O expresie este o combinaţie validă de operatori şi variabile, constante, şi

apeluri de funcţii.

Operaţie Operator Exemple

Adunare + x+y

Page 239: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

239

Scădere - x-y

Opus - -x

Înmulţire * x*y

Împărţire / x/y

Ridicare la putere (xy) ** sau ^ x**y sau x^y

Tabelul precedent conţine operatorii aritmetici de bază din MAPLE.

Precedenţa operatorilor este aceeaşi ca în majoritatea limbajelor de programare. Mai

întâi sunt evaluate expresiile din paranteze. În lista următoare prioritatea cade de sus

în jos:

1. – (operator unar)

2. **, ^

3. *, /

4. +, -(scădere)

De remarcat faptul că exponenţierea succesivă nu e validă. Astfel MAPLE nu poate

evalua x^y^z. O expresie de acest fel trebuie introdusă sub forma x^(y^z). Ori de

câte ori există ambiguităţi trebuie utilizate ( ).

Următorul tabel prezintă funcţiile de bază din MAPLE ce pot interveni în

expresiile aritmetice.

Notaţie MAPLE Semnificaţie

abs(x) |x| (modulul)

iquo(x,y) partea întreagă a împărţirii x/y

irem(x,y) restul împărţirii lui x la y

trunc(x) cel mai mare număr întreg ≤ x,

dacă x ≥ 0, sau cel mai mic

număr întreg ≥ x, dacă x < 0

frac(x) x-trunc(x)

round(x) rotunjeşte pe x la cel mai

apropiat întreg

floor(x) cel mai mare număr întreg ≤ x

ceil(x) cel mai mic număr întreg ≥ x

Page 240: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

240

sqrt(x) sau x^(1/2) x

exp(x) ex

ln(x) sau log(x) lnx (logaritm natural)

sin(x) sinx

cos(x) cosx

tan(x) tgx

Facem câteva remarci asupra funcţiilor irem şi iqou (deoarece nu respectă

întocmai teorema împărţirii cu rest). Astfel dacă m şi n sunt două numere întregi, n

este nenul şi r este numărul întreg returnat de irem, atunci este satisfăcută relaţia:

m = n*q + r, abs(r) < abs(n) şi m*r ≥ 0.

Dacă m şi n nu sunt amândouă numere întregi, atunci irem rămâne neevaluată.

Ambele funcţii pot fi utilizate şi cu câte trei parametri. Dacă al treilea parametru

este prezent în funcţia irem, atunci lui i se asignează câtul, iar în cazul funcţiei iquo

i se asignează restul împărţirii.

Exemple:

> irem(29,4,'q');

1

> q;

7

> iquo(29,4,'r');

7

> r;

1

> irem(-29,4);

-1

> irem(29,-4);

1

> irem(-29,-4);

-1

> iquo(-29,4);

-7

> iquo(29,-4);

Page 241: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

241

-7

> iquo(-29,-4);

7

Funcţiile rem şi quo se aplică polinoamelor şi reprezintă analoagele

funcţiilor irem şi iquo. Acestea cer obligatoriu al treilea parametru ce indică

nedeterminata în raport cu care se consideră polinomul. Opţional admit al patrulea

parametru, cu acelaşi rol ca parametru 3 din funcţiile irem şi iquo. Asfel dacă a şi b

sunt două polinoame, b este nenul, r restul returnat de rem şi q este câtul returnat de

quo, atunci este satisfăcută relaţia:

a = b*q + r, grad(r) < grad(n)

Exemple:

> rem(x^5+2*x+1, x^2+x+1, x, 'q');

x

> q;

− + x3 x2 1

> quo(x^5+2*x+1, x^2+x+1, x);

− + x3 x2 1

> quo(x^5+2*y+z, x^2+x+1, x,'r');

− + x3 x2 1

> r;

+ − − 2 y z 1 x

Funcţia factorial(k) calculează k! (k factorial, 12…k). Acelaşi efect în are şi k!,

după cum rezultă din exemplele de mai jos:

> factorial(4);

24

> 4!;

24

> 6!;

720

> factorial(factorial(3))=3!!;

= 720 720

Tabelul de mai jos conţine câteva constante MAPLE:

Constantă Notaţia matematică

Page 242: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

242

Pi π

infinity ∞

gamma constanta lui Euler

true adevăr, în cazul evaluării booleene

false fals, în cazul evaluării booleene

Numărul complex i (i2 = -1) este desemnat în MAPLE prin I.

De reţinut că pi (scris cu literă mică) se referă la litera grecească π.

Tipul booleean în MAPLE are două valori: true şi false. Expresiile booleene

(logice) pot fi formate cu ajutorul operatorilor de comparaţie şi operatorilor logici.

Următoarele două tabele conţin aceşti 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

Negaţie (non) – unar not not x

Conjuncţie (şi) and x and y

disjuncţie (sau) or x or y

Ordinea de efectuare a operaţiilor este: not, and, or.

În MAPLE există expresii similare cu expresiile din C formate cu operatorul

virgulă. Astfel o secvenţă de expresii în MAPLE este un şir de expresii separate

între ele prin virgulă. Cele mai multe funcţii din MAPLE cer la intrare o secvenţă de

expresii, şi întorc un rezultat ce conţine o secvenţă de instrucţiuni. Cel mai simplu

mod de a crea o secvenţă de instrucţiuni este:

> 1,2,3,4,5;

Page 243: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

243

, , , ,1 2 3 4 5

> a=1,b=a+2,c+2;

, , = a 1 = b + a 2 + c 2

Alternativ, există alte două moduri de a crea secvenţe de instrucţiuni în

MAPLE: cu ajutorul operatorului $ sau cu ajutorul comenzii seq. Următoarele

exemple sunt edificatoare:

> a$5;

, , , ,a a a a a

> $2..7;

, , , , ,2 3 4 5 6 7

> i^2$i=1..4;

, , ,1 4 9 16

> seq(i!,i=1..4);

, , ,1 2 6 24

> seq(i!!,i=1..4);

, , ,1 2 720 620448401733239439360000

Secvenţă vidă este desemnată prin NULL.

A.3. Numere, şiruri şi identificatori.

Constantele numerice din MAPLE sunt de trei tipuri:

• întregi

• raţionale

• în virgulă mobilă

Constantele întregi sunt şiruri de cifre zecimale (0..9) eventual

precedate de un semn (+,-) reprezentând un număr întreg. Numărul 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;

0

Page 244: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

244

> 123;

123

> -6789;

-6789

> 123456789123456789012;

123456789123456789012

Constantele raţionale utilizează operatorul de împărţire / pentru a separa

numărătorul de numitor. Astfel m/n cu m şi n constante întregi reprezintă numărul

raţional n

m .

Exemple de constante raţionale:

> 2/3;

23

> 6/7;

67

> 4/6;

23

> 4/2;

2

> -39/13;

-3

Se observă că MAPLE face automat simplificarea fracţiilor.

Reprezentarea unei constante în virgulă mobilă conţine în general

câmpurile următoare:

• partea întreagă

• punctul zecimal

• partea fracţionară

e sau E şi un exponent cu semn (opţional);

Page 245: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

245

Se poate omite partea întreagă sau partea fracţionară, dar nu amândouă. De

asemenea, se poate omite punctul zecimal sau litera e(E) şi exponentul, dar nu

amândouă.

Exemple de constante în virgulă mobilă:

> 2.3;

2.3

> 678.96e-9;

0.67896 10-6

> .1234;

0.1234

> 123E56;

0.123 1059

> 1.;

1.

Constante în virgulă mobilă pot fi obţinute şi cu comanda Float. Această

comandă are forma

Float(mantisa,exponent);

şi întoarce mantisa*10 ^exponent.

> Float(123,56);

0.123 1059

Expresiile aritmetice cu operanzi constante întregi sau raţionale sunt evaluate exact

în MAPLE (rezultatul este o constantă raţională sau o constantă întreagă).

Exemple:

> 1/3+4/5;

1715

> 1/3+8;

253

> 1/3+2/3;

1

Page 246: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

246

În cazul în care expresia conţine constante în virgulă mobilă, atunci

constantele întregi şi cele raţionale (care apar eventual în expresie) sunt convertite

în virgulă mobilă (sunt aproximate cu constante în virgulă mobilă). Rezultatul

expresiei este în acest caz o constantă în virgulă mobilă.

Exemple:

> 1/3.+4/5;

1.133333333

> 1./3+8;

8.333333333

> 1/3+2/3.;

1.000000000

> 20+45.75e-2;

20.4575

Orice număr real nenul x poate fi scris sub formă normalizată, în baza 10:

x = ±m 10p

cu 0,1≤m<1, (m = mantisa). În calcule se reţin de obicei un număr finit de cifre

zecimale ale mantisei. Numărul de cifre care se reţin se numeşte număr de cifre

semnificative. Numărul de cifre semnificative poate fi controlat în MAPLE cu

ajutorul variabilei globale Digits. Valoarea implicită pentru pentru digits este 10.

Exemple:

> 1./7;

0.1428571429

> Digits:=20;

:= Digits 20

> 1./7;

0.14285714285714285714

Deci MAPLE poate lucra în virgulă mobilă cu o precizie teoretic “infinită”.

Pentru a determina evaluarea unei expresii în virgulă mobilă (chiar dacă toţi

operanzii din expresie sunt întregi sau raţionali) se poate folosi comanda evalf.

evalf(expresie)

determină evaluarea expresiei la o valoare în virgulă mobilă, cu numărul de cifre

semnificative stabilit de variabila Digits.

Page 247: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

247

evalf(expresie,n)

determină evaluarea expresiei la o valoare în virgulă mobilă, utilizând n de cifre

semnificative (valoarea variabilei Digits nu este afectată).

Exemple:

> evalf(1/7);

0.1428571429

> evalf(1/7,20);

0.14285714285714285714

> evalf(Pi);

3.141592654

> evalf(Pi,30);

3.14159265358979323846264338328

Există o întreagă familie de funcţii de evaluare numerică şi algebrică a expresiilor:

• eval – evaluează în întregime o expresie

• evala– evaluează algebric o expresie

• evalf– evaluează numeric o expresie

• evalb– evaluează boolean o expresie

• evalm– evaluează matriceal o expresie

• evalc– evaluează în mulţimea numerelor complexe o expresie

În MAPLE un şir de caractere (string) constă dintr-o succesiune de

caractere cuprinse între apostrofuri întoarse (backquote) (`) sau între ghilimele (“).

Operatorul de concatenare pentru şirurile de caractere în MAPLE este || (de

asemenea se poate utiliza comanda cat).

Exemple:

> `Acesta este un string in MAPLE`;

Acesta este un string in MAPLE

> `1+2=?`;

1+2=?

> `acesta este`||` un string`;

acesta este un string

Un identificator în MAPLE este un şir de caractere alfabetice (A-Z, a-z),

cifre (0-9) şi caracterul _ (liniuţa de subliniere, underline), şir în care primul

Page 248: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

248

caracter este un caracter alfabetic (A-Z, a-z). Lungimea maximă a unui identificator

este dependentă de sistem . MAPLE este case-sensitive, ceea ce însemnă că

identificatorul nume este diferit de identificatorul Nume. MAPLE conţine un număr

de identificatori predefiniţi (identificatori rezervaţi). O listă a acestora poate fi

obţinută cu comanda

> ?ininame

sau

> help(`ininame`);

A.4. Comenzi de calcul în MAPLE

Tabelul de mai jos conţine comenzile din MAPLE pentru diferenţiere,

integrare şi însumare.

Notaţie MAPLE Semnificaţie Notaţie

matematică

diff(f(x),x) derivată parţială

x

f

int(f(x),x) integrală indefinită ( )∫ dxxf

sum(f(n),n) suma seriei ( )∑

=1n

nf

int(f(x),x=a..b) integrală definită ( )b

af x dx∫

sum(f(k),k=a..b) sumă de la a la b ( )∑

=

b

ak

kf

limit(f(x), x=a) limita funcţiei f în a; ( )x alim f x→

Diff, Int, Sum, Limit reprezintă comenzile inerte corespunzătoare. Comanda

limit admite un al treilea parametru opţional (dacă acesta este left se calculează

limita la stânga, dacă este right se calculează limita la dreapta

Page 249: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

249

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

1x

> Diff(ln(x),x);

ddx

( )ln x

> Diff(ln(x),x) = diff(ln(x),x);

= ddx

( )ln x1x

> Diff(sin(x)*tan(y),x,y)= diff(sin(x)*tan(y),x,y);

= ∂ ∂

∂2

y x( )( )sin x ( )tan y ( )cos x ( ) + 1 ( )tan y 2

> int( sin(x), x );

− ( )cos x

> Int( sin(x), x );

d⌠⌡

( )sin x x

> int( sin(x), x=0..Pi );

2

> Int( x^2*ln(x), x=1..3 )=int( x^2*ln(x), x=1..3 );

= d⌠⌡

1

3

x2 ( )ln x x − 9 ( )ln 3269

> Int( Int(exp(-x^2-y^2), x=0..infinity ), y=0..infinity) =int(int(

exp(-x^2-y^2), x=0..infinity ), y=0..infinity);

Page 250: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

250

= d⌠

0

d⌠

0

eeee( )− − x2 y2

x yπ4

> sum(k^2,k=1..4);

30

> Sum(k^2,k=1..4);

∑ = k 1

4

k2

> Sum(k^2,k=1..n)=sum(k^2,k=1..n);

= ∑ = k 1

n

k2 − + + ( ) + n 1 3

3( ) + n 1 2

2n6

16

> sum(1/k^2,k=1..infinity);

π2

6

> Sum(1/k!,k=0..infinity)=sum(1/k!,k=0..infinity);

= ∑ = k 0

∞ 1!k

eeee

> limit(sin(x)/x, x=0);

1

> Limit(sin(x)/x, x=0);

lim → x 0

( )sin xx

> Limit(sin(x)/x, x=0)=limit(sin(x)/x, x=0);

= lim → x 0

( )sin xx

1

> Limit((cos(2*x)-1)/x^2, x=0)=limit((cos(2*x)-1)/x^2, x=0);

= lim → x 0

− ( )cos 2 x 1

x2-2

> Limit(exp(x), x=infinity)=limit(exp(x), x=infinity);

= lim → x ∞

eeeex ∞

> Limit(exp(x), x=-infinity)=limit(exp(x), x=-infinity);

= lim → x ( )−∞

eeeex 0

Page 251: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

251

> Limit(1/x, x=0)=limit(1/x, x=0);

= lim → x 0

1x

undefined

> Limit(1/x, x=0, left)=limit(1/x, x=0, left);

= lim → -x 0

1x

−∞

> Limit(1/x, x=0, right)=limit(1/x, x=0, right);

= lim → +x 0

1x

Prezentăm în continuare câteva exemple cu comenzile expand, factor şi

simplify. Principalul rol al comenzii expand este aplicarea distributivităţii

produsului faţă de adunare. Comanda factor se aplică pentru descompunerea în

factori ireductibili a polinoamelor de mai multe variabile. Iar comanda simplify

aplică regulile de simplificare într-o expresie.

> expand((X^2-Y^2)^2*(X^2+Y^2)^2);

− + X8 2 X4 Y4 Y8

> factor(X^6-Y^6);

( ) − X Y ( ) + X Y ( ) + + X2 X Y Y2 ( ) − + X2 X Y Y2

> simplify((X^6-Y^6)/(X^2+X*Y+Y^2));

− + − X4 Y X3 Y3 X Y4

A.5. Reprezentări grafice în MAPLE

Comenzile destinate reprezentărilor grafice sunt incluse în pachetul plots.

Numele pachetului trebuie să preceadă fiecare comandă. Altă variantă presupune

încărcarea întregului pachet în memorie cu ajutorul comenzii with:

> with(plots);

Page 252: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

252

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

Prezentăm câteva exemple cu comenzile plot, plot3d şi animate3d.

Plot este destinată reprezentărilor grafice în plan şi poate fi folosită sub mai

multe forme. Prezentăm de fiecare dată numărul minim de parametri ceruţi.

Notaţie 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]) ( )( )

[ ]b,attgy

tfx∈

=

=

Reprezentarea grafică se face conform cu opţiunile (de stil, culoare, axe,

coordonate, rezoluţie …) indicate în comandă sau în raport cu cele implicite. Unele

din aceste opţiuni se pot stabili şi din meniul contextual: se introduce comanda de

reprezentare grafică a curbei, iar apoi se selectează din bara de context, sau prin

clic cu butonul drept al mouse-ului pe grafic, opţiunile dorite.

Implicit se folosesc coordonatele carteziene. Dacă se doreşte utilizarea altor

coordonate, acestea trebuie specificate, prin introducerea în lista de opţiuni sub

forma coords = nume_coordonate. O opţiune de forma discont=true, determină

apelul comenzii Discont pentru determinarea punctelor de discontinuitate a funcţiei

ce se reprezintă grafic.

Exemple:

> plot(sin(x)*ln(x), x=Pi..8*Pi, color=black);

Page 253: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

253

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

Page 254: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

254

>plot(sin(x)/x, x=-3*Pi..3*Pi,discont=true,color=black);

Comanda plot3d este destinată reprezentării grafice a suprafeţelor în spaţiu

tridimensional. Ca şi în cazul comenzii plot reprezentarea grafică se face conform

cu opţiunile indicate în comandă sau în raport cu cele implicite. Unele din aceste

opţiuni se pot stabili şi din meniul contextual. Comanda plot3d poate fi folosită sub

mai multe forme. Prezentăm de fiecare dată numărul minim de parametri ceruţi.

Notaţie MAPLE Suprafaţa/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)

( )( )( )

=

=

=

v,uhz

v,ugy

v,ufx

Page 255: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

255

Exemple

>plot3d(cos(x)*sin(y),x=-2*Pi..2*Pi,y=-2*Pi..2*Pi);

>plot3d([v*cos(u),v*sin(u),v*ln(u)],u=Pi..4*Pi,v=0..1);

Comenzile animate şi animate3d sunt destinate animaţiei în plan şi spaţiu.

Comanda

animate3d(f(x,y,t),x=a..b,y=b..c,t=t1..t2)

creează animaţie cu ajutorul cadrelor obţinute prin reprezentarea grafică a

suprafeţelor

zt = f(x,y,t), (x,y)∈[a,b]×[c,d]

pentru valori ale lui t în intervalul [t1,t2]. Numărul de cadre poate fi stabilit cu

ajutorul opţiunii frames (implicit sunt 8).

Exemplu:

>animate3d(cos(x)*sin(t*y),x=-Pi..Pi,y=-Pi..Pi,t=1..2);

Page 256: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

256

A.6. Structuri de date în MAPLE

A.6.1 Expresii şi funcţii

Comanda

>subs(x=a, expr);

întoarce expresia obţinută prin înlocuirea lui x cu a în expresia expr

Comanda

>subs(s1,s2,..., sn, expr);

(unde s1,s2,..., sn sunt ecuaţii sau mulţimi de ecuaţii sau liste de ecuaţii)

întoarce expresia obţinută în urma substituţiilor indicate de s1, s2, ..., sn în expresia

expr. Substituţiile se execută secvenţial începând cu s1. Substituţiile dintr-o

mulţime sau dintr-o listă se execută simultan.

Acţiunea comenzii subs nu este urmată de o evaluare completă. Dacă se

doreşte evaluarea completă se foloseşte comanda

>eval(expr, x=a);

care întoarce expresia obţinută prin înlocuirea lui x cu a în expresia expr sau

comanda

>eval(expr, s1,s2,..., sn);

(unde s1,s2,..., sn sunt ecuaţii sau mulţimi de ecuaţii sau liste de ecuaţii)

care întoarce expresia obţinută în urma substituţiilor simultane indicate de s1, s2, ...,

sn în expresia expr.

Exemple:

> subs(x=Pi, sin(x));

( )sin π

> eval(sin(x), x=Pi);

0

Comanda

>nops(expr);

întoarce numărul de operanzi ai expresiei expr

Comanda

>op(i, expr);

Page 257: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

257

extrage un operand din expresia expr:

• dacă i > 0, comanda extrage cel de al i-lea operand

• dacă i < 0, comanda extrage cel de al nops(expr) +i +1 operand

• în cazul funcţiilor, dacă i = 0, comanda returnează numele funcţiei

• dacă i > nops(expr) sau i < -nops(expr) se generează mesaj de eroare

Comanda

>op(i..j, expr);

întoarce şirul operanzilor de la operandul i la operandul j.

Comanda

>subsop(i=expr1, expr);

întoarce expresia obţinută prin înlocuirea unui operand al expresiei expr cu expresia

expr1

• dacă i > 0, se înlocuieşte cel de al i-lea operand

• dacă i < 0, se înlocuieşte cel de al nops(expr) +i +1 operand

Comanda

>subsop(i1=expr1, i2=expr2,..., ik=exprk, expr);

întoarce expresia obţinută prin înlocuirea simultană a operanzilor expresiei expr

desemnaţi de i1, i2, ... ik (în acelaşi 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

eeee( )−u2

> nops(expr);

2

> op(1,expr);

u v

> op(2,expr);

( )cos u v

eeee( )−u2

> subsop(2=u+v,expr);

Page 258: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

258

+ + u v u v

> expr;

+ u v( )cos u v

eeee( )−u2

Definirea unei legături fucţionale în MAPLE se face sub forma

>nume_functie: (lista variabile) -> expresie;

Comanda

>nume_functie(lista argumente curente);

întoarce valoarea funcţiei nume_funcţie pentru argumentele precizate.

Operatorii pentru adunarea, înmulţirea, compunerea funcţiilor sunt +, *, respectiv,

@.

Operatorul pentru compunere repetată este @@. Astfel dacă f este o funcţie şi n un

număr natural, atunci

• dacă n > 0, f @@ n reprezintă compunerea de n ori a funcţiei f cu ea

însăşi.

• dacă n = 0, f @@ 0 reprezintă funcţia identică

• dacă n < 0 şi f este inversabilă, atunci f @@ n reprezintă

compunerea de -n ori a inversei funcţiei f cu ea însăşi (inversa

funcţie este dată de invfunc[f]).

Comanda

>unapply(expr, x);

întoarce funcţia x -> expr, iar comanda

>unapply(expr, x, y, ...);

întoarce funcţia (x,y, ...) -> expr

Exemple:

> f:=x->x^3+cos(x)*x^(1/3)+exp(-x^2);

:= f → x + + x3 ( )cos x x( )/1 3

eeee( )−x2

> nops(f);

1

> g:=(x,y)->x^2*exp(-x^2-y^2)+cos(x)*sin(y);

Page 259: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

259

:= g → ( ),x y + x2 eeee( )− − x2 y2

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

> f(1.);

1.908181747

> evalf(f(1));

1.908181747

> evalf(f(1),50);

1.9081817470395820389964603776044374711781215516497

> f(alpha);

+ + α3 ( )cos α α( )/1 3

eeee( )−α2

> g(Pi/2,3);

14

π2 eeee

− −

π2

49

> evalf(g(Pi/2,3));

0.00002582324018

> g(2,3);

+ 4 eeee( )-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);

Page 260: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

260

+ 3 2

2π3

> evalf(h(Pi/3,2,Pi/4));

2.271942423

> h(alpha,beta,gamma);

+ ( )sin α ( )cos γ β α

> h(alpha,3,Pi/4);

+ 32

( )sin α 2 α

> expresie:=u*v^2+cos(Pi/u*v)/u^(1/2);

:= expresie + u v2

cos

π vu

u

> f1:=unapply(expresie,u);

:= f1 → u + u v2

cos

π vu

u

> f1(1);

+ v2 ( )cos π v

> f2:=unapply(expresie,u,v);

:= f2 → ( ),u v + u v2

cos

π vu

u

> f2(1,2/3);

-118

> f2(alpha, 2);

+ 4 α

cos

2 πα

α

> f3:=unapply(expresie,v);

:= f3 → v + u v2

cos

π vu

u

> f3(1);

Page 261: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

261

+ u

cos

πu

u

A.6.2. Liste

Listele (lists) în MAPLE sunt şiruri ordonate de expresii, separate între ele

prin virgulă şi incluse între paranteze drepte []. Ordinea expresiilor este dată de

poziţia în care apar în listă. Dacă L este o listă L[i] desemnează elementul de pe

poziţia i. Lista vidă este desemnată prin []. Se pot efectua următoarele operaţii cu

liste:

• extragerea din lista L a elementelor de poziţia i până la poziţia j: L(i..j)

sau op(i..j,L).;

• adăugarea unui element x la lista L: [x,op(L)] (adaugă elementul pe

prima poziţie), [op(L),x] (adaugă elementul pe ultima poziţie);

• modificarea elementului de pe poziţia i: subsop(i=x,L) sau L[i]:=x;

• eliminarea elementului de pe poziţia i: subsop(i=NULL,L);

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

Page 262: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

262

> L1:=[5,op(L)];

:= L1 [ ], , , , , , , ,5 1 -1 1 2 3 -1 1 1

> L;

[ ], , , , , , ,1 -1 1 2 3 -1 1 1

> L2:=[op(L),5];

:= L2 [ ], , , , , , , ,1 -1 1 2 3 -1 1 1 5

> L;

[ ], , , , , , ,1 -1 1 2 3 -1 1 1

> L[3]:=8;

:= L3

8

> L;

[ ], , , , , , ,1 -1 8 2 3 -1 1 1

> subsop(4=10,L);

[ ], , , , , , ,1 -1 8 10 3 -1 1 1

> L;

[ ], , , , , , ,1 -1 8 2 3 -1 1 1

> L3:=subsop(6=NULL,L);

:= L3 [ ], , , , , ,1 -1 8 2 3 1 1

> L3;

[ ], , , , , ,1 -1 8 2 3 1 1

> L;

[ ], , , , , , ,1 -1 8 2 3 -1 1 1

> op(-3,L);

-1

A.6.3. Mulţimi

Mulţimile (sets) în MAPLE sunt şiruri neordonate de expresii, separate

între ele prin virgulă şi incluse între acolade . Duplicatele sunt eliminate.

Mulţimea vidă este desemnată prin . Se pot efectua următoarele operaţii cu

mulţimi:

• reuniune: operatorul union

Page 263: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

263

• intersecţie: 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;

Page 264: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

264

A.6.4. Tablouri

Tablourile (tables) în MAPLE sunt structuri de date ai căror membri sunt

indexaţi.

Exemple:

> t:=table([(culoare1)=red,(culoare2)=green, (culoare3)=blue]);

:= t table([ , , ]) = culoare1 red = culoare2 green = culoare3 blue

> t[culoare2];

green

Un tablou cu zero sau mai multe dimensiuni, pentru care fiecare dimensiune

are domeniu întreg se numeşte în MAPLE array. Pentru a crea un array se poate

apela funcţia array sub forma:

>array( domeniile de indexare, listă de iniţializare);

Parametrii sunt opţionali şi pot apărea î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;

:= A,1 2

x

> A[1,1];

A,1 1

> A[1,2];

x

Page 265: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

265

> evalm(A);

A,1 1

x

A,2 1

A,2 2

> A := array(1..2,1..2, [ [1,x], [x,x^2] ] );

:= A

1 x

x x2

Vectorii şi matricele pot fi creaţi şi cu comenzile vector şi matrix din

pachetul linalg. Vectorii în MAPLE sunt tablouri unidimensionale cu indexate de la

1. Comanda

>vector(n, listă de iniţializare);

este echivalentă cu array(1..n, listă de iniţializare). Matricele (matrix) în MAPLE

sunt tablouri bidimensionale indexate de la 1. Cu alte cuvinte un apel

>matrix(m,n, listă de iniţializare);

este echivalent cu array(1..m,1..n, listă de iniţializare).

Exemple:

> with(linalg):

> x:=vector(3,[1,-1,0]);

:= x [ ], ,1 -1 0

> x[1];

1

> y:=vector(3);

:= y ( )array , .. 1 3 [ ]

> y[1];

y1

> M:=matrix(3,2,[[1,2],[3,4],[5,6]]);

:= M

1 2

3 4

5 6

> M[1,2];

2

Pachetul linalg conţine comenzi pentru operaţii cu vectori şi matrice.

Page 266: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

266

Comanda

> map(fcn, expr, arg2, arg3, ..., argn);

aplică o funcţie sau o procedură fiecărui operand al unei expresii. Se înlocuieşte

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 înlocuieşte operandul i al expresiei

expr cu fcn(arg1, operand_i, arg3, ..., argn).

Comanda

> applyop(f, i, expr, arg2, arg3, ..., argn);

înlocuieşte operandul desemnat de i (dacă i > 0, se înlocuieşte cel de al i-lea

operand iar dacă i < 0, se înlocuieşte cel de al nops(expr) +i +1 operand) al

expresiei expr cu f(operand_i, arg2, ..., argn) (f este o funcţie).

Exemple:

> f:=x->x^3+cos(x)*x^(1/3)+exp(-x^2);

:= f → x + + x3 ( )cos x x( )/1 3

eeee( )−x2

> g:=(x,y)->x^2*exp(-x^2-y^2)+cos(x)*sin(y);

:= g → ( ),x y + x2 eeee( )− − x2 y2

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

− + + 1 ( )cos 1 ( )-1( )/1 3

eeee( )-1

1

> map(g,x,Pi/3);

, , + eeee

− − 1

π2

9 12

( )cos 1 3 + eeee

− − 1

π2

9 12

( )cos 1 332

> map(h,x,2,Pi/2);

[ ], ,1 -1 0

> map(h,x,2,Pi/4);

Page 267: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

267

[ ], , + ( )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);

, , ,π − − 32

π2

+ 32

π2

−π

> map2(g,Pi/3, x);

, , + 19

π2 eeee

− − 1

π2

9 12

( )sin 1 − 19

π2 eeee

− − 1

π2

9 12

( )sin 119

π2 eeee

π2

9

> map2(h,2, x,Pi/2);

[ ], ,2 2 2

> map(h,2, x,Pi/4);

+ 12

( )sin 2 2 x 2

> M:=Pi,-Pi,Pi/2,-Pi/2;

:= M , , ,ππ2

−π −π2

> map(h,3,M,Pi/3);

+ 12

( )sin 3 , , ,ππ2

−π −π2

3

> expr:=u*v+cos(u*v)/exp(-u^2);

:= expr + u v( )cos u v

eeee( )−u2

> applyop(f,1,expr);

+ + + u3 v3 ( )cos u v ( )u v( )/1 3

eeee( )−u2 v2 ( )cos u v

eeee( )−u2

> applyop(g,1,expr,Pi/3);

+ + u2 v2 eeee

− − u2 v2 π2

9 12

( )cos u v 3( )cos u v

eeee( )−u2

> applyop(g,2,expr,0);

Page 268: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

268

+ u v( )cos u v 2 eeee

−( )cos u v 2

eeee

( )−u22

( )eeee( )−u2

2

> applyop(h,1,expr,0, Pi/2);

+ u v( )cos u v

eeee( )−u2

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

-1 1 2 3 -1 1 1

> op(3,L);

1

> applyop(f,3,L);

[ ], , , , , , ,1 -1 + + 1 ( )cos 1 eeee( )-1

2 3 -1 1 1

> applyop(g,3,L, Pi/2);

, , , , , , ,1 -1 + eeee

− − 1

π2

4( )cos 1 2 3 -1 1 1

> applyop(g,3,L, Pi);

[ ], , , , , , ,1 -1 eeee( )− − 1 π2

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

Page 269: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

269

A.7. Elemente de programare în MAPLE

Vom prezenta câte două variante pentru fiecare instrucţiune. Prima variantă

este valabilă în MAPLE V iar cea de a doua în versiuni mai noi de MAPLE.

Anumite versiuni (cum ar fi MAPLE 8) admit ambele forme. Vom folosi ulterior

prima variantă.

A.7.1 Atribuirea. Decizia. Structuri repetitive

Atribuirea are forma

x:=v;

Efectul acestei instrucţiuni constă în evaluarea expresiei v pentru valorile curente

ale variabilelor pe care le conţine şi înscrierea rezultatului în locaţia de memorie

rezervată variabilei x

Decizia are forma:

if condiţie then instrucţiuni1 else instrucţiuni2 fi;

if condiţie then instrucţiuni1 else instrucţiuni2 end if;

Da Nu

Condiţia este o expresie logică (formată cu operatori logici sau relaţionali). Modul

de execuţie al deciziei (precum rezultă din subschema logică de mai sus) este

următorul:

1. se evaluează condiţia

2. dacă rezultatul este adevărat se execută instrucţiuni1, în caz contrar se

execută instrucţiuni2.

3. se trece la comanda care urmează după decizie

În cazul în care else lipseşte se foloseşte forma simplificată:

condiţie

Instrucţiuni2 Instrucţiuni1

Page 270: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

270

if condiţie then instrucţiuni fi;

Da

Nu

1. se evaluează condiţia

2. dacă rezultatul este adevărat se execută instrucţiuni

3. se trece la comanda care urmează după decizie

Un extra element elif (ţinând loc de else+if) poate fi adăugat în decizie, obţinând:

if/then/elif/then…/else/fi

Exemple:

> a := 3; b := 7;

:= a 3

:= b 7

> if (a > b) then a else b fi;

7

> if (a > b) then c:=7 fi;

> c;

c

> if (a > b) then c:=7 elif (a<b) then c:=9 fi;

:= c 9

Există două instrucţiuni repetitive în MAPLE: for şi while. For are mai

multe forme:

(1) for i from ei by p to ef do instrucţiuni od;

for i from ei by p to ef do instrucţiuni end do;

unde i este variabila de contorizare, p este pasul cu care se face incrementarea

(decrementarea), iar ei (respectiv ef ) este o expresie care determină valoarea

condiţie

instrucţiuni

Page 271: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

271

iniţială (respectiv finală) a contorului. Modul de execuţie al acestei instrucţiuni este

următorul:

1. se execută atribuirea i : = ei

2. se evaluează condiţia i ≤ ef dacă p > 0 (sau i ≥ ef dacă p < 0), şi dacă

este îndeplinită această condiţie se trece la pasul 3, altfel se trece la

pasul 5

3. se execută instrucţiuni

4. se execută atribuirea i := i + p

5. se execută comanda care urmează după for

Pentru p >0 comanda este echivalentă cu următoarea subschemă logică:

Pentru p < 0 comanda este echivalentă cu următoarea subschemă logică:

Construcţiile from ei şi by p pot lipsi, caz în care ei se ia 1 şi pasul se consideră egal

cu 1.

Nu

i ≤ ef instrucţiuni i: = i + p

i := ei

Da

Nu

i ≥ ef instrucţiuni i: = i + p

i := ei

Da

Page 272: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

272

(2) for i from ei by p while condiţie do instrucţiuni od;

for i from ei by p while condiţie do instrucţiuni end do;

Modul de execuţie al acestei instrucţiuni este următorul:

1. se execută atribuirea i : = ei

2. se evaluează condiţia trecută după while, şi dacă este îndeplinită, se

trece la pasul 3, altfel se trece la pasul 5

3. se execută instrucţiuni

4. se execută atribuirea i := i + p

5. se execută comanda care urmează după for

Comanda este echivalentă cu următoarea subschemă logică:

Ca şi înainte construcţiile from ei şi by p poate lipsi, caz în care ei se ia 1, iar pasul

se consideră egal cu 1. Condiţia este dată printr-o expresie booleană.

Ambele clauze to şi while pot fi prezente în instrucţiunea for:

(3) for i from ei by p to ef while condiţie do instrucţiuni od;

for i from ei by p to ef while condiţie do instrucţiuni end do;

În acest caz

1. se execută atribuirea i : = ei

2. se evaluează condiţia i ≤ ef dacă p > 0 (sau i ≥ ef dacă p < 0), şi condiţia

trecută după while; dacă amândouă sunt îndeplinite se trece la pasul 3,

altfel se trece la pasul 5

3. se execută instrucţiuni

4. se execută atribuirea i := i + p

5. se execută comanda care urmează după for

Nu

condiţie instrucţiuni i: = i + p

i := ei

Da

Page 273: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

273

În cazul următoarei instrucţiuni for contorul i parcurge toate elementele unei liste

sau unei mulţimi (expr):

(4) for i in expr while condiţie do instrucţiuni od;

for i in expr while condiţie do instrucţiuni end do;

Exemple:

> for i from 6 by 2 to 10 do print(i) od;

6

8

10

> suma := 0;

:= suma 0

> for i from 11 by 2 while i < 15 do suma := suma + i od;

:= suma 11

:= suma 24

> L:=[1,5,3];

:= L [ ], ,1 5 3

> suma:=0;

:= suma 0

> for z in L do suma:=suma+z od;

:= suma 1

:= suma 6

:= suma 9

Ciclu cu test iniţial are forma:

while condiţie do instrucţiuni od;

while condiţie do instrucţiuni end do;

Testul pentru repetarea calculelor se face înaintea execuţiei grupului de comenzi

care trebuie repetate. Dacă este îndeplinită condiţia, se execută instrucţiunile după

care se reevaluează condiţia. În caz contrar, se trece la comanda care urmează după

ciclul cu test iniţial. Subschema logică echivalentă este următoarea:

Page 274: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

274

Condiţie reprezintă o expresie booleană.

Exemple:

> x:=234;

:= x 234

> while x>0 do x:=iquo(x,10,'r');print(r) od;

:= x 23

4

:= x 2

3

:= x 0

2

A.7. 2. Proceduri în MAPLE

În principal, necesitatea subprogramelor se datorează faptului că de multe

ori algoritmul prevede executarea aceloraşi instrucţiuni pentru date diferite. Grupul

de instrucţiuni care se repetă poate constitui o unitate distinctă căreia i se dă un

nume şi un set de parametri. Ori de câte ori va fi necesară execuţia acestui grup de

instrucţiuni se specifică numele şi parametrii care actualizează grupul de

instrucţiuni (astfel se scurtează dimensiunea şi creşte claritate programului). Grupul

de instrucţiuni se numeşte procedură (procedure) în MAPLE.

Forma unei proceduri este:

nume:=proc (param1, param2,…)

local lista declaraţii locale;

global lista declaraţii globale;

Nu

Da instrucţiuni condiţie

Page 275: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

275

options listă opţiuni;

description descriere;

instrucţiuni

end;

În variantele mai noi de Maple end de la sfârşit se va înlocui cu end proc.

Nu toate elementele de mai sus sunt obligatorii. Dacă este necesar ca

procedura să întoarcă o valoare, se poate folosi apelul

RETURN(v)

în şirul de instrucţiuni din corpul procedurii.

Parametrii care apar în scrierea unei proceduri se numesc parametrii

formali, ei având un rol descriptiv (un parametru formal este o variabilă al cărei

nume este cunoscut, dar al cărei conţinut nu este precizat decât în momentul

execuţiei). În cadrul listei, parametrii formali sunt separaţi prin virgulă. Numele

procedurii (nume) este un identificator MAPLE. Apelul unei proceduri se face cu

comanda:

nume (listă parametrii actuali)

parametrii actuali fiind expresii despărţite între ele prin virgulă în cadrul listei. În

momentul execuţiei parametrii actuali substituie parametrii formali. Un apel de

procedură determină următoarele acţiuni:

♦ se stabileşte corespondenţa între argumente şi parametrii

♦ se execută instrucţiunile subprogramului, până când se ajunge la end sau la

o instrucţiune RETURN. Efectul acestor instrucţiuni (end şi RETURN)

este întoarcerea în unitatea de program în care a avut loc apelul, şi anume la

instrucţiunea ce urmează imediat acestui apel (precizăm că o procedură

poate apela la rândul său o altă procedură). Un apel de procedură este corect

dacă între parametrii actuali şi cei formali există o corespondenţă atât ca

număr, cât şi ca tip şi organizare.

Page 276: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

276

Exemplu:

Să presupunem că se dă un număr întreg pozitiv x, şi se cere lista cifrelor

corespunzând reprezentării binare a lui x. Procedura următoare 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 reprezentării

binare a unui număr x, cu proprietatea 0≤x<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 corespunzătoare unui număr real

x. Pentru partea fracţionară a numărului se reţin n cifre. Procedura lbin apelează

procedurile precedente.

> lbin:=proc(x,n)

local y,L1,L2,L;

y:=abs(x);

Page 277: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

277

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

Page 278: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

278

Page 279: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

279

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 3–34. 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 - Lucrări de laborator, Editura Academica

Brâncusi, 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, Bucureşti, 2001.

10. B. Dumitrescu, C. Popeea, B. Jora, Metode de calcul numeric matricial.

Algoritmi fundamentali, Editura ALL Educational, Bucureşti, 1998.

11. Gh. Dodescu, M.Toma, Metode de calcul numeric, Editura Didactică şi

Pedagogică, Bucureşti, 1976.

12. Gh. Grigore, Lecţii de analiză numerică, Tipografia Univ. Bucuresti, 1990.

Page 280: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

280

13. J. Hoffman, Numerical Methods for Engineers and Scientist, McGraw-Hill,

New York, 1992.

14. V. Iorga, Metode numerice. Îndrumar de laborator, Institutul Politehnic

Bucureşti, 1992.

15. G. Marinescu, Analiză numerică, Editura Academiei R.S. România, 1974.

16. M.B. Monagan, K.O. Geddes, K.M. Heal, G. Labahn, S.M. Vorkoetter, J.

McCarron and P. DeMarco, Maple 8 Advanced Programming Guide.

Waterloo Maple Inc., Waterloo, Ontario, Canada, 2002.

17. S. Pav, Numerical Methods Course Notes, 2004 (UCSD),

http://scicomp.ucsd.edu/~spav/pub/numas.pdf.

18. M. Popa ş.a., Noţiuni de analiză numerică, Sitech Craiova, 2001.

19. M. Postolache, Metode numerice în algebră, Universitatea Politehnică

Bucureşti, 1993.

20. A. Rusu Casandra ş.a., Metode numerice pentru calculul structurilor,

Editura Universităţii Politehnica Bucureşti, 1998.

21. M. Stan ş.a., Metode numerice, Editura Matrix Rom Bucureşti, 2001.

22. J. Stoer şi R. Bulirsch, Introduction to Numerical Analysis (3rd ed.),

Springer, 2002.

Page 281: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

281

INDEX

A

adjunctul unui operator liniar şi

mărginit, 56

algebră Banach, 54

algoritm polinomial, 16

algoritm stabil, 14

algoritmul Romberg, 224

aplicaţie liniară, 54

aproximare a derivatei prin diferenţe

finite progresive, 192

aproximare a derivatei prin diferenţe

finite regresive, 194

aproximare a derivatelor prin

diferenţe finite centrale, 190

aritmetica în virgulă mobilă, 45

B

bază ortonormală, 55

bază, 17

bit ascuns, 39

bit de semn, 34

bitul cel mai puţin semnificativ, 30

bitul cel mai semnificativ, 30

C

calculul determinantului unei matrice

prin metoda de eliminare Gauss, 70

calculul inversei unei matrice prin

metoda de eliminare Gauss, 71

catastrophic cancellation, 47

cifră în baza b, 17

cifre semnificative, 36

cod complementar, 32

cod direct, 31

cod invers, 31

coeficienţi ˆNewton-Cotes , 212

complementul ortogonal, 56

conjugata unei matrice, 57

contracţie, 116

conversie, 19

cuadratură Gauss, 227

D

derivare numerică folosind diferenţe

finite, 189

derivare numerică folosind

interpolarea, 206

desfacere a standard a unei matrice,

82

desfacere a unei matrice, 81

diferenţă finită divizată, 171

diferenţă finită la dreapta, 161

diferenţă finită la stânga, 167

Page 282: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

282

dimensiunea unui spaţiu Hilbert, 56

dualul unui spaţiu normat, 55

element de cea mai bună aproximare,

175

E

elemente ortogonale, 55

eroare a datelor, 11

eroare backward, 12

eroare de calcul, 10

eroare de interpolare în cazul

nodurilor Cebîşev, 143

eroare de interpolare în cazul

nodurilor echidistante, 142

eroare de interpolare, 140

eroare de metodă, 9

eroare de rotunjire, 9 , 11

eroare de trunchiere, 9, 11

eroare forward, 12

eroare inerentă, 9

eroarea absolută, 10

eroarea relativă , 10

extrapolare Richardson, 205

F

factor de condiţionare în cazul

rezolvării unei ecuaţii neliniare, 91

factor de condiţionare în cazul

rezolvării unui sistem neliniar, 105

factorul de condiţionare al unei

matrice, 74

factorul de condiţionare, 13

fl(x), 37

forma normalizată – exponentul, 35

forma normalizată – mantisa, 35

forma normalizată, 35

formula dreptunghiurilor, 212

formula generală de cuadratură, 210

formula lui Simpson, 223

formula trapezelor, 218

formula ˆNewton-Cotes , 212

funcţie pondere, 179

I

IEEE-754- dublă precizie (double-

precission), 41

IEEE-754-simplă precizie (single-

precission), 40

Inf, 39

integrarea numerică, 209

M

matrice diagonal dominantă, 84

matrice diagonală, 58

matrice hermitiană, 58

matrice inferior Hessenberg, 58

matrice inferior triunghiulară, 58

matrice inversabilă, 58

matrice nesingulară, 58

matrice ortogonală, 58

matrice simetrică, 58

matrice superior Hessenberg, 58

matrice superior triunghiulară, 58

matrice tridiagonală, 58

matrice unitară, 58

matricea unitate, 57

Page 283: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Metode Numerice

283

metoda bisecţiei (metoda înjumătăţirii

intervalului), 93

metoda celor mai mici pătrate, 178

metoda coardei, 96

metoda de eliminare Gauss, 62

metoda Gauss-Seidel, 87

metoda Jacobi, 83

metoda lui Newton, 127, 104

metoda Newton simplificată, 134

metoda Newton-Kantorovici, 138

metoda punctului fix, 116

metoda tangentei, 104

metode directe de rezolvare a

sistemelor liniare, 61

metode iterative de rezolvare a

sistemelor liniare, 80

minori principali, 60

N

NaN, 39

negativ definită, 60

negativ semidefinită, 60

noduri Cebîşev, 143

norma 1 ||⋅||1, 57

norma ∞ ||⋅||∞, 57

norma euclidiană ||⋅||2, 57

normă completă, 54

normă operatorială asociată unei

matrice, 59

normă, 53

norme echivalente, 54

numere denormalizate („denormalized

floating-point numbers”), 39

O

OFL (overflow level), 37

operator liniar şi mărginit, 55

ordine lexicografică, 17

overflow, 37

P

pivotare completă, 63

pivotare parţială, 63

polinoame Cebîşev de speţa a II-a,

230

polinoame Cebîşev de speţa I, 230

polinoame Jacobi, 230

polinoame Legendre,229

polinom de interpolare, 139

polinom generalizat, 179

polinom Lagrange de interpolare, 144

polinom Newton cu diferenţe

divizate, 171

polinom Newton de interpolare de

speţa a II-a (descendent), 166

polinom Newton de interpolare de

speţa I (ascendent), 161

pondere(integrare numerică), 209

pozitiv definită, 60

pozitiv semidefinită, 60

precizie a maşinii, 38

precizie, 36

problemă bine condiţionată, 13

problemă rău condiţionată, 13

Page 284: Mădălina Roxana Buneci Metode Numerice- aspecte teoretice şi ...

Mădălina Roxana Buneci

284

produs scalar, 55

produsul scalar canonic, 57

punct fix, 116

R

rată de convergenţă, 92, 116

rată liniară de convergenţă, 92, 116

rată pătratică de convergenţă, 92, 116

rată superliniară de convergenţă, 92,

116

raza spectrală, 59

rădăcină a unei ecuaţii, 91

reprezentare complement faţă de 1,31

reprezentare complement faţă de 2, 32

reprezentare în virgulă mobilă

normalizată, 37

reprezentare în virgulă mobilă, 36

reprezentare periodică în baza b, 25

reprezentare semn şi valoare absolută,

31

reprezentarea internă a numerelor

întregi fără semn, 29

reprezentarea unui număr întreg în

baza b, 19

reprezentarea unui număr real în baza

b, 21

restul formulei generale de

cuadratură, 211

rezolvarea unui sistem liniar prin

metoda de eliminare Gauss , 67

rotunjire la cel mai apropiat număr în

virgulă mobilă (rotunjire la par), 38

rotunjire prin tăiere, 37

S

sistem de numeraţie, 17

sistem ortogonal, 55

sistem ortonormal, 55

sistemul normal al lui Gauss, 180

soluţie a unei ecuaţii, 91

soluţie a unui sistem neliniar, 105

spaţiu Banach, 54

spaţiu Hilbert, 55

spaţiu normat, 53

spaţiu pre-Hilbert, 55

spaţiul operatorilor liniari şi mărginiţi,

55

spectru, 59

standardul IEEE-754, 39

T

transpusa unei matrice, 57

trunchiere, 37

U

UFL (underflow level), 37

underflow, 37

V

valoare proprie, 59

vector propriu, 59

Z

zerou al funcţiei, 91