Pagini recente » Cod sursa (job #405438) | Cod sursa (job #62598) | Cod sursa (job #980151) | Cod sursa (job #1926355) | Cod sursa (job #623566)
Cod sursa(job #623566)
#include <stdio.h>
#define max_n 301
#define eps 0.0000001
using namespace std;
int n,m,i,j,t,k;
double z;
double a[max_n][max_n];
double v[max_n];
void swap(int i,int k) {
double aux;
for (t=1; t<=m; t++) {
aux=a[i][t];
a[i][t]=a[k][t];
a[k][t]=aux;
}
}
void matrice() {
i=j=1;
while (i<=n && j<=m) {
for (k=i; k<=m; k++)
if (a[i][j]>eps || a[i][j]<-eps)
break;
if (k==m+1) continue;
if (k!=i) {
double aux;
for (t=1; t<=m; t++) {
aux=a[i][t];
a[i][t]=a[k][t];
a[k][t]=aux;
}
}
for (k=j+1; k<=m; k++)
a[i][k]=a[i][k]/a[i][j];
a[i][j]=1;
for (t=i+1; t<=n; t++) {
z=a[t][j];
for (k=j; k<=m; k++)
a[t][k]-=a[i][k]*z;
}
i++;
j++;
}
}
int main () {
freopen("gauss.in","r",stdin);
freopen("gauss.out","w",stdout);
scanf("%d%d",&n,&m);
for (i=1; i<=n; i++)
for (j=1; j<=m+1; j++)
scanf("%lf",&a[i][j]);
m++;
matrice();
for (i=n; i>=1; i--)
for (j=1; j<=m; j++)
if (a[i][j]>eps || a[i][j]<-eps) {
if (j==m) {
printf("Imposibil\n");
return 0;
}
v[j]=a[i][m];
for (k=j+1; k<=m; k++)
v[j]-=v[k]*a[i][k];
break;
}
for (i=1; i<m; i++)
printf("%.8lf ",v[i]);
return 0;
}