You are on page 1of 51

Lab 1.

#include <iostream.h>
#include <math.h>
#include <stdlib.h>
void main()
{
int n,i,j;
double A[10][10],b[10];
double eps=0.0001;
cout<<"Dati ordinul matricii: ";
cin>>n;
cout<<"Dati matricea sistemului: \n";
for (i=1; i<=n;i++)
for(j=1; j<=n;j++)
{
cout<<"A["<<i<<","<<j<<"]=";
cin>>A[i][j];
}
cout<<"Matrice este: \n";
for (i=1; i<=n;i++)
{
for(j=1; j<=n;j++)
cout<<A[i][j]<<" ";
cout<<endl;
}
cout<<"Dati matricea termenilor liberi: \n";
for (i=1;i<=n; i++)
{
cout<<"b["<<i<<"]=";
cin>>b[i];
}
cout<<"Matricea termenilor liberi este: \n";
for (i=1;i<=n; i++)
{
cout<<b[i]<<endl;
}
if (n==2)
{
double det=A[1][1]*A[2][2]-A[1][2]*A[2][1];
if (fabs(det)<=eps)
{
cout<<"Matricea coef este singulara!!!";
exit(1);
}
else
{
double x1,x2;
cout<<"Solutiile sitemului sunt: \n";
x1=(b[1]*A[2][2]-b[2]*A[1][2])/det;
x2=(b[2]*A[1][1]-b[1]*A[2][1])/det;
cout<<x1<<endl;
cout<<x2<<endl;
}
}
else
{
double det=A[1][1]*A[2][2]*A[3][3]+A[2][1]*A[3][2]*A[1][3]+A[1]
[2]*A[2][3]*A[3][1]-A[1][3]*A[2][2]*A[3][1]-A[2][3]*A[3][2]*A[1][1]-A[1]
[2]*A[2][1]*A[3][3];
if (fabs(det)<=eps)
{
cout<<"Matricea coef este singulara!!!";
exit(1);
}
else
{
double x1,x2,x3;
cout<<"Solutiile sitemului sunt: \n";
x1=(b[1]*A[2][2]*A[3][3]+b[2]*A[3][2]*A[1][3]+A[1][2]*A[2]
[3]*b[3]-A[1][3]*A[2][2]*b[3]-A[2][3]*A[3][2]*b[1]-A[1][2]*b[2]*A[3][3])/det;
x2=(A[1][1]*b[2]*A[3][3]+A[2][1]*b[3]*A[1][3]+b[1]*A[2][3]*A[3]
[1]-A[1][3]*b[2]*A[3][1]-A[2][3]*b[3]*A[1][1]-b[1]*A[2][1]*A[3][3])/det;
x3=(A[1][1]*A[2][2]*b[3]+A[2][1]*A[3][2]*b[1]+A[1][2]*b[2]*A[3]
[1]-b[1]*A[2][2]*A[3][1]-b[2]*A[3][2]*A[1][1]-A[1][2]*A[2][1]*b[3])/det;
cout<<x1<<endl;
cout<<x2<<endl;
cout<<x3<<endl;
}
}
}

Lab 2.

Prg1//Gauss

#include <iostream.h>

#include <math.h>

#include <stdlib.h>
void main()
{
int n;
double A[100][100], b[100], eps=0.00000000000000001,num,numi;

cout<<"Dati n: ";
cin>>n;
for (int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
{
cout<<"numarator A["<<i<<"]["<<j<<"]=";
cin>>num;
cout<<"numitor A["<<i<<"]["<<j<<"]=";
cin>>numi;
A[i][j]=num/numi;
}
for ( i=1; i<=n; i++)
{
cout<<"numarator b["<<i<<"]=";
cin>>num;
cout<<"numitor b["<<i<<"]=";
cin>>numi;
b[i]=num/numi;
}
for (int p=1; p<=n-1; p++)
if (fabs(A[p][p])<=eps)
{
cout<<"Impartire la zero!!!";
exit(1);
}
else
{
for (i=p+1; i<=n; i++)
{
double t=A[i][p]/A[p][p];
for (int j=p+1; j<=n; j++)
A[i][j]=A[i][j]-A[p][j]*t;
b[i]=b[i]-b[p]*t;
}
for (int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
cout<<A[i][j]<<" ";
cout<<endl;
}
cout<<endl;
for ( i=1; i<=n; i++)
cout<<b[i]<<" ";
}
if (fabs(A[n][n])<=eps)
{
cout<<"Matrice singulara";
exit(1);
}
else
{
b[n]=b[n]/A[n][n];
for (i=n-1; i>=1; i--)
{ double s=0;
for(int j=i+1; j<=n; j++)
s+=A[i][j]*b[j];
b[i]=(b[i]-s)/A[i][i];
}
cout<<endl;
for ( i=1; i<=n; i++)
cout<<b[i]<<" ";
}
}

Prg2//Matricea triunghiulara

#include <iostream.h>
#include <stdlib.h>
void main()
{
double A[100][100];
int i,j,n;
cout<<"Dati n: ";
cin>>n;
for (i=1; i<=n; i++)
for(j=1; j<=n; j++)
{
cout<<"A["<<i<<"]["<<j<<"]=";
cin>>A[i][j];
}
for(i=2; i<=n; i++)
for(j=1;j<i;j++)
{
if(A[i][j]!=0)
{
cout<<"Matricea nu e triunghiulara!!!";
exit(1);
}
if (A[j][j]==0)
{
cout<<"Matricea nu e triunghiulara!!";
exit(1);
}
}
cout<<"Matricea e triunghiulara!!!";

Lab3.

Prg1//metoda gauss cu pivotare partiala


#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include <iomanip.h>
#include <stdio.h>
#include <fstream.h>
void main()
{
int n;
double A[100][100], b[100], eps=0.00000000000000001, aux;

*//introducerea datelor
cout<<"Dati n: ";
cin>>n;
for (int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
{
cout<<"A["<<i<<"]["<<j<<"]=";
cin>>A[i][j];
}
for ( i=1; i<=n; i++)
{
cout<<"b["<<i<<"]=";
cin>>b[i];
}
*/
ifstream f("input.txt");
f>>n;
for (int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
{
f>>A[i][j];
}
for ( i=1; i<=n; i++)
{
f>>b[i];
}
cout<<endl;
//pivotarea si transf in forma triunghiulara superior
for (int p=1; p<=n-1; p++)
{
double M=A[p][p];
int l=p;
for(i=p; i<=n; i++)
if (M<fabs(A[i][p]))
{
M=A[i][p];
l=i;
}
if (fabs(M)<=eps)
{
cout<<"Impartire la zero!!!";
exit(1);
}
else
{
if (p!=l)
{
for (i=p; i<=n; i++)
{
aux=A[p][i];
A[p][i]=A[l][i];
A[l][i]=aux;
}
aux=b[p];
b[p]=b[l];
b[l]=aux;
}
for (i=p+1; i<=n; i++)
{
double t=A[i][p]/A[p][p];
for (int j=p; j<=n; j++)
A[i][j]=A[i][j]-A[p][j]*t;
b[i]=b[i]-b[p]*t;
}

//afisare pt verificare
printf(" x1 x2 x3 b\n");
cout<<endl;
for (int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
printf("%6g ",A[i][j]);
printf("%6g ",b[i]);
cout<<endl;
}

cout<<endl;
cout<<endl;
}
}

if (fabs(A[n][n])<=eps)
{
cout<<"Matrice singulara";
exit(1);
}
else
{
b[n]=b[n]/A[n][n];
for (i=n-1; i>=1; i--)
{ double s=0;
for(int j=i+1; j<=n; j++)
s+=A[i][j]*b[j];
b[i]=(b[i]-s)/A[i][i];
}
cout<<endl;
for ( i=1; i<=n; i++)
cout<<"x["<<i<<"]="<<b[i]<<" \n";
}
cout<<"\n";
}

Prg2//metoda gauss cu pivotare partiala


#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include <iomanip.h>
#include <stdio.h>
#include <fstream.h>
void main()
{
int n,l,c[100],i,j;
double A[100][100], b[100], eps=0.00000000000000001, aux;

/*//introducerea datelor
cout<<"Dati n: ";
cin>>n;

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


for(int j=1; j<=n; j++)
{
cout<<"A["<<i<<"]["<<j<<"]=";
cin>>A[i][j];
}

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


{
cout<<"b["<<i<<"]=";
cin>>b[i];
}
*/

ifstream f("input.txt");
f>>n;
for (i=1; i<=n; i++)
for(j=1; j<=n; j++)
{
f>>A[i][j];
}
for ( i=1; i<=n; i++)
{
f>>b[i];
}
cout<<endl;

//pivotarea si transf in forma triunghiulara superior


for (int p=1; p<=n-1; p++)
{
double M=A[p][p];
l=p;
c[p]=p;
for(i=p; i<=n; i++)
for(j=p; j<=n; j++)
if (M<fabs(A[i][j]))
{
M=A[i][j];
l=i;
c[p]=j;
}
cout<<M<<" "<<l<<" "<<c[p]<<endl;
if (fabs(M)<=eps)
{
cout<<"Impartire la zero!!!";
exit(1);
}
else
{
if (p!=l)
{
for (i=p; i<=n; i++)
{
aux=A[p][i];
A[p][i]=A[l][i];
A[l][i]=aux;
}
aux=b[p];
b[p]=b[l];
b[l]=aux;
}
if (p!=c[p])
for (i=1; i<=n; i++)
{
aux=A[i][p];
A[i][p]=A[i][c[p]];
A[i][c[p]]=aux;
}
for (i=p+1; i<=n; i++)
{
double t=A[i][p]/A[p][p];

for (int j=p; j<=n; j++)


A[i][j]=A[i][j]-A[p][j]*t;
b[i]=b[i]-b[p]*t;
}

//afisare pt verificare
printf(" x1 x2 x3 b\n");
cout<<endl;
for (int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
printf("%6g ",A[i][j]);
printf("%6g ",b[i]);
cout<<endl;
}
cout<<endl;
cout<<endl;
}
}
if (fabs(A[n][n])<=eps)
{
cout<<"Matrice singulara";
exit(1);
}
else
{
b[n]=b[n]/A[n][n];
for (i=n-1; i>=1; i--)
{ double s=0;
for(int j=i+1; j<=n; j++)
s+=A[i][j]*b[j];
b[i]=(b[i]-s)/A[i][i];
}
cout<<endl;
for (p=n-1; p>=1; p--)
{
aux=b[p];
b[p]=b[c[p]];
b[c[p]]=aux;
}
for ( i=1; i<=n; i++)
cout<<"x["<<i<<"]="<<b[i]<<" \n";
}
cout<<"\n";
}

Lab4
Prg1//desc_lu
#include <iostream.h>
#include <fstream.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void main()
{
int n,i,j,k;
double A[100][100] , eps=0.00000000000000001;

//citirea datelor din fisier


ifstream f("input.txt");
f>>n;
for ( i=1; i<=n; i++)
for( j=1; j<=n; j++)
{
f>>A[i][j];
}

for (int p=1; p<=n-1; p++)


if (fabs(A[p][p])<=eps)
{
cout<<"Impartire la zero!!!";
exit(1);
}
else
{
for (i=p+1; i<=n; i++)
{
A[i][p]=A[i][p]/A[p][p];
for (int j=p+1; j<=n; j++)
A[i][j]=A[i][j]-A[p][j]*A[i][p];
}

printf(" x1 x2 x3\n");
cout<<endl;
for (int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
printf("%6g ",A[i][j]);
cout<<endl;
}
cout<<endl;cout<<endl;

}
cout<<"Matricea L:"<<endl;
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
if (i==j)
{
cout<<1<<" ";
}
else
if(i>j)
cout<<A[i][j]<<" ";
else
cout<<0<<" ";
cout<<endl;

}
cout<<"Matricea U:"<<endl;
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
if(i>j)
cout<<0<<" ";
else
cout<<A[i][j]<<" ";
cout<<endl;
}
cout<<"Matricea A:"<<endl;
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
{
double s=0;
double m=i;
if (m>j) m=j;

for (k=1; k<=m; k++)


if (i==k) s=s+A[k][j];
else
s=s+A[i][k]*A[k][j];
cout<<s<<" ";
}
cout<<endl;
}
}

Prg2//matricea inferioara_tr

#include <iostream.h>
#include <stdlib.h>
#include <fstream.h>
void main()
{
double A[100][100];
int i,j,n;
ifstream f("input.txt");
f>>n;
for (i=1; i<=n; i++)
for(j=1; j<=n; j++)
{
f>>A[i][j];
}
double mat=1;
for(i=1; i<=n; i++)
for(j=1;j<=n;j++)
{
if((i>=j)&&(A[i][j]==0))
{
mat=0;
break;
}
if((i<j)&&(A[i][j]!=0))
{
mat=0;
break;
}
}
if (mat) cout<<"este";
else cout<<"nu-i";
}

Prg3//matricea triunghiulara_ver

#include <iostream.h>
#include <stdlib.h>
#include <fstream.h>
void main()
{
double A[100][100],aux;
int i,j,n,p,m;
ifstream f("input.txt");
f>>n;
for (i=1; i<=n; i++)
for(j=1; j<=n; j++)
{
f>>A[i][j];
}

do
{
cout<<"Dati p,m(p<m): ";
cin>>p>>m;
}
while (p>m);

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


{
aux=A[p][i];
A[p][i]=A[m][i];
A[m][i]=aux;
}
for (i=1; i<=n; i++)
{
aux=A[i][p];
A[i][p]=A[i][m];
A[i][m]=aux;
}

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


{
for(j=1; j<=n; j++)
cout<<A[i][j]<<" ";
cout<<endl;
}
double mat=1;
for(i=1; i<=n; i++)
for(j=1;j<=n;j++)
{
if((i>=j)&&(A[i][j]==0))
{
mat=0;
break;
}
if((i<j)&&(A[i][j]!=0))
{
mat=0;
break;
}
}

if (mat) cout<<"este";
else cout<<"nu-i";
}

Lab5

Prg1//metoda gauss cu pivotare partiala


#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include <iomanip.h>
#include <stdio.h>
#include <fstream.h>
void main()
{
int n,i,j,k;
double A[100][100],B[100][100], eps=0.00000000000000001, aux;

/*//introducerea datelor
cout<<"Dati n: ";
cin>>n;

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


for(int j=1; j<=n; j++)
{
cout<<"A["<<i<<"]["<<j<<"]=";
cin>>A[i][j];
}

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


{
cout<<"b["<<i<<"]=";
cin>>b[i];
}
*/

ifstream f("input.txt");
f>>n;

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


for(j=1; j<=n; j++)
{
f>>A[i][j];
B[i][j]=A[i][j];
}

cout<<endl;

for (int p=1; p<=n-1; p++)


{
double M=A[p][p];
int l=p;

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


if (M<fabs(A[i][p]))
{
M=A[i][p];
l=i;
}

if (fabs(M)<=eps)
{
cout<<"Impartire la zero!!!";
exit(1);
}
else
{
if (p!=l)
{
for (i=1; i<=n; i++)
{
aux=A[p][i];
A[p][i]=A[l][i];
A[l][i]=aux;

aux=B[p][i];
B[p][i]=B[l][i];
B[l][i]=aux;
}
}
for (i=p+1; i<=n; i++)
{
A[i][p]=A[i][p]/A[p][p];
for (int j=p+1; j<=n; j++)
A[i][j]=A[i][j]-A[p][j]*A[i][p];
}
cout<<endl;
}
}
cout<<"Matricea L:"<<endl;
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
if (i==j)
{
cout<<1<<" ";
}
else
if(i>j)
cout<<A[i][j]<<" ";
else
cout<<0<<" ";
cout<<endl;

cout<<"Matricea U:"<<endl;

for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
if(i>j)
cout<<0<<" ";
else
cout<<A[i][j]<<" ";
cout<<endl;
}

cout<<"Matricea A:"<<endl;

for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
{
double s=0;
double m=i;
if (m>j) m=j;

for (k=1; k<=m; k++)


if (i==k) s=s+A[k][j];
else
s=s+A[i][k]*A[k][j];
cout<<s<<" ";
}
cout<<endl;
}

cout<<"Matricea A~:";
cout<<endl;
for (i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
printf("%6g ",A[i][j]);
cout<<endl;
}

Prg2//metoda gauss cu pivotare partiala


#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include <iomanip.h>
#include <stdio.h>
#include <fstream.h>

void main()
{
int n,i,j;
double A[100][100],b[100], eps=0.00000000000000001, aux, s=0;;
//citirea datelor

ifstream f("input.txt");

f>>n;

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


for(j=1; j<=n; j++)
{
f>>A[i][j];
}

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


f>>b[i];

cout<<endl;

//asd
for (int p=1; p<=n-1; p++)
{
double M=A[p][p];
int l=p;

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


if (M<fabs(A[i][p]))
{
M=A[i][p];
l=i;
}

if (fabs(M)<=eps)
{
cout<<"Impartire la zero!!!";
exit(1);
}
else
{
if (p!=l)
{
for (i=1; i<=n; i++)
{
aux=A[p][i];
A[p][i]=A[l][i];
A[l][i]=aux;
}
aux=b[p];
b[p]=b[l];
b[l]=aux;
}
for (i=p+1; i<=n; i++)
{
A[i][p]=A[i][p]/A[p][p];
for (int j=p+1; j<=n; j++)
A[i][j]=A[i][j]-A[p][j]*A[i][p];
}
cout<<endl;
}
}

//matricea L
double L[100][100]={0};

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


L[i][i]=1;

for (i=2;i<=n;i++)
for (j=1;j<i;j++)
L[i][j]=A[i][j];

cout<<"Matricea L:"<<endl;

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


{
for( j=1; j<=n; j++)
printf("%6g ",L[i][j]);
cout<<endl;
}
//matricea U
double U[100][100]={0};

for (i=1;i<=n;i++)
for (j=i;j<=n;j++)
U[i][j]=A[i][j];

cout<<"Matricea U:"<<endl;

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


{
for( j=1; j<=n; j++)
printf("%6g ",U[i][j]);
cout<<endl;
}
//rez Ly=b;
if (fabs(L[1][1])<=eps)
{
cout<<"Matrice singulara!!!";
exit(1);
}
else
{
b[1]=b[1]/L[1][1];
for (i=2; i<=n; i++)
if (fabs(L[i][i])<=eps)
{
cout<<"Matrice singulara!!!";
exit(1);
}
else
{
double s=0;
for (j=1;j<i;j++)
s+=L[i][j]*b[j];
b[i]=(b[i]-s)/L[i][i];
}
//y[i]=b[i];
}

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


cout<<"x["<<i<<"]="<<b[i]<<" \n";
//rez Ux=L;

if(fabs(U[n][n])<=eps)
{
cout<<"Matrice singulara";
exit(1);
}
else
{
b[n]=b[n]/U[n][n];
for (i=n-1; i>=1;i--)
if(fabs(U[i][i])<=eps)
{
cout<<"Matrice singulara";
exit(1);
}
else
{
for(int j=i+1; j<=n; j++)
s+=U[i][j]*b[j];
b[i]=(b[i]-s)/U[i][i];
}
}
for ( i=1; i<=n; i++)
cout<<"x["<<i<<"]="<<b[i]<<" \n";

if (fabs(A[n][n])<=eps)
{
cout<<"Matrice singulara";
exit(1);
}
else
{
b[n]=b[n]/A[n][n];
for (i=n-1; i>=1; i--)
{ s=0;
for(int j=i+1; j<=n; j++)
s+=A[i][j]*b[j];
b[i]=(b[i]-s)/A[i][i];
}
cout<<endl;

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


cout<<"x["<<i<<"]="<<b[i]<<" \n";
}

Prg3//metoda gauss cu pivotare partiala


#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include <iomanip.h>
#include <stdio.h>
#include <fstream.h>

void main()
{
int n,i,j;
double L[100][100],b[100], eps=0.00000000000000001;

ifstream f("inputL.txt");

f>>n;

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


for(j=1; j<=n; j++)
{
f>>L[i][j];
}

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


f>>b[i];

cout<<endl;

if (fabs(L[1][1])<=eps)
{
cout<<"Matrice singulara!!!";
exit(1);
}
else
{
b[1]=b[1]/L[1][1];
for (i=2; i<=n; i++)
if (fabs(L[i][i])<=eps)
{
cout<<"Matrice singulara!!!";
exit(1);
}
else
{
double s=0;
for (j=1;j<i;j++)
s+=L[i][j]*b[j];
b[i]=(b[i]-s)/L[i][i];
}
}

cout<<"Solutiile sunt: \n";


for (i=1; i<=n; i++)
{
cout<<"x"<<i<<": ";
cout<<b[i];
cout<<endl;
}

Lab6

Prg1//metoda gauss cu pivotare partiala


#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include <iomanip.h>
#include <stdio.h>
#include <fstream.h>

void main()
{
int n,i,j,p,k;
double T[100][100],B[100][100], eps=0.00000000000000001,s;
//citirea datelor

ifstream f("input2.txt");

f>>n;

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


for(j=1; j<=n; j++)
{
f>>T[i][j];
B[i][j]=T[i][j];
}

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


{
for(j=1; j<=n; j++)
{
cout<<T[i][j]<<" ";
}
cout<<endl;
}

for(p=1;p<=n;p++)
if(fabs(T[p][p])<=eps)
{
cout<<"Matrice singulara";
exit(0);
}
else
{
T[p][p]=1/T[p][p];
for (i=1;i<=p-1;i++)
{
s=0;
for (int k=i; k<=p-1;k++)
s+=T[k][i]*T[p][k];
T[p][i]=(-s)*T[p][p];
}
}
for (i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
cout<<T[i][j]<<" ";
}
cout<<endl;
}

//verificarea inversei

for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
s=0;
for (k=j;k>=i;k--)
s+=T[i][k]*B[k][j];
cout<<s<<" ";
}
cout<<endl;
}
}

