Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AstronomieBiofizicaBiologieBotanicaCartiChimieCopii
Educatie civicaFabule ghicitoriFizicaGramaticaJocLiteratura romanaLogica
MatematicaPoeziiPsihologie psihiatrieSociologie


Metoda aproximatiilor succesive

Matematica



+ Font mai mare | - Font mai mic



Metoda aproximatiilor succesive

Fie sistemul de n ecuatii liniare cu n necunoscute

(2.50)



Notand

,

sistemul (2.50) devine:

Ax = b

Presupunem ca pentru orice avem aii ≠ 0.

Explicitand necunoscuta xi din ecuatia i (), sistemul (2.50) devine:

(2.51)

sau, notand

sistemul (2.51) devine

(2.52)

Solutia sistemului (2.52) se cauta pornind de la o solutie initiala x(0) (care, de exemplu, poate fi chiar β, adica x(0) = β).

Construim sirul de iteratii

. . . . (2.53)

unde k =0, 1, 2, . .

Obtinem un sir x(0), x(1), x(2), . , x(k+1), . Daca acest sir este convergent, notam

care va fi tocmai solutia sistemului si implicit a lui (2.50), deoarece:

sau

Observatie 2.4.1 Relatiile (2.53), scrise pe componente, devin:

, k = 0, 1, 2, .

Programul pentru metoda aproximatiilor succesive cu limbajul C++

Programul rezolva un sistem de n ecuatii liniare cu n necunoscute compatibil determinat. Pentru simplificarea programului si pentru reducerea spatiului de memorie folosit vom inlocui in matricea A elementele aij cu elementele corespunzatoare din matricea α, iar matricea b cu matricea β.

Pentru determinarea solutiei folosim doi vectori: x pentru iteratia curenta si xa pentru iteratia anterioara. Ca aproximare initiala este aleasa valoarea β. Criteriul de oprire este norma euclidiana a vectorului diferenta x - xa. Precizia este data in cadrul programului (eps). Datele de intrare sunt: dimensiunea sistemului, coeficientii si termenii liberi.

# include<iostream.h>

# include<math.h>

# include<conio.h>

int n, i, j, t;

double a[10][10], b[10], x[10], xa[10], s, eps=0.00001;

void main (void)

cout<<"Introduceti termenii liberi;"<<endl;

for (i = 1; i <= n; i++)

i = 1;

t = 0;

do

while ((i <= n)&&(t = = 0));

if (t = = 1)

cout<<"Metoda nu converge!"<<endl;

else

do

s=sqrt(s);}

while (s>=eps);

cout<<"Solutia sistemului:"<<end;

for (i = 1; i <= n; i++)

cout<<"x("<<i<<")="<<x[i]<<endl;

}

getch ( );

}



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 2214
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved