Sunteți pe pagina 1din 109

Tema: Aplicarea software matematice la rezolvarea sistemelor de ecuații liniare și

neliniare

Introducere

CAPITOLUL I. Fundamentul teoretic privind sistemele de ecuații liniare și


neliniare
1.1. Noțiuni de bază privind ecuațiile liniare și neliniare
1.2. Metode tradiționale de rezolvare a sistemelor de ecuații
1.3. Softuri de rezolvare a sistemelor de ecuații liniare și neliniare

CAPITOLUL II. Metode de rezolvare a ecuațiilor


2.1.Metode de rezolvare a ecuațiilor liniare
2.1.1. Metoda eliminării Gauss
2.1.2. Metoda Jacobi
2.1.3. Metoda Gauss-Seidel
2.1.4. Alte metode și comparații
2.2.Metode de rezolvare a ecuațiilor neliniare
2.2.1. Metoda iterațiilor
2.2.2. Metoda lui Newton-Raphson
2.2.3. Metode de optimizare pentru sisteme neliniare

CAPITOLUL III. Evaluarea și comparația software-urilor pentru rezolvarea


sistemelor de ecuații liniare și neliniare
3.1.Aplicația Matlab
3.2.Aplicația Maple
3.3. Analiza comparativă a acestor software-uri matematice

Concluzii și recomandări

Bibliografie
Introducere
Actualitatea temei. Tema "Aplicarea software-urilor matematice la rezolvarea
sistemelor de ecuații liniare (neliniare)" rămâne extrem de actuală în contextul evoluției
tehnologiei și al necesităților din domeniile științifice și inginerie. Iată câteva aspecte
care subliniază actualitatea acestei teme:
1. Relevanța în cercetare și dezvoltare: Rezolvarea sistemelor de ecuații liniare și
neliniare reprezintă o parte fundamentală a multor domenii de cercetare, precum
științele naturale, ingineria, matematica aplicată, economia și multe altele.
Utilizarea software-urilor matematice a devenit esențială pentru obținerea
soluțiilor precise și eficiente într-o varietate de contexte.
2. Eficiență în calculul numeric: Software-urile matematice oferă abordări
computaționale avansate pentru sistemele de ecuații, permițând rezolvarea lor
rapidă și precisă. În contextul problemelor complexe și volumelor mari de date,
aceste instrumente sunt esențiale pentru gestionarea calculelor.
3. Modelare matematică: Aplicarea software-urilor matematice la rezolvarea
sistemelor de ecuații liniare și neliniare este esențială în modelarea matematică.
Aceasta permite cercetătorilor și inginerilor să descrie fenomene complexe, să
prevadă comportamentele sistemelor și să ia decizii bazate pe date solide.
4. Automatizarea și inteligența artificială: Integrarea software-urilor matematice
cu tehnologii precum inteligența artificială și învățarea automată devine tot mai
importantă. Acest lucru deschide noi oportunități în dezvoltarea de algoritmi și
soluții pentru sistemele de ecuații liniare și neliniare.
5. Soluții pentru probleme reale: Această temă are o aplicabilitate directă în
soluționarea problemelor practice, cum ar fi proiectarea structurilor de inginerie,
analiza datelor, simularea fenomenelor naturale și previziunea rezultatelor
financiare. Acest lucru face temele legate de software-urile matematice relevante
și în mediul de afaceri.
6. Educație și formare: În contextul educației, utilizarea software-urilor matematice
joacă un rol semnificativ în pregătirea studenților și a profesioniștilor în
matematică și știință. Aceștia învață să aplice teoria în practică și să utilizeze
instrumentele moderne pentru rezolvarea problemelor complexe.
7. Competiția și inovația software-urilor: Competiția în domeniul software-urilor
matematice a dus la dezvoltarea de noi funcționalități, eficiență și interfațe mai
prietenoase. Utilizatorii beneficiază de această inovație continuă.
În concluzie, tema "Aplicarea software-urilor matematice la rezolvarea sistemelor
de ecuații liniare (neliniare)" este foarte actuală și continuă să aibă un impact
semnificativ într-o varietate de domenii. Cu evoluția tehnologiei și creșterea
complexității problemelor, utilizarea software-urilor matematice este esențială pentru
obținerea rezultatelor precise și pentru facilitarea progresului științific și tehnic.
Cercetătorii, inginerii și profesioniștii din diferite domenii depind în mare măsură de
aceste instrumente pentru a rezolva problemele actuale și pentru a dezvolta soluții
inovatoare.
Scopul cercetării: Scopul fundamental al cercetării pe această temă este de a
explora și de a evalua eficacitatea și aplicabilitatea software-urilor matematice în
rezolvarea sistemelor de ecuații liniare și neliniare. Scopul poate varia în funcție de
context, dar în general, vizează înțelegerea și dezvoltarea de metode, tehnici și abordări
pentru a soluționa cu succes astfel de sisteme.
Obiectivele cercetării:
1. Evaluarea software-urilor matematice disponibile: Analizarea și compararea
software-urilor matematice, cum ar fi MATLAB, Maple, Python cu bibliotecile
NumPy și SciPy, Mathematica și altele, pentru a identifica avantajele și limitările
fiecărui instrument în rezolvarea ecuațiilor liniare și neliniare.
2. Dezvoltarea de metode eficiente: Crearea, dezvoltarea sau adaptarea de metode
și algoritmi pentru a rezolva sistemele de ecuații liniare și neliniare. Aceasta poate
implica proiectarea de tehnici numerice sau simbolice pentru a obține soluții
precise și eficiente.
3. Analiza performanței software-ului: Evaluarea performanței software-urilor
matematice în termeni de timp de calcul, precizie, stabilitate și scalabilitate în
funcție de dimensiunea și complexitatea sistemelor de ecuații.
4. Studiul aplicațiilor practice: Aplicarea software-urilor matematice pentru a
rezolva sisteme de ecuații liniare și neliniare în contexte practice, cum ar fi
ingineria, științele naturale sau economia, pentru a evalua impactul și relevanța lor
în rezolvarea problemelor reale.
5. Compararea cu metode tradiționale: Compararea rezultatelor obținute cu
software-urile matematice cu rezultatele obținute utilizând metode tradiționale
pentru a evalua eficacitatea și precisia acestora.
6. Analiza erorilor și validarea rezultatelor: Evaluarea erorilor și a preciziei
rezultatelor obținute, asigurându-se că acestea sunt fiabile și se potrivesc cu
contextul problemei.
7. Sugerarea de îmbunătățiri și viitoare direcții de cercetare: Identificarea
potențialelor îmbunătățiri în utilizarea software-urilor matematice și sugerarea de
direcții pentru cercetarea viitoare în acest domeniu.
8. Diseminarea rezultatelor: Prezentarea și publicarea rezultatelor obținute în
reviste științifice sau prezentarea acestora în conferințe pentru a împărtăși
cunoștințele și contribuțiile la comunitatea academică și profesională.
Suportul metodologic este reprezentat prin utilizarea următoarelor metode:
Studiul literaturii de specialitate: a fost efectuată o revizuire amplă a literaturii
de specialitate privind rezolvarea ecuațiilor liniare și neliniare cu ajutorul software-urilor
matematice. Au fost identificate lucrările de cercetare relevante, manualele și articolele
care abordează subiectul.
Sinteza – au fost sistematizate concluziile autorilor și experților care au mai
elaborat studii în acest domeniu.
Analiza și interpretarea rezultatelor: a fost efectuată analiză aprofundată ale
rezultatelor obținute și interpretate în contextul problemelor studiate. Au fost analizate
avantajele și limitările software-ului matematic în soluționarea ecuațiilor.
Compararea cu metode tradiționale: au fost comparate rezultatele obținute cu
software-ul matematic cu cele obținute prin metode tradiționale de rezolvare a ecuațiilor.
Au fost analizate avantajele și dezavantajele fiecărei abordări.
Baza informațională este reprezentată de prevederile și concluziile conceptuale
ale diverșilor autori autohtoni, dar și străini care studiază aceste problematici . Lucrarea
folosește abordări științifice clasice și moderne, care sunt utilizate pe scară largă.
Structura lucrării. Prezenta lucrarea constă din introducere, 3 capitole,
concluzii, recomandări și bibliografie.
Prezenta lucrare are 69 pagini.

CAPITOLUL I. Fundamentul teoretic privind sistemele


de ecuații liniare și neliniare

Un fundament teoretic solid în ceea ce privește sistemele de ecuații liniare și


neliniare este esențial pentru înțelegerea și rezolvarea eficientă a acestor probleme
matematice. Sistemele de ecuații apar într-o varietate de contexte, de la știință și
inginerie la economie și multe altele.
1.1.Noțiuni de bază privind ecuațiile liniare și neliniare
Noțiunile de bază privind ecuațiile liniare și neliniare reprezintă un punct de plecare
esențial pentru înțelegerea acestor concepte matematice fundamentale. Iată o descriere a
acestor noțiuni de bază: [1, p.85]
Ecuații liniare:
Definiție: O ecuație liniară este o ecuație algebrică în care fiecare termen este la
puterea întâi, ceea ce înseamnă că ecuația poate fi scrisă sub forma generală:
a₁x₁ + a₂x₂ + ... + aᵢxᵢ + ... + aₙxₙ = b
unde a₁, a₂, ..., aₙ sunt coeficienți cunoscuți, x₁, x₂, ..., xₙ sunt variabile
necunoscute, iar b este termenul liber.
Soluții: O ecuație liniară are una sau mai multe soluții, în funcție de valoarea
coeficienților și a termenului liber. Soluțiile pot fi reprezentate într-un spațiu n-
dimensional, unde n reprezintă numărul de variabile.
Să analizăm mai detaliat acest aspect:
1. Numărul de Variabile (n): Într-o ecuație liniară, variabilele reprezintă
necunoscutele pe care încercăm să le găsim. Numărul de variabile este reprezentat
de n, care indică dimensiunea sistemului. De exemplu, într-un sistem cu două
variabile, n este egal cu 2, iar într-un sistem cu trei variabile, n este 3, și așa mai
departe.
2. Spațiu Vectorial n-dimensional: Un sistem de ecuații liniare poate fi privit ca un
punct într-un spațiu vectorial n-dimensional, unde fiecare variabilă corespunde
unei dimensiuni în acest spațiu. Cu cât mai multe variabile are sistemul (n mai
mare), cu atât spațiul vectorial este mai dimensional.
3. Soluții și Plane (n = 2): În cazul unui sistem cu două variabile (n = 2), soluția
reprezintă un punct într-un plan bidimensional. De exemplu, ecuația liniară 2x +
3y = 6 reprezintă o linie în planul 2D. Această linie are o infinitate de puncte,
fiecare dintre ele fiind o soluție a ecuației.
4. Soluții și Spații n-dimensionale (n > 2): În cazul unui sistem cu mai mult de
două variabile (n > 2), soluția reprezintă un punct, o linie, un plan sau o
submulțime n-dimensional a spațiului vectorial. Numărul de soluții poate varia în
funcție de coeficienți. Dacă coeficienții sunt independenți și echilibrați, sistemul
are o singură soluție. Dacă coeficienții sunt dependenți sau echivalenți, sistemul
poate avea o infinitate de soluții sau nicio soluție.
5. Geometrie și Interpretare Grafică: Geometria este utilă pentru a interpreta
soluțiile ecuațiilor liniare în spații n-dimensionale. În cazul unui sistem cu trei
variabile (n = 3), soluția poate fi reprezentată ca o intersecție de planuri. Într-un
sistem cu mai multe variabile, soluția poate fi reprezentată ca o intersecție de
hiperplane.
În concluzie, conceptul de spațiu vectorial n-dimensional este fundamental în
înțelegerea soluțiilor ecuațiilor liniare. Numărul de soluții depinde de coeficienții și
echilibrul sistemului. În cazul ecuațiilor liniare, un sistem poate avea o soluție unică, o
infinitate de soluții sau nici o soluție, în funcție de structura sa matriceală și a
coeficienților.
Reprezentare matriceală: Sistemele de ecuații liniare pot fi reprezentate sub
formă de matrice, unde matricea coeficienților este înmulțită cu vectorul de variabile
pentru a obține un vector de termeni liberi. [3, p. 46]
Metode de rezolvare: Există mai multe metode pentru rezolvarea ecuațiilor liniare,
cum ar fi metoda substituției, eliminarea Gaussiana, metoda matriceală, și metode
numerice folosind software specializat.

Ecuații neliniare:
Definiție: O ecuație neliniară este o ecuație în care cel puțin unul dintre termeni
conține o putere mai mare decât 1 a variabilelor, ceea ce face ca ecuația să nu fie liniară.
Soluții: Ecuațiile neliniare pot avea zero, una sau mai multe soluții, în funcție de
natura lor. Uneori, aceste soluții pot fi numere complexe sau nu pot fi exprimate printr-o
formulă analitică simplă.
Ecuațiile neliniare sunt ecuații algebrice în care cel puțin un termen conține o putere
mai mare decât 1 a variabilelor. Caracteristica lor fundamentală este non-linearitatea,
ceea ce înseamnă că soluțiile nu pot fi obținute direct sau în mod analitic, așa cum se
întâmplă în cazul ecuațiilor liniare. Iată câteva aspecte cheie legate de ecuațiile neliniare:
[5, p. 35]
1. Număr variabil de soluții: Ecuațiile neliniare pot avea zero, una sau mai multe
soluții. Există situații în care nu există nici o soluție reală sau complexă care să
satisfacă ecuația, ceea ce face ca problema să fie fără soluție. Pe de altă parte,
ecuațiile neliniare pot avea o infinitate de soluții reale sau complexe.
2. Complexitate și diversitate: Deoarece ecuațiile neliniare nu respectă regulile
simple de linearitate, soluțiile lor pot fi extrem de complexe. Aceste soluții pot
include numere complexe (cu părți imaginate), radacini sau exponențiale, făcând
rezolvarea analitică dificilă sau chiar imposibilă în multe cazuri.
3. Metode numerice: Rezolvarea ecuațiilor neliniare necesită adesea utilizarea
metodelor numerice. Aceste metode implică aproximări iterative ale soluției, iar
soluția finală este obținută prin calculul repetat până când se atinge o anumită
precizie. Metodele numerice includ metoda Newton-Raphson, metoda bisecției și
metodele de optimizare, precum metoda gradientului.
4. Convergență și divergență: Un aspect important în rezolvarea ecuațiilor
neliniare este evaluarea convergenței metodelor numerice. Dacă o metodă nu
converge, soluția poate să nu poată fi găsită sau să fie eronată. Monitorizarea și
controlul convergenței sunt esențiale pentru a obține soluții valide.
5. Aplicații practice: Ecuațiile neliniare se întâlnesc în știință, inginerie, economie
și multe alte domenii. Ele sunt folosite pentru a descrie relațiile complexe dintre
variabile și pentru a modela comportamentul non-liniar al sistemelor. De exemplu,
ecuațiile neliniare pot fi folosite pentru a descrie creșterea populației, mișcarea
planetelor în jurul soarelui sau comportamentul materialelor sub stres.
În concluzie, ecuațiile neliniare sunt o componentă esențială a matematicii și au o
gamă largă de aplicații practice. Rezolvarea lor implică de obicei utilizarea metodelor
numerice și poate necesita abordări complexe pentru a obține soluții precise în funcție de
natura și complexitatea ecuației.
Metode de rezolvare: Rezolvarea ecuațiilor neliniare implică adesea metode
numerice, cum ar fi metoda Newton-Raphson, metoda bisecției sau metodele bazate pe
aproximări iterative. Aceste metode pot oferi soluții aproximative.
Convergență și Divergență: Un aspect important al rezolvării ecuațiilor neliniare
este determinarea condițiilor de convergență a metodelor numerice. [7, p. 77] Dacă o
metodă nu converge, soluția poate să nu poată fi găsită sau să fie eronată.
Noțiunile de bază legate de ecuațiile liniare și neliniare sunt fundamentale în
matematică și au o gamă largă de aplicații în știință, inginerie, economie și multe alte
domenii. Înțelegerea acestor concepte este crucială pentru abordarea și rezolvarea
problemelor matematice și practice.

1.2.Metode tradiționale de rezolvare a sistemelor de ecuații