Prg2//inversare_oarecare

#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include <iomanip.h>
#include <stdio.h>
#include <fstream.h>

void main()
{
int n,i,j,k,v[100],m;
double A[100][100],B[100][100], eps=0.00000000000000001, aux,C[100]
[100],s;
ifstream f("input3.txt");

f>>n;

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


for(j=1; j<=n; j++)
{
f>>A[i][j];
B[i][j]=A[i][j];
}

cout<<endl;

for (int p=1; p<=n-1; p++)


{
double M=fabs(A[p][p]);
int l=p;

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


if (M<fabs(A[i][p]))
{
M=fabs(A[i][p]);
l=i;
}

v[p]=l;

if (M<=eps)
{
cout<<"Impartire la zero!!!";
exit(1);
}

else
{
if (p!=l)
for (i=1; i<=n; i++)
{
aux=A[p][i];
A[p][i]=A[l][i];
A[l][i]=aux;

aux=B[p][i];
B[p][i]=B[l][i];
B[l][i]=aux;
}

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


{
A[i][p]=A[i][p]/A[p][p];
for (int j=p+1; j<=n; j++)
A[i][j]=A[i][j]-A[p][j]*A[i][p];
}
cout<<endl;
}
}
cout<<"Matrice A: \n";
for (i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
cout<<A[i][j]<<" ";
}
cout<<endl;
}

//inversarea lu U

if(fabs(A[n][n])<=eps)
{
cout<<"Matrice singulara";
exit(0);
}
else
{
for (p=1;p<=n;p++)
{
A[p][p]=1/A[p][p];

for (i=1;i<=p-1;i++)
{
s=0;
for (int k=i; k<=p-1;k++)
s=s+A[i][k]*A[k][p];

A[i][p]=(-s)*A[p][p];
}
}
}
//afisarea u

cout<<"Matricea U:"<<endl;

for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
if(i>j)
cout<<0<<" ";
else
cout<<A[i][j]<<" ";
cout<<endl;
}
cout<<"A: \n";

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


{
for(j=1; j<=n; j++)
{
cout<<A[i][j]<<" ";
}
cout<<endl;
}

//inversarea lui L
/*
for(p=2;p<=n;p++)
{
for (i=1;i<=p-1;i++)
{
s=0;
for (int k=i; k<=p-1;k++)
s+=A[k][i]*A[p][k];
A[p][i]=-s;
}
}*/

for(p=2;p<=n;p++)
for (i=1;i<=p-1;i++)
{
s=A[p][i];
for (int k=i+1; k<=p-1;k++)
s=s+A[k][i]*A[p][k];
cout<<s<<endl;
A[p][i]=-s;
}

//afisarea inversei lui L

cout<<"Inversa matricei L:"<<endl;


for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
if (i==j)
{
cout<<1<<" ";
}
else
if(i>j)
cout<<A[i][j]<<" ";
else
cout<<0<<" ";
cout<<endl;

}
//calculul produsului inv U inv L in C

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


for (j=1;j<=n; j++)
{
s=0;
m=i;
if (m<j) m=j;
for (k=m;k<=n;k++)
{
if (k==j)
s+=A[i][k];
else
s+=A[i][k]*A[k][j];
}
C[i][j]=s;
}

//obtinerea inversei matricei A


for (p=n-1; p>=1;p--)
{
for (i=1; i<=n;i++)
{
aux=C[i][p];
C[i][p]=C[i][v[p]];
C[i][v[p]]=aux;
}
}

cout<<"Inversa lui A: \n";


for (i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
cout<<C[i][j]<<" ";
}
cout<<endl;
}

cout<<"B: \n";
for (i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
cout<<B[i][j]<<" ";
}
cout<<endl;
}

//verificare

for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
s=0;
for (k=1;k<=n;k++)
s+=B[i][k]*C[k][j];
printf("%10.6f",s);
// cout<<" ";
}
cout<<endl;
}

/* double prod[100][100]={0},el;

for (i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
el=0;
for(k=1;k<=n;k++)
el+=B[i][k]*C[k][j];
prod[i][j]=el;
}

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


{
for( j=1; j<=n; j++)
printf("%6g ",prod[i][j]);
cout<<endl;
}*/

Prg3//inversare superioara triunghiulara

#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include <iomanip.h>
#include <stdio.h>
#include <fstream.h>

void main()
{
int n,i,j,p,k;
double T[100][100],B[100][100], eps=0.00000000000000001,s;
//citirea datelor

ifstream f("input.txt");

f>>n;

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


for(j=1; j<=n; j++)
{
f>>T[i][j];
B[i][j]=T[i][j];
}

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


{
for(j=1; j<=n; j++)
{
cout<<T[i][j]<<" ";
}
cout<<endl;
}

for(p=1;p<=n;p++)
if(fabs(T[p][p])<=eps)
{
cout<<"Matrice singulara";
exit(0);
}
else
{
T[p][p]=1/T[p][p];
for (i=1;i<=p-1;i++)
{
s=0;
for (int k=i; k<=p-1;k++)
s+=T[i][k]*T[k][p];
T[i][p]=(-s)*T[p][p];
}
}
for (i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
cout<<T[i][j]<<" ";
}
cout<<endl;
}

