列主元高斯消去法求逆矩阵

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

列主元高斯消去法求逆矩阵程序代码:

#include

#include

#define Max 10

int n;

double M[Max][Max];

double E[Max][Max];

bool FindMax(int t) //列主元素

{

int i, j, k=t;

double max = fabs(M[t][t]), temp;

for (i = t+1 ;i < n; i++)

if (max

{

max = fabs(M[i][t]); k = i;

}

if (max==0)

return 0;

for (j = 0; j < n; j++)

{

temp = M[t][j];

M[t][j] = M[k][j];

M[k][j] = temp;

temp = E[t][j];

E[t][j] = E[k][j];

E[k][j] = temp;

}

return 1;

}

void XiaoQu(int t) //消去

{

int i, j;

double max = M[t][t], m;

for (i = t+1; i < n; i++)

{

m=M[i][t]/max;

for(j=0;j

{

M[i][j] = M[i][j] - M[t][j]*m;

E[i][j] = E[i][j] - E[t][j]*m;

}

}

}

void HuiDai(int t)

{

int i,j;

double max;

max=M[t][t];

for(i=t;i

M[t][i]=M[t][i]/max;

for(i=0;i

E[t][i]=E[t][i]/max;

for(i=t-1;i>=0;i--)

{

max=M[i][t];

M[i][t]=0;

for(j=0;j

E[i][j]=E[i][j]-max*E[t][j];

}

}

int main()

{

int i, j;

printf("请输入n阶方阵n值:");

scanf("%d", &n);

printf("请输入矩阵:\n");

for (i=0; i

for (j=0; j

{

if (i==j) E[i][j] = 1;

else E[i][j] = 0;

scanf("%lf", &M[i][j]);

}

for(i=0; i

{

if(FindMax(i)) XiaoQu(i);

else

{

printf("该矩阵不可逆!\n");

return 0;

}

}

for(i=n-1; i>=0;i--)

HuiDai(i);

printf("原矩阵的逆矩阵为:\n");

for (i=0; i

{

for (j=0; j

printf("%8.2f", E[i][j]);

printf("\n");

}

}

相关文档
最新文档