Metodele tradiționale de rezolvare a sistemelor de ecuații se referă la tehnici și
proceduri clasice utilizate pentru a găsi soluțiile sistemelor de ecuații, atât liniare, cât și
neliniare. Aceste metode au fost dezvoltate înaintea metodelor numerice și a
calculatoarelor și sunt adesea folosite ca metode didactice pentru a înțelege conceptele
matematice subiacente. Iată câteva dintre metodele tradiționale comune de rezolvare a
sistemelor de ecuații:
Metoda Substituției:
Această metodă implică izolarea uneia dintre variabilele dintr-o ecuație și
înlocuirea ei cu expresia corespunzătoare dintr-o altă ecuație. Acest proces se repetă
până când se găsesc valorile pentru toate variabilele. Metoda substituției este mai
potrivită pentru sisteme de ecuații cu două sau trei variabile și poate fi dificilă și
laborioasă pentru sisteme mai mari.
Această metodă se bazează pe izolarea unei variabile în una dintre ecuații și
înlocuirea ei cu expresia corespunzătoare dintr-o altă ecuație, astfel încât să se obțină o
ecuație cu o singură necunoscută. Iată pașii tipici pentru rezolvarea unui sistem de
ecuații liniare cu ajutorul metodei substituției: [9, p. 65]
1. Scrierea sistemului: Începe prin a scrie sistemul de ecuații sub forma sa standard.
De exemplu, pentru un sistem de două ecuații liniare cu două variabile, acesta ar
putea arăta astfel:
Ecuație 1: a₁x + b₁y = c₁ Ecuație 2: a₂x + b₂y = c₂
2. Izolarea unei variabile: Alege una dintre ecuații și izolează una dintre variabile
(de obicei, variabila care are cel mai simplu coeficient sau poate fi ușor izolată).
De exemplu, putem izola variabila x din prima ecuație:
x = (c₁ - b₁y) / a₁
3. Substituție: Ia expresia obținută pentru variabila izolată (x în exemplul de mai
sus) și înlocuiește variabila corespunzătoare (x) cu această expresie în cealaltă
ecuație. În cazul nostru, înlocuim x în ecuația a doua:
a₂((c₁ - b₁y) / a₁) + b₂y = c₂
4. Rezolvare pentru variabila rămasă: Rezolvă ecuația rezultată pentru a găsi
valoarea celeilalte variabile (y în acest caz). Aceasta implică simplificarea
expresiei și rezolvarea pentru y.
5. Obținerea valorii primei variabile: După ce ai găsit valoarea pentru y, poți să o
înlocuiești în ecuația izolată pentru a obține valoarea primei variabile (x în acest
caz).
6. Verificare: Verifică soluțiile găsite în ecuațiile originale pentru a te asigura că
acestea sunt soluții valide ale sistemului.
7. Reprezentarea soluției: Soluția sistemului este perechea de valori pentru
variabilele x și y. Aceasta reprezintă punctul de intersecție al liniilor descrise de
ecuații pe un plan cartezian.
Este important de menționat că metoda substituției poate deveni laborioasă și
ineficientă pentru sisteme mai complexe sau cu mai multe variabile. În aceste cazuri,
metode numerice și software specializat pot oferi soluții mai rapide și precise. Cu toate
acestea, metoda substituției rămâne o modalitate fundamentală și didactică de a înțelege
rezolvarea sistemelor de ecuații liniare.
Eliminarea Gaussiana: [11, p. 90]
Metoda eliminării Gaussiene este o tehnică pentru rezolvarea sistemelor de ecuații
liniare. Se bazează pe aplicarea unei serii de operații asupra ecuațiilor pentru a
transforma sistemul într-unul echivalent, dar mai ușor de rezolvat. Scopul este de a
obține o formă simplă a sistemului, în care variabilele sunt izolate și pot fi găsite în mod
direct. Acest proces implică adesea eliminarea uneia dintre variabile în fiecare etapă.
Metoda Substituției Înapoi:
Această metodă este folosită pentru a găsi soluțiile unui sistem de ecuații liniare
folosind rezultatele obținute prin eliminarea Gaussiana. După ce variabilele sunt izolate
și găsite în urma eliminării Gaussiene, metoda substituției înapoi le adaugă înapoi în
celelalte ecuații pentru a găsi valorile restante.
Metoda Înmulțirii Matriceale:
Pentru sistemele de ecuații liniare, metoda înmulțirii matriceale implică
reprezentarea sistemului sub forma matriceală Ax = b, unde A este matricea
coeficienților, x este vectorul de variabile necunoscute și b este vectorul termenilor
liberi. Soluția se obține prin înmulțirea inversei matricei A cu vectorul b.
Metoda înmulțirii matriceale este o tehnică utilizată pentru rezolvarea sistemelor de
ecuații liniare, în special a celor cu mai multe ecuații și mai multe variabile. Această
metodă este eficientă și elegantă, mai ales atunci când este vorba de sisteme cu mai
multe variabile, și are o importanță deosebită în matematică și în domenii precum știința
calculatoarelor și ingineria. Iată cum funcționează metoda înmulțirii matriceale: [13,
p.98]
1. Scrierea sistemului sub formă matriceală: Pentru a utiliza metoda înmulțirii
matriceale, sistemul de ecuații trebuie să fie reprezentat sub formă matriceală.
Ecuațiile din sistem sunt adunate sub forma unei matrice a coeficienților (notată
adesea cu A), iar valorile de pe partea dreaptă a ecuațiilor sunt adunate sub forma
unui vector coloană (notat cu B). Astfel, sistemul de ecuații Ax = B este creat,
unde A este o matrice și B este un vector.
2. Calculul inversului matricei A (dacă este posibil): Dacă matricea A are un
determinant diferit de zero și este inversabilă (adică are un invers), atunci inversul
ei, notat cu A^(-1), poate fi calculat. Inversul matricei A este esențial în metoda
înmulțirii matriceale. Cu toate acestea, dacă matricea nu are un determinant diferit
de zero sau nu este inversabilă, atunci această metodă nu poate fi aplicată.
3. Soluția sistemului: Pentru a găsi soluția sistemului Ax = B, se utilizează relația:
x = A^(-1) * B
unde x este vectorul de variabile necunoscute. Pentru a obține x, se înmulțește
inversul matricei A cu vectorul B. Rezultatul este un vector ce conține valorile pentru
variabilele necunoscute.
Metoda înmulțirii matriceale este deosebit de eficientă în rezolvarea sistemelor
liniare cu mai multe ecuații și mai multe variabile, în special atunci când sunt disponibile
instrumente software sau calculatoare puternice pentru a efectua calculele matematice
complicate. Această metodă este utilizată pe scară largă în domenii precum știința
calculatoarelor, ingineria electrică, analiza financiară și multe altele pentru a rezolva
sisteme complexe de ecuații care modelează diverse fenomene. Este important de
menționat că metoda înmulțirii matriceale este eficientă numai dacă matricea A este
inversabilă; în caz contrar, sistemul ar putea să nu aibă soluții unice sau să nu aibă deloc
soluții.
Metoda Grafică
Această metodă este utilizată pentru a rezolva sisteme de ecuații liniare cu două
variabile. Se trasează graficele ecuațiilor pe un plan cartezian, iar soluția sistemului este
punctul în care aceste grafice se intersectează.
Este important de menționat că metodele tradiționale de rezolvare a sistemelor de
ecuații pot fi utile pentru sisteme mai mici sau în scopuri didactice, dar pot deveni
impracticabile sau ineficiente pentru sisteme complexe sau mari. În acele cazuri,
metodele numerice și software-ul specializat sunt preferate pentru a obține soluții rapide
și precise.
Pe lângă aceste metode, mai există și o serie de alte metode pe care le vom analiza
mai detaliat în capitolul II.

1.3.Softuri de rezolvare a sistemelor de ecuații liniare și neliniare


Există o varietate de software disponibil pentru rezolvarea sistemelor de ecuații,
fie ele liniare sau neliniare. Aceste programe sunt utilizate pe scară largă în domenii
precum matematica, științele ingineriei, fizica, economia și multe altele, pentru a rezolva
probleme complexe. Iată câteva dintre softurile cele mai populare utilizate pentru
rezolvarea sistemelor de ecuații liniare și neliniare: [ 15, p. 74]
1. MATLAB:
 MATLAB este un limbaj de programare și un mediu de dezvoltare pentru calculul
numeric și analiza matematică.
 Este extrem de versatil și oferă funcții și instrumente pentru rezolvarea atât a
sistemelor de ecuații liniare, cât și a celor neliniare.
 MATLAB dispune de funcții precum linsolve pentru sistemele liniare și funcții ca
fsolve pentru sistemele neliniare.
2. Mathematica:
 Mathematica este un sistem de calcul symbolic și numeric.
 Dispune de funcționalități puternice pentru rezolvarea atât a ecuațiilor liniare, cât
și a celor neliniare.
 Este potrivit pentru matematicieni, cercetători și ingineri, deoarece poate efectua
calcul symbolic, graficare și analiză numerică.
Mathematica este un software puternic și versatil dezvoltat de Wolfram Research,
folosit pentru calcul symbolic și numeric, analiză matematică și resurse educaționale în
matematică și știință. Acest software a fost creat de Stephen Wolfram și a fost lansat
pentru prima dată în 1988. Mathematica a devenit unul dintre cele mai cunoscute și
utilizate medii de calcul matematic din lume. Iată câteva aspecte importante despre
Mathematica: [17, p. 88]
Calcul Symbolic și Numeric:
 Mathematica permite utilizatorilor să efectueze atât calcul simbolic, cât și
numeric. Acest lucru înseamnă că puteți lucra cu expresii matematice în formă
simbolică, precum și să efectuați calcule numerice și analize matematice
complexe.
Limbaj de Programare Wolfram:
 Mathematica folosește un limbaj de programare specializat, numit Wolfram
Language, care permite dezvoltatorilor să scrie cod pentru a efectua calcule
matematice, să creeze grafice, să manipuleze date și să efectueze analize
complexe.
Funcționalități Avansate:
 Mathematica oferă o gamă largă de funcționalități, inclusiv rezolvarea ecuațiilor
algebrice și diferențiale, analiza de date, grafică de înaltă calitate, generarea de
documente și rapoarte interactive și resurse educaționale pentru studenți și
cercetători.
Interfață User-Friendly:
 Mathematica are o interfață prietenoasă pentru utilizator, care face accesibilă
programarea și analiza matematică pentru o varietate de utilizatori, de la studenți
la cercetători și profesioniști.
Rezolvarea Ecuațiilor:
 Mathematica poate fi folosit pentru a rezolva sisteme de ecuații liniare și neliniare,
inclusiv ecuații diferențiale. Acesta oferă funcții pentru rezolvarea problemelor
matematice complexe și poate oferi soluții analitice sau numerice, în funcție de
cerințe.
Platformă Cross-Platform:
 Mathematica este disponibil pe o varietate de platforme, inclusiv Windows,
macOS și Linux, ceea ce face software-ul accesibil pentru utilizatori cu diverse
nevoi.
Utilizări Diverse:
 Mathematica este utilizat într-o varietate de domenii, inclusiv matematică, fizică,
inginerie, economie, biologie, chimie și multe altele. Este un instrument esențial
pentru cercetare, educație și dezvoltare.
Comunitate Activă:
 Mathematica are o comunitate activă de utilizatori și dezvoltatori care împărtășesc
resurse, cod și soluții. Acest lucru face mai ușor pentru utilizatori să obțină
asistență și să învețe de la alți experți Mathematica.
Mathematica este un software extrem de versatil și puternic care oferă o gamă
largă de funcționalități matematice și științifice. Acesta este folosit în școli și
universități, în cercetare academică, în industrie și în numeroase alte domenii pentru a
rezolva probleme matematice complexe și pentru a efectua analize matematice și
științifice de înaltă calitate.
3. Python cu NumPy și SciPy: [2, 47]
 Python este un limbaj de programare popular în domeniul științific și ingineresc.
 NumPy este o bibliotecă pentru calcule numerice, iar SciPy este o bibliotecă
pentru funcții matematice și științifice.
 Aceste biblioteci oferă funcții pentru rezolvarea ecuațiilor liniare, neliniare și
pentru optimizare.
Python cu NumPy și SciPy sunt combinații de limbajul de programare Python cu
biblioteci specializate pentru calcule numerice și științifice. Acestea sunt soluții
puternice pentru rezolvarea ecuațiilor liniare și neliniare, precum și pentru o varietate de
alte sarcini matematice și științifice. Iată câteva aspecte importante despre Python,
NumPy și SciPy: [4, p. 73]
Python:
 Python este un limbaj de programare de înalt nivel cunoscut pentru sintaxa sa
clară și ușor de înțeles.
 Este un limbaj popular în dezvoltarea software-ului, știința datelor, inteligența
artificială și multe altele.
 Python are o comunitate mare de utilizatori și o vastă colecție de biblioteci care îl
fac potrivit pentru o gamă largă de aplicații.
NumPy:
 NumPy (Numerical Python) este o bibliotecă fundamentală pentru calculul
numeric în Python.
 Oferă obiecte și funcții pentru manipularea matricelor și vectorilor, precum și
pentru rezolvarea problemelor de algebra liniară.
 Este folosit pentru a crea și manipula date multidimensionale, esențiale în știința
datelor, fizică, inginerie și altele.
SciPy:
 SciPy este o bibliotecă construită pe baza NumPy, specializată în funcții
matematice și științifice avansate.
 Conține submodule pentru optimizare, statistici, procesarea semnalelor, ecuații
diferențiale, grafică și multe altele.
 Este folosit pentru a efectua calcule științifice complexe, analize de date și
modelări matematice.
Caracteristici și Utilizări:
 Python cu NumPy și SciPy sunt folosite pentru rezolvarea ecuațiilor liniare și
neliniare, inclusiv sisteme de ecuații liniare și ecuații diferențiale.
 Sunt utilizate în cercetare științifică, analiza datelor, modelarea matematică,
inginerie, fizică, biologie și multe altele.
 Python, NumPy și SciPy sunt open-source și pot fi instalate gratuit, ceea ce îi face
accesibili pentru o gamă largă de utilizatori.
4. Microsoft Excel: [6, p. 77]
 Microsoft Excel este o foarte cunoscută aplicație pentru foi de calcul.
 Poate fi folosit pentru rezolvarea unor ecuații liniare simple, în special pentru
analize financiare și de gestionare.
5. Wolfram Alpha:
 Wolfram Alpha este un motor de căutare computațională și asistent virtual.
 Poate fi folosit pentru a găsi soluții pentru ecuații liniare și neliniare, oferind și
pași de rezolvare.
6. Maple:
 Maple este un program de matematică simbolică și numerică.
 Dispune de funcții pentru rezolvarea ecuațiilor liniare și neliniare, precum și
pentru analiza matematică complexă.
7. Maxima:
 Maxima este un sistem de calcul symbolic și numeric, open-source.
 Poate fi folosit pentru a efectua calcule matematice simbolice și numerice,
inclusiv rezolvarea ecuațiilor liniare și neliniare.
8. MATLAB Online și Octave:
 MATLAB Online este versiunea online a programului MATLAB.
 Octave este un software open-source care este compatibil cu MATLAB și poate fi
utilizat pentru rezolvarea ecuațiilor liniare și neliniare.
Acestea sunt doar câteva exemple de software disponibile pentru rezolvarea
sistemelor de ecuații. Alegerea software-ului potrivit depinde de cerințele specifice ale
problemei și preferințele personale. Softurile menționate oferă o gamă largă de
funcționalități matematice și pot fi adaptate pentru o varietate de aplicații în știință și
inginerie.
Unele din aceste softuri le vom analiza mai detaliat în capitolul III.

CAPITOLUL II. Metode de rezolvare a ecuațiilor

Rezolvarea ecuațiilor reprezintă unul dintre pilonii fundamentali ai matematicii și


științei. Ecuațiile sunt utilizate pentru a descrie relații matematice între variabile și
pentru a rezolva o varietate de probleme din domenii precum matematica, fizica, chimia,
ingineria, economia și multe altele. În esență, rezolvarea ecuațiilor implică găsirea
valorilor necunoscute (variabile) care satisfac o anumită relație matematică.
Ecuațiile pot fi de natură variată, inclusiv ecuații liniare, neliniare, diferențiale,
algebrice, transcendente și multe altele. Fiecare tip de ecuație necesită abordări specifice
pentru a găsi soluțiile corespunzătoare.

2.1.Metode de rezolvare a ecuațiilor liniare


Rezolvarea ecuațiilor liniare reprezintă o componentă esențială a matematicii și a
științelor în general. Aceste ecuații se regăsesc într-o varietate de domenii, inclusiv
matematică, fizică, inginerie, economie și știința calculatoarelor, și sunt utilizate pentru a
modela și rezolva o serie de probleme practice. Metodele de rezolvare a ecuațiilor liniare
sunt instrumente matematice fundamentale care permit găsirea soluțiilor acestor ecuații
într-un mod eficient și precis.
Ecuațiile liniare pot fi exprimate sub forma generală ax + by + cz + ... = d, unde a,
b, c, ... reprezintă coeficienții, x, y, z, ... sunt variabilele, iar d este termenul liber. [8, p.
67] Rezolvarea acestor ecuații implică găsirea valorilor variabilelor care satisfac ecuația
dată. De asemenea, ecuațiile liniare pot fi grupate în sisteme de ecuații liniare, unde mai
multe ecuații sunt rezolvate simultan, ceea ce este adesea necesar în contexte practice.

2.1.1.Metoda eliminării Gauss


Metoda eliminării Gauss, cunoscută și sub numele de metoda Gauss sau eliminare
gaussiană, este o tehnică fundamentala pentru rezolvarea sistemelor de ecuații liniare.
Aceasta a fost dezvoltată de matematicianul german Carl Friedrich Gauss și reprezintă
un instrument esențial în algebra liniară și în numeroase domenii științifice și inginere;ti.
Metoda eliminării Gauss se aplică sistemelor de ecuații liniare, constând din mai multe
ecuații și mai multe necunoscute.
Procesul de rezolvare cu metoda eliminării Gauss presupune trei etape cheie: [10, p. 66]
1. Etapa de Transformare:
 Sistemul de ecuații liniare este reprezentat sub forma unei matrice extinse, unde
matricea coeficienților este augmentată cu un vector al termenilor liberi. Acesta
arată astfel:
[A | B]
 Scopul este să transformăm această matrice într-o formă treiagonală superioară
(sau triangulară inferioară), unde toate elementele sub (sau deasupra) diagonalei
principale sunt zero. Pentru a obține acest lucru, se aplică operații elementare
precum înmulțirea unei ecuații cu o constantă și adunarea sau scăderea a două
ecuații.
Transformarea sistemului se realizează prin aplicarea unor operații algebrice
elementare asupra ecuațiilor și se folosește matricea extinsă, care combină matricea
coeficienților cu vectorul termenilor liberi.
Iată cum se desfășoară etapa de transformare a Metodei eliminării Gauss:
Formarea Matricei Extinse:
 Sistemul de ecuații liniare se scrie sub forma matricei extinse, unde matricea
coeficienților (A) este combinată cu vectorul termenilor liberi (B) pentru a forma
o matrice extinsă [A | B].
Parcurgerea Ecuațiilor:
 Se parcurg ecuațiile, începând cu prima și continuând până la ultima. În fiecare
etapă, o ecuație este selectată drept "ecuație pivot". Aceasta este alegerea pentru a
ghida procesul de eliminare.
Operarea asupra Ecuațiilor:
 Pentru a transforma sistemul într-o formă treiagonală superioară (sau inferioară),
se folosesc operații algebrice elementare. Aceste operații includ:
 Înmulțirea sau împărțirea întregii ecuații cu o constantă (astfel încât
coeficientul necunoscut devine 1).
 Adunarea sau scăderea unei ecuații dintr-o altă ecuație (pentru a elimina un
termen variabil în una dintre ecuații).
Scopul:
 Scopul fiecărei operații efectuate în timpul etapei de transformare este de a obține
zero în locul coeficienților necunoscuți sub sau deasupra ecuației pivot. Astfel,
ecuația pivot rămâne nemodificată sau poate fi redusă la o formă în care soluția
este evidentă.
Iterație:
 Procesul se repetă pentru fiecare ecuație, mutând ecuația pivot de la prima la a
doua, apoi la a treia, și continuând până când întreaga matrice extinsă a fost
transformată în formă treiagonală.
După finalizarea etapei de transformare, matricea extinsă va avea o structură
treiagonală, în care coeficienții necunoscuți sub sau deasupra diagonalei principale sunt
zero. Acest lucru simplifică semnificativ procesul de rezolvare a sistemului de ecuații,
deoarece acesta poate fi continuat cu ușurință prin aplicarea metodei de substituție
inversă sau a altor metode pentru găsirea soluțiilor. Etapa de transformare reprezintă
primul pas esențial în rezolvarea eficientă a ecuațiilor liniare cu Metoda eliminării
Gauss.
2. Etapa de Eliminare: [12, p. 78]
 În această etapă, obiectivul este să se aducă matricea extinsă la o formă
treiagonală superioară sau inferioară. Acest lucru se face prin eliminarea
coeficienților necunoscuți din ecuații prin intermediul operațiilor elementare.
 Cu fiecare pas, se selectează o ecuație (rând) ca "ecuația pivot", iar celelalte
ecuații sunt ajustate pentru a aduce coeficienții necunoscuți sub sau deasupra
pivotului la zero. Astfel, se obține un sistem mai simplu.
Scopul acestei etape este de a elimina coeficienții necunoscuți sub sau deasupra
diagonalei principale în matricea extinsă și de a obține un sistem în formă treiagonală
superioară (sau inferioară). Această formă simplifică considerabil procesul de găsire a
soluțiilor sistemului de ecuații.
Iată cum se desfășoară etapa de eliminare a Metodei eliminării Gauss:
Selecția Ecuației Pivot:
 La începutul etapei de eliminare, una dintre ecuații este selectată ca "ecuație
pivot". Acesta este pasul în care se alege una dintre ecuații ca punct de pornire
pentru eliminare.
Eliminarea Coeficienților Necunoscuți:
 Obiectivul principal în această etapă este să se aducă coeficienții necunoscuți sub
sau deasupra diagonalei principale la zero. Pentru a realiza acest lucru, se folosesc
operații algebrice elementare precum adunarea sau scăderea ecuațiilor și
înmulțirea sau împărțirea întregii ecuații cu o constantă.
Iterația:
 Procesul de eliminare se repetă pentru fiecare ecuație în ordinea stabilită în timpul
etapei de transformare. Acest lucru înseamnă că se începe cu ecuația pivot
selectată și se continuă cu celelalte ecuații.
 Cu fiecare iterație, coeficienții necunoscuți sub sau deasupra diagonalei principale
sunt aduși la zero.
Finalizarea Etapei de Eliminare: [14, p.48]
 După ce toate iterațiile au fost efectuate și toți coeficienții necunoscuți sub sau
deasupra diagonalei principale au fost aduși la zero, matricea extinsă ajunge la o
formă treiagonală superioară sau inferioară.
 La finalul etapei de eliminare, sistemul de ecuații a fost simplificat, iar procesul de