//verificarea inversei

for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
s=0;
for (k=i;k<=j;k++)
s+=T[i][k]*B[k][j];
cout<<s<<" ";
}
cout<<endl;
}
}

Lab7

Prg1//desc prin identificare

#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include <iomanip.h>
#include <stdio.h>
#include <fstream.h>

void main()
{
int n,i,j,k,p;
double A[100][100],eps=0.00000000000000001,s;

ifstream f("input.txt");

f>>n;

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


for(j=1; j<=n; j++)
f>>A[i][j];
p=1;
while (p<=n-1)
if (fabs(A[p][p])<=eps)
{
cout<<"Matrice singulara";
exit(0);
}
else
{
for (i=p+1;i<=n;i++)
A[i][p]=A[i][p]/A[p][p];
p=p+1;
for (j=p;j<=n;j++)
{
s=0;
for (k=1;k<=p-1;k++)
s+=A[p][k]*A[k][j];
A[p][j]=A[p][j]-s;
}
for (i=p+1;i<=n;i++)
{
s=0;
for (k=1;k<=p-1;k++)
s+=A[i][k]*A[k][p];
A[i][p]=A[i][p]-s;
}
}

cout<<"Matricea A:"<<endl;

for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
{
cout<<A[i][j]<<" ";
}
cout<<endl;
}

cout<<"Matricea L:"<<endl;
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
if (i==j)
{
cout<<1<<" ";
}
else
if(i>j)
cout<<A[i][j]<<" ";
else
cout<<0<<" ";
cout<<endl;

cout<<"Matricea U:"<<endl;

for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
if(i>j)
cout<<0<<" ";
else
cout<<A[i][j]<<" ";
cout<<endl;
}

cout<<"Verificare:"<<endl;

for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
{
double s=0;
double m=i;
if (m>j) m=j;

for (k=1; k<=m; k++)


if (i==k) s=s+A[k][j];
else
s=s+A[i][k]*A[k][j];
cout<<s<<" ";
}
cout<<endl;
}

Prg2//desc_id metoda gauss cu pivotare partiala


#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include <iomanip.h>
#include <stdio.h>
#include <fstream.h>

void main()
{
int n,i,j,k,p,l,m,v[100];
double A[100][100],eps=0.00000000000000001,s,M,aux;

ifstream f("input.txt");
f>>n;

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


for(j=1; j<=n; j++)
f>>A[i][j];

cout<<"Matricea A:"<<endl;

for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
{
cout<<A[i][j]<<" ";
}
cout<<endl;
}

for (p=1;p<=n-1;p++)
{
for (i=p;i<=n;i++)
{
s=0;
for (k=1;k<=p-1;k++)
s+=A[i][k]*A[k][p];

A[i][p]=A[i][p]-s;
}

M=fabs(A[p][p]);
v[p]=p;

for (l=p;l<=n;l++)
if (M<fabs(A[l][p]))
{
M=fabs(A[l][p]);
v[p]=l;
}

if (M<=eps)
{
cout<<"asdas";
exit(0);
}
else
{
if (p!=v[p])
for (m=1;m<=n;m++)
{
aux=A[p][m];
A[p][m]=A[v[p]][m];
A[v[p]][m]=aux;
}

for (i=p+1;i<=n;i++)
A[i][p]=A[i][p]/A[p][p];
for (j=p+1;j<=n;j++)
{
s=0;
for (k=1;k<=p-1;k++)
s+=A[p][k]*A[k][j];
A[p][j]=A[p][j]-s;
}
}
}

cout<<"Matricea A:"<<endl;

for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
{
cout<<A[i][j]<<" ";
}
cout<<endl;
}

cout<<"Matricea L:"<<endl;
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
if (i==j)
{
cout<<1<<" ";
}
else
if(i>j)
cout<<A[i][j]<<" ";
else
cout<<0<<" ";
cout<<endl;

cout<<"Matricea U:"<<endl;

for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
if(i>j)
cout<<0<<" ";
else
cout<<A[i][j]<<" ";
cout<<endl;
}

cout<<"Verificare:"<<endl;

double ver[100][100];
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
{
double s=0;
double m=i;
if (m>j) m=j;

for (k=1; k<=m; k++)


if (i==k) s=s+A[k][j];
else
s=s+A[i][k]*A[k][j];
//cout<<s<<" ";
ver[i][j]=s;
}
cout<<endl;
}

for (p=n-1; p>=1;p--)


{
for (i=1; i<=n;i++)
{
aux=ver[p][i];
ver[p][i]=ver[v[p]][i];
ver[v[p]][i]=aux;
}
}

for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
{
cout<<ver[i][j]<<" ";
}
cout<<endl;
}
}

Lab8

Prg1//desc_cholesky
#include <iostream.h>
#include <fstream.h>
#include <math.h>
#include <stdlib.h>

void main()
{
double A[100][100], eps =0.00001,s;
int i,p,k,j,n,m;

ifstream f("input2.txt");

f>>n;

for(i=1; i<=n;i++)
for (j=1; j<=n; j++)
f>>A[i][j];
for (p=1; p<=n; p++)
{
s=0;
for (k=1; k<=p-1; k++)
s+=A[p][k]*A[p][k];

A[p][p]=A[p][p]-s;

if(A[p][p]<=0)
{
cout<<A[p][p];
cout<<"Matricea nu e pozitiv definita!!!";
exit(1);
}
else
{
A[p][p]=sqrt(A[p][p]);
if (A[p][p]<=eps)
{
cout<<"Matrice este singulara!!!";
exit(1);
}
else
{
for (i=p+1; i<=n ;i++)
{
s=0;
for (k=1; k<=p-1; k++)
s+=A[i][k]*A[p][k];
A[i][p]=(A[i][p]-s)/A[p][p];
}
}
}
}

cout<<"L: \n";
for (i=1; i<=n; i++)
{
for (j=1; j<=n; j++)
{
if(i>=j)
cout<<A[i][j]<<" ";
else
cout<<"0 ";
}
cout<<endl;
}
//verificare

cout<<endl;
cout<<"Verificare: \n";
for (i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
s=0;
m=i;
if(j<m)
m=j;
for (k=1; k<=m; k++)
s+=A[i][k]*A[j][k];
cout<<s<<" ";
}
cout<<endl;
}

Prg2

#include <iostream.h>
#include <fstream.h>

