const double EPSILONG = 0.001;
//
//列主元方法求解n阶线性方程组Ax=b
bool Solve(double** A, double* b, double* x, int n)
{
double** M = new double*[n];
for (int i=0; i<n; i++)
{
M[i] = new double[n+1];
for (int j=0; j<n; j++)
{
M[i][j] = A[i][j];
}
M[i][n] = b[i];
}
for (int k=0; k<n; k++)
{//n个主元
double colMax = fabs(M[k][k]);
int maxLineIndex = k;
for(int i=k+1; i<n; i++)
{//寻找第k列的最大元素
if(fabs(M[i][k]) > colMax)
{
colMax = fabs(M[i][k]);
maxLineIndex = i;
}
}
if(colMax < EPSILONG)
{//奇异矩阵
for (int i=0; i<n; i++)
{
delete M[i];
}
delete M;
return false;
}
double temp;
//交换k行和maxLineIndex行
for (int m=0; m<n+1; m++)
{
temp = M[k][m];
M[k][m] = M[maxLineIndex][m];
M[maxLineIndex][m]