găsire a soluțiilor a devenit mai eficient.
Cu matricea extinsă într-o formă treiagonală, rezolvarea sistemului de ecuații
liniare devine mult mai ușoară. În etapa următoare, care este etapa de substituție inversă,
se pot găsi cu ușurință valorile necunoscute și astfel se obține soluția sistemului. Etapa
de eliminare reprezintă un pas crucial în procesul de rezolvare a ecuațiilor liniare cu
Metoda eliminării Gauss și contribuie semnificativ la eficiența acestui proces matematic.
3. Etapa de Substituție Inversă:
 După ce matricea a fost transformată în formă treiagonală superioară sau
inferioară, se poate folosi metoda substituției inverse pentru a găsi valorile
necunoscute.
 Începem cu ultima ecuație (rând) și calculăm valoarea ultimei necunoscute. Apoi,
această valoare este înlocuită în ecuațiile anterioare pentru a calcula valorile
celorlalte necunoscute, continuând până când obținem soluțiile complete.
Metoda eliminării Gauss este o modalitate eficientă și sistematică de a rezolva
sisteme de ecuații liniare. Ea este utilizată pe scară largă în matematică, știința
calculatoarelor, inginerie, economie și multe altele. Cu toate acestea, este important de
menționat că această metodă poate să eșueze sau să fie dificil de aplicat în cazul
sistemelor care au coeficienți speciali sau care prezintă singularități. În astfel de cazuri,
pot fi necesare alte tehnici sau software specializat pentru rezolvare.

2.1.2.Metoda Jacobi
Metoda Jacobi este o tehnică iterativă pentru rezolvarea sistemelor de ecuații
liniare. Această metodă este numită după matematicianul german Carl Gustav Jacob
Jacobi și a fost dezvoltată în secolul al XIX-lea. Metoda Jacobi este folosită pentru a găsi
soluții aproximative pentru sistemele de ecuații liniare, în special pentru sistemele care
pot fi dificile de rezolvat folosind metode directe, precum Metoda eliminării Gauss.
Iată câteva aspecte-cheie legate de Metoda Jacobi: [16, p. 43]
Caracteristica Iterativă: Metoda Jacobi este una iterativă, ceea ce înseamnă că
furnizează soluții aproximative, care sunt îmbunătățite treptat în fiecare iterație. În
fiecare pas, valorile necunoscute sunt ajustate în funcție de iterația anterioară pentru a se
apropia de soluția reală.
Descompunerea Matricei A: O caracteristică importantă a Metodei Jacobi este
descompunerea matricei coeficienților A într-o matrice diagonală D și o matrice restul
R. Astfel, ecuația originală A * x = b poate fi rescrisă ca D * x = b - R * x.
Formula Jacobi: Pentru a actualiza valorile necunoscute în fiecare iterație,
Metoda Jacobi utilizează formula Jacobi, care ia în considerare matricea diagonală D,
matricea restul R, vectorul termenilor liberi b, și valorile necunoscute curente. Formula
Jacobi pentru a calcula noua estimare a vectorului x este:
x(k+1)_i = (b_i - Σ(A_i,j * x_j(k), j != i)) / A_i,i
Aici, x(k)_i reprezintă valoarea variabilei x la iterația k, A_i,j sunt elementele
matricei A, b_i este elementul corespunzător din vectorul termenilor liberi, și x_j(k)
reprezintă valorile variabilelor la iterația k.
Convergența și Limitări: Convergența Metodei Jacobi depinde de proprietățile
matricei A și de valorile inițiale ale vectorului x. Această metodă poate converge la o
soluție precisă, dar poate fi lentă în anumite cazuri sau poate necesita o selecție atentă a
valorilor inițiale. [18, p. 36] De asemenea, nu este garantată convergența pentru toate
tipurile de matrice A.
Sistemul de ecuații liniare pe care Metoda Jacobi încearcă să-l rezolve este de
forma:
A*x=b
Unde:
 A este matricea coeficienților sistemului.
 x este vectorul necunoscut.
 b este vectorul termenilor liberi.
Ideea principală a Metodei Jacobi constă în împărțirea matricei A în două
componente: o matrice diagonală (D) și o matrice restul (R). Acest lucru se face astfel:
A=D+R
Matricea diagonală D conține doar elementele de pe diagonala principală a
matricei A, iar matricea R conține toate celelalte elemente. Astfel, ecuația A * x = b
poate fi rescrisă ca:
(D + R) * x = b
Și putem să izolăm vectorul x astfel:
D*x=b-R*x
Apoi, pentru a găsi soluția sistemului, Metoda Jacobi folosește următorul algoritm
iterativ:
1. Se pornește cu o estimare inițială a vectorului soluție x (de obicei, un vector cu
toate elementele inițializate cu zero sau alte valori).
2. Se aplică formula Jacobi pentru a calcula noul vector x:
x(k+1)_i = (b_i - Σ(A_i,j * x_j(k), j != i)) / A_i,i
Aici, x(k)_i reprezintă valoarea variabilei x la iterația k și A_i,j sunt elementele
matricei A, b_i este elementul corespunzător din vectorul termenilor liberi, iar x_j(k)
reprezintă valorile variabilelor la iterația k.
3. Procesul se repetă pentru un număr predefinit de iterații sau până când se atinge o
anumită precizie.
Metoda Jacobi poate fi utilizată cu succes pentru sistemele de ecuații liniare, dar
este important de menționat că convergența la o soluție corectă poate fi lentă în anumite
cazuri. De asemenea, această metodă poate să nu funcționeze eficient sau să aibă
convergență garantată pentru toate tipurile de matrice A. Prin urmare, este esențial să se
țină cont de particularitățile sistemului atunci când se alege o metodă de rezolvare.
Iată câteva aspecte importante de luat în considerare: [1, 38]
Convergența Lentă: Metoda Jacobi poate avea o convergență lentă în cazul
anumitor sisteme de ecuații liniare. Acest lucru înseamnă că poate fi nevoie de un număr
mare de iterații pentru a se apropia de soluția corectă sau pentru a obține o precizie
satisfăcătoare. Convergența lentă poate fi problematică în aplicații care necesită soluții
rapide sau în cazul sistemelor mari și complexe.
Condiții de Convergență: Convergența Metodei Jacobi depinde de proprietățile
matricei coeficienților A. Aceasta trebuie să fie o matrice bine condiționată și să respecte
anumite criterii de convergență pentru ca metoda să funcționeze eficient. În caz contrar,
poate exista divergență (lipsa convergenței) sau convergență extrem de lentă.
Selectarea Valorilor Inițiale: Alegerea valorilor inițiale pentru vectorul
necunoscut x poate afecta semnificativ performanța Metodei Jacobi. Valorile inițiale pot
influența timpul de convergență sau pot determina dacă metoda converge la o soluție sau
nu.
Eficiență în Comparație cu Alte Metode: Metoda Jacobi poate să nu fie
întotdeauna cea mai eficientă metodă pentru rezolvarea sistemelor de ecuații liniare. În
multe cazuri, alte metode iterative, precum Metoda Gauss-Seidel sau Metoda
suprarelaxării, pot converge mai rapid către soluții precise.
Software și Hardware: Eficiența Metodei Jacobi poate fi influențată de resursele
hardware și software disponibile. În cazul sistemelor masive de ecuații sau a aplicațiilor
care necesită calcule intensive, utilizarea de resurse puternice și paralelizare poate fi
necesară.
Eficiența Metodei Jacobi în rezolvarea sistemelor de ecuații liniare poate fi
influențată semnificativ de resursele hardware și software disponibile. Iată cum aceste
aspecte pot afecta performanța Metodei Jacobi:
Resurse Hardware: [3, p.46]
 Puterea de Calcul: Pentru sisteme mari de ecuații sau aplicații care
necesită calcule intensive, puterea de calcul a hardware-ului poate fi un
factor critic. Cu cât hardware-ul este mai puternic (procesoare mai rapide,
mai multă memorie RAM), cu atât Metoda Jacobi poate fi executată mai
rapid și poate manipula sisteme de ecuații mai mari sau mai complexe.
 Paralelizare: În cazul sistemelor foarte mari, paralelizarea poate fi
esențială pentru a accelera procesul de rezolvare a ecuațiilor. Aceasta
implică utilizarea mai multor nuclee de procesor sau resurse hardware
paralele pentru a efectua simultan calculele, ceea ce poate îmbunătăți
semnificativ performanța.
Resurse Software: [5, p. 77]
 Optimizare Software: Implementarea eficientă a Metodei Jacobi într-un
limbaj de programare și cu o structură de date adecvată poate reduce timpul
necesar pentru rezolvarea sistemelor. Tehnici de optimizare, cum ar fi
utilizarea instrucțiunilor SIMD (Single Instruction, Multiple Data) sau
compilarea cu optimizare, pot îmbunătăți performanța.
 Utilizarea Bibliotecelor de Algebra Liniară: Utilizarea bibliotecelor
specializate pentru algebra liniară, precum BLAS (Basic Linear Algebra
Subprograms) sau LAPACK (Linear Algebra Package), poate aduce
avantaje semnificative. Aceste biblioteci au rutine optimizate pentru diverse
operații matematice și sunt adesea scrise pentru a profita la maxim de
hardware-ul disponibil.
2. Sisteme de Operare și Arhitectură:
 Sistemele de operare și arhitectura hardware pot influența performanța
software-ului. De exemplu, sistemul de operare poate gestiona mai eficient
resursele hardware sau oferi facilități de paralelizare. De asemenea,
arhitectura hardware (x86, ARM, GPU etc.) poate avea un impact asupra
performanței și a opțiunilor de paralelizare disponibile.
În general, pentru a obține cea mai bună performanță posibilă a Metodei Jacobi,
este esențial să se aibă în vedere resursele hardware și software disponibile. Aceasta
poate implica optimizarea codului, utilizarea bibliotecelor specializate, evaluarea
arhitecturii hardware și, în cazurile de rezolvare a sistemelor mari, utilizarea de resurse
puternice și tehnici de paralelizare. Eficiența Metodei Jacobi poate varia semnificativ în
funcție de implementare, de cerințele aplicației și de resursele disponibile, așa că o
abordare personalizată poate fi necesară pentru a obține cele mai bune rezultate.
În concluzie, Metoda Jacobi este o metodă valoroasă pentru rezolvarea sistemelor
de ecuații liniare, dar trebuie utilizată cu atenție și în funcție de natura sistemului. Este
important să se evalueze convergența și eficiența în contextul specific al problemei și,
dacă este necesar, să se considere și alte metode iterative sau metode directe pentru a
găsi soluții mai rapide și mai precise.
2.1.3.Metoda Gauss-Seidel
Metoda Gauss-Seidel este o altă tehnică iterativă importantă utilizată pentru
rezolvarea sistemelor de ecuații liniare. Asemenea Metodei Jacobi, Metoda Gauss-Seidel
are ca obiectiv găsirea soluțiilor aproximative pentru sistemele de ecuații liniare, dar
aceasta utilizează o abordare mai rafinată și convergența sa poate fi mai rapidă în multe
cazuri. Numele metodei provine de la matematicienii Carl Friedrich Gauss și Philipp
Ludwig von Seidel.
Iată cum funcționează Metoda Gauss-Seidel: [9, p. 77]
1. Sistemul de Ecuații Liniare: Metoda Gauss-Seidel se aplică la un sistem de
ecuații liniare de forma:
A*x=b
 A este matricea coeficienților sistemului.
 x este vectorul necunoscut.
 b este vectorul termenilor liberi.
2. Descompunerea Matricei A: La fel ca Metoda Jacobi, Metoda Gauss-Seidel
descompune matricea coeficienților A într-o matrice diagonală (D), o matrice sub-
diagonală (L - cu elementele de sub diagonala principală), și o matrice deasupra-
diagonală (U - cu elementele deasupra diagonalei principale). Astfel, ecuația
originală poate fi rescrisă sub forma:
(D - L) * x = b - U * x
Matricea D conține doar elementele de pe diagonala principală a matricei A,
matricea L conține elementele de sub diagonala principală, iar matricea U conține
elementele de deasupra diagonalei principale.
3. Formula Gauss-Seidel: Procesul iterativ al Metodei Gauss-Seidel actualizează
valorile necunoscute din vectorul x folosind formula Gauss-Seidel:
x_i(k+1) = (1 / A_i,i) * (b_i - Σ(A_i,j * x_j(k+1), j < i) - Σ(A_i,j * x_j(k), j > i))
Aici, x_i(k+1) reprezintă noua estimare a variabilei x_i la iterația k+1, A_i,i este
elementul de pe diagonala principală al matricei A, iar cele două sume acoperă
elementele sub și deasupra diagonalei principale. Metoda Gauss-Seidel calculează
valoarea estimată x_i(k+1) luând în considerare valorile actuale ale celorlalte
necunoscute, inclusiv x_i(k+1) însuși (valoarea estimată la iterația curentă).
4. Convergența și Eficiența: Metoda Gauss-Seidel poate converge mai rapid decât
Metoda Jacobi pentru anumite tipuri de matrice A. Cu toate acestea, convergența
depinde de natura matricei și de valorile inițiale ale vectorului x. În cazul unor
matrice bine condiționate și cu valori inițiale adecvate, Metoda Gauss-Seidel
poate să furnizeze soluții precise mai rapid.
5. Utilizare și Aplicații: Metoda Gauss-Seidel este folosită în domenii precum
analiza circuitelor electrice, mecanica fluidelor, probleme de valori proprii și alte
aplicații științifice și tehnice.
Metoda Gauss-Seidel este o metodă iterativă eficientă pentru rezolvarea sistemelor
de ecuații liniare, mai ales în comparație cu Metoda Jacobi în multe cazuri. [2, p. 36] Cu
toate acestea, precizia și convergența depind de natura sistemului și de valorile inițiale,
iar, în unele cazuri, poate fi necesară o selecție atentă a metodei iterative în funcție de
particularitățile problemei.
Metoda Gauss-Seidel este cu adevărat o componentă esențială în domeniul
matematicii aplicate și algebrei liniare și este folosită pe scară largă pentru rezolvarea
unor probleme complexe din numeroase domenii științifice și inginerești. Iată câteva
motive pentru care această metodă rămâne atât de relevantă și folositoare:
Versatilitate: Metoda Gauss-Seidel poate fi aplicată la o gamă variată de
probleme care pot fi reduse la sisteme de ecuații liniare. Aceasta o face utilă în domenii
precum fizica, ingineria structurală, mecanica fluidelor, analiza circuitelor electrice,
știința computerelor și multe altele.
Iată mai multe despre versatilitatea acestei metode: [4, p. 63]
Fizică și Inginerie Structurală: În domeniile fizicii și ingineriei structurală,
Metoda Gauss-Seidel este adesea folosită pentru a rezolva probleme legate de transferul
de căldură, electrostatică, dinamica fluidelor și analiza tensiunilor și deformărilor în
structuri complexe. Sistemele de ecuații liniare pot reprezenta interacțiunile între
elementele unui sistem fizic sau structural și permit obținerea soluțiilor numerice pentru
a înțelege comportamentul acestor sisteme.
Stokes pentru a simula mișcarea fluidelor poate implica sisteme de ecuații liniare
de dimensiuni mari. Metoda Gauss-Seidel este utilă pentru obținerea soluțiilor
aproximative necesare pentru simulări numerice ale fenomenelor complexe legate de
fluide, cum ar fi curgerea apei sau aerului în domenii variate, de la ingineria aerospațială
la geofizică.
Analiza Circuitelor Electrice: În domeniul analizei circuitelor electrice, Metoda
Gauss-Seidel este utilizată pentru a găsi soluțiile de tensiune și curent în circuite
complexe. Aceasta este esențială pentru proiectarea și analiza circuitelor electronice și
electrice, inclusiv în domenii precum electronică, comunicații și inginerie electrică.
Știința Computerelor: Metoda Gauss-Seidel are aplicații în domeniul științei
computerelor, în special în rezolvarea problemelor legate de grafuri și sisteme de ecuații
care pot apărea în algoritmi și în teoria rețelelor.
Simulările Numerice: Simulările numerice sunt utilizate într-o gamă largă de
domenii, de la știința materialelor până la biologie și economie. Metoda Gauss-Seidel
poate fi folosită pentru a obține soluții aproximative în aceste simulări, permitând
cercetătorilor să modeleze și să înțeleagă fenomene complexe.
Știința și Ingineria Nucleară: În industria nucleară, Metoda Gauss-Seidel poate
fi aplicată pentru a rezolva ecuațiile transportului neutronilor, care sunt esențiale în
proiectarea reactorilor nucleari și în analiza criticațiilor.
Acestea sunt doar câteva exemple ale domeniilor și aplicațiilor în care Metoda
Gauss-Seidel poate fi utilizată cu succes. Versatilitatea sa derivă din capacitatea sa de a
rezolva sisteme de ecuații liniare, ceea ce este o problemă comună și fundamentală în
matematica aplicată și știința calculului numeric.
Este o unealtă valoroasă pentru cercetători, ingineri și profesioniști din numeroase
discipline care se confruntă cu probleme complexe ce pot fi modelate sub forma unor
ecuații liniare.
Eficiență în Probleme Complexe: În multe cazuri, sistemele de ecuații liniare
care apar în aplicații practice sunt mari și complexe. Metoda Gauss-Seidel se remarcă
prin abilitatea sa de a convergența relativ rapid la soluții precise în astfel de situații. [8,
p. 38] Acest aspect este deosebit de important în simulările numerice și analizele
matematice.
Soluții Apropiate în Timp Real: În domenii precum grafica computerizată sau
simularea realității virtuale, Metoda Gauss-Seidel poate oferi soluții apropiate de soluția
corectă în timp real. Acest lucru este crucial pentru generarea graficelor și pentru
simulările interactive.
Potențial de Paralelizare: Metoda Gauss-Seidel are un grad ridicat de
paralelizare, ceea ce înseamnă că poate fi accelerată prin utilizarea de resurse hardware
paralele, cum ar fi procesoarele multi-nucleu sau procesoarele grafice (GPU). Aceasta
este o caracteristică valoroasă în era calculului paralel.
Sursă de Învățare și Înțelegere: Metoda Gauss-Seidel reprezintă un concept
fundamental în domeniul matematicii și algebrei liniare. Este adesea utilizată pentru a
înțelege și a ilustra principii matematice în cursurile de matematică și în învățarea
asistată de calculator. Acesta poate servi ca o introducere la tehnici iterative în
rezolvarea ecuațiilor liniare.
În concluzie, Metoda Gauss-Seidel continuă să fie o unealtă valoroasă în arsenalul
matematicii aplicate și algebrei liniare. Versatilitatea sa, eficiența în probleme complexe,
potențialul de paralelizare și rolul său ca sursă de învățare și înțelegere îl fac esențial în
cercetarea științifică, în inginerie și în dezvoltarea tehnologiei. Acesta este un exemplu
clar al modului în care conceptele matematice pot avea un impact semnificativ asupra
lumii reale.

2.1.4.Alte metode și comparații


În rezolvarea ecuațiilor liniare, există mai multe metode disponibile, fiecare cu
avantaje și dezavantaje specifice. Alegerea metodei potrivite depinde de natura
sistemului, precizia necesară și resursele disponibile. Iată câteva dintre celelalte metode
de rezolvare a ecuațiilor liniare și comparații între ele: [5, p. 56]
1. Metoda Factorizării LU: Această metodă implică factorizarea matricei
coeficienților în două matrice, una inferior triunghiulară (L) și una superior
triunghiulară (U). Aceasta poate fi folosită pentru a rezolva mai multe sisteme cu
aceeași matrice coeficient, ceea ce poate fi eficient din punct de vedere
computațional.
Această descompunere matriceală facilitează rezolvarea sistemului, iar metoda
poate fi folosită pentru a rezolva mai multe sisteme care au aceeași matrice coeficient.
Iată mai multe detalii despre această metodă:
Factorizarea LU: Factorizarea matricei coeficienților A în matricele L și U se
face astfel încât A poate fi scrisă ca produsul acestor două matrice:
A=L*U
 Matricea L este inferior triunghiulară, adică toate elementele deasupra
