Pagini recente » Cod sursa (job #2867726) | Istoria paginii runda/isded/clasament | Cod sursa (job #2671462) | Cod sursa (job #2269124) | Cod sursa (job #2914673)
#include<bits/stdc++.h>
using namespace std;
int const NMAX = 305;
int n , m;
double ans;
double A[NMAX][NMAX] , X[NMAX];
int main(){
ifstream fin("gauss.in");
ofstream fout("gauss.out");
fin >> n >> m;
for(int i = 1 ; i <= n ; ++ i)
for(int j = 1 ; j <= m + 1 ; ++ j)
fin >> A[i][j];
fin.close();
int i = 1 , j = 1;
while(i <= n && j <= m){
for(int k = j + 1 ; k <= m + 1 ; ++ k)
A[i][k] /= A[i][j];
A[i][j] = 1.0;
for(int k = i + 1 ; k <= n ; ++ k){
double x = A[k][j];
for(int kk = j ; kk <= m + 1 ; ++ kk){
A[k][kk] -= A[i][kk] * x;
}
}
++ i , ++ j;
}
for(int i = n ; i ; -- i){
int pi(0);
for(int j = 1 ; j <= m ; ++ j){
if(-1e-5 <= A[i][j] && A[i][j] <= 1e-5){
continue;
}
pi = j;
break;
}
X[pi] = A[i][m + 1];
for(int j = m ; j > pi ; -- j)
X[pi] -= X[j] * A[i][j];
}
auto sep = "";
for(int i = 1 ; i <= m ; ++ i)
fout << sep << fixed << setprecision(10) << X[i] , sep = " ";
fout << '\n';
fout.close();
return 0;
}