Metode Numerice – [622231]
Universitatea din Craiova
Facultatea de Automatică , Calculatoare ș i Electronic ă
Metode Numerice –
Manual de curs
Mihaela Racil ă
https://mracila.com/
M. Racil ă
1
Introducere
Aproximarea numerică este una dintre cele mai utilizate metode de rezolvare a unei
probleme complexe, ea preocupând de-a lungul timpului numeroși matematicieni, ce și -au
legat numele de o serie de metode consacrate folosite, și de obținerea unor algoritmi, în
vederea implementării acestora în diverse progra me pentru calculator. În ultimele decenii,
metodele numerice s-au dezvoltat foarte mult, ceea ce a permis rezolvarea unor probleme
inginerești de mare complexitate într-un timp foarte scurt și cu o precizie foarte bună.
Acest material este un suport de curs și se adresează studenților de la Facultatea de
Automatică, Calculatoare și Electronică a Universității din Crai ova, ce urmează cursul de
Metode Numerice. El este conceput în special pentru studenții de la specializările de
Automatică și Informatică Aplicată, Ingineria Sistemelor Multimedia, precum și Mecatronică
– Robotică, dar poate fi utilizat și de studenții ce urmează cursurile altor specialități de
inginerie.
Obiectul acestui manual este acela de a propune o explicație succintă a conceptelor
predate la curs. Numeroase cărți de Metode Numerice există la momentul actual. S-a căutat
aici, ținând cont de constrân gerile volumului orar, de cunoștințele studenților din primul an de
studiu, dar și de exigențele disc iplinelor din anii superiori, a se pune bazele "cunoștințelor
numerice” necesare, în scopul asigurării unui studiu individual cât mai productiv al studenților și chiar facilitarea lecturii altor materiale de specialitate.
Aceste note de curs nu reprezintă o "motivație" de a nu mai participa la orele de curs
sau seminar, nici de a nu mai scrie notițe suplimentare în timpul cursului. Acest material este
conceput pentru a evita o eventuală activitate de "copiere" de pe tablă , care poate împiedica o
concentrare a studenț ilor asupra explicațiilor orale de la curs; el nu este un manual "auto –
suficient” (este departe de a fi exhaustiv !).
Structurat în 7 capitole, materialul permite abordarea unor probleme numerice diverse,
necesare oricărui viitor inginer, precum metode exacte și aproximative de rezolvare a
sistemelor de ecuații liniare și neliniare, metode de determinare a valorilor și vectorilor proprii ai unei matrice, interpolarea polinomială și cu funcții spline, derivarea și integrarea numerică, metode de rezolvare a ecuaț iilor diferențiale ordinare. Ultimul capitol cuprinde câteva modele
de subiecte, în vederea pregătirii examenului final la disciplina Metode Numerice, precum și
câteva din subiectele date la examen în anii anteriori .
Manualul este conceput pentru un curs de un semestru: 14 cursuri de 2 ore și 14
laboratoare/seminarii de 2 ore. Prin prezența exercițiilor propuse spre rezolvare la finalul
fiecărui capitol/paragraf, se dorește evitarea "sindromului paginii albe" și "forțarea" stăpânirii
mecanismelor nume rice de calcul, prin insăși repetarea lor.
Cursul fiind destinat viitorilor ingineri, în scopul cunoașterii metodelor numerice de
bază necesare rezolvării problemelor ingineresti, el nu este prea mult încărcat cu demostrații
ale propozițiilor sau teoremelor utilizate (acestea fiind lăsate ca lectură bibliografică
studenților interesați), ci urmărește "impregnarea" studenților cu metode de aproximare cât
mai rapide, care pot fi programate ulterior, în scopul determinării unei soluții pentru problema
modelizată dorită.
M. Racil ă
2
Prima parte a fiecărui capitol cuprinde prezentarea unor noțiuni teoretice și deducerea
unor algoritmi pentru metodele prezentat e, iar a doua parte se referă la calcule numerice pe
baza algoritmilor respectiv i și la testarea lor pe exemple numerice concrete, ce vor fi folosite
în verificarea programelor implementate ulterior în cadrul orelor de laborator. Sunt prezentate
exerciții rezolvate, care demonstrează fie rezultate teoretice, fie reprezintă aplicații ale
algoritmilor de calcul numeric.
Sunt prezentate în acest manual metodele de bază ale Calculului Numeric. Se regăsesc
aici cele mai importante metode numerice prin care obținem soluții aproximative pentru
diferite probleme matematice studiate spre exemplu la cursurile de Algebră liniară și/sau
Ecuații diferențiale.
După fiecare metodă este prezentată și algoritmizarea corespunzătoare într-un limbaj
pseudocod. Activitatea studenților pe parcursul laboratoarelor va consta în a proba
valabilitatea acestor algoritmi prin progr amarea lor într-un limbaj, spre exemplu C/C++.
Parcurgerea și înțelegerea acestui manual necesită cunoștințe din Analiza Matematică,
Algebra liniară și Ecuații diferențiale, precum și noțiuni de programare.
DE CE toată această "organizare" pentru cursul de Metode Numerice ? Pentru ca, la
final, dumneavoastră, studenții, să deveniți acei ingineri capabili să modelizeze și să rezolve
cu precizie problemele întâlnite, de orice natură ar fi acestea (fizică, mecanică, electrică, etc) .
Aceste note de curs sunt permanent actualizate și corectate. Orice comentariu
constructiv pe marginea acestui material va fi oricând binevenit și luat în considerare.
Toate observațiile sau întrebările permițând ameliorarea acestor note de curs pot fi trimise
la
mihaela.racila at gmail.com
M. Racil ă
3
Introducere în Metodele Numeric e
Putem defini Metodele Numerice ca fiind disciplina ce permite simularea cu ajutorul
unui calculator a unui fenomen sau proces descris printr -un model mat ematic.
Fenomen fizic,
mecanic, biologic, etc. //Observaț ii
experimentale
Model Matematic:
Scrierea ecuaț iilor
(diferen țiale, cu
derivate parț iale,
integrale, etc.) Analiză Matematică :
Problema bine pusă , bine
condi ționată , soluție analitică ,
propriet ățile solu ției (stabilitate,
etc.)
Simulare
Programare :
Limbaj de programare (C, C++, Matlab, Scilab, altele)
Implementarea algoritmului Optimizare Metode Numeric e :
Metode de aproximare,
discretizare, analiza algoritmilor (precizie, rapiditate, ..) , estimarea
erorilor
Post-procesare :
Vizualizare
Analiza rezultatelor
Metode Numeric e
Model ul Matematic: Un model este un concept utilizat pentru a reprezenta ceva, un
fenomen, un process, etc. El utilizează concepte matematice : constante, variabile, funcții,
ecuații, operatori, etc. Abstractizarea permite construirea unor modele ce au o validitate și o
utilitate generală în lumea reală , considerând unele simplificări ale sistemelo r studiate.
Interesele modelului matematic sunt numeroase :
prevederea evoluției unui sistem în funcție de diferiți stimuli, fără a repeta fiecare
experiment, sau în situații ne -verificabile experimental ;
acționarea asupra unui sistem, propunând strategii optimale (teoria controlului
optimal);
formularea și validarea cantitativă a ipotezelor;
M. Racil ă
4
explorarea proprietăților unui model, spre exemplu: studiul elasticității, vâscozității
sau plasticității materialelor , reconstituirea unor obiecte 3D prin mijloace non-
invazive , etc.;
nu în ultimul rând, un model matematic este mai puțin costisitor decât un model fizic.
Dificultățile construirii unui model matematic constau în :
erori sau non- exhaustivitate a datelor experimentale ;
dificultatea (sau chiar imposibilitatea) rezolvării exacte a modelului matematic creat.
Modelizarea matematică este în mod clar un proces iterativ. Modelul nu apare pur și
simplu în urma examinării sistemului (fenomenului); din contră, el rezultă dintr -un șir
“delicat” de decizii și de revizii. Delimitarea însăși a sistemului este o alegere ce evoluează în
cursul procesului de modelizare/simulare. În orice moment, simularea numerică permite
explorarea comportamentelor generate de ecuațiile ce compun modelul. Prin intermediul
confr untării acestor comportamente simulate cu cele cunoscute deja ale sistemului studiat, se
poate realiza eventuala modificare, afinare sau dezvoltare a sistemului m odelizat. Astfel, se
ameliorează înțelegerea sistemului studiat. În afara înțelegerii comporta mentelor sistemelor,
modelele matematice permit testarea și evaluarea diverselor strategii de acțiune. Spre
exemplu, în cazul unei epidemii, un model matematic realizat ar putea defini strategiile de
vaccinare sau de izolare a bolnavilor.
Trebuie totuși amintit încă o data (și dealtfel mereu) , că un model este o aproximare a
realității, că pertinența și utilitatea sa sunt funcții de alegerile făcute în timpul elaborării
acestuia, că aceste alegeri sunt ghidate de necesitățile a priori, cărora modelul va f i conceput
pentru a răspunde.
Analiza Matematică: Trebuie în primul rând să ne asigurăm de existența și unicitatea
soluției modelului matematic creat. Dacă nu există unicitate, vor trebui adăugate condiții
suplimentare modelului, care să asigure buna alegere a soluției ce corespunde fenomenului
studiat. Vor fi studiate apoi proprietățile soluției, în special stabilitatea acesteia : mici
perturbări admisibile ale datelor trebuie să inducă doar mici perturbări asupra soluției. Vom
căuta soluții analitice pentru cazuri simplificate, pentru a putea testa apoi metodele numerice
și algoritmii dezvoltați.
Metodele Numerice: Calculatorul este astăzi o unealtă inconturnabilă în ceea ce privește
modelizarea și simularea sistemelor complexe, însă trebuie să știm să ne exprimăm
problemele în limbaj matematic, fie că ele sunt de natură fizică sau mecanică, electrică,
bilogică, etc… Suntem obișnuiți să rezolvăm problemele în mod analitic, în timp ce calculatorul nu lucrează decât cu șiruri de numere. Vom vedea că există deseori mai multe
moduri de abordare pentru rezolvarea unei aceleași probleme, ceea ce conduce la algoritmi diferiți. Unul dintre obiectivele acestui curs este acela de a furniza baze cât mai riguroase pentru dezvoltarea unor algoritmi utili în rezo lvarea diverselor probleme inginerești.
Un algoritm , pentru a fi util, trebuie să satisfacă trei condiții. El trebuie să fie:
Rapid: numărul operațiilor necesare pentru a ajunge la rezultatul dorit trebuie să fie
cât mai redus posibil ;
M. Racil ă
5
Precis : algoritmul trebuie să țină cont de efectul erorilor inerente oricărui calcul
numeric; aceste erori se pot datora fie modelizării , fie datelor ( obținute prin măsurători
spre exemplu ), sau însăși metodei de aproximare;
Suplu: algoritmul trebuie să fie ușor transpozabil pe probleme diferite .
Alegerea și optimizarea algoritmilor numerici este crucială atât pentru calculul de tip
industrial, adesea foarte repetitiv și trebuind deci să fie executat în timp foarte scurt, cât și pentru calculul clasic, ce are ca limită doar răbdarea celui car e l-a creat. Experiența arată că
între o aproximare numerică standard și una bine reflectată, optimizată, un câștig în timp de calcul de factor 100 și chiar mai mare este adesea observat. Este clar că putem trece, prin
acest efort, de la un calcul total nerezonabil, la unul perfect banal: toată "cheia” calculului
numeric este aici; este deosebit de importantă buna cunoașterea metodelor numerice, a
avantajelor și limitelor acestora.
Erori : Simplul fapt de a utiliza calculatorul pentru reprezentarea numerelor reale
induce erori. În consecință, în loc de a încerca să eliminăm erorile, este preferabil să încercăm
a le controla efectele.
În general, putem identifica mai multe niveluri de erori în aproximarea și rezolvarea
unei probleme inginerești. La cel mai înalt nivel, găsim eroarea ce provine din însăși faptul că
am redus realitatea fizică a problemei la un model matematic , este o eroare inerentă . Astfel
de erori limitează aplicarea modelului matematic în anumite situații și nu se află în "câmpul
de control” al Calculului Numeric. Cel mai adesea, nu putem da o soluție explicită unui model matematic creat, fie că el este exprimat printr -o integrală, o ecuație algebrică sau diferențială,
un sistem liniar sau neliniar.
Rezolvarea cu ajutorul algoritmilor numerici induce inevitabil introducerea și
propagarea erorilor de rotunjire .
În plus, apar adesea alte erori, legate de faptul că un calculator nu poate realiza decât
într-o manieră aproximativă calcule ce implică un număr infinit de operații aritmetice . Spre
exemplu, calculul sumei unei serii se realizează utilizând o formulă convenabilă de
aproximare; apar astfel erorile de trunchiere sau erorile de metodă.
Erorile inerente sunt a nterioare aplicării metodei numerice, iar erorile de trunchiere și
de rotunjire apar în timpul calculului numeric.
1. Sisteme liniare M. Racil ă
6
1. Rezolvarea numeric ă a sistemelor liniare
Obiective: * cunoaș terea metodei de eliminare a lui Gauss , pentru rezolvarea
unui sistem liniar
* cunoaș terea metodei LR de rezolvare a unui sistem liniar
* cunoașterea metodelor Seidel -Gauss și Jacobi, pentru rezolvarea unui sistem
liniar
* cunoașterea principalelor metode de calcul a determinantului și inversei unei
matrice
Vom descrie în acest capitol câteva metode numerice pentru rezolvarea unui sistem de
forma
b Ax= (1.1)
unde x este vectorul necunoscut, b este un vector dat, în funcție de problema de studiu (spre
exemplu, în cazul metodei diferențelor finite, b depinde de condițiile la limită și de membrul
drept al ecuației cu derivate parțiale),iar dimensiunea matricii A este egalaă cu numărul
gradelor de libertate utilizate în problemă.
Distingem două tipuri de metode :
• metode directe, care permit rezolvarea sistemului (1.1) într -un număr finit și
determinat de operații (pași)
• metode iterative , care constau în construir ea unor șiruri de vectori ce converg mai
repede sau mai încet spre soluția sistemului (1.1)
Formularea problemei
Fie A∈ R nxn – o matrice reală cu n linii și n coloane
b∈ R n – un vector coloană cu n componente reale
x∈ R n – vectorul necunoscut
Un sistem de ecuații liniare poate fi scris sub forma explicită:
n ix xa xa bai
ij ijjij jij i
ii,…,1 ,1==
−−∑∑
< > (1.2)
sau sub forma matricială (compactă):
Ax = b
respectiv sub forma dezvoltată:
1. Sisteme liniare M. Racil ă
7
=
n n nn n nnn
bbb
xxx
a a aa a aa a a
… …
………… ………
21
21
2 12 22 211 12 11
(1.3)
In același timp, orice sistem liniar poate fi reprezentat sub forma următoare:
∑
===n
ji jij n ibxa
1,…,2,1 , (1.4)
(i) Un sistem liniar poate fi :
– consistent, dacă are cel puțin o soluție
– inconsistent dacă nu are nicio soluție
Observație: In cele ce urmează, orice sistem liniar poate avea o soluție unică
(compatibil determinat), nicio soluție (incompatibil), sau o infinitate de soluții. Suntem
interesați, în mod evident, de prima situație.
(ii) In raport cu vectorul b distingem următoarele tipuri de sisteme:
(a) sisteme omogene dacă b = 0
Orice sistem omogen este consistent, având soluția banală 0=x . Un sistem omogen admite o
soluție n enulă dacă și numai dacă det(A)=0, în această situație soluția depinzând de cel puțin
un parametru.
(b) sisteme neomogene dacă b≠ 0
Sistemul (1.1) este compatibil determinat pentru orice b≠0 dacă și numai dacă sistemul
omogen Ax = 0 nu admite decât soluția banală 0=x .
(iii) In practică, numerele ce constituie componentele matricii A, respectiv componentele
vectorului b, sunt supuse erorilor inerente sau de rotunjire. Dacă mici erori în matricea A sau
vectorul b, în cadrul procesului de calcul, dau un slab efect asupra vectorului soluție, atunci
spunem că sistemul este bine condiționat. In caz contrar, îl numim slab condiționat.
Aten ție : Un sistem liniar nu își schimbă soluția dacă schimbăm ordinea ecuațiilor ,
însă ordinea ecuațiilor poate schimba total soluția obținută printr -o metodă numerică.
Metode directe
1.1 Procedeul de eliminare al lui Gauss. Tehnici de pivotare
Procedeul de eliminare al lui Gauss este o metodaă generală, bazată pe o schemă de
eliminare succesivă a necunoscutelor sistemului, introdusă de Gauss în 1823, permițând
triangularizarea superioară a matricii sistemului prin transformări elementare (de exemplu perm utarea a două linii, adunarea unei linii înmulțite cu un număr la o altă linie, etc..).
1. Sisteme liniare M. Racil ă
8
Observații:
(i) Toate aceste transformări elementare sunt aplicate matricii extinse (A b), astfel încât
în “n -1” etape, în locul matricii A vom avea o matrice superior triangulară.
(ii) Vom aplica aceste transformări elementare doar liniilor, neafectând astfel soluția
sistemului.
Algoritmul metodei, pe pași, ar fi următorul:
– la primul pas, se folosește prima ecuație a sistemului pentru eliminarea necunoscutei
x1 din celelalte “n -1” ecuații, obținând un nou sistem A(2)x = b(2), unde A(1) = A și b(1) = b;
– la pasul 2, se folosește a doua ecuație a sistemului anterior A(2)x = b(2) pentru
eliminarea necunoscutei x 2 din ultimele “n -2” ecuații, obținând sistemul A(3)x = b(3) , etc.
Astfel, pentru k = 1,2 … n-1 avem :
≤≤+≤≤+ −≤≤+≤≤≤≤ ≤≤
=+
nj kni k aaaani j kjnji ki a
a
k
kj k
kkk
ik k
ijk
ij
k
ij
1 , 1 ,1 , 1 ,0, 1 ,
)(
)()(
)()(
)1( (1.1.1)
≤≤+ −≤≤
=+
ni k baabki b
bk
k k
kkk
ik k
ik
i
k
i1 ,1 ,
)(
)()(
)()(
)1(
Observație:
Relațiile (1.1.1) se obțin prin înmulțirea ecuației “k” a sistemului A(k)x = b(k) prin )(
,)(
,
k
kkk
ki
aa și
scăderea ecuației astfel obținute din toate celelalte ecuații "i”, k+1 ≤ i ≤n. Astfel, variabila x i
este eliminată din ultimele “ n-k” ecuații ale sistemului.
Acest proces de eliminare poate fi reprezentat, la etapa “k -1” sub forma următoare:
1. Sisteme liniare M. Racil ă
9
+ +−
−−
−−
−−−−
)( )()(
,1)(
,1)( )()1(
,1)1(
,1)1(
1,1)2(
2)2(
2)2(
1,2)2(
22)1(
1)1(
1)1(
1,1)1(
12)1(
11
…… … …………… … … … …… …… …
k
nnk
nkk
n kk
k kk
knk
kkk
n kk
k kk
k kn k kn k k
a aa aa aa a aa a a aa a a a a
+−
nkkk
xxxxxx
……
1121
=
+−
−
)()(
1)()1(
1)2(
2)1(
1
……
k
nk
kk
kk
k
bbbbbb
(1.1.2)
sau sub forma matricială A(k)x = b(k).
Remarcă :
In acest algoritm am presupus că a kk(k)≠0, k = 1,2,…, n.
In final, la etapa k = n-1, obținem un sistem liniar în formă triunghiulară, echivalent (are
aceeași soluție) cu cel inițial. Acest ultim sistem se scrie:
==++=++++=+++++
)( )()( )( )()(
2)(
2)(
2 2)(
22)(
1)(
1)(
1 2)(
12 1)(
11
.. ………. ………. … ………. ………. ………. ………. ………. … … … …
n
n nn
nnn
k nn
kn kn
kkn
nn
n kn
knn
nn
n kn
kn n
bxabxa xabxa xa xabxa xa xaxa
(1.1.3)
sau echivalent A(n)x = b(n).
Observați e: A(n) este o matrice superior triunghiulară, adic ă aij(n) = 0, i > j, 1 ≤ i, j
≤n.
Soluția sistemului (1.1.3) se obține ușor prin substituție inversă :
)(
,)(
n
nnn
n
nabx=
)(1)( )(
n
iin
ijjn
ijn
i
iaxa b
x∑
+=−
= , i = n-1, n-2, …, 1
1. Sisteme liniare M. Racil ă
10
Observații: (i) Relațiile (1. 1.1), pentru a ij(k+1),k+1 ≤ i, j ≤ n și b i(k+1), k+1 ≤ i ≤n
sunt cunoscute
sub numele de
regula
dreptunghi ului:
(ii) Intreaga procedură de triangularizare poate fi aplicată direct în matricea A, memorând la
fiecare etapă multiplicatorii
)()(
k
kkk
ik
ikaa=µ , 1≤k≤ 1−n , k+1≤ i ≤n
în locul elementelor anulate a ik(k) și suprapunând elementele corepunzătoare a ij(k), k+1 ≤ i, j ≤
n.
(iii) Dacă pentru un anume “k”, sistemul A(k)x = b(k) este de forma:
0 …0… … …0 …0…… … … …… …… …
)( )()2(
2)2(
2)2(
22)1(
1)1(
1)1(
12)1(
11
k
knk
kkn kn k
a aa a aa a a a
+
nkk
xxxxx
……
121
=
+
)()(
1)()1(
2)1(
1
……
k
nk
kk
k
bbbbb
Atunci el nu admite soluție unică ∗x. Este vorba atunci de un sistem compatibil nedeterminat
de ordin “n -k” dacă 0 b… b)k(
n)k(
1k ===+ și incompatibil dacă există cel puțin un 0 b)k(
i≠,
i = k+1, …, n.
Algoritm Gauss fără pivotare :
Date de intrare: matricea extinsă(A b) cu n linii și n+ 1 coloane
Date de ieșire: soluția sistemuluix∈ R n
Pas 1: Transformarea matricei extinse (A b), până ce devine o matrice superior triunghiulară
(n-1 etape)
Notăm cu k numărul etapei: k = 1,2,…,n- 1
La fiecare etapă „k”:
)()()( )()(
)1( · ·
k
kkk
kjk
ikk
kkk
ij k
ijaaa aaa−=+
1. Sisteme liniare M. Racil ă
11
– linia „ k”se copiază
– pe coloana „ k”sub pivot, elementele vor fi nule
– restul elementelor, sub linia “ k”, la dreapta coloanei “ k”, se vor calcula cu regula
dreptunghiului :
𝑎𝑖𝑗→𝑎𝑖𝑗(𝑘)=𝑎𝑖𝑗∙𝑎𝑘𝑘−𝑎𝑖𝑘∙𝑎𝑘𝑗
𝑎𝑘𝑘, k+1 ≤ i≤n ,k+1 ≤ j ≤ n+1
adică
pentru k = 1,2,…,n -1
{ pentru k+1 ≤ i≤ n
pentru k+1 ≤ j ≤ n+1
𝑎𝑖𝑗=𝑎𝑖𝑗∙𝑎𝑘𝑘−𝑎𝑖𝑘∙𝑎𝑘𝑗
𝑎𝑘𝑘
}
Pas 2: Rezolvarea sistemului ob ținut prin substituție inversă și aflarea componentelor soluției
sistemului (în ordine inversă): 𝑥𝑛,𝑥𝑛−1,𝑥𝑛−2,…,𝑥1
Sistemul obț inut va fi superior triunghiular, de forma:
==++=++++=+++++
)( )()( )( )()(
2)(
2)(
2 2)(
22)(
1)(
1)(
1 2)(
12 1)(
11
.. ………. ………. … ………. ………. ………. ………. ………. … … … …
n
n nn
nnn
k nn
kn kn
kkn
nn
n kn
knn
nn
n kn
kn n
bxabxa xabxa xa xabxa xa xaxa
Din ultima ecuație se află )(
,)(
n
nnn
n
nabx=
Linia k
Linia i
Coloana k Coloana j aik aij akk akj
1. Sisteme liniare M. Racil ă
12
Din celelalte ecuaț iise află restul componentelor prin substituție inversă :
)(1)( )(
n
iin
ijjn
ijn
i
iaxa b
x∑
+=−
= , i = n-1, n-2, …, 1
adică
nnnn
naax
,1,+=
pentru i = n -1,n-2,…,1
{S = 0;
pentru j = i+1,…,n
S = S + a ijxj
𝑥𝑖=(𝑎𝑖,𝑛+1−𝑆)/𝑎𝑖𝑖
}
Algoritm:
Pas Algoritm
Citire: Matrice a extins ă (A/b):
𝑎𝑖𝑗, 𝑖=1,2,…,𝑛 𝑗=1,2,…,𝑛+1
1. Transformarea matricei extinse (A/b), până ce devine o matrice superior triunghiulară ( n-1 etape)
La fiecare etap ă "k" (k = 1,…,n –
1), elementul a kk este pivot, linia
„k” se copiază, pe coloana „k” sub
pivot, elementele vor fi nule , iar
restul elementelor, sub linia “k” , la
dreapta coloanei “ k”, se vor
calcula cu regula dreptunghiului :
𝒂𝒊𝒋→𝒂𝒊𝒋(𝒌)=𝒂𝒊𝒋∙𝒂𝒌𝒌−𝒂𝒊𝒌∙𝒂𝒌𝒋
𝒂𝒌𝒌, k+1 ≤
i≤ n , k+1 ≤ j ≤ n+1
pentru k = 1,2,…,n -1 // la fiecare etap ă
{
pentru k+1 ≤ i≤ n // elementele de sub linia “k” ,
pentru k+1 ≤ j ≤ n+1 // la dreapta coloanei “k”
𝑎𝑖𝑗 =𝑎𝑖𝑗∙𝑎𝑘𝑘−𝑎𝑖𝑘∙𝑎𝑘𝑗
𝑎𝑘𝑘 // „regula dreptunghiului”
}
1. Sisteme liniare M. Racil ă
13
Obs: La fiecare etapă, elementele
transformate se vor suprapun e peste
elementele matricei A , pe m ăsură ce
acestea sunt calculate.
2. Rezolvarea sistemului ob ținut
prin substituție inversă și aflarea
componentelor soluției sistemului
(în ordine inversă):
𝒙𝒏,𝒙𝒏−𝟏,𝒙𝒏−𝟐,…,𝒙𝟏 nnnn
naax
,1,+=
pentru i = n -1,n-2,…,1
{S = 0;
pentru j = i+1,…,n
S = S + a ijxj
𝑥𝑖=(𝑎𝑖,𝑛+1−𝑆)/𝑎𝑖𝑖
}
Afișa re: vectorul soluție x: 𝑥𝑖,𝑖=1,2,…,𝑛
Observ ații: 1) În ultima coloană a matricei extinse se introduce termenul liber al
sistem ului (vectorul b) . Astfel, matricea extinsă (n linii, n+1 coloane) are forma :
�𝑎11𝑎1𝑛𝑎1,𝑛+1
… … …
𝑎𝑛1𝑎𝑛𝑛𝑎𝑛,𝑛+1�
2) Pentru un cost minim de memorie, se poate folosi ultima coloană a matricei extinse și
pentru vectorul soluție x .
3) Pentru situația pivotării parțiale sau totale, consultați cartea domnului Conf. Univ. Dr.
Romulus Militaru : R. Militaru, M. Popa, Metode numerice în pseudocod. Aplicații,
Ed. Sitech, 2013
Cazul unui pivot a kk(k) nul:
Diverse strategii pot fi utilizate în acest caz:
Pivot parțial : La etapa “k”, pivotul este unul din elementele nik akk
kik≤≤ , )( astfel încât :
)(
1)(maxk
jknj kk
ki a a
k≤≤+=
1. Sisteme liniare M. Racil ă
14
Se permută atunci linia k cu linia i k.
Practic, sub linia k, pe coloana k, se caută cel mai mare element în modul nenul și apoi se
interschimbă linia acestuia cu linia k .
Pivot total : La etapa “k”, pivotul este unul din elementele njik ak kk
jikk≤≤, , )( astfel încât :
)(
,1)(maxk
ijnji kk
ji a a
kk≤≤+=
Se permută atunci linia k cu linia i k și coloana k cu coloana j k.
Practic, sub linia k, la dreapta coloanei k, se caută cel mai mare element în modul nenul și
apoi se interschimbă linia și coloana acestuia cu linia k , respectiv coloana k .
Pivot diagonal : La etapa “k”, pivotul este unul din elementele nik akk
iikk≤≤ , )( astfel încât :
)(
1)(maxk
iini kk
ii a a
kk≤≤+=
Se permută atunci linia k cu linia i k și coloana k cu coloana i k.
Practic, sub linia k, pe diagonală, se caută cel mai mare element în modul nenul și apoi se
interschimbă linia și coloana acestuia cu linia k , respectiv coloana k.
Observații:
(1) Dacă permutarea nu permite obținerea unui pivot nenul, atunci matricea coeficienților
sistemului este singulară. Dacă, dupa linia k nu se mai pot permuta liniile, matricea este
degenerată “ kn−“.
(2) In scopul diminuării numărului de operații efectuate în cazul pivotului parțial, putem alege
spre exemplu )(k
kikaca fiind primul element nenul astfel încât k +1 ≤ ik≤n, respectiv în cazul
pivotului total, putem alege )(k
jikka ca fiind primul element nenul astfel încât k+1 ≤ ik, jk ≤ n;
(3) Trebuie remarcat faptul că permutarea coloanelor în cazul pivotului total conduce la
permutări ale componentelor corespunzătoare în vectorul soluției sistemului. Astfel, după
rezolvarea unui sistem prin tehnica pivotării totale, "adevărata” soluție se obține refăcând, în
sens invers , pentru componentele vectorului soluție, toate perm utările de coloane efectuate.
(4) a se nota că posibilitatea de a permuta linii și coloane la fiecare etapă poate fi utilă, chiar
dacă aplicând metoda lui Gauss fără pivotare niciun element a kk(k) un este nul. Intr -adevăr,
este posibil, ca unul din elemente fiind foarte mic, erori de rotunjire să degradeze soluția
obținută. Este deci indicată utilizarea uneia din strategiile prezentate înainte (pivotare parțială
sau totală), în scopul asigurării unei st abilități numerice, minimizând astfel erorile de
rotunjire.
(5) procedeul de eliminare al lui Gauss “umple” matricea sistemului: anumiți termeni care
erau egali cu zero în matricea inițială nu rămân neapărat nuli în cursul eliminării.
1. Sisteme liniare M. Racil ă
15
Exemplificarea algoritmului pentru n = 4
Matricea extins ă este de forma: (𝐴|𝑏)=�𝑎11𝑎12
𝑎21𝑎22 𝑎13𝑎14
𝑎23𝑎24
𝑎31𝑎32
𝑎41𝑎42 𝑎33𝑎34
𝑎43𝑎44�𝑏1
𝑏2
𝑏3
𝑏4�
Pas Pivot Formule Exemplificare
1 a11≠0
Se aplic ăformu lele (1.1.1). Spre
exemplu:
– pentru elementul a 32:
𝑎32(1)=𝑎32∙𝑎11−𝑎31∙𝑎12
𝑎11
– pentru elementul b 2:
𝑏2(1)=𝑏2∙𝑎11−𝑎21∙𝑏1
𝑎11
– pentru elementul a 43:
𝑎43(1)=𝑎43∙𝑎11−𝑎41∙𝑎13
𝑎11
Se ob ține matricea transformat ă:
(𝐴|𝑏)(1)=
⎝⎜⎛𝑎11𝑎12
0𝑎22(1) 𝑎13𝑎14
𝑎23(1)𝑎24(1)
0 𝑎32(1)
0 𝑎42(1) 𝑎33(1)𝑎34(1)
𝑎43(1)𝑎44(1)��𝑏1
𝑏2(1)
𝑏3(1)
𝑏4(1)⎠⎟⎞ 1) Prima linie se copiaz ă.
2) Pe p rima coloan ă, sub a 11, se
pun elemente nule.
3) Restul elementelor matricei se
calculeaz ă cu regula
dreptunghiului:
– pentru elementul a 32:
– pentru elementul b 2:
– pentru elementul a 43:
2 𝑎22(1)
≠0 Se lucreaz ă cu matricea transformat ă de
la pasul 1: (𝐴|𝑏)(1).
Se reaplic ă formulele (1.1.1). Spre
exemplu:
– pentru elementul 𝑎 44(1):
𝑎44(2)=𝑎44(1)∙𝑎22(1)−𝑎42(1)∙𝑎24(1)
𝑎22(1)
– pentru elementul 𝑏 3(1):
𝑏3(2)=𝑏3(1)∙𝑎22(1)−𝑎32(1)∙𝑏2(1)
𝑎22(1) 1) Prima linie și prima coloan ăse
copiaz ă.
2) A doua linie se copiaz ă.
3) Pe a doua coloană , sub 𝑎22(1), se
pun elemente nule.
4) Restul elementelor matricei se
calculeaz ă cu regula
dreptunghiului:
– pentru elementul 𝑎 44(1):
– pentru elementul 𝑏3(1):
1. Sisteme liniare M. Racil ă
16
Se ob ține matricea transformat ă:
(𝐴|𝑏)(2)=
⎝⎜⎛𝑎11𝑎12
0𝑎22(1) 𝑎13𝑎14
𝑎23(1)𝑎24(1)
00
00 𝑎33(2)𝑎34(2)
𝑎43(2)𝑎44(2)��𝑏1
𝑏2(1)
𝑏3(2)
𝑏4(2)⎠⎟⎞
Obs: Dacă pivotul 𝑎22(1)=0,
atunci , dupa 1), se aplic ă o
pivotare par țială sau total ă, se
interschimb ă liniile (eventual ș i
coloanele), apoi se continuă de la
2).
3 𝑎33(2)
≠0 Se lucreaz ă cu matricea transformat ă de
la pasul 2: (𝐴|𝑏)(2).
Se aplică formulele (1.1.1). Spre
exemplu:
– pentru elementul 𝑎 44(2):
𝑎44(3)=𝑎44(2)∙𝑎33(2)−𝑎43(2)∙𝑎34(2)
𝑎33(2)
Se ob ține matricea transformat ă:
(𝐴|𝑏)(3)=
⎝⎜⎛𝑎11𝑎12
0𝑎22(1) 𝑎13𝑎14
𝑎23(1)𝑎24(1)
00
00 𝑎33(2)𝑎34(2)
0𝑎44(3)��𝑏1
𝑏2(1)
𝑏3(2)
𝑏4(3)⎠⎟⎞ 1) Prima linie și prima coloan ă se
copiaz ă.
2) A doua linie ș i a doua coloană se
copiaz ă.
3) A treia linie se copiaz ă.
4) Pe a treia coloan ă, sub 𝑎33(2), se
pun elemente nule.
5) Restul elementelor matricei se
calculeaz ă cu regula
dreptunghiului:
– pentru elementul 𝑎 44(2):
Obs: Dacă pivotul 𝑎33(2)=0,
atunci, dupa 1) ș i 2), se aplic ă o
pivotare par țială sau total ă, se
interschimb ă liniile (eventual ș i
coloanele), apoi se continuă de la
3).
4 Se rezolv ă sistemul liniar ob ținut sub
formă triunghiulară, echivalent cu cel
inițial.
==+=++=+++
)3(
4 4)3(
44)2(
3 4)2(
34 3)2(
33)1(
2 4)1(
24 3)1(
23 2)1(
221 4 14 313 2 12 111
bxabxaxabxaxaxabxaxaxaxa
)3(
44)3(
4
4abx=
1,2,3,)1()1( )1(
=−
=−=− −∑
iaxa b
xi
iin
ijji
iji
i
i
)3(
44)3(
4
4abx=
)2(
334)2(
34)2(
3
3axa bx−=
)1(
223)1(
23 4)1(
24)1(
2
2axaxa bx−−=
112 12 313 4 14 1
1axaxaxabx−−−=
1. Sisteme liniare M. Racil ă
17
Exemplu :
Să serezolve sistemul urmă tor utiliz ând metoda de eliminare a lui Gauss:
=++−−=+−=++
3 2 41 2 6 512 2 5
3 2 13 2 13 2 1
xx xx x xxx x
Solu ție:
Pas Pivot Algoritm Exemplificare
1 a11=5
Matricea extins ă a sistemului este:
(𝐴|𝑏)=�𝟓 2 1
5−62
−4 2 1�12
−1
3�
1) Prima linie se copiaz ă.
2) Pe prima coloan ă, sub a 11, se pun elemente
nule.
3)Restul elementelor matricei se calculeaz ă cu
regula dreptunghiului , prin aplicarea f ormu lelor
(1.1.1):
1 8
111321
23)1(
23
111221
22)1(
22 =−= −=−=aaaa aaaaa a
59 518
111331
33)1(
33
111231
32)1(
32 =−= =−=aaaa aaaaa a
563 13
11311
3)1(
3
11211
2)1(
2 =−= −=−=aabb baabb b
1) (𝐴|𝑏)(1)=
�𝟓 2 1
�12
�
2) (𝐴|𝑏)(1)=
�𝟓 2 1
0
0�12
�
3) (𝐴|𝑏)(1)=
�𝟓 2 1
0−𝟖1
018
59
5�12
−13
63
5�
2 𝑎22(1)
=−8 Se lucreaz ă cu matricea transformat ă de la pasul
1: (𝐴|𝑏)(1).
(𝐴|𝑏)(1)=�𝟓 2 1
0−𝟖1
018
59
5�12
−13
63
5�
1) Prima linie ș i prima coloan ă se copiaz ă.
2) A doua linie se copiaz ă.
3) Pe a doua coloan ă, sub 𝑎22(1), se pun elemente
nule.
4) Restul elementelor matricei se calculeaz ă cu
regula dreptunghiului, prin re aplic area formulel or
(1.1.1): 1) (𝐴|𝑏)(2)=
�5 2 1
0
0�12
�
2) (𝐴|𝑏)(2)=
�5 2 1
0−𝟖 1
0�12
−13�
3) (𝐴|𝑏)(2)=
�5 2 1
0−𝟖 1
0 0�12
−13�
1. Sisteme liniare M. Racil ă
18
42 49
)1(
22)1(
32)1(
2 )1(
3)2(
3 )1(
22)1(
23)1(
32 )1(
33)2(
33 =−= =−=aabb baaaa a
4) (𝐴|𝑏)(2)=
�5 2 1
0−𝟖1
0 09
4�12
−13
27
4�
3 Se rezolv ă sistemul liniar ob ținut sub formă
triunghiulară, echivalent cu cel inițial.
==+=++
)2(
3 3)2(
33)1(
2 3)1(
23 2)1(
221 313 2 12 111
bxabxaxabxaxaxa
11313 2 12 1
1)1(
223)1(
23)1(
2
2)2(
33)2(
3
3
axaxabxaxa bxabx
−−=−==
=−=+−=++
427
49 13 8 12 2 5
33 23 2 1
xxxxx x
1 2 3
11313 2 12 1
1)1(
223)1(
23)1(
2
2)2(
33)2(
3
3
=−−==−===
axaxabxaxa bxabx
Exerci ții propuse :
1.1.1 Să se rezolve urmă toarele sisteme liniare cu metoda lui Gauss:
1)
=−−=−+=++
2 2 27 2 22 3 2
3 2 13 2 13 2 1
x xxxx xx x x
2)
−=−=+−=++
1 22 21
2 13 2 13 2 1
x xxxxxxx
3)
=+−=+−=++
10 3x 411 3 22
3 2 13 2 13 2 1
xxx x xx xx
4)
−=+++−=+++=+++−=+++
5 2 3 42 2 2 2 31 3 2 24 3 2
4 3 2 14 3 2 14 3 2 14 3 2 1
xx x xx x x xx x xxxx x x
1. Sisteme liniare M. Racil ă
19
5)
−=+−−=++−−−=−−+=−−+
6 15 5 314 9 52 10 7 6 23 4 2 3
4 2 14 3 2 14 3 2 14 3 2 1
x x xx x xxx x x xx x x x
6)
−=+−=++=++
8 3 4 90 7 6 58 3 2
3 2 13 2 13 2 1
x x xx x xx x x
7)
=+−−=++=−+
7 4 261 2 3
3 2 13 2 13 2 1
x xxx xxx xx
8)
−=−+=+−=++
214 5 31 2
3 2 13 2 13 2 1
x xxx xxx x x
9)
=+−−=+=+
3 3 3 22 21 2
3 2 13 12 1
x x xxxxx
10)
=++=+−=++
12 49 3 26
3 2 13 2 13 2 1
xx xx xxxxx
11)
=+−−=++=++
0 26 3 27 4 2
3 2 13 2 13 2 1
x xxxx xx x x
12)
=++=+=+++=+++
2 06 3 2 22 2 3 3
3 2 14 14 3 2 14 3 2 1
x xxxxxx x xxx x x
13)
=++−−=+−=++
3 2 41 2 6 512 2 5
3 2 13 2 13 2 1
xx xx x xxx x
14)
=++=++=++
4 6 3 25 5 43 3 2
3 2 13 2 13 2 1
x x xx xxx x x
15)
=++=++=++
7 3 211 2 5 25 2
3 2 13 2 13 2 1
x x xx x xxx x
16)
=+−=++=++
1 3 4 90 7 6 57 3 2
3 2 13 2 13 2 1
x x xx x xx x x
1. Sisteme liniare M. Racil ă
20
17)
=−−=++=++
5 2 34 4 5 21 3 4
3 2 13 2 13 2 1
x x xx x xx x x
18)
=++=+−=−−
10 19 3 24 38 3
3 2 13 2 13 2 1
x x xxxxx xx
19)
=++−−=−+−=++−
5 5 21 21 2
4 3 2 14 3 2 14 3 2 1
x xx xxxx xxxx x
20)
=−+++=+++−=−+++=++++
12 3 3 4 523 6 2 22 3 2 37
5 4 3 2 15 4 3 25 4 3 2 15 4 3 2 1
xx x x xx x x xx xxx xxxxxx
21)
=+=++=++=++
2 23 3 24 4 2 31
3 13 2 13 2 13 2 1
x xx xxx x xxxx
22)
−=++−=++=++
7 5 4 21 7 7 43 3 2 2
3 2 13 2 13 2 1
x x xx x xx x x
23)
=+−−=−+=−+
8 12 35 3 6 25 2 4
3 2 13 2 13 2 1
x x xx x xxx x
24)
=++−−=−+=+−
13 4 32 4 29 3 2
3 2 13 2 13 2 1
xx xx x xx xx
25)
−==−+−=++=−++
2 26 22 29 3
44 3 14 3 24 3 2 1
xx xxxxxxx xx
26)
=++−=++−=−−+−=++−
6 7 4 7 216 4 8 2 42 7 2 10 28 2 4 2 4
4 3 2 14 3 2 14 3 2 14 3 2 1
x x x xx x x xx x x xx x x x
27)
=+−−=−+=+−
5 2x 31 210 3
3 2 13 2 13 2 1
xxxxxxx x
1. Sisteme liniare M. Racil ă
21
28)
−=−−−=++=−+
13 3x 221 5 45 3 2
3 2 13 2 13 2 1
xxx xxxx x
29)
= +=+−=−+
5 2x-31 22
3 2 13 2 13 2 1
x xxxxxxx
30)
=++=++=++
7 3x 310 3 5 24 2
3 2 13 2 13 2 1
x xx x xxx x
31)
=++=++=++
12 4x 36 211 3 3
3 2 13 2 13 2 1
xxx xxx xx
32)
= +=+−=++
3 2x-36 3 25 2
3 2 13 2 13 2 1
x xx xxxx x
33)
−=−−=−+−=++=−++
8 7 56 22 29 3
4 34 3 14 3 24 3 2 1
x xx xxxxxxx xx
34)
=++=++=−+
2 x 234
3 2 13 2 13 2 1
xxxxxxxx
35)
= −=−+=++
2 2x- 27 2 22 3 2
3 2 13 2 13 2 1
xxxx xx x x
36)
−=+−=++−=+−
2 3×4 4 26 2
3 23 2 12 1
xxx xx x
37)
= +=+−−=++−
3 4x-6 36 2 4
3 2 13 2 13 2 1
xxxx xx xx
38)
=−++−−=+−−=+−+=++
4 3 23 2 5 31 24 3
4 3 2 14 3 2 14 3 2 14 2 1
xx x xx x xxxxxxx xx
1. Sisteme liniare M. Racil ă
22
39)
=+++=+++−=+++−=+++
4 5 3 74 3 7 54 7 5 34 7 5 3
4 3 2 14 3 2 14 3 2 14 3 2 1
x x xxx xx xxx x xx x x x
40)
=++=++=++
8 x2 4 24 23
3 2 13 2 13 2 1
x xx xxxxx
41)
−=+−−=++−−−=−−+=−−+
6 15 5 314 9 52 10 7 6 23 4 2 3
4 2 14 3 2 14 3 2 14 3 2 1
x x xx x xxx x x xx x x x
42)
=++=+−=++
3 x2 5 28 411 4 2
3 2 13 2 13 2 1
x xxxxx x x
43)
=−++−=+−+=+++−=++−
6 4 3 24 2 4 36 3 2 422 4 3 2
4 3 2 14 3 2 14 3 2 14 3 2 1
xx x xx xx xx x xxx x x x
44)
=+−=−+=−−
10 x2 210 2 42 2
3 2 13 2 13 2 1
x xx x xxxx
45)
−=−+=++−−=−+
1 x4 211 4 23 4
3 2 13 2 13 2 1
x xxx xxxx
46)
=++=++=++
5 x5 2 23 4 24 4
3 2 13 2 13 2 1
x xxx xxxx
47)
=+−−=++−=−+
12 x32 32 3
3 2 13 2 13 2 1
xxxx xxxx
48)
=+++=+++=+++=+++
4 3 2 43 2 4 32 4 3 21 4 3 2
4 3 2 14 3 2 14 3 2 14 3 2 1
x x xxx xx xxx x xx x x x
1.1.2 Rezolva ți sistemul liniar următor, utilizând metoda lui Gauss, discutând în funcție de
valoarea parametrului 𝑎∈𝑹:
1. Sisteme liniare M. Racil ă
23
=+=+−=++
10 37 22 3 2
3 13 2 13 2 1
ax xx xxx x x
1.1.3 Găsiți valorile parametrului 𝑎∈𝑹, pentru care sistemul următor are un număr finit /
infinit de soluții:
=+−=−−= −
a ax axxx xxa xx
3 2 13 2 12 1
0 2
1.2 Factorizarea LR
Rămânem în același cadru al rezolvării unui sistem liniar de forma
b Ax= (1.2.1)
unde x este vectorul necunoscut, iar b este un vector dat, în funcție de problema de studiat, și
vom prezenta o altă metodă directă de rezolvare, metoda factorizării LR .
Definiție : Fie A∈R nxn . O relație de forma: A = L · R
unde L∈Rnxn este o matrice inferior triunghiulară și R ∈ Rnxn este o matrice superior
triunghiulară, se numește factorizare LR a matricii A.
Definiț ie: T∈Rnxn, nji t Tij ≤≤= ,1 ),( se numește superior (inferior) triunghiulară
dacă
) )( ,0 ( )( ,0 ji tji tij ij <∀=>∀=
Astfel, sistemul liniar (1.2.1) devine: b LRx=, echivalent cu rezolvarea a două sisteme
liniare având matricele de tip triunghiular:
b Ly= (1.2.2)
y Rx= (1.2.3)
1. Sisteme liniare M. Racil ă
24
Observație:
Sistemul (1.2.2) are soluția “intermediară” (obținută prin substituție directă) y, în timp ce
sistemul (1.2.3) posedă soluția “finală” x(obținută prin substituție inversă).
In cele ce urmează vom nota prin A k = (a ij), 1 ≤ i, j ≤ k submatricele principale de ordin k, k =
1,2, …, n ale matricii A și considerăm satisfăcută condiția:
(C1) A k, k = 1,2,…, n sunt matrici nesingulare (A 1=a11 și A n=A)
(adică toți minorii diagonali principali ai matricii A sunt diferiți de zero)
0Adet ,…,0 ,0
22 2112 11
11 ≠ ≠ ≠a aa aa
Este valabil următorul rezultat:
Teoremă : Dacă matricea A satisface condiția (C 1), atunci există o factorizare LR
a lui A, astfel încât L este nesingulară.
O factorizare LR poate fi calculată direct printr -o așa numită procedură compactă, în care
cele
n2 egalități scalare din A=LR se rezolvă succesiv în raport cu elementele necunoscute
kilik≥ , jkrkj≤ , ale matricii L , respectiv R .
Unicitatea acestei proceduri este asigurată precizând a priori elementele diagonale ale matricei
L sau elementele diagonale ale matricei R .
Astfel, există două tipuri de factorizări:
(a) factorizarea Doolittle – impunem L cu diagonala principală unitate
(b) factorizarea Croût – impunem R cu diagonala principală unitate
Vom detalia în continuare factorizarea de tip Doolittle , prezentând principalele etape de
calcul.
Pasul 1 . Fie L =
1……………11
2 121
n nlll
și R =
nnnn
rr rr rr
…………2 221 12 11
Explicitând egalitatea A = L · R, sub forma:
1. Sisteme liniare M. Racil ă
25
∑
==), min(
1ji
kkjik ij rl a , i,j = 1, 2, …, n
se ajunge la:
ij jar=1 , j = 1,2, 3, …, n→ prima linie din R
11 1 1 /rali i= , i = 2 ,3, …, n→ prima coloană din L
∑−
=−=1
1,k
hhjkh kj kj rl a r ) 2( njk≤≤≤ (1.2.4)
kkk
hhkih ik
ikrrl a
l∑−
=−
=1
1, ) 2( nik≤<≤
Observații :
(i) Condiția (C 1) asigură corectitudinea relațiilor (1.2.4), adică, n i rii ,…,1,0 , 0=≠
(ii) Orice matrice A ∈Rnn× inversabilă admite o factorizare LR, eventual după permutări
convenabile de linii și coloane.
(iii) Ordinea de calcul a elementelor matricelor L și R este importantă, succesiunea fiind, după
relațiile (1.2.4), următoarea: prima linie din R, prima coloană din L, a doua linie din R, a doua
coloană din L etc.
(iv) Se observă că elementele ( jirjilij ij <≥ , si , ) p o t f i s u p r a s c r i s e p e m ă s u r ă c e s u n t
calculate, în locul elementelor matricei A (pentru optimizarea memoriei). Astfel, matricele L
și R vor fi, după n transformări ale matricei A:
L =
1………… …11
2 121
n na aa și R =
nnnn
aa aa a a
…………
2 221 12 11
iar ob ținerea lor se face astfel :
la etapa "k" , k = 2,3,…,n se obțin : linia k din matricea R și coloana k din matricea L:
1. Sisteme liniare M. Racil ă
26
akk ak,k+1 ak,k+2 …………… akn
ak+1,k
Restul elementelor rămân neschimbate ak+2,k
.
.
.
.
ank
linia k din matricea R : a kj , j = k,k+1,…,n
a1j
a2j
.
.
.
ak-1,j
ak1 ak2 ……….. ak,k-1 akk ak,k+1 ………….. akj
𝑎𝑘𝑗→𝑎𝑘𝑗−𝑎𝑘1∙𝑎1𝑗−𝑎𝑘2∙𝑎2𝑗−⋯…−𝑎𝑘,𝑘−1∙𝑎𝑘−1,𝑗
𝑎𝑘𝑗→𝑎𝑘𝑗−�𝑎𝑘ℎ∙𝑎ℎ𝑗𝑘−1
ℎ=1
coloana k din matricea L: a ik , i = k+1,k+2,…,n
a1k
a2k
.
.
.
.
ak-1,k
akk
.
.
.
ai1 ai2 ……….. ai,k-1 aik
𝑎𝑖𝑘→(𝑎𝑖𝑘−𝑎𝑖1∙𝑎1𝑘−𝑎𝑖2∙𝑎2𝑘−⋯…−𝑎𝑖,𝑘−1∙𝑎𝑘−1,𝑘)/𝑎𝑘𝑘
𝑎𝑖𝑘→(𝑎𝑖𝑘−�𝑎𝑖ℎ∙𝑎ℎ𝑘𝑘−1
ℎ=1)/𝑎𝑘𝑘
1. Sisteme liniare M. Racil ă
27
(v) Numărul operațiilor elementare necesare pentru factorizarea LR a unei matrice A∈ Rnxn
este de ordinul n3 /3.
In urma factorizării prezentate mai înainte, sistemul (1.2.1) devine echivalent cu sistemul
LRx = b.
Pasul 2 : Se rezolvă sistemul:
1………… …11
2 121
n nl ll ·
=
n n bbb
yyy
… …21
21
prin substituție directă:
1 1by=
n kyl b yk
jj kj k k ,2 ,1
1= −=∑−
= (1.2.5)
Pasul 3 : Se rezolvă sistemul:
=
⋅
n n nnnn
yyy
xxx
rr rr r r
… … …………21
21
2 221 12 11
prin substituție inversă:
∑
+=−−= −==
n
kjkk j kj k knn n n
n nk rxr y xry x
11,…,2,1 ,/) (/
(1.2.6)
Observații :
(i) Fiecare din sistemele byL=⋅ și yxR=⋅ necesită pentru rezolvare un număr de operații
elementare de ordinul )(2nO ;
(ii) Pentru factorizarea LR – Croût formulele (1.2.4) se scriu:
1. Sisteme liniare M. Racil ă
28
1 1 i ial= , i = 1, 2, …, n→ prima coloană din L
111
1larj
j= , j = 2, 3, …, n→ prima linie din R
∑−
=−=1
1k
hhkih ik ik rl al , nik≤≤≤2 (1.2.7)
kkk
hhjkh kj
kjlrl a
r∑−
=−
=1
1, njk≤<≤2
Astfel, rezolvarea sistemului (1.2.5), respectiv (1.2.6) se face prin următoarele relații:
111
1lby=
kkk
jj kj k k l yl b y /1
1
−=∑−
=, n k ,…,3,2= (1.2.8)
și
∑
+=−−= −==
n
kjj kj k kn n
n nkxr y xy x
11,…,2,1 , (1.2.9)
Exemplificarea algoritmului pentru n = 4:
Iată, spre exemplu, etapele intermediare pentru factorizarea unei matrici cu 4 linii și 4
coloane.
A 1 1 3 -1
0 2 1 1
1 0 1 -2
0 0 -5 -7
1. Sisteme liniare M. Racil ă
29
linia 1 din R 1 1 3 -1
coloana 1 din L 0 2 1 1
1 0 1 -2
0 0 -5 -7
linia 2 din R 1 1 3 -1
coloana 2 din L 0 2 1 1
1 -0,5 1 -2
0 0 -5 -7
linia 3 din R 1 1 3 -1
coloana 3 din L 0 2 1 1
1 -0,5 -1,5 -0,5
0 0 3,33 -7
linia 4 din R 1 1 3 -1
coloana 4 din L 0 2 1 1
1 -0,5 -1,5 -0,5
0 0 3,33 -5,33
și rezolvarea sistemului, cu soluția intermediară și soluția finală:
soluția
soluția
verificare
intermediară finală
Ax=b
b y x Ax
9 9 1 9
-2 -2 -2 -2
6 -4 3 6
-8 5,33 -1 -8
1. Sisteme liniare M. Racil ă
30
Pentru cazul pivotului nul, iat ă un exemplu de calcul detaliat :
….. și un alt exemplu detaliat…..
1. Sisteme liniare M. Racil ă
31
Algoritm LR (Doolittle) pentru pivot nenul:
Pas Algoritm
Citire: matricea A & vectorul termenilor liberi b:
𝑎𝑖𝑗, 𝑖=1,2,…,𝑛 𝑗=1,2,…,𝑛
𝑏𝑖,𝑖=1,2,…,𝑛
1. Prima linie din R Se copiaz ă prima linie din matricea A
2. Prima coloan ă din L 𝑎𝑖1=𝑎𝑖1
𝑎11,𝑖=2,…,𝑛
3. La fiecare etap ă "k" (k =
2,…,n) se determină linia "k"
din R (akj, j=k,k+1,…,n) &
coloana "k"din L (aik,
i=k+1,k+2,…,n)
Obs: Elementele matricelor R și
L se suprapun peste elementele
matricei A pe m ăsură ce
acestea sunt calculate. pentru k = 2,…,n // la fiecare etapa "k"
{pentru j = k,k+1,…,n // elementele liniei "k" din R
{ S = 0;
pentru h = 1,2,…,k -1
𝑆=𝑆+𝑎𝑘ℎ∙𝑎ℎ𝑗;
𝑎𝑘𝑗=𝑎𝑘𝑗−𝑆;
}
pentru i = k+1,k+2,…,n // elementele coloanei "k" din L
{ S = 0;
1. Sisteme liniare M. Racil ă
32
pentru h = 1,2,…,k -1
𝑆=𝑆+𝑎𝑖ℎ∙𝑎ℎ𝑘;
𝑎𝑖𝑘=(𝑎𝑖𝑘−𝑆)/𝑎𝑘𝑘;
}
}
4. Se rezolv ă sistemul
intermediar
Ly = b prin substitu ție directă 𝑦1=𝑏1 ; // soluția intermediară yi, i = 1,2,…,n
pentru i = 2,3,…,n
{ S = 0;
pentru j = 1,2,…,i -1
𝑆=𝑆+𝑎𝑖𝑗∙𝑦𝑗;
𝑦𝑖=𝑏𝑖−𝑆;
}
5. Se rezolv ă sistemul final
Rx = y prin substitu ție inversă 𝑥𝑛=𝑦𝑛/𝑎𝑛𝑛 ; // soluția finală xi, i = n,n -1,n-2,…,1
pentru i = n-1,n-2,…,1
{ S = 0;
pentru j = i+1,i+2,…,n
𝑆=𝑆+𝑎𝑖𝑗∙𝑥𝑗;
𝑥𝑖=(𝑦𝑖−𝑆)/𝑎𝑖𝑖;
}
Afișa re: vectorul solu ție x:
𝑥𝑖,𝑖=1,2,…,𝑛
Obs: Pentru economie de
memorie, se poate lucra cu
matricea extinsă (A|b), în care,
pe coloana n+1 se introduc
termenii liberi, ea putând fi
utilizată apoi și pentru stocarea
soluției intermediare și a celei
finale. În această situație, se vor înlocui la pașii 4 și 5:
𝑏𝑖=𝑎𝑖,𝑛+1,𝑖=1,2,…,𝑛
𝑦𝑗=𝑎𝑗,𝑛+1,𝑗=1,2,…,𝑛
𝑥𝑗=𝑎𝑗,𝑛+1,𝑗=1,2,…,𝑛
Pentru situația pivotului nul, consultați cartea domnului Conf. Univ. Dr. Romulus Militaru :
R. Militaru, M. Popa, Metode numerice în pseudocod. Aplicații, Ed. Sitech, 2013
Exerci ții propuse :
1.2.1 Să se rezolve următoarele sisteme liniare cu metoda factorizării LR:
a)
−=+−=++−=+−
2 3 4 4 26 2
3 23 2 12 1
x xxx xx x
b)
=−+=+−−=++−
3 46 36 2 4
3 2 13 2 13 2 1
x xxxx xx xx
1. Sisteme liniare M. Racil ă
33
c)
=++=++=+
2 23 4 –
3 2 13 2 13 2 1
xxxxxxxxx
d)
=−++−−=+−−=+−+=++
4 3 23 2 5 31 24 3
4 3 2 14 3 2 14 3 2 14 2 1
xx x xx x xxxxxxx xx
e)
=+++=+++−=+++−=+++
4 5 3 74 3 7 54 7 5 34 7 5 3
4 3 2 14 3 2 14 3 2 14 3 2 1
x x xxx xx xxx x xx x x x
f)
−=−−=−+−=++=−++
8 7 5 6 2 2 2 9 3
4 34 3 14 3 24 3 2 1
x xx x xxxxxx xx
g)
=++−=++−=−−+−=++−
6 7 4 7 216 4 8 2 42 7 2 10 28 2 4 2 4
4 3 2 14 3 2 14 3 2 14 3 2 1
x x x xx x x xx x x xx x x x
h)
−==−+−=++=−++
2 2 6 2 2 2 9 3
44 3 14 3 24 3 2 1
xx x xxxxxx xx
Rezolvați exercițiile de la 1.1.1 și cu metoda factorizării LR.
1.2.2 Fie sistemele liniare:
=+++=+++=+++=+++
4 3 2 43 2 4 32 4 3 21 4 3 2
4 3 2 14 3 2 14 3 2 14 3 2 1
x x xxx xx xxx x xx x x x
=+++=+++=+++=+++
10 3 2 410 2 4 310 4 3 210 4 3 2
4 3 2 14 3 2 14 3 2 14 3 2 1
x x xxx xx xxx x xx x x x
1) Rezolvați aceste sisteme prin metoda lui Gauss. 2) Factorizați matricea A (comună celor două sisteme ) și apoi rezolvați sistemele.
3) Calculați det A
4) Calculați A
-1
1.2.3 Să se rezolve următoarele sisteme liniare cu metoda factorizării LR:
1. Sisteme liniare M. Racil ă
34
a)
=−=−−= −
3 36 27- 3 3 18 13 23 7 – 5
3 2 13 2 13 2 1
x x xx x xx x x
b)
−=−=−−= −
3 36 27- 3 0 18 13 26 7 – 5
3 2 13 2 13 2 1
x x xx x xx x x
c)
=−=−−= −
6 36 27- 3 3 18 13 20 7 – 5
3 2 13 2 13 2 1
x x xx x xx x x
1.3 Rezolvarea numerică a sistemelor liniare prin metode iterative
Metodele directe de rezolvare a sistemelor liniare furnizează soluția exactă a sistemului
bxA=⋅ într-un număr finit de operații. Dacă dimensiunea matricii A este foarte mare, atunci
numărul operațiilor va fi de asemenea mare, iar rezultatul va fi în consecință inexact, timpul de calcul crescând considerabil.
In aceasta situație, este de preferat a s e utiliza metode iterative pentru aproximarea
soluției sistemului ce trebuie rezolvat.
Metodele Jacobi și Seidel – Gauss
Ideea acestor metode este de a aproxima soluția sistemului liniar
bxA=⋅ , construind un șir
de vectori
x(0) → x(1) → x(2) → …….
x(0) fiind vectorul inițial, șir ce va converge către soluția exactă xa sistemului.
Teorema de punct fix a lui Banach
Definiție: Fie (X,
d) un spațiu metric. Aplicația T : X → X se numește contracție
dacă există )1,0(∈q astfel încât ∈∀ yx,)( X, ),( ))(),(( yxdq yTxTd ≤ ( 1.3.1)
Definiție: x* se numește punct fix pentru aplicația T dacă T(x*)=x*.
Observație: q se numește coeficient de contracție.
1. Sisteme liniare M. Racil ă
35
Teorema de punct fix: Dacă T este o contracție de coeficient q, pe spațiul metric
complet (X,d), atunci, pentru orice aproximare inițială x(0)șirul )1(+nx =T )()(nx , n=0,1,2, …
este convergent la o soluție *x a ecuației x=T )(x. Această soluție este unică în X și are loc
estimarea :
),(* )(xxdn≤ ),(1)0( )1(xxdqqn
−, n∈N* (1.3.2)
In cele ce urmează, pentru rezolvarea sistemului bxA=⋅ , vom defini T: Rn→Rn prin :
T)(x=y (1.3.3)
unde
− −= ∑∑
+=−
=n
ijjiji
jj ij i
iii xa ya bay
11
11, i = 1,2−n
−=∑
=n
jjjxa bay
21 1
1111 (1.3.4)
−=∑−
=11 1n
jj nj n
nnn ya bay
Observații :
(i) Aplicația Tpoate fi definită dacă diagonala principală este constituită din elemente nenule
( 0≠iia , i=1,2,…, n);
(ii) Aplicația d: Rn x Rn→R definită prin ),(yxd = j jnjyx−
≤≤1maxnRyx∈, , este o distanță
(metrică) în Rn .
(Rn,d) este un spațiu metric complet.
Teoremă: Dacă este îndeplinită condiția următoare: ∑
≠=>n
ij1jij ii a a , (∀) i = n,1
( 1.3.5)
1. Sisteme liniare M. Racil ă
36
atunci aplicația T dată prin (1.3.3) și (1.3.4) este o contracție de coeficient
iin
ijjij
ni aa
q∑
≠=
≤≤=1
1max
In consecință, considerând )0(x∈Rn vom construi șirul aproximațiilor (iterațiilor) succesive :
)1(+nx = )()(nxT , n = 0, 1, 2, ….
unde T este contracția definită mai înainte.
Teorema precedentă asigură faptul că x* = )(limn
nx
∞→este singurul punct fix al lui T.
Egalitatea T(x*) = x* devine:
* * * 1
i
ij ijjij jij i
iix xa xa ba=
−−∑∑
< >, i = n,1
adică, Ax* = b sau,echivalent, x* este soluția sistemului inițial.
Metoda Seidel – Gauss:
Sirul de vectori)1(+kx , k = 0, 1, 2, … este dat prin relațiile:
− −=∑∑−
= +=+ +1
1 1)( )1( )1( 1i
jn
ijk
jijk
jij i
iik
i xa xa bax , i = 1n,2−
−=∑
=+n
jk
jjkxa b
ax
2)(
1 1
11)1(
11,
−=∑−
=+ +1
1)1( )1( 1n
jk
j nj n
nnk
n xa bax
nx R)0(∈ , oarecare (1.3.6)
Observație: Se observă că iterația "nouă" folosește iterații "vechi", numai dacă nu
există iterații noi calculate.
Metoda Jacobi :
Construcția șirului)1(+kx , k = 0,1,… se face astfel :
−=∑
≠=+n
ijjk
jij i
iik
ixa bax
1)( )1( 1, i = n,1; )0(x∈Rn oarecare (1.3.7)
1. Sisteme liniare M. Racil ă
37
Observații : 1)Se observă că iterația "nouă" folosește toate componentele iterației
"vechi", astfel formula fiind mai simplă ; totuși, metoda Jacobi este mai lent convergentă decât
metoda Seidel -Gauss, în aceleași condiții inițiale 𝑥(0),𝜀.
2) Dat fiind că aceste metode sunt iterative, deci soluția exactă a sistemului liniar de rezolvat
este limita unui șir de iterații kkx)()(, aceste iterații se opresc pentru un anume indice 0k.
Putem utiliza drept criteriu de oprire : ε≤−+ )( )1( k kx x sau
ε≤−
++
)1()( )1(
kk k
xx x
ε fiind precizia impusă și ║· ║ o normă în Rn. Dacă una din aceste condiții este satisfăcută
pentru un anume indice k, atunci)1(+≅kxx .
3) Utilizând relația (1.3.2)
ε≤−),(1)0( )1(xxdqqk
putem determina indicele kîn funcție de q, astfel încât)(kxx≅ cu precizia ε.
Teoreme de convergență
Definiție: Spunem că o metodă este convergentă dacă pentru orice vector inițial )0(x,
șirul,…1,0)()(=kkx converge la soluțiaexactă xa sistemului Ax=b .
Definiție: Spunem că matricea A=(a ij), nji≤≤,1 este diagonal strict dominantă pe linii
dacă
∑
≠=>n
ijjij ii a a
1, (∀) i = n,1
respectiv diagonal dominantă pe linii dacă
∑
≠=≥n
ijjij iia a
1, (∀) i = n,1
Dacă ∑
≠=>n
ikkki iia a
1, (∑
≠=≥n
ikkki iia a
1), (∀) i = n,1atunci matricea Aeste diagonal strict
dominantă pe coloane (dominantă pe coloane).
Avem următoarele criterii de convergență :
1. Sisteme liniare M. Racil ă
38
Teoremă: Dacă matricea A este diagonal strict dominantă pe linii sau coloane,
atunci metodele iterative Gauss –Seidel și Jacobi sunt convergente.
Teoremă: Dacă matricea A este simetrică și diagonal strict dominantă, atunci metoda
iterativă Jacobi converge.
Teoremă: Dacă matricea A este simetrică și pozitiv definită, atunci metoda iterativă Gauss –
Seidel converge.
Teoremă: Dacă matricea A este diagonal dominantă pe linii sau coloane, și cel puțin pe o
linie sau pe o colană este strict dominantă, atunci metodele itera tive Gauss –Seidel și Jacobi
sunt convergente.
Exemplificarea formulelor pentru n = 4:
Fie matricea sistemului sub forma generală:
𝐴=�𝑎11𝑎12
𝑎21𝑎22 𝑎13𝑎14
𝑎23𝑎24
𝑎31𝑎32
𝑎41𝑎42 𝑎33𝑎34
𝑎43𝑎44�
Formulele (1.3.6) – Seidel -Gauss , devin:
− −=∑∑−
= +=+ +1
14
1)( )1( )1( 1i
j ijk
jijk
jij i
iik
i xa xa bax , i=2, 3
−=∑
=+4
2)(
1 1
11)1(
11
jk
jjkxa b
ax ,
−=∑
=+ +3
1)1(
4 4
44)1(
41
jk
jjkxa bax
sau, explicit:
⎩⎪⎪⎨⎪⎪⎧𝑥1(𝑘+1)=1
𝑎11(𝑏1− 𝑎12𝑥2(𝑘)−𝑎13𝑥3(𝑘)−𝑎14𝑥4(𝑘))
𝑥2(𝑘+1)=1
𝑎22(𝑏2−𝑎21𝑥1(𝑘+1)−𝑎23𝑥3(𝑘)−𝑎24𝑥4(𝑘))
𝑥3(𝑘+1)=1
𝑎33(𝑏3−𝑎31𝑥1(𝑘+1)−𝑎32𝑥2(𝑘+1)−𝑎34𝑥4(𝑘))
𝑥4(𝑘+1)=1
𝑎44(𝑏4−𝑎41𝑥1(𝑘+1)−𝑎42𝑥2(𝑘+1)−𝑎43𝑥3(𝑘+1))k=0, 1, 2, ….
Se calculează cu aceste formule 𝑥
(1),𝑥(2),……, plecând de la un vector 𝑥(0) dat, până când
diferența între două astfel de iterații este s uficient de mică (eroarea 𝜀 dată).
Formulele (1.3.7) – Jacobi , devin:
1. Sisteme liniare M. Racil ă
39
−=∑
≠=+4
1)( )1( 1
ijjk
jij i
iik
ixa bax , i = 4,1
sau, explicit:
⎩⎪⎪⎨⎪⎪⎧𝑥1(𝑘+1)=1
𝑎11(𝑏1− 𝑎12𝑥2(𝑘)−𝑎13𝑥3(𝑘)−𝑎14𝑥4(𝑘))
𝑥2(𝑘+1)=1
𝑎22(𝑏2−𝑎21𝑥1(𝑘)−𝑎23𝑥3(𝑘)−𝑎24𝑥4(𝑘))
𝑥3(𝑘+1)=1
𝑎33(𝑏3−𝑎31𝑥1(𝑘)−𝑎32𝑥2(𝑘)−𝑎34𝑥4(𝑘))
𝑥4(𝑘+1)=1
𝑎44(𝑏4−𝑎41𝑥1(𝑘)−𝑎42𝑥2(𝑘)−𝑎43𝑥3(𝑘))k=0, 1, 2, ….
Exemplu :
Să se aproximeze (cu eroarea 2103−⋅=ε ) soluția sistemului liniar următor, utilizând
metoda iterativă a lui Jacobi:
=++=++=+−
13 5 33 2 5 28 4
3 2 13 2 13 2 1
x x xx x xxxx
Soluție: Avem :
−
=
53125211 4
A ;
=
1338
b
Observăm că
+>+>+−>
31522 511 4
adică matricea A este diagonal strict dominantă pe linii și deci
metoda Jacobi converge către soluția exactă a sistemului.
Scriind formulele (1.3.7) pentru n = 3 , obținem :
( )
( )
( )
−−=−−=−+=
+++
)(
2)(
1)1(
3)(
3)(
1)1(
2)(
3)(
2)1(
1
3 13512 2351841
k k kk k kk k k
x x xx x xx x x
k=0,1,…
Alegând vectorul inițial x(0)=(0;0;0)t obținem iterațiile următoare:
1. Sisteme liniare M. Racil ă
40
x(1)=(2;0.6;2.6)t;x(2)=(1,50; -1,240;1,840)t;x(3)=(1,230; -1,130;2,8440)t;x(4)=(1,0050; –
1,02960;3,03560)t ; x(5)=(0,9837; -1,01624;3,01676)t
Evaluăm diferența:
ε<=− =−
≤≤021.0 max)4( )5(
3 1)4( )5(
i iix x x x
Atunci, aplicând criteriul de oprire, concluzionăm că soluția exactă poate fi aproximată de
x
(5), cu eroarea ε.
Exemplu : Aproximați soluția sistemului următor prin metoda Seidel- Gauss, cu eroarea
3103−⋅=ε :
=−+=+−=++
3 46 30 2 4
3 2 13 2 13 2 1
x xxxx xx xx
Soluție:
𝐴=�4 1 2
1−3 1
1 1−4�;
=
360
b
Cum matricea A este diagonal strict dominantă pe linii, metoda converge către soluția exactă a sistemului. Alegem ca vector inițial x
(0)=(0;0;0)t.
Utilizând relațiile (1.3 .6) pentru n = 3 , obținem:
⎩⎪⎨⎪⎧𝑥1(𝑘+1)=1
4(0 − 𝑥2(𝑘)−2𝑥3(𝑘))
𝑥2(𝑘+1)=1
−3(6−𝑥1(𝑘+1)−𝑥3(𝑘))
𝑥3(𝑘+1)=1
−4(3−𝑥1(𝑘+1)−𝑥2(𝑘+1))k=0, 1, 2, ….
de unde :
x(1)=(0; – 2; -1,25)t, x(2)=(1,125; – 1,9583; – 0,9583)t,
x(3)=(0.9687; – 1,9965; – 1.0069)t, x(4)=(1,0025; – 2,0014; – 0,9997)t,
x(5)=(1,0002; – 1,9995; – 0,9998)t.
Evaluăm diferența:
ε<=− 0023,0)4( )5(x x și concluzionăm că soluția exactă poate fi
aproximată de x(5), cu eroarea ε. Așadar, )5(xx≅ .
1. Sisteme liniare M. Racil ă
41
Algoritm metoda Jacobi:
Pas Algoritm
Citire: matricea A & vectorul termenilor liberi b:
𝑎𝑖𝑗, 𝑖=1,2,…,𝑛 𝑗=1,2,…,𝑛
𝑏𝑖,𝑖=1,2,…,𝑛
𝜀 – precizia impus ă
itmax– numărul maxim de iterații
x – aproximarea inițială a soluției
Se calculeaz ă iterațiile, până la
obținerea soluției aproximative
„satisfăcătoare” în raport cu
eroarea dată 𝜺. it = 0;
repet ă
{
max = 0 ;
pentru i = 1,2,…,n
{
S = 0;
pentru j = 1,2,…,n
dacă(𝑗≠𝑖)
𝑆=𝑆+𝑎𝑖𝑗∙𝑥𝑗 ;
𝑦𝑖=(𝑏𝑖−𝑆)
𝑎𝑖𝑖 ;
dacă(𝑚𝑎𝑥 <|𝑦𝑖−𝑥𝑖|)
𝑚𝑎𝑥 =|𝑦𝑖−𝑥𝑖|) ;
}
pentru i = 1,2,…,n
𝑥𝑖=𝑦𝑖 ;
it = it + 1 ;
}
până când ((𝑚𝑎𝑥≤𝜀)𝑠𝑎𝑢 (𝑖𝑡>𝑖𝑡𝑚𝑎𝑥));
Afișa re: vectorul solu ție x:
𝑥𝑖,𝑖=1,2,…,𝑛
Obs: 1) it este o variabil ă ce numără iterațiile; ea nu poate depăși numărul maxim de iterații,
itmax.
2) În vectorul x se stochează inițial aproximația inițială a soluției, apoi iterația veche și soluția
finală .
3)Vectorul y reprezintă iterația nouă a soluției.
4) max este variabila ce calculeazăi iniyx−
≤≤1max
Temă: Introduceți în program verificarea dominanței diagonale a matricei A.
Pentru algoritmul metodei Seidel- Gauss, consultați cartea domnului Conf. Univ. Dr.
Romulus Militaru : R. Militaru, M. Popa, Metode numerice în pseudocod. Aplicații,
Ed. Sitech, 2013
1. Sisteme liniare M. Racil ă
42
Exerci ții propuse :
1.3.1 Se consideră sistemul liniar :
=+−=−+−= −
2 4 6 42 4
3 23 2 12 1
x xxx xxx
Să se scrie primele patru iterații obținute aplicând metoda lui Jacobi, respectiv Gauss -Seidel,
precizând și eroarea.Ce observați ?
1.3.2 Considerăm sistemul liniar :
=+−−=+−−=−−=− −
21 41
4121 41
4121
41
41 21
41 41
4 2 13 2 14 3 24 2 1
x x xxx xx x xx x x
Utilizând metoda lui Jacobi, respectiv Gauss –Seidel, aproximați soluția exactă a sistemului cu
cea de a treia iterație. Utilizați ca vector inițial x(0)=(0;0;0)t. Ce observați ?
1.3.3 Fie sistemul liniar :
=++=++=++
42 4 5,0 253 3 5,6 320 2 2 5
3 2 13 2 13 2 1
x x xx x xx x x
Aproximați soluția exac tă a sistemului prin metoda Seidel -Gauss, cu eroarea 510−=ε ,
utilizând ca vector inițial tx )0;0;0()0(= și criteriul de oprire ε≤−+ )( )1( k kx x .
1.3.4 Se consideră sistemul liniar :
=++= +−=++
9 4 2 2 24 2 4
3 2 12 13 2 1
x x xx xxx x
1. Sisteme liniare M. Racil ă
43
Să se scrie primele patru iterații obținute aplicând metoda lui Jacobi, respectiv Gauss -Seidel,
precizând și eroarea.
1.3.5 Fie sistemul liniar :
=++=+=++
6 6 2 0 4 212 6
3 2 12 13 2 1
x x xx xxxx
1) Aproximați soluția exactă a sistemului prin metoda Jacobi , cu 3 iterații, utilizând ca vector
inițial
tx )2;2;2()0(=
2) Aproximați soluția exactă a sistemului prin metoda Seidel- Gauss , cu 3 iterații, utilizând ca
vector inițial tx )2;2;2()0(=
3) Rezolvați sistemul cu metoda lui Gauss .
4) Rezolvați sistemul cu me toda factorizării LR .
1.3.6 Dați o condiție suficientă pentru parametrul 𝛼∈𝐑, astfel încât metodele Jacobi si
Seidel -Gauss să conveargă pentru rezolvarea unui sistem asociat matricei :
𝐴=�𝛼 01
0𝛼 0
10𝛼�
1.3.7 Dați o condiție suficientă pentru parametrul 𝛼∈𝐑, astfel încât metodele Jacobi si
Seidel -Gauss să conveargă pentru rezolvarea unui sistem asociat matricei :
𝐴=�𝛼 0𝛾
0𝛼𝛽
0𝛿𝛼�,𝛼,𝛽,𝛾,𝛿∈𝐑
1.3.8 Aplicați metodele Jacobi, Seidel -Gauss , apoi Gauss, pentru sistemele următoare :
�10𝑎 +𝑏=11
2𝑎+10𝑏 =12 și �2𝑎+10𝑏 =12
10𝑎 +𝑏=11
Pentru fiecare dintre metode și sisteme se vor preciza noțiunile teoretice utilizate, convergența, respectiv nonconvergența metodei, calculând primele 3 iterații pentru metodele
iterative și utilizând ca vector inițial
tx )0;0()0(= . Ce observați ?
1.3.9 Fie matricea:
𝐴=�4−1−1
−1 3−1
−1−1 4�
1) Metoda Jacobi este convergent ă pentru această matrice ?
2) Construiți matricele L și R ale factorizării LR pentru matricea A .
1.3.10 Fie sistemele liniare:
1. Sisteme liniare M. Racil ă
44
=++=++=++
10 4 3 310 3 4 310 3 3 4
3 2 13 2 13 2 1
x x xx x xx x x
și
=++=++=++
6 46 46 4
3 2 13 2 13 2 1
x xxxx xxxx
1) Amintiți o condiție suficientă de convergență pentru metodele Jacobi și Seidel -Gauss .
Amintiți o altă condiție suficientă de convergență pentru metoda Seidel -Gauss (dar nu și
pentru Jacobi). Sistemele de mai sus verifică aceste condiții ?
2) Scrieți metodele Jacobi și Seidel -Gauss pentru aceste două sisteme.
3) Pentru fiecare dintre metode și sisteme se vor preciza noțiunile teoretice utilizate,
convergența, respectiv nonconvergența metodei, calculând primele 3 iterații și utilizând ca
vector inițial tx )0;0;0()0(= .
4) Pentru fiecare sistem s e vor compa ra rezultatele cu soluțiile exacte, obținute cu metoda lui
Gauss. Ce observați ?
1.3.11 Aproximați soluțiile exact e ale sistemelor de mai jos, prin metoda Seidel -Gauss /Gauss ,
cu erorile precizate pentru fiecare caz:
a)
−=−+=++−−=−+
1 4 211 4 23 4
3 2 13 2 13 2 1
x x xxx xxxx
2103−⋅=ε
b)
=−+−−=+−=−+
6 66 33 3
3 2 13 2 13 2 1
x xxxx xxxx
2103−⋅=ε
c)
=+−−=++−=−+
12 32 32 3
3 2 13 2 13 2 1
x xxxx xxxx
210−=ε
d)
=+−−=−+−=−−
8 107 2 106 2 2 10
3 2 13 2 13 2 1
x xxx x xx x x
2103−⋅=ε
e)
=++−=++−=−+
4 33 33 3
3 2 13 2 13 2 1
x xxxx xxxx
210−=ε
f)
=++=++=++
5 5 2 23 4 24 4
3 2 13 2 13 2 1
x x xxx xxxx
2103−⋅=ε
g)
=+−=−+−=−
6 10 27 2 109 10
3 23 2 12 1
x xx x xxx
2105−⋅=ε
1. Sisteme liniare M. Racil ă
45
1.4 Calculul determinanților. Inversarea matricelor
Calculul determinanților. Metoda lui Chio (condensarea pivotală)
Metoda lui Chio este metoda cea mai eficientă pentru calculul numeric al unui
determinant de ordin mare. Ea constă în evaluarea fiecărui element al determinantului prin intermediul unui determinant de ordin doi.
Astfel, dacă
D =
nn n nnn
a a aa a aa a a
…… … … ………
2 12 22 211 12 11
,
el devine :
D =
2
111
−na
nn nn
n n n nnnnn
a aa a
a aa a
a aa aa aa a
a aa a
a aa aa aa a
a aa a
a aa a
11 11
3 113 11
2 112 113 311 11
33 3113 11
32 3112 112 211 11
23 2113 11
22 2112 11
…… … … ………
Observații :
(i) Dacă a11=0 atunci se permută între ele două linii (două coloane) ale determinantului, astfel
încât să găsim un i=2,… npentru care a i10≠(respectiv a1i0≠), schimbând evident semnul
determina ntului ;
(ii) Aplicăm succesiv procedeul de mai inainte, astfel încât vom obține la final un determinant
de ordin trei, doi sau unu.
Metoda lui Gauss
Ideea de bază a metodei este de a transforma determinantul dat într -un determinant
triunghiular superior sau inferior.
Fie D =
nn n nnn
a a aa a aa a a
…… … … ………
2 12 22 211 12 11
Algoritmul este următorul :
1. Sisteme liniare M. Racil ă
46
Primul pas: Fie a110≠ (îl numim pivot ). Prima linie a lui D rămâne neschimbată, în timp ce
liniile următoare își schimbă elementele după relațiile :
1111 )1(·
aaaa aj i
ij ij−= , i = n,2, j = n,1
Observație:
(i) Dacă a 11=0 atunci se permută între ele două linii (două coloane) a le lui D, astfel încât să
găsim un i=2,… n pentru care a i10≠(respectiv a 1i0≠), schimbând evident semnul
determinantului .
Al doilea pas: Considerăm 0)1(
22≠a pivot ,prima linie și prima coloană rămân aceleași . A doua
linie rămâne neschimbată, iar celelalte linii vor fi calculate cu relațiile :
)1(
22)1(
2)1(
2 )1( )2(·
aaaa aj i
ij ij−= , i = n,3, j = n,2
În general , la etapa k, considerăm )1(−k
kka ca pivot )0 ()1(≠−k
kka . Linia pivotului, precum și
liniile și coloanele anterioare rămân neschimbate.Liniile următoare se vor calcula în felul
următor :
kkk
kjk
ik k
ijk
ijaa aa a)1()1(
)1( )(·−−
−−= , i = n k,1+ , j = n k,1+ , k = 1,1−n
Dupăn-1 etape se obține :
D =
)1()1( )1()1(
2)1(
2)1(
221 1 12 11
… 0 …0 0… … … … … …… …0 0… … … … … …… … 0… …
−− −
n
nnj
jnj
jjn jn j
aa aa a aa a a a
și în consecință D = ∏
=−−n
ii
iiNPa
1)1()1( , unde, prin notație 11)0(
11 a a= iarNPeste numărul total de
permutări de linii și/sau coloane efectuate.
1. Sisteme liniare M. Racil ă
47
Observație:
Metode rapide pentru calculul unui determinant pot fi construite utilizând tehnica factorizării
unei matrice. Spre exemplu, în cazul factorizării LR Doolitle vom avea D = det R , iar în cazul
factorizării LR Croût : D = det L .
Calcul ul inversei unei matrice
Metoda lui Gauss
Fie A∈Rnxn , inversabilă. Dacă , pentru k=1,2,…, n, fixat, cu a kk0≠ aplicăm formulele :
≠== −===
kinkjn iaaaa ankjaaa
kkkj ik
ij ijkkkj
kj
; 2, ; ,1 ,·2, ,
cu ai,n+j =
≠=
ji 0ji 1 , i = n,1, j = n,1 asupra matricei extinse (A,I n), atunci obținem o matrice
echivalentă, matricea (In, A-1).
Observație:
Dacă există un k=1,2,…, n cu akk=0, a tunci permutăm liniile i și k, astfel încât a ik0≠,
i=1,2,…, n, i≠k.
Metoda iterativă
Fie A∈Rnxn, inversabilă . Algoritmul metodei este următorul :
1. Notăm cu A1 = a 11⇒
111
11
aA=−. Dacă a11 = 0, atunci rămâne valabilă observația de mai
înainte a metodei lui Gauss.
2. Pentru k = n,2, notăm cu A k =
−
α vu Anot
a aa a
k
kk kk
1
11 11
……………
șialegem 1
kA−de forma
=−
βyxBAk1.
Folosind A k · 1−
kA= Ik , calculăm β,,,yxB cu relațiile:
1. Sisteme liniare M. Racil ă
48
u vAk1
11
−
−−=αβ ; uA xk1
1−
−−=β ; ββxyAB vA yk k += −=−
−−
−1
11
1;
3. A-1 =1−
nA , ceea ce înseamnă că pentru k = nobținem inversa matricei A.
Exemple :
1. Găsiți, folosid metoda lui Chio,valoarea determinantului :
2 1012 1211 1121 113
−−
=D
Soluție :
D=231
211 3
1113
01132 11 3
1113
2113121 3
1213
1213
−−−−
=
7215 25511
91
−−=
=
7151
21115 551
2511
91
−−−= 12 330 3
91−− = 6
2. Utilizând metoda lui Gauss, determinați valoarea determinantului:
1 2 34 2 1 4 3 3 4 124 3 21
−−−−− −=D
Soluție :
1. Sisteme liniare M. Racil ă
49
=
−−−=
−−−−−−=
6 12 0012 6 0011 2 504 3 21
17 14 5 010 10 10 011 2 5 04 3 2 1
D
900)30()6(51
30 00012 6 0011 2504 321
=−⋅−⋅⋅=
−−=
3. Găsiți inversa matricei următoare , prin metoda lui Gauss :
=
231310121
A
Soluție :
≈
−−−− −
≈≈
−≈
=
11 1|2 0001 0|31002 1|5 01
101|110010|310001|121
100|231010|310001|121
),(3IA
⇒ =
−−−−
≈−),(
2/1 2/1 2/1|1002/32/1 2/3|0102/5 2/1 2/7|001
1
3AI
−−−−
=−
2/1 2/1 2/12/32/1 2/32/5 2/1 2/7
1A
4. Găsiți inversa matricei următoare, prin metoda iterativă:
−=
123112001
A
Soluție :
1. Sisteme liniare M. Racil ă
50
−==+=−=−==−==−=
=≠−
=
==⇒=
− − −−
−−−−
1201 ; 1 ; 2 ; 0 ; 11 ; 0 ; 12011 1
1
2
111 1
1 11
111 111
11 1
11
11 11
1 11 1 1
211
11 1
1 11 1
21
1 1
AyxA B Av yuA xuAv yx BAuAvvuAAA A
βββαββαα
()
1 1
32 2 2 22 22 2 1
3
2 22 2
3
1 2711 50 0 11 501 ; 27 ; 10 ; 1123112001
− −−
=
− −−=⇒
−= −=
=−=
=⇒
=
−=
A AB y xyx BAvu AA
ββ α
2. Ecua ții și sisteme de ecua ții neliniare M. Racil ă
51
2. Ecua ții și sisteme de ecua ții neliniare
Obiective: * cunoașterea metodei lui Newton de rezolvare a unei ecuații
neliniare și/sau a unui sistem neliniar
*cunoașterea metodei lui Bairstow pentru determinarea rădăcinilor polinoamelor
Fie →],[:baf R și ecuația 0)(=xf . Căutăm soluțiile (rădăcinile) acestei ecuații (adică
𝑥∗∈[𝑎,𝑏] ce satisface 𝑓(𝑥∗)=0).
In ipotezeleurmătoare :
(1) fcontinuăpe ],[ba
(2) 0)()(<⋅bfaf
funcția
fposedă cel puțin o rădăcină în intervalul ],[ba.
2.1 M etoda lui Newton
Dacă funcția f satisface în plus condiția f derivabilă, cu derivata nenulă pe un interval ce
conține o soluție a ecuației f(x) = 0 , se poate construi soluția aproximată a ecuației date,
iterativ, astfel :
alegem un punct x0 inițial în intervalul ce conține o soluție a ecuației date
presupunem xn-1 construit si determinăm pe xn ca fiind abscisa intersecției dintre
tangenta la graficul funcției f în punctul (xn-1,f(x n-1)) și axa Ox
Această tehnică se mai numește și metoda tangentei.
Reamintim că ecuația tangentei la graficul funcției f într -un punct (x0,f(x 0)) este dată de :
y – f(x 0) = f’(x 0) (x – x0)
Așadar, ecuația tangentei la graficulf uncției f în punctul (xn-1,f(x n-1)) va fi :
y – f(x n-1) = f’(x n-1) (x – xn-1)
iar intersecția acesteia cu axa Ox se obține făcând y = 0 în relația anterioară. Obținem :
– f(x n-1) = f’(x n-1) (x n – x n-1)
de unde : 𝑥𝑛=𝑥𝑛−1−𝑓(𝑥𝑛−1)
𝑓′(𝑥𝑛−1),n = 1, 2, ….
Următoarea teoremă asigură existența și unicitatea soluției ecuației f(x) = 0 în situația
îndeplinirii anumitor ipoteze.
2. Ecua ții și sisteme de ecua ții neliniare M. Racil ă
52
Teoremă: Fie funcția →],[:baf R de două ori derivabilă, cu următoarele
proprietăți:
𝑓′(𝑥)≠0,∀𝑥∈[𝑎,𝑏]
𝑓"(𝑥)≠0,∀𝑥∈[𝑎,𝑏]
0)()(<⋅bfaf
atunci, există și este unică x*,soluția ecuației f(x) = 0 și ea se obține ca limită a șirului(x n)n
definit prin : 𝑥𝑛=𝑥𝑛−1−𝑓(𝑥𝑛−1)
𝑓′(𝑥𝑛−1), n = 1, 2, …. ( 2.1.1)
unde 𝑥0∈[𝑎,𝑏] este ales astfel încât 𝑓(𝑥0)∙𝑓"(𝑥0)>0. In plus, pentru orice 𝑛≥1, eroarea
absolută cu care termenul x n aproximează pe x*verifică următoarele inegalități:
|𝑥∗−𝑥𝑛|≤|𝑓(𝑥𝑛)|
𝑚1și|𝑥∗−𝑥𝑛|≤𝑀2
2𝑚1(𝑥𝑛−𝑥𝑛−1)2
unde 𝑚1= |𝑓′(𝑥)|𝑥∈[𝑎,𝑏]𝑖𝑛𝑓 și 𝑀 2= |𝑓"(𝑥)|𝑥∈[𝑎,𝑏]𝑠𝑢𝑝
Algoritmul metodei este așadar următorul:
1. Se caută a și b, astfel încât
0)()(<⋅bfaf
2. Se demonstrează că f’ nu se anulează pe intervalul găsit [a,b]
3. Se demonstrează că f" păstrează semn constant pe [a,b]
4. Se alege un 𝑥0∈[𝑎,𝑏] astfel încât𝑓(𝑥0)∙𝑓"(𝑥0)>0
5. Se determină șirul aproximațiilor (xn)n cu relaț ia (2.1 .1)
Algoritm:
Pas Algoritm
Date de intrare : 𝜀 – precizia impus ă
itmax– numărul maxim de iterații
x0 – aproximarea inițială a soluției
Se calculeaz ă iterațiile, până la
obținerea soluției aproximative
„satisfăcătoare” în raport cu
eroarea dată 𝜺. it = 0;
repet ă
{
𝑥1=𝑥0−𝑓(𝑥0)
𝑓́(𝑥0);
𝑑𝑖𝑓 =|𝑥1−𝑥0|;
x0 = x 1;
it = it + 1 ;
}
2. Ecua ții și sisteme de ecua ții neliniare M. Racil ă
53
până când ((𝑑𝑖𝑓≤𝜀)𝑠𝑎𝑢 (𝑖𝑡>𝑖𝑡𝑚𝑎𝑥));
Date de ieșire: soluția x0
Obs: 1) it este o variabil ă ce numără iterațiile; ea nu poate depăși numărul maxim de iterații,
itmax.
2) În x 0 se stochează inițial aproximația inițială a soluției, apoi iterația veche și soluția finală .
3) x 1 reprezintă iterația nouă a soluției.
4) dif este variabila ce calculează distanța între două iterații.
Exemplificare geometrică (cazul f ’ > 0 și f " > 0 )
Temă : Realizați exemplificări geometrice pentru celelalte cazuri posibile.
2.2 Metoda lui Newton pentru sisteme neliniare
F i e X ș i Y d o u ă spații vectoriale normate șiF: X →Y un operator neliniar. Scopul nostru
este acela de a rezolva ecuația :
)(xF = 0 (2.2.1)
Definiție. Numim derivata operatorului Fînpunctul x∈X, un operator liniar
A : X →Y ce satisface condiția următoare : hAhxFhxF
h−−+
→)( ) (lim
0= 0 (2.2.2)
Notăm această derivată, dacă ea există, prin )('xF .
Observație: Dacă X = Y = Rm , pentru care norma este definită prinimix x
≤≤=
1max ,
t
mx xxx ) ,…,,(2 1= și operatorul F este definit print
mf ff F ) ,…,,(2 1= unde R R:→m
if sunt
funcții ce admit derivate parțiale de ordinul I, continue înmxR∈ , atunci există )('xF
reprezentat de operatorul liniar definit pemRcu valori înmRdat prin intermediul matricii
Jacobiene:
2. Ecua ții și sisteme de ecua ții neliniare M. Racil ă
54
∂∂
∂∂∂∂
∂∂
mm mm
xxf
xxfxxf
xxf
)(…)(… … …)(…)(
11
11
Notație: )('xF =
∂∂
ji
xxf)(
In această situație, tehnica constă în construirea unui șir de aproximări ale soluț iei sistemului
(2.2.1), știind că acest system admite o soluție xși având o aproximație inițială)0(xa acesteia.
Utilizând relația (2.2.2), pentru hsuficient de mic, rezultă că
0)(' )( ) ( ≅−−+ hxFxFhxF
Această relație, pentru o aproximare)(nx a soluției xși pentru)(nxxh−= , devine:
0) )((' )( )()( )( )(=− −−n n nxx xF xFxF
de unde :
0) )((' )()( )( )(=− +n n nxx xF xF căci 0)(=xF
Rezolvarea acestei ecuații nu va genera soluția exactă x . Se va obține o valoare)1(+nx
considerată ca aproximație de ordin n+1 :
0) )((' )()( )1( )( )(=− ++ n n n nx x xF xF
Presupunând că există[]1)()('−nxF , )1(+nx este dat prin :
[] )( )(')(1)( )( )1( n n n nxF xF x x−+−= (NS )
Acest proces iterativ reprezintă metoda lui Newton pentru sisteme neliniare .
Observație: In general, calculul inversei unei matrice este costisitor în ceea ce
privește memoria calculatorului. De aceea, este recomandat ca în relația (NS ), în loc de a
calcula []1)()('−nxF , să se rezolve sistemul liniar )( )(')( )( n nxFy xF =⋅ . Astfel, fo rmula (NS )
devine y x xn n−=+ )( )1(.
Pentru algoritmul metodei aplicate sistemelor neliniare, consultați cartea domnului Conf.
Univ. Dr. Romulus Militaru : R. Militaru, M. Popa, Metode numerice în pseudocod.
Aplicații, Ed. Sitech, 2013
2. Ecua ții și sisteme de ecua ții neliniare M. Racil ă
55
Exemplu :
Aproximațicu o eroare de510−rădăcina mai mare decât 1 a ecuației 4 ln 2=−x x prin metoda
lui Newton.
Soluție :
Pas Algoritm Exemplificare
Se caută a și b, astfel încât
0)()(<⋅bfaf 4 ln 2)( −−= x x xf
Tinând cont de graficul func ției xln, respectiv de cel al func ției 2x– 4,
observ ăm că rădăcina 1>x se găsește în intervalul [2, 3].
2 Se demonstreaz ă că f’ nu se anuleaz ă pe
intervalul g ăsit [a,b]
x xf /12)('−=
Pe intervalul [2, 3] avem 0)('>xf
3 Se demonstreaz ă că f" păstreaz ă semn
constant pe [a,b]
2/1)('' x xf=
Pe intervalul [2, 3] avem 0)('' >xf
4 Se alege un 𝑥0∈[𝑎,𝑏] astfel încât
𝑓(𝑥0)∙𝑓"(𝑥0)>0
Alegem 3)0(=x pentru c ă 0)3('')3( >⋅f f
5 Se determin ă șirul aproxima țiilor (xn)n
cu relaț ia (*)
𝑥𝑛=𝑥𝑛−1−𝑓(𝑥𝑛−1)
𝑓′(𝑥𝑛−1), n = 1, 2, …. Din (*) ob ținem succesiv :
45917,2)(')(
)0()0(
)0( )1(= −=xfxfx x
44755,2)(')(
)1()1(
)1( )2(=−=xfxfx x
44754,2)(')(
)2()2(
)2( )3(= −=xfxfx x
Evaluând 00001,0)2( )3(=−x x rezultă că )3(xx≅
2. Ecua ții și sisteme de ecua ții neliniare M. Racil ă
56
Observație: Ca și criteriu de oprire putem considera condiția)( )()(k kxx xf ≅⇒≤ε
Exemplu :
Fie sistemul de ecuații neliniare :
=+−+=++−
0 8 100 8 10
2 12
212
2 12
1
x x xxxx x
Găsiți aproximarea soluției exacte a sistemului, cu eroarea2103−⋅=ε prin metoda lui Newton,
considerândtX )0;0()0(=
Soluție:
+−+++−=
8 108 10)(
2 12
212
2 12
1
x x xxxx xXF
− +−=10 212 10 2)('
212
22 1
xx xx xXF
Din relația (NS ) rezultă:
=
−−−−
== −=−
88,08,0
88
1,0 01,00 1,0
00 ) ( )] ('[)0( 1 )0( )0( )1(XF XF X X
= −=−
9918,09918,0) ( )] ('[)1( 1 )1( )1( )2(XF XF X X
= −=−
0144.10144.1) ( )] ('[)2( 1 )2( )2( )3(XF XF X X
2. Ecua ții și sisteme de ecua ții neliniare M. Racil ă
57
Calculând ε<=− 0226.0)2( )3(X X , rezultăcă)3(X X≅
Probleme propuse :
2.1.1 Să se rezolve ecuația x3– 4x – 8.95 = 0 în intervalul [2,3], cu o precizie de 10-2.
2.1.2 Să se rezolve ecuația x2– 2 = 0 în intervalul [1,3], luând x0 = 2. Calculați primele trei
iterații.
2.1.3 Considerăm ecuația: 𝑥(1+𝑒𝑥)=𝑒𝑥
1) Arătați că această ecuație are o rădăcină reală unică în [0,1] .
2) Aplicați metoda Newton pentru a aproxima soluția acestei ecuații .
2.1.4 Explicitați metoda lui Newton pentru aproximarea rădăcinii funcției f(x) = x3 – a, a>0.
2.1.5 Fie 𝑓:𝑹 →𝑹, 𝑓(𝑥)=𝑒𝑥2−4𝑥2
1) Arătați că această ecuație are o rădăcină reală unică în [0,1].
2) Aplicați metoda Newton pentru a aproxima soluția acestei ecuații.
2.1.6 Explicitați metoda lui Newton pentru aproximarea rădăcinii funcției f(x) = x3+4×2– 10.
2.1.7 Fie 𝑓:𝑹 →𝑹, 𝑓(𝑥)=𝑥4−1
3
1) Arătați că această ecuație are o rădăcină în ( 0,1).
2) Aplicați metoda Newton pentru aproxima rea acestei rădăcini .
2.3 Metoda lui Bairstow pentru determinarea rădăcinilor polinoamelor
Fie ecuația polinomială :
0)(=xPn unden nn n
n axa xaxa P ++++=−−
11
1 0 … (2. 3.1)
2. Ecua ții și sisteme de ecua ții neliniare M. Racil ă
58
Ideea metodei este aceea de a determina un factor pătratic pentru polinomul dat. Se știe
că dacă n = 2k , adică dacă gradul polinomului este par, atunci el poate fi descompus într-un
produs de k factori pătratici ; dacă gradul său este impar, el se va descompune în k factori
pătratici și un factor liniar. Scopul nostru este acela de a calcula numerele p șiq, astfel încât x2
+ px + q să fie un divizor al lui Pn. Împărțind penP la
x2 + px +qobținem :
S Rx b xb xbq px x Pnn n
n +++++ ++=−− −) … )( (23
12
02 (2. 3.2)
În scopul obținerii relațiilor între coeficienții ce intervin în cei doi membrii ai egalității
(2.3.2), prin intermediul unei formule recursive, notăm :
+==
−−
11
n nn
pb bSbR
(2. 3.3)
Întradevăr,
S Rx qbx qbx qb xqb xqbx pbx pb xpb xpb xb xbxbxb axaxa xa xa xa
nn nn n
nnn n
nnn n
n n nn n n
++++++++++++++++++++=++++++
−− −− −
−−− −
−−−
− −− −
232
43
12
0 22
32
11
02
22
21
1 0 12
22
21
1 0
… … … …
Identificând coeficienții fiecărui polinom, observăm că:
−≤≤=++=+=
− − 2 2 ,2 11 0 10 0
nk a qb pb ba pbba b
k k k k (2.3.4)
1 3 2 − − −=++n n n a qb pbR de unde justificarea primei notații (2. 3.3).
n n a qbS=+−2 de unde justificarea celei de a doua notații (2.3.3) , astfel încât să avem :
≤≤=++=+=
− − nk a qb pb ba pbba b
k k k k 2 ,2 11 0 10 0
(2. 3.5)
sau echivalent :
2. Ecua ții și sisteme de ecua ții neliniare M. Racil ă
59
nk a qb pb bk k k k ≤≤=++− − 0 ,2 1 unde 02 1==−−b b (2. 3.6)
de unde :
nk qb pb a bk k k k ≤≤ −−=− − 0 ,2 1 unde 02 1==−−b b (2. 3.7)
adică, relația de recurență căutată.
Evident , kbsunt funcții de pșiq, și deci :
==
),(),(
qpSSqpRR
Determinăm pșiqastfel încât :
==
0),(0),(
qpSqpR (2.3.8)
Observație: (2.3.8) repr ezintă un sistem de două ecuații neliniare, cu necunoscutele
p și q.
Aplicăm în continuare metoda lui Newton pentru sisteme neliniare. Dacă0p, 0qsunt
aproximațiile inițiale ale soluției sistemului (2. 3.8), a tunci avem :
++
11
kk
qp=
kk
qp–1
),( ),(),( ),(−
∂∂
∂∂∂∂
∂∂
k k k kk k k k
qp
qSqp
pSqp
qRqp
pR
),(),(
k kk k
qpSqpR, k≥ 0
Utilizând notațiile :
2. Ecua ții și sisteme de ecua ții neliniare M. Racil ă
60
∂∂+∂∂−=∂∂−∂∂=∂∂⋅∂∂−∂∂⋅∂∂=
pRSpSR QqRSqSRPpS
qR
qS
pRδ
(2.3.9)
rezultă :
−=−=
++
k
kk kk
kk k
Q q qP p p
δδ
11
11
0≥k (2.3.10)
undek k k QP,,δ reprezintă valorile funcțiilorδ, PșiQpentru ),(k kqp .
Observație: În relațiile (2.3.10) am utilizat egalitatea:
1
),( ),(),( ),(−
∂∂
∂∂∂∂
∂∂
k k k kk k k k
qpqSqppSqpqRqppR
∂∂
∂∂−∂∂−∂∂
=
),( ),(),( ),(
1 kk k k kk k k k
qppRqppSqpqRqpqS
δ
Privind derivatele parțiale ce intervin , avem, prin intermediul relațiilor (2.3.3) și
(2.3.9) :
2. Ecua ții și sisteme de ecua ții neliniare M. Racil ă
61
∂∂+∂∂=∂∂∂∂++∂∂=∂∂∂∂=∂∂−−∂∂−=∂∂∂∂=∂∂−∂∂−−=∂∂
−−
−− −
−−− − −
−
qbpqb
qSpbp bpb
pSqb
qbq bqbpqRpb
pbqpbp bpR
n nn
nnn n
nnn n n
n
11
11 3
321 3 2
2
Dat fiind că nb bb ,…,,2 1 conțin pe p, notăm cu kc= –pbk
∂∂+1, 1 0−≤≤ nk
Plecând de la (2.3 .7), pentru k + 1, rezultă
pbk
∂∂+1= –kb – pbqpbpk k
∂∂−∂∂−1
În consecință,
1 0 ,2 1 −≤≤ −−=− − nk qc pc b ck k k k unde 02 1==−−c c (2.3.11)
Asemănător, deoarecenb b,…,2 conțin peq, notăm cu
qbdk
k∂∂−=+2, 0 ≤k≤n-2
Folosind (2.3.7), pentru k + 2, rezultă :
qbk
∂∂+2=
qbqb
qbpk
kk
∂∂−−
∂∂−+1
Deci
2 0 ,2 1 −≤≤ −−=− − nk qd pd b dk k k k unde 02 1==−−d d (2.3.12)
Folosind ( 2.3.11) și (2.3.12) ,obținem :
2 0 , −≤≤= nk d ck k
Revenind la derivatele parțiale , obținem :
2. Ecua ții și sisteme de ecua ții neliniare M. Racil ă
62
21
−−−=∂∂=∂∂
nncpb
pR
31
−−−=∂∂=∂∂
nncqb
qR
=∂∂++∂∂=∂∂−
−pbp bpb
pSn
nn 1
1 2 1 1 − −−−+−n n n pc b c
=∂∂+∂∂=∂∂−
qbpqb
qSn n 1
3 2 − −−−n n pc c
Ținând cont de (2.3.9) rezultă :
()
−−== +−−+−−=−== ++−−=+−== −+− +=
− −−−−− − −−−−− −−− − −−−− −− −−− −− −− −− −
22
1 1 12 1 2 1 1 12 1 33 1 3 2 13 1 3 12
23 2 3 1 3 1 3 22
2
) () (2.3.13 ) () (
nn n n nn n n n n n nn n nnn n n n n nn n n n nn n n n n n n n n
cb b cbc pb b pc b c b Qcb cbc pb b pc c bPcb cc cc pc cb cc c pc cδ
adică obținerea valorilor1+kp, 1+kqîn (2.3.10).
Algoritmul pentru rezolvarea ecuației (2.3.1) est e următorul :
1.alegem aproximările inițiale0p, 0qpentru valorile pșiq.
2. pentru 0≥k calculăm :
nb bb ,…,,1 0 cu relațiile (2.3.7)
1 1 0…,,−nccc cu relațiile (2.3 .11)
QP,,δ cu relațiile (2.3 .13)
1+kp, 1+kqcu relațiile (2.3 .10)
Calculele se vor opri atunci când1+kp, 1+kqverifică suficient de bine sistemul (2.2.8), adică
{}ε≤QP, max
2. Ecua ții și sisteme de ecua ții neliniare M. Racil ă
63
Observație: Un alt test de oprire poate fi
εδ≤+QP⇔{ }ε≤−−+ + k k k k q qp p1 1 , max
Ultimele valori1+kp, 1+kqreprezintă aproximări pentru coeficienții trinomului x2 + px +q,
rădăcinile acestuia fiind două rădăcini reale sau complexe pentru ecuația (2.3.1).
Se reia algoritmul de mai sus apoi pentru2 33
12
0 2 …− −− −
− ++++=n nn n
n bxb xb xb P . Astfel,
efectuăm schimbările : nk b an n
k k ≤≤←−←
0 ,2
Exemplu :
Pentru 6 11 6 )(2 3−+−= x x xxP și210−=ε obținem :
– alegând 3 ,80 0==q p ⇒ )3 4 )(2()(2+−−= x x x xP
– alegând 5 ,100 0== q p ⇒ )6 5 )(1()(2+−−= x x x xP
Observație: Ținând cont de descompunerea )3 )(2 )(1()( −−−= x x x xP , rădăcinile
ecuației )(xP = 0 su nt 3 ,2 ,13 2 1 === x x x .
3. Valori și vectori proprii M. Racil ă
64
3. Polinom caracteristic. Valori și vectori proprii
Obiective: * Cunoașterea unor metode numerice pentru calculul valorilor și
vectorilor proprii: metoda minorilor diagonali, metoda LeVerrier, metoda
Krylov (posibilitatea dete rminării vectorilor proprii), metoda Fadeev
(posibilitatea determinării inversei matricei) , metoda Danilevski (posibilitatea
determinării vectorilor proprii), metoda LR pentru calculul valorilor și vectorilor
proprii
Definiție: Dacă A∈Rnxn atunci polinomul definit prin ) det()(p AIn A −=λλ se
numește polinomul caracteristic al matricei A.
Observații :
(i) Polinomul p A este un polinom de grad n, cu coeficienti reali, iar ecuația caracteristică , de
forma
0 … 0)(p12
21
1 =+++++⇔=−− −
n nn n n
A c c c c λ λλλλ (3.1)
posedă cel mult n rădăcini distincte (reale sau complexe), în conformitate cu Teorema
fundamentală a algebrei.
(ii) Dacă λ est o rădăcină a lui p A, atunci, din relația 0) det( =−AInλ deducem că siste mul
liniar omogen 0 ) (=− xI Anλ , (0
fiind vectorul nul din Rn), (3 .2)
are soluții nebanale (nenule).
Definiție : Rădăcinile polinomului pA – polinomul caracteristic al lui A, se numesc
valori proprii ale matricei A .
3. Valori și vectori proprii M. Racil ă
65
Dacăλ este o valoare proprie a lui A și x≠0
verifică sistemul ( 3.2), atunci x se numește
vector propriu al lui A corespunzător valorii proprii λ .
Observații :
(i) Relația ( 3.2) conduce la : xA =λx ( 3.3)
(ii) 0 )( )( )( ≠∀=⇔= ααλαλ x xA x xA
Definiție : Mulțimea valorilor proprii ale matricei A, notată prin {}n A λλλσ ,…,, )(2 1=
se numește spectrul lui A , iar numărul { })( ; max)( A A σλλ ρ ∈ = se numește raza spectrală
a lui A .
Observație:
Valorile proprii pot fi calculate ca s oluții ale ecuației algebrice (3 .1). Dacă se cunoaște o
valoare proprie a lui A, atunci vectorul propriu corespunzător este o soluție a sistemului
omogen ( 3.2). Pe de altă parte, dacă se cunoasște un vector propriu ix atunci valoarea proprie
corespunzătoare iλ se obține imediat plecând de la urm ătoarele produse scalare:
i ii i
ixxAxx
,,=λ ( 3.4)
Metode numerice pentru calculul valorilor și vectorilor proprii
Metode directe
Scopul acestor metode este determinarea polinomului caracteristic prin calculul direct al
coeficienților săi. Așadar, pentru găsirea valorilor proprii, obținem intâi coeficienții
polinomului caracteristic, apoi rezolvăm ecuația caracteristică, făcând apel la o metodă de
aproximare a rădăcinilor unei ecuații neliniare.
Exemple de metode directe: metoda minorilor diagonali, metoda lui LeVerrier, metoda
lui Krylov, metoda lui Fadeev, metoda lui Danilevski.
3. Valori și vectori proprii M. Racil ă
66
Metode iterative
Aceste metode sunt reprezentate de proceduri iterative ce permit înlocuirea matricei A
printr -o matrice echivalenta, având o formă simplificată (diagonală, tridiagonală, etc). Printre
aceste metode menționăm metoda Hessenberg -QR și metoda Hauseholder -Givens.
Ne vom opri atenția în acest cur s asupra metodelor directe.
3.1 Metoda minorilor diagonali
Dacă A∈Rnxn este o matrice de forma A= nji aij≤≤,1 ),( atunci polinomul său
caracteristic poate fi scris sub forma
) det()(pij ij A a− =λδλ
Dezvoltând acest determinant, se poate demonstra că
nn n n n
A σ λσλσλλ )1(… )(p2
21
1 −+−+−=− − (3.1.1)
unde:
∑
==n
iiia
11σ (suma minorilor diagonali de ordinul 1 – coincide cu urma matricei A )
∑
≤<≤=
nji jj jiij ii
a aa a
12σ (suma minorilor diagonali de ordinul 2)
…………………….
) det(An=σ (singurul minor diagonal de ordinul n)
Observații :
(i) Dacă notăm nλλλ ,…,,2 1 valorile proprii ale lui A, ținând cont de relațiile lui Viète, rezultă
că:
=⋅⋅⋅==+++
∑
≤<≤
n nnjijin
σλλλσλλσλλλ
21121 2 1
……… ………. ………. ………….
de unde:
3. Valori și vectori proprii M. Racil ă
67
∑
===n
ii A
11 )(Trλσ (3.1.2)
∏
===n
ii n A
1) det(λσ (3.1.3)
(ii) Din (i) putem conclude că matricea A este singulară dacă și numai dacă ea admite
pe 0=λ ca valoare pro prie.
3.2 Metoda lui Le Verrier
Dacă ∈ARnxn, atunci polinomul său caracteristic este de forma:
nn n n n
A σ λσλσλλ )1(… )(p2
21
1 −+−+−=− −
iar coeficienții săi vor fi determinați în felul următor:
1. Determinăm nk A sk
k ≤≤ = 1 ), Tr(
2. Calculăm coeficienții cu formulele următoare:
( )
≤≤ −++−==
+
− − nk ks s ss
kk
k k k 2 ,/ )1(…1
2 2 1 11 1
σσσσ
Observație:
Pentru n mare, calculele devin dificile, iar algoritmul de mai sus costisitor din punct de
vedere numeric.
3.3 Metoda lui Krylov
Ideea de bază a acestei metode este reprezentată de utilizarea Teoremei Cayley –
Hamilton.
Fie ∈A Rnxnșinn n
A c c+++=−… )(p1
1λλλ polinomul său characteristic. Vrem să
determinăm coeficienții acestui polinom : n ici ,…,2,1 ,= .
In conformitate cu Teorema Cayley- Hamilton, avem:
n nnn n
A OIc Ac A A =+++=−… )(p1
1 (3.3.1)
(orice matrice de ordin n este soluție a ecuației sale caracteristice).
Fieny R)0(∈ , arbitrar și diferit de ve ctorul nul. Inmulțind ecuația (3.3.1) cu )0(y rezultă:
n nn nO yc yAc yA =++ +− )0( )0(1
1)0(… (3.3.2)
Notăm n ky yAk k,…,2,1 ,)( )0(== (3 .3.3)
3. Valori și vectori proprii M. Racil ă
68
Astfel ( 3.3.2) devine:
)( )0( )2(
2)1(
1 …n
nn ny yc yc yc −=+++− − (3.3.4)
ceea ce reprezintă un system linear cu n ecuații și n necunoscute n ici ,…,2,1 ,= .
Dacă determinantul acestui system este diferit de zero, atunci soluția sa unică va fi
reprezentată de coeficienții polinomului caracteristic.
Dacă determinantul acestui system este zero, atunci trebuie refăcute calculele cu un alt
vector inițialny R)0(∈ .
Observație: Relația ( 3.3.3) este echivalentă cu n k Ay yk k,…,2,1 ,)1( )(= =−
(3.3.5)
care simplifică modul de calcul al vectorilor n kyk,…,2,1 ,)(= .
Metoda lui Krylov permite și determinarea vectorilor proprii corespunzători, atunci
când valorile proprii nλλλ ,…,,2 1 sunt distincte.
Intr-adevăr, fie )( )2( )1(,…,,nx xx vectorii proprii corespunzători; ei generează o bază.
Vom considera expresia lui )0(yîn raport cu această bază:
)( )2(
2)1(
1)0(…n
nxb xb xb y +++= (3.3.6)
Tinând cont de (3.3.5), rezultă:
==
∑∑
=− −=
n
kk n
kknn
kk
kk
x b yxb y
1)(1 )1(1)( )1(
.. ………. ………. ……….
λλ
(3.3.7)
Notăm:
n j q q qj nn
jn
jA
j ,…,2,1 , …) ()(p)(,12
11= +++=−=−− −λλλλλλ
(3.3.8)
Cum toate valorile proprii au fost presupuse distincte, vom avea (pentru un j fixat):
=≠=
1)( ,0)(
j jk j
qjk q
λλ
(3.3.9)
Din rela țiile anterioare, deducem că:
3. Valori și vectori proprii M. Racil ă
69
)( )(1)(
1,12
11 )()0(
,1)2(
1)1(
)()( ) … (…
j
jj
j jjn
kk
k jkn
kj nn
kjn
kk
kj nn
jn
xb x qbx qb q q xby q yq y
= == =+++ == ++ +
∑ ∑
= =−− −−− −
λλ λλ
Dacă 0≠jb atunci )()(j
j jj x qbλ este de asemenea un vector propriu corespunzător valorii
proprii jλși deci
)0(
,1)2(
1)1(… y q yq yj nn
jn
−− −++ + (3.3.10)
este un vector propriu asociat valorii propriijλ.
Algoritmul metodei Krylov poate fi rezumat astfel :
1. Alegerea unui vector inițial )0(y, arbitrar, nenul
2. Calculul vectorilor n kyk,…,2,1 ,)(= , folosind relația ( 3.3.5)
3. Scrierea sistemului (3 .3.4), astfel incât coloanele matricei acestui sistem sunt,
în ordinea următoare:
)0( )2( )1(,…, , y y yn n − −
4. Termenul liber al sistemului este :)(ny−
5. Rezolvarea acestui sistem, în sensul următor:
a. dacă el admite o soluție unică, atunci coeficienții n ici ,…,2,1,= obținuți
vor fi coeficienții polinomului caracteristic
b. dacă nu, alegem un alt vector inițial )0(y și reluăm algoritmul
Algoritm Krylov:
Pas Algoritm
Citire: matricea A & vectorul inițial )0(y (arbitrar, nenul) :
𝑎𝑖𝑗, 𝑖=1,2,…,𝑛 𝑗=1,2,…,𝑛
𝑏𝑖,𝑛, 𝑖=1,2,…,𝑛
1. Se calculeaz ă vectorii
n kyk,…,2,1 ,)(= pentru j = n -1,n-2,…,1 // calculul lui y(1), y(2), …, y(n-1)
pentru i =1,2,…,n
{ b ij = 0 ;
pentru k = 1,2,…,n
b ij = b ij + a ik bk,j+1 ;
}
pentru i =1,2,…,n // calculul lui – y(n)
{ b i,n+1 = 0 ;
3. Valori și vectori proprii M. Racil ă
70
pentru k = 1,2,…,n
b i,n+1 = b i,n+1 + a ik bk1 ;
b i,n+1 = – bi,n+1 ;
}
2. Se rezolv ă cu metoda lui Gauss
(curs 1) sistemul format cu
vectorii y(1), y(2), …, y(n-1) și – y(n)
(pas 3 – 5 de mai sus). pentru k = 1,2,…,n -1
{ 𝑝𝑖𝑣 =|𝑏𝑘𝑘|;
lin = k;
pentru i = k+1,…,n
dacă 𝑝𝑖𝑣 <|𝑏𝑖𝑘| atunci
{ 𝑝𝑖𝑣 =|𝑏𝑖𝑘|;
lin = i;
}
dacă 𝑙𝑖𝑛≠𝑘 atunci
pentru j = k ,…, n+1
{ 𝑎𝑢𝑥 =𝑏𝑘𝑗;
𝑏𝑘𝑗=𝑏𝑙𝑖𝑛,𝑗;
𝑏𝑙𝑖𝑛,𝑗=𝑎𝑢𝑥;
}
pentru i = k+1,.., n
pentru j = k+1,..,n+1
𝑏𝑖𝑗=𝑏𝑖𝑗∙𝑏𝑘𝑘−𝑏𝑖𝑘∙𝑏𝑘𝑗
𝑏𝑘𝑘;
}
nnnn
nbbC
,1,+=
pentru i = n -1,n-2,…,1
{ S = 0;
pentru j = i+1,…,n
S = S + b ijCj ;
𝐶𝑖=(𝑏𝑖,𝑛+1−𝑆)/𝑏𝑖𝑖 ;
}
3. Afișa rea coeficienților
polinomului caracteristic : vectorul soluție C:
𝐶𝑖,𝑖=1,2,…,𝑛
C0 = 1;
Se poate completa Algoritmul Krylov cu determinarea valorilor proprii ale matricei și eventual (când
acest lucru este posibil) a vectorilor proprii corespunzători :
4. Se calculeaz ă și afișează
valorile proprii, utilizând metoda
lui Bairstow (pentru detalii,
consultați cartea domnului Conf.
Univ. Dr. Romulus Militaru: R.
Militaru, M. Popa, Metode cât timp (n > 2)
{
citește p, q, Ɛ ;
repet ă
{
z[0]=C [0];
3. Valori și vectori proprii M. Racil ă
71
numerice în pseudocod. Aplicații ,
Ed. Sitech, 2013). z[1]=C[1] -p*z[0];
pentru k = 2,…,n
z[k]=C[k]- p*z[k- 1]-q*z[k-2];
t[0]=z [0];
t[1]=z[1]- p*t[0];
pentru k = 2,…,n- 1
t[k]=z [k]-p*t[k- 1]-q*t[k-2];
delta=t[n -2]*t[n- 2]-t[n-1]*t[n- 3]+z[n -1]*t[n-3];
R=z[n]*t[n -3]-z[n-1]*t[n-2];
M=z[n -1]*t[n- 1]-z[n-1]*z[n-1]-z[n]*t [n-2];
p=p -R/delta;
q=q -m/delta;
}
până când (fabs((R+M)/delta)<=Ɛ );
dac ă (p*p- 4*q>=0) atunci
{ x1=( -p-sqrt(p*p- 4*q))/2;
x2=( -p+sqrt(p*p- 4*q))/2;
afișează x1, x2, “valori proprii reale” ;
}
altfel
{ real1= -p/2;
complex1=sqrt( -p*p+4*q)/2;
x1 = real1 + i*complex1;
x2 = real1 – i*complex1;
afișează x1, x2, „valori proprii complexe”;
}
n=n- 2;
pentru k = 0,.., n
C[k]=z [k];
}
dacă (n = 1) atunci
{
x1= -z[1]/z [0];
afișează x1;
}
altfel
{ afișează „se obtine un factor patratic" ;
dacă (z[1]*z[1]- 4*z[0]*z [2]>=0) atunci
{x1=( -z[1]-sqrt(z[1]*z[1] -4*z[0]*z [2]))/2;
x2=( -z[1]+sqrt(z[1]*z[1] -4*z[0]*z [2]))/2;
afișează x1, x2, “valori proprii reale” ;
}
altfel
{real2= -z[1]/(2*z[0]) ;
complex2=sqrt( -z[1]*z[1]+4*z[0]*z [2])/ (2*z[0]);
x1 = real2 + i*complex2;
x2 = real2 – i*complex2;
afișează x1, x2, „valori proprii complexe”;
}
}
5. Se determină un vector propriu
corespunzător unei valori proprii
aflate la pasul anterior, folosind
formulele (3.3.8) – (3.3.10). citire : λ valoare proprie
d1 = λ + C 1 ;
pentru i = 2,…,n -1
di = λ * d i-1 + C i ;
3. Valori și vectori proprii M. Racil ă
72
pentru i = 1,…,n
{
S = 0 ;
pentru j = 1,…,n -1
S = S + d j*bi,j+1 ;
vi = b i1 + S ;
}
afișează 𝑣𝑖,𝑖=1,2,…,𝑛
Pentru alți algoritmi de determinare a valorilor și vectorilor proprii, consultați cartea domnului
Conf. Univ. Dr. Romulus Militaru : R. Militaru, M. Popa, Metode numerice în pseudocod.
Aplicații, Ed. Sitech, 2013
Observație: Dacă matricea A este inversabilă, adică 0≠nc , atunci putem determina
matricea inversă A-1 plecând de la relația ( 3.3.1). Astfel, vom avea :
( )n nn n
nIc Ac AcA12
11 1…1
−− − −+++−= (3 .3.11)
3.4 Metoda lui Fadeev
Este vorba de o metodă ce permite obținerea coeficienților polinomului caracteristic al
matricei A, plecând de la relația (3 .3.11), precum și inversa acesteia. Algoritmul metodei este
caracterizat de relațiile următoare:
+= −= =+= −= =+= −= =
− nn n n n n n nnn
Ic A B ATrnc AB AIc A B ATr c AB AIcA B ATr c A A
);(1 ;… … …);(21;);( ;
12 2 2 2 2 1 21 1 1 1 1 1
(3.4.1)
Polinomul caracteristc al lui A este:
nn n
A c c+++=−… )(p1
1λλλ
Se poate demonstra ușor că:
≠ −==
−−0 c si ,1
n 11
n
nn n
BcAO B
3. Valori și vectori proprii M. Racil ă
73
3.5 Metoda lui Danilevski
Defini ție: Matricea F ∈Rnxn este în formă normală Frobenius dacă
F =
−
0 1 …0 0… … …… …0 0 …0 1…1 2 1 n n f f ff
(3.5.1)
Propozi ție: DacăF∈Rnxneste în formă normală Frobenius (3.5.1), atunci polinomul
său caracteristic este dat prin:
n nn n n
F f f f f −−−−−=−− −λ λλλλ12
21
1 … )(p (3.5.2)
Fie A
∈Rnxn. Metoda lui Danilevski constă în transformarea matricei A într-o matrice ce
are forma normală Frobenius, asem enea cu matricea A . O dată ce forma normală Frobenius
este obținută, vom scrie direct polinomul caracteristic, ale cărui rădăcini le căutăm apoi, prin
intermediul unei metode numerice convenabile. Acest procedeu se realizează în n-1 etape,
obținând la fiecare etapă o linie din matricea F (3.5.1), începând cu ultima linie și calculând
apoi până la prima.
Prima etapă : Presupunem 01,≠−nna în scopul realizării ultimei linii din F (cazul 01,=−nna va fi
tratat ulterior ).
Transformăm matricea Aastfel :
– împărțim elementele coloanei n-1 prin1,−nna
– din fiecare coloană 1 , 1 , −≠≤≤ njnj j scădem coloana n-1 (obținută anterior ), înmulțită
cu nja.
Formulele de calcul su nt:
−==
−− − −
,·, /
'
1,'1, 1,'
1,
nj ni ij ijnn ni ni
a a a aa a a
ni , n-jnjni
≤≤≠≤≤≤≤
11 , 11 (3.5.3)
Observa ții:
(i) Linia na matrice i A se înlocuiește cu ultima linie a lui F, adică 0,0,…,1,0 (a se vedea
relația (3.5.3) pentru i = n).
3. Valori și vectori proprii M. Racil ă
74
(ii) Transformările date de (3.5.3) su nt echivalente cu înmulțirea la dreapta a matricei A, cu
matrice a :
Mn-1 =
− −−− − − −
1 0 … 0 01…… … … … …0 0 … 1 00 0 … 0 1
1, 1, 1,2
1,1
nnnn
nn nnn
nnn
aa
a aa
aa (3.5.4)
adică, o matrice ce provine din matricea unitate de ordin n, înlocuind linia “ n-1” cu linia
“n-1” dată de (3.5.4 ).
(iii) Dacă notăm cu1 1 − −⋅=n n MA B atunci ultima sa linie este 0,0,…,1,0, iar elementele
celorlalte linii i , i=1,2,…, n-1 s unt calculate cu ajutorul relațiilor (3.5.3).
(iv) M atrice a1−nM este inversabilă și inversa sa 1
1−
−nM este :
= −−
−
1 0 …0 0a a… a a… … … … …0 0 …1 00 0 …0 1
M
nn 1n,n 2n 1n1
1n (3.5.5)
adică matricea unitate de ordin n, în care am schimbat linia “ n-1” cu linia" n"a matrice iA.
În consecință, în prima etapă obținem matricea 11
1 11
1 1 −−
− −−
− − ⋅⋅=⋅=n n n n n MA M B M C , asemenea
cu matricea A .
Observa ție:
Matricele1−nCși1−nB au aceleași elemente, mai puțin linia “n-1” dată prin :
∑
=−=n
iij ni j n aa a
1' '
,1 ·,1 ≤ j ≤n (3.5.6)
În cele ce urmează notăm cu nji c Cij≤≤= ,1 ),( . În acest moment, nji a cij ij ≤≤= ,1 ,'.
A doua etapă: Reluăm calculele date de (3.5.3) și (3.5.6), presupunând că 02,1≠−−nnc . Astfel
construim matrice a2 11
2 2 − −−
− − ⋅⋅=n n n n M C M C , asemenea cu1−nC și deci cu A și având ultimele
două linii din matricea F .
Observa ție:
Linia “ n-2” din matricea2−nM este
3. Valori și vectori proprii M. Racil ă
75
2,12,1
2,11,1
−−−
−−−−−
nnn
nnn
cc
cc …
2,1,1
2,11,1
2,11
−−−
−−−−
−−−−
nnnn
nnnn
nn cc
cc
c
Linia “n-2” din matricea 1
2−
−nM este
1,1−nc 2,1−nc … 2,1−−n nc 1,1−−n ncn nc,1−
A n-1 etapă: În această etapă obținem matrice a1 21
1 1 MC M C ⋅⋅=− presupunând că 021≠c ,
21c fiind element din 2C , astfel încât1C este asemenea cu A și având forma normală
Frobenius.
Observa ție:
Relația între 1C și A est e următoarea:
SA S C ⋅⋅=−1
1 unde1 2 1 M M MSn n ⋅⋅⋅⋅=− −
În concluzie, etapele metodei lui Danilevski pot fi rezumate astfel :
etapa 1 : 01,≠−nna , element din A→matrice a1−nCavând ultima linie din F ;
etapa 2 : 02,1≠−−nnc ,element din 1−nC→matrice a 2−nC având ultimele două linii
din F ;
…………………….…………………………………..
etapa n-k+1 : 01,≠−kkc ,element din kC→matrice a1−kCavând ultimele 1+−kn
linii din F;
…………………….…………………………………..
etapa n-1 : 021≠c ,element din 2C→matrice a1Cavând forma normală
Frobenius.
Determinarea vectorilor proprii
După determinarea valorilor proprii, metoda lui Danilevski poate fi utilizată pentru a
determina vectori proprii c orespunzători valorilor proprii . Fie SA S C ⋅⋅=−1
1 forma normal ă
Frobenius a matrice iA, unde1 2 1 M M MSn n ⋅⋅⋅⋅=− − . Fie λ o valoare proprie a lui1C șiA șiy
un vector propriu corespunzător lui λpentru maricea1C. Atunci Syx= este vector propriu
corespunzător lui λpentru matrice aA.
Vectorii proprii ai matrice i1C pot fi calculați ușor, fiind soluțiile nenule ale sistemului :
() 01=⋅− y CIλ
3. Valori și vectori proprii M. Racil ă
76
Acest sistem omogen are rangul n-1 și pentru rezolvarea sa putem elimina prima ecuație.
Notăm α=ny , iar soluția obținută prin substituție inversă este de forma :
⋅⋅⋅
=−−
αλαλαλα
…21
nn
y
Alegând ca reprezentant vectorul propriu corespunzător lui 1=α obținem :
=−−
1…21
λλλ
nn
y , vect or propriu p entru matricea1C.
Astfel, pentru matrice a A, obținem vect orul propriu :
y M M Mxn n ⋅⋅⋅⋅⋅=− − 1 2 1
Observa ție:
Ordinea înmulțirilor este de la dreapta la stânga, adică ))) (( (1 2 1 ⋅⋅⋅⋅⋅⋅⋅− − y M M Mn n deoarece la
fiecare î nmulțire se modifică o singură componentă (prima componentă –la prima înmulțire , a
doua componentă – la a doua înmulțire, etc).
3.6 M etoda LR pentru determinarea valorilor și vectorilor proprii
Este vorba de o tehnică iterativă, bazată pe metoda factorizării LR a matricelor, folosită pentru
determinarea numerică a valorilor și vectorilor proprii, toate acestea, fără a calcula în prealabil
polinomul caracteristic.
Considerăm în cele ce urmează matricea nnA×∈R .
Fie A A=1 11 1LR e factorizarRL A=→
Considerăm apoi22 2LR e factorizar
11 2 RL A LR A =→ = ș.a.m.d.
Construim, în acest fel, șirul de matrice ()kkA definit prin :
3. Valori și vectori proprii M. Racil ă
77
(S) , ,1 11
= =≥∀=
+ kk k kk k LR A RL A kA A
Observa ție: Matricele 1 ,≥kAk sunt asemenea cu matricea A, așadar vor avea
aceleași valori proprii.
Pentru obținerea valorilor proprii ale matricii A, se aplică procedeul (S) într-o manieră
iterativă, oprind iterațiile atunci când elementele non -diagonale ale lui kRsunt “aproape nule ”:
() , max
,1ε≤
≠≤≤ijk
jinjiR
εfiind precizia de calcul impusă .
Calcul ul vectorilor proprii
Fie )(Rσλ∈ șiyun vector propriu asoci at pentru matrice aR. Se poate demonstra că :
()()LyA Ly=λ
de unde deducem că
Lyeste un vector propriu asociat lui λ pentru matrice a A.
Dacă valorile proprii ale matricei A sunt distincte , adică jij i ≠∀≠ )( ,λλ , atunci elementele
diagonale ale lui R sunt distincte .
Vectorii proprii pentru matricea Rse obțin rezolvând sistemele liniare următoare :
===
)( )()2(
22)2()1(
11)1(
. ………. ……….
n
nnnyr Ryyr Ryyr Ry
Observa ție: Sistemele de mai sus sunt compatibile nedeterminate .
Considerăm ni yi
i ≤≤=1 ,1)(
Atunci formulele ce dau componentele fiecărui vector propriu pentru matricea R sunt :
n i
i i ik yrrryyni y y y
i
kji
j kj
kk iii
ki
ii
ii
ni
n
,1)(
1 pour ,1,…,2,1 ,11pentru ,0 …
1)( )()()(
1)(
1)(
=∀
> −−=−==< ====
∑
+=+ −
3. Valori și vectori proprii M. Racil ă
78
Vectorii proprii ni xi≤≤1 ,)( pentru matrice aA se obțin prin:
)( )( i iLy x= , ni≤≤1
Exemple:
1. Să se găsească polinomul caracteristic al matricei 44R×∈A :
−=
11211 11011221013
A
folosind metoda minorilor diagonali .
Soluție :
Pas Algoritm Exemplificare
1 ∑
==4
11
iiiaσ
(suma minorilor diagonali de ordinul 1
– coincide cu urma matricei A ) 7)(1== ATrσ
2
∑
≤<≤=
4 12
ji jj jiij ii
a aa a
σ (suma
minorilor diagonali de ordinul 2) 121212
1113
1003
111 1
1112
2213
2 =+++−++=σ
3
∑
≤<<≤=
4 13
kji
kk kj kijk jj jiik ij ii
a a aa a aa a a
σ (suma
minorilor diagonali de ordinul 3) 7
1111 10103
121122113
1121 11112
110122013
3 =−+ +−+ =σ
4 ) det(4 A=σ (singurul minor
diagonal de ordinul 4 ) 1 ) det(4 −== Aσ
5 Polinomul c aracteristic este:
32
23
14)(p λσλσλσλλ +−+−=A
1 7 12 7 )(2 3 4−−+−= λλλλλAp
2. Utilizând metoda lui Le Verrier , determinați polinomul caracteristic al matricei următoare:
3. Valori și vectori proprii M. Racil ă
79
− =
1011 11032
A
Soluție :
Pas Algoritm Exemplificare
1 Determinăm 3 1 ), Tr( ≤≤ = k A sk
k 4)(1== ATrS
12)(2
2 == ATr S
28)(3
3 == ATr S
2 Calculăm coeficienții polinomului caracteristic cu
formulele următoare: ()
( )
+−=−==
3/2/
3 12 21 32 11 21 1
s s ss ss
σσσσσσ
()
( )
−=+−==−===
4 3/22/4
3 12 21 32 11 21 1
S S SS SS
σσσσσσ
3 Polinomul caracteristic este:
3 22
13)(p σλσλσλλ −+−=A 4 2 4 )(2 3++−= λλλλAp
3. Determinați, folosind metoda lui Krylov , polinomul caracteristic, valorile proprii și vectorii
proprii corespunzători, pentru matricea33R×∈A :
−−−
=
11 123201 2
A
și precizați, fără a evalua determinantul, dacă matricea dată este inversabilă.
Soluție:
Pas Algoritm Exemplificare
1 Alegem un vector inițial )0(y, arbitrar, nenul
ty )0;0;1()0(=
2 Calculăm vectorii n kyk,…,2,1 ,)(= , folosind
relația (3 .3.5) n = 3
t t ty y y )19;26;20( ,)5;8;6( ,)1;2;2()3( )2( )1(−= −= −=
3 Scriem sistemul (3 .3.4), astfel incât coloanele
matricei acestui sistem sunt, în ordinea următoare:
)0( )2( )1(,…, , y y yn n − −
Termenul liber al sistemului este :)(ny− Sistemul de rezolvat este:
−=+=−−−=++
19 526 2 820 2 6
2 12 13 2 1
ccc ccc c
Determinantul acestuia este nenul (este egal cu 2);
3. Valori și vectori proprii M. Racil ă
80
soluția este deci unică.
4 Rezolvăm acest sistem, apoi ecuația caracteristică . 6 ;11 ;63 2 1 −==−= c c c
6 11 6 )(2 3−+−= λλλλAp .
3 ;2 ;1 0)(3 2 1 ===⇒= λλλλAp .
5 j q q qj nn
jn
jA
j 1 , …) ()(p)(,12
11= +++=−=−− −λλλλλλ
Pentru 11=λ :
6 5) ()(p)(2
11 +−=−= λλλλλλAq
Pentru 22=λ :
3 4) ()(p)(2
22 +−=−= λλλλλλAq
Pentru 33=λ :
2 3) ()(p)(2
33 +−=−= λλλλλλAq
6 )0(
,1)2(
1)1(… y q yq yj nn
jn
−− −++ +
este un vector propriu asociat valorii propriijλ. ty y y )0;2;2( 6 5)0( )1( )2(=+− – vector propriu
asociat lui 11=λ
ty y y )1;0;1( 3 4)0( )1( )2(=+− – vector propriu
asociat lui 22=λ
ty y y )2;2;2( 2 3)0( )1( )2(−=+− – vector propriu
asociat lui 33=λ
Tinând cont că 6
3−=c , (sau că toate valorile proprii sunt diferite de zero ) rezultă că Aeste
inversabilă.
4. Determinați, folosind metoda lui Krylov , polinomul caracteristic, valorile proprii și vectorii
proprii corespunzători, pentru matricea 44R×∈A următoare:
− −− −− −− −
=
2 44 453 2266 5844 47
A
Soluție :
Pas Algoritm Exemplificare
1 Alegem un vector inițial )0(y, arbitrar, nenul
ty )1;0;0;0()0(=
2 Calculăm vectorii n kyk,…,2,1 ,)(= ,
folosind relația (3 .3.5) n = 4
3. Valori și vectori proprii M. Racil ă
81
tttt
yyyy
)364;573;140; 1088()68;119;258;196()16;21;44;32()2,5;6;4(
)4()3()2()1(
−−−=− =−−−=−=
3 Scriem sistemul (3.3.4), astfel incât coloanele
matricei acestui sistem sunt, în ordinea
următoare:
)0( )2( )1(,…, , y y yn n − −
Termenul liber al sistemului este :)(ny− Sistemul de rezolvat este:
=+−+−=+−=+−=+−
57 2 16 68573 5 21 1191400 6 44 2581088 4 32 196
4 3 2 13 2 13 2 13 2 1
cc c cc c cc c cc c c
Determinantul acestuia este nenul (este egal cu – 720);
soluția este deci unică.
4 Rezolvăm acest sistem, apoi ecuația
caracteristică 30 ;31 ;5 ;74 3 2 1 −=−=== c c c c
30 31 5 7 )(2 3 4−−++= λλλλλAp .
2 ;1 ;3 ;5 0)(4 3 2 1 =−=−=−=⇒= λλλλλAp
.
5 j q q qj nn
jn
jA
j , …) ()(p)(,12
11+++=−=−− −λλλλλλ
Pentru 51−=λ :
6 5 2) ()(p)(2 3
11 −−+=−= λλλλλλλAq
Pentru 32−=λ :
10 7 4) ()(p)(2 3
22 −−+=−= λλλλλλλAq
Pentru 13−=λ :
30 6) ()(p)(2 3
33 −−+=−= λλλλλλλAq
Pentru 24=λ :
15 23 9) ()(p)(2 3
44 +++=−= λλλλλλλAq
6 )0(
,1)2(
1)1(… y q yq yj nn
jn
−− −++ +
este un vector propriu asociat valorii proprii
jλ. ty y y y )32;52;140;112( 6 5 2)0( )1( )2( )3(− =−−+
– vector propriu asociat lui 51−=λ
ty y y y )0;0;40;40( 10 7 4)0( )1( )2( )3(=−−+ –
vector propriu asociat lui 32−=λ
ty y y y )0;12;12;0( 30 6)0( )1( )2( )3(−−=−−+ –
vector propriu asociat lui 13−=λ
ty y y y )45;45;0;0( 15 23 9)0( )1( )2( )3(=+++ –
vector propriu asociat lui 24=λ
5. Determinați, folosind metoda lui Fadeev , polinomul caracteristic și valorile proprii pentru
matricea 33R×∈A următoare:
3. Valori și vectori proprii M. Racil ă
82
−−
=
1 311 1131 2
A
Soluție :
Relațiile (3 .4.1) ne dau :
−−
==
1 311 1131 2
1A A , 21−=c ,
−−−
=
3 3111 131 0
1B
−−
==
97 21 124 82
1 2AB A , 62−=c ,
−−− −
=
37 215 24 84
2B
−−−
==
4 0 004 00 04 2 3AB A , 43=c , 3 3O B=
Atunci 4 6 2 )(2 3+−−= λλλλAp
5858,02 24142,32 2 2 0)(
321
≈−=≈+=−=⇒=
λλλλAp
Exerciții propuse :
Utilizând toate metodele prezentate în acest capitol , determinați polinomul caracteristic pentru
matricile următoare , valorile proprii și vectorii proprii corespunzători (acolo unde este
posibil ):
=
433232112
A
7 15 9 )(2 3−+−= λλλλAp
−−−
=
42 263 321 1
B 2 32 )( λλλ−=Bp
3. Valori și vectori proprii M. Racil ă
83
−=
21341 2321
C
25 18 2 )(2 3−−−= λλλλCp
−−−
=
4 4 014 20 14
D
40 42 12 )(2 3+++= λλλλDP
−−−−
=
1 0213 01 4 0
E
14 5 4 )(2 3+++= λλλλEp
−−−−
=
20 0 071 03101 131 2 2
F 6 2 4 )(2 3 4+++−= λλλλλFp
−−=
1 00121007
G
14 5 8 )(2 3++−= λλλλGp
−−−−−
=
32 02 1 101 2
H
17 4 4 )(2 3+−−= λλλλHp
−−
=
02410 201 3
I
2 3 )(2 3+−=λλλIp
−−−
=
2/12/32/32/12/32/11 1 0
J
2 2 )(2 3+−−= λλλλJp
−−−
=
1 221 313 25
K
5 13 7 )(2 3−+−= λλλλKp
4. Interpolare M. Racil ă
84
4. Aproximarea func țiilor prin interpolare
Obiective: * Cunoașterea unor metode numerice pentru aproximarea prin
interpolare a funcțiilor (Lagrange, Newton, spline -ul cubic , metoda celor mai
mici pătrate )
Fie I un interval, iar nxxx ,…,1 0 n+1 puncte din acest interval, în care cunoaștem
valorile funcției f, n if xfinot
i ,0 , )( == .
Definiție : Atunci când căutăm o valoare )(xf pentru un x oarecare din intervalul I ,
diferit de punctele eșantionului nxxx ,…,1 0 , spunem că efectuăm o interpolare.
In acest capitol, vom prezenta câteva metode de aproximare a unei funcții f pe un
interval dat, prin polinoame de aproximare. Este binecunoscut faptul că polinoamele au o
mare importanță teoretică, ele putând aproxima orice funcție continuă pe un interval mărginit, cu o eroare relativ mică.
4.1 Polinoame de interpolare Lagrang e
Fie
1+n puncte distincte , n ixi ,…,0 ,= (noduri ) aparținând intervalului R⊂I și
n if xfinot
i ,…,1,0 , )( == valorile (cunoscute) ale funcției R R:→ f în punctele respective.
Scopul este acela de a construi un polinom de grad cel mult n, notat P n, care "trece" prin cele
1+n puncte n ifxi i ,…,1,0 ),,(= . Un astfel de polinom se numește polinom de interpolar sau
polinom interpolant .
Fie deci un astfel de polinom, scris în forma generală:
n1
1 0 a… a a)( +++=−n n
n x x xP
Utilizând faptul că acest polinom )(xPn trebuie să verifice cele 1+n condiții
n if xPi i n ,…,1,0 , )( == vom obține un sistem liniar de 1+n ecuații și 1+n necunoscute –
coeficienții polinomului.
4. Interpolare M. Racil ă
85
Determinantul acestui sistem este un determinant Vandermonde 0) ,…,,(1 0 ≠nx xxV deoarece
punctele kxsunt diferite. Ca o consecință imediată, soluția acestui sistem există și ea este
unică. Ea se poate determina cu metoda lui Cramer – metodă directă ("naivă") de
determinare a polinomului interpolant. Așadar, polinomul de interpolare există și este unic.
Fie ,…,n, klk 10 ,= un polinom de grad n astfel încât kj j kxlδ=)( (simbolul lui Kronecker),
.,…,1,0 )( n j=∀
Observație: Pentru fiecare n k ,…,0= există un singur polinom kl.
Intr-adevăr, kj xlj k ≠= ,0)( implică ∏
≠=−=n
kjjj k k xx cxl
0) ( )( . Cum 1)(=k kxl resultă
∏
≠=−=n
kjjj kkxxc
0) (1
și deci
∏
≠==−−=n
kjj j kj
kn kxxxxxl
0.,…,1,0 , )( (4 .1.1)
Polinoamele de grad n, date prin relația (4 .1.1) se numesc polinoame fundamentale
Lagrange .
Are loc relația : ∑
==n
kkxl
01)( .
Propoziți a 4.1.1 : Polinomul ∑
==n
kkk n xlf xP
0)( )( est un polinom de interpolare,
numit polinomul Lagrange .
Demonstrație:
• )(xPnest un polinom de grad n≤ deoarece nldk=0
• ∑∑
= ==∀= = =n
kn
kj kjk j kk j n n j f f xlf xP
0 0,…,1,0 )( , )( )( δ
In consecință, polinomul de interpolare Lagrange este dat prin relația :
4. Interpolare M. Racil ă
86
∑∏
=
≠=
−−=n
kn
kjj j kj
k nxxxxf xP
0 0)( (4.1.2)
Propoziția 4.1.2 : Polinomul de interpolare corespunzător la 1+n puncte diferite
există și este unic.
Demonstrație:
Existe nța este demonstrată prin Propoziția 4.1.1. Vom demonstra unicitatea.
Considerăm că există un alt polinom nQastfel încât
n Qdn≤0și n jf xQj j n ,…,1,0 , )( ==
Atunci )( )( )( xQxP xTn n n −= va fi caracterizat de :
0,…,1,0 ,0)(0
≡⇒
==≤
n
j nnTn j xTn Tdși deci n nQ P≡
Notație : Vom nota prin nL polinomul de interpolare Lagrange de grad cel mult n.
Pentru evaluarea erorii în interpolarea Lagrange, a se vedea R. Militaru , M. Popa, Metode
numerice. Note de curs, Ed. Sitech, 2007.
Algoritm Lagrange:
Pas Algoritm
Citire: n (nr. de puncte ), 𝒙𝒊, 𝑖=1,2,…,𝑛 (punctele în care se
știu valorile ),
𝒇𝒊, 𝑖=1,2,…,𝑛 (valorile func ției în puncte le 𝒙𝒊),
z (punctul în care se dorește aproximarea valorii funcției)
Calculul aproximativ a valorii
polinomului Lagrange în punctul
dat L = 0 ;
pentru k = 1,2,…,n
{P = 1 ;
pentru i = 1,2,…,n
dacă 𝑖≠𝑘
𝑃=𝑃∗𝑧−𝑥𝑖
𝑥𝑘−𝑥𝑖;
4. Interpolare M. Racil ă
87
∑∏
=
≠=
−−⋅=n
kn
kii i ki
k nxxxzf zL
1 1)( L = L + f k * P;
}
Afișa re: L (valoarea aproximativ ă a funcției f în z )
4.2 Polinoame de interpolare Newton
Fie 1+n puncte distincte , n ixi ,…,0 ,= (noduri ) aparținând intervalului R⊂I și
n if xfinot
i ,…,1,0 , )( == valorile (cunoscute) ale funcției R R:→ f în punctele respective.
Definiție : Definim diferențele divizate de ordin k, n k ,…,1,0= astfel:
Diferențele divizate de ordin zero coincid cu valorile n ifi ,…,1,0 ,= (adică există 1+n
diferențe divizate de ordin zero)
Diferențele divizate de ordinul 1 sunt date prin relația :
1 0 ,)( )();(
11
1 −≤≤−−=
++
+ nix xxf xfxxf
i ii i
i i (adică există n diferențe divizate de ordinul 1)
Diferențele divizate de ordinul k sunt date prin relația :
01 1 0 2 1
1 0) ;…,;( ) ;…,;() ;…,;(xxx xxf x xxfx xxf
kk k
k−−=−(adică există k n−+1 diferențe divizate de
ordinul k)
Diferența divizată de ordinul n (este doar una !), dată prin :
01 1 0 2 1
1 0) ;…,;( ) ;…,;() ;…,;(xxx xxf x xxfx xxf
nn n
n−−=−
Intr-un mod schematic, putem construi tabelul următor:
xi Diferențe
divizate de
ordin 0 Diferențe
divizate de
ord. 1 Diferențe
divizate de
ord.2 … Diferența
divizată de ord.
n
x0
x1
x2
:
:
xn-2
xx-1
x1 f(x0) = f 0
f(x1) = f 1
f(x2) = f 2
:
:
f(xn-2) = f n-2
f(xn-1) = f n-1
f(xn) = f n 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)
–
–
:
:
–
–
–
4. Interpolare M. Racil ă
88
Observații : (i) Notând cu ijd elementele acestui tablou, avem :
jn in jx xd ddn if d
i jiji ji
iji i
−= =−−===
+− −+,…,1,0 ;,…,2,1 ,,…,1,0 ,
1, 1,10
(ii) Se poate demonstra prin inducție matematică formula următoare:
∑
∏=
≠=−=m
jm
jiii jj
mxxxfx xxf
0
01 0
) ()() ;…,;( (4 .2.1)
Polinomul ∑ ∏−
= =+− +=1
0 01 1 0 0 ) () ;….;;( )( )(n
kk
jj k n xx x xxf xf xN (4 .2.2)
se numește polinomul de interpolare Newton .
Algoritm Newton:
Pas Algoritm
Citire: n (nr. de puncte ), 𝒙𝒊, 𝑖=1,2,…,𝑛 (punctele în care
se știu valorile ),
𝒇𝒊, 𝑖=1,2,…,𝑛 (valorile func ției în punctele 𝒙 𝒊 ),
z (punctul în care se dorește aproximarea valorii
funcției)
Calculul aproximativ a valorii polinomului
Newton în punctul dat :
∑∏
=−
=− +=n
kk
ii k n xz x xf xf zN
21
11 1 ) () ;….;( )( )(
∑
∏=
≠=−=k
jk
jiii jj
k
xxxfx xf
1
11
) ()() ;…,(
Pol = f 1 ;
pentru k = 2,3,…,n
{S = 0 ;
pentru j = 1,2,…,k
{ P = 1;
pentru i = 1,2,…,k
dacă 𝑖≠𝑗
P = P * (x j – x i) ;
S = S + f j / P;
}
P = 1 ;
pentru i = 1,2,…,k -1
P = P * (z – x i);
Pol = Pol + S * P;
}
Afișa re: Pol (valoarea aproximativ ă a funcției f în z )
4. Interpolare M. Racil ă
89
Exemple:
1. Fie tabelul de date:
xi -1 0 1
fi ½ 1 2
Găsiți polinomul de interpolare Lagrange asociat tabelului de mai sus.
Soluție:
Pas Algoritm Exemplificare
1
∑∏
=
≠=
−−=n
kn
kjj j kj
k nxxxxf xL
0 0)(
2 220≤⇒= Ld n
)( )( )( )(22 11 00 2 xlf xlf xlf xL ++=
2 Se calculează polinoamele Lagrange
fundamentale :
∏
≠==−−=n
kjj j kj
k n kxxxxxl
0.,…,1,0 , )( 2 ) )( () )( ()(2
2 0 1 02 1
0x x
x xx xxxxxxl−=−−−−=
2
2 1 0 12 0
1 1) )( () )( ()( xxxxxxxxxxl −=−−−−=
2 ) )( () )( ()(2
1 2 0 21 0
2x x
x xx xxxxxxl+=−−−−=
3 Se determin ă polinomul de interpolare
Lagrange. 44 3)(2
2++=x xxL
2. Determinați polinomul de interpolare Newton asociat următorului tabel de date:
xi -1 1 2
fi -3 0 4
4. Interpolare M. Racil ă
90
Soluție:
Pas Algoritm Exemplificare
1 Construim tabelul diferențelor divizate:
Diferențele divizate de ordinul 1 :
1 0 ,)( )();(
11
1 −≤≤−−=
++
+ nix xxf xfxxf
i ii i
i i
Diferențele divizate de ordinul k :
01 1 0 2 1
1 0) ;…,;( ) ;…,;() ;…,;(xxx xxf x xxfx xxf
kk k
k−−=−
Diferența divizată de ordinul n :
01 1 0 2 1
1 0) ;…,;( ) ;…,;() ;…,;(xxx xxf x xxfx xxf
nn n
n−−=− xi ordin 0 ordin 1 ordin 2
-1
1
2 -3
0
4 3/2
4
– 5/6
–
–
2 Se scrie polinomul Newton cu formula:
∑ ∏−
= =+− +=1
0 01 1 0 0 ) () ;….;;( )( )(n
kk
jj k n xx x xxf xf xN 6149 5)1 )(1(65)1(233 )(
22
−+==−++++−=
x xx x x xN
3. Fie tabelul de date:
xi -1 0 1 2 2,5
fi 0,25 1 4 16 32
(i) Aproximați valoarea )5,1(f cu ajutorul unui polinom de interpolare Lagrange de
gradul 2;
(ii) Aproximați valoarea )5,0(f cu ajutorul unui polinom de interpolare Newton de
gradul 3.
Soluție:
(i) Tinând cont de faptul că polinomul de interpolare trebuie să aibă gradul 2, vom
alege 3 noduri. Putem considera :
2 ,0 ,12 1 0 ==−= x x x sau 5,2 ,0 ,12 1 0 ==−= x x x sau 2 ,1 ,02 1 0 === x x x sau
5,2 ,1 ,02 1 0 === x x x sau 5,2 ,2 ,02 1 0 === x x x sau 2 ,1 ,12 1 0 ==−= x x x sau
5,2 ,1 ,12 1 0 ==−= x x x .
Fie nodurile : 2 ,1 ,02 1 0 === x x x .
4. Interpolare M. Racil ă
91
Atunci 22 3)(2
0+−=x xxl , x x xl 2 )(2
1 +−= , 2)(2
2x xxl−= și deci polinomul de interpolare
Lagrange va fi 22 3 9)(2
2+−=x xxL de unde 875,8)5,1( )5,1(2=≅L f .
(ii) Trebuie să alegem 4 noduri. Să considerăm nodurile 5,2 ,2 ,0 ,13 2 1 0 ===−= x x x x
Atunci tabelul diferențelor divizate este următorul:
xi ordin 0 ordin 1 ordin 2 ordin 3
-1
0
2 2,5 0,25
1
16
32 0,75
7,5
32
– 2,25
9,8
–
– 2,157
–
–
–
iar polinomul de interpolare Newton este: 1 314,1 093,0 157,2)(2 3
3 +− + = x x x xN
Deci 635875,0)5,0( )5,0(3= ≅N f
Exerci ții propuse :
4.2.1 Fie tabelul de date:
xi -1 0 1
fi ½ 1 2
Găsiți polinomul de interpolare Newton asociat tabelului de mai sus.
4.2.2 Determinați polinomul de interpolare Newton asociat următorului tabel de date:
4. Interpolare M. Racil ă
92
xi -2 -4/3 0 4/3 2
fi 0 1 2 1 0
4.2.3 Determinați polinoamele de interpolare Lagrange și Newton asociate următoarelor
tabele de date:
xi -1 1 2
fi 2 1 1
xi -1 1 2
fi -2 4 10
xi 0 1/6 1/2 1
fi 0 1/2 1 0
xi 0 1 3 4
fi 1 3 2 6
xi -1 1 2
fi -3 0 1
xi -1 0 4
fi 1 2 0
4.3 Interpolare prin funcții spline cubice
Fie [a,b] un interval din R ș i 𝑎=𝑥0<𝑥1<𝑥2<⋯…..<𝑥𝑛=𝑏 o diviziune a
intervalului [a,b]. Considerăm funcția 𝑓:[𝑎,𝑏]→𝑹pentru care presupunem cunoscute
valorile în nodurile 𝑥0,𝑥1,𝑥2,….,𝑥𝑛: 𝑓(𝑥𝑖)=𝑓𝑖,𝑖=0,1,2,…,𝑛
Tabel 1
𝑥𝑖 𝑎=𝑥0 𝑥1 𝑥2 𝑥3…………….. 𝑥𝑛=𝑏
𝑓𝑖 𝑓0 𝑓1 𝑓2 𝑓3……………… 𝑓𝑛
Definiție: Se numește funcție spline de ordinul "p" o functie 𝑆:[𝑎,𝑏]→𝑹 ce satisface
condițiile:
1) 𝑆(𝑥𝑖)=𝑓𝑖,𝑖=0,1,2,…,𝑛
2) 𝑆(𝑘),𝑘=0,1,2,…,𝑝−1sunt funcții continue pe [a,b]
3) S este polinom cu coeficienți reali de grad p, pe fiecare subinterval [𝑥 𝑖−1,𝑥𝑖], i=1,2,….,n
4. Interpolare M. Racil ă
93
Observație: Pentru p=3, S se numește spline cubic . Discutăm aici cazul spline -ului
cubic.
Notăm cu 𝑆𝑖=𝑆|[𝑥𝑖−1,𝑥𝑖] adică 𝑆𝑖(𝑥)=𝑆(𝑥),∀ 𝑥∈[𝑥𝑖−1,𝑥𝑖],𝑖=1,2,…,𝑛 și cu 𝑢𝑖=𝑆"(𝑥𝑖),
𝑖=0,1,…,𝑛
Vom avea: (*) 𝑆(𝑥)=�𝑆1(𝑥),𝑝𝑒𝑛𝑡𝑟𝑢 𝑥∈[𝑥0,𝑥1]
𝑆2(𝑥),𝑝𝑒𝑛𝑡𝑟𝑢 𝑥∈[𝑥1,𝑥2]
⋮
𝑆𝑛(𝑥),𝑝𝑒𝑛𝑡𝑟𝑢 𝑥∈[𝑥𝑛−1,𝑥𝑛], unde 𝑆1,𝑆2,…..,𝑆𝑛 sunt polinoame de
gradul 3 pe fiecare subinterval [𝑥𝑖−1,𝑥𝑖], i=1,2,….,n
Cum 𝑆𝑖 este polinom de gradul 3, 𝑆𝑖" va fi un polinom de gradul 1, deci el va coincide cu
polinomul său de interpolare Lagrange pe două noduri 𝑥 𝑖−1,𝑥𝑖:
𝑥𝑖 𝑥𝑖−1 𝑥𝑖
𝑆𝑖" 𝑢𝑖−1 𝑢𝑖
𝑆𝑖"(𝑥)=𝑢𝑖(𝑥−𝑥𝑖−1)+𝑢𝑖−1(𝑥𝑖−𝑥)
ℎ𝑖,𝑥∈[𝑥𝑖−1,𝑥𝑖],ℎ𝑖=𝑥𝑖−𝑥𝑖−1,𝑖=1,2,…,𝑛
Integrând de două ori expresia lui 𝑆𝑖", obținem:
𝑆𝑖(𝑥)=𝑢𝑖(𝑥−𝑥𝑖−1)3+𝑢𝑖−1(𝑥𝑖−𝑥)3
6ℎ𝑖+𝛼𝑖𝑥+𝛽𝑖
𝛼𝑖 ș𝑖 𝛽𝑖 obținându- se din condițiile de interpolare: �𝑆(𝑥𝑖−1)=𝑓𝑖−1
𝑆(𝑥𝑖)=𝑓𝑖, adică:
⎩⎪⎨⎪⎧𝑢𝑖−1ℎ𝑖2
6+𝛼𝑖𝑥𝑖−1+𝛽𝑖=𝑓𝑖−1
𝑢𝑖ℎ𝑖2
6+𝛼𝑖𝑥𝑖+𝛽𝑖=𝑓𝑖
Din sistemul de mai sus se obține:
𝛼𝑖=�𝑓𝑖−𝑢𝑖ℎ𝑖2
6�1
ℎ𝑖−(𝑓𝑖−1−𝑢𝑖−1ℎ𝑖2
6)1
ℎ𝑖
𝛽𝑖=−�𝑓𝑖−𝑢𝑖ℎ𝑖2
6�𝑥𝑖−1
ℎ𝑖+(𝑓𝑖−1−𝑢𝑖−1ℎ𝑖2
6)𝑥𝑖
ℎ𝑖
Astfel,
𝑆𝑖(𝑥)=𝑢𝑖(𝑥−𝑥𝑖−1)3+𝑢𝑖−1(𝑥𝑖−𝑥)3
6ℎ𝑖+�𝑓𝑖−𝑢𝑖ℎ𝑖2
6�𝑥−𝑥𝑖−1
ℎ𝑖
+�𝑓𝑖−1−𝑢𝑖−1ℎ𝑖2
6�𝑥𝑖−𝑥
ℎ𝑖,𝑖=1,2,..,𝑛
4. Interpolare M. Racil ă
94
Din condiția de continuitate a funcției S' se obțin relațiile:
𝑢𝑖−1ℎ𝑖
6+𝑢𝑖ℎ𝑖+ℎ𝑖+1
3+𝑢𝑖+1ℎ𝑖+1
6=𝑓𝑖+1−𝑓𝑖
ℎ𝑖+1−𝑓𝑖−𝑓𝑖−1
ℎ𝑖,𝑖=1,2,…,𝑛−1
Acestea din urmă reprezintă un sistem de n-1 ecuații cu n+1 necunoscute: 𝑢 0,𝑢1,𝑢2,…,𝑢𝑛,
pentru a căror determinare avem două cazuri practice:
I: 𝑆"(𝑎)=𝑆"(𝑏)=0,𝑎𝑑𝑖𝑐ă 𝑢0=𝑢𝑛=0. Vom avea deci n- 1 ecuații cu n-1 necunoscute:
𝑢1,𝑢2,…,𝑢𝑛−1
II: �𝑆′(𝑎)=𝑓′(𝑎)=𝑓0′=𝑑𝑎𝑡
𝑆′(𝑏)=𝑓′(𝑏)=𝑓𝑛′=𝑑𝑎𝑡 De aici rezultă încă două ecuații:
𝑢0ℎ1
3+𝑢1ℎ1
6=𝑓1−𝑓0
ℎ1−𝑓0′ si 𝑢𝑛−1ℎ𝑛
6+𝑢𝑛ℎ𝑛
3=𝑓𝑛′−𝑓𝑛−𝑓𝑛−1
ℎ𝑛
adică vom avea n+1 ecuații cu n+1 necunoscute: 𝑢 0,𝑢1,𝑢2,…,𝑢𝑛
In ambele situații, sistemele obținute sunt tridiagonale simetrice, dominant diagonale. Se pot rezolva deci cu metoda de factorizare LR pentru matrice tridiagonale.
Practic, pentru construcția aproximantului spline cubic al unei funcții pentru care cunoaștem
valorile în n+1 noduri (Tabel 1) se procedează astfel:
I:1) Se rezolvă sistemul ( n-1 ecuatii):
𝑢𝑖−1ℎ𝑖
6+𝑢𝑖ℎ𝑖+ℎ𝑖+1
3+𝑢𝑖+1ℎ𝑖+1
6=𝑓𝑖+1−𝑓𝑖
ℎ𝑖+1−𝑓𝑖−𝑓𝑖−1
ℎ𝑖,𝑖=1,2,…,𝑛−1
(4.3.1)
din care aflăm 𝑢1,𝑢2,…,𝑢𝑛−1 (știm pe 𝑥𝑖 𝑑𝑒𝑐𝑖 ș𝑖 𝑝𝑒 ℎ𝑖,i=1,2,..,n și cunoaștem valorile
𝑓𝑖,i=1,2,..,n)
2) Determinăm 𝑆
𝑖(𝑥),i=1,2,..,n cu formulele:
𝑆𝑖(𝑥)=𝑢𝑖(𝑥−𝑥𝑖−1)3+𝑢𝑖−1(𝑥𝑖−𝑥)3
6ℎ𝑖+�𝑓𝑖−𝑢𝑖ℎ𝑖2
6�𝑥−𝑥𝑖−1
ℎ𝑖+�𝑓𝑖−1−𝑢𝑖−1ℎ𝑖2
6�𝑥𝑖−𝑥
ℎ𝑖,𝑖=1,2,..,𝑛
(4.3.2)
în care cunoaștem 𝑥
𝑖,ℎ𝑖,fi,i=1,2,..,n și 𝑢1,𝑢2,…,𝑢𝑛−1 (𝑢0=𝑢𝑛=0) obținute la pasul 1).
3) Se construiește aproximantul spline cubic al funcției f cu formula (*) și funcțiile
𝑆𝑖,𝑖=1,2,..,𝑛 obținute la pasul 2).
II: 1) Se rezolvă sistemul ( n+1 ecuații):
4. Interpolare M. Racil ă
95
⎩⎪⎨⎪⎧𝑢0ℎ1
3+𝑢1ℎ1
6=𝑓1−𝑓0
ℎ1−𝑓0′
𝑢𝑖−1ℎ𝑖
6+𝑢𝑖ℎ𝑖+ℎ𝑖+1
3+𝑢𝑖+1ℎ𝑖+1
6=𝑓𝑖+1−𝑓𝑖
ℎ𝑖+1−𝑓𝑖−𝑓𝑖−1
ℎ𝑖,𝑖=1,2,…,𝑛−1
𝑢𝑛−1ℎ𝑛
6+𝑢𝑛ℎ𝑛
3=𝑓𝑛′−𝑓𝑛−𝑓𝑛−1
ℎ𝑛
(4.3.3)
din care aflăm 𝑢0,𝑢1,𝑢2,…,𝑢𝑛(știm pe 𝑥𝑖 𝑑𝑒𝑐𝑖 ș𝑖 𝑝𝑒 ℎ𝑖,i=1,2,..,n și cunoaștem valorile
𝑓𝑖,i=1,2,..,n)
2) Determinăm 𝑆𝑖(𝑥),i=1,2,..,n cu formulele:
𝑆𝑖(𝑥)=𝑢𝑖(𝑥−𝑥𝑖−1)3+𝑢𝑖−1(𝑥𝑖−𝑥)3
6ℎ𝑖+�𝑓𝑖−𝑢𝑖ℎ𝑖2
6�𝑥−𝑥𝑖−1
ℎ𝑖+�𝑓𝑖−1−𝑢𝑖−1ℎ𝑖2
6�𝑥𝑖−𝑥
ℎ𝑖,𝑖=1,2,..,𝑛
(4.3.4)
în care cunoaștem 𝑥
𝑖,ℎ𝑖,fi,i=1,2,..,n și 𝑢0,𝑢1,𝑢2,…,𝑢𝑛 obținute la pasul 1).
3) Se construiește aproximantul spline cubic al funcției f cu formula (*) și funcțiile
𝑆𝑖,𝑖=1,2,..,𝑛 obținute la pasul 2).
Observații :1)In ambele cazuri, sistemele obținute sunt tridiagonale, simetrice și cu
diagonala strict dominantă. Aceste sisteme se scriu matricial sub forma b A=u , unde:
I :
+++++
=
− −− −− −
3 60 0 0 0 06 3 60 0 0 0… … … … … … …0 0 0
6 3 600 0 0 0
6 3 60 0 0 0 0
6 3
1 11 1 2 24 4 3 33 3 2 22 2 1
n n nn n n n
h h hh h h hh hh hh hh hh hh
A
t
nu uu ) ,….,,(1 2 1 − =u
−−−−−−−−−−−−
=−− −
−−−− −
−− −
22 1
1133 2
22 121 2
32 310 1
212 2
…….. ………. ……….
nn n
nn nnn n
nn n
hf f
hf fhf f
hf fhff
hffhff
hff
b
4. Interpolare M. Racil ă
96
II :
+++
=− −
3 60 0 0 0 06 3 60 0 0 0… … … … … … …0 0 06 3 600 0 0 06 3 60 0 0 0 06 3
1 13 3 2 22 2 1 11 1
n nn n n n
h hh h h hh hh hh hh hh h
A
t
nu uu u ) ,….,,(1 0=
−−−−−−−−−−
=
−−− −
−−
nn n
nnn n
nn no
hf ffhf f
hf fhff
hfffhff
b
1 '22 1
1111 2
22 3'
10 1
…….. ………. ……….
Rezolvarea acestor sisteme se poate face prin orice metodă numerică de aproximare a
soluției unui sistem liniar (Gauss sau LR pentru matrice tridiagonale).
2) In ceea ce privește estimarea erorii acestei metode, a se vedea R. Militaru , M. Popa,
Metode numerice. Note de curs, Ed. Sitech, 2007.
Algoritm (caz I):
Pas Algoritm
Citire: n (nr. de puncte), 𝒙𝒊, 𝑖=0,1,…,𝑛 (punctele în care se știu
valorile ),
𝒇𝒊, 𝑖=0,1,…,𝑛 (valorile func ției în punctele 𝒙𝒊 ),
z (punctul în care se dorește aproximarea valorii funcției)
Se construiește sistemul (4 .3.1)
𝒖𝒊−𝟏𝒉𝒊
𝟔+𝒖𝒊𝒉𝒊+𝒉𝒊+𝟏
𝟑+𝒖𝒊+𝟏𝒉𝒊+𝟏
𝟔
=𝒇𝒊+𝟏−𝒇𝒊
𝒉𝒊+𝟏
−𝒇𝒊−𝒇𝒊−𝟏
𝒉𝒊, pentru i =1,2,…,n
hi = x i – x i-1;
pentru i =1,2,…,n- 1
ai = 2*(h i + h i+1);
pentru i =1,2,…,n- 2
{
bi = h i+1;
4. Interpolare M. Racil ă
97
𝒊=𝟏,𝟐,…,𝒏−𝟏
ci =bi ;
}
pentru i =1,2,…,n- 1
ti = 6*(f i+1 – f i)/hi+1 – 6*(f i – f i-1)/hi ;
Se rezolvă sistemul (4.3.1) (sistem
tridiagonal !) pentru i =1,2,…,n -2
{
ci = c i /ai ;
ai+1 = a i+1 – b i ci ;
}
pentru i =2,3,…,n- 1
ti =ti – c i-1 ti-1 ;
tn-1 = t n-1 / a n-1 ;
pentru i =n -2, n-3,…,1
ti = (t i – b i ti+1) / a i ;
Afișa re intermediar ă :
soluția sistemului (4.3.1) ti , i = 1,2,…, n -1
Se calculeaz ă valoarea aproximativ ă S a
funcției f în z, cu formula (4 .3.2)
pentru i =1,2,…,n
dac ă 𝑧∈[𝑥𝑖−1,𝑥𝑖]
S =𝑡𝑖(𝑧−𝑥𝑖−1)3+𝑡𝑖−1(𝑥𝑖−𝑧)3
6ℎ𝑖+�𝑓𝑖−𝑡𝑖ℎ𝑖2
6�𝑧−𝑥𝑖−1
ℎ𝑖+�𝑓𝑖−1−
𝑡𝑖−1ℎ𝑖2
6�𝑥𝑖−𝑧
ℎ𝑖
Afișa re final ă: S (valoarea aproximativ ă a funcției f în z )
Pentru cazul II, consultați cartea domnului Conf. Univ. Dr. Romulus Militaru :
R. Militaru, M. Popa, Metode numerice în pseudocod. Aplicații, Ed. Sitech, 2013
Exemplu:
1. Găsiți spline -ul cubic S asociat nodurilor următoare:
xi -1 0 1 2
fi -21 1 1 -21
astfel încât 0)2('' )1('' ==− S S .
Soluție:
2 ,1 ,0 ,13 2 1 0 ===−= x x x x
21 ,1 ,1 ,213 2 1 0 −===−= f f f f
3,1 ,1=−=−ixx hi i i deci 3,1 ,1==i hi
3,0 ),(''= = ixS uinot
i
0 0)2('' )1(''3 0==⇒==− u u S S
4. Interpolare M. Racil ă
98
Relațiile (4 .3.1), pentru i=1,2 ne dau:
−−−=++−−−=++
) (61
32
61) (61
32
61
1 2 2 3 3 2 10 1 1 2 2 1 0
f f f f u u uff f f u u u
⇔
−=+−=+
132 4132 4
2 12 1
u uuu
Rezolvăm acest sistem liniar prin metoda lui Gauss, spre exemplu:
−=−=
⇒
−−≈
−−
15416151564
104|4/150132| 1 4
132|41132|14
21
uu
Expresia lui S este următoarea:
∈∈∈
=
],[ ),(],[ ),(],[ ),(
)(
3 2 22 1 21 0 1
xxxxSxxxxSxxxxS
xS
unde:
45945)1(827)1(782
6 6 6) ( ) ()(
3
112
1
0 0102
1
1 1
13
1 03
0 1
1
x x x
hxxhufhxxhufhxxu xxuxS
++++−=−
−++−
−+−+−=
45) 1(827 253)1 (782 208
6 6 6) ( ) ()(
3 3
222
2
1 1212
2
2 2
23
2 13
1 2
2
x x x x
hx xhufhxxhufhx xu xxuxS
−+++−−−=−
−++−
−+−+−=
45)2 (253)1 (945)2 (208
6 6 6) ( ) ()(
3
332
3
2 2322
3
3 3
33
3 23
2 3
3
+−++−−+−−=−
−++−
−+−+−=
x x x
hx xhufhxxhufhx xu xxuxS
4. Interpolare M. Racil ă
99
Exerci ții propuse :
4.3.1 Se dă tabelul:
𝑥𝑖 −1 0 1 2
𝑓𝑖 5 1 1 11
Să se determine spline- ul cubic care aproximează funcția de mai sus în condițiile 𝑆"(−1)=
𝑆"(2)=0.
4.3.2 Se dă tabelul:
𝑥𝑖 −1 0 1 2
𝑓𝑖 -12 2 -6 -36
𝑓𝑖′ 19 – – -35
Să se determine spline -ul cubic care aproximează funcția de mai sus.
4.4 Metoda celor mai mici pătrate – cazul discret
Fie
R],[:→baf ale cărei valori n ifi ,…,2,1 ,= sunt cunoscute în punctele
n ixi ,…,2,1 ,= , b x xan=<<= …1 echidistante sau nu . Procesul de interpolare avea drept
scop construirea unui polinom )(xg ce coincidea cu funcția f pe un sistem de n noduri date
a priori. Gradul lui )(xg era cel mult 1−n , astfel, pentru un număr mare de noduri va fi
dificilă manipularea unui astfel de polinom. În consecință, trebuie să luăm în considerare și
alte metode, în vederea aproximării funcțiilor pe mulțimi discrete de noduri.
Metoda celor mai mici pătrate (m.c.m.m.p.) își propune ca pentru funcțiile tabelate să
determine un aproximant care să aproximeze suficient de bine funcția în orice punct din
intervalul [a, b], fără să coincidă neapărat cu funcția în vreun punct.
Alegerea aproximantului se va face dintr -o familie de funcții liniar independentă,
numită sistem de generatori sau funcții standard și evident forma lui va depinde de familia
din care face parte.
Cea mai comodă alegere pentru aproximant va fi bineînțeles de formă p olinomială.
Elementul de cea mai bună aproximare în sensul celor mai mici pătrate se va determina din condiția de minimizare a abaterii dintre funcția f și aproximantul g :
∑
=− =−n
ii i xg xf gf
12 2)( )( (4. 4.1)
unde∑
==n
iif f
12 2.
4. Interpolare M. Racil ă
100
Căutăm polinomul gca element generat de o familie finită de funcții liniar independente
mϕϕϕ ,…,,2 1 , adică
∑
==m
iiix c xg
1)( )(ϕ (4.4.2)
Coeficienții R∈ic vor fi determinați din condiția de minimizare a erorii de aproximare :
min ) ,…,,(2 1 mc ccR = min2
1 1)( )(∑∑
= =−n
jm
ij ii j x c xf ϕ (4.4.3)
echivalentă cu :
=∂∂=∂∂=∂∂
0……..00
21
mcRcRcR
(4.4.4)
sau
∑∑ ∑
== ==m
in
jn
jj j k j i j k i xfx x x c
1 1 1)()( )()( ϕ ϕϕ , m k,1= (4.4.5)
Considerăm produsul scalar
∑
==n
ii ixvxu vu
1)()( , , R],[:,→bavu (4.4.6)
sau
∑
==n
ii i i pxvxuxp vu
1)()()( , (4.4.7)
pentru cazul în care valorile )(i i xu u= și )(i i xvv= au fost măsurate cu ponderile )(ixp .
4. Interpolare M. Racil ă
101
Observații :
(i) +→R];[:bap este o funcție integrabilă ;
(ii) În general, pverifică relația: ∫=b
adxxp 1 )(
Utilizând produsul scalar (4.4.6) sau (4.4.7 ), sistemul(4.4.5) devine :
==
∑∑
==
m
ip m pi m im
ip pi i
f cf c
111 1, ,.. ………. ………. ………., ,
ϕϕϕϕϕϕ
(4.4.8)
Sistemul de mai sus est e compatib il determinat , deoarece determinantul său
0
, … ,.. ………. ………. ………., … ,
11 1 1
≠
pm m p mpm p
ϕϕϕϕϕϕϕϕ
este determinant ul Gramm al elementelor liniar independente mϕϕϕ ,…,,2 1 .
Coeficiențiimc cc ,…,,2 1 vor fi s oluțiile sistemului (4.4.8) , a cărui rezolvare nu pune în
principiu nicio problemă, dat fiind faptul că matricea sistemului este simetrică.
Metoda celor mai mici pătrate – utilizarea polinoamelor algebrice
Vom alege funcțiile standard date prin polinoame algebrice. O posibilitate este următoarea :
m i x x xi
i ,2 , )( ,1)(1
1 == =−ϕ ϕ (4.4.9)
Ecuațiile sistemului (4.4.5) devi n:
4. Interpolare M. Racil ă
102
===
∑∑∑∑∑∑∑∑∑
== =− −+== =+== =
m
in
jn
jjm
jim
j im
in
jn
jjji
j im
in
jn
jji
j i
fx x cfx x cf x c
1 1 11 11 1 111 1 1
… ………. ………. ……….
(4.4.10)
undenx xx ,…,,2 1 sunt punctele în care cunoaștem fenomenul fizic studiat .
Exemplu :
Aproximați liniar, prin metoda celor mai mici pătrate, funcția dată de tabelul următor :
xi 0 1 2
fi 1 2 3
pi 1 0,2 1
Soluție: Polinomul de aproximare va avea forma:
xcc xg2 1)(+=
Funcțiile standard vor fi :
==
x xx
)(1)(
21
ϕϕ
Fie
=
111
~1ϕ ,
=
210
~
2ϕ ,
=
321
~f
Sistemul ce trebuie rezolvat este:
4. Interpolare M. Racil ă
103
p pp p
2 2 1 22 1 1 1
~,~ ~,~~,~ ~,~
ϕϕϕϕϕϕϕϕ
21
cc=
pp
ff
11
~,~~,~
ϕϕ
unde:
2,2)(~,~3
12
1 1 1 = =∑
=ii i px pϕ ϕϕ
p
ii i i px x p1 23
12 1 2 1~,~2,2)()(~,~ϕϕ ϕϕ ϕϕ == =∑
=
2,4)(~,~3
12
2 2 2 = =∑
=ii i px pϕ ϕϕ
4,4)()(~,~3
11 1 = =∑
=ii i ipx xfp f ϕ ϕ
4,6)()(~,~3
12 2 = =∑
=ii i ipx xfp f ϕ ϕ
Obținem sistemul:
2,42,22,22,2
21
cc=
4,64,4
Utilizând o metodă numerică de rezolvare a sistemelor, spre exemplu Gauss, se obține:
x xg cc +=⇒== 1)( 12 1
Exerci ții propuse :
4.4.1 Determinați polino amel e de interpolare Lagrange și Newton asociat e următorului tabel
de date:
xi -1 0 1
fi 8 3 6
4.4.2 Fie 𝑓:𝑹→𝑹, 𝑓(𝑥)=𝑒𝑥. Găsiți polinomul interpolant al lui f în punctele – 1, 0, 1.
4. Interpolare M. Racil ă
104
4.4.3 Fie𝑓(𝑥)=sin𝑥și punctele 𝑥0=0,𝑥1=𝜋
2,𝑥2=𝜋. Găsiți polinomul interpolant al
acestei funcții, prin metoda directă, apoi utilizând Lagrange și Newton.
4.4.4 Fie 𝑓(𝑥)=sin𝑥și punctele 𝑥0=0,𝑥1=𝜋
2,𝑥2=𝜋,𝑥3=3𝜋
2. Găsiți polinomul
interpolant al acestei funcții, prin metoda directă, apoi utilizând Lagrange și Newton.
4.4.5 Determinați polinoamelede interpolare Lagrange și Newton asociate următorului tabel
de date:
xi 1 2 3 4 5
fi 0,9 1,5 3,5 4,2 4,9
4.4.6 Fie tabelul de date :
xi 0 1 2 3
fi 2 1 2 3
Construiți polinomul care interpolează aceste puncte prin metoda directă, apoi utilizând
Lagrange și Newton.
4.4.7 Fie 𝑓(𝑥)=cos𝑥și punctele 𝑥0=0,𝑥1=𝜋
2,𝑥2=𝜋. Găsiți polinomul interpolant al
acestei funcții, prin metoda directă, apoi utilizând Lagrange și Newton.
4.4.8 Fie 𝑓(𝑥)=cos𝑥și punctele 𝑥0=0,𝑥1=𝜋
2,𝑥2=𝜋,𝑥3=3𝜋
2. Găsiți polinomul
interpolant al acestei funcții, prin metoda directă, apoi utilizând Lagr ange și Newton.
4.4.9 Fie tabelul de date :
xi -1 0 1 2
fi 2 1 2 3
Construiți polinomul care interpolează aceste puncte prin metodele Lagrange și
Newton.
4.4.10 Aceeași problemă pentru tabelul de date următor :
xi -1 0 1
fi e 1 e
4. Interpolare M. Racil ă
105
4.4.11 Fie tabelul următor :
xi -1 0 1
fi α β α
a. Construiți polinomul de interpolare P, folosind metoda direct ă, apoi Lagrange și
Newton.
b. Dacă α = β, cât este gradul lui P ?
c. Arătați că polinomul P este par. Poate avea P gradul 1 ?
4.4.12 Fie 𝑓:𝑹→𝑹, 𝑓(𝑥)=1+𝑥3
a. Determinați polinomul P0 ce interpolează funcția f în punctul x 0 = 0 ;
b. Determinați polinomul P1 ce interpolează funcția f în punctulele x0 = 0, x 1 = 1;
c. Determinați polinomul P2 ce interpolează funcția f în punctulele x 0 = 0, x 1 = 1,
x2 = 2;
d. Determinați polinomul P3 ce interpolează funcția f în punctulele x 0 = 0, x 1 = 1,
x2 = 2, x3 = 3;
e. Pentru n > 3, determinați polinomul Pn ce interpolează funcția f în punctulele
x0 = 0, x 1 = 1,…, x n = n. Ce observați ?
4.4.13 Speranța de viață într -o țară a evoluat în timp conform tabelului următor:
An 1975 1980 1985 1990
Speranța 72,8 74,2 75,2 76,4
Utilizați interpolarea Lagrange pentru a estima speranța de viață î n 1977, 1983 și
1988. Comparați -o cu o interpolare folosind splineul cubic. Ce observați ?
5. Aproximarea numeric ă a integralelor M. Racil ă
106
5. Aproximarea numeric ă a integralelor
Obiective: * Cunoașterea unor metode numerice de tip Newton- Côtes pentru
calculul aproximativ al integralelor
* Cunoașterea formulelor pentru aproximarea integralelor duble
Vom studia în acest capitol câteva metode numerice pentru evaluarea unei integrale de
forma
∫b
adxxf)( (5 .1)
presupunând că f este integrabilă.
Există multe situații în inginerie și nu numai, în care este foarte dificilă găsirea unei
primitive F pentru o funcție f. In alte situații, chiar daca a fost găsită o astfel de primitivă, ea
este dificil de utilizat. De asemenea, pot să apară situații în care o funcție este cunoscută prin
valorile sale într -un număr de puncte și deci nu putem vorbi de cunoașterea primitivei
acesteia.
In toate aceste situații avem neîndoit nevoie de o aproximare a integralei (5 .1).
Ideea de bază est e aceea de a aproxima ∫b
adxxf)( printr -o relație de forma:
∫b
adxxf)( = ∑
=n
ii ixfc
0)( + E(ƒ), (5 .2)
undeicsunt niște coeficienți, ixsunt noduri echidistante ce constituie o diviziune a intervalului
],[bași )(fE reprezintă restul (eroarea) metodei de aproximare numerică.
Pentru fiecare metodă, restul (eroarea) este specific(ă), coeficiențiiicși nodurileixfiind
aleși astfel încât restul să fie nul atunci când funcția este înlocuită cu un anume polinom de
grad m.
Există mai multe tipuri de metode de aproximare (de tip Newton -Côtes, Tchebycheff sau
Gauss). Noi ne vom opri atenția în acest capitol asupra metodelor de tip Newton -Côtes
(pentru celelalte metode a se vedea R. Militaru , M. Popa, Metode numerice. Note de curs,
Ed. Sitech, 2007).
Aceste metode permit evaluarea integralei∫b
adxxf)( unde fnu este cunoscută explicit,
ci doar valori ale acesteia în câteva puncte.
5. Aproximarea numeric ă a integralelor M. Racil ă
107
5.1 Metoda trapezului
Ideea de bază a metodei constă în aproximarea funcției f prin polinomul de interpolare
Lagrange asociat nodurilor a și b .Astfel,
abaxbfbabxaf xL xf−−+−−=≈ )( )( )( )(
de unde :∫b
adxxf)(≈∫−−b
adxbxbaaf) ()( + ∫−−b
adxaxabbf) ()( = [ ])( )(2bf afab+−
Deci:
∫b
adxxf)(≈[ ])( )(2bf afab+−
Interpretare geometrică : Membrul drept reprezintă aria trapezului având )(),( bfaf drept
baze ș i înălțimea egală cu ) (ab−.
Pentru estimarea erorii acestei metode a se vedea R. Militaru , M. Popa, Metode
numerice. Note de curs, Ed. Sitech, 2007.
In cele ce urmează vom considera o diviziune a intervalului ],[ba, dată prin punctele
n iihxxi ,0 ,0=+= cu bxa xn==,0 și nabh−= . Atunci:
∫b
adxxf)( = ∫1
0)(x
xdxxf + ∫2
1)(x
xdxxf + … + ∫
−n
nx
xdxxf
1)( =
=∑∫
=−≈n
ix
xi
idxxf
11)( [ ] ∑
=−−
+−n
ii ii ixf xfxx
111)( )(2
Cum h xxi i=−−1 rezultă că:
∫b
adxxf)(≈[ ])( )(2…)(2)(21 1 0 n n xf xf xf xfh+ +++− (5.1.1)
5. Aproximarea numeric ă a integralelor M. Racil ă
108
Dacă notăm cu )(" max
],[2 xf M
bax∈= se poate demonstra ( veziR. Militaru , M. Popa,
Metode numerice. Note de curs, Ed. Sitech, 2007) că eroarea metodei satisface:
223
12) ()(nMabfET−≤ (5.1.2)
Algoritm :
În practică, dacă impunem o anume precizieεpentru evaluarea integralei∫b
adxxf)( , etapele
sunt următoarele:
1. Determinăm cel mai mic număr N∈n astfel încât:
εε12) (
12) (23
223MabnnMab −>⇔<−
(practic, alegem 112) (23
+
−=εMabn )
2. Fiind determinați nșinabh−= , aproximăm integrala dată cu ajutorul formulei (5 .1.1):
∫b
adxxf)(≈
+ +∑−
=)()( 2)(
21
10 nn
ii xf xf xfh
Pas Algoritm Trapez
Citire: a,b, eroarea 𝜺
declararea funcției f
Se aproximează integrala cu formula
∫b
adxxf)(≈[ ])( )(2bf afab+− n = 1;
T = (f(a) + f(b))*(b – a) /2;
Se dublează numărul de puncte și se
folosește formula ( 5.1.1 ) pentru
aproximarea integralei, repetându- se
procedeul până când se obține o
aproximare convenabilă (pentru eroarea
dată):
∫b
adxxf)(≈
[ ])( )(2…)(2)(21 1 0 n n xf xf xf xfh+ +++− repetă
{ n = 2*n ;
h = (b – a)/n ;
Tnew = T;
S = 0;
pentru i =1,2,…,n- 1
S = S + f(a + i*h) ;
T = (f(a) + 2*S + f(b))*h/2 ;
}
până când (|𝑇−𝑇𝑛𝑒𝑤|≤𝜀) ;
5. Aproximarea numeric ă a integralelor M. Racil ă
109
Afișa re: Valoarea T a integralei, ob ținută cu precizia 𝜺
5.2 Metoda lui Simpson
In acestcaz, aproximăm funcția fprintr -un polinom de interpolare Lagrange asociat
nodurilor bbaca ,2,+= .
Atunci:
∫b
adxxf)(≈∫
−−−− b
a bacabxcxaf) )( () )( ()( + ) )( () )( ()(cbabcxaxbf−−−− +
+ dxbcacbxaxcf
−−−−
) )( () )( ()( + SE(ƒ),
SE(ƒ) fiind eroarea în formula lui Simpson.
Formula lui Simpson se obține în situația ],[4baCf∈ . Astfel,
)( )(24)(6 )( fE bfbaf afabdxxfSb
a+
+++−≈∫
Formula lui Simpson generalizată se obține considerând o diviziune a intervalului ],[badată
prin punctele n iihxxi ,0 ,0=+= bxa xn==,0 șinabh−= .
Atunci:
∫b
adxxf)(≈∫1
0)(x
xdxxf + ∫3
2)(x
xdxxf + … + ∫−n
nx
xdxxf
1)( =
=
+
++−)(24)(611 0
00 1xfxxf xfxx + )()1(f ES +
+
+
++−)(24)(622 1
11 2xfxxf xfxx + )()2(f ES + … +
+
+
++−−
−−)(24)(61
11
nn n
nn nxfx xf xfx x+ )()(f En
S =
5. Aproximarea numeric ă a integralelor M. Racil ă
110
)( …)( )( )(24)( 2)(6
)( )2()1(1
1 11
0
f E f Ef E xfx xf xf xfh
n
S SS nn
in
ii i
i
+++++
+
++ + =∑∑−
= =−
unde
n ixx xx f f Ei i i i i ii
S ,1),,( ,) )((28801)(15
1IV )(= ∈ − −=− −ξ ξ (vezi R. Militaru , M. Popa,
Metode numerice. Note de curs, Ed. Sitech, 2007)
Notând prin
)( )()0(f E fES S= + )()2(f ES + … + )()(f En
S =
= [ ])( …)( )(2880IV
2IV
0IV5
n f f fhξ ξξ +++ −
cum IVfeste continuă pe ],[ba, rezult ă că există ),(ba∈ξ astfel încât
ƒIV(ξ) = )( …)( )(IV
2IV
0IV
nf f fnξ ξξ +++, de unde
)(2880)(IV5
ξ nfhfES ⋅−= = )(2880) (IV
45
ξfnab⋅−−
Dacă notăm cu )( maxIV
],[4 xf M
bax∈= obținem estimarea:4 45
2880) ()( MnabfES−≤
Algoritm :
Pentru a asigura o precizie datăεîn aproximarea integralei∫b
adxxf)( prin metoda lui
Simpson, etapele sunt următoarele:
1. Determinăm cel mai mic număr N∈n astfel încât:
445
445
2880) (
2880) (
εεMabnnMab −>⇔<− (5.2.1)
(practic, alegem 12880) (445
+
−=εMabn )
5. Aproximarea numeric ă a integralelor M. Racil ă
111
2. Fiind determinați nșinabh−= , aproximăm integral dată cu ajutorul formulei :
∫b
adxxf)(≈
+
++ +∑∑
=−−
=)(
24)( 2)(
6111
10 nn
ii in
ii xfx xf xf xfh (5.2.2)
Definiție : Un algoritm se numește stabil dacă mici variații ale datelor inițiale generează
mici variații în rezultatele finale.
Propoziție: Algoritmul metodei Simpson este stabil.
Pas Algoritm Simpson
Citire: a,b, eroarea 𝜺
declararea func ției f
Se aproximează integrala cu formula
+++−≈∫)(24)(6 )( bfbaf afabdxxfb
a n = 1;
IS = (f(a) + 4*f((a+b)/2)+ f(b))*(b – a)/6;
Se dublează numărul de puncte și se
folosește formula ( 5.2.2 ) pentru
aproximarea integralei, repetându- se
procedeul până când se obține o
aproximare convenabilă (pentru eroarea
dată):
∫b
adxxf)(≈
+
++ +∑∑
=−−
=)(24)( 2)(6111
10 nn
ii in
ii xfx xf xf xfh repetă
{ n = 2*n ;
h = (b – a)/n ;
ISnew = IS ;
S1 = 0;
pentru i =1,2,…,n- 1
S1 = S 1 + f(a + i*h) ;
S2 = 0;
pentru i =0,1,…,n- 1
S2 = S 2 + f(a + i*h + h/2 ) ;
IS = (f(a) + 2*S 1 + 4*S 2 + f(b))*h/6 ;
}
până când (|𝐼𝑆−𝐼𝑆𝑛𝑒𝑤|≤𝜀) ;
Afișa re: Valoarea IS a integralei, ob ținută cu precizia 𝜺
5.3 Metoda lui Newton
Fie ],[4baCf∈ și diviziunea ,2 1 bxxa <<< astfel încât 2,1 ,3 =−+= iabiaxi .
Formula de integrare a lui Newton este dată prin:
5. Aproximarea numeric ă a integralelor M. Racil ă
112
[ ]
),( )(6480) ()( )(3)(3)(8)(5
2 1
bafabbf xf xf afabdxxfIVb
a
∈−−+++−≈∫
ξξ,
Fie o diviziune a intervalului ],[badată prin punctele echidistante n iihxxi ,0 ,0=+=
bxa xn==,0 șinabh−= . Impărțim fiecare interval ],[1 i ixx− în trei părți egale, prin
intermediul punctelor n ixxi i ,1,,'' '= .
Făcând suma, obținem:
−
+ + ++−≈∫ ∑∑∑−
= = =b
an
in
in
ii i i xf xf xf bf afnabdxxf1
1 1 1'' ')( 3)( 3)( 2)( )(8)(
– )(6480) (
45
ξIVfnab−, ),(ba∈ξ
Considerând445
6480) (
εMabn−≥ , valoarea integralei cu precizia 0>ε dată este următoarea:
++
+ + ++∑∑−
= =1
1 1 32
33)( 2)( )(8n
in
ii i ihxfhxf xf bf afh
Algoritm :
Algoritmul de calcul, cu o precizie ε, pentru metoda lui Newton este următorul:
1. Determinăm cel mai mic număr N∈n astfel încât:
4 45
445
6480) (
6480) (
εεMabnnMab −>⇔<−
(practic, alegem 16480) (445
+
−=εMabn )
2. Fiind determinați nșinabh−= , aproximăm integrala dată cu ajutorulformulei :
5. Aproximarea numeric ă a integralelor M. Racil ă
113
++
+ + ++∑∑−
= =1
1 1 32
33)( 2)( )(8n
in
ii i ihxfhxf xf bf afh
Propoziție: Algoritmul lui Newton este stabil.
Pentru algoritmul acestei metode, consultați cartea domnului Conf. Univ. Dr.
Romulus Militaru : R. Militaru, M. Popa, Metode numerice în pseudocod. Aplicații,
Ed. Sitech, 2013.
5.4 Evaluarea numeric ă a integralelor duble pe un triunghi
Fie R :→Df o funcție integrabilă pe2R⊂D , domeniu 2D. Scopul este acela de a aproxima
integrala dublă∫∫=
Ddxdyyxf fI ),( )( printr -o sumă finită de forma:
)( ),( )(,
0,fR yxfc fInm
jij i ij + =∑
=
undeijcsunt niște coeficienți, iar punctele ),(j iyx sunt nodurile formulei.
Fie K un triunghi având vârfurile 3,1 ),,(=iyxVi i i .
Notăm în cele ce urmează cu )(Af valoarea ),(A Ayxf undeA Ayx ,sunt coordonatele punctului
A.
Dăm în continuare două din formulele de aproximare pentru integralele duble pe un
triunghi :
dxdyyxf
K∫∫),( =( ) )( )( )( )(3'
3'
2'
1 fR Vf Vf VfS+++
unde 3,1 ),,('=iyxVi i i sunt mijloacele laturilor triunghiului K, opuse vârfurilor 3,1 ),,(=iyxVi i i
iar S este aria triunghiului K.
( ) )( )(9)( )( )(12),(3 2 1 fR Gf Vf Vf VfSdxdyyxf
K++++ =∫∫
unde G este centrul de greutate al triunghiului K .
Formulele ce vor fi prezentate în cele ce urmează, permit aproximarea integralelor
duble definite pe domenii2R⊂D , oarecare, prin intermediul unei discretizări constituite din
triunghiuri.
5. Aproximarea numeric ă a integralelor M. Racil ă
114
Definiție: Fie 2R⊂D un domeniu șiTo discretizare a lui Dprin triunghiuri. Spunem
că Teste o discretizare a lui Ddacă pentru două triunghiuri oarecare și diferite2 1,KK din T,
intersecția2 1K K∩ este fie vidă, fie un vârf comun, fie o latură comună.
Dacă notăm cuNEnumărul de elemente ale discretizării Tatunci:
(i) vidă multimeasau latură osau nodun =∩j iK K (ii) D KNE
ii=
=U
1
Observație: Dacă frontiera domeniului este o curbă, este indicat a se considera un
număr suficient de puncte pe aceasta, astfel încât linia poligonală constituită din acestea să
aproximeze suf icient de bine frontiera.
Tinând cont de proprietatea de aditivitate a integralei, rezultă:
∑∫∫ ∫∫
=≈NE
i K Didxdyyxf dxdyyxf
1),( ),(
unde∫∫
iKdxdyyxf ),( va fi calculată cu ajutorul uneia din formulele anterior prezentate.
Exemple:
1. Calculați cu o eroare de 0,01 : ∫2
1 lndxxx , utilizând metoda trapezului.
Soluție:
x xf x xfxxxf /1)('' ,1 ln)(' ,ln )( = += =
01,0 ,1)('' sup
]2,1[== =
∈ε
xxf M .
Atunci 3112100=+
=n
31=h
și deci 2 ,3/5 ,3/4 ,13 2 1 0 ==== x x x x
5. Aproximarea numeric ă a integralelor M. Racil ă
115
() ( ) 6426,0 261ln3 2 1 02
1≈+++≈∫f ff f xdxx
2. Calculați valoarea integralei∫2
1lndxxxcu două zecimale exacte, utilizând metoda lui
Simpson.
Soluție:
5ln24 50)( ,ln)(xxxfxxxfIV +−= =
001,0 ,50)( sup
]2 ,1[== =
∈ε xf MIV
x Atunci 31288050000
4 =+
=n
Deci31=h și deci
6/112,2/32 ,6/72 ;2 ,3/5 ,3/4 ,13 2 2 1 1 0
3 2 1 0 =+=+=+====xx xx xxx x x x
Aplicând formula lui Simpson rezultă:
∫2
1lndxxx≈
+
++ +∑∑
=−
=)(
24)( 2)(
633
112
10 xfx xf xf xfh
ii i
ii
=
+
++
++
++++ )( )
2 2 2(4) (2)(
18133 2 2 1 1 0
2 1 0 xfxxfxxfxxf ff xf
Așadar, 24018,0ln2
1≈∫dxxx
3. Calculați valoarea integralei ∫+1
02) 1(24 xdxcu patru zecimale exacte, prin metoda lui Newton.
Soluție:
524 2
2) 1(5 101)( ,) 1(241)(xx xxfxxfIV
++−=+=
00001,0 ,1)( sup
]1 ,0[== =
∈ε xf MIV
x. Atunci, 21
6480100000
4 =+
=n
In consecință, 21=h și deci
5. Aproximarea numeric ă a integralelor M. Racil ă
116
6/53/2 ,3/23/ ,3/13/2 ,6/13/ ;1 ,2/1 ,0
1 1 0 02 1 0
=+=+=+=+===
h x hx h x hxx x x
Cu ajutorul formulei lui Newton rezultă:
∫+1
02) 1(24 xdx= 2 ,32
33)( 2)( )(81
1 1=
+++ + ++∑∑−
= =nhxfhxf xf bf afhn
in
ii i i
032725,0) 1(241
02≈+∫xdx
4. Aproximați valoarea integralei∫∫−
Kdxdyy xy2unde Keste triunghiul ce are vârfurile
)1,1(),1,10(),0,0(3 2 1 V V V .
Soluție:
2),( y xy yxf −=
Cu prima formulă de aproximare, avem:
( )
426,5
21,5
21,
211,
211
2495,4 )( )( )(
3'
3'
2'
1
=
+
+
==++ ≈
f f fVf Vf VfSI
Cu cea de a doua formulă de aproximare:
( )
89,532,31193124,495 )(9)( )( )(123 2 1
=
+ ==+++ ≈
fGf Vf Vf VfSI
Valoarea exactă a integralei este 09181,6=I .
Exerciții propuse :
5.1 Calculați cu o eroare de 0,01integrala următoare:
∫−1
02dxex
5. Aproximarea numeric ă a integralelor M. Racil ă
117
utilizând metoda trapezului.
5.2 Aproximați valorile integralelor următoare:
a) 001,0 11
03=+∫εxdx b) 00001,0 42
0=+∫εxdx c) 0001,0 11
0=+∫ε dxxx
prin metoda lui Simpson, cu precizia indicată.
5.3 Aproximați următoarea integrală dublă :∫∫+Ddxdy
xy xy
) 1(,
{ }]1;0[ ],3;1[|),( ∈∈ = y xyx D
5.4 Estimați ∫𝑓(𝑥)𝑑𝑥5
2
0 plecând de la datele următo are:
x 0 1/2 1 3/2 2 5/2
f(x) 3/2 2 2 1,6364 1,25 0,9565
utilizând metoda trapezelor.
5.5 Considerăm integrala 𝐼 =∫1
𝑥𝑑𝑥2
1.
a. Calculați valoarea exactă a lui I;
b. Evaluați numeric această integrală prin metoda trapezelor, cu 3 subintervale;
c. Ce număr de subintervale trebuie folosit, astfel încât să avem o eroare inferioară lui 10-4 ?
5.6 Considerăm integrala 𝐼 =∫ln𝑥𝑑𝑥2
1.
a. Evaluați numeric această integrală prin metoda trapezelor, cu 4 subintervale și comparați
rezultatul cu valoarea exactă;
b. Ce număr de subintervale trebuie ales , astfel încât să avem o eroare inferioară lui 10-2 ?
5. Aproximarea numeric ă a integralelor M. Racil ă
118
Nume
metodă Puncte de
interpolare Polinomul de interpolare Formula de aproximare
TRAPEZ a, b
abaxbfbabxaf xP−−+−−≈ )( )( )(1 ∫b
adxxf)( ≈ [ ])( )(2bf afab+−
∫b
adxxf)( ≈ [ ])( )(2…)(2)(21 1 0 n n xf xf xf xfh+ +++−
SIMPSON a,
(a+b)/2,
b ) )( () )( ()( )(2bacabxcxaf xP−−−−≈+
) )( () )( ()(cbabcxaxbf−−−−+
) )( () )( ()(bcacbxaxcf−−−−
+
++−≈∫)(24)(6 )( bfbaf afabdxxfb
a
+
++ + ≈ ∑∑ ∫
=−−
=)(
24)( 2)(
6)(
111
10 nn
ii in
iib
axfx xf xf xfhdxxf
NEWTON a,
x1=a+h/3,
x2=a+2h/3,
b
) )( )( () )( )( ()() )( )( () )( )( ()() )( )( () )( )( ()() )( )( () )( )( ()( )(
2 12 12 2 1 21
2
1 2 1 12
12 12 1
3
abxbxbaxxxxxbfb xa xx xbxaxxxxfbxx xaxbxxxaxxfbaxaxabxxxxxaf xP
−−−−−−+−−−−−−+−−−−−−+−−−−−−≈
[ ])( )(3)(3)(8)(2 1 bf xf xf afabdxxfb
a+++−≈∫
++
+ + ++ ≈∑∑ ∫−
=−
=1
11
0 32
33)( 2)( )(8)(n
in
ii i ib
ahxfhxf xf bf afhdxxf
6. Ecua ții diferen țiale M. Racil ă
119
6. Aproximarea numeric ă a solu țiilor ecua țiilor
diferen țiale
Obiective: * Cunoașterea metode lor Euler și Runge Kutta pentru aproximarea
numerică a soluțiilor ecuațiilor diferențiale
* Cunoașterea metodei diferențelor finite pentru probleme de tip Sturm –
Liouville
* Cunoașterea metodei diferențelor finite pentru probleme de tip eliptic
Ecuațiile diferențiale (ca și cele cu derivate parțiale) constituie modele matematice
pentru diverse probleme practice din inginerie, precum studiul câmpului electric sau termic,
propagarea undelor, curgerea fluidelor și multe altele.
Dacă uneori este d ificilă găsirea unei primitive pentru o funcție dată, atunci este
evident că poate fi cu atât mai dificilă găsirea soluției unei ecuții diferențiale.
In funcție de condițiile la limită pentru aceste tipuri de ecuații, pot exista două tipuri de
probleme :
(i) Condiții Cauchy : cunoaștem într -un punct 0x valoarea funcției necunoscute și a
derivatelor sale, până la ordinul cel mai mare ce apare în ecuație;
(ii) Condiții la limită : cunoaștem valorile funcției necunoscute în câteva puncte diferite.
In cele ce urmează vom expune câteva metode de aproximare a soluției unei ecuații
diferențiale, metode ce pot fi algoritmizate ușor, în vederea utilizării lor cu ajutorul calculatorului. Pentru ecuațiile diferențiale de ordinul I, acestea pot fi clasific ate în două
categorii:
– metode cu un pas , pentru care determinarea valorii aproximative a soluției ecuației în
fiecare punct se obține direct, plecând de la informațiile din punctul precedent.
-metode multipas, pentru care determinarea valorii aproximative a soluției ecuației într -un
punct se obține plecând de la informațiile din mai multe puncte anterioare.
6.1 Metode de tip Euler
Fie problema Cauchy sub forma explicită:
==
0 0)(),( )('
y xyyxf xy (6.1.1)
Pentru asigurarea existenței unei soluții pentru această ecuație, vom face apel la
Teorema lui Arzelâ, pe care o vom aminti în cele ce urmează:
6. Ecua ții diferen țiale M. Racil ă
120
Teorema lui Arzelà : Dacă feste o funcție continuă pe dreptunghiul
{ }b yyaxx xyx D ≤−+≤≤ =0 0 0 , |),( atunci problema (6.1.1) admite cel puțin o soluție
)(xy, }/, min{ ], ,[)(0 0 Mba hhxxx =+∈∀ , unde ),( sup
),(yxf M
Dyx∈= .
Unicitatea soluției este asigurată de Teorema următoare:
Teorema Cauchy -Lipschitz : Dacă în plus funcția ),(yxf este lipschitziană în
raport cu y, adică:
0 , ),( ),(2 1 2 1 >−< − kyyk yxf yxf
atunci soluția )(xy a problemei (6 .1.1) este unică. Î n plus, în domeniul definit anterior, )(xy
este continuă.
În cele ce urmează, printr -o problemă “ bine definită” vom desemna o problemă ce
satisface proprietățile următoare:
– soluția există
– soluția este unică
– soluția depinde în mod continuu de condițiile inițiale
Definim pe domeniul D un câmp de direcții, considerând în fiecare punct DyxM∈),(
direcția ),( yxf arctg=α , αfiind unghiul făcut de această direcție cu sensul pozitiv al axei
OX.
Interpretare geometrică : Profilul graficului soluției exacte )(xy a problemei ( 6.1.1) este
tangent în fiecare punct al său direcției câmpului în punctul considerat.
Scopul metodei lui Euler este aproximarea soluției exacte )(xy printr -o linie
poligonală în care fiecare segment este coliniar cu direcția câmpului definit de extremitatea
sa stângă.
Fie n i ihxxi ,…,2,1,0 ,0=+= , noduri echidistante. Ecuația dreptei ce trece prin ),(0 0 0 yxM
având direcția ),( 0 0yxf arctg este următoarea:
) )(,(0 0 0 0 xxyxf yy − += (6 .1.2)
6. Ecua ții diferen țiale M. Racil ă
121
Expresia ( 6.1.2) constitue aproximarea soluției )(xy pe intervalul ],[1 0xx . Atunci, valoarea
aproximativă a soluției )(xy în punctul 1xva fi:
0 0 0 1 0 0 0 1 ) )(,( hfy xxyxf y y +=− += unde ),(0 0 0 yxf fnot
=
In aceeași manieră, presupunând că în punctul ix valoarea aproximativă a soluției este iy,
obținem expresia aproximată a soluției )(xy pe intervalul ],[1+i ixx :
) ( ) )(,(i i i i i i i xxf y xxyxf yy −+=− +=
de unde valoarea aproximativă a lui )(xy în punctul 1+ix:
i i i hfy y+=+1 (6.1.3)
Această aproximare este de asemenea justificată de Teorema următoare:
Teoremă:
(a) Dacă ],[2baCy∈ atunci ) ,( )(1 hxx+∈∃ξ astfel încât
)(''2)(')() (
1ξyhxyhxy hxy+=−+ (6 .1.4)
(b) Dacă ],[2baCy∈ atunci ), ( )(1 xhx−∈∃ξ astfel încât
)(''2)(') ()(
1ξyhxyhhxyxy−=−− (6 .1.5)
Notând cuiyvaloarea aproximativă a soluției exacte )(xy a problemei (6 .1.1) în
punctul ix, algoritmul de calcul al metodei lui Euler este următorul:
1 ,…,2 ,1 ,0 ),(
11 − =
+=+==
++ n i
hfy yhx xyxff
i i ii ii i i
(6.1.6)
6. Ecua ții diferen țiale M. Racil ă
122
Algoritm Euler:
Pas Algoritm Euler
Citire: n (nr. de puncte), 𝒙𝒊, 𝑖=0,1,…,𝑛, (punctele în care
se dorește aproximarea soluției ),y[0], eroarea ε
declară funcția f
Se aproximează valorile y1, y2, …, y n
în punctele dorite, cu precizia ε,
folosind algoritmul (6 .1.6) și tactica
de înjumătățire a pasului h.
Afișa re: (valoarea aproximativ ă a
soluției într -un punct este afișată de
îndată ce este calculată – pentru
optimizarea memoriei ) i=0;
repetă
{
u=x[i];
uu=x[i+1];
v=y[i];
h=uu- u;
vv=v+h*f(u,v);
repetă
{ h=h/2;
aux=vv;
cât timp (u<uu)
{ v=v+h*f(u,v);
u=u+h; }
vv=v;
u=x[i];
v=y[i];
}
până când ( |vv -aux|<=eps );
y[i+1]=vv;
valoarea aproximativ ă a soluției în punctul uu este
vv;
i=i+1;
}
până când (i=n);
Observație: Metoda poate fi aplicată și dacă nodurile nu sunt echidistante, având la
fiecare iterație un alt pas de integrare h.
Eroarea metodei lui Euler este de ordinul )(hO , așadar, metoda lui Euler este o metodă de
ordinul I.
6. Ecua ții diferen țiale M. Racil ă
123
Metoda lui Euler modificată
Pe intervalul ],[1+i ixx considerăm direcția segmentului 1+i iMM dată de direcția
câmpului definită de mijlocul segmentului. Astfel, obținem metoda lui Euler modificată.
Dacă i iyx, sunt valori calculate, atunci procesul iterativ este următorul:
1 ,…,2 ,1 ,0
,22),(
21 121
21
2121211
− =
+=
=+=+==+=
++++ ++++
n i
hfy yy xf ffhy yhx xyxffhx x
ii ii i ii iiiii i ii i
(6.1.7)
Eroarea metodei lui Euler modificată este de ordinul )(2hO , așadar, metoda lui Euler
modificată este o metodă de ordinul II.
Exemplificare – schema de calcul : EULER ( pentru 3 noduri )
xi x0 x1 x2 x3
yi y0 y1 y2 y3
h f(xi,yi) f(x0,y0) f(x1,y1) f(x2,y2)
Datele de intr are sunt reprezentate în roșu, cele de ieșire în verde, iar datele obținute prin
calcule intermediare sunt reprezentate în albastru.
Se completează fiecare coloană în parte , până se determină toate valorile aproximative ale
soluției în punctele dorite, folosind formulele:
y1 = y 0 +h f(x 0,y0) ; y2 = y 1 + h f(x 1,y1) ; y3 = y 2 + h f(x 2,y2)
Astfel, pentru problema Cauchy �𝑦′=4𝑥−2𝑥2+𝑦
𝑦(0)=0 , tabelul valorilor aproximative
ale soluției, în nodurile x 1 = 0.1 ; x 2 = 0.2 ; x 3 = 0.3 utilizând metoda lui Euler, este
următorul :
xi x0 = 0 x1 = 0.1 x2= 0.2 x3= 0.3
yi y0= 0 y1 = 0 y2 = 0.038 y3 = 0.1138
h = 0.1 f(xi,yi) f(x0,y0) = 0 f(x1,y1) = 0.38 f(x2,y2) = 0.758
6. Ecua ții diferen țiale M. Racil ă
124
Exemplificare – schema de calcul : EULER MODIFICATA ( pentru 3 noduri )
xi // xi+1/2 x0 x1/2 x1 x3/2 x2 x5/2 x3
h yi // yi+1/2 y0 y1/2 y1 y3/2 y2 y5/2 y3
h/2 f(xi,yi) //
f(xi+1/2,yi+1/2) f(x0,y0) f(x1/2,y1/2) f(x1,y1) f(x3/2,y3/2) f(x2,y2) f(x5/2,y5/2)
Datele de intr are sunt reprezentate în roșu, cele de ieșire în verde, iar datele obținute prin
calcule intermediare sunt reprezentate în albastru.
Se completează fiecare coloană în parte , până se determină toate valorile aproximative ale
soluției în punctele dorite, folosind formulele:
x1/2 = x 0 + h/2
y1/2 = y 0 + h/2 f(x 0,y0)
y1 = y 0 +h f(x 1/2,y1/2)
x3/2 = x 1 + h/2
y3/2 = y 1 + h/2 f(x 1,y1)
y2 = y 1 +h f(x 3/2,y3/2)
x5/2 = x 2 + h/2
y5/2 = y 2 + h/2 f(x 2,y2)
y3 = y 2 +h f(x 5/2,y5/2)
Astfel, pentru problema Cauchy �𝑦′=4𝑥−2𝑥2+𝑦
𝑦(0)=0 , tabelul valorilor aproximative
ale soluției, în nodurile x 1 = 0.1 ; x 2 = 0.2 ; x 3 = 0.3 utilizând metoda lui Euler modificată,
este următorul :
xi // xi+1/2 x0 = 0 x1/2 = 0.05 x1 = 0.1 x3/2= 0.15 x2= 0.2 x5/2= 0.25 x3= 0.3
h
0.1 yi // yi+1/2 y0= 0 y1/2 = 0 y1 = 0.0195 y3/2 = 0.0394 y2 = 0.0789 y5/2 =
0.11687 y3 = 0.178
h/2
0.05 f(xi,yi) //
f(xi+1/2,yi+1/2) f(x0,y0) =
0 f(x1/2,y1/2)=
0.195 f(x1,y1) =
0.3995 f(x3/2,y3/2) =
0.5944 f(x2,y2) =
0.7594 f(x5/2,y5/2)=
0.99187
6. Ecua ții diferen țiale M. Racil ă
125
Observații : 1)Soluția exactă a problemei este : y(x) = 2 x2, deci y(0.1) = 0.02,
y(0.2) = 0.08, y(0.3) = 0.18
2) Se observă că soluția aproximată cu metoda Euler modificată este mai aproape de soluția
exactă a problemei Cauchy decât soluția aproximată cu metoda Euler clasică:
h = 0.1 xi x0 = 0 x1 = 0.1 x2= 0.2 x3= 0.3
Euler yi y0= 0 y1 = 0 y2 = 0.038 y3 = 0.1138
Euler modificat ă yi y0= 0 y1 = 0.0195 y2 = 0.0789 y3 = 0.178
Soluția exactă yi y0= 0 y1 = 0.02 y2 = 0.08 y3 = 0.18
6.2 Metode de tip Runge -Kutta
Metodele de tip Runge -Kutta sunt neliniare și conservă caracteristicile metodelor
unipas, având însă un ordin ridicat. Ele au trei proprietăți principale:
– sunt metode directe, adică, pentru obținerea soluției la etapa i+1 avem nevoie de informațiile
existente în punctul precedent
i iyx,;
– sunt identice cu seriile Taylor până la termenul nh, unde heste pasul de integrare, n
definește ordinul metodei și depinde de aceasta;
– în procesul de calcul, ele necesită doar evaluarea funcției din membrul drept pentru diferite
valori ale lui x ș i y . Nu avem nevoie de calculul derivatelor sale.
Metodele de tip Euler pot fi considerate ca metode de tip Runge -Kutta. Astfel, metoda
lui E uler este o metodă de tip Runge -Kutta de ordinul I, iar metoda lui Euler modificată este o
metodă Runge -Kutta de ordinul II.
Dat fiind faptul că metodele unipas utilizează doar informațiile din nodul anterior, ele
au avantajul de a putea utiliza un pas va riabil.
Formule de tip Runge -Kutta explicite
Fie problema Cauchy
a xbaxy xyyxf xy= ∈
==0
0 0 ],,[ )(),( )('
Metodele de tip Runge -Kutta consistă în aproximarea soluției exacte a problemei de mai sus
în felul următor: ∑
=+=≈+m
iiihkc xy hz hxy
1)( )( )( ) (
6. Ecua ții diferen țiale M. Racil ă
126
unde
+++++=++==
−− ) … , ( )(…. ………. ……….) , ( )(),( )(
1 1, 22 11121 2 21
m mm m m m m k b kbkbyhaxhf hkkbyhaxhf hkyxhf hk
și m ib ai
jij i ,…,3,2 ,1
1= =∑−
=
Observații :
(i) O metodă de tip Runge -Kutta dată prin formulele prezentate, necesită m evaluări ale
funcției fpentru fiecare etapă de calcul;
(ii) Pentru a fi consistente, metodele de tip Runge -Kutta trebuie să satisfacă următoarea
condiție ∑
==m
iic
11
Pentru detalii despre modul în care se obțin formulele Runge -Kutta, a se vedea R. Militaru ,
M. Popa, Metode numerice. Note de curs, Ed. Sitech, 2007.
Formulele Runge- Kutta de ordinul 2 sunt următoarele:
()
++==++=+
1 212 1
32,32 ),( 341)( ) (
k yh xfh kyxfhkk k xy hxy
numită și formula Euler -Heun .
O altă formulă este: ()
++==++=+
) , ( ),( 21)( ) (
1 212 1
kyhxfh kyxfhkkk xy hxy
numită formula trapezului .
6. Ecua ții diferen țiale M. Racil ă
127
O formulă Runge -Kutta de ordinul 3:
+−+=
++==+++=+
)2 , ( 2,2 ),( ) 4 (61)( ) (
2 1 31
213 2 1
k kyhxfh kkyhxfh kyxfhkkk k xy hxy
O altă formulă Runge -Kutta de ordinul 3 este următoarea:
++=
++==++=+
2 31
213 1
32,32 3,3 ),( )3 (41)( ) (
k yh xfh kkyhxfh kyxfhkk k xy hxy
Intre formulele Runge -Kutta de ordinul 4 amintim pe cele mai utilizate :
++=
++=
++==++++=+
) , ( 21,21 2,2 ),( ) 2 2 (61)( ) (
3 42 31
214 3 2 1
kyhxfh kk yh xfh kkyhxfh kyxfhkkk k k xy hxy
și
+−++=
+−+=
++==++++=+
) , ( 31,32 3,3 ),( ) 3 3 (81)( ) (
3 2 1 42 1 31
214 3 2 1
kkkyhxfh kkk yh xfh kkyhxfh kyxfhkkk k k xy hxy
Pentru algoritmul metodei Runge -Kutta , consultați cartea domnului Conf. Univ. Dr.
Romulus Militaru : R. Militaru, M. Popa, Metode numerice în pseudocod. Aplicații,
Ed. Sitech, 2013
6. Ecua ții diferen țiale M. Racil ă
128
Exemplificare – schema de calcul : RUNGE – KUTTA ORDIN II ( pentru 3 noduri )
xi x0 x1 x2 x3
h yi y0 y1 y2 y3
f(xi,yi) f(x0,y0) f(x1,y1) f(x2,y2)
k1 = h f(x i,yi) h f(x 0,y0) h f(x 1,y1) h f(x 2,y2)
xi + h x0 + h x1 + h x2 + h
yi + k 1 y0+ k 1 y1 + k 1 y2 + k 1
f(xi+h,y i+k1) f(x0+h,y 0+k1) f(x1+h,y 1+k1) f(x2+h,y 2+k1)
k2 = h f(x i+h,y i+k1) h f(x0+h,y 0+k1) h f(x 1+h,y 1+k1) h f(x 2+h,y 2+k1)
(k1 + k 2)/2
Datele de intr are sunt reprezentate în roșu, cele de ieșire în verde, iar datele obținute prin
calcule intermediare sunt reprezentate în albastru.
Se completează fiecare coloană în parte , până se determină toate valorile aproximative ale
soluției în punctele dorite, folosind formulele: ()
++==++=
) , ( ),( 21
1 0 0 20 0 12 1 0 1
kyhxfh kyxfhkkk y y
()
++==++=
) , ( ),( 21
1 1 1 21 1 12 1 1 2
kyhxfh kyxfhkkk y y
()
++==++=
) , ( ),( 21
1 2 2 22 2 12 1 2 3
kyhxfh kyxfhkkk y y
Astfel, pentru problema Cauchy �𝑦′=𝑥𝑦
𝑦(0)=1 , tabelul valorilor aproximative ale
soluției, în nodurile x 1 = 0.1 ; x 2 = 0.2 ; x 3 = 0.3 utilizând metoda Runge -Kutta de ordinul II,
este următorul :
xi x0 = 0 x1 = 0.1 x2= 0.2 x3= 0.3
h = 0.1 yi y0= 0 y1 = 1.005 y2 = 1.020176 y3 = 1.045986
f(xi,yi) f(x0,y0)
0 f(x1,y1)
0.1005 f(x2,y2)
0.204035
k1 = h f(x i,yi) h f(x 0,y0) h f(x 1,y1) h f(x 2,y2)
6. Ecua ții diferen țiale M. Racil ă
129
0 0.01005 0.020404
xi + h x0 + h
0.1 x1 + h
0.2 x2 + h
0.3
yi + k 1 y0+ k 1
1 y1 + k 1
1.01505 y2 + k 1
1.040579
f(xi+h,y i+k1) f(x0+h,y 0+k1)
0.1 f(x1+h,y 1+k1)
0.20301 f(x2+h,y 2+k1)
0.3121737
k2 = h f(x i+h,y i+k1) h f(x 0+h,y 0+k1)
0.01 h f(x 1+h,y 1+k1)
0.020301 h f(x 2+h,y 2+k1)
0.0312174
(k1 + k 2)/2 0.005 0.0151755 0.0258104
Observație : Soluția exactă a problemei este : 𝑦(𝑥)=𝑒𝑥2
2 , deci y(0.1) = 1.005013,
y(0.2) = 1.020201, y(0.3) = 1.046027
Rezolvarea numerică a sistemelor de ecuații diferențiale
și a ecuațiilor diferențiale de ordin superior
Fie sistemul de ecuații diferențiale de ordinul I:
==
))( ),…(,( )(….. ………. ………. ………. ……….))( ),…(,( )(
1'1 1'
1
xyxyxf xyxyxyxf xy
n n nn
(6.2.1)
Scopul este acela de a aproxima soluția ))( ),…,(),((2 1 xy xyxyn ce satisface condițiile
inițiale
n j y xyj j ,…,2,1 , )(0, 0 = = (6 .2.2)
Metodele numerice utilizate pentru rezolvarea ecuațiilor diferențiale de ordinul I, pot fi
extinse pentru cazul unui sistem de tipul ( 6.2.1) – (6 .2.2).
Astfel, presupunând că dispunem de valorile in iy y, ,1,…, ale soluției problemei (6 .2.1)
– (6.2.2) la pasul i , metoda Runge -Kutta de ordinul 4 dă la pasul 1+i formulele următoare:
∆+=∆+=
++
in in ini i i
y y yy y y
, , 1,,1 ,1 1,1
………. ………. ……….
unde
n j k k k k yj j j j
ij ,…,2,1 ,61
31
31
61
4 3 2 1 , = +++=∆
și
6. Ecua ții diferen țiale M. Racil ă
130
)y….,y,x(hf ki,n i,1 i jj
1= , j = n,1;
+ ++=2ky,…,2ky,2hxhf kn
1
i,n1
1
i,1 i jj
2 , j = n,1;
+ ++=2ky,…,2ky,2hxhf kn
2
i,n1
2
i,1 i jj
3 , j = n,1;
( )n
3 i,n1
3 i,1 ijj
4 k y,…,k y,hxhf k + ++= , j = n,1;
Să considerăm acum ecuația diferențială de ordinul n scrisă sub forma explicită:
))( ),…,('),(,( )()1( )(x y xyxyxf xyn n −= (6.2.3)
cu condițiile:
===
−−
1 0)1(1 00 0
)(…….. ……….)(')(
nnt x yt xyt xy
(6 .2.4)
Introducem notațiile :
n 1,2,..,j ),( )()1(= =−x y xzj
j (6 .2.5)
Cu aceste notații, problema (6.2.3) – (6 .2.4) devine:
====
−
))( ),…,(,( )()( )(.. ………. ……….)( )()( )(
1''
13'
22'
1
xz xzxf xzxz x zxz xzxz xz
n nn n (6.2.6)
și cu condițiile:
===
−1 01 0 20 0 1
)(…….. ……….)()(
n n t xzt xzt xz
(6 .2.7)
Așadar, (6 .2.6) – (6.2.7) reprezintă un sistem având necuații diferențiale ordinare cu n
condiții inițiale. Acesta din urmă poate fi rezolvat aplicând tehnica prezentată mai sus.
6. Ecua ții diferen țiale M. Racil ă
131
6.3 Metoda diferențelor finite pentru probleme de tip Sturm -Liouville
Considerăm problema de tip Sturm -Liouville dată prin ecuația:
(P)
==∈ + + =
βα
)()(],[ ),()()()(')( )(''
byaybax xrxyxqxyxp xy
(6.3.1)
Teoremă: Dacă sunt satisfăcute condițiile:
(i) )( ),( ),( xrxqxp sunt continue pe ],[ba
(ii) ],[)( ,0)( bax xq ∈∀>
atunci problema (P) admite o soluție unică.
Metoda diferențelor finite constă în înlocuirea fiecărei derivate p rin diferențe finite,
păstrând același ordin al erorii de consistență.
Fie ∆o diviziune de pas ha intervalului ],[ba, dată prin:
*
00
N , 0 , ∈
=≤≤+==
n
b xni ihxxa x
ni
Pentru fiecare punct interior ix, ecuația ce trebuie rezolvată devine:
1,1 ),()()()(')( )('' −= + + = n i xr xyxq xyxp xyi i i i i i (6.3.2)
Lemă : Fie 0 ],,[ ],,[4>∈ ∈ hbaxbaCy astfel încât ),( , ba hxhx ∈+− . Atunci
) , ( )( hxhx+−∈∃ξ astfel încât:
)(6 2) () ()('2
ξIIIyh
hhxy hxyxy −−−+=
)(2) ()()(' ξIIyh
hhxyxyxy +−−=
)(2)() ()(' ξIIyh
hxy hxyxy −−+=
6. Ecua ții diferen țiale M. Racil ă
132
)(12) ()(2) ()(''2
2ξIVyh
hhxyxy hxyxy −−+−+=
Demonstrație: Folosind dezvoltările în serie Taylor, avem:
) ,( ),('''6)(''2)( ) (1 13 2
hxx yhxyhxy hxy +∈ + −=+ ξξ
), ( ),('''6)(''2)( ) (2 23 2
xhx yhxyhxy hxy −∈ + −=− ξξ
[ ])(''')('''12)('2) () (
2 12
ξξ y yhxyhhxy hxy+ +=−−+⇒ =
= ) , ( ),('''6)('2
hxhx yhxy +−∈ + ξξ căci IIIy este continuă.
)(24)('''6)(''2)(' )( ) (14 3 2
ξIVyhxyhxyhxhyxy hxy + + ++=+ , ) ,(1 hxx+∈ξ
)(24)('''6)(''2)(' )( ) (24 3 2
ξIVyhxyhxyhxhyxy hxy + − +−=− , ), (1 xhx−∈ξ
)(24)('''6)(''2)(' )() (14 3 2
ξIVyhxyhxyhxhyxy hxy + + +=−+
)(24)('''6)(''2)(' )() (24 3 2
ξIVyhxyhxyhxhyxy hxy + − +=−−
de unde :
2) ( )(2) (
hhxy xy hxy −+−+= [ ])( )(24)(''2 12
ξξIV IVy yhxy + +
) , ( ),(12)(''2
hxhx yhxyIV+−∈ += ξξ
Pentru celelalte egalități se utilizează un raționament analog.
Pentru 1 ,..,2,1−= n i considerăm:
hxy xxyi i
i2)() y( )('1 1 − +−= (6.3.3)
6. Ecua ții diferen țiale M. Racil ă
133
21 1 )()(2)()(''hxy xy xyxyi i i
i− + +−= (6.3.4)
Introducând (6.3.3) și ( 6.3.4) în ( 6.3.2), pentru 1 1 ,−≤≤= ni xxi , se obține:
21 1 )()(2)(
hxy xy xyi i i − + +− =hxy xyxpi i
i2)()()(1 1 − +−+
)()()(i i i xr xyxq + +
Condițiile la limită devin :
==βα
)()(0
nxyxy
In consecință, obținem sistemul următor:
21 12
hyy yi i i − ++− -hy ypi i
i21 1−+−- 1 1 ,−≤≤= ni ryqi ii
βα==ny y ,0
unde )( ),( ),( ),(i i i i i i i i xy yxrrxqqxp p = == =, 1 1−≤≤ ni
sau, sub formă echivalentă:
1 221
−
+iiyhp
h-i iiyqhu
+22+1 221
+
−iiyhp
h=ir , 1 1−≤≤ ni
α=0y , β=ny (6.3.5)
(6.3.5) reprezintă un sistem liniar având 1−n necunoscute și 1−n ecuații, de forma byA=⋅ ,
)1()1(R−×−∈n nA , matrice tridiagonală ș i cu diagonala strict dominantă, iar 1-nR ,∈yb , unde:
+−
+
−
+−
+
−
+−
+
−
+−
=−−−
−−
1 21
22
2 2 22
22
2 2 22
21
2 1 2
2
210 …0 0 0 021 2
21…0 0 0 0… … … …… … … …0 0 0 …0
21 2
210 0 0 …0 0
21 2
nnn
nn
q
h hp
hhp
hq
h hp
hhp
hq
h hp
hhp
hq
h
A
6. Ecua ții diferen țiale M. Racil ă
134
=
−−
1221
…
nn
yyyy
y ,
−−
+−
=−
−−
βα
hp
hrrrhp
hr
b
n
nn
21…21
1
2 1221
2 1
Observație: Soluția sistemului de mai sus este unică dacă L h /2< , unde
)( max
],[xp L
bax∈= .
Algoritm Sturm -Liouville :
Pas Algoritm
Citire: a, b, α, β, n
declară funcțiile p, q, r
Se construiește sistemul ( 6.3.5)
1 221
−
+iiyhp
h- +
+ =ir , 1 1−≤≤ ni
α=0y , β=ny h = (b – a)/n;
x = a + h;
𝑎[1]=−�2
ℎ2+𝑞(𝑥)�;
𝑏[1]=�1
ℎ2−𝑝(𝑥)
2ℎ�;
𝑡[1]=𝑟(𝑥)−𝛼∗�1
ℎ2+𝑝(𝑥)
2ℎ�;
pentru i = 2,3,…,n- 2
{x = a + i*h;
𝑎[𝑖]=−�2
ℎ2+𝑞(𝑥)�;
𝑏[𝑖]=�1
ℎ2−𝑝(𝑥)
2ℎ�;
𝑐[𝑖]=�1
ℎ2+𝑝(𝑥)
2ℎ�;
𝑡[𝑖]=𝑟(𝑥);
}
x = a + (n – 1)*h;
𝑎[𝑛−1]=−�2
ℎ2+𝑞(𝑥)�;
𝑐[𝑛−1]=�1
ℎ2+𝑝(𝑥)
2ℎ�;
𝑡[𝑛−1]=𝑟(𝑥)−𝛽∗�1
ℎ2−𝑝(𝑥)
2ℎ�;
Se rezolvă sistemul ( 6.3.5)
(sistem tridiagonal !) pentru i =1,2,…,n -2
{
ci = c i /ai ;
ai+1 = a i+1 – bi* ci ;
i iiyqhu
+22
1 221
+
−iiyhp
h
6. Ecua ții diferen țiale M. Racil ă
135
}
pentru i =2,3,…,n- 1
ti =ti – c i-1 * ti-1 ;
tn-1 = t n-1 / a n-1 ;
pentru i =n -2, n-3,…,1
ti = (t i – bi* ti+1) / a i ;
Afișa re: ti , i = 1,2,…, n -1 (aproximarea soluției în punctele x i )
Exemple:
1. Fie problema lui Cauchy:
=∈ −=
0)0(]1;0[ ,3/ 2/1'2
yx xy y
Găsiți valorile aproximative ale soluției exacte )(xy în punctele 2 1 ,3,0 ≤≤⋅= i i xi ,
utilizând metoda lui Euler.
Soluție:
3,0 ;6,0 ;3,0 ;02 1 0 == == h x x x
3/ 2/1),(;02
0 xy yxf y −= =
15,00 0 1 =+= hfyy
i 0 1 2
ix 0 0,3 0,6
iy
0 0,15 0,29925
if 0,5 0,497
5
h 0,3 0,3
2. Fie problema lui Cauchy:
=∈+=
1)0(]1;0[ , 1'2
yxy y
Aproximați valoarea )2,0(y printr -o metodă Runge -Kutta de ordinul 2, cu 2,0=h , respectiv
printr -o metodă Runge -Kutta de ordin 4, cu 1,0=h și 2,0=h .
6. Ecua ții diferen țiale M. Racil ă
136
Soluție:
2
0 0 1),( ;1 ;0 y yxf y x += ==
Runge -Kutta de ordinul 2:()
++==++=+
) , ( ),( 21)( ) (
1 212 1
kyhxfh kyxfhkkk xy hxy
Obținem:
i 0 1
ix 0 0,2
iy 1 1,496
1k 0,4
1kyi+ 1,4
2k 0,592
()2 121kk+
0,496
Runge -Kutta de ordinul 4:
++=
++=
++==++++=+
) , ( 21,21 2,2 ),( ) 2 2 (61)( ) (
3 42 31
214 3 2 1
kyhxfh kk yh xfh kkyhxfh kyxfhkkk k k xy hxy
Obținem:
h i
ix iy
0,1 1 0,1 1,22304891
2 0,2 1,50849616
6. Ecua ții diferen țiale M. Racil ă
137
0,2
1
0,2
1,50845613
3. Considerăm sistemul de ecuații diferențiale ordinare:
−=+−=
z yzzy y
100 '100'
cu condițiile inițiale:
==
0)0(1)0(
zy
Apoximați valorile soluției problemei de mai sus în punctele 3 1 ,1,0 ≤≤⋅= i i xi prin
metoda lui Euler.
Soluție:
z y zyxgzy zyxf y x 100 ),,( ; 100 ),,( ;0 z ;1 ;00 0 0 −= +−= ===
+=+=+=
+++
),,(),,(
111
i i i i ii i i i ii i
zyxhgz zzyxhfy yhx x
Obținem:
i 0 1 2 3
ix
0 0,1 0,2 0,3
iy
1 -9 81,01 -729,27
iz
0 0,1 -1,80 24,301
if
-100 900,1 -8102,80
ig 1 -19 261,01
6. Ecua ții diferen țiale M. Racil ă
138
h
0,1 0,1 0,1
4. Fie problema:
−==−−=
4,0)1('7,0)1(/' ''
yyyxy y
Utilizând metoda lui Euler, aproximați valorile )2,1(y și )4,1(y .
Soluție : ⇒== ' ,2 1 y zyz
−==−−==
4,0)1(7,0)1(/
211 2'
22'
1
zzzxz zzz
i 0 1 2
ix 1 1,2 1,4
iz,1 0,7 0,62 0,53
iz,2 -0,4 -0,46
ihz,1 -0,08 -0,092
ihz,2 -0,06 -0,048
5. Fie problema:
−==∈++=
2 )1(1)0(]1,0[, 4 43 ' "
yyxey y yx
Aproximați valorile soluției acestei probleme în punctele , hixi⋅= 3 1≤≤i , 4/1=h , prin
metoda diferențelor finite.
Soluție:
Relațiile (6.3 .5) conduc la sistemul următor:
6. Ecua ții diferen țiale M. Racil ă
139
−====
−+
−−+
++ −
213,1 ,2142 21
403
1 2 2 1 2
yyi e yh hyhyh hix
i i i
Utilizând metoda lui Gauss, pentru 4/1=h rezultă:
−===
5910,01754,06468,0
321
yyy
Probleme propuse :
6.1 Aproximați valorile soluției exacte a problemei Cauchy:
−=∈++−=
2 )0(]1;0[ ,1 2 '3 2 2
yx xyx xyy
în punctele 75,0 , 5,02 1 = = x x prin metoda lui Euler modificată.
6.2 Aproximați valorile soluției exacte a problemei Cauchy
=∈ =−
1,0)0(]1;0[ , ') (10
yx eyyx
în punctele 3 1 ,1,0 ≤≤⋅= i i xi printr -o metodă Runge -Kutta de ordinul doi.
6.3 Se consideră problema Cauchy:
()
=−−=′
325.12
2
yxy y
Să se determine soluția aproximativă a acestei probleme în punctele 7.11=x , 9.12=x ,
1.23=x folosind o metodă Runge -Kutta de ordinul 2 cu pasul h =0.2
6.4 Se consideră problema Cauchy:
6. Ecua ții diferen țiale M. Racil ă
140
()
==′
214
yyxy
Să se determine soluția aproximativă a acestei probleme în punctele 25.11=x , 5.12=x ,
75.13=x folosind o metodă Runge -Kutta de ordinul 2 cu pasul h =0.25
6.5 Se consideră problema Cauchy:
()
=−=′
002
yyxy
Să se determine soluția aproximativă a acestei probleme în punctele 25.01=x , 5.02=x ,
75.03=x folosind o metodă Euler cu pasul h =0.25
6.6 Se consideră problema Cauchy:
()
==′
214
yyxy
Să se determine soluția aproximativă a acestei probleme în punctele 25.11=x , 5.12=x ,
75.13=x folosind o metodă Euler cu pasul h =0.25
6.7 Se consideră problema Cauchy:
()
=−=′
2311
yxyy
Să se determine soluția aproximativă a acestei probleme în punctele 1.11=x , 2.12=x ,
3.13=x folosind o metodă Runge -Kutta de ordinul 2 cu pasul h =0.1
6.8 Se consideră problema Cauchy:
()
=+=′
2012
yx y
Să se determine soluția aproximativă a acestei probleme în punctele 1.01=x , 2.02=x ,
3.03=x folosind o metodă Euler cu pasul h =0.1
6.9 Se consideră problema Cauchy:
6. Ecua ții diferen țiale M. Racil ă
141
()
=−+=′
218
22
yxyxyy
Să se determine soluția aproximativă a acestei probleme în punctele 2.11=x , 4.12=x ,
6.13=x folosind o metodă Runge -Kutta de ordinul 2 cu pasul h =0.2
6.10 Se consideră problema Cauchy:
()
=−−=′
5.0141
22
yx xyy y
Să se determine soluția aproximativă a acestei probleme în punctele 5.11=x , 22=x ,
folosind o metodă Euler cu pasul h =0.5
6.11 Se consideră problema Cauchy:
()
=++−=′
2112
yx x y
Să se determine soluția aproximativă a acestei probleme în punctele 25.11=x , 5.12=x ,
75.13=x folosind o metodă Runge -Kutta de ordinul 2 cu pasul h =0.25
6.4 Metoda diferențelor finite pentru integrarea ecuațiilor cu derivate parțiale
Metodele de integrare a ecuațiilor cu derivate parțiale reprezintă în fapt o generalizare a
metodelor de integrare pentru ecuațiile diferențiale ordinare, care depind decât de o singură
variabilă. Aceste metode au toate un punct comun și anume realizarea unei discretizări (grilă
de puncte) a domeniului studiat . De notat faptul că se generalizează de fapt noțiunea de pas
întâlnită la ecuațiile diferențiale, acesta putând fi constant sau variabil, funcție de necesități.
Metodele cu diferențe finite (MDF) exploatează o discretizare a domeniului cu pas
constant și propun două tipuri de rezolvare :
• explicită , în care necunoscutele în nodurile discretizării domeniului sunt date
explicit prin ecuații ;
• implicită ,în care necunoscutele constituie un sistem linia r, a cărui matrice este de
tip bandă, adică are toate elementele nule, mai puțin cele de pe diagonala
principală și vecinătatea acesteia.
6.4.1 Operatori cu diferențe finite
Într un reper cartezian ortonormat bidimensional de coordonate ),(yx , o ecuație cu
derivate parțiale de ordinul doi se scrie în mod general sub forma următoare :
6. Ecua ții diferen țiale M. Racil ă
142
0 , , ,,,,,2
22
22
=
∂∂∂
∂∂
∂∂
∂∂
∂∂
yxu
yu
xu
yu
xuyxuF (6.4.1.1)
Sub formă explicită, (6.4.1.1) se scrie :
0),,,,( ),( ),( ),( ),( ),( ),(22 2
22
=∂∂
∂∂++∂∂+∂∂∂+∂∂
yu
xuyxuDyxyuyxCyxyxuyxByxxuyxA
(6.4.1.2)
Analiza formei de mai sus permite delimitarea a trei tipuri de ecuații cu derivate parțiale
liniare de ordinul doi :
(i) 0),(),(4),(2< − yxCyxA yxB – tipul eliptic
Exemplu : ecuația lui Poisson, ce admite ca un caz particular ecuația lui La place.
(ii) 0),(),(4),(2= − yxCyxA yxB – tipul parabolic
Exemplu: ecuația căldurii.
(iii) 0),(),(4),(2> − yxCyxA yxB – tipul hiperbolic
Exemplu: ecuația propagării undelor .
Căutarea unei soluții numerice în interiorul unui domeniu necesită câteva informații privind
funcția necunoscută u. Este vorba de condiții la limită (C.L) (eventual la un moment t).
Acestea sunt în fapt condiții pe frontiera Γ a domeniului dat :
Condi ții de tip Dirichlet: în fiecare punct al frontierei cunoaștem valorile funcției u;
Condi ții de tip von Neumann: în fiecare punct al frontierei cunoaștem valorile lui 𝜕𝑢
𝜕𝑛.
Observa ție: Condițiile la limită pot depinde de timp.
Se pun două probleme fundamentale :
existen ța, unicitatea și regularitatea soluției u. Nu vom aborda aici aceste chestiuni
teoretice, ci vom presupune că soluția există și este unică, având derivate parțiale de
orice ordin continue pe Γ∪=DD ;
calcul ul efectiv al acestei soluții, sau cel puțin aproximarea acesteia. Acest ultim
punct ne interesează. Vom construi aproximări ale soluției uîntr -un număr finit de
puncte ale lui D.
6. Ecua ții diferen țiale M. Racil ă
143
În cele ce urmează vom presupune că funcția u posedă proprietăți bune de regularitate
(continuitate , derivabilitate de ordin cel puțin 3, etc). Pe domeniul dat D realizăm
discretizarea cea mai adaptată formei sale geometrice.
Fie *R+∈h și *R+∈k dimensiunile celulei elementare a discretizării ce acoperă domeniul D.
Atunci N, , ,0 0 ∈+=+= jijk y yihxxj i . Punctele ),(j iyx se numesc nodurile discretizării .
Utilizând notațiile ij j i u yxu=),( și rezultatele paragrafului 6.3, obținem expresiile următoare :
)( ) (1
, ,1 hO u uh xu
ji jiij+−=∂∂
+ (6.4.1.3)
)( ) (1
,1 , hO u uh xu
ji jiij+−=∂∂
− (6.4.1.4)
)( ) (212
,1 ,1 hO u uh xu
ji jiij+− =∂∂
− + (6.4.1.5)
)( ) 2 (12
,1 ,1 2 22
hO u u uh xu
ji ij jiij++− =∂∂
− + (6.4.1.6)
Observa ții:
(i) Derivatele parțiale în raport cu ysunt ap roximate prin formule asemănătoare ;
(ii) (6.4.1.3) s emnifică faptul că derivata parțială de ordinul I în raport cu x, în punctul ),(ji
este aproximată printr -o diferență finită progresivă de ordinul I.
(6.4.1.4) semnifică faptul că derivata parțială de ordinul I în raport cu x, în punctul ),(jieste
aproximată printr -o diferență finită regresivă de ordinul I.
(6.4.1.5) semnifică faptul că derivata parțială de ordinul I în raport cu x, în punctul ),(jieste
aproximată printr -o diferență finită centrată de ordinul II .
(iii) Utilizând formulele de mai sus, se obține :
)( ) (41
1,1 1,1 1,1 1,12
hkO u u u uhk yxu
ji ji ji jiij++−− =∂∂∂
−−+−−+++ (6.4.1.7)
6.4.2 Rezolvarea ecuațiilor de tip eliptic
Ne propunem să calculăm valorile unei funcții u ce verifică ecuația lui Poisson :
6. Ecua ții diferen țiale M. Racil ă
144
Dyx yxf yxu ∈∀ =∆ ),( ),,( ),( , ],[],[ dc ba D×= (6.4.2.1)
ffiind o funcție de clasă )(DC∞, cu condițiile la limită :
(C.L ) )( ),( ),( ),( DFr yx yx yxu =Γ∈∀=ϕ (6.4.2.2)
(condi ții la limită neomogene de tip Dirichlet)
Observați e:
În numeroase cazuri, funcția 0≡f și vom avea de rezolvat ecuația lui Laplace:
Dyx yxu ∈∀=∆ ),( 0),(
Considerăm pe domeniul D discretizarea ce are parametrii kh,, caracteri zați prin :
N , , , ,…,1,0, ,N , , ,,…,1,0, ,
*
0 0*
0 0
∈== =−=+=∈== =−=+=
md ycym jmcdkjk y ynbxaxn inabhihxx
m jn i
Plecând de la ecuația (6.4 .2.1), pentru un punct oarecare D yxMj i∈),( , obținem, cu ajutorul
diferențelor finite :
( )( )
1 ,…,1 ,1 ,..,1 , 2121
1, 1, 2 ,1 ,1 2
−=−==+− ++−− + − +
m j n if u u uku u uhij ji ij ji ji ij ji (6.4.2.3)
Condițiile la limită devin :
n idx ucx u
i mii i,…,1,0 ,),(),(
,0,=
==
ϕϕ
(6.4.2.4)
m jyb uya u
j jnj j,…,1,0 ,),(),(
,,0=
==
ϕϕ
Observație:
6. Ecua ții diferen țiale M. Racil ă
145
Calculul lui iju necesită cunoașterea celor patru valori vecine :
(6.4.2.3) și (6.4.2.4) constitue un s istem liniar având )1 )(1(−−m n necunoscute
1 ,…,1 ,1 ,…,1 , −=−= m j n iuij și posedă proprietățile următoare :
este simetric ( operatorul lui Laplace est e simetric )
matricea sistemului este de tip bandă
nu este omogen
Pentru rezolvarea sa iterativă, este utilă utilizarea următoarei forme echivalente a sistemului
(6.4.2.3):
−+++
+=
− + + − ij ji ji ji ji ij f ukukuhuh
k hu1, 2 1, 2 ,1 2 ,1 2
2 21 1 1 1
1 121
(6.4.2.5)
Metoda lui Jacobi
Este o metodă iterativă ce afectează valorilor necunoscute di n nodurile discretizării ,
valori arbitrare, spre exemplu, media valorilor de pe frontieră . Relația (6.4.2.5) permite
calculul tuturor valorilor în punctele adiacente frontierei. Astfel:
1 ,1 ,…,1 ,1 1 ,1 1 1 1
1 121
)1(
1, 2)1(
1, 2)1(
,1 2)1(
,1 2
2 2)(
≥−= =
− +
+ + +
+=
−
−−
+−
+−
−
p m j ,…,n-i f ukukuhuh
k hu
ijp
jip
jip
j ip
j ip
ij
(6.4.2.6)
Metoda Gauss -Seidel yj+1
yj
yj -1
xi –1 x i xi+1
6. Ecua ții diferen țiale M. Racil ă
146
Această tehnică o ameliorează pe cea a lui Jacobi. În cursul calculului se utilizează
valorile care tocmai au fost calculate. Metoda necesită un singur tablou pentru a fi utilizată,
spre deosebire de Jacobi, care are nevoie de două tablouri.
Exemplu :
Considerăm următoarea ecuație Poisson:
)1,0()1,0(),( ,4),( ×∈ =∆ yx yxu
cu condițiile la limită :
]1,0[ ,)1(),1(, ),0(]1,0[ ,)1()1(, )0,(
2 22 2
∈ = =∈= =
y y- y uy yux x- x, ux xu
Aproximați soluția exactă a problemei prin metoda diferențelor finite, utilizând o discretizare
ce are parametrii .3/1==kh
Soluție :
4),( ),(22
22
=∂∂+∂∂yxyuyxxu
Utilizând formulele (6.4.2.3) obținem pentru 3/1==kh :
2,1 ,2,1 ,9/4 4,1 1, 1, ,1 ===++−+++ − − j i u uu u uji ji ij ji ji (1)
Condițiile la limită ne dau :
=−====−===
3,…,0 ,)1 (3,…,0 , 3,…,0 ,)1 (3,…,0 ,
2
,32
,02
3,2
0,
j y ujy ui x uix u
j jj ji ii i
(2)
Folosind (1) și (2) deducem următorul sistem :
6. Ecua ții diferen țiale M. Racil ă
147
=+−−=+−−=+−=+−
9/2 49/4 49/4 49/2 4
21 22 1222 12 1122 21 1121 11 12
u u uu u uu u uu u u
de unde
====
9/10
21 1222 11
u uu u
Problemă:
Fie problema următoare :
)1,0()1,0(),( ,0),( ×∈ =∆ yx yxu
cu condițiile la limită:
]1,0[ ,),1(,0),0(]1,0[ ,)1(,0)0,(
∈= =∈= =
yy y u yuxx x, u xu
Aproximați soluția exactă a problemei prin metoda diferențelor finite, utilizând o discretizare
ce are parametrii 3/1==kh (soluția exactă: xyyxu=),( ).
7. Modele s ubiecte examen M. Racil ă
148
7. Modele de subiecte pentru examen
Model 1
1. Să se rezolve cu metoda lui Gauss sistemul urm ător:
=++−−=+−=++
3 2 41 2 6 512 2 5
3 2 13 2 13 2 1
xx xx x xxx x
2. Folosind metoda Krylov, s ă se determine polinomul caracteristic, valorile proprii si vectorii
proprii corespunz ători pentru matricea:
−− −−
=
52 02 6202 7
A
3. Să se determine polinomul de interpolare Lagrange ce interpoleaz ă datele urm ătoare:
ix 0 1 2 3
if 1 2 5 10
4. Se consider ă problema Cauchy:
()
=−−=′
325.12
2
yxy y
Să se determine soluția aproximativă a acestei probleme în punctele 7.11=x , 9.12=x ,
1.23=x folosind o metodă Runge -Kutta de ordinul 2 cu pasul h = 0.2
7. Modele s ubiecte examen M. Racil ă
149
Model 2
1. Să se rezolve cu metoda factorizării LR sistemul următor:
=++−−=+−=++
3 2 41 2 6 512 2 5
3 2 13 2 13 2 1
xx xx x xxx x
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si vectorii proprii corespunzători pentru matricea:
−− −−
=
52 02 6202 7
A
3. Să se determine polinomul de interpolare Newton ce interpolează datele următoare:
ix 0 1 2 3
if 1 2 5 10
4. Se consideră problema Cauchy:
()
=−−=′
325.12
2
yxy y
Să se determine soluția aproximativă a acestei probleme în punctele 7.11=x , 9.12=x ,
1.23=x folosind metoda Euler cu pasul h =0.2
7. Modele s ubiecte examen M. Racil ă
150
Model 3
1. Să se rezolve cu metoda lui Gauss sistemul următor:
−=+−=++=++
8 3 4 90 7 6 58 3 2
3 2 13 2 13 2 1
x x xx x xx x x
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si vectorii proprii corespunzători pentru matricea:
−−−−
=
03 16 9 16 5 3
A
3. Să se determine polinomul de interpolare L agrange ce interpolează datele următoare:
ix 1 1.5 2 2.5
if 0 1 2 -1.5
4. Se consideră problema Cauchy:
()
==′
214
yyxy
Să se determine soluția aproximativă a acestei probleme în punctele 25.11=x , 5.12=x ,
75.13=x folosind o metodă Runge -Kutta de ordinul 2 cu pasul h =0.25
7. Modele s ubiecte examen M. Racil ă
151
Model 4
1. Să se rezolve cu metoda lui Gauss sistemul următor:
=+−−=++=−+
7 4 261 2 3
3 2 13 2 13 2 1
x xxx xxx xx
2. Să se rezolve ecuația x3– 4x – 8.95 = 0 în intervalul [2,3], cu o precizie de 10-2
3. Să se determine polinomul de interpolare Lagrange ce interpolează datele următoare:
ix 0 2 3 5
if 4 6 -2 -6
4. Se consideră problema Cauchy:
()
=−=′
002
yyxy
Să se determine soluția aproximativă a acestei probleme în punctele 25.01=x , 5.02=x ,
75.03=x folosind o metodă Runge -Kutta de ordinul 2 cu pasul h =0.25
7. Modele s ubiecte examen M. Racil ă
152
Model 5
1. Să se rezolve cu metoda factorizării LR -Doolittle sistemul următor:
−=+−=++=++
8 3 4 90 7 6 58 3 2
3 2 13 2 13 2 1
x x xx x xx x x
2. Să se rezolve ecuația x
2– 2 = 0 în intervalul [1,3], luând x0 = 2. Calculați primele trei
iterații.
3. Să se determine polinomul de interpolare Newton ce interpolează datele următoare:
ix 1 1.5 2 2.5
if 0 1 2 -1.5
4. Se consideră problema Cauchy:
()
==′
214
yyxy
Să se determine soluția aproximativă a acestei probleme în punctele 25.11=x , 5.12=x ,
75.13=x folosind o metodă Euler cu pasul h =0.25
7. Modele s ubiecte examen M. Racil ă
153
Model 6
1. Să se rezolve cu metoda factorizării LR -Doolittle sistemul următor:
=+−−=++=−+
7 4 261 2 3
3 2 13 2 13 2 1
x xxx xxx xx
2. Explicitați metoda lui Newton pentru aproximarea rădăcinii funcției f(x) = x3 – a, a>0.
3. Să se determine polinomul de interpolare Newton ce interpolează datele următoare:
ix 0 2 3 5
if 4 6 -2 -6
4. Se consideră problema Cauchy:
()
=−=′
002
yyxy
Să se determine soluția aproximativă a acestei probleme în punctele 25.01=x , 5.02=x ,
75.03=x folosind o metodă Euler cu pasul h =0.25
7. Modele s ubiecte examen M. Racil ă
154
Model 7
1. Fie sistemul liniar :
=++=++=++
42 4 5,0 253 3 5,6 320 2 2 5
3 2 13 2 13 2 1
x x xx x xx x x
Aproximați soluția exactă a sistemului prin metoda Seidel -Gauss, cu eroarea510−=ε ,
utilizând ca vector inițialtx )0;0;0()0(= și criteriul de oprire ε≤−+ )( )1( k kx x .
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si vectorii
proprii corespunzători pentru matricea:
=
210111012
A
3. Să se determine polinomul de interpolare Lagrange ce interpolează datele următoare:
ix 0 2 5
if 3 -1 8
4. Se consideră problema Cauchy:
()
=−=′
2311
yxyy
Să se determine soluția aproximativă a acestei probleme în punctele 1.11=x , 2.12=x ,
3.13=x folosind o metodă Runge -Kutta de ordinul 2 cu pasul h =0.1
7. Modele s ubiecte examen M. Racil ă
155
Model 8
1. Se consideră sistemul liniar :
=++= +−=++
9 4 2 2 24 2 4
3 2 12 13 2 1
x x xx xxx x
Să se scrie primele patru iterații obținute aplicând metoda lui Jacobi, precizând și eroarea.
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si vectorii proprii corespunzători pentru matricea:
=
210111012
A
3. Să se determine polinomul de interpolare Newton ce interpolează datele următoare:
ix 0 2 5
if 3 -1 8
4. Se consideră problema Cauchy:
()
=−=′
2311
yxyy
Să se determine soluția aproximativă a acestei probleme în punctele 1.11=x , 2.12=x ,
3.13=x folosind metoda Euler cu pasul h =0.1
7. Modele s ubiecte examen M. Racil ă
156
Model 9
1. Se consideră sistemul liniar :
=++= +−=++
9 4 2 2 24 2 4
3 2 12 13 2 1
x x xx xxx x
Să se scrie primele patru iterații obținute aplicând metoda Seidel -Gauss, precizând și eroarea.
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si vectorii
proprii corespunzători pentru matricea:
−=
1 00320111
A
3. Să se determine polinomul de interpolare Lagrange ce interpolează datele următoare:
ix 0 2 4
if 1 5 17
4. Se consideră problema Cauchy:
()
=+=′
2012
yx y
Să se determine soluția aproximativă a acestei probleme în punctele 1.01=x , 2.02=x ,
3.03=x folosind o metodă Runge -Kutta de ordinul 2 cu pasul h =0.1
7. Modele s ubiecte examen M. Racil ă
157
Model 10
1. Dați o condiție suficientă pentru parametrul 𝛼∈𝐑, astfel încât metodele Jacobi si Seidel –
Gauss să conveargă pentru rezolvarea unui sistem asociat matricei :
𝐴=�𝛼 0𝛾
0𝛼𝛽
0𝛿𝛼�,𝛼,𝛽,𝛾,𝛿∈𝐑
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si vectorii proprii corespunzători pentru matricea:
−=
1 00320111
A
3. Să se determine polinomul de interpolare Newton ce interpolează datele următoare:
ix 0 2 4
if 1 5 17
4. Se consideră problema Cauchy:
()
=+=′
2012
yx y
Să se determine soluția aproximativă a acestei probleme în punctele 1.01=x , 2.02=x ,
3.03=x folosind o metodă Euler cu pasul h =0.1
7. Modele s ubiecte examen M. Racil ă
158
Model 11
1. Dați o condiție suficientă pentru parametrul 𝛼∈𝐑, astfel încât metodele Jacobi si Seidel –
Gauss să conveargă pentru rezolvarea unui sistem asociat matricei :
𝐴=�𝛼 01
0𝛼 0
10𝛼�
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si vectorii proprii corespunzători pentru matricea:
−−−−−−
=
4 5 36 7 36 3 1
A
3. Să se determine polinomul de interpolare Lagrange ce interpolează datele urmă toare:
ix 0 1 2 3
if 1 4 5 7
4. Se consideră problema Cauchy:
()
=++=′
1013 2
yx xyy
Să se determine soluția aproximativă a acestei probleme în punctele 5.01=x , 12=x , 5.13=x
folosind o metodă Runge -Kutta de ordinul 2 cu pasul h =0.5
7. Modele s ubiecte examen M. Racil ă
159
Model 12
1. Aplicați metodele Jacobi, Seidel -Gauss, apoi Gauss, pentru sistemele următoare :
�10𝑎 +𝑏=11
2𝑎+10𝑏 =12 și �2𝑎+10𝑏 =12
10𝑎 +𝑏=11
Pentru fiecare dintre metode și sisteme se vor preciza noțiunile teoretice utilizate, convergența, respectiv nonconvergența metodei, calculând primele 3 iterații pentru metodele
iterative și utilizând ca vector inițial
tx )0;0()0(= . Ce observați ?
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si vectorii proprii corespunzători pentru matricea:
−−−−−−
=
4 5 36 7 36 3 1
A
3. Să se determine polinomul de interpolare Newton ce interpolează datele următoare:
ix 0 1 2 3
if 1 4 5 7
4. Se consideră problema Cauchy:
()
=++=′
1013 2
yx xyy
Să se determine soluția aproximativă a acestei probleme în punctele 5.01=x , 12=x , 5.13=x
folosind o metodă Euler cu pasul h =0.5
7. Modele s ubiecte examen M. Racil ă
160
Model 13
1. Fie sistemele liniare:
=++=++=++
10 4 3 310 3 4 310 3 3 4
3 2 13 2 13 2 1
x x xx x xx x x
și
=++=++=++
6 46 46 4
3 2 13 2 13 2 1
x xxxx xxxx
1) Amintiți o condiție suficientă de convergență pentru metodele Jacobi și Seidel -Gauss.
Amintiți o altă condiție suficientă de convergență pentru metoda Seidel -Gauss (dar nu și
pentru Jacobi). Sistemele de mai sus verifică aceste condiții ?
2) Scrieți metodele Jacobi și Seidel -Gauss pentru aceste două sisteme.
3) Pentru fiecare dintre metode și sisteme se vor preciza noțiunile teoretice utilizate,
convergența, respectiv nonconvergența metodei, calculând primele 3 iterații și utilizând ca
vector inițial tx )0;0;0()0(= .
4) Pentru fiecare sistem se vor co mpara rezultatele cu soluțiile exacte, obținute cu metoda lui
Gauss. Ce observați ?
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si vectorii proprii corespunzători (daca este posibil) pentru matricea:
−−−
=
49 637 525 4
A
3. Să se determine polinomul de interpolare Lagrange ce interpolează datele următoare:
ix -3 -2 0 1
if 91 23 1 -1
4. Se consideră problema Cauchy:
()
=−+=′
218
22
yxyxyy
Să se determine soluția aproximativă a acestei probleme în punctele 2.11=x , 4.12=x ,
6.13=x folosind o metodă Runge -Kutta de ordinul 2 cu pasul h =0.2
7. Modele s ubiecte examen M. Racil ă
161
Model 14
1. Să se rezolve cu metoda factorizării LR sistemul următor:
=++=+−=++
12 49 3 26
3 2 13 2 13 2 1
x x xx xxx x x
2. Explicitați metoda lui Newton pentru aproximarea rădăcinii funcției f(x) = x
3 +4×2– 10
3. Să se determine polinomul de interpolare Newton ce interpolează datele următoare:
ix -3 -2 0 1
if 91 23 1 -1
4. Se consideră problema Cauchy:
()
=−+=′
218
22
yxyxyy
Să se determine soluția aproximativă a acestei probleme în punctele 2.11=x , 4.12=x ,
6.13=x folosind metoda Euler cu pasul h =0.2
7. Modele s ubiecte examen M. Racil ă
162
Model 15
1. Să se rezolve cu metoda lui Gauss sistemul următor:
=++=++=++
7 3 211 2 5 25 2
3 2 13 2 13 2 1
x x xx x xx x x
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si vectorii
proprii corespunzători (daca este posibil) pentru matricea:
−−−=
2 1 44 3 42 1 3
A
3. Să se determine polinomul de interpolare Lagrange ce interpolează datele următoare:
ix -2 -1 0 1
if -12 -5 -4 -3
4. Se consideră problema Cauchy:
()
=−−=′
5.0141
22
yx xyy y
Să se determine soluția aproximativă a acestei probleme în punctele 5.11=x , 22=x ,
folosind o metodă Runge -Kutta de ordinul 2 cu pasul h =0.5
7. Modele s ubiecte examen M. Racil ă
163
Model 16
1. Să se rezolve cu metoda factorizării LR -Doolittle sistemul următor:
=++=++=++
7 3 211 2 5 25 2
3 2 13 2 13 2 1
x x xx x xx x x
2. Fie 𝑓:𝑹 →𝑹, 𝑓(𝑥)=𝑥4−1
3
1) Arătați că această ecuație are o rădăcină în ( 0,1).
2) Aplicați metoda Newton pentru aproximarea acestei rădăcini.
3. Să se determine polinomul de interpolare Newton ce interpolează datele următoare:
ix -2 -1 0 1
if -12 -5 -4 -3
4. Se consideră problema Cauchy:
()
=−−=′
5.0141
22
yx xyy y
Să se determine soluția aproximativă a acestei probleme în punctele 5.11=x , 22=x ,
folosind o metodă Euler cu pasul h =0.5
7. Modele s ubiecte examen M. Racil ă
164
Model 17
1. Să se rezolve cu metoda lui Gauss sistemul următor:
=++=++=++
7 3 310 3 5 24 2
3 2 13 2 13 2 1
x x xx x xx x x
2. Fie matricea
=
433232112
A . Găsiți polinomul caracteristic, precum și inversa acestei
matrice, utilizând metoda lui Fadeev.
3. Să se determine polinomul de interpolare Newton ce interpolează datele următoare:
ix 1 2 3 4 5
if 2 5 10 17 26
4. Se consideră problema Cauchy:
()
=+=′
1012
yxyy
Să se determine soluția aproximativă a acestei probleme în punctele 5.01=x , 12=x ,
5.13=x folosind o metodă Runge -Kutta de ordinul 2 cu pasul h =0.5
7. Modele s ubiecte examen M. Racil ă
165
Model 18
1. Să se rezolve cu metoda factorizării LR sistemul următor:
=++=++=++
7 3 310 3 5 24 2
3 2 13 2 13 2 1
x x xx x xx x x
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si vectorii
proprii corespunzători pentru matricea:
−−−=
10 7 412 9 46 4 3
A
3. Să se determine polinomul de interpolare Lagrange ce interpolează datele următoare:
ix 1 2 3 4 5
if 2 5 10 17 26
4. Se consideră problema Cauchy:
()
=+=′
1012
yxyy
Să se determine soluția aproximativă a acestei probleme în punctele 5.01=x , 12=x ,
5.13=x folosind metoda Euler cu pasul h =0.5
7. Modele s ubiecte examen M. Racil ă
166
Model 19
1. Să se rezolve cu metoda lui Gauss sistemul următor:
=−+=+−=++
3 2 36 3 25 2
3 2 13 2 13 2 1
x x xx xxx x x
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si vectorii
proprii corespunzători (daca este posibil) pentru matricea:
−−−−−
=
0222 2 33 5 6
A
3. Să se determine polinomul de interpolare Lagrange ce interpolează datele următoare:
ix 1 2 3 5
if 2 3 0 6
4. Se consideră problema Cauchy:
()
=++−=′
2112
yx x y
Să se determine soluția aproximativă a acestei probleme în punctele 25.11=x , 5.12=x ,
75.13=x folosind o metodă Runge -Kutta de ordinul 2 cu pasul h =0.25
7. Modele s ubiecte examen M. Racil ă
167
Model 20
1. Să se rezolve cu metoda factorizării LR – Doolittle sistemul următor:
=−+=+−=++
3 2 36 3 25 2
3 2 13 2 13 2 1
x x xx xxx x x
2. Fie matrice a
−=
21341 2321
A . Determinați polinomul caracteristic al acestei matrice,
folosind metoda Danilevski.
3. Să se determine polinomul de interpolare Newton ce interpolează datele următoare:
ix 1 2 3 5
if 2 3 0 6
4. Se consideră problema Cauchy:
()
=++−=′
2112
yx x y
Să se determine soluția aproximativă a acestei probleme în punctele 25.11=x , 5.12=x ,
75.13=x folosind o metodă Euler cu pasul h =0.25
7. Modele s ubiecte examen M. Racil ă
168
Model 21
1. Să se rezolve cu metoda lui Gauss sistemul următor:
=++=+=+++=+++
206 3 2 22 2 3 3
3 2 14 14 3 2 14 3 2 1
x xxxxx x x xx x x x
2. Determinați polinomul caracteristic și valorile proprii ale matricei
−−−
=
4 4 014 20 14
A ,
folosind metoda Danilveski..
3. Să se determine polinomul de interpolare Lagrange ce interpolează datele următoare:
ix 2 4 6
if 3 11 27
4. Se consideră problema Cauchy:
()
=−=′
00yxyy
Să se determine soluția aproximativă a acestei probleme în punctele 25.01=x , 5.02=x ,
75.03=x folosind o metodă Euler cu pasul h =0.25
7. Modele s ubiecte examen M. Racil ă
169
Model 22
1. Să se rezolve cu metoda factoriz ării LR sistemul următor:
=++=+=+++=+++
206 3 2 22 2 3 3
3 2 14 14 3 2 14 3 2 1
x xxxxx x x xx x x x
2. Folosind metoda minorilor diagonali, să se determine polinomul caracteristic și valorile proprii pentru matricea:
𝐴=�2−2
1−1 −13
0 1
−3 0
0 0 17
02�
3. Să se determine polinomul de interpolare Newton ce interpolează datele următoare:
ix 2 4 6
if 3 11 27
4. Se consideră problema Cauchy:
()
=−=′
00yxyy
Să se determine soluția aproximativă a acestei probleme în punctele 25.01=x , 5.02=x ,
75.03=x folosind o metodă Runge -Kutta de ordinul II cu pasul h =0.25
7. Modele s ubiecte examen M. Racil ă
170
Model 23
1. Să se rezolve cu metoda lui Gauss sistemul următor:
−=+−−=++−−−=−−+=−−+
6 15 5 314 9 52 10 7 6 23 4 2 3
4 2 14 3 2 14 3 2 14 3 2 1
x x xx x xxx x x xx x x x
2. Determinați polinomul caracteristic și valorile proprii, folosind metoda Danilevski, pentru
matricea următoare:
−−−−
=
20 0 071 03101 131 2 2
A
3. Să se determine polinomul de interpolare Lagrange ce interpolează datele următoare:
ix 0 2 4
if 1 9 65
4. Se consideră problema Cauchy:
()
=−=′
002
yx yy
Să se determine soluția aproximativă a acestei probleme în punctele 1.01=x , 2.02=x ,
3.03=x folosind o metodă Euler cu pasul h =0.1
7. Modele s ubiecte examen M. Racil ă
171
Model 24
1. Să se rezolve cu metoda factoriz ării LR sistemul următor:
−=+−−=++−−−=−−+=−−+
6 15 5 314 9 52 10 7 6 23 4 2 3
4 2 14 3 2 14 3 2 14 3 2 1
x x xx x xxx x x xx x x x
2. Folosind metoda minorilor diagonali, să se determine polinomul caracteristic pentru
matricea:
𝐴=�54
45 1 1
1 1
1 1
1 1 42
24�
3. Să se determine polinomul de interpolare Newton ce interpolează datele următoare:
ix 0 2 4
if 1 9 65
4. Se consideră problema Cauchy:
()
=−=′
002
yx yy
Să se determine soluția aproximativă a acestei probleme în punctele 1.01=x , 2.02=x ,
3.03=x folosind o metodă Runge -Kutta de ordinul II cu pasul h =0.1
7. Modele s ubiecte examen M. Racil ă
172
Model 25
1. Să se rezolve cu metoda lui Gauss sistemul următor:
=+−=++=++
1 3 4 90 7 6 57 3 2
3 2 13 2 13 2 1
x x xx x xx x x
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii și vectorii proprii corespunzători pentru matricea:
−=
1101 11051
A
3. Să se determine polinomul de interpolare Lagrange ce interpolează datele următoare:
ix -1 1 2
if 2 1 1
4. Se consideră problema Cauchy:
()
=−=′
105
yy xy
Să se determine soluția aproximativă a acestei probleme în punctele 25.01=x , 5.02=x ,
75.03=x folosind o metodă Euler cu pasul h =0.25
7. Modele s ubiecte examen M. Racil ă
173
Model 26
1. Să se rezolve cu metoda factoriz ării LR sistemul următor:
=+−=++=++
1 3 4 90 7 6 57 3 2
3 2 13 2 13 2 1
x x xx x xx x x
2. Folosind metoda minorilor diagonali, să se determine polinomul caracteristic și valorile proprii pentru matricea:
−=
1101 11051
A
3. Să se determine polinomul de interpolare Newton ce interpolează datele următoare:
ix -1 1 2
if 2 1 1
4. Se consideră problema Cauchy:
()
=−=′
105
yy xy
Să se determine soluția aproximativă a acestei probleme în punctele 25.01=x , 5.02=x ,
75.03=x folosind o metodă Runge -Kutta de ordinul II cu pasul h =0.25
7. Modele s ubiecte examen M. Racil ă
174
Model 27
1. Să se rezolve cu metoda lui Gauss sistemul următor:
=+−−=−+=+−
5 2 31 210 3
3 2 13 2 13 2 1
x xxx xxx x x
2. Folosind metoda Krylov, să se determine polinomul caracteristic și valorile proprii pentru matricea:
−− =
32 02 420 23
A
3. Să se determine polinomul de interpolare Lagrange ce interpolează datele următoare:
ix 0 1 2
if 1 4 15
4. Se consideră problema Cauchy:
()
=+=′
211
yxy
Să se determine soluția aproximativă a acestei probleme în punctele 25.11=x , 5.12=x ,
75.13=x folosind o metodă Euler cu pasul h =0.25
7. Modele s ubiecte examen M. Racil ă
175
Model 28
1. Să se rezolve cu metoda factoriz ării LR sistemul următor:
=+−−=−+=+−
5 2 31 210 3
3 2 13 2 13 2 1
x xxx xxx x x
2. Folosind metoda minorilor diagonali, să se determine polinomul caracteristic și valorile proprii pentru matricea:
−− =
32 02 420 23
A
3. Să se determine polinomul de interpolare Newton ce interpolează datele următoare:
ix 0 1 2
if 1 4 15
4. Se consideră problema Cauchy:
()
=+=′
211
yxy
Să se determine soluția aproximativă a acestei probleme în punctele 25.11=x , 5.12=x ,
75.13=x folosind o metodă Runge -Kutta de ordinul II cu pasul h =0.25
7. Modele s ubiecte examen M. Racil ă
176
Model 29
1. Să se rezolve cu metoda lui Gauss sistemul următor:
−=−+=+−=++
214 5 31 2
3 2 13 2 13 2 1
x xxx xxx x x
2. Folosind metoda Krylov, să se determine polinomul caracteristic , valorile proprii si vectorii
proprii corespunzători pentru matricea:
=
410142114
A
3. Fie 𝑓(𝑥)=sin𝑥 și punctele 𝑥0=0,𝑥1=𝜋
2,𝑥2=𝜋. Găsiți polinomul interpolant al
acestei funcții, prin metoda directă, apoi utilizând Lagrange și Newton.
4. Calculați cu o eroare de 0,01 integrala următoare:
∫−1
02dxex
utilizând metoda trapezului.
7. Modele s ubiecte examen M. Racil ă
177
Model 30
1. Să se rezolve cu metoda factorizării LR sistemul următor:
−=−+=+−=++
214 5 31 2
3 2 13 2 13 2 1
x xxx xxx x x
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si vectorii
proprii corespunzători pentru matricea:
=
410142114
A
3. Fie 𝑓:𝑹→𝑹, 𝑓(𝑥)=𝑒𝑥. Găsiți polinomul interpolant al lui f în punctele – 1, 0, 1.
4. Aproximați valoarea integralei următoare:
001,0 11
03=+∫εxdx
prin metoda lui Simpson, cu precizia indicată.
7. Modele s ubiecte examen M. Racil ă
178
Model 31
1. Fie sistemul liniar :
=++=+=++
6 6 2 0 4 212 6
3 2 12 13 2 1
x x xx xx xx
Aproximați soluția exactă a sistemului prin metoda Jacobi , cu 3 iterații, utilizând ca vector
inițial
tx )2;2;2()0(=
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si vectorii proprii corespunzători pentru matricea:
−=
1 10010112
A
3. Fie 𝑓(𝑥)=cos𝑥 și punctele 𝑥0=0,𝑥1=𝜋
2,𝑥2=𝜋. Găsiți polinomul interpolant al
acestei funcții, prin metoda directă, apoi utilizând Lagrange și Newton.
4. Aproximați valoarea integralei următoare:
00001,0 42
0=+∫εxdx
prin metoda lui Simpson, cu precizia indicată.
7. Modele s ubiecte examen M. Racil ă
179
Model 32
1. Să se rezolve cu metoda lui Gauss sistemul următor:
=++=++=++
4 6 3 25 5 43 3 2
3 2 13 2 13 2 1
x x xx xxx x x
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si vectorii proprii corespunzători pentru matricea:
−−−
=
15 021101 1
A
3. Fie tabelul de date :
xi 0 1 2 3
fi 2 1 2 3
Construiți polinomul care interpolează aceste puncte prin metoda directă, apoi utilizând
polinoamele Lagrange și Newton.
4. Aproximați valoarea integralei următoare:
0001,0 11
0=+∫ε dxxx
prin metoda lui Simpson, cu precizia indicată.
7. Modele s ubiecte examen M. Racil ă
180
Model 33
1. Să se rezolve cu metoda factorizării LR- Doolittle sistemul următor:
=+−−=+=+
3 3 3 22 21 2
3 2 13 12 1
x x xxxxx
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si vectorii proprii corespunzători pentru matricea:
=
113131311
A
3. Fie tabelul următor :
xi -1 0 1
fi α β α
a. Construiți polinomul de interpolare P, folosind metoda direct ă, apoi polinoamele
Lagrange și Newton.
b. Dacă α = β, cât este gradul lui P ?
c. Arătați că polinomul P este par. Poate avea P gradul 1 ?
4. Aproximați următoarea integrală dublă :
∫∫+Ddxdy
xy xy
) 1(, { }]1,0[ ],3,1[|),( ∈∈ = y xyx D
7. Modele s ubiecte examen M. Racil ă
181
Model 34
1. Să se rezolve cu metoda lui Gauss sistemul următor:
=++=+−=++
12 49 3 26
3 2 13 2 13 2 1
x x xx xxx x x
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si
vectorii proprii corespunzători pentru matricea:
=
102021003
A
3. Fie 𝑓:𝑹→𝑹, 𝑓(𝑥)=1+𝑥3
a. Determinați polinomul P0 ce interpolează funcția f în punctul x 0 = 0 ;
b. Determinați polinomul P1 ce interpolează funcția f în punctulele x 0 = 0, x 1 = 1 ;
c. Determinați polinomul P2 ce interpolează funcția f în punctulele x 0 = 0, x 1 = 1,
x2 = 2 ;
d. Determinați polinomul P3 ce interpolează funcția f în punctulele x 0 = 0, x 1 = 1,
x2 = 2, x3 = 3 ;
e. Pentru n > 3, determinați polinomul Pn ce interpolează funcția f în punct ele
x0 = 0, x 1 = 1,…, x n = n.
4. Estimați ∫𝑓(𝑥)𝑑𝑥5
2
0 plecând de la datele următoare:
x 0 1/2 1 3/2 2 5/2
f(x) 3/2 2 2 1,6364 1,25 0,9565
utilizând metoda trapezelor.
7. Modele s ubiecte examen M. Racil ă
182
Model 35
1. Să se rezolve cu metoda lui Gauss sistemul următor:
=+−−=+=+
3 3 3 22 21 2
3 2 13 12 1
x x xxxxx
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii și vectorii proprii corespunzători pentru matricea:
−−−=
21 11 211 1 2
A
3. Se dă tabelul:
𝑥𝑖 −1 0 1 2
𝑓𝑖 5 1 1 11
Să se determine spline- ul cubic care aproximează funcția de mai sus în condițiile 𝑆
"(−1)=
𝑆"(2)=0.
4. Considerăm integrala 𝐼=∫1
𝑥𝑑𝑥2
1.
a. Calculați valoarea exactă a lui I;
b. Evaluați numeric această integrală prin metoda trapezelor, cu 3 subintervale;
c. Ce număr de subintervale trebuie folosit, astfel încât să avem o eroare inferioară
lui 10-4 ?
7. Modele s ubiecte examen M. Racil ă
183
Model 36
1. Să se rezolve cu metoda factorizării LR- Doolittle sistemul următor:
=++=++=++
4 6 3 25 5 43 3 2
3 2 13 2 13 2 1
x x xx xxx x x
2. Folosind metoda Krylov, să se determine polinomul caracteristic pentru matricea:
−−−−
=
123 13 6 21 2 4
A
3. Speranța de viață într -o țară a evoluat în timp conform tabelului următor:
An 1975 1980 1985 1990
Speranța 72,8 74,2 75,2 76,4
Utilizați interpolarea Lagrange pentru a estima speranța de viață în 1977, 1983 și 1988. Comparați -o cu o interpolare folosind splineul cubic. Ce observați ?
4. Considerăm integrala 𝐼=∫ln𝑥𝑑𝑥
2
1.
a. Evaluați numeric această integrală prin metoda trapezelor, cu 4 subintervale și
comparați rezultatul cu valoarea exactă;
b. Ce număr de subintervale trebuie ales, astfel încât să avem o eroare inferioară lui
10-2 ?
M. Racil ă
184
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 1
Timp de lucru : 2 ore
1. Să se rezolve cu metoda lui Gauss sistemul urm ător:
=++−−=+−=++
3 2 41 2 6 512 2 5
3 2 13 2 13 2 1
xx xx x xxx x
2. Folosind metoda Krylov, s ă se determine p olinomul caracteristic, valorile proprii si vectorii
proprii corespunz ători pentru matricea:
−− −−
=
52 02 6202 7
A
3. Să se determine polinomul de interpolare Lagrange ce interpoleaz ă datele urm ătoare:
ix 0 1 2 3
if 1 2 5 10
4. Se consider ă problema Cauchy:
()
=−−=′
325.12
2
yxy y
Să se determine soluția aproximativă a acestei probleme în punctele 7.11=x , 9.12=x ,
1.23=x folosind o metodă Runge -Kutta de or dinul 2 cu pasul h = 0.2
M. Racil ă
185
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 2
Timp de lucru : 2 ore
1. Să se rezolve cu metoda factorizării LR sistemul următor:
=++−−=+−=++
3 2 41 2 6 512 2 5
3 2 13 2 13 2 1
xx xx x xxx x
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si vectorii proprii corespunzători pentru matricea:
−− −−
=
52 02 6202 7
A
3. Să se determine polinomul de interpolare Newton ce interpolează datele următoare:
ix 0 1 2 3
if 1 2 5 10
4. Se consideră problema Cauchy:
()
=−−=′
325.12
2
yxy y
Să se determine soluția aproximativă a acestei probleme în punctele 7.11=x , 9.12=x ,
1.23=x folosind metoda Euler cu pasul h =0.2
M. Racil ă
186
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 3
Timp de lucru : 2 ore
1. Să se rezolve cu metoda lui Gauss sistemul următor:
−=+−=++=++
8 3 4 90 7 6 58 3 2
3 2 13 2 13 2 1
x x xx x xx x x
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si vectorii proprii corespunzători pentru matricea:
−−−−
=
03 16 9 16 5 3
A
3. Să se determine polinomul de interpolare Lagrange ce interpolează da tele următoare:
ix 1 1.5 2 2.5
if 0 1 2 -1.5
4. Se consideră problema Cauchy:
()
==′
214
yyxy
Să se determine soluția aproximativă a acestei probleme în punctele 25.11=x , 5.12=x ,
75.13=x folosind o metodă Runge -Kutta de ordinul 2 cu pasul h =0.25
M. Racil ă
187
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 4
Timp de lucru : 2 ore
1. Să se re zolve cu metoda lui Gauss sistemul următor:
=+−−=++=−+
7 4 261 2 3
3 2 13 2 13 2 1
x xxx xxx xx
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si vectorii proprii corespunzători pentru matricea:
=
410142114
A
3. Să se determine poli nomul de interpolare Lagrange ce interpolează datele următoare:
ix 0 2 3 5
if 4 6 -2 -6
4. Se consideră problema Cauchy:
()
=−=′
002
yyxy
Să se determine soluția aproximativă a acestei probleme în punc tele 25.01=x , 5.02=x ,
75.03=x folosind o metodă Runge -Kutta de ordinul 2 cu pasul h =0.25
M. Racil ă
188
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 5
Timp de lucru : 2 ore
1. Să se rezolve cu metoda factorizării LR -Doolittle sistemul următor:
−=+−=++=++
8 3 4 90 7 6 58 3 2
3 2 13 2 13 2 1
x x xx x xx x x
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si vectorii proprii corespunzători pentru m atricea:
−−−−
=
03 16 9 16 5 3
A
3. Să se determine polinomul de interpolare Newton ce interpolează datele următoare:
ix 1 1.5 2 2.5
if 0 1 2 -1.5
4. Se consideră problema Cauchy:
()
==′
214
yyxy
Să se determine soluția aproximativă a acestei probleme în punctele 25.11=x , 5.12=x ,
75.13=x folosind o metodă Euler cu pasul h =0.25
M. Racil ă
189
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVE RSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 6
Timp de lucru : 2 ore
1. Să se rezolve cu metoda factorizării LR -Doolittle sistemul următor:
=+−−=++=−+
7 4 261 2 3
3 2 13 2 13 2 1
x xxx xxx xx
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si vectorii
proprii corespunzători pentru matricea:
=
410142114
A
3. Să se determine polinomul de interpolare Newton ce interpolează datele următoare:
ix 0 2 3 5
if 4 6 -2 -6
4. Se consideră problema Cauchy:
()
=−=′
002
yyxy
Să se determine soluția aproximativă a acestei probleme în punctele 25.01=x , 5.02=x ,
75.03=x folosind o metodă Euler cu pasul h =0.25
M. Racil ă
190
FACULTATEA DE AUTOMAT ICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 7
Timp de lucru : 2 ore
1. Să se rezolve cu metoda lui Gauss sistemul următor:
−=−+=+−=++
214 5 31 2
3 2 13 2 13 2 1
x xxx xxx x x
2. Folosind metoda Krylov, să se determine polinomul caracteristi c, valorile proprii si vectorii
proprii corespunzători pentru matricea:
=
210111012
A
3. Să se determine polinomul de interpolare Lagrange ce interpolează datele următoare:
ix 0 2 5
if 3 -1 8
4. Se consideră problema Cauchy:
()
=−=′
2311
yxyy
Să se determine soluția aproximativă a acestei probleme în punctele 1.11=x , 2.12=x ,
3.13=x folosind o metodă Runge -Kutta de ordinul 2 cu pasul h =0.1
M. Racil ă
191
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 8
Timp de lucru : 2 ore
1. Să se rezolve cu metoda factorizării LR sistemul următor:
−=−+=+−=++
214 5 31 2
3 2 13 2 13 2 1
x xxx xxx x x
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si vectorii proprii corespunzători pentru matricea:
=
210111012
A
3. Să se determine polinomul de interpolare Newton ce interpolează datele următoare:
ix 0 2 5
if 3 -1 8
4. Se consideră problema Cauchy:
()
=−=′
2311
yxyy
Să se determine soluția aproximativă a acestei probleme în punctele 1.11=x , 2.12=x ,
3.13=x folosind metoda Euler cu pasul h =0.1
M. Racil ă
192
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 9
Timp de lucru : 2 ore
1. Să se rezolve cu metoda lui Gauss sistemul următor:
=+−−=+=+
3 3 3 22 21 2
3 2 13 12 1
x x xxxxx
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si vectorii proprii corespunzători pentru matricea:
−=
1 00320111
A
3. Să se determine polinomul de interpolare Lagrange ce interpolează datele următoare:
ix 0 2 4
if 1 5 17
4. Se consideră problema Cauchy:
()
=+=′
2012
yx y
Să se determine soluția aproximativă a acestei probleme în punctele 1.01=x , 2.02=x ,
3.03=x folosind o metodă Runge -Kutta de ordinul 2 cu pasul h =0.1
M. Racil ă
193
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 10
Timp de lucru : 2 ore
1. Să se rezolve cu metoda factorizării LR – Doolittle sistemul următor:
=+−−=+=+
3 3 3 22 21 2
3 2 13 12 1
x x xxxxx
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si vectorii proprii corespunzători pentru matricea:
−=
1 00320111
A
3. Să se determine polinomul de interpolare Newton ce interpolează datele următoare:
ix 0 2 4
if 1 5 17
4. Se consideră problema Cauchy:
()
=+=′
2012
yx y
Să se determine soluția aproximativă a acestei probleme în punctele 1.01=x , 2.02=x ,
3.03=x folosind o metodă Euler cu pasul h =0.1
M. Racil ă
194
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 11
Timp de lucru : 2 ore
1. Să se rezolve cu me toda lui Gauss sistemul următor:
=++=++=++
4 6 3 25 5 43 3 2
3 2 13 2 13 2 1
x x xx xxx x x
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si vectorii proprii corespunzători pentru matricea:
−−−−−−
=
4 5 36 7 36 3 1
A
3. Să se determine polinomul de interpolare Lagrange ce interpolează datele următoare:
ix 0 1 2 3
if 1 4 5 7
4. Se consideră problema Cauchy:
()
=++=′
1013 2
yx xyy
Să se determine soluția aproximativă a acestei probleme în punctele 5.01=x , 12=x , 5.13=x
folosind o metodă Runge -Kutta de ordinul 2 cu pasul h =0.5
M. Racil ă
195
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 12
Timp d e lucru : 2 ore
1. Să se rezolve cu metoda factorizării LR – Doolittle sistemul următor:
=++=++=++
4 6 3 25 5 43 3 2
3 2 13 2 13 2 1
x x xx xxx x x
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si vectorii proprii corespunzători pentru matricea:
−−−−−−
=
4 5 36 7 36 3 1
A
3. Să se determine polinomul de interpolare Newton ce interpolează datele următoare:
ix 0 1 2 3
if 1 4 5 7
4. Se consideră problema Cauchy:
()
=++=′
1013 2
yx xyy
Să se determine sol uția aproximativă a acestei probleme în punctele 5.01=x , 12=x , 5.13=x
folosind o metodă Euler cu pasul h =0.5
M. Racil ă
196
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 13
Timp de lucru : 2 ore
1. Să se rezolve cu metoda lui Gauss sistemul urm ător:
=++=+−=++
12 49 3 26
3 2 13 2 13 2 1
x x xx x xx x x
2. Folosind metoda Krylov, s ă se determine polinomul caracteristic, valorile proprii si vectorii
proprii corespunz ători (daca este posibil) pentru matricea:
−−−
=
49 637 525 4
A
3. Să se determine polinomul de interpolare Lagrange ce interpoleaz ă datele urm ătoare:
ix -3 -2 0 1
if 91 23 1 -1
4. Se consider ă problema Cauchy:
()
=−+=′
218
22
yxyxyy
Să se determine soluția aproximativă a acestei probleme în punctele 2.11=x , 4.12=x ,
6.13=x folosind o metodă Runge -Kutta de ordinul 2 cu pasul h = 0.2
M. Racil ă
197
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 14
Timp de lucru : 2 ore
1. Să se rezolve cu metoda factorizării LR sistemul următor:
=++=+−=++
12 49 3 26
3 2 13 2 13 2 1
x x xx x xx x x
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si vectorii proprii corespunzători pentru matricea:
−=
1 10010112
A
3. Să se determine polinomul de interpolare Newton ce interpolează datele următoare:
ix -3 -2 0 1
if 91 23 1 -1
4. Se consideră problema Cauchy:
()
=−+=′
218
22
yxyxyy
Să se determine soluția aproximativă a acestei probleme în punctele 2.11=x , 4.12=x ,
6.13=x folosind metoda Euler cu pasul h =0.2
M. Racil ă
198
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 15
Timp de lucru : 2 ore
1. Să se rezolve cu metoda lui Gauss s istemul următor:
=++=++=++
7 3 211 2 5 25 2
3 2 13 2 13 2 1
x x xx x xx x x
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si vectorii proprii corespunzători (daca este posibil) pentru matricea:
−−−=
2 1 44 3 42 1 3
A
3. Să se determine polinomul de interpolare Lagrange ce interpolează datele următoare:
ix -2 -1 0 1
if -12 -5 -4 -3
4. Se consideră problema Cauchy:
()
=−−=′
5.0141
22
yx xyy y
Să se determine soluția aproximativă a acestei probleme în puncte le 5.11=x , 22=x ,
folosind o metodă Runge -Kutta de ordinul 2 cu pasul h =0.5
M. Racil ă
199
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 16
Timp de lucru : 2 ore
1. Să se rezolve cu metoda factorizării LR -Doolittle sistemul următor:
=++=++=++
7 3 211 2 5 25 2
3 2 13 2 13 2 1
x x xx x xx x x
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si vectorii proprii corespunzători pentru matricea:
−−−
=
15 021101 1
A
3. Să se determine polinomul de interpolare Newton ce interpolează datele următoare:
ix -2 -1 0 1
if -12 -5 -4 -3
4. Se consideră problema Cauchy:
()
=−−=′
5.0141
22
yx xyy y
Să se determine soluția apr oximativă a acestei probleme în punctele 5.11=x , 22=x ,
folosind o metodă Euler cu pasul h =0.5
M. Racil ă
200
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 17
Timp de lucru : 2 ore
1. Să se rezolve cu metoda lui Gauss sistemul următor:
=++=++=++
7 3 310 3 5 24 2
3 2 13 2 13 2 1
x x xx x xx x x
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si vectorii proprii corespunzători pentru matricea:
=
113131311
A
3. Să se determine polinomul de interpolare Newton ce interpolează datele următoare:
ix 1 2 3 4 5
if 2 5 10 17 26
4. Se consideră problema Cauchy:
()
=+=′
1012
yxyy
Să se determine soluția apro ximativă a acestei probleme în punctele 5.01=x , 12=x ,
5.13=x folosind o metodă Runge -Kutta de ordinul 2 cu pasul h =0.5
M. Racil ă
201
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATE A DIN CRAIOVA
EXAMEN
SUBIECT NR. 18
Timp de lucru : 2 ore
1. Să se rezolve cu metoda factorizării LR sistemul următor:
=++=++=++
7 3 310 3 5 24 2
3 2 13 2 13 2 1
x x xx x xx x x
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si vectorii propri i corespunzători pentru matricea:
−−−=
10 7 412 9 46 4 3
A
3. Să se determine polinomul de interpolare Lagrange ce interpolează datele următoare:
ix 1 2 3 4 5
if 2 5 10 17 26
4. Se consideră problema Cauchy:
()
=+=′
1012
yxyy
Să se determine soluția aproximativă a acestei probleme în punctele 5.01=x , 12=x ,
5.13=x folosind metoda Euler cu pasul h =0.5
M. Racil ă
202
FACULTATEA DE AUTOMATICA, CALCULATO ARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 19
Timp de lucru : 2 ore
1. Să se rezolve cu metoda lui Gauss sistemul următor:
2. Folosind metoda Krylov, să se determine polinomul caracteristic, valorile proprii si vectorii proprii corespunzători ( daca este posibil) pentru matricea:
−−−−−
=
02 22 2 33 5 6
A
3. Să se determine polinomul de interpolare Lagrange ce interpolează datele următoare:
ix 1 2 3 5
if 2 3 0 6
4. Se consideră p roblema Cauchy:
()
=++−=′
2112
yx x y
Să se determine soluția aproximativă a acestei probleme în punctele 25.11=x , 5.12=x ,
75.13=x folosind o metodă Runge -Kutta de ordinul 2 cu pasul h =0.25
=−+=+−=++
3 2 36 3 25 2
3 2 13 2 13 2 1
x x xx xxxx x
M. Racil ă
203
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 20
Timp de lucru : 2 ore
1. Să se rezolve cu metoda factorizării LR – Doolittle sistemul următor:
=−+=+−=++
3 2 36 3 25 2
3 2 13 2 13 2 1
x x xx xxx x x
2. Folosind metoda K rylov, să se determine polinomul caracteristic, valorile proprii si vectorii
proprii corespunzători pentru matricea:
=
102021003
A
3. Să se determine polinomul de interpolare Newton ce interpolează datele următoare:
ix 1 2 3 5
if 2 3 0 6
4. Se consideră problema Cauchy:
()
=++−=′
2112
yx x y
Să se determine soluția aproximativă a acestei probleme în punctele 25.11=x , 5.12=x ,
75.13=x folosind o met odă Euler cu pasul h =0.25
M. Racil ă
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 21
Timp de lucru : 2 ore
1. Să se rezolve cu metoda lui Gauss sistemul următor:
−=+−−=++−−−=−−+=−−+
6 15 5 314 9 52 10 7 6 23 4 2 3
4 2 14 3 2 14 3 2 14 3 2 1
x x xx x xxx x x xx x x x
3. Să se determine polinomul de interpolare Lagrange ce
interpolează datele următoare:
ix -2 -1 0
if -12 -5 -4
2. Folosind metoda Krylov, să se determine polinomul
caracteristic, valorile proprii ș i vectorii proprii
corespunzători pentru matricea:
−−−−−
=
4 1 221 29 3 7
A 4. Aproximați valoarea integralei ∫1
𝑥2+1𝑑𝑥1
0, folosind
metoda lui Simpson pe 2 subintervale.
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 22
Timp de lucru : 2 ore
1. Să se rezolve cu metoda factoriz ării LR sistemul
următor:
−=+−−=++−−−=−−+=−−+
6 15 5 314 9 52 10 7 6 23 4 2 3
4 2 14 3 2 14 3 2 14 3 2 1
x x xx x xxx x x xx x x x
3. Să se determine polinomul de interpolare Newton ce
interpolează datele următoare:
ix -2 -1 0 1
if -12 -5 -4 -3
2. Folosind metoda minorilor diagonali , să se determine
polinomul c aracteristic pentru matricea:
𝐴=�33
22 2 1
31
1 0
11 01
10� 4. Se consideră problema Cauchy:
()
=−=′
002
yx yy
Să se determine soluția aproximativă a acestei probleme
în punctele 25.01=x , 5.02=x , 75.03=x folosind o
metod ă Euler cu pasul h =0.25
M. Racil ă
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 23
Timp de lucru : 2 ore
1. Să se rezolve cu metoda lui Gauss sistemul următor:
=+++=+++−=+++−=+++
4 5 3 74 3 7 54 7 5 34 7 5 3
4 3 2 14 3 2 14 3 2 14 3 2 1
x x xxx xx xxx x xx x x x
3. Să se determine polinomul de interpolare Lagrange ce
interpolează datele următoare:
ix -2 -1 1
if -12 5 -3
2. Folosind metoda Krylov, să se determine polinomul
caracteristic, valorile proprii ș i vectorii proprii
corespunzători (dacă este posibil ) pentru matricea:
−=
422111311
A 4. Estimați ∫𝑓(𝑥)𝑑𝑥3/2
1/2, plecând de la datele următoare:
ix 1/2 1 3/2
if 2 2 1,63
utilizând metoda trapezului .
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 24
Timp de lucru : 2 ore
1. Să se rezolve cu metoda factoriz ării LR sistemul
următor:
=+++=+++−=+++−=+++
4 5 3 74 3 7 54 7 5 34 7 5 3
4 3 2 14 3 2 14 3 2 14 3 2 1
x x xxx xx xxx x xx x x x
3. Să se determine polinomul de interpolare Newton ce
interpolează datele următoare:
ix -2 -1 1 3
if -12 5 -3 23
2. Folosind metoda minorilor diagonali , să se determine
polinomul c aracteristic pentru matricea:
𝐴=�12
10 −2 3
−14
0 1
0−1 0−3
1 3� 4. Se consideră problema Cauchy:
()
=+=′
1012
yxyy
Să se determine soluția aproximativă a acestei probleme
în punctele 2.01=x , 4.02=x , 6.03=x folosind o
metod ă Euler cu pasul h =0.2
M. Racila
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 25
Timp de lucru : 2 ore
1. Să se rezolve cu metoda lui Gauss sistemul următor :
−=+−=++−=+−
2 3 4 4 26 2
3 23 2 12 1
x xxx xx x
3. Să se determine polinomul de interpolare Lagrange ce
interpolează datele următoare:
ix 0 1 3
if 1 -1 73
2. Folosind metoda Krylov, să se determine polinomul
caracteristic, valorile proprii ș i vectorii proprii
corespunzători (dacă este posibil ) pentru matricea:
−−
=
55 31 012 30
A 4. Estimați ∫𝑓(𝑥)𝑑𝑥2
0, plecând de la datele următoare:
ix 0 1/2 1 3/2 2
if 3/2 2 2 1,63 1,25
utilizând metoda trapezului .
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 26
Timp de lucru : 2 ore
1. Să se rezolve cu metoda factoriz ării LR sistemul
următor:
−=+−=++−=+−
2 3 4 4 26 2
3 23 2 12 1
x xxx xx x
3. Să se determine polinomul de interpolare Newton ce
interpolează datele următoare:
ix -2 0 1 3
if 23 1 -1 73
2. Folosind metoda minorilor diagonali , să se determine
polinomul c aracteristic pentru matricea:
( -2 0 1 2 ) 1 1 2 3
0 -2 -3 1
1 -1 1 2
4. Se consideră problema Cauchy:
()
=−=′
00yxyy
Să se determine soluția aproximativă a acestei probleme
în punctele 2.01=x , 4.02=x , 6.03=x folosind o
metod ă Euler cu pasul h =0.2
M. Racila
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 27
Timp de lucru : 2 ore
1. Să se rezolve cu metoda lui Gauss sistemul următor :
=++=+=+++=+++
206 3 2 22 2 3 3
3 2 14 14 3 2 14 3 2 1
x xxxxx x x xx x x x
3. Să se determine polinomul de interpolare Lagrange ce
interpolează datele următoare:
ix 2 4 6
if 3 11 27
2. Folosind metoda Krylov, să se determine polinomul
caracteristic, valorile proprii ș i vectorii proprii
corespunzători pentru matricea:
−−−=
21 11 211 1 2
A 4. Se consideră problema Cauchy:
()
=−=′
00yxyy
Să se determine soluția aproximativă a acestei probleme
în punctele 25.01=x , 5.02=x , 75.03=x folosind o
metod ă Euler cu pasul h =0.25
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 28
Timp de lucru : 2 ore
1. Să se rezolve cu metoda factoriz ării LR sistemul
următor:
=++=+=+++=+++
206 3 2 22 2 3 3
3 2 14 14 3 2 14 3 2 1
x xxxxx x x xx x x x
3. Să se determine polinomul de interpolare Newton ce
interpolează datele următoare:
ix 2 4 6
if 3 11 27
2. Folosind metoda minorilor diagonali , să se determine
polinomul caracteristic și valorile proprii pentru
matricea:
𝐴=�2−2
1−1 −13
0 1
−3 0
0 0 17
02� 4. Se consideră problema Cauchy:
()
=−=′
00yxyy
Să se determine soluția aproximativă a acestei probleme
în punctele 25.01=x , 5.02=x , 75.03=x folosind o
metod ă Runge -Kutta de ordinul II cu pasul h =0.25
M. Racila
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 29
Timp de lucru : 2 ore
1. Să se rezolve cu metoda lui Gauss sistemul următor :
−=+−−=++−−−=−−+=−−+
6 15 5 314 9 52 10 7 6 23 4 2 3
4 2 14 3 2 14 3 2 14 3 2 1
x x xx x xxx x x xx x x x
3. Să se determine polinomul de interpolare Lagrange ce
interpolează datele următoare:
ix 0 2 4
if 1 9 65
2. Folosind metoda Krylov, să se determine polinomul
caracteristic pentru matricea:
−−−−
=
123 13 6 21 2 4
A 4. Se consideră problema Cauchy:
()
=−=′
002
yx yy
Să se determine soluția aproximativă a acestei probleme
în punctele 1.01=x , 2.02=x , 3.03=x folosind o
metod ă Euler cu pasul h =0.1
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 30
Timp de lucru : 2 ore
1. Să se rezolve cu metoda factoriz ării LR sistemul
următor:
−=+−−=++−−−=−−+=−−+
6 15 5 314 9 52 10 7 6 23 4 2 3
4 2 14 3 2 14 3 2 14 3 2 1
x x xx x xxx x x xx x x x
3. Să se determine polinomul de interpolare Newton ce
interpolează datele următoare:
ix 0 2 4
if 1 9 65
2. Folosind metoda minorilor diagonali , să se determine
polinomul c aracteristic pentru matricea:
𝐴=�54
45 1 1
11
1 1
11 42
24� 4. Se consideră problema Cauchy:
()
=−=′
002
yx yy
Să se determine soluția aproximativă a acestei probleme
în punctele 1.01=x , 2.02=x , 3.03=x folosind o
metod ă Runge -Kutta de ordinul II cu pasul h =0.1
M. Racila
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 31
Timp de lucru : 2 ore
1. Să se rezolve cu metoda lui Gauss sistemul următor :
=+−=++=++
1 3 4 90 7 6 57 3 2
3 2 13 2 13 2 1
x x xx x xx x x
3. Să se determine polinomul de interpolare Lagrange ce
interpolează datele următoare:
ix -1 1 2
if 2 1 1
2. Folosind metoda Krylov, să se determine polinomul
caracteristic, valorile proprii ș i vectorii proprii
corespunzători pentru matricea:
−=
1101 11051
A 4. Se consideră problema Cauchy:
()
=−=′
105
yy xy
Să se determine soluția aproximativă a acestei probleme
în punctele 25.01=x , 5.02=x , 75.03=x folosind o
metod ă Euler cu pasul h =0.25
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 32
Timp de lucru : 2 ore
1. Să se rezolve cu metoda factoriz ării LR sistemul
următor:
=+−=++=++
1 3 4 90 7 6 57 3 2
3 2 13 2 13 2 1
x x xx x xx x x
3. Să se determine polinomul de interpolare Newton ce
interpolează datele următoare:
ix -1 1 2
if 2 1 1
2. Folosind metoda minorilor diagonali , să se determine
polinomul caracteristic și valorile proprii pentru
matricea:
−=
1101 11051
A 4. Se consideră problema Cauchy:
()
=−=′
105
yy xy
Să se determine soluția aproximativă a acestei probleme
în punctele 25.01=x , 5.02=x , 75.03=x folosind o
metod ă Runge -Kutta de ordinul II cu pasul h =0.25
M. Racila
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 33
Timp de lucru : 2 ore
1. Să se rezolve cu metoda lui Gauss sistemul următor :
=−+=+−−=++−
3 46 36 2 4
3 2 13 2 13 2 1
x xxxx xx xx
3. Să se determine polinomul de interpolare Lagrange ce
interpolează datele următoare:
ix -3 -2 0
if 91 23 1
2. Folosind metoda Krylov, să se determine polinomul
caracteristic, valorile proprii ș i vectorii proprii
corespunzători (dacă este posibil) pentru matricea:
−=
11 0240212
A 4. Aproximați valoarea integralei ∫1
𝑥2+4𝑑𝑥2
0, folosind
metoda lui Simpson pe 2 subintervale.
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 34
Timp de lucru : 2 ore
1. Să se rezolve cu metoda factoriz ării LR sistemul
următor:
=−+=+−−=++−
3 46 36 2 4
3 2 13 2 13 2 1
x xxxx xx xx
3. Să se determine polinomul de interpolare Newton ce
interpolează datele următoare:
ix -3 -2 0 1
if 91 23 1 -1
2. Folosind metoda minorilor diagonali , să se determine
polinomul c aracteristic pentru matricea:
𝐴=�11
02 3−1
1 1
1 0
00 1−2
0 2� 4. Se consideră problema Cauchy:
()
==′
214
yyxy
Să se determine soluția aproximativă a acestei probleme
în punctele 1.11=x , 3.12=x , 5.13=x folosind o
metod ă Euler cu pasul h =0.2
M. Racila
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 35
Timp de lucru : 2 ore
1. Să se rezolve cu metoda lui Gauss sistemul următor :
=+−−=−+=+−
5 2 31 210 3
3 2 13 2 13 2 1
x xxx xxx x x
3. Să se determine polinomul de interpolare Lagrange ce
interpolează datele următoare:
ix 0 1 2
if 1 4 15
2. Folosind metoda Krylov, să se determine polinomul
caracteristic și valorile proprii pentru matricea:
−− =
32 02 420 23
A 4. Se consideră problema Cauchy:
()
=+=′
211
yxy
Să se determine soluția aproximativă a acestei probleme
în punctele 25.11=x , 5.12=x , 75.13=x folosind o
metod ă Euler cu pasul h =0.25
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 36
Timp de lucru : 2 ore
1. Să se rezolve cu metoda factoriz ării LR sistemul
următor:
=+−−=−+=+−
5 2 31 210 3
3 2 13 2 13 2 1
x xxx xxx x x 3. Să se determine polinomul de interpolare Newton ce
interpolează datele următoare:
ix 0 1 2
if 1 4 15
2. Folosind metoda minorilor diagonali , să se determine
polinomul c aracteristic și valorile proprii pentru
matricea:
−− =
32 02 420 23
A 4. Se consideră problema Cauchy:
()
=+=′
211
yxy
Să se determine soluția aproximativă a acestei probleme
în punctele 25.11=x , 5.12=x , 75.13=x folosind o
metod ă Runge -Kutta de ordinul II cu pasul h =0.25
M. Racila
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 37
Timp de lucru : 2 ore
1. Să se rezolve cu metoda lui Gauss sistemul următor :
=−−=−+=++
2 2 27 2 22 3 2
3 2 13 2 13 2 1
x xxxx xx x x
3. Să se determine polinomul de interpolare Lagrange ce
interpolează datele următoare:
ix 2 3 4
if 3 -1 0
2. Folosind metoda Krylov, să se determine polinomul
caracteristic, valorile proprii ș i vectorii proprii
corespunzători pentru matricea:
−−−−
=
1 010 111 1 1
A 4. Se consideră problema Cauchy:
()
=+=′
211
yxy
Să se determine soluția aproximativă a acestei probleme
în punctele 1.11=x , 2.12=x , 3.13=x folosind o
metod ă Euler cu pasul h =0.1
FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA
UNIVERSITATEA DIN CRAIOVA
EXAMEN
SUBIECT NR. 38
Timp de lucru : 2 ore
1. Să se rezolve cu metoda factoriz ării LR sistemul
următor:
=−−=−+=++
2 2 27 2 22 3 2
3 2 13 2 13 2 1
x xxxx xx x x
3. Să se determine polinomul de interpolare Newton ce
interpolează datele următoare:
ix 1 2 3 4
if 1 3 -1 0
2. Folosind metoda minorilor diagonali , să se determine
polinomul c aracteristic pentru matricea următoare:
𝐴=�00
10 0−1
0 2
0 1
00 0−3
1 4� 4. Aproximați valoarea integralei ∫1
𝑥2+1𝑑𝑥1
0, folosind
metoda trapezului pe 4 subintervale.
Ghid de "supravie țuire" C++
1
C++ – Ghid de "supravie țuire" pentru Laborator
Scopul acestui ghid este acela de a furniza informațiile de bază necesare programării
în C++ a algoritmilor prezentați la curs, precum și a testării acestora pe diverse situații
concrete. El nu se pretinde a fi nici un manual de C++, nici o inițiere în programare. Se
presupune că aveți deja cunoștințele necesare programării în C, respectiv C++ (di n primul
semestru), precum și a utilizării fișierelor.
STRUCTURA GENERALĂ A UNUI SISTEM DE CALCUL
Calculatorul reprezintă un sistem electronic (ansamblu de dispozitive și circuite diverse)
complex care prelucrează datele introduse într -o formă prestabilită, efectuează diverse operații asupra
acestora și furnizează rezultatele ob ținute:
Principalele avantaje ale folosirii calculatorului constau în:
viteza mare de efectuare a operațiilor
capacitatea extinsă de prelu crare și memorare a informației
Deși construcția unui calculator – determinată de tehnologia existent ă la un moment dat, de domeniul
de aplicație, de costul echipamentului și de performanțele cerute – a evoluat rapid în ultimii ani,
sistemele de calcul, indiferent de model, serie sau generație, au o serie de caracteristici comune.
Cunoașterea acestor caracteristici ușurează procesul de înțelegere și învățare a modului de funcționare
și de utilizare a calculatorului.
În orice sistem de calcul vom găsi două părți distincte și la fel de importante: hardware -ul și
software -ul.
Hardware -ul este reprezentat de t otalitatea echipamentelor și dispozitivelor fizice
Software -ul este reprezentat prin totalitatea programelor care ajută utilizatorul în rezolvarea
problemelor sale
Software -ul are două componente principale:
Sistemul de operare (de exploatare) care coordon ează întreaga activitate a echipamentului de
calcul. Sistemul de operare intră în funcțiune la pornirea calculatorului și asigură, în principal,
trei funcții:
Gestiunea echitabilă și eficientă a resurselor din cadrul sistemului de calcul;
Realizarea interfeței cu utilizatorul;
Furnizarea suportului pentru dezvoltarea și execuția aplicațiilor.
Exemple de sisteme de operare: MS-DOS, LINUX, WINDOWS , UNIX.
Date de intrare
(datele inițiale ale
problemei)
Date de ieșire (rezultatele
obținute)
PROGRAM (șir de acțiuni ,
prelucrări, algoritm )
Ghid de "supravie țuire" C++
2
Sistemul de aplicații (de programare): medii de programare, editoare de texte, compilatoare,
program e aplicative din diverse domenii (economic, științific, financiar, divertisment ).
Componentele unui sistem de calcul pot fi grupate în unități cu funcții complexe, dar bine precizate,
numite unități funcționale . Modelul din figura următoare face o prezentare simplificată a structurii
unui calculator, facilit ând înțelegerea unor noțiuni și concepte de bază privind funcționarea și
utilizarea acestuia. Denumirea fiecărei unități indică funcția ei, iar săgețile – modul de transfer al
informației.
Vom utiliza în continuare termenii de citire pentru operația de introducere (de intrare) de la
tastatură a datelor inițiale ale unei probleme, și scriere pentru operația de afișare (de ieșire) a
rezultatelor obținute. În cazul în care utilizatorul dorește să rezolve o problemă cu ajutorul
calculatorului, informația de intrare (f urnizată calculatorului de către utilizator) va consta din datele
inițiale ale problemei de rezolvat și dintr -un program (numit program sursă). În programul sursă
utilizatorul implementează (traduce) într -un limbaj de programare un algoritm (acțiunile executate
asupra datelor de intrare pentru a obține rezultatele). Această informație de intrare este prezentată
într-o forma externă , accesibilă omului (numere, text, grafică) și va fi transformată de către calculator
într-o forma internă , binară.
Unitatea de intrare (cu func ția de citire) realizează această conversie a informației din format extern
în cel intern. Din punct de vedere logic, fluxul (informația) de intrare este un șir de caractere, din
exterior către memoria calculatorului. Din punct de vedere f izic, unitatea de intrare standard este
tastatura calculatorului. Tot ca unități de intrare, pot fi enumerate: mouse -ul, joystick -ul, scanner -ul
(pentru introducerea informațiilor grafice).
Unitatea de ieșire (cu func ția de scriere, afișare) realizează con versia inversă, din formatul intern în
cel extern, accesibil omului. Din punct de vedere fizic, unitatea de ieșire standard este monitorul
calculatorului. Ca unități de ieșire într -un sistem de calcul, mai putem enumera: imprimanta, plotter -ul,
etc.
Inform ația este înregistrată în memorie .
Echipament ul de calcul ca un sistem hardware -software
HARDWARE
SISTEM OPERARE
UTILIZATOR
SOFTWARE
SOFTWARE DE
APLICAȚIE
Ghid de "supravie țuire" C++
3
Memoria internă (memoria RAM – Random Acces Memory) se prezintă ca o succesiune de octeți
(octet sau byte sau locație de memorie). Un octet are 8 biți. Bit-ul reprezintă unitatea elementară de
informație și poate avea una din valorile: 0 sau 1.
Capacitatea unei memorii este dată de numărul de locații pe care aceasta le conține și se măsoară în
multiplii de 1024 (210). De exemplu, 1 Mbyte=1024Kbytes; 1Kbyte=1024bytes.
Numărul de ordine al unui octet în memorie se poate specifica printr -un cod, numit adresă . Ordinea în
care sunt adresate locațiile de memorie nu este impusă, memoria fiind un dispozitiv cu acces aleator la
informație. În memorie se înregistrează două categorii de informații:
Date – informații de prelucrat
Programe – conțin descrierea (implementarea într -un limbaj de programare) a acțiunilor
care vor fi executate asupra datelor, în vederea prelucrării acestora
În memoria internă este păstrată doar informația prelucrată la un m oment dat. Memoria internă are
capacitate redusă; accesul la informația pastrată în aceasta este extrem de rapid, iar datele nu sunt
păstrate după terminarea prelucrării (au un caracter temporar).
Unitatea centrală prelucrează datele din memoria internă și coordonează activitatea tuturor
componentelor fizice ale unui sistem de calcul. Ea î nglobează:
Microprocesoru l- circuit integrat complex cu următoarele componente de bază:
Unitatea de execuție (realizează operații logice și matematice);
Unitatea de interfață a magistralei (transferă datele la/de la microprocesor).
Coprocesorul matematic – circuit integrat destinat realizării cu viteză sporită a
operațiilor cu numere reale.
Memoria externă este reprezentată, fizic, prin unitățile de discuri (discuri dure- hard disk, discuri de
pe care informația poate fi doar citită- CDROM, DVDROM, etc). Spre deosebire de memoria internă,
memoria externă are capacitate mult mai mare, datele înregistrate au caracter permanent, în
dezavantajul timpului de acces la informație.
ALGORITMI
Algoritmul este conceptul fundamental al informaticii. Orice echipament de calcul poate fi considerat
o ma șină algoritmică. Într -o definiție aproximativă algoritmul este un set de pași care definește modul
Unitate de intrare (flux de
intrare – istream în C++)
Memorie internă
Unitate de ieșire (flux de
ieșire – ostream în C++)
Unitate centrală
Memorie externă
Unitățile funcționale ale unui sistem de calcul
Ghid de "supravie țuire" C++
4
în care poate fi dusă la îndeplinire o anumită sar cină. Exemplu de algoritm: algoritmul de interpretare
a unei bucăți muzicale (descris în partitură). Pentru ca o mașină de calcul să poată rezolva o anumită
problemă, programatorul trebuie mai înt âi să stabilească un algoritm care să conducă la efectuarea
sarcinii respective.
Exemplu:
Algoritmul lui Euclid pentru determinarea celui mai mare divizor comun (cmmdc) a 2 numere
întregi pozitive.
Date de intrare: cele 2 numere întregi
Date de iesire: cmmdc
1. Se notează cu A și B – cea mai mare, respectiv cea mai mică, dintre datele de intrare
2. Se împarte A la B și se notează cu R restul împărțirii
3. a. Dacă R diferit de 0, se atribuie lui A valoarea lui B și lui B valoarea lui R. Se revine
la pasul 2.
b. Dacă R es te 0, atunci cmmdc este B.
Probleme legate de algoritmi
Descoperirea unui algoritm care să rezolve o problemă echivalează în esență cu descoperirea unei
soluții a problemei. După descoperirea algoritmului, pasul următor este ca algoritmul respectiv să fi e
reprezentat într -o formă în care să poată fi comunicat unei mașini de calcul. Algoritmul trebuie
transcris din forma conceptuală într -un set clar de instrucțiuni. Aceste instrucțiuni trebuie reprezentate
într-un mod lipsit de ambiguitate. În acest domeniu, studiile se bazează pe cunoștințele privitoare la
gramatică și limbaj și au dus la o mare varietate de scheme de reprezentare a algoritmilor (numite
limbaje de programare), bazate pe diverse abordări ale procesului de programare (numite paradigme
de pr ogramare).
Căutarea unor algoritmi pentru rezolvarea unor probleme din ce în ce mai complexe a avut ca urmare
apariția unor întrebări legate de limitele proceselor algoritmice, cum ar fi:
Ce probleme pot fi rezolvate prin intermediul proceselor algoritmi ce?
Cum trebuie procedat pentru descoperirea algoritmilor?
Cum pot fi îmbunătățite tehnicile de reprezentare și comunicare a algoritmilor?
Cum pot fi aplicate cunoștințele dob ândite în vederea obținerii unor mașini algoritmice mai
performante?
Cum pot fi a nalizate și comparate caracteristicile diverșilor algoritmi?
Definiție : Algoritmul este un set ordonat de pași executabili, descriși fără echivoc, care definesc un
proces finit.
Proprietățile fundamentale ale algoritmilor:
Caracterul finit: orice algoritm bine proiectat se term ină într -un număr finit de pași
Caracterul unic și universal : orice algoritm trebuie să rezolve toate probl emele dintr -o anumită
clasă de probleme
Realizabilitatea : orice algoritm trebuie să poată fi codific at într -un limbaj de programare
Caracterul discret : fiecare acțiune se e xecută la un moment dat de timp
Caracterul determinist : ordinea acțiunilor în execuție este determinată în mod unic de rezultatele
obținute la fiecare moment de timp
Nerespectarea acestor caracte ristici generale conduce la obținerea de algoritmi neperformanți, posibil
infiniți sau nerealizabili.
Reprezentarea algoritmilor
Ghid de "supravie țuire" C++
5
Reprezentarea (descrierea) unui algoritm nu se poate face în absența unui limbaj comun celor care vor
să îl înțeleagă. De aceea s- a stabilit o mulțime bine definită de primitive (blocuri elementare care stau
la baza reprezentării algoritmilor). Fiecare primitivă se caracterizează prin sintax ă și semantică .
Sintaxa se referă la reprezentarea simbolică a primitivei; semantica se referă la semnificația primitivei.
Exemplu de primitivă: aer -din punct de vedere sintactic este un cuv ânt format din trei simboluri
(litere); din punct de vedere semantic este o substanță gazoasă care înconjoară globul păm ântesc.
Algoritmii se reprezin tă prin:
scheme logice
pseudocod.
Reprezentarea algoritmilor prin scheme logice
Primitivele utilizate în schemele logice sunt simboluri grafice, cu funcțiuni (reprezent ând procese de
calcul) bine precizate. Aceste simboluri sunt unite prin arce orientate care indică ordinea de execuție a
proceselor de calcul.
Categorii de simboluri:
Simboluri de început și sfârșit
Simbolul paralelogram
Simbolul dreptunghi
Simbolul romb
Semnifică procese (operații) de
intrare/ieșire (citirea sau scrierea)
CITEȘTE a
AFIȘEAZĂ a, b
a ←34
START
STOP
Simbolul START desemnează începutul unui
program sau al unui subprogram.
Simbolul STOP desemnează sf ârșitul unui
program sau al unui subprogram. Prezen ța lor
este obligatorie.
Semnifică o atribuire (modificarea
valorii unei date).
Structura de decizie
DA
NU
ACȚIUNE2
ACȚIUNE1
Simbolul ro mb este utilizat pentru
decizii. Se testează îndeplinirea condiției
din blocul de decizie. Dacă această
condiție este îndeplinită, se execută
ACȚIUNE1. Dacă nu, se execută ACȚIUNE2. La un moment dat, se execută sau ACȚIUNE1, sau
ACȚIUNE2.
Condiție
îndeplinită
Ghid de "supravie țuire" C++
6
Cu ajutorul acestor simboluri grafice se poate reprezenta orice algoritm.
Repetarea unei secvențe se realizează prin combinarea simbolurilor de decizie și de atribuire.
Structurile repetitive obținute pot fi: cu test inițial sau cu test final.
Structuri repetitive cu test initial
Exisă și situații în care se știe de la început de c âte ori se va repeta o anumită acțiune. În aceste cazuri
se folosește tot o structură de control repetitivă cu test inițial. Se utilizează un contor (numeric) pentru
a ține o evidență a numărului de execuții ale acțiunii. De câ te ori se execută acțiunea, co ntorul este
incrementat.
Structură repetitivă cu test final:
Se evalu ează condiția de test . Dacă aceasta
este îndeplinită, se execută ACȚIUNE1. Se
revine apoi și se testează iar condiția. Dacă
este îndeplinită, se execută (se repetă)
ACȚIUNE1, ș.a.m.d. Abia în momentul în
care condiția nu mai este îndeplinită, se trece
la execuția ACȚIUNE2.
Astfel, cât timp condiția este îndeplinită, se
repetă ACȚIUNE1. În cazul în care, la prima testare a condiției, aceasta nu este îndeplinită, se execută ACȚIUNE2. Astfel, este posibil ca
ACȚIUNE1 să nu fie executată niciodată.
DA
NU
ACȚIUNE2
ACȚIUNE1
Condiție
îndeplinită?
Structură repetitivă cu test inițial
Se atribui e contorului valoarea inițială.
Cât timp condiția (valoarea contorului
este mai mică sau egală cu valoarea finală)
este îndeplinită, se repetă :
ACȚIUNE
incrementare contor (se adună 1 la
valoarea anterioară a contorulu i).
contor valoare_inițială
valoare_contor <=
valoare_finală
ACȚIUNE
valoare_contor valoare_contor + 1
DA
NU
Se execută mai înt âi ACȚIUNE1 . Se
testează apoi condiția. Se repetă
ACȚIUNE1 cât timp condiția este
îndeplinită.
În acest caz, corpul ciclului (ACȚIUNE1)
este executat cel puțin o dată.
NU
DA
ACȚIUNE 1
ACȚIUNE 2
Condiție
îndeplinit
Ghid de "supravie țuire" C++
7
Reprezentarea algoritmilor prin pseudocod
Pseudocodul este inspirat din limbajele de programare, nefiind însă at ât de formalizat ca
acestea. Pseudocodul reprezintă o punte de legătură între limbajul natural și limbajele de programare.
Nu există un standard pentru regulile lexicale. Limbajul pseudocod permite comunicarea între oameni,
și nu comunicarea om -mașina (precum limbajele de programare). Pseud ocodul utilizează cuvinte
cheie, cu urm ătoarele semnificații :
Sfârșit algoritm: SFÂRȘIT
Început algoritm: ÎNCEPUT
Citire (introd ucere) date: CITEȘTE lista
Scriere (afișare) date: SCRIE lista
Atribuire:
Structura de decizie (alternativă): DACĂ condiție
ATUNCI acțiune1
ALTFEL acțiune2
Structuri repetitive cu test inițial: CÂT TIMP condiție
REPETĂ acțiune
PENT RU contor=val_iniț LA val_fin [PAS]
REPETĂ acțiune
Structuri repetitive cu test final:
REPETĂ acțiune C ÂT TIMP condiție
sau:
REPETĂ acțiune P ÂNĂ C ÂND condiție
Pe lângă cuvintele cheie, în reprezentarea algoritmilor în pseudocod pot apare și propoziții nestandard
a caror detaliere va fi realizată ulterior.
În cazul în care se realizează un algoritm modularizat, pot apare cuvintele cheie:
SUBALGORITM nume (lista_intrări)
Ghid de "supravie țuire" C++
8
CHEAMĂ nume (lista_valori_efective_de_intrare)
TEORIA REZOLVĂRII PROBLEMELOR
Creșterea complexității problemelor supuse rezolvării automate (cu ajutorul calculatorului) a
determinat ca activitatea de programare să devină, de fapt, un complex de activități. Pentru rezolvarea
unei probleme trebuie parcurse următoarele etape :
Analiza problemei (înțelegerea problemei și specificarea cerințelor acesteia). Se stabileste ce
trebuie să facă aplicația, și nu cum . Se stabilesc datele de intrare (identificarea mediului inițial) și
se stabilesc obiect ivele (identificarea mediului final, a rezultatelor);
Proiectarea (conceperea unei metode de rezolvare a problemei printr -o metodă algoritmică);
Implementarea (codificarea algoritmului ales într -un limbaj de programare);
Testarea aplicației obținute (verif icarea corectitudinii programului);
Exploatarea și întreținerea (mentenanța, activitatea de modificare a aplicației la cererea
beneficiarului sau în urma unor deficiențe constatate pe parcursul utilizării aplicației).
În acest context, activitatea de prog ramare a devenit o activitate organizată, definindu -se metode
formale de dezvoltare a fiecărei etape. Etapele descrise anterior alcătuiesc ciclul de viață al unui
produs software și constituie obiectul de studiu al disciplinei numite Ingineria Sistemelor de
Programe (Software E ngineering) .
Teoreticienii ingineriei programării consideră că rezolvarea unei probleme se poate face pe 3 direcții:
Rezolvarea orientată pe algoritm (pe acțiune), în care organizarea datelor este neesențială;
Rezolvarea orientată pe date , acțiunile fiind determinate doar de organizarea datelor;
Rezolvarea orientată pe obiect , care combină tendințele primelor două abordări.
Etapele rezolv ării unei probleme cu ajutorul calculatorului
Să detaliem în continuare etapa de implementare . După analiza problemei și stabilirea algoritmului,
acesta trebuie tradus ( implementat ) într -un limbaj de programare.
Scrierea (editarea) programului sursă.
Programele sursă sunt fișiere text care conțin instrucțiuni (cu sintactica și semantica proprii
limbajului utilizat). Programul (fișierul) sursă este creat cu ajutorul unui editor de texte și va fi
salvat pe disc (programele sursă C primesc, de obicei, extensia .c, iar cele C++, extensia .cpp ).
Pentru a putea fi executat, programul sursă trebuie compilat și linkeditat.
Compilarea
Procesul de compilare este realizat cu ajutorul compilatorului, care translatează codul sursă în cod
obiect (cod mașină), pentru ca programul să poată fi înțeles de calculator. În cazul limbajului C, în
prima fază a compilării este invocat preprocesorul . Acesta recunoaște și analizează mai întâi o
serie de instrucțiuni speciale, numite directive procesor. Verifică apoi codul sursă pentru a
constata dacă acesta respectă sintaxa și semantica limbajului. Dacă există erori, acestea sunt
Ghid de "supravie țuire" C++
9
semnalate utilizatorului. Utilizatorul trebuie să corecteze erorile (modificând programul sursă).
Abia apoi codul sursă este translatat în cod de asamblare, iar în final, în cod mașină, binar, propriu
calculatorului. Acest cod binar este numit cod obiect și de obicei este memorat într -un alt fișier,
numit fișier obiect. Fișierul obiect va avea, de obicei, același nume cu fișierul sursă și extensia
.obj.
Link editarea
Dupa ce programul sursă a fost translatat în program obiect, el este va fi supus operației de linkeditare. Scopul fazei de linkeditare este acela de a obține o formă finală a programului, în
vederea execuției acestuia. Linkeditorul “leagă” modulele obiect, rezolvă referințele către funcțiile
externe și rutinele din biblioteci și produce cod executabil, memorat într -un alt fisier, numit fișier
executabil (același nume, extensia .exe )
Execuția
Lansarea în execuție constă în încărcarea programului ex ecutabil în memorie și startarea execuției
sale.
PROGRAME IN LIMBAJUL C/C++
Un program scris în limbajul C (sau C++) este compus din unul sau mai multe fișiere sursă .
Un fișier sursă este un fișier text care conține codul sursă (în limbajul C) al unui program. Fiecare
fișier sursă conține una sau mai multe funcții și eventual, referințe căt re unul sau mai multe fișiere
header .
Funcția principală a unui program este numită main . Execuția programului începe cu execuția acestei
funcții, care poate apela, la rândul ei, alte funcții. Toate funcțiile folosite î n program trebuie descrise în
fișiere le sursă (cele scrise de către programator), în fișiere header (funcțiile predefinite, existente în
limbaj), sau în biblioteci de funcții.
Un fișier header este un fișier aflat în sistem sau creat de către programator, care conține declarații și
definiții de funcții și variabile.
Acțiunile din fiecare funcție sunt codificate prin instrucțiuni . Există ma i multe tipuri de instrucțiuni; o
instrucțiune este orice expresie validă (de obicei, o asignare sau un apel de funcție), urmată de
simbolul ";". Uneori, ca instrucțiune poate apare instrucțiunea nulă (doar ;), sau instrucțiunea compusă
(privită ca o succesiune de instrucțiuni simple, încadrate între acoladele delimitatoare {}. O expresie
este o structură corectă sintactic, format ă din operanzi și operatori.
Preprocesorul
Așa cu m am menționat anterior , în faza de compilare a fișierului sursă este invocat întâi preprocesorul.
Acesta tratează directivele speciale – numite directive preprocesor – pe care le găsește în fișierul sursă.
Cod sursă
(Preprocesor)
Compilator
Linkeditor
Cod obiect
Cod
executabil
Etapele necesare obținerii fișierului executabil
Ghid de "supravie țuire" C++
10
Directivele prepr ocesor sunt identificate prin simbolul #, care trebuie să fie primul caracter, diferit de
spațiu, dintr -o linie. Directivele preprocesor sunt utilizate la includerea fișierelor header, la definirea
numelor constantelor simbolice, la definirea macro- urilor, sau la realizarea altor funcții (de exemplu,
compilarea condiționată), așa cum ilustrează exemplele următoare:
Includerea fișierelor header în codul sursă:
Exemplu :
#include <stdio.h>
Când procesorul întâlnește această linie, datorită simbolului #, o recunoaște ca fiind o directivă
preprocesor, localizează fișierul header indicat (parantezele unghiulare < > indică faptul că
este vorba de un fișier header sistem ).
Exemplu :
#include " headerul_meu.h"
Numele fișierului header inclus între ghilimele, indică faptul că headerul_meu.h este un fișier header creat de utilizator. Preprocesorul va căuta să localizeze acest fișier în directorul curent
de lucru al utilizatorului. În cazul în care fișierul header nu se află în directorul curent, se va
indica și calea către acesta.
Asignarea de nume simbolice constantelor:
Exemplu:
#define TRUE 1
#define FALSE 0
Tratarea acestor directive preprocesor are ca efect asignarea (atribuirea) valorii întregi 1
numelui (constantei simbolice) TRUE, și a valorii 0 numelui simbolic FALSE. Ca urmare, înaintea compilării propriu- zise, în programul sursă, aparițiile numelor TRUE și FALSE vor fi
înlocuite cu valorile 1, respectiv 0.
Macrodefiniții:
Directiva #define este folosită și în macrodefiniții. Macrodefinițiile permit folosirea unor
nume simbolice pentru expresiile indicate în directivă.
Exemplu:
#define NEGATIV(x) -(x)
Între numele macrodefiniției și paranteza stângă ( NEGATIV( …) ) nu sunt permise spații albe.
La înt âlnirea în programul sursă a macrodefiniției NEGATIV, preprocesorul subtituie
argumentul acesteia cu expresia ( negativarea argumentului) . Macrodefiniția din exemplu poate
fi folosită în programul sursă astfel: NEGATIV(a+b). Când preproce sorul întâlnește numele
expresiei, subtituie literalii din paranteză, a+b, cu argumentul din macrodefiniție, x,
obținându- se – (a+b).
Dacă macrodefiniția ar fi fost de forma:
#define NEGATIV(x) -x
NEGATIV(a+b) ar fi fost tratată ca -a+b.
Elemente de b ază ale limbajului
Vocabularul
Ghid de "supravie țuire" C++
11
În scrierea programelor în limbajul C/C++ pot fi folosite doar anumite simboluri care alcătuiesc
alfabetul limbajului. Acesta cuprinde:
Literele mari sau mici de la A la Z (a -z);
Caracterul subliniere ( _ underscore), folosit, de obicei, ca element de legătura între cuvintele
compuse;
Cifrele zecimale (0 -9);
Simboluri speciale:
Caractere:
operatori (Exemple: +, *, !=);
delimitatori (Exemple: blank ( spațiu), tab \t, newline \ n, cu rolul de a separa
cuvintele);
Grupuri (perechi de caractere).
Grupurile de caractere, numire adesea separatori , pot fi:
( ) – Încadrează lista de argumente ale unei funcții sau sunt folosite în expresii pentru schimbarea
ordinii de efectuare a operațiilor (în ultimul caz, fiind operator);
{ } – Încadrează instrucțiunile compuse;
// – Indică începutul unui comentariu care se poate întinde până la sfârșitul liniei;
/* */ – Indică începutul și sfârșitul unui comentariu care poate cuprinde mai multe linii;
" " – Încadreaz ă o constantă șir (un șir de caractere);
' ' – Încadrează o constantă caracter (un caracter imprimabil sau o secvență escape).
Unitățile lexicale
Unitățile lexicale (cuvintele) limbajului C/C++ reprezintă grupuri de caractere cu o semnificație de
sine st ătătoare. Acestea sunt:
Identificatori;
Cuvinte cheie ale limbajului;
Identificatorii reprezintă numele unor date (constante sau variabile), sau ale unor funcții.
Identificatorul este format dintr -un șir de litere, cifre sau caracterul de subliniere (underscore), trebuie
să înceapă cu o literă sau cu caracterul de subliniere și să fie sugestivi.
Exemple: viteză, greutate_netă, Viteza, Viteza1, GreutateNetă
Identificatorii pot conține litere mici sau mari, dar limbajul C++ este senzitiv la majuscule și
minuscule (case- sensitive). Astfel, identificatorii viteza și Viteza sunt diferiți.
Nu p ot fi folosiți ca identificatori cuvintele cheie. Identificatorii pot fi standard (ca de exemplu numele
unor funcții predefinite: scanf, clear, etc.) sau aleși de utilizator.
Cuvintele cheie sunt cuvinte ale limbajului, împrumutate din limba engleză, căror a programatorul nu
le poate da o altă utilizare. Cuvintele cheie se scriu cu litere mici și pot reprezenta:
Tipuri de date (Exemple: int, char, double);
Clase de memorare (Exemple: extern, static, register);
Instrucțiuni (Exemple: if, for, while);
Operator i (Exemplu: sizeof).
Sensul cuvintelor cheie va fi explicat pe masură ce vor fi prezentate construcțiile în care acestea apar.
Ghid de "supravie țuire" C++
12
Date în limbajul C/C++
Așa cum s- a văzut anterior , un program realizează o prelucrare de informație. Termenul de prelucrare
trebuie să fie considerat într -un sens foarte general. În program datele apar fie sub forma unor
constante (valori cunoscute anticipat, care nu se modifică), fie sub forma de variabile . Constantele și
variabilele sunt obiectele informaționale de bază manipulate într -un program.
Fiecare categorie de date este caracterizată de atributele:
Nume;
Valoare;
Tip;
Clasa de memorare.
Numele unei date
Numele unei date este un identificator și, ca urmare, trebuie să respecte regulile specifice
identificatorilor. De asemenea, numărul de caractere care intră în compunerea unui identificator este
nelimitat, însă, implicit, numai primele 32 de caractere sunt luate în considerare. Aceasta înseamnă că doi identificatori care au primele 32 de caractere identice, diferențiin du-se prin caracterul 33, vor fi
considerați identici.
Tipuri de date
Tipul unei date constă într -o mulțime de valori pentru care s- a adoptat un anumit mod de reprezentare
în memoria calculatorului și o mulțime de operatori care pot fi aplicați acestor va lori. Tipul unei date
determină lungimea zonei de memorie ocupată de acea dată. În general, lungimea zonei de memorare
este dependentă de calculatorul pe care s- a implementat compilatorul.
Tipurile de bază sunt:
char un singur octet (1 byte=8 bi ți), capab il să conțină codul unui caracter din setul
local de caractere;
int număr întreg, reflectă în mod tipic mărimea naturală din calculatorul utilizat;
float număr real, în virgulă mobilă, simplă precizie;
double număr real, în virgulă mobilă, dublă precizie.
În completare există un număr de calificatori, care se pot aplica tipurilor de bază char, int, float sau
double: short, long, signed și unsigned. Astfel, se obțin tipurile derivate de date. Short și long se referă
la mărimea diferită a întregilor, iar datele de tip unsigned int sunt întotdeauna pozitive. S -a intenționat
ca short și long să furnizeze diferite lungimi de întregi, int reflectând mărimea cea mai "naturală"
pentru un anumit calculator. Fiecare compilator este liber să interpreteze short și long în mod adecvat
propriului hardware; în nici un caz, însă, short nu este mai lung decât long. Toți acești calificatori pot
fi aplicați tipului int. Calificatorii signed (cel implicit) și unsigned se aplică tipului char. Calificatorul
long se aplică tipului double. Dacă într -o declarație se omite tipul de ba ză, implicit, acesta va fi int.
Ghid de "supravie țuire" C++
13
Să considerăm, de exe mplu, tipul int, folosit pentru date întregi (pozitive sau negative). Evident că
mulțimea valorilor pentru acest tip va fi, de fapt, o submulțime fini tă de numere întregi. Dacă pentru
memorarea unei date de tip int se folosesc 2 octeți de memorie, atunci valoarea maximă pentru aceasta
va fi 21×216- 1, deci 215- 1 (32767), iar valoarea minimă va fi -21×216, deci – 215 (-32768).
Încercarea de a calcula o expresie de tip int a cărei valoare se situează în afara acestui domeniu va
conduce la o eroar e de execuție.
Mulțimea valorilor pentru o dată de tip unsigned int (întreg fără semn) va fi formată din numerele
întregi situate în intervalul [0, 216- 1].
În header -ul <values.h> sunt definite constantele simbolice (cum ar fi: MAXINT, MAXSHORT,
MAXLONG, MINDOUBLE, MINFLOAT, etc.) care au ca valoare limitele inferioară și superioară ale
intervalului de valori pentru tipurile de date enumerate. (de exemplu MAXINT reprezintă valoarea
întregului maxim care se poate memora, etc. )
Fără a detalia foarte mult modul de reprezentare a datelor reale (de tip float sau double), vom sublinia
faptul că, pentru acestea, este importantă și precizia de reprezentare . Deoarece calculatorul poate
reprezenta doar o submulțime finită de valori reale, în a numite cazuri, pot apare erori importante.
Numerele reale pot fi scrise sub forma: N = mantisa × bazaexponent
unde:baza reprezintă baza sistemului de numerație; mantisa (coeficientul) este un număr fracționar normalizat ( în fața virgulei se află 0, iar prima cifră de după virgulă este diferită de zero); exponentul
este un număr întreg. Deoarece forma internă de reprezentare este binară, baza=2. În memorie vor fi reprezentate doar mantisa și exponentul. Numărul de cifre de după virgulă determină precizia de
exprimare a numărului. Cu alte cuvinte, pe un calculator cu o precizie de 6 cifre semnificative, două
valori reale care diferă la a 7 -a cifră zecimală, vor avea aceeași reprezentare. Pentru datele de tip float,
precizi a de reprezentare este 6; pentru cele de tip double, precizia este 14, iar pentru cele de tip long
double, precizia este 20.
Lungimea zonei de memorie ocupate de o dată de un anumit tip (pe câți octeți este memorată data)
poate fi aflată cu ajutorul operat orului sizeof .
Exemplu:
cout<<"Un int este memorat pe "<<sizeof(int)<<"octeti. \n";
Instrucțiunea are ca efect afișarea pe monitor a mesajului: Un int este memorat pe 2 octeți.
Constante
O constantă este un literal (o formă externă de reprezentare) numeric , caracter sau șir de caractere.
Numele și valoarea unei constante sunt identice. Valoarea unei constante nu poate fi schimbată în
timpul execuției programului în care a fost utilizată. Tipul și valoarea ei sunt determinate în mod
automat, de către compilator, pe baza caracterelor care compun literalul.
Dacă o constantă numerică conține punctul zecimal, ea este de tipul double .
Exemplu:
Ghid de "supravie țuire" C++
14
3.1459 //tip double
Dacă numărul este urmat de F sa u f, constanta este de tip float .
Dacă numărul este urmat de L sau l, este de tip long double.
Exemplu:
0.45f //tip float
9.788L //tip long double
Constante reale în format științific
Numărul poate fi urmat de caracterul e sau E și de un număr întreg, cu sau fără semn. În acest caz,
constanta este în notație științifică . În această formă externă de reprezentare, numărul din fața
literei E reprezintă mantisa , iar numărul întreg care urmează caracterului E reprezintă exponentul .
În forma externă de reprezentare, baza de numerație este 10, deci valoarea constante i va fi dată de
mantisa×10onentexp.
Exemplu:
1.5e-2 //tip double, în notație științifică, valoare 1.5 ×102−
Variabile
Spre deose bire de constante, variabilele sunt date (obiecte informaționale) ale căror valori se pot
modifica în timpul execuției programului. Și variabilele sunt caracterizate de atributele nume , tip,
valoare și clasă de memorare. Variabilele sunt nume simbolice utilizate pentru memorarea valorilor
introduse pentru datele de intrare sau a rezultatelor. Dacă la o constantă ne puteam referi folosind
caracterele componente, la o variabilă ne vom referi prin numele ei. Numele unei variabile ne permite
accesul la valo area ei, sau schimbarea valorii sale, dacă este necesar acest lucru. Numele unei variabile
este un identificator ales de programator. Ca urmare, trebuie respectate regulile enumerate în secțiunea identificatori.
Dacă o dată nu are legături cu alte date (spre exemplu, relația de ordine), vom spune că este o dată
izolată . O dată izolată este o variabilă simplă. Dacă datele se grupează într -un anumit mod (în
tablouri – vectori, matrici – sau structuri), variabilele sunt compuse (structurate ).
În cazul const antelor, în funcție de componența literalului, compilatorul stabilea, automat, tipul
constantei. În cazul variabilelor este necesară specificarea tipului fiecăreia, la declararea acesteia. Toate variabilele care vor fi folosite în program, trebuie declarat e înainte de utilizare.
Declararea variabilelor
Modul general de declarare a variabilelor este:
tip_variabile listă_nume_variabile;
Se specifică tipul variabilei(lor) și o listă formată din unul sau mai mulți identificatori ai variabilelor de tipul respe ctiv. Într -un program în limbajul C++, declarațiile de variabile pot apare în orice loc în
programul sursă. La declararea variabilelor, se rezervă în memorie un număr de octeți corespunzător tipului variabilei, urmând ca ulterior, în acea zonă de memorie, să fie depusă (memorată, înregistrată )
o anumită valoare.
Exemple:
Ghid de "supravie țuire" C++
15
int i, j;/*declararea var. simple i, j, de tip int . Se rezervă pentru i și j câte 16 biți (2octeți)*/
char c; /* declararea variabilei simple c , de tip char . Se rezervă un octet. */
float lungime; /* declararea variabilei simple lungime ; se rezervă 4 octeți */
Inițializarea variabilelor în declarații
În momentul declarării unei variabile, acesteia i se poate da (asigna, atribui) o anumită valoare. În
acest caz, în memorie se rezervă numărul de locații corespunzător tipul ui variabilei respective, iar
valoarea va fi depusă (memorată) în acele locații.
Forma unei declarații de variabile cu atribuire este:
tip_variabilă nume_variabilă=expresie;
Se evaluează expresia, iar rezultatul acesteia este asignat variabilei specificate
Opera ții de intrare/ieșire
Limbajele C/C++ nu posedă instrucțiuni de intrare/ieșire, deci de citire/scriere (ca limbajul PASCAL,
de exemplu). În limbajul C aceste operații se realizează cu ajutorul unor funcții (de exemplu, printf și
scanf), iar în limbajul C++ prin supraîncărcarea operatorilor (definirea unor noi proprietăți ale unor
operatori existenți, fără ca proprietățile anterioare să dispară), mai precis a operatorilor >> și << . Vom
folosi în continuare abordarea limbajului C++, fiind, î n momentul de față, mai simplă. Î n limbajul C++
sunt predefinite următoarele dispozitive logice de intrare/ieșire:
cin – console in put – dispozitivul de intrare (tastatura)
cout – console out put – dispozitivul de ieșire (monitorul)
cin și cout sunt, de fapt, obiecte (predefinite). Transferul informației se realizează cu operatorul >>
pentru intrare și operatorul << pentru ieșire. Utilizarea dispozitivelor de intrare/ieșire cu operatorii
corespunzători determină deschiderea unui canal de comunicație a datelor către dispozitivul respectiv.
După operator se specifică informațiile care vor fi citite sau afișate.
Exemple:
cout << var; /* afi șează valoarea variabilei var pe monitor*/
cin >> var; /* citește valoarea variabilei var de la tasatatură */
Sunt posibile operarții multiple, de tipul:
Exemple:
cout << var1 << var2 << var3;
cin >> var1 >> var2 >> var3;
În acest caz, se efectuează succesiv, de la stânga la dreapta, scrierea, respectiv citirea valorilor
variabilelor var1, var2 și var3.
Ghid de "supravie țuire" C++
16
Operatorul >> se nume ște operator extractor (extrage valori din fluxul datelor de intrare, conform
tipului acestora), iar operatorul << se nume ște operator insertor (inserează valori în fluxul datelor de
ieșire, conform tipului acestora). Tipurile de date citite de la tastatură pot fi toate tipurile numerice,
caracter sau șir de caractere. Tipurile de date transferate către ieșire pot fi: toate tipurile numerice,
caracter sau șir de caractere. Operanzii operatorului extractor ( >>) pot fi doar nume de variabile.
Operanzii operatorului insertor ( <<) pot fi nume de variabile (caz în care se afișează valoarea
variabilei), constante sau expresii. Utilizarea dispozitivelor și operatorilor de intrare/ieșire în C++ impune includerea fișierului iostream.h .
Operatori și expresii
Datele (constante sau variabile) legate prin operatori, formează expresii. Operatorii care pot fi aplicați
datelor (operanzilor) depind de tipul oper anzilor, datorită faptului că tipul unei date constă într -o
mulțime de valori pentru care s- a adoptat un anumit mod de reprezentare în memoria calculatorului și
o mulțime de operatori care pot fi aplicați acestor valori.
Operatorii pot fi:
unari (necesită un singur operand);
binari (necesită doi operanzi);
ternari ( necesită trei operanzi).
O expresie este o combinație corectă din punct de vedere sintactic, formată din operanzi și operatori.
Expresiile, ca și operanzii, au tip și valoare .
Operatorul unar adresă &, aplicat identificatorului unei variabile, furnizează adresa la care este
memorată aceasta. Poate fi aplicat oricărui tip de date și se mai numește operator de referențiere.
Exemplu:
int a;
cout<<"Adresa la care este memorata variabila a este:"<< &a;
Operatorul de atribuire (de asignare) este un operator binar care se aplică tuturor tipurilor de
variabile. Este folosit sub formele următoare:
nume_variabilă =expresie;
sau: expresie1 =expresie2;
Se evaluează expresia din membrul drept, iar valoarea acesteia este atribuită variabilei din membrul
stâng. Dacă tipurile membrilor stâng și drept diferă, s e pot realiza anumite conversii .
Exemplu:
float x; int a,b; x=9.18;
a=b=10;
int s; s=a+20*5; //rezultat: s=110
s=x+2; //rezultat s=11, deoarece s este int.
Ghid de "supravie țuire" C++
17
Așa cum se observă în linia a 2 -a din exemplul precedent, operatorul de atribuire poate fi utilizat de
mai multe ori în aceeași expresie. Asociativitatea operatorului are loc de la dreapta la stânga. Astfel,
mai întâi b=10, apoi a=b.
Operatori aritmetici unari :
Operator Semnificație Exemple
– Minus unar -a
++ Operator de incrementare a++ sau
(adună 1 la valoarea operandului) ++a
– Operator de decrementare a– sau
(scade 1 din valoarea operandului) –a
Operatorul – unar schimbă semnul operandului.
Exemplu:
int a,b; cout<<”a=”<< -a<<’ \n’; b=-a;
cout<<”b=”<<b<<’ \n’;
Operatorul – unar poate fi aplicat datelor întregi, reale, caracter.
Operatorii de incrementare și decrementare pot fi aplicați datelor numerice sau c aracter.
Ambii operatori pot fi folosiți în formă prefixată , înaintea operandului, (++a, respectiv –a) sau
postfixată, după operand (a++, respectiv a– ).
Operatorul de decrementare – care poate fi folosit în formă prefixată (–a) sau postfixată (a–).
Utilizarea acestor operatori în expresii, în formă prefixată sau postfixată, determină evaluarea
acestora în moduri diferite, astfel:
y=++x este echivalent cu: x=x+1;
y=x;
y=x++ este echivalent cu: y=x;
x=x+1;
y=–x este echivalent cu: x=x- 1;
y=x;
y=x– este echivalent cu: y=x;
x=x- 1;
Exercițiu : Să se scrie următorul program și să se urmărească rezultatele execuției acestuia.
Ghid de "supravie țuire" C++
18
#include <iostream.h>
void main()
{ int a=9; cout<<”a++=”<<a++<<’ \n’; //Afișare: a++=9
cout<<”a=”<<a<<’ \n’; //Afișare: a=10
a=9; //Revenire in situația anterioară
cout<<”++a=”<<++a<<’ \n’; //Afișare: ++a=10
cout<<”a=”<<a<<’ \n’; //Afișare: a=10
a=9; cout<<”a –=”<<a –<<’ \n’; //Afișare: a –=9
cout<<”a=”<<a<<’ \n’; //Afișare: a=8
a=9; //Revenire în sit uația anterioară
cout<<” –a=”<<– a<<’ \n’; //Afișare: –a=8
cout<<”a=”<<a<<’ \n’; //Afișare: a=8
int z,x=3; z=x++ -2;
cout<<”z=”<<z<<’ \n’; //Afișare: z=1
cout<<"x=”<<x<<’ \n’; //Afișare: x=4
x=3; z=++x -2; cout<<”z=”<<z<<’ \n’; //Afișare: z=2
cout<<"x=”<< x<<’ \n’; //Afișare: x=4
}
Operatori aritmetici binari:
Operator Semnificație Exemple
+ Adunarea celor doi operanzi a+b
– Scăderea celor doi operanzi a-b
* Înmulțirea celor doi operanzi a*b
/ Împărțirea celor doi operanzi a/b
% Operatorul modulo (operatorul rest) a%b
(furnizează restul împărțirii operatorului stâng la operatorul drept).
Operatorul modulo se aplică numai operanzilor întregi (de tip int sau char). Ceilalți operatori aritmetici
binari pot fi aplicați datelor întregi sau reale.
Ghid de "supravie țuire" C++
19
Dacă într -o expresie cu 2 operanzi și un operator binar aritmetic, ambii operanzi sunt întregi, rezultatul
expresiei va fi tot un număr întreg. De exemplu, la evaluarea expresiei 9/2, ambii operanzi fiind
întregi, rezultatul furnizat este numărul întreg 4.
Operatorii prezentați respectă o serie de reguli de precedență (prioritate) și asociativitate, care
determină precis modul în care va fi evaluată expresia în care aceștia apar. În tabelul de mai jos sunt
prezentați operatorii anteriori, în ordinea descrescătoare a priorității. Precedența operatorilor poate fi
schimbată cu ajutorul parantezelor.
Clasă de operatori Operatori Asociativitate
Unari – (unar) ++ – de la dreapta la stânga
Multiplicativi * / % de la stânga la dreapta
Aditivi + – de la stânga la dreapta
Atribuire = de la dreapta la stânga
Operatori aritmetici binari compuși
Operator Semnificație Exemple
+= a=a+b a+=b
-= a=a-b a-=b
*= a=a*b a*=b
/= a=a/b a/=b
%= a=a%b a%=b
Acești operatori se obțin prin combinarea operatorilor aritmetici binari cu operatorul de atribuire și
sunt folosiți sub forma următoare:
expresie1 operator= expresie2;
Rezultatul obținut este același cu rezultatul obținut prin:
expresie1 = expresie1 operator expresie2;
Toți acești operatorii modifică valoarea operandului stâng prin adunarea, scăderea, înmulțirea sau împărțirea acestuia prin valoarea operandului drept.
Construcția x+=1 generează același rezultat ca expresia x=x+1.
Observațiile referitoare la operatorii aritmetici binari sunt valabile și pentru operatorii aritmetici binari
compuși. Operatorii aritmetici binari compuși au aceeași prioritate și asociativitate ca și operatorul de
atribuire.
Ghid de "supravie țuire" C++
20
Operatori relaționali binari
Operator Semnificație Exemple
== Egal cu a==b
!= Diferit de a!=b
< Mai mic decât a<b
<= Mai mic sau egal a<=b
> Mai mare decât a>b
>= Mai mare sau egal a>=b
Primii doi operatori mai sunt numiți operatori de egalitate . Operatorii relaționali servesc la
compararea valorilor celor doi operanzi și nu modifică valorile operanzilor. Rezultatul unei expresii în
care apare unul din operatorii relaționali binari este î ntreg și are valoarea zero (0) dacă relația este
falsă, sau valoarea unu (1) (sau diferită de 0 în cazul compilatoarelor sub UNIX), dacă relația este
adevărată. Acești operator i pot fi aplicați datelor de tip întreg, real sau char.
Regulile de precedență ș i asociativitate ale acestor operator i sunt prezentate în tabelul urm ător:
Clasă de operatori Operatori Asociativitate
Unari – (unar) ++ – de la dreapta la stânga
Multiplicativi * / % de la stânga la dreapta
Aditivi + – de la stânga la dreapta
Atribuire = de la dreapta la stânga
Relaționali < <= > >= de la stânga la dreapta
De egalitate == != de la stânga la dreapta
Atribuire și aritmetici binari = *= /= %= += -= de la dreapta la stânga
Observație: Deosebirea dintre operatorii == (relațional, de egalitate) și = (de atribuire) constă în faptul
că primul nu modifică valoarea nici unuia dintre operanzii săi, pe când cel de -al doilea modifică
valoarea operandului stâng (vezi exemplul următor)
Operatori logici pe cuvânt
Operator Semnificație Exemple
! Not ( negație logică) !(a==b)
&& And (conjuncție, și logic) (a>b) && (b>c)
|| Or (disjuncție, sau logic) (a>b) || (b>c)
Ghid de "supravie țuire" C++
21
Acești operatori pot fi aplicați datelor de tip întreg, real sau caracter. Evaluarea unei expresii în care
intervin operatorii logici se face conform tabelului:
x y !x x&&y x||y
adevărat (1) adevărat (1) fals (0) adevărat (1) adevărat (1)
adevărat (1) fals (0) fals (0) fals (0) adevărat (1)
fals (0) adevărat (1) adevărat (1) fals (0) adevărat (1)
fals (0) fals (0) adevărat (1) fals (0) fals (0)
Expresia !expresie are valoarea 0 (fals) dacă expresia- operand are o valoare diferită de zero și
valoarea 1 (adevărat) dacă expresia- operand are valoarea zero.
Expresia expresie1||expresie2 are valoarea diferită de 0 (true) dacă FIE expresie1, FIE expresie2 au
valori diferite de zero.
Expresia expresie1 && expresie2 are valoarea diferită de 0 (true) dacă AMBELE expresii -operand
(expresie1 și expresie2) au valori diferit e de zero.
Implementarea structurii secvențiale
Structura secvențială este o înșiruire de secvențe de prelucrare (instrucțiuni), plasate una după alta, în
ordinea în care se dorește execuția acestora.
Implementarea structurii secvențiale se realizează cu ajutorul instrucțiunilor:
Instrucțiunea vidă
Sintaxa: ;
Instrucțiunea vidă nu are nici un efect. Se utilizează în construcții în care se cere prezența unei
instrucțiuni, dar nu se execută nimic (de obicei, în instrucțiunile repetitive).
Reprezentarea structurii secvențiale cu
ajutorul schemei logice :
Reprezentarea structurii secvențiale cu
ajutorul pseudocodului :
instr1;
instr2;
S1
S2
Sn
Ghid de "supravie țuire" C++
22
Exemple:
int a;
. . . . . .
int j;
;
for (;; )
{
. . . .
}
Instrucțiunea expresie
Sintaxa: expresie;
sau: apel_funcție;
Exemple:
int b, a=9;
double c;
b=a+9;
cout<<a;
c=sqrt(a);
clrcsr(); //apelul funcției predefinite care șterge ecranul; prototipul în headerul conio.h
Instrucțiunea compusă (instrucțiunea bloc )
Sintaxa: {
declaratii;
instr1;
instr2;
. . . .
}
Într-un bloc se pot declara și variabile care pot fi accesate doar în corpul blocului. Instrucțiunea bloc
este utilizată în locurile în care este necesară prezența unei singure instrucțiuni, însă procesul de calcul
este mai complex, deci trebuie descris în mai multe secvențe.
Ghid de "supravie țuire" C++
23
Implementarea structurii de decizie (alternative, de selecție)
Instrucțiunea if :
Sintaxa:
if (expresie )
instrucțiune1;
[ else
instrucțiune2; ]
Ramura else este opțională.
La întâlnirea instrucțiunii if, se evaluează expresie (care reprezintă o condiție) din paranteze. Dacă
valoarea expresiei este 1 (condiția este îndeplinit ă) se execută instrucțiune1 ; dacă valoarea expresiei
este 0 (condiția nu este îndeplinit ă), se execută instrucțiune2 . Deci, la un moment dat, se execută doar
una dintre cele două instrucțiuni: fie instrucțiune1, fie instrucțiune2. După execuția instrucțiunii if se
trece la execuția instrucțiunii care urmează acesteia.
Observații:
1. Instrucțiune1 și instrucțiune2 pot fi instrucțiuni compuse (blocuri), sau chiar alte instrucțiuni if (if –
uri imbricate).
2. Deoarece instrucțiunea if testează valoarea numerică a expresiei (condiției), este posibilă
prescurtarea: if (expresie), în loc de if ( expresie != 0).
3. Deoarece ramura else a instrucțiunii if este opțională, în cazul în care aceasta este omisă din
secvențele if-else imbricate, se produce o ambiguitate. De obicei, ramura else se asociază ultimei
instrucțiuni if.
Exemplu:
if (n>0)
if (a>b )
z=a;
else z=b;
4. Pentru claritatea programelor sursă se recomandă alinierea instrucțiunilor prin utilizarea
tabulatorului orizontal.
5. Deseori, apare construcția:
if (expresie1)
instrucțiune1;
else
if (expresie2)
instrucțiune2;
Aceeași construcție poate fi scrisă și
astfel:
if (expresie1)
instrucțiune1;
else if (expresie2)
instrucțiune2;
Ghid de "supravie țuire" C++
24
else
if (expresie3)
instrucțiune3;
. . . . . . . . .
else
instrucțiune_n;
Expresiile sunt evaluate în ordine; dacă una dintre expresii are valoarea 1, se execută instrucțiunea
corespunzătoare și se termină întreaga înlănțuire. Ultima parte a lui else furnizează cazul când nici
una dintre expresiile 1,2,. . ., n- 1 nu are valoarea 1.
6. În cazul în care instrucțiunile din cadrul if -else sunt simple, se poate folosi operatorul condițional.
Implementarea structurilor repetitive (ciclice)
Există două categorii de instrucțiuni ciclice: cu test inițial și cu test final.
Implementarea structurilor ciclice cu test inițial
Structura ciclică cu test inițial este implementată prin instrucțiunile while și for.
Instrucțiunea while
Sintaxa:
while (expresie )
instructiune ;
La întâlnirea acestei instrucțiuni, se evaluează expresi e. Dacă aceasta are valoarea 1 – sau diferită de 0
– (condiție îndeplinită), se execută instrucțiune. Se revine apoi în punctul în care se evaluează din nou
valoarea expresiei. Dacă ea este tot 1, se repet ă instrucțiune, ș.a.m.d. Astfel, instrucțiunea (cor pul
ciclului) se repetă atât timp cât expresie are valoarea 1. În momentul în care expresie ia valoarea 0
(condiție neîndeplinită), se iese din ciclu și se trece la următoarea instrucțiune de după while .
Observații:
1. În cazul în care la prima evaluare a expresiei, aceasta are valoarea zero, corpul instrucțiunii while
nu va fi executat niciodată.
2. Instrucțiune a din corpul ciclului while poate fi compusă (un bloc), sau o altă instrucțiune ciclică.
3. Este de dorit ca instrucțiunea din corpul ciclului while să m odifice valoarea expresiei. Dacă nu se
realizează acest lucru, corpul instrucțiunii while se repetă de un număr infinit de ori.
Exemplu:
int a=7;
while (a==7)
cout<<”Buna ziua! \n”; // ciclu infinit; se repetă la infinit afișarea mesajului
Ghid de "supravie țuire" C++
25
Instrucțiunea for
În majoritatea limbajelor de programare de nivel înalt, instrucțiunea for implementează structura
ciclică cu număr cunoscut de pași. În limbajul C instrucțiunea for poate fi utilizat ă într -un mod mult
mai flexibil.
Sintaxa:
for (expresie1 ; expresie2 ; expresie3 )
instructiune;
Nu este obligatorie prezența expresiilor, ci doar a instrucțiunilor vide.
Exemplu :
Implementarea structurilor ciclice cu test final
Instrucțiunea do-while
Sintaxa:
do instructiune;
while (expresie );
Se execută instrucțiune . Se evaluează apoi expresie. Dacă aceasta are valoarea 1, se execută
instrucțiune . Se testează din nou valoarea expresiei. Se repetă instrucțiune cât timp valoarea expresiei
este 1 (condiția este îndeplinită). În cazul instruc țiunii do-while , corpul ciclului se execută cel puțin o
dată.
Declararea tablourilor
Numim tablou o colecție (grup, mulțime ordonată) de date, de același tip, situate într -o zonă de
memorie continuă (elementele tabloului se afl ă la adrese succesive). Tablourile sunt variabile compuse
(structurate) , deoarece grupează mai multe elemente. Variabilele tablou au nume, iar tipul tabloului
este dat de tipul elementelor sale. Elementele tabloului pot fi referite prin numele tabloului și indicii
(numere întregi) care repre zintă poziția elementului în cadrul tabloului.
În funcție de numărul indicilor utilizați pentru a referi elementele tabloului, putem întâlni tablouri
unidimensionale (vectorii) sau multidimensionale (matricile sunt tablouri bidimensionale).
Ca și variabilele simple, variabilele tablou trebuie declarate înainte de utilizare.
Modul de declarare:
tip nume_tablou[dim_1][dim_2]…[dim_n];
unde: tip reprezintă tipul elementelor tabloului; dim_1,dim_2,…,dim_n sunt numere întregi sau
expresii constante întregi (a căror valoare este evaluată la compilare) care reprezintă limitele superioare ale indic ilor tabloului.
for ( ; expresie2; ) sau: for ( ; ; )
instructiune; instructiune;
Ghid de "supravie țuire" C++
26
Tablouri unidimensionale
Tablourile unidimensionale sunt tablouri cu un singur indice (vectori). Dacă tabloul conține dim_1
elemente, indicii elementelor au valori întregi din intervalul [0, dim_1 -1].
La întâlnirea declarației unei variabile tablou, compilatorul alocă o zonă de memorie continuă (dată de produsul dintre dimensiunea maximă și numărul de octeți corespunzător tipului tabloului) pentru
păstrarea valorilor elementelor sale. Numele tabloului poate fi utilizat în diferite expresii și valoarea lui este chiar adresa de început a zonei de memorie care i -a fost alocată. Un element al unui tablou
poate fi utilizat ca orice altă variabilă (în exemplul următor, atribuirea de valori elementelor tabloului vector). Se pot efectua operații asupra fiec ărui element al tabloului, nu asupra întregului tablou.
Exemplu:
// Declararea tabloului vector
int vector[6];
// Inițializarea elementelor tabloului
vector[0]=100;
vector[1]=101;
vector[2]=102;
vector[3]=103;
vector[4]=104;
vector[5]=105;
Exerci ții:
//1 Citirea elementelor unui vector:
double a[5];
int i;
for (i=0; i<5; i++)
{ cout<<”a[ "<<i<<”]=”; //afișarea unui mesaj prealabil citirii fiecărui element
cin>>a[i]; //citirea valorii elementului de indice i
}
//Sau:
double a[20]; int i, n;
cout<<”Dim. Max. =”; cin>>n;
vector
100
101
102
103
104
105
vector[0]
vector[1]
vector[2]
vector[3]vector[4]
vector[5]
Ghid de "supravie țuire" C++
27
for (i=0; i<n; i++)
{ cout<<”a[“<<i<<”]=”;
cin>>a[i];
}
//2 Afișarea elementelor unui vector:
cout<<”Vectorul introdus este:\ n”;
for (i=0; i<n i++)
cout<<a[i]<<’ ’;
//3 Afișarea elementelor unui vector în ordine inversă :
cout<<”Elementele vectorului în ordine inversă: \n”;
for (i=n -1; i>=0 i –)
cout<<a[i]<<’ ’;
//3 Vectorul sumă (c) a vector ilor a și b, cu același număr de elemente:
for (i=0; i<n i++)
c[i]=a[i]+b[i];
//4 Vectorul diferență (c) a vectorilor a și b, cu același număr de elemente:
for (i=0; i<n i++)
c[i]=a[i] – b[i];
Tablouri bidimensionale
Din punct de vedere conceptual, elementele unui tablou bidimensional sunt plasate în spațiu pe două
direcții. Matricea reprezintă o aplicație naturală a tablourilor bidimensionale.
În matematică:
q11 q12 q13 . . . q1n
q21 q22 q23 . . . q2n
Q= . . . . . . . . . . . . . . . . . . . . . . . . . . Qmn×
qm1 qm2 qm3 . . . qmn
În limbajele C/C++ (indicii de linie și de coloană pornesc de la 0):
q00 q01 q02 . . . q0 1,n−
Ghid de "supravie țuire" C++
28
q10 q11 q12 . . . q11,n− Qmn×
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
qm−10, qm−11, qm−12, . . . qm n−−11,
Exemplu:
double q[3][2]; // declararea matricii q, cu maxim3 linii ș i 2 coloane, tip double
În memorie, elementele unei matrici sunt memorate pe linii:
q00 q01 q10 q11 q20 q21 . . .
Dacă se dorește inițializarea elementelor unei matrici în momentul declarării acesteia , se poate
proceda astfel:
int mat[4][3] = {
{10, – 50, 3},
{32, 20, 1},
{-1, 1, – 2},
{7, -8, 19} };
Prin această construcție, elementele matricii mat se inițializează în modul următor:
mat[0][0]=10, mat[0][1]= -50, mat[0][2]=3
mat[1][0]=32, mat[1][1]=20, mat[1][2]=1
mat[2][0]= -1, mat[2][1]=1, mat[2][2]= -2
mat[3][0]=7, mat[3][1]= -8, mat[3][2]=19
Exercițiu : Să se citească de la tastatură elementele unei matrici de maxim 10 linii și 10 coloane. Să se
afișeze matricea citită.
#include <iostream.h>
void main(void)
{int A[10][10]; int nr_lin, nr_col; cout<<"Nr. linii:"; cin> >nr_lin;
cout<<"Nr. coloane:"; cin>>nr_col;int i, j;
//citirea elementelor unei matrici
for (i=0; i<nr_lin; i++)
for (j=0; j<nr_col; j++) {
Q=
Ghid de "supravie țuire" C++
29
cout<<"A["<<i<<","<<j<<"]="; //afișarea unui mesaj prealabil citirii
cin>>A[i][j];
}
//afișarea elementelor matricii
for (i=0; i<nr_lin; i++) {
for (j=0; j<nr_col; j++)
cout<<A[i][j]<<' \t';
cout<<' \n'; // dup ă afișarea elementelor unei linii, se trece pe linia următoare
}
}
Structura unei funcții
Un program scris în limbajul C/C++ este un ansamblu de funcții , fiecare dintre acestea efectuând o
activitate bine definită. Din punct de vedere conceptual, funcția reprezintă o aplicație definită pe o
mulțime D (D=mulțimea, domeniul de definiție), cu valori în mulțimea C (C=mulțimea de valori,
codomeniul), care îndeplinește condiția că oricărui element din D îi corespunde un unic element din
C.
Funcțiile comunică prin argumente : ele primesc ca parametri (argumente) datele de intrare, efectuează
prelucrările descrise în corpul funcției asupra acestora și pot re turna o valoare (rezultatul, datele de
ieșire). Execuția programului începe cu funcția principală, numită main . Funcțiile pot fi descrise în
cadrul aceluiași fișier, sau în fișiere diferite, care sunt testate și compilate separat, asamblarea lor
realizându -se cu ajutorul linkeditorului de legături.
O funcție este formata din antet si corp:
antet_funcție
{
corpul_funcției
}
Sau:
tip_val_return nume_func (lista_declarațiilor_param_ formali)
{
declarații_variabile_locale
instrucțiuni
Ghid de "supravie țuire" C++
30
return valoare
}
Prima linie reprezintă antetul funcției, în care se indică: tipul funcției, numele acesteia și lista
declarațiilor parametrilor formali. La fel ca un operand sau o expresie, o funcție are un tip, care este
dat de tipul valorii returnate de funcție în funcția apelantă. Dacă funcția nu întoarce nici o valoare, în
locul tip_val _return se specifică void. Dacă tip_val_return lipsește, se consideră, implicit, că acesta
este int . Nume_funcție este un identificator.
Lista_declarațiilor_param_formali (încadrată între paranteze rotunde) constă într -o listă (enumerare)
care conține tipul și identificatorul fiecărui parametru de intrare, despărțite prin virgulă. Tipul unui parametru poate fi oricare, chiar ș i tipul pointer. Dacă lista parametrilor formali este vidă, în antet,
după numele funcției, apar doar parantezele ( ) , sau (void) .
Corpul funcției este un bloc, care implementează algoritmul de calcul folosit de către funcție. În
corpul funcției apar (în o rice ordine) declarații pentru variabilele locale și instrucțiuni. Dacă funcția
întoarce o valoare, se folosește instrucțiunea return valoare . La execuție, la întâlnirea acestei
instrucțiuni, se revine în funcția apelantă.
În limbajul C/C++ se utilizează declarații ș i definiții de funcții.
Declarația conține antetul funcției și informează compilatorul asupra tipului, numelui funcției și a
listei parametrilor formali ( în care se poate indica doar tipul parametrilor formali, nu și numele
acestora). Declarații le de funcții se numesc prototipuri , și sunt constituite din antetul funcției, din care
pot lipsi numele parametrilor formali.
Definiția conține antetul funcției și corpul acesteia. Nu este admisă definirea unei funcții în corpul
altei funcții.
Apelul și prototipul funcțiilor
O funcție poate fi apelată printr -o construcție urmată de punct și virgulă, numită instrucțiune de apel ,
de forma:
nume_funcție (lista_parametrilor_efectivi );
Parametrii efectivi trebuie să corespundă cu cei formali ca ordine și tip. La apel, se atribuie parametrilor formali valorile parametrilor efectivi, după care se execută instrucțiunile din corpul funcției. La revenirea din funcție, controlul este redat funcției apelante, și execuția continuă cu instrucțiunea următoare instrucțiunii de apel, din funcția apelantă. O altă posibilitate de a apela o
funcție este aceea în care apelul funcției constituie operandul unei expresii. Acest lucru este posibil
doar în ca zul în care funcția returnează o valoare, folosită în calculul expresiei.
Parametrii declarați în antetul unei funcții sunt numiți formali , pentru a sublinia faptul că ei nu
reprezintă valori concrete, ci numai țin locul acestora pentru a putea exprima pr ocesul de calcul
realizat prin funcție. Ei se concretizează la execuție prin apelurile funcției.
Parametrii folosiți la apelul unei funcții sunt parametri reali, efectivi, concreți , iar valorile lor vor fi
atribuite parametrilor formali, la execuție. Utilizarea parametrilor formali la implementarea funcțiilor
și atribuirea de valori concrete pentru ei, la execuție, reprezintă un prim nivel de abstractizare în
Ghid de "supravie țuire" C++
31
programare. Acest mod de programare se numește programare procedurală și realizează un proces de
abstractizare prin parametri .
Variabilele declarate în interiorul unei funcții, cât și parametrii formali ai acesteia nu pot fi accesați
decât în interiorul acesteia. Aceste variabile sunt numite variabile locale și nu pot fi accesate din alte
funcții. Domeniul de vizibilitate a unei variabile este porțiunea de cod la a cărei execuție variabila respectivă este accesibilă. Deci, domeniul de vizibilitate a unei variabile locale este funcția în care ea a
fost definită.
Exemplu:
int f1(void)
{ double a,b; int c;
. . .
return c; // a, b, c – variabile locale, vizibile doar î n corpul funcției
}
void main()
{ . . . . . . // variabile le a și b nu sunt accesibile în main()
}
Dacă în interiorul unei funcții există instrucțiuni compuse (blocuri) care conțin declarații de variabile,
aceste variabile nu sunt vizibile în afara blocului.
Funcții predefinite
Orice mediu de programare este prev ăzut cu una sau mai multe biblioteci de funcții predefinite. Orice
bibliotecă este formată din:
fișierele header (conține prototipurile funcțiilor, declarațiile de variabile);
biblioteca (arhiva) propriu -zisă (conține definiții de funcții).
Pentru ca funcțiile predefinite să poată fi utilizate, fișierele header în care se găsesc prototipurile
acestora trebuie inclus în funcția (programul) apelant printr -o directivă preprocesor (exemplu #include
<stdio.h>). De asemenea, utilizatorul își poat e crea propriile headere. Pentru a putea utiliza funcțiile
proprii, el trebuie să includă aceste headere în programul apelant (exempl u #include "my_header.h").
Pentru func țiile predefinite, au fost create fișiere header orientate pe anumite tipuri de aplicații. De
exemplu, funcțiile matematice se găsesc în headerul <math.h>. Headerul <stdlib.h> conține funcții
standard. Headerul <values.h> definește o serie de constante simbolice (exemplu MAXINT,
MAXLONG) care reprezintă, în principal, valorile maxime și minime ale diferitelor tipuri de date.
Funcții matematice (headerul <math.h> )
Funcții aritmetice
Valori absolute
Ghid de "supravie țuire" C++
32
int abs(int x);
Returnează un întreg care reprezintă valoarea absolută a argumentului.
long int labs(long int x);
Analog cu funcția abs, cu deosebirea că argumentul și valoarea returnată sunt de tip
long int.
double fabs(double x);
Returnează un real care reprezintă val oarea absolută a argumentului real.
Funcții de rotunjire
double floor(double x);
Returnează un real care reprezintă cel mai apropiat număr, fără zecimale, mai mic sau egal cu x (rotunjire prin lipsă).
double ceil(double x);
Returnează un real care reprezin tă cel mai apropiat număr, fără zecimale, mai mare
sau egal cu x (rotunjire prin adaos).
Funcții trigonometrice
double sin(double x);
Returnează valoarea lui sin(x), unde x este dat în radiani. Numărul real returnat se află
în intervalul [ -1, 1].
double cos(double x);
Returnează valoarea lui cos(x), unde x este dat în radiani. Numărul real returnat se
află în intervalul [ -1, 1].
double tan(double x);
Returnează valoarea lui tg(x), unde x este dat în radiani.
Funcții trigonometrice inverse
double asin(double x);
Returnează valoarea lui arcsin(x), unde x se află în intervalul [ -1, 1]. Numărul real
returnat (în radiani) se află în intervalul [ -pi/2, pi/2].
double acos(double x);
Returnează valoarea lui arccos(x), unde x se află în intervalul [ -1, 1]. Numărul real
returnat se află în intervalul [0, pi].
double atan(double x);
Ghid de "supravie țuire" C++
33
Returnează valoarea lui arctg(x), unde x este dat în radiani. Numărul real returnat se
află în intervalul [0, pi].
double atan2(double y, double x);
Returnează valoarea lui tg(y/x), cu ex cepția faptului ca semnele argumentelor x și y
permit stabilirea cadranului și x poate fi zero. Valoarea returnată se află în intervalul
[-pi,pi]. Dacă x și y sunt coordonatele unui punct în plan, funcția returnează valoarea
unghiului format de dreapta ca re unește originea axelor carteziene cu punctul, față de
axa absciselor. Funcția folosește, de asemenea, la transformarea coordonatelor
cartezine în coordonate polare.
Funcții exponențiale și logaritmice
double exp(double x);
long double exp(long double x);
Returneaz ă valoarea e .
double log(double x);
Returnează logaritmul natural al argumentului ( ln(x) ).
double log10(double x);
Returnează logaritmul zecimal al argumentului (lg (x) ).
double pow(double baza, double exponent);
Returnează un real car e reprezintă rezultatul ridicării bazei la exponent ( ).
double sqrt(double x);
Returnează rădăcina pătrată a argumentului x.
double hypot(double x, double y);
Funcția distanței euclidiene – returnează 2 2y x+ , deci lungimea ipotenuzei unui
triunghi dreptunghic, sau distanța punctului P(x, y) față de origine.
Fișiere
Scopul lucrului cu fișiere este acela de a prelucra informația conținută. Pentru a putea accesa un fișier
va trebui să- l asociem cu unul din cele două modalități de manipulare. Acest tip de operație se mai
numește deschidere de fișier. Înainte de a citi sa u scrie într -un fișier (neconectat automat programului),
fișierul trebuie deschis cu ajutorul funcției fopen din biblioteca standard. Funcția primește ca
argument numele extern al fișierului, negociază cu sistemul de operare și retunează un nume (identifi cator) intern care va fi utilizat ulterior la prelucrarea fișireului. Acest identificator intern este
un pointer la o structură care conține informații despre fișier (poziția curentă în buffer, dacă se citește
sau se scrie în fișier, etc.). Utilizatorii nu trebuie să cunoască detaliile, singura declarație necesară fiind
cea pentru pointerul de fișier.
Exemplu: FILE *fp; x
bazaonentexp
Ghid de "supravie țuire" C++
34
Operațiile care pot fi realizate asupra fișierelor sunt:
deschiderea unui fișier;
scrierea într -un fișier;
citirea dintr -un fiș ier;
poziționarea într -un fișier;
închiderea unui fișier.
Deschiderea unui fișier
Funcția fopen
Crează un flux de date între fișierul specificat prin numele extern (nume_fișier) și programul C.
Parametrul mod specifică sensul fluxului de date și modul de interpretare a acestora. Funcția returnează un pointer spre tipul FILE, iar în caz de eroare – pointerul NULL (prototip în stdio.h ).
FILE *fopen(const char *nume_fișier, const char *mod);
Parametrul mod este o constantă șir de caractere, care poate conține caracterele cu semnificațiile:
r : flux de date de intrare; deschidere pentru citire;
w : flux de date de ieșire; deschidere pentru scriere (crează un fișier nou sau suprascrie
conținutul anterior al fișierului existent);
a : flux de date de ieșire cu scriere la sfârșitul fișierului, adăugare, sau crearea fișierului în
cazul în care acesta n u există;
+ : extinde un flux de intrare sau ieșire la unul de intrare/ieșire; operații de scriere și citire
asupra unui fișier deschis în condițiile r, w sau a.
b : date binare;
t : date text (modul implicit).
Exemple:
"r+" – deschidere pentru modificare (citire și scriere);
"w+" – deschidere pentru modificare (citire și scriere);
"rb" – citire binară;
"wb" – scriere binară;
"r+b" – citire/scriere binară.
Închiderea unui fișier
Funcția fclose
int fclose(FILE *pf);
Funcția închide un fișier deschis cu fopen și eliberează memoria alocată (zona tampon și structura FILE). Returnează valoarea 0 la închiderea cu succes a fișierului și -1 în caz de eroare (prototip în
stdio.h ).
Ghid de "supravie țuire" C++
35
#include<math.h>
#include<iostream.h>
int i,j,k,lin; // declararea variabilelor intregi
float piv,s,aux; // declararea variabilelor reale
float x[30]; // declararea unui vector (componente reale)
float a[30][30]; // declararea unei matrici (componente reale)
cout<<" n="; // citirea unui numar !!
cin>>n;
cout<<"Dati vectorul x:" ; // citirea unui vector !!!
for (i=1;i<=n;i++)
{ cout<<"x["<<i <<"]=";
cin>>x[i];
}
cout<<"Dati matricea A:" ; // citirea unei matrici !!
for (i=1;i<=n;i++)
for (j=1;j<=n;j++){
cout<<"a["<<i <<"]["<<j<<"]=";
cin>>a[i][j];
}
if (conditie ) //sintaxa if !!!
do // do – while !!!
{
instructiuni;
}
while (conditie );
float f(float x) //declarare functii o variabila – inainte de main !!!!
{
return expresie ;
}
float f(float x,float y) //declarare functii 2 variabile – inainte de main !!!!
{
return expresie ;
}
void Gauss(int n, float a[20][20]) //procedura Gauss – inainte de main !!!
{ //ex apelare Gauss(n,B) !!!
}
for (i=1;i<=n;i++) //afisare vector !!!
cout<<x[i]<<endl ;
for (i=1;i<=n;i++) //afisare matrice !!!
for (j=1;j<=n;j++)
cout<<a[i][j];
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Metode Numerice – [622231] (ID: 622231)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