diagonalei principale sunt zero, iar elementele de pe diagonala principală și
sub aceasta sunt diferite de zero.
 Matricea U este superior triunghiulară, ceea ce înseamnă că toate
elementele sub diagonala principală sunt zero, iar elementele de pe
diagonala principală și deasupra acesteia sunt diferite de zero.
Rezolvarea Sistemului: După factorizarea matricei A în L și U, rezolvarea
sistemului A * x = b devine un proces mai ușor. Pentru a obține soluția, se pot efectua
două etape separate:
a. Rezolvarea Sistemului L * y = b: Se rezolvă un sistem inferior triunghiular L
* y = b pentru a obține vectorul y. Acest pas se numește "substituție înainte".
b. Rezolvarea Sistemului U * x = y: Se rezolvă un sistem superior triunghiular U
* x = y pentru a obține soluția finală x. Acest pas se numește "substituție înapoi".
Eficiență și Utilizare Recurentă: Una dintre marile avantaje ale Metodei
Factorizării LU este că după factorizarea inițială a matricei A, puteți rezolva eficient
oricâte sisteme cu aceeași matrice coeficient A, schimbând doar vectorul termenilor
liberi b. Această caracteristică face metoda eficientă din punct de vedere computațional
atunci când trebuie să se rezolve mai multe sisteme cu aceeași structură de matrice A.
Stabilitate Numerică: Metoda Factorizării LU este numeric stabilă și poate fi
aplicată la o gamă variată de probleme. Cu toate acestea, trebuie să se aibă grijă la
calculul matricei L și U, deoarece erorile mici pot fi propagate și pot afecta soluția.
Limitări: Metoda Factorizării LU nu este potrivită pentru matricele care au factori
de multiplicare foarte mici (matrice slab condiționate), deoarece acest lucru poate duce
la amplificarea erorilor numerice. [8, p.63] În astfel de cazuri, pot fi necesare alte
metode precum factorizarea Cholesky sau metode iterative.
Metoda Factorizării LU este larg utilizată în analiza numerică, în programarea
liniară, în metodele de rezolvare a ecuațiilor diferențiale parțiale și în multe alte domenii.
Ea oferă o modalitate eficientă de a rezolva sisteme de ecuații liniare cu aceeași matrice
coeficient, economisind timp și resurse computaționale.
2. Metoda Gradientului Conjugat: Această metodă este folosită în special pentru
sisteme mari și rare cu matrice simetrice și pozitive definite. Este eficientă în
termeni de memorie și se concentrează pe minimizarea erorilor, ceea ce o face
potrivită pentru probleme de optimizare.
Această metodă este deosebit de eficientă atunci când se lucrează cu matrice
simetrice și pozitive definite, iar obiectivul său este minimizarea erorilor. Iată mai multe
detalii despre această metodă:
Matrice Simetrică și Pozitiv Definită: Metoda Gradientului Conjugat este mai
potrivită pentru sistemele de ecuații liniare care au matrice coeficient simetrice și pozitiv
definite. O matrice este simetrică dacă este egală cu transpusa sa, iar este pozitiv definită
dacă toate valorile proprii sunt pozitive. [2, p. 75] Această caracteristică a matricei
permite utilizarea unui algoritm eficient de gradient conjugat pentru a găsi soluția.
Minimizarea Erorilor: Obiectivul principal al Metodei Gradientului Conjugat
este de a minimiza eroarea, adică diferența dintre soluția calculată și soluția reală. Acest
lucru este deosebit de important în aplicațiile care necesită precizie înalte, cum ar fi
simulările fizice sau problemele de optimizare.
Iterații Conjugate: Metoda Gradientului Conjugat folosește iterații conjugate,
ceea ce înseamnă că fiecare pas al algoritmului se face astfel încât direcțiile de căutare să
fie conjugate în raport cu o anumită metrică (de exemplu, metrica matricei coeficient).
Această abordare reduce numărul de iterații necesare pentru a obține o soluție precisă.
Eficiență în Termeni de Memorie: Pentru sistemele mari și rare, Metoda
Gradientului Conjugat se evidențiază prin faptul că nu necesită stocarea întregii matrice
coeficient în memorie. În schimb, este suficient să se calculeze produsele matricei cu un
vector, ceea ce economisește memorie.
Aplicații în Optimizare: Pe lângă rezolvarea sistemelor de ecuații liniare, Metoda
Gradientului Conjugat este adesea utilizată pentru a rezolva probleme de optimizare,
cum ar fi minimizarea funcțiilor cost sau a funcțiilor de energie în aplicațiile științifice și
inginerești. Aceasta poate fi aplicată pentru a găsi punctele de minim sau maxim în
aceste funcții.
Limitări: Cu toate avantajele sale, Metoda Gradientului Conjugat are și limitări.
Nu este potrivită pentru toate tipurile de matrice coeficient, și anume cele care nu sunt
simetrice sau pozitiv definite. În astfel de cazuri, pot fi necesare alte metode de rezolvare
a ecuațiilor liniare.
Metoda Gradientului Conjugat reprezintă o unealtă valoroasă în analiza numerică
și în domeniul optimizării. Ea oferă un echilibru între eficiența în termeni de memorie,
precizie și viteza de convergență, ceea ce o face potrivită pentru o gamă largă de aplicații
științifice și inginerești.
Metoda Factorizării LU și Metoda Gradientului Conjugat sunt două tehnici
diferite pentru rezolvarea sistemelor de ecuații liniare, iar alegerea între acestea depinde
de natura specifică a problemei și a matricei coeficient. Iată o comparație între cele două
metode: [9, p. 36]
1. Tip de Matrice:
 Factorizarea LU: Metoda Factorizării LU este potrivită pentru matricele
coeficiente care sunt simetrice sau nesimetrice, dense sau rare. Cu toate
acestea, este mai eficientă pentru matricele dense.
 Gradient Conjugat: Metoda Gradientului Conjugat este deosebit de
eficientă atunci când se lucrează cu matrice simetrice și pozitiv definite.
Această metodă nu este optimă pentru matricele nesimetrice sau matricele
rare.
2. Eficiența în Termeni de Memorie:
 Factorizarea LU: Această metodă necesită stocarea integrală a matricei L
și U, ceea ce poate duce la un consum semnificativ de memorie, în special
pentru matricele dense.
 Gradient Conjugat: Metoda Gradientului Conjugat este mai eficientă în
termeni de memorie, deoarece nu necesită stocarea matricei coeficiente în
memorie și se bazează pe produsele matricei cu un vector.
3. Precizie:
 Factorizarea LU: Metoda Factorizării LU oferă soluții exacte și precise
pentru sistemele de ecuații liniare. Este numeric stabilă și nu suferă de erori
de acumulare în timpul iterațiilor.
 Gradient Conjugat: Metoda Gradientului Conjugat se concentrează pe
minimizarea erorilor și oferă soluții precise în aplicații care necesită
controlul precis al erorilor. Cu toate acestea, în anumite cazuri, poate
necesita mai multe iterații pentru a atinge precizia dorită.
4. Număr de Iterații:
 Factorizarea LU: Metoda Factorizării LU rezolvă sistemul într-un număr
finit de pași, dar numărul de pași nu depinde de matrice. Totuși, poate fi
mai ineficientă în ceea ce privește timpul de calcul pentru matricele mari.
 Gradient Conjugat: Numărul de iterații necesare pentru convergența la o
soluție precisă cu Metoda Gradientului Conjugat depinde de numărul de
condiționare al matricei. Cu toate acestea, este potrivită pentru sisteme
mari, în special pentru matricele rare.
5. Reutilizare:
 Factorizarea LU: După factorizarea inițială a matricei A, este posibil să se
rezolve multiple sisteme cu aceeași matrice coeficient, făcând-o eficientă
pentru utilizarea repetată.
 Gradient Conjugat: Metoda Gradientului Conjugat este mai potrivită
pentru rezolvarea unui singur sistem și nu oferă aceeași reutilizare eficientă.
În concluzie, alegerea între Metoda Factorizării LU și Metoda Gradientului
Conjugat depinde de caracteristicile matricei coeficiente, precizia necesară și resursele
disponibile. Factorizarea LU este o opțiune solidă pentru matricele dense sau rare care
nu sunt simetrice, în timp ce Metoda Gradientului Conjugat se potrivește excelent pentru
matricele simetrice și pozitiv definite. Este important să analizați cu atenție cerințele
problemei pentru a selecta metoda cea mai potrivită.
Alegerea metodei depinde de specificul problemei, de cerințele de precizie și de
resursele disponibile. Uneori, o combinație de metode poate fi cea mai eficientă,
utilizând metode directe pentru prelucrarea preliminară și metode iterative pentru
obținerea soluțiilor finale. Este important să se analizeze cu atenție caracteristicile
sistemului pentru a alege metoda potrivită pentru o anumită aplicație.

2.2.Metode de rezolvare a ecuațiilor neliniare


Rezolvarea ecuațiilor neliniare reprezintă o provocare fundamentală în matematică
și în știința calculului numeric. Ecuațiile neliniare pot apărea într-o gamă largă de
aplicații, de la știința materialelor la economie și inginerie, și pot avea o diversitate de
forme și complicații. O ecuație neliniară este o ecuație în care cel puțin una dintre
funcțiile implicate nu este liniară, ceea ce înseamnă că nu poate fi rezolvată simplu prin
aplicarea metodelor de rezolvare a ecuațiilor liniare.
Spre deosebire de ecuațiile liniare, care au soluții deterministe și exacte, ecuațiile
neliniare adesea nu au soluții analitice simple sau pot avea mai multe soluții, inclusiv
soluții complexe. Prin urmare, rezolvarea lor necesită abordări numerice și metode
iterative care să aproximeze soluția.
Metodele de rezolvare a ecuațiilor neliniare au apărut ca instrumente esențiale
pentru cercetători, ingineri și oameni de știință care se confruntă cu astfel de ecuații în
domeniile lor de lucru. [5, p. 73] Aceste metode au evoluat de-a lungul timpului și
acoperă o gamă largă de tehnici, cum ar fi metodele de punct fix, metodele de Newton-
Raphson, metodele secante, și altele.
În această serie de articole, vom explora metodele de rezolvare a ecuațiilor
neliniare, vom discuta principiile de bază ale acestor metode, și vom analiza avantajele
și limitările lor. Vom explora, de asemenea, aplicațiile practice ale acestor tehnici în
domenii variate, de la știința computerelor la știința materialelor, ilustrând astfel
importanța lor în cercetare și dezvoltare.

2.2.1.Metoda iterațiilor
Metoda iterațiilor (sau metoda iterativă) este o tehnică fundamentală în rezolvarea
ecuațiilor neliniare. Această metodă se bazează pe principiul de a găsi soluții
aproximative la o ecuație prin repetarea unor iterații succesive, adesea pornind de la o
estimare inițială. Scopul este să se obțină o secvență de valori care converg către soluția
ecuației neliniare.
Metoda iterațiilor se aplică în următorii pași: [17, p. 37]
1. Estimare Inițială: Se furnizează o estimare inițială a soluției ecuației. Această
estimare poate fi obținută din cunoașterea problemei sau prin aproximare.
Estimarea inițială reprezintă primul pas esențial în aplicarea metodei iterațiilor
pentru rezolvarea ecuațiilor neliniare. Alegerea unei bune estimări inițiale poate
influența semnificativ convergența și eficiența întregului proces iterativ. Iată mai multe
detalii despre importanța estimării inițiale:
Importanța Estimării Inițiale:
 Estimarea inițială servește ca punct de plecare pentru secvența de iterații
succesive. O estimare inițială incorectă sau nepotrivită poate duce la
convergență lentă sau la divergență (adica, îndepărtarea de la soluție).
 Estimarea inițială ar trebui să fie cât mai aproape posibil de valoarea reală a
soluției pentru a asigura convergența rapidă. Cu toate acestea, în practică,
valorile precise ale soluțiilor pot fi necunoscute, iar estimarea inițială este
adesea obținută prin experimentare sau prin alte mijloace aproximative.
Metode pentru Estimare Inițială:
 Metode grafice: În unele cazuri, o reprezentare grafică a funcției poate ajuta
la estimarea inițială a soluției. Se caută punctele în care funcția trece prin
zero sau atinge un anumit prag.
 Cunoașterea problemei: În contextul unor probleme specifice, cunoașterea
detaliată a fenomenelor sau a relațiilor matematice poate oferi indicii
valoroase pentru alegerea unei estimări inițiale adecvate.
 Aproximare numerică: Uneori, se pot folosi alte metode numerice pentru a
obține o estimare inițială. De exemplu, metoda metodei Newton-Raphson
poate oferi o estimare inițială pentru soluția unei ecuații.
Iterații Multiple: [19, p. 28]
 Unele metode iterații, cum ar fi metoda Newton-Raphson, necesită iterații
multiple pentru a ajunge la soluție. Estimarea inițială poate influența
numărul de iterații necesare și poate afecta stabilitatea algoritmului.
Alegerea Prudentă a Estimării Inițiale:
 Este important să se experimenteze cu diferite estimări inițiale pentru a
determina cea mai potrivită pentru problema dată. Uneori, poate fi necesar
să se ajusteze estimările inițiale pe măsură ce iterațiile progresează.
 Pentru ecuații cu mai multe soluții sau pentru ecuații cu soluții complexe,
alegerea estimării inițiale poate deveni mai complexă.
În concluzie, estimarea inițială reprezintă o parte crucială a procesului de
rezolvare a ecuațiilor neliniare prin metoda iterațiilor. O estimare inițială adecvată poate
accelera convergența și poate asigura succesul metodei, în timp ce o estimare inițială
nepotrivită poate duce la dificultăți în obținerea unei soluții precise. Este important să se
abordeze cu grijă alegerea estimării inițiale în rezolvarea ecuațiilor neliniare.
2. Iterații: Se folosește ecuația neliniară pentru a calcula o nouă estimare a soluției.
Aceasta devine estimarea pentru următoarea iterație. Procesul se repetă până când
soluția converge la un anumit grad de precizie.
Procesul de iterații este inima metodei iterațiilor utilizate pentru rezolvarea
ecuațiilor neliniare. Acesta implică repetarea unor pași succesivi pentru a găsi o estimare
tot mai bună a soluției ecuației. Iată mai multe detalii despre această etapă a procesului
iterativ:
Iterații Succesive: După ce a fost aleasă o estimare inițială a soluției, prima
iterație este inițiată prin aplicarea ecuației neliniare asupra estimării inițiale. Rezultatul
acestui calcul devine estimarea pentru următoarea iterație.
Funcția de Iterație: Funcția care calculează noua estimare poate varia în funcție
de natura ecuației neliniare și de metoda specifică folosită. Metode comune de iterare
includ metoda secantei, metoda Newton-Raphson, metoda punctului fix și multe altele.
Aceste metode determină cum se face trecerea de la estimarea curentă la cea următoare.
Criterii de Oprire: Pe măsură ce se obțin estimări succesive, se aplică criterii de
oprire pentru a determina când să se încheie procesul iterativ. Aceste criterii pot varia,
dar de obicei includ:
 Verificarea diferenței dintre estimarea curentă și cea anterioară. Dacă
această diferență este suficient de mică, procesul se oprește.
 Limitarea numărului de iterații. Dacă soluția nu converge într-un număr
maxim de iterații, se încheie procesul.
Convergența: Scopul principal al iterațiilor este de a asigura convergența la o
soluție. Convergența înseamnă că estimările succesive se apropie tot mai mult de soluția
reală a ecuației. Aceasta este o măsură a cât de repede sau de eficient metoda găsește o
soluție.
Număr Variabil de Iterații: Numărul de iterații necesare poate varia în funcție
de natura ecuației și de alegerea estimării inițiale. Unele ecuații pot converte rapid, în
timp ce altele pot necesita mai mult timp pentru a ajunge la o soluție precisă.
Ajustarea Estimării: În timpul iterațiilor, estimarea inițială poate fi ajustată
pentru a îmbunătăți convergența sau pentru a evita divergența. Alegerea unei estimări
inițiale bune poate minimiza necesitatea ajustării.
Iterațiile sunt un aspect fundamental în metoda iterațiilor și sunt esențiale pentru
găsirea soluțiilor ecuațiilor neliniare. Procesul de repetare a calculului estimărilor
permite găsirea soluției dorite sau a unei aproximări precise. [18, p. 37] Cu toate acestea,
este important să se acorde atenție convergenței și criteriilor de oprire pentru a obține
rezultate fiabile.
3. Criterii de Oprire: Se stabilesc criterii de oprire, cum ar fi diferența dintre
estimarea curentă și cea anterioară. Dacă diferența este suficient de mică sau dacă
un număr maxim de iterații a fost atins, se încheie procesul.
Criteriile de oprire reprezintă un aspect crucial al procesului iterativ în rezolvarea
ecuațiilor neliniare prin metoda iterațiilor. Aceste criterii determină momentul în care
procesul iterativ se încheie, indicând că s-a obținut o soluție suficient de precisă sau că
numărul maxim de iterații a fost atins. Iată mai multe despre importanța și aplicarea
criteriilor de oprire: [16, p. 27]
Importanța Criteriilor de Oprire:
 Criteriile de oprire sunt esențiale pentru a evita continuarea procesului
iterativ indefinit sau pentru a economisi resurse computaționale. Ele asigură
că metoda se oprește atunci când soluția a ajuns la un nivel suficient de
precizie.
 Alegerea criteriilor de oprire adecvate poate influența durata și eficiența
procesului. Criterii prea stricte pot determina oprirea prematură, în timp ce
criterii prea relaxate pot duce la procese iterative lungi și ineficiente.
Tipuri de Criterii de Oprire:
 Diferență între estimările succesive: Acesta este un criteriu comun de
oprire. Procesul iterativ se oprește atunci când diferența dintre estimarea
curentă și cea anterioară este suficient de mică, adică când estimările
converge către o valoare constantă.
 Limitare numerică: Se poate stabili un număr maxim de iterații, astfel încât
procesul să se oprească după atingerea acestui număr. Aceasta este o
modalitate de a preveni iterațiile infinite în cazurile în care soluția nu
converge rapid.
 Toleranță: Se poate specifica o toleranță, adică o valoare numerică mică
care indică cât de aproape trebuie să fie estimarea curentă de soluția finală.
Procesul se oprește atunci când estimarea se încadrează în această toleranță.
Alegerea Criteriilor de Oprire: [16, p. 45]
 Alegerea criteriilor de oprire depinde de specificul problemei și de nivelul
de precizie necesar. De obicei, este recomandat să se utilizeze mai multe
criterii pentru a asigura convergența și acuratețea.
 Criteriile de oprire pot fi ajustate în funcție de experiența acumulată în
rezolvarea ecuației. În unele cazuri, poate fi necesară o toleranță foarte mică
pentru a obține rezultate precise, în timp ce în altele se poate permite o
toleranță mai mare pentru a economisi timp de calcul.
Evaluarea Performanței:
 După încheierea procesului iterativ, este important să se evalueze
