#include <QtCore/QCoreApplication>
#include <iostream>
#include <math.h>
#define n 3
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
/*double matrix[n][n]={127187.37,1192236.059,89741.8184,1277187.37,8718.368,
1192236.059,1163344.333,82741.555,85377.455,9416.8109,
89741.8184,82741.55522,107440.1425,8718.368,124.058,
82741.555,85377.455,8718.368,9416.8109,1359.0965,
8718.3682,9416.8109,1240.58,1359.09,0};*/
long double matrix[n][n] = {1,0,0,1,0,0,1,0,0};
long double E_Matrix[n][n];
long double mik;
long double m = 2*n;
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
if(i == j)
E_Matrix[i][j] = 1.00;
else
E_Matrix[i][j] = 0.00;
}
}
long double CalcuMatrix[n][2*n];
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
CalcuMatrix[i][j] = matrix[i][j];
}
for(int k = n; k < m; k++)
{
CalcuMatrix[i][k] = E_Matrix[i][k-n];
}
}
for(int i = 1; i <= n-1; i++)
{
for(int j = i+1; j <= n; j++)
{
mik = CalcuMatrix[j-1][i-1]/CalcuMatrix[i-1][i-1];
for(int k = i+1;k <= m; k++)
{
CalcuMatrix[j-1][k-1] -= mik*CalcuMatrix[i-1][k-1];
}
}
}
for(int i=1;i<=n;i++)
{
double temp = CalcuMatrix[i-1][i-1];
for(int j=1;j<=m;j++)
{
CalcuMatrix[i-1][j-1] = CalcuMatrix[i-1][j-1]/temp;
}
}
for(int k=n-1;k>=1;k--)
{
for(int i=k;i>=1;i--)
{
mik = CalcuMatrix[i-1][k];
for(int j=k+1;j<=m;j++)
{
CalcuMatrix[i-1][j-1] -= mik*CalcuMatrix[k][j-1];
}
}
}
long double InverseMatrix[n][n];
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
InverseMatrix[i][j] = CalcuMatrix[i][j+n];
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(fabs(InverseMatrix[i][j]) < 0.0000001)
InverseMatrix[i][j] = 0.00;
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
printf("%5.9f\t",InverseMatrix[i][j]);
}
printf("\n");
}
return a.exec();
}