c语言编写求n阶方阵的逆矩阵
时间: 2024-03-25 10:38:16 浏览: 78
求一个n阶方阵A的逆矩阵,可以使用高斯-约旦消元法。
具体步骤如下:
1.将n阶方阵A增广为一个2n阶矩阵B,其中左边为矩阵A,右边为一个n阶单位矩阵。
2.对B进行初等行变换,将左边的A变为一个n阶单位矩阵,此时右边的矩阵即为A的逆矩阵。
以下是C语言的代码实现:
```
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
int main()
{
int n, i, j, k;
double a[MAX_SIZE][MAX_SIZE * 2], t;
printf("请输入矩阵阶数n:");
scanf("%d", &n);
printf("请依次输入矩阵元素:\n");
for(i = 1; i <= n; i++)
for(j = 1; j <= n; j++)
scanf("%lf", &a[i][j]);
//构造增广矩阵
for(i = 1; i <= n; i++)
for(j = n + 1; j <= 2 * n; j++)
if(j == i + n)
a[i][j] = 1;
else
a[i][j] = 0;
//高斯-约旦消元
for(i = 1; i <= n; i++)
{
if(a[i][i] == 0)
{
printf("该矩阵无法求逆!");
return 0;
}
t = a[i][i];
for(j = i; j <= 2 * n; j++)
a[i][j] /= t;
for(j = 1; j <= n; j++)
{
if(i != j)
{
t = a[j][i];
for(k = i; k <= 2 * n; k++)
a[j][k] -= t * a[i][k];
}
}
}
//输出逆矩阵
printf("该矩阵的逆矩阵为:\n");
for(i = 1; i <= n; i++)
{
for(j = n + 1; j <= 2 * n; j++)
printf("%lf ", a[i][j]);
printf("\n");
}
return 0;
}
```
注意:该代码中没有对输入进行检验,实际使用中应该加上输入检验和异常处理。
阅读全文