rezultatele obținute în funcție de criteriile de oprire. Aceasta poate include
verificarea preciziei soluției și a numărului de iterații necesare.
Criteriile de oprire reprezintă un instrument esențial în rezolvarea ecuațiilor
neliniare, deoarece asigură că metoda se oprește într-un mod controlat și oferă soluții
fiabile. Alegerea criteriilor potrivite și gestionarea lor corespunzătoare este o parte
crucială a procesului de calcul numeric.
4. Convergența: Este important să se asigure că metoda converge la o soluție.
Convergența poate depinde de alegerea estimării inițiale, precum și de
proprietățile ecuației neliniare.
De ce Metoda Iterațiilor este importantă:
 Flexibilitate: Această metodă poate fi aplicată la o gamă largă de ecuații neliniare
și este adesea folosită pentru ecuații pentru care nu există o soluție analitică sau
pentru care soluția este dificil de obținut.
 Convergență Controlată: Metoda iterațiilor permite controlul convergenței prin
monitorizarea criteriilor de oprire. Cu cât sunt mai stricte criteriile, cu atât se
obține o soluție mai precisă.
 Aplicații Variate: Această metodă este utilizată într-o varietate de domenii, cum
ar fi ingineria, fizica, economia, știința computerelor, analiza datelor și multe
altele. Este o unealtă fundamentală în cercetare și dezvoltare.
 Resurse Computaționale Reduse: Metoda iterațiilor poate necesita mai puține
resurse computaționale decât alte metode mai complexe, precum metodele bazate
pe derivări sau metodele directe.
Cu toate acestea, trebuie remarcat faptul că succesul Metodei Iterațiilor depinde
adesea de alegerea unei estimări inițiale adecvate și de proprietățile ecuației neliniare. În
cazul ecuațiilor cu multiple soluții sau puncte de minim/maxim, alegerea inițială poate
afecta convergența. Prin urmare, în practică, este important să se experimenteze cu
diverse estimări inițiale pentru a asigura succesul metodei.

2.2.2.Metoda lui Newton-Raphson


Metoda lui Newton-Raphson, numită și Metoda Newton sau Metoda tangentă, este
o tehnică iterativă puternică folosită pentru a găsi soluții ale ecuațiilor algebrice și
ecuațiilor neliniare. Această metodă se bazează pe ideea de a aproxima o soluție a unei
ecuații prin intermediul tangentei la curba funcției în punctul curent. Metoda lui
Newton-Raphson este eficientă și converge rapid către soluție, atunci când este
aplicată corect. Iată cum funcționează:
1. Formularea Metodei: Pentru a găsi o soluție a ecuației f(x)=0f(x)=0, se începe cu
o estimare inițială a soluției, notată ca x0. Metoda lui Newton-Raphson utilizează
formula următoare pentru a obține o estimare mai precisă a soluției: [15, p. 46]
xn+1=xn-f(xn)/f(xn)
 xn+1 este noua estimare a soluției.
 xn este estimarea curentă a soluției.
 f(xn) este valoarea funcției la estimarea curentă.
 f(xn) este derivata funcției în punctul curent.
2. Iterații Succesive: Procesul continuă cu repetarea acestei formule, astfel încât
fiecare nouă estimare este calculată pe baza celei anterioare. Procesul iterativ este
repetat până când estimarea converge la o valoare suficient de apropiată de soluție
sau până când se atinge un număr maxim de iterații.
3. Convergență Rapidă: Metoda lui Newton-Raphson are tendința de a converge
rapid către soluție atunci când soluția este apropiată de estimarea inițială. Cu toate
acestea, pentru a asigura convergența, derivata funcției f′(x) trebuie să fie definită
și diferită de zero în intervalul de interes. Dacă derivata este zero sau prea mică,
metoda poate diverge.
Convergența rapidă este unul dintre aspectele definitorii ale Metodei lui Newton-
Raphson și este o caracteristică dorită, deoarece permite obținerea soluției cu un număr
relativ mic de iterații atunci când soluția se află aproape de estimarea inițială. Cu toate
acestea, convergența depinde de anumite condiții și limitări ale metodei:
Condiția Derivatei Non-Nule: Pentru ca Metoda lui Newton-Raphson să
converge, derivata funcției f′(x) trebuie să fie definită în intervalul de interes și să fie
diferită de zero în apropierea soluției. [10, p. 25] Acest lucru este esențial pentru ca
tangentă la curba funcției să nu fie orizontală, ceea ce ar duce la o divergență.
Puncte de Inflexiune sau Derivată Aproape de Zero: În cazul în care funcția
are puncte de inflexiune sau prezintă porțiuni cu derivata foarte mică în apropierea
soluției, Metoda lui Newton-Raphson poate întâmpina dificultăți. Acest lucru se
datorează faptului că tangenta la funcție poate deveni orizontală sau aproape orizontală,
ceea ce poate duce la divergență sau la convergență foarte lentă.
Soluții Multiple sau Rădăcini Duble: Metoda poate avea dificultăți în găsirea
tuturor soluțiilor atunci când ecuația are rădăcini multiple sau soluții duble. În astfel de
cazuri, metoda poate converge doar la o singură rădăcină, iar celelalte rădăcini pot
rămâne neidentificate.
Rapoarte de Convergență Diferite: Rata de convergență a Metodei lui Newton-
Raphson poate varia în funcție de apropierea de soluție. În general, când soluția este
foarte aproape de estimarea inițială, convergența este rapidă, dar pe măsură ce estimarea
inițială este mai departe de soluție, numărul de iterații necesare pentru a atinge
convergența poate crește semnificativ.
Adaptare la Specificul Problemei: În practică, este important să se înțeleagă
natura funcției și să se adapteze Metoda lui Newton-Raphson la specificul problemei.
Acest lucru poate implica alegerea cu grijă a estimării inițiale, monitorizarea divergenței
potențiale și ajustarea metodei pentru a asigura convergența.
Cu toate aceste limitări, Metoda lui Newton-Raphson rămâne una dintre cele mai
eficiente metode pentru rezolvarea ecuațiilor neliniare atunci când condițiile necesare de
convergență sunt îndeplinite. Cu o alegere adecvată a estimării inițiale și cu înțelegerea
atentă a funcției, această metodă poate fi un instrument puternic în calculul numeric și în
rezolvarea problemelor științifice și inginerie.
4. Alegerea Estimării Inițiale: Alegerea unei estimări inițiale adecvate este
esențială. O estimare inițială incorectă poate duce la divergență. În practică,
pentru a găsi o estimare bună, se pot utiliza metode precum metoda bisecției
pentru a restrânge intervalul de căutare înainte de a aplica Metoda Newton-
Raphson.
Iată mai multe despre importanța și strategiile de alegere a estimării inițiale: [13,
p. 37]
Importanța Estimării Inițiale:
 Estimarea inițială reprezintă punctul de plecare al Metodei lui Newton-
Raphson. Aceasta influențează direcția și viteza convergenței către soluție.
 O estimare inițială apropiată de soluție are șanse mai mari de a duce la
convergență rapidă. În schimb, o estimare inițială departe de soluție poate
duce la divergență sau la necesitatea unui număr mare de iterații.
Metode de Alegere a Estimării Inițiale:
 Metoda Bisecției: O abordare comună este să se folosească metoda
bisecției pentru a restrânge intervalul în care se crede că se află soluția. Prin
împărțirea intervalului inițial în subintervale mai mici, se poate obține o
estimare inițială mai precisă.
 Cunoștințe Prealabile: Dacă se cunosc caracteristicile ecuației sau ale
funcției (cum ar fi intervalele în care se găsesc rădăcinile), aceste cunoștințe
pot servi ca bază pentru alegerea unei estimări inițiale.
 Estimări Apropiate de Soluție: Dacă se poate face o estimare apropiată de
soluție pe baza intuiției sau a cunoștințelor anterioare, acest lucru poate
reduce semnificativ numărul de iterații necesare pentru convergență.
Iterații și Ajustări: Chiar dacă estimarea inițială nu este perfectă, procesul
iterativ permite ajustarea estimării către soluție pe măsură ce se fac mai multe iterații.
[17, p. 36] Cu toate acestea, alegerea unei estimări inițiale bune poate îmbunătăți
semnificativ eficiența metodei și poate preveni divergența.
Experiența și Testarea: În practică, este adesea necesar să se experimenteze cu
diferite estimări inițiale și să se testeze convergența pentru a găsi cea mai potrivită
estimare. Acest lucru poate fi realizat prin intermediul calculului numeric sau al
software-urilor specializate.
Adaptarea la Necesități Specifice: Alegerea estimării inițiale depinde de
contextul specific al problemei. De exemplu, în probleme de optimizare, estimarea
inițială poate fi alesă pentru a maximiza sau a minimiza funcția, în funcție de obiectivul
problemei.
Alegerea unei estimări inițiale adecvate este o parte importantă a procesului de
rezolvare a ecuațiilor folosind Metoda lui Newton-Raphson. O estimare inițială bună
poate reduce semnificativ numărul de iterații necesare pentru a obține o soluție precisă și
poate asigura convergența. În practică, abordarea poate varia în funcție de complexitatea
ecuației și de cunoștințele disponibile despre problemă.
5. Limitări: Metoda lui Newton-Raphson nu garantează întotdeauna convergența și
poate prezenta probleme în cazul funcțiilor cu multe rădăcini sau cu rădăcini
multiple. În astfel de situații, pot fi necesare adaptări sau alte metode.
Metoda lui Newton-Raphson este o metodă puternică și eficientă pentru
rezolvarea ecuațiilor neliniare, dar are și anumite limitări și cazuri în care poate
întâmpina dificultăți. Iată mai multe detalii despre aceste limitări: [15, p. 26]
Convergența Problemată: Metoda lui Newton-Raphson nu garantează
întotdeauna convergența la o soluție. De fapt, în anumite cazuri, poate exista divergență,
adică estimările pot să se îndepărteze de la soluție, în loc să se apropie. Aceasta se
întâmplă, în general, atunci când funcția are caracteristici speciale, cum ar fi puncte de
inflexiune sau derivata aproape de zero în vecinătatea estimării inițiale.
Rădăcini Multiple: Atunci când ecuația are rădăcini multiple (adică aceeași
soluție apare de mai multe ori), Metoda lui Newton-Raphson poate converge doar la o
singură rădăcină. Acest lucru se datorează faptului că derivata funcției nu distinge între
rădăcinile multiple. În astfel de cazuri, pot fi necesare metode speciale sau adaptări ale
Metodei Newton-Raphson pentru a găsi toate rădăcinile.
Estimarea Inițială Critică: Alegerea unei estimări inițiale adecvate este esențială
pentru succesul Metodei lui Newton-Raphson. Estimarea inițială trebuie să fie suficient
de aproape de soluție pentru a asigura convergența. Dacă estimarea inițială este departe
de soluție, metoda poate să nu converge sau să converge lent.
Funcții Complexe sau Necunoscute: În unele cazuri, funcția f(x) sau derivata sa f
′(x) pot fi complexe sau greu de determinat. Acest lucru poate face dificilă aplicarea
Metodei lui Newton-Raphson sau poate necesita efort suplimentar pentru a calcula
derivata numeric.
Alte Metode Iterative: Pentru ecuații cu caracteristici speciale sau pentru situații
în care convergența Metodei Newton-Raphson este incertă, pot fi preferate alte metode
iterative, cum ar fi metoda bisecției sau metoda secantei, care pot fi mai stabile și mai
sigure.
În concluzie, Metoda lui Newton-Raphson este o metodă puternică, dar nu este
universală și are limite specifice. În practică, alegerea metodei potrivite depinde de
natura ecuației și de cunoașterea prealabilă a problemei. Este important să se înțeleagă
aceste limite și să se adapteze metoda corespunzător pentru a obține soluții precise și
fiabile.
Metoda lui Newton-Raphson este utilizată pe scară largă în matematică, știință,
inginerie și alte domenii pentru a găsi soluții ale ecuațiilor neliniare. Această metodă este
rapidă și eficientă atunci când funcția și derivata sa sunt bine definite, iar estimarea
inițială este apropiată de soluție.

2.2.3.Metode de optimizare pentru sisteme neliniare


Metodele de optimizare pentru sisteme neliniare sunt tehnici matematice și
algoritmice utilizate pentru a găsi soluțiile optime ale problemelor de optimizare în care
funcțiile de obiectiv și constrângerile sunt neliniare. Aceste metode sunt folosite pe scară
largă în domenii precum știința computerelor, ingineria, economia și științele naturale,
unde este necesară maximizarea sau minimizarea unei funcții în condiții complexe.
Iată câteva dintre cele mai cunoscute și utilizate metode de optimizare pentru
sisteme neliniare: [18, p. 25]
1. Metoda gradientului:
 Această metodă implică utilizarea gradientului (sau derivatei parțiale) a
funcției de obiectiv pentru a ghida căutarea soluției optime.
 Algoritmul clasic este Metoda Gradientului Descendent, care ajustează
treptat soluția în direcția opusă a gradientului pentru a ajunge la minimul
local.
 Variante precum Metoda Gradientului Conjugat sunt utilizate pentru funcții
neliniare și pot converte mai rapid decât metoda de gradient descendent
obișnuită.
Metoda gradientului este una dintre cele mai fundamentale și utilizate metode de
optimizare pentru sisteme neliniare. Acestă metodă se bazează pe utilizarea gradientului
(sau derivatei parțiale) a funcției de obiectiv pentru a ghida căutarea soluției optime. Iată
mai multe detalii despre Metoda Gradientului:
Utilizarea Gradientului: Gradientul unei funcții este un vector format din
derivatele parțiale ale funcției în punctul dat. Acesta indică direcția și magnitudinea celei
mai mari rate de creștere a funcției. În contextul optimizării, gradientul este utilizat
pentru a ghida căutarea soluției optime.
Metoda Gradientului Descendent (GD): [2, p. 37]
 Metoda Gradientului Descendent este una dintre cele mai simple și larg
utilizate variante ale metodei gradientului.
 Algoritmul GD ajustează iterativ soluția în direcția opusă a gradientului
pentru a ajunge la minimul local al funcției de obiectiv.
 Formula de actualizare a soluției în fiecare iterație este dată de: xk+1=xk
−α∇f(xk), unde xk este soluția la iterația k, α este pasul de învățare (sau pasul
de optimizare), ∇f(xk) este gradientul funcției de obiectiv în punctul xk.
 Pasul de învățare (α) este un hyperparametru care trebuie ales cu grijă. Un
pas prea mare poate duce la oscilații sau divergență, în timp ce un pas prea
mic poate încetini convergența.
Variante ale Metodei Gradientului:
 Metoda Gradientului Conjugat este o variantă a Metodei Gradientului
Descendent, care poate converte mai rapid în cazul funcțiilor neliniare.
 Alte variante, cum ar fi Metoda Gradientului Stochastic (SGD) sau Metoda
Gradientului Descendent cu Moment, aduc îmbunătățiri și adaptări ale
algoritmului clasic pentru diverse cerințe.
Convergența: Metoda Gradientului este garantată să ajungă la minimul local, dar
nu și la minimul global în general. Convergența la un minim local depinde de alegerea
inițială a punctului de start și de forma funcției de obiectiv. Cu toate acestea, poate fi
utilizată pentru găsirea soluțiilor aproximative ale problemelor de optimizare.
Cazuri de Utilizare: Metoda Gradientului este folosită pe scară largă în probleme
de învățare automată, antrenarea rețelelor neuronale, optimizarea parametrilor în
statistica bayesiană, regresie liniară și multe alte aplicații din știința datelor și inginerie.
În concluzie, Metoda Gradientului este o tehnică fundamentală și eficientă de
optimizare pentru sistemele neliniare. Alegerea variantei corecte și ajustarea
parametrilor poate duce la soluții optime sau aproximative într-o gamă largă de aplicații.
2. Metode bazate pe derivate de ordinul al doilea: [7, p. 36]
 Metodele care se bazează pe derivata de ordinul al doilea, cum ar fi Metoda
Newton-Raphson sau Metoda Quasi-Newton, sunt puternice pentru
optimizarea funcțiilor neliniare.
 Aceste metode utilizează informații suplimentare despre curbura funcției de
obiectiv pentru a ajunge la soluții mai precise și pentru a evita minimurile
locale.
3. Metode bazate pe programare liniară sau semi-definită:
 Pentru problemele de optimizare neliniară, se poate utiliza programarea
liniară sau semi-definită pentru a găsi soluții aproximative.
 Aceste metode se bazează pe formularea problemei de optimizare neliniară
ca o problemă de programare liniară sau semi-definită, care este mai ușor de
rezolvat.
Metodele bazate pe programare liniară sau semi-definită sunt tehnici de
optimizare care se folosesc de formularea problemei de optimizare neliniară ca o
problemă de programare liniară sau semi-definită pentru a găsi soluții aproximative. Iată
mai multe detalii despre aceste metode:
Programare Liniară (PL) și Programare Semi-Definită (PSD):
 Programarea liniară și programarea semi-definită sunt două domenii
importante din optimizare, fiecare cu propriile caracteristici și structuri
matematice specifice.
 Programarea liniară se concentrează pe maximizarea sau minimizarea unei
funcții liniare a variabilelor sub anumite constrângeri liniare.
 Programarea semi-definită implică rezolvarea problemelor de optimizare
sub constrângeri semi-definite, adică constrângerile pot fi exprimate ca
matrice semi-definite pozitive sau matrice semidefinite negative.
Transformarea Problemei Neliniare în PL sau PSD: [4, p. 29]
 Pentru a utiliza metodele de programare liniară sau semi-definită, se
transformă problema de optimizare neliniară într-o problemă de optimizare
liniară sau semi-definită.
 Această transformare poate implica aproximarea funcției de obiectiv sau a
constrângerilor, astfel încât acestea să fie exprimate ca funcții liniare sau
constrângeri liniare sau semi-definite.
Beneficii ale Utilizării PL sau PSD:
 Unul dintre principalele avantaje ale utilizării programării liniare sau semi-
definite este faptul că există algoritmi eficienți pentru rezolvarea acestor
probleme.
 Aceste metode beneficiază de resursele de calcul și de tehnici de optimizare
avansate care au fost dezvoltate pe parcursul mai multor decenii.
Limitări și Aproximații:
 Transformarea unei probleme neliniare într-o problemă de programare
liniară sau semi-definită implică de obicei aproximări și pierderi de
informație.
 Prin urmare, soluțiile găsite cu aceste metode pot fi soluții aproximative și
pot să nu fie soluții exacte ale problemei neliniare inițiale.
Cazuri de Utilizare:
 Programarea liniară și programarea semi-definită sunt folosite în special
pentru problemele de optimizare combinatorie, așa cum sunt cele din
domeniul grafurilor, alocării resurselor, planificării și proiectării.
În concluzie, metodele bazate pe programare liniară sau semi-definită reprezintă o
alternativă eficientă pentru rezolvarea problemelor de optimizare neliniară. Cu toate
acestea, este important să se înțeleagă că aceste metode oferă soluții aproximative și pot
necesita o transformare corespunzătoare a problemei pentru a fi aplicate cu succes.
Alegerea între metodele bazate pe programare liniară, programare semi-definită și alte
tehnici depinde de natura specifică a problemei de optimizare.
4. Algoritmi genetici: [6, p. 47]
 Algoritmii genetici sunt tehnici de optimizare bazate pe evoluție și se
inspiră din procesele de selecție naturală.
 Acești algoritmi utilizează o populație de soluții candidat, care suferă
procese de selecție, încrucișare și mutație pentru a găsi soluții optime.
5. Metode aleatoare și euristice:
 Metodele bazate pe simuari, cum ar fi Algoritmul Hill-Climbing sau
Algoritmul Tabu, se bazează pe explorarea aleatoare sau pe reglarea
euristică pentru a căuta soluții optime.
 Aceste metode pot fi eficiente pentru probleme complicate, dar nu
garantează întotdeauna găsirea soluției globale optime.
6. Metode bazate pe rețele neuronale artificiale:
 Rețelele neuronale artificiale, în special rețelele neuronale profunde, pot fi
folosite pentru a modela și optimiza funcții de obiectiv neliniare.
 Aceste metode pot învăța să aproximeze funcția de obiectiv și să găsească
soluții optime.
Pentru fiecare problemă de optimizare neliniară, alegerea metodei potrivite
depinde de caracteristicile specifice ale problemei, de disponibilitatea datelor, de
cunoștințele a priori și de resursele de calcul. De obicei, este necesar să se experimenteze
cu mai multe metode și să se ajusteze strategiile pentru a obține soluții optime sau
aproximative în funcție de cerințele problemei.

CAPITOLUL III. Evaluarea și comparația software-urilor pentru rezolvarea


sistemelor de ecuații liniare și neliniare

Evaluarea și comparația software-urilor pentru rezolvarea sistemelor de ecuații


liniare și neliniare sunt aspecte esențiale în selectarea instrumentelor potrivite pentru
diferite aplicații științifice, inginerie și analiză de date.
Evaluarea și comparația software-urilor pentru rezolvarea ecuațiilor liniare și
neliniare implică o analiză detaliată a multiplelor aspecte menționate mai sus. Alegerea
software-ului potrivit depinde de cerințele specifice ale problemei dvs., de resursele
disponibile și de preferințele personale.

3.1.Aplicația Matlab
MATLAB (abreviere pentru "MATrix LABoratory") este o aplicație de calcul
numeric și mediu de dezvoltare a software-ului utilizată pe scară largă în domenii
precum matematică, științe și inginerie. MATLAB oferă un limbaj de programare
interactiv și un set bogat de funcții și instrumente pentru analiza, modelarea, simularea și
rezolvarea unei varietăți de probleme matematice și tehnice. Iată mai multe despre
aplicația MATLAB: [6, p. 72]
1. Limba de Programare MATLAB:
 MATLAB dispune de un limbaj de programare propriu, care este puternic și
ușor de învățat.
 Limbajul MATLAB este axat pe lucrul cu matrice și oferă un suport
puternic pentru calculul matriceal și algebric.
2. Funcții și Toolbox-uri:
 MATLAB vine cu o gamă largă de funcții predefinite pentru matematică,
analiză de date, grafică, modelare, optimizare, procesare de semnal și multe
altele.
 Există toolbox-uri specializate care extind funcționalitatea MATLAB
pentru domenii precum învățare automată, prelucrarea imaginilor, analiza
statistică și controlul automat.
3. Mediu de Dezvoltare Interactiv: [4, p. 56]
 MATLAB oferă un mediu de dezvoltare interactiv, cunoscut sub numele de
"Command Window", care permite utilizatorilor să introducă și să testeze
rapid codul.
 Interfața grafică MATLAB (MATLAB GUI) oferă un mediu mai prietenos
pentru dezvoltarea de programe complexe și pentru interacțiunea cu
graficele și datele.
4. Grafică și Vizualizare:
 MATLAB este puternic în generarea de grafice de înaltă calitate, inclusiv
grafice 2D și 3D, diagrame, histograme și alte reprezentări vizuale.
 Acest aspect este util în analiza și prezentarea datelor.
5. Soluții la Probleme Matematice și Tehnice:
 MATLAB este utilizat pentru rezolvarea unui spectru larg de probleme
matematice, precum sisteme de ecuații liniare și neliniare, analiză numerică,
simulare, modelare matematică și procesarea semnalelor.
6. Aplicații și Industrii:
 MATLAB este folosit într-o varietate de industrii, inclusiv inginerie, științe,
financiar, biologie, medicină, fizică și multe altele.
 Este utilizat pentru dezvoltarea de algoritmi, control automat, analiză de
date, simulări și multe alte aplicații.
7. Suport pentru Limbaje de Programare Aternative:
 În afara limbajului său nativ, MATLAB suportă și limbaje de programare
alternative, cum ar fi Python, pentru a extinde funcționalitatea și integrarea
cu alte tehnologii.
8. Comunitate și Resurse:
 MATLAB are o comunitate activă de utilizatori și există numeroase resurse
online, tutoriale, forumuri și documentație pentru a ajuta utilizatorii în
procesul de învățare și dezvoltare.
9. Licențiere:
 MATLAB este disponibil atât sub formă de licențe comerciale pentru
utilizarea în companii, cât și sub formă de licențe academice pentru
instituțiile de învățământ.
10.Actualizări constante:
 MATLAB este în dezvoltare constantă, cu actualizări periodice care adaugă
noi funcționalități și îmbunătățiri.
MATLAB găsește aplicații practice într-o varietate de domenii. Iată câteva
exemple specifice de utilizare a MATLAB în practică: [8, p. 32]
1. Inginerie Electrică și Electronica:
 Proiectarea și simularea circuitelor electrice și electronice.
 Dezvoltarea și testarea sistemelor de control automat.
 Analiza și optimizarea performanței rețelelor electrice.
2. Inginerie Mecanică:
 Modelarea și simularea comportamentului materialelor și structurilor.
 Analiza tensiunilor și deformărilor în componente și structuri.
 Proiectarea și testarea sistemelor mecanice.
3. Științe Biomedicale:
 Procesarea și analiza imaginilor medicale, cum ar fi imagini cu rezonanță
magnetică (IRM) sau tomografii computerizate (CT).
 Modelarea și simularea proceselor biologice și medicale pentru a înțelege și
trata afecțiunile.
4. Analiză de Date și Științe ale Computerelor:
 Machine learning și învățare automată: MATLAB este folosit pentru
dezvoltarea și evaluarea modelelor de învățare automată.
 Procesarea și analiza datelor: pentru analiză statistică, prelucrare de semnal
și vizualizarea datelor.
5. Finanțe și Economie:
 Modelarea și simularea piețelor financiare.
 Analiza seriei de timp și evaluarea riscului financiar.
 Dezvoltarea modelelor de alocare a portofoliului.
6. Medicină:
 Analiza și interpretarea datelor medicale pentru diagnostic și monitorizare.
 Modelarea proceselor biologice și medicale pentru cercetarea științifică.
7. Astronomie și Fizică:
 Analiza datelor obținute din observații astronomice.
 Simularea mișcărilor planetelor și corpurilor cerești.
8. Educație și Cercetare Academică:
 MATLAB este o resursă valoroasă pentru universități și instituții academice
pentru predare și cercetare într-o varietate de domenii.
9. Tehnologia Informației:
 Dezvoltarea de aplicații și instrumente software personalizate pentru analiză
și procesare de date.
10.Industria Aero-spațială:
 Proiectarea, simularea și analiza sistemelor aero-spațiale și de navigație.
Aceste exemple evidențiază amploarea și versatilitatea MATLAB ca instrument
pentru rezolvarea problemelor din diverse domenii. Acest software este folosit pentru a
accelera dezvoltarea și analiza complexă într-o gamă largă de discipline, iar utilizarea sa
este esențială pentru rezolvarea problemelor practice din lumea reală.
În continuare, vom analiza un exemplu practic de utilizare a aplicației MATLAB
în modelarea și simularea piețelor financiare. Iată cum se poate efectua o analiză practică
cu MATLAB în acest context:
1. Colectarea Datelor Financiare: [9, p. 31]
 Începeți prin a colecta date financiare relevante, cum ar fi prețurile
acțiunilor, ratele dobânzii sau datele macroeconomice. Puteți utiliza funcții
și instrumente MATLAB pentru a importa și gestiona aceste date.
2. Preprocesarea Datelor:
 Curățați și preprocesați datele pentru a elimina erorile și pentru a le face
utilizabile în analiză. MATLAB oferă funcții de preprocesare a datelor
pentru manipularea și curățarea acestora.
3. Modelarea:
 Definiți un model matematic sau statistic care descrie comportamentul
piețelor financiare. Puteți folosi MATLAB pentru a crea și ajusta modele
financiare, cum ar fi modelele ARIMA (AutoRegressive Integrated Moving
Average) sau modelele GARCH (Generalized Autoregressive Conditional
Heteroskedasticity).
4. Simularea:
 Utilizați modelele create pentru a simula comportamentul piețelor
financiare. Acest lucru vă permite să generați scenarii viitoare și să evaluați
impactul diferitelor factori asupra portofoliului sau a investițiilor.
5. Optimizare a Portofoliului:
 Utilizați MATLAB pentru a optimiza alocarea portofoliului și pentru a
evalua riscul și randamentul investițiilor. Acest lucru implică găsirea
alocării optime a activelor pentru a maximiza profitul și minimiza riscul.
6. Analiză de Risc:
 Folosiți funcțiile MATLAB pentru a efectua analiza de risc. Acest lucru vă
permite să calculați variații, Value at Risk (VaR) și să efectuați stres testing
pentru a evalua riscurile potențiale.
7. Vizualizare și Raportare:
 Utilizați capacitatea de grafică a MATLAB pentru a crea vizualizări grafice
ale datelor, a rezultatelor simulării și a portofoliului optimizat. Puteți crea
rapoarte și prezentări pentru a comunica rezultatele.
8. Actualizări și Re-optimizare:
 Piețele financiare sunt dinamice, deci este important să actualizați datele și
să re-optimizați portofoliul în mod regulat pentru a ține pasul cu
schimbările de pe piață.
9. Testarea și Validarea Modelului:
 Testați modelul folosind date istorice și valori cunoscute pentru a valida
acuratețea acestuia și a evalua cum ar fi funcționat în trecut.
10.Analiza Sensibilității:
 Utilizați MATLAB pentru a efectua analiza sensibilității pentru a înțelege
cum variază rezultatele în funcție de diferiți factori sau parametri.
În ansamblu, MATLAB este un instrument puternic pentru analiza și modelarea
piețelor financiare, permițând profesioniștilor din domeniul financiar să ia decizii
informate și să gestioneze riscurile. Cu ajutorul MATLAB, puteți să efectuați analize
avansate și să vă dezvoltați strategiile de investiții într-un mod eficient și precis.
În concluzie, MATLAB este o platformă de calcul și dezvoltare de software
extrem de versatilă și puternică, utilizată în întreaga lume pentru rezolvarea problemelor
matematice și tehnice dintr-o gamă largă de domenii. Este un instrument deosebit de
valoros pentru cercetători, ingineri, analiști de date și profesioniști din diferite industrii.
3.2.Aplicația OCTAV
3.3 Арliсаții utilizînd sоftul Bоrlаnd Dеlрhi 7.0
Еmbаrсаdеrо Dеlрhi, сunоsсut аntеriоr са СоdеGеаr Dеlрhi și Bоrlаnd Dеlрhi, еstе un mеdiu
dе dеzvоltаrе а рrоgrаmеlоr реntru Miсrоsоft Windоws, рrоdus inițiаl dе firmа аmеriсаnă Bоrlаnd,
dеținut și dеzvоltаt în рrеzеnt dе Еmbаrсаdеrо Tесhnоlоgiеs. Dеlрhi 2010 еstе сеа mаi rесеntă
vеrsiunе și еstе distribuită în trеi еdiții: Рrоfеssiоnаl, Еntеrрrisе și Аrсhitесt. Асеstа оfеră intеrfеțе
рrоgrаmаtоrului реntru а соnstrui о арliсаțiе fоlоsind Еxtеnsiblе Mаrkuр Lаnguаgе (XML),
Еxtеnsiblе Stylеshееt Lаnguаgе (XSL), Simрlе Оbjесt Ассеss Рrоtосоl (SОАР) și Wеb Sеrviсеs
Dеsсriрtiоn Lаnguаgе (WSDL). Bаzаt ре limbаjul dе рrоgrаmаrе оbiесt Раsсаl.
Dеlрhi еstе un mеdiu dе рrоgrаmаrе şi nu un limbаj dе рrоgrаmаrе. Асеаstа însеаmnă сă mеdiul
Dеlрhi еstе un еditоr în саrе рrоgrаmаtоrul sсriе instruсţiuni într-un limbаj dе рrоgrаmаrе, fоlоsit
реntru dеzvоltаrеа dе арliсаţii. Раrtеа сеа mаi imроrtаntă din арliсаţiе саrе sе роаtе соnstrui сu
аjutоrul mоusе-ului еstе intеrfаţа. Sistеmul dе ореrаrе Windоws а stаbilit un sеt dе rеguli ре саrе
trеbuiе să lе rеsресtе fiесаrе арliсаţiе реntru а рutеа fi еxесutаtă în асеst sistеm dе ореrаrе. Fiесаrе
арliсаţiе Windоws соnţinе о fеrеаstră, еvеntuаl un mеniu, butоаnе, сutii dе еditаrе, ş.а.m.d. Еxistă
un sеt finit dе оbiесtе furnizаtе dе сătrе Windоws şi саrе роt аlсătui intеrfаţа арliсаţiеi. Vоm înсеrса
să соnstruim сâtеvа арliсаţii simрlе în саrе vоm рunе în lumină соnсерtеlе dе bаză аlе рrоgrаmării
sub mеdiul Dеlрhi.

3.4. Analiza comparativă a acestor software-uri matematice


Ambele software-uri, MATLAB și Maple, sunt puternice și au domenii de aplicare
distincte. MATLAB se concentrează pe analiza numerică, simulări, prelucrarea
semnalelor și a imaginilor, în timp ce Maple este specializat în calculul simbolic și
modelare matematică. Alegerea între ele depinde de nevoile specifice și experiența
utilizatorului. [5, p. 63] Uneori, o combinație a ambelor software-uri poate fi benefică
pentru a acoperi atât aspectele numerice, cât și cele simbolice ale matematicii și științei.
În continuare vom prezenta analiza SWOT pentru ambele software-uri
matematice.
MATLAB:
Puncte forte Puncte slabe
Puternic în analiza numerică: Cost: MATLAB este un software
MATLAB este remarcabil în analiza comercial și poate fi costisitor pentru
numerică și calculul numeric, oferind instituțiile academice, studenți și micii
unelte avansate pentru aceste sarcini. cercetători.
Comunitate și suport puternic: Există Limitări în calcule simbolice: Deși
o comunitate mare de utilizatori și o MATLAB este puternic în analiza
mulțime de resurse online, tutoriale și numerică, are limitări în calculele
forumuri de discuții care oferă suport simbolice și în manipularea expresiilor
pentru utilizatorii MATLAB. matematice complexe.
Limbaj de programare puternic: Nu este open-source: MATLAB nu
MATLAB dispune de un limbaj de este open-source, ceea ce înseamnă că
programare propriu, care este ușor de nu are dezvoltare comunitară deschisă și
învățat și potrivit pentru dezvoltarea codul sursă nu este disponibil public.
rapidă de algoritmi și simulări.
Domenii specializate: MATLAB are
numeroase toolbox-uri specializate
pentru diverse domenii, precum
prelucrarea semnalelor, analiza
imaginilor, controlul automat și altele.
Oportunități Amenințări
Extinderea domeniilor de aplicare: Concurența: Există concurență
MATLAB poate continua să se extindă semnificativă din partea altor software-
în domenii noi și diverse, cum ar fi uri matematice și științifice, inclusiv
învățarea automată și inteligența open-source, care pot oferi alternative la
artificială, unde calculele numerice sunt MATLAB.
esențiale. Costuri ridicate: Costul ridicate al
Colaborare și integrare: MATLAB licențelor poate determina instituțiile
poate colabora și integra cu alte sau utilizatorii individuali să caute
platforme și limbaje de programare alternative mai accesibile.
pentru a-și extinde funcționalitatea și Reputație negativă în privința
accesibilitatea. costurilor: MATLAB poate fi perceput
ca fiind prea costisitor, ceea ce ar putea
afecta adopția în anumite medii.

În concluzie, MATLAB rămâne o resursă de bază în domeniul analizei numerice


și simulării, având o comunitate puternică și un limbaj de programare robust. Cu toate
acestea, costurile ridicate și competiția din ce în ce mai intensă necesită ca MATLAB să
rămână inovator și să-și extindă domeniile de aplicare pentru a rămâne relevant în viitor.
Utilizatorii trebuie să ia în considerare aceste aspecte înainte de a decide să utilizeze
MATLAB sau alternative.

Maple:
Puncte forte Puncte slabe
Calcul simbolic: Maple este puternic în Limitări în analiza numerică: Maple
calcule simbolice, fiind capabil să nu este la fel de puternic în analiza
manipuleze expresii matematice numerică și simulări ca MATLAB.
complexe și să rezolve ecuații Costul licențelor: Asemenea
simbolice. MATLAB, Maple este un software
Modelare matematică: Este excelent comercial, ceea ce poate impune costuri
pentru modelarea matematică și pentru semnificative.
rezolvarea problemelor matematice
complexe.
Utilizare în educație: Maple este
utilizat pe scară largă în mediul
educațional, fiind o resursă valoroasă
pentru studenți și profesori.
Interfață intuitivă: Maple oferă o
interfață prietenoasă și ușor de utilizat
pentru utilizatorii de toate nivelurile de
experiență.
Oportunități Amenințări
Extindere în cercetare științifică: Concurența: Așa cum este valabil și
Maple poate continua să crească ca un pentru MATLAB, există o concurență
instrument de cercetare în domeniul puternică în domeniul software-urilor
științei și ingineriei, datorită capacității matematice și științifice, inclusiv din
sale de calcul simbolic. partea alternativelor open-source.
Dezvoltarea unor module specializate: Costuri ridicate: Costul ridicat al
Maple poate dezvolta și integra module licențelor Maple poate reprezenta un
specializate pentru domenii precum obstacol în adopția largă, în special în
matematică, fizică sau inginerie. mediile cu resurse financiare limitate.

În concluzie, Maple rămâne un instrument valoros pentru calculele simbolice,


modelarea matematică și educație, având o interfață intuitivă. Cu toate acestea, trebuie
să abordeze provocările costurilor ridicate și concurența puternică pentru a rămâne
relevant și a-și extinde cota de piață. Utilizatorii trebuie să ia în considerare aceste
aspecte înainte de a decide să utilizeze Maple sau alternative.
Această analiză SWOT ar trebui să ofere o viziune generală asupra punctelor forte
și slabe ale MATLAB și Maple, precum și a oportunităților și amenințărilor cu care se
confruntă în contextul lor specific. Utilizatorii și instituțiile trebuie să ia în considerare
aceste aspecte înainte de a alege unul dintre aceste software-uri.
Concluzii și recomandări
Tema de licență privind utilizarea software-urilor matematice pentru rezolvarea
sistemelor de ecuații liniare și neliniare reprezintă un domeniu de studiu esențial și
actual în matematică și știință. Software-urile matematice precum MATLAB, Maple,
Mathematica, Python cu bibliotecile NumPy și SciPy, precum și multe altele, au devenit
instrumente indispensabile pentru cercetători, ingineri, matematicieni și specialiști în
domenii variate.
Rezolvarea sistemelor de ecuații liniare și neliniare este o sarcină complexă, cu
numeroase aplicații în inginerie, științe naturale, economie și multe alte domenii.
Software-urile matematice facilitează acest proces prin oferirea de instrumente și
funcționalități avansate pentru efectuarea calculelor numerice și simbolice, simplificarea
expresiilor, analiza datelor și modelarea matematică.
Prin intermediul acestei teme de licență, am învățat că software-urile matematice
pot accelera și eficientiza procesul de rezolvare a sistemelor de ecuații, contribuind la
obținerea soluțiilor mai rapide și precise. Totodată, am înțeles importanța abordării
adecvate a problemei, a alegerii software-ului potrivit în funcție de specificul problemei
și a interpretării corecte a rezultatelor obținute.
Pe măsură ce tehnologia și software-urile matematice continuă să evolueze, este
esențial să rămânem la curent cu noile dezvoltări și să continuăm să explorăm modalități
de îmbunătățire a abordărilor noastre în rezolvarea sistemelor de ecuații. În plus,
utilizarea software-urilor matematice deschide noi perspective în cercetare, dezvoltare și
inovație într-o varietate de domenii, contribuind la progresul științific și tehnic.
Astfel, tema de licență "Aplicarea software-urilor matematice la rezolvarea
sistemelor de ecuații liniare (neliniare)" ne-a oferit o perspectivă valoroasă asupra
modului în care aceste instrumente pot influența pozitiv procesul de rezolvare a
problemelor matematice și științifice, deschizând calea către noi descoperiri și soluții în
lumea matematicii și a cercetării.
În acest context, vom prezenta și câteva recomandări pentru aplicarea software-
urilor matematice la rezolvarea sistemelor de ecuații liniare și neliniare:
1. Alegerea software-ului potrivit:
 Analizați cu atenție cerințele și caracteristicile problemei dvs. înainte de a
alege un software matematic. Alegeți un software care să corespundă
cerințelor specifice ale sistemelor de ecuații pe care doriți să le rezolvați.
2. Documentați-vă problema:
 Înainte de a începe să utilizați software-ul matematic, documentați cu
atenție problema pe care doriți să o rezolvați. Definiți parametrii, ecuațiile
și condițiile inițiale sau de frontieră.
3. Înțelegeți metodele de rezolvare:
 Familiarizați-vă cu metodele de rezolvare a sistemelor de ecuații liniare și
neliniare. Înțelegerea principiilor de bază vă va ajuta să alegeți metoda
corespunzătoare în funcție de specificul problemei.
4. Validați rezultatele:
 Verificați și validați rezultatele obținute prin intermediul software-ului.
Asigurați-vă că acestea sunt rezonabile și corespund contextului problemei.
5. Efectuați analiza erorilor:
 Calculați și analizați erorile pentru a evalua precizia și fiabilitatea
rezultatelor. Acest pas este crucial pentru încredere în soluții.
6. Optimizați parametrii de intrare:
 Experimentați cu diferiți parametri și configurații pentru a identifica cea
mai eficientă și precisă metodă de rezolvare.
7. Păstrați documentația corectă:
 Păstrați o documentație detaliată a tuturor pașilor pe care îi efectuați în
software-ul matematic. Acest lucru vă va ajuta să reveniți la rezultate și să
le reproducți, dacă este necesar.
8. Explorează alternative:
 Nu vă limitați doar la un singur software matematic. În funcție de
problemele dvs., puteți explora mai multe software-uri pentru a compara
rezultatele și pentru a avea o perspectivă mai largă asupra problemelor.
9. Învățați continuu:
 Software-urile matematice evoluează constant. Asigurați-vă că sunteți la
curent cu noile funcționalități și tehnici disponibile în software-ul pe care îl
utilizați.
10.Puneți accent pe aspectele practice:
 În cazul problemelor practice, asigurați-vă că rezultatele pot fi aplicate și
implementate în contextul real.
Aplicarea software-urilor matematice la rezolvarea sistemelor de ecuații liniare și
neliniare poate fi o abordare puternică și eficientă în domenii precum știința, ingineria și
economia. Cu o pregătire adecvată și o abordare meticuloasă, puteți obține rezultate
precise și valoroase.

Bibliografie
Cărți:
1. Găvruța, L. (2014). Analiza numerică a sistemelor neliniare. Editura Universității
"Alexandru Ioan Cuza" din Iași.
2. Higham, N. J. (2002). Accuracy and Stability of Numerical Algorithms. SIAM.
3. Kincaid, D., & Cheney, W. (2002). Numerical Analysis: Mathematics of
Scientific Computing. Brooks Cole.
4. Stoer, J., și Bulirsch, R. (2013). Introducere în metode numerice. Editura Tehnică.
Articole și Lucrări Științifice:
5. Anghel, L., și Minculete, N. (2013). Soluția numerică a sistemelor neliniare și
metode de aproximare pentru funcții implicit date. Studia Universitatis Babeș-
Bolyai Mathematica.
6. Castillo, P., Munilla, J., & Rodríguez, J. (2018). Algebraic computing with Maple.
Springer.
7. Dvinskikh, D., & Skvortsova, V. (2016). Solution of differential algebraic
equations in the chemical process simulation. Chemical Engineering Science.
8. Hegazi, A. S., & El-Hawary, M. E. (2015). Performance evaluation of direct
methods in solving sparse linear systems. Electric Power Components and
Systems.
9. Petrușel, A. (2015). Metode numerice de rezolvare a sistemelor de ecuații
neliniare. Lucrare de licență, Universitatea de Vest din Timișoara.
10.Oltean, V. (2012). Soluția numerică a sistemelor neliniare. Revista Transilvania.
11.Iserles, A., & Nørsett, S. P. (2011). Computing the exponential of a matrix: The
challenge of negative times. SIAM Review.
12.Kaczorek, T. (2011). Solving differential and difference equations with maple.
Journal of Applied Mathematics, 2011.
13.Kaur, P., Jain, V. K., & Singh, S. P. (2013). Solution of first order linear fuzzy
differential equations under generalized differentiability. Applied Mathematics
and Computation.
14.López, A., Sanz-Serna, J. M., & Biscay, R. J. (2013). Efficient integration of stiff
mechanical systems. Journal of Computational Physics.
15.Toader, A. M., & Vlad, V. I. (2014). Deterministic-Stochastic Integration of
Fokker–Planck Equation. Journal of Scientific Computing.
16.Vlăduțescu, S., Bolcu, D., și Rotaru, C. (2012). Metode de rezolvare a sistemelor
neliniare de ecuații. Revista Română de Informatică și Automatică.
17.Van Wyk, M., & Van den Bergh, F. (2016). A numerical method for solving
fractional differential equations of arbitrary order. Computers & Mathematics
with Applications.
18.Zakerzadeh, H., & Momani, S. (2017). A new modified Laplace's Adomian
decomposition method for linear and nonlinear fractional-order diffusion-wave
and telegraph equations. Journal of Computational Physics.
Resurse Online și Documentație Tehnică:
19.Pagina oficială Maple în limba română: www.maplesoft.com/ro.
20.Pagina oficială MATLAB în limba română: ro.mathworks.com.
21.MathWorks - Resurse și documentație pentru MATLAB:
www.mathworks.com/help/matlab.
22.Python - Documentația pentru Python cu bibliotecile NumPy și SciPy:
www.python.org

Anexa 3: Aplicații utilizînd softul Borland Delphi 7.0

Aplicația 1: (Sisteme 2 x 2)

Rezolvarea sistemelor de ecuații liniare utilizînd metoda grafică.


Realizare:

1. File / New Application.


2. Plasăm pe formă componente conform imaginii de mai sus ( vom avea 15 etichete, 6
casete de editare, 4 componente Panel și 2 butoane).
3. Stabilim pentru proprietatea Text a componentelor Edit valorile implicite. Stabilim pentru
proprietatea Caption a componentelor Panel valoare nulă (componentele Panel astfel vor
fi fără de nici o valoare).
4. Prelucrăm evenimentul OnClick pentru componentele Button1 pentru a afișa
coordonatele celor două ecuații pe care le vom construi cu ajutorul formei a doua.
5. Creăm forma a doua, si stabilim culoarea albă ca fundal, stabilim legătura dintre forma 1
și forma 2.
6. Prelucrăm evenimentele OnPaint și OnResize pentru forma 2. Aci vom desena sistemul
de coordonate, apoi vom plasa în acest sistem intervalul [-9,9] pe Ox si pe Oy.
7. Coordonatele punctului de intersecție a celor două drepte se va afișa ca un mesaj
aparte, prelucrăm evenimentul OnClick pentru forma 2.
8. Lansăm aplicaţia la execuţie.
Codul sursă:
unit Unit1;
interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,


Dialogs, StdCtrls, ExtCtrls;

type

TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
Button1: TButton;
Button2: TButton;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;

procedure Button1Click(Sender: TObject);


procedure Button2Click(Sender: TObject);

private

{ Private declarations }
public

{ Public declarations }
end;

var

Form1: TForm1;
k1,k2,k3,k4,k5,k6:real;
implementation

Uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);


begin

// Ecuatia dreptei 1

k1:= - strtofloat(Edit1.Text)/strtofloat(Edit2.Text);
Panel1.Caption:= floattostr(k1);

k2:= strtofloat(Edit3.Text)/strtofloat(Edit2.Text);
Panel2.Caption:= floattostr(k2);

// Ecuatia dreptei 2
k3:= - strtofloat(Edit4.Text)/strtofloat(Edit5.Text);
Panel3.Caption:= floattostr(k3);

k4:= strtofloat(Edit6.Text)/strtofloat(Edit5.Text);
end; Panel4.Caption:= floattostr(k4);

procedure TForm1.Button2Click(Sender: TObject);


begin

Form2.ShowModal;
end;

end.

Aplicația 2: (Sisteme 3 x 3)

Rezolvarea sistemelor de ecuații liniare utilizînd metoda lui Cramer.

Realizare:

1. File / New Application.


2. Plasăm pe formă componente conform imaginii de mai sus ( vom avea 12 etichete, 12
casete de editare, 43 componente Panel și 3 butoane).
3. Stabilim pentru proprietatea Text a componentelor Edit valoare nulă (casetele Edit astfel
vor fi fără de nici o valoare). Stabilim pentru proprietatea Caption a componentelor Panel
valoare nulă (componentele Panel astfel vor fi fără de nici o valoare).
4. Prelucrăm evenimentul OnClick pentru componentele Panel10, Panel20, Panel30 și
Panel40 pentru a afișa determinanții.
5. Prelucrăm evenimentul OnClick pentru componentele Button 1 ( va calcula fiecare
determinant aparte), Button2 (va rezolva sistemul, afișînd soluțiile acestuia) și Button3 (
va curăța toate componentele Edit și Panel din forma dată).
6. Lansăm aplicaţia la execuţie.

Codul sursă:
unit Unit1;
interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,


Dialogs, StdCtrls, ExtCtrls;

type

TForm1 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
Panel5: TPanel;
Panel6: TPanel;
Panel7: TPanel;
Panel8: TPanel;
Panel9: TPanel;
Panel10: TPanel;
Panel11: TPanel;
Panel12: TPanel;
Panel13: TPanel;
Panel14: TPanel;
Panel15: TPanel;
Panel16: TPanel;
Panel17: TPanel;
Panel18: TPanel;
Panel19: TPanel;
Panel20: TPanel;
Panel21: TPanel;
Panel22: TPanel;
Panel23: TPanel;
Panel24: TPanel;
Panel25: TPanel;
Panel26: TPanel;
Panel27: TPanel;
Panel28: TPanel;
Panel29: TPanel;
Panel30: TPanel;
Panel31: TPanel;
Panel32: TPanel;
Panel33: TPanel;
Panel34: TPanel;
Panel35: TPanel;
Panel36: TPanel;
Panel37: TPanel;
Panel38: TPanel;
Panel39: TPanel;
Panel40: TPanel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;

Edit5: TEdit;

Edit6: TEdit;

Edit7: TEdit;

Edit8: TEdit;

Edit9: TEdit;

Edit10: TEdit;

Edit11: TEdit;

Edit12: TEdit;

Button1: TButton;

Panel41: TPanel;

Panel42: TPanel;

Panel43: TPanel;

Button2: TButton;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

Label9: TLabel;

Label10: TLabel;

Label11: TLabel;

Label12: TLabel;

Label13: TLabel;

Label14: TLabel;

Button3: TButton;

procedure Panel10Click(Sender: TObject);


procedure Panel20Click(Sender: TObject);
procedure Panel30Click(Sender: TObject);
procedure Panel40Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);

private

{ Private declarations }
public

{ Public declarations }
end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Panel10Click(Sender: TObject);


begin

Panel1.Caption:= Edit1.Text;
Panel2.Caption:= Edit2.Text;
Panel3.Caption:= Edit3.Text;
Panel4.Caption:= Edit5.Text;
Panel5.Caption:= Edit6.Text;
Panel6.Caption:= Edit7.Text;
Panel7.Caption:= Edit9.Text;
Panel8.Caption:= Edit10.Text;
Panel9.Caption:= Edit11.Text;

end;
procedure TForm1.Panel20Click(Sender: TObject);
begin

Panel11.Caption:= Edit4.Text;
Panel12.Caption:= Edit2.Text;
Panel13.Caption:= Edit3.Text;
Panel14.Caption:= Edit8.Text;
Panel15.Caption:= Edit6.Text;
Panel16.Caption:= Edit7.Text;
Panel17.Caption:= Edit12.Text;
Panel18.Caption:= Edit10.Text;
Panel19.Caption:= Edit11.Text;

end;

procedure TForm1.Panel30Click(Sender: TObject);


begin

Panel21.Caption:= Edit1.Text;
Panel22.Caption:= Edit4.Text;
Panel23.Caption:= Edit3.Text;
Panel24.Caption:= Edit5.Text;
Panel25.Caption:= Edit8.Text;
Panel26.Caption:= Edit7.Text;
Panel27.Caption:= Edit9.Text;
Panel28.Caption:= Edit12.Text;
Panel29.Caption:= Edit11.Text;

end;

procedure TForm1.Panel40Click(Sender: TObject);


begin

Panel31.Caption:= Edit1.Text;
Panel32.Caption:= Edit2.Text;
Panel33.Caption:= Edit4.Text;
Panel34.Caption:= Edit5.Text;
Panel35.Caption:= Edit6.Text;
Panel36.Caption:= Edit8.Text;
Panel37.Caption:= Edit9.Text;
Panel38.Caption:= Edit10.Text;
Panel39.Caption:= Edit12.Text;

end;

procedure TForm1.Button1Click(Sender: TObject);


var k,k1,k2,k3:real;

begin

k:=Strtofloat(Panel1.Caption) *Strtofloat(Panel5.Caption)

*Strtofloat(Panel9.Caption) +Strtofloat(Panel4.Caption)

*Strtofloat(Panel8.Caption) *Strtofloat(Panel3.Caption)
+Strtofloat(Panel2.Caption) *Strtofloat(Panel6.Caption)

*Strtofloat(Panel7.Caption) -Strtofloat(Panel3.Caption)

*Strtofloat(Panel5.Caption) *Strtofloat(Panel7.Caption) -
Strtofloat(Panel2.Caption) *Strtofloat(Panel4.Caption)

*Strtofloat(Panel9.Caption) -Strtofloat(Panel6.Caption)

*Strtofloat(Panel8.Caption) *Strtofloat(Panel1.Caption);
Panel10.Caption:= Floattostr(k);

k1:=Strtofloat(Panel11.Caption) *Strtofloat(Panel15.Caption)

*Strtofloat(Panel19.Caption) +Strtofloat(Panel14.Caption)

*Strtofloat(Panel18.Caption) *Strtofloat(Panel13.Caption)

+Strtofloat(Panel12.Caption) *Strtofloat(Panel16.Caption)

*Strtofloat(Panel17.Caption) -Strtofloat(Panel13.Caption)

*Strtofloat(Panel15.Caption) *Strtofloat(Panel17.Caption)-
Strtofloat(Panel12.Caption) *Strtofloat(Panel14.Caption)

*Strtofloat(Panel19.Caption) -Strtofloat(Panel16.Caption)

*Strtofloat(Panel18.Caption) *Strtofloat(Panel11.Caption);
Panel20.Caption:= Floattostr(k1);

k2:=Strtofloat(Panel21.Caption) *Strtofloat(Panel25.Caption)

*Strtofloat(Panel29.Caption) +Strtofloat(Panel24.Caption)

*Strtofloat(Panel28.Caption) *Strtofloat(Panel23.Caption)+
Strtofloat(Panel22.Caption) *Strtofloat(Panel26.Caption)

*Strtofloat(Panel27.Caption) -Strtofloat(Panel23.Caption)

*Strtofloat(Panel25.Caption) *Strtofloat(Panel27.Caption)-
Strtofloat(Panel22.Caption) *Strtofloat(Panel24.Caption)

*Strtofloat(Panel29.Caption)-Strtofloat(Panel26.Caption)

*Strtofloat(Panel28.Caption)*Strtofloat(Panel21.Caption);
Panel30.Caption:= Floattostr(k2);

k3:=Strtofloat(Panel31.Caption) *Strtofloat(Panel35.Caption)

*Strtofloat(Panel39.Caption) +Strtofloat(Panel34.Caption)

*Strtofloat(Panel38.Caption) *Strtofloat(Panel33.Caption)+
Strtofloat(Panel32.Caption) *Strtofloat(Panel36.Caption)

*Strtofloat(Panel37.Caption) -Strtofloat(Panel33.Caption)

*Strtofloat(Panel35.Caption) *Strtofloat(Panel37.Caption)-
Strtofloat(Panel32.Caption) *Strtofloat(Panel34.Caption)

*Strtofloat(Panel39.Caption) -Strtofloat(Panel36.Caption)

*Strtofloat(Panel38.Caption) *Strtofloat(Panel31.Caption);
Panel40.Caption:= Floattostr(k3);

end;

procedure TForm1.Button2Click(Sender: TObject);


var s1,s2,s3:real;

begin

s1:= strtofloat(Panel20.Caption)/strtofloat(Panel10.Caption);
Panel41.Caption:=floattostr(s1);

s2:= strtofloat(Panel30.Caption)/strtofloat(Panel10.Caption);
Panel42.Caption:= floattostr(s2);

s3:= strtofloat(Panel40.Caption)/strtofloat(Panel10.Caption);
Panel43.Caption:= floattostr(s3);

end;

procedure TForm1.Button3Click(Sender: TObject);


begin
Edit1.text:=''; Edit2.text:='';

Edit3.text:=''; Edit4.text:='';

Edit5.text:=''; Edit6.text:='';

Edit7.text:=''; Edit8.text:='';

Edit9.text:=''; Edit10.text:='';

Edit11.text:=''; Edit12.text:='';
Panel1.Caption:=''; Panel2.Caption:='';
Panel3.Caption:=''; Panel4.Caption:='';
Panel5.Caption:=''; Panel6.Caption:='';
Panel7.Caption:=''; Panel8.Caption:='';
Panel9.Caption:=''; Panel10.Caption:='';
Panel11.Caption:=''; Panel12.Caption:='';
Panel13.Caption:=''; Panel14.Caption:='';
Panel15.Caption:=''; Panel16.Caption:='';
Panel17.Caption:=''; Panel18.Caption:='';
Panel19.Caption:=''; Panel20.Caption:='';
Panel21.Caption:=''; Panel22.Caption:='';
Panel23.Caption:=''; Panel24.Caption:='';
Panel25.Caption:=''; Panel26.Caption:='';
Panel27.Caption:=''; Panel28.Caption:='';
Panel29.Caption:=''; Panel30.Caption:='';
Panel31.Caption:=''; Panel32.Caption:='';
Panel33.Caption:=''; Panel34.Caption:='';
Panel35.Caption:=''; Panel36.Caption:='';
Panel37.Caption:=''; Panel38.Caption:='';
Panel39.Caption:=''; Panel40.Caption:='';
Panel41.Caption:=''; Panel42.Caption:='';
Panel43.Caption:='';

end;
end.

Aplicația 3: (Sisteme 4 x 4)

Rezolvarea sistemelor de ecuații liniare utilizînd metoda clasică a lui Gauss (obținerea matricii
superior triunghiulare)

Realizare:

1. File / New Application.