void main()
{
int i,n;
double d[100], l[100], u[100], b[100];
ifstream f("input.txt");
f>>n;

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


f>>u[i];

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


f>>d[i];

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


f>>l[i];

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


f>>b[i];

//desc LU pt o matrice banda

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


{
l[i]=l[i]/d[i];
d[i+1]-=l[i]*u[i];
}

cout<<"l:\n";
for (i=1; i<=n-1;i++)
cout<<l[i]<<" ";

cout<<endl;

cout<<"d:\n";
for (i=1; i<=n;i++)
cout<<d[i]<<" ";

cout<<endl;

cout<<"u:\n";
for (i=1; i<=n-1;i++)
cout<<u[i]<<" ";

cout<<endl;
//rezolvarea sistemului inferior triunghiular

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


b[i]=b[i]-l[i-1]*b[i-1];

cout<<"Solutiile:\n";
for (i=1; i<=n;i++)
cout<<b[i]<<" ";

//rezolvarea sistemului inferior triunghiular

b[n]=b[n]/d[n];
for (i=n-1; i>=1; i--)
b[i]=(b[i]-b[i+1]*u[i])/d[i];

cout<<"Solutiile:\n";
for (i=1; i<=n;i++)
cout<<b[i]<<" ";
}

Lab9

Prg1//desc_QR
#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include <fstream.h>
#include <stdio.h>

void main()
{
int n,i,j,k,p;
double A[100][100],eps=0.00000000000000001,s,B[100][100]={0},aux,rad,c ;

ifstream f("input.txt");

f>>n;
for (i=1; i<=n; i++)
for(j=1; j<=n; j++)
{
f>>A[i][j];
if(i==j)
B[i][i]=1;
}

p=1;
while (p<=n-1)
{
j=p+1;
while (j<=n)
{
rad =sqrt(A[p][p]*A[p][p]+A[j][p]*A[j][p]);
if (rad<=eps) j++;
else
{
c=A[p][p]/rad;
s=A[j][p]/rad;
//s=sqrt(1-c*c);
for (k=1; k<=n; k++)
{
aux=A[p][k];
A[p][k]=c*A[p][k]+s*A[j][k];
A[j][k]=-s*aux+c*A[j][k];

aux=B[p][k];
B[p][k]=c*B[p][k]+s*B[j][k];
B[j][k]=-s*aux+c*B[j][k];
}
A[p][p]=rad;
//A[j][p]=0;
/* aux=B[p][k];
B[p][k]=c*B[p][k]+s*B[j][k];
B[j][k]=-s*aux+c*B[j][k];*/
j++;
}
}
if(A[p][p]<=eps)
{
cout<<"Matrice singulara!!!";
exit(1);
}
else
p++;
}

cout<<"Matricea R:"<<endl;

for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
if(i>j)
cout<<0<<" ";
else
cout<<A[i][j]<<" ";
cout<<endl;
}
cout<<endl;
cout<<endl;
for (i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
cout<<B[j][i]<<" ";
cout<<endl;
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
s=0;
for (k=1;k<=n;k++)
s+=B[k][i]*A[k][j];
printf("%10.6f",s);
// cout<<" ";
}
cout<<endl;
}
}

Prg2//inversarea_gevens
#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include <fstream.h>
#include <stdio.h>

void main()
{
int n,i,j,k,p;
double A[100][100],eps=0.00000000000000001,s,B[100][100]={0},aux,rad,c ;

ifstream f("input.txt");

f>>n;
for (i=1; i<=n; i++)
for(j=1; j<=n; j++)
{
f>>A[i][j];
if(i==j)
B[i][i]=1;
}

p=1;
while (p<=n-1)
{
j=p+1;
while (j<=n)
{
rad =sqrt(A[p][p]*A[p][p]+A[j][p]*A[j][p]);
if (rad<=eps) j++;
else
{
c=A[p][p]/rad;
s=A[j][p]/rad;
//s=sqrt(1-c*c);
for (k=1; k<=n; k++)
{
aux=A[p][k];
A[p][k]=c*A[p][k]+s*A[j][k];
A[j][k]=-s*aux+c*A[j][k];
aux=B[p][k];
B[p][k]=c*B[p][k]+s*B[j][k];
B[j][k]=-s*aux+c*B[j][k];
}
A[p][p]=rad;
A[j][p]=0;
j++;
}
}
if(A[p][p]<=eps)
{
cout<<"Matrice singulara!!!";
exit(1);
}
else
p++;
}

/*cout<<"A: \n";
for (i=1;i<=n;i++)
{
for (j=1; j<=n;j++)
cout<<A[i][j]<<" ";

cout<<endl;
}
cout<<"B: \n";
for (i=1;i<=n;i++)
{
for (j=1; j<=n;j++)
cout<<B[j][i]<<" ";

cout<<endl;
}*/

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

if(fabs(A[p][p])<=eps)
{
cout<<"Matrice singulara";
exit(0);
}
else
{
A[p][p]=1/A[p][p];
for (i=1;i<=p-1;i++)
{
s=0;
for (int k=i; k<=p-1;k++)
s+=A[i][k]*A[k][p];
A[i][p]=(-s)*A[p][p];
}
}

/* cout<<"inversa R: \n";
for (i=1;i<=n;i++)
{
for (j=1; j<=n;j++)
cout<<A[i][j]<<" ";

cout<<endl;
}*/

cout<<"Inversa lui A: \n";


for (i=1;i<=n; i++)
{
for(j=1;j<=n;j++)
{
s=0;
for(k=i;k<=n;k++)
s+=A[i][k]*B[k][j];
cout<<s<<" ";
}
cout<<endl;
}
}

Prg3//rez_sist_metoda_givens
#include <iostream.h>
#include <math.h>
#include <fstream.h>
#include <stdlib.h>

void main()
{
int n,i,j,k;
double A[100][100],eps=0.00000000000000001,b[100],rad,aux,c,s;
ifstream f("input.txt");

f>>n;

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


for(j=1; j<=n; j++)
f>>A[i][j];
for (i=1; i<=n;i++)
f>>b[i];

int p=1;
while (p<=n-1)
{
j=p+1;
while (j<=n)
{
rad =sqrt(A[p][p]*A[p][p]+A[j][p]*A[j][p]);
if (rad<=eps) j++;
else
{
c=A[p][p]/rad;
s=A[j][p]/rad;
//s=sqrt(1-c*c);
for (k=p+1; k<=n; k++)
{
aux=A[p][k];
A[p][k]=c*A[p][k]+s*A[j][k];
A[j][k]=-s*aux+c*A[j][k];
}
A[p][p]=rad;
//A[j][p]=0;
aux=b[p];
b[p]=c*b[p]+s*b[j];
b[j]=-s*aux+c*b[j];
j++;
}
}
if(A[p][p]<=eps)
{
cout<<"Matrice singulara!!!";
exit(1);
}
else
p++;
}

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


{
for(j=1; j<=n; j++)
cout<<A[i][j]<<" ";
cout<<endl;
}*/

if (fabs(A[n][n])<=eps)
{
cout<<"Matrice singulara";
exit(1);
}
else
{
b[n]=b[n]/A[n][n];
for (i=n-1; i>=1; i--)
{ double s=0;
for(int j=i+1; j<=n; j++)
s+=A[i][j]*b[j];
b[i]=(b[i]-s)/A[i][i];
}
cout<<endl;
for ( i=1; i<=n; i++)
cout<<b[i]<<" ";
}
}

