VC2010 + win7makefile编译,makefile在源文件头部
元素,并返回主元所在的行
int Choose_Colum_Main_Element(int n,double**A,int start)
{
int row=start;
double max=abs(A[start][start]);
for(int i=start;i<n;i++)
{
if(max<abs(A[i][start]))
{
row=i;
max=A[i][start];
}
}
Main_Element=max;
return row;
}
//交换L1,L2 行
void Exchange(double **A,int num_of_colum,int L1,int L2)
{
double temp;
for(int i=0;i<num_of_colum;i++)
{
temp=A[L1][i];
A[L1][i]=A[L2][i];
A[L2][i]=temp;
}
}
//消元过程函数(消元其实点为start,start)
void Elimination(int n,double**A,int start)
{
double factor;
for(int i=start+1;i<n;i++)
{
factor=A[i][start]/A[start][start];
for(int j=start;j<n+1;j++)
{
A[i][j]=A[i][j]-factor*A[start][j];
}
}
}
//回带求解,即“单位化”增广矩阵
double **Unitization(int n,double**A)
{
double row_first; //行首元素
//主对角元素单位化
for(int i=0;i<n;i++)
{
row_first=A[i][i];
for(int j=0;j<n+1;j++)
{
A[i][j]=A[i][j]/row_first;
}
}
for(int k=n-1;k>0;k--)
{
for(int i=0;i
<k;i++)
{
double factor=A[i][k];
for(int j=0;j<n+1;j++)
{
A[i][j]=A[i][j]-factor*A[k][j];
}
}
}
return A;
}