Documente Academic
Documente Profesional
Documente Cultură
Metodele iterative au la bază construcţia unui şir de aproximate ale soluţiei x(0), x(1), …. Pentru
fiecare metodă trebuie cunoscute condiţii pe care să le satisfacă matricea A pentru ca şirul să fie
convergent. Convergenţa şirului ne asigură posibilitatea de a alege un şir astfel încât x(k) să
aproximeze soluţia cu precizia dorită.
Metodele iterative staţionare pot fi exprimate în forma simplificată x ( k ) Cx( k 1) E unde k
prezintă pasul de iterare, iar CMn,n şi EMn,1 nu depind de pasul de iterare, adică acestea rămân
constante pe durata iterării. În continuare sunt prezentate 2 metode staţionare iterative.
(1) {
(2)
Dacă în partea dreaptă a sistemului (2) se introduce o soluţie iniţiala xi(0) (care de cele mai
multe ori se ia egală cu zero xi(0)=0 ), prin rezolvarea sistemului (2) se obţine prima soluţie
aproximativă xi(1). Introducând noua soluţie obţinută în partea dreaptă a sistemului se obţine a doua
soluţie aproximativă xi(2).
(3) ( ∑ )
| | ∑| |
NOTĂ. În cazul în care condiţia de convergenţă este satisfăcută, atunci şi soluţia căutată va
converge spre soluţia reală, indiferent de valoarea aproximaţiei iniţiale x0.
1
Laborator 7 2020
Pentru rezolvarea acestui sistem e nevoie mai întâi să rearanjăm ecuaţiile în aşa fel încât fiecare
necunoscută să aibă cel mai mare coeficient în modul pe linia i şi coloana i, pornind cu i=1:
{ ( ), ( )
Rezolvăm fiecare ecuaţie faţă de necunoscuta respectivă. Prima dată ne uităm dacă avem cel mai
mare coeficient pe linia 1, respectiv coloana 1, apoi ne uităm la linia 2, respectiv coloana 2, şi în
cele din urmă la cel mai mare coeficient de pe linia 3, coloana 3. Se poate observa că sistemul este
bine aranjat şi putem începe rezolvarea ecuaţiilor faţă de cele trei necunoscute.
( )
( )
( )
{
2
Laborator 7 2020
Soluţii/ 0 1 2 3 4 5 6 7 8 9
Iteraţii
x1 0 1.000 1.095 0.994 0.992 1.001 1.000 0.999 1.000 1.000
x2 0 1.333 1.048 0.968 0.998 1.003 0.999 0.999 1.000 1.000
x3 0 0.571 1.095 1.027 0.990 0.998 1.001 1.000 0.999 1.000
Din tabel se poate observa că după a 9-a iteraţie soluţiile nu se mai schimbă.
Condiţia de ieşire în cazul problemei noastre este = 10-5. În situaţia de faţă la iteraţia a 9-a s-a
obţinut soluţia finală x1=x2=x3=1.000, deoarece la k=9 avem | | , adică
0 .
Răspuns: x1=x2=x3=1.000
if n~=length(b)
error('Dimensiunea vectorului termenilor liberi este gresita');
end
a=[a b];
%rearanjam sistemul ca sa avem la a[i,i] valoarea maxima
for i=1:n
[mc,kc]=max(abs(a(i,1:n))); %linia i
[ml,kl]=max(abs(a(:,i))); % coloana i
if ml > mc
a([i kl],:)=a([kl i],:);
else
a(:,[i kc])=a(:,[kc i]);
end
end
norma=epsilon+1;
Exerciţiu I:
1. Aplicând metoda lui Jacobi rezolvaţi sistemele de ecuaţii liniare (folosind funcţia Matlab
construită la punctul 1) eroare mai mică decât 10-3. Reprezentaţi graficul soluţiilor pentru
fiecare sistem.
(Temă pentru acasă (scris-pct.b-c) – să se calculeze sistemele aplicând metoda Jacobi.
Pentru fiecare sistem se calculează soluţiile metodei Jacobi cu 3 paşi)
4
Laborator 7 2020
a) {
b) {
c) {
2. Câte iteraţii trebuie făcute pentru a găsii soluţia sistemului de la exerciţiu I punctul (a) cu o
eroare mai mică decât 10-3.
3. Modificaţi funcţia Jacobi (salvaţi cu numele Jacobi_Iteratii) astfel încât numărul de iteraţii
să fie fixat de utilizator. Funcţia va primi ca parametru numărul de iteraţii, în loc de epsilon.
( ∑ ∑ )
NOTĂ. Avantajul esenţial al acestei metode îl constituie creşterea vitezei de convergenţă, datorită
reducerii numărului total de iteraţii necesare.
Exemplu 2: Vom rezolva sistemul de la Exemplu 1 pentru a arăta rapiditatea convergenţei soluţiei
numerice la utilizarea metodei Gauss-Seidel. Ca şi la metoda lui Jacobi e nevoie mai întâi să
rearanjăm ecuaţiile în aşa fel încât fiecare necunoscută să aibă cel mai mare coeficient în modul pe
linia i şi coloana i.
{ ( ), ( )
( )
( )
( )
{
5
Laborator 7 2020
Soluţii/Iteraţii 0 1 2 3 4
x1 0 1.000 1.099 0.999 1.000
x2 0 1.111 0.994 1.000 1.000
x3 0 1.032 0.999 1.000 1.000
Din tabel se poate observa că după a 4-a iteraţie soluţiile nu se mai schimbă.
Răspuns: x1=x2=x3=1.000
Exerciţiu II:
6
Laborator 7 2020
2) Scrieți un fișier script în Matlab pentru a verifica timpul de execuţie al funcţiei Jacobi şi al
funcţiei Gauss_Seidel pentru sistemul:
Acest sistem are soluţia X=[1;1;1;1;1;1]. Folosind funcţiile Matlab de la metoda lui Jacobi
şi Gauss-Seidel, să se rezolve sistemul liniar. Ca şi aproximaţie iniţială se va folosi X(0)=0.
Precizia cu care se cer soluţiile este =0.0001. Reprezentaţi grafic rezultatele şi apoi
comparaţiile.
(Temă pentru acasă (scris)) Să se determine soluţiile aproximative ale sistemului folosind
metoda lui Gauss-Seidel cu 3 paşi, cu X(0)=0
7