Lab10

Prg1//desc_househ
#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include <fstream.h>
#include <stdio.h>
void main()
{
int n,i,j,p,k;
double A[100][100],eps=0.00000000000000001,s,B[100][100]={0},bt,gm,S;
//citire
ifstream f("input.txt");

f>>n;

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


for(j=1; j<=n; j++)
{
f>>A[i][j];
}

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


B[i][i]=1;

//**
for (p=1; p<n; p++)
{
s=0;

for(i=p;i<=n;i++)
s+=A[i][p]*A[i][p];
S=sqrt(s);

if (S<=eps)
{
cout<<"Matrice Singulara!!!";
exit(1);
}
else
{
if(A[p][p]>0)
S=-S;

bt=s-S*A[p][p];

A[p][p]=A[p][p]-S;

for(j=p+1;j<=n;j++)
{
gm=0;
for(i=p;i<=n;i++)
gm+=A[i][j]*A[i][p];
gm=gm/bt;

for(i=p;i<=n;i++)
A[i][j]=A[i][j]-A[i][p]*gm;
}

for(j=1;j<=n;j++)
{
gm=0;
for(i=p;i<=n;i++)
gm+=B[i][j]*A[i][p];
gm=gm/bt;

for(i=p;i<=n;i++)
B[i][j]=B[i][j]-A[i][p]*gm;
}

A[p][p]=S;
}
}

cout<<"Matricea R:"<<endl;

for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
if(i>j)
{
cout<<0<<" ";
A[i][j]=0;
}
else
cout<<A[i][j]<<" ";
cout<<endl;
}
cout<<endl;
cout<<endl;
cout<<"Matrice Q: "<<endl;
for (i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
cout<<B[j][i]<<" ";
cout<<endl;
}

cout<<"Verfifcare: "<<endl;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
s=0;
for (k=1;k<=n;k++)
s+=B[k][i]*A[k][j];
printf("%10.6f",s);
// cout<<" ";
}
cout<<endl;
}
}

