找出MxM矩阵的逆数-使用高斯约旦消除

问题描述

现在,我想我明白了这个概念。但是,当我将所有内容都放入代码中时,它将无法工作...

首先,我尝试将矩阵转换为上三角矩阵,但是由于某些原因,第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);
                }
                
            }
                
            
              
    }

解决方法

虽然功能不完整,我们无法确定调用者站点是否还有其他问题,但在发布的代码段中可以检测到错误:

int number = holder[row][i];

这里number应该是double