2. Plasăm pe formă componente conform imaginii de mai sus ( vom avea 8 etichete, 20
casete de editare, 24 componente Panel și 6 butoane).
3. Stabilim pentru proprietatea Text a componentelor Edit valorile implicite. Stabilim pentru
proprietatea Caption a componentelor Panel valoare nulă (componentele Panel astfel vor
fi fără de nici o valoare).
4. Prelucrăm evenimentul OnClick pentru componentele Button1, Button2, Button3 și
Button4 pentru a afișa coloanele matricii triunghiulare.
5. Prelucrăm evenimentul OnClick pentru componentele Button5 ( va afișa soluțiile
sistemului) și Button6 ( va curăța toate componentele Edit și Panel din forma dată).
6. Lansăm aplicaţia la execuţie.

Codul sursă:
unit Unit1;
interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,


Dialogs, StdCtrls, ExtCtrls;

type

TForm1 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
Panel5: TPanel;
Panel6: TPanel;
Panel7: TPanel;
Panel8: TPanel;
Panel9: TPanel;
Panel10: TPanel;
Panel11: TPanel;
Panel12: TPanel;
Panel13: TPanel;
Panel14: TPanel;
Panel15: TPanel;
Panel16: TPanel;
E1: TEdit;

E2: TEdit;

E3: TEdit;

E4: TEdit;

E6: TEdit;

E7: TEdit;

E8: TEdit;

E9: TEdit;

E10: TEdit;

E11: TEdit;

E12: TEdit;

E13: TEdit;

E14: TEdit;

E15: TEdit;
E16: TEdit;

E5: TEdit;

Label1: TLabel;

Label2: TLabel;

E17: TEdit;

E18: TEdit;

E19: TEdit;

E20: TEdit;

Panel17: TPanel;

Panel18: TPanel;

Panel19: TPanel;

Panel20: TPanel;

Label3: TLabel;

Button2: TButton;

Button3: TButton;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;
Panel21: TPanel;

Panel22: TPanel;

Panel23: TPanel;

Panel24: TPanel;

Label8: TLabel;

Label9: TLabel;

Label10: TLabel;

Label11: TLabel;

Label12: TLabel;

Label13: TLabel;

Label14: TLabel;

Label15: TLabel;

Button4: TButton;

Button5: TButton;

Button6: TButton;

Button7: TButton;

Label16: TLabel;

procedure Button4Click(Sender: TObject);


procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);

private

{ Private declarations }
public

{ Public declarations }
end;

var

Form1: TForm1;
P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14,P15,P16:real;

k1,k2,k3,k4,k5,k6,k7,k8,k9:real;
s1,s2,s3,s4,s5:real;
r1,r2,r3,r4:real;

implementation

{$R *.dfm}
procedure TForm1.Button4Click(Sender: TObject);
begin

// Coloana I
Panel1.Caption:= '1';

Panel5.Caption:= '0';

Panel9.Caption:= '0';

Panel13.Caption:= '0';

// Coloana II

P1:= strtofloat(E2.Text)/strtofloat(E1.Text);
Panel2.Caption:= floattostr(P1);

P5:= P1-(strtofloat(E6.Text)/strtofloat(E5.Text));
Panel6.Caption:= floattostr(P5);

P9:= P1-(strtofloat(E10.Text)/strtofloat(E9.Text));
Panel10.Caption:= floattostr(P9);

P13:= P1-(strtofloat(E14.Text)/strtofloat(E13.Text));
Panel14.Caption:= floattostr(P13);

// Coloana III

P2:= strtofloat(E3.Text)/strtofloat(E1.Text);
Panel3.Caption:= floattostr(P2);

P6:= P2-(strtofloat(E7.Text)/strtofloat(E5.Text));
Panel7.Caption:= floattostr(P6);

P10:= P2-(strtofloat(E11.Text)/strtofloat(E9.Text));
Panel11.Caption:= floattostr(P10);

P14:= P2-(strtofloat(E15.Text)/strtofloat(E13.Text));
Panel15.Caption:= floattostr(P14);

// Coloana IV

P3:= strtofloat(E4.Text)/strtofloat(E1.Text);
Panel4.Caption:= floattostr(P3);

P7:= P3-(strtofloat(E8.Text)/strtofloat(E5.Text));
Panel8.Caption:= floattostr(P7);

P11:= P3-(strtofloat(E12.Text)/strtofloat(E9.Text));
Panel12.Caption:= floattostr(P11);

P15:= P3-(strtofloat(E16.Text)/strtofloat(E13.Text));
Panel16.Caption:= floattostr(P15);

// Coloana termenilor liberi

P4:= strtofloat(E17.Text)/strtofloat(E1.Text);
Panel17.Caption:= floattostr(P4);

P8:= P4-(strtofloat(E18.Text)/strtofloat(E5.Text));
Panel18.Caption:= floattostr(P8);

P12:= P4-(strtofloat(E19.Text)/strtofloat(E9.Text));
Panel19.Caption:= floattostr(P12);

P16:= P4-(strtofloat(E20.Text)/strtofloat(E13.Text));
Panel20.Caption:= floattostr(P16);

end;

procedure TForm1.Button5Click(Sender: TObject);


begin

// Coloana I
Panel1.Caption:= '1';

Panel5.Caption:= '0';

Panel9.Caption:= '0';

Panel13.Caption:= '0';

// Coloana II
Panel6.Caption:= '1';

Panel10.Caption:= '0';

Panel14.Caption:= '0';

// Coloana III

k1:= P6/P5; Panel7.Caption:=floattostr(k1);

k2:= k1-P10/P9; Panel11.Caption:=floattostr(k2);


k3:= k1-P14/P13; Panel15.Caption:=floattostr(k3);

// Coloana IV
k4:= P7/P5; Panel8.Caption:=floattostr(k4);
k5:= k4-P11/P9; Panel12.Caption:=floattostr(k5);

k6:= k4-P15/P13; Panel16.Caption:=floattostr(k6);

// Coloana termenilor liberi

k7:= P8/P5; Panel8.Caption:=floattostr(k7);

k8:= k7-P12/P9; Panel12.Caption:=floattostr(k8);


k9:= k7-P16/P13; Panel16.Caption:=floattostr(k9);

end;

procedure TForm1.Button6Click(Sender: TObject);


begin

// Coloana I
Panel1.Caption:= '1';

Panel5.Caption:= '0';

Panel9.Caption:= '0';

Panel13.Caption:= '0';

// Coloana II
Panel6.Caption:= '1';

Panel10.Caption:= '0';

Panel14.Caption:= '0';

// Coloana III
Panel11.Caption:= '1';

Panel15.Caption:= '0';
// Coloana IV

s1:=k5/k2; Panel12.Caption:= floattostr(s1);


s2:=s1-k6/k3; Panel16.Caption:= floattostr(s2);

// Coloana termenilor liberi

s3:=k8/k2; Panel19.Caption:= floattostr(s3);


s4:=s3-k9/k3; Panel20.Caption:= floattostr(s4);

end;

procedure TForm1.Button7Click(Sender: TObject);


begin

// Coloana I
Panel1.Caption:= '1';

Panel5.Caption:= '0';

Panel9.Caption:= '0';

Panel13.Caption:= '0';

// Coloana II
Panel6.Caption:= '1';

Panel10.Caption:= '0';

Panel14.Caption:= '0';

// Coloana III
Panel11.Caption:= '1';

Panel15.Caption:= '0';

// Coloana IV
Panel16.Caption:= '1';

// Coloana termenilor liberi

s5:=s4/s2; Panel20.Caption:= floattostr(s5);


end;

procedure TForm1.Button2Click(Sender: TObject);


begin

r1:=s5/strtofloat(Panel16.Caption); Panel24.Caption:=floattostr(r1);
r2:=s3-s1*r1; Panel23.Caption:=floattostr(r2);

r3:=k7-k4*r1-k1*r2; Panel22.Caption:=floattostr(r3);
r4:=p4-p3*r1-p2*r2-p1*r3; Panel21.Caption:=floattostr(r4);

end;

procedure TForm1.Button3Click(Sender: TObject);


begin

E1.text:=''; E2.text:='';

E3.text:=''; E4.text:='';
E5.text:=''; E6.text:='';

E7.text:=''; E8.text:='';

E9.text:=''; E10.text:='';

E11.text:=''; E12.text:='';

E13.text:=''; E14.text:='';

E15.text:=''; E16.text:='';

E17.text:=''; E18.text:='';

E19.text:=''; E20.text:='';

Panel1.Caption:=''; Panel2.Caption:='';
Panel3.Caption:=''; Panel4.Caption:='';
Panel5.Caption:=''; Panel6.Caption:='';
Panel7.Caption:=''; Panel8.Caption:='';
Panel9.Caption:=''; Panel10.Caption:='';
Panel11.Caption:=''; Panel12.Caption:='';
Panel13.Caption:=''; Panel14.Caption:='';
Panel15.Caption:=''; Panel16.Caption:='';
Panel17.Caption:=''; Panel18.Caption:='';
Panel19.Caption:=''; Panel20.Caption:='';
Panel21.Caption:=''; Panel22.Caption:='';
Panel23.Caption:=''; Panel24.Caption:='';

end;
end.
Aplicația 4: (Sisteme 10 x 10)

Rezolvarea sistemelor de ecuații liniare utilizînd metoda lui Gauss

Realizare:

1. File / New Application.


2. Plasăm pe formă componente conform imaginii de mai sus ( vom avea 4 etichete, o
casetă de editare, 3 componente Stringgrid și 2 butoane).
3. Stabilim pentru proprietatea Text a componentei Edit valoarea conform imaginii de mai sus.
4. Prelucrăm evenimentul OnChange pentru component Edit.
5. Prelucrăm evenimentul OnCreate pentru Forma.
6. Prelucrăm evenimentul OnClick pentru componentele Button1 și Button2.
7. Lansăm aplicaţia la execuţie.

Codul sursă:
unit Unit3;
interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,


Dialogs, Grids, StdCtrls, jpeg, ExtCtrls;

const MaxDimension = 10;


type
Vector = array[1..MaxDimension] of Double;
Matrix = array[1..MaxDimension] of Vector;
TForm3 = class(TForm)

Label1: TLabel;

Edit1: TEdit;

StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
Button1: TButton;

Label2: TLabel;

Label3: TLabel;

ListBox1: TListBox;

Button2: TButton;

Label4: TLabel;

Image1: TImage;

procedure Edit1Change(Sender: TObject);


procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);

private

{ Private declarations }
public

{ Public declarations }
end;

var

Form3: TForm3;

Implementation

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);


var a: Matrix;

b,x: Vector;
h: Double;

i,j,k,n:integer;

begin

n := StrToIntDef(Text, StringGrid1.ColCount);
for j := 0 to n - 1 do

for i := 0 to n - 1 do

a[i + 1, j + 1] := StrToFloatDef(StringGrid1.Cells[j, i], 0);

for I := 0 to n - 1 do b[i + 1] := StrToFloatDef(StringGrid2.Cells[0, i],

0);

for i:=1 to n-1 do


for j:=i+1 to n do
begin

a[j,i]:=-a[j,i]/a[i,i];
for k:=i+1 to n do
a b[j]:=b[j]+a[j,i]*b[i]
[ end;
j
, x[n]:=b[n]/a[n,n];
k
] for i:=n-1 downto 1 do
: begin
=
a
h:=b[i];
[
j for j:=i+1 to n do h:=h-x[j]*a[i,j];
,
k x[i]:=h/a[i,i]
]
+ end;
a
[ for i:=1 to n do ListBox1.Items.Append('x(' + IntToStr(i) + ')=' +
j
,
i
]
*
a
[
i
,
k
]
;

FloatToStr(x[i]));
end;

procedure TForm3.Edit1Change(Sender: TObject);


begin

with StringGrid1, Edit1 do


begin

ColCount := StrToIntDef(Text, 3);


RowCount := StrToIntDef(Text, 3);

end;

with StringGrid2, Edit1 do


R eate(Sender: TObject); var i, j:
o integer;
w
C begin
o
u Randomize;
n
t for I := 0 to StrToIntDef(Text, StringGrid1.ColCount) - 1
do for J := 0 to StrToIntDef(Text,
: StringGrid1.RowCount) - 1 do
=
StringGrid1.Cells[I, J] := IntToStr(Random(100));
S
t for I := 0 to StrToIntDef(Text, StringGrid2.RowCount) - 1 do
r StringGrid2.Cells[0, I] := IntToStr(Random(100))
T
o end;
I
n
t procedure TForm3.Button2Click(Sender:
D TObject); begin
e
f ListBox1.Items.Clear;
(
T en
e d;
x en
t d.
,

3 Aplicația 5: (Sisteme 3 x 3)
)

end; Rezolvarea sistemelor de ecuații liniare utilizînd Factorizarea LU (Doolittle & Crout).

pr
o
c
e
d
u
r
e

T
F
o
r
m
3
.
F
o
r
m
C
Realizare:
r
1. File / New Application.
2. P m imaginii de mai sus ( vom avea 8 etichete, 12 casete de editare, 48 componente
l Panel și 4 butoane).
a 3. Stabilim pentru proprietatea Text a componentelor Edit valorile și pentru
s proprietatea Caption a componentelor Panel valori conform imaginii de mai
ă sus.
m 4. Prelucrăm evenimentul OnClick pentru componentele Button1 (afișează
descompunerea LU după Doolittle), Button2 (rezolvă Doolittle).
p
5. Prelucrăm evenimentul OnClick pentru componentele Button3 (afișează
e
descompunerea LU după Crout), Button4 (rezolvă Crout).
6. Lansăm aplicaţia la execuţie.
f
o
Codul sursă:
r
unit
m Unit1;
interfa
ă ce uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,


c Dialogs, jpeg, ExtCtrls, StdCtrls;

o type
m TForm1 =
class(TForm)
p
Edit1: TEdit;
o Edit2: TEdit;
Edit3: TEdit;
n Edit4: TEdit;
Edit5: TEdit;
e
Edit6: TEdit;
n Edit7: TEdit;
Edit8: TEdit;
t Edit9: TEdit;
Edit10:
e
TEdit;
Edit11:
TEdit;
c Edit12:
o TEdit;
Panel1:
n TPanel;
Panel2:
f TPanel;
o Panel3:
TPanel;
r Panel4:
TPanel;
P TPanel;
a Panel9:
n TPanel;
e Panel10:
l TPanel;
5 Panel11:
: TPanel;
Panel12:
T TPanel;
P Panel13:
a TPanel;
n Panel14:
e TPanel;
l Panel15:
; TPanel;
Panel16:
P TPanel;
a Panel17:
n TPanel;
e Panel18:
l TPanel;
6 Panel43:
: TPanel;
Panel46:
T TPanel;
P Panel44:
a TPanel;
n Panel47:
e TPanel;
l Panel45:
; TPanel;
Panel48:
P TPanel;
a Button1:
n TButton;
e Panel19:
l TPanel;
7 Panel20:
: TPanel;
Panel21:
T TPanel;
P Panel22:
a TPanel;
n
e Panel23:
l TPanel;
;
Panel24:
TPanel;
P
a Panel25:
n TPanel;
e
l Panel26:
8 TPanel;
:
P l30:
a TPanel;
n
e Panel31:
l TPanel;
2
Panel32:
7
TPanel;
:
Panel33:
T TPanel;
P
a Panel34:
n TPanel;
e
l Panel35:
; TPanel;

P Panel36:
a TPanel;
n
Panel37:
e
TPanel;
l
2 Panel38:
8 TPanel;
:
Panel39:
T TPanel;
P
a Panel40:
n TPanel;
e
l Panel41:
; TPanel;

P Panel42:
a TPanel;
n
Button2:
e
TButton;
l
2 Label1:
9 TLabel;
:
Label2:
T TLabel;
P
a Label3:
n TLabel;
e
Label4:
l
TLabel;
;
Label6:
P
TLabel;
a
n Label5:
e TLabel;
L n3:
a TButton;
b
e Button4:
l TButton;
7
procedure Button3Click(Sender:
:
TObject); procedure
Button1Click(Sender: TObject);
T
procedure Button4Click(Sender:
L
TObject); procedure
a
Button2Click(Sender: TObject);
b
e private
l
; { Private
declarations } public
L
a { Public
b declarations } end;
e
var
l
8 Form1: TForm1;
: l1,l2,l3,u1,u2,u3,u4,u5,u6,y1,y2,y3,x1,x2,x3:real;

s1,s2,s3,k1,k2,k3,k4,k5,k6,z1,z2,z3,w1,w2,w3:real;
T
implementation
L
a
{$R *.dfm}
b
e
l procedure TForm1.Button3Click(Sender:
; TObject); begin

L u1:=strtofloat(Edit1.Text);
a l1:=strtofloat(Edit5.Text)/u1;
b l2:=strtofloat(Edit9.Text)/u1;
e u2:=strtofloat(Edit2.Text);
l u4:=strtofloat(Edit6.Text)-l1*u2;
9 l3:=(strtofloat(Edit10.Text)-
: l2*u2)/u4;
u3:=strtofloat(Edit3.Text);
T u5:=strtofloat(Edit7.Text)-l1*u3;
L u6:=strtofloat(Edit11.Text)-l2*u3-
a l3*u5;
b
e // Afisare matricea L
l
;

B
u
t
t
o
end; Panel4.Caption:=floattostr(l1);
Panel7.Caption:=floattostr(l2);
Panel8.Caption:=floattostr(l3);

// Afisare matricea U
Panel10.Caption:=floattostr(u1);
Panel11.Caption:=floattostr(u2);
Panel12.Caption:=floattostr(u3);
Panel14.Caption:=floattostr(u4);
Panel15.Caption:=floattostr(u5);
Panel18.Caption:=floattostr(u6);

procedure TForm1.Button1Click(Sender: TObject);


begin

// Rezolvam sistemul: L*Y=B


y1:=strtofloat(Edit4.Text);
y2:=strtofloat(Edit8.Text)-l1*y1;
y3:=strtofloat(Edit12.Text)-l2*y1-l3*y2;

// Afisare Y
Panel37.Caption:=floattostr(y1);
Panel38.Caption:=floattostr(y2);
Panel39.Caption:=floattostr(y3);

// Rezolvam sistemul: U*X=Y


x3:=y3/u6;

x2:=(y2-u5*x3)/u4;
x1:=(y1-u3*x3-u2*x2)/u1;
end;
// Afisare X
Panel40.Caption:=floattostr(x1);
Panel41.Caption:=floattostr(x2);
Panel42.Caption:=floattostr(x3);

procedure TForm1.Button4Click(Sender: TObject);


begin

k1:=Strtofloat(Edit1.Text);
k2:=Strtofloat(Edit5.Text);
k3:=Strtofloat(Edit9.Text);
s1:=Strtofloat(Edit2.Text)/k1;
k4:=Strtofloat(Edit6.Text)-k2*s1;
k5:=Strtofloat(Edit10.Text)-k3*s1;
s2:=Strtofloat(Edit3.Text)/k1;
s3:=(Strtofloat(Edit7.Text)-k2*s2)/k4;
k6:=Strtofloat(Edit11.Text)-k3*s2-k5*s3;

// Afisare matricea L
Panel29.Caption:=floattostr(s1);
Panel30.Caption:=floattostr(s2);
Panel33.Caption:=floattostr(s3);

// Afisare matricea U
Panel19.Caption:=floattostr(k1);
Panel22.Caption:=floattostr(k2);
end;
P l25.Caption:=floattostr(k3);
a Panel23.Caption:=floattostr(k4);
n Panel26.Caption:=floattostr(k5);
e Panel27.Caption:=floattostr(k6);

procedure TForm1.Button2Click(Sender: TObject);


begin

// Rezolvam sistemul: L*Y=B


z1:=strtofloat(Edit4.Text)/k1;
z2:=(strtofloat(Edit8.Text)-k2*z1)/k4;

End

S-ar putea să vă placă și