【问题标题】:Finding the inverse of a MxM Matrix- Using gauss-jordan elimination求 MxM 矩阵的逆矩阵 - 使用 gauss-jordan 消元法
【发布时间】:2020-09-30 20:32:55
【问题描述】:

现在,我想我理解了这个概念。但是当我把它全部放入代码中时它不起作用......

首先我尝试将矩阵转换为上三角矩阵,但由于某种原因在第 2 列之后它停止工作..

我输入的数组是:

[1.00] [5.00] [4.00] [4.00] [1.00]

[5.00] [7.00] [7.00] [4.00] [8.00]

[7.00] [4.00] [8.00] [4.00] [7.00]

[10.00] [12.00] [8.00] [4.00] [3.00]

[10.00] [12.00] [13.00] [4.00] [3.00]

OUTPUT

double** inverseMatrix(double **matA, int dimension)
{

    double** matInverse=malloc(dimension*sizeof(double*)); 
    double **holder = matA;

    for(int i = 0; i < dimension; i++){

        matInverse[i] = malloc(dimension*sizeof(matInverse[0]));
    }

    for(int i = 0; i < dimension; i++){
        for(int j = 0; j < dimension; j++){
            matInverse[i][j] = 0.0;
        }
        matInverse[i][i] = 1.0;
    }




   for(int i = 0; i < dimension; i++){


        double pivot = holder[i][i];
        for(int j = 0; j < dimension; j++){
            
            holder[i][j] = (holder[i][j]/pivot);
            matInverse[i][j] = (matInverse[i][j]/pivot);
        }

            for(int row = i+1; row < dimension; row++){
                int number = holder[row][i];
                for(int col = 0; col < dimension; col++){
                    holder[row][col] = holder[row][col] - (holder[i][col] * number);
                    matInverse[row][col] = matInverse[row][col] - (matInverse[i][col] * number);
                }
                
            }
                
            
              
    }

【问题讨论】:

  • 您好,欢迎您。你试图在什么输入上运行它?结果如何?
  • 看起来不错,代码中一定有一些琐碎的错字或错位。使用一个小矩阵(2*2 或 3*3)来测试并在循环中添加一些 printfs
  • @g_bor 我用输入和输出对帖子进行了编辑
  • 您好,强烈建议发布输出而不是发布图片。

标签: c function matrix matrix-inverse


【解决方案1】:

虽然功能不完整,我们无法判断调用方站点是否存在其他问题,但在发布的 sn-p 中可以检测到错误:

int number = holder[row][i];

这里的number 应该是double

【讨论】:

    猜你喜欢
    • 2021-10-29
    • 2014-10-20
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    • 2017-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多