问题描述
现在,我想我明白了这个概念。但是,当我将所有内容都放入代码中时,它将无法工作...
首先,我尝试将矩阵转换为上三角矩阵,但是由于某些原因,第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]
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
。