Prg2//metoda_householder
#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include <fstream.h>
void main()
{
int n,i,j,p;
double A[100][100],eps=0.00000000000000001,s,b[100],bt,gm,S;
//citire
ifstream f("input.txt");

f>>n;

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


for(j=1; j<=n; j++)
{
f>>A[i][j];
}
for(j=1; j<=n; j++)
{
f>>b[j];
}
//**
for (p=1; p<n; p++)
{
s=0;

for(i=p;i<=n;i++)
s+=A[i][p]*A[i][p];
S=sqrt(s);

if (S<=eps)
{
cout<<"Matrice Singulara!!!";
exit(1);
}
else
{
if(A[p][p]>0)
S=-S;

bt=s-S*A[p][p];

A[p][p]=A[p][p]-S;

for(j=p+1;j<=n;j++)
{
gm=0;
for(i=p;i<=n;i++)
gm+=A[i][j]*A[i][p];
gm=gm/bt;

for(i=p;i<=n;i++)
A[i][j]=A[i][j]-A[i][p]*gm;
}

gm=0;
for (i=p;i<=n;i++)
gm+=b[i]*A[i][p];
gm=gm/bt;
for (i=p;i<=n;i++)
b[i]=b[i]-A[i][p]*gm;

A[p][p]=S;
}
}

/*//afisare
for (i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
cout<<A[i][j]<<" ";
cout<<endl;
}
cout<<endl;
for(j=1; j<=n; j++)
cout<<b[j]<<" ";
*/

//rezolvare
if (fabs(A[n][n])<=eps)
{
cout<<"Matrice singulara";
exit(1);
}
else
{
b[n]=b[n]/A[n][n];
for (i=n-1; i>=1; i--)
{ double s=0;
for(int j=i+1; j<=n; j++)
s+=A[i][j]*b[j];
b[i]=(b[i]-s)/A[i][i];
}
cout<<endl;

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


cout<<b[i]<<" ";
}

Lab12

Prg1//norma
#include<iostream.h>
#include<math.h>
#include<stdlib.h>

int singulara(double P[20][20],int n)


{

for(int i=1;i<=n;i++)
if(P[i][i]==0)
return 0;

return 1;
}

void main()
{

int n,i,j;
double s=0,max=0,A[20][20]={0},P[20][20]={0};

cout<<"dati n=";
cin>>n;

cout<<"Introduceti elementele matricii"<<endl;


for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
cin>>A[i][j];

cout<<"Matricea este:";
for(i=1;i<=n;i++)
{
{
for(j=1;j<=n;j++)
cout<<A[i][j]<<" ";
}
cout<<endl;
}

max=0;

for(j=1;j<=n;j++)
{
s=0;
for(i=1;i<=n;i++)
s+=fabs(A[i][j]);
if(s>max)
max=s;
}

cout<<"prima norma matriciala (maximul dupa coloane ) este:"<<max<<endl;

for(i=1;i<=n;i++)
{
s=0;
for(j=1;j<=n;j++)
s+=fabs(A[i][j]);
if(s>max)
max=s;
}

cout<<"a doua norma matriciala (maximul dupa linii) este:"<<max<<endl;


s=0;

for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
s+=A[i][j]*A[i][j];
cout<<"a treia norma matriciala (norma euclidiana) este:"<<sqrt(s)<<endl;

cout<<"Introduceti elementele matricii"<<endl;


cout<<"Matricea trebuie sa fie diagonala"<<endl;

for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i==j)
{
cout<<"p("<<i<<")=";
cin>>P[i][j];

cout<<endl;
cout<<"Matricea diagonala este:"<<endl;
for(i=1;i<=n;i++)
{
{
for(j=1;j<=n;j++)
cout<<P[i][j]<<" ";

}
cout<<endl;
}

if(singulara(P,n)==0)
{
cout<<"matricea este singulara"<<endl;
exit(1);
}

else
{
max=0;
for(j=1;j<=n;j++)
{
s=0;
for(i=1;i<=n;i++)
s+=(P[i][i]/P[j][j])*fabs(A[i][j]);
if(s>max)
max=s;
}

cout<<"prima norma matriciala (maximul dupa coloane ) este:"<<max<<endl;

max=0;
for(i=1;i<=n;i++)
{
s=0;
for(j=1;j<=n;j++)
s+=(P[i][i]/P[j][j])*fabs(A[i][j]);
if(s>max)
max=s;
}

cout<<"a doua norma matriciala (maximul dupa linii) este:"<<max<<endl;

}
}

Prg2//normavec
#include<iostream.h>
#include<math.h>
#include<stdlib.h>

int singulara(double P[20][20],int n)


{

for(int i=1;i<=n;i++)
if(P[i][i]==0)
return 0;

return 1;
}

void main()
{

int n,i,j;
double x[20],s=0,max,P[20][20]={0};

cout<<"dati numarul de componente al vectorului:";


cin>>n;

cout<<"dati elementele vectorului:";


for(i=1;i<=n;i++)
cin>>x[i];

for(i=1;i<=n;i++)
cout<<x[i]<<" ";
cout<<endl;

cout<<"Introduceti elementele matricii"<<endl;


cout<<"Matricea trebuie sa fie diagonala"<<endl;

for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i==j)
{
cout<<"p("<<i<<")=";
cin>>P[i][j];

cout<<endl;
cout<<"Matricea diagonala este:"<<endl;
for(i=1;i<=n;i++)
{
{
for(j=1;j<=n;j++)
cout<<P[i][j]<<" ";

}
cout<<endl;
}

for(i=1;i<=n;i++)
s=s+fabs(x[i]);
cout<<"prima norma vectoriala este:"<<s<<endl;

s=0;

for(i=1;i<=n;i++)
s=s+(x[i]*x[i]);
cout<<"ce-a de-a doua norma vectoriala este:"<<sqrt(s)<<endl;

max=fabs(x[1]);
for(i=2;i<=n;i++)
if(fabs(x[i])>max)
max=fabs(x[i]);
cout<<"norma a treia vectoriala este:"<<max<<endl;

/*s=0;
for(i=1;i<=n;i++)
s+=fabs(P[i][i]*x[i]);
cout<<"norma a patra vectoriala este:"<<s<<endl;
*/

if(singulara(P,n)==0)
{
cout<<"matricea este singulara";
exit(1);
}
else
{
s=0;
for(i=1;i<=n;i++)
s+=P[i][i]*fabs(x[i]);
cout<<"norma a patra este:"<<s<<endl;

s=0;
for(i=1;i<=n;i++)
s+=pow(P[i][i]*x[i],2);
cout<<"norma a cincea este:"<<sqrt(s)<<endl;
}
}
Lab13

Prg1//gauss_sadel
#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include <fstream.h>
#include <stdio.h>

void main()
{
int n,i,j,p,k;
double A[100][100],eps=0.00000000000000001,b[100],x[100],y[100]={0},max;
//citire
ifstream f("input.txt");

f>>n;

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


for(j=1; j<=n; j++)
{
f>>A[i][j];
}
for (i=1; i<=n; i++)
f>>b[i];
for (i=1; i<=n; i++)
f>>x[i];

cout<<"dati numarul maxim de iteratii:";


cin>>max;

p=1;
while((p<=n)&&(fabs(A[p][p])>eps))
{
A[p][p]=1/A[p][p];
b[p]=b[p]*A[p][p];
p=p+1;
}

if(p==(n+1))
{
k=0;
while(k<max)
{
for(i=1;i<=n;i++)
{
y[i]=b[i];
for(j=1;j<=i-1;j++)
y[i]=y[i]-A[i][j]*A[i][i]*y[j];
for(j=i+1;j<=n;j++)
y[i]=y[i]-A[i][j]*A[i][i]*x[j];
}
i=1;
while((i<=n)&&(fabs(x[i]-y[i])<=eps))
i++;
if(i==(n+1))
{
cout<<"s-a atins precizia eps in "<< k+1 <<" pasi"<<endl;
for(i=1;i<=n;i++)
cout<<y[i]<<" ";
exit(1);
}
else
{
k=k+1;
for(i=1;i<=n;i++)
x[i]=y[i];
}
}

if(k==max)
cout<<"nu s-a atins precizia in nr "<<max<<" de pasi"<<endl;
}

else
cout<<"matricea este singulara"<<endl;

Prg2//metosa_jacobi
#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include <fstream.h>
#include <stdio.h>
void main()
{
int n,i,j,p,k;
double A[100][100],eps=0.00000000000000001,b[100],x[100],y[100]={0},max;
//citire
ifstream f("input.txt");
f>>n;
for (i=1; i<=n; i++)
for(j=1; j<=n; j++)
{
f>>A[i][j];
}
for (i=1; i<=n; i++)
f>>b[i];
for (i=1; i<=n; i++)
f>>x[i];

cout<<"dati numarul maxim de iteratii:";


cin>>max;

p=1;
while((p<=n)&&(fabs(A[p][p])>eps))
{
A[p][p]=1/A[p][p];
b[p]=b[p]*A[p][p];
p=p+1;
}
if(p==(n+1))
{
k=0;
while(k<max)
{
for(i=1;i<=n;i++)
{
y[i]=b[i];
for(j=1;j<=n;j++)
if(j!=i)
y[i]=y[i]-A[i][j]*A[i][i]*x[j];
}
i=1;
while((i<=n)&&(fabs(x[i]-y[i])<=eps))
i++;
if(i==(n+1))
{
cout<<"s-a atins precizia eps in "<< k+1 <<" pasi"<<endl;
for(i=1;i<=n;i++)
cout<<y[i]<<" ";
exit(1);
}
else
{
k=k+1;
for(i=1;i<=n;i++)
x[i]=y[i];
}
}
if(k==max)
cout<<"nu s-a atins precizia in nr "<<max<<" de pasi"<<endl;
}
else
cout<<"matricea este singulara"<<endl;

Prg3//metode de relaxare
#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include <fstream.h>
#include <stdio.h>
void main()
{
int n,i,j,p,k;
double A[100][100],eps=0.00000001,b[100],x[100],y[100]={0},max,s1,s2,om;
//citire
ifstream f("input.txt");
f>>n;
for (i=1; i<=n; i++)
for(j=1; j<=n; j++)
{
f>>A[i][j];
}
for (i=1; i<=n; i++)
f>>b[i];
for (i=1; i<=n; i++)
f>>x[i];
cout<<"dati numarul maxim de iteratii:";
cin>>max;
cout<<"dati numarul omega intre 0 si 2:";
cin>>om;
p=1;
while((p<=n)&&(fabs(A[p][p])>eps))
{
A[p][p]=1/A[p][p];
b[p]=b[p]*A[p][p];
p=p+1;
}
if(p==(n+1))
{
k=0;
while(k<max)
{
for(i=1;i<=n;i++)
{
s1=0;
s2=0;
for(j=1;j<=i-1;j++)
s1+=(A[i][j]*A[i][i])*y[j];
for(j=i+1;j<=n;j++)
s2+=(A[i][j]*A[i][i])*x[j];
y[i]=(1-om)*x[i]-om*s1-om*s2+om*(b[i]);
}
i=1;
while((i<=n)&&(fabs(x[i]-y[i])<=eps))
i++;
if(i==(n+1))
{
cout<<"s-a atins precizia eps in "<< k+1 <<" pasi"<<endl;
for(i=1;i<=n;i++)
cout<<y[i]<<" ";
exit(1);
}
else
{
k=k+1;
for(i=1;i<=n;i++)
x[i]=y[i];
}
}

if(k==max)
cout<<"nu s-a atins precizia in nr "<<max<<" de pasi"<<endl;
}
else
cout<<"matricea este singulara"<<endl;

You might also like