Documente Academic
Documente Profesional
Documente Cultură
neliniare
Introducere
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.
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.
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.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.
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.
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.
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
Aplicația 1: (Sisteme 2 x 2)
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;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
k1,k2,k3,k4,k5,k6:real;
implementation
Uses Unit2;
{$R *.dfm}
// 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);
Form2.ShowModal;
end;
end.
Aplicația 2: (Sisteme 3 x 3)
Realizare:
Codul sursă:
unit Unit1;
interface
uses
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;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
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;
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;
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;
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;
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;
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:
Codul sursă:
unit Unit1;
interface
uses
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;
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);
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;
// 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
// Coloana IV
k4:= P7/P5; Panel8.Caption:=floattostr(k4);
k5:= k4-P11/P9; Panel12.Caption:=floattostr(k5);
end;
// 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
end;
// 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';
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;
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)
Realizare:
Codul sursă:
unit Unit3;
interface
uses
Label1: TLabel;
Edit1: TEdit;
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
Button1: TButton;
Label2: TLabel;
Label3: TLabel;
ListBox1: TListBox;
Button2: TButton;
Label4: TLabel;
Image1: TImage;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
Implementation
{$R *.dfm}
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
0);
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;
end;
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
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);
// Afisare Y
Panel37.Caption:=floattostr(y1);
Panel38.Caption:=floattostr(y2);
Panel39.Caption:=floattostr(y3);
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);
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);
End