以下是一个基于高斯-约旦消元法的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;
}
c语言矩阵求逆,中文注释

原文地址: https://www.cveoy.top/t/topic/AQc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录