求一个矩阵的逆矩阵的C语言
时间: 2024-05-28 15:15:10 浏览: 99
实现方法:
1. 定义一个二维数组用来存储原始矩阵和逆矩阵。
2. 输入原始矩阵的值。
3. 计算原始矩阵的行列式值,如果值为0,则矩阵没有逆矩阵。
4. 计算伴随矩阵,然后将伴随矩阵转置。
5. 将转置后的伴随矩阵除以原始矩阵的行列式值即可得到逆矩阵。
C语言代码:
#include <stdio.h>
#define N 10
int main()
{
int a[N][N], b[N][N]; //定义原矩阵和逆矩阵
int i, j, k, n;
float t, d;
printf("请输入矩阵的阶数:");
scanf("%d", &n);
printf("请输入矩阵各元素的值:");
for(i=0; i<n; i++)
for(j=0; j<n; j++)
scanf("%d", &(a[i][j]));
// 计算行列式的值
d=1.0;
for(k=0; k<n; k++)
{
for(i=k+1; i<n; i++)
{
t=a[i][k]/a[k][k];
for(j=k; j<n; j++)
{
a[i][j]-=t*a[k][j];
}
}
d*=a[k][k];
}
if(d==0)
{
printf("该矩阵没有逆矩阵!\n");
return 0;
}
else
printf("该矩阵的行列式值=%.2f\n", d);
// 计算伴随矩阵
for(i=0; i<n; i++)
for(j=0; j<n; j++)
{
t=1;
if(i==j)
{
for(k=0; k<n; k++)
if(k!=i)
{
t*=a[k][k];
}
}
else
{
for(k=0; k<n; k++)
if(k!=i && k!=j)
{
t*=a[k][k];
}
}
b[j][i]=t;
}
//转置伴随矩阵
for(i=0; i<n; i++)
for(j=i; j<n; j++)
{
t=b[i][j];
b[i][j]=b[j][i];
b[j][i]=t;
}
//计算逆矩阵
for(i=0; i<n; i++)
for(j=0; j<n; j++)
{
b[i][j]/=d;
printf("%f\t", b[i][j]);
}
printf("\n");
return 0;
}
阅读全文