c语言矩阵求逆,中文注释
以下是一个基于高斯-约旦消元法的C语言程序,用于计算矩阵的逆矩阵。程序中的注释是中文的。
#include <stdio.h>
#define N 3 // 矩阵的阶数
int main()
{
float A[N][2*N]; // 存储原始矩阵和增广矩阵
float temp; // 用于交换两行的临时变量
// 输入原始矩阵
printf("请输入一个 %d 阶矩阵:\n", N);
for(int i=0; i<N; i++)
{
for(int j=0; j<N; j++)
{
scanf("%f", &A[i][j]);
}
}
// 构造增广矩阵
for(int i=0; i<N; i++)
{
for(int j=N; j<2*N; j++)
{
if(i == j-N)
{
A[i][j] = 1;
}
else
{
A[i][j] = 0;
}
}
}
// 高斯-约旦消元
for(int i=0; i<N; i++)
{
// 如果对角线元素为0,交换当前行和下面的某一行
if(A[i][i] == 0)
{
for(int k=i+1; k<N; k++)
{
if(A[k][i] != 0)
{
for(int j=0; j<2*N; j++)
{
temp = A[i][j];
A[i][j] = A[k][j];
A[k][j] = temp;
}
break;
}
}
}
// 将对角线元素变为1
temp = A[i][i];
for(int j=0; j<2*N; j++)
{
A[i][j] /= temp;
}
// 将其他行的该列元素变为0
for(int k=0; k<N; k++)
{
if(k != i)
{
temp = A[k][i];
for(int j=0; j<2*N; j++)
{
A[k][j] -= temp * A[i][j];
}
}
}
}
// 输出逆矩阵
printf("逆矩阵为:\n");
for(int i=0; i<N; i++)
{
for(int j=N; j<2*N; j++)
{
printf("%f ", A[i][j]);
}
printf("\n");
}
return 0;
}
原文地址: https://www.cveoy.top/t/topic/AQc 著作权归作者所有。请勿转载和采集!