Documente Academic
Documente Profesional
Documente Cultură
Raport
La Lucrarea de laborator nr.2
Chișinău 2019
Scopul lucrării:
Să se rezolve sistemul de ecuaţii liniare Ax=b,utilizând
-metoda lui Cholesky(metoda rădăcinii pătrate).
-metoda iterativă a lui Jacobi cu o eroare e=0.001.
-metoda iterativă a lui Gauss-Seidel cu o eroare e=0,001 şi c=0,00001.
#include <stdio.h>
#include <math.h>
2,8,1,
{ int i,j,k,k1=0;
float t,x[n],l[n][n],y[n];
l[0][0]=sqrt(A[0][0]); for(i=1;i<n;i++)
{l[i][0]=A[i][0]/l[0][0]; } for(k=1;k<n;k++)
{t=0;
for(j=0;j<k1;j++)
t+=l[k][j]*l[k][j];
l[k][k]=sqrt(A[k][k]t);
for(i=k+1;i<n;i++)
{t=0;
for(j=0;j<k1;j++)
t+=l[i][j]*l[k][j];
l[i][k]=(A[i][k]t)/l[k][k];}k1++;} for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{l[i][j]=l[j][i]; }
for(i=0;i<n;i++)
{t=0; for(j=0;j<i;j++)
{t=0; for(j=n1;j>i;j)
for(i=0;i<n;i++)
printf("%7.3f ",x[i]);
cout<<endl<<endl;
void jacobi()
{int i,j,m,k1=0;
for(j=0;j<n;j++) {if(i==j)
{s[i][j]=1/A[i][j];
t[i][j]=0;}
else
{s[i][j]=0;
t[i][j]=A[i][j];}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{v=0;
for(m=0;m<n;m++)
v+=s[i][m]*t[m][j];
q[i][j]=v; } for(i=0;i<n;i++)
{v=0;
for(m=0;m<n;m++) v+=s[i][m]*B[m];
d[i]=v; }
for(i=0;i<n;i++)
for(i=0;i<n;i++)
{v=0;
for(m=0;m<n;m++)
v+=x1[m]*q[i][m];
if(er<fabs(x1[m]x[m]))
er=fabs(x1[m]x[m]); }
while(er>0.001);
cout<<"\n==Numarul de iteratii:"<<k1<<endl<<endl;
void gauss_seidel()
{ int i,j,m,k1=0,k;
float v,x[n],q[n][n],d[n],s[n][n],t[n][n],x1[n],er;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{ if(i==j)
{ s[i][j]=0;
t[i][j]=A[i][j];} };
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{ v=0;
for(m=0;m<n;m++)
v+=s[i][m]*t[m][j]; q[i][j]=v;
for(i=0;i<n;i++)
{ v=0;
}
for(i=0;i<n;i++)
x[i]=d[i];
for(i=0;i<n;i++)
{v=0;
for(m=0;m<n;m++)
v+=x[m]*q[i][m];
x[i]=v+d[i];}
while(er>0.00001);
printf("%7.5f ",x[i]);
int main()
{int p;
do { cout<<"1.Metoda lui Cholesky "<<endl; cout<<"2.Metoda iterativa a lui Jacobi"<<endl; cout<<"3.Metoda iterativa a lui
GaussSeidel"<<endl; cout<<"4.Exit"<<endl;
default:break; };
while(p!=4);
}
Concluzie:
În această lucrare de laborator am studiat 3 metode de rezolvare a sistemelor de
ecuatii liniare: metoda lui Cholesky,metoda iterativa a lui Jacobi si metoda iterativa a lui
Gauss-Seidel . Implementindule intr-un program am observat numarul de iteratii
necesare pentru obtinerea unor solutii cît mai apropiate.
1) Metoda lui Cholesky s-a dovedit a fi cea mai puţin eficientă fiindcă:are o realizare
mai complicată, numărul de operaţii proportional cu n 3 ,rezultatul a fost obţinut
cu o eroare de 10-3 .
2) Metoda lui Jacobi ar fi cea mai eficientă, dacă numărul de ecuaţii e de
ordinulzecilor, căci are o realizare relativ simplă, numărul de operaţii e
proporţional cu n2 , valorile obţinute fiind cele mai apropiate de rezultatul exact.
3) Metoda Gauss-Seidel în cazul de faţă(numarul de ecuaţii e mic), fapt care
reiesedin rezultatul mai puţin exact. Totuşi în cazul sistemelor mari această
metodă cere un număr de 2 ori mai mic de operaţii faţă de metoda Jacobi.