列主元高斯消去法求逆矩阵
